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
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 Nadeem
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
# Agent Web Interface
|
|
2
|
+
|
|
3
|
+
An MCP server for browser automation that exposes semantic, token-efficient page representations optimized for LLM agents.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Motivation
|
|
8
|
+
|
|
9
|
+
LLM-based agents operate under strict context window and token constraints.
|
|
10
|
+
However, most browser automation tools expose entire DOMs or full accessibility trees to the model.
|
|
11
|
+
|
|
12
|
+
This leads to:
|
|
13
|
+
|
|
14
|
+
- Rapid token exhaustion
|
|
15
|
+
- Higher inference costs
|
|
16
|
+
- Reduced reliability as relevant signal is buried in noise
|
|
17
|
+
|
|
18
|
+
In practice, agents spend more effort _finding_ the right information than reasoning about it.
|
|
19
|
+
|
|
20
|
+
Agent Web Interface exists to change the unit of information exposed to the model.
|
|
21
|
+
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
## Core Idea: Semantic Page Snapshots
|
|
25
|
+
|
|
26
|
+
Instead of exposing raw DOM structures or full accessibility trees, Agent Web Interface produces **semantic page snapshots**.
|
|
27
|
+
|
|
28
|
+
These snapshots are:
|
|
29
|
+
|
|
30
|
+
- Compact and structured
|
|
31
|
+
- Focused on user-visible intent
|
|
32
|
+
- Designed for LLM recall and reasoning, not DOM completeness
|
|
33
|
+
- Stable across layout shifts and DOM churn
|
|
34
|
+
|
|
35
|
+
The goal is not to mirror the browser, but to present the page in a form that aligns with how language models reason about interfaces.
|
|
36
|
+
|
|
37
|
+
---
|
|
38
|
+
|
|
39
|
+
## How It Works
|
|
40
|
+
|
|
41
|
+
At a high level:
|
|
42
|
+
|
|
43
|
+
1. The browser is controlled via Puppeteer and CDP
|
|
44
|
+
2. The page is reduced into semantic regions and actionable elements
|
|
45
|
+
3. A structured snapshot is generated and sent to the LLM
|
|
46
|
+
4. Actions are resolved against stable semantic identifiers rather than fragile selectors
|
|
47
|
+
|
|
48
|
+
This separation keeps:
|
|
49
|
+
|
|
50
|
+
- Browser lifecycle management isolated
|
|
51
|
+
- Snapshots deterministic and low-entropy
|
|
52
|
+
- Agent reasoning predictable and efficient
|
|
53
|
+
|
|
54
|
+
---
|
|
55
|
+
|
|
56
|
+
## Benchmarks
|
|
57
|
+
|
|
58
|
+
Early benchmarks against Playwright MCP show:
|
|
59
|
+
|
|
60
|
+
- **~19% fewer tokens consumed**
|
|
61
|
+
- **~33% faster task completion**
|
|
62
|
+
- Same or better success rates on common navigation tasks
|
|
63
|
+
|
|
64
|
+
Benchmarks were run using Claude Code on representative real-world tasks.
|
|
65
|
+
Results are task-dependent and should be treated as directional rather than absolute.
|
|
66
|
+
|
|
67
|
+
---
|
|
68
|
+
|
|
69
|
+
## What Agent Web Interface Is (and Is Not)
|
|
70
|
+
|
|
71
|
+
### Agent Web Interface is:
|
|
72
|
+
|
|
73
|
+
- A semantic interface between browsers and LLM agents
|
|
74
|
+
- An MCP server focused on reliability and efficiency
|
|
75
|
+
- Designed for agent workflows, not test automation
|
|
76
|
+
|
|
77
|
+
### Agent Web Interface is not:
|
|
78
|
+
|
|
79
|
+
- A general-purpose browser
|
|
80
|
+
- A visual testing or screenshot framework
|
|
81
|
+
- A replacement for Puppeteer
|
|
82
|
+
|
|
83
|
+
Puppeteer remains the execution layer; Agent Web Interface focuses on representation and reasoning.
|
|
84
|
+
|
|
85
|
+
---
|
|
86
|
+
|
|
87
|
+
## Usage
|
|
88
|
+
|
|
89
|
+
Agent Web Interface implements the **Model Context Protocol (MCP)** and works with:
|
|
90
|
+
|
|
91
|
+
- Claude Code
|
|
92
|
+
- Claude Desktop
|
|
93
|
+
- Cursor
|
|
94
|
+
- VS Code
|
|
95
|
+
- Any MCP-compatible client
|
|
96
|
+
|
|
97
|
+
Example workflows include:
|
|
98
|
+
|
|
99
|
+
- Navigating complex web apps
|
|
100
|
+
- Handling login and consent flows
|
|
101
|
+
- Performing multi-step UI interactions with lower token usage
|
|
102
|
+
|
|
103
|
+
See the `examples/` directory for concrete agent workflows.
|
|
104
|
+
|
|
105
|
+
---
|
|
106
|
+
|
|
107
|
+
## Claude Code
|
|
108
|
+
|
|
109
|
+
```bash
|
|
110
|
+
# Basic (auto-launches browser)
|
|
111
|
+
claude mcp add agent-web-interface -- npx agent-web-interface@latest
|
|
112
|
+
|
|
113
|
+
# With auto-connect to your Chrome profile
|
|
114
|
+
claude mcp add agent-web-interface -- npx agent-web-interface@latest --autoConnect
|
|
115
|
+
|
|
116
|
+
# Headless mode
|
|
117
|
+
claude mcp add agent-web-interface -- npx agent-web-interface@latest --headless
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
---
|
|
121
|
+
|
|
122
|
+
## CLI Arguments
|
|
123
|
+
|
|
124
|
+
The server accepts the following arguments to configure browser initialization:
|
|
125
|
+
|
|
126
|
+
| Argument | Description | Default |
|
|
127
|
+
| ------------------------ | --------------------------------------------------------------- | ---------------- |
|
|
128
|
+
| `--headless=true\|false` | Run browser in headless mode | `false` |
|
|
129
|
+
| `--browserUrl` | HTTP endpoint to connect to existing browser | - |
|
|
130
|
+
| `--wsEndpoint` | WebSocket endpoint to connect to existing browser | - |
|
|
131
|
+
| `--autoConnect` | Auto-connect to Chrome 144+ via DevToolsActivePort | `false` |
|
|
132
|
+
| `--isolated` | Use isolated temp profile instead of persistent | `false` |
|
|
133
|
+
| `--userDataDir` | Chrome user data directory | Platform default |
|
|
134
|
+
| `--channel` | Chrome channel (chrome, chrome-canary, chrome-beta, chrome-dev) | `chrome` |
|
|
135
|
+
| `--executablePath` | Path to Chrome executable | - |
|
|
136
|
+
|
|
137
|
+
### Automatic Browser Initialization
|
|
138
|
+
|
|
139
|
+
The browser is automatically launched or connected on the first tool call. No explicit initialization is needed.
|
|
140
|
+
|
|
141
|
+
Examples:
|
|
142
|
+
|
|
143
|
+
```bash
|
|
144
|
+
# Auto-launch visible browser (default)
|
|
145
|
+
npx agent-web-interface
|
|
146
|
+
|
|
147
|
+
# Launch headless browser
|
|
148
|
+
npx agent-web-interface --headless
|
|
149
|
+
|
|
150
|
+
# Auto-connect to Chrome with remote debugging enabled
|
|
151
|
+
npx agent-web-interface --autoConnect
|
|
152
|
+
|
|
153
|
+
# Connect to specific endpoint
|
|
154
|
+
npx agent-web-interface --browserUrl http://localhost:9222
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
---
|
|
158
|
+
|
|
159
|
+
## Using Your Existing Chrome Profile (Chrome 144+)
|
|
160
|
+
|
|
161
|
+
To connect with your bookmarks, extensions, and logged-in sessions:
|
|
162
|
+
|
|
163
|
+
1. Navigate to `chrome://inspect/#remote-debugging` in Chrome
|
|
164
|
+
2. Enable remote debugging and allow the connection
|
|
165
|
+
3. Use `--autoConnect` CLI argument
|
|
166
|
+
|
|
167
|
+
```json
|
|
168
|
+
{
|
|
169
|
+
"mcpServers": {
|
|
170
|
+
"agent-web-interface": {
|
|
171
|
+
"command": "npx",
|
|
172
|
+
"args": ["agent-web-interface@latest", "--autoConnect"]
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
---
|
|
179
|
+
|
|
180
|
+
## Environment Variables
|
|
181
|
+
|
|
182
|
+
| Variable | Description | Default |
|
|
183
|
+
| ------------------ | -------------------------------------------------- | ----------- |
|
|
184
|
+
| `AWI_TRIM_REGIONS` | Set to `false` to disable region trimming globally | `true` |
|
|
185
|
+
| `CEF_BRIDGE_HOST` | CDP host for browser connection | `127.0.0.1` |
|
|
186
|
+
| `CEF_BRIDGE_PORT` | CDP port for browser connection | `9223` |
|
|
187
|
+
|
|
188
|
+
---
|
|
189
|
+
|
|
190
|
+
## Installation
|
|
191
|
+
|
|
192
|
+
```bash
|
|
193
|
+
git clone https://github.com/lespaceman/agent-web-interface
|
|
194
|
+
cd agent-web-interface
|
|
195
|
+
npm install
|
|
196
|
+
npm run build
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
Configure the MCP server in your client according to its MCP integration instructions.
|
|
200
|
+
|
|
201
|
+
---
|
|
202
|
+
|
|
203
|
+
## Architecture Overview
|
|
204
|
+
|
|
205
|
+
Agent Web Interface separates concerns into three layers:
|
|
206
|
+
|
|
207
|
+
- **Browser lifecycle** — page creation, navigation, teardown
|
|
208
|
+
- **Semantic snapshot generation** — regions, elements, identifiers
|
|
209
|
+
- **Action resolution** — mapping agent intent to browser actions
|
|
210
|
+
|
|
211
|
+
This separation allows each layer to evolve independently while keeping agent-visible behavior stable.
|
|
212
|
+
|
|
213
|
+
---
|
|
214
|
+
|
|
215
|
+
## Status
|
|
216
|
+
|
|
217
|
+
Agent Web Interface is under active development.
|
|
218
|
+
APIs and snapshot formats may evolve as real-world agent usage informs the design.
|
|
219
|
+
|
|
220
|
+
Feedback from practitioners building agent systems is especially welcome.
|
|
221
|
+
|
|
222
|
+
---
|
|
223
|
+
|
|
224
|
+
## License
|
|
225
|
+
|
|
226
|
+
MIT
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Lazy Browser Initialization
|
|
3
|
+
*
|
|
4
|
+
* Ensures a browser is ready before tool execution.
|
|
5
|
+
* If no browser is running, launches or connects based on CLI configuration.
|
|
6
|
+
*/
|
|
7
|
+
import type { SessionManager } from './session-manager.js';
|
|
8
|
+
/**
|
|
9
|
+
* Options for lazy browser initialization.
|
|
10
|
+
*/
|
|
11
|
+
export interface EnsureBrowserOptions {
|
|
12
|
+
/** Run browser in headless mode (default: false) */
|
|
13
|
+
headless?: boolean;
|
|
14
|
+
/** Use isolated temp profile (default: false) */
|
|
15
|
+
isolated?: boolean;
|
|
16
|
+
/** HTTP endpoint URL for connecting to existing browser */
|
|
17
|
+
browserUrl?: string;
|
|
18
|
+
/** WebSocket endpoint URL for connecting to existing browser */
|
|
19
|
+
wsEndpoint?: string;
|
|
20
|
+
/** Auto-connect to Chrome 144+ via DevToolsActivePort */
|
|
21
|
+
autoConnect?: boolean;
|
|
22
|
+
/** Chrome user data directory */
|
|
23
|
+
userDataDir?: string;
|
|
24
|
+
/** Chrome channel */
|
|
25
|
+
channel?: 'chrome' | 'chrome-canary' | 'chrome-beta' | 'chrome-dev';
|
|
26
|
+
/** Path to Chrome executable */
|
|
27
|
+
executablePath?: string;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Ensure browser is ready for tool execution.
|
|
31
|
+
*
|
|
32
|
+
* If browser is already running, returns immediately.
|
|
33
|
+
* Otherwise, launches or connects based on provided options.
|
|
34
|
+
*
|
|
35
|
+
* @param session - SessionManager instance
|
|
36
|
+
* @param options - Configuration options from CLI
|
|
37
|
+
*/
|
|
38
|
+
export declare function ensureBrowserReady(session: SessionManager, options: EnsureBrowserOptions): Promise<void>;
|
|
39
|
+
//# sourceMappingURL=ensure-browser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ensure-browser.d.ts","sourceRoot":"","sources":["../../../src/browser/ensure-browser.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAK3D;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,oDAAoD;IACpD,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,iDAAiD;IACjD,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,2DAA2D;IAC3D,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,gEAAgE;IAChE,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,yDAAyD;IACzD,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB,iCAAiC;IACjC,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,qBAAqB;IACrB,OAAO,CAAC,EAAE,QAAQ,GAAG,eAAe,GAAG,aAAa,GAAG,YAAY,CAAC;IAEpE,gCAAgC;IAChC,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AASD;;;;;;;;GAQG;AACH,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,cAAc,EACvB,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,IAAI,CAAC,CAwCf"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Lazy Browser Initialization
|
|
3
|
+
*
|
|
4
|
+
* Ensures a browser is ready before tool execution.
|
|
5
|
+
* If no browser is running, launches or connects based on CLI configuration.
|
|
6
|
+
*/
|
|
7
|
+
import { getLogger } from '../shared/services/logging.service.js';
|
|
8
|
+
const logger = getLogger();
|
|
9
|
+
/**
|
|
10
|
+
* Determine if we should connect to an existing browser vs launch new one.
|
|
11
|
+
*/
|
|
12
|
+
function shouldConnect(options) {
|
|
13
|
+
return !!(options.browserUrl ?? options.wsEndpoint ?? options.autoConnect);
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Ensure browser is ready for tool execution.
|
|
17
|
+
*
|
|
18
|
+
* If browser is already running, returns immediately.
|
|
19
|
+
* Otherwise, launches or connects based on provided options.
|
|
20
|
+
*
|
|
21
|
+
* @param session - SessionManager instance
|
|
22
|
+
* @param options - Configuration options from CLI
|
|
23
|
+
*/
|
|
24
|
+
export async function ensureBrowserReady(session, options) {
|
|
25
|
+
// Fast path: browser already running
|
|
26
|
+
if (session.isRunning()) {
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
const mode = shouldConnect(options) ? 'connect' : 'launch';
|
|
30
|
+
logger.info('Lazy browser initialization triggered', { mode });
|
|
31
|
+
try {
|
|
32
|
+
if (shouldConnect(options)) {
|
|
33
|
+
// Connect to existing browser
|
|
34
|
+
await session.connect({
|
|
35
|
+
browserURL: options.browserUrl,
|
|
36
|
+
browserWSEndpoint: options.wsEndpoint,
|
|
37
|
+
autoConnect: options.autoConnect,
|
|
38
|
+
userDataDir: options.userDataDir,
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
// Launch new browser
|
|
43
|
+
await session.launch({
|
|
44
|
+
headless: options.headless ?? false,
|
|
45
|
+
isolated: options.isolated ?? false,
|
|
46
|
+
userDataDir: options.userDataDir,
|
|
47
|
+
channel: options.channel,
|
|
48
|
+
executablePath: options.executablePath,
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
logger.info('Browser initialized successfully', { mode });
|
|
52
|
+
}
|
|
53
|
+
catch (error) {
|
|
54
|
+
logger.error('Browser initialization failed', error instanceof Error ? error : undefined, {
|
|
55
|
+
mode,
|
|
56
|
+
browserUrl: options.browserUrl,
|
|
57
|
+
wsEndpoint: options.wsEndpoint,
|
|
58
|
+
autoConnect: options.autoConnect,
|
|
59
|
+
headless: options.headless,
|
|
60
|
+
userDataDir: options.userDataDir,
|
|
61
|
+
});
|
|
62
|
+
throw error;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=ensure-browser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ensure-browser.js","sourceRoot":"","sources":["../../../src/browser/ensure-browser.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,SAAS,EAAE,MAAM,uCAAuC,CAAC;AAElE,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;AA+B3B;;GAEG;AACH,SAAS,aAAa,CAAC,OAA6B;IAClD,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,WAAW,CAAC,CAAC;AAC7E,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,OAAuB,EACvB,OAA6B;IAE7B,qCAAqC;IACrC,IAAI,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC;QACxB,OAAO;IACT,CAAC;IAED,MAAM,IAAI,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC;IAC3D,MAAM,CAAC,IAAI,CAAC,uCAAuC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IAE/D,IAAI,CAAC;QACH,IAAI,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3B,8BAA8B;YAC9B,MAAM,OAAO,CAAC,OAAO,CAAC;gBACpB,UAAU,EAAE,OAAO,CAAC,UAAU;gBAC9B,iBAAiB,EAAE,OAAO,CAAC,UAAU;gBACrC,WAAW,EAAE,OAAO,CAAC,WAAW;gBAChC,WAAW,EAAE,OAAO,CAAC,WAAW;aACjC,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,qBAAqB;YACrB,MAAM,OAAO,CAAC,MAAM,CAAC;gBACnB,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,KAAK;gBACnC,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,KAAK;gBACnC,WAAW,EAAE,OAAO,CAAC,WAAW;gBAChC,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,cAAc,EAAE,OAAO,CAAC,cAAc;aACvC,CAAC,CAAC;QACL,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,kCAAkC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5D,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CAAC,+BAA+B,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,EAAE;YACxF,IAAI;YACJ,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,WAAW,EAAE,OAAO,CAAC,WAAW;SACjC,CAAC,CAAC;QACH,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Browser Module
|
|
3
|
+
*
|
|
4
|
+
* Exports for browser lifecycle management.
|
|
5
|
+
*/
|
|
6
|
+
export { PageRegistry, type PageHandle } from './page-registry.js';
|
|
7
|
+
export { SessionManager, type LaunchOptions, type ConnectOptions, type ConnectionState, type ConnectionStateChangeEvent, } from './session-manager.js';
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/browser/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,YAAY,EAAE,KAAK,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACnE,OAAO,EACL,cAAc,EACd,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,0BAA0B,GAChC,MAAM,sBAAsB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/browser/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,YAAY,EAAmB,MAAM,oBAAoB,CAAC;AACnE,OAAO,EACL,cAAc,GAKf,MAAM,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Page Network Tracker
|
|
3
|
+
*
|
|
4
|
+
* Tracks in-flight network requests for a page and provides a reliable
|
|
5
|
+
* "network quiet" wait mechanism. Unlike Puppeteer's waitForNetworkIdle(),
|
|
6
|
+
* this tracks requests triggered after page load (e.g., by user actions).
|
|
7
|
+
*
|
|
8
|
+
* Uses a generation counter to safely handle navigation - late events from
|
|
9
|
+
* previous documents are ignored.
|
|
10
|
+
*/
|
|
11
|
+
import type { Page } from 'puppeteer-core';
|
|
12
|
+
/**
|
|
13
|
+
* Tracks network requests for a single page.
|
|
14
|
+
*
|
|
15
|
+
* Attach to a page via `attach()`, then use `waitForQuiet()` to wait for
|
|
16
|
+
* network activity to settle. Call `markNavigation()` when navigating to
|
|
17
|
+
* safely reset state without race conditions.
|
|
18
|
+
*/
|
|
19
|
+
export declare class PageNetworkTracker {
|
|
20
|
+
private page;
|
|
21
|
+
private inflightCount;
|
|
22
|
+
private generation;
|
|
23
|
+
private currentGeneration;
|
|
24
|
+
private quietTimer;
|
|
25
|
+
private quietWindowMs;
|
|
26
|
+
private quietResolvers;
|
|
27
|
+
private onRequest;
|
|
28
|
+
private onRequestFinished;
|
|
29
|
+
private onRequestFailed;
|
|
30
|
+
/**
|
|
31
|
+
* Attach network event listeners to a page.
|
|
32
|
+
*
|
|
33
|
+
* Must be called before `waitForQuiet()` can be used.
|
|
34
|
+
* Safe to call multiple times - will detach previous listeners first.
|
|
35
|
+
*/
|
|
36
|
+
attach(page: Page): void;
|
|
37
|
+
/**
|
|
38
|
+
* Detach all event listeners and cleanup timers.
|
|
39
|
+
*
|
|
40
|
+
* Call this when the page is closed or no longer needs tracking.
|
|
41
|
+
*/
|
|
42
|
+
detach(): void;
|
|
43
|
+
/**
|
|
44
|
+
* Mark that a navigation occurred.
|
|
45
|
+
*
|
|
46
|
+
* This safely resets state by bumping the generation counter, so any
|
|
47
|
+
* late events from the previous document are ignored. Use this instead
|
|
48
|
+
* of directly resetting state to avoid race conditions.
|
|
49
|
+
*/
|
|
50
|
+
markNavigation(): void;
|
|
51
|
+
/**
|
|
52
|
+
* Wait for network to become quiet (no inflight requests for quietWindowMs).
|
|
53
|
+
*
|
|
54
|
+
* @param timeoutMs - Maximum time to wait before returning false
|
|
55
|
+
* @param quietWindowMs - Time with 0 inflight requests to consider "idle"
|
|
56
|
+
* @returns true if network became quiet, false if timed out (never throws)
|
|
57
|
+
*/
|
|
58
|
+
waitForQuiet(timeoutMs: number, quietWindowMs?: number): Promise<boolean>;
|
|
59
|
+
/**
|
|
60
|
+
* Get current inflight request count (for debugging/testing).
|
|
61
|
+
*/
|
|
62
|
+
getInflightCount(): number;
|
|
63
|
+
/**
|
|
64
|
+
* Check if tracker is attached to a page.
|
|
65
|
+
*/
|
|
66
|
+
isAttached(): boolean;
|
|
67
|
+
private cancelQuietTimer;
|
|
68
|
+
private checkQuiet;
|
|
69
|
+
private startQuietTimer;
|
|
70
|
+
/**
|
|
71
|
+
* Create and attach event handlers for the current generation.
|
|
72
|
+
*/
|
|
73
|
+
private createAndAttachHandlers;
|
|
74
|
+
/**
|
|
75
|
+
* Remove event handlers from a page.
|
|
76
|
+
*/
|
|
77
|
+
private removeHandlers;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Get or create a network tracker for a page.
|
|
81
|
+
*
|
|
82
|
+
* Note: This does NOT automatically attach the tracker.
|
|
83
|
+
* Call `tracker.attach(page)` after getting the tracker.
|
|
84
|
+
*/
|
|
85
|
+
export declare function getOrCreateTracker(page: Page): PageNetworkTracker;
|
|
86
|
+
/**
|
|
87
|
+
* Remove and detach the tracker for a page.
|
|
88
|
+
*
|
|
89
|
+
* Call this when a page is closed to ensure proper cleanup.
|
|
90
|
+
*/
|
|
91
|
+
export declare function removeTracker(page: Page): void;
|
|
92
|
+
/**
|
|
93
|
+
* Check if a page has a tracker attached.
|
|
94
|
+
*/
|
|
95
|
+
export declare function hasTracker(page: Page): boolean;
|
|
96
|
+
//# sourceMappingURL=page-network-tracker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"page-network-tracker.d.ts","sourceRoot":"","sources":["../../../src/browser/page-network-tracker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAe,MAAM,gBAAgB,CAAC;AAKxD;;;;;;GAMG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,IAAI,CAAqB;IACjC,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,iBAAiB,CAAK;IAG9B,OAAO,CAAC,UAAU,CAA+B;IACjD,OAAO,CAAC,aAAa,CAAmC;IACxD,OAAO,CAAC,cAAc,CAAyE;IAG/F,OAAO,CAAC,SAAS,CAA6C;IAC9D,OAAO,CAAC,iBAAiB,CAA6C;IACtE,OAAO,CAAC,eAAe,CAA6C;IAEpE;;;;;OAKG;IACH,MAAM,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;IAaxB;;;;OAIG;IACH,MAAM,IAAI,IAAI;IAmBd;;;;;;OAMG;IACH,cAAc,IAAI,IAAI;IAYtB;;;;;;OAMG;IACG,YAAY,CAChB,SAAS,EAAE,MAAM,EACjB,aAAa,GAAE,MAAgC,GAC9C,OAAO,CAAC,OAAO,CAAC;IAuBnB;;OAEG;IACH,gBAAgB,IAAI,MAAM;IAI1B;;OAEG;IACH,UAAU,IAAI,OAAO;IAMrB,OAAO,CAAC,gBAAgB;IAOxB,OAAO,CAAC,UAAU;IAMlB,OAAO,CAAC,eAAe;IAavB;;OAEG;IACH,OAAO,CAAC,uBAAuB;IA6B/B;;OAEG;IACH,OAAO,CAAC,cAAc;CAWvB;AAYD;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,IAAI,GAAG,kBAAkB,CAOjE;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAM9C;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAE9C"}
|