@node-llm/core 1.7.0 → 1.8.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/README.md +9 -8
- package/dist/aliases.d.ts +213 -0
- package/dist/aliases.d.ts.map +1 -1
- package/dist/aliases.js +238 -25
- package/dist/chat/Chat.d.ts +2 -2
- package/dist/chat/Chat.d.ts.map +1 -1
- package/dist/chat/Chat.js +21 -5
- package/dist/chat/ChatResponse.d.ts +5 -1
- package/dist/chat/ChatResponse.d.ts.map +1 -1
- package/dist/chat/ChatResponse.js +9 -3
- package/dist/chat/Content.d.ts +7 -0
- package/dist/chat/Content.d.ts.map +1 -1
- package/dist/config.d.ts +28 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +50 -0
- package/dist/llm.d.ts.map +1 -1
- package/dist/llm.js +3 -2
- package/dist/models/models.d.ts +321 -76
- package/dist/models/models.d.ts.map +1 -1
- package/dist/models/models.js +7764 -2934
- package/dist/providers/Provider.d.ts +5 -0
- package/dist/providers/Provider.d.ts.map +1 -1
- package/dist/providers/anthropic/Capabilities.d.ts +1 -0
- package/dist/providers/anthropic/Capabilities.d.ts.map +1 -1
- package/dist/providers/anthropic/Capabilities.js +8 -5
- package/dist/providers/bedrock/BedrockProvider.d.ts +53 -0
- package/dist/providers/bedrock/BedrockProvider.d.ts.map +1 -0
- package/dist/providers/bedrock/BedrockProvider.js +107 -0
- package/dist/providers/bedrock/Capabilities.d.ts +50 -0
- package/dist/providers/bedrock/Capabilities.d.ts.map +1 -0
- package/dist/providers/bedrock/Capabilities.js +233 -0
- package/dist/providers/bedrock/Chat.d.ts +26 -0
- package/dist/providers/bedrock/Chat.d.ts.map +1 -0
- package/dist/providers/bedrock/Chat.js +170 -0
- package/dist/providers/bedrock/Embeddings.d.ts +22 -0
- package/dist/providers/bedrock/Embeddings.d.ts.map +1 -0
- package/dist/providers/bedrock/Embeddings.js +100 -0
- package/dist/providers/bedrock/Image.d.ts +33 -0
- package/dist/providers/bedrock/Image.d.ts.map +1 -0
- package/dist/providers/bedrock/Image.js +154 -0
- package/dist/providers/bedrock/Models.d.ts +34 -0
- package/dist/providers/bedrock/Models.d.ts.map +1 -0
- package/dist/providers/bedrock/Models.js +131 -0
- package/dist/providers/bedrock/Moderation.d.ts +23 -0
- package/dist/providers/bedrock/Moderation.d.ts.map +1 -0
- package/dist/providers/bedrock/Moderation.js +138 -0
- package/dist/providers/bedrock/Streaming.d.ts +21 -0
- package/dist/providers/bedrock/Streaming.d.ts.map +1 -0
- package/dist/providers/bedrock/Streaming.js +240 -0
- package/dist/providers/bedrock/config.d.ts +57 -0
- package/dist/providers/bedrock/config.d.ts.map +1 -0
- package/dist/providers/bedrock/config.js +33 -0
- package/dist/providers/bedrock/index.d.ts +8 -0
- package/dist/providers/bedrock/index.d.ts.map +1 -0
- package/dist/providers/bedrock/index.js +30 -0
- package/dist/providers/bedrock/mapper.d.ts +37 -0
- package/dist/providers/bedrock/mapper.d.ts.map +1 -0
- package/dist/providers/bedrock/mapper.js +204 -0
- package/dist/providers/bedrock/types.d.ts +179 -0
- package/dist/providers/bedrock/types.d.ts.map +1 -0
- package/dist/providers/bedrock/types.js +7 -0
- package/dist/providers/deepseek/Capabilities.d.ts +3 -2
- package/dist/providers/deepseek/Capabilities.d.ts.map +1 -1
- package/dist/providers/deepseek/Capabilities.js +19 -5
- package/dist/providers/gemini/Capabilities.d.ts +1 -0
- package/dist/providers/gemini/Capabilities.d.ts.map +1 -1
- package/dist/providers/gemini/Capabilities.js +9 -6
- package/dist/providers/gemini/Chat.d.ts.map +1 -1
- package/dist/providers/gemini/Chat.js +6 -23
- package/dist/providers/ollama/Capabilities.d.ts.map +1 -1
- package/dist/providers/ollama/Capabilities.js +4 -1
- package/dist/providers/openai/Capabilities.d.ts +1 -0
- package/dist/providers/openai/Capabilities.d.ts.map +1 -1
- package/dist/providers/openai/Capabilities.js +14 -11
- package/dist/providers/registry.d.ts +2 -1
- package/dist/providers/registry.d.ts.map +1 -1
- package/dist/providers/registry.js +2 -1
- package/dist/utils/AwsSigV4.d.ts +51 -0
- package/dist/utils/AwsSigV4.d.ts.map +1 -0
- package/dist/utils/AwsSigV4.js +209 -0
- package/package.json +1 -1
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Bedrock Message Mapper
|
|
3
|
+
*
|
|
4
|
+
* Converts NodeLLM messages to Bedrock Converse API format.
|
|
5
|
+
* Handles system messages, tool calls, and content blocks.
|
|
6
|
+
*/
|
|
7
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
8
|
+
// Message Conversion
|
|
9
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
10
|
+
/**
|
|
11
|
+
* Convert a NodeLLM message to Bedrock content blocks.
|
|
12
|
+
*/
|
|
13
|
+
function messageContentToBlocks(content) {
|
|
14
|
+
if (typeof content === "string") {
|
|
15
|
+
return content ? [{ text: content }] : [];
|
|
16
|
+
}
|
|
17
|
+
if (Array.isArray(content)) {
|
|
18
|
+
const blocks = [];
|
|
19
|
+
for (const part of content) {
|
|
20
|
+
if (part.type === "text") {
|
|
21
|
+
const block = { text: part.text };
|
|
22
|
+
blocks.push(block);
|
|
23
|
+
if (part.cache_control?.type === "ephemeral") {
|
|
24
|
+
blocks.push({ cachePoint: { type: "default" } });
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
else if (part.type === "image_url" && part.image_url) {
|
|
28
|
+
// Extract base64 data from data URL
|
|
29
|
+
const match = part.image_url.url.match(/^data:image\/(\w+);base64,(.+)$/);
|
|
30
|
+
if (match && match[1] && match[2]) {
|
|
31
|
+
blocks.push({
|
|
32
|
+
image: {
|
|
33
|
+
format: match[1].replace("jpg", "jpeg"),
|
|
34
|
+
source: { bytes: match[2] }
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
// Fallback if not a data URL or missing base64
|
|
40
|
+
blocks.push({ text: `[Image: ${part.image_url.url}]` });
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
// Default to empty text for unsupported types
|
|
45
|
+
blocks.push({ text: "" });
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
return blocks.filter((b) => b.text !== "");
|
|
49
|
+
}
|
|
50
|
+
return [];
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Convert NodeLLM messages to Bedrock Converse format.
|
|
54
|
+
* Extracts system messages to the top-level system field.
|
|
55
|
+
*/
|
|
56
|
+
export function convertMessages(messages) {
|
|
57
|
+
const systemBlocks = [];
|
|
58
|
+
const bedrockMessages = [];
|
|
59
|
+
let currentToolResults = [];
|
|
60
|
+
const flushToolResults = () => {
|
|
61
|
+
if (currentToolResults.length > 0) {
|
|
62
|
+
bedrockMessages.push({
|
|
63
|
+
role: "user",
|
|
64
|
+
content: currentToolResults
|
|
65
|
+
});
|
|
66
|
+
currentToolResults = [];
|
|
67
|
+
}
|
|
68
|
+
};
|
|
69
|
+
for (const msg of messages) {
|
|
70
|
+
if (msg.role !== "tool") {
|
|
71
|
+
flushToolResults();
|
|
72
|
+
}
|
|
73
|
+
// System messages go to the top-level system field
|
|
74
|
+
if (msg.role === "system") {
|
|
75
|
+
const blocks = messageContentToBlocks(msg.content);
|
|
76
|
+
systemBlocks.push(...blocks);
|
|
77
|
+
continue;
|
|
78
|
+
}
|
|
79
|
+
// User messages
|
|
80
|
+
if (msg.role === "user") {
|
|
81
|
+
bedrockMessages.push({
|
|
82
|
+
role: "user",
|
|
83
|
+
content: messageContentToBlocks(msg.content)
|
|
84
|
+
});
|
|
85
|
+
continue;
|
|
86
|
+
}
|
|
87
|
+
// Assistant messages (may include tool calls and reasoning)
|
|
88
|
+
if (msg.role === "assistant") {
|
|
89
|
+
const contentBlocks = messageContentToBlocks(msg.content);
|
|
90
|
+
// Add reasoning content if present
|
|
91
|
+
if (msg.reasoning) {
|
|
92
|
+
contentBlocks.unshift({
|
|
93
|
+
reasoningContent: {
|
|
94
|
+
text: msg.reasoning
|
|
95
|
+
}
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
// Add tool use blocks if present
|
|
99
|
+
if (msg.tool_calls) {
|
|
100
|
+
for (const toolCall of msg.tool_calls) {
|
|
101
|
+
contentBlocks.push({
|
|
102
|
+
toolUse: {
|
|
103
|
+
toolUseId: toolCall.id,
|
|
104
|
+
name: toolCall.function.name,
|
|
105
|
+
input: JSON.parse(toolCall.function.arguments || "{}")
|
|
106
|
+
}
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
bedrockMessages.push({
|
|
111
|
+
role: "assistant",
|
|
112
|
+
content: contentBlocks
|
|
113
|
+
});
|
|
114
|
+
continue;
|
|
115
|
+
}
|
|
116
|
+
// Tool result messages
|
|
117
|
+
if (msg.role === "tool") {
|
|
118
|
+
currentToolResults.push({
|
|
119
|
+
toolResult: {
|
|
120
|
+
toolUseId: msg.tool_call_id || "",
|
|
121
|
+
content: [{ text: typeof msg.content === "string" ? msg.content : "" }],
|
|
122
|
+
status: msg.isError ? "error" : "success"
|
|
123
|
+
}
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
flushToolResults();
|
|
128
|
+
return {
|
|
129
|
+
messages: bedrockMessages,
|
|
130
|
+
system: systemBlocks.length > 0 ? systemBlocks : undefined
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
134
|
+
// Tool Conversion
|
|
135
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
136
|
+
/**
|
|
137
|
+
* Convert NodeLLM tool definitions to Bedrock tool config.
|
|
138
|
+
*/
|
|
139
|
+
export function convertTools(tools) {
|
|
140
|
+
if (!tools || tools.length === 0) {
|
|
141
|
+
return undefined;
|
|
142
|
+
}
|
|
143
|
+
return {
|
|
144
|
+
tools: tools.map((tool) => ({
|
|
145
|
+
toolSpec: {
|
|
146
|
+
name: tool.function.name,
|
|
147
|
+
description: tool.function.description,
|
|
148
|
+
inputSchema: {
|
|
149
|
+
json: tool.function.parameters || {}
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
}))
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
156
|
+
// Request Builder
|
|
157
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
158
|
+
/**
|
|
159
|
+
* Build a complete Bedrock Converse request from NodeLLM ChatRequest.
|
|
160
|
+
*/
|
|
161
|
+
export function buildConverseRequest(messages, tools, options) {
|
|
162
|
+
const { messages: bedrockMessages, system } = convertMessages(messages);
|
|
163
|
+
const request = {
|
|
164
|
+
messages: bedrockMessages
|
|
165
|
+
};
|
|
166
|
+
if (system) {
|
|
167
|
+
request.system = system;
|
|
168
|
+
}
|
|
169
|
+
const toolConfig = convertTools(tools);
|
|
170
|
+
if (toolConfig) {
|
|
171
|
+
request.toolConfig = toolConfig;
|
|
172
|
+
}
|
|
173
|
+
if (options?.guardrail) {
|
|
174
|
+
request.guardrailConfig = options.guardrail;
|
|
175
|
+
}
|
|
176
|
+
// Inference config (only add if we have values)
|
|
177
|
+
if (options?.maxTokens || options?.temperature !== undefined) {
|
|
178
|
+
request.inferenceConfig = {};
|
|
179
|
+
if (options.maxTokens) {
|
|
180
|
+
request.inferenceConfig.maxTokens = options.maxTokens;
|
|
181
|
+
}
|
|
182
|
+
if (options.temperature !== undefined) {
|
|
183
|
+
request.inferenceConfig.temperature = options.temperature;
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
// Thinking config for Claude 3.7+
|
|
187
|
+
if (options?.thinking?.budget) {
|
|
188
|
+
request.additionalModelRequestFields = {
|
|
189
|
+
...request.additionalModelRequestFields,
|
|
190
|
+
thinking: {
|
|
191
|
+
type: "enabled",
|
|
192
|
+
budget_tokens: options.thinking.budget
|
|
193
|
+
}
|
|
194
|
+
};
|
|
195
|
+
}
|
|
196
|
+
// Merge any other additional fields
|
|
197
|
+
if (options?.additionalModelRequestFields) {
|
|
198
|
+
request.additionalModelRequestFields = {
|
|
199
|
+
...request.additionalModelRequestFields,
|
|
200
|
+
...options.additionalModelRequestFields
|
|
201
|
+
};
|
|
202
|
+
}
|
|
203
|
+
return request;
|
|
204
|
+
}
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Bedrock Converse API Types
|
|
3
|
+
*
|
|
4
|
+
* These types match the AWS Bedrock Converse API schema.
|
|
5
|
+
* Reference: https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_Converse.html
|
|
6
|
+
*/
|
|
7
|
+
export interface BedrockContentBlock {
|
|
8
|
+
text?: string;
|
|
9
|
+
image?: {
|
|
10
|
+
format: "png" | "jpeg" | "gif" | "webp";
|
|
11
|
+
source: {
|
|
12
|
+
bytes: string;
|
|
13
|
+
};
|
|
14
|
+
};
|
|
15
|
+
document?: {
|
|
16
|
+
format: "pdf" | "csv" | "doc" | "docx" | "xls" | "xlsx" | "html" | "txt" | "md";
|
|
17
|
+
name: string;
|
|
18
|
+
source: {
|
|
19
|
+
bytes: string;
|
|
20
|
+
};
|
|
21
|
+
};
|
|
22
|
+
reasoningContent?: {
|
|
23
|
+
text?: string;
|
|
24
|
+
redactedContent?: string;
|
|
25
|
+
};
|
|
26
|
+
toolUse?: {
|
|
27
|
+
toolUseId: string;
|
|
28
|
+
name: string;
|
|
29
|
+
input: Record<string, unknown>;
|
|
30
|
+
};
|
|
31
|
+
toolResult?: {
|
|
32
|
+
toolUseId: string;
|
|
33
|
+
content: BedrockContentBlock[];
|
|
34
|
+
status?: "success" | "error";
|
|
35
|
+
};
|
|
36
|
+
guardContent?: {
|
|
37
|
+
text: {
|
|
38
|
+
text: string;
|
|
39
|
+
};
|
|
40
|
+
};
|
|
41
|
+
cachePoint?: {
|
|
42
|
+
type: "default";
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
export interface BedrockMessage {
|
|
46
|
+
role: "user" | "assistant";
|
|
47
|
+
content: BedrockContentBlock[];
|
|
48
|
+
}
|
|
49
|
+
export interface BedrockToolSpec {
|
|
50
|
+
name: string;
|
|
51
|
+
description?: string;
|
|
52
|
+
inputSchema: {
|
|
53
|
+
json: Record<string, unknown>;
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
export interface BedrockToolConfig {
|
|
57
|
+
tools: Array<{
|
|
58
|
+
toolSpec: BedrockToolSpec;
|
|
59
|
+
}>;
|
|
60
|
+
toolChoice?: {
|
|
61
|
+
auto?: Record<string, never>;
|
|
62
|
+
any?: Record<string, never>;
|
|
63
|
+
tool?: {
|
|
64
|
+
name: string;
|
|
65
|
+
};
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
export interface BedrockInferenceConfig {
|
|
69
|
+
maxTokens?: number;
|
|
70
|
+
temperature?: number;
|
|
71
|
+
topP?: number;
|
|
72
|
+
stopSequences?: string[];
|
|
73
|
+
}
|
|
74
|
+
export interface BedrockGuardrailConfig {
|
|
75
|
+
guardrailIdentifier: string;
|
|
76
|
+
guardrailVersion: string;
|
|
77
|
+
trace?: "enabled" | "disabled";
|
|
78
|
+
}
|
|
79
|
+
export interface BedrockConverseRequest {
|
|
80
|
+
messages: BedrockMessage[];
|
|
81
|
+
system?: BedrockContentBlock[];
|
|
82
|
+
toolConfig?: BedrockToolConfig;
|
|
83
|
+
guardrailConfig?: BedrockGuardrailConfig;
|
|
84
|
+
inferenceConfig?: BedrockInferenceConfig;
|
|
85
|
+
additionalModelRequestFields?: Record<string, any>;
|
|
86
|
+
}
|
|
87
|
+
export interface BedrockConverseResponse {
|
|
88
|
+
output: {
|
|
89
|
+
message: BedrockMessage;
|
|
90
|
+
};
|
|
91
|
+
stopReason: "end_turn" | "tool_use" | "max_tokens" | "stop_sequence" | "content_filtered" | "guardrail_intervening" | "guardrail_intervened";
|
|
92
|
+
usage: {
|
|
93
|
+
inputTokens: number;
|
|
94
|
+
outputTokens: number;
|
|
95
|
+
totalTokens: number;
|
|
96
|
+
cacheReadInputTokens?: number;
|
|
97
|
+
cacheWriteInputTokens?: number;
|
|
98
|
+
};
|
|
99
|
+
trace?: {
|
|
100
|
+
guardrail?: {
|
|
101
|
+
modelOutput?: string[];
|
|
102
|
+
inputAssessment?: Record<string, any>;
|
|
103
|
+
outputAssessments?: Record<string, any>;
|
|
104
|
+
};
|
|
105
|
+
};
|
|
106
|
+
metrics?: {
|
|
107
|
+
latencyMs: number;
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
export interface BedrockStreamEvent {
|
|
111
|
+
messageStart?: {
|
|
112
|
+
role: "assistant";
|
|
113
|
+
};
|
|
114
|
+
contentBlockStart?: {
|
|
115
|
+
contentBlockIndex: number;
|
|
116
|
+
start: {
|
|
117
|
+
text?: string;
|
|
118
|
+
reasoningContent?: {
|
|
119
|
+
text?: string;
|
|
120
|
+
};
|
|
121
|
+
toolUse?: {
|
|
122
|
+
toolUseId: string;
|
|
123
|
+
name: string;
|
|
124
|
+
};
|
|
125
|
+
};
|
|
126
|
+
};
|
|
127
|
+
contentBlockDelta?: {
|
|
128
|
+
contentBlockIndex: number;
|
|
129
|
+
delta: {
|
|
130
|
+
text?: string;
|
|
131
|
+
reasoningContent?: {
|
|
132
|
+
text?: string;
|
|
133
|
+
};
|
|
134
|
+
toolUse?: {
|
|
135
|
+
input: string;
|
|
136
|
+
};
|
|
137
|
+
};
|
|
138
|
+
};
|
|
139
|
+
contentBlockStop?: {
|
|
140
|
+
contentBlockIndex: number;
|
|
141
|
+
};
|
|
142
|
+
messageStop?: {
|
|
143
|
+
stopReason: string;
|
|
144
|
+
};
|
|
145
|
+
metadata?: {
|
|
146
|
+
usage: {
|
|
147
|
+
inputTokens: number;
|
|
148
|
+
outputTokens: number;
|
|
149
|
+
totalTokens: number;
|
|
150
|
+
};
|
|
151
|
+
metrics?: {
|
|
152
|
+
latencyMs: number;
|
|
153
|
+
};
|
|
154
|
+
trace?: {
|
|
155
|
+
guardrail?: {
|
|
156
|
+
modelOutput?: string[];
|
|
157
|
+
inputAssessment?: Record<string, any>;
|
|
158
|
+
outputAssessments?: Record<string, any>;
|
|
159
|
+
};
|
|
160
|
+
};
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
export interface BedrockModelSummary {
|
|
164
|
+
modelId: string;
|
|
165
|
+
modelArn: string;
|
|
166
|
+
modelName?: string;
|
|
167
|
+
providerName?: string;
|
|
168
|
+
inputModalities?: string[];
|
|
169
|
+
outputModalities?: string[];
|
|
170
|
+
responseStreamingSupported?: boolean;
|
|
171
|
+
inferenceTypesSupported?: Array<"ON_DEMAND" | "PROVISIONED" | "INFERENCE_PROFILE">;
|
|
172
|
+
modelLifecycle?: {
|
|
173
|
+
status: "ACTIVE" | "LEGACY";
|
|
174
|
+
};
|
|
175
|
+
}
|
|
176
|
+
export interface BedrockListModelsResponse {
|
|
177
|
+
modelSummaries: BedrockModelSummary[];
|
|
178
|
+
}
|
|
179
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/providers/bedrock/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,14 +3,15 @@ export declare class Capabilities {
|
|
|
3
3
|
static getCapabilities(modelId: string): string[];
|
|
4
4
|
static getContextWindow(modelId: string): number | null;
|
|
5
5
|
static getMaxOutputTokens(modelId: string): number | null;
|
|
6
|
-
static supportsVision(
|
|
6
|
+
static supportsVision(modelId: string): boolean;
|
|
7
7
|
static supportsTools(modelId: string): boolean;
|
|
8
8
|
static supportsStructuredOutput(modelId: string): boolean;
|
|
9
|
-
static supportsEmbeddings(
|
|
9
|
+
static supportsEmbeddings(modelId: string): boolean;
|
|
10
10
|
static supportsImageGeneration(_modelId: string): boolean;
|
|
11
11
|
static supportsTranscription(_modelId: string): boolean;
|
|
12
12
|
static supportsModeration(_modelId: string): boolean;
|
|
13
13
|
static supportsReasoning(modelId: string): boolean;
|
|
14
14
|
static getPricing(modelId: string): ModelPricing | undefined;
|
|
15
|
+
private static findModel;
|
|
15
16
|
}
|
|
16
17
|
//# sourceMappingURL=Capabilities.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Capabilities.d.ts","sourceRoot":"","sources":["../../../src/providers/deepseek/Capabilities.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErD,qBAAa,YAAY;IACvB,MAAM,CAAC,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE;IAcjD,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAUvD,MAAM,CAAC,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAOzD,MAAM,CAAC,cAAc,CAAC,
|
|
1
|
+
{"version":3,"file":"Capabilities.d.ts","sourceRoot":"","sources":["../../../src/providers/deepseek/Capabilities.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErD,qBAAa,YAAY;IACvB,MAAM,CAAC,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE;IAcjD,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAUvD,MAAM,CAAC,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAOzD,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAK/C,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAQ9C,MAAM,CAAC,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAOzD,MAAM,CAAC,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAKnD,MAAM,CAAC,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAIzD,MAAM,CAAC,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAIvD,MAAM,CAAC,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAIpD,MAAM,CAAC,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAOlD,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IAI5D,OAAO,CAAC,MAAM,CAAC,SAAS;CAGzB"}
|
|
@@ -26,17 +26,25 @@ export class Capabilities {
|
|
|
26
26
|
}
|
|
27
27
|
return 4_096;
|
|
28
28
|
}
|
|
29
|
-
static supportsVision(
|
|
30
|
-
|
|
29
|
+
static supportsVision(modelId) {
|
|
30
|
+
const model = this.findModel(modelId);
|
|
31
|
+
return model?.modalities?.input?.includes("image") || false;
|
|
31
32
|
}
|
|
32
33
|
static supportsTools(modelId) {
|
|
34
|
+
const model = this.findModel(modelId);
|
|
35
|
+
if (model?.capabilities?.includes("function_calling") || model?.capabilities?.includes("tools"))
|
|
36
|
+
return true;
|
|
33
37
|
return /deepseek-chat/.test(modelId);
|
|
34
38
|
}
|
|
35
39
|
static supportsStructuredOutput(modelId) {
|
|
36
|
-
|
|
40
|
+
const model = this.findModel(modelId);
|
|
41
|
+
if (model?.capabilities?.includes("structured_output"))
|
|
42
|
+
return true;
|
|
43
|
+
return /deepseek-chat/.test(modelId);
|
|
37
44
|
}
|
|
38
|
-
static supportsEmbeddings(
|
|
39
|
-
|
|
45
|
+
static supportsEmbeddings(modelId) {
|
|
46
|
+
const model = this.findModel(modelId);
|
|
47
|
+
return model?.modalities?.output?.includes("embeddings") || false;
|
|
40
48
|
}
|
|
41
49
|
static supportsImageGeneration(_modelId) {
|
|
42
50
|
return false;
|
|
@@ -48,9 +56,15 @@ export class Capabilities {
|
|
|
48
56
|
return false;
|
|
49
57
|
}
|
|
50
58
|
static supportsReasoning(modelId) {
|
|
59
|
+
const model = this.findModel(modelId);
|
|
60
|
+
if (model?.capabilities?.includes("reasoning"))
|
|
61
|
+
return true;
|
|
51
62
|
return /deepseek-reasoner/.test(modelId);
|
|
52
63
|
}
|
|
53
64
|
static getPricing(modelId) {
|
|
54
65
|
return PricingRegistry.getPricing(modelId, "deepseek");
|
|
55
66
|
}
|
|
67
|
+
static findModel(modelId) {
|
|
68
|
+
return ModelRegistry.find(modelId, "deepseek");
|
|
69
|
+
}
|
|
56
70
|
}
|
|
@@ -19,5 +19,6 @@ export declare class Capabilities {
|
|
|
19
19
|
static getCapabilities(modelId: string): string[];
|
|
20
20
|
static getPricing(modelId: string): ModelPricing | undefined;
|
|
21
21
|
private static normalizeModelId;
|
|
22
|
+
private static findModel;
|
|
22
23
|
}
|
|
23
24
|
//# sourceMappingURL=Capabilities.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Capabilities.d.ts","sourceRoot":"","sources":["../../../src/providers/gemini/Capabilities.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErD,qBAAa,YAAY;IACvB,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IA2BvD,MAAM,CAAC,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAwBzD,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAW/C,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAW9C,MAAM,CAAC,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAWzD,MAAM,CAAC,0BAA0B,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAI5D,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAIjD,MAAM,CAAC,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAQnD,MAAM,CAAC,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAYxD,MAAM,CAAC,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAQtD,MAAM,CAAC,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAIpD,MAAM,CAAC,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAIhG,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG;QAAE,KAAK,EAAE,MAAM,EAAE,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE;IAY5E,MAAM,CAAC,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE;IAUjD,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IAI5D,OAAO,CAAC,MAAM,CAAC,gBAAgB;
|
|
1
|
+
{"version":3,"file":"Capabilities.d.ts","sourceRoot":"","sources":["../../../src/providers/gemini/Capabilities.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErD,qBAAa,YAAY;IACvB,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IA2BvD,MAAM,CAAC,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAwBzD,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAW/C,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAW9C,MAAM,CAAC,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAWzD,MAAM,CAAC,0BAA0B,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAI5D,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAIjD,MAAM,CAAC,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAQnD,MAAM,CAAC,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAYxD,MAAM,CAAC,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAQtD,MAAM,CAAC,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAIpD,MAAM,CAAC,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAIhG,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG;QAAE,KAAK,EAAE,MAAM,EAAE,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE;IAY5E,MAAM,CAAC,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE;IAUjD,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IAI5D,OAAO,CAAC,MAAM,CAAC,gBAAgB;IAI/B,OAAO,CAAC,MAAM,CAAC,SAAS;CAGzB"}
|
|
@@ -43,7 +43,7 @@ export class Capabilities {
|
|
|
43
43
|
return 4_096;
|
|
44
44
|
}
|
|
45
45
|
static supportsVision(modelId) {
|
|
46
|
-
const model =
|
|
46
|
+
const model = this.findModel(modelId);
|
|
47
47
|
if (model?.modalities?.input?.includes("image"))
|
|
48
48
|
return true;
|
|
49
49
|
const id = this.normalizeModelId(modelId);
|
|
@@ -53,7 +53,7 @@ export class Capabilities {
|
|
|
53
53
|
return !!id.match(/gemini|flash|pro|imagen/);
|
|
54
54
|
}
|
|
55
55
|
static supportsTools(modelId) {
|
|
56
|
-
const model =
|
|
56
|
+
const model = this.findModel(modelId);
|
|
57
57
|
if (model?.capabilities?.includes("function_calling"))
|
|
58
58
|
return true;
|
|
59
59
|
const id = this.normalizeModelId(modelId);
|
|
@@ -63,7 +63,7 @@ export class Capabilities {
|
|
|
63
63
|
return !!id.match(/gemini|pro|flash/);
|
|
64
64
|
}
|
|
65
65
|
static supportsStructuredOutput(modelId) {
|
|
66
|
-
const model =
|
|
66
|
+
const model = this.findModel(modelId);
|
|
67
67
|
if (model?.capabilities?.includes("structured_output"))
|
|
68
68
|
return true;
|
|
69
69
|
const id = this.normalizeModelId(modelId);
|
|
@@ -79,14 +79,14 @@ export class Capabilities {
|
|
|
79
79
|
return this.supportsStructuredOutput(modelId);
|
|
80
80
|
}
|
|
81
81
|
static supportsEmbeddings(modelId) {
|
|
82
|
-
const model =
|
|
82
|
+
const model = this.findModel(modelId);
|
|
83
83
|
if (model?.modalities?.output?.includes("embeddings"))
|
|
84
84
|
return true;
|
|
85
85
|
const id = this.normalizeModelId(modelId);
|
|
86
86
|
return !!id.match(/text-embedding|embedding|gemini-embedding/);
|
|
87
87
|
}
|
|
88
88
|
static supportsImageGeneration(modelId) {
|
|
89
|
-
const model =
|
|
89
|
+
const model = this.findModel(modelId);
|
|
90
90
|
if (model?.capabilities?.includes("image_generation") ||
|
|
91
91
|
model?.modalities?.output?.includes("image"))
|
|
92
92
|
return true;
|
|
@@ -94,7 +94,7 @@ export class Capabilities {
|
|
|
94
94
|
return !!id.match(/imagen/);
|
|
95
95
|
}
|
|
96
96
|
static supportsTranscription(modelId) {
|
|
97
|
-
const model =
|
|
97
|
+
const model = this.findModel(modelId);
|
|
98
98
|
if (model?.modalities?.input?.includes("audio"))
|
|
99
99
|
return true;
|
|
100
100
|
const id = this.normalizeModelId(modelId);
|
|
@@ -137,4 +137,7 @@ export class Capabilities {
|
|
|
137
137
|
static normalizeModelId(modelId) {
|
|
138
138
|
return modelId.replace("models/", "");
|
|
139
139
|
}
|
|
140
|
+
static findModel(modelId) {
|
|
141
|
+
return ModelRegistry.find(modelId, "gemini");
|
|
142
|
+
}
|
|
140
143
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Chat.d.ts","sourceRoot":"","sources":["../../../src/providers/gemini/Chat.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAS3D,qBAAa,UAAU;IAEnB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM;gBADN,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM;IAG3B,OAAO,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"Chat.d.ts","sourceRoot":"","sources":["../../../src/providers/gemini/Chat.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAS3D,qBAAa,UAAU;IAEnB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM;gBADN,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM;IAG3B,OAAO,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC;IAmH1D,OAAO,CAAC,cAAc;CAwBvB"}
|
|
@@ -37,11 +37,6 @@ export class GeminiChat {
|
|
|
37
37
|
},
|
|
38
38
|
...rest
|
|
39
39
|
};
|
|
40
|
-
if (request.thinking) {
|
|
41
|
-
payload.thinkingConfig = {
|
|
42
|
-
includeThoughts: true
|
|
43
|
-
};
|
|
44
|
-
}
|
|
45
40
|
if (systemInstructionParts.length > 0) {
|
|
46
41
|
payload.systemInstruction = { parts: systemInstructionParts };
|
|
47
42
|
}
|
|
@@ -51,7 +46,7 @@ export class GeminiChat {
|
|
|
51
46
|
functionDeclarations: request.tools.map((t) => ({
|
|
52
47
|
name: t.function.name,
|
|
53
48
|
description: t.function.description,
|
|
54
|
-
parameters:
|
|
49
|
+
parameters: t.function.parameters
|
|
55
50
|
}))
|
|
56
51
|
}
|
|
57
52
|
];
|
|
@@ -70,12 +65,8 @@ export class GeminiChat {
|
|
|
70
65
|
const json = (await response.json());
|
|
71
66
|
logger.logResponse("Gemini", response.status, response.statusText, json);
|
|
72
67
|
const candidate = json.candidates?.[0];
|
|
73
|
-
const reasoningText = candidate?.content?.parts
|
|
74
|
-
?.filter((p) => p.thought)
|
|
75
|
-
.map((p) => p.text)
|
|
76
|
-
.join("\n") || null;
|
|
77
68
|
const content = candidate?.content?.parts
|
|
78
|
-
?.filter((p) =>
|
|
69
|
+
?.filter((p) => p.text)
|
|
79
70
|
.map((p) => p.text)
|
|
80
71
|
.join("\n") || null;
|
|
81
72
|
const tool_calls = candidate?.content?.parts
|
|
@@ -98,14 +89,7 @@ export class GeminiChat {
|
|
|
98
89
|
const calculatedUsage = usage
|
|
99
90
|
? ModelRegistry.calculateCost(usage, request.model, "gemini")
|
|
100
91
|
: undefined;
|
|
101
|
-
|
|
102
|
-
return {
|
|
103
|
-
content,
|
|
104
|
-
tool_calls,
|
|
105
|
-
usage: calculatedUsage,
|
|
106
|
-
thinking: thinkingResult,
|
|
107
|
-
reasoning: reasoningText
|
|
108
|
-
};
|
|
92
|
+
return { content, tool_calls, usage: calculatedUsage };
|
|
109
93
|
}
|
|
110
94
|
sanitizeSchema(schema) {
|
|
111
95
|
if (typeof schema !== "object" || schema === null)
|
|
@@ -117,10 +101,9 @@ export class GeminiChat {
|
|
|
117
101
|
delete sanitized.$id;
|
|
118
102
|
delete sanitized.definitions;
|
|
119
103
|
// Recursively sanitize
|
|
120
|
-
if (sanitized.properties
|
|
121
|
-
const
|
|
122
|
-
|
|
123
|
-
props[key] = this.sanitizeSchema(props[key]);
|
|
104
|
+
if (sanitized.properties) {
|
|
105
|
+
for (const key in sanitized.properties) {
|
|
106
|
+
sanitized.properties[key] = this.sanitizeSchema(sanitized.properties[key]);
|
|
124
107
|
}
|
|
125
108
|
}
|
|
126
109
|
if (sanitized.items) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Capabilities.d.ts","sourceRoot":"","sources":["../../../src/providers/ollama/Capabilities.ts"],"names":[],"mappings":"AAEA,qBAAa,kBAAkB;IAC7B,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,MAAM;IAYhC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAKvD,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAc/C,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;
|
|
1
|
+
{"version":3,"file":"Capabilities.d.ts","sourceRoot":"","sources":["../../../src/providers/ollama/Capabilities.ts"],"names":[],"mappings":"AAEA,qBAAa,kBAAkB;IAC7B,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,MAAM;IAYhC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAKvD,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAc/C,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAQ9C,MAAM,CAAC,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAKzD,MAAM,CAAC,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IASnD,MAAM,CAAC,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAKlD,MAAM,CAAC,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAKxD,MAAM,CAAC,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAKtD,MAAM,CAAC,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;CAIpD"}
|
|
@@ -27,7 +27,10 @@ export class OllamaCapabilities {
|
|
|
27
27
|
}
|
|
28
28
|
static supportsTools(modelId) {
|
|
29
29
|
const model = this.findModel(modelId);
|
|
30
|
-
|
|
30
|
+
if (model?.capabilities?.includes("tools"))
|
|
31
|
+
return true;
|
|
32
|
+
// Fallback heuristics for models not in registry
|
|
33
|
+
return /gpt-|claude|gemini|deepseek|llama/.test(modelId.toLowerCase());
|
|
31
34
|
}
|
|
32
35
|
static supportsStructuredOutput(modelId) {
|
|
33
36
|
const model = this.findModel(modelId);
|
|
@@ -22,5 +22,6 @@ export declare class Capabilities {
|
|
|
22
22
|
static normalizeTemperature(temperature: number | undefined, modelId: string): number | undefined | null;
|
|
23
23
|
static formatDisplayName(modelId: string): string;
|
|
24
24
|
static getPricing(modelId: string): ModelPricing | undefined;
|
|
25
|
+
private static findModel;
|
|
25
26
|
}
|
|
26
27
|
//# sourceMappingURL=Capabilities.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Capabilities.d.ts","sourceRoot":"","sources":["../../../src/providers/openai/Capabilities.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErD,qBAAa,YAAY;IACvB,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAUvD,MAAM,CAAC,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IASzD,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAO/C,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAQ9C,MAAM,CAAC,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAOzD,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAIjD,MAAM,CAAC,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAOnD,MAAM,CAAC,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAWxD,MAAM,CAAC,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAOtD,MAAM,CAAC,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAOnD,MAAM,CAAC,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAOlD,MAAM,CAAC,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAItD,MAAM,CAAC,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAIzD,MAAM,CAAC,YAAY,CACjB,OAAO,EAAE,MAAM,GAEb,YAAY,GACZ,OAAO,GACP,YAAY,GACZ,OAAO,GACP,MAAM,GACN,qBAAqB,GACrB,cAAc;IAWlB,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG;QAAE,KAAK,EAAE,MAAM,EAAE,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE;IAiB5E,MAAM,CAAC,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE;IAsBjD,MAAM,CAAC,oBAAoB,CACzB,WAAW,EAAE,MAAM,GAAG,SAAS,EAC/B,OAAO,EAAE,MAAM,GACd,MAAM,GAAG,SAAS,GAAG,IAAI;IAM5B,MAAM,CAAC,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAOjD,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;
|
|
1
|
+
{"version":3,"file":"Capabilities.d.ts","sourceRoot":"","sources":["../../../src/providers/openai/Capabilities.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErD,qBAAa,YAAY;IACvB,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAUvD,MAAM,CAAC,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IASzD,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAO/C,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAQ9C,MAAM,CAAC,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAOzD,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAIjD,MAAM,CAAC,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAOnD,MAAM,CAAC,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAWxD,MAAM,CAAC,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAOtD,MAAM,CAAC,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAOnD,MAAM,CAAC,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAOlD,MAAM,CAAC,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAItD,MAAM,CAAC,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAIzD,MAAM,CAAC,YAAY,CACjB,OAAO,EAAE,MAAM,GAEb,YAAY,GACZ,OAAO,GACP,YAAY,GACZ,OAAO,GACP,MAAM,GACN,qBAAqB,GACrB,cAAc;IAWlB,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG;QAAE,KAAK,EAAE,MAAM,EAAE,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE;IAiB5E,MAAM,CAAC,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE;IAsBjD,MAAM,CAAC,oBAAoB,CACzB,WAAW,EAAE,MAAM,GAAG,SAAS,EAC/B,OAAO,EAAE,MAAM,GACd,MAAM,GAAG,SAAS,GAAG,IAAI;IAM5B,MAAM,CAAC,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAOjD,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IAI5D,OAAO,CAAC,MAAM,CAAC,SAAS;CAGzB"}
|