@dexto/core 1.7.0 → 1.7.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/dist/llm/formatters/vercel.cjs +43 -29
- package/dist/llm/formatters/vercel.d.ts.map +1 -1
- package/dist/llm/formatters/vercel.js +49 -30
- package/dist/llm/registry/models.generated.cjs +967 -201
- package/dist/llm/registry/models.generated.d.ts +317 -27
- package/dist/llm/registry/models.generated.d.ts.map +1 -1
- package/dist/llm/registry/models.generated.js +967 -201
- package/dist/session/history/database.cjs +37 -54
- package/dist/session/history/database.d.ts +3 -18
- package/dist/session/history/database.d.ts.map +1 -1
- package/dist/session/history/database.js +37 -54
- package/package.json +1 -1
|
@@ -33,6 +33,14 @@ function toUrlIfString(value) {
|
|
|
33
33
|
}
|
|
34
34
|
return value;
|
|
35
35
|
}
|
|
36
|
+
function normalizeToolMediaData(data) {
|
|
37
|
+
const dataUri = (0, import_utils.parseDataUri)(data);
|
|
38
|
+
if (dataUri) return dataUri.base64;
|
|
39
|
+
if (/^https?:\/\//i.test(data) || data.startsWith("blob:") || data.startsWith("@blob:")) {
|
|
40
|
+
return null;
|
|
41
|
+
}
|
|
42
|
+
return data;
|
|
43
|
+
}
|
|
36
44
|
class VercelMessageFormatter {
|
|
37
45
|
logger;
|
|
38
46
|
constructor(logger) {
|
|
@@ -252,51 +260,57 @@ class VercelMessageFormatter {
|
|
|
252
260
|
formatToolMessage(msg) {
|
|
253
261
|
let toolResultPart;
|
|
254
262
|
if (Array.isArray(msg.content)) {
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
type: "
|
|
264
|
-
value: [
|
|
265
|
-
{
|
|
266
|
-
type: "media",
|
|
267
|
-
data: imageDataBase64,
|
|
268
|
-
mediaType: imagePart.mimeType || "image/jpeg"
|
|
269
|
-
}
|
|
270
|
-
]
|
|
263
|
+
const content = msg.content.map((part) => {
|
|
264
|
+
if (part.type === "text") {
|
|
265
|
+
return { type: "text", text: part.text };
|
|
266
|
+
}
|
|
267
|
+
if (part.type === "image") {
|
|
268
|
+
const data = (0, import_utils.getImageData)(part, this.logger);
|
|
269
|
+
const mediaData = normalizeToolMediaData(data);
|
|
270
|
+
if (!mediaData) {
|
|
271
|
+
return { type: "text", text: `Attached image: ${data}` };
|
|
271
272
|
}
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
273
|
+
return {
|
|
274
|
+
type: "media",
|
|
275
|
+
data: mediaData,
|
|
276
|
+
mediaType: part.mimeType || "image/jpeg"
|
|
277
|
+
};
|
|
278
|
+
}
|
|
279
|
+
if (part.type === "file") {
|
|
280
|
+
const data = (0, import_utils.getFileData)(part, this.logger);
|
|
281
|
+
const mediaData = normalizeToolMediaData(data);
|
|
282
|
+
if (!mediaData) {
|
|
283
|
+
return { type: "text", text: `Attached file: ${data}` };
|
|
284
|
+
}
|
|
285
|
+
return {
|
|
286
|
+
type: "media",
|
|
287
|
+
data: mediaData,
|
|
288
|
+
mediaType: part.mimeType
|
|
289
|
+
};
|
|
290
|
+
}
|
|
291
|
+
if (part.type === "resource") {
|
|
292
|
+
return { type: "text", text: `${part.name}: ${part.uri}` };
|
|
293
|
+
}
|
|
294
|
+
return null;
|
|
295
|
+
}).filter((part) => part !== null);
|
|
296
|
+
if (content.some((part) => part.type === "media")) {
|
|
276
297
|
toolResultPart = {
|
|
277
298
|
type: "tool-result",
|
|
278
299
|
toolCallId: msg.toolCallId,
|
|
279
300
|
toolName: msg.name,
|
|
280
301
|
output: {
|
|
281
302
|
type: "content",
|
|
282
|
-
value:
|
|
283
|
-
{
|
|
284
|
-
type: "media",
|
|
285
|
-
data: fileDataBase64,
|
|
286
|
-
mediaType: filePart.mimeType
|
|
287
|
-
}
|
|
288
|
-
]
|
|
303
|
+
value: content
|
|
289
304
|
}
|
|
290
305
|
};
|
|
291
306
|
} else {
|
|
292
|
-
const textContent = Array.isArray(msg.content) ? msg.content.map((part) => part.type === "text" ? part.text : JSON.stringify(part)).join("\n") : String(msg.content);
|
|
293
307
|
toolResultPart = {
|
|
294
308
|
type: "tool-result",
|
|
295
309
|
toolCallId: msg.toolCallId,
|
|
296
310
|
toolName: msg.name,
|
|
297
311
|
output: {
|
|
298
312
|
type: "text",
|
|
299
|
-
value:
|
|
313
|
+
value: content.filter((part) => part.type === "text").map((part) => part.text).join("\n") || "[empty result]"
|
|
300
314
|
}
|
|
301
315
|
};
|
|
302
316
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vercel.d.ts","sourceRoot":"","sources":["../../../src/llm/formatters/vercel.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAiD,MAAM,IAAI,CAAC;AACtF,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,EAAE,eAAe,EAAiC,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"vercel.d.ts","sourceRoot":"","sources":["../../../src/llm/formatters/vercel.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAiD,MAAM,IAAI,CAAC;AACtF,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,EAAE,eAAe,EAAiC,MAAM,wBAAwB,CAAC;AAO7F,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AA8BvD;;;;;;;;;;GAUG;AACH,qBAAa,sBAAsB;IAC/B,OAAO,CAAC,MAAM,CAAS;gBAEX,MAAM,EAAE,MAAM;IAG1B;;;;;;OAMG;IACH,MAAM,CACF,OAAO,EAAE,QAAQ,CAAC,eAAe,EAAE,CAAC,EACpC,OAAO,EAAE,UAAU,EACnB,YAAY,EAAE,MAAM,GAAG,IAAI,GAC5B,YAAY,EAAE;IAkKjB;;;;;;OAMG;IACH,kBAAkB,IAAI,IAAI;IAI1B,OAAO,CAAC,wBAAwB;IAUhC,OAAO,CAAC,sBAAsB;IAmG9B,OAAO,CAAC,iBAAiB;CA6E5B"}
|
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
import "../../chunk-PTJYTZNU.js";
|
|
2
|
-
import {
|
|
2
|
+
import {
|
|
3
|
+
getImageData,
|
|
4
|
+
getFileData,
|
|
5
|
+
filterMessagesByLLMCapabilities,
|
|
6
|
+
parseDataUri
|
|
7
|
+
} from "../../context/utils.js";
|
|
3
8
|
import { DextoLogComponent } from "../../logger/v2/types.js";
|
|
4
9
|
function toUrlIfString(value) {
|
|
5
10
|
if (typeof value === "string" && /^https?:\/\//i.test(value)) {
|
|
@@ -11,6 +16,14 @@ function toUrlIfString(value) {
|
|
|
11
16
|
}
|
|
12
17
|
return value;
|
|
13
18
|
}
|
|
19
|
+
function normalizeToolMediaData(data) {
|
|
20
|
+
const dataUri = parseDataUri(data);
|
|
21
|
+
if (dataUri) return dataUri.base64;
|
|
22
|
+
if (/^https?:\/\//i.test(data) || data.startsWith("blob:") || data.startsWith("@blob:")) {
|
|
23
|
+
return null;
|
|
24
|
+
}
|
|
25
|
+
return data;
|
|
26
|
+
}
|
|
14
27
|
class VercelMessageFormatter {
|
|
15
28
|
logger;
|
|
16
29
|
constructor(logger) {
|
|
@@ -230,51 +243,57 @@ class VercelMessageFormatter {
|
|
|
230
243
|
formatToolMessage(msg) {
|
|
231
244
|
let toolResultPart;
|
|
232
245
|
if (Array.isArray(msg.content)) {
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
type: "
|
|
242
|
-
value: [
|
|
243
|
-
{
|
|
244
|
-
type: "media",
|
|
245
|
-
data: imageDataBase64,
|
|
246
|
-
mediaType: imagePart.mimeType || "image/jpeg"
|
|
247
|
-
}
|
|
248
|
-
]
|
|
246
|
+
const content = msg.content.map((part) => {
|
|
247
|
+
if (part.type === "text") {
|
|
248
|
+
return { type: "text", text: part.text };
|
|
249
|
+
}
|
|
250
|
+
if (part.type === "image") {
|
|
251
|
+
const data = getImageData(part, this.logger);
|
|
252
|
+
const mediaData = normalizeToolMediaData(data);
|
|
253
|
+
if (!mediaData) {
|
|
254
|
+
return { type: "text", text: `Attached image: ${data}` };
|
|
249
255
|
}
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
256
|
+
return {
|
|
257
|
+
type: "media",
|
|
258
|
+
data: mediaData,
|
|
259
|
+
mediaType: part.mimeType || "image/jpeg"
|
|
260
|
+
};
|
|
261
|
+
}
|
|
262
|
+
if (part.type === "file") {
|
|
263
|
+
const data = getFileData(part, this.logger);
|
|
264
|
+
const mediaData = normalizeToolMediaData(data);
|
|
265
|
+
if (!mediaData) {
|
|
266
|
+
return { type: "text", text: `Attached file: ${data}` };
|
|
267
|
+
}
|
|
268
|
+
return {
|
|
269
|
+
type: "media",
|
|
270
|
+
data: mediaData,
|
|
271
|
+
mediaType: part.mimeType
|
|
272
|
+
};
|
|
273
|
+
}
|
|
274
|
+
if (part.type === "resource") {
|
|
275
|
+
return { type: "text", text: `${part.name}: ${part.uri}` };
|
|
276
|
+
}
|
|
277
|
+
return null;
|
|
278
|
+
}).filter((part) => part !== null);
|
|
279
|
+
if (content.some((part) => part.type === "media")) {
|
|
254
280
|
toolResultPart = {
|
|
255
281
|
type: "tool-result",
|
|
256
282
|
toolCallId: msg.toolCallId,
|
|
257
283
|
toolName: msg.name,
|
|
258
284
|
output: {
|
|
259
285
|
type: "content",
|
|
260
|
-
value:
|
|
261
|
-
{
|
|
262
|
-
type: "media",
|
|
263
|
-
data: fileDataBase64,
|
|
264
|
-
mediaType: filePart.mimeType
|
|
265
|
-
}
|
|
266
|
-
]
|
|
286
|
+
value: content
|
|
267
287
|
}
|
|
268
288
|
};
|
|
269
289
|
} else {
|
|
270
|
-
const textContent = Array.isArray(msg.content) ? msg.content.map((part) => part.type === "text" ? part.text : JSON.stringify(part)).join("\n") : String(msg.content);
|
|
271
290
|
toolResultPart = {
|
|
272
291
|
type: "tool-result",
|
|
273
292
|
toolCallId: msg.toolCallId,
|
|
274
293
|
toolName: msg.name,
|
|
275
294
|
output: {
|
|
276
295
|
type: "text",
|
|
277
|
-
value:
|
|
296
|
+
value: content.filter((part) => part.type === "text").map((part) => part.text).join("\n") || "[empty result]"
|
|
278
297
|
}
|
|
279
298
|
};
|
|
280
299
|
}
|