agent-web-interface 4.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 +226 -0
- package/dist/src/browser/ensure-browser.d.ts +39 -0
- package/dist/src/browser/ensure-browser.d.ts.map +1 -0
- package/dist/src/browser/ensure-browser.js +65 -0
- package/dist/src/browser/ensure-browser.js.map +1 -0
- package/dist/src/browser/index.d.ts +8 -0
- package/dist/src/browser/index.d.ts.map +1 -0
- package/dist/src/browser/index.js +8 -0
- package/dist/src/browser/index.js.map +1 -0
- package/dist/src/browser/page-network-tracker.d.ts +96 -0
- package/dist/src/browser/page-network-tracker.d.ts.map +1 -0
- package/dist/src/browser/page-network-tracker.js +235 -0
- package/dist/src/browser/page-network-tracker.js.map +1 -0
- package/dist/src/browser/page-registry.d.ts +137 -0
- package/dist/src/browser/page-registry.d.ts.map +1 -0
- package/dist/src/browser/page-registry.js +194 -0
- package/dist/src/browser/page-registry.js.map +1 -0
- package/dist/src/browser/page-stabilization.d.ts +35 -0
- package/dist/src/browser/page-stabilization.d.ts.map +1 -0
- package/dist/src/browser/page-stabilization.js +42 -0
- package/dist/src/browser/page-stabilization.js.map +1 -0
- package/dist/src/browser/session-manager.d.ts +336 -0
- package/dist/src/browser/session-manager.d.ts.map +1 -0
- package/dist/src/browser/session-manager.js +964 -0
- package/dist/src/browser/session-manager.js.map +1 -0
- package/dist/src/cdp/cdp-client.interface.d.ts +193 -0
- package/dist/src/cdp/cdp-client.interface.d.ts.map +1 -0
- package/dist/src/cdp/cdp-client.interface.js +9 -0
- package/dist/src/cdp/cdp-client.interface.js.map +1 -0
- package/dist/src/cdp/index.d.ts +9 -0
- package/dist/src/cdp/index.d.ts.map +1 -0
- package/dist/src/cdp/index.js +8 -0
- package/dist/src/cdp/index.js.map +1 -0
- package/dist/src/cdp/puppeteer-cdp-client.d.ts +97 -0
- package/dist/src/cdp/puppeteer-cdp-client.d.ts.map +1 -0
- package/dist/src/cdp/puppeteer-cdp-client.js +273 -0
- package/dist/src/cdp/puppeteer-cdp-client.js.map +1 -0
- package/dist/src/cli/args.d.ts +35 -0
- package/dist/src/cli/args.d.ts.map +1 -0
- package/dist/src/cli/args.js +76 -0
- package/dist/src/cli/args.js.map +1 -0
- package/dist/src/delta/dom-stabilizer.d.ts +46 -0
- package/dist/src/delta/dom-stabilizer.d.ts.map +1 -0
- package/dist/src/delta/dom-stabilizer.js +121 -0
- package/dist/src/delta/dom-stabilizer.js.map +1 -0
- package/dist/src/delta/index.d.ts +8 -0
- package/dist/src/delta/index.d.ts.map +1 -0
- package/dist/src/delta/index.js +7 -0
- package/dist/src/delta/index.js.map +1 -0
- package/dist/src/factpack/action-selector.d.ts +36 -0
- package/dist/src/factpack/action-selector.d.ts.map +1 -0
- package/dist/src/factpack/action-selector.js +367 -0
- package/dist/src/factpack/action-selector.js.map +1 -0
- package/dist/src/factpack/dialog-detector.d.ts +19 -0
- package/dist/src/factpack/dialog-detector.d.ts.map +1 -0
- package/dist/src/factpack/dialog-detector.js +354 -0
- package/dist/src/factpack/dialog-detector.js.map +1 -0
- package/dist/src/factpack/form-detector.d.ts +28 -0
- package/dist/src/factpack/form-detector.d.ts.map +1 -0
- package/dist/src/factpack/form-detector.js +555 -0
- package/dist/src/factpack/form-detector.js.map +1 -0
- package/dist/src/factpack/index.d.ts +32 -0
- package/dist/src/factpack/index.d.ts.map +1 -0
- package/dist/src/factpack/index.js +73 -0
- package/dist/src/factpack/index.js.map +1 -0
- package/dist/src/factpack/page-classifier.d.ts +22 -0
- package/dist/src/factpack/page-classifier.d.ts.map +1 -0
- package/dist/src/factpack/page-classifier.js +526 -0
- package/dist/src/factpack/page-classifier.js.map +1 -0
- package/dist/src/factpack/types.d.ts +307 -0
- package/dist/src/factpack/types.d.ts.map +1 -0
- package/dist/src/factpack/types.js +12 -0
- package/dist/src/factpack/types.js.map +1 -0
- package/dist/src/form/dependency-tracker.d.ts +108 -0
- package/dist/src/form/dependency-tracker.d.ts.map +1 -0
- package/dist/src/form/dependency-tracker.js +298 -0
- package/dist/src/form/dependency-tracker.js.map +1 -0
- package/dist/src/form/field-extractor.d.ts +32 -0
- package/dist/src/form/field-extractor.d.ts.map +1 -0
- package/dist/src/form/field-extractor.js +544 -0
- package/dist/src/form/field-extractor.js.map +1 -0
- package/dist/src/form/form-detector.d.ts +103 -0
- package/dist/src/form/form-detector.d.ts.map +1 -0
- package/dist/src/form/form-detector.js +704 -0
- package/dist/src/form/form-detector.js.map +1 -0
- package/dist/src/form/form-state.d.ts +23 -0
- package/dist/src/form/form-state.d.ts.map +1 -0
- package/dist/src/form/form-state.js +39 -0
- package/dist/src/form/form-state.js.map +1 -0
- package/dist/src/form/index.d.ts +23 -0
- package/dist/src/form/index.d.ts.map +1 -0
- package/dist/src/form/index.js +27 -0
- package/dist/src/form/index.js.map +1 -0
- package/dist/src/form/runtime-value-reader.d.ts +72 -0
- package/dist/src/form/runtime-value-reader.d.ts.map +1 -0
- package/dist/src/form/runtime-value-reader.js +232 -0
- package/dist/src/form/runtime-value-reader.js.map +1 -0
- package/dist/src/form/types.d.ts +384 -0
- package/dist/src/form/types.d.ts.map +1 -0
- package/dist/src/form/types.js +17 -0
- package/dist/src/form/types.js.map +1 -0
- package/dist/src/index.d.ts +8 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +212 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/lib/constants.d.ts +27 -0
- package/dist/src/lib/constants.d.ts.map +1 -0
- package/dist/src/lib/constants.js +63 -0
- package/dist/src/lib/constants.js.map +1 -0
- package/dist/src/lib/index.d.ts +12 -0
- package/dist/src/lib/index.d.ts.map +1 -0
- package/dist/src/lib/index.js +17 -0
- package/dist/src/lib/index.js.map +1 -0
- package/dist/src/lib/regions.d.ts +29 -0
- package/dist/src/lib/regions.d.ts.map +1 -0
- package/dist/src/lib/regions.js +93 -0
- package/dist/src/lib/regions.js.map +1 -0
- package/dist/src/lib/scoring.d.ts +47 -0
- package/dist/src/lib/scoring.d.ts.map +1 -0
- package/dist/src/lib/scoring.js +79 -0
- package/dist/src/lib/scoring.js.map +1 -0
- package/dist/src/lib/selectors.d.ts +42 -0
- package/dist/src/lib/selectors.d.ts.map +1 -0
- package/dist/src/lib/selectors.js +138 -0
- package/dist/src/lib/selectors.js.map +1 -0
- package/dist/src/lib/text-utils.d.ts +155 -0
- package/dist/src/lib/text-utils.d.ts.map +1 -0
- package/dist/src/lib/text-utils.js +391 -0
- package/dist/src/lib/text-utils.js.map +1 -0
- package/dist/src/observation/eid-linker.d.ts +104 -0
- package/dist/src/observation/eid-linker.d.ts.map +1 -0
- package/dist/src/observation/eid-linker.js +403 -0
- package/dist/src/observation/eid-linker.js.map +1 -0
- package/dist/src/observation/index.d.ts +12 -0
- package/dist/src/observation/index.d.ts.map +1 -0
- package/dist/src/observation/index.js +15 -0
- package/dist/src/observation/index.js.map +1 -0
- package/dist/src/observation/observation-accumulator.d.ts +58 -0
- package/dist/src/observation/observation-accumulator.d.ts.map +1 -0
- package/dist/src/observation/observation-accumulator.js +213 -0
- package/dist/src/observation/observation-accumulator.js.map +1 -0
- package/dist/src/observation/observation.types.d.ts +139 -0
- package/dist/src/observation/observation.types.d.ts.map +1 -0
- package/dist/src/observation/observation.types.js +59 -0
- package/dist/src/observation/observation.types.js.map +1 -0
- package/dist/src/observation/observer-script.d.ts +19 -0
- package/dist/src/observation/observer-script.d.ts.map +1 -0
- package/dist/src/observation/observer-script.js +569 -0
- package/dist/src/observation/observer-script.js.map +1 -0
- package/dist/src/query/index.d.ts +9 -0
- package/dist/src/query/index.d.ts.map +1 -0
- package/dist/src/query/index.js +10 -0
- package/dist/src/query/index.js.map +1 -0
- package/dist/src/query/query-engine.d.ts +111 -0
- package/dist/src/query/query-engine.d.ts.map +1 -0
- package/dist/src/query/query-engine.js +509 -0
- package/dist/src/query/query-engine.js.map +1 -0
- package/dist/src/query/types/index.d.ts +5 -0
- package/dist/src/query/types/index.d.ts.map +1 -0
- package/dist/src/query/types/index.js +5 -0
- package/dist/src/query/types/index.js.map +1 -0
- package/dist/src/query/types/query.types.d.ts +141 -0
- package/dist/src/query/types/query.types.d.ts.map +1 -0
- package/dist/src/query/types/query.types.js +19 -0
- package/dist/src/query/types/query.types.js.map +1 -0
- package/dist/src/renderer/budget-manager.d.ts +46 -0
- package/dist/src/renderer/budget-manager.d.ts.map +1 -0
- package/dist/src/renderer/budget-manager.js +133 -0
- package/dist/src/renderer/budget-manager.js.map +1 -0
- package/dist/src/renderer/constants.d.ts +38 -0
- package/dist/src/renderer/constants.d.ts.map +1 -0
- package/dist/src/renderer/constants.js +29 -0
- package/dist/src/renderer/constants.js.map +1 -0
- package/dist/src/renderer/index.d.ts +12 -0
- package/dist/src/renderer/index.d.ts.map +1 -0
- package/dist/src/renderer/index.js +16 -0
- package/dist/src/renderer/index.js.map +1 -0
- package/dist/src/renderer/section-renderers.d.ts +42 -0
- package/dist/src/renderer/section-renderers.d.ts.map +1 -0
- package/dist/src/renderer/section-renderers.js +252 -0
- package/dist/src/renderer/section-renderers.js.map +1 -0
- package/dist/src/renderer/token-counter.d.ts +45 -0
- package/dist/src/renderer/token-counter.d.ts.map +1 -0
- package/dist/src/renderer/token-counter.js +65 -0
- package/dist/src/renderer/token-counter.js.map +1 -0
- package/dist/src/renderer/types.d.ts +71 -0
- package/dist/src/renderer/types.d.ts.map +1 -0
- package/dist/src/renderer/types.js +7 -0
- package/dist/src/renderer/types.js.map +1 -0
- package/dist/src/renderer/xml-renderer.d.ts +42 -0
- package/dist/src/renderer/xml-renderer.d.ts.map +1 -0
- package/dist/src/renderer/xml-renderer.js +103 -0
- package/dist/src/renderer/xml-renderer.js.map +1 -0
- package/dist/src/server/index.d.ts +8 -0
- package/dist/src/server/index.d.ts.map +1 -0
- package/dist/src/server/index.js +8 -0
- package/dist/src/server/index.js.map +1 -0
- package/dist/src/server/mcp-server.d.ts +59 -0
- package/dist/src/server/mcp-server.d.ts.map +1 -0
- package/dist/src/server/mcp-server.js +140 -0
- package/dist/src/server/mcp-server.js.map +1 -0
- package/dist/src/server/server-config.d.ts +41 -0
- package/dist/src/server/server-config.d.ts.map +1 -0
- package/dist/src/server/server-config.js +80 -0
- package/dist/src/server/server-config.js.map +1 -0
- package/dist/src/server/session-store.d.ts +148 -0
- package/dist/src/server/session-store.d.ts.map +1 -0
- package/dist/src/server/session-store.js +224 -0
- package/dist/src/server/session-store.js.map +1 -0
- package/dist/src/shared/errors/browser-session.error.d.ts +102 -0
- package/dist/src/shared/errors/browser-session.error.d.ts.map +1 -0
- package/dist/src/shared/errors/browser-session.error.js +153 -0
- package/dist/src/shared/errors/browser-session.error.js.map +1 -0
- package/dist/src/shared/errors/index.d.ts +5 -0
- package/dist/src/shared/errors/index.d.ts.map +1 -0
- package/dist/src/shared/errors/index.js +5 -0
- package/dist/src/shared/errors/index.js.map +1 -0
- package/dist/src/shared/services/dom-transformer.service.d.ts +71 -0
- package/dist/src/shared/services/dom-transformer.service.d.ts.map +1 -0
- package/dist/src/shared/services/dom-transformer.service.js +190 -0
- package/dist/src/shared/services/dom-transformer.service.js.map +1 -0
- package/dist/src/shared/services/index.d.ts +7 -0
- package/dist/src/shared/services/index.d.ts.map +1 -0
- package/dist/src/shared/services/index.js +7 -0
- package/dist/src/shared/services/index.js.map +1 -0
- package/dist/src/shared/services/logging.service.d.ts +154 -0
- package/dist/src/shared/services/logging.service.d.ts.map +1 -0
- package/dist/src/shared/services/logging.service.js +267 -0
- package/dist/src/shared/services/logging.service.js.map +1 -0
- package/dist/src/shared/services/selector-builder.service.d.ts +53 -0
- package/dist/src/shared/services/selector-builder.service.d.ts.map +1 -0
- package/dist/src/shared/services/selector-builder.service.js +240 -0
- package/dist/src/shared/services/selector-builder.service.js.map +1 -0
- package/dist/src/shared/types/base.types.d.ts +45 -0
- package/dist/src/shared/types/base.types.d.ts.map +1 -0
- package/dist/src/shared/types/base.types.js +8 -0
- package/dist/src/shared/types/base.types.js.map +1 -0
- package/dist/src/shared/types/index.d.ts +5 -0
- package/dist/src/shared/types/index.d.ts.map +1 -0
- package/dist/src/shared/types/index.js +5 -0
- package/dist/src/shared/types/index.js.map +1 -0
- package/dist/src/snapshot/element-resolver.d.ts +102 -0
- package/dist/src/snapshot/element-resolver.d.ts.map +1 -0
- package/dist/src/snapshot/element-resolver.js +379 -0
- package/dist/src/snapshot/element-resolver.js.map +1 -0
- package/dist/src/snapshot/extractors/attribute-extractor.d.ts +40 -0
- package/dist/src/snapshot/extractors/attribute-extractor.d.ts.map +1 -0
- package/dist/src/snapshot/extractors/attribute-extractor.js +237 -0
- package/dist/src/snapshot/extractors/attribute-extractor.js.map +1 -0
- package/dist/src/snapshot/extractors/ax-extractor.d.ts +36 -0
- package/dist/src/snapshot/extractors/ax-extractor.d.ts.map +1 -0
- package/dist/src/snapshot/extractors/ax-extractor.js +144 -0
- package/dist/src/snapshot/extractors/ax-extractor.js.map +1 -0
- package/dist/src/snapshot/extractors/dom-extractor.d.ts +21 -0
- package/dist/src/snapshot/extractors/dom-extractor.d.ts.map +1 -0
- package/dist/src/snapshot/extractors/dom-extractor.js +137 -0
- package/dist/src/snapshot/extractors/dom-extractor.js.map +1 -0
- package/dist/src/snapshot/extractors/grouping-resolver.d.ts +39 -0
- package/dist/src/snapshot/extractors/grouping-resolver.d.ts.map +1 -0
- package/dist/src/snapshot/extractors/grouping-resolver.js +260 -0
- package/dist/src/snapshot/extractors/grouping-resolver.js.map +1 -0
- package/dist/src/snapshot/extractors/index.d.ts +19 -0
- package/dist/src/snapshot/extractors/index.d.ts.map +1 -0
- package/dist/src/snapshot/extractors/index.js +27 -0
- package/dist/src/snapshot/extractors/index.js.map +1 -0
- package/dist/src/snapshot/extractors/label-resolver.d.ts +44 -0
- package/dist/src/snapshot/extractors/label-resolver.d.ts.map +1 -0
- package/dist/src/snapshot/extractors/label-resolver.js +173 -0
- package/dist/src/snapshot/extractors/label-resolver.js.map +1 -0
- package/dist/src/snapshot/extractors/layout-extractor.d.ts +52 -0
- package/dist/src/snapshot/extractors/layout-extractor.d.ts.map +1 -0
- package/dist/src/snapshot/extractors/layout-extractor.js +382 -0
- package/dist/src/snapshot/extractors/layout-extractor.js.map +1 -0
- package/dist/src/snapshot/extractors/locator-builder.d.ts +27 -0
- package/dist/src/snapshot/extractors/locator-builder.d.ts.map +1 -0
- package/dist/src/snapshot/extractors/locator-builder.js +223 -0
- package/dist/src/snapshot/extractors/locator-builder.js.map +1 -0
- package/dist/src/snapshot/extractors/region-resolver.d.ts +31 -0
- package/dist/src/snapshot/extractors/region-resolver.d.ts.map +1 -0
- package/dist/src/snapshot/extractors/region-resolver.js +168 -0
- package/dist/src/snapshot/extractors/region-resolver.js.map +1 -0
- package/dist/src/snapshot/extractors/state-extractor.d.ts +30 -0
- package/dist/src/snapshot/extractors/state-extractor.d.ts.map +1 -0
- package/dist/src/snapshot/extractors/state-extractor.js +181 -0
- package/dist/src/snapshot/extractors/state-extractor.js.map +1 -0
- package/dist/src/snapshot/extractors/types.d.ts +213 -0
- package/dist/src/snapshot/extractors/types.d.ts.map +1 -0
- package/dist/src/snapshot/extractors/types.js +145 -0
- package/dist/src/snapshot/extractors/types.js.map +1 -0
- package/dist/src/snapshot/index.d.ts +14 -0
- package/dist/src/snapshot/index.d.ts.map +1 -0
- package/dist/src/snapshot/index.js +18 -0
- package/dist/src/snapshot/index.js.map +1 -0
- package/dist/src/snapshot/snapshot-compiler.d.ts +73 -0
- package/dist/src/snapshot/snapshot-compiler.d.ts.map +1 -0
- package/dist/src/snapshot/snapshot-compiler.js +763 -0
- package/dist/src/snapshot/snapshot-compiler.js.map +1 -0
- package/dist/src/snapshot/snapshot-health.d.ts +97 -0
- package/dist/src/snapshot/snapshot-health.d.ts.map +1 -0
- package/dist/src/snapshot/snapshot-health.js +214 -0
- package/dist/src/snapshot/snapshot-health.js.map +1 -0
- package/dist/src/snapshot/snapshot-store.d.ts +137 -0
- package/dist/src/snapshot/snapshot-store.d.ts.map +1 -0
- package/dist/src/snapshot/snapshot-store.js +202 -0
- package/dist/src/snapshot/snapshot-store.js.map +1 -0
- package/dist/src/snapshot/snapshot.types.d.ts +250 -0
- package/dist/src/snapshot/snapshot.types.d.ts.map +1 -0
- package/dist/src/snapshot/snapshot.types.js +54 -0
- package/dist/src/snapshot/snapshot.types.js.map +1 -0
- package/dist/src/state/actionables-filter.d.ts +47 -0
- package/dist/src/state/actionables-filter.d.ts.map +1 -0
- package/dist/src/state/actionables-filter.js +173 -0
- package/dist/src/state/actionables-filter.js.map +1 -0
- package/dist/src/state/atoms-extractor.d.ts +23 -0
- package/dist/src/state/atoms-extractor.d.ts.map +1 -0
- package/dist/src/state/atoms-extractor.js +160 -0
- package/dist/src/state/atoms-extractor.js.map +1 -0
- package/dist/src/state/constants.d.ts +125 -0
- package/dist/src/state/constants.d.ts.map +1 -0
- package/dist/src/state/constants.js +131 -0
- package/dist/src/state/constants.js.map +1 -0
- package/dist/src/state/diff-engine.d.ts +23 -0
- package/dist/src/state/diff-engine.d.ts.map +1 -0
- package/dist/src/state/diff-engine.js +475 -0
- package/dist/src/state/diff-engine.js.map +1 -0
- package/dist/src/state/element-identity.d.ts +75 -0
- package/dist/src/state/element-identity.d.ts.map +1 -0
- package/dist/src/state/element-identity.js +129 -0
- package/dist/src/state/element-identity.js.map +1 -0
- package/dist/src/state/element-ref.types.d.ts +135 -0
- package/dist/src/state/element-ref.types.d.ts.map +1 -0
- package/dist/src/state/element-ref.types.js +13 -0
- package/dist/src/state/element-ref.types.js.map +1 -0
- package/dist/src/state/element-registry.d.ts +118 -0
- package/dist/src/state/element-registry.d.ts.map +1 -0
- package/dist/src/state/element-registry.js +222 -0
- package/dist/src/state/element-registry.js.map +1 -0
- package/dist/src/state/health.types.d.ts +93 -0
- package/dist/src/state/health.types.d.ts.map +1 -0
- package/dist/src/state/health.types.js +56 -0
- package/dist/src/state/health.types.js.map +1 -0
- package/dist/src/state/layer-detector.d.ts +23 -0
- package/dist/src/state/layer-detector.d.ts.map +1 -0
- package/dist/src/state/layer-detector.js +368 -0
- package/dist/src/state/layer-detector.js.map +1 -0
- package/dist/src/state/locator-generator.d.ts +21 -0
- package/dist/src/state/locator-generator.d.ts.map +1 -0
- package/dist/src/state/locator-generator.js +137 -0
- package/dist/src/state/locator-generator.js.map +1 -0
- package/dist/src/state/state-manager.d.ts +104 -0
- package/dist/src/state/state-manager.d.ts.map +1 -0
- package/dist/src/state/state-manager.js +618 -0
- package/dist/src/state/state-manager.js.map +1 -0
- package/dist/src/state/state-renderer.d.ts +63 -0
- package/dist/src/state/state-renderer.d.ts.map +1 -0
- package/dist/src/state/state-renderer.js +340 -0
- package/dist/src/state/state-renderer.js.map +1 -0
- package/dist/src/state/types.d.ts +353 -0
- package/dist/src/state/types.d.ts.map +1 -0
- package/dist/src/state/types.js +8 -0
- package/dist/src/state/types.js.map +1 -0
- package/dist/src/tools/browser-tools.d.ts +140 -0
- package/dist/src/tools/browser-tools.d.ts.map +1 -0
- package/dist/src/tools/browser-tools.js +657 -0
- package/dist/src/tools/browser-tools.js.map +1 -0
- package/dist/src/tools/errors.d.ts +63 -0
- package/dist/src/tools/errors.d.ts.map +1 -0
- package/dist/src/tools/errors.js +86 -0
- package/dist/src/tools/errors.js.map +1 -0
- package/dist/src/tools/execute-action.d.ts +135 -0
- package/dist/src/tools/execute-action.d.ts.map +1 -0
- package/dist/src/tools/execute-action.js +579 -0
- package/dist/src/tools/execute-action.js.map +1 -0
- package/dist/src/tools/form-tools.d.ts +109 -0
- package/dist/src/tools/form-tools.d.ts.map +1 -0
- package/dist/src/tools/form-tools.js +434 -0
- package/dist/src/tools/form-tools.js.map +1 -0
- package/dist/src/tools/index.d.ts +11 -0
- package/dist/src/tools/index.d.ts.map +1 -0
- package/dist/src/tools/index.js +49 -0
- package/dist/src/tools/index.js.map +1 -0
- package/dist/src/tools/response-builder.d.ts +98 -0
- package/dist/src/tools/response-builder.d.ts.map +1 -0
- package/dist/src/tools/response-builder.js +219 -0
- package/dist/src/tools/response-builder.js.map +1 -0
- package/dist/src/tools/tool-schemas.d.ts +2482 -0
- package/dist/src/tools/tool-schemas.d.ts.map +1 -0
- package/dist/src/tools/tool-schemas.js +606 -0
- package/dist/src/tools/tool-schemas.js.map +1 -0
- package/dist/vitest.config.d.ts +3 -0
- package/dist/vitest.config.d.ts.map +1 -0
- package/dist/vitest.config.js +16 -0
- package/dist/vitest.config.js.map +1 -0
- package/package.json +76 -0
|
@@ -0,0 +1,384 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Form Understanding Types
|
|
3
|
+
*
|
|
4
|
+
* Type definitions for unified form understanding.
|
|
5
|
+
* Provides semantic understanding of form-like interactions
|
|
6
|
+
* regardless of HTML implementation.
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* A logical boundary containing related input fields.
|
|
10
|
+
* Detected regardless of <form> tag presence.
|
|
11
|
+
*/
|
|
12
|
+
export interface FormRegion {
|
|
13
|
+
/** Unique identifier for this form region */
|
|
14
|
+
form_id: string;
|
|
15
|
+
/** How this form was detected */
|
|
16
|
+
detection: FormDetection;
|
|
17
|
+
/** Inferred intent of the form */
|
|
18
|
+
intent?: FormIntent;
|
|
19
|
+
/** Pattern of form interaction */
|
|
20
|
+
pattern?: FormPattern;
|
|
21
|
+
/** Fields within this form region */
|
|
22
|
+
fields: FormField[];
|
|
23
|
+
/** Submit/action buttons associated with this form */
|
|
24
|
+
actions: FormAction[];
|
|
25
|
+
/** Current state of the form */
|
|
26
|
+
state: FormState;
|
|
27
|
+
/** Bounding box of the form region */
|
|
28
|
+
bbox?: {
|
|
29
|
+
x: number;
|
|
30
|
+
y: number;
|
|
31
|
+
width: number;
|
|
32
|
+
height: number;
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* How a form region was detected.
|
|
37
|
+
*/
|
|
38
|
+
export interface FormDetection {
|
|
39
|
+
/** Detection method used */
|
|
40
|
+
method: 'semantic' | 'structural' | 'behavioral' | 'inferred';
|
|
41
|
+
/** Confidence score (0.0 - 1.0) */
|
|
42
|
+
confidence: number;
|
|
43
|
+
/** Signals that contributed to detection */
|
|
44
|
+
signals: FormSignal[];
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* A signal that contributed to form detection.
|
|
48
|
+
*/
|
|
49
|
+
export interface FormSignal {
|
|
50
|
+
/** Type of signal */
|
|
51
|
+
type: 'form_tag' | 'role_form' | 'role_search' | 'fieldset' | 'input_cluster' | 'label_input_pairs' | 'submit_button' | 'form_keywords' | 'naming_pattern';
|
|
52
|
+
/** Strength of this signal (0.0 - 1.0) */
|
|
53
|
+
strength: number;
|
|
54
|
+
/** Evidence for this signal */
|
|
55
|
+
evidence?: string;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Inferred intent of a form.
|
|
59
|
+
*/
|
|
60
|
+
export type FormIntent = 'login' | 'signup' | 'search' | 'checkout' | 'filter' | 'settings' | 'contact' | 'subscribe' | 'shipping' | 'payment' | 'profile' | 'unknown';
|
|
61
|
+
/**
|
|
62
|
+
* Pattern of form interaction.
|
|
63
|
+
*/
|
|
64
|
+
export type FormPattern = 'single_page' | 'multi_step' | 'accordion' | 'tabs' | 'wizard' | 'inline' | 'unknown';
|
|
65
|
+
/**
|
|
66
|
+
* Current state of a form.
|
|
67
|
+
*/
|
|
68
|
+
export interface FormState {
|
|
69
|
+
/** Percentage of required fields completed */
|
|
70
|
+
completion_pct: number;
|
|
71
|
+
/** Number of fields with validation errors */
|
|
72
|
+
error_count: number;
|
|
73
|
+
/** Whether the form can be submitted */
|
|
74
|
+
can_submit: boolean;
|
|
75
|
+
/** Whether any field has been modified */
|
|
76
|
+
dirty: boolean;
|
|
77
|
+
/** Number of required fields */
|
|
78
|
+
required_count: number;
|
|
79
|
+
/** Number of filled required fields */
|
|
80
|
+
filled_required_count: number;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* A single input element with rich metadata.
|
|
84
|
+
*/
|
|
85
|
+
export interface FormField {
|
|
86
|
+
/** Element ID reference to the actionable */
|
|
87
|
+
eid: string;
|
|
88
|
+
/** Backend node ID for direct CDP targeting */
|
|
89
|
+
backend_node_id: number;
|
|
90
|
+
/** Frame ID containing this field */
|
|
91
|
+
frame_id: string;
|
|
92
|
+
/** Accessible name / label */
|
|
93
|
+
label: string;
|
|
94
|
+
/** Element kind (input, select, checkbox, etc.) */
|
|
95
|
+
kind: string;
|
|
96
|
+
/** Inferred purpose of this field */
|
|
97
|
+
purpose: FieldPurpose;
|
|
98
|
+
/** Constraints on this field */
|
|
99
|
+
constraints: FieldConstraints;
|
|
100
|
+
/** Current state of this field */
|
|
101
|
+
state: FieldState;
|
|
102
|
+
/** Dependencies this field has on other fields */
|
|
103
|
+
depends_on?: FieldDependency[];
|
|
104
|
+
/** EIDs of fields that depend on this field */
|
|
105
|
+
dependents?: string[];
|
|
106
|
+
/** Position in recommended fill order */
|
|
107
|
+
sequence?: number;
|
|
108
|
+
/** Group ID if field is part of a group (e.g., radio group) */
|
|
109
|
+
group_id?: string;
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Inferred purpose of a field.
|
|
113
|
+
*/
|
|
114
|
+
export interface FieldPurpose {
|
|
115
|
+
/** Semantic type of the field */
|
|
116
|
+
semantic_type: FieldSemanticType;
|
|
117
|
+
/** Confidence in the inferred type (0.0 - 1.0) */
|
|
118
|
+
confidence: number;
|
|
119
|
+
/** Signals that led to this inference */
|
|
120
|
+
inferred_from: string[];
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Semantic types for form fields.
|
|
124
|
+
*/
|
|
125
|
+
export type FieldSemanticType = 'email' | 'phone' | 'password' | 'password_confirm' | 'name' | 'first_name' | 'last_name' | 'full_name' | 'username' | 'address' | 'street' | 'city' | 'state' | 'zip' | 'country' | 'card_number' | 'card_expiry' | 'card_cvv' | 'date' | 'date_of_birth' | 'quantity' | 'price' | 'search' | 'comment' | 'message' | 'url' | 'file' | 'color' | 'selection' | 'toggle' | 'consent' | 'unknown';
|
|
126
|
+
/**
|
|
127
|
+
* Constraints on a form field.
|
|
128
|
+
*/
|
|
129
|
+
export interface FieldConstraints {
|
|
130
|
+
/** Whether the field is required */
|
|
131
|
+
required: boolean;
|
|
132
|
+
/** Confidence in required detection (0.0 - 1.0) */
|
|
133
|
+
required_confidence: number;
|
|
134
|
+
/** Available options for select/radio/combobox */
|
|
135
|
+
options?: FieldOption[];
|
|
136
|
+
/** Minimum length constraint */
|
|
137
|
+
min_length?: number;
|
|
138
|
+
/** Maximum length constraint */
|
|
139
|
+
max_length?: number;
|
|
140
|
+
/** Regex pattern constraint */
|
|
141
|
+
pattern?: string;
|
|
142
|
+
/** Minimum value (for numeric inputs) */
|
|
143
|
+
min_value?: number;
|
|
144
|
+
/** Maximum value (for numeric inputs) */
|
|
145
|
+
max_value?: number;
|
|
146
|
+
/** Step value (for numeric inputs) */
|
|
147
|
+
step?: number;
|
|
148
|
+
/** Accepted file types (for file inputs) */
|
|
149
|
+
accept?: string;
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* An option for select/radio/combobox fields.
|
|
153
|
+
*/
|
|
154
|
+
export interface FieldOption {
|
|
155
|
+
/** Value of the option */
|
|
156
|
+
value: string;
|
|
157
|
+
/** Display label */
|
|
158
|
+
label: string;
|
|
159
|
+
/** Whether this option is selected */
|
|
160
|
+
selected?: boolean;
|
|
161
|
+
/** Whether this option is disabled */
|
|
162
|
+
disabled?: boolean;
|
|
163
|
+
/** EID of the option element (for radio buttons) */
|
|
164
|
+
eid?: string;
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Current state of a form field.
|
|
168
|
+
*/
|
|
169
|
+
export interface FieldState {
|
|
170
|
+
/**
|
|
171
|
+
* Current value (only included when include_values=true).
|
|
172
|
+
* ALWAYS masked for sensitive fields.
|
|
173
|
+
*/
|
|
174
|
+
current_value?: string;
|
|
175
|
+
/**
|
|
176
|
+
* Source of value information:
|
|
177
|
+
* - 'runtime': Read via CDP Runtime (accurate for JS-set values)
|
|
178
|
+
* - 'attribute': From HTML attribute (may be stale)
|
|
179
|
+
* - undefined: Could not determine
|
|
180
|
+
*/
|
|
181
|
+
value_source?: 'runtime' | 'attribute';
|
|
182
|
+
/**
|
|
183
|
+
* Whether the field has a non-empty value.
|
|
184
|
+
* Based on runtime read when available.
|
|
185
|
+
*/
|
|
186
|
+
has_value: boolean;
|
|
187
|
+
/** Whether the field is considered "filled" for form completion */
|
|
188
|
+
filled: boolean;
|
|
189
|
+
/** Whether the field passes validation */
|
|
190
|
+
valid: boolean;
|
|
191
|
+
/** Validation error message */
|
|
192
|
+
validation_message?: string;
|
|
193
|
+
/** Whether the field is enabled */
|
|
194
|
+
enabled: boolean;
|
|
195
|
+
/** Whether the field has been interacted with */
|
|
196
|
+
touched: boolean;
|
|
197
|
+
/** Whether the field is focused */
|
|
198
|
+
focused: boolean;
|
|
199
|
+
/** Whether the field is visible */
|
|
200
|
+
visible: boolean;
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* A dependency relationship between fields.
|
|
204
|
+
*/
|
|
205
|
+
export interface FieldDependency {
|
|
206
|
+
/** EID of the source field that this field depends on */
|
|
207
|
+
source_eid: string;
|
|
208
|
+
/** Type of dependency */
|
|
209
|
+
type: DependencyType;
|
|
210
|
+
/** Confidence in this dependency (0.0 - 1.0) */
|
|
211
|
+
confidence: number;
|
|
212
|
+
/** How this dependency was detected */
|
|
213
|
+
detection_method: DependencyDetectionMethod;
|
|
214
|
+
/** Condition under which the dependency applies */
|
|
215
|
+
condition?: DependencyCondition;
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* Type of dependency between fields.
|
|
219
|
+
*/
|
|
220
|
+
export type DependencyType = 'enables' | 'reveals' | 'populates' | 'validates' | 'requires';
|
|
221
|
+
/**
|
|
222
|
+
* How a dependency was detected.
|
|
223
|
+
*/
|
|
224
|
+
export type DependencyDetectionMethod = 'aria_controls' | 'data_attribute' | 'observed_mutation' | 'observed_state_change' | 'structural_inference' | 'naming_convention';
|
|
225
|
+
/**
|
|
226
|
+
* Condition under which a dependency applies.
|
|
227
|
+
*/
|
|
228
|
+
export interface DependencyCondition {
|
|
229
|
+
/** When the source field is in this state */
|
|
230
|
+
when_source: 'filled' | 'empty' | 'specific_value' | 'any_change';
|
|
231
|
+
/** Specific values that trigger the dependency */
|
|
232
|
+
specific_values?: string[];
|
|
233
|
+
}
|
|
234
|
+
/**
|
|
235
|
+
* A submit or action button for a form.
|
|
236
|
+
*/
|
|
237
|
+
export interface FormAction {
|
|
238
|
+
/** Element ID */
|
|
239
|
+
eid: string;
|
|
240
|
+
/** Backend node ID */
|
|
241
|
+
backend_node_id: number;
|
|
242
|
+
/** Button label */
|
|
243
|
+
label: string;
|
|
244
|
+
/** Type of action */
|
|
245
|
+
type: 'submit' | 'reset' | 'next' | 'back' | 'cancel' | 'action';
|
|
246
|
+
/** Whether the action is enabled */
|
|
247
|
+
enabled: boolean;
|
|
248
|
+
/** Why the action is disabled (if disabled) */
|
|
249
|
+
disabled_reason?: string;
|
|
250
|
+
/** Fields blocking this action */
|
|
251
|
+
blocked_by?: string[];
|
|
252
|
+
/** Whether this is the primary action */
|
|
253
|
+
is_primary: boolean;
|
|
254
|
+
}
|
|
255
|
+
/**
|
|
256
|
+
* Record of an observed effect after an action.
|
|
257
|
+
*/
|
|
258
|
+
export interface ObservedEffect {
|
|
259
|
+
/** EID of the element that triggered the effect */
|
|
260
|
+
trigger_eid: string;
|
|
261
|
+
/** Type of action that triggered the effect */
|
|
262
|
+
action_type: 'click' | 'type' | 'select' | 'focus' | 'blur';
|
|
263
|
+
/** Timestamp when effect was observed */
|
|
264
|
+
timestamp: string;
|
|
265
|
+
/** EIDs of elements that became enabled */
|
|
266
|
+
enabled: string[];
|
|
267
|
+
/** EIDs of elements that became disabled */
|
|
268
|
+
disabled: string[];
|
|
269
|
+
/** EIDs of elements that appeared */
|
|
270
|
+
appeared: string[];
|
|
271
|
+
/** EIDs of elements that disappeared */
|
|
272
|
+
disappeared: string[];
|
|
273
|
+
/** EIDs of elements whose values changed */
|
|
274
|
+
value_changed: string[];
|
|
275
|
+
/** Confidence in the causation */
|
|
276
|
+
confidence: number;
|
|
277
|
+
}
|
|
278
|
+
/**
|
|
279
|
+
* Response from get_form_understanding tool.
|
|
280
|
+
*/
|
|
281
|
+
export interface FormUnderstandingResponse {
|
|
282
|
+
/** Page ID */
|
|
283
|
+
page_id: string;
|
|
284
|
+
/** Detected form regions */
|
|
285
|
+
forms: FormRegion[];
|
|
286
|
+
/** Total field count across all forms */
|
|
287
|
+
total_fields: number;
|
|
288
|
+
/** Count of forms detected */
|
|
289
|
+
form_count: number;
|
|
290
|
+
}
|
|
291
|
+
/**
|
|
292
|
+
* Response from get_field_context tool.
|
|
293
|
+
*/
|
|
294
|
+
export interface FieldContextResponse {
|
|
295
|
+
/** The requested field */
|
|
296
|
+
field: FormField;
|
|
297
|
+
/** The form containing this field */
|
|
298
|
+
form: FormRegion;
|
|
299
|
+
/** Suggested next action */
|
|
300
|
+
next_action?: {
|
|
301
|
+
type: 'click' | 'type' | 'select';
|
|
302
|
+
eid: string;
|
|
303
|
+
reason: string;
|
|
304
|
+
};
|
|
305
|
+
}
|
|
306
|
+
/**
|
|
307
|
+
* Action result hints added to click/type responses.
|
|
308
|
+
*
|
|
309
|
+
* @experimental This interface is experimental and may change in future releases.
|
|
310
|
+
* The implementation of action result hints is deferred to a future PR.
|
|
311
|
+
* The dependency tracking mechanism provides the foundation for this feature.
|
|
312
|
+
*/
|
|
313
|
+
export interface ActionResultHints {
|
|
314
|
+
/** Status of the action */
|
|
315
|
+
status: 'success' | 'failed' | 'partial';
|
|
316
|
+
/** Error message if failed */
|
|
317
|
+
error?: string;
|
|
318
|
+
/** Reason for failure */
|
|
319
|
+
reason?: string;
|
|
320
|
+
/** Prerequisite action needed */
|
|
321
|
+
prerequisite?: {
|
|
322
|
+
eid: string;
|
|
323
|
+
label: string;
|
|
324
|
+
action: 'click' | 'type' | 'select';
|
|
325
|
+
};
|
|
326
|
+
/** Fields that were enabled by this action */
|
|
327
|
+
enabled?: string[];
|
|
328
|
+
/** Fields that were disabled by this action */
|
|
329
|
+
disabled?: string[];
|
|
330
|
+
/** Form progress after this action */
|
|
331
|
+
form_progress?: {
|
|
332
|
+
form_id: string;
|
|
333
|
+
complete: number;
|
|
334
|
+
remaining: number;
|
|
335
|
+
pct: number;
|
|
336
|
+
};
|
|
337
|
+
/** Suggested next action */
|
|
338
|
+
next_suggested?: {
|
|
339
|
+
eid: string;
|
|
340
|
+
label: string;
|
|
341
|
+
reason: string;
|
|
342
|
+
};
|
|
343
|
+
}
|
|
344
|
+
/**
|
|
345
|
+
* Intermediate form candidate during detection.
|
|
346
|
+
*/
|
|
347
|
+
export interface FormCandidate {
|
|
348
|
+
/** Potential form root element */
|
|
349
|
+
root_node_id?: string;
|
|
350
|
+
root_backend_node_id?: number;
|
|
351
|
+
/** Detection signals */
|
|
352
|
+
signals: FormSignal[];
|
|
353
|
+
/** Field EIDs in this candidate */
|
|
354
|
+
field_eids: string[];
|
|
355
|
+
/** Computed confidence */
|
|
356
|
+
confidence: number;
|
|
357
|
+
/** Detected intent */
|
|
358
|
+
intent?: FormIntent;
|
|
359
|
+
/** Bounding box */
|
|
360
|
+
bbox?: {
|
|
361
|
+
x: number;
|
|
362
|
+
y: number;
|
|
363
|
+
width: number;
|
|
364
|
+
height: number;
|
|
365
|
+
};
|
|
366
|
+
}
|
|
367
|
+
/**
|
|
368
|
+
* Configuration for form detection.
|
|
369
|
+
*/
|
|
370
|
+
export interface FormDetectionConfig {
|
|
371
|
+
/** Minimum confidence to consider a form region valid */
|
|
372
|
+
min_confidence: number;
|
|
373
|
+
/** Whether to detect formless forms (input clusters without form tag) */
|
|
374
|
+
detect_formless: boolean;
|
|
375
|
+
/** Maximum distance between elements to cluster (in pixels) */
|
|
376
|
+
cluster_distance: number;
|
|
377
|
+
/** Whether to mask sensitive field values */
|
|
378
|
+
mask_sensitive: boolean;
|
|
379
|
+
}
|
|
380
|
+
/**
|
|
381
|
+
* Default configuration for form detection.
|
|
382
|
+
*/
|
|
383
|
+
export declare const DEFAULT_FORM_DETECTION_CONFIG: FormDetectionConfig;
|
|
384
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/form/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Form Understanding Types
|
|
3
|
+
*
|
|
4
|
+
* Type definitions for unified form understanding.
|
|
5
|
+
* Provides semantic understanding of form-like interactions
|
|
6
|
+
* regardless of HTML implementation.
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* Default configuration for form detection.
|
|
10
|
+
*/
|
|
11
|
+
export const DEFAULT_FORM_DETECTION_CONFIG = {
|
|
12
|
+
min_confidence: 0.3,
|
|
13
|
+
detect_formless: true,
|
|
14
|
+
cluster_distance: 200,
|
|
15
|
+
mask_sensitive: true,
|
|
16
|
+
};
|
|
17
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/form/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AA2kBH;;GAEG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAwB;IAChE,cAAc,EAAE,GAAG;IACnB,eAAe,EAAE,IAAI;IACrB,gBAAgB,EAAE,GAAG;IACrB,cAAc,EAAE,IAAI;CACrB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAEA;;;;GAIG"}
|
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Browser Automation MCP Server
|
|
4
|
+
*
|
|
5
|
+
* Main entry point - initializes the MCP server with Puppeteer-based browser automation.
|
|
6
|
+
*/
|
|
7
|
+
import { BrowserAutomationServer } from './server/mcp-server.js';
|
|
8
|
+
import { initServerConfig, getSessionManager, getServerConfig, ensureBrowserForTools, isSessionManagerInitialized, } from './server/server-config.js';
|
|
9
|
+
import { getLogger } from './shared/services/logging.service.js';
|
|
10
|
+
const logger = getLogger();
|
|
11
|
+
import { initializeTools, initializeFormTools,
|
|
12
|
+
// Tool handlers
|
|
13
|
+
listPages, closePage, closeSession, navigate, goBack, goForward, reload, captureSnapshot, findElements, getNodeDetails, scrollElementIntoView, scrollPage, click, type, press, select, hover, getFormUnderstanding, getFieldContext,
|
|
14
|
+
// Input schemas only (all outputs are XML strings now)
|
|
15
|
+
ListPagesInputSchema, ClosePageInputSchema, CloseSessionInputSchema, NavigateInputSchema, GoBackInputSchema, GoForwardInputSchema, ReloadInputSchema, CaptureSnapshotInputSchema, FindElementsInputSchema, GetNodeDetailsInputSchema, ScrollElementIntoViewInputSchemaBase, ScrollPageInputSchema, ClickInputSchemaBase, TypeInputSchemaBase, PressInputSchema, SelectInputSchemaBase, HoverInputSchemaBase, GetFormUnderstandingInputSchema, GetFieldContextInputSchema, } from './tools/index.js';
|
|
16
|
+
/**
|
|
17
|
+
* Wrap a tool handler with lazy browser initialization.
|
|
18
|
+
* Works with both sync and async handlers - sync return values are automatically
|
|
19
|
+
* wrapped in a resolved promise by the async function.
|
|
20
|
+
* Includes error context logging when browser initialization fails.
|
|
21
|
+
*/
|
|
22
|
+
function withLazyInit(handler, toolName) {
|
|
23
|
+
return async (input) => {
|
|
24
|
+
try {
|
|
25
|
+
await ensureBrowserForTools();
|
|
26
|
+
}
|
|
27
|
+
catch (error) {
|
|
28
|
+
const config = getServerConfig();
|
|
29
|
+
const mode = config.autoConnect
|
|
30
|
+
? 'autoConnect'
|
|
31
|
+
: config.browserUrl || config.wsEndpoint
|
|
32
|
+
? 'connect'
|
|
33
|
+
: 'launch';
|
|
34
|
+
logger.error('Browser initialization failed during tool execution', error instanceof Error ? error : undefined, {
|
|
35
|
+
tool: toolName,
|
|
36
|
+
mode,
|
|
37
|
+
headless: config.headless,
|
|
38
|
+
autoConnect: config.autoConnect,
|
|
39
|
+
browserUrl: config.browserUrl,
|
|
40
|
+
wsEndpoint: config.wsEndpoint,
|
|
41
|
+
});
|
|
42
|
+
throw error;
|
|
43
|
+
}
|
|
44
|
+
return handler(input);
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Initialize all services and start the server
|
|
49
|
+
*/
|
|
50
|
+
function initializeServer() {
|
|
51
|
+
// Parse CLI arguments and initialize server configuration
|
|
52
|
+
initServerConfig(process.argv.slice(2));
|
|
53
|
+
// Create MCP server shell
|
|
54
|
+
// Note: Don't pass tools/logging capabilities - McpServer registers them automatically
|
|
55
|
+
// when tools are registered via .tool() or .registerTool()
|
|
56
|
+
const server = new BrowserAutomationServer({
|
|
57
|
+
name: 'agent-web-interface',
|
|
58
|
+
version: '3.0.0',
|
|
59
|
+
});
|
|
60
|
+
// Initialize session manager and tools
|
|
61
|
+
const session = getSessionManager();
|
|
62
|
+
initializeTools(session);
|
|
63
|
+
initializeFormTools(session);
|
|
64
|
+
// ============================================================================
|
|
65
|
+
// SESSION TOOLS
|
|
66
|
+
// ============================================================================
|
|
67
|
+
server.registerTool('list_pages', {
|
|
68
|
+
title: 'List Pages',
|
|
69
|
+
description: 'List all open browser pages with their page_id, URL, and title. Use when working with multiple pages or to get the page_id for targeting a specific page.',
|
|
70
|
+
inputSchema: ListPagesInputSchema.shape,
|
|
71
|
+
}, withLazyInit(listPages, 'list_pages'));
|
|
72
|
+
server.registerTool('close_page', {
|
|
73
|
+
title: 'Close Page',
|
|
74
|
+
description: 'Close a browser tab. Use list_pages first to get the page_id.',
|
|
75
|
+
inputSchema: ClosePageInputSchema.shape,
|
|
76
|
+
}, withLazyInit(closePage, 'close_page'));
|
|
77
|
+
server.registerTool('close_session', {
|
|
78
|
+
title: 'Close Session',
|
|
79
|
+
description: 'Close the entire browser and clear all state. Use when done with browser tasks or to reset after errors. Browser auto-restarts on next tool call.',
|
|
80
|
+
inputSchema: CloseSessionInputSchema.shape,
|
|
81
|
+
}, withLazyInit(closeSession, 'close_session'));
|
|
82
|
+
// ============================================================================
|
|
83
|
+
// NAVIGATION TOOLS
|
|
84
|
+
// ============================================================================
|
|
85
|
+
server.registerTool('navigate', {
|
|
86
|
+
title: 'Navigate',
|
|
87
|
+
description: 'Go to a URL. Returns page snapshot with interactive elements. This is typically your first action when starting browser automation.',
|
|
88
|
+
inputSchema: NavigateInputSchema.shape,
|
|
89
|
+
}, withLazyInit(navigate, 'navigate'));
|
|
90
|
+
server.registerTool('go_back', {
|
|
91
|
+
title: 'Go Back',
|
|
92
|
+
description: 'Go back one page in browser history (like clicking the back button). Returns updated page snapshot.',
|
|
93
|
+
inputSchema: GoBackInputSchema.shape,
|
|
94
|
+
}, withLazyInit(goBack, 'go_back'));
|
|
95
|
+
server.registerTool('go_forward', {
|
|
96
|
+
title: 'Go Forward',
|
|
97
|
+
description: 'Go forward one page in browser history. Returns updated page snapshot.',
|
|
98
|
+
inputSchema: GoForwardInputSchema.shape,
|
|
99
|
+
}, withLazyInit(goForward, 'go_forward'));
|
|
100
|
+
server.registerTool('reload', {
|
|
101
|
+
title: 'Reload',
|
|
102
|
+
description: 'Refresh the current page. Use when content may be stale or after waiting for server-side changes. Returns updated snapshot.',
|
|
103
|
+
inputSchema: ReloadInputSchema.shape,
|
|
104
|
+
}, withLazyInit(reload, 'reload'));
|
|
105
|
+
server.registerTool('capture_snapshot', {
|
|
106
|
+
title: 'Capture Snapshot',
|
|
107
|
+
description: 'Re-capture the page state without performing any action. Use when the page may have changed on its own (timers, live updates, animations completing). NOT needed after click/type/etc - those already return fresh snapshots.',
|
|
108
|
+
inputSchema: CaptureSnapshotInputSchema.shape,
|
|
109
|
+
}, withLazyInit(captureSnapshot, 'capture_snapshot'));
|
|
110
|
+
// ============================================================================
|
|
111
|
+
// OBSERVATION TOOLS
|
|
112
|
+
// ============================================================================
|
|
113
|
+
server.registerTool('find_elements', {
|
|
114
|
+
title: 'Find Elements',
|
|
115
|
+
description: 'Search for interactive elements OR read page text content. Filter by `kind` (button, link, textbox), `label` (case-insensitive substring match), or `region` (header, main, footer). To READ page content, ensure `include_readable: true` (default) which includes paragraphs and headings.',
|
|
116
|
+
inputSchema: FindElementsInputSchema.shape,
|
|
117
|
+
}, withLazyInit(findElements, 'find_elements'));
|
|
118
|
+
server.registerTool('get_element_details', {
|
|
119
|
+
title: 'Get Element Details',
|
|
120
|
+
description: 'Get complete details for one element: exact position, size, state, attributes. Use when you need more info than find_elements provides, like precise coordinates or full attribute list.',
|
|
121
|
+
inputSchema: GetNodeDetailsInputSchema.shape,
|
|
122
|
+
}, withLazyInit(getNodeDetails, 'get_element_details'));
|
|
123
|
+
// ============================================================================
|
|
124
|
+
// INTERACTION TOOLS
|
|
125
|
+
// ============================================================================
|
|
126
|
+
server.registerTool('scroll_element_into_view', {
|
|
127
|
+
title: 'Scroll Element Into View',
|
|
128
|
+
description: 'Scroll until a specific element is visible in the viewport. Use BEFORE clicking or interacting with elements that are off-screen.',
|
|
129
|
+
inputSchema: ScrollElementIntoViewInputSchemaBase.shape,
|
|
130
|
+
}, withLazyInit(scrollElementIntoView, 'scroll_element_into_view'));
|
|
131
|
+
server.registerTool('scroll_page', {
|
|
132
|
+
title: 'Scroll Page',
|
|
133
|
+
description: 'Scroll the viewport up or down by pixels. Use to explore page content, load lazy content, or reach elements below the fold. Returns updated snapshot.',
|
|
134
|
+
inputSchema: ScrollPageInputSchema.shape,
|
|
135
|
+
}, withLazyInit(scrollPage, 'scroll_page'));
|
|
136
|
+
server.registerTool('click', {
|
|
137
|
+
title: 'Click Element',
|
|
138
|
+
description: 'Click an element. Use for buttons, links, checkboxes, or any clickable element. Returns updated page snapshot reflecting any changes from the click.',
|
|
139
|
+
inputSchema: ClickInputSchemaBase.shape,
|
|
140
|
+
}, withLazyInit(click, 'click'));
|
|
141
|
+
server.registerTool('type', {
|
|
142
|
+
title: 'Type Text',
|
|
143
|
+
description: 'Type text into an input field, search box, or text area. Set `clear: true` to replace existing text instead of appending. Returns updated snapshot.',
|
|
144
|
+
inputSchema: TypeInputSchemaBase.shape,
|
|
145
|
+
}, withLazyInit(type, 'type'));
|
|
146
|
+
server.registerTool('press', {
|
|
147
|
+
title: 'Press Key',
|
|
148
|
+
description: 'Press a keyboard key (Enter, Tab, Escape, arrows, etc.) with optional Ctrl/Shift/Alt modifiers. Use for: submitting forms (Enter), moving between fields (Tab), closing dialogs (Escape), or keyboard shortcuts.',
|
|
149
|
+
inputSchema: PressInputSchema.shape,
|
|
150
|
+
}, withLazyInit(press, 'press'));
|
|
151
|
+
server.registerTool('select', {
|
|
152
|
+
title: 'Select Option',
|
|
153
|
+
description: 'Choose an option from a dropdown menu. Specify the option by its value attribute or visible text. Returns updated snapshot.',
|
|
154
|
+
inputSchema: SelectInputSchemaBase.shape,
|
|
155
|
+
}, withLazyInit(select, 'select'));
|
|
156
|
+
server.registerTool('hover', {
|
|
157
|
+
title: 'Hover Element',
|
|
158
|
+
description: 'Move mouse over an element without clicking. Use to trigger hover menus, tooltips, or reveal hidden content that appears on mouseover.',
|
|
159
|
+
inputSchema: HoverInputSchemaBase.shape,
|
|
160
|
+
}, withLazyInit(hover, 'hover'));
|
|
161
|
+
// ============================================================================
|
|
162
|
+
// FORM UNDERSTANDING TOOLS
|
|
163
|
+
// ============================================================================
|
|
164
|
+
server.registerTool('get_form_understanding', {
|
|
165
|
+
title: 'Get Form Understanding',
|
|
166
|
+
description: 'Analyze all forms on the page: fields, required inputs, validation rules, and field dependencies. Use BEFORE filling complex forms (multi-step, conditional fields) to understand what is required and in what order.',
|
|
167
|
+
inputSchema: GetFormUnderstandingInputSchema.shape,
|
|
168
|
+
}, withLazyInit(getFormUnderstanding, 'get_form_understanding'));
|
|
169
|
+
server.registerTool('get_field_context', {
|
|
170
|
+
title: 'Get Field Context',
|
|
171
|
+
description: 'Get detailed info about one form field: what it is for, valid input formats, dependencies on other fields, and suggested values. Use when unsure how to fill a specific field.',
|
|
172
|
+
inputSchema: GetFieldContextInputSchema.shape,
|
|
173
|
+
}, withLazyInit(getFieldContext, 'get_field_context'));
|
|
174
|
+
return server;
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Main entry point
|
|
178
|
+
*/
|
|
179
|
+
async function main() {
|
|
180
|
+
try {
|
|
181
|
+
const server = initializeServer();
|
|
182
|
+
await server.start();
|
|
183
|
+
// Handle shutdown gracefully
|
|
184
|
+
const shutdown = (signal) => {
|
|
185
|
+
console.error(`Shutting down... (${signal})`);
|
|
186
|
+
void (async () => {
|
|
187
|
+
try {
|
|
188
|
+
// Shutdown browser session first (only if initialized)
|
|
189
|
+
if (isSessionManagerInitialized()) {
|
|
190
|
+
const session = getSessionManager();
|
|
191
|
+
await session.shutdown();
|
|
192
|
+
}
|
|
193
|
+
await server.stop();
|
|
194
|
+
process.exit(0);
|
|
195
|
+
}
|
|
196
|
+
catch (shutdownError) {
|
|
197
|
+
console.error('Error during shutdown:', shutdownError);
|
|
198
|
+
process.exit(1);
|
|
199
|
+
}
|
|
200
|
+
})();
|
|
201
|
+
};
|
|
202
|
+
process.on('SIGINT', () => shutdown('SIGINT'));
|
|
203
|
+
process.on('SIGTERM', () => shutdown('SIGTERM'));
|
|
204
|
+
}
|
|
205
|
+
catch (error) {
|
|
206
|
+
console.error('Failed to start server:', error);
|
|
207
|
+
process.exit(1);
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
// Start server
|
|
211
|
+
void main();
|
|
212
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|