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,202 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Snapshot Store
|
|
3
|
+
*
|
|
4
|
+
* In-memory storage for page snapshots with optional TTL-based cleanup.
|
|
5
|
+
* Keeps most recent snapshot per page for element resolution.
|
|
6
|
+
*
|
|
7
|
+
* @module snapshot/snapshot-store
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Simple in-memory store for BaseSnapshot objects.
|
|
11
|
+
* Tracks one snapshot per page (latest overwrites previous).
|
|
12
|
+
* Supports optional TTL-based expiration with automatic cleanup.
|
|
13
|
+
*/
|
|
14
|
+
export class SnapshotStore {
|
|
15
|
+
/** Map of snapshot_id → SnapshotEntry */
|
|
16
|
+
entries = new Map();
|
|
17
|
+
/** Map of page_id → snapshot_id (for lookup by page) */
|
|
18
|
+
pageToSnapshot = new Map();
|
|
19
|
+
/** TTL in milliseconds (undefined = no expiration) */
|
|
20
|
+
ttlMs;
|
|
21
|
+
/** Cleanup interval timer */
|
|
22
|
+
cleanupTimer;
|
|
23
|
+
constructor(options) {
|
|
24
|
+
this.ttlMs = options?.ttlMs;
|
|
25
|
+
// Start automatic cleanup if TTL is configured
|
|
26
|
+
if (this.ttlMs !== undefined) {
|
|
27
|
+
const intervalMs = options?.cleanupIntervalMs ?? this.ttlMs;
|
|
28
|
+
this.startCleanupTimer(intervalMs);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Start automatic cleanup timer.
|
|
33
|
+
* @param intervalMs - Cleanup interval in milliseconds
|
|
34
|
+
*/
|
|
35
|
+
startCleanupTimer(intervalMs) {
|
|
36
|
+
this.cleanupTimer = setInterval(() => {
|
|
37
|
+
this.cleanupExpired();
|
|
38
|
+
}, intervalMs);
|
|
39
|
+
// Ensure timer doesn't prevent process exit
|
|
40
|
+
if (this.cleanupTimer.unref) {
|
|
41
|
+
this.cleanupTimer.unref();
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Stop automatic cleanup timer.
|
|
46
|
+
*/
|
|
47
|
+
stopCleanupTimer() {
|
|
48
|
+
if (this.cleanupTimer) {
|
|
49
|
+
clearInterval(this.cleanupTimer);
|
|
50
|
+
this.cleanupTimer = undefined;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Store a snapshot for a page.
|
|
55
|
+
* Overwrites any previous snapshot for the same page.
|
|
56
|
+
*
|
|
57
|
+
* @param pageId - Page identifier
|
|
58
|
+
* @param snapshot - Snapshot to store
|
|
59
|
+
*/
|
|
60
|
+
store(pageId, snapshot) {
|
|
61
|
+
// Remove previous snapshot for this page if exists
|
|
62
|
+
const previousSnapshotId = this.pageToSnapshot.get(pageId);
|
|
63
|
+
if (previousSnapshotId) {
|
|
64
|
+
this.entries.delete(previousSnapshotId);
|
|
65
|
+
}
|
|
66
|
+
// Store new snapshot with metadata
|
|
67
|
+
const entry = {
|
|
68
|
+
snapshot,
|
|
69
|
+
storedAt: Date.now(),
|
|
70
|
+
pageId,
|
|
71
|
+
};
|
|
72
|
+
this.entries.set(snapshot.snapshot_id, entry);
|
|
73
|
+
this.pageToSnapshot.set(pageId, snapshot.snapshot_id);
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Get a snapshot by its ID.
|
|
77
|
+
*
|
|
78
|
+
* @param snapshotId - Snapshot identifier
|
|
79
|
+
* @returns Snapshot or undefined if not found
|
|
80
|
+
*/
|
|
81
|
+
get(snapshotId) {
|
|
82
|
+
const entry = this.entries.get(snapshotId);
|
|
83
|
+
return entry?.snapshot;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Get full entry (with metadata) by snapshot ID.
|
|
87
|
+
*
|
|
88
|
+
* @param snapshotId - Snapshot identifier
|
|
89
|
+
* @returns SnapshotEntry or undefined if not found
|
|
90
|
+
*/
|
|
91
|
+
getEntry(snapshotId) {
|
|
92
|
+
return this.entries.get(snapshotId);
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Get the most recent snapshot for a page.
|
|
96
|
+
*
|
|
97
|
+
* @param pageId - Page identifier
|
|
98
|
+
* @returns Snapshot or undefined if no snapshot for page
|
|
99
|
+
*/
|
|
100
|
+
getByPageId(pageId) {
|
|
101
|
+
const snapshotId = this.pageToSnapshot.get(pageId);
|
|
102
|
+
return snapshotId ? this.get(snapshotId) : undefined;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Find a node within a snapshot.
|
|
106
|
+
*
|
|
107
|
+
* @param snapshotId - Snapshot identifier
|
|
108
|
+
* @param nodeId - Node identifier
|
|
109
|
+
* @returns Node or undefined if not found
|
|
110
|
+
*/
|
|
111
|
+
findNode(snapshotId, nodeId) {
|
|
112
|
+
const snapshot = this.get(snapshotId);
|
|
113
|
+
return snapshot?.nodes.find((n) => n.node_id === nodeId);
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Remove snapshot for a specific page.
|
|
117
|
+
*
|
|
118
|
+
* @param pageId - Page identifier
|
|
119
|
+
* @returns true if snapshot was removed, false if not found
|
|
120
|
+
*/
|
|
121
|
+
removeByPageId(pageId) {
|
|
122
|
+
const snapshotId = this.pageToSnapshot.get(pageId);
|
|
123
|
+
if (!snapshotId) {
|
|
124
|
+
return false;
|
|
125
|
+
}
|
|
126
|
+
this.entries.delete(snapshotId);
|
|
127
|
+
this.pageToSnapshot.delete(pageId);
|
|
128
|
+
return true;
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Clear all stored snapshots.
|
|
132
|
+
*/
|
|
133
|
+
clear() {
|
|
134
|
+
this.entries.clear();
|
|
135
|
+
this.pageToSnapshot.clear();
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Destroy the store, clearing all data and stopping cleanup timer.
|
|
139
|
+
*/
|
|
140
|
+
destroy() {
|
|
141
|
+
this.stopCleanupTimer();
|
|
142
|
+
this.clear();
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Cleanup expired snapshots based on TTL.
|
|
146
|
+
* Does nothing if TTL is not configured.
|
|
147
|
+
*
|
|
148
|
+
* @returns Number of expired snapshots removed
|
|
149
|
+
*/
|
|
150
|
+
cleanupExpired() {
|
|
151
|
+
if (this.ttlMs === undefined) {
|
|
152
|
+
return 0;
|
|
153
|
+
}
|
|
154
|
+
const now = Date.now();
|
|
155
|
+
const expiredIds = [];
|
|
156
|
+
for (const [snapshotId, entry] of this.entries) {
|
|
157
|
+
if (now - entry.storedAt > this.ttlMs) {
|
|
158
|
+
expiredIds.push(snapshotId);
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
for (const snapshotId of expiredIds) {
|
|
162
|
+
const entry = this.entries.get(snapshotId);
|
|
163
|
+
if (entry) {
|
|
164
|
+
this.pageToSnapshot.delete(entry.pageId);
|
|
165
|
+
this.entries.delete(snapshotId);
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
return expiredIds.length;
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* Get store statistics.
|
|
172
|
+
*
|
|
173
|
+
* @returns SnapshotStoreStats
|
|
174
|
+
*/
|
|
175
|
+
getStats() {
|
|
176
|
+
let totalNodes = 0;
|
|
177
|
+
let oldestSnapshot;
|
|
178
|
+
let newestSnapshot;
|
|
179
|
+
for (const entry of this.entries.values()) {
|
|
180
|
+
totalNodes += entry.snapshot.nodes.length;
|
|
181
|
+
if (oldestSnapshot === undefined || entry.storedAt < oldestSnapshot) {
|
|
182
|
+
oldestSnapshot = entry.storedAt;
|
|
183
|
+
}
|
|
184
|
+
if (newestSnapshot === undefined || entry.storedAt > newestSnapshot) {
|
|
185
|
+
newestSnapshot = entry.storedAt;
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
return {
|
|
189
|
+
snapshotCount: this.entries.size,
|
|
190
|
+
totalNodes,
|
|
191
|
+
oldestSnapshot,
|
|
192
|
+
newestSnapshot,
|
|
193
|
+
};
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Get count of stored snapshots.
|
|
197
|
+
*/
|
|
198
|
+
get size() {
|
|
199
|
+
return this.entries.size;
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
//# sourceMappingURL=snapshot-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"snapshot-store.js","sourceRoot":"","sources":["../../../src/snapshot/snapshot-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,250 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* BaseSnapshot Types
|
|
3
|
+
*
|
|
4
|
+
* Canonical semantic representation of a web page.
|
|
5
|
+
* Designed to be:
|
|
6
|
+
* - Compact: No raw HTML, no class soup
|
|
7
|
+
* - Semantic: Preserves meaning, order, hierarchy
|
|
8
|
+
* - Actionable: Interactive elements have stable locators
|
|
9
|
+
* - Token-efficient: Suitable for LLM context
|
|
10
|
+
*/
|
|
11
|
+
import { BBox } from '../shared/types/base.types.js';
|
|
12
|
+
import type { ObservationGroups } from '../observation/observation.types.js';
|
|
13
|
+
export type { BBox };
|
|
14
|
+
export type BoundingBox = BBox;
|
|
15
|
+
/**
|
|
16
|
+
* Canonical snapshot of a web page.
|
|
17
|
+
* Single source of truth for page state at a point in time.
|
|
18
|
+
*/
|
|
19
|
+
export interface BaseSnapshot {
|
|
20
|
+
/** Unique identifier for this snapshot */
|
|
21
|
+
snapshot_id: string;
|
|
22
|
+
/** Page URL at capture time */
|
|
23
|
+
url: string;
|
|
24
|
+
/** Page title */
|
|
25
|
+
title: string;
|
|
26
|
+
/** Document language (from <html lang="...">) */
|
|
27
|
+
language?: string;
|
|
28
|
+
/** ISO 8601 timestamp of capture */
|
|
29
|
+
captured_at: string;
|
|
30
|
+
/** Viewport dimensions at capture time */
|
|
31
|
+
viewport: Viewport;
|
|
32
|
+
/** Ordered list of semantic nodes (preserves visual/DOM order) */
|
|
33
|
+
nodes: ReadableNode[];
|
|
34
|
+
/** Metadata about the snapshot */
|
|
35
|
+
meta: SnapshotMeta;
|
|
36
|
+
/**
|
|
37
|
+
* DOM observations - significant elements that appeared or disappeared.
|
|
38
|
+
* Split by when they occurred for clarity.
|
|
39
|
+
*/
|
|
40
|
+
observations?: ObservationGroups;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Viewport dimensions
|
|
44
|
+
*/
|
|
45
|
+
export interface Viewport {
|
|
46
|
+
width: number;
|
|
47
|
+
height: number;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Snapshot metadata
|
|
51
|
+
*/
|
|
52
|
+
export interface SnapshotMeta {
|
|
53
|
+
/** True if snapshot is incomplete (e.g., timeout, cross-origin frames) */
|
|
54
|
+
partial?: boolean;
|
|
55
|
+
/** Warnings encountered during capture */
|
|
56
|
+
warnings?: string[];
|
|
57
|
+
/** Total node count in snapshot */
|
|
58
|
+
node_count: number;
|
|
59
|
+
/** Count of interactive nodes */
|
|
60
|
+
interactive_count: number;
|
|
61
|
+
/** Capture duration in milliseconds */
|
|
62
|
+
capture_duration_ms?: number;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Semantic node representation.
|
|
66
|
+
* Captures essential information for both reading and interaction.
|
|
67
|
+
*/
|
|
68
|
+
export interface ReadableNode {
|
|
69
|
+
/** Unique identifier within snapshot (e.g., "n1", "n2") */
|
|
70
|
+
node_id: string;
|
|
71
|
+
/** CDP backend node ID - stable within session, guaranteed unique per DOM element.
|
|
72
|
+
* Used for direct CDP interactions to avoid Playwright locator ambiguity. */
|
|
73
|
+
backend_node_id: number;
|
|
74
|
+
/** CDP frame ID containing this node.
|
|
75
|
+
* Used with loader_id to create globally unique element references. */
|
|
76
|
+
frame_id: string;
|
|
77
|
+
/** CDP loader ID at snapshot time - changes on frame navigation.
|
|
78
|
+
* Combined with frame_id and backend_node_id for safe cross-frame references. */
|
|
79
|
+
loader_id: string;
|
|
80
|
+
/** Semantic classification */
|
|
81
|
+
kind: NodeKind;
|
|
82
|
+
/** Human-readable label (accessible name, text content, placeholder, etc.) */
|
|
83
|
+
label: string;
|
|
84
|
+
/** Semantic location within page */
|
|
85
|
+
where: NodeLocation;
|
|
86
|
+
/** Layout/positioning information */
|
|
87
|
+
layout: NodeLayout;
|
|
88
|
+
/** State for interactive elements */
|
|
89
|
+
state?: NodeState;
|
|
90
|
+
/** Locator strategies for finding/acting on this element */
|
|
91
|
+
find?: NodeLocators;
|
|
92
|
+
/** Additional attributes for specific node types */
|
|
93
|
+
attributes?: NodeAttributes;
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Semantic node classification.
|
|
97
|
+
* Covers interactive elements and readable content.
|
|
98
|
+
*/
|
|
99
|
+
export type NodeKind = 'link' | 'button' | 'input' | 'textarea' | 'select' | 'combobox' | 'checkbox' | 'radio' | 'switch' | 'slider' | 'tab' | 'menuitem' | 'heading' | 'paragraph' | 'text' | 'list' | 'listitem' | 'image' | 'media' | 'table' | 'form' | 'dialog' | 'navigation' | 'section' | 'generic';
|
|
100
|
+
/**
|
|
101
|
+
* Semantic region classification.
|
|
102
|
+
* Based on ARIA landmarks and common page structure.
|
|
103
|
+
*/
|
|
104
|
+
export type SemanticRegion = 'header' | 'nav' | 'main' | 'aside' | 'footer' | 'dialog' | 'search' | 'form' | 'contentinfo' | 'unknown';
|
|
105
|
+
/**
|
|
106
|
+
* Semantic location within the page.
|
|
107
|
+
*/
|
|
108
|
+
export interface NodeLocation {
|
|
109
|
+
/** Page region (header, nav, main, footer, etc.) */
|
|
110
|
+
region: SemanticRegion;
|
|
111
|
+
/** Group identifier (section/menu/card/form cluster) */
|
|
112
|
+
group_id?: string;
|
|
113
|
+
/** Hierarchy path for nested elements (e.g., ["Men", "Shoes", "Running"]) */
|
|
114
|
+
group_path?: string[];
|
|
115
|
+
/** Nearest heading context */
|
|
116
|
+
heading_context?: string;
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Layout and positioning information.
|
|
120
|
+
*/
|
|
121
|
+
export interface NodeLayout {
|
|
122
|
+
/** Bounding box in viewport coordinates */
|
|
123
|
+
bbox: BoundingBox;
|
|
124
|
+
/** CSS display value */
|
|
125
|
+
display?: string;
|
|
126
|
+
/** CSS position value */
|
|
127
|
+
positioning?: string;
|
|
128
|
+
/** Container flow direction (row/column for flex, etc.) */
|
|
129
|
+
flow?: 'row' | 'column' | 'grid' | 'block' | 'inline';
|
|
130
|
+
/** Coarse screen position */
|
|
131
|
+
screen_zone?: ScreenZone;
|
|
132
|
+
/** CSS z-index value (used for overlay detection) */
|
|
133
|
+
zIndex?: number;
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Coarse screen zone (for spatial reasoning).
|
|
137
|
+
*/
|
|
138
|
+
export type ScreenZone = 'top-left' | 'top-center' | 'top-right' | 'middle-left' | 'middle-center' | 'middle-right' | 'bottom-left' | 'bottom-center' | 'bottom-right' | 'above-fold' | 'below-fold';
|
|
139
|
+
/**
|
|
140
|
+
* State for interactive elements.
|
|
141
|
+
*/
|
|
142
|
+
export interface NodeState {
|
|
143
|
+
/** Element is visible (not hidden, not zero-size) */
|
|
144
|
+
visible: boolean;
|
|
145
|
+
/** Element is enabled (not disabled, not aria-disabled) */
|
|
146
|
+
enabled: boolean;
|
|
147
|
+
/** Checked state for checkboxes/radios/switches */
|
|
148
|
+
checked?: boolean;
|
|
149
|
+
/** Expanded state for accordions/dropdowns */
|
|
150
|
+
expanded?: boolean;
|
|
151
|
+
/** Selected state for tabs/options */
|
|
152
|
+
selected?: boolean;
|
|
153
|
+
/** Focused state */
|
|
154
|
+
focused?: boolean;
|
|
155
|
+
/** Required for form inputs */
|
|
156
|
+
required?: boolean;
|
|
157
|
+
/** Invalid state for form inputs */
|
|
158
|
+
invalid?: boolean;
|
|
159
|
+
/** Read-only state */
|
|
160
|
+
readonly?: boolean;
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Locator strategies for element identification.
|
|
164
|
+
* Ordered by reliability/stability.
|
|
165
|
+
*/
|
|
166
|
+
export interface NodeLocators {
|
|
167
|
+
/** Primary (most reliable) locator */
|
|
168
|
+
primary: string;
|
|
169
|
+
/** Alternative locators (fallbacks) */
|
|
170
|
+
alternates?: string[];
|
|
171
|
+
/** Frame path if element is in iframe */
|
|
172
|
+
frame_path?: string[];
|
|
173
|
+
/** Shadow DOM path if element is in shadow root */
|
|
174
|
+
shadow_path?: string[];
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Additional attributes for specific node types.
|
|
178
|
+
*/
|
|
179
|
+
export interface NodeAttributes {
|
|
180
|
+
/** Input type (text, email, password, etc.) */
|
|
181
|
+
input_type?: string;
|
|
182
|
+
/** Placeholder text */
|
|
183
|
+
placeholder?: string;
|
|
184
|
+
/** Current value (redacted by default for sensitive fields) */
|
|
185
|
+
value?: string;
|
|
186
|
+
/** Link href */
|
|
187
|
+
href?: string;
|
|
188
|
+
/** Image alt text */
|
|
189
|
+
alt?: string;
|
|
190
|
+
/** Image src (domain + path only, no query params) */
|
|
191
|
+
src?: string;
|
|
192
|
+
/** Heading level (1-6) */
|
|
193
|
+
heading_level?: number;
|
|
194
|
+
/** Form action URL */
|
|
195
|
+
action?: string;
|
|
196
|
+
/** Form method */
|
|
197
|
+
method?: string;
|
|
198
|
+
/** Autocomplete attribute */
|
|
199
|
+
autocomplete?: string;
|
|
200
|
+
/** ARIA role (if different from implied role) */
|
|
201
|
+
role?: string;
|
|
202
|
+
/** Data-testid or similar test identifier */
|
|
203
|
+
test_id?: string;
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* Snapshot capture options.
|
|
207
|
+
*/
|
|
208
|
+
export interface SnapshotOptions {
|
|
209
|
+
/** Include hidden elements (default: false) */
|
|
210
|
+
include_hidden?: boolean;
|
|
211
|
+
/** Maximum nodes to capture (default: unlimited) */
|
|
212
|
+
max_nodes?: number;
|
|
213
|
+
/** Timeout in milliseconds (default: 30000) */
|
|
214
|
+
timeout?: number;
|
|
215
|
+
/** Redact sensitive values like passwords (default: true) */
|
|
216
|
+
redact_sensitive?: boolean;
|
|
217
|
+
/** Include value attribute for inputs (default: false for security) */
|
|
218
|
+
include_values?: boolean;
|
|
219
|
+
}
|
|
220
|
+
/**
|
|
221
|
+
* Snapshot capture result returned by MCP tool.
|
|
222
|
+
*/
|
|
223
|
+
export interface SnapshotResult {
|
|
224
|
+
/** Snapshot identifier */
|
|
225
|
+
snapshot_id: string;
|
|
226
|
+
/** Page URL */
|
|
227
|
+
url: string;
|
|
228
|
+
/** Page title */
|
|
229
|
+
title: string;
|
|
230
|
+
/** Capture statistics */
|
|
231
|
+
stats: {
|
|
232
|
+
node_count: number;
|
|
233
|
+
interactive_count: number;
|
|
234
|
+
captured_at: string;
|
|
235
|
+
duration_ms: number;
|
|
236
|
+
};
|
|
237
|
+
}
|
|
238
|
+
/**
|
|
239
|
+
* Type guard for interactive nodes.
|
|
240
|
+
*/
|
|
241
|
+
export declare function isInteractiveNode(node: ReadableNode): boolean;
|
|
242
|
+
/**
|
|
243
|
+
* Type guard for readable content nodes.
|
|
244
|
+
*/
|
|
245
|
+
export declare function isReadableNode(node: ReadableNode): boolean;
|
|
246
|
+
/**
|
|
247
|
+
* Type guard for structural nodes.
|
|
248
|
+
*/
|
|
249
|
+
export declare function isStructuralNode(node: ReadableNode): boolean;
|
|
250
|
+
//# sourceMappingURL=snapshot.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"snapshot.types.d.ts","sourceRoot":"","sources":["../../../src/snapshot/snapshot.types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* BaseSnapshot Types
|
|
3
|
+
*
|
|
4
|
+
* Canonical semantic representation of a web page.
|
|
5
|
+
* Designed to be:
|
|
6
|
+
* - Compact: No raw HTML, no class soup
|
|
7
|
+
* - Semantic: Preserves meaning, order, hierarchy
|
|
8
|
+
* - Actionable: Interactive elements have stable locators
|
|
9
|
+
* - Token-efficient: Suitable for LLM context
|
|
10
|
+
*/
|
|
11
|
+
/**
|
|
12
|
+
* Type guard for interactive nodes.
|
|
13
|
+
*/
|
|
14
|
+
export function isInteractiveNode(node) {
|
|
15
|
+
const interactiveKinds = [
|
|
16
|
+
'link',
|
|
17
|
+
'button',
|
|
18
|
+
'input',
|
|
19
|
+
'textarea',
|
|
20
|
+
'select',
|
|
21
|
+
'combobox',
|
|
22
|
+
'checkbox',
|
|
23
|
+
'radio',
|
|
24
|
+
'switch',
|
|
25
|
+
'slider',
|
|
26
|
+
'tab',
|
|
27
|
+
'menuitem',
|
|
28
|
+
];
|
|
29
|
+
return interactiveKinds.includes(node.kind);
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Type guard for readable content nodes.
|
|
33
|
+
*/
|
|
34
|
+
export function isReadableNode(node) {
|
|
35
|
+
const readableKinds = [
|
|
36
|
+
'heading',
|
|
37
|
+
'paragraph',
|
|
38
|
+
'text',
|
|
39
|
+
'list',
|
|
40
|
+
'listitem',
|
|
41
|
+
'image',
|
|
42
|
+
'media',
|
|
43
|
+
'table',
|
|
44
|
+
];
|
|
45
|
+
return readableKinds.includes(node.kind);
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Type guard for structural nodes.
|
|
49
|
+
*/
|
|
50
|
+
export function isStructuralNode(node) {
|
|
51
|
+
const structuralKinds = ['form', 'dialog', 'navigation', 'section'];
|
|
52
|
+
return structuralKinds.includes(node.kind);
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=snapshot.types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"snapshot.types.js","sourceRoot":"","sources":["../../../src/snapshot/snapshot.types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AA+WH;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAkB;IAClD,MAAM,gBAAgB,GAAe;QACnC,MAAM;QACN,QAAQ;QACR,OAAO;QACP,UAAU;QACV,QAAQ;QACR,UAAU;QACV,UAAU;QACV,OAAO;QACP,QAAQ;QACR,QAAQ;QACR,KAAK;QACL,UAAU;KACX,CAAC;IACF,OAAO,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC9C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,IAAkB;IAC/C,MAAM,aAAa,GAAe;QAChC,SAAS;QACT,WAAW;QACX,MAAM;QACN,MAAM;QACN,UAAU;QACV,OAAO;QACP,OAAO;QACP,OAAO;KACR,CAAC;IACF,OAAO,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAkB;IACjD,MAAM,eAAe,GAAe,CAAC,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,SAAS,CAAC,CAAC;IAChF,OAAO,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC7C,CAAC"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Actionables Filter
|
|
3
|
+
*
|
|
4
|
+
* Select and rank interactive elements for LLM context.
|
|
5
|
+
* Filter to active layer, score by relevance, cap at max count.
|
|
6
|
+
*/
|
|
7
|
+
import type { BaseSnapshot, ReadableNode, NodeKind } from '../snapshot/snapshot.types.js';
|
|
8
|
+
import type { ScoringContext } from './types.js';
|
|
9
|
+
/**
|
|
10
|
+
* Check if node kind is interactive.
|
|
11
|
+
*/
|
|
12
|
+
export declare function isInteractiveKind(kind: NodeKind): boolean;
|
|
13
|
+
/**
|
|
14
|
+
* Select actionable elements from snapshot.
|
|
15
|
+
*
|
|
16
|
+
* Filtering rules:
|
|
17
|
+
* 1. Only interactive elements
|
|
18
|
+
* 2. Only visible elements
|
|
19
|
+
* 3. Only from active layer
|
|
20
|
+
* 4. Score by relevance
|
|
21
|
+
* 5. Cap at maxCount
|
|
22
|
+
*
|
|
23
|
+
* @param snapshot - Compiled snapshot
|
|
24
|
+
* @param activeLayer - Active layer name
|
|
25
|
+
* @param maxCount - Maximum number of actionables to return
|
|
26
|
+
* @param context - Scoring context (optional)
|
|
27
|
+
* @returns Selected nodes sorted by relevance
|
|
28
|
+
*/
|
|
29
|
+
export declare function selectActionables(snapshot: BaseSnapshot, activeLayer: string, maxCount: number, context?: ScoringContext): ReadableNode[];
|
|
30
|
+
/**
|
|
31
|
+
* Score an actionable element by relevance.
|
|
32
|
+
*
|
|
33
|
+
* Scoring factors:
|
|
34
|
+
* - Enabled state (+0.2)
|
|
35
|
+
* - Role importance (button/input: +0.3, link: +0.25, etc.)
|
|
36
|
+
* - Semantic region (main: +0.15, dialog: +0.2)
|
|
37
|
+
* - Screen position (above-fold: +0.1)
|
|
38
|
+
* - Has label (+0.15)
|
|
39
|
+
* - Primary CTA (+0.3)
|
|
40
|
+
* - Currently focused (+0.2)
|
|
41
|
+
*
|
|
42
|
+
* @param node - Node to score
|
|
43
|
+
* @param context - Scoring context
|
|
44
|
+
* @returns Score from 0-1
|
|
45
|
+
*/
|
|
46
|
+
export declare function scoreActionable(node: ReadableNode, context?: ScoringContext): number;
|
|
47
|
+
//# sourceMappingURL=actionables-filter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"actionables-filter.d.ts","sourceRoot":"","sources":["../../../src/state/actionables-filter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AAC1F,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAkBjD;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAEzD;AAMD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,YAAY,EACtB,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,cAAc,GACvB,YAAY,EAAE,CAiChB;AAMD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,MAAM,CA4DpF"}
|