@eko-ai/eko 3.1.3 → 3.1.5
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 -1
- package/dist/agent/browser/build_dom_tree.d.ts.map +1 -1
- package/dist/agent/browser/utils.d.ts +0 -9
- package/dist/agent/browser/utils.d.ts.map +1 -1
- package/dist/common/utils.d.ts +10 -0
- package/dist/common/utils.d.ts.map +1 -1
- package/dist/index.cjs.js +232 -81
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.esm.js +232 -82
- package/dist/index.esm.js.map +1 -1
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -12,7 +12,7 @@ export { Eko, EkoDialogue, EkoMemory, Log, config, Context, Planner, AgentContex
|
|
|
12
12
|
export { Agent, type AgentParams, BaseFileAgent, BaseShellAgent, BaseComputerAgent, BaseBrowserAgent, BaseBrowserLabelsAgent, BaseBrowserScreenAgent, } from "./agent";
|
|
13
13
|
export { HumanInteractTool, TaskNodeStatusTool, VariableStorageTool, ForeachTaskTool, WatchTriggerTool, } from "./tools";
|
|
14
14
|
export { type LLMs, type LLMRequest, type StreamCallback, type HumanCallback, type EkoConfig, type Workflow, type WorkflowAgent, type WorkflowNode, type StreamCallbackMessage, } from "./types";
|
|
15
|
-
export { mergeTools, toImage, toFile, convertToolSchema, uuidv4, call_timeout, } from "./common/utils";
|
|
15
|
+
export { mergeTools, toImage, toFile, compressImageData, convertToolSchema, uuidv4, call_timeout, } from "./common/utils";
|
|
16
16
|
export { parseWorkflow, resetWorkflowXml, buildSimpleAgentWorkflow, } from "./common/xml";
|
|
17
17
|
export { buildAgentTree } from "./common/tree";
|
|
18
18
|
export { extract_page_content } from "./agent/browser/utils";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,UAAU,CAAC;AAC9B,OAAO,GAAG,MAAM,cAAc,CAAC;AAC/B,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACtC,OAAO,EAAE,kBAAkB,EAAE,MAAM,OAAO,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,OAAO,EAAE,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,OAAO,CAAC;AAEhE,eAAe,GAAG,CAAC;AAEnB,OAAO,EACL,GAAG,EACH,WAAW,EACX,SAAS,EACT,GAAG,EACH,MAAM,EACN,OAAO,EACP,OAAO,EACP,YAAY,EACZ,KAAK,EACL,UAAU,EACV,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,GACnB,CAAC;AAEF,OAAO,EACL,KAAK,EACL,KAAK,WAAW,EAChB,aAAa,EACb,cAAc,EACd,iBAAiB,EACjB,gBAAgB,EAChB,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,SAAS,CAAC;AAEjB,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,mBAAmB,EACnB,eAAe,EACf,gBAAgB,GACjB,MAAM,SAAS,CAAC;AAEjB,OAAO,EACL,KAAK,IAAI,EACT,KAAK,UAAU,EACf,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,SAAS,EACd,KAAK,QAAQ,EACb,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,qBAAqB,GAC3B,MAAM,SAAS,CAAC;AAEjB,OAAO,EACL,UAAU,EACV,OAAO,EACP,MAAM,EACN,iBAAiB,EACjB,MAAM,EACN,YAAY,GACb,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,wBAAwB,GACzB,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,UAAU,CAAC;AAC9B,OAAO,GAAG,MAAM,cAAc,CAAC;AAC/B,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACtC,OAAO,EAAE,kBAAkB,EAAE,MAAM,OAAO,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,OAAO,EAAE,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,OAAO,CAAC;AAEhE,eAAe,GAAG,CAAC;AAEnB,OAAO,EACL,GAAG,EACH,WAAW,EACX,SAAS,EACT,GAAG,EACH,MAAM,EACN,OAAO,EACP,OAAO,EACP,YAAY,EACZ,KAAK,EACL,UAAU,EACV,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,GACnB,CAAC;AAEF,OAAO,EACL,KAAK,EACL,KAAK,WAAW,EAChB,aAAa,EACb,cAAc,EACd,iBAAiB,EACjB,gBAAgB,EAChB,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,SAAS,CAAC;AAEjB,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,mBAAmB,EACnB,eAAe,EACf,gBAAgB,GACjB,MAAM,SAAS,CAAC;AAEjB,OAAO,EACL,KAAK,IAAI,EACT,KAAK,UAAU,EACf,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,SAAS,EACd,KAAK,QAAQ,EACb,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,qBAAqB,GAC3B,MAAM,SAAS,CAAC;AAEjB,OAAO,EACL,UAAU,EACV,OAAO,EACP,MAAM,EACN,iBAAiB,EACjB,iBAAiB,EACjB,MAAM,EACN,YAAY,GACb,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,wBAAwB,GACzB,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC"}
|
package/dist/index.esm.js
CHANGED
|
@@ -280,6 +280,132 @@ function getMimeType(data) {
|
|
|
280
280
|
}
|
|
281
281
|
return mediaType;
|
|
282
282
|
}
|
|
283
|
+
async function compressImageData(imageBase64, imageType, compress, quality) {
|
|
284
|
+
const base64Data = imageBase64;
|
|
285
|
+
const binaryString = typeof atob !== "undefined"
|
|
286
|
+
? atob(base64Data)
|
|
287
|
+
// @ts-ignore
|
|
288
|
+
: Buffer.from(base64Data, "base64").toString("binary");
|
|
289
|
+
const bytes = new Uint8Array(binaryString.length);
|
|
290
|
+
for (let i = 0; i < binaryString.length; i++) {
|
|
291
|
+
bytes[i] = binaryString.charCodeAt(i);
|
|
292
|
+
}
|
|
293
|
+
if (!quality) {
|
|
294
|
+
if (bytes.length >= 1024 * 1024 * 3) {
|
|
295
|
+
quality = 0.6;
|
|
296
|
+
}
|
|
297
|
+
else if (bytes.length >= 1024 * 1024 * 1.5) {
|
|
298
|
+
quality = 0.8;
|
|
299
|
+
}
|
|
300
|
+
else {
|
|
301
|
+
quality = 1;
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
const targetByScale = (bitmapWidth, bitmapHeight) => ({
|
|
305
|
+
width: compress.scale
|
|
306
|
+
? bitmapWidth * compress.scale
|
|
307
|
+
: compress.resizeWidth,
|
|
308
|
+
height: compress.scale
|
|
309
|
+
? bitmapHeight * compress.scale
|
|
310
|
+
: compress.resizeHeight,
|
|
311
|
+
});
|
|
312
|
+
const hasOffscreen = typeof OffscreenCanvas !== "undefined";
|
|
313
|
+
const hasCreateImageBitmap = typeof createImageBitmap !== "undefined";
|
|
314
|
+
const hasDOM = typeof document !== "undefined" && typeof Image !== "undefined";
|
|
315
|
+
// @ts-ignore
|
|
316
|
+
const isNode = typeof window === "undefined" && typeof process !== "undefined" && !!process.versions && !!process.versions.node;
|
|
317
|
+
const loadImageAny = async () => {
|
|
318
|
+
if (hasCreateImageBitmap) {
|
|
319
|
+
const blob = new Blob([bytes], { type: imageType });
|
|
320
|
+
const bitmap = await createImageBitmap(blob);
|
|
321
|
+
return { img: bitmap, width: bitmap.width, height: bitmap.height };
|
|
322
|
+
}
|
|
323
|
+
if (hasDOM) {
|
|
324
|
+
const img = await new Promise((resolve, reject) => {
|
|
325
|
+
const image = new Image();
|
|
326
|
+
image.onload = () => resolve(image);
|
|
327
|
+
image.onerror = (e) => reject(e);
|
|
328
|
+
image.src = `data:${imageType};base64,${imageBase64}`;
|
|
329
|
+
});
|
|
330
|
+
return { img, width: img.width, height: img.height };
|
|
331
|
+
}
|
|
332
|
+
if (isNode) {
|
|
333
|
+
const canvasMod = await loadPackage("canvas");
|
|
334
|
+
const { loadImage } = canvasMod;
|
|
335
|
+
const dataUrl = `data:${imageType};base64,${imageBase64}`;
|
|
336
|
+
const img = await loadImage(dataUrl);
|
|
337
|
+
return { img, width: img.width, height: img.height };
|
|
338
|
+
}
|
|
339
|
+
throw new Error("No image environment available");
|
|
340
|
+
};
|
|
341
|
+
const createCanvasAny = async (width, height) => {
|
|
342
|
+
if (hasOffscreen) {
|
|
343
|
+
const canvas = new OffscreenCanvas(width, height);
|
|
344
|
+
return {
|
|
345
|
+
ctx: canvas.getContext("2d"),
|
|
346
|
+
exportBase64: async (mime, q) => {
|
|
347
|
+
const blob = await canvas.convertToBlob({ type: mime, quality: q });
|
|
348
|
+
return await new Promise((res, rej) => {
|
|
349
|
+
const reader = new FileReader();
|
|
350
|
+
reader.onloadend = () => {
|
|
351
|
+
const url = reader.result;
|
|
352
|
+
res(url.substring(url.indexOf("base64,") + 7));
|
|
353
|
+
};
|
|
354
|
+
reader.onerror = () => rej(new Error("Failed to convert blob to base64"));
|
|
355
|
+
reader.readAsDataURL(blob);
|
|
356
|
+
});
|
|
357
|
+
},
|
|
358
|
+
};
|
|
359
|
+
}
|
|
360
|
+
if (hasDOM) {
|
|
361
|
+
const canvas = document.createElement("canvas");
|
|
362
|
+
canvas.width = width;
|
|
363
|
+
canvas.height = height;
|
|
364
|
+
return {
|
|
365
|
+
ctx: canvas.getContext("2d"),
|
|
366
|
+
exportBase64: async (mime, q) => {
|
|
367
|
+
const dataUrl = canvas.toDataURL(mime, q);
|
|
368
|
+
return dataUrl.substring(dataUrl.indexOf("base64,") + 7);
|
|
369
|
+
},
|
|
370
|
+
};
|
|
371
|
+
}
|
|
372
|
+
if (isNode) {
|
|
373
|
+
const canvasMod = await loadPackage("canvas");
|
|
374
|
+
const { createCanvas } = canvasMod;
|
|
375
|
+
const canvas = createCanvas(width, height);
|
|
376
|
+
return {
|
|
377
|
+
ctx: canvas.getContext("2d"),
|
|
378
|
+
exportBase64: async (mime, q) => {
|
|
379
|
+
const buffer = canvas.toBuffer(mime, { quality: q });
|
|
380
|
+
// @ts-ignore
|
|
381
|
+
return (typeof Buffer !== "undefined" ? Buffer.from(buffer) : buffer).toString("base64");
|
|
382
|
+
},
|
|
383
|
+
};
|
|
384
|
+
}
|
|
385
|
+
throw new Error("No canvas environment available");
|
|
386
|
+
};
|
|
387
|
+
const loaded = await loadImageAny();
|
|
388
|
+
const { width, height } = targetByScale(loaded.width, loaded.height);
|
|
389
|
+
if (loaded.width == width && loaded.height == height && quality == 1) {
|
|
390
|
+
return {
|
|
391
|
+
imageBase64: imageBase64,
|
|
392
|
+
imageType: imageType,
|
|
393
|
+
};
|
|
394
|
+
}
|
|
395
|
+
const { ctx, exportBase64 } = await createCanvasAny(width, height);
|
|
396
|
+
if (!ctx) {
|
|
397
|
+
return {
|
|
398
|
+
imageBase64: imageBase64,
|
|
399
|
+
imageType: imageType,
|
|
400
|
+
};
|
|
401
|
+
}
|
|
402
|
+
ctx.drawImage(loaded.img, 0, 0, width, height);
|
|
403
|
+
const outBase64 = await exportBase64("image/jpeg", quality);
|
|
404
|
+
return {
|
|
405
|
+
imageBase64: outBase64,
|
|
406
|
+
imageType: "image/jpeg",
|
|
407
|
+
};
|
|
408
|
+
}
|
|
283
409
|
function mergeTools(tools1, tools2) {
|
|
284
410
|
let tools = [];
|
|
285
411
|
let toolMap2 = tools2.reduce((map, tool) => {
|
|
@@ -485,6 +611,19 @@ function fixXmlTag(code) {
|
|
|
485
611
|
let completedCode = code + missingParts.join("");
|
|
486
612
|
return completedCode;
|
|
487
613
|
}
|
|
614
|
+
async function loadPackage(packageName) {
|
|
615
|
+
// @ts-ignore
|
|
616
|
+
if (typeof require !== 'undefined') {
|
|
617
|
+
try {
|
|
618
|
+
return await import(packageName);
|
|
619
|
+
}
|
|
620
|
+
catch {
|
|
621
|
+
// @ts-ignore
|
|
622
|
+
return require(packageName);
|
|
623
|
+
}
|
|
624
|
+
}
|
|
625
|
+
return await import(packageName);
|
|
626
|
+
}
|
|
488
627
|
|
|
489
628
|
// src/errors/ai-sdk-error.ts
|
|
490
629
|
var marker$1 = "vercel.ai.error";
|
|
@@ -35099,28 +35238,92 @@ function extract_page_content(max_url_length = 200, max_content_length = 50000)
|
|
|
35099
35238
|
function mark_screenshot_highlight_elements(screenshot, area_map, client_rect) {
|
|
35100
35239
|
return new Promise(async (resolve, reject) => {
|
|
35101
35240
|
try {
|
|
35102
|
-
|
|
35103
|
-
const
|
|
35104
|
-
const
|
|
35105
|
-
|
|
35106
|
-
|
|
35107
|
-
|
|
35108
|
-
|
|
35109
|
-
|
|
35110
|
-
|
|
35111
|
-
|
|
35112
|
-
|
|
35113
|
-
|
|
35114
|
-
|
|
35115
|
-
|
|
35116
|
-
|
|
35241
|
+
const hasOffscreen = typeof OffscreenCanvas !== "undefined";
|
|
35242
|
+
const hasCreateImageBitmap = typeof createImageBitmap !== "undefined";
|
|
35243
|
+
const hasDOM = typeof document !== "undefined" && typeof Image !== "undefined";
|
|
35244
|
+
// @ts-ignore
|
|
35245
|
+
const isNode = typeof window === "undefined" && typeof process !== "undefined" && !!process.versions && !!process.versions.node;
|
|
35246
|
+
const loadImageAny = async () => {
|
|
35247
|
+
if (hasCreateImageBitmap) {
|
|
35248
|
+
const base64Data = screenshot.imageBase64;
|
|
35249
|
+
const binaryString = atob(base64Data);
|
|
35250
|
+
const bytes = new Uint8Array(binaryString.length);
|
|
35251
|
+
for (let i = 0; i < binaryString.length; i++) {
|
|
35252
|
+
bytes[i] = binaryString.charCodeAt(i);
|
|
35253
|
+
}
|
|
35254
|
+
const blob = new Blob([bytes], { type: screenshot.imageType });
|
|
35255
|
+
const imageBitmap = await createImageBitmap(blob, {
|
|
35256
|
+
resizeQuality: "high",
|
|
35257
|
+
resizeWidth: client_rect.width,
|
|
35258
|
+
resizeHeight: client_rect.height,
|
|
35259
|
+
});
|
|
35260
|
+
return { img: imageBitmap };
|
|
35261
|
+
}
|
|
35262
|
+
if (hasDOM) {
|
|
35263
|
+
const img = await new Promise((resolveImg, rejectImg) => {
|
|
35264
|
+
const image = new Image();
|
|
35265
|
+
image.onload = () => resolveImg(image);
|
|
35266
|
+
image.onerror = (e) => rejectImg(e);
|
|
35267
|
+
image.src = `data:${screenshot.imageType};base64,${screenshot.imageBase64}`;
|
|
35268
|
+
});
|
|
35269
|
+
return { img };
|
|
35270
|
+
}
|
|
35271
|
+
if (isNode) {
|
|
35272
|
+
const canvasMod = await loadPackage("canvas");
|
|
35273
|
+
const { loadImage } = canvasMod;
|
|
35274
|
+
const dataUrl = `data:${screenshot.imageType};base64,${screenshot.imageBase64}`;
|
|
35275
|
+
const img = await loadImage(dataUrl);
|
|
35276
|
+
return { img };
|
|
35277
|
+
}
|
|
35278
|
+
throw new Error("No image environment available");
|
|
35279
|
+
};
|
|
35280
|
+
const createCanvasAny = async (width, height) => {
|
|
35281
|
+
if (hasOffscreen) {
|
|
35282
|
+
const canvas = new OffscreenCanvas(width, height);
|
|
35283
|
+
return {
|
|
35284
|
+
ctx: canvas.getContext("2d"),
|
|
35285
|
+
exportDataUrl: async (mime) => {
|
|
35286
|
+
const blob = await canvas.convertToBlob({ type: mime });
|
|
35287
|
+
return await new Promise((res, rej) => {
|
|
35288
|
+
const reader = new FileReader();
|
|
35289
|
+
reader.onloadend = () => res(reader.result);
|
|
35290
|
+
reader.onerror = () => rej(new Error("Failed to convert blob to base64"));
|
|
35291
|
+
reader.readAsDataURL(blob);
|
|
35292
|
+
});
|
|
35293
|
+
},
|
|
35294
|
+
};
|
|
35295
|
+
}
|
|
35296
|
+
if (hasDOM) {
|
|
35297
|
+
const canvas = document.createElement("canvas");
|
|
35298
|
+
canvas.width = width;
|
|
35299
|
+
canvas.height = height;
|
|
35300
|
+
return {
|
|
35301
|
+
ctx: canvas.getContext("2d"),
|
|
35302
|
+
exportDataUrl: async (mime) => canvas.toDataURL(mime),
|
|
35303
|
+
};
|
|
35304
|
+
}
|
|
35305
|
+
if (isNode) {
|
|
35306
|
+
const canvasMod = await loadPackage("canvas");
|
|
35307
|
+
const { createCanvas } = canvasMod;
|
|
35308
|
+
const canvas = createCanvas(width, height);
|
|
35309
|
+
return {
|
|
35310
|
+
ctx: canvas.getContext("2d"),
|
|
35311
|
+
exportDataUrl: async (mime) => canvas.toDataURL(mime),
|
|
35312
|
+
};
|
|
35313
|
+
}
|
|
35314
|
+
throw new Error("No canvas environment available");
|
|
35315
|
+
};
|
|
35316
|
+
const loaded = await loadImageAny();
|
|
35317
|
+
const targetWidth = client_rect.width;
|
|
35318
|
+
const targetHeight = client_rect.height;
|
|
35319
|
+
const { ctx, exportDataUrl } = await createCanvasAny(targetWidth, targetHeight);
|
|
35117
35320
|
if (!ctx) {
|
|
35118
35321
|
reject(new Error("Failed to get canvas context"));
|
|
35119
35322
|
return;
|
|
35120
35323
|
}
|
|
35121
35324
|
ctx.imageSmoothingEnabled = true;
|
|
35122
35325
|
ctx.imageSmoothingQuality = "high";
|
|
35123
|
-
ctx.drawImage(
|
|
35326
|
+
ctx.drawImage(loaded.img, 0, 0, targetWidth, targetHeight);
|
|
35124
35327
|
const sortedEntries = Object.entries(area_map)
|
|
35125
35328
|
.filter(([id, area]) => area.width > 0 && area.height > 0)
|
|
35126
35329
|
.sort((a, b) => {
|
|
@@ -35156,9 +35359,10 @@ function mark_screenshot_highlight_elements(screenshot, area_map, client_rect) {
|
|
|
35156
35359
|
// Draw ID tag background
|
|
35157
35360
|
const fontSize = Math.min(12, Math.max(8, area.height / 2));
|
|
35158
35361
|
ctx.font = `${fontSize}px sans-serif`;
|
|
35159
|
-
const
|
|
35362
|
+
const metrics = ctx.measureText(id);
|
|
35363
|
+
const textWidth = metrics && metrics.width ? metrics.width : 0;
|
|
35160
35364
|
const padding = 4;
|
|
35161
|
-
const labelWidth =
|
|
35365
|
+
const labelWidth = textWidth + padding * 2;
|
|
35162
35366
|
const labelHeight = fontSize + padding * 2;
|
|
35163
35367
|
// The tag position is in the upper right corner.
|
|
35164
35368
|
const labelX = area.x + area.width - labelWidth;
|
|
@@ -35176,66 +35380,15 @@ function mark_screenshot_highlight_elements(screenshot, area_map, client_rect) {
|
|
|
35176
35380
|
ctx.textBaseline = "top";
|
|
35177
35381
|
ctx.fillText(id, labelX + padding, labelY + padding);
|
|
35178
35382
|
});
|
|
35179
|
-
//
|
|
35180
|
-
const
|
|
35181
|
-
|
|
35182
|
-
});
|
|
35183
|
-
const reader = new FileReader();
|
|
35184
|
-
reader.onloadend = () => {
|
|
35185
|
-
const resultBase64 = reader.result;
|
|
35186
|
-
resolve(resultBase64);
|
|
35187
|
-
};
|
|
35188
|
-
reader.onerror = () => {
|
|
35189
|
-
reject(new Error("Failed to convert blob to base64"));
|
|
35190
|
-
};
|
|
35191
|
-
reader.readAsDataURL(resultBlob);
|
|
35383
|
+
// Export the image
|
|
35384
|
+
const out = await exportDataUrl(screenshot.imageType);
|
|
35385
|
+
resolve(out);
|
|
35192
35386
|
}
|
|
35193
35387
|
catch (error) {
|
|
35194
35388
|
reject(error);
|
|
35195
35389
|
}
|
|
35196
35390
|
});
|
|
35197
35391
|
}
|
|
35198
|
-
async function compress_image(imageBase64, imageType, compress, quality = 1) {
|
|
35199
|
-
const base64Data = imageBase64;
|
|
35200
|
-
const binaryString = atob(base64Data);
|
|
35201
|
-
const bytes = new Uint8Array(binaryString.length);
|
|
35202
|
-
for (let i = 0; i < binaryString.length; i++) {
|
|
35203
|
-
bytes[i] = binaryString.charCodeAt(i);
|
|
35204
|
-
}
|
|
35205
|
-
const blob = new Blob([bytes], { type: imageType });
|
|
35206
|
-
const bitmap = await createImageBitmap(blob);
|
|
35207
|
-
const width = compress.scale
|
|
35208
|
-
? bitmap.width * compress.scale
|
|
35209
|
-
: compress.resizeWidth;
|
|
35210
|
-
const height = compress.scale
|
|
35211
|
-
? bitmap.height * compress.scale
|
|
35212
|
-
: compress.resizeHeight;
|
|
35213
|
-
if (bitmap.width == width && bitmap.height == height && quality == 1) {
|
|
35214
|
-
return {
|
|
35215
|
-
imageBase64: imageBase64,
|
|
35216
|
-
imageType: imageType,
|
|
35217
|
-
};
|
|
35218
|
-
}
|
|
35219
|
-
const canvas = new OffscreenCanvas(width, height);
|
|
35220
|
-
const ctx = canvas.getContext("2d");
|
|
35221
|
-
ctx.drawImage(bitmap, 0, 0, width, height);
|
|
35222
|
-
const resultBlob = await canvas.convertToBlob({
|
|
35223
|
-
type: "image/jpeg",
|
|
35224
|
-
quality: quality,
|
|
35225
|
-
});
|
|
35226
|
-
return new Promise((resolve) => {
|
|
35227
|
-
const reader = new FileReader();
|
|
35228
|
-
reader.onloadend = () => {
|
|
35229
|
-
let imageDataUrl = reader.result;
|
|
35230
|
-
let imageBase64 = imageDataUrl.substring(imageDataUrl.indexOf("base64,") + 7);
|
|
35231
|
-
resolve({
|
|
35232
|
-
imageBase64: imageBase64,
|
|
35233
|
-
imageType: "image/jpeg",
|
|
35234
|
-
});
|
|
35235
|
-
};
|
|
35236
|
-
reader.readAsDataURL(resultBlob);
|
|
35237
|
-
});
|
|
35238
|
-
}
|
|
35239
35392
|
|
|
35240
35393
|
const AGENT_NAME = "Browser";
|
|
35241
35394
|
class BaseBrowserAgent extends Agent {
|
|
@@ -35908,18 +36061,14 @@ function run_build_dom_tree() {
|
|
|
35908
36061
|
}
|
|
35909
36062
|
return false;
|
|
35910
36063
|
}
|
|
35911
|
-
// Helper function to check if element exists
|
|
35912
|
-
function isElementExist(element) {
|
|
35913
|
-
const style = getCachedComputedStyle(element);
|
|
35914
|
-
return (style?.visibility !== 'hidden' &&
|
|
35915
|
-
style?.display !== 'none');
|
|
35916
|
-
}
|
|
35917
36064
|
// Helper function to check if element is visible
|
|
35918
36065
|
function isElementVisible(element) {
|
|
35919
36066
|
if (element.offsetWidth === 0 && element.offsetHeight === 0) {
|
|
35920
36067
|
return false;
|
|
35921
36068
|
}
|
|
35922
|
-
|
|
36069
|
+
const style = getCachedComputedStyle(element);
|
|
36070
|
+
return (style?.visibility !== 'hidden' &&
|
|
36071
|
+
style?.display !== 'none');
|
|
35923
36072
|
}
|
|
35924
36073
|
// Helper function to check if element is the top element at its position
|
|
35925
36074
|
function isTopElement(element) {
|
|
@@ -36073,7 +36222,8 @@ function run_build_dom_tree() {
|
|
|
36073
36222
|
}
|
|
36074
36223
|
}
|
|
36075
36224
|
else {
|
|
36076
|
-
|
|
36225
|
+
const style = getCachedComputedStyle(node);
|
|
36226
|
+
if (style && style.display !== 'none') {
|
|
36077
36227
|
const children = Array.from(node.children).map((child) => buildDomTree(child, parentIframe)).filter(child => child !== null);
|
|
36078
36228
|
nodeData.children.push(...children);
|
|
36079
36229
|
}
|
|
@@ -36249,7 +36399,7 @@ class BaseBrowserLabelsAgent extends BaseBrowserAgent {
|
|
|
36249
36399
|
if (!client_rect || !screenshot) {
|
|
36250
36400
|
return screenshot;
|
|
36251
36401
|
}
|
|
36252
|
-
const compressedImage = await
|
|
36402
|
+
const compressedImage = await compressImageData(screenshot.imageBase64, screenshot.imageType, {
|
|
36253
36403
|
resizeWidth: client_rect.width,
|
|
36254
36404
|
resizeHeight: client_rect.height,
|
|
36255
36405
|
});
|
|
@@ -37172,5 +37322,5 @@ class BaseBrowserScreenAgent extends BaseBrowserAgent {
|
|
|
37172
37322
|
}
|
|
37173
37323
|
}
|
|
37174
37324
|
|
|
37175
|
-
export { Agent, AgentChain, AgentContext, BaseBrowserAgent, BaseBrowserLabelsAgent, BaseBrowserScreenAgent, BaseComputerAgent, BaseFileAgent, BaseShellAgent, Chain, Context, Eko, EkoDialogue, EkoMemory, ForeachTaskTool, HumanInteractTool, Log, Planner, RetryLanguageModel, SimpleHttpMcpClient, SimpleSseMcpClient, TaskNodeStatusTool, VariableStorageTool, WatchTriggerTool, buildAgentTree, buildSimpleAgentWorkflow, call_timeout, config$1 as config, convertToolSchema, Eko as default, extract_page_content, mergeTools, parseWorkflow, resetWorkflowXml, toFile, toImage, uuidv4 };
|
|
37325
|
+
export { Agent, AgentChain, AgentContext, BaseBrowserAgent, BaseBrowserLabelsAgent, BaseBrowserScreenAgent, BaseComputerAgent, BaseFileAgent, BaseShellAgent, Chain, Context, Eko, EkoDialogue, EkoMemory, ForeachTaskTool, HumanInteractTool, Log, Planner, RetryLanguageModel, SimpleHttpMcpClient, SimpleSseMcpClient, TaskNodeStatusTool, VariableStorageTool, WatchTriggerTool, buildAgentTree, buildSimpleAgentWorkflow, call_timeout, compressImageData, config$1 as config, convertToolSchema, Eko as default, extract_page_content, mergeTools, parseWorkflow, resetWorkflowXml, toFile, toImage, uuidv4 };
|
|
37176
37326
|
//# sourceMappingURL=index.esm.js.map
|