@grisaiaevy/crafting-agent 0.0.1
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/LICENSE +21 -0
- package/README.md +159 -0
- package/dist/image/api.d.ts +3 -0
- package/dist/image/api.js +23 -0
- package/dist/image/api.js.map +1 -0
- package/dist/image/index.d.ts +2 -0
- package/dist/image/index.js +19 -0
- package/dist/image/index.js.map +1 -0
- package/dist/image/types.d.ts +8 -0
- package/dist/image/types.js +3 -0
- package/dist/image/types.js.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.js +28 -0
- package/dist/index.js.map +1 -0
- package/dist/logger/index.d.ts +1 -0
- package/dist/logger/index.js +7 -0
- package/dist/logger/index.js.map +1 -0
- package/dist/logger/logger.d.ts +3 -0
- package/dist/logger/logger.js +23 -0
- package/dist/logger/logger.js.map +1 -0
- package/dist/prompt/index.d.ts +2 -0
- package/dist/prompt/index.js +6 -0
- package/dist/prompt/index.js.map +1 -0
- package/dist/prompt/prompt.d.ts +2 -0
- package/dist/prompt/prompt.js +68 -0
- package/dist/prompt/prompt.js.map +1 -0
- package/dist/providers/doubao.d.ts +10 -0
- package/dist/providers/doubao.js +76 -0
- package/dist/providers/doubao.js.map +1 -0
- package/dist/providers/google.d.ts +12 -0
- package/dist/providers/google.js +70 -0
- package/dist/providers/google.js.map +1 -0
- package/dist/providers/index.d.ts +6 -0
- package/dist/providers/index.js +23 -0
- package/dist/providers/index.js.map +1 -0
- package/dist/providers/message_converer.d.ts +4 -0
- package/dist/providers/message_converer.js +206 -0
- package/dist/providers/message_converer.js.map +1 -0
- package/dist/providers/minimax.d.ts +10 -0
- package/dist/providers/minimax.js +120 -0
- package/dist/providers/minimax.js.map +1 -0
- package/dist/providers/openrouter.d.ts +17 -0
- package/dist/providers/openrouter.js +178 -0
- package/dist/providers/openrouter.js.map +1 -0
- package/dist/providers/stream.d.ts +1 -0
- package/dist/providers/stream.js +18 -0
- package/dist/providers/stream.js.map +1 -0
- package/dist/storage/index.d.ts +1 -0
- package/dist/storage/index.js +6 -0
- package/dist/storage/index.js.map +1 -0
- package/dist/storage/task-storage.d.ts +13 -0
- package/dist/storage/task-storage.js +7 -0
- package/dist/storage/task-storage.js.map +1 -0
- package/dist/task/converter.d.ts +4 -0
- package/dist/task/converter.js +66 -0
- package/dist/task/converter.js.map +1 -0
- package/dist/task/index.d.ts +5 -0
- package/dist/task/index.js +11 -0
- package/dist/task/index.js.map +1 -0
- package/dist/task/task_executor.d.ts +22 -0
- package/dist/task/task_executor.js +216 -0
- package/dist/task/task_executor.js.map +1 -0
- package/dist/task/types.d.ts +1 -0
- package/dist/task/types.js +18 -0
- package/dist/task/types.js.map +1 -0
- package/dist/tools/index.d.ts +6 -0
- package/dist/tools/index.js +23 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/replace_content.d.ts +9 -0
- package/dist/tools/replace_content.js +72 -0
- package/dist/tools/replace_content.js.map +1 -0
- package/dist/tools/tool_converter.d.ts +3 -0
- package/dist/tools/tool_converter.js +59 -0
- package/dist/tools/tool_converter.js.map +1 -0
- package/dist/tools/types.d.ts +1 -0
- package/dist/tools/types.js +18 -0
- package/dist/tools/types.js.map +1 -0
- package/dist/tools/update_todo_list.d.ts +13 -0
- package/dist/tools/update_todo_list.js +80 -0
- package/dist/tools/update_todo_list.js.map +1 -0
- package/dist/tools/web_search.d.ts +9 -0
- package/dist/tools/web_search.js +44 -0
- package/dist/tools/web_search.js.map +1 -0
- package/dist/tools/write_content.d.ts +9 -0
- package/dist/tools/write_content.js +49 -0
- package/dist/tools/write_content.js.map +1 -0
- package/dist/types/common.d.ts +14 -0
- package/dist/types/common.js +3 -0
- package/dist/types/common.js.map +1 -0
- package/dist/types/context.d.ts +10 -0
- package/dist/types/context.js +3 -0
- package/dist/types/context.js.map +1 -0
- package/dist/types/index.d.ts +7 -0
- package/dist/types/index.js +24 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/prompt.d.ts +5 -0
- package/dist/types/prompt.js +3 -0
- package/dist/types/prompt.js.map +1 -0
- package/dist/types/provider.d.ts +14 -0
- package/dist/types/provider.js +372 -0
- package/dist/types/provider.js.map +1 -0
- package/dist/types/stream.d.ts +59 -0
- package/dist/types/stream.js +3 -0
- package/dist/types/stream.js.map +1 -0
- package/dist/types/task.d.ts +46 -0
- package/dist/types/task.js +3 -0
- package/dist/types/task.js.map +1 -0
- package/dist/types/tools.d.ts +36 -0
- package/dist/types/tools.js +30 -0
- package/dist/types/tools.js.map +1 -0
- package/dist/utils/fetch_html.d.ts +1 -0
- package/dist/utils/fetch_html.js +24 -0
- package/dist/utils/fetch_html.js.map +1 -0
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.js +18 -0
- package/dist/utils/index.js.map +1 -0
- package/package.json +58 -0
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./stream"), exports);
|
|
18
|
+
__exportStar(require("./google"), exports);
|
|
19
|
+
__exportStar(require("./doubao"), exports);
|
|
20
|
+
__exportStar(require("./minimax"), exports);
|
|
21
|
+
__exportStar(require("./openrouter"), exports);
|
|
22
|
+
__exportStar(require("./message_converer"), exports);
|
|
23
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAwB;AACxB,2CAAwB;AACxB,2CAAwB;AACxB,4CAAyB;AACzB,+CAA4B;AAC5B,qDAAkC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { Anthropic } from '@anthropic-ai/sdk';
|
|
2
|
+
import OpenAI from 'openai';
|
|
3
|
+
export declare function convertToOpenAiMessages(anthropicMessages: Anthropic.Messages.MessageParam[]): OpenAI.Chat.ChatCompletionMessageParam[];
|
|
4
|
+
export declare function convertToAnthropicMessage(completion: OpenAI.Chat.Completions.ChatCompletion): Anthropic.Messages.Message;
|
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.convertToOpenAiMessages = convertToOpenAiMessages;
|
|
4
|
+
exports.convertToAnthropicMessage = convertToAnthropicMessage;
|
|
5
|
+
function convertToOpenAiMessages(anthropicMessages) {
|
|
6
|
+
const openAiMessages = [];
|
|
7
|
+
for (const anthropicMessage of anthropicMessages) {
|
|
8
|
+
if (typeof anthropicMessage.content === 'string') {
|
|
9
|
+
openAiMessages.push({
|
|
10
|
+
role: anthropicMessage.role,
|
|
11
|
+
content: anthropicMessage.content,
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
else {
|
|
15
|
+
// image_url.url is base64 encoded image data
|
|
16
|
+
// ensure it contains the content-type of the image: data:image/png;base64,
|
|
17
|
+
/*
|
|
18
|
+
{ role: "user", content: "" | { type: "text", text: string } | { type: "image_url", image_url: { url: string } } },
|
|
19
|
+
// content required unless tool_calls is present
|
|
20
|
+
{ role: "assistant", content?: "" | null, tool_calls?: [{ id: "", function: { name: "", arguments: "" }, type: "function" }] },
|
|
21
|
+
{ role: "tool", tool_call_id: "", content: ""}
|
|
22
|
+
*/
|
|
23
|
+
if (anthropicMessage.role === 'user') {
|
|
24
|
+
const { nonToolMessages, toolMessages } = anthropicMessage.content.reduce((acc, part) => {
|
|
25
|
+
if (part.type === 'tool_result') {
|
|
26
|
+
acc.toolMessages.push(part);
|
|
27
|
+
}
|
|
28
|
+
else if (part.type === 'text' || part.type === 'image') {
|
|
29
|
+
acc.nonToolMessages.push(part);
|
|
30
|
+
} // user cannot send tool_use messages
|
|
31
|
+
return acc;
|
|
32
|
+
}, { nonToolMessages: [], toolMessages: [] });
|
|
33
|
+
// Process tool result messages FIRST since they must follow the tool use messages
|
|
34
|
+
const toolResultImages = [];
|
|
35
|
+
toolMessages.forEach((toolMessage) => {
|
|
36
|
+
// The Anthropic SDK allows tool results to be a string or an array of text and image blocks, enabling rich and structured content. In contrast, the OpenAI SDK only supports tool results as a single string, so we map the Anthropic tool result parts into one concatenated string to maintain compatibility.
|
|
37
|
+
let content;
|
|
38
|
+
if (typeof toolMessage.content === 'string') {
|
|
39
|
+
content = toolMessage.content;
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
content =
|
|
43
|
+
toolMessage.content
|
|
44
|
+
?.map((part) => {
|
|
45
|
+
if (part.type === 'image') {
|
|
46
|
+
toolResultImages.push(part);
|
|
47
|
+
return '(see following user message for image)';
|
|
48
|
+
}
|
|
49
|
+
return part.type === 'text' ? part.text : '';
|
|
50
|
+
})
|
|
51
|
+
.join('\n') ?? '';
|
|
52
|
+
}
|
|
53
|
+
openAiMessages.push({
|
|
54
|
+
role: 'tool',
|
|
55
|
+
tool_call_id: toolMessage.tool_use_id,
|
|
56
|
+
content: content,
|
|
57
|
+
});
|
|
58
|
+
});
|
|
59
|
+
// If tool results contain images, send as a separate user message
|
|
60
|
+
// I ran into an issue where if I gave feedback for one of many tool uses, the request would fail.
|
|
61
|
+
// "Messages following `tool_use` blocks must begin with a matching number of `tool_result` blocks."
|
|
62
|
+
// Therefore we need to send these images after the tool result messages
|
|
63
|
+
// NOTE: it's actually okay to have multiple user messages in a row, the model will treat them as a continuation of the same input (this way works better than combining them into one message, since the tool result specifically mentions (see following user message for image)
|
|
64
|
+
// UPDATE v2.0: we don't use tools anymore, but if we did it's important to note that the openrouter prompt caching mechanism requires one user message at a time, so we would need to add these images to the user content array instead.
|
|
65
|
+
// if (toolResultImages.length > 0) {
|
|
66
|
+
// openAiMessages.push({
|
|
67
|
+
// role: "user",
|
|
68
|
+
// content: toolResultImages.map((part) => ({
|
|
69
|
+
// type: "image_url",
|
|
70
|
+
// image_url: { url: `data:${part.source.media_type};base64,${part.source.data}` },
|
|
71
|
+
// })),
|
|
72
|
+
// })
|
|
73
|
+
// }
|
|
74
|
+
// Process non-tool messages
|
|
75
|
+
if (nonToolMessages.length > 0) {
|
|
76
|
+
openAiMessages.push({
|
|
77
|
+
role: 'user',
|
|
78
|
+
content: nonToolMessages.map((part) => {
|
|
79
|
+
if (part.type === 'image') {
|
|
80
|
+
const url = part.source.type === 'base64'
|
|
81
|
+
? `data:${part.source.media_type};base64,${part.source.data}`
|
|
82
|
+
: part.source.url;
|
|
83
|
+
return {
|
|
84
|
+
type: 'image_url',
|
|
85
|
+
image_url: { url },
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
return { type: 'text', text: part.text };
|
|
89
|
+
}),
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
else if (anthropicMessage.role === 'assistant') {
|
|
94
|
+
const { nonToolMessages, toolMessages } = anthropicMessage.content.reduce((acc, part) => {
|
|
95
|
+
if (part.type === 'tool_use') {
|
|
96
|
+
acc.toolMessages.push(part);
|
|
97
|
+
}
|
|
98
|
+
else if (part.type === 'text' || part.type === 'image') {
|
|
99
|
+
acc.nonToolMessages.push(part);
|
|
100
|
+
} // assistant cannot send tool_result messages
|
|
101
|
+
return acc;
|
|
102
|
+
}, { nonToolMessages: [], toolMessages: [] });
|
|
103
|
+
// Process non-tool messages
|
|
104
|
+
let content;
|
|
105
|
+
const reasoningDetails = [];
|
|
106
|
+
if (nonToolMessages.length > 0) {
|
|
107
|
+
nonToolMessages.forEach((part) => {
|
|
108
|
+
// @ts-ignore-next-line
|
|
109
|
+
if (part.type === 'text' && part.reasoning_details) {
|
|
110
|
+
// @ts-ignore-next-line
|
|
111
|
+
reasoningDetails.push(part.reasoning_details);
|
|
112
|
+
}
|
|
113
|
+
});
|
|
114
|
+
content = nonToolMessages
|
|
115
|
+
.map((part) => {
|
|
116
|
+
if (part.type === 'image') {
|
|
117
|
+
return ''; // impossible as the assistant cannot send images
|
|
118
|
+
}
|
|
119
|
+
return part.text;
|
|
120
|
+
})
|
|
121
|
+
.join('\n');
|
|
122
|
+
}
|
|
123
|
+
// Process tool use messages
|
|
124
|
+
const tool_calls = toolMessages.map((toolMessage) => ({
|
|
125
|
+
id: toolMessage.id,
|
|
126
|
+
type: 'function',
|
|
127
|
+
function: {
|
|
128
|
+
name: toolMessage.name,
|
|
129
|
+
// json string
|
|
130
|
+
arguments: JSON.stringify(toolMessage.input),
|
|
131
|
+
},
|
|
132
|
+
}));
|
|
133
|
+
openAiMessages.push({
|
|
134
|
+
role: 'assistant',
|
|
135
|
+
content,
|
|
136
|
+
// Cannot be an empty array. API expects an array with minimum length 1, and will respond with an error if it's empty
|
|
137
|
+
tool_calls: tool_calls.length > 0 ? tool_calls : undefined,
|
|
138
|
+
// @ts-ignore-next-line
|
|
139
|
+
reasoning_details: reasoningDetails.length > 0 ? reasoningDetails : undefined,
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
return openAiMessages;
|
|
145
|
+
}
|
|
146
|
+
// Convert OpenAI response to Anthropic format
|
|
147
|
+
function convertToAnthropicMessage(completion) {
|
|
148
|
+
const openAiMessage = completion.choices[0].message;
|
|
149
|
+
const anthropicMessage = {
|
|
150
|
+
id: completion.id,
|
|
151
|
+
type: 'message',
|
|
152
|
+
role: openAiMessage.role, // always "assistant"
|
|
153
|
+
content: [
|
|
154
|
+
{
|
|
155
|
+
type: 'text',
|
|
156
|
+
text: openAiMessage.content || '',
|
|
157
|
+
citations: null,
|
|
158
|
+
},
|
|
159
|
+
],
|
|
160
|
+
model: completion.model,
|
|
161
|
+
stop_reason: (() => {
|
|
162
|
+
switch (completion.choices[0].finish_reason) {
|
|
163
|
+
case 'stop':
|
|
164
|
+
return 'end_turn';
|
|
165
|
+
case 'length':
|
|
166
|
+
return 'max_tokens';
|
|
167
|
+
case 'tool_calls':
|
|
168
|
+
return 'tool_use';
|
|
169
|
+
case 'content_filter': // Anthropic doesn't have an exact equivalent
|
|
170
|
+
default:
|
|
171
|
+
return null;
|
|
172
|
+
}
|
|
173
|
+
})(),
|
|
174
|
+
stop_sequence: null, // which custom stop_sequence was generated, if any (not applicable if you don't use stop_sequence)
|
|
175
|
+
usage: {
|
|
176
|
+
input_tokens: completion.usage?.prompt_tokens || 0,
|
|
177
|
+
output_tokens: completion.usage?.completion_tokens || 0,
|
|
178
|
+
cache_creation_input_tokens: null,
|
|
179
|
+
cache_read_input_tokens: null,
|
|
180
|
+
cache_creation: null,
|
|
181
|
+
server_tool_use: null,
|
|
182
|
+
service_tier: null,
|
|
183
|
+
},
|
|
184
|
+
};
|
|
185
|
+
if (openAiMessage.tool_calls && openAiMessage.tool_calls.length > 0) {
|
|
186
|
+
anthropicMessage.content.push(...openAiMessage.tool_calls.map((toolCall) => {
|
|
187
|
+
let parsedInput = {};
|
|
188
|
+
if (toolCall.type === 'function') {
|
|
189
|
+
try {
|
|
190
|
+
parsedInput = JSON.parse(toolCall.function.arguments || '{}');
|
|
191
|
+
}
|
|
192
|
+
catch (error) {
|
|
193
|
+
console.error('Failed to parse tool arguments:', error);
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
return {
|
|
197
|
+
type: 'tool_use',
|
|
198
|
+
id: toolCall.id,
|
|
199
|
+
name: toolCall.type === 'function' ? toolCall.function.name : '',
|
|
200
|
+
input: parsedInput,
|
|
201
|
+
};
|
|
202
|
+
}));
|
|
203
|
+
}
|
|
204
|
+
return anthropicMessage;
|
|
205
|
+
}
|
|
206
|
+
//# sourceMappingURL=message_converer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"message_converer.js","sourceRoot":"","sources":["../../src/providers/message_converer.ts"],"names":[],"mappings":";;AAGA,0DAyKC;AAGD,8DA8DC;AA1OD,SAAgB,uBAAuB,CACrC,iBAAoD;IAEpD,MAAM,cAAc,GAA6C,EAAE,CAAA;IAEnE,KAAK,MAAM,gBAAgB,IAAI,iBAAiB,EAAE,CAAC;QACjD,IAAI,OAAO,gBAAgB,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;YACjD,cAAc,CAAC,IAAI,CAAC;gBAClB,IAAI,EAAE,gBAAgB,CAAC,IAAI;gBAC3B,OAAO,EAAE,gBAAgB,CAAC,OAAO;aAClC,CAAC,CAAA;QACJ,CAAC;aAAM,CAAC;YACN,6CAA6C;YAC7C,2EAA2E;YAC3E;;;;;iBAKK;YACL,IAAI,gBAAgB,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBACrC,MAAM,EAAE,eAAe,EAAE,YAAY,EAAE,GACrC,gBAAgB,CAAC,OAAO,CAAC,MAAM,CAO7B,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;oBACZ,IAAI,IAAI,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;wBAChC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;oBAC7B,CAAC;yBAAM,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;wBACzD,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;oBAChC,CAAC,CAAC,qCAAqC;oBACvC,OAAO,GAAG,CAAA;gBACZ,CAAC,EACD,EAAE,eAAe,EAAE,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,CAC1C,CAAA;gBAEH,kFAAkF;gBAClF,MAAM,gBAAgB,GAAyC,EAAE,CAAA;gBACjE,YAAY,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,EAAE;oBACnC,gTAAgT;oBAChT,IAAI,OAAe,CAAA;oBAEnB,IAAI,OAAO,WAAW,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;wBAC5C,OAAO,GAAG,WAAW,CAAC,OAAO,CAAA;oBAC/B,CAAC;yBAAM,CAAC;wBACN,OAAO;4BACL,WAAW,CAAC,OAAO;gCACjB,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;gCACb,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;oCAC1B,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;oCAC3B,OAAO,wCAAwC,CAAA;gCACjD,CAAC;gCACD,OAAO,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAA;4BAC9C,CAAC,CAAC;iCACD,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAA;oBACvB,CAAC;oBACD,cAAc,CAAC,IAAI,CAAC;wBAClB,IAAI,EAAE,MAAM;wBACZ,YAAY,EAAE,WAAW,CAAC,WAAW;wBACrC,OAAO,EAAE,OAAO;qBACjB,CAAC,CAAA;gBACJ,CAAC,CAAC,CAAA;gBAEF,kEAAkE;gBAClE,kGAAkG;gBAClG,oGAAoG;gBACpG,wEAAwE;gBACxE,kRAAkR;gBAClR,0OAA0O;gBAC1O,qCAAqC;gBACrC,yBAAyB;gBACzB,kBAAkB;gBAClB,+CAA+C;gBAC/C,wBAAwB;gBACxB,sFAAsF;gBACtF,SAAS;gBACT,MAAM;gBACN,IAAI;gBAEJ,4BAA4B;gBAC5B,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC/B,cAAc,CAAC,IAAI,CAAC;wBAClB,IAAI,EAAE,MAAM;wBACZ,OAAO,EAAE,eAAe,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;4BACpC,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;gCAC1B,MAAM,GAAG,GACP,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,QAAQ;oCAC3B,CAAC,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,UAAU,WAAW,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;oCAC7D,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAA;gCACrB,OAAO;oCACL,IAAI,EAAE,WAAW;oCACjB,SAAS,EAAE,EAAE,GAAG,EAAE;iCACnB,CAAA;4BACH,CAAC;4BACD,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAA;wBAC1C,CAAC,CAAC;qBACH,CAAC,CAAA;gBACJ,CAAC;YACH,CAAC;iBAAM,IAAI,gBAAgB,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;gBACjD,MAAM,EAAE,eAAe,EAAE,YAAY,EAAE,GACrC,gBAAgB,CAAC,OAAO,CAAC,MAAM,CAO7B,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;oBACZ,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;wBAC7B,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;oBAC7B,CAAC;yBAAM,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;wBACzD,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;oBAChC,CAAC,CAAC,6CAA6C;oBAC/C,OAAO,GAAG,CAAA;gBACZ,CAAC,EACD,EAAE,eAAe,EAAE,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,CAC1C,CAAA;gBAEH,4BAA4B;gBAC5B,IAAI,OAA2B,CAAA;gBAC/B,MAAM,gBAAgB,GAAU,EAAE,CAAA;gBAClC,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC/B,eAAe,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;wBAC/B,uBAAuB;wBACvB,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;4BACnD,uBAAuB;4BACvB,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAA;wBAC/C,CAAC;oBACH,CAAC,CAAC,CAAA;oBACF,OAAO,GAAG,eAAe;yBACtB,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;wBACZ,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;4BAC1B,OAAO,EAAE,CAAA,CAAC,iDAAiD;wBAC7D,CAAC;wBACD,OAAO,IAAI,CAAC,IAAI,CAAA;oBAClB,CAAC,CAAC;yBACD,IAAI,CAAC,IAAI,CAAC,CAAA;gBACf,CAAC;gBAED,4BAA4B;gBAC5B,MAAM,UAAU,GACd,YAAY,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;oBACjC,EAAE,EAAE,WAAW,CAAC,EAAE;oBAClB,IAAI,EAAE,UAAU;oBAChB,QAAQ,EAAE;wBACR,IAAI,EAAE,WAAW,CAAC,IAAI;wBACtB,cAAc;wBACd,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC;qBAC7C;iBACF,CAAC,CAAC,CAAA;gBAEL,cAAc,CAAC,IAAI,CAAC;oBAClB,IAAI,EAAE,WAAW;oBACjB,OAAO;oBACP,qHAAqH;oBACrH,UAAU,EAAE,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS;oBAC1D,uBAAuB;oBACvB,iBAAiB,EACf,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,SAAS;iBAC7D,CAAC,CAAA;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,cAAc,CAAA;AACvB,CAAC;AAED,8CAA8C;AAC9C,SAAgB,yBAAyB,CACvC,UAAkD;IAElD,MAAM,aAAa,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAA;IACnD,MAAM,gBAAgB,GAA+B;QACnD,EAAE,EAAE,UAAU,CAAC,EAAE;QACjB,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,aAAa,CAAC,IAAI,EAAE,qBAAqB;QAC/C,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,aAAa,CAAC,OAAO,IAAI,EAAE;gBACjC,SAAS,EAAE,IAAI;aAChB;SACF;QACD,KAAK,EAAE,UAAU,CAAC,KAAK;QACvB,WAAW,EAAE,CAAC,GAAG,EAAE;YACjB,QAAQ,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;gBAC5C,KAAK,MAAM;oBACT,OAAO,UAAU,CAAA;gBACnB,KAAK,QAAQ;oBACX,OAAO,YAAY,CAAA;gBACrB,KAAK,YAAY;oBACf,OAAO,UAAU,CAAA;gBACnB,KAAK,gBAAgB,CAAC,CAAC,6CAA6C;gBACpE;oBACE,OAAO,IAAI,CAAA;YACf,CAAC;QACH,CAAC,CAAC,EAAE;QACJ,aAAa,EAAE,IAAI,EAAE,mGAAmG;QACxH,KAAK,EAAE;YACL,YAAY,EAAE,UAAU,CAAC,KAAK,EAAE,aAAa,IAAI,CAAC;YAClD,aAAa,EAAE,UAAU,CAAC,KAAK,EAAE,iBAAiB,IAAI,CAAC;YACvD,2BAA2B,EAAE,IAAI;YACjC,uBAAuB,EAAE,IAAI;YAC7B,cAAc,EAAE,IAAI;YACpB,eAAe,EAAE,IAAI;YACrB,YAAY,EAAE,IAAI;SACnB;KACF,CAAA;IAED,IAAI,aAAa,CAAC,UAAU,IAAI,aAAa,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpE,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAC3B,GAAG,aAAa,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,QAAQ,EAA0B,EAAE;YACnE,IAAI,WAAW,GAAG,EAAE,CAAA;YACpB,IAAI,QAAQ,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;gBACjC,IAAI,CAAC;oBACH,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,IAAI,IAAI,CAAC,CAAA;gBAC/D,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,OAAO,CAAC,KAAK,CAAC,iCAAiC,EAAE,KAAK,CAAC,CAAA;gBACzD,CAAC;YACH,CAAC;YACD,OAAO;gBACL,IAAI,EAAE,UAAU;gBAChB,EAAE,EAAE,QAAQ,CAAC,EAAE;gBACf,IAAI,EAAE,QAAQ,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;gBAChE,KAAK,EAAE,WAAW;aACnB,CAAA;QACH,CAAC,CAAC,CACH,CAAA;IACH,CAAC;IACD,OAAO,gBAAgB,CAAA;AACzB,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { ApiHandler, ApiStream } from './index';
|
|
2
|
+
import { ProviderConfig, AbstractTool } from '../types';
|
|
3
|
+
import Anthropic from '@anthropic-ai/sdk';
|
|
4
|
+
export declare class MinimaxHandler implements ApiHandler {
|
|
5
|
+
private readonly minimaxConfig;
|
|
6
|
+
private client;
|
|
7
|
+
constructor(minimaxConfig: ProviderConfig);
|
|
8
|
+
private ensureClient;
|
|
9
|
+
chatCompletion(systemPrompt: string, messages: Anthropic.Messages.MessageParam[], tools?: AbstractTool[]): ApiStream;
|
|
10
|
+
}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.MinimaxHandler = void 0;
|
|
7
|
+
const index_1 = require("../tools/index");
|
|
8
|
+
const sdk_1 = __importDefault(require("@anthropic-ai/sdk"));
|
|
9
|
+
class MinimaxHandler {
|
|
10
|
+
constructor(minimaxConfig) {
|
|
11
|
+
this.minimaxConfig = minimaxConfig;
|
|
12
|
+
}
|
|
13
|
+
ensureClient() {
|
|
14
|
+
if (!this.client) {
|
|
15
|
+
if (!this.minimaxConfig.apiKey) {
|
|
16
|
+
throw new Error('MiniMax API key is required');
|
|
17
|
+
}
|
|
18
|
+
try {
|
|
19
|
+
this.client = new sdk_1.default({
|
|
20
|
+
baseURL: 'https://api.minimaxi.com/anthropic',
|
|
21
|
+
apiKey: this.minimaxConfig.apiKey,
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
catch (error) {
|
|
25
|
+
throw new Error(`Error creating MiniMax client: ${error.message}`);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
return this.client;
|
|
29
|
+
}
|
|
30
|
+
async *chatCompletion(systemPrompt, messages, tools) {
|
|
31
|
+
const client = this.ensureClient();
|
|
32
|
+
const anthropicTools = tools?.map(tool => (0, index_1.convertToAnthropicTool)(tool));
|
|
33
|
+
const stream = await client.messages.create({
|
|
34
|
+
model: this.minimaxConfig.modelName || '',
|
|
35
|
+
max_tokens: this.minimaxConfig.maxTokens || 8192,
|
|
36
|
+
temperature: 1.0,
|
|
37
|
+
system: systemPrompt,
|
|
38
|
+
messages: messages,
|
|
39
|
+
stream: true,
|
|
40
|
+
tools: anthropicTools || undefined,
|
|
41
|
+
tool_choice: { type: 'any' },
|
|
42
|
+
});
|
|
43
|
+
const lastStartedToolCall = { id: '', name: '', arguments: '' };
|
|
44
|
+
for await (const chunk of stream) {
|
|
45
|
+
switch (chunk.type) {
|
|
46
|
+
case 'message_start':
|
|
47
|
+
const usage = chunk.message.usage;
|
|
48
|
+
yield {
|
|
49
|
+
type: 'usage',
|
|
50
|
+
inputTokens: usage.input_tokens || 0,
|
|
51
|
+
outputTokens: usage.output_tokens || 0,
|
|
52
|
+
cacheReadTokens: usage.cache_creation_input_tokens || 0,
|
|
53
|
+
cacheWriteTokens: usage.cache_read_input_tokens || 0,
|
|
54
|
+
};
|
|
55
|
+
break;
|
|
56
|
+
case 'content_block_start':
|
|
57
|
+
switch (chunk.content_block.type) {
|
|
58
|
+
case 'thinking':
|
|
59
|
+
yield {
|
|
60
|
+
type: 'reasoning',
|
|
61
|
+
reasoning: chunk.content_block.thinking || '',
|
|
62
|
+
};
|
|
63
|
+
break;
|
|
64
|
+
case 'tool_use':
|
|
65
|
+
if (chunk.content_block.id && chunk.content_block.name) {
|
|
66
|
+
lastStartedToolCall.id = chunk.content_block.id;
|
|
67
|
+
lastStartedToolCall.name = chunk.content_block.name;
|
|
68
|
+
lastStartedToolCall.arguments = '';
|
|
69
|
+
}
|
|
70
|
+
break;
|
|
71
|
+
case 'text':
|
|
72
|
+
yield {
|
|
73
|
+
type: 'text',
|
|
74
|
+
text: chunk.content_block.text,
|
|
75
|
+
};
|
|
76
|
+
break;
|
|
77
|
+
}
|
|
78
|
+
break;
|
|
79
|
+
case 'content_block_delta':
|
|
80
|
+
switch (chunk.delta.type) {
|
|
81
|
+
case 'thinking_delta':
|
|
82
|
+
yield {
|
|
83
|
+
type: 'reasoning',
|
|
84
|
+
reasoning: chunk.delta.thinking,
|
|
85
|
+
};
|
|
86
|
+
break;
|
|
87
|
+
case 'input_json_delta':
|
|
88
|
+
if (chunk.delta.partial_json) {
|
|
89
|
+
yield {
|
|
90
|
+
type: 'tool_calls',
|
|
91
|
+
tool_call: {
|
|
92
|
+
function: {
|
|
93
|
+
id: lastStartedToolCall.id,
|
|
94
|
+
name: lastStartedToolCall.name,
|
|
95
|
+
arguments: lastStartedToolCall.arguments +
|
|
96
|
+
chunk.delta.partial_json,
|
|
97
|
+
},
|
|
98
|
+
},
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
break;
|
|
102
|
+
case 'text_delta':
|
|
103
|
+
yield {
|
|
104
|
+
type: 'text',
|
|
105
|
+
text: chunk.delta.text,
|
|
106
|
+
};
|
|
107
|
+
break;
|
|
108
|
+
}
|
|
109
|
+
break;
|
|
110
|
+
case 'content_block_stop':
|
|
111
|
+
lastStartedToolCall.id = '';
|
|
112
|
+
lastStartedToolCall.name = '';
|
|
113
|
+
lastStartedToolCall.arguments = '';
|
|
114
|
+
break;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
exports.MinimaxHandler = MinimaxHandler;
|
|
120
|
+
//# sourceMappingURL=minimax.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"minimax.js","sourceRoot":"","sources":["../../src/providers/minimax.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { ApiHandler, GenerateApiHandler, AgentImageConfig, ApiStream, ApiStreamImageChunk } from './index';
|
|
2
|
+
import { ProviderConfig, AbstractTool } from '../types';
|
|
3
|
+
import Anthropic from '@anthropic-ai/sdk';
|
|
4
|
+
import OpenAI from 'openai';
|
|
5
|
+
export declare class OpenRouterHandler implements ApiHandler, GenerateApiHandler {
|
|
6
|
+
private openrouterConfig;
|
|
7
|
+
private client;
|
|
8
|
+
private lastGenerationId;
|
|
9
|
+
constructor(openrouterConfig: ProviderConfig);
|
|
10
|
+
createOpenaiClient(): OpenAI;
|
|
11
|
+
chatCompletion(systemPormpt: string, messages: Anthropic.Messages.MessageParam[], tools?: AbstractTool[]): ApiStream;
|
|
12
|
+
createOpenRouterStream(client: OpenAI, systemPrompt: string, messages: Anthropic.Messages.MessageParam[], tools?: AbstractTool[]): Promise<import("openai/core/streaming").Stream<OpenAI.Chat.Completions.ChatCompletionChunk> & {
|
|
13
|
+
_request_id?: string | null;
|
|
14
|
+
} & OpenAI.Chat.Completions.ChatCompletion>;
|
|
15
|
+
generateContent(userInstruction: string, messages: Anthropic.Messages.MessageParam[], config: AgentImageConfig): Promise<ApiStreamImageChunk>;
|
|
16
|
+
private resolveImageSources;
|
|
17
|
+
}
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.OpenRouterHandler = void 0;
|
|
7
|
+
const openai_1 = __importDefault(require("openai"));
|
|
8
|
+
const message_converer_1 = require("./message_converer");
|
|
9
|
+
class OpenRouterHandler {
|
|
10
|
+
constructor(openrouterConfig) {
|
|
11
|
+
this.lastGenerationId = null;
|
|
12
|
+
this.openrouterConfig = openrouterConfig;
|
|
13
|
+
if (!this.openrouterConfig.baseUrl) {
|
|
14
|
+
this.openrouterConfig.baseUrl = 'https://openrouter.ai/api/v1';
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
createOpenaiClient() {
|
|
18
|
+
if (this.client) {
|
|
19
|
+
return this.client;
|
|
20
|
+
}
|
|
21
|
+
try {
|
|
22
|
+
this.client = new openai_1.default({
|
|
23
|
+
baseURL: this.openrouterConfig.baseUrl,
|
|
24
|
+
apiKey: this.openrouterConfig.apiKey,
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
catch (error) {
|
|
28
|
+
throw new Error(`openrouter: error create client: ${error.meesage}`);
|
|
29
|
+
}
|
|
30
|
+
return this.client;
|
|
31
|
+
}
|
|
32
|
+
async *chatCompletion(systemPormpt, messages, tools) {
|
|
33
|
+
const client = this.createOpenaiClient();
|
|
34
|
+
const stream = await this.createOpenRouterStream(client, systemPormpt, messages, tools);
|
|
35
|
+
let didOutputUsage = false;
|
|
36
|
+
for await (const chunk of stream) {
|
|
37
|
+
const choice = chunk.choices?.[0];
|
|
38
|
+
if (choice?.finish_reason === 'error') {
|
|
39
|
+
const choiceWithError = choice;
|
|
40
|
+
if (choiceWithError.error) {
|
|
41
|
+
const error = choiceWithError.error;
|
|
42
|
+
console.error(`OpenRouter Mid-Stream Error: ${error?.code || 'Unknown'} - ${error?.message || 'Unknown error'}`);
|
|
43
|
+
const errorDetails = typeof error === 'object'
|
|
44
|
+
? JSON.stringify(error, null, 2)
|
|
45
|
+
: String(error);
|
|
46
|
+
throw new Error(`OpenRouter Mid-Stream Error: ${errorDetails}`);
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
throw new Error(`OpenRouter Mid-Stream Error: Stream terminated with error status but no error details provided`);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
if (!this.lastGenerationId && chunk.id) {
|
|
53
|
+
this.lastGenerationId = chunk.id;
|
|
54
|
+
}
|
|
55
|
+
const delta = chunk.choices[0]?.delta;
|
|
56
|
+
if (delta?.content) {
|
|
57
|
+
yield {
|
|
58
|
+
type: 'text',
|
|
59
|
+
text: delta.content,
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
if (!didOutputUsage && chunk.usage) {
|
|
63
|
+
yield {
|
|
64
|
+
type: 'usage',
|
|
65
|
+
cacheWriteTokens: 0,
|
|
66
|
+
cacheReadTokens: chunk.usage.prompt_tokens_details?.cached_tokens || 0,
|
|
67
|
+
inputTokens: (chunk.usage.prompt_tokens || 0) -
|
|
68
|
+
(chunk.usage.prompt_tokens_details?.cached_tokens || 0),
|
|
69
|
+
outputTokens: chunk.usage.completion_tokens || 0,
|
|
70
|
+
totalCost: chunk.usage.total_tokens || 0,
|
|
71
|
+
};
|
|
72
|
+
didOutputUsage = true;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
async createOpenRouterStream(client, systemPrompt, messages, tools) {
|
|
77
|
+
const openapiMessages = [
|
|
78
|
+
{ role: 'system', content: systemPrompt },
|
|
79
|
+
...(0, message_converer_1.convertToOpenAiMessages)(messages),
|
|
80
|
+
];
|
|
81
|
+
return client.chat.completions.create({
|
|
82
|
+
model: this.openrouterConfig.modelName || '',
|
|
83
|
+
messages: openapiMessages,
|
|
84
|
+
stream: true,
|
|
85
|
+
tools: tools,
|
|
86
|
+
// @ts-ignore
|
|
87
|
+
modalities: ['image', 'text']
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
async generateContent(userInstruction, messages, config) {
|
|
91
|
+
void config;
|
|
92
|
+
const preparedMessages = await this.resolveImageSources(messages);
|
|
93
|
+
const openaiMessages = (0, message_converer_1.convertToOpenAiMessages)(preparedMessages);
|
|
94
|
+
if (userInstruction) {
|
|
95
|
+
openaiMessages.unshift({
|
|
96
|
+
role: 'user',
|
|
97
|
+
content: [
|
|
98
|
+
{
|
|
99
|
+
type: 'text',
|
|
100
|
+
text: userInstruction,
|
|
101
|
+
},
|
|
102
|
+
],
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
const response = await fetch(`${this.openrouterConfig.baseUrl}/chat/completions`, {
|
|
106
|
+
method: 'POST',
|
|
107
|
+
headers: {
|
|
108
|
+
Authorization: `Bearer ${this.openrouterConfig.apiKey}`,
|
|
109
|
+
'Content-Type': 'application/json',
|
|
110
|
+
},
|
|
111
|
+
body: JSON.stringify({
|
|
112
|
+
model: this.openrouterConfig.modelName || '',
|
|
113
|
+
messages: openaiMessages,
|
|
114
|
+
modalities: ['image', 'text'],
|
|
115
|
+
imageConfig: {
|
|
116
|
+
aspectRatio: config.aspectRatio,
|
|
117
|
+
imageSize: config.imageSize,
|
|
118
|
+
},
|
|
119
|
+
}),
|
|
120
|
+
});
|
|
121
|
+
if (!response.ok) {
|
|
122
|
+
const errorPayload = await response.text();
|
|
123
|
+
throw new Error(`openrouter: generateContent failed with status ${response.status}: ${errorPayload}`);
|
|
124
|
+
}
|
|
125
|
+
const data = await response.json();
|
|
126
|
+
const result = {
|
|
127
|
+
type: 'image',
|
|
128
|
+
data: [],
|
|
129
|
+
text: undefined,
|
|
130
|
+
thinking: undefined,
|
|
131
|
+
};
|
|
132
|
+
const content = data?.choices?.[0]?.message?.content;
|
|
133
|
+
if (Array.isArray(content)) {
|
|
134
|
+
for (const part of content) {
|
|
135
|
+
if (part.type === 'text' && part.text) {
|
|
136
|
+
result.text = result.text ? `${result.text}\n${part.text}` : part.text;
|
|
137
|
+
}
|
|
138
|
+
else if (part.type === 'image_url' && part.image_url?.url) {
|
|
139
|
+
result.data.push(part.image_url.url);
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
else if (typeof content === 'string') {
|
|
144
|
+
result.text = content;
|
|
145
|
+
result.thinking = data?.choices?.[0]?.message?.reasoning;
|
|
146
|
+
}
|
|
147
|
+
const images = data?.choices?.[0]?.message?.images;
|
|
148
|
+
if (Array.isArray(images)) {
|
|
149
|
+
for (const img of images) {
|
|
150
|
+
if (img?.image_url?.url) {
|
|
151
|
+
result.data.push(img.image_url.url);
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
return result;
|
|
156
|
+
}
|
|
157
|
+
async resolveImageSources(messages) {
|
|
158
|
+
return Promise.all(messages.map(async (message) => {
|
|
159
|
+
if (!Array.isArray(message.content)) {
|
|
160
|
+
return message;
|
|
161
|
+
}
|
|
162
|
+
const resolvedContent = await Promise.all(message.content.map(async (part) => {
|
|
163
|
+
if (part.type !== 'image' ||
|
|
164
|
+
!part.source ||
|
|
165
|
+
part.source.type !== 'path') {
|
|
166
|
+
return part;
|
|
167
|
+
}
|
|
168
|
+
return part;
|
|
169
|
+
}));
|
|
170
|
+
return {
|
|
171
|
+
...message,
|
|
172
|
+
content: resolvedContent,
|
|
173
|
+
};
|
|
174
|
+
}));
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
exports.OpenRouterHandler = OpenRouterHandler;
|
|
178
|
+
//# sourceMappingURL=openrouter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openrouter.js","sourceRoot":"","sources":["../../src/providers/openrouter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from '../types/stream';
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("../types/stream"), exports);
|
|
18
|
+
//# sourceMappingURL=stream.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stream.js","sourceRoot":"","sources":["../../src/providers/stream.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,kDAA+B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { TaskStorage } from './task-storage';
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TaskStorage = void 0;
|
|
4
|
+
var task_storage_1 = require("./task-storage");
|
|
5
|
+
Object.defineProperty(exports, "TaskStorage", { enumerable: true, get: function () { return task_storage_1.TaskStorage; } });
|
|
6
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/storage/index.ts"],"names":[],"mappings":";;;AAAA,+CAA4C;AAAnC,2GAAA,WAAW,OAAA"}
|