@eko-ai/eko-nodejs 2.0.8 → 2.0.9

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 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
- private browser;
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
- private currentPage;
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
@@ -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;AASnE,MAAM,CAAC,OAAO,OAAO,YAAa,SAAQ,sBAAsB;IAC9D,OAAO,CAAC,OAAO,CAAwB;IACvC,OAAO,CAAC,eAAe,CAA+B;IACtD,OAAO,CAAC,YAAY,CAAqB;cAEzB,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;YAkCR,WAAW;YAWX,WAAW;IA0BzB,OAAO,CAAC,KAAK;CAGd;AAED,OAAO,EAAE,YAAY,EAAE,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<string[]>;
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<void>;
6
- protected file_str_replace(agentContext: AgentContext, filePath: string, oldStr: string, newStr: string): Promise<void>;
7
- protected file_find_by_name(agentContext: AgentContext, directoryPath: string, globPattern: string): Promise<string[]>;
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
@@ -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;cAkBJ,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,IAAI,CAAC;cAUA,gBAAgB,CAC9B,YAAY,EAAE,YAAY,EAC1B,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,IAAI,CAAC;cAUA,iBAAiB,CAC/B,YAAY,EAAE,YAAY,EAC1B,aAAa,EAAE,MAAM,EACrB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,MAAM,EAAE,CAAC;CAiBrB;AAED,OAAO,EAAE,SAAS,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
- if (!this.browser) {
139
- this.current_page = null;
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.map((s) => s.path);
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.map((s) => s.path);
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