claude-chrome-parallel 3.0.3 → 3.4.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/LICENSE +21 -21
- package/README.md +398 -464
- package/assets/demo.svg +278 -173
- package/dist/cdp/client.d.ts +60 -2
- package/dist/cdp/client.d.ts.map +1 -1
- package/dist/cdp/client.js +344 -5
- package/dist/cdp/client.js.map +1 -1
- package/dist/cdp/connection-pool.d.ts.map +1 -1
- package/dist/cdp/connection-pool.js +20 -4
- package/dist/cdp/connection-pool.js.map +1 -1
- package/dist/chrome/launcher.d.ts +11 -0
- package/dist/chrome/launcher.d.ts.map +1 -1
- package/dist/chrome/launcher.js +124 -10
- package/dist/chrome/launcher.js.map +1 -1
- package/dist/chrome/pool.d.ts +54 -0
- package/dist/chrome/pool.d.ts.map +1 -0
- package/dist/chrome/pool.js +301 -0
- package/dist/chrome/pool.js.map +1 -0
- package/dist/chrome/profile-detector.d.ts +52 -0
- package/dist/chrome/profile-detector.d.ts.map +1 -0
- package/dist/chrome/profile-detector.js +246 -0
- package/dist/chrome/profile-detector.js.map +1 -0
- package/dist/cli/claude-session.js +15 -15
- package/dist/cli/index.js +162 -37
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/update-check.d.ts +9 -0
- package/dist/cli/update-check.js +141 -0
- package/dist/cli/update-check.js.map +1 -0
- package/dist/config/global.d.ts +31 -0
- package/dist/config/global.d.ts.map +1 -1
- package/dist/config/global.js.map +1 -1
- package/dist/dashboard/activity-tracker.d.ts +60 -0
- package/dist/dashboard/activity-tracker.d.ts.map +1 -0
- package/dist/dashboard/activity-tracker.js +178 -0
- package/dist/dashboard/activity-tracker.js.map +1 -0
- package/dist/dashboard/ansi.d.ts +117 -0
- package/dist/dashboard/ansi.d.ts.map +1 -0
- package/dist/dashboard/ansi.js +199 -0
- package/dist/dashboard/ansi.js.map +1 -0
- package/dist/dashboard/index.d.ts +110 -0
- package/dist/dashboard/index.d.ts.map +1 -0
- package/dist/dashboard/index.js +412 -0
- package/dist/dashboard/index.js.map +1 -0
- package/dist/dashboard/keyboard-handler.d.ts +43 -0
- package/dist/dashboard/keyboard-handler.d.ts.map +1 -0
- package/dist/dashboard/keyboard-handler.js +215 -0
- package/dist/dashboard/keyboard-handler.js.map +1 -0
- package/dist/dashboard/operation-controller.d.ts +76 -0
- package/dist/dashboard/operation-controller.d.ts.map +1 -0
- package/dist/dashboard/operation-controller.js +167 -0
- package/dist/dashboard/operation-controller.js.map +1 -0
- package/dist/dashboard/renderer.d.ts +76 -0
- package/dist/dashboard/renderer.d.ts.map +1 -0
- package/dist/dashboard/renderer.js +193 -0
- package/dist/dashboard/renderer.js.map +1 -0
- package/dist/dashboard/types.d.ts +56 -0
- package/dist/dashboard/types.d.ts.map +1 -0
- package/dist/dashboard/types.js +12 -0
- package/dist/dashboard/types.js.map +1 -0
- package/dist/dashboard/views/main-view.d.ts +23 -0
- package/dist/dashboard/views/main-view.d.ts.map +1 -0
- package/dist/dashboard/views/main-view.js +143 -0
- package/dist/dashboard/views/main-view.js.map +1 -0
- package/dist/dashboard/views/sessions-view.d.ts +22 -0
- package/dist/dashboard/views/sessions-view.d.ts.map +1 -0
- package/dist/dashboard/views/sessions-view.js +104 -0
- package/dist/dashboard/views/sessions-view.js.map +1 -0
- package/dist/dashboard/views/tabs-view.d.ts +21 -0
- package/dist/dashboard/views/tabs-view.d.ts.map +1 -0
- package/dist/dashboard/views/tabs-view.js +92 -0
- package/dist/dashboard/views/tabs-view.js.map +1 -0
- package/dist/hints/hint-engine.d.ts +65 -0
- package/dist/hints/hint-engine.d.ts.map +1 -0
- package/dist/hints/hint-engine.js +156 -0
- package/dist/hints/hint-engine.js.map +1 -0
- package/dist/hints/index.d.ts +8 -0
- package/dist/hints/index.d.ts.map +1 -0
- package/dist/hints/index.js +11 -0
- package/dist/hints/index.js.map +1 -0
- package/dist/hints/pattern-learner.d.ts +76 -0
- package/dist/hints/pattern-learner.d.ts.map +1 -0
- package/dist/hints/pattern-learner.js +254 -0
- package/dist/hints/pattern-learner.js.map +1 -0
- package/dist/hints/rules/composite-suggestions.d.ts +6 -0
- package/dist/hints/rules/composite-suggestions.d.ts.map +1 -0
- package/dist/hints/rules/composite-suggestions.js +66 -0
- package/dist/hints/rules/composite-suggestions.js.map +1 -0
- package/dist/hints/rules/error-recovery.d.ts +7 -0
- package/dist/hints/rules/error-recovery.d.ts.map +1 -0
- package/dist/hints/rules/error-recovery.js +47 -0
- package/dist/hints/rules/error-recovery.js.map +1 -0
- package/dist/hints/rules/learned-rules.d.ts +13 -0
- package/dist/hints/rules/learned-rules.d.ts.map +1 -0
- package/dist/hints/rules/learned-rules.js +27 -0
- package/dist/hints/rules/learned-rules.js.map +1 -0
- package/dist/hints/rules/repetition-detection.d.ts +7 -0
- package/dist/hints/rules/repetition-detection.d.ts.map +1 -0
- package/dist/hints/rules/repetition-detection.js +82 -0
- package/dist/hints/rules/repetition-detection.js.map +1 -0
- package/dist/hints/rules/sequence-detection.d.ts +6 -0
- package/dist/hints/rules/sequence-detection.d.ts.map +1 -0
- package/dist/hints/rules/sequence-detection.js +61 -0
- package/dist/hints/rules/sequence-detection.js.map +1 -0
- package/dist/hints/rules/success-hints.d.ts +6 -0
- package/dist/hints/rules/success-hints.d.ts.map +1 -0
- package/dist/hints/rules/success-hints.js +62 -0
- package/dist/hints/rules/success-hints.js.map +1 -0
- package/dist/index.js +190 -55
- package/dist/index.js.map +1 -1
- package/dist/lightpanda/launcher.d.ts +58 -0
- package/dist/lightpanda/launcher.d.ts.map +1 -0
- package/dist/lightpanda/launcher.js +199 -0
- package/dist/lightpanda/launcher.js.map +1 -0
- package/dist/mcp-server.d.ts +38 -1
- package/dist/mcp-server.d.ts.map +1 -1
- package/dist/mcp-server.js +220 -6
- package/dist/mcp-server.js.map +1 -1
- package/dist/orchestration/state-manager.js +46 -46
- package/dist/orchestration/workflow-engine.d.ts +1 -0
- package/dist/orchestration/workflow-engine.d.ts.map +1 -1
- package/dist/orchestration/workflow-engine.js +112 -114
- package/dist/orchestration/workflow-engine.js.map +1 -1
- package/dist/resources/usage-guide.d.ts +13 -0
- package/dist/resources/usage-guide.d.ts.map +1 -0
- package/dist/resources/usage-guide.js +101 -0
- package/dist/resources/usage-guide.js.map +1 -0
- package/dist/router/browser-router.d.ts +51 -0
- package/dist/router/browser-router.d.ts.map +1 -0
- package/dist/router/browser-router.js +178 -0
- package/dist/router/browser-router.js.map +1 -0
- package/dist/router/cookie-sync.d.ts +48 -0
- package/dist/router/cookie-sync.d.ts.map +1 -0
- package/dist/router/cookie-sync.js +106 -0
- package/dist/router/cookie-sync.js.map +1 -0
- package/dist/router/index.d.ts +5 -0
- package/dist/router/index.d.ts.map +1 -0
- package/dist/router/index.js +10 -0
- package/dist/router/index.js.map +1 -0
- package/dist/router/tool-routing-registry.d.ts +21 -0
- package/dist/router/tool-routing-registry.d.ts.map +1 -0
- package/dist/router/tool-routing-registry.js +90 -0
- package/dist/router/tool-routing-registry.js.map +1 -0
- package/dist/session-manager.d.ts +41 -1
- package/dist/session-manager.d.ts.map +1 -1
- package/dist/session-manager.js +216 -21
- package/dist/session-manager.js.map +1 -1
- package/dist/tools/click-element.d.ts +8 -0
- package/dist/tools/click-element.d.ts.map +1 -0
- package/dist/tools/click-element.js +383 -0
- package/dist/tools/click-element.js.map +1 -0
- package/dist/tools/computer.d.ts.map +1 -1
- package/dist/tools/computer.js +198 -34
- package/dist/tools/computer.js.map +1 -1
- package/dist/tools/console-capture.d.ts +6 -0
- package/dist/tools/console-capture.d.ts.map +1 -0
- package/dist/tools/console-capture.js +320 -0
- package/dist/tools/console-capture.js.map +1 -0
- package/dist/tools/cookies.d.ts +6 -0
- package/dist/tools/cookies.d.ts.map +1 -0
- package/dist/tools/cookies.js +263 -0
- package/dist/tools/cookies.js.map +1 -0
- package/dist/tools/drag-drop.d.ts +6 -0
- package/dist/tools/drag-drop.d.ts.map +1 -0
- package/dist/tools/drag-drop.js +252 -0
- package/dist/tools/drag-drop.js.map +1 -0
- package/dist/tools/emulate-device.d.ts +6 -0
- package/dist/tools/emulate-device.d.ts.map +1 -0
- package/dist/tools/emulate-device.js +221 -0
- package/dist/tools/emulate-device.js.map +1 -0
- package/dist/tools/file-upload.d.ts +6 -0
- package/dist/tools/file-upload.d.ts.map +1 -0
- package/dist/tools/file-upload.js +208 -0
- package/dist/tools/file-upload.js.map +1 -0
- package/dist/tools/fill-form.d.ts +8 -0
- package/dist/tools/fill-form.d.ts.map +1 -0
- package/dist/tools/fill-form.js +342 -0
- package/dist/tools/fill-form.js.map +1 -0
- package/dist/tools/find.d.ts.map +1 -1
- package/dist/tools/find.js +153 -65
- package/dist/tools/find.js.map +1 -1
- package/dist/tools/form-input.js +52 -52
- package/dist/tools/form-input.js.map +1 -1
- package/dist/tools/geolocation.d.ts +6 -0
- package/dist/tools/geolocation.d.ts.map +1 -0
- package/dist/tools/geolocation.js +172 -0
- package/dist/tools/geolocation.js.map +1 -0
- package/dist/tools/http-auth.d.ts +6 -0
- package/dist/tools/http-auth.d.ts.map +1 -0
- package/dist/tools/http-auth.js +136 -0
- package/dist/tools/http-auth.js.map +1 -0
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +50 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/javascript.js +1 -1
- package/dist/tools/javascript.js.map +1 -1
- package/dist/tools/navigate.d.ts.map +1 -1
- package/dist/tools/navigate.js +5 -2
- package/dist/tools/navigate.js.map +1 -1
- package/dist/tools/network.js +4 -4
- package/dist/tools/network.js.map +1 -1
- package/dist/tools/orchestration.d.ts.map +1 -1
- package/dist/tools/orchestration.js +13 -8
- package/dist/tools/orchestration.js.map +1 -1
- package/dist/tools/page-content.d.ts +6 -0
- package/dist/tools/page-content.d.ts.map +1 -0
- package/dist/tools/page-content.js +120 -0
- package/dist/tools/page-content.js.map +1 -0
- package/dist/tools/page-pdf.d.ts +6 -0
- package/dist/tools/page-pdf.d.ts.map +1 -0
- package/dist/tools/page-pdf.js +245 -0
- package/dist/tools/page-pdf.js.map +1 -0
- package/dist/tools/page-reload.d.ts +6 -0
- package/dist/tools/page-reload.d.ts.map +1 -0
- package/dist/tools/page-reload.js +89 -0
- package/dist/tools/page-reload.js.map +1 -0
- package/dist/tools/performance-metrics.d.ts +6 -0
- package/dist/tools/performance-metrics.d.ts.map +1 -0
- package/dist/tools/performance-metrics.js +158 -0
- package/dist/tools/performance-metrics.js.map +1 -0
- package/dist/tools/read-page.d.ts.map +1 -1
- package/dist/tools/read-page.js +4 -2
- package/dist/tools/read-page.js.map +1 -1
- package/dist/tools/request-intercept.d.ts +6 -0
- package/dist/tools/request-intercept.d.ts.map +1 -0
- package/dist/tools/request-intercept.js +439 -0
- package/dist/tools/request-intercept.js.map +1 -0
- package/dist/tools/selector-query.d.ts +6 -0
- package/dist/tools/selector-query.d.ts.map +1 -0
- package/dist/tools/selector-query.js +206 -0
- package/dist/tools/selector-query.js.map +1 -0
- package/dist/tools/storage.d.ts +6 -0
- package/dist/tools/storage.d.ts.map +1 -0
- package/dist/tools/storage.js +264 -0
- package/dist/tools/storage.js.map +1 -0
- package/dist/tools/tabs-close.d.ts +6 -0
- package/dist/tools/tabs-close.d.ts.map +1 -0
- package/dist/tools/tabs-close.js +124 -0
- package/dist/tools/tabs-close.js.map +1 -0
- package/dist/tools/tabs-context.js +1 -1
- package/dist/tools/tabs-context.js.map +1 -1
- package/dist/tools/user-agent.d.ts +6 -0
- package/dist/tools/user-agent.d.ts.map +1 -0
- package/dist/tools/user-agent.js +128 -0
- package/dist/tools/user-agent.js.map +1 -0
- package/dist/tools/wait-and-click.d.ts +8 -0
- package/dist/tools/wait-and-click.d.ts.map +1 -0
- package/dist/tools/wait-and-click.js +290 -0
- package/dist/tools/wait-and-click.js.map +1 -0
- package/dist/tools/wait-for.d.ts +6 -0
- package/dist/tools/wait-for.d.ts.map +1 -0
- package/dist/tools/wait-for.js +248 -0
- package/dist/tools/wait-for.js.map +1 -0
- package/dist/tools/xpath-query.d.ts +6 -0
- package/dist/tools/xpath-query.d.ts.map +1 -0
- package/dist/tools/xpath-query.js +230 -0
- package/dist/tools/xpath-query.js.map +1 -0
- package/dist/types/browser-backend.d.ts +30 -0
- package/dist/types/browser-backend.d.ts.map +1 -0
- package/dist/types/browser-backend.js +9 -0
- package/dist/types/browser-backend.js.map +1 -0
- package/dist/types/profile.d.ts +76 -0
- package/dist/types/profile.d.ts.map +1 -0
- package/dist/types/profile.js +35 -0
- package/dist/types/profile.js.map +1 -0
- package/dist/types/session.d.ts +7 -3
- package/dist/types/session.d.ts.map +1 -1
- package/package.json +78 -75
- package/dist/master/index.d.ts +0 -18
- package/dist/master/index.d.ts.map +0 -1
- package/dist/master/index.js +0 -75
- package/dist/master/index.js.map +0 -1
- package/dist/master/ipc-server.d.ts +0 -21
- package/dist/master/ipc-server.d.ts.map +0 -1
- package/dist/master/ipc-server.js +0 -175
- package/dist/master/ipc-server.js.map +0 -1
- package/dist/master/request-handler.d.ts +0 -17
- package/dist/master/request-handler.d.ts.map +0 -1
- package/dist/master/request-handler.js +0 -134
- package/dist/master/request-handler.js.map +0 -1
- package/dist/master/session-registry.d.ts +0 -120
- package/dist/master/session-registry.d.ts.map +0 -1
- package/dist/master/session-registry.js +0 -247
- package/dist/master/session-registry.js.map +0 -1
- package/dist/shared/ipc-constants.d.ts +0 -16
- package/dist/shared/ipc-constants.d.ts.map +0 -1
- package/dist/shared/ipc-constants.js +0 -66
- package/dist/shared/ipc-constants.js.map +0 -1
- package/dist/shared/ipc-protocol.d.ts +0 -33
- package/dist/shared/ipc-protocol.d.ts.map +0 -1
- package/dist/shared/ipc-protocol.js +0 -20
- package/dist/shared/ipc-protocol.js.map +0 -1
- package/dist/worker/auto-master.d.ts +0 -24
- package/dist/worker/auto-master.d.ts.map +0 -1
- package/dist/worker/auto-master.js +0 -135
- package/dist/worker/auto-master.js.map +0 -1
- package/dist/worker/index.d.ts +0 -25
- package/dist/worker/index.d.ts.map +0 -1
- package/dist/worker/index.js +0 -93
- package/dist/worker/index.js.map +0 -1
- package/dist/worker/ipc-client.d.ts +0 -26
- package/dist/worker/ipc-client.d.ts.map +0 -1
- package/dist/worker/ipc-client.js +0 -211
- package/dist/worker/ipc-client.js.map +0 -1
- package/dist/worker/remote-session-manager.d.ts +0 -114
- package/dist/worker/remote-session-manager.d.ts.map +0 -1
- package/dist/worker/remote-session-manager.js +0 -151
- package/dist/worker/remote-session-manager.js.map +0 -1
- package/dist/worker/tools.d.ts +0 -7
- package/dist/worker/tools.d.ts.map +0 -1
- package/dist/worker/tools.js +0 -340
- package/dist/worker/tools.js.map +0 -1
- package/dist/worker/worker-mcp-server.d.ts +0 -70
- package/dist/worker/worker-mcp-server.d.ts.map +0 -1
- package/dist/worker/worker-mcp-server.js +0 -295
- package/dist/worker/worker-mcp-server.js.map +0 -1
|
@@ -266,36 +266,36 @@ class OrchestrationStateManager {
|
|
|
266
266
|
const lastUpdated = new Date(state.lastUpdatedAt).toISOString();
|
|
267
267
|
const extractedJson = JSON.stringify(state.extractedData, null, 2);
|
|
268
268
|
const stateJson = JSON.stringify(state, null, 2);
|
|
269
|
-
return `## Worker: ${state.workerName}
|
|
270
|
-
### Last Updated: ${lastUpdated}
|
|
271
|
-
|
|
272
|
-
### Meta
|
|
273
|
-
- Worker ID: ${state.workerId}
|
|
274
|
-
- Tab ID: ${state.tabId}
|
|
275
|
-
- Status: ${state.status}
|
|
276
|
-
- Iteration: ${state.iteration}/${state.maxIterations}
|
|
277
|
-
|
|
278
|
-
### Task
|
|
279
|
-
${state.task}
|
|
280
|
-
|
|
281
|
-
### Progress Log
|
|
282
|
-
| Iter | Time | Action | Result | Error |
|
|
283
|
-
|------|------|--------|--------|-------|
|
|
284
|
-
${progressTable}
|
|
285
|
-
|
|
286
|
-
### Extracted Data
|
|
287
|
-
\`\`\`json
|
|
288
|
-
${extractedJson}
|
|
289
|
-
\`\`\`
|
|
290
|
-
|
|
291
|
-
### Errors
|
|
292
|
-
${errorList}
|
|
293
|
-
|
|
294
|
-
---
|
|
295
|
-
<!-- Raw State (for parsing) -->
|
|
296
|
-
\`\`\`json
|
|
297
|
-
${stateJson}
|
|
298
|
-
\`\`\`
|
|
269
|
+
return `## Worker: ${state.workerName}
|
|
270
|
+
### Last Updated: ${lastUpdated}
|
|
271
|
+
|
|
272
|
+
### Meta
|
|
273
|
+
- Worker ID: ${state.workerId}
|
|
274
|
+
- Tab ID: ${state.tabId}
|
|
275
|
+
- Status: ${state.status}
|
|
276
|
+
- Iteration: ${state.iteration}/${state.maxIterations}
|
|
277
|
+
|
|
278
|
+
### Task
|
|
279
|
+
${state.task}
|
|
280
|
+
|
|
281
|
+
### Progress Log
|
|
282
|
+
| Iter | Time | Action | Result | Error |
|
|
283
|
+
|------|------|--------|--------|-------|
|
|
284
|
+
${progressTable}
|
|
285
|
+
|
|
286
|
+
### Extracted Data
|
|
287
|
+
\`\`\`json
|
|
288
|
+
${extractedJson}
|
|
289
|
+
\`\`\`
|
|
290
|
+
|
|
291
|
+
### Errors
|
|
292
|
+
${errorList}
|
|
293
|
+
|
|
294
|
+
---
|
|
295
|
+
<!-- Raw State (for parsing) -->
|
|
296
|
+
\`\`\`json
|
|
297
|
+
${stateJson}
|
|
298
|
+
\`\`\`
|
|
299
299
|
`;
|
|
300
300
|
}
|
|
301
301
|
/**
|
|
@@ -364,22 +364,22 @@ ${stateJson}
|
|
|
364
364
|
const workerList = workerLines.join('\n');
|
|
365
365
|
const lastUpdated = new Date(state.updatedAt).toISOString();
|
|
366
366
|
const stateJson = JSON.stringify(state, null, 2);
|
|
367
|
-
return `## Chrome-Sisyphus Orchestration
|
|
368
|
-
### Last Updated: ${lastUpdated}
|
|
369
|
-
|
|
370
|
-
### Status: ${state.status}
|
|
371
|
-
|
|
372
|
-
### Task
|
|
373
|
-
${state.task}
|
|
374
|
-
|
|
375
|
-
### Workers (${state.completedWorkers}/${state.workers.length} complete, ${state.failedWorkers} failed)
|
|
376
|
-
${workerList}
|
|
377
|
-
|
|
378
|
-
---
|
|
379
|
-
<!-- Raw State (for parsing) -->
|
|
380
|
-
\`\`\`json
|
|
381
|
-
${stateJson}
|
|
382
|
-
\`\`\`
|
|
367
|
+
return `## Chrome-Sisyphus Orchestration
|
|
368
|
+
### Last Updated: ${lastUpdated}
|
|
369
|
+
|
|
370
|
+
### Status: ${state.status}
|
|
371
|
+
|
|
372
|
+
### Task
|
|
373
|
+
${state.task}
|
|
374
|
+
|
|
375
|
+
### Workers (${state.completedWorkers}/${state.workers.length} complete, ${state.failedWorkers} failed)
|
|
376
|
+
${workerList}
|
|
377
|
+
|
|
378
|
+
---
|
|
379
|
+
<!-- Raw State (for parsing) -->
|
|
380
|
+
\`\`\`json
|
|
381
|
+
${stateJson}
|
|
382
|
+
\`\`\`
|
|
383
383
|
`;
|
|
384
384
|
}
|
|
385
385
|
/**
|
|
@@ -1 +1 @@
|
|
|
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;AAEhG,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;
|
|
1
|
+
{"version":3,"file":"workflow-engine.d.ts","sourceRoot":"","sources":["../../src/orchestration/workflow-engine.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,23 +17,21 @@ class WorkflowEngine {
|
|
|
17
17
|
*/
|
|
18
18
|
async initWorkflow(sessionId, workflow) {
|
|
19
19
|
const orchestrationId = `orch-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`;
|
|
20
|
-
const workers =
|
|
21
|
-
// Create workers and tabs for each step
|
|
22
|
-
for (const step of workflow.steps) {
|
|
23
|
-
// Create isolated worker
|
|
20
|
+
const workers = await Promise.all(workflow.steps.map(async (step) => {
|
|
24
21
|
const worker = await this.sessionManager.createWorker(sessionId, {
|
|
25
22
|
id: step.workerId,
|
|
26
23
|
name: step.workerName,
|
|
24
|
+
shareCookies: step.shareCookies,
|
|
25
|
+
targetUrl: step.url,
|
|
27
26
|
});
|
|
28
|
-
// Create tab in worker context
|
|
29
27
|
const { targetId } = await this.sessionManager.createTarget(sessionId, step.url, worker.id);
|
|
30
|
-
|
|
28
|
+
return {
|
|
31
29
|
workerId: worker.id,
|
|
32
30
|
workerName: step.workerName,
|
|
33
31
|
tabId: targetId,
|
|
34
32
|
task: step.task,
|
|
35
|
-
}
|
|
36
|
-
}
|
|
33
|
+
};
|
|
34
|
+
}));
|
|
37
35
|
// Initialize orchestration state
|
|
38
36
|
await this.stateManager.initOrchestration(orchestrationId, workflow.name, workers);
|
|
39
37
|
console.error(`[WorkflowEngine] Initialized workflow ${orchestrationId} with ${workers.length} workers`);
|
|
@@ -205,112 +203,112 @@ class WorkflowEngine {
|
|
|
205
203
|
* Generate worker agent prompt for Background Task
|
|
206
204
|
*/
|
|
207
205
|
generateWorkerPrompt(workerId, workerName, tabId, task, successCriteria) {
|
|
208
|
-
return `## Chrome-Sisyphus Worker Agent
|
|
209
|
-
|
|
210
|
-
You are an autonomous browser automation worker. Execute your assigned task completely before returning.
|
|
211
|
-
|
|
212
|
-
### Configuration
|
|
213
|
-
- Worker ID: ${workerId}
|
|
214
|
-
- Worker Name: ${workerName}
|
|
215
|
-
- Tab ID: ${tabId}
|
|
216
|
-
- Scratchpad: .agent/chrome-sisyphus/worker-${workerName}.md
|
|
217
|
-
|
|
218
|
-
### Your Task
|
|
219
|
-
${task}
|
|
220
|
-
|
|
221
|
-
### Success Criteria
|
|
222
|
-
${successCriteria}
|
|
223
|
-
|
|
224
|
-
---
|
|
225
|
-
|
|
226
|
-
## CRITICAL RULES
|
|
227
|
-
|
|
228
|
-
1. **ALWAYS include tabId="${tabId}" in EVERY MCP tool call**
|
|
229
|
-
2. **Update scratchpad after EVERY action using Write tool**
|
|
230
|
-
3. **Maximum 5 iterations**
|
|
231
|
-
4. **Return compressed result only - NO screenshots or full DOM**
|
|
232
|
-
|
|
233
|
-
---
|
|
234
|
-
|
|
235
|
-
## Available MCP Tools
|
|
236
|
-
|
|
237
|
-
### Navigation
|
|
238
|
-
mcp__chrome-parallel__navigate
|
|
239
|
-
- url: string (required)
|
|
240
|
-
- tabId: "${tabId}" (required)
|
|
241
|
-
|
|
242
|
-
### Interaction
|
|
243
|
-
mcp__chrome-parallel__computer
|
|
244
|
-
- action: "left_click" | "type" | "screenshot" | "scroll" | "key"
|
|
245
|
-
- tabId: "${tabId}" (required)
|
|
246
|
-
- coordinate: [x, y] (for clicks)
|
|
247
|
-
- text: string (for typing)
|
|
248
|
-
|
|
249
|
-
### Page Reading
|
|
250
|
-
mcp__chrome-parallel__read_page
|
|
251
|
-
- tabId: "${tabId}" (required)
|
|
252
|
-
- filter: "interactive" | "all"
|
|
253
|
-
|
|
254
|
-
### Element Finding
|
|
255
|
-
mcp__chrome-parallel__find
|
|
256
|
-
- query: string (natural language)
|
|
257
|
-
- tabId: "${tabId}" (required)
|
|
258
|
-
|
|
259
|
-
### Form Input
|
|
260
|
-
mcp__chrome-parallel__form_input
|
|
261
|
-
- ref: string (element reference from find/read_page)
|
|
262
|
-
- value: string | boolean | number
|
|
263
|
-
- tabId: "${tabId}" (required)
|
|
264
|
-
|
|
265
|
-
### JavaScript Execution
|
|
266
|
-
mcp__chrome-parallel__javascript_tool
|
|
267
|
-
- action: "javascript_exec"
|
|
268
|
-
- text: string (JS code)
|
|
269
|
-
- tabId: "${tabId}" (required)
|
|
270
|
-
|
|
271
|
-
---
|
|
272
|
-
|
|
273
|
-
## Execution Algorithm (Ralph Loop)
|
|
274
|
-
|
|
275
|
-
for iteration in 1..5:
|
|
276
|
-
1. Assess current state (read page or check scratchpad)
|
|
277
|
-
2. Decide next action
|
|
278
|
-
3. Execute MCP tool with tabId="${tabId}"
|
|
279
|
-
4. Update scratchpad with Write tool
|
|
280
|
-
5. Check if success criteria met -> if yes, return SUCCESS
|
|
281
|
-
|
|
282
|
-
---
|
|
283
|
-
|
|
284
|
-
## Final Output Format
|
|
285
|
-
|
|
286
|
-
When done, your LAST message MUST contain:
|
|
287
|
-
|
|
288
|
-
---RESULT---
|
|
289
|
-
{
|
|
290
|
-
"status": "SUCCESS" | "PARTIAL" | "FAIL",
|
|
291
|
-
"workerName": "${workerName}",
|
|
292
|
-
"resultSummary": "Brief summary (max 100 chars)",
|
|
293
|
-
"dataExtracted": {
|
|
294
|
-
// Your extracted data here
|
|
295
|
-
},
|
|
296
|
-
"scratchpadPath": ".agent/chrome-sisyphus/worker-${workerName}.md",
|
|
297
|
-
"iterations": 3,
|
|
298
|
-
"errors": [],
|
|
299
|
-
"EXIT_SIGNAL": true
|
|
300
|
-
}
|
|
301
|
-
---END---
|
|
302
|
-
|
|
303
|
-
---
|
|
304
|
-
|
|
305
|
-
## Error Handling
|
|
306
|
-
|
|
307
|
-
| Error | Strategy |
|
|
308
|
-
|-------|----------|
|
|
309
|
-
| Element not found | Try find with different query |
|
|
310
|
-
| Page timeout | Refresh and retry |
|
|
311
|
-
| Captcha | Report FAIL |
|
|
312
|
-
| Network error | Wait 2s, retry |
|
|
313
|
-
|
|
206
|
+
return `## Chrome-Sisyphus Worker Agent
|
|
207
|
+
|
|
208
|
+
You are an autonomous browser automation worker. Execute your assigned task completely before returning.
|
|
209
|
+
|
|
210
|
+
### Configuration
|
|
211
|
+
- Worker ID: ${workerId}
|
|
212
|
+
- Worker Name: ${workerName}
|
|
213
|
+
- Tab ID: ${tabId}
|
|
214
|
+
- Scratchpad: .agent/chrome-sisyphus/worker-${workerName}.md
|
|
215
|
+
|
|
216
|
+
### Your Task
|
|
217
|
+
${task}
|
|
218
|
+
|
|
219
|
+
### Success Criteria
|
|
220
|
+
${successCriteria}
|
|
221
|
+
|
|
222
|
+
---
|
|
223
|
+
|
|
224
|
+
## CRITICAL RULES
|
|
225
|
+
|
|
226
|
+
1. **ALWAYS include tabId="${tabId}" in EVERY MCP tool call**
|
|
227
|
+
2. **Update scratchpad after EVERY action using Write tool**
|
|
228
|
+
3. **Maximum 5 iterations**
|
|
229
|
+
4. **Return compressed result only - NO screenshots or full DOM**
|
|
230
|
+
|
|
231
|
+
---
|
|
232
|
+
|
|
233
|
+
## Available MCP Tools
|
|
234
|
+
|
|
235
|
+
### Navigation
|
|
236
|
+
mcp__chrome-parallel__navigate
|
|
237
|
+
- url: string (required)
|
|
238
|
+
- tabId: "${tabId}" (required)
|
|
239
|
+
|
|
240
|
+
### Interaction
|
|
241
|
+
mcp__chrome-parallel__computer
|
|
242
|
+
- action: "left_click" | "type" | "screenshot" | "scroll" | "key"
|
|
243
|
+
- tabId: "${tabId}" (required)
|
|
244
|
+
- coordinate: [x, y] (for clicks)
|
|
245
|
+
- text: string (for typing)
|
|
246
|
+
|
|
247
|
+
### Page Reading
|
|
248
|
+
mcp__chrome-parallel__read_page
|
|
249
|
+
- tabId: "${tabId}" (required)
|
|
250
|
+
- filter: "interactive" | "all"
|
|
251
|
+
|
|
252
|
+
### Element Finding
|
|
253
|
+
mcp__chrome-parallel__find
|
|
254
|
+
- query: string (natural language)
|
|
255
|
+
- tabId: "${tabId}" (required)
|
|
256
|
+
|
|
257
|
+
### Form Input
|
|
258
|
+
mcp__chrome-parallel__form_input
|
|
259
|
+
- ref: string (element reference from find/read_page)
|
|
260
|
+
- value: string | boolean | number
|
|
261
|
+
- tabId: "${tabId}" (required)
|
|
262
|
+
|
|
263
|
+
### JavaScript Execution
|
|
264
|
+
mcp__chrome-parallel__javascript_tool
|
|
265
|
+
- action: "javascript_exec"
|
|
266
|
+
- text: string (JS code)
|
|
267
|
+
- tabId: "${tabId}" (required)
|
|
268
|
+
|
|
269
|
+
---
|
|
270
|
+
|
|
271
|
+
## Execution Algorithm (Ralph Loop)
|
|
272
|
+
|
|
273
|
+
for iteration in 1..5:
|
|
274
|
+
1. Assess current state (read page or check scratchpad)
|
|
275
|
+
2. Decide next action
|
|
276
|
+
3. Execute MCP tool with tabId="${tabId}"
|
|
277
|
+
4. Update scratchpad with Write tool
|
|
278
|
+
5. Check if success criteria met -> if yes, return SUCCESS
|
|
279
|
+
|
|
280
|
+
---
|
|
281
|
+
|
|
282
|
+
## Final Output Format
|
|
283
|
+
|
|
284
|
+
When done, your LAST message MUST contain:
|
|
285
|
+
|
|
286
|
+
---RESULT---
|
|
287
|
+
{
|
|
288
|
+
"status": "SUCCESS" | "PARTIAL" | "FAIL",
|
|
289
|
+
"workerName": "${workerName}",
|
|
290
|
+
"resultSummary": "Brief summary (max 100 chars)",
|
|
291
|
+
"dataExtracted": {
|
|
292
|
+
// Your extracted data here
|
|
293
|
+
},
|
|
294
|
+
"scratchpadPath": ".agent/chrome-sisyphus/worker-${workerName}.md",
|
|
295
|
+
"iterations": 3,
|
|
296
|
+
"errors": [],
|
|
297
|
+
"EXIT_SIGNAL": true
|
|
298
|
+
}
|
|
299
|
+
---END---
|
|
300
|
+
|
|
301
|
+
---
|
|
302
|
+
|
|
303
|
+
## Error Handling
|
|
304
|
+
|
|
305
|
+
| Error | Strategy |
|
|
306
|
+
|-------|----------|
|
|
307
|
+
| Element not found | Try find with different query |
|
|
308
|
+
| Page timeout | Refresh and retry |
|
|
309
|
+
| Captcha | Report FAIL |
|
|
310
|
+
| Network error | Wait 2s, retry |
|
|
311
|
+
|
|
314
312
|
Now begin your task. Navigate to the target site and complete the assigned work.`;
|
|
315
313
|
}
|
|
316
314
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflow-engine.js","sourceRoot":"","sources":["../../src/orchestration/workflow-engine.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAiaH,8CAKC;AApaD,wDAAuD;AACvD,mDAAgG;
|
|
1
|
+
{"version":3,"file":"workflow-engine.js","sourceRoot":"","sources":["../../src/orchestration/workflow-engine.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Usage Guide Resource - Provides guidance on when to use browser automation
|
|
3
|
+
*/
|
|
4
|
+
export interface MCPResourceDefinition {
|
|
5
|
+
uri: string;
|
|
6
|
+
name: string;
|
|
7
|
+
description: string;
|
|
8
|
+
mimeType: string;
|
|
9
|
+
}
|
|
10
|
+
export declare const usageGuideResource: MCPResourceDefinition;
|
|
11
|
+
export declare const usageGuideContent = "\n# Browser Automation Usage Guide\n\n## When to Use Browser Tools\n\nUse chrome-parallel browser tools ONLY when:\n\n1. **User explicitly requests browser/UI interaction**\n - Keywords: \"browser\", \"site\", \"page\", \"screenshot\", \"click\", \"UI\"\n - Example: \"Take a screenshot of the login page\"\n\n2. **Visual verification is required**\n - Checking how a page looks\n - Verifying UI elements are displayed correctly\n - Taking screenshots for documentation\n\n3. **No programmatic alternative exists**\n - The website has no API\n - The action requires JavaScript execution\n - Authentication flows that can't be bypassed\n\n4. **Real user interaction simulation is needed**\n - Form filling with dynamic validation\n - Multi-step workflows with JS-heavy pages\n - Testing actual user experience\n\n## When to PREFER Alternatives\n\n### Data Issues \u2192 Use Database Directly\n- Problem: \"User's data is wrong in the system\"\n- BAD: Navigate to admin panel \u2192 Find user \u2192 Edit form \u2192 Submit\n- GOOD: Direct SQL/DB query to fix the data\n\n### API Issues \u2192 Use curl/fetch/API client\n- Problem: \"API returns wrong response\"\n- BAD: Open browser \u2192 Navigate to endpoint \u2192 Check response\n- GOOD: `curl -X GET https://api.example.com/endpoint`\n\n### Code Bugs \u2192 Analyze and Fix Code\n- Problem: \"Button click doesn't work\"\n- BAD: Open browser \u2192 Try clicking \u2192 Debug visually\n- GOOD: Read the code \u2192 Find the bug \u2192 Fix it directly\n\n### Configuration Issues \u2192 Edit Config Files\n- Problem: \"Wrong setting in the application\"\n- BAD: Navigate to settings page \u2192 Change UI value\n- GOOD: Edit the configuration file directly\n\n## Decision Flowchart\n\n```\nUser Request\n \u2502\n \u25BC\nIs it about data? \u2500\u2500YES\u2500\u2500\u25BA Use DB query\n \u2502NO\n \u25BC\nIs it about API? \u2500\u2500YES\u2500\u2500\u25BA Use curl/API client\n \u2502NO\n \u25BC\nIs it about code? \u2500\u2500YES\u2500\u2500\u25BA Read/fix code directly\n \u2502NO\n \u25BC\nDid user explicitly \u2500\u2500NO\u2500\u2500\u25BA Ask for clarification\nmention browser/UI?\n \u2502YES\n \u25BC\nUse browser tools\n```\n\n## Cost Comparison\n\n| Approach | Time | Reliability | Context Usage |\n|----------|------|-------------|---------------|\n| DB Query | ~1s | High | Low |\n| API Call | ~2s | High | Low |\n| Code Fix | ~5s | High | Low |\n| Browser Automation | ~30s+ | Medium | High |\n\n## Summary\n\nBrowser automation is a powerful tool, but it should be your LAST resort.\nAlways consider simpler, faster, more reliable alternatives first.\n";
|
|
12
|
+
export declare function getUsageGuideContent(): string;
|
|
13
|
+
//# sourceMappingURL=usage-guide.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"usage-guide.d.ts","sourceRoot":"","sources":["../../src/resources/usage-guide.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,qBAAqB;IACpC,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,eAAO,MAAM,kBAAkB,EAAE,qBAKhC,CAAC;AAEF,eAAO,MAAM,iBAAiB,unFAmF7B,CAAC;AAEF,wBAAgB,oBAAoB,IAAI,MAAM,CAE7C"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Usage Guide Resource - Provides guidance on when to use browser automation
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.usageGuideContent = exports.usageGuideResource = void 0;
|
|
7
|
+
exports.getUsageGuideContent = getUsageGuideContent;
|
|
8
|
+
exports.usageGuideResource = {
|
|
9
|
+
uri: 'chrome-parallel://usage-guide',
|
|
10
|
+
name: 'browser-usage-guide',
|
|
11
|
+
description: 'Guidelines on when to use browser automation vs alternatives',
|
|
12
|
+
mimeType: 'text/plain',
|
|
13
|
+
};
|
|
14
|
+
exports.usageGuideContent = `
|
|
15
|
+
# Browser Automation Usage Guide
|
|
16
|
+
|
|
17
|
+
## When to Use Browser Tools
|
|
18
|
+
|
|
19
|
+
Use chrome-parallel browser tools ONLY when:
|
|
20
|
+
|
|
21
|
+
1. **User explicitly requests browser/UI interaction**
|
|
22
|
+
- Keywords: "browser", "site", "page", "screenshot", "click", "UI"
|
|
23
|
+
- Example: "Take a screenshot of the login page"
|
|
24
|
+
|
|
25
|
+
2. **Visual verification is required**
|
|
26
|
+
- Checking how a page looks
|
|
27
|
+
- Verifying UI elements are displayed correctly
|
|
28
|
+
- Taking screenshots for documentation
|
|
29
|
+
|
|
30
|
+
3. **No programmatic alternative exists**
|
|
31
|
+
- The website has no API
|
|
32
|
+
- The action requires JavaScript execution
|
|
33
|
+
- Authentication flows that can't be bypassed
|
|
34
|
+
|
|
35
|
+
4. **Real user interaction simulation is needed**
|
|
36
|
+
- Form filling with dynamic validation
|
|
37
|
+
- Multi-step workflows with JS-heavy pages
|
|
38
|
+
- Testing actual user experience
|
|
39
|
+
|
|
40
|
+
## When to PREFER Alternatives
|
|
41
|
+
|
|
42
|
+
### Data Issues → Use Database Directly
|
|
43
|
+
- Problem: "User's data is wrong in the system"
|
|
44
|
+
- BAD: Navigate to admin panel → Find user → Edit form → Submit
|
|
45
|
+
- GOOD: Direct SQL/DB query to fix the data
|
|
46
|
+
|
|
47
|
+
### API Issues → Use curl/fetch/API client
|
|
48
|
+
- Problem: "API returns wrong response"
|
|
49
|
+
- BAD: Open browser → Navigate to endpoint → Check response
|
|
50
|
+
- GOOD: \`curl -X GET https://api.example.com/endpoint\`
|
|
51
|
+
|
|
52
|
+
### Code Bugs → Analyze and Fix Code
|
|
53
|
+
- Problem: "Button click doesn't work"
|
|
54
|
+
- BAD: Open browser → Try clicking → Debug visually
|
|
55
|
+
- GOOD: Read the code → Find the bug → Fix it directly
|
|
56
|
+
|
|
57
|
+
### Configuration Issues → Edit Config Files
|
|
58
|
+
- Problem: "Wrong setting in the application"
|
|
59
|
+
- BAD: Navigate to settings page → Change UI value
|
|
60
|
+
- GOOD: Edit the configuration file directly
|
|
61
|
+
|
|
62
|
+
## Decision Flowchart
|
|
63
|
+
|
|
64
|
+
\`\`\`
|
|
65
|
+
User Request
|
|
66
|
+
│
|
|
67
|
+
▼
|
|
68
|
+
Is it about data? ──YES──► Use DB query
|
|
69
|
+
│NO
|
|
70
|
+
▼
|
|
71
|
+
Is it about API? ──YES──► Use curl/API client
|
|
72
|
+
│NO
|
|
73
|
+
▼
|
|
74
|
+
Is it about code? ──YES──► Read/fix code directly
|
|
75
|
+
│NO
|
|
76
|
+
▼
|
|
77
|
+
Did user explicitly ──NO──► Ask for clarification
|
|
78
|
+
mention browser/UI?
|
|
79
|
+
│YES
|
|
80
|
+
▼
|
|
81
|
+
Use browser tools
|
|
82
|
+
\`\`\`
|
|
83
|
+
|
|
84
|
+
## Cost Comparison
|
|
85
|
+
|
|
86
|
+
| Approach | Time | Reliability | Context Usage |
|
|
87
|
+
|----------|------|-------------|---------------|
|
|
88
|
+
| DB Query | ~1s | High | Low |
|
|
89
|
+
| API Call | ~2s | High | Low |
|
|
90
|
+
| Code Fix | ~5s | High | Low |
|
|
91
|
+
| Browser Automation | ~30s+ | Medium | High |
|
|
92
|
+
|
|
93
|
+
## Summary
|
|
94
|
+
|
|
95
|
+
Browser automation is a powerful tool, but it should be your LAST resort.
|
|
96
|
+
Always consider simpler, faster, more reliable alternatives first.
|
|
97
|
+
`;
|
|
98
|
+
function getUsageGuideContent() {
|
|
99
|
+
return exports.usageGuideContent.trim();
|
|
100
|
+
}
|
|
101
|
+
//# sourceMappingURL=usage-guide.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"usage-guide.js","sourceRoot":"","sources":["../../src/resources/usage-guide.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAqGH,oDAEC;AA9FY,QAAA,kBAAkB,GAA0B;IACvD,GAAG,EAAE,+BAA+B;IACpC,IAAI,EAAE,qBAAqB;IAC3B,WAAW,EAAE,8DAA8D;IAC3E,QAAQ,EAAE,YAAY;CACvB,CAAC;AAEW,QAAA,iBAAiB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmFhC,CAAC;AAEF,SAAgB,oBAAoB;IAClC,OAAO,yBAAiB,CAAC,IAAI,EAAE,CAAC;AAClC,CAAC"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import type { Page } from 'puppeteer-core';
|
|
2
|
+
import { BrowserBackend, HybridConfig, RouterStats, EscalationResult } from '../types/browser-backend';
|
|
3
|
+
export interface RouteResult {
|
|
4
|
+
backend: BrowserBackend;
|
|
5
|
+
page: Page;
|
|
6
|
+
fallback: boolean;
|
|
7
|
+
}
|
|
8
|
+
export declare class BrowserRouter {
|
|
9
|
+
private config;
|
|
10
|
+
private launcher;
|
|
11
|
+
private cookieSync;
|
|
12
|
+
private stats;
|
|
13
|
+
private consecutiveFailures;
|
|
14
|
+
private circuitOpen;
|
|
15
|
+
private circuitOpenedAt;
|
|
16
|
+
constructor(config: HybridConfig);
|
|
17
|
+
/**
|
|
18
|
+
* Route a tool request to the appropriate backend.
|
|
19
|
+
*
|
|
20
|
+
* Decision order:
|
|
21
|
+
* 1. Hybrid disabled → always Chrome
|
|
22
|
+
* 2. Visual tool → always Chrome
|
|
23
|
+
* 3. Circuit breaker open and cooldown not expired → Chrome (increment circuitBreakerTrips)
|
|
24
|
+
* 4. Circuit breaker open and cooldown expired → reset, try LP
|
|
25
|
+
* 5. LP page provided and page is healthy → LP
|
|
26
|
+
* 6. LP page missing or unhealthy → fallback to Chrome, record failure
|
|
27
|
+
*/
|
|
28
|
+
route(toolName: string, chromePage: Page, lightpandaPage?: Page | null): Promise<RouteResult>;
|
|
29
|
+
/**
|
|
30
|
+
* Escalate from Lightpanda to Chrome.
|
|
31
|
+
* - Gets current URL from LP page
|
|
32
|
+
* - Syncs cookies LP → Chrome
|
|
33
|
+
* - Navigates Chrome to same URL
|
|
34
|
+
*/
|
|
35
|
+
escalate(lightpandaPage: Page, chromePage: Page): Promise<EscalationResult>;
|
|
36
|
+
/** Get routing statistics */
|
|
37
|
+
getStats(): RouterStats;
|
|
38
|
+
/** Reset statistics */
|
|
39
|
+
resetStats(): void;
|
|
40
|
+
/** Check if circuit breaker is currently open */
|
|
41
|
+
isCircuitOpen(): boolean;
|
|
42
|
+
/** Initialize launcher and connect to Lightpanda */
|
|
43
|
+
initialize(): Promise<void>;
|
|
44
|
+
/** Cleanup resources */
|
|
45
|
+
cleanup(): Promise<void>;
|
|
46
|
+
private recordSuccess;
|
|
47
|
+
private recordFailure;
|
|
48
|
+
/** Returns true if the circuit breaker should cause LP to be skipped */
|
|
49
|
+
private checkCircuitBreaker;
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=browser-router.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"browser-router.d.ts","sourceRoot":"","sources":["../../src/router/browser-router.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EACL,cAAc,EACd,YAAY,EACZ,WAAW,EACX,gBAAgB,EACjB,MAAM,0BAA0B,CAAC;AAKlC,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,cAAc,CAAC;IACxB,IAAI,EAAE,IAAI,CAAC;IACX,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,QAAQ,CAAmC;IACnD,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,KAAK,CAAc;IAG3B,OAAO,CAAC,mBAAmB,CAAa;IACxC,OAAO,CAAC,WAAW,CAAkB;IACrC,OAAO,CAAC,eAAe,CAAa;gBAExB,MAAM,EAAE,YAAY;IAWhC;;;;;;;;;;OAUG;IACG,KAAK,CACT,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,IAAI,EAChB,cAAc,CAAC,EAAE,IAAI,GAAG,IAAI,GAC3B,OAAO,CAAC,WAAW,CAAC;IAsDvB;;;;;OAKG;IACG,QAAQ,CAAC,cAAc,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,GAAG,OAAO,CAAC,gBAAgB,CAAC;IA0BjF,6BAA6B;IAC7B,QAAQ,IAAI,WAAW;IAIvB,uBAAuB;IACvB,UAAU,IAAI,IAAI;IASlB,iDAAiD;IACjD,aAAa,IAAI,OAAO;IAIxB,oDAAoD;IAC9C,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAajC,wBAAwB;IAClB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAY9B,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,aAAa;IAYrB,wEAAwE;IACxE,OAAO,CAAC,mBAAmB;CAgB5B"}
|