claude-chrome-parallel 1.0.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 -0
- package/README.md +501 -0
- package/assets/demo.svg +278 -0
- package/dist/cdp/client.d.ts +218 -0
- package/dist/cdp/client.d.ts.map +1 -0
- package/dist/cdp/client.js +797 -0
- package/dist/cdp/client.js.map +1 -0
- package/dist/cdp/connection-pool.d.ts +125 -0
- package/dist/cdp/connection-pool.d.ts.map +1 -0
- package/dist/cdp/connection-pool.js +443 -0
- package/dist/cdp/connection-pool.js.map +1 -0
- package/dist/cdp/screenshot-scheduler.d.ts +54 -0
- package/dist/cdp/screenshot-scheduler.d.ts.map +1 -0
- package/dist/cdp/screenshot-scheduler.js +87 -0
- package/dist/cdp/screenshot-scheduler.js.map +1 -0
- package/dist/chrome/launcher.d.ts +55 -0
- package/dist/chrome/launcher.d.ts.map +1 -0
- package/dist/chrome/launcher.js +383 -0
- package/dist/chrome/launcher.js.map +1 -0
- 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.d.ts +11 -0
- package/dist/cli/claude-session.js +349 -0
- package/dist/cli/claude-session.js.map +1 -0
- package/dist/cli/index.d.ts +14 -0
- package/dist/cli/index.js +858 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/install.d.ts +16 -0
- package/dist/cli/install.js +185 -0
- package/dist/cli/install.js.map +1 -0
- package/dist/cli/uninstall.d.ts +7 -0
- package/dist/cli/uninstall.js +126 -0
- package/dist/cli/uninstall.js.map +1 -0
- 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/config-recovery.d.ts +69 -0
- package/dist/config/config-recovery.d.ts.map +1 -0
- package/dist/config/config-recovery.js +302 -0
- package/dist/config/config-recovery.js.map +1 -0
- package/dist/config/global.d.ts +49 -0
- package/dist/config/global.d.ts.map +1 -0
- package/dist/config/global.js +24 -0
- package/dist/config/global.js.map +1 -0
- package/dist/config/index.d.ts +7 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +23 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/session-isolator.d.ts +76 -0
- package/dist/config/session-isolator.d.ts.map +1 -0
- package/dist/config/session-isolator.js +268 -0
- package/dist/config/session-isolator.js.map +1 -0
- package/dist/dashboard/activity-tracker.d.ts +76 -0
- package/dist/dashboard/activity-tracker.d.ts.map +1 -0
- package/dist/dashboard/activity-tracker.js +219 -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 +77 -0
- package/dist/hints/hint-engine.d.ts.map +1 -0
- package/dist/hints/hint-engine.js +191 -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 +55 -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 +89 -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.d.ts +10 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +272 -0
- package/dist/index.js.map +1 -0
- 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 +129 -0
- package/dist/mcp-server.d.ts.map +1 -0
- package/dist/mcp-server.js +641 -0
- package/dist/mcp-server.js.map +1 -0
- package/dist/memory/domain-memory.d.ts +68 -0
- package/dist/memory/domain-memory.d.ts.map +1 -0
- package/dist/memory/domain-memory.js +227 -0
- package/dist/memory/domain-memory.js.map +1 -0
- package/dist/orchestration/plan-executor.d.ts +19 -0
- package/dist/orchestration/plan-executor.d.ts.map +1 -0
- package/dist/orchestration/plan-executor.js +284 -0
- package/dist/orchestration/plan-executor.js.map +1 -0
- package/dist/orchestration/plan-registry.d.ts +55 -0
- package/dist/orchestration/plan-registry.d.ts.map +1 -0
- package/dist/orchestration/plan-registry.js +255 -0
- package/dist/orchestration/plan-registry.js.map +1 -0
- package/dist/orchestration/state-manager.d.ts +127 -0
- package/dist/orchestration/state-manager.d.ts.map +1 -0
- package/dist/orchestration/state-manager.js +438 -0
- package/dist/orchestration/state-manager.js.map +1 -0
- package/dist/orchestration/workflow-engine.d.ts +162 -0
- package/dist/orchestration/workflow-engine.d.ts.map +1 -0
- package/dist/orchestration/workflow-engine.js +731 -0
- package/dist/orchestration/workflow-engine.js.map +1 -0
- 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 +251 -0
- package/dist/session-manager.d.ts.map +1 -0
- package/dist/session-manager.js +912 -0
- package/dist/session-manager.js.map +1 -0
- package/dist/tools/batch-execute.d.ts +11 -0
- package/dist/tools/batch-execute.d.ts.map +1 -0
- package/dist/tools/batch-execute.js +226 -0
- package/dist/tools/batch-execute.js.map +1 -0
- 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 +455 -0
- package/dist/tools/click-element.js.map +1 -0
- package/dist/tools/computer.d.ts +6 -0
- package/dist/tools/computer.d.ts.map +1 -0
- package/dist/tools/computer.js +638 -0
- package/dist/tools/computer.js.map +1 -0
- 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 +6 -0
- package/dist/tools/find.d.ts.map +1 -0
- package/dist/tools/find.js +330 -0
- package/dist/tools/find.js.map +1 -0
- package/dist/tools/form-input.d.ts +6 -0
- package/dist/tools/form-input.d.ts.map +1 -0
- package/dist/tools/form-input.js +181 -0
- package/dist/tools/form-input.js.map +1 -0
- 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 +6 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +104 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/javascript.d.ts +6 -0
- package/dist/tools/javascript.d.ts.map +1 -0
- package/dist/tools/javascript.js +138 -0
- package/dist/tools/javascript.js.map +1 -0
- package/dist/tools/lightweight-scroll.d.ts +11 -0
- package/dist/tools/lightweight-scroll.d.ts.map +1 -0
- package/dist/tools/lightweight-scroll.js +266 -0
- package/dist/tools/lightweight-scroll.js.map +1 -0
- package/dist/tools/memory.d.ts +10 -0
- package/dist/tools/memory.d.ts.map +1 -0
- package/dist/tools/memory.js +141 -0
- package/dist/tools/memory.js.map +1 -0
- package/dist/tools/navigate.d.ts +6 -0
- package/dist/tools/navigate.d.ts.map +1 -0
- package/dist/tools/navigate.js +241 -0
- package/dist/tools/navigate.js.map +1 -0
- package/dist/tools/network.d.ts +6 -0
- package/dist/tools/network.d.ts.map +1 -0
- package/dist/tools/network.js +215 -0
- package/dist/tools/network.js.map +1 -0
- package/dist/tools/orchestration.d.ts +6 -0
- package/dist/tools/orchestration.d.ts.map +1 -0
- package/dist/tools/orchestration.js +746 -0
- package/dist/tools/orchestration.js.map +1 -0
- 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 +6 -0
- package/dist/tools/read-page.d.ts.map +1 -0
- package/dist/tools/read-page.js +287 -0
- package/dist/tools/read-page.js.map +1 -0
- 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/shutdown.d.ts +12 -0
- package/dist/tools/shutdown.d.ts.map +1 -0
- package/dist/tools/shutdown.js +120 -0
- package/dist/tools/shutdown.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.d.ts +6 -0
- package/dist/tools/tabs-context.d.ts.map +1 -0
- package/dist/tools/tabs-context.js +92 -0
- package/dist/tools/tabs-context.js.map +1 -0
- package/dist/tools/tabs-create.d.ts +6 -0
- package/dist/tools/tabs-create.d.ts.map +1 -0
- package/dist/tools/tabs-create.js +73 -0
- package/dist/tools/tabs-create.js.map +1 -0
- 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/worker-create.d.ts +7 -0
- package/dist/tools/worker-create.d.ts.map +1 -0
- package/dist/tools/worker-create.js +62 -0
- package/dist/tools/worker-create.js.map +1 -0
- package/dist/tools/worker-delete.d.ts +6 -0
- package/dist/tools/worker-delete.d.ts.map +1 -0
- package/dist/tools/worker-delete.js +80 -0
- package/dist/tools/worker-delete.js.map +1 -0
- package/dist/tools/worker-list.d.ts +6 -0
- package/dist/tools/worker-list.d.ts.map +1 -0
- package/dist/tools/worker-list.js +67 -0
- package/dist/tools/worker-list.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/index.d.ts +3 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +19 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/mcp.d.ts +54 -0
- package/dist/types/mcp.d.ts.map +1 -0
- package/dist/types/mcp.js +14 -0
- package/dist/types/mcp.js.map +1 -0
- package/dist/types/plan-cache.d.ts +121 -0
- package/dist/types/plan-cache.d.ts.map +1 -0
- package/dist/types/plan-cache.js +9 -0
- package/dist/types/plan-cache.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 +65 -0
- package/dist/types/session.d.ts.map +1 -0
- package/dist/types/session.js +6 -0
- package/dist/types/session.js.map +1 -0
- package/dist/types/tool-manifest.d.ts +52 -0
- package/dist/types/tool-manifest.d.ts.map +1 -0
- package/dist/types/tool-manifest.js +37 -0
- package/dist/types/tool-manifest.js.map +1 -0
- package/dist/utils/atomic-file.d.ts +50 -0
- package/dist/utils/atomic-file.d.ts.map +1 -0
- package/dist/utils/atomic-file.js +217 -0
- package/dist/utils/atomic-file.js.map +1 -0
- package/dist/utils/index.d.ts +6 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +22 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/json-validator.d.ts +40 -0
- package/dist/utils/json-validator.d.ts.map +1 -0
- package/dist/utils/json-validator.js +295 -0
- package/dist/utils/json-validator.js.map +1 -0
- package/dist/utils/ref-id-manager.d.ts +26 -0
- package/dist/utils/ref-id-manager.d.ts.map +1 -0
- package/dist/utils/ref-id-manager.js +81 -0
- package/dist/utils/ref-id-manager.js.map +1 -0
- package/dist/utils/request-queue.d.ts +37 -0
- package/dist/utils/request-queue.d.ts.map +1 -0
- package/dist/utils/request-queue.js +110 -0
- package/dist/utils/request-queue.js.map +1 -0
- package/package.json +78 -0
|
@@ -0,0 +1 @@
|
|
|
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"}
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BrowserRouter = void 0;
|
|
4
|
+
const browser_backend_1 = require("../types/browser-backend");
|
|
5
|
+
const tool_routing_registry_1 = require("./tool-routing-registry");
|
|
6
|
+
const launcher_1 = require("../lightpanda/launcher");
|
|
7
|
+
const cookie_sync_1 = require("./cookie-sync");
|
|
8
|
+
class BrowserRouter {
|
|
9
|
+
config;
|
|
10
|
+
launcher = null;
|
|
11
|
+
cookieSync;
|
|
12
|
+
stats;
|
|
13
|
+
// Circuit breaker state
|
|
14
|
+
consecutiveFailures = 0;
|
|
15
|
+
circuitOpen = false;
|
|
16
|
+
circuitOpenedAt = 0;
|
|
17
|
+
constructor(config) {
|
|
18
|
+
this.config = config;
|
|
19
|
+
this.cookieSync = new cookie_sync_1.CookieSync({ intervalMs: config.cookieSync.intervalMs });
|
|
20
|
+
this.stats = {
|
|
21
|
+
chromeRequests: 0,
|
|
22
|
+
lightpandaRequests: 0,
|
|
23
|
+
fallbacks: 0,
|
|
24
|
+
circuitBreakerTrips: 0,
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Route a tool request to the appropriate backend.
|
|
29
|
+
*
|
|
30
|
+
* Decision order:
|
|
31
|
+
* 1. Hybrid disabled → always Chrome
|
|
32
|
+
* 2. Visual tool → always Chrome
|
|
33
|
+
* 3. Circuit breaker open and cooldown not expired → Chrome (increment circuitBreakerTrips)
|
|
34
|
+
* 4. Circuit breaker open and cooldown expired → reset, try LP
|
|
35
|
+
* 5. LP page provided and page is healthy → LP
|
|
36
|
+
* 6. LP page missing or unhealthy → fallback to Chrome, record failure
|
|
37
|
+
*/
|
|
38
|
+
async route(toolName, chromePage, lightpandaPage) {
|
|
39
|
+
// 1. Hybrid disabled
|
|
40
|
+
if (!this.config.enabled) {
|
|
41
|
+
this.stats.chromeRequests++;
|
|
42
|
+
return { backend: browser_backend_1.BrowserBackend.CHROME, page: chromePage, fallback: false };
|
|
43
|
+
}
|
|
44
|
+
// 2. Visual tool always goes to Chrome
|
|
45
|
+
if (tool_routing_registry_1.ToolRoutingRegistry.isVisualTool(toolName)) {
|
|
46
|
+
this.stats.chromeRequests++;
|
|
47
|
+
return { backend: browser_backend_1.BrowserBackend.CHROME, page: chromePage, fallback: false };
|
|
48
|
+
}
|
|
49
|
+
// 3 & 4. Check circuit breaker
|
|
50
|
+
if (this.circuitOpen) {
|
|
51
|
+
const cooldownExpired = Date.now() - this.circuitOpenedAt >= this.config.circuitBreaker.cooldownMs;
|
|
52
|
+
if (!cooldownExpired) {
|
|
53
|
+
// Circuit still open → serve from Chrome
|
|
54
|
+
this.stats.chromeRequests++;
|
|
55
|
+
this.stats.circuitBreakerTrips++;
|
|
56
|
+
return { backend: browser_backend_1.BrowserBackend.CHROME, page: chromePage, fallback: false };
|
|
57
|
+
}
|
|
58
|
+
// Cooldown expired → reset circuit and allow LP attempt
|
|
59
|
+
this.circuitOpen = false;
|
|
60
|
+
this.consecutiveFailures = 0;
|
|
61
|
+
}
|
|
62
|
+
// 5. Attempt Lightpanda
|
|
63
|
+
if (lightpandaPage != null) {
|
|
64
|
+
let pageHealthy = false;
|
|
65
|
+
try {
|
|
66
|
+
pageHealthy = !lightpandaPage.isClosed();
|
|
67
|
+
}
|
|
68
|
+
catch {
|
|
69
|
+
// isClosed() threw → page is not usable
|
|
70
|
+
pageHealthy = false;
|
|
71
|
+
}
|
|
72
|
+
if (pageHealthy) {
|
|
73
|
+
this.stats.lightpandaRequests++;
|
|
74
|
+
this.recordSuccess();
|
|
75
|
+
return { backend: browser_backend_1.BrowserBackend.LIGHTPANDA, page: lightpandaPage, fallback: false };
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
// 6. Fallback to Chrome
|
|
79
|
+
this.stats.chromeRequests++;
|
|
80
|
+
this.stats.fallbacks++;
|
|
81
|
+
this.recordFailure();
|
|
82
|
+
return { backend: browser_backend_1.BrowserBackend.CHROME, page: chromePage, fallback: true };
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Escalate from Lightpanda to Chrome.
|
|
86
|
+
* - Gets current URL from LP page
|
|
87
|
+
* - Syncs cookies LP → Chrome
|
|
88
|
+
* - Navigates Chrome to same URL
|
|
89
|
+
*/
|
|
90
|
+
async escalate(lightpandaPage, chromePage) {
|
|
91
|
+
const url = lightpandaPage.url();
|
|
92
|
+
let cookiesSynced = false;
|
|
93
|
+
try {
|
|
94
|
+
const count = await this.cookieSync.lightpandaToChrome(lightpandaPage, chromePage);
|
|
95
|
+
cookiesSynced = count >= 0; // lightpandaToChrome returns count (0 is still "synced" successfully)
|
|
96
|
+
}
|
|
97
|
+
catch {
|
|
98
|
+
cookiesSynced = false;
|
|
99
|
+
}
|
|
100
|
+
try {
|
|
101
|
+
await chromePage.goto(url);
|
|
102
|
+
}
|
|
103
|
+
catch {
|
|
104
|
+
// best-effort navigation
|
|
105
|
+
}
|
|
106
|
+
return {
|
|
107
|
+
success: true,
|
|
108
|
+
previousBackend: browser_backend_1.BrowserBackend.LIGHTPANDA,
|
|
109
|
+
newBackend: browser_backend_1.BrowserBackend.CHROME,
|
|
110
|
+
cookiesSynced,
|
|
111
|
+
url,
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
/** Get routing statistics */
|
|
115
|
+
getStats() {
|
|
116
|
+
return { ...this.stats };
|
|
117
|
+
}
|
|
118
|
+
/** Reset statistics */
|
|
119
|
+
resetStats() {
|
|
120
|
+
this.stats = {
|
|
121
|
+
chromeRequests: 0,
|
|
122
|
+
lightpandaRequests: 0,
|
|
123
|
+
fallbacks: 0,
|
|
124
|
+
circuitBreakerTrips: 0,
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
/** Check if circuit breaker is currently open */
|
|
128
|
+
isCircuitOpen() {
|
|
129
|
+
return this.circuitOpen;
|
|
130
|
+
}
|
|
131
|
+
/** Initialize launcher and connect to Lightpanda */
|
|
132
|
+
async initialize() {
|
|
133
|
+
if (!this.config.enabled) {
|
|
134
|
+
return;
|
|
135
|
+
}
|
|
136
|
+
this.launcher = new launcher_1.LightpandaLauncher({
|
|
137
|
+
port: this.config.lightpandaPort,
|
|
138
|
+
});
|
|
139
|
+
await this.launcher.start();
|
|
140
|
+
await this.launcher.connect();
|
|
141
|
+
}
|
|
142
|
+
/** Cleanup resources */
|
|
143
|
+
async cleanup() {
|
|
144
|
+
this.cookieSync.cleanup();
|
|
145
|
+
if (this.launcher) {
|
|
146
|
+
await this.launcher.disconnect();
|
|
147
|
+
await this.launcher.stop();
|
|
148
|
+
this.launcher = null;
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
// ─── Private helpers ──────────────────────────────────────────────────────
|
|
152
|
+
recordSuccess() {
|
|
153
|
+
this.consecutiveFailures = 0;
|
|
154
|
+
}
|
|
155
|
+
recordFailure() {
|
|
156
|
+
this.consecutiveFailures++;
|
|
157
|
+
if (!this.circuitOpen &&
|
|
158
|
+
this.consecutiveFailures >= this.config.circuitBreaker.maxFailures) {
|
|
159
|
+
this.circuitOpen = true;
|
|
160
|
+
this.circuitOpenedAt = Date.now();
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
/** Returns true if the circuit breaker should cause LP to be skipped */
|
|
164
|
+
checkCircuitBreaker() {
|
|
165
|
+
if (!this.circuitOpen) {
|
|
166
|
+
return false;
|
|
167
|
+
}
|
|
168
|
+
const cooldownExpired = Date.now() - this.circuitOpenedAt >= this.config.circuitBreaker.cooldownMs;
|
|
169
|
+
if (cooldownExpired) {
|
|
170
|
+
this.circuitOpen = false;
|
|
171
|
+
this.consecutiveFailures = 0;
|
|
172
|
+
return false;
|
|
173
|
+
}
|
|
174
|
+
return true;
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
exports.BrowserRouter = BrowserRouter;
|
|
178
|
+
//# sourceMappingURL=browser-router.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"browser-router.js","sourceRoot":"","sources":["../../src/router/browser-router.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import type { Page } from 'puppeteer-core';
|
|
2
|
+
export interface CookieSyncConfig {
|
|
3
|
+
/** Interval between periodic syncs in milliseconds. Default: 5000 */
|
|
4
|
+
intervalMs: number;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* CookieSync handles bidirectional cookie synchronisation between Chrome and
|
|
8
|
+
* Lightpanda pages. All operations are best-effort – errors are caught and
|
|
9
|
+
* logged but never thrown so callers are not disrupted.
|
|
10
|
+
*/
|
|
11
|
+
export declare class CookieSync {
|
|
12
|
+
private syncTimer;
|
|
13
|
+
private readonly intervalMs;
|
|
14
|
+
constructor(config?: Partial<CookieSyncConfig>);
|
|
15
|
+
/**
|
|
16
|
+
* Core sync primitive. Reads cookies from `source`, optionally filters by
|
|
17
|
+
* `domain`, then writes them to `target`.
|
|
18
|
+
*
|
|
19
|
+
* @returns Number of cookies actually synced, or 0 on error.
|
|
20
|
+
*/
|
|
21
|
+
syncCookies(source: Page, target: Page, domain?: string): Promise<number>;
|
|
22
|
+
/**
|
|
23
|
+
* Sync cookies from Chrome to Lightpanda (e.g. before delegating a task).
|
|
24
|
+
*/
|
|
25
|
+
chromeToLightpanda(chromePage: Page, lightpandaPage: Page, domain?: string): Promise<number>;
|
|
26
|
+
/**
|
|
27
|
+
* Sync cookies from Lightpanda back to Chrome on escalation.
|
|
28
|
+
* Uses a MERGE strategy – only cookies not already present in Chrome are
|
|
29
|
+
* added; existing Chrome cookies are never overwritten.
|
|
30
|
+
*
|
|
31
|
+
* @returns Number of new cookies added to Chrome.
|
|
32
|
+
*/
|
|
33
|
+
lightpandaToChrome(lightpandaPage: Page, chromePage: Page): Promise<number>;
|
|
34
|
+
/**
|
|
35
|
+
* Start a periodic background sync from `source` to `target`.
|
|
36
|
+
* The timer is unref'd so it will not prevent process exit.
|
|
37
|
+
*/
|
|
38
|
+
startPeriodicSync(source: Page, target: Page, domain?: string): void;
|
|
39
|
+
/**
|
|
40
|
+
* Stop the periodic sync timer if one is running.
|
|
41
|
+
*/
|
|
42
|
+
stopPeriodicSync(): void;
|
|
43
|
+
/**
|
|
44
|
+
* Alias for stopPeriodicSync – stops the timer and releases resources.
|
|
45
|
+
*/
|
|
46
|
+
cleanup(): void;
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=cookie-sync.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cookie-sync.d.ts","sourceRoot":"","sources":["../../src/router/cookie-sync.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAuB,MAAM,gBAAgB,CAAC;AAEhE,MAAM,WAAW,gBAAgB;IAC/B,qEAAqE;IACrE,UAAU,EAAE,MAAM,CAAC;CACpB;AAID;;;;GAIG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,SAAS,CAA+B;IAChD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;gBAExB,MAAM,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC;IAI9C;;;;;OAKG;IACG,WAAW,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAoB/E;;OAEG;IACG,kBAAkB,CACtB,UAAU,EAAE,IAAI,EAChB,cAAc,EAAE,IAAI,EACpB,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,MAAM,CAAC;IAIlB;;;;;;OAMG;IACG,kBAAkB,CAAC,cAAc,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC;IA4BjF;;;OAGG;IACH,iBAAiB,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI;IAiBpE;;OAEG;IACH,gBAAgB,IAAI,IAAI;IAOxB;;OAEG;IACH,OAAO,IAAI,IAAI;CAGhB"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CookieSync = void 0;
|
|
4
|
+
const DEFAULT_INTERVAL_MS = 5000;
|
|
5
|
+
/**
|
|
6
|
+
* CookieSync handles bidirectional cookie synchronisation between Chrome and
|
|
7
|
+
* Lightpanda pages. All operations are best-effort – errors are caught and
|
|
8
|
+
* logged but never thrown so callers are not disrupted.
|
|
9
|
+
*/
|
|
10
|
+
class CookieSync {
|
|
11
|
+
syncTimer = null;
|
|
12
|
+
intervalMs;
|
|
13
|
+
constructor(config) {
|
|
14
|
+
this.intervalMs = config?.intervalMs ?? DEFAULT_INTERVAL_MS;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Core sync primitive. Reads cookies from `source`, optionally filters by
|
|
18
|
+
* `domain`, then writes them to `target`.
|
|
19
|
+
*
|
|
20
|
+
* @returns Number of cookies actually synced, or 0 on error.
|
|
21
|
+
*/
|
|
22
|
+
async syncCookies(source, target, domain) {
|
|
23
|
+
try {
|
|
24
|
+
let cookies = await source.cookies();
|
|
25
|
+
if (domain) {
|
|
26
|
+
cookies = cookies.filter((c) => c.domain === domain || c.domain === `.${domain}`);
|
|
27
|
+
}
|
|
28
|
+
if (cookies.length === 0) {
|
|
29
|
+
return 0;
|
|
30
|
+
}
|
|
31
|
+
await target.setCookie(...cookies);
|
|
32
|
+
return cookies.length;
|
|
33
|
+
}
|
|
34
|
+
catch (err) {
|
|
35
|
+
console.error('[CookieSync] syncCookies error:', err);
|
|
36
|
+
return 0;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Sync cookies from Chrome to Lightpanda (e.g. before delegating a task).
|
|
41
|
+
*/
|
|
42
|
+
async chromeToLightpanda(chromePage, lightpandaPage, domain) {
|
|
43
|
+
return this.syncCookies(chromePage, lightpandaPage, domain);
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Sync cookies from Lightpanda back to Chrome on escalation.
|
|
47
|
+
* Uses a MERGE strategy – only cookies not already present in Chrome are
|
|
48
|
+
* added; existing Chrome cookies are never overwritten.
|
|
49
|
+
*
|
|
50
|
+
* @returns Number of new cookies added to Chrome.
|
|
51
|
+
*/
|
|
52
|
+
async lightpandaToChrome(lightpandaPage, chromePage) {
|
|
53
|
+
try {
|
|
54
|
+
const [lpCookies, chromeCookies] = await Promise.all([
|
|
55
|
+
lightpandaPage.cookies(),
|
|
56
|
+
chromePage.cookies(),
|
|
57
|
+
]);
|
|
58
|
+
// Build a set of existing Chrome cookie keys for fast lookup
|
|
59
|
+
const existingKeys = new Set(chromeCookies.map((c) => `${c.name}::${c.domain}::${c.path}`));
|
|
60
|
+
const newCookies = lpCookies.filter((c) => !existingKeys.has(`${c.name}::${c.domain}::${c.path}`));
|
|
61
|
+
if (newCookies.length === 0) {
|
|
62
|
+
return 0;
|
|
63
|
+
}
|
|
64
|
+
await chromePage.setCookie(...newCookies);
|
|
65
|
+
return newCookies.length;
|
|
66
|
+
}
|
|
67
|
+
catch (err) {
|
|
68
|
+
console.error('[CookieSync] lightpandaToChrome error:', err);
|
|
69
|
+
return 0;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Start a periodic background sync from `source` to `target`.
|
|
74
|
+
* The timer is unref'd so it will not prevent process exit.
|
|
75
|
+
*/
|
|
76
|
+
startPeriodicSync(source, target, domain) {
|
|
77
|
+
this.stopPeriodicSync();
|
|
78
|
+
const timer = setInterval(() => {
|
|
79
|
+
this.syncCookies(source, target, domain).catch((err) => {
|
|
80
|
+
console.error('[CookieSync] periodic sync error:', err);
|
|
81
|
+
});
|
|
82
|
+
}, this.intervalMs);
|
|
83
|
+
// Do not block process exit
|
|
84
|
+
if (typeof timer.unref === 'function') {
|
|
85
|
+
timer.unref();
|
|
86
|
+
}
|
|
87
|
+
this.syncTimer = timer;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Stop the periodic sync timer if one is running.
|
|
91
|
+
*/
|
|
92
|
+
stopPeriodicSync() {
|
|
93
|
+
if (this.syncTimer !== null) {
|
|
94
|
+
clearInterval(this.syncTimer);
|
|
95
|
+
this.syncTimer = null;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Alias for stopPeriodicSync – stops the timer and releases resources.
|
|
100
|
+
*/
|
|
101
|
+
cleanup() {
|
|
102
|
+
this.stopPeriodicSync();
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
exports.CookieSync = CookieSync;
|
|
106
|
+
//# sourceMappingURL=cookie-sync.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cookie-sync.js","sourceRoot":"","sources":["../../src/router/cookie-sync.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/router/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,YAAY,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CookieSync = exports.ToolRoutingRegistry = exports.BrowserRouter = void 0;
|
|
4
|
+
var browser_router_1 = require("./browser-router");
|
|
5
|
+
Object.defineProperty(exports, "BrowserRouter", { enumerable: true, get: function () { return browser_router_1.BrowserRouter; } });
|
|
6
|
+
var tool_routing_registry_1 = require("./tool-routing-registry");
|
|
7
|
+
Object.defineProperty(exports, "ToolRoutingRegistry", { enumerable: true, get: function () { return tool_routing_registry_1.ToolRoutingRegistry; } });
|
|
8
|
+
var cookie_sync_1 = require("./cookie-sync");
|
|
9
|
+
Object.defineProperty(exports, "CookieSync", { enumerable: true, get: function () { return cookie_sync_1.CookieSync; } });
|
|
10
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/router/index.ts"],"names":[],"mappings":";;;AAAA,mDAAiD;AAAxC,+GAAA,aAAa,OAAA;AAEtB,iEAA8D;AAArD,4HAAA,mBAAmB,OAAA;AAC5B,6CAA2C;AAAlC,yGAAA,UAAU,OAAA"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { ToolRouting } from '../types/browser-backend';
|
|
2
|
+
export declare class ToolRoutingRegistry {
|
|
3
|
+
/**
|
|
4
|
+
* Returns the routing preference for a given tool name.
|
|
5
|
+
* Unknown tools default to 'chrome-only' as a safe fallback.
|
|
6
|
+
*/
|
|
7
|
+
static getRouting(toolName: string): ToolRouting;
|
|
8
|
+
/**
|
|
9
|
+
* Returns true if the tool requires Chrome (screenshot/PDF capability).
|
|
10
|
+
*/
|
|
11
|
+
static isVisualTool(toolName: string): boolean;
|
|
12
|
+
/**
|
|
13
|
+
* Returns the list of all chrome-only tool names.
|
|
14
|
+
*/
|
|
15
|
+
static getChromeOnlyTools(): string[];
|
|
16
|
+
/**
|
|
17
|
+
* Returns the list of all prefer-lightpanda tool names.
|
|
18
|
+
*/
|
|
19
|
+
static getPreferLightpandaTools(): string[];
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=tool-routing-registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-routing-registry.d.ts","sourceRoot":"","sources":["../../src/router/tool-routing-registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAiE5D,qBAAa,mBAAmB;IAC9B;;;OAGG;IACH,MAAM,CAAC,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,WAAW;IAIhD;;OAEG;IACH,MAAM,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAI9C;;OAEG;IACH,MAAM,CAAC,kBAAkB,IAAI,MAAM,EAAE;IAMrC;;OAEG;IACH,MAAM,CAAC,wBAAwB,IAAI,MAAM,EAAE;CAK5C"}
|