@eko-ai/eko-nodejs 2.0.8 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser.d.ts +10 -2
- package/dist/browser.d.ts.map +1 -1
- package/dist/file.d.ts +17 -4
- package/dist/file.d.ts.map +1 -1
- package/dist/index.cjs.js +77 -19
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.esm.js +77 -19
- package/dist/index.esm.js.map +1 -1
- package/package.json +2 -2
package/dist/browser.d.ts
CHANGED
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
import { AgentContext, BaseBrowserLabelsAgent } from "@eko-ai/eko";
|
|
2
|
+
import { Browser, Page, BrowserContext } from "playwright";
|
|
2
3
|
export default class BrowserAgent extends BaseBrowserLabelsAgent {
|
|
3
|
-
|
|
4
|
+
protected browser: Browser | null;
|
|
4
5
|
private browser_context;
|
|
5
6
|
private current_page;
|
|
7
|
+
private headless;
|
|
8
|
+
setHeadless(headless: boolean): void;
|
|
6
9
|
protected screenshot(agentContext: AgentContext): Promise<{
|
|
7
10
|
imageBase64: string;
|
|
8
11
|
imageType: "image/jpeg" | "image/png";
|
|
@@ -27,9 +30,14 @@ export default class BrowserAgent extends BaseBrowserLabelsAgent {
|
|
|
27
30
|
protected hover_to_element(agentContext: AgentContext, index: number): Promise<void>;
|
|
28
31
|
protected execute_script(agentContext: AgentContext, func: (...args: any[]) => void, args: any[]): Promise<any>;
|
|
29
32
|
private open_url;
|
|
30
|
-
|
|
33
|
+
protected currentPage(): Promise<Page>;
|
|
31
34
|
private get_element;
|
|
32
35
|
private sleep;
|
|
36
|
+
protected getBrowserContext(): Promise<BrowserContext>;
|
|
37
|
+
protected initScript(): Promise<{
|
|
38
|
+
path?: string;
|
|
39
|
+
content?: string;
|
|
40
|
+
}>;
|
|
33
41
|
}
|
|
34
42
|
export { BrowserAgent };
|
|
35
43
|
//# sourceMappingURL=browser.d.ts.map
|
package/dist/browser.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AACnE,OAAO,EAEL,OAAO,EACP,IAAI,EAEJ,cAAc,EACf,MAAM,YAAY,CAAC;AAEpB,MAAM,CAAC,OAAO,OAAO,YAAa,SAAQ,sBAAsB;IAC9D,SAAS,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAQ;IACzC,OAAO,CAAC,eAAe,CAA+B;IACtD,OAAO,CAAC,YAAY,CAAqB;IACzC,OAAO,CAAC,QAAQ,CAAkB;IAE3B,WAAW,CAAC,QAAQ,EAAE,OAAO;cAIpB,UAAU,CACxB,YAAY,EAAE,YAAY,GACzB,OAAO,CAAC;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,YAAY,GAAG,WAAW,CAAA;KAAE,CAAC;cAc1D,WAAW,CACzB,YAAY,EAAE,YAAY,EAC1B,GAAG,EAAE,MAAM,GACV,OAAO,CAAC;QACT,GAAG,EAAE,MAAM,CAAC;QACZ,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;cASc,YAAY,CAC1B,YAAY,EAAE,YAAY,GACzB,OAAO,CAAC,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;cAiBhD,UAAU,CACxB,YAAY,EAAE,YAAY,EAC1B,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;cAiBzC,UAAU,CACxB,YAAY,EAAE,YAAY,EAC1B,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,OAAO,GACb,OAAO,CAAC,IAAI,CAAC;cAcA,aAAa,CAC3B,YAAY,EAAE,YAAY,EAC1B,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,QAAQ,GAClC,OAAO,CAAC,IAAI,CAAC;cAaA,gBAAgB,CAC9B,YAAY,EAAE,YAAY,EAC1B,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,IAAI,CAAC;cASA,cAAc,CAC5B,YAAY,EAAE,YAAY,EAC1B,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,EAC9B,IAAI,EAAE,GAAG,EAAE,GACV,OAAO,CAAC,GAAG,CAAC;YAKD,QAAQ;cAuBN,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;YAW9B,WAAW;IA0BzB,OAAO,CAAC,KAAK;cAIG,iBAAiB;cAoBjB,UAAU,IAAI,OAAO,CAAC;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAqC3E;AAED,OAAO,EAAE,YAAY,EAAE,CAAC"}
|
package/dist/file.d.ts
CHANGED
|
@@ -1,10 +1,23 @@
|
|
|
1
1
|
import { AgentContext, BaseFileAgent } from "@eko-ai/eko";
|
|
2
2
|
export default class FileAgent extends BaseFileAgent {
|
|
3
|
-
protected file_list(agentContext: AgentContext, directoryPath: string): Promise<
|
|
3
|
+
protected file_list(agentContext: AgentContext, directoryPath: string): Promise<Array<{
|
|
4
|
+
path: string;
|
|
5
|
+
name?: string;
|
|
6
|
+
isDirectory?: boolean;
|
|
7
|
+
size?: string;
|
|
8
|
+
modified?: string;
|
|
9
|
+
}>>;
|
|
4
10
|
protected file_read(agentContext: AgentContext, filePath: string): Promise<string>;
|
|
5
|
-
protected file_write(agentContext: AgentContext, filePath: string, content: string, append: boolean): Promise<
|
|
6
|
-
protected file_str_replace(agentContext: AgentContext, filePath: string, oldStr: string, newStr: string): Promise<
|
|
7
|
-
protected file_find_by_name(agentContext: AgentContext, directoryPath: string, globPattern: string): Promise<
|
|
11
|
+
protected file_write(agentContext: AgentContext, filePath: string, content: string, append: boolean): Promise<any>;
|
|
12
|
+
protected file_str_replace(agentContext: AgentContext, filePath: string, oldStr: string, newStr: string): Promise<any>;
|
|
13
|
+
protected file_find_by_name(agentContext: AgentContext, directoryPath: string, globPattern: string): Promise<Array<{
|
|
14
|
+
path: string;
|
|
15
|
+
name?: string;
|
|
16
|
+
isDirectory?: boolean;
|
|
17
|
+
size?: string;
|
|
18
|
+
modified?: string;
|
|
19
|
+
}>>;
|
|
20
|
+
protected formatFileSize(size: number): string;
|
|
8
21
|
}
|
|
9
22
|
export { FileAgent };
|
|
10
23
|
//# sourceMappingURL=file.d.ts.map
|
package/dist/file.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file.d.ts","sourceRoot":"","sources":["../src/file.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE1D,MAAM,CAAC,OAAO,OAAO,SAAU,SAAQ,aAAa;cAClC,SAAS,CACvB,YAAY,EAAE,YAAY,EAC1B,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,MAAM,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"file.d.ts","sourceRoot":"","sources":["../src/file.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE1D,MAAM,CAAC,OAAO,OAAO,SAAU,SAAQ,aAAa;cAClC,SAAS,CACvB,YAAY,EAAE,YAAY,EAC1B,aAAa,EAAE,MAAM,GACpB,OAAO,CACR,KAAK,CAAC;QACJ,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,WAAW,CAAC,EAAE,OAAO,CAAC;QACtB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC,CACH;cAkBe,SAAS,CACvB,YAAY,EAAE,YAAY,EAC1B,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,MAAM,CAAC;cAIF,UAAU,CACxB,YAAY,EAAE,YAAY,EAC1B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,OAAO,GACd,OAAO,CAAC,GAAG,CAAC;cAUC,gBAAgB,CAC9B,YAAY,EAAE,YAAY,EAC1B,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,GAAG,CAAC;cAUC,iBAAiB,CAC/B,YAAY,EAAE,YAAY,EAC1B,aAAa,EAAE,MAAM,EACrB,WAAW,EAAE,MAAM,GAClB,OAAO,CACR,KAAK,CAAC;QACJ,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,WAAW,CAAC,EAAE,OAAO,CAAC;QACtB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC,CACH;IAkBD,SAAS,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;CAS/C;AAED,OAAO,EAAE,SAAS,EAAE,CAAC"}
|
package/dist/index.cjs.js
CHANGED
|
@@ -40,6 +40,10 @@ class BrowserAgent extends eko.BaseBrowserLabelsAgent {
|
|
|
40
40
|
this.browser = null;
|
|
41
41
|
this.browser_context = null;
|
|
42
42
|
this.current_page = null;
|
|
43
|
+
this.headless = false;
|
|
44
|
+
}
|
|
45
|
+
setHeadless(headless) {
|
|
46
|
+
this.headless = headless;
|
|
43
47
|
}
|
|
44
48
|
async screenshot(agentContext) {
|
|
45
49
|
let page = await this.currentPage();
|
|
@@ -135,19 +139,8 @@ class BrowserAgent extends eko.BaseBrowserLabelsAgent {
|
|
|
135
139
|
return await page.evaluate(func, args);
|
|
136
140
|
}
|
|
137
141
|
async open_url(agentContext, url) {
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
this.browser_context = null;
|
|
141
|
-
this.browser = await playwright.chromium.launch({
|
|
142
|
-
headless: false,
|
|
143
|
-
args: ["--no-sandbox"],
|
|
144
|
-
});
|
|
145
|
-
}
|
|
146
|
-
if (!this.browser_context) {
|
|
147
|
-
this.current_page = null;
|
|
148
|
-
this.browser_context = await this.browser.newContext();
|
|
149
|
-
}
|
|
150
|
-
const page = await this.browser_context.newPage();
|
|
142
|
+
let browser_context = await this.getBrowserContext();
|
|
143
|
+
const page = await browser_context.newPage();
|
|
151
144
|
// await page.setViewportSize({ width: 1920, height: 1080 });
|
|
152
145
|
await page.setViewportSize({ width: 1536, height: 864 });
|
|
153
146
|
try {
|
|
@@ -196,6 +189,62 @@ class BrowserAgent extends eko.BaseBrowserLabelsAgent {
|
|
|
196
189
|
sleep(time) {
|
|
197
190
|
return new Promise((resolve) => setTimeout(() => resolve(), time));
|
|
198
191
|
}
|
|
192
|
+
async getBrowserContext() {
|
|
193
|
+
if (!this.browser) {
|
|
194
|
+
this.current_page = null;
|
|
195
|
+
this.browser_context = null;
|
|
196
|
+
this.browser = await playwright.chromium.launch({
|
|
197
|
+
headless: this.headless,
|
|
198
|
+
args: ["--no-sandbox"],
|
|
199
|
+
});
|
|
200
|
+
}
|
|
201
|
+
if (!this.browser_context) {
|
|
202
|
+
this.current_page = null;
|
|
203
|
+
this.browser_context = await this.browser.newContext();
|
|
204
|
+
// Anti-crawling detection website:
|
|
205
|
+
// https://bot.sannysoft.com/
|
|
206
|
+
let init_script = await this.initScript();
|
|
207
|
+
this.browser_context.addInitScript(init_script);
|
|
208
|
+
}
|
|
209
|
+
return this.browser_context;
|
|
210
|
+
}
|
|
211
|
+
async initScript() {
|
|
212
|
+
return {
|
|
213
|
+
content: `
|
|
214
|
+
// Webdriver property
|
|
215
|
+
Object.defineProperty(navigator, 'webdriver', {
|
|
216
|
+
get: () => undefined
|
|
217
|
+
});
|
|
218
|
+
|
|
219
|
+
// Languages
|
|
220
|
+
Object.defineProperty(navigator, 'languages', {
|
|
221
|
+
get: () => ['en-US']
|
|
222
|
+
});
|
|
223
|
+
|
|
224
|
+
// Plugins
|
|
225
|
+
Object.defineProperty(navigator, 'plugins', {
|
|
226
|
+
get: () => [{name:"1"}, {name:"2"}, {name:"3"}, {name:"4"}, {name:"5"}]
|
|
227
|
+
});
|
|
228
|
+
|
|
229
|
+
// Chrome runtime
|
|
230
|
+
window.chrome = { runtime: {} };
|
|
231
|
+
|
|
232
|
+
// Permissions
|
|
233
|
+
const originalQuery = window.navigator.permissions.query;
|
|
234
|
+
window.navigator.permissions.query = (parameters) => (
|
|
235
|
+
parameters.name === 'notifications' ?
|
|
236
|
+
Promise.resolve({ state: Notification.permission }) :
|
|
237
|
+
originalQuery(parameters)
|
|
238
|
+
);
|
|
239
|
+
(function () {
|
|
240
|
+
const originalAttachShadow = Element.prototype.attachShadow;
|
|
241
|
+
Element.prototype.attachShadow = function attachShadow(options) {
|
|
242
|
+
return originalAttachShadow.call(this, { ...options, mode: "open" });
|
|
243
|
+
};
|
|
244
|
+
})();
|
|
245
|
+
`,
|
|
246
|
+
};
|
|
247
|
+
}
|
|
199
248
|
}
|
|
200
249
|
|
|
201
250
|
function getDefaultExportFromCjs (x) {
|
|
@@ -8122,11 +8171,11 @@ class FileAgent extends eko.BaseFileAgent {
|
|
|
8122
8171
|
name: file,
|
|
8123
8172
|
path: filePath,
|
|
8124
8173
|
isDirectory: stats.isDirectory(),
|
|
8125
|
-
size: stats.size,
|
|
8126
|
-
modified: stats.mtime,
|
|
8174
|
+
size: this.formatFileSize(stats.size),
|
|
8175
|
+
modified: stats.mtime.toLocaleString(),
|
|
8127
8176
|
};
|
|
8128
8177
|
}));
|
|
8129
|
-
return fileDetails
|
|
8178
|
+
return fileDetails;
|
|
8130
8179
|
}
|
|
8131
8180
|
async file_read(agentContext, filePath) {
|
|
8132
8181
|
return await fs__namespace.readFile(filePath, "utf-8");
|
|
@@ -8159,11 +8208,20 @@ class FileAgent extends eko.BaseFileAgent {
|
|
|
8159
8208
|
name: path__namespace.basename(file),
|
|
8160
8209
|
path: file,
|
|
8161
8210
|
isDirectory: stats.isDirectory(),
|
|
8162
|
-
size: stats.size,
|
|
8163
|
-
modified: stats.mtime,
|
|
8211
|
+
size: this.formatFileSize(stats.size),
|
|
8212
|
+
modified: stats.mtime.toLocaleString(),
|
|
8164
8213
|
};
|
|
8165
8214
|
}));
|
|
8166
|
-
return fileDetails
|
|
8215
|
+
return fileDetails;
|
|
8216
|
+
}
|
|
8217
|
+
formatFileSize(size) {
|
|
8218
|
+
if (size < 1024) {
|
|
8219
|
+
return size + " B";
|
|
8220
|
+
}
|
|
8221
|
+
if (size < 1024 * 1024) {
|
|
8222
|
+
return (size / 1024).toFixed(1) + " KB";
|
|
8223
|
+
}
|
|
8224
|
+
return (size / 1024 / 1024).toFixed(1) + " MB";
|
|
8167
8225
|
}
|
|
8168
8226
|
}
|
|
8169
8227
|
|