claude-chrome-parallel 3.4.2 → 3.5.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.
Files changed (37) hide show
  1. package/dist/cdp/connection-pool.d.ts +29 -0
  2. package/dist/cdp/connection-pool.d.ts.map +1 -1
  3. package/dist/cdp/connection-pool.js +141 -2
  4. package/dist/cdp/connection-pool.js.map +1 -1
  5. package/dist/cdp/screenshot-scheduler.d.ts +54 -0
  6. package/dist/cdp/screenshot-scheduler.d.ts.map +1 -0
  7. package/dist/cdp/screenshot-scheduler.js +87 -0
  8. package/dist/cdp/screenshot-scheduler.js.map +1 -0
  9. package/dist/orchestration/workflow-engine.d.ts +30 -1
  10. package/dist/orchestration/workflow-engine.d.ts.map +1 -1
  11. package/dist/orchestration/workflow-engine.js +160 -4
  12. package/dist/orchestration/workflow-engine.js.map +1 -1
  13. package/dist/session-manager.d.ts +6 -0
  14. package/dist/session-manager.d.ts.map +1 -1
  15. package/dist/session-manager.js +26 -0
  16. package/dist/session-manager.js.map +1 -1
  17. package/dist/tools/batch-execute.d.ts +11 -0
  18. package/dist/tools/batch-execute.d.ts.map +1 -0
  19. package/dist/tools/batch-execute.js +226 -0
  20. package/dist/tools/batch-execute.js.map +1 -0
  21. package/dist/tools/computer.d.ts.map +1 -1
  22. package/dist/tools/computer.js +4 -2
  23. package/dist/tools/computer.js.map +1 -1
  24. package/dist/tools/index.d.ts.map +1 -1
  25. package/dist/tools/index.js +6 -0
  26. package/dist/tools/index.js.map +1 -1
  27. package/dist/tools/lightweight-scroll.d.ts +11 -0
  28. package/dist/tools/lightweight-scroll.d.ts.map +1 -0
  29. package/dist/tools/lightweight-scroll.js +266 -0
  30. package/dist/tools/lightweight-scroll.js.map +1 -0
  31. package/dist/tools/orchestration.d.ts.map +1 -1
  32. package/dist/tools/orchestration.js +110 -2
  33. package/dist/tools/orchestration.js.map +1 -1
  34. package/dist/tools/read-page.d.ts.map +1 -1
  35. package/dist/tools/read-page.js +59 -0
  36. package/dist/tools/read-page.js.map +1 -1
  37. package/package.json +1 -1
@@ -43,10 +43,27 @@ export declare class CDPConnectionPool {
43
43
  * Initialize the pool with pre-warmed pages
44
44
  */
45
45
  initialize(): Promise<void>;
46
+ /**
47
+ * When true, suppresses automatic pool replenishment.
48
+ * Set during bulk operations (acquireBatch, preWarmForWorkflow) to prevent
49
+ * about:blank tab proliferation.
50
+ */
51
+ private suppressReplenishment;
46
52
  /**
47
53
  * Acquire a page from the pool
48
54
  */
49
55
  acquirePage(): Promise<Page>;
56
+ /**
57
+ * Acquire multiple pages at once without triggering per-page replenishment.
58
+ * Prevents about:blank tab proliferation during workflow_init.
59
+ *
60
+ * Instead of acquiring one-by-one (each triggering replenishPoolAsync),
61
+ * this method batch-acquires all needed pages, only replenishing once at the end.
62
+ *
63
+ * @param count Number of pages to acquire
64
+ * @returns Array of acquired pages
65
+ */
66
+ acquireBatch(count: number): Promise<Page[]>;
50
67
  /**
51
68
  * Release a page back to the pool (non-blocking: cleanup runs async)
52
69
  */
@@ -75,6 +92,18 @@ export declare class CDPConnectionPool {
75
92
  * Perform maintenance on the pool
76
93
  */
77
94
  private performMaintenance;
95
+ /**
96
+ * Pre-warm pages for an upcoming workflow.
97
+ * Call this before creating workers to eliminate page creation delay
98
+ * during the worker creation loop.
99
+ *
100
+ * @param count Number of pages needed for the workflow
101
+ * @param concurrency Max parallel page creation (default: 10)
102
+ */
103
+ preWarmForWorkflow(count: number, concurrency?: number): Promise<{
104
+ warmed: number;
105
+ durationMs: number;
106
+ }>;
78
107
  /**
79
108
  * Get pool statistics
80
109
  */
@@ -1 +1 @@
1
- {"version":3,"file":"connection-pool.d.ts","sourceRoot":"","sources":["../../src/cdp/connection-pool.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAE,SAAS,EAAgB,MAAM,UAAU,CAAC;AAEnD,MAAM,WAAW,UAAU;IACzB,uEAAuE;IACvE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,0DAA0D;IAC1D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,4EAA4E;IAC5E,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,2DAA2D;IAC3D,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,SAAS;IACxB,2DAA2D;IAC3D,cAAc,EAAE,MAAM,CAAC;IACvB,uCAAuC;IACvC,UAAU,EAAE,MAAM,CAAC;IACnB,oDAAoD;IACpD,iBAAiB,EAAE,MAAM,CAAC;IAC1B,uCAAuC;IACvC,WAAW,EAAE,MAAM,CAAC;IACpB,yDAAyD;IACzD,oBAAoB,EAAE,MAAM,CAAC;IAC7B,0CAA0C;IAC1C,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAgBD,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,SAAS,CAAY;IAC7B,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,cAAc,CAAoB;IAC1C,OAAO,CAAC,UAAU,CAAoC;IACtD,OAAO,CAAC,gBAAgB,CAA+B;IACvD,OAAO,CAAC,aAAa,CAAS;IAG9B,OAAO,CAAC,iBAAiB,CAAK;IAC9B,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,oBAAoB,CAAK;IACjC,OAAO,CAAC,YAAY,CAAgB;gBAExB,SAAS,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,EAAE,UAAU;IAKtD;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAoBjC;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IA4ClC;;OAEG;IACG,WAAW,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IA+B5C;;OAEG;YACW,oBAAoB;IAuClC,MAAM,CAAC,QAAQ,CAAC,gBAAgB;;;MAAiC;IAEjE;;OAEG;YACW,aAAa;IAU3B;;OAEG;YACW,kBAAkB;IAuBhC;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAQ1B;;OAEG;YACW,kBAAkB;IAiChC;;OAEG;IACH,QAAQ,IAAI,SAAS;IAgBrB;;OAEG;IACH,SAAS,IAAI,QAAQ,CAAC,UAAU,CAAC;IAIjC;;OAEG;IACH,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,IAAI;IAI/C;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;CA6BhC;AAKD,wBAAgB,oBAAoB,CAAC,MAAM,CAAC,EAAE,UAAU,GAAG,iBAAiB,CAK3E"}
1
+ {"version":3,"file":"connection-pool.d.ts","sourceRoot":"","sources":["../../src/cdp/connection-pool.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAE,SAAS,EAAgB,MAAM,UAAU,CAAC;AAEnD,MAAM,WAAW,UAAU;IACzB,uEAAuE;IACvE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,0DAA0D;IAC1D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,4EAA4E;IAC5E,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,2DAA2D;IAC3D,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,SAAS;IACxB,2DAA2D;IAC3D,cAAc,EAAE,MAAM,CAAC;IACvB,uCAAuC;IACvC,UAAU,EAAE,MAAM,CAAC;IACnB,oDAAoD;IACpD,iBAAiB,EAAE,MAAM,CAAC;IAC1B,uCAAuC;IACvC,WAAW,EAAE,MAAM,CAAC;IACpB,yDAAyD;IACzD,oBAAoB,EAAE,MAAM,CAAC;IAC7B,0CAA0C;IAC1C,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAgBD,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,SAAS,CAAY;IAC7B,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,cAAc,CAAoB;IAC1C,OAAO,CAAC,UAAU,CAAoC;IACtD,OAAO,CAAC,gBAAgB,CAA+B;IACvD,OAAO,CAAC,aAAa,CAAS;IAG9B,OAAO,CAAC,iBAAiB,CAAK;IAC9B,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,oBAAoB,CAAK;IACjC,OAAO,CAAC,YAAY,CAAgB;gBAExB,SAAS,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,EAAE,UAAU;IAKtD;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAoBjC;;;;OAIG;IACH,OAAO,CAAC,qBAAqB,CAAS;IAEtC;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IA8ClC;;;;;;;;;OASG;IACG,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IA0ElD;;OAEG;IACG,WAAW,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IA+B5C;;OAEG;YACW,oBAAoB;IAuClC,MAAM,CAAC,QAAQ,CAAC,gBAAgB;;;MAAiC;IAEjE;;OAEG;YACW,aAAa;IAU3B;;OAEG;YACW,kBAAkB;IAuBhC;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAQ1B;;OAEG;YACW,kBAAkB;IAiChC;;;;;;;OAOG;IACG,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,SAAK,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;IAkE1G;;OAEG;IACH,QAAQ,IAAI,SAAS;IAgBrB;;OAEG;IACH,SAAS,IAAI,QAAQ,CAAC,UAAU,CAAC;IAIjC;;OAEG;IACH,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,IAAI;IAI/C;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;CA6BhC;AAKD,wBAAgB,oBAAoB,CAAC,MAAM,CAAC,EAAE,UAAU,GAAG,iBAAiB,CAK3E"}
@@ -47,6 +47,12 @@ class CDPConnectionPool {
47
47
  this.isInitialized = true;
48
48
  console.error('[Pool] Connection pool initialized');
49
49
  }
50
+ /**
51
+ * When true, suppresses automatic pool replenishment.
52
+ * Set during bulk operations (acquireBatch, preWarmForWorkflow) to prevent
53
+ * about:blank tab proliferation.
54
+ */
55
+ suppressReplenishment = false;
50
56
  /**
51
57
  * Acquire a page from the pool
52
58
  */
@@ -83,10 +89,84 @@ class CDPConnectionPool {
83
89
  if (this.acquireTimes.length > 100) {
84
90
  this.acquireTimes.shift();
85
91
  }
86
- // Replenish pool in background if needed
87
- this.replenishPoolAsync();
92
+ // Replenish pool in background if needed (suppressed during bulk ops)
93
+ if (!this.suppressReplenishment) {
94
+ this.replenishPoolAsync();
95
+ }
88
96
  return page;
89
97
  }
98
+ /**
99
+ * Acquire multiple pages at once without triggering per-page replenishment.
100
+ * Prevents about:blank tab proliferation during workflow_init.
101
+ *
102
+ * Instead of acquiring one-by-one (each triggering replenishPoolAsync),
103
+ * this method batch-acquires all needed pages, only replenishing once at the end.
104
+ *
105
+ * @param count Number of pages to acquire
106
+ * @returns Array of acquired pages
107
+ */
108
+ async acquireBatch(count) {
109
+ if (!this.isInitialized) {
110
+ await this.initialize();
111
+ }
112
+ // Suppress replenishment during batch acquire
113
+ this.suppressReplenishment = true;
114
+ const startTime = Date.now();
115
+ try {
116
+ const pages = [];
117
+ // First, take as many as possible from the pool
118
+ const fromPool = Math.min(count, this.availablePages.length);
119
+ for (let i = 0; i < fromPool; i++) {
120
+ const pooledPage = this.availablePages.pop();
121
+ pooledPage.lastUsedAt = Date.now();
122
+ this.inUsePages.set(pooledPage.page, pooledPage);
123
+ this.pagesReused++;
124
+ pages.push(pooledPage.page);
125
+ }
126
+ // Create remaining pages on-demand (in parallel with concurrency limit)
127
+ const remaining = count - fromPool;
128
+ if (remaining > 0) {
129
+ const concurrency = 10;
130
+ let active = 0;
131
+ const queue = [];
132
+ const limiter = async (fn) => {
133
+ if (active >= concurrency) {
134
+ await new Promise((resolve) => queue.push(resolve));
135
+ }
136
+ active++;
137
+ try {
138
+ return await fn();
139
+ }
140
+ finally {
141
+ active--;
142
+ if (queue.length > 0)
143
+ queue.shift()();
144
+ }
145
+ };
146
+ const newPages = await Promise.all(Array.from({ length: remaining }, () => limiter(async () => {
147
+ const page = await this.createNewPage();
148
+ const pooledPage = {
149
+ page,
150
+ createdAt: Date.now(),
151
+ lastUsedAt: Date.now(),
152
+ visitedOrigins: new Set(),
153
+ };
154
+ this.inUsePages.set(page, pooledPage);
155
+ this.pagesCreatedOnDemand++;
156
+ return page;
157
+ })));
158
+ pages.push(...newPages);
159
+ }
160
+ const durationMs = Date.now() - startTime;
161
+ console.error(`[Pool] Batch acquired ${pages.length} pages (${fromPool} from pool, ${remaining} on-demand) in ${durationMs}ms`);
162
+ return pages;
163
+ }
164
+ finally {
165
+ this.suppressReplenishment = false;
166
+ // Single replenishment check after batch complete
167
+ this.replenishPoolAsync();
168
+ }
169
+ }
90
170
  /**
91
171
  * Release a page back to the pool (non-blocking: cleanup runs async)
92
172
  */
@@ -232,6 +312,65 @@ class CDPConnectionPool {
232
312
  console.error(`[Pool] Maintenance: closed ${pagesToRemove.length} idle page(s)`);
233
313
  }
234
314
  }
315
+ /**
316
+ * Pre-warm pages for an upcoming workflow.
317
+ * Call this before creating workers to eliminate page creation delay
318
+ * during the worker creation loop.
319
+ *
320
+ * @param count Number of pages needed for the workflow
321
+ * @param concurrency Max parallel page creation (default: 10)
322
+ */
323
+ async preWarmForWorkflow(count, concurrency = 10) {
324
+ const startTime = Date.now();
325
+ if (!this.isInitialized) {
326
+ await this.initialize();
327
+ }
328
+ const currentAvailable = this.availablePages.length;
329
+ const needed = Math.max(0, Math.min(count - currentAvailable, this.config.maxPoolSize - currentAvailable - this.inUsePages.size));
330
+ if (needed === 0) {
331
+ return { warmed: 0, durationMs: 0 };
332
+ }
333
+ console.error(`[Pool] Pre-warming ${needed} pages for workflow (${currentAvailable} already available, ${count} needed)`);
334
+ // Create pages with concurrency control
335
+ let active = 0;
336
+ const queue = [];
337
+ let created = 0;
338
+ const limiter = async (fn) => {
339
+ if (active >= concurrency) {
340
+ await new Promise((resolve) => queue.push(resolve));
341
+ }
342
+ active++;
343
+ try {
344
+ return await fn();
345
+ }
346
+ finally {
347
+ active--;
348
+ if (queue.length > 0) {
349
+ const next = queue.shift();
350
+ next();
351
+ }
352
+ }
353
+ };
354
+ const promises = [];
355
+ for (let i = 0; i < needed; i++) {
356
+ promises.push(limiter(async () => {
357
+ const page = await this.createNewPage();
358
+ this.availablePages.push({
359
+ page,
360
+ createdAt: Date.now(),
361
+ lastUsedAt: Date.now(),
362
+ visitedOrigins: new Set(),
363
+ });
364
+ created++;
365
+ }).catch((err) => {
366
+ console.error('[Pool] Failed to pre-warm page:', err);
367
+ }));
368
+ }
369
+ await Promise.all(promises);
370
+ const durationMs = Date.now() - startTime;
371
+ console.error(`[Pool] Pre-warmed ${created}/${needed} pages in ${durationMs}ms`);
372
+ return { warmed: created, durationMs };
373
+ }
235
374
  /**
236
375
  * Get pool statistics
237
376
  */
@@ -1 +1 @@
1
- {"version":3,"file":"connection-pool.js","sourceRoot":"","sources":["../../src/cdp/connection-pool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"connection-pool.js","sourceRoot":"","sources":["../../src/cdp/connection-pool.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,54 @@
1
+ /**
2
+ * Screenshot Scheduler - Concurrency-controlled screenshot pipeline
3
+ *
4
+ * Prevents GPU/renderer contention when multiple tabs request
5
+ * screenshots simultaneously. Without this, 20 concurrent screenshot
6
+ * requests serialize through Chrome's renderer, causing 185s+ timeouts.
7
+ *
8
+ * Performance impact: 20 concurrent screenshots from 4000ms to ~800ms
9
+ */
10
+ import { Page } from 'puppeteer-core';
11
+ import { CDPClient } from './client';
12
+ export interface ScreenshotOptions {
13
+ format?: 'webp' | 'png' | 'jpeg';
14
+ quality?: number;
15
+ fullPage?: boolean;
16
+ clip?: {
17
+ x: number;
18
+ y: number;
19
+ width: number;
20
+ height: number;
21
+ scale?: number;
22
+ };
23
+ optimizeForSpeed?: boolean;
24
+ }
25
+ export interface ScreenshotResult {
26
+ data: string;
27
+ durationMs: number;
28
+ waitMs: number;
29
+ }
30
+ export interface SchedulerStats {
31
+ pending: number;
32
+ active: number;
33
+ completed: number;
34
+ totalWaitMs: number;
35
+ totalCaptureMs: number;
36
+ concurrency: number;
37
+ }
38
+ export declare class ScreenshotScheduler {
39
+ private readonly concurrency;
40
+ private active;
41
+ private queue;
42
+ private completed;
43
+ private totalWaitMs;
44
+ private totalCaptureMs;
45
+ constructor(concurrency?: number);
46
+ /**
47
+ * Capture a screenshot with concurrency control.
48
+ * Queues the request if too many are already in flight.
49
+ */
50
+ capture(page: Page, cdpClient: CDPClient, options?: ScreenshotOptions): Promise<ScreenshotResult>;
51
+ getStats(): SchedulerStats;
52
+ }
53
+ export declare function getScreenshotScheduler(): ScreenshotScheduler;
54
+ //# sourceMappingURL=screenshot-scheduler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"screenshot-scheduler.d.ts","sourceRoot":"","sources":["../../src/cdp/screenshot-scheduler.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAErC,MAAM,WAAW,iBAAiB;IAChC,MAAM,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,MAAM,CAAC;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/E,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,qBAAa,mBAAmB;IAQ5B,OAAO,CAAC,QAAQ,CAAC,WAAW;IAP9B,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,KAAK,CAAyB;IACtC,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,cAAc,CAAK;gBAGR,WAAW,GAAE,MAAU;IAG1C;;;OAGG;IACG,OAAO,CACX,IAAI,EAAE,IAAI,EACV,SAAS,EAAE,SAAS,EACpB,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,gBAAgB,CAAC;IAmD5B,QAAQ,IAAI,cAAc;CAU3B;AAKD,wBAAgB,sBAAsB,IAAI,mBAAmB,CAM5D"}
@@ -0,0 +1,87 @@
1
+ "use strict";
2
+ /**
3
+ * Screenshot Scheduler - Concurrency-controlled screenshot pipeline
4
+ *
5
+ * Prevents GPU/renderer contention when multiple tabs request
6
+ * screenshots simultaneously. Without this, 20 concurrent screenshot
7
+ * requests serialize through Chrome's renderer, causing 185s+ timeouts.
8
+ *
9
+ * Performance impact: 20 concurrent screenshots from 4000ms to ~800ms
10
+ */
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.ScreenshotScheduler = void 0;
13
+ exports.getScreenshotScheduler = getScreenshotScheduler;
14
+ class ScreenshotScheduler {
15
+ concurrency;
16
+ active = 0;
17
+ queue = [];
18
+ completed = 0;
19
+ totalWaitMs = 0;
20
+ totalCaptureMs = 0;
21
+ constructor(concurrency = 5) {
22
+ this.concurrency = concurrency;
23
+ }
24
+ /**
25
+ * Capture a screenshot with concurrency control.
26
+ * Queues the request if too many are already in flight.
27
+ */
28
+ async capture(page, cdpClient, options = {}) {
29
+ const queuedAt = Date.now();
30
+ // Wait for a slot if at capacity
31
+ if (this.active >= this.concurrency) {
32
+ await new Promise((resolve) => this.queue.push(resolve));
33
+ }
34
+ this.active++;
35
+ const waitMs = Date.now() - queuedAt;
36
+ const captureStart = Date.now();
37
+ try {
38
+ const format = options.format || 'webp';
39
+ const quality = options.quality ?? 60;
40
+ const params = {
41
+ format,
42
+ quality,
43
+ optimizeForSpeed: options.optimizeForSpeed ?? true,
44
+ };
45
+ if (options.clip) {
46
+ params.clip = options.clip;
47
+ }
48
+ if (options.fullPage) {
49
+ params.captureBeyondViewport = true;
50
+ }
51
+ const { data } = await cdpClient.send(page, 'Page.captureScreenshot', params);
52
+ const durationMs = Date.now() - captureStart;
53
+ this.completed++;
54
+ this.totalWaitMs += waitMs;
55
+ this.totalCaptureMs += durationMs;
56
+ return { data, durationMs, waitMs };
57
+ }
58
+ finally {
59
+ this.active--;
60
+ if (this.queue.length > 0) {
61
+ const next = this.queue.shift();
62
+ next();
63
+ }
64
+ }
65
+ }
66
+ getStats() {
67
+ return {
68
+ pending: this.queue.length,
69
+ active: this.active,
70
+ completed: this.completed,
71
+ totalWaitMs: this.totalWaitMs,
72
+ totalCaptureMs: this.totalCaptureMs,
73
+ concurrency: this.concurrency,
74
+ };
75
+ }
76
+ }
77
+ exports.ScreenshotScheduler = ScreenshotScheduler;
78
+ // Singleton instance
79
+ let schedulerInstance = null;
80
+ function getScreenshotScheduler() {
81
+ if (!schedulerInstance) {
82
+ const concurrency = parseInt(process.env.SCREENSHOT_CONCURRENCY || '5', 10);
83
+ schedulerInstance = new ScreenshotScheduler(concurrency);
84
+ }
85
+ return schedulerInstance;
86
+ }
87
+ //# sourceMappingURL=screenshot-scheduler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"screenshot-scheduler.js","sourceRoot":"","sources":["../../src/cdp/screenshot-scheduler.ts"],"names":[],"mappings":"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"}
@@ -18,6 +18,10 @@ export interface WorkflowDefinition {
18
18
  parallel: boolean;
19
19
  maxRetries: number;
20
20
  timeout: number;
21
+ /** Maximum consecutive stale updates before circuit breaker triggers (default: 5) */
22
+ maxStaleIterations?: number;
23
+ /** Maximum total workflow execution time in ms (default: 300000) */
24
+ globalTimeoutMs?: number;
21
25
  }
22
26
  export interface WorkerResult {
23
27
  workerId: string;
@@ -45,6 +49,19 @@ export declare class WorkflowEngine {
45
49
  * This is the source of truth for completion tracking — avoids file-based race conditions.
46
50
  */
47
51
  private workflowStates;
52
+ /**
53
+ * Per-worker runtime state for timeout and circuit breaker tracking.
54
+ * Keyed by workerName.
55
+ */
56
+ private workerRuntimeStates;
57
+ /**
58
+ * Timeout handles for worker absolute timeouts. Keyed by workerName.
59
+ */
60
+ private workerTimeoutHandles;
61
+ /**
62
+ * Global workflow timeout handle. Keyed by orchestrationId.
63
+ */
64
+ private globalTimeoutHandles;
48
65
  /**
49
66
  * Promise-based mutex for serializing completeWorker operations.
50
67
  * Prevents lost-update races when multiple workers complete simultaneously.
@@ -68,7 +85,7 @@ export declare class WorkflowEngine {
68
85
  }>;
69
86
  }>;
70
87
  /**
71
- * Update worker progress
88
+ * Update worker progress with circuit breaker check
72
89
  */
73
90
  updateWorkerProgress(workerName: string, update: {
74
91
  status?: WorkerState['status'];
@@ -78,6 +95,18 @@ export declare class WorkflowEngine {
78
95
  extractedData?: unknown;
79
96
  error?: string;
80
97
  }): Promise<void>;
98
+ /**
99
+ * Hash extracted data for circuit breaker comparison
100
+ */
101
+ private hashData;
102
+ /**
103
+ * Force-complete a single worker due to timeout or circuit breaker
104
+ */
105
+ private forceCompleteWorker;
106
+ /**
107
+ * Force-complete all running workers in a workflow (global timeout)
108
+ */
109
+ private forceCompleteAllRunningWorkers;
81
110
  /**
82
111
  * Mark worker as complete.
83
112
  *
@@ -1 +1 @@
1
- {"version":3,"file":"workflow-engine.d.ts","sourceRoot":"","sources":["../../src/orchestration/workflow-engine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"workflow-engine.d.ts","sourceRoot":"","sources":["../../src/orchestration/workflow-engine.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAgC,kBAAkB,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAGhG,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,qFAAqF;IACrF,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,oEAAoE;IACpE,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,MAAM,CAAC;IACvC,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,OAAO,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,WAAW,GAAG,SAAS,GAAG,QAAQ,CAAC;IAC3C,aAAa,EAAE,YAAY,EAAE,CAAC;IAC9B,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAoCD,qBAAa,cAAc;IACzB,OAAO,CAAC,cAAc,CAAuB;IAC7C,OAAO,CAAC,YAAY,CAAkC;IAEtD;;;OAGG;IACH,OAAO,CAAC,cAAc,CAAiD;IAEvE;;;OAGG;IACH,OAAO,CAAC,mBAAmB,CAA8C;IAEzE;;OAEG;IACH,OAAO,CAAC,oBAAoB,CAA0C;IAEtE;;OAEG;IACH,OAAO,CAAC,oBAAoB,CAA0C;IAEtE;;;OAGG;IACH,OAAO,CAAC,cAAc,CAAoC;IAE1D;;;OAGG;YACW,WAAW;IAWzB;;;OAGG;IACG,YAAY,CAChB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,kBAAkB,GAC3B,OAAO,CAAC;QACT,eAAe,EAAE,MAAM,CAAC;QACxB,OAAO,EAAE,KAAK,CAAC;YAAE,QAAQ,EAAE,MAAM,CAAC;YAAC,UAAU,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KACzE,CAAC;IAuHF;;OAEG;IACG,oBAAoB,CACxB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE;QACN,MAAM,CAAC,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC;QAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,SAAS,GAAG,MAAM,GAAG,aAAa,CAAC;QAC5C,aAAa,CAAC,EAAE,OAAO,CAAC;QACxB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,GACA,OAAO,CAAC,IAAI,CAAC;IAoDhB;;OAEG;IACH,OAAO,CAAC,QAAQ;IAKhB;;OAEG;YACW,mBAAmB;IA2BjC;;OAEG;YACW,8BAA8B;IA4B5C;;;;;;OAMG;IACG,cAAc,CAClB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,MAAM,EACtC,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,OAAO,GACrB,OAAO,CAAC,IAAI,CAAC;IA0FhB;;;OAGG;YACW,8BAA8B;IA2B5C;;;OAGG;YACW,2BAA2B;IA0DzC;;;OAGG;IACG,sBAAsB,IAAI,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC;IAiClE;;OAEG;IACG,kBAAkB,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;IAIlD;;OAEG;IACG,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAIrE;;;OAGG;IACG,cAAc,IAAI,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IAsCtD;;OAEG;IACG,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAwCvD;;OAEG;IACH,oBAAoB,CAClB,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,eAAe,EAAE,MAAM,GACtB,MAAM;CA6GV;AAKD,wBAAgB,iBAAiB,IAAI,cAAc,CAKlD"}