@iflow-mcp/shaun0927-openchrome 1.7.13
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 +387 -0
- package/assets/chart-tokens.svg +42 -0
- package/assets/demo.svg +278 -0
- package/assets/mascot.png +0 -0
- package/dist/cdp/client.d.ts +265 -0
- package/dist/cdp/client.d.ts.map +1 -0
- package/dist/cdp/client.js +1419 -0
- package/dist/cdp/client.js.map +1 -0
- package/dist/cdp/connection-pool.d.ts +117 -0
- package/dist/cdp/connection-pool.d.ts.map +1 -0
- package/dist/cdp/connection-pool.js +421 -0
- package/dist/cdp/connection-pool.js.map +1 -0
- package/dist/cdp/screenshot-scheduler.d.ts +55 -0
- package/dist/cdp/screenshot-scheduler.d.ts.map +1 -0
- package/dist/cdp/screenshot-scheduler.js +121 -0
- package/dist/cdp/screenshot-scheduler.js.map +1 -0
- package/dist/chrome/launcher.d.ts +113 -0
- package/dist/chrome/launcher.d.ts.map +1 -0
- package/dist/chrome/launcher.js +850 -0
- package/dist/chrome/launcher.js.map +1 -0
- package/dist/chrome/pool.d.ts +43 -0
- package/dist/chrome/pool.d.ts.map +1 -0
- package/dist/chrome/pool.js +219 -0
- package/dist/chrome/pool.js.map +1 -0
- package/dist/chrome/profile-manager.d.ts +156 -0
- package/dist/chrome/profile-manager.d.ts.map +1 -0
- package/dist/chrome/profile-manager.js +558 -0
- package/dist/chrome/profile-manager.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 +1013 -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 +10 -0
- package/dist/cli/update-check.js +187 -0
- package/dist/cli/update-check.js.map +1 -0
- package/dist/compression/snapshot-store.d.ts +54 -0
- package/dist/compression/snapshot-store.d.ts.map +1 -0
- package/dist/compression/snapshot-store.js +183 -0
- package/dist/compression/snapshot-store.js.map +1 -0
- package/dist/config/defaults.d.ts +102 -0
- package/dist/config/defaults.d.ts.map +1 -0
- package/dist/config/defaults.js +102 -0
- package/dist/config/defaults.js.map +1 -0
- package/dist/config/global.d.ts +81 -0
- package/dist/config/global.d.ts.map +1 -0
- package/dist/config/global.js +30 -0
- package/dist/config/global.js.map +1 -0
- package/dist/config/index.d.ts +16 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +21 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/tool-tiers.d.ts +14 -0
- package/dist/config/tool-tiers.d.ts.map +1 -0
- package/dist/config/tool-tiers.js +69 -0
- package/dist/config/tool-tiers.js.map +1 -0
- package/dist/dashboard/activity-tracker.d.ts +95 -0
- package/dist/dashboard/activity-tracker.d.ts.map +1 -0
- package/dist/dashboard/activity-tracker.js +275 -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 +413 -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 +230 -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 +74 -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/dom/dom-serializer.d.ts +37 -0
- package/dist/dom/dom-serializer.d.ts.map +1 -0
- package/dist/dom/dom-serializer.js +429 -0
- package/dist/dom/dom-serializer.js.map +1 -0
- package/dist/dom/index.d.ts +2 -0
- package/dist/dom/index.d.ts.map +1 -0
- package/dist/dom/index.js +6 -0
- package/dist/dom/index.js.map +1 -0
- package/dist/errors/timeout.d.ts +20 -0
- package/dist/errors/timeout.d.ts.map +1 -0
- package/dist/errors/timeout.js +41 -0
- package/dist/errors/timeout.js.map +1 -0
- package/dist/hints/hint-engine.d.ts +117 -0
- package/dist/hints/hint-engine.d.ts.map +1 -0
- package/dist/hints/hint-engine.js +347 -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/progress-tracker.d.ts +44 -0
- package/dist/hints/progress-tracker.d.ts.map +1 -0
- package/dist/hints/progress-tracker.js +118 -0
- package/dist/hints/progress-tracker.js.map +1 -0
- package/dist/hints/rules/blocking-page.d.ts +8 -0
- package/dist/hints/rules/blocking-page.d.ts.map +1 -0
- package/dist/hints/rules/blocking-page.js +58 -0
- package/dist/hints/rules/blocking-page.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 +138 -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 +59 -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/pagination-detection.d.ts +7 -0
- package/dist/hints/rules/pagination-detection.d.ts.map +1 -0
- package/dist/hints/rules/pagination-detection.js +220 -0
- package/dist/hints/rules/pagination-detection.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 +271 -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 +99 -0
- package/dist/hints/rules/sequence-detection.js.map +1 -0
- package/dist/hints/rules/setup-hints.d.ts +6 -0
- package/dist/hints/rules/setup-hints.d.ts.map +1 -0
- package/dist/hints/rules/setup-hints.js +24 -0
- package/dist/hints/rules/setup-hints.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 +74 -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 +357 -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 +210 -0
- package/dist/lightpanda/launcher.js.map +1 -0
- package/dist/mcp-server.d.ts +154 -0
- package/dist/mcp-server.d.ts.map +1 -0
- package/dist/mcp-server.js +962 -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 +224 -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 +276 -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 +256 -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 +748 -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 +123 -0
- package/dist/resources/usage-guide.js.map +1 -0
- package/dist/router/browser-router.d.ts +47 -0
- package/dist/router/browser-router.d.ts.map +1 -0
- package/dist/router/browser-router.js +157 -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 +89 -0
- package/dist/router/tool-routing-registry.js.map +1 -0
- package/dist/security/audit-logger.d.ts +2 -0
- package/dist/security/audit-logger.d.ts.map +1 -0
- package/dist/security/audit-logger.js +109 -0
- package/dist/security/audit-logger.js.map +1 -0
- package/dist/security/domain-guard.d.ts +11 -0
- package/dist/security/domain-guard.d.ts.map +1 -0
- package/dist/security/domain-guard.js +98 -0
- package/dist/security/domain-guard.js.map +1 -0
- package/dist/session-manager.d.ts +325 -0
- package/dist/session-manager.d.ts.map +1 -0
- package/dist/session-manager.js +1402 -0
- package/dist/session-manager.js.map +1 -0
- package/dist/storage-state/index.d.ts +2 -0
- package/dist/storage-state/index.d.ts.map +1 -0
- package/dist/storage-state/index.js +6 -0
- package/dist/storage-state/index.js.map +1 -0
- package/dist/storage-state/storage-state-manager.d.ts +52 -0
- package/dist/storage-state/storage-state-manager.d.ts.map +1 -0
- package/dist/storage-state/storage-state-manager.js +135 -0
- package/dist/storage-state/storage-state-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 +218 -0
- package/dist/tools/batch-execute.js.map +1 -0
- package/dist/tools/batch-paginate.d.ts +10 -0
- package/dist/tools/batch-paginate.d.ts.map +1 -0
- package/dist/tools/batch-paginate.js +436 -0
- package/dist/tools/batch-paginate.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 +281 -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 +832 -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 +380 -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 +366 -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 +263 -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 +219 -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 +224 -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 +311 -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 +163 -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 +219 -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 +170 -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 +132 -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 +107 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/inspect.d.ts +12 -0
- package/dist/tools/inspect.d.ts.map +1 -0
- package/dist/tools/inspect.js +483 -0
- package/dist/tools/inspect.js.map +1 -0
- package/dist/tools/interact.d.ts +9 -0
- package/dist/tools/interact.d.ts.map +1 -0
- package/dist/tools/interact.js +366 -0
- package/dist/tools/interact.js.map +1 -0
- package/dist/tools/javascript.d.ts +7 -0
- package/dist/tools/javascript.d.ts.map +1 -0
- package/dist/tools/javascript.js +214 -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 +314 -0
- package/dist/tools/lightweight-scroll.js.map +1 -0
- package/dist/tools/list-profiles.d.ts +10 -0
- package/dist/tools/list-profiles.d.ts.map +1 -0
- package/dist/tools/list-profiles.js +79 -0
- package/dist/tools/list-profiles.js.map +1 -0
- package/dist/tools/memory.d.ts +13 -0
- package/dist/tools/memory.d.ts.map +1 -0
- package/dist/tools/memory.js +159 -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 +422 -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 +229 -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 +735 -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 +129 -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 +268 -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 +91 -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 +154 -0
- package/dist/tools/performance-metrics.js.map +1 -0
- package/dist/tools/profile-status.d.ts +10 -0
- package/dist/tools/profile-status.d.ts.map +1 -0
- package/dist/tools/profile-status.js +108 -0
- package/dist/tools/profile-status.js.map +1 -0
- package/dist/tools/query-dom.d.ts +8 -0
- package/dist/tools/query-dom.d.ts.map +1 -0
- package/dist/tools/query-dom.js +647 -0
- package/dist/tools/query-dom.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 +544 -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 +537 -0
- package/dist/tools/request-intercept.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 +124 -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 +262 -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 +117 -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 +90 -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 +126 -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 +165 -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 +290 -0
- package/dist/tools/wait-for.js.map +1 -0
- package/dist/tools/worker.d.ts +8 -0
- package/dist/tools/worker.d.ts.map +1 -0
- package/dist/tools/worker.js +160 -0
- package/dist/tools/worker.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 +63 -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/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/adaptive-screenshot.d.ts +57 -0
- package/dist/utils/adaptive-screenshot.d.ts.map +1 -0
- package/dist/utils/adaptive-screenshot.js +126 -0
- package/dist/utils/adaptive-screenshot.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/dom-delta.d.ts +36 -0
- package/dist/utils/dom-delta.d.ts.map +1 -0
- package/dist/utils/dom-delta.js +314 -0
- package/dist/utils/dom-delta.js.map +1 -0
- package/dist/utils/element-discovery.d.ts +115 -0
- package/dist/utils/element-discovery.d.ts.map +1 -0
- package/dist/utils/element-discovery.js +519 -0
- package/dist/utils/element-discovery.js.map +1 -0
- package/dist/utils/element-finder.d.ts +49 -0
- package/dist/utils/element-finder.d.ts.map +1 -0
- package/dist/utils/element-finder.js +130 -0
- package/dist/utils/element-finder.js.map +1 -0
- package/dist/utils/format-age.d.ts +5 -0
- package/dist/utils/format-age.d.ts.map +1 -0
- package/dist/utils/format-age.js +15 -0
- package/dist/utils/format-age.js.map +1 -0
- package/dist/utils/format-error.d.ts +5 -0
- package/dist/utils/format-error.d.ts.map +1 -0
- package/dist/utils/format-error.js +10 -0
- package/dist/utils/format-error.js.map +1 -0
- package/dist/utils/index.d.ts +7 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +23 -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/page-diagnostics.d.ts +23 -0
- package/dist/utils/page-diagnostics.d.ts.map +1 -0
- package/dist/utils/page-diagnostics.js +95 -0
- package/dist/utils/page-diagnostics.js.map +1 -0
- package/dist/utils/pagination-detector.d.ts +22 -0
- package/dist/utils/pagination-detector.d.ts.map +1 -0
- package/dist/utils/pagination-detector.js +292 -0
- package/dist/utils/pagination-detector.js.map +1 -0
- package/dist/utils/pid-manager.d.ts +6 -0
- package/dist/utils/pid-manager.d.ts.map +1 -0
- package/dist/utils/pid-manager.js +135 -0
- package/dist/utils/pid-manager.js.map +1 -0
- package/dist/utils/puppeteer-helpers.d.ts +8 -0
- package/dist/utils/puppeteer-helpers.d.ts.map +1 -0
- package/dist/utils/puppeteer-helpers.js +12 -0
- package/dist/utils/puppeteer-helpers.js.map +1 -0
- package/dist/utils/ref-id-manager.d.ts +72 -0
- package/dist/utils/ref-id-manager.d.ts.map +1 -0
- package/dist/utils/ref-id-manager.js +325 -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 +114 -0
- package/dist/utils/request-queue.js.map +1 -0
- package/dist/utils/retry-with-fallback.d.ts +18 -0
- package/dist/utils/retry-with-fallback.d.ts.map +1 -0
- package/dist/utils/retry-with-fallback.js +39 -0
- package/dist/utils/retry-with-fallback.js.map +1 -0
- package/dist/utils/safe-title.d.ts +10 -0
- package/dist/utils/safe-title.d.ts.map +1 -0
- package/dist/utils/safe-title.js +24 -0
- package/dist/utils/safe-title.js.map +1 -0
- package/dist/utils/schema-validator.d.ts +12 -0
- package/dist/utils/schema-validator.d.ts.map +1 -0
- package/dist/utils/schema-validator.js +70 -0
- package/dist/utils/schema-validator.js.map +1 -0
- package/dist/utils/shadow-dom.d.ts +114 -0
- package/dist/utils/shadow-dom.d.ts.map +1 -0
- package/dist/utils/shadow-dom.js +385 -0
- package/dist/utils/shadow-dom.js.map +1 -0
- package/dist/utils/smart-goto.d.ts +39 -0
- package/dist/utils/smart-goto.d.ts.map +1 -0
- package/dist/utils/smart-goto.js +134 -0
- package/dist/utils/smart-goto.js.map +1 -0
- package/dist/utils/url-utils.d.ts +5 -0
- package/dist/utils/url-utils.d.ts.map +1 -0
- package/dist/utils/url-utils.js +15 -0
- package/dist/utils/url-utils.js.map +1 -0
- package/dist/utils/visual-summary.d.ts +17 -0
- package/dist/utils/visual-summary.d.ts.map +1 -0
- package/dist/utils/visual-summary.js +215 -0
- package/dist/utils/visual-summary.js.map +1 -0
- package/dist/utils/with-timeout.d.ts +5 -0
- package/dist/utils/with-timeout.d.ts.map +1 -0
- package/dist/utils/with-timeout.js +15 -0
- package/dist/utils/with-timeout.js.map +1 -0
- package/dist/version.d.ts +5 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +22 -0
- package/dist/version.js.map +1 -0
- package/package.json +1 -0
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.OpenChromeTimeoutError = void 0;
|
|
4
|
+
exports.isTimeoutError = isTimeoutError;
|
|
5
|
+
/**
|
|
6
|
+
* Typed timeout error for OpenChrome.
|
|
7
|
+
* Replaces fragile string-based timeout detection across the codebase.
|
|
8
|
+
*/
|
|
9
|
+
class OpenChromeTimeoutError extends Error {
|
|
10
|
+
/** Whether the operation may have produced useful partial state (e.g., partial DOM load). */
|
|
11
|
+
recoverable;
|
|
12
|
+
/** Original operation label for diagnostics. */
|
|
13
|
+
label;
|
|
14
|
+
/** Timeout duration in milliseconds. */
|
|
15
|
+
timeoutMs;
|
|
16
|
+
constructor(label, timeoutMs, recoverable = false) {
|
|
17
|
+
super(`${label} timed out after ${timeoutMs}ms`);
|
|
18
|
+
Object.setPrototypeOf(this, new.target.prototype);
|
|
19
|
+
this.name = 'OpenChromeTimeoutError';
|
|
20
|
+
this.label = label;
|
|
21
|
+
this.timeoutMs = timeoutMs;
|
|
22
|
+
this.recoverable = recoverable;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
exports.OpenChromeTimeoutError = OpenChromeTimeoutError;
|
|
26
|
+
/**
|
|
27
|
+
* Type guard for timeout errors. Checks for:
|
|
28
|
+
* 1. OpenChromeTimeoutError instances (preferred)
|
|
29
|
+
* 2. Legacy string-based patterns including Puppeteer's "Waiting failed: Xms exceeded"
|
|
30
|
+
*/
|
|
31
|
+
function isTimeoutError(error) {
|
|
32
|
+
if (error instanceof OpenChromeTimeoutError)
|
|
33
|
+
return true;
|
|
34
|
+
if (error instanceof Error) {
|
|
35
|
+
const msg = error.message.toLowerCase();
|
|
36
|
+
return (msg.includes('timed out') ||
|
|
37
|
+
/waiting failed:.*exceeded/i.test(error.message));
|
|
38
|
+
}
|
|
39
|
+
return false;
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=timeout.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"timeout.js","sourceRoot":"","sources":["../../src/errors/timeout.ts"],"names":[],"mappings":";;;AA2BA,wCAUC;AArCD;;;GAGG;AACH,MAAa,sBAAuB,SAAQ,KAAK;IAC/C,6FAA6F;IACpF,WAAW,CAAU;IAC9B,gDAAgD;IACvC,KAAK,CAAS;IACvB,wCAAwC;IAC/B,SAAS,CAAS;IAE3B,YAAY,KAAa,EAAE,SAAiB,EAAE,WAAW,GAAG,KAAK;QAC/D,KAAK,CAAC,GAAG,KAAK,oBAAoB,SAAS,IAAI,CAAC,CAAC;QACjD,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAClD,IAAI,CAAC,IAAI,GAAG,wBAAwB,CAAC;QACrC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IACjC,CAAC;CACF;AAhBD,wDAgBC;AAED;;;;GAIG;AACH,SAAgB,cAAc,CAAC,KAAc;IAC3C,IAAI,KAAK,YAAY,sBAAsB;QAAE,OAAO,IAAI,CAAC;IACzD,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;QAC3B,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;QACxC,OAAO,CACL,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC;YACzB,4BAA4B,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CACjD,CAAC;IACJ,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HintEngine — evaluates rules against tool results to produce proactive hints.
|
|
3
|
+
*
|
|
4
|
+
* Rules are sorted by priority (lower = higher priority) and evaluated first-match-wins.
|
|
5
|
+
* Uses ActivityTracker's recent calls for sequence/pattern detection.
|
|
6
|
+
* Integrates PatternLearner for adaptive error→recovery learning.
|
|
7
|
+
*
|
|
8
|
+
* Escalation system (issue #71):
|
|
9
|
+
* - Fire count 1-2: info severity (original hint text)
|
|
10
|
+
* - Fire count 3-4: warning severity (⚠️ WARNING prefix)
|
|
11
|
+
* - Fire count 5+: critical severity (🛑 CRITICAL prefix + action history)
|
|
12
|
+
* Fire counts accumulate per rule across the session and never reset.
|
|
13
|
+
*/
|
|
14
|
+
import type { ToolCallEvent } from '../dashboard/types';
|
|
15
|
+
import type { ActivityTracker } from '../dashboard/activity-tracker';
|
|
16
|
+
import { PatternLearner } from './pattern-learner';
|
|
17
|
+
import { ProgressTracker } from './progress-tracker.js';
|
|
18
|
+
export interface HintContext {
|
|
19
|
+
toolName: string;
|
|
20
|
+
resultText: string;
|
|
21
|
+
isError: boolean;
|
|
22
|
+
recentCalls: ToolCallEvent[];
|
|
23
|
+
fireCounts: Map<string, number>;
|
|
24
|
+
}
|
|
25
|
+
export interface HintRule {
|
|
26
|
+
name: string;
|
|
27
|
+
priority: number;
|
|
28
|
+
maxSeverity?: HintSeverity;
|
|
29
|
+
match(ctx: HintContext): string | null;
|
|
30
|
+
}
|
|
31
|
+
export type HintSeverity = 'info' | 'warning' | 'critical';
|
|
32
|
+
export interface HintLogEntry {
|
|
33
|
+
timestamp: number;
|
|
34
|
+
toolName: string;
|
|
35
|
+
isError: boolean;
|
|
36
|
+
matchedRule: string | null;
|
|
37
|
+
hint: string | null;
|
|
38
|
+
severity: HintSeverity | null;
|
|
39
|
+
fireCount: number;
|
|
40
|
+
}
|
|
41
|
+
export interface HintResult {
|
|
42
|
+
severity: HintSeverity;
|
|
43
|
+
rule: string;
|
|
44
|
+
fireCount: number;
|
|
45
|
+
hint: string;
|
|
46
|
+
rawHint: string;
|
|
47
|
+
suggestion?: {
|
|
48
|
+
tool?: string;
|
|
49
|
+
reason: string;
|
|
50
|
+
};
|
|
51
|
+
context?: {
|
|
52
|
+
element?: string;
|
|
53
|
+
coordinates?: string;
|
|
54
|
+
ref?: string;
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
export declare class HintEngine {
|
|
58
|
+
private rules;
|
|
59
|
+
private activityTracker;
|
|
60
|
+
private learner;
|
|
61
|
+
private progressTracker;
|
|
62
|
+
private logFilePath;
|
|
63
|
+
private hintEscalation;
|
|
64
|
+
private missCounts;
|
|
65
|
+
private logStream;
|
|
66
|
+
private logBuffer;
|
|
67
|
+
private flushTimer;
|
|
68
|
+
private static readonly FLUSH_INTERVAL;
|
|
69
|
+
constructor(activityTracker: ActivityTracker, progressTracker?: ProgressTracker);
|
|
70
|
+
/**
|
|
71
|
+
* Enable hit/miss logging to a JSONL file for data collection.
|
|
72
|
+
*/
|
|
73
|
+
enableLogging(dirPath: string): void;
|
|
74
|
+
/**
|
|
75
|
+
* Enable adaptive learning — load existing patterns and persist new ones.
|
|
76
|
+
*/
|
|
77
|
+
enableLearning(dirPath: string): void;
|
|
78
|
+
/**
|
|
79
|
+
* Evaluate rules and return the first matching structured hint, or null.
|
|
80
|
+
* Also feeds the learner for adaptive pattern detection.
|
|
81
|
+
*
|
|
82
|
+
* Returns HintResult with escalating severity based on per-rule fire count:
|
|
83
|
+
* - 1-2 firings: info (original hint text)
|
|
84
|
+
* - 3-4 firings: warning (⚠️ WARNING prefix)
|
|
85
|
+
* - 5+ firings: critical (🛑 CRITICAL prefix + action history)
|
|
86
|
+
*/
|
|
87
|
+
getHint(toolName: string, result: Record<string, unknown>, isError: boolean, sessionId?: string): HintResult | null;
|
|
88
|
+
private getSeverity;
|
|
89
|
+
private formatHintMessage;
|
|
90
|
+
private extractContext;
|
|
91
|
+
private extractSuggestion;
|
|
92
|
+
/**
|
|
93
|
+
* Extract text content from an MCPResult for pattern matching.
|
|
94
|
+
*/
|
|
95
|
+
private extractText;
|
|
96
|
+
/**
|
|
97
|
+
* Write a log entry via buffered async stream (best-effort, non-blocking).
|
|
98
|
+
*/
|
|
99
|
+
private log;
|
|
100
|
+
/**
|
|
101
|
+
* Flush buffered log entries to the write stream.
|
|
102
|
+
*/
|
|
103
|
+
private flushBuffer;
|
|
104
|
+
/**
|
|
105
|
+
* Flush pending writes and close the log stream. Call on shutdown.
|
|
106
|
+
*/
|
|
107
|
+
destroy(): void;
|
|
108
|
+
/**
|
|
109
|
+
* Get all registered rules (for testing).
|
|
110
|
+
*/
|
|
111
|
+
getRules(): HintRule[];
|
|
112
|
+
/**
|
|
113
|
+
* Get the pattern learner (for testing).
|
|
114
|
+
*/
|
|
115
|
+
getLearner(): PatternLearner;
|
|
116
|
+
}
|
|
117
|
+
//# sourceMappingURL=hint-engine.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hint-engine.d.ts","sourceRoot":"","sources":["../../src/hints/hint-engine.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,347 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* HintEngine — evaluates rules against tool results to produce proactive hints.
|
|
4
|
+
*
|
|
5
|
+
* Rules are sorted by priority (lower = higher priority) and evaluated first-match-wins.
|
|
6
|
+
* Uses ActivityTracker's recent calls for sequence/pattern detection.
|
|
7
|
+
* Integrates PatternLearner for adaptive error→recovery learning.
|
|
8
|
+
*
|
|
9
|
+
* Escalation system (issue #71):
|
|
10
|
+
* - Fire count 1-2: info severity (original hint text)
|
|
11
|
+
* - Fire count 3-4: warning severity (⚠️ WARNING prefix)
|
|
12
|
+
* - Fire count 5+: critical severity (🛑 CRITICAL prefix + action history)
|
|
13
|
+
* Fire counts accumulate per rule across the session and never reset.
|
|
14
|
+
*/
|
|
15
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
16
|
+
if (k2 === undefined) k2 = k;
|
|
17
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
18
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
19
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
20
|
+
}
|
|
21
|
+
Object.defineProperty(o, k2, desc);
|
|
22
|
+
}) : (function(o, m, k, k2) {
|
|
23
|
+
if (k2 === undefined) k2 = k;
|
|
24
|
+
o[k2] = m[k];
|
|
25
|
+
}));
|
|
26
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
27
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
28
|
+
}) : function(o, v) {
|
|
29
|
+
o["default"] = v;
|
|
30
|
+
});
|
|
31
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
32
|
+
var ownKeys = function(o) {
|
|
33
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
34
|
+
var ar = [];
|
|
35
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
36
|
+
return ar;
|
|
37
|
+
};
|
|
38
|
+
return ownKeys(o);
|
|
39
|
+
};
|
|
40
|
+
return function (mod) {
|
|
41
|
+
if (mod && mod.__esModule) return mod;
|
|
42
|
+
var result = {};
|
|
43
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
44
|
+
__setModuleDefault(result, mod);
|
|
45
|
+
return result;
|
|
46
|
+
};
|
|
47
|
+
})();
|
|
48
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
49
|
+
exports.HintEngine = void 0;
|
|
50
|
+
const fs = __importStar(require("fs"));
|
|
51
|
+
const path = __importStar(require("path"));
|
|
52
|
+
const pattern_learner_1 = require("./pattern-learner");
|
|
53
|
+
const progress_tracker_js_1 = require("./progress-tracker.js");
|
|
54
|
+
const error_recovery_1 = require("./rules/error-recovery");
|
|
55
|
+
const blocking_page_1 = require("./rules/blocking-page");
|
|
56
|
+
const composite_suggestions_1 = require("./rules/composite-suggestions");
|
|
57
|
+
const sequence_detection_1 = require("./rules/sequence-detection");
|
|
58
|
+
const repetition_detection_1 = require("./rules/repetition-detection");
|
|
59
|
+
const pagination_detection_1 = require("./rules/pagination-detection");
|
|
60
|
+
const learned_rules_1 = require("./rules/learned-rules");
|
|
61
|
+
const success_hints_1 = require("./rules/success-hints");
|
|
62
|
+
const setup_hints_1 = require("./rules/setup-hints");
|
|
63
|
+
class HintEngine {
|
|
64
|
+
rules;
|
|
65
|
+
activityTracker;
|
|
66
|
+
learner;
|
|
67
|
+
progressTracker;
|
|
68
|
+
logFilePath = null;
|
|
69
|
+
hintEscalation = new Map(); // ruleName -> session fire count
|
|
70
|
+
missCounts = new Map(); // ruleName -> consecutive miss count
|
|
71
|
+
// Buffered async write stream
|
|
72
|
+
logStream = null;
|
|
73
|
+
logBuffer = [];
|
|
74
|
+
flushTimer = null;
|
|
75
|
+
static FLUSH_INTERVAL = 200; // ms
|
|
76
|
+
constructor(activityTracker, progressTracker) {
|
|
77
|
+
this.activityTracker = activityTracker;
|
|
78
|
+
this.progressTracker = progressTracker ?? new progress_tracker_js_1.ProgressTracker();
|
|
79
|
+
this.learner = new pattern_learner_1.PatternLearner();
|
|
80
|
+
// Collect all rules and sort by priority (ascending = highest priority first)
|
|
81
|
+
// Learned rules (350) sit between repetition (250) and success hints (400)
|
|
82
|
+
this.rules = [
|
|
83
|
+
...setup_hints_1.setupHintRules, // priority 90
|
|
84
|
+
...error_recovery_1.errorRecoveryRules, // priority 100-108
|
|
85
|
+
...blocking_page_1.blockingPageRules, // priority 120-122
|
|
86
|
+
...pagination_detection_1.paginationDetectionRules, // priority 190-192
|
|
87
|
+
...composite_suggestions_1.compositeSuggestionRules, // priority 200-203
|
|
88
|
+
...repetition_detection_1.repetitionDetectionRules, // priority 245-252
|
|
89
|
+
...sequence_detection_1.sequenceDetectionRules, // priority 300-304
|
|
90
|
+
...(0, learned_rules_1.createLearnedRules)(this.learner), // priority 350
|
|
91
|
+
...success_hints_1.successHintRules, // priority 400-403
|
|
92
|
+
].sort((a, b) => a.priority - b.priority);
|
|
93
|
+
// Flush remaining buffer on process exit
|
|
94
|
+
process.on('exit', () => {
|
|
95
|
+
this.flushBuffer();
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Enable hit/miss logging to a JSONL file for data collection.
|
|
100
|
+
*/
|
|
101
|
+
enableLogging(dirPath) {
|
|
102
|
+
try {
|
|
103
|
+
fs.mkdirSync(dirPath, { recursive: true });
|
|
104
|
+
this.logFilePath = path.join(dirPath, `hints-${new Date().toISOString().slice(0, 10)}.jsonl`);
|
|
105
|
+
this.logStream = fs.createWriteStream(this.logFilePath, { flags: 'a' });
|
|
106
|
+
}
|
|
107
|
+
catch {
|
|
108
|
+
// Best-effort logging
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Enable adaptive learning — load existing patterns and persist new ones.
|
|
113
|
+
*/
|
|
114
|
+
enableLearning(dirPath) {
|
|
115
|
+
this.learner.enablePersistence(dirPath);
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Evaluate rules and return the first matching structured hint, or null.
|
|
119
|
+
* Also feeds the learner for adaptive pattern detection.
|
|
120
|
+
*
|
|
121
|
+
* Returns HintResult with escalating severity based on per-rule fire count:
|
|
122
|
+
* - 1-2 firings: info (original hint text)
|
|
123
|
+
* - 3-4 firings: warning (⚠️ WARNING prefix)
|
|
124
|
+
* - 5+ firings: critical (🛑 CRITICAL prefix + action history)
|
|
125
|
+
*/
|
|
126
|
+
getHint(toolName, result, isError, sessionId) {
|
|
127
|
+
const resultText = this.extractText(result);
|
|
128
|
+
const recentCalls = this.activityTracker.getRecentCalls(5, sessionId);
|
|
129
|
+
// Priority 50: Progress tracking (highest priority, runs before all rules)
|
|
130
|
+
// NOTE: ProgressTracker returns early before the rule loop. Miss-count decay
|
|
131
|
+
// for individual rules is intentionally frozen during stuck/stalling phases —
|
|
132
|
+
// we don't want to spuriously reset escalating rule fire counts while the
|
|
133
|
+
// agent is not making progress.
|
|
134
|
+
const status = this.progressTracker.evaluate(recentCalls, toolName, resultText, isError);
|
|
135
|
+
// Scope escalation keys by sessionId when available to prevent cross-session pollution
|
|
136
|
+
const escalationKey = (ruleName) => sessionId !== undefined ? `${sessionId}:${ruleName}` : ruleName;
|
|
137
|
+
if (status === 'stuck') {
|
|
138
|
+
const key = escalationKey('progress-tracker-stuck');
|
|
139
|
+
const fireCount = (this.hintEscalation.get(key) || 0) + 1;
|
|
140
|
+
this.hintEscalation.set(key, fireCount);
|
|
141
|
+
const rawHintText = 'STOP — you are stuck. The last several tool calls made no meaningful progress ' +
|
|
142
|
+
'(errors, stale refs, auth redirects, or timeouts). ' +
|
|
143
|
+
'Step back and try a completely different approach, or ask the user for help.';
|
|
144
|
+
const severity = fireCount >= 2 ? 'critical' : 'warning';
|
|
145
|
+
this.log({ timestamp: Date.now(), toolName, isError, matchedRule: 'progress-tracker-stuck', hint: rawHintText, severity, fireCount });
|
|
146
|
+
return {
|
|
147
|
+
severity,
|
|
148
|
+
rule: 'progress-tracker-stuck',
|
|
149
|
+
fireCount,
|
|
150
|
+
hint: this.formatHintMessage(severity, rawHintText, fireCount),
|
|
151
|
+
rawHint: rawHintText,
|
|
152
|
+
};
|
|
153
|
+
}
|
|
154
|
+
if (status === 'stalling') {
|
|
155
|
+
const key = escalationKey('progress-tracker-stalling');
|
|
156
|
+
const fireCount = (this.hintEscalation.get(key) || 0) + 1;
|
|
157
|
+
this.hintEscalation.set(key, fireCount);
|
|
158
|
+
const rawHintText = 'Warning: recent tool calls are not making progress. ' +
|
|
159
|
+
'Consider trying a different approach before getting stuck.';
|
|
160
|
+
const severity = this.getSeverity(fireCount);
|
|
161
|
+
this.log({ timestamp: Date.now(), toolName, isError, matchedRule: 'progress-tracker-stalling', hint: rawHintText, severity, fireCount });
|
|
162
|
+
return {
|
|
163
|
+
severity,
|
|
164
|
+
rule: 'progress-tracker-stalling',
|
|
165
|
+
fireCount,
|
|
166
|
+
hint: this.formatHintMessage(severity, rawHintText, fireCount),
|
|
167
|
+
rawHint: rawHintText,
|
|
168
|
+
};
|
|
169
|
+
}
|
|
170
|
+
const ctx = { toolName, resultText, isError, recentCalls, fireCounts: this.hintEscalation };
|
|
171
|
+
let matchedRule = null;
|
|
172
|
+
let rawHint = null;
|
|
173
|
+
let matchedMaxSeverity;
|
|
174
|
+
for (const rule of this.rules) {
|
|
175
|
+
const h = rule.match(ctx);
|
|
176
|
+
if (h) {
|
|
177
|
+
matchedRule = rule.name;
|
|
178
|
+
rawHint = h;
|
|
179
|
+
matchedMaxSeverity = rule.maxSeverity;
|
|
180
|
+
// Reset miss count on match
|
|
181
|
+
this.missCounts.set(rule.name, 0);
|
|
182
|
+
break;
|
|
183
|
+
}
|
|
184
|
+
else {
|
|
185
|
+
// Increment miss count; after 10 consecutive misses, decay fire count to 0
|
|
186
|
+
const misses = (this.missCounts.get(rule.name) || 0) + 1;
|
|
187
|
+
this.missCounts.set(rule.name, misses);
|
|
188
|
+
if (misses >= 10) {
|
|
189
|
+
this.hintEscalation.set(escalationKey(rule.name), 0);
|
|
190
|
+
this.missCounts.set(rule.name, 0);
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
if (!rawHint || !matchedRule) {
|
|
195
|
+
// Feed the learner even on miss
|
|
196
|
+
this.learner.onToolComplete(toolName, isError);
|
|
197
|
+
if (isError) {
|
|
198
|
+
this.learner.onMiss(toolName, resultText);
|
|
199
|
+
}
|
|
200
|
+
this.log({ timestamp: Date.now(), toolName, isError, matchedRule: null, hint: null, severity: null, fireCount: 0 });
|
|
201
|
+
return null;
|
|
202
|
+
}
|
|
203
|
+
// Track fire count per rule, scoped by sessionId when available
|
|
204
|
+
const matchedKey = escalationKey(matchedRule);
|
|
205
|
+
const fireCount = (this.hintEscalation.get(matchedKey) || 0) + 1;
|
|
206
|
+
this.hintEscalation.set(matchedKey, fireCount);
|
|
207
|
+
const severity = this.getSeverity(fireCount, matchedMaxSeverity);
|
|
208
|
+
let formattedHint = this.formatHintMessage(severity, rawHint, fireCount);
|
|
209
|
+
// Context-aware: extract element/coordinate info from result
|
|
210
|
+
const context = this.extractContext(resultText);
|
|
211
|
+
// For critical hints (5+), add action history to force strategy change
|
|
212
|
+
if (severity === 'critical') {
|
|
213
|
+
const recentTools = recentCalls.slice(0, 5).map(c => c.toolName);
|
|
214
|
+
const toolCounts = recentTools.reduce((acc, t) => { acc[t] = (acc[t] || 0) + 1; return acc; }, {});
|
|
215
|
+
const summary = Object.entries(toolCounts).map(([t, c]) => `${t}×${c}`).join(', ');
|
|
216
|
+
formattedHint += ` Previous actions: [${summary}].`;
|
|
217
|
+
if (context?.coordinates) {
|
|
218
|
+
formattedHint += ` Last coordinates: ${context.coordinates}.`;
|
|
219
|
+
}
|
|
220
|
+
if (context?.element) {
|
|
221
|
+
formattedHint += ` Hit element: ${context.element}.`;
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
const suggestion = this.extractSuggestion(rawHint);
|
|
225
|
+
const hintResult = {
|
|
226
|
+
severity,
|
|
227
|
+
rule: matchedRule,
|
|
228
|
+
fireCount,
|
|
229
|
+
hint: formattedHint,
|
|
230
|
+
rawHint,
|
|
231
|
+
...(suggestion && { suggestion }),
|
|
232
|
+
...(context && { context }),
|
|
233
|
+
};
|
|
234
|
+
// Feed the learner
|
|
235
|
+
this.learner.onToolComplete(toolName, isError);
|
|
236
|
+
this.log({ timestamp: Date.now(), toolName, isError, matchedRule, hint: formattedHint, severity, fireCount });
|
|
237
|
+
return hintResult;
|
|
238
|
+
}
|
|
239
|
+
getSeverity(fireCount, maxSeverity) {
|
|
240
|
+
const raw = fireCount <= 2 ? 'info' : fireCount <= 4 ? 'warning' : 'critical';
|
|
241
|
+
if (!maxSeverity)
|
|
242
|
+
return raw;
|
|
243
|
+
const order = ['info', 'warning', 'critical'];
|
|
244
|
+
return order.indexOf(raw) <= order.indexOf(maxSeverity) ? raw : maxSeverity;
|
|
245
|
+
}
|
|
246
|
+
formatHintMessage(severity, rawHint, fireCount) {
|
|
247
|
+
switch (severity) {
|
|
248
|
+
case 'info':
|
|
249
|
+
return rawHint; // Keep original text (already has "Hint:" prefix from rules)
|
|
250
|
+
case 'warning':
|
|
251
|
+
return `⚠️ WARNING (${fireCount}x): ${rawHint}`;
|
|
252
|
+
case 'critical':
|
|
253
|
+
return `🛑 CRITICAL (${fireCount}x — you MUST change approach): ${rawHint}`;
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
extractContext(resultText) {
|
|
257
|
+
const context = {};
|
|
258
|
+
// Extract coordinates from "Clicked at (X, Y)" or "(X,Y)" patterns
|
|
259
|
+
const coordMatch = resultText.match(/\((\d+),\s*(\d+)\)/);
|
|
260
|
+
if (coordMatch)
|
|
261
|
+
context.coordinates = `(${coordMatch[1]}, ${coordMatch[2]})`;
|
|
262
|
+
// Extract element info from "Hit: ..." line
|
|
263
|
+
const hitMatch = resultText.match(/Hit:\s*(.+?)(?:\n|$)/);
|
|
264
|
+
if (hitMatch)
|
|
265
|
+
context.element = hitMatch[1].trim();
|
|
266
|
+
// Extract ref ID
|
|
267
|
+
const refMatch = resultText.match(/ref[_=]["']?(\w+)/i);
|
|
268
|
+
if (refMatch)
|
|
269
|
+
context.ref = refMatch[1];
|
|
270
|
+
return Object.keys(context).length > 0 ? context : undefined;
|
|
271
|
+
}
|
|
272
|
+
extractSuggestion(rawHint) {
|
|
273
|
+
// Extract tool name from common patterns like "Use X", "Try X", "Prefer X"
|
|
274
|
+
const toolMatch = rawHint.match(/\b(?:Use|Try|Prefer)\s+(\w+)(?:\(|[\s,.])/i);
|
|
275
|
+
if (toolMatch) {
|
|
276
|
+
return {
|
|
277
|
+
tool: toolMatch[1],
|
|
278
|
+
reason: rawHint,
|
|
279
|
+
};
|
|
280
|
+
}
|
|
281
|
+
return undefined;
|
|
282
|
+
}
|
|
283
|
+
/**
|
|
284
|
+
* Extract text content from an MCPResult for pattern matching.
|
|
285
|
+
*/
|
|
286
|
+
extractText(result) {
|
|
287
|
+
const content = result.content;
|
|
288
|
+
if (!Array.isArray(content))
|
|
289
|
+
return JSON.stringify(result);
|
|
290
|
+
return content
|
|
291
|
+
.filter((c) => c.type === 'text')
|
|
292
|
+
.map((c) => c.text)
|
|
293
|
+
.join('\n');
|
|
294
|
+
}
|
|
295
|
+
/**
|
|
296
|
+
* Write a log entry via buffered async stream (best-effort, non-blocking).
|
|
297
|
+
*/
|
|
298
|
+
log(entry) {
|
|
299
|
+
if (!this.logStream)
|
|
300
|
+
return;
|
|
301
|
+
this.logBuffer.push(JSON.stringify(entry) + '\n');
|
|
302
|
+
if (!this.flushTimer) {
|
|
303
|
+
this.flushTimer = setTimeout(() => {
|
|
304
|
+
this.flushBuffer();
|
|
305
|
+
}, HintEngine.FLUSH_INTERVAL);
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
/**
|
|
309
|
+
* Flush buffered log entries to the write stream.
|
|
310
|
+
*/
|
|
311
|
+
flushBuffer() {
|
|
312
|
+
if (this.logBuffer.length > 0 && this.logStream) {
|
|
313
|
+
const data = this.logBuffer.join('');
|
|
314
|
+
this.logStream.write(data);
|
|
315
|
+
this.logBuffer = [];
|
|
316
|
+
}
|
|
317
|
+
this.flushTimer = null;
|
|
318
|
+
}
|
|
319
|
+
/**
|
|
320
|
+
* Flush pending writes and close the log stream. Call on shutdown.
|
|
321
|
+
*/
|
|
322
|
+
destroy() {
|
|
323
|
+
this.flushBuffer();
|
|
324
|
+
if (this.logStream) {
|
|
325
|
+
this.logStream.end();
|
|
326
|
+
this.logStream = null;
|
|
327
|
+
}
|
|
328
|
+
if (this.flushTimer) {
|
|
329
|
+
clearTimeout(this.flushTimer);
|
|
330
|
+
this.flushTimer = null;
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
/**
|
|
334
|
+
* Get all registered rules (for testing).
|
|
335
|
+
*/
|
|
336
|
+
getRules() {
|
|
337
|
+
return this.rules;
|
|
338
|
+
}
|
|
339
|
+
/**
|
|
340
|
+
* Get the pattern learner (for testing).
|
|
341
|
+
*/
|
|
342
|
+
getLearner() {
|
|
343
|
+
return this.learner;
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
exports.HintEngine = HintEngine;
|
|
347
|
+
//# sourceMappingURL=hint-engine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hint-engine.js","sourceRoot":"","sources":["../../src/hints/hint-engine.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hints module — Proactive hint system
|
|
3
|
+
*/
|
|
4
|
+
export { HintEngine } from './hint-engine';
|
|
5
|
+
export type { HintContext, HintRule, HintLogEntry, HintSeverity, HintResult } from './hint-engine';
|
|
6
|
+
export { PatternLearner } from './pattern-learner';
|
|
7
|
+
export type { LearnedPattern } from './pattern-learner';
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hints/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,YAAY,EAAE,WAAW,EAAE,QAAQ,EAAE,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AACnG,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,YAAY,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Hints module — Proactive hint system
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.PatternLearner = exports.HintEngine = void 0;
|
|
7
|
+
var hint_engine_1 = require("./hint-engine");
|
|
8
|
+
Object.defineProperty(exports, "HintEngine", { enumerable: true, get: function () { return hint_engine_1.HintEngine; } });
|
|
9
|
+
var pattern_learner_1 = require("./pattern-learner");
|
|
10
|
+
Object.defineProperty(exports, "PatternLearner", { enumerable: true, get: function () { return pattern_learner_1.PatternLearner; } });
|
|
11
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/hints/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,6CAA2C;AAAlC,yGAAA,UAAU,OAAA;AAEnB,qDAAmD;AAA1C,iHAAA,cAAc,OAAA"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PatternLearner — Adaptive memory system that learns error→recovery patterns.
|
|
3
|
+
*
|
|
4
|
+
* Flow:
|
|
5
|
+
* 1. Hint miss on error → start observing next 3 tool calls
|
|
6
|
+
* 2. If a different tool succeeds → record as recovery pattern
|
|
7
|
+
* 3. Same error→recovery seen N times → promote to learned rule
|
|
8
|
+
* 4. Persisted to JSON, survives across sessions
|
|
9
|
+
*/
|
|
10
|
+
export interface LearnedPattern {
|
|
11
|
+
id: string;
|
|
12
|
+
errorFingerprint: string;
|
|
13
|
+
errorTools: string[];
|
|
14
|
+
recoveryTool: string;
|
|
15
|
+
occurrences: number;
|
|
16
|
+
confidence: number;
|
|
17
|
+
firstSeen: number;
|
|
18
|
+
lastSeen: number;
|
|
19
|
+
hint: string;
|
|
20
|
+
}
|
|
21
|
+
export declare class PatternLearner {
|
|
22
|
+
private pending;
|
|
23
|
+
private rawObservations;
|
|
24
|
+
private patterns;
|
|
25
|
+
private filePath;
|
|
26
|
+
private dirty;
|
|
27
|
+
static readonly WATCH_WINDOW = 3;
|
|
28
|
+
static readonly PROMOTE_THRESHOLD = 3;
|
|
29
|
+
static readonly CONFIDENCE_THRESHOLD = 0.6;
|
|
30
|
+
static readonly MAX_PENDING = 10;
|
|
31
|
+
/**
|
|
32
|
+
* Enable persistence — load existing patterns and save new ones.
|
|
33
|
+
*/
|
|
34
|
+
enablePersistence(dirPath: string): void;
|
|
35
|
+
/**
|
|
36
|
+
* Called when a hint miss occurs on an error (no static rule matched).
|
|
37
|
+
* Starts observing subsequent calls to detect recovery pattern.
|
|
38
|
+
*/
|
|
39
|
+
onMiss(toolName: string, errorText: string): void;
|
|
40
|
+
/**
|
|
41
|
+
* Called on every tool completion to observe potential recovery patterns.
|
|
42
|
+
*/
|
|
43
|
+
onToolComplete(toolName: string, isError: boolean): void;
|
|
44
|
+
/**
|
|
45
|
+
* Record an observed error→recovery correlation.
|
|
46
|
+
*/
|
|
47
|
+
private recordRecovery;
|
|
48
|
+
/**
|
|
49
|
+
* Check if a raw observation should be promoted to a learned pattern.
|
|
50
|
+
*/
|
|
51
|
+
private tryPromote;
|
|
52
|
+
/**
|
|
53
|
+
* Match an error against learned patterns.
|
|
54
|
+
*/
|
|
55
|
+
matchPattern(errorText: string, toolName: string): LearnedPattern | null;
|
|
56
|
+
/**
|
|
57
|
+
* Normalize error text for fingerprinting.
|
|
58
|
+
* Strips dynamic values (IDs, large numbers) to group similar errors.
|
|
59
|
+
*/
|
|
60
|
+
normalizeError(text: string): string;
|
|
61
|
+
/**
|
|
62
|
+
* Get all learned patterns (for testing/inspection).
|
|
63
|
+
*/
|
|
64
|
+
getPatterns(): LearnedPattern[];
|
|
65
|
+
/**
|
|
66
|
+
* Get pending observation count (for testing).
|
|
67
|
+
*/
|
|
68
|
+
getPendingCount(): number;
|
|
69
|
+
static generateHint(recoveryTool: string, occurrences: number): string;
|
|
70
|
+
private load;
|
|
71
|
+
/**
|
|
72
|
+
* Persist learned patterns to disk.
|
|
73
|
+
*/
|
|
74
|
+
save(): void;
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=pattern-learner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pattern-learner.d.ts","sourceRoot":"","sources":["../../src/hints/pattern-learner.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CACd;AAsBD,qBAAa,cAAc;IACzB,OAAO,CAAC,OAAO,CAA4B;IAC3C,OAAO,CAAC,eAAe,CAA0C;IACjE,OAAO,CAAC,QAAQ,CAAwB;IACxC,OAAO,CAAC,QAAQ,CAAuB;IACvC,OAAO,CAAC,KAAK,CAAS;IAEtB,MAAM,CAAC,QAAQ,CAAC,YAAY,KAAK;IACjC,MAAM,CAAC,QAAQ,CAAC,iBAAiB,KAAK;IACtC,MAAM,CAAC,QAAQ,CAAC,oBAAoB,OAAO;IAC3C,MAAM,CAAC,QAAQ,CAAC,WAAW,MAAM;IAEjC;;OAEG;IACH,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAUxC;;;OAGG;IACH,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAiBjD;;OAEG;IACH,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI;IA0BxD;;OAEG;IACH,OAAO,CAAC,cAAc;IAmBtB;;OAEG;IACH,OAAO,CAAC,UAAU;IA0ClB;;OAEG;IACH,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI;IAaxE;;;OAGG;IACH,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAUpC;;OAEG;IACH,WAAW,IAAI,cAAc,EAAE;IAI/B;;OAEG;IACH,eAAe,IAAI,MAAM;IAIzB,MAAM,CAAC,YAAY,CAAC,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM;IAItE,OAAO,CAAC,IAAI;IAWZ;;OAEG;IACH,IAAI,IAAI,IAAI;CAgBb"}
|