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,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Selector Builder Service
|
|
3
|
+
*
|
|
4
|
+
* Generates CSS, XPath, and accessibility selectors for DOM elements
|
|
5
|
+
*/
|
|
6
|
+
import type { CdpClient } from '../../cdp/cdp-client.interface.js';
|
|
7
|
+
import type { Selectors } from '../types/index.js';
|
|
8
|
+
export declare class SelectorBuilderService {
|
|
9
|
+
private readonly cdpClient;
|
|
10
|
+
constructor(cdpClient: CdpClient);
|
|
11
|
+
/**
|
|
12
|
+
* Build comprehensive selectors for a given node
|
|
13
|
+
*/
|
|
14
|
+
buildSelectors(nodeId: number, _frameId: string): Promise<Selectors>;
|
|
15
|
+
/**
|
|
16
|
+
* Build a CSS selector for an element
|
|
17
|
+
* Strategy: Use ID if available, otherwise build a path using classes/nth-child
|
|
18
|
+
*/
|
|
19
|
+
private buildCssSelector;
|
|
20
|
+
/**
|
|
21
|
+
* Build a CSS path using tag names and nth-child
|
|
22
|
+
*/
|
|
23
|
+
private buildCssPath;
|
|
24
|
+
/**
|
|
25
|
+
* Build an XPath selector for an element
|
|
26
|
+
*/
|
|
27
|
+
private buildXPathSelector;
|
|
28
|
+
/**
|
|
29
|
+
* Build an accessibility selector (role-based)
|
|
30
|
+
*/
|
|
31
|
+
private buildAccessibilitySelector;
|
|
32
|
+
/**
|
|
33
|
+
* Get node description from CDP
|
|
34
|
+
*/
|
|
35
|
+
private getNodeDescription;
|
|
36
|
+
/**
|
|
37
|
+
* Get parent node ID
|
|
38
|
+
*/
|
|
39
|
+
private getParentNode;
|
|
40
|
+
/**
|
|
41
|
+
* Get the nth-child position of a node among its siblings
|
|
42
|
+
*/
|
|
43
|
+
private getNthChildPosition;
|
|
44
|
+
/**
|
|
45
|
+
* Check if a CSS selector uniquely identifies a single element
|
|
46
|
+
*/
|
|
47
|
+
private isSelectorUnique;
|
|
48
|
+
/**
|
|
49
|
+
* Parse CDP attributes array to key-value pairs
|
|
50
|
+
*/
|
|
51
|
+
private parseAttributes;
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=selector-builder.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"selector-builder.service.d.ts","sourceRoot":"","sources":["../../../../src/shared/services/selector-builder.service.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mCAAmC,CAAC;AACnE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAWnD,qBAAa,sBAAsB;IACrB,OAAO,CAAC,QAAQ,CAAC,SAAS;gBAAT,SAAS,EAAE,SAAS;IAEjD;;OAEG;IACG,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IAU1E;;;OAGG;YACW,gBAAgB;IA8B9B;;OAEG;YACW,YAAY;IAmC1B;;OAEG;YACW,kBAAkB;IAsChC;;OAEG;YACW,0BAA0B;IAyBxC;;OAEG;YACW,kBAAkB;IAMhC;;OAEG;YACW,aAAa;IAmC3B;;OAEG;YACW,mBAAmB;IAiCjC;;OAEG;YACW,gBAAgB;IAe9B;;OAEG;IACH,OAAO,CAAC,eAAe;CAOxB"}
|
|
@@ -0,0 +1,240 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Selector Builder Service
|
|
3
|
+
*
|
|
4
|
+
* Generates CSS, XPath, and accessibility selectors for DOM elements
|
|
5
|
+
*/
|
|
6
|
+
export class SelectorBuilderService {
|
|
7
|
+
cdpClient;
|
|
8
|
+
constructor(cdpClient) {
|
|
9
|
+
this.cdpClient = cdpClient;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Build comprehensive selectors for a given node
|
|
13
|
+
*/
|
|
14
|
+
async buildSelectors(nodeId, _frameId) {
|
|
15
|
+
const [css, xpath, ax] = await Promise.all([
|
|
16
|
+
this.buildCssSelector(nodeId),
|
|
17
|
+
this.buildXPathSelector(nodeId),
|
|
18
|
+
this.buildAccessibilitySelector(nodeId),
|
|
19
|
+
]);
|
|
20
|
+
return { css, xpath, ax };
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Build a CSS selector for an element
|
|
24
|
+
* Strategy: Use ID if available, otherwise build a path using classes/nth-child
|
|
25
|
+
*/
|
|
26
|
+
async buildCssSelector(nodeId) {
|
|
27
|
+
try {
|
|
28
|
+
const nodeInfo = await this.getNodeDescription(nodeId);
|
|
29
|
+
const attributes = this.parseAttributes(nodeInfo.node.attributes ?? []);
|
|
30
|
+
// Strategy 1: Use ID (most specific)
|
|
31
|
+
if (attributes.id) {
|
|
32
|
+
return `#${attributes.id}`;
|
|
33
|
+
}
|
|
34
|
+
// Strategy 2: Use unique class combination
|
|
35
|
+
if (attributes.class) {
|
|
36
|
+
const classes = attributes.class.split(/\s+/).filter(Boolean);
|
|
37
|
+
if (classes.length > 0) {
|
|
38
|
+
const classSelector = `.${classes.join('.')}`;
|
|
39
|
+
const isUnique = await this.isSelectorUnique(classSelector);
|
|
40
|
+
if (isUnique) {
|
|
41
|
+
return classSelector;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
// Strategy 3: Build a path using tag names and nth-child
|
|
46
|
+
const path = await this.buildCssPath(nodeId);
|
|
47
|
+
return path;
|
|
48
|
+
}
|
|
49
|
+
catch {
|
|
50
|
+
return undefined;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Build a CSS path using tag names and nth-child
|
|
55
|
+
*/
|
|
56
|
+
async buildCssPath(nodeId) {
|
|
57
|
+
const segments = [];
|
|
58
|
+
let currentNodeId = nodeId;
|
|
59
|
+
try {
|
|
60
|
+
while (currentNodeId) {
|
|
61
|
+
const nodeInfo = await this.getNodeDescription(currentNodeId);
|
|
62
|
+
const tagName = nodeInfo.node.localName.toLowerCase();
|
|
63
|
+
// Get the nth-child position
|
|
64
|
+
const position = await this.getNthChildPosition(currentNodeId);
|
|
65
|
+
if (tagName === 'html') {
|
|
66
|
+
segments.unshift('html');
|
|
67
|
+
break;
|
|
68
|
+
}
|
|
69
|
+
if (position > 1) {
|
|
70
|
+
segments.unshift(`${tagName}:nth-child(${position})`);
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
segments.unshift(tagName);
|
|
74
|
+
}
|
|
75
|
+
// Get parent node
|
|
76
|
+
const parent = await this.getParentNode(currentNodeId);
|
|
77
|
+
if (!parent)
|
|
78
|
+
break;
|
|
79
|
+
currentNodeId = parent;
|
|
80
|
+
}
|
|
81
|
+
return segments.join(' > ');
|
|
82
|
+
}
|
|
83
|
+
catch {
|
|
84
|
+
return 'body';
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Build an XPath selector for an element
|
|
89
|
+
*/
|
|
90
|
+
async buildXPathSelector(nodeId) {
|
|
91
|
+
try {
|
|
92
|
+
const segments = [];
|
|
93
|
+
let currentNodeId = nodeId;
|
|
94
|
+
while (currentNodeId) {
|
|
95
|
+
const nodeInfo = await this.getNodeDescription(currentNodeId);
|
|
96
|
+
const tagName = nodeInfo.node.localName.toLowerCase();
|
|
97
|
+
const attributes = this.parseAttributes(nodeInfo.node.attributes ?? []);
|
|
98
|
+
// Use ID if available
|
|
99
|
+
if (attributes.id) {
|
|
100
|
+
segments.unshift(`//*[@id="${attributes.id}"]`);
|
|
101
|
+
break;
|
|
102
|
+
}
|
|
103
|
+
// Get position among siblings
|
|
104
|
+
const position = await this.getNthChildPosition(currentNodeId);
|
|
105
|
+
if (tagName === 'html') {
|
|
106
|
+
segments.unshift('/html');
|
|
107
|
+
break;
|
|
108
|
+
}
|
|
109
|
+
segments.unshift(`/${tagName}[${position}]`);
|
|
110
|
+
// Get parent node
|
|
111
|
+
const parent = await this.getParentNode(currentNodeId);
|
|
112
|
+
if (!parent)
|
|
113
|
+
break;
|
|
114
|
+
currentNodeId = parent;
|
|
115
|
+
}
|
|
116
|
+
return segments.join('');
|
|
117
|
+
}
|
|
118
|
+
catch {
|
|
119
|
+
return undefined;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Build an accessibility selector (role-based)
|
|
124
|
+
*/
|
|
125
|
+
async buildAccessibilitySelector(nodeId) {
|
|
126
|
+
try {
|
|
127
|
+
const nodeInfo = await this.getNodeDescription(nodeId);
|
|
128
|
+
const attributes = this.parseAttributes(nodeInfo.node.attributes ?? []);
|
|
129
|
+
const role = attributes.role ?? attributes['aria-role'];
|
|
130
|
+
const label = attributes['aria-label'];
|
|
131
|
+
const name = attributes.name;
|
|
132
|
+
if (role && label) {
|
|
133
|
+
return `role=${role}[label="${label}"]`;
|
|
134
|
+
}
|
|
135
|
+
if (role && name) {
|
|
136
|
+
return `role=${role}[name="${name}"]`;
|
|
137
|
+
}
|
|
138
|
+
if (role) {
|
|
139
|
+
return `role=${role}`;
|
|
140
|
+
}
|
|
141
|
+
return undefined;
|
|
142
|
+
}
|
|
143
|
+
catch {
|
|
144
|
+
return undefined;
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Get node description from CDP
|
|
149
|
+
*/
|
|
150
|
+
async getNodeDescription(nodeId) {
|
|
151
|
+
return this.cdpClient.send('DOM.describeNode', {
|
|
152
|
+
nodeId,
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Get parent node ID
|
|
157
|
+
*/
|
|
158
|
+
async getParentNode(nodeId) {
|
|
159
|
+
try {
|
|
160
|
+
const resolved = await this.cdpClient.send('DOM.resolveNode', { nodeId });
|
|
161
|
+
const objectId = resolved.object?.objectId;
|
|
162
|
+
if (!objectId) {
|
|
163
|
+
return null;
|
|
164
|
+
}
|
|
165
|
+
const parentResult = await this.cdpClient.send('Runtime.callFunctionOn', {
|
|
166
|
+
objectId,
|
|
167
|
+
functionDeclaration: 'function() { return this.parentElement; }',
|
|
168
|
+
returnByValue: false,
|
|
169
|
+
});
|
|
170
|
+
const parentObjectId = parentResult.result.objectId;
|
|
171
|
+
if (!parentObjectId) {
|
|
172
|
+
return null;
|
|
173
|
+
}
|
|
174
|
+
const parentNode = await this.cdpClient.send('DOM.describeNode', {
|
|
175
|
+
objectId: parentObjectId,
|
|
176
|
+
});
|
|
177
|
+
return parentNode.node.nodeId;
|
|
178
|
+
}
|
|
179
|
+
catch {
|
|
180
|
+
return null;
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Get the nth-child position of a node among its siblings
|
|
185
|
+
*/
|
|
186
|
+
async getNthChildPosition(nodeId) {
|
|
187
|
+
try {
|
|
188
|
+
const resolved = await this.cdpClient.send('DOM.resolveNode', { nodeId });
|
|
189
|
+
const objectId = resolved.object?.objectId;
|
|
190
|
+
if (!objectId)
|
|
191
|
+
return 1;
|
|
192
|
+
const result = await this.cdpClient.send('Runtime.callFunctionOn', {
|
|
193
|
+
objectId,
|
|
194
|
+
functionDeclaration: `
|
|
195
|
+
function() {
|
|
196
|
+
if (!this.parentElement) {
|
|
197
|
+
return 1;
|
|
198
|
+
}
|
|
199
|
+
const siblings = Array.from(this.parentElement.children).filter(
|
|
200
|
+
(child) => child.tagName === this.tagName
|
|
201
|
+
);
|
|
202
|
+
const index = siblings.indexOf(this);
|
|
203
|
+
return index === -1 ? 1 : index + 1;
|
|
204
|
+
}
|
|
205
|
+
`,
|
|
206
|
+
returnByValue: true,
|
|
207
|
+
});
|
|
208
|
+
return result.result.value ?? 1;
|
|
209
|
+
}
|
|
210
|
+
catch {
|
|
211
|
+
return 1;
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
/**
|
|
215
|
+
* Check if a CSS selector uniquely identifies a single element
|
|
216
|
+
*/
|
|
217
|
+
async isSelectorUnique(selector) {
|
|
218
|
+
try {
|
|
219
|
+
const result = await this.cdpClient.send('Runtime.evaluate', {
|
|
220
|
+
expression: `document.querySelectorAll(${JSON.stringify(selector)}).length`,
|
|
221
|
+
returnByValue: true,
|
|
222
|
+
});
|
|
223
|
+
return result.result.value === 1;
|
|
224
|
+
}
|
|
225
|
+
catch {
|
|
226
|
+
return false;
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
/**
|
|
230
|
+
* Parse CDP attributes array to key-value pairs
|
|
231
|
+
*/
|
|
232
|
+
parseAttributes(attrs) {
|
|
233
|
+
const result = {};
|
|
234
|
+
for (let i = 0; i < attrs.length; i += 2) {
|
|
235
|
+
result[attrs[i]] = attrs[i + 1];
|
|
236
|
+
}
|
|
237
|
+
return result;
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
//# sourceMappingURL=selector-builder.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"selector-builder.service.js","sourceRoot":"","sources":["../../../../src/shared/services/selector-builder.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared base types
|
|
3
|
+
*
|
|
4
|
+
* Minimal types kept for the new semantic snapshot system.
|
|
5
|
+
* New types for BaseSnapshot, ReadableNode, etc. will be added here.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Bounding box for element geometry
|
|
9
|
+
*/
|
|
10
|
+
export interface BBox {
|
|
11
|
+
x: number;
|
|
12
|
+
y: number;
|
|
13
|
+
w: number;
|
|
14
|
+
h: number;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Network request/response event
|
|
18
|
+
*/
|
|
19
|
+
export interface NetworkEvent {
|
|
20
|
+
requestId: string;
|
|
21
|
+
url: string;
|
|
22
|
+
method: string;
|
|
23
|
+
status?: number;
|
|
24
|
+
headers?: Record<string, string>;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Selector types for element location
|
|
28
|
+
*/
|
|
29
|
+
export interface Selectors {
|
|
30
|
+
ax?: string;
|
|
31
|
+
css?: string;
|
|
32
|
+
xpath?: string;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* DOM tree node representation (used by dom-transformer service)
|
|
36
|
+
*/
|
|
37
|
+
export interface DomTreeNode {
|
|
38
|
+
id: string;
|
|
39
|
+
nodeId?: number;
|
|
40
|
+
tag: string;
|
|
41
|
+
attrs?: string[];
|
|
42
|
+
text?: string;
|
|
43
|
+
children?: DomTreeNode[];
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=base.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.types.d.ts","sourceRoot":"","sources":["../../../../src/shared/types/base.types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;GAEG;AACH,MAAM,WAAW,IAAI;IACnB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,WAAW,EAAE,CAAC;CAC1B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.types.js","sourceRoot":"","sources":["../../../../src/shared/types/base.types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/shared/types/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,iBAAiB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/shared/types/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Element Resolver
|
|
3
|
+
*
|
|
4
|
+
* Resolves node_id from snapshot to actionable element.
|
|
5
|
+
* Provides CDP-based clicking using backendNodeId for guaranteed uniqueness.
|
|
6
|
+
*/
|
|
7
|
+
import type { CdpClient } from '../cdp/cdp-client.interface.js';
|
|
8
|
+
/**
|
|
9
|
+
* Click an element using CDP's backendNodeId directly.
|
|
10
|
+
*
|
|
11
|
+
* This bypasses Playwright's locator system to avoid strict mode violations
|
|
12
|
+
* when multiple elements match the same selector. The backendNodeId is
|
|
13
|
+
* guaranteed unique per DOM element within a CDP session.
|
|
14
|
+
*
|
|
15
|
+
* @param cdp - CDP client instance
|
|
16
|
+
* @param backendNodeId - CDP backend node ID (stable within session)
|
|
17
|
+
* @throws Error if element not found, not visible, or click fails
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* ```typescript
|
|
21
|
+
* // Click using the unique backendNodeId from snapshot
|
|
22
|
+
* await clickByBackendNodeId(cdp, node.backend_node_id);
|
|
23
|
+
* ```
|
|
24
|
+
*/
|
|
25
|
+
export declare function clickByBackendNodeId(cdp: CdpClient, backendNodeId: number): Promise<void>;
|
|
26
|
+
/**
|
|
27
|
+
* CDP Input modifier bitmask values.
|
|
28
|
+
* These are ORed together for combined modifiers.
|
|
29
|
+
*/
|
|
30
|
+
export declare const MODIFIER_ALT = 1;
|
|
31
|
+
export declare const MODIFIER_CTRL = 2;
|
|
32
|
+
export declare const MODIFIER_META = 4;
|
|
33
|
+
export declare const MODIFIER_SHIFT = 8;
|
|
34
|
+
/**
|
|
35
|
+
* Clear text in the currently focused element using Ctrl+A then Delete.
|
|
36
|
+
*
|
|
37
|
+
* This helper is used by typeByBackendNodeId and can be used directly
|
|
38
|
+
* when typing into an already-focused element.
|
|
39
|
+
*
|
|
40
|
+
* @param cdp - CDP client instance
|
|
41
|
+
*/
|
|
42
|
+
export declare function clearFocusedText(cdp: CdpClient): Promise<void>;
|
|
43
|
+
/**
|
|
44
|
+
* Type text into an element using CDP.
|
|
45
|
+
*
|
|
46
|
+
* Focuses the element first (via click), optionally clears existing text,
|
|
47
|
+
* then inserts the new text.
|
|
48
|
+
*
|
|
49
|
+
* @param cdp - CDP client instance
|
|
50
|
+
* @param backendNodeId - Element to type into
|
|
51
|
+
* @param text - Text to type
|
|
52
|
+
* @param options.clear - If true, clears existing text first (Ctrl+A, Delete)
|
|
53
|
+
*/
|
|
54
|
+
export declare function typeByBackendNodeId(cdp: CdpClient, backendNodeId: number, text: string, options?: {
|
|
55
|
+
clear?: boolean;
|
|
56
|
+
}): Promise<void>;
|
|
57
|
+
/**
|
|
58
|
+
* Press a keyboard key using CDP.
|
|
59
|
+
*
|
|
60
|
+
* Sends keyDown and keyUp events for the specified key.
|
|
61
|
+
*
|
|
62
|
+
* @param cdp - CDP client instance
|
|
63
|
+
* @param key - Key name (e.g., 'Enter', 'Tab', 'Escape', 'ArrowDown')
|
|
64
|
+
* @param modifiers - Optional modifier keys ['Control', 'Shift', 'Alt', 'Meta']
|
|
65
|
+
*/
|
|
66
|
+
export declare function pressKey(cdp: CdpClient, key: string, modifiers?: string[]): Promise<void>;
|
|
67
|
+
/**
|
|
68
|
+
* Select an option from a <select> element.
|
|
69
|
+
*
|
|
70
|
+
* Uses Runtime.callFunctionOn to set the select value and dispatch a change event.
|
|
71
|
+
*
|
|
72
|
+
* @param cdp - CDP client instance
|
|
73
|
+
* @param backendNodeId - The <select> element's backendNodeId
|
|
74
|
+
* @param value - Option value or visible text to select
|
|
75
|
+
* @returns The selected option's visible text
|
|
76
|
+
*/
|
|
77
|
+
export declare function selectOption(cdp: CdpClient, backendNodeId: number, value: string): Promise<string>;
|
|
78
|
+
/**
|
|
79
|
+
* Hover over an element using CDP.
|
|
80
|
+
*
|
|
81
|
+
* Scrolls the element into view and moves the mouse to its center.
|
|
82
|
+
*
|
|
83
|
+
* @param cdp - CDP client instance
|
|
84
|
+
* @param backendNodeId - Element to hover over
|
|
85
|
+
*/
|
|
86
|
+
export declare function hoverByBackendNodeId(cdp: CdpClient, backendNodeId: number): Promise<void>;
|
|
87
|
+
/**
|
|
88
|
+
* Scroll an element into view using CDP.
|
|
89
|
+
*
|
|
90
|
+
* @param cdp - CDP client instance
|
|
91
|
+
* @param backendNodeId - Element to scroll into view
|
|
92
|
+
*/
|
|
93
|
+
export declare function scrollIntoView(cdp: CdpClient, backendNodeId: number): Promise<void>;
|
|
94
|
+
/**
|
|
95
|
+
* Scroll the page by a specified amount.
|
|
96
|
+
*
|
|
97
|
+
* @param cdp - CDP client instance
|
|
98
|
+
* @param direction - 'up' or 'down'
|
|
99
|
+
* @param amount - Pixels to scroll (default: 500)
|
|
100
|
+
*/
|
|
101
|
+
export declare function scrollPage(cdp: CdpClient, direction: 'up' | 'down', amount?: number): Promise<void>;
|
|
102
|
+
//# sourceMappingURL=element-resolver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"element-resolver.d.ts","sourceRoot":"","sources":["../../../src/snapshot/element-resolver.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAEhE;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,oBAAoB,CAAC,GAAG,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAiE/F;AAMD;;;GAGG;AACH,eAAO,MAAM,YAAY,IAAI,CAAC;AAC9B,eAAO,MAAM,aAAa,IAAI,CAAC;AAC/B,eAAO,MAAM,aAAa,IAAI,CAAC;AAC/B,eAAO,MAAM,cAAc,IAAI,CAAC;AAuHhC;;;;;;;GAOG;AACH,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CA8BpE;AAMD;;;;;;;;;;GAUG;AACH,wBAAsB,mBAAmB,CACvC,GAAG,EAAE,SAAS,EACd,aAAa,EAAE,MAAM,EACrB,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GAC5B,OAAO,CAAC,IAAI,CAAC,CAWf;AAMD;;;;;;;;GAQG;AACH,wBAAsB,QAAQ,CAAC,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA0B/F;AAMD;;;;;;;;;GASG;AACH,wBAAsB,YAAY,CAChC,GAAG,EAAE,SAAS,EACd,aAAa,EAAE,MAAM,EACrB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,MAAM,CAAC,CAwCjB;AAMD;;;;;;;GAOG;AACH,wBAAsB,oBAAoB,CAAC,GAAG,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAQ/F;AAMD;;;;;GAKG;AACH,wBAAsB,cAAc,CAAC,GAAG,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAUzF;AAED;;;;;;GAMG;AACH,wBAAsB,UAAU,CAC9B,GAAG,EAAE,SAAS,EACd,SAAS,EAAE,IAAI,GAAG,MAAM,EACxB,MAAM,SAAM,GACX,OAAO,CAAC,IAAI,CAAC,CAMf"}
|