@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
|
@@ -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",
|
|
@@ -537,6 +511,7 @@ var OpenAIAdapter = class _OpenAIAdapter {
|
|
|
537
511
|
if (baseUrl.includes("generativelanguage.googleapis.com")) return "google";
|
|
538
512
|
if (baseUrl.includes("x.ai")) return "xai";
|
|
539
513
|
if (baseUrl.includes("azure")) return "azure";
|
|
514
|
+
if (baseUrl.includes("fireworks.ai")) return "fireworks";
|
|
540
515
|
return "openai";
|
|
541
516
|
}
|
|
542
517
|
async getClient() {
|
|
@@ -550,14 +525,6 @@ var OpenAIAdapter = class _OpenAIAdapter {
|
|
|
550
525
|
return this.client;
|
|
551
526
|
}
|
|
552
527
|
shouldUseResponsesApi(request) {
|
|
553
|
-
if (request.config?.mcpServers && request.config.mcpServers.length > 0 || request.config?.reasoningEffort !== void 0) {
|
|
554
|
-
if (this.provider !== "openai" && this.provider !== "azure") {
|
|
555
|
-
throw new Error(
|
|
556
|
-
`[llm-sdk] Provider "${this.provider}" does not support MCP servers or per-request reasoning effort. Use OpenAI or Anthropic for these features.`
|
|
557
|
-
);
|
|
558
|
-
}
|
|
559
|
-
return true;
|
|
560
|
-
}
|
|
561
528
|
return request.providerToolOptions?.openai?.nativeToolSearch?.enabled === true && request.providerToolOptions.openai.nativeToolSearch.useResponsesApi !== false && Array.isArray(request.toolDefinitions) && request.toolDefinitions.length > 0;
|
|
562
529
|
}
|
|
563
530
|
buildResponsesInput(request) {
|
|
@@ -618,7 +585,7 @@ var OpenAIAdapter = class _OpenAIAdapter {
|
|
|
618
585
|
strict: true,
|
|
619
586
|
defer_loading: tool.deferLoading === true
|
|
620
587
|
}));
|
|
621
|
-
return
|
|
588
|
+
return [{ type: "tool_search" }, ...nativeTools];
|
|
622
589
|
}
|
|
623
590
|
parseResponsesResult(response) {
|
|
624
591
|
const content = typeof response?.output_text === "string" ? response.output_text : "";
|
|
@@ -650,30 +617,16 @@ var OpenAIAdapter = class _OpenAIAdapter {
|
|
|
650
617
|
const responsesTextFormat = toOpenAIResponsesTextFormat(
|
|
651
618
|
request.config?.responseFormat
|
|
652
619
|
);
|
|
653
|
-
const mcpTools = toOpenAIResponsesMcpTools(request.config?.mcpServers);
|
|
654
|
-
const modelId = request.config?.model || this.model;
|
|
655
|
-
const reasoning = isOpenAIReasoningModel(modelId) ? toOpenAIReasoning(request.config?.reasoningEffort) : void 0;
|
|
656
|
-
if (request.config?.reasoningEffort && !isOpenAIReasoningModel(modelId)) {
|
|
657
|
-
console.warn(
|
|
658
|
-
`[llm-sdk] openai/${modelId} is not a reasoning model; \`reasoningEffort\` is ignored. Use o1/o3/o4/gpt-5.x for reasoning.`
|
|
659
|
-
);
|
|
660
|
-
}
|
|
661
|
-
const functionTools = this.buildResponsesTools(
|
|
662
|
-
request.toolDefinitions ?? []
|
|
663
|
-
);
|
|
664
|
-
const tools = [...functionTools, ...mcpTools];
|
|
665
620
|
const payload = {
|
|
666
621
|
model: request.config?.model || this.model,
|
|
667
622
|
instructions: request.systemPrompt,
|
|
668
623
|
input: this.buildResponsesInput(request),
|
|
669
|
-
tools:
|
|
624
|
+
tools: this.buildResponsesTools(request.toolDefinitions ?? []),
|
|
670
625
|
tool_choice: openaiToolOptions?.toolChoice === "required" ? "required" : openaiToolOptions?.toolChoice === "auto" ? "auto" : void 0,
|
|
671
626
|
parallel_tool_calls: openaiToolOptions?.parallelToolCalls,
|
|
672
627
|
temperature: request.config?.temperature ?? this.config.temperature,
|
|
673
628
|
max_output_tokens: request.config?.maxTokens ?? this.config.maxTokens,
|
|
674
629
|
...responsesTextFormat ? { text: { format: responsesTextFormat } } : {},
|
|
675
|
-
...reasoning ? { reasoning } : {},
|
|
676
|
-
store: false,
|
|
677
630
|
stream: false
|
|
678
631
|
};
|
|
679
632
|
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
|
* Together AI Provider
|
|
@@ -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
|
* Together AI Provider
|
|
@@ -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",
|
|
@@ -491,6 +465,7 @@ var OpenAIAdapter = class _OpenAIAdapter {
|
|
|
491
465
|
if (baseUrl.includes("generativelanguage.googleapis.com")) return "google";
|
|
492
466
|
if (baseUrl.includes("x.ai")) return "xai";
|
|
493
467
|
if (baseUrl.includes("azure")) return "azure";
|
|
468
|
+
if (baseUrl.includes("fireworks.ai")) return "fireworks";
|
|
494
469
|
return "openai";
|
|
495
470
|
}
|
|
496
471
|
async getClient() {
|
|
@@ -504,14 +479,6 @@ var OpenAIAdapter = class _OpenAIAdapter {
|
|
|
504
479
|
return this.client;
|
|
505
480
|
}
|
|
506
481
|
shouldUseResponsesApi(request) {
|
|
507
|
-
if (request.config?.mcpServers && request.config.mcpServers.length > 0 || request.config?.reasoningEffort !== void 0) {
|
|
508
|
-
if (this.provider !== "openai" && this.provider !== "azure") {
|
|
509
|
-
throw new Error(
|
|
510
|
-
`[llm-sdk] Provider "${this.provider}" does not support MCP servers or per-request reasoning effort. Use OpenAI or Anthropic for these features.`
|
|
511
|
-
);
|
|
512
|
-
}
|
|
513
|
-
return true;
|
|
514
|
-
}
|
|
515
482
|
return request.providerToolOptions?.openai?.nativeToolSearch?.enabled === true && request.providerToolOptions.openai.nativeToolSearch.useResponsesApi !== false && Array.isArray(request.toolDefinitions) && request.toolDefinitions.length > 0;
|
|
516
483
|
}
|
|
517
484
|
buildResponsesInput(request) {
|
|
@@ -572,7 +539,7 @@ var OpenAIAdapter = class _OpenAIAdapter {
|
|
|
572
539
|
strict: true,
|
|
573
540
|
defer_loading: tool.deferLoading === true
|
|
574
541
|
}));
|
|
575
|
-
return
|
|
542
|
+
return [{ type: "tool_search" }, ...nativeTools];
|
|
576
543
|
}
|
|
577
544
|
parseResponsesResult(response) {
|
|
578
545
|
const content = typeof response?.output_text === "string" ? response.output_text : "";
|
|
@@ -604,30 +571,16 @@ var OpenAIAdapter = class _OpenAIAdapter {
|
|
|
604
571
|
const responsesTextFormat = toOpenAIResponsesTextFormat(
|
|
605
572
|
request.config?.responseFormat
|
|
606
573
|
);
|
|
607
|
-
const mcpTools = toOpenAIResponsesMcpTools(request.config?.mcpServers);
|
|
608
|
-
const modelId = request.config?.model || this.model;
|
|
609
|
-
const reasoning = isOpenAIReasoningModel(modelId) ? toOpenAIReasoning(request.config?.reasoningEffort) : void 0;
|
|
610
|
-
if (request.config?.reasoningEffort && !isOpenAIReasoningModel(modelId)) {
|
|
611
|
-
console.warn(
|
|
612
|
-
`[llm-sdk] openai/${modelId} is not a reasoning model; \`reasoningEffort\` is ignored. Use o1/o3/o4/gpt-5.x for reasoning.`
|
|
613
|
-
);
|
|
614
|
-
}
|
|
615
|
-
const functionTools = this.buildResponsesTools(
|
|
616
|
-
request.toolDefinitions ?? []
|
|
617
|
-
);
|
|
618
|
-
const tools = [...functionTools, ...mcpTools];
|
|
619
574
|
const payload = {
|
|
620
575
|
model: request.config?.model || this.model,
|
|
621
576
|
instructions: request.systemPrompt,
|
|
622
577
|
input: this.buildResponsesInput(request),
|
|
623
|
-
tools:
|
|
578
|
+
tools: this.buildResponsesTools(request.toolDefinitions ?? []),
|
|
624
579
|
tool_choice: openaiToolOptions?.toolChoice === "required" ? "required" : openaiToolOptions?.toolChoice === "auto" ? "auto" : void 0,
|
|
625
580
|
parallel_tool_calls: openaiToolOptions?.parallelToolCalls,
|
|
626
581
|
temperature: request.config?.temperature ?? this.config.temperature,
|
|
627
582
|
max_output_tokens: request.config?.maxTokens ?? this.config.maxTokens,
|
|
628
583
|
...responsesTextFormat ? { text: { format: responsesTextFormat } } : {},
|
|
629
|
-
...reasoning ? { reasoning } : {},
|
|
630
|
-
store: false,
|
|
631
584
|
stream: false
|
|
632
585
|
};
|
|
633
586
|
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",
|
|
@@ -489,6 +463,7 @@ var OpenAIAdapter = class _OpenAIAdapter {
|
|
|
489
463
|
if (baseUrl.includes("generativelanguage.googleapis.com")) return "google";
|
|
490
464
|
if (baseUrl.includes("x.ai")) return "xai";
|
|
491
465
|
if (baseUrl.includes("azure")) return "azure";
|
|
466
|
+
if (baseUrl.includes("fireworks.ai")) return "fireworks";
|
|
492
467
|
return "openai";
|
|
493
468
|
}
|
|
494
469
|
async getClient() {
|
|
@@ -502,14 +477,6 @@ var OpenAIAdapter = class _OpenAIAdapter {
|
|
|
502
477
|
return this.client;
|
|
503
478
|
}
|
|
504
479
|
shouldUseResponsesApi(request) {
|
|
505
|
-
if (request.config?.mcpServers && request.config.mcpServers.length > 0 || request.config?.reasoningEffort !== void 0) {
|
|
506
|
-
if (this.provider !== "openai" && this.provider !== "azure") {
|
|
507
|
-
throw new Error(
|
|
508
|
-
`[llm-sdk] Provider "${this.provider}" does not support MCP servers or per-request reasoning effort. Use OpenAI or Anthropic for these features.`
|
|
509
|
-
);
|
|
510
|
-
}
|
|
511
|
-
return true;
|
|
512
|
-
}
|
|
513
480
|
return request.providerToolOptions?.openai?.nativeToolSearch?.enabled === true && request.providerToolOptions.openai.nativeToolSearch.useResponsesApi !== false && Array.isArray(request.toolDefinitions) && request.toolDefinitions.length > 0;
|
|
514
481
|
}
|
|
515
482
|
buildResponsesInput(request) {
|
|
@@ -570,7 +537,7 @@ var OpenAIAdapter = class _OpenAIAdapter {
|
|
|
570
537
|
strict: true,
|
|
571
538
|
defer_loading: tool.deferLoading === true
|
|
572
539
|
}));
|
|
573
|
-
return
|
|
540
|
+
return [{ type: "tool_search" }, ...nativeTools];
|
|
574
541
|
}
|
|
575
542
|
parseResponsesResult(response) {
|
|
576
543
|
const content = typeof response?.output_text === "string" ? response.output_text : "";
|
|
@@ -602,30 +569,16 @@ var OpenAIAdapter = class _OpenAIAdapter {
|
|
|
602
569
|
const responsesTextFormat = toOpenAIResponsesTextFormat(
|
|
603
570
|
request.config?.responseFormat
|
|
604
571
|
);
|
|
605
|
-
const mcpTools = toOpenAIResponsesMcpTools(request.config?.mcpServers);
|
|
606
|
-
const modelId = request.config?.model || this.model;
|
|
607
|
-
const reasoning = isOpenAIReasoningModel(modelId) ? toOpenAIReasoning(request.config?.reasoningEffort) : void 0;
|
|
608
|
-
if (request.config?.reasoningEffort && !isOpenAIReasoningModel(modelId)) {
|
|
609
|
-
console.warn(
|
|
610
|
-
`[llm-sdk] openai/${modelId} is not a reasoning model; \`reasoningEffort\` is ignored. Use o1/o3/o4/gpt-5.x for reasoning.`
|
|
611
|
-
);
|
|
612
|
-
}
|
|
613
|
-
const functionTools = this.buildResponsesTools(
|
|
614
|
-
request.toolDefinitions ?? []
|
|
615
|
-
);
|
|
616
|
-
const tools = [...functionTools, ...mcpTools];
|
|
617
572
|
const payload = {
|
|
618
573
|
model: request.config?.model || this.model,
|
|
619
574
|
instructions: request.systemPrompt,
|
|
620
575
|
input: this.buildResponsesInput(request),
|
|
621
|
-
tools:
|
|
576
|
+
tools: this.buildResponsesTools(request.toolDefinitions ?? []),
|
|
622
577
|
tool_choice: openaiToolOptions?.toolChoice === "required" ? "required" : openaiToolOptions?.toolChoice === "auto" ? "auto" : void 0,
|
|
623
578
|
parallel_tool_calls: openaiToolOptions?.parallelToolCalls,
|
|
624
579
|
temperature: request.config?.temperature ?? this.config.temperature,
|
|
625
580
|
max_output_tokens: request.config?.maxTokens ?? this.config.maxTokens,
|
|
626
581
|
...responsesTextFormat ? { text: { format: responsesTextFormat } } : {},
|
|
627
|
-
...reasoning ? { reasoning } : {},
|
|
628
|
-
store: false,
|
|
629
582
|
stream: false
|
|
630
583
|
};
|
|
631
584
|
logProviderPayload("openai", "request payload", payload, request.debug);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { L as LanguageModel } from '../../types-
|
|
2
|
-
import { X as XAIProviderConfig, A as AIProvider } from '../../types-
|
|
1
|
+
import { L as LanguageModel } from '../../types-BkQCSiIt.mjs';
|
|
2
|
+
import { X as XAIProviderConfig, 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
|
* xAI Provider - Modern Pattern
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { L as LanguageModel } from '../../types-
|
|
2
|
-
import { X as XAIProviderConfig, A as AIProvider } from '../../types-
|
|
1
|
+
import { L as LanguageModel } from '../../types-BkQCSiIt.js';
|
|
2
|
+
import { X as XAIProviderConfig, 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
|
* xAI 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",
|
|
@@ -515,6 +489,7 @@ var OpenAIAdapter = class _OpenAIAdapter {
|
|
|
515
489
|
if (baseUrl.includes("generativelanguage.googleapis.com")) return "google";
|
|
516
490
|
if (baseUrl.includes("x.ai")) return "xai";
|
|
517
491
|
if (baseUrl.includes("azure")) return "azure";
|
|
492
|
+
if (baseUrl.includes("fireworks.ai")) return "fireworks";
|
|
518
493
|
return "openai";
|
|
519
494
|
}
|
|
520
495
|
async getClient() {
|
|
@@ -528,14 +503,6 @@ var OpenAIAdapter = class _OpenAIAdapter {
|
|
|
528
503
|
return this.client;
|
|
529
504
|
}
|
|
530
505
|
shouldUseResponsesApi(request) {
|
|
531
|
-
if (request.config?.mcpServers && request.config.mcpServers.length > 0 || request.config?.reasoningEffort !== void 0) {
|
|
532
|
-
if (this.provider !== "openai" && this.provider !== "azure") {
|
|
533
|
-
throw new Error(
|
|
534
|
-
`[llm-sdk] Provider "${this.provider}" does not support MCP servers or per-request reasoning effort. Use OpenAI or Anthropic for these features.`
|
|
535
|
-
);
|
|
536
|
-
}
|
|
537
|
-
return true;
|
|
538
|
-
}
|
|
539
506
|
return request.providerToolOptions?.openai?.nativeToolSearch?.enabled === true && request.providerToolOptions.openai.nativeToolSearch.useResponsesApi !== false && Array.isArray(request.toolDefinitions) && request.toolDefinitions.length > 0;
|
|
540
507
|
}
|
|
541
508
|
buildResponsesInput(request) {
|
|
@@ -596,7 +563,7 @@ var OpenAIAdapter = class _OpenAIAdapter {
|
|
|
596
563
|
strict: true,
|
|
597
564
|
defer_loading: tool.deferLoading === true
|
|
598
565
|
}));
|
|
599
|
-
return
|
|
566
|
+
return [{ type: "tool_search" }, ...nativeTools];
|
|
600
567
|
}
|
|
601
568
|
parseResponsesResult(response) {
|
|
602
569
|
const content = typeof response?.output_text === "string" ? response.output_text : "";
|
|
@@ -628,30 +595,16 @@ var OpenAIAdapter = class _OpenAIAdapter {
|
|
|
628
595
|
const responsesTextFormat = toOpenAIResponsesTextFormat(
|
|
629
596
|
request.config?.responseFormat
|
|
630
597
|
);
|
|
631
|
-
const mcpTools = toOpenAIResponsesMcpTools(request.config?.mcpServers);
|
|
632
|
-
const modelId = request.config?.model || this.model;
|
|
633
|
-
const reasoning = isOpenAIReasoningModel(modelId) ? toOpenAIReasoning(request.config?.reasoningEffort) : void 0;
|
|
634
|
-
if (request.config?.reasoningEffort && !isOpenAIReasoningModel(modelId)) {
|
|
635
|
-
console.warn(
|
|
636
|
-
`[llm-sdk] openai/${modelId} is not a reasoning model; \`reasoningEffort\` is ignored. Use o1/o3/o4/gpt-5.x for reasoning.`
|
|
637
|
-
);
|
|
638
|
-
}
|
|
639
|
-
const functionTools = this.buildResponsesTools(
|
|
640
|
-
request.toolDefinitions ?? []
|
|
641
|
-
);
|
|
642
|
-
const tools = [...functionTools, ...mcpTools];
|
|
643
598
|
const payload = {
|
|
644
599
|
model: request.config?.model || this.model,
|
|
645
600
|
instructions: request.systemPrompt,
|
|
646
601
|
input: this.buildResponsesInput(request),
|
|
647
|
-
tools:
|
|
602
|
+
tools: this.buildResponsesTools(request.toolDefinitions ?? []),
|
|
648
603
|
tool_choice: openaiToolOptions?.toolChoice === "required" ? "required" : openaiToolOptions?.toolChoice === "auto" ? "auto" : void 0,
|
|
649
604
|
parallel_tool_calls: openaiToolOptions?.parallelToolCalls,
|
|
650
605
|
temperature: request.config?.temperature ?? this.config.temperature,
|
|
651
606
|
max_output_tokens: request.config?.maxTokens ?? this.config.maxTokens,
|
|
652
607
|
...responsesTextFormat ? { text: { format: responsesTextFormat } } : {},
|
|
653
|
-
...reasoning ? { reasoning } : {},
|
|
654
|
-
store: false,
|
|
655
608
|
stream: false
|
|
656
609
|
};
|
|
657
610
|
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",
|
|
@@ -513,6 +487,7 @@ var OpenAIAdapter = class _OpenAIAdapter {
|
|
|
513
487
|
if (baseUrl.includes("generativelanguage.googleapis.com")) return "google";
|
|
514
488
|
if (baseUrl.includes("x.ai")) return "xai";
|
|
515
489
|
if (baseUrl.includes("azure")) return "azure";
|
|
490
|
+
if (baseUrl.includes("fireworks.ai")) return "fireworks";
|
|
516
491
|
return "openai";
|
|
517
492
|
}
|
|
518
493
|
async getClient() {
|
|
@@ -526,14 +501,6 @@ var OpenAIAdapter = class _OpenAIAdapter {
|
|
|
526
501
|
return this.client;
|
|
527
502
|
}
|
|
528
503
|
shouldUseResponsesApi(request) {
|
|
529
|
-
if (request.config?.mcpServers && request.config.mcpServers.length > 0 || request.config?.reasoningEffort !== void 0) {
|
|
530
|
-
if (this.provider !== "openai" && this.provider !== "azure") {
|
|
531
|
-
throw new Error(
|
|
532
|
-
`[llm-sdk] Provider "${this.provider}" does not support MCP servers or per-request reasoning effort. Use OpenAI or Anthropic for these features.`
|
|
533
|
-
);
|
|
534
|
-
}
|
|
535
|
-
return true;
|
|
536
|
-
}
|
|
537
504
|
return request.providerToolOptions?.openai?.nativeToolSearch?.enabled === true && request.providerToolOptions.openai.nativeToolSearch.useResponsesApi !== false && Array.isArray(request.toolDefinitions) && request.toolDefinitions.length > 0;
|
|
538
505
|
}
|
|
539
506
|
buildResponsesInput(request) {
|
|
@@ -594,7 +561,7 @@ var OpenAIAdapter = class _OpenAIAdapter {
|
|
|
594
561
|
strict: true,
|
|
595
562
|
defer_loading: tool.deferLoading === true
|
|
596
563
|
}));
|
|
597
|
-
return
|
|
564
|
+
return [{ type: "tool_search" }, ...nativeTools];
|
|
598
565
|
}
|
|
599
566
|
parseResponsesResult(response) {
|
|
600
567
|
const content = typeof response?.output_text === "string" ? response.output_text : "";
|
|
@@ -626,30 +593,16 @@ var OpenAIAdapter = class _OpenAIAdapter {
|
|
|
626
593
|
const responsesTextFormat = toOpenAIResponsesTextFormat(
|
|
627
594
|
request.config?.responseFormat
|
|
628
595
|
);
|
|
629
|
-
const mcpTools = toOpenAIResponsesMcpTools(request.config?.mcpServers);
|
|
630
|
-
const modelId = request.config?.model || this.model;
|
|
631
|
-
const reasoning = isOpenAIReasoningModel(modelId) ? toOpenAIReasoning(request.config?.reasoningEffort) : void 0;
|
|
632
|
-
if (request.config?.reasoningEffort && !isOpenAIReasoningModel(modelId)) {
|
|
633
|
-
console.warn(
|
|
634
|
-
`[llm-sdk] openai/${modelId} is not a reasoning model; \`reasoningEffort\` is ignored. Use o1/o3/o4/gpt-5.x for reasoning.`
|
|
635
|
-
);
|
|
636
|
-
}
|
|
637
|
-
const functionTools = this.buildResponsesTools(
|
|
638
|
-
request.toolDefinitions ?? []
|
|
639
|
-
);
|
|
640
|
-
const tools = [...functionTools, ...mcpTools];
|
|
641
596
|
const payload = {
|
|
642
597
|
model: request.config?.model || this.model,
|
|
643
598
|
instructions: request.systemPrompt,
|
|
644
599
|
input: this.buildResponsesInput(request),
|
|
645
|
-
tools:
|
|
600
|
+
tools: this.buildResponsesTools(request.toolDefinitions ?? []),
|
|
646
601
|
tool_choice: openaiToolOptions?.toolChoice === "required" ? "required" : openaiToolOptions?.toolChoice === "auto" ? "auto" : void 0,
|
|
647
602
|
parallel_tool_calls: openaiToolOptions?.parallelToolCalls,
|
|
648
603
|
temperature: request.config?.temperature ?? this.config.temperature,
|
|
649
604
|
max_output_tokens: request.config?.maxTokens ?? this.config.maxTokens,
|
|
650
605
|
...responsesTextFormat ? { text: { format: responsesTextFormat } } : {},
|
|
651
|
-
...reasoning ? { reasoning } : {},
|
|
652
|
-
store: false,
|
|
653
606
|
stream: false
|
|
654
607
|
};
|
|
655
608
|
logProviderPayload("openai", "request payload", payload, request.debug);
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { d as ToolDefinition,
|
|
2
|
-
import { L as LLMAdapter } from './base-
|
|
1
|
+
import { d as ToolDefinition, Z as UnifiedToolCall, _ as UnifiedToolResult } from './types-BkQCSiIt.js';
|
|
2
|
+
import { L as LLMAdapter } from './base-C58Dsr9p.js';
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
5
|
* Provider Types
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { d as ToolDefinition,
|
|
2
|
-
import { L as LLMAdapter } from './base-
|
|
1
|
+
import { d as ToolDefinition, Z as UnifiedToolCall, _ as UnifiedToolResult } from './types-BkQCSiIt.mjs';
|
|
2
|
+
import { L as LLMAdapter } from './base-tNgbBaSo.mjs';
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
5
|
* Provider Types
|