@eko-ai/eko 1.0.8 → 1.0.10
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 -21
- package/README.md +139 -131
- package/dist/core/eko.d.ts +3 -2
- package/dist/extension/script/bing.js +0 -0
- package/dist/extension/script/build_dom_tree.js +661 -661
- package/dist/extension/script/common.js +0 -0
- package/dist/extension/script/duckduckgo.js +0 -0
- package/dist/extension/script/google.js +0 -0
- package/dist/extension/tools/cancel_workflow.d.ts +9 -0
- package/dist/extension/tools/get_all_tabs.d.ts +9 -0
- package/dist/extension/tools/index.d.ts +3 -1
- package/dist/extension/tools/tab_management.d.ts +1 -1
- package/dist/extension/utils.d.ts +1 -1
- package/dist/extension.cjs.js +749 -278
- package/dist/extension.esm.js +749 -278
- package/dist/extension_content_script.js +55 -55
- package/dist/fellou.cjs.js +18 -18
- package/dist/fellou.esm.js +18 -18
- package/dist/index.cjs.js +2034 -1609
- package/dist/index.d.ts +3 -1
- package/dist/index.esm.js +2033 -1610
- package/dist/jest.config.js +10 -0
- package/dist/jest.config.js.map +1 -0
- package/dist/models/action.d.ts +8 -4
- package/dist/models/workflow.d.ts +8 -3
- package/dist/nodejs/tools/index.d.ts +1 -0
- package/dist/nodejs.cjs.js +1832 -1623
- package/dist/nodejs.esm.js +1832 -1623
- package/dist/rollup.config.js +171 -0
- package/dist/rollup.config.js.map +1 -0
- package/dist/schemas/workflow.schema.d.ts +2 -13
- package/dist/script.js +10 -0
- package/dist/script.js.map +1 -0
- package/dist/services/llm/claude-provider.d.ts +2 -1
- package/dist/services/llm/deepseek-provider.d.ts +13 -0
- package/dist/services/llm/openai-provider.d.ts +2 -1
- package/dist/services/llm/provider-factory.d.ts +4 -0
- package/dist/services/llm/siliconflow-provider.d.ts +13 -0
- package/dist/services/parser/workflow-parser.d.ts +0 -7
- package/dist/services/workflow/generator.d.ts +1 -0
- package/dist/src/core/eko.js +99 -0
- package/dist/src/core/eko.js.map +1 -0
- package/dist/src/core/tool-registry.js +51 -0
- package/dist/src/core/tool-registry.js.map +1 -0
- package/dist/src/extension/content/index.js +409 -0
- package/dist/src/extension/content/index.js.map +1 -0
- package/dist/src/extension/core.js +29 -0
- package/dist/src/extension/core.js.map +1 -0
- package/dist/src/extension/index.js +12 -0
- package/dist/src/extension/index.js.map +1 -0
- package/dist/src/extension/script/bing.js +25 -0
- package/dist/src/extension/script/bing.js.map +1 -0
- package/dist/src/extension/script/build_dom_tree.js +585 -0
- package/dist/src/extension/script/build_dom_tree.js.map +1 -0
- package/dist/src/extension/script/common.js +203 -0
- package/dist/src/extension/script/common.js.map +1 -0
- package/dist/src/extension/script/duckduckgo.js +25 -0
- package/dist/src/extension/script/duckduckgo.js.map +1 -0
- package/dist/src/extension/script/google.js +26 -0
- package/dist/src/extension/script/google.js.map +1 -0
- package/dist/src/extension/tools/browser.js +174 -0
- package/dist/src/extension/tools/browser.js.map +1 -0
- package/dist/src/extension/tools/browser_use.js +186 -0
- package/dist/src/extension/tools/browser_use.js.map +1 -0
- package/dist/src/extension/tools/element_click.js +123 -0
- package/dist/src/extension/tools/element_click.js.map +1 -0
- package/dist/src/extension/tools/export_file.js +93 -0
- package/dist/src/extension/tools/export_file.js.map +1 -0
- package/dist/src/extension/tools/extract_content.js +38 -0
- package/dist/src/extension/tools/extract_content.js.map +1 -0
- package/dist/src/extension/tools/find_element_position.js +125 -0
- package/dist/src/extension/tools/find_element_position.js.map +1 -0
- package/dist/src/extension/tools/html_script.js +219 -0
- package/dist/src/extension/tools/html_script.js.map +1 -0
- package/dist/src/extension/tools/index.js +12 -0
- package/dist/src/extension/tools/index.js.map +1 -0
- package/dist/src/extension/tools/open_url.js +68 -0
- package/dist/src/extension/tools/open_url.js.map +1 -0
- package/dist/src/extension/tools/request_login.js +87 -0
- package/dist/src/extension/tools/request_login.js.map +1 -0
- package/dist/src/extension/tools/screenshot.js +26 -0
- package/dist/src/extension/tools/screenshot.js.map +1 -0
- package/dist/src/extension/tools/tab_management.js +160 -0
- package/dist/src/extension/tools/tab_management.js.map +1 -0
- package/dist/src/extension/tools/web_search.js +281 -0
- package/dist/src/extension/tools/web_search.js.map +1 -0
- package/dist/src/extension/utils.js +244 -0
- package/dist/src/extension/utils.js.map +1 -0
- package/dist/src/fellou/computer.js +104 -0
- package/dist/src/fellou/computer.js.map +1 -0
- package/dist/src/fellou/index.js +7 -0
- package/dist/src/fellou/index.js.map +1 -0
- package/dist/src/fellou/tools/computer_use.js +111 -0
- package/dist/src/fellou/tools/computer_use.js.map +1 -0
- package/dist/src/index.js +9 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/models/action.js +364 -0
- package/dist/src/models/action.js.map +1 -0
- package/dist/src/models/workflow.js +120 -0
- package/dist/src/models/workflow.js.map +1 -0
- package/dist/src/nodejs/core.js +18 -0
- package/dist/src/nodejs/core.js.map +1 -0
- package/dist/src/nodejs/index.js +6 -0
- package/dist/src/nodejs/index.js.map +1 -0
- package/dist/src/nodejs/script/build_dom_tree.js +586 -0
- package/dist/src/nodejs/script/build_dom_tree.js.map +1 -0
- package/dist/src/nodejs/tools/browser_use.js +458 -0
- package/dist/src/nodejs/tools/browser_use.js.map +1 -0
- package/dist/src/nodejs/tools/command_execute.js +65 -0
- package/dist/src/nodejs/tools/command_execute.js.map +1 -0
- package/dist/src/nodejs/tools/file_read.js +45 -0
- package/dist/src/nodejs/tools/file_read.js.map +1 -0
- package/dist/src/nodejs/tools/file_write.js +95 -0
- package/dist/src/nodejs/tools/file_write.js.map +1 -0
- package/dist/src/nodejs/tools/index.js +5 -0
- package/dist/src/nodejs/tools/index.js.map +1 -0
- package/dist/src/schemas/workflow.schema.js +64 -0
- package/dist/src/schemas/workflow.schema.js.map +1 -0
- package/dist/src/services/llm/claude-provider.js +140 -0
- package/dist/src/services/llm/claude-provider.js.map +1 -0
- package/dist/src/services/llm/deepseek-provider.js +432 -0
- package/dist/src/services/llm/deepseek-provider.js.map +1 -0
- package/dist/src/services/llm/glm-provider.js +317 -0
- package/dist/src/services/llm/glm-provider.js.map +1 -0
- package/dist/src/services/llm/openai-provider copy.js +317 -0
- package/dist/src/services/llm/openai-provider copy.js.map +1 -0
- package/dist/src/services/llm/openai-provider.js +317 -0
- package/dist/src/services/llm/openai-provider.js.map +1 -0
- package/dist/src/services/parser/workflow-parser.js +208 -0
- package/dist/src/services/parser/workflow-parser.js.map +1 -0
- package/dist/src/services/workflow/generator.js +105 -0
- package/dist/src/services/workflow/generator.js.map +1 -0
- package/dist/src/services/workflow/templates.js +42 -0
- package/dist/src/services/workflow/templates.js.map +1 -0
- package/dist/src/types/action.types.js +2 -0
- package/dist/src/types/action.types.js.map +1 -0
- package/dist/src/types/eko.types.js +2 -0
- package/dist/src/types/eko.types.js.map +1 -0
- package/dist/src/types/index.js +6 -0
- package/dist/src/types/index.js.map +1 -0
- package/dist/src/types/llm.types.js +2 -0
- package/dist/src/types/llm.types.js.map +1 -0
- package/dist/src/types/parser.types.js +2 -0
- package/dist/src/types/parser.types.js.map +1 -0
- package/dist/src/types/tools.types.js +2 -0
- package/dist/src/types/tools.types.js.map +1 -0
- package/dist/src/types/workflow.types.js +3 -0
- package/dist/src/types/workflow.types.js.map +1 -0
- package/dist/src/web/core.js +18 -0
- package/dist/src/web/core.js.map +1 -0
- package/dist/src/web/index.js +9 -0
- package/dist/src/web/index.js.map +1 -0
- package/dist/src/web/script/build_dom_tree.js +584 -0
- package/dist/src/web/script/build_dom_tree.js.map +1 -0
- package/dist/src/web/tools/browser.js +249 -0
- package/dist/src/web/tools/browser.js.map +1 -0
- package/dist/src/web/tools/browser_use.js +176 -0
- package/dist/src/web/tools/browser_use.js.map +1 -0
- package/dist/src/web/tools/element_click.js +121 -0
- package/dist/src/web/tools/element_click.js.map +1 -0
- package/dist/src/web/tools/export_file.js +74 -0
- package/dist/src/web/tools/export_file.js.map +1 -0
- package/dist/src/web/tools/extract_content.js +24 -0
- package/dist/src/web/tools/extract_content.js.map +1 -0
- package/dist/src/web/tools/find_element_position.js +121 -0
- package/dist/src/web/tools/find_element_position.js.map +1 -0
- package/dist/src/web/tools/html_script.js +219 -0
- package/dist/src/web/tools/html_script.js.map +1 -0
- package/dist/src/web/tools/index.js +8 -0
- package/dist/src/web/tools/index.js.map +1 -0
- package/dist/src/web/tools/screenshot.js +24 -0
- package/dist/src/web/tools/screenshot.js.map +1 -0
- package/dist/test/integration/claude-provider.test.js +170 -0
- package/dist/test/integration/claude-provider.test.js.map +1 -0
- package/dist/test/integration/deepseek-provider.test.js +171 -0
- package/dist/test/integration/deepseek-provider.test.js.map +1 -0
- package/dist/test/integration/glm-provider.test.js +173 -0
- package/dist/test/integration/glm-provider.test.js.map +1 -0
- package/dist/test/integration/openai-provider.test copy.js +170 -0
- package/dist/test/integration/openai-provider.test copy.js.map +1 -0
- package/dist/test/integration/openai-provider.test.js +170 -0
- package/dist/test/integration/openai-provider.test.js.map +1 -0
- package/dist/test/integration/qwen-provider.js +170 -0
- package/dist/test/integration/qwen-provider.js.map +1 -0
- package/dist/test/integration/qwen-provider.test copy.js +170 -0
- package/dist/test/integration/qwen-provider.test copy.js.map +1 -0
- package/dist/test/integration/qwen-provider.test.js +170 -0
- package/dist/test/integration/qwen-provider.test.js.map +1 -0
- package/dist/test/integration/workflow.execution.test.js +152 -0
- package/dist/test/integration/workflow.execution.test.js.map +1 -0
- package/dist/test/integration/workflow.generation-and-execution.test.js +131 -0
- package/dist/test/integration/workflow.generation-and-execution.test.js.map +1 -0
- package/dist/test/integration/workflow.generator.test.js +207 -0
- package/dist/test/integration/workflow.generator.test.js.map +1 -0
- package/dist/test/unit/action.test.js +186 -0
- package/dist/test/unit/action.test.js.map +1 -0
- package/dist/test/unit/tool-registry.test.js +99 -0
- package/dist/test/unit/tool-registry.test.js.map +1 -0
- package/dist/test/unit/workflow-parser.test.js +189 -0
- package/dist/test/unit/workflow-parser.test.js.map +1 -0
- package/dist/test/unit/workflow.test.js +102 -0
- package/dist/test/unit/workflow.test.js.map +1 -0
- package/dist/types/action.types.d.ts +8 -3
- package/dist/types/jest.config.d.ts +10 -0
- package/dist/types/rollup.config.d.ts +16 -0
- package/dist/types/script.d.ts +1 -0
- package/dist/types/src/core/eko.d.ts +20 -0
- package/dist/types/src/core/tool-registry.d.ts +13 -0
- package/dist/types/src/extension/content/index.d.ts +16 -0
- package/dist/types/src/extension/core.d.ts +11 -0
- package/dist/types/src/extension/index.d.ts +7 -0
- package/dist/types/src/extension/script/bing.d.ts +0 -0
- package/dist/types/src/extension/script/build_dom_tree.d.ts +38 -0
- package/dist/types/src/extension/script/common.d.ts +0 -0
- package/dist/types/src/extension/script/duckduckgo.d.ts +0 -0
- package/dist/types/src/extension/script/google.d.ts +0 -0
- package/dist/types/src/extension/tools/browser.d.ts +22 -0
- package/dist/types/src/extension/tools/browser_use.d.ts +19 -0
- package/dist/types/src/extension/tools/element_click.d.ts +12 -0
- package/dist/types/src/extension/tools/export_file.d.ts +18 -0
- package/dist/types/src/extension/tools/extract_content.d.ts +18 -0
- package/dist/types/src/extension/tools/find_element_position.d.ts +12 -0
- package/dist/types/src/extension/tools/html_script.d.ts +10 -0
- package/dist/types/src/extension/tools/index.d.ts +11 -0
- package/dist/types/src/extension/tools/open_url.d.ts +18 -0
- package/dist/{extension/tools/form_autofill.d.ts → types/src/extension/tools/request_login.d.ts} +3 -4
- package/dist/types/src/extension/tools/screenshot.d.ts +18 -0
- package/dist/types/src/extension/tools/tab_management.d.ts +19 -0
- package/dist/types/src/extension/tools/web_search.d.ts +18 -0
- package/dist/types/src/extension/utils.d.ts +31 -0
- package/dist/types/src/fellou/computer.d.ts +20 -0
- package/dist/types/src/fellou/index.d.ts +6 -0
- package/dist/types/src/fellou/tools/computer_use.d.ts +18 -0
- package/dist/types/src/index.d.ts +8 -0
- package/dist/types/src/models/action.d.ts +22 -0
- package/dist/types/src/models/workflow.d.ts +16 -0
- package/dist/types/src/nodejs/core.d.ts +2 -0
- package/dist/types/src/nodejs/index.d.ts +3 -0
- package/dist/types/src/nodejs/script/build_dom_tree.d.ts +1 -0
- package/dist/types/src/nodejs/tools/browser_use.d.ts +28 -0
- package/dist/types/src/nodejs/tools/command_execute.d.ts +12 -0
- package/dist/types/src/nodejs/tools/file_read.d.ts +11 -0
- package/dist/types/src/nodejs/tools/file_write.d.ts +15 -0
- package/dist/types/src/nodejs/tools/index.d.ts +4 -0
- package/dist/types/src/schemas/workflow.schema.d.ts +88 -0
- package/dist/types/src/services/llm/claude-provider.d.ts +11 -0
- package/dist/types/src/services/llm/deepseek-provider.d.ts +15 -0
- package/dist/types/src/services/llm/glm-provider.d.ts +11 -0
- package/dist/types/src/services/llm/openai-provider copy.d.ts +11 -0
- package/dist/types/src/services/llm/openai-provider.d.ts +11 -0
- package/dist/types/src/services/parser/workflow-parser.d.ts +29 -0
- package/dist/types/src/services/workflow/generator.d.ts +13 -0
- package/dist/types/src/services/workflow/templates.d.ts +8 -0
- package/dist/types/src/types/action.types.d.ts +38 -0
- package/dist/types/src/types/eko.types.d.ts +21 -0
- package/dist/types/src/types/index.d.ts +5 -0
- package/dist/types/src/types/llm.types.d.ts +54 -0
- package/dist/types/src/types/parser.types.d.ts +9 -0
- package/dist/types/src/types/tools.types.d.ts +88 -0
- package/dist/types/src/types/workflow.types.d.ts +39 -0
- package/dist/types/src/web/core.d.ts +2 -0
- package/dist/types/src/web/index.d.ts +5 -0
- package/dist/types/src/web/script/build_dom_tree.d.ts +10 -0
- package/dist/types/src/web/tools/browser.d.ts +21 -0
- package/dist/types/src/web/tools/browser_use.d.ts +19 -0
- package/dist/types/src/web/tools/element_click.d.ts +12 -0
- package/dist/types/src/web/tools/export_file.d.ts +18 -0
- package/dist/types/src/web/tools/extract_content.d.ts +17 -0
- package/dist/types/src/web/tools/find_element_position.d.ts +12 -0
- package/dist/types/src/web/tools/html_script.d.ts +10 -0
- package/dist/types/src/web/tools/index.d.ts +7 -0
- package/dist/types/src/web/tools/screenshot.d.ts +18 -0
- package/dist/types/test/integration/claude-provider.test.d.ts +1 -0
- package/dist/types/test/integration/deepseek-provider.test.d.ts +1 -0
- package/dist/types/test/integration/glm-provider.test.d.ts +1 -0
- package/dist/types/test/integration/openai-provider.test copy.d.ts +1 -0
- package/dist/types/test/integration/openai-provider.test.d.ts +1 -0
- package/dist/types/test/integration/qwen-provider.d.ts +1 -0
- package/dist/types/test/integration/qwen-provider.test copy.d.ts +1 -0
- package/dist/types/test/integration/qwen-provider.test.d.ts +1 -0
- package/dist/types/test/integration/workflow.execution.test.d.ts +1 -0
- package/dist/types/test/integration/workflow.generation-and-execution.test.d.ts +1 -0
- package/dist/types/test/integration/workflow.generator.test.d.ts +1 -0
- package/dist/types/test/unit/action.test.d.ts +1 -0
- package/dist/types/test/unit/tool-registry.test.d.ts +1 -0
- package/dist/types/test/unit/workflow-parser.test.d.ts +1 -0
- package/dist/types/test/unit/workflow.test.d.ts +1 -0
- package/dist/types/tools.types.d.ts +44 -1
- package/dist/types/workflow.types.d.ts +22 -9
- package/dist/universal_tools/cancel_workflow.d.ts +9 -0
- package/dist/universal_tools/human/text.d.ts +9 -0
- package/dist/universal_tools/human.d.ts +30 -0
- package/dist/universal_tools/index.d.ts +4 -0
- package/dist/universal_tools/summary_workflow.d.ts +9 -0
- package/dist/utils/execution-logger.d.ts +69 -0
- package/dist/web.cjs.js +117 -117
- package/dist/web.esm.js +117 -117
- package/package.json +106 -107
- package/dist/fellou/tools/index.d.ts +0 -2
- package/dist/types/framework.types.d.ts +0 -11
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Common JS function
|
|
4
|
+
*/
|
|
5
|
+
if (!window.eko) {
|
|
6
|
+
window.eko = {};
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Extract html content
|
|
10
|
+
*/
|
|
11
|
+
eko.extractHtmlContent = function (element) {
|
|
12
|
+
element = element || document.body;
|
|
13
|
+
let main = element.querySelector('main');
|
|
14
|
+
let content = '';
|
|
15
|
+
if (main) {
|
|
16
|
+
let articles = main.querySelectorAll('article');
|
|
17
|
+
if (articles && articles.length > 0) {
|
|
18
|
+
for (let i = 0; i < articles.length; i++) {
|
|
19
|
+
content += articles[i].innerText.trim() + '\n';
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
else {
|
|
23
|
+
content += main.innerText.trim();
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
else {
|
|
27
|
+
let articles = element.querySelectorAll('article');
|
|
28
|
+
if (articles && articles.length > 0) {
|
|
29
|
+
for (let i = 0; i < articles.length; i++) {
|
|
30
|
+
content += articles[i].innerText.trim() + '\n';
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
content = content.trim();
|
|
35
|
+
if (!content) {
|
|
36
|
+
content = element.innerText;
|
|
37
|
+
}
|
|
38
|
+
return content.replaceAll(/\n+/g, '\n').replaceAll(/ +/g, ' ').trim();
|
|
39
|
+
};
|
|
40
|
+
/**
|
|
41
|
+
* Element text (remove consecutive spaces and line breaks)
|
|
42
|
+
*
|
|
43
|
+
* @param {HTMLElement|string} object
|
|
44
|
+
* @returns text
|
|
45
|
+
*/
|
|
46
|
+
eko.cleanText = function (object) {
|
|
47
|
+
let str = (typeof object == 'string') ? object : object === null || object === void 0 ? void 0 : object.innerText;
|
|
48
|
+
return str ? str.replaceAll(/\s+/g, ' ').trim() : '';
|
|
49
|
+
};
|
|
50
|
+
/**
|
|
51
|
+
* sleep
|
|
52
|
+
*
|
|
53
|
+
* @param {number} time millisecond
|
|
54
|
+
*/
|
|
55
|
+
eko.sleep = function (time) {
|
|
56
|
+
return new Promise(resolve => setTimeout(() => resolve(), time));
|
|
57
|
+
};
|
|
58
|
+
/**
|
|
59
|
+
* element displayed
|
|
60
|
+
*
|
|
61
|
+
* @param {HTMLElement} element
|
|
62
|
+
*/
|
|
63
|
+
eko.isDisplayed = function (element) {
|
|
64
|
+
return element && window.getComputedStyle(element).getPropertyValue('display') != 'none';
|
|
65
|
+
};
|
|
66
|
+
/**
|
|
67
|
+
* click
|
|
68
|
+
*
|
|
69
|
+
* @param {HTMLElement} element
|
|
70
|
+
*/
|
|
71
|
+
eko.click = function (element) {
|
|
72
|
+
if (element.click) {
|
|
73
|
+
element.click();
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
element.dispatchEvent(new MouseEvent('click', {
|
|
77
|
+
view: window,
|
|
78
|
+
bubbles: true,
|
|
79
|
+
cancelable: true
|
|
80
|
+
}));
|
|
81
|
+
}
|
|
82
|
+
};
|
|
83
|
+
/**
|
|
84
|
+
* Trigger simulated input
|
|
85
|
+
*/
|
|
86
|
+
eko.sendKeys = function (element, str, clear, keypress) {
|
|
87
|
+
element.focus && element.focus();
|
|
88
|
+
if (clear) {
|
|
89
|
+
for (let i = 0; i < element.value.length; i++) {
|
|
90
|
+
element.dispatchEvent(new KeyboardEvent('keydown', { key: 'Backspace' }));
|
|
91
|
+
}
|
|
92
|
+
element.value = '';
|
|
93
|
+
}
|
|
94
|
+
if (keypress) {
|
|
95
|
+
Array.from(str).forEach(key => {
|
|
96
|
+
element.dispatchEvent(new KeyboardEvent('keypress', { key }));
|
|
97
|
+
});
|
|
98
|
+
element.value += str;
|
|
99
|
+
element.dispatchEvent(new Event('input'));
|
|
100
|
+
}
|
|
101
|
+
else {
|
|
102
|
+
element.value += str;
|
|
103
|
+
element.dispatchEvent(new Event('input', { bubbles: true }));
|
|
104
|
+
}
|
|
105
|
+
};
|
|
106
|
+
/**
|
|
107
|
+
* Waiting for Dom to change
|
|
108
|
+
*/
|
|
109
|
+
eko.waitForDomChanged = function (targetElement, fun, timeout, config, firstExecute) {
|
|
110
|
+
targetElement = targetElement || document.body;
|
|
111
|
+
return new Promise((resolve) => {
|
|
112
|
+
if (firstExecute) {
|
|
113
|
+
let result = fun({});
|
|
114
|
+
if (result) {
|
|
115
|
+
resolve(result);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
var observer = { value: null };
|
|
119
|
+
let timeId = setTimeout(() => {
|
|
120
|
+
observer.value && observer.value.disconnect();
|
|
121
|
+
resolve();
|
|
122
|
+
}, timeout);
|
|
123
|
+
observer.value = new MutationObserver((mutations) => {
|
|
124
|
+
try {
|
|
125
|
+
let result = fun(mutations);
|
|
126
|
+
if (result) {
|
|
127
|
+
clearTimeout(timeId);
|
|
128
|
+
observer.value && observer.value.disconnect();
|
|
129
|
+
resolve(result);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
catch (e) { }
|
|
133
|
+
});
|
|
134
|
+
if (!config) {
|
|
135
|
+
config = {};
|
|
136
|
+
}
|
|
137
|
+
observer.value.observe(targetElement, { attributes: true, childList: true, subtree: true, ...config });
|
|
138
|
+
});
|
|
139
|
+
};
|
|
140
|
+
/**
|
|
141
|
+
* Wait for the page to finish loading after onload
|
|
142
|
+
*/
|
|
143
|
+
eko.waitLoaded = async function () {
|
|
144
|
+
await eko.waitForDomChanged(document.body, () => document.readyState == 'complete', 5000, {}, true);
|
|
145
|
+
await eko.sleep(500);
|
|
146
|
+
};
|
|
147
|
+
/**
|
|
148
|
+
* Wait for the element to present
|
|
149
|
+
*/
|
|
150
|
+
eko.waitForElementPresent = function (targetElement, cssSelector, timeout) {
|
|
151
|
+
targetElement = targetElement || document.body;
|
|
152
|
+
return eko.waitForDomChanged(targetElement, () => targetElement.querySelector(cssSelector), timeout, { attributes: false }, true);
|
|
153
|
+
};
|
|
154
|
+
/**
|
|
155
|
+
* Wait for the element to displayed
|
|
156
|
+
*/
|
|
157
|
+
eko.waitForElementDisplayed = function (targetElement, cssSelector, timeout) {
|
|
158
|
+
targetElement = targetElement || document.body;
|
|
159
|
+
return eko.waitForDomChanged(targetElement, () => {
|
|
160
|
+
let element = targetElement.querySelector(cssSelector);
|
|
161
|
+
if (element) {
|
|
162
|
+
let visibility = window.getComputedStyle(element).getPropertyValue('display');
|
|
163
|
+
if (visibility != 'none') {
|
|
164
|
+
return element;
|
|
165
|
+
}
|
|
166
|
+
else {
|
|
167
|
+
return false;
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
else {
|
|
171
|
+
return false;
|
|
172
|
+
}
|
|
173
|
+
}, timeout, {}, true);
|
|
174
|
+
};
|
|
175
|
+
/**
|
|
176
|
+
* Wait for the element to present
|
|
177
|
+
*/
|
|
178
|
+
eko.waitForElementNotPresent = function (targetElement, cssSelector, timeout) {
|
|
179
|
+
targetElement = targetElement || document.body;
|
|
180
|
+
return eko.waitForDomChanged(targetElement, () => !targetElement.querySelector(cssSelector), timeout, { attributes: false }, true);
|
|
181
|
+
};
|
|
182
|
+
/**
|
|
183
|
+
* Waiting for element to be invisible
|
|
184
|
+
*/
|
|
185
|
+
eko.waitForElementNotDisplayed = function (targetElement, cssSelector, timeout) {
|
|
186
|
+
targetElement = targetElement || document.body;
|
|
187
|
+
return eko.waitForDomChanged(targetElement, () => {
|
|
188
|
+
let element = targetElement.querySelector(cssSelector);
|
|
189
|
+
if (element) {
|
|
190
|
+
let visibility = window.getComputedStyle(element).getPropertyValue('display');
|
|
191
|
+
if (visibility != 'none') {
|
|
192
|
+
return false;
|
|
193
|
+
}
|
|
194
|
+
else {
|
|
195
|
+
return true;
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
else {
|
|
199
|
+
return true;
|
|
200
|
+
}
|
|
201
|
+
}, timeout, {}, true);
|
|
202
|
+
};
|
|
203
|
+
//# sourceMappingURL=common.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"common.js","sourceRoot":"","sources":["../../../../src/extension/script/common.js"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
eko.getDetailLinks = async function (search) {
|
|
3
|
+
await eko.waitForElementPresent(document.body, 'section h2 a', 5000);
|
|
4
|
+
let search_list = document.querySelectorAll('section h2 a');
|
|
5
|
+
if (search_list.length === 0) {
|
|
6
|
+
search_list = document.querySelectorAll('h2 a');
|
|
7
|
+
}
|
|
8
|
+
let links = [];
|
|
9
|
+
for (let i = 0; i < search_list.length; i++) {
|
|
10
|
+
let title = eko.cleanText(search_list[i]);
|
|
11
|
+
let url = search_list[i].getAttribute('href');
|
|
12
|
+
links.push({ title, url });
|
|
13
|
+
}
|
|
14
|
+
return {
|
|
15
|
+
links: links
|
|
16
|
+
};
|
|
17
|
+
};
|
|
18
|
+
eko.getContent = async function (search) {
|
|
19
|
+
await eko.waitLoaded();
|
|
20
|
+
return {
|
|
21
|
+
title: document.title,
|
|
22
|
+
content: eko.extractHtmlContent()
|
|
23
|
+
};
|
|
24
|
+
};
|
|
25
|
+
//# sourceMappingURL=duckduckgo.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"duckduckgo.js","sourceRoot":"","sources":["../../../../src/extension/script/duckduckgo.js"],"names":[],"mappings":";AACA,GAAG,CAAC,cAAc,GAAG,KAAK,WAAW,MAAM;IACvC,MAAM,GAAG,CAAC,qBAAqB,CAAC,QAAQ,CAAC,IAAI,EAAE,cAAc,EAAE,IAAI,CAAC,CAAA;IACpE,IAAI,WAAW,GAAG,QAAQ,CAAC,gBAAgB,CAAC,cAAc,CAAC,CAAA;IAC3D,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,WAAW,GAAG,QAAQ,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAA;IACnD,CAAC;IACD,IAAI,KAAK,GAAG,EAAE,CAAA;IACd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC1C,IAAI,KAAK,GAAG,GAAG,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAA;QACzC,IAAI,GAAG,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAA;QAC7C,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAA;IAC9B,CAAC;IACD,OAAO;QACH,KAAK,EAAE,KAAK;KACf,CAAA;AACL,CAAC,CAAA;AAED,GAAG,CAAC,UAAU,GAAG,KAAK,WAAW,MAAM;IACnC,MAAM,GAAG,CAAC,UAAU,EAAE,CAAA;IACtB,OAAO;QACH,KAAK,EAAE,QAAQ,CAAC,KAAK;QACrB,OAAO,EAAE,GAAG,CAAC,kBAAkB,EAAE;KACpC,CAAA;AACL,CAAC,CAAA"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
eko.getDetailLinks = async function (search) {
|
|
3
|
+
let search_div = await eko.waitForElementPresent(document.body, '#search', 5000);
|
|
4
|
+
if (!search_div) {
|
|
5
|
+
search_div = document.body;
|
|
6
|
+
}
|
|
7
|
+
let links = [];
|
|
8
|
+
let elements = search_div.querySelectorAll('a:has(h3)');
|
|
9
|
+
for (let i = 0; i < elements.length; i++) {
|
|
10
|
+
let h3 = elements[i].querySelector('h3');
|
|
11
|
+
let title = eko.cleanText(h3);
|
|
12
|
+
let url = elements[i].getAttribute('href');
|
|
13
|
+
links.push({ title, url });
|
|
14
|
+
}
|
|
15
|
+
return {
|
|
16
|
+
links: links
|
|
17
|
+
};
|
|
18
|
+
};
|
|
19
|
+
eko.getContent = async function (search) {
|
|
20
|
+
await eko.waitLoaded();
|
|
21
|
+
return {
|
|
22
|
+
title: document.title,
|
|
23
|
+
content: eko.extractHtmlContent()
|
|
24
|
+
};
|
|
25
|
+
};
|
|
26
|
+
//# sourceMappingURL=google.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"google.js","sourceRoot":"","sources":["../../../../src/extension/script/google.js"],"names":[],"mappings":";AACA,GAAG,CAAC,cAAc,GAAG,KAAK,WAAW,MAAM;IACvC,IAAI,UAAU,GAAG,MAAM,GAAG,CAAC,qBAAqB,CAAC,QAAQ,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,CAAA;IAChF,IAAI,CAAC,UAAU,EAAE,CAAC;QACd,UAAU,GAAG,QAAQ,CAAC,IAAI,CAAA;IAC9B,CAAC;IACD,IAAI,KAAK,GAAG,EAAE,CAAA;IACd,IAAI,QAAQ,GAAG,UAAU,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAA;IACvD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACvC,IAAI,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,CAAA;QACxC,IAAI,KAAK,GAAG,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,CAAA;QAC7B,IAAI,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAA;QAC1C,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAA;IAC9B,CAAC;IACD,OAAO;QACH,KAAK,EAAE,KAAK;KACf,CAAA;AACL,CAAC,CAAA;AAED,GAAG,CAAC,UAAU,GAAG,KAAK,WAAW,MAAM;IACnC,MAAM,GAAG,CAAC,UAAU,EAAE,CAAA;IACtB,OAAO;QACH,KAAK,EAAE,QAAQ,CAAC,KAAK;QACrB,OAAO,EAAE,GAAG,CAAC,kBAAkB,EAAE;KACpC,CAAA;AACL,CAAC,CAAA"}
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
import { getPageSize } from '../utils';
|
|
2
|
+
export async function type(tabId, text, coordinate) {
|
|
3
|
+
if (!coordinate) {
|
|
4
|
+
coordinate = (await cursor_position(tabId)).coordinate;
|
|
5
|
+
}
|
|
6
|
+
await mouse_move(tabId, coordinate);
|
|
7
|
+
return await chrome.tabs.sendMessage(tabId, {
|
|
8
|
+
type: 'computer:type',
|
|
9
|
+
text,
|
|
10
|
+
coordinate,
|
|
11
|
+
});
|
|
12
|
+
}
|
|
13
|
+
export async function type_by(tabId, text, xpath, highlightIndex) {
|
|
14
|
+
return await chrome.tabs.sendMessage(tabId, {
|
|
15
|
+
type: 'computer:type',
|
|
16
|
+
text,
|
|
17
|
+
xpath,
|
|
18
|
+
highlightIndex,
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
export async function clear_input(tabId, coordinate) {
|
|
22
|
+
if (!coordinate) {
|
|
23
|
+
coordinate = (await cursor_position(tabId)).coordinate;
|
|
24
|
+
}
|
|
25
|
+
await mouse_move(tabId, coordinate);
|
|
26
|
+
return await chrome.tabs.sendMessage(tabId, {
|
|
27
|
+
type: 'computer:type',
|
|
28
|
+
text: '',
|
|
29
|
+
coordinate,
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
export async function clear_input_by(tabId, xpath, highlightIndex) {
|
|
33
|
+
return await chrome.tabs.sendMessage(tabId, {
|
|
34
|
+
type: 'computer:type',
|
|
35
|
+
text: '',
|
|
36
|
+
xpath,
|
|
37
|
+
highlightIndex,
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
export async function mouse_move(tabId, coordinate) {
|
|
41
|
+
return await chrome.tabs.sendMessage(tabId, {
|
|
42
|
+
type: 'computer:mouse_move',
|
|
43
|
+
coordinate,
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
export async function left_click(tabId, coordinate) {
|
|
47
|
+
if (!coordinate) {
|
|
48
|
+
coordinate = (await cursor_position(tabId)).coordinate;
|
|
49
|
+
}
|
|
50
|
+
return await chrome.tabs.sendMessage(tabId, {
|
|
51
|
+
type: 'computer:left_click',
|
|
52
|
+
coordinate,
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
export async function left_click_by(tabId, xpath, highlightIndex) {
|
|
56
|
+
return await chrome.tabs.sendMessage(tabId, {
|
|
57
|
+
type: 'computer:left_click',
|
|
58
|
+
xpath,
|
|
59
|
+
highlightIndex,
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
export async function right_click(tabId, coordinate) {
|
|
63
|
+
if (!coordinate) {
|
|
64
|
+
coordinate = (await cursor_position(tabId)).coordinate;
|
|
65
|
+
}
|
|
66
|
+
return await chrome.tabs.sendMessage(tabId, {
|
|
67
|
+
type: 'computer:right_click',
|
|
68
|
+
coordinate,
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
export async function right_click_by(tabId, xpath, highlightIndex) {
|
|
72
|
+
return await chrome.tabs.sendMessage(tabId, {
|
|
73
|
+
type: 'computer:right_click',
|
|
74
|
+
xpath,
|
|
75
|
+
highlightIndex,
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
export async function double_click(tabId, coordinate) {
|
|
79
|
+
if (!coordinate) {
|
|
80
|
+
coordinate = (await cursor_position(tabId)).coordinate;
|
|
81
|
+
}
|
|
82
|
+
return await chrome.tabs.sendMessage(tabId, {
|
|
83
|
+
type: 'computer:double_click',
|
|
84
|
+
coordinate,
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
export async function double_click_by(tabId, xpath, highlightIndex) {
|
|
88
|
+
return await chrome.tabs.sendMessage(tabId, {
|
|
89
|
+
type: 'computer:double_click',
|
|
90
|
+
xpath,
|
|
91
|
+
highlightIndex,
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
export async function screenshot(windowId, compress) {
|
|
95
|
+
let dataUrl;
|
|
96
|
+
if (compress) {
|
|
97
|
+
dataUrl = await chrome.tabs.captureVisibleTab(windowId, {
|
|
98
|
+
format: 'jpeg',
|
|
99
|
+
quality: 60, // 0-100
|
|
100
|
+
});
|
|
101
|
+
dataUrl = await compress_image(dataUrl, 0.7, 1);
|
|
102
|
+
}
|
|
103
|
+
else {
|
|
104
|
+
dataUrl = await chrome.tabs.captureVisibleTab(windowId, {
|
|
105
|
+
format: 'jpeg',
|
|
106
|
+
quality: 50,
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
let data = dataUrl.substring(dataUrl.indexOf('base64,') + 7);
|
|
110
|
+
return {
|
|
111
|
+
image: {
|
|
112
|
+
type: 'base64',
|
|
113
|
+
media_type: dataUrl.indexOf('image/png') > -1 ? 'image/png' : 'image/jpeg',
|
|
114
|
+
data: data,
|
|
115
|
+
},
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
export async function compress_image(dataUrl, scale = 0.8, quality = 0.8) {
|
|
119
|
+
const bitmap = await createImageBitmap(await (await fetch(dataUrl)).blob());
|
|
120
|
+
let width = bitmap.width * scale;
|
|
121
|
+
let height = bitmap.height * scale;
|
|
122
|
+
const canvas = new OffscreenCanvas(width, height);
|
|
123
|
+
const ctx = canvas.getContext('2d');
|
|
124
|
+
ctx.drawImage(bitmap, 0, 0, width, height);
|
|
125
|
+
const blob = await canvas.convertToBlob({
|
|
126
|
+
type: 'image/jpeg',
|
|
127
|
+
quality: quality,
|
|
128
|
+
});
|
|
129
|
+
return new Promise((resolve) => {
|
|
130
|
+
const reader = new FileReader();
|
|
131
|
+
reader.onloadend = () => resolve(reader.result);
|
|
132
|
+
reader.readAsDataURL(blob);
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
export async function scroll_to(tabId, coordinate) {
|
|
136
|
+
let from_coordinate = (await cursor_position(tabId)).coordinate;
|
|
137
|
+
return await chrome.tabs.sendMessage(tabId, {
|
|
138
|
+
type: 'computer:scroll_to',
|
|
139
|
+
from_coordinate,
|
|
140
|
+
to_coordinate: coordinate,
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
export async function scroll_to_by(tabId, xpath, highlightIndex) {
|
|
144
|
+
return await chrome.tabs.sendMessage(tabId, {
|
|
145
|
+
type: 'computer:scroll_to',
|
|
146
|
+
xpath,
|
|
147
|
+
highlightIndex,
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
export async function get_dropdown_options(tabId, xpath, highlightIndex) {
|
|
151
|
+
return await chrome.tabs.sendMessage(tabId, {
|
|
152
|
+
type: 'computer:get_dropdown_options',
|
|
153
|
+
xpath,
|
|
154
|
+
highlightIndex,
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
export async function select_dropdown_option(tabId, text, xpath, highlightIndex) {
|
|
158
|
+
return await chrome.tabs.sendMessage(tabId, {
|
|
159
|
+
type: 'computer:select_dropdown_option',
|
|
160
|
+
text,
|
|
161
|
+
xpath,
|
|
162
|
+
highlightIndex,
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
export async function cursor_position(tabId) {
|
|
166
|
+
let result = await chrome.tabs.sendMessage(tabId, {
|
|
167
|
+
type: 'computer:cursor_position',
|
|
168
|
+
});
|
|
169
|
+
return { coordinate: result.coordinate };
|
|
170
|
+
}
|
|
171
|
+
export async function size(tabId) {
|
|
172
|
+
return await getPageSize(tabId);
|
|
173
|
+
}
|
|
174
|
+
//# sourceMappingURL=browser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"browser.js","sourceRoot":"","sources":["../../../../src/extension/tools/browser.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
import { getWindowId, getTabId, sleep, injectScript, executeScript } from '../utils';
|
|
2
|
+
import * as browser from './browser';
|
|
3
|
+
/**
|
|
4
|
+
* Browser Use for general
|
|
5
|
+
*/
|
|
6
|
+
export class BrowserUse {
|
|
7
|
+
constructor() {
|
|
8
|
+
this.name = 'browser_use';
|
|
9
|
+
this.description = `Use structured commands to interact with the browser, manipulating page elements through screenshots and webpage element extraction.
|
|
10
|
+
* This is a browser GUI interface where you need to analyze webpages by taking screenshots and extracting page element structures, and specify action sequences to complete designated tasks.
|
|
11
|
+
* Before any operation, you must first call the \`screenshot_extract_element\` command, which will return the browser page screenshot and structured element information, both specially processed.
|
|
12
|
+
* ELEMENT INTERACTION:
|
|
13
|
+
- Only use indexes that exist in the provided element list
|
|
14
|
+
- Each element has a unique index number (e.g., "[33]:<button>")
|
|
15
|
+
- Elements marked with "[]:" are non-interactive (for context only)
|
|
16
|
+
* NAVIGATION & ERROR HANDLING:
|
|
17
|
+
- If no suitable elements exist, use other functions to complete the task
|
|
18
|
+
- If stuck, try alternative approaches
|
|
19
|
+
- Handle popups/cookies by accepting or closing them
|
|
20
|
+
- Use scroll to find elements you are looking for`;
|
|
21
|
+
this.input_schema = {
|
|
22
|
+
type: 'object',
|
|
23
|
+
properties: {
|
|
24
|
+
action: {
|
|
25
|
+
type: 'string',
|
|
26
|
+
description: `The action to perform. The available actions are:
|
|
27
|
+
* \`screenshot_extract_element\`: Take a screenshot of the web page and extract operable elements.
|
|
28
|
+
- Screenshots are used to understand page layouts, with labeled bounding boxes corresponding to element indexes. Each bounding box and its label share the same color, with labels typically positioned in the top-right corner of the box.
|
|
29
|
+
- Screenshots help verify element positions and relationships. Labels may sometimes overlap, so extracted elements are used to verify the correct elements.
|
|
30
|
+
- In addition to screenshots, simplified information about interactive elements is returned, with element indexes corresponding to those in the screenshots.
|
|
31
|
+
* \`input_text\`: Enter a string in the interactive element.
|
|
32
|
+
* \`click\`: Click to element.
|
|
33
|
+
* \`right_click\`: Right-click on the element.
|
|
34
|
+
* \`double_click\`: Double-click on the element.
|
|
35
|
+
* \`scroll_to\`: Scroll to the specified element.
|
|
36
|
+
* \`extract_content\`: Extract the text content of the current webpage.
|
|
37
|
+
* \`get_dropdown_options\`: Get all options from a native dropdown element.
|
|
38
|
+
* \`select_dropdown_option\`: Select dropdown option for interactive element index by the text of the option you want to select.`,
|
|
39
|
+
enum: [
|
|
40
|
+
'screenshot_extract_element',
|
|
41
|
+
'input_text',
|
|
42
|
+
'click',
|
|
43
|
+
'right_click',
|
|
44
|
+
'double_click',
|
|
45
|
+
'scroll_to',
|
|
46
|
+
'extract_content',
|
|
47
|
+
'get_dropdown_options',
|
|
48
|
+
'select_dropdown_option',
|
|
49
|
+
],
|
|
50
|
+
},
|
|
51
|
+
index: {
|
|
52
|
+
type: 'integer',
|
|
53
|
+
description: 'index of element, Operation elements must pass the corresponding index of the element',
|
|
54
|
+
},
|
|
55
|
+
text: {
|
|
56
|
+
type: 'string',
|
|
57
|
+
description: 'Required by `action=input_text` and `action=select_dropdown_option`',
|
|
58
|
+
},
|
|
59
|
+
},
|
|
60
|
+
required: ['action'],
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* browser
|
|
65
|
+
*
|
|
66
|
+
* @param {*} params { action: 'input_text', index: 1, text: 'string' }
|
|
67
|
+
* @returns > { success: true, image?: { type: 'base64', media_type: 'image/jpeg', data: '/9j...' }, text?: string }
|
|
68
|
+
*/
|
|
69
|
+
async execute(context, params) {
|
|
70
|
+
var _a;
|
|
71
|
+
try {
|
|
72
|
+
if (params === null || !params.action) {
|
|
73
|
+
throw new Error('Invalid parameters. Expected an object with a "action" property.');
|
|
74
|
+
}
|
|
75
|
+
let tabId = await getTabId(context);
|
|
76
|
+
let windowId = await getWindowId(context);
|
|
77
|
+
let selector_map = context.selector_map;
|
|
78
|
+
let selector_xpath;
|
|
79
|
+
if (params.index != null && selector_map) {
|
|
80
|
+
selector_xpath = (_a = selector_map[params.index]) === null || _a === void 0 ? void 0 : _a.xpath;
|
|
81
|
+
if (!selector_xpath) {
|
|
82
|
+
throw new Error('Element does not exist');
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
let result;
|
|
86
|
+
switch (params.action) {
|
|
87
|
+
case 'input_text':
|
|
88
|
+
if (params.index == null) {
|
|
89
|
+
throw new Error('index parameter is required');
|
|
90
|
+
}
|
|
91
|
+
if (params.text == null) {
|
|
92
|
+
throw new Error('text parameter is required');
|
|
93
|
+
}
|
|
94
|
+
await browser.clear_input_by(tabId, selector_xpath, params.index);
|
|
95
|
+
result = await browser.type_by(tabId, params.text, selector_xpath, params.index);
|
|
96
|
+
await sleep(200);
|
|
97
|
+
break;
|
|
98
|
+
case 'click':
|
|
99
|
+
if (params.index == null) {
|
|
100
|
+
throw new Error('index parameter is required');
|
|
101
|
+
}
|
|
102
|
+
result = await browser.left_click_by(tabId, selector_xpath, params.index);
|
|
103
|
+
await sleep(100);
|
|
104
|
+
break;
|
|
105
|
+
case 'right_click':
|
|
106
|
+
if (params.index == null) {
|
|
107
|
+
throw new Error('index parameter is required');
|
|
108
|
+
}
|
|
109
|
+
result = await browser.right_click_by(tabId, selector_xpath, params.index);
|
|
110
|
+
await sleep(100);
|
|
111
|
+
break;
|
|
112
|
+
case 'double_click':
|
|
113
|
+
if (params.index == null) {
|
|
114
|
+
throw new Error('index parameter is required');
|
|
115
|
+
}
|
|
116
|
+
result = await browser.double_click_by(tabId, selector_xpath, params.index);
|
|
117
|
+
await sleep(100);
|
|
118
|
+
break;
|
|
119
|
+
case 'scroll_to':
|
|
120
|
+
if (params.index == null) {
|
|
121
|
+
throw new Error('index parameter is required');
|
|
122
|
+
}
|
|
123
|
+
result = await browser.scroll_to_by(tabId, selector_xpath, params.index);
|
|
124
|
+
await sleep(500);
|
|
125
|
+
break;
|
|
126
|
+
case 'extract_content':
|
|
127
|
+
let tab = await chrome.tabs.get(tabId);
|
|
128
|
+
await injectScript(tabId);
|
|
129
|
+
await sleep(200);
|
|
130
|
+
let content = await executeScript(tabId, () => {
|
|
131
|
+
return eko.extractHtmlContent();
|
|
132
|
+
}, []);
|
|
133
|
+
result = {
|
|
134
|
+
title: tab.title,
|
|
135
|
+
url: tab.url,
|
|
136
|
+
content: content,
|
|
137
|
+
};
|
|
138
|
+
break;
|
|
139
|
+
case 'get_dropdown_options':
|
|
140
|
+
if (params.index == null) {
|
|
141
|
+
throw new Error('index parameter is required');
|
|
142
|
+
}
|
|
143
|
+
result = await browser.get_dropdown_options(tabId, selector_xpath, params.index);
|
|
144
|
+
break;
|
|
145
|
+
case 'select_dropdown_option':
|
|
146
|
+
if (params.index == null) {
|
|
147
|
+
throw new Error('index parameter is required');
|
|
148
|
+
}
|
|
149
|
+
if (params.text == null) {
|
|
150
|
+
throw new Error('text parameter is required');
|
|
151
|
+
}
|
|
152
|
+
result = await browser.select_dropdown_option(tabId, params.text, selector_xpath, params.index);
|
|
153
|
+
break;
|
|
154
|
+
case 'screenshot_extract_element':
|
|
155
|
+
await sleep(100);
|
|
156
|
+
await injectScript(tabId, 'build_dom_tree.js');
|
|
157
|
+
await sleep(100);
|
|
158
|
+
let element_result = await executeScript(tabId, () => {
|
|
159
|
+
return window.get_clickable_elements(true);
|
|
160
|
+
}, []);
|
|
161
|
+
context.selector_map = element_result.selector_map;
|
|
162
|
+
let screenshot = await browser.screenshot(windowId, true);
|
|
163
|
+
await executeScript(tabId, () => {
|
|
164
|
+
return window.remove_highlight();
|
|
165
|
+
}, []);
|
|
166
|
+
result = { image: screenshot.image, text: element_result.element_str };
|
|
167
|
+
break;
|
|
168
|
+
default:
|
|
169
|
+
throw Error(`Invalid parameters. The "${params.action}" value is not included in the "action" enumeration.`);
|
|
170
|
+
}
|
|
171
|
+
if (result) {
|
|
172
|
+
return { success: true, ...result };
|
|
173
|
+
}
|
|
174
|
+
else {
|
|
175
|
+
return { success: false };
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
catch (e) {
|
|
179
|
+
return { success: false, error: e === null || e === void 0 ? void 0 : e.message };
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
destroy(context) {
|
|
183
|
+
delete context.selector_map;
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
//# sourceMappingURL=browser_use.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"browser_use.js","sourceRoot":"","sources":["../../../../src/extension/tools/browser_use.ts"],"names":[],"mappings":"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"}
|