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,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DomainMemory — Cross-project domain knowledge persistence.
|
|
3
|
+
*
|
|
4
|
+
* MCP-aligned: server stores and retrieves, agent decides what to store.
|
|
5
|
+
* Confidence: +0.1 on success, -0.2 on failure (asymmetric — broken selectors are dangerous).
|
|
6
|
+
* Storage: ~/.claude-chrome-parallel/memory/domain-knowledge.json
|
|
7
|
+
*/
|
|
8
|
+
export interface DomainKnowledge {
|
|
9
|
+
id: string;
|
|
10
|
+
domain: string;
|
|
11
|
+
key: string;
|
|
12
|
+
value: string;
|
|
13
|
+
confidence: number;
|
|
14
|
+
updatedAt: number;
|
|
15
|
+
}
|
|
16
|
+
export declare class DomainMemory {
|
|
17
|
+
private entries;
|
|
18
|
+
private filePath;
|
|
19
|
+
private dirty;
|
|
20
|
+
static readonly MAX_ENTRIES = 200;
|
|
21
|
+
static readonly STALE_DAYS = 30;
|
|
22
|
+
static readonly MIN_CONFIDENCE = 0.2;
|
|
23
|
+
static readonly STALE_CONFIDENCE = 0.5;
|
|
24
|
+
static readonly CONFIDENCE_BOOST = 0.1;
|
|
25
|
+
static readonly CONFIDENCE_PENALTY = 0.2;
|
|
26
|
+
static readonly DEFAULT_CONFIDENCE = 0.5;
|
|
27
|
+
/**
|
|
28
|
+
* Enable persistence and run startup compression.
|
|
29
|
+
*/
|
|
30
|
+
enablePersistence(dirPath: string): void;
|
|
31
|
+
/**
|
|
32
|
+
* CE: Write — Record domain knowledge. Agent calls this after successful operations.
|
|
33
|
+
* If an entry with the same domain+key exists, update its value and reset confidence.
|
|
34
|
+
*/
|
|
35
|
+
record(domain: string, key: string, value: string): DomainKnowledge;
|
|
36
|
+
/**
|
|
37
|
+
* CE: Select — Returns entries for domain, sorted by confidence desc.
|
|
38
|
+
* Optionally filter by key prefix.
|
|
39
|
+
*/
|
|
40
|
+
query(domain: string, key?: string): DomainKnowledge[];
|
|
41
|
+
/**
|
|
42
|
+
* Validation — Agent calls after using knowledge (success/fail).
|
|
43
|
+
* Returns updated entry, or null if not found / pruned.
|
|
44
|
+
*/
|
|
45
|
+
validate(id: string, success: boolean): DomainKnowledge | null;
|
|
46
|
+
/**
|
|
47
|
+
* CE: Compress — Prune stale/invalid entries on startup.
|
|
48
|
+
* 1. confidence < 0.2 → remove
|
|
49
|
+
* 2. updatedAt > 30 days AND confidence < 0.5 → remove
|
|
50
|
+
* 3. count > 200 → remove lowest-confidence
|
|
51
|
+
*/
|
|
52
|
+
compress(): {
|
|
53
|
+
pruned: number;
|
|
54
|
+
remaining: number;
|
|
55
|
+
};
|
|
56
|
+
/**
|
|
57
|
+
* Get all entries (for testing/inspection).
|
|
58
|
+
*/
|
|
59
|
+
getAll(): DomainKnowledge[];
|
|
60
|
+
private load;
|
|
61
|
+
save(): void;
|
|
62
|
+
}
|
|
63
|
+
export declare function getDomainMemory(): DomainMemory;
|
|
64
|
+
/**
|
|
65
|
+
* Extract domain from a URL string. Returns empty string on failure.
|
|
66
|
+
*/
|
|
67
|
+
export declare function extractDomainFromUrl(url: string): string;
|
|
68
|
+
//# sourceMappingURL=domain-memory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"domain-memory.d.ts","sourceRoot":"","sources":["../../src/memory/domain-memory.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB;AAQD,qBAAa,YAAY;IACvB,OAAO,CAAC,OAAO,CAAyB;IACxC,OAAO,CAAC,QAAQ,CAAuB;IACvC,OAAO,CAAC,KAAK,CAAS;IAEtB,MAAM,CAAC,QAAQ,CAAC,WAAW,OAAO;IAClC,MAAM,CAAC,QAAQ,CAAC,UAAU,MAAM;IAChC,MAAM,CAAC,QAAQ,CAAC,cAAc,OAAO;IACrC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,OAAO;IACvC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,OAAO;IACvC,MAAM,CAAC,QAAQ,CAAC,kBAAkB,OAAO;IACzC,MAAM,CAAC,QAAQ,CAAC,kBAAkB,OAAO;IAEzC;;OAEG;IACH,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAWxC;;;OAGG;IACH,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,eAAe;IA6BnE;;;OAGG;IACH,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,eAAe,EAAE;IAUtD;;;OAGG;IACH,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,eAAe,GAAG,IAAI;IAuB9D;;;;;OAKG;IACH,QAAQ,IAAI;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE;IA4BjD;;OAEG;IACH,MAAM,IAAI,eAAe,EAAE;IAI3B,OAAO,CAAC,IAAI;IAWZ,IAAI,IAAI,IAAI;CAgBb;AAKD,wBAAgB,eAAe,IAAI,YAAY,CAQ9C;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAMxD"}
|
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* DomainMemory — Cross-project domain knowledge persistence.
|
|
4
|
+
*
|
|
5
|
+
* MCP-aligned: server stores and retrieves, agent decides what to store.
|
|
6
|
+
* Confidence: +0.1 on success, -0.2 on failure (asymmetric — broken selectors are dangerous).
|
|
7
|
+
* Storage: ~/.claude-chrome-parallel/memory/domain-knowledge.json
|
|
8
|
+
*/
|
|
9
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
12
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
13
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
14
|
+
}
|
|
15
|
+
Object.defineProperty(o, k2, desc);
|
|
16
|
+
}) : (function(o, m, k, k2) {
|
|
17
|
+
if (k2 === undefined) k2 = k;
|
|
18
|
+
o[k2] = m[k];
|
|
19
|
+
}));
|
|
20
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
21
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
22
|
+
}) : function(o, v) {
|
|
23
|
+
o["default"] = v;
|
|
24
|
+
});
|
|
25
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
26
|
+
var ownKeys = function(o) {
|
|
27
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
28
|
+
var ar = [];
|
|
29
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
30
|
+
return ar;
|
|
31
|
+
};
|
|
32
|
+
return ownKeys(o);
|
|
33
|
+
};
|
|
34
|
+
return function (mod) {
|
|
35
|
+
if (mod && mod.__esModule) return mod;
|
|
36
|
+
var result = {};
|
|
37
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
38
|
+
__setModuleDefault(result, mod);
|
|
39
|
+
return result;
|
|
40
|
+
};
|
|
41
|
+
})();
|
|
42
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
43
|
+
exports.DomainMemory = void 0;
|
|
44
|
+
exports.getDomainMemory = getDomainMemory;
|
|
45
|
+
exports.extractDomainFromUrl = extractDomainFromUrl;
|
|
46
|
+
const fs = __importStar(require("fs"));
|
|
47
|
+
const path = __importStar(require("path"));
|
|
48
|
+
class DomainMemory {
|
|
49
|
+
entries = [];
|
|
50
|
+
filePath = null;
|
|
51
|
+
dirty = false;
|
|
52
|
+
static MAX_ENTRIES = 200;
|
|
53
|
+
static STALE_DAYS = 30;
|
|
54
|
+
static MIN_CONFIDENCE = 0.2;
|
|
55
|
+
static STALE_CONFIDENCE = 0.5;
|
|
56
|
+
static CONFIDENCE_BOOST = 0.1;
|
|
57
|
+
static CONFIDENCE_PENALTY = 0.2;
|
|
58
|
+
static DEFAULT_CONFIDENCE = 0.5;
|
|
59
|
+
/**
|
|
60
|
+
* Enable persistence and run startup compression.
|
|
61
|
+
*/
|
|
62
|
+
enablePersistence(dirPath) {
|
|
63
|
+
try {
|
|
64
|
+
fs.mkdirSync(dirPath, { recursive: true });
|
|
65
|
+
this.filePath = path.join(dirPath, 'domain-knowledge.json');
|
|
66
|
+
this.load();
|
|
67
|
+
this.compress();
|
|
68
|
+
}
|
|
69
|
+
catch {
|
|
70
|
+
// Best-effort
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* CE: Write — Record domain knowledge. Agent calls this after successful operations.
|
|
75
|
+
* If an entry with the same domain+key exists, update its value and reset confidence.
|
|
76
|
+
*/
|
|
77
|
+
record(domain, key, value) {
|
|
78
|
+
const existing = this.entries.find((e) => e.domain === domain && e.key === key);
|
|
79
|
+
if (existing) {
|
|
80
|
+
existing.value = value;
|
|
81
|
+
existing.confidence = Math.max(existing.confidence, DomainMemory.DEFAULT_CONFIDENCE);
|
|
82
|
+
existing.updatedAt = Date.now();
|
|
83
|
+
this.dirty = true;
|
|
84
|
+
this.save();
|
|
85
|
+
return existing;
|
|
86
|
+
}
|
|
87
|
+
const entry = {
|
|
88
|
+
id: `dk-${Date.now()}-${Math.random().toString(36).slice(2, 6)}`,
|
|
89
|
+
domain,
|
|
90
|
+
key,
|
|
91
|
+
value,
|
|
92
|
+
confidence: DomainMemory.DEFAULT_CONFIDENCE,
|
|
93
|
+
updatedAt: Date.now(),
|
|
94
|
+
};
|
|
95
|
+
this.entries.push(entry);
|
|
96
|
+
this.dirty = true;
|
|
97
|
+
this.save();
|
|
98
|
+
return entry;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* CE: Select — Returns entries for domain, sorted by confidence desc.
|
|
102
|
+
* Optionally filter by key prefix.
|
|
103
|
+
*/
|
|
104
|
+
query(domain, key) {
|
|
105
|
+
let results = this.entries.filter((e) => e.domain === domain);
|
|
106
|
+
if (key) {
|
|
107
|
+
results = results.filter((e) => e.key === key || e.key.startsWith(key + ':'));
|
|
108
|
+
}
|
|
109
|
+
return results.sort((a, b) => b.confidence - a.confidence);
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Validation — Agent calls after using knowledge (success/fail).
|
|
113
|
+
* Returns updated entry, or null if not found / pruned.
|
|
114
|
+
*/
|
|
115
|
+
validate(id, success) {
|
|
116
|
+
const entry = this.entries.find((e) => e.id === id);
|
|
117
|
+
if (!entry)
|
|
118
|
+
return null;
|
|
119
|
+
if (success) {
|
|
120
|
+
entry.confidence = Math.min(1.0, entry.confidence + DomainMemory.CONFIDENCE_BOOST);
|
|
121
|
+
}
|
|
122
|
+
else {
|
|
123
|
+
entry.confidence = Math.max(0.0, entry.confidence - DomainMemory.CONFIDENCE_PENALTY);
|
|
124
|
+
}
|
|
125
|
+
entry.updatedAt = Date.now();
|
|
126
|
+
this.dirty = true;
|
|
127
|
+
// Prune if confidence dropped below threshold
|
|
128
|
+
if (entry.confidence < DomainMemory.MIN_CONFIDENCE) {
|
|
129
|
+
this.entries = this.entries.filter((e) => e.id !== id);
|
|
130
|
+
this.save();
|
|
131
|
+
return null;
|
|
132
|
+
}
|
|
133
|
+
this.save();
|
|
134
|
+
return entry;
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* CE: Compress — Prune stale/invalid entries on startup.
|
|
138
|
+
* 1. confidence < 0.2 → remove
|
|
139
|
+
* 2. updatedAt > 30 days AND confidence < 0.5 → remove
|
|
140
|
+
* 3. count > 200 → remove lowest-confidence
|
|
141
|
+
*/
|
|
142
|
+
compress() {
|
|
143
|
+
const before = this.entries.length;
|
|
144
|
+
const now = Date.now();
|
|
145
|
+
const staleCutoff = now - DomainMemory.STALE_DAYS * 24 * 60 * 60 * 1000;
|
|
146
|
+
// Rule 1 & 2: Remove low-confidence and stale entries
|
|
147
|
+
this.entries = this.entries.filter((e) => {
|
|
148
|
+
if (e.confidence < DomainMemory.MIN_CONFIDENCE)
|
|
149
|
+
return false;
|
|
150
|
+
if (e.updatedAt < staleCutoff && e.confidence < DomainMemory.STALE_CONFIDENCE)
|
|
151
|
+
return false;
|
|
152
|
+
return true;
|
|
153
|
+
});
|
|
154
|
+
// Rule 3: Cap at MAX_ENTRIES, keep highest confidence
|
|
155
|
+
if (this.entries.length > DomainMemory.MAX_ENTRIES) {
|
|
156
|
+
this.entries.sort((a, b) => b.confidence - a.confidence);
|
|
157
|
+
this.entries = this.entries.slice(0, DomainMemory.MAX_ENTRIES);
|
|
158
|
+
}
|
|
159
|
+
const pruned = before - this.entries.length;
|
|
160
|
+
if (pruned > 0) {
|
|
161
|
+
this.dirty = true;
|
|
162
|
+
this.save();
|
|
163
|
+
console.error(`[DomainMemory] Compressed: pruned ${pruned}, remaining ${this.entries.length}`);
|
|
164
|
+
}
|
|
165
|
+
return { pruned, remaining: this.entries.length };
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Get all entries (for testing/inspection).
|
|
169
|
+
*/
|
|
170
|
+
getAll() {
|
|
171
|
+
return this.entries;
|
|
172
|
+
}
|
|
173
|
+
load() {
|
|
174
|
+
if (!this.filePath)
|
|
175
|
+
return;
|
|
176
|
+
try {
|
|
177
|
+
const data = fs.readFileSync(this.filePath, 'utf-8');
|
|
178
|
+
const store = JSON.parse(data);
|
|
179
|
+
this.entries = store.entries || [];
|
|
180
|
+
}
|
|
181
|
+
catch {
|
|
182
|
+
this.entries = [];
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
save() {
|
|
186
|
+
if (!this.filePath || !this.dirty)
|
|
187
|
+
return;
|
|
188
|
+
try {
|
|
189
|
+
const dir = path.dirname(this.filePath);
|
|
190
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
191
|
+
const store = {
|
|
192
|
+
version: 1,
|
|
193
|
+
entries: this.entries,
|
|
194
|
+
updatedAt: Date.now(),
|
|
195
|
+
};
|
|
196
|
+
fs.writeFileSync(this.filePath, JSON.stringify(store, null, 2));
|
|
197
|
+
this.dirty = false;
|
|
198
|
+
}
|
|
199
|
+
catch {
|
|
200
|
+
// Best-effort
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
exports.DomainMemory = DomainMemory;
|
|
205
|
+
// Singleton
|
|
206
|
+
let instance = null;
|
|
207
|
+
function getDomainMemory() {
|
|
208
|
+
if (!instance) {
|
|
209
|
+
instance = new DomainMemory();
|
|
210
|
+
const homedir = process.env.HOME || process.env.USERPROFILE || '';
|
|
211
|
+
const memoryDir = path.join(homedir, '.claude-chrome-parallel', 'memory');
|
|
212
|
+
instance.enablePersistence(memoryDir);
|
|
213
|
+
}
|
|
214
|
+
return instance;
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* Extract domain from a URL string. Returns empty string on failure.
|
|
218
|
+
*/
|
|
219
|
+
function extractDomainFromUrl(url) {
|
|
220
|
+
try {
|
|
221
|
+
return new URL(url).hostname;
|
|
222
|
+
}
|
|
223
|
+
catch {
|
|
224
|
+
return '';
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
//# sourceMappingURL=domain-memory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"domain-memory.js","sourceRoot":"","sources":["../../src/memory/domain-memory.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PlanExecutor - Executes compiled plans by chaining tool handlers internally.
|
|
3
|
+
*
|
|
4
|
+
* Bypasses per-step agent LLM round-trips by resolving and calling tool handlers
|
|
5
|
+
* directly from the MCP server's internal registry.
|
|
6
|
+
*/
|
|
7
|
+
import { ToolHandler } from '../types/mcp';
|
|
8
|
+
import { CompiledPlan, PlanExecutionResult } from '../types/plan-cache';
|
|
9
|
+
export declare class PlanExecutor {
|
|
10
|
+
private toolResolver;
|
|
11
|
+
constructor(toolResolver: (toolName: string) => ToolHandler | null);
|
|
12
|
+
execute(plan: CompiledPlan, sessionId: string, runtimeParams: Record<string, unknown>): Promise<PlanExecutionResult>;
|
|
13
|
+
/**
|
|
14
|
+
* Attempt to find and run a recovery handler for a given condition.
|
|
15
|
+
* Returns updated stepsExecuted + params snapshot on success, null if no handler.
|
|
16
|
+
*/
|
|
17
|
+
private tryRecovery;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=plan-executor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plan-executor.d.ts","sourceRoot":"","sources":["../../src/orchestration/plan-executor.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAa,WAAW,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EACL,YAAY,EAGZ,mBAAmB,EACpB,MAAM,qBAAqB,CAAC;AAiI7B,qBAAa,YAAY;IACvB,OAAO,CAAC,YAAY,CAA2C;gBAEnD,YAAY,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,WAAW,GAAG,IAAI;IAI5D,OAAO,CACX,IAAI,EAAE,YAAY,EAClB,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACrC,OAAO,CAAC,mBAAmB,CAAC;IAsJ/B;;;OAGG;YACW,WAAW;CAqE1B"}
|
|
@@ -0,0 +1,284 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* PlanExecutor - Executes compiled plans by chaining tool handlers internally.
|
|
4
|
+
*
|
|
5
|
+
* Bypasses per-step agent LLM round-trips by resolving and calling tool handlers
|
|
6
|
+
* directly from the MCP server's internal registry.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.PlanExecutor = void 0;
|
|
10
|
+
/**
|
|
11
|
+
* Recursively substitute ${varName} templates in a value using the params map.
|
|
12
|
+
* Handles strings, objects, and arrays. Non-string primitives are returned as-is.
|
|
13
|
+
* Missing vars are left as-is (no crash).
|
|
14
|
+
*/
|
|
15
|
+
function substituteParams(value, params) {
|
|
16
|
+
if (typeof value === 'string') {
|
|
17
|
+
return value.replace(/\$\{([^}]+)\}/g, (match, varName) => {
|
|
18
|
+
const resolved = params[varName];
|
|
19
|
+
if (resolved === undefined)
|
|
20
|
+
return match;
|
|
21
|
+
if (typeof resolved === 'string')
|
|
22
|
+
return resolved;
|
|
23
|
+
return JSON.stringify(resolved);
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
if (Array.isArray(value)) {
|
|
27
|
+
return value.map((item) => substituteParams(item, params));
|
|
28
|
+
}
|
|
29
|
+
if (value !== null && typeof value === 'object') {
|
|
30
|
+
const result = {};
|
|
31
|
+
for (const [k, v] of Object.entries(value)) {
|
|
32
|
+
result[k] = substituteParams(v, params);
|
|
33
|
+
}
|
|
34
|
+
return result;
|
|
35
|
+
}
|
|
36
|
+
return value;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Apply a timeout to a promise via Promise.race.
|
|
40
|
+
*/
|
|
41
|
+
function withTimeout(promise, timeoutMs, label) {
|
|
42
|
+
return Promise.race([
|
|
43
|
+
promise,
|
|
44
|
+
new Promise((_, reject) => setTimeout(() => reject(new Error(`Timeout after ${timeoutMs}ms (${label})`)), timeoutMs)),
|
|
45
|
+
]);
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Extract result data from an MCPResult according to parseResult spec.
|
|
49
|
+
* Returns the extracted value (raw text, parsed JSON, or a specific field).
|
|
50
|
+
*/
|
|
51
|
+
function extractResult(mcpResult, parseResult) {
|
|
52
|
+
const content = mcpResult.content;
|
|
53
|
+
const text = content && content.length > 0 ? content[0].text ?? '' : '';
|
|
54
|
+
if (parseResult.format === 'text') {
|
|
55
|
+
return text;
|
|
56
|
+
}
|
|
57
|
+
// format === 'json'
|
|
58
|
+
let parsed;
|
|
59
|
+
try {
|
|
60
|
+
parsed = JSON.parse(text);
|
|
61
|
+
}
|
|
62
|
+
catch {
|
|
63
|
+
parsed = text;
|
|
64
|
+
}
|
|
65
|
+
if (parseResult.extractField) {
|
|
66
|
+
const obj = parsed;
|
|
67
|
+
parsed = obj?.[parseResult.extractField];
|
|
68
|
+
}
|
|
69
|
+
return parsed;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Check whether an MCPResult represents an empty/no-data result.
|
|
73
|
+
*/
|
|
74
|
+
function isEmptyResult(mcpResult) {
|
|
75
|
+
if (mcpResult.isError)
|
|
76
|
+
return false; // errors are not "empty"
|
|
77
|
+
const content = mcpResult.content;
|
|
78
|
+
if (!content || content.length === 0)
|
|
79
|
+
return true;
|
|
80
|
+
const text = content[0].text ?? '';
|
|
81
|
+
if (text.trim() === '' || text.trim() === 'null' || text.trim() === '[]' || text.trim() === '{}') {
|
|
82
|
+
return true;
|
|
83
|
+
}
|
|
84
|
+
return false;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Validate final params against the plan's success criteria.
|
|
88
|
+
* Returns null if valid, or an error string describing the violation.
|
|
89
|
+
*/
|
|
90
|
+
function validateSuccessCriteria(criteria, params) {
|
|
91
|
+
if (criteria.minDataItems !== undefined) {
|
|
92
|
+
// Find the first array or object in params that could represent "data items"
|
|
93
|
+
let found = false;
|
|
94
|
+
for (const val of Object.values(params)) {
|
|
95
|
+
if (Array.isArray(val)) {
|
|
96
|
+
if (val.length < criteria.minDataItems) {
|
|
97
|
+
return `minDataItems requirement not met: got ${val.length}, need ${criteria.minDataItems}`;
|
|
98
|
+
}
|
|
99
|
+
found = true;
|
|
100
|
+
break;
|
|
101
|
+
}
|
|
102
|
+
else if (val !== null && typeof val === 'object') {
|
|
103
|
+
const count = Object.keys(val).length;
|
|
104
|
+
if (count < criteria.minDataItems) {
|
|
105
|
+
return `minDataItems requirement not met: got ${count}, need ${criteria.minDataItems}`;
|
|
106
|
+
}
|
|
107
|
+
found = true;
|
|
108
|
+
break;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
if (!found && criteria.minDataItems > 0) {
|
|
112
|
+
return `minDataItems requirement not met: no collection found in params`;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
if (criteria.requiredFields && criteria.requiredFields.length > 0) {
|
|
116
|
+
for (const field of criteria.requiredFields) {
|
|
117
|
+
if (!(field in params) || params[field] === undefined) {
|
|
118
|
+
return `Required field missing from params: ${field}`;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
return null;
|
|
123
|
+
}
|
|
124
|
+
class PlanExecutor {
|
|
125
|
+
toolResolver;
|
|
126
|
+
constructor(toolResolver) {
|
|
127
|
+
this.toolResolver = toolResolver;
|
|
128
|
+
}
|
|
129
|
+
async execute(plan, sessionId, runtimeParams) {
|
|
130
|
+
const startTime = Date.now();
|
|
131
|
+
let stepsExecuted = 0;
|
|
132
|
+
// 1. Build params map: plan defaults first, runtime overrides on top
|
|
133
|
+
const params = {};
|
|
134
|
+
for (const [key, spec] of Object.entries(plan.parameters)) {
|
|
135
|
+
if (spec.default !== undefined) {
|
|
136
|
+
params[key] = spec.default;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
Object.assign(params, runtimeParams);
|
|
140
|
+
const failure = (error) => ({
|
|
141
|
+
success: false,
|
|
142
|
+
planId: plan.id,
|
|
143
|
+
error,
|
|
144
|
+
durationMs: Date.now() - startTime,
|
|
145
|
+
stepsExecuted,
|
|
146
|
+
totalSteps: plan.steps.length,
|
|
147
|
+
});
|
|
148
|
+
// 2. Execute each step sequentially
|
|
149
|
+
for (const step of plan.steps) {
|
|
150
|
+
const stepLabel = `plan=${plan.id} step=${step.order} tool=${step.tool}`;
|
|
151
|
+
// a. Resolve handler
|
|
152
|
+
const handler = this.toolResolver(step.tool);
|
|
153
|
+
if (!handler) {
|
|
154
|
+
const msg = `No handler found for tool "${step.tool}" at ${stepLabel}`;
|
|
155
|
+
console.error(`[PlanExecutor] ${msg}`);
|
|
156
|
+
return failure(msg);
|
|
157
|
+
}
|
|
158
|
+
// b. Substitute template variables in args
|
|
159
|
+
const substitutedArgs = substituteParams(step.args, params);
|
|
160
|
+
// c. Call handler with timeout
|
|
161
|
+
let mcpResult;
|
|
162
|
+
try {
|
|
163
|
+
mcpResult = await withTimeout(handler(sessionId, substitutedArgs), step.timeout, stepLabel);
|
|
164
|
+
stepsExecuted++;
|
|
165
|
+
}
|
|
166
|
+
catch (err) {
|
|
167
|
+
const errMsg = err instanceof Error ? err.message : String(err);
|
|
168
|
+
console.error(`[PlanExecutor] Step failed at ${stepLabel}: ${errMsg}`);
|
|
169
|
+
// Check for a matching error handler
|
|
170
|
+
const conditionKey = `step${step.order}_error`;
|
|
171
|
+
const recovered = await this.tryRecovery(conditionKey, plan.errorHandlers, sessionId, params, stepsExecuted);
|
|
172
|
+
if (recovered !== null) {
|
|
173
|
+
stepsExecuted = recovered.stepsExecuted;
|
|
174
|
+
// Merge any params updates from recovery into our params
|
|
175
|
+
Object.assign(params, recovered.params);
|
|
176
|
+
continue;
|
|
177
|
+
}
|
|
178
|
+
return failure(`Step ${step.order} (${step.tool}) failed: ${errMsg}`);
|
|
179
|
+
}
|
|
180
|
+
// d. Check for error result
|
|
181
|
+
if (mcpResult.isError) {
|
|
182
|
+
const errMsg = mcpResult.content?.[0]?.text ?? 'Unknown tool error';
|
|
183
|
+
console.error(`[PlanExecutor] Tool returned error at ${stepLabel}: ${errMsg}`);
|
|
184
|
+
const conditionKey = `step${step.order}_error`;
|
|
185
|
+
const recovered = await this.tryRecovery(conditionKey, plan.errorHandlers, sessionId, params, stepsExecuted);
|
|
186
|
+
if (recovered !== null) {
|
|
187
|
+
stepsExecuted = recovered.stepsExecuted;
|
|
188
|
+
Object.assign(params, recovered.params);
|
|
189
|
+
continue;
|
|
190
|
+
}
|
|
191
|
+
return failure(`Step ${step.order} (${step.tool}) returned error: ${errMsg}`);
|
|
192
|
+
}
|
|
193
|
+
// e. Check for empty result (before storing) — may trigger empty_result handler
|
|
194
|
+
if (isEmptyResult(mcpResult)) {
|
|
195
|
+
const conditionKey = `step${step.order}_empty_result`;
|
|
196
|
+
const recovered = await this.tryRecovery(conditionKey, plan.errorHandlers, sessionId, params, stepsExecuted);
|
|
197
|
+
if (recovered !== null) {
|
|
198
|
+
stepsExecuted = recovered.stepsExecuted;
|
|
199
|
+
Object.assign(params, recovered.params);
|
|
200
|
+
continue;
|
|
201
|
+
}
|
|
202
|
+
// No handler for empty — treat as non-fatal, just skip storing
|
|
203
|
+
}
|
|
204
|
+
// f. Parse and store result if requested
|
|
205
|
+
if (step.parseResult && step.parseResult.storeAs) {
|
|
206
|
+
try {
|
|
207
|
+
const extracted = extractResult(mcpResult, step.parseResult);
|
|
208
|
+
params[step.parseResult.storeAs] = extracted;
|
|
209
|
+
}
|
|
210
|
+
catch (err) {
|
|
211
|
+
console.error(`[PlanExecutor] Failed to extract result at ${stepLabel}: ${err instanceof Error ? err.message : String(err)}`);
|
|
212
|
+
// Non-fatal: continue without storing
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
// 3. Validate success criteria
|
|
217
|
+
const criteriaError = validateSuccessCriteria(plan.successCriteria, params);
|
|
218
|
+
if (criteriaError) {
|
|
219
|
+
console.error(`[PlanExecutor] Success criteria failed for plan=${plan.id}: ${criteriaError}`);
|
|
220
|
+
return {
|
|
221
|
+
success: false,
|
|
222
|
+
planId: plan.id,
|
|
223
|
+
error: `Success criteria not met: ${criteriaError}`,
|
|
224
|
+
durationMs: Date.now() - startTime,
|
|
225
|
+
stepsExecuted,
|
|
226
|
+
totalSteps: plan.steps.length,
|
|
227
|
+
};
|
|
228
|
+
}
|
|
229
|
+
// 4. Return success with all collected params as data
|
|
230
|
+
return {
|
|
231
|
+
success: true,
|
|
232
|
+
planId: plan.id,
|
|
233
|
+
data: params,
|
|
234
|
+
durationMs: Date.now() - startTime,
|
|
235
|
+
stepsExecuted,
|
|
236
|
+
totalSteps: plan.steps.length,
|
|
237
|
+
};
|
|
238
|
+
}
|
|
239
|
+
/**
|
|
240
|
+
* Attempt to find and run a recovery handler for a given condition.
|
|
241
|
+
* Returns updated stepsExecuted + params snapshot on success, null if no handler.
|
|
242
|
+
*/
|
|
243
|
+
async tryRecovery(conditionKey, errorHandlers, sessionId, params, currentStepsExecuted) {
|
|
244
|
+
const handler = errorHandlers.find((h) => h.condition === conditionKey);
|
|
245
|
+
if (!handler)
|
|
246
|
+
return null;
|
|
247
|
+
console.error(`[PlanExecutor] Running error handler "${handler.action}" for condition "${conditionKey}"`);
|
|
248
|
+
let stepsExecuted = currentStepsExecuted;
|
|
249
|
+
for (const step of handler.steps) {
|
|
250
|
+
const stepLabel = `recovery action=${handler.action} step=${step.order} tool=${step.tool}`;
|
|
251
|
+
const toolHandler = this.toolResolver(step.tool);
|
|
252
|
+
if (!toolHandler) {
|
|
253
|
+
console.error(`[PlanExecutor] Recovery: no handler for tool "${step.tool}" at ${stepLabel}`);
|
|
254
|
+
continue;
|
|
255
|
+
}
|
|
256
|
+
const substitutedArgs = substituteParams(step.args, params);
|
|
257
|
+
let mcpResult;
|
|
258
|
+
try {
|
|
259
|
+
mcpResult = await withTimeout(toolHandler(sessionId, substitutedArgs), step.timeout, stepLabel);
|
|
260
|
+
stepsExecuted++;
|
|
261
|
+
}
|
|
262
|
+
catch (err) {
|
|
263
|
+
console.error(`[PlanExecutor] Recovery step failed at ${stepLabel}: ${err instanceof Error ? err.message : String(err)}`);
|
|
264
|
+
continue;
|
|
265
|
+
}
|
|
266
|
+
if (mcpResult.isError) {
|
|
267
|
+
console.error(`[PlanExecutor] Recovery step returned error at ${stepLabel}: ${mcpResult.content?.[0]?.text ?? 'unknown'}`);
|
|
268
|
+
continue;
|
|
269
|
+
}
|
|
270
|
+
if (step.parseResult && step.parseResult.storeAs) {
|
|
271
|
+
try {
|
|
272
|
+
const extracted = extractResult(mcpResult, step.parseResult);
|
|
273
|
+
params[step.parseResult.storeAs] = extracted;
|
|
274
|
+
}
|
|
275
|
+
catch (err) {
|
|
276
|
+
console.error(`[PlanExecutor] Recovery: failed to extract result at ${stepLabel}: ${err instanceof Error ? err.message : String(err)}`);
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
return { stepsExecuted, params };
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
exports.PlanExecutor = PlanExecutor;
|
|
284
|
+
//# sourceMappingURL=plan-executor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plan-executor.js","sourceRoot":"","sources":["../../src/orchestration/plan-executor.ts"],"names":[],"mappings":"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"}
|