@eko-ai/eko-nodejs 4.0.9 → 4.1.1-alpha.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/browser.d.ts CHANGED
@@ -1,14 +1,20 @@
1
1
  import { AgentContext, BaseBrowserLabelsAgent } from "@eko-ai/eko";
2
2
  import { Page, Browser, BrowserContext } from "playwright";
3
- export default class BrowserAgent extends BaseBrowserLabelsAgent {
3
+ type PageInfo = {
4
+ tabId: number;
5
+ lastAccessed: number;
6
+ };
7
+ export declare class BrowserAgent extends BaseBrowserLabelsAgent {
4
8
  private cdpWsEndpoint?;
5
9
  private userDataDir?;
6
10
  private options?;
7
11
  private cookies?;
8
12
  protected browser: Browser | null;
9
- private browser_context;
10
- private current_page;
13
+ private browserContext;
14
+ private activePage;
11
15
  private headless;
16
+ private pageMap;
17
+ protected lastSwitchedPage: Page | null;
12
18
  setHeadless(headless: boolean): void;
13
19
  setCdpWsEndpoint(cdpWsEndpoint: string): void;
14
20
  initUserDataDir(userDataDir: string): string | undefined;
@@ -31,10 +37,20 @@ export default class BrowserAgent extends BaseBrowserLabelsAgent {
31
37
  title?: string;
32
38
  tabId?: number;
33
39
  }>;
34
- protected get_all_tabs(agentContext: AgentContext): Promise<Array<{
40
+ loadTabs(): Promise<{
35
41
  tabId: number;
36
42
  url: string;
37
43
  title: string;
44
+ lastAccessed?: number;
45
+ active: boolean;
46
+ }[]>;
47
+ getPageMap(): Map<Page, PageInfo>;
48
+ protected get_all_tabs(agentContext?: AgentContext): Promise<Array<{
49
+ tabId: number;
50
+ url: string;
51
+ title: string;
52
+ lastAccessed?: number;
53
+ active: boolean;
38
54
  }>>;
39
55
  protected switch_tab(agentContext: AgentContext, tabId: number): Promise<{
40
56
  tabId: number;
@@ -48,8 +64,9 @@ export default class BrowserAgent extends BaseBrowserLabelsAgent {
48
64
  private open_url;
49
65
  protected currentPage(): Promise<Page>;
50
66
  private get_element;
67
+ protected go_back(agentContext: AgentContext): Promise<void>;
51
68
  private sleep;
52
- protected getBrowserContext(): Promise<BrowserContext>;
69
+ getBrowserContext(): Promise<BrowserContext>;
53
70
  private autoLoadCookies;
54
71
  private autoLoadLocalStorage;
55
72
  protected loadCookiesWithUrl(url: string): Promise<Array<{
@@ -71,6 +88,9 @@ export default class BrowserAgent extends BaseBrowserLabelsAgent {
71
88
  path?: string;
72
89
  content?: string;
73
90
  }>;
91
+ getBrowser(): Promise<Browser | null>;
92
+ getActivePage(): Promise<Page | null>;
93
+ close(): Promise<void>;
74
94
  }
75
- export { BrowserAgent };
95
+ export default BrowserAgent;
76
96
  //# sourceMappingURL=browser.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"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"}
@@ -8,6 +8,10 @@ var playwrightExtra = require('playwright-extra');
8
8
  var StealthPlugin = require('puppeteer-extra-plugin-stealth');
9
9
  var child_process = require('child_process');
10
10
 
11
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
12
+
13
+ var StealthPlugin__default = /*#__PURE__*/_interopDefault(StealthPlugin);
14
+
11
15
  async function getCdpWsEndpoint(port) {
12
16
  // Example => ws://localhost:9222/devtools/browser/{session-id}
13
17
  const response = await fetch(`http://localhost:${port}/json/version`);
@@ -16,13 +20,16 @@ async function getCdpWsEndpoint(port) {
16
20
  return browserInfo.webSocketDebuggerUrl;
17
21
  }
18
22
 
23
+ var tabId = 1000;
19
24
  class BrowserAgent extends eko.BaseBrowserLabelsAgent {
20
25
  constructor() {
21
26
  super(...arguments);
22
27
  this.browser = null;
23
- this.browser_context = null;
24
- this.current_page = null;
28
+ this.browserContext = null;
29
+ this.activePage = null;
25
30
  this.headless = false;
31
+ this.pageMap = new Map();
32
+ this.lastSwitchedPage = null;
26
33
  }
27
34
  setHeadless(headless) {
28
35
  this.headless = headless;
@@ -55,42 +62,65 @@ class BrowserAgent extends eko.BaseBrowserLabelsAgent {
55
62
  }
56
63
  async navigate_to(agentContext, url) {
57
64
  const page = await this.open_url(agentContext, url);
65
+ this.lastSwitchedPage = page;
58
66
  await this.sleep(200);
59
67
  return {
60
68
  url: page.url(),
61
69
  title: await page.title(),
62
70
  };
63
71
  }
72
+ async loadTabs() {
73
+ return await this.get_all_tabs(undefined);
74
+ }
75
+ getPageMap() {
76
+ return this.pageMap;
77
+ }
64
78
  async get_all_tabs(agentContext) {
65
- if (!this.browser_context) {
79
+ if (!this.browserContext) {
66
80
  return [];
67
81
  }
68
82
  const result = [];
69
- const pages = await this.browser_context.pages();
83
+ const pages = this.browserContext.pages();
70
84
  for (let i = 0; i < pages.length; i++) {
71
85
  let page = pages[i];
86
+ let pageInfo = this.pageMap.get(page);
87
+ if (!pageInfo) {
88
+ pageInfo = {
89
+ tabId: tabId++,
90
+ lastAccessed: Date.now(),
91
+ };
92
+ this.pageMap.set(page, pageInfo);
93
+ }
72
94
  result.push({
73
- tabId: i,
95
+ tabId: pageInfo.tabId,
74
96
  url: page.url(),
75
97
  title: await page.title(),
98
+ lastAccessed: pageInfo.lastAccessed,
99
+ active: page === this.activePage,
76
100
  });
77
101
  }
78
102
  return result;
79
103
  }
80
104
  async switch_tab(agentContext, tabId) {
81
- if (!this.browser_context) {
105
+ if (!this.browserContext) {
82
106
  throw new Error("tabId does not exist: " + tabId);
83
107
  }
84
- const pages = await this.browser_context.pages();
85
- const page = pages[tabId];
86
- if (!page) {
108
+ let switchPage = null;
109
+ this.pageMap.forEach((pageInfo, page) => {
110
+ if (pageInfo.tabId === tabId) {
111
+ switchPage = page;
112
+ return;
113
+ }
114
+ });
115
+ if (!switchPage) {
87
116
  throw new Error("tabId does not exist: " + tabId);
88
117
  }
89
- this.current_page = page;
118
+ this.activePage = switchPage;
119
+ this.lastSwitchedPage = switchPage;
90
120
  return {
91
121
  tabId: tabId,
92
- url: page.url(),
93
- title: await page.title(),
122
+ url: switchPage.url(),
123
+ title: await switchPage.title(),
94
124
  };
95
125
  }
96
126
  async input_text(agentContext, index, text, enter) {
@@ -158,14 +188,14 @@ class BrowserAgent extends eko.BaseBrowserLabelsAgent {
158
188
  throw e;
159
189
  }
160
190
  }
161
- this.current_page = page;
191
+ this.activePage = page;
162
192
  return page;
163
193
  }
164
194
  async currentPage() {
165
- if (this.current_page == null) {
195
+ if (this.activePage == null) {
166
196
  throw new Error("There is no page, please call navigate_to first");
167
197
  }
168
- const page = this.current_page;
198
+ const page = this.activePage;
169
199
  try {
170
200
  await page.waitForLoadState("domcontentloaded", { timeout: 10000 });
171
201
  }
@@ -189,22 +219,40 @@ class BrowserAgent extends eko.BaseBrowserLabelsAgent {
189
219
  return element;
190
220
  }, { index, findInput });
191
221
  }
222
+ async go_back(agentContext) {
223
+ try {
224
+ await this.execute_script(agentContext, async () => {
225
+ await window.navigation.back().finished;
226
+ }, []);
227
+ await this.sleep(100);
228
+ }
229
+ catch (e) {
230
+ if (e?.name == "InvalidStateError" && this.lastSwitchedPage) {
231
+ this.activePage && (await this.activePage.close());
232
+ this.activePage = this.lastSwitchedPage;
233
+ this.lastSwitchedPage = null;
234
+ }
235
+ else {
236
+ throw new Error("Cannot go back");
237
+ }
238
+ }
239
+ }
192
240
  sleep(time) {
193
241
  return new Promise((resolve) => setTimeout(() => resolve(), time));
194
242
  }
195
243
  async getBrowserContext() {
196
- if (!this.browser_context) {
197
- this.current_page = null;
198
- this.browser_context = null;
244
+ if (!this.browserContext) {
245
+ this.activePage = null;
246
+ this.browserContext = null;
199
247
  if (this.cdpWsEndpoint) {
200
248
  this.browser = (await playwrightExtra.chromium.connectOverCDP(this.cdpWsEndpoint, this.options));
201
- this.browser_context = await this.browser.newContext({
249
+ this.browserContext = await this.browser.newContext({
202
250
  userAgent: this.getUserAgent(),
203
251
  viewport: { width: 1536, height: 864 },
204
252
  });
205
253
  }
206
254
  else if (this.userDataDir) {
207
- this.browser_context = (await playwrightExtra.chromium.launchPersistentContext(this.userDataDir, {
255
+ this.browserContext = (await playwrightExtra.chromium.launchPersistentContext(this.userDataDir, {
208
256
  headless: this.headless,
209
257
  channel: "chrome",
210
258
  args: this.getChromiumArgs(),
@@ -217,7 +265,7 @@ class BrowserAgent extends eko.BaseBrowserLabelsAgent {
217
265
  args: this.getChromiumArgs(),
218
266
  ...this.options,
219
267
  }));
220
- this.browser_context = await this.browser.newContext({
268
+ this.browserContext = await this.browser.newContext({
221
269
  userAgent: this.getUserAgent(),
222
270
  viewport: { width: 1536, height: 864 },
223
271
  });
@@ -225,12 +273,17 @@ class BrowserAgent extends eko.BaseBrowserLabelsAgent {
225
273
  // Anti-crawling detection website:
226
274
  // https://bot.sannysoft.com/
227
275
  // https://www.browserscan.net/
228
- playwrightExtra.chromium.use(StealthPlugin());
276
+ playwrightExtra.chromium.use(StealthPlugin__default.default());
229
277
  const init_script = await this.initScript();
230
278
  if (init_script.content || init_script.path) {
231
- this.browser_context.addInitScript(init_script);
279
+ this.browserContext.addInitScript(init_script);
232
280
  }
233
- this.browser_context.on("page", async (page) => {
281
+ this.browserContext.on("page", async (page) => {
282
+ this.activePage = page;
283
+ this.pageMap.set(page, {
284
+ tabId: tabId++,
285
+ lastAccessed: Date.now(),
286
+ });
234
287
  page.on("framenavigated", async (frame) => {
235
288
  if (frame === page.mainFrame()) {
236
289
  const url = frame.url();
@@ -240,19 +293,22 @@ class BrowserAgent extends eko.BaseBrowserLabelsAgent {
240
293
  }
241
294
  }
242
295
  });
296
+ page.on("close", () => {
297
+ this.pageMap.delete(page);
298
+ });
243
299
  });
244
300
  }
245
301
  if (this.cookies) {
246
- this.browser_context?.addCookies(this.cookies);
302
+ this.browserContext?.addCookies(this.cookies);
247
303
  }
248
- return this.browser_context;
304
+ return this.browserContext;
249
305
  }
250
306
  async autoLoadCookies(url) {
251
307
  try {
252
308
  const cookies = await this.loadCookiesWithUrl(url);
253
309
  if (cookies && cookies.length > 0) {
254
- await this.browser_context?.clearCookies();
255
- await this.browser_context?.addCookies(cookies);
310
+ await this.browserContext?.clearCookies();
311
+ await this.browserContext?.addCookies(cookies);
256
312
  }
257
313
  }
258
314
  catch (e) {
@@ -312,6 +368,20 @@ class BrowserAgent extends eko.BaseBrowserLabelsAgent {
312
368
  async initScript() {
313
369
  return {};
314
370
  }
371
+ async getBrowser() {
372
+ return this.browser;
373
+ }
374
+ async getActivePage() {
375
+ return this.activePage;
376
+ }
377
+ async close() {
378
+ if (this.browserContext) {
379
+ await this.browserContext.close();
380
+ }
381
+ if (this.browser) {
382
+ await this.browser.close();
383
+ }
384
+ }
315
385
  }
316
386
 
317
387
  class SimpleStdioMcpClient {
@@ -437,4 +507,4 @@ class SimpleStdioMcpClient {
437
507
  exports.BrowserAgent = BrowserAgent;
438
508
  exports.SimpleStdioMcpClient = SimpleStdioMcpClient;
439
509
  exports.getCdpWsEndpoint = getCdpWsEndpoint;
440
- //# sourceMappingURL=index.cjs.js.map
510
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","sources":["../src/utils.ts","../src/browser.ts","../src/mcp/stdio.ts"],"sourcesContent":[null,null,null],"names":["Log","BaseBrowserLabelsAgent","chromium","StealthPlugin","spawn","uuidv4"],"mappings":"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"}
package/dist/index.esm.js CHANGED
@@ -2408,13 +2408,16 @@ function requirePuppeteerExtraPluginStealth () {
2408
2408
  var puppeteerExtraPluginStealthExports = requirePuppeteerExtraPluginStealth();
2409
2409
  var StealthPlugin = /*@__PURE__*/getDefaultExportFromCjs(puppeteerExtraPluginStealthExports);
2410
2410
 
2411
+ var tabId = 1000;
2411
2412
  class BrowserAgent extends BaseBrowserLabelsAgent {
2412
2413
  constructor() {
2413
2414
  super(...arguments);
2414
2415
  this.browser = null;
2415
- this.browser_context = null;
2416
- this.current_page = null;
2416
+ this.browserContext = null;
2417
+ this.activePage = null;
2417
2418
  this.headless = false;
2419
+ this.pageMap = new Map();
2420
+ this.lastSwitchedPage = null;
2418
2421
  }
2419
2422
  setHeadless(headless) {
2420
2423
  this.headless = headless;
@@ -2447,42 +2450,65 @@ class BrowserAgent extends BaseBrowserLabelsAgent {
2447
2450
  }
2448
2451
  async navigate_to(agentContext, url) {
2449
2452
  const page = await this.open_url(agentContext, url);
2453
+ this.lastSwitchedPage = page;
2450
2454
  await this.sleep(200);
2451
2455
  return {
2452
2456
  url: page.url(),
2453
2457
  title: await page.title(),
2454
2458
  };
2455
2459
  }
2460
+ async loadTabs() {
2461
+ return await this.get_all_tabs(undefined);
2462
+ }
2463
+ getPageMap() {
2464
+ return this.pageMap;
2465
+ }
2456
2466
  async get_all_tabs(agentContext) {
2457
- if (!this.browser_context) {
2467
+ if (!this.browserContext) {
2458
2468
  return [];
2459
2469
  }
2460
2470
  const result = [];
2461
- const pages = await this.browser_context.pages();
2471
+ const pages = this.browserContext.pages();
2462
2472
  for (let i = 0; i < pages.length; i++) {
2463
2473
  let page = pages[i];
2474
+ let pageInfo = this.pageMap.get(page);
2475
+ if (!pageInfo) {
2476
+ pageInfo = {
2477
+ tabId: tabId++,
2478
+ lastAccessed: Date.now(),
2479
+ };
2480
+ this.pageMap.set(page, pageInfo);
2481
+ }
2464
2482
  result.push({
2465
- tabId: i,
2483
+ tabId: pageInfo.tabId,
2466
2484
  url: page.url(),
2467
2485
  title: await page.title(),
2486
+ lastAccessed: pageInfo.lastAccessed,
2487
+ active: page === this.activePage,
2468
2488
  });
2469
2489
  }
2470
2490
  return result;
2471
2491
  }
2472
2492
  async switch_tab(agentContext, tabId) {
2473
- if (!this.browser_context) {
2493
+ if (!this.browserContext) {
2474
2494
  throw new Error("tabId does not exist: " + tabId);
2475
2495
  }
2476
- const pages = await this.browser_context.pages();
2477
- const page = pages[tabId];
2478
- if (!page) {
2496
+ let switchPage = null;
2497
+ this.pageMap.forEach((pageInfo, page) => {
2498
+ if (pageInfo.tabId === tabId) {
2499
+ switchPage = page;
2500
+ return;
2501
+ }
2502
+ });
2503
+ if (!switchPage) {
2479
2504
  throw new Error("tabId does not exist: " + tabId);
2480
2505
  }
2481
- this.current_page = page;
2506
+ this.activePage = switchPage;
2507
+ this.lastSwitchedPage = switchPage;
2482
2508
  return {
2483
2509
  tabId: tabId,
2484
- url: page.url(),
2485
- title: await page.title(),
2510
+ url: switchPage.url(),
2511
+ title: await switchPage.title(),
2486
2512
  };
2487
2513
  }
2488
2514
  async input_text(agentContext, index, text, enter) {
@@ -2550,14 +2576,14 @@ class BrowserAgent extends BaseBrowserLabelsAgent {
2550
2576
  throw e;
2551
2577
  }
2552
2578
  }
2553
- this.current_page = page;
2579
+ this.activePage = page;
2554
2580
  return page;
2555
2581
  }
2556
2582
  async currentPage() {
2557
- if (this.current_page == null) {
2583
+ if (this.activePage == null) {
2558
2584
  throw new Error("There is no page, please call navigate_to first");
2559
2585
  }
2560
- const page = this.current_page;
2586
+ const page = this.activePage;
2561
2587
  try {
2562
2588
  await page.waitForLoadState("domcontentloaded", { timeout: 10000 });
2563
2589
  }
@@ -2581,22 +2607,40 @@ class BrowserAgent extends BaseBrowserLabelsAgent {
2581
2607
  return element;
2582
2608
  }, { index, findInput });
2583
2609
  }
2610
+ async go_back(agentContext) {
2611
+ try {
2612
+ await this.execute_script(agentContext, async () => {
2613
+ await window.navigation.back().finished;
2614
+ }, []);
2615
+ await this.sleep(100);
2616
+ }
2617
+ catch (e) {
2618
+ if (e?.name == "InvalidStateError" && this.lastSwitchedPage) {
2619
+ this.activePage && (await this.activePage.close());
2620
+ this.activePage = this.lastSwitchedPage;
2621
+ this.lastSwitchedPage = null;
2622
+ }
2623
+ else {
2624
+ throw new Error("Cannot go back");
2625
+ }
2626
+ }
2627
+ }
2584
2628
  sleep(time) {
2585
2629
  return new Promise((resolve) => setTimeout(() => resolve(), time));
2586
2630
  }
2587
2631
  async getBrowserContext() {
2588
- if (!this.browser_context) {
2589
- this.current_page = null;
2590
- this.browser_context = null;
2632
+ if (!this.browserContext) {
2633
+ this.activePage = null;
2634
+ this.browserContext = null;
2591
2635
  if (this.cdpWsEndpoint) {
2592
2636
  this.browser = (await chromium.connectOverCDP(this.cdpWsEndpoint, this.options));
2593
- this.browser_context = await this.browser.newContext({
2637
+ this.browserContext = await this.browser.newContext({
2594
2638
  userAgent: this.getUserAgent(),
2595
2639
  viewport: { width: 1536, height: 864 },
2596
2640
  });
2597
2641
  }
2598
2642
  else if (this.userDataDir) {
2599
- this.browser_context = (await chromium.launchPersistentContext(this.userDataDir, {
2643
+ this.browserContext = (await chromium.launchPersistentContext(this.userDataDir, {
2600
2644
  headless: this.headless,
2601
2645
  channel: "chrome",
2602
2646
  args: this.getChromiumArgs(),
@@ -2609,7 +2653,7 @@ class BrowserAgent extends BaseBrowserLabelsAgent {
2609
2653
  args: this.getChromiumArgs(),
2610
2654
  ...this.options,
2611
2655
  }));
2612
- this.browser_context = await this.browser.newContext({
2656
+ this.browserContext = await this.browser.newContext({
2613
2657
  userAgent: this.getUserAgent(),
2614
2658
  viewport: { width: 1536, height: 864 },
2615
2659
  });
@@ -2620,9 +2664,14 @@ class BrowserAgent extends BaseBrowserLabelsAgent {
2620
2664
  chromium.use(StealthPlugin());
2621
2665
  const init_script = await this.initScript();
2622
2666
  if (init_script.content || init_script.path) {
2623
- this.browser_context.addInitScript(init_script);
2667
+ this.browserContext.addInitScript(init_script);
2624
2668
  }
2625
- this.browser_context.on("page", async (page) => {
2669
+ this.browserContext.on("page", async (page) => {
2670
+ this.activePage = page;
2671
+ this.pageMap.set(page, {
2672
+ tabId: tabId++,
2673
+ lastAccessed: Date.now(),
2674
+ });
2626
2675
  page.on("framenavigated", async (frame) => {
2627
2676
  if (frame === page.mainFrame()) {
2628
2677
  const url = frame.url();
@@ -2632,19 +2681,22 @@ class BrowserAgent extends BaseBrowserLabelsAgent {
2632
2681
  }
2633
2682
  }
2634
2683
  });
2684
+ page.on("close", () => {
2685
+ this.pageMap.delete(page);
2686
+ });
2635
2687
  });
2636
2688
  }
2637
2689
  if (this.cookies) {
2638
- this.browser_context?.addCookies(this.cookies);
2690
+ this.browserContext?.addCookies(this.cookies);
2639
2691
  }
2640
- return this.browser_context;
2692
+ return this.browserContext;
2641
2693
  }
2642
2694
  async autoLoadCookies(url) {
2643
2695
  try {
2644
2696
  const cookies = await this.loadCookiesWithUrl(url);
2645
2697
  if (cookies && cookies.length > 0) {
2646
- await this.browser_context?.clearCookies();
2647
- await this.browser_context?.addCookies(cookies);
2698
+ await this.browserContext?.clearCookies();
2699
+ await this.browserContext?.addCookies(cookies);
2648
2700
  }
2649
2701
  }
2650
2702
  catch (e) {
@@ -2704,6 +2756,20 @@ class BrowserAgent extends BaseBrowserLabelsAgent {
2704
2756
  async initScript() {
2705
2757
  return {};
2706
2758
  }
2759
+ async getBrowser() {
2760
+ return this.browser;
2761
+ }
2762
+ async getActivePage() {
2763
+ return this.activePage;
2764
+ }
2765
+ async close() {
2766
+ if (this.browserContext) {
2767
+ await this.browserContext.close();
2768
+ }
2769
+ if (this.browser) {
2770
+ await this.browser.close();
2771
+ }
2772
+ }
2707
2773
  }
2708
2774
 
2709
2775
  class SimpleStdioMcpClient {