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,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP Server
|
|
3
|
+
*
|
|
4
|
+
* Minimal MCP server shell for the Browser Automation MCP Server.
|
|
5
|
+
* Tool registrations will be added as the new semantic snapshot system is built.
|
|
6
|
+
*/
|
|
7
|
+
import type { ZodRawShape } from 'zod';
|
|
8
|
+
import { type LogLevel, type McpNotificationSender } from '../shared/services/logging.service.js';
|
|
9
|
+
export interface ServerConfig {
|
|
10
|
+
name: string;
|
|
11
|
+
version: string;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Browser Automation MCP Server
|
|
15
|
+
*
|
|
16
|
+
* Minimal shell - tool handlers will be registered by the new semantic snapshot system.
|
|
17
|
+
*/
|
|
18
|
+
export declare class BrowserAutomationServer implements McpNotificationSender {
|
|
19
|
+
private readonly config;
|
|
20
|
+
private server;
|
|
21
|
+
private transport;
|
|
22
|
+
constructor(config: ServerConfig);
|
|
23
|
+
/**
|
|
24
|
+
* Register a minimal ping tool
|
|
25
|
+
* This is required because McpServer only sets up tools/list handler
|
|
26
|
+
* when at least one tool is registered.
|
|
27
|
+
*/
|
|
28
|
+
private registerPingTool;
|
|
29
|
+
/**
|
|
30
|
+
* Register a custom tool with the MCP server
|
|
31
|
+
*/
|
|
32
|
+
registerTool(name: string, definition: {
|
|
33
|
+
title: string;
|
|
34
|
+
description?: string;
|
|
35
|
+
inputSchema: ZodRawShape;
|
|
36
|
+
outputSchema?: ZodRawShape;
|
|
37
|
+
}, handler: (input: unknown) => Promise<unknown>): void;
|
|
38
|
+
/**
|
|
39
|
+
* Send logging message notification via MCP protocol
|
|
40
|
+
*/
|
|
41
|
+
sendLoggingMessage(params: {
|
|
42
|
+
level: LogLevel;
|
|
43
|
+
logger?: string;
|
|
44
|
+
data: Record<string, unknown>;
|
|
45
|
+
}): Promise<void>;
|
|
46
|
+
/**
|
|
47
|
+
* Register logging request handlers
|
|
48
|
+
*/
|
|
49
|
+
private registerLoggingHandlers;
|
|
50
|
+
/**
|
|
51
|
+
* Start the MCP server
|
|
52
|
+
*/
|
|
53
|
+
start(): Promise<void>;
|
|
54
|
+
/**
|
|
55
|
+
* Stop the MCP server
|
|
56
|
+
*/
|
|
57
|
+
stop(): Promise<void>;
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=mcp-server.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-server.d.ts","sourceRoot":"","sources":["../../../src/server/mcp-server.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,KAAK,CAAC;AACvC,OAAO,EAEL,KAAK,QAAQ,EACb,KAAK,qBAAqB,EAC3B,MAAM,uCAAuC,CAAC;AAG/C,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;GAIG;AACH,qBAAa,uBAAwB,YAAW,qBAAqB;IAIvD,OAAO,CAAC,QAAQ,CAAC,MAAM;IAHnC,OAAO,CAAC,MAAM,CAAY;IAC1B,OAAO,CAAC,SAAS,CAAuB;gBAEX,MAAM,EAAE,YAAY;IA8BjD;;;;OAIG;IACH,OAAO,CAAC,gBAAgB;IAMxB;;OAEG;IACH,YAAY,CACV,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE;QACV,KAAK,EAAE,MAAM,CAAC;QACd,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,WAAW,EAAE,WAAW,CAAC;QACzB,YAAY,CAAC,EAAE,WAAW,CAAC;KAC5B,EACD,OAAO,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,GAC5C,IAAI;IAuDP;;OAEG;IACG,kBAAkB,CAAC,MAAM,EAAE;QAC/B,KAAK,EAAE,QAAQ,CAAC;QAChB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KAC/B,GAAG,OAAO,CAAC,IAAI,CAAC;IAWjB;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAU/B;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAK5B;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAG5B"}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP Server
|
|
3
|
+
*
|
|
4
|
+
* Minimal MCP server shell for the Browser Automation MCP Server.
|
|
5
|
+
* Tool registrations will be added as the new semantic snapshot system is built.
|
|
6
|
+
*/
|
|
7
|
+
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
8
|
+
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
|
|
9
|
+
import { getLogger, } from '../shared/services/logging.service.js';
|
|
10
|
+
import { SetLevelRequestSchema } from '@modelcontextprotocol/sdk/types.js';
|
|
11
|
+
/**
|
|
12
|
+
* Browser Automation MCP Server
|
|
13
|
+
*
|
|
14
|
+
* Minimal shell - tool handlers will be registered by the new semantic snapshot system.
|
|
15
|
+
*/
|
|
16
|
+
export class BrowserAutomationServer {
|
|
17
|
+
config;
|
|
18
|
+
server;
|
|
19
|
+
transport;
|
|
20
|
+
constructor(config) {
|
|
21
|
+
this.config = config;
|
|
22
|
+
// Create MCP server instance
|
|
23
|
+
// Note: Tools capability is auto-registered when tools are added via .tool()
|
|
24
|
+
// But logging capability must be declared explicitly for setRequestHandler to work
|
|
25
|
+
this.server = new McpServer({
|
|
26
|
+
name: config.name,
|
|
27
|
+
version: config.version,
|
|
28
|
+
}, {
|
|
29
|
+
capabilities: {
|
|
30
|
+
logging: {},
|
|
31
|
+
},
|
|
32
|
+
});
|
|
33
|
+
// Create stdio transport
|
|
34
|
+
this.transport = new StdioServerTransport();
|
|
35
|
+
// Register logging request handler
|
|
36
|
+
this.registerLoggingHandlers();
|
|
37
|
+
// Register a minimal ping tool (required for tools/list to work)
|
|
38
|
+
this.registerPingTool();
|
|
39
|
+
// Wire up logging service to MCP server
|
|
40
|
+
const logger = getLogger();
|
|
41
|
+
logger.setMcpServer(this);
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Register a minimal ping tool
|
|
45
|
+
* This is required because McpServer only sets up tools/list handler
|
|
46
|
+
* when at least one tool is registered.
|
|
47
|
+
*/
|
|
48
|
+
registerPingTool() {
|
|
49
|
+
this.server.tool('ping', 'Check if the server is responsive', () => ({
|
|
50
|
+
content: [{ type: 'text', text: 'pong' }],
|
|
51
|
+
}));
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Register a custom tool with the MCP server
|
|
55
|
+
*/
|
|
56
|
+
registerTool(name, definition, handler) {
|
|
57
|
+
this.server.registerTool(name, {
|
|
58
|
+
title: definition.title,
|
|
59
|
+
description: definition.description,
|
|
60
|
+
inputSchema: definition.inputSchema,
|
|
61
|
+
outputSchema: definition.outputSchema,
|
|
62
|
+
}, async (input) => {
|
|
63
|
+
const logger = getLogger();
|
|
64
|
+
const startTime = Date.now();
|
|
65
|
+
try {
|
|
66
|
+
logger.debug(`Executing tool: ${name}`);
|
|
67
|
+
const result = await handler(input);
|
|
68
|
+
const executionTime = Date.now() - startTime;
|
|
69
|
+
logger.debug(`Tool ${name} completed in ${executionTime}ms`);
|
|
70
|
+
// When outputSchema is defined, return structuredContent for MCP validation
|
|
71
|
+
if (definition.outputSchema) {
|
|
72
|
+
return {
|
|
73
|
+
content: [{ type: 'text', text: JSON.stringify(result) }],
|
|
74
|
+
structuredContent: result,
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
// If result is already a string (e.g., XML), use it directly
|
|
78
|
+
// Otherwise JSON.stringify it
|
|
79
|
+
const textContent = typeof result === 'string' ? result : JSON.stringify(result);
|
|
80
|
+
return {
|
|
81
|
+
content: [{ type: 'text', text: textContent }],
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
catch (error) {
|
|
85
|
+
const executionTime = Date.now() - startTime;
|
|
86
|
+
logger.error(`Tool ${name} failed after ${executionTime}ms`, error instanceof Error ? error : undefined);
|
|
87
|
+
return {
|
|
88
|
+
content: [
|
|
89
|
+
{
|
|
90
|
+
type: 'text',
|
|
91
|
+
text: JSON.stringify({
|
|
92
|
+
error: error instanceof Error ? error.message : String(error),
|
|
93
|
+
}),
|
|
94
|
+
},
|
|
95
|
+
],
|
|
96
|
+
isError: true,
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Send logging message notification via MCP protocol
|
|
103
|
+
*/
|
|
104
|
+
async sendLoggingMessage(params) {
|
|
105
|
+
await this.server.server.notification({
|
|
106
|
+
method: 'notifications/message',
|
|
107
|
+
params: {
|
|
108
|
+
level: params.level,
|
|
109
|
+
logger: params.logger,
|
|
110
|
+
data: params.data,
|
|
111
|
+
},
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Register logging request handlers
|
|
116
|
+
*/
|
|
117
|
+
registerLoggingHandlers() {
|
|
118
|
+
this.server.server.setRequestHandler(SetLevelRequestSchema, (request) => {
|
|
119
|
+
const logger = getLogger();
|
|
120
|
+
const { level } = request.params;
|
|
121
|
+
logger.setMinLevel(level);
|
|
122
|
+
logger.info(`Log level set to: ${level}`);
|
|
123
|
+
return {};
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Start the MCP server
|
|
128
|
+
*/
|
|
129
|
+
async start() {
|
|
130
|
+
await this.server.connect(this.transport);
|
|
131
|
+
console.error(`${this.config.name} v${this.config.version} started`);
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Stop the MCP server
|
|
135
|
+
*/
|
|
136
|
+
async stop() {
|
|
137
|
+
await this.server.close();
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
//# sourceMappingURL=mcp-server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-server.js","sourceRoot":"","sources":["../../../src/server/mcp-server.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AAEjF,OAAO,EACL,SAAS,GAGV,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAO3E;;;;GAIG;AACH,MAAM,OAAO,uBAAuB;IAIL;IAHrB,MAAM,CAAY;IAClB,SAAS,CAAuB;IAExC,YAA6B,MAAoB;QAApB,WAAM,GAAN,MAAM,CAAc;QAC/C,6BAA6B;QAC7B,6EAA6E;QAC7E,mFAAmF;QACnF,IAAI,CAAC,MAAM,GAAG,IAAI,SAAS,CACzB;YACE,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,OAAO,EAAE,MAAM,CAAC,OAAO;SACxB,EACD;YACE,YAAY,EAAE;gBACZ,OAAO,EAAE,EAAE;aACZ;SACF,CACF,CAAC;QAEF,yBAAyB;QACzB,IAAI,CAAC,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;QAE5C,mCAAmC;QACnC,IAAI,CAAC,uBAAuB,EAAE,CAAC;QAE/B,iEAAiE;QACjE,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAExB,wCAAwC;QACxC,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;QAC3B,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IAED;;;;OAIG;IACK,gBAAgB;QACtB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,mCAAmC,EAAE,GAAG,EAAE,CAAC,CAAC;YACnE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;SACnD,CAAC,CAAC,CAAC;IACN,CAAC;IAED;;OAEG;IACH,YAAY,CACV,IAAY,EACZ,UAKC,EACD,OAA6C;QAE7C,IAAI,CAAC,MAAM,CAAC,YAAY,CACtB,IAAI,EACJ;YACE,KAAK,EAAE,UAAU,CAAC,KAAK;YACvB,WAAW,EAAE,UAAU,CAAC,WAAW;YACnC,WAAW,EAAE,UAAU,CAAC,WAAW;YACnC,YAAY,EAAE,UAAU,CAAC,YAAY;SACtC,EACD,KAAK,EAAE,KAAK,EAAE,EAAE;YACd,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;YAC3B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAE7B,IAAI,CAAC;gBACH,MAAM,CAAC,KAAK,CAAC,mBAAmB,IAAI,EAAE,CAAC,CAAC;gBACxC,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,CAAC;gBACpC,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;gBAC7C,MAAM,CAAC,KAAK,CAAC,QAAQ,IAAI,iBAAiB,aAAa,IAAI,CAAC,CAAC;gBAE7D,4EAA4E;gBAC5E,IAAI,UAAU,CAAC,YAAY,EAAE,CAAC;oBAC5B,OAAO;wBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;wBAClE,iBAAiB,EAAE,MAAiC;qBACrD,CAAC;gBACJ,CAAC;gBAED,6DAA6D;gBAC7D,8BAA8B;gBAC9B,MAAM,WAAW,GAAG,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;gBACjF,OAAO;oBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;iBACxD,CAAC;YACJ,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;gBAC7C,MAAM,CAAC,KAAK,CACV,QAAQ,IAAI,iBAAiB,aAAa,IAAI,EAC9C,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAC3C,CAAC;gBACF,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAe;4BACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gCACnB,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;6BAC9D,CAAC;yBACH;qBACF;oBACD,OAAO,EAAE,IAAI;iBACd,CAAC;YACJ,CAAC;QACH,CAAC,CACF,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,kBAAkB,CAAC,MAIxB;QACC,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC;YACpC,MAAM,EAAE,uBAAuB;YAC/B,MAAM,EAAE;gBACN,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,IAAI,EAAE,MAAM,CAAC,IAAI;aAClB;SACF,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACK,uBAAuB;QAC7B,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,qBAAqB,EAAE,CAAC,OAAO,EAAE,EAAE;YACtE,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;YAC3B,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;YACjC,MAAM,CAAC,WAAW,CAAC,KAAiB,CAAC,CAAC;YACtC,MAAM,CAAC,IAAI,CAAC,qBAAqB,KAAK,EAAE,CAAC,CAAC;YAC1C,OAAO,EAAE,CAAC;QACZ,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAK;QACT,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC1C,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,IAAI,CAAC,MAAM,CAAC,OAAO,UAAU,CAAC,CAAC;IACvE,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,IAAI;QACR,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;IAC5B,CAAC;CACF"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Server Configuration
|
|
3
|
+
*
|
|
4
|
+
* Global server configuration combining CLI args and environment variables.
|
|
5
|
+
* Provides the ensureBrowserForTools function that tool handlers call.
|
|
6
|
+
*/
|
|
7
|
+
import { type ServerArgs } from '../cli/args.js';
|
|
8
|
+
import { SessionManager } from '../browser/session-manager.js';
|
|
9
|
+
/**
|
|
10
|
+
* Initialize server configuration from CLI arguments and environment variables.
|
|
11
|
+
*
|
|
12
|
+
* @param argv - Command line arguments (process.argv.slice(2))
|
|
13
|
+
*/
|
|
14
|
+
export declare function initServerConfig(argv: string[]): void;
|
|
15
|
+
/**
|
|
16
|
+
* Get the current server configuration.
|
|
17
|
+
* Throws if not initialized.
|
|
18
|
+
*/
|
|
19
|
+
export declare function getServerConfig(): ServerArgs;
|
|
20
|
+
/**
|
|
21
|
+
* Get or create the SessionManager singleton.
|
|
22
|
+
*/
|
|
23
|
+
export declare function getSessionManager(): SessionManager;
|
|
24
|
+
/**
|
|
25
|
+
* Check if the SessionManager has been initialized.
|
|
26
|
+
* Use this before calling getSessionManager() in cleanup paths
|
|
27
|
+
* to avoid creating a new instance unnecessarily.
|
|
28
|
+
*/
|
|
29
|
+
export declare function isSessionManagerInitialized(): boolean;
|
|
30
|
+
/**
|
|
31
|
+
* Ensure browser is ready for tool execution.
|
|
32
|
+
*
|
|
33
|
+
* This is the main entry point for tools to call before executing.
|
|
34
|
+
* It will lazily launch or connect to a browser based on server configuration.
|
|
35
|
+
*/
|
|
36
|
+
export declare function ensureBrowserForTools(): Promise<void>;
|
|
37
|
+
/**
|
|
38
|
+
* Reset server state (for testing).
|
|
39
|
+
*/
|
|
40
|
+
export declare function resetServerState(): void;
|
|
41
|
+
//# sourceMappingURL=server-config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server-config.d.ts","sourceRoot":"","sources":["../../../src/server/server-config.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAa,KAAK,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAO/D;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAUrD;AAED;;;GAGG;AACH,wBAAgB,eAAe,IAAI,UAAU,CAK5C;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,cAAc,CAGlD;AAED;;;;GAIG;AACH,wBAAgB,2BAA2B,IAAI,OAAO,CAErD;AAED;;;;;GAKG;AACH,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC,CAgB3D;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,IAAI,CAGvC"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Server Configuration
|
|
3
|
+
*
|
|
4
|
+
* Global server configuration combining CLI args and environment variables.
|
|
5
|
+
* Provides the ensureBrowserForTools function that tool handlers call.
|
|
6
|
+
*/
|
|
7
|
+
import { parseArgs } from '../cli/args.js';
|
|
8
|
+
import { SessionManager } from '../browser/session-manager.js';
|
|
9
|
+
import { ensureBrowserReady } from '../browser/ensure-browser.js';
|
|
10
|
+
// Singleton instances
|
|
11
|
+
let serverConfig = null;
|
|
12
|
+
let sessionManager = null;
|
|
13
|
+
/**
|
|
14
|
+
* Initialize server configuration from CLI arguments and environment variables.
|
|
15
|
+
*
|
|
16
|
+
* @param argv - Command line arguments (process.argv.slice(2))
|
|
17
|
+
*/
|
|
18
|
+
export function initServerConfig(argv) {
|
|
19
|
+
const args = parseArgs(argv);
|
|
20
|
+
// Apply environment variable overrides
|
|
21
|
+
// Only enable autoConnect from env if no explicit browserUrl/wsEndpoint was provided
|
|
22
|
+
if (process.env.AUTO_CONNECT === 'true' && !args.browserUrl && !args.wsEndpoint) {
|
|
23
|
+
args.autoConnect = true;
|
|
24
|
+
}
|
|
25
|
+
serverConfig = args;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Get the current server configuration.
|
|
29
|
+
* Throws if not initialized.
|
|
30
|
+
*/
|
|
31
|
+
export function getServerConfig() {
|
|
32
|
+
if (!serverConfig) {
|
|
33
|
+
throw new Error('Server config not initialized. Call initServerConfig() first.');
|
|
34
|
+
}
|
|
35
|
+
return serverConfig;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Get or create the SessionManager singleton.
|
|
39
|
+
*/
|
|
40
|
+
export function getSessionManager() {
|
|
41
|
+
sessionManager ??= new SessionManager();
|
|
42
|
+
return sessionManager;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Check if the SessionManager has been initialized.
|
|
46
|
+
* Use this before calling getSessionManager() in cleanup paths
|
|
47
|
+
* to avoid creating a new instance unnecessarily.
|
|
48
|
+
*/
|
|
49
|
+
export function isSessionManagerInitialized() {
|
|
50
|
+
return sessionManager !== null;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Ensure browser is ready for tool execution.
|
|
54
|
+
*
|
|
55
|
+
* This is the main entry point for tools to call before executing.
|
|
56
|
+
* It will lazily launch or connect to a browser based on server configuration.
|
|
57
|
+
*/
|
|
58
|
+
export async function ensureBrowserForTools() {
|
|
59
|
+
const config = getServerConfig();
|
|
60
|
+
const session = getSessionManager();
|
|
61
|
+
const options = {
|
|
62
|
+
headless: config.headless,
|
|
63
|
+
isolated: config.isolated,
|
|
64
|
+
browserUrl: config.browserUrl,
|
|
65
|
+
wsEndpoint: config.wsEndpoint,
|
|
66
|
+
autoConnect: config.autoConnect,
|
|
67
|
+
userDataDir: config.userDataDir,
|
|
68
|
+
channel: config.channel,
|
|
69
|
+
executablePath: config.executablePath,
|
|
70
|
+
};
|
|
71
|
+
await ensureBrowserReady(session, options);
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Reset server state (for testing).
|
|
75
|
+
*/
|
|
76
|
+
export function resetServerState() {
|
|
77
|
+
serverConfig = null;
|
|
78
|
+
sessionManager = null;
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=server-config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server-config.js","sourceRoot":"","sources":["../../../src/server/server-config.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,SAAS,EAAmB,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAA6B,MAAM,8BAA8B,CAAC;AAE7F,sBAAsB;AACtB,IAAI,YAAY,GAAsB,IAAI,CAAC;AAC3C,IAAI,cAAc,GAA0B,IAAI,CAAC;AAEjD;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAc;IAC7C,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAE7B,uCAAuC;IACvC,qFAAqF;IACrF,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,KAAK,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;QAChF,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;IAC1B,CAAC;IAED,YAAY,GAAG,IAAI,CAAC;AACtB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe;IAC7B,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAC;IACnF,CAAC;IACD,OAAO,YAAY,CAAC;AACtB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB;IAC/B,cAAc,KAAK,IAAI,cAAc,EAAE,CAAC;IACxC,OAAO,cAAc,CAAC;AACxB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,2BAA2B;IACzC,OAAO,cAAc,KAAK,IAAI,CAAC;AACjC,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB;IACzC,MAAM,MAAM,GAAG,eAAe,EAAE,CAAC;IACjC,MAAM,OAAO,GAAG,iBAAiB,EAAE,CAAC;IAEpC,MAAM,OAAO,GAAyB;QACpC,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,cAAc,EAAE,MAAM,CAAC,cAAc;KACtC,CAAC;IAEF,MAAM,kBAAkB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AAC7C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB;IAC9B,YAAY,GAAG,IAAI,CAAC;IACpB,cAAc,GAAG,IAAI,CAAC;AACxB,CAAC"}
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Session Store
|
|
3
|
+
*
|
|
4
|
+
* Tracks active sessions per MCP client (tenant isolation).
|
|
5
|
+
* Supports optional TTL-based auto-cleanup of expired sessions.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Options for session store configuration
|
|
9
|
+
*/
|
|
10
|
+
export interface SessionStoreOptions {
|
|
11
|
+
/** Session TTL in milliseconds (default: 30 minutes, 0 = no expiry) */
|
|
12
|
+
ttlMs?: number;
|
|
13
|
+
/** Maximum sessions allowed (default: unlimited) */
|
|
14
|
+
maxSessions?: number;
|
|
15
|
+
/** Enable automatic cleanup of expired sessions (default: false) */
|
|
16
|
+
autoCleanup?: boolean;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Represents a tenant session
|
|
20
|
+
*/
|
|
21
|
+
export interface TenantSession {
|
|
22
|
+
/** Unique session identifier */
|
|
23
|
+
session_id: string;
|
|
24
|
+
/** Tenant/client identifier */
|
|
25
|
+
tenant_id: string;
|
|
26
|
+
/** Page IDs associated with this session */
|
|
27
|
+
page_ids: Set<string>;
|
|
28
|
+
/** When the session was created */
|
|
29
|
+
created_at: Date;
|
|
30
|
+
/** When the session was last accessed */
|
|
31
|
+
last_accessed_at: Date;
|
|
32
|
+
/** When the session expires (null = never) */
|
|
33
|
+
expires_at: Date | null;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* In-memory session store for tenant isolation
|
|
37
|
+
*/
|
|
38
|
+
export declare class SessionStore {
|
|
39
|
+
private readonly sessions;
|
|
40
|
+
private readonly ttlMs;
|
|
41
|
+
private readonly maxSessions;
|
|
42
|
+
private cleanupInterval;
|
|
43
|
+
constructor(options?: SessionStoreOptions);
|
|
44
|
+
/**
|
|
45
|
+
* Create a new session for a tenant
|
|
46
|
+
*
|
|
47
|
+
* @param tenant_id - The tenant/client identifier
|
|
48
|
+
* @returns The new session_id
|
|
49
|
+
* @throws Error if max sessions limit reached
|
|
50
|
+
*/
|
|
51
|
+
createSession(tenant_id: string): string;
|
|
52
|
+
/**
|
|
53
|
+
* Get a session by its ID.
|
|
54
|
+
* Automatically refreshes TTL and checks for expiration.
|
|
55
|
+
*
|
|
56
|
+
* @param session_id - The session identifier
|
|
57
|
+
* @returns TenantSession if found and not expired, undefined otherwise
|
|
58
|
+
*/
|
|
59
|
+
getSession(session_id: string): TenantSession | undefined;
|
|
60
|
+
/**
|
|
61
|
+
* Add a page to a session
|
|
62
|
+
*
|
|
63
|
+
* @param session_id - The session identifier
|
|
64
|
+
* @param page_id - The page identifier to add
|
|
65
|
+
*/
|
|
66
|
+
addPage(session_id: string, page_id: string): void;
|
|
67
|
+
/**
|
|
68
|
+
* Remove a page from a session
|
|
69
|
+
*
|
|
70
|
+
* @param session_id - The session identifier
|
|
71
|
+
* @param page_id - The page identifier to remove
|
|
72
|
+
*/
|
|
73
|
+
removePage(session_id: string, page_id: string): void;
|
|
74
|
+
/**
|
|
75
|
+
* Get all pages for a session
|
|
76
|
+
*
|
|
77
|
+
* @param session_id - The session identifier
|
|
78
|
+
* @returns Array of page_ids (empty if session not found)
|
|
79
|
+
*/
|
|
80
|
+
getPages(session_id: string): string[];
|
|
81
|
+
/**
|
|
82
|
+
* Destroy a session completely
|
|
83
|
+
*
|
|
84
|
+
* @param session_id - The session identifier
|
|
85
|
+
*/
|
|
86
|
+
destroySession(session_id: string): void;
|
|
87
|
+
/**
|
|
88
|
+
* List all active sessions
|
|
89
|
+
*
|
|
90
|
+
* @returns Array of all TenantSession objects
|
|
91
|
+
*/
|
|
92
|
+
listSessions(): TenantSession[];
|
|
93
|
+
/**
|
|
94
|
+
* Get sessions for a specific tenant
|
|
95
|
+
*
|
|
96
|
+
* @param tenant_id - The tenant identifier
|
|
97
|
+
* @returns Array of sessions for this tenant
|
|
98
|
+
*/
|
|
99
|
+
getSessionsByTenant(tenant_id: string): TenantSession[];
|
|
100
|
+
/**
|
|
101
|
+
* Get the total number of sessions
|
|
102
|
+
*
|
|
103
|
+
* @returns Session count
|
|
104
|
+
*/
|
|
105
|
+
sessionCount(): number;
|
|
106
|
+
/**
|
|
107
|
+
* Check if a session exists
|
|
108
|
+
*
|
|
109
|
+
* @param session_id - The session identifier
|
|
110
|
+
* @returns true if session exists
|
|
111
|
+
*/
|
|
112
|
+
hasSession(session_id: string): boolean;
|
|
113
|
+
/**
|
|
114
|
+
* Clear all sessions (for testing or shutdown)
|
|
115
|
+
*/
|
|
116
|
+
clear(): void;
|
|
117
|
+
/**
|
|
118
|
+
* Stop automatic cleanup timer
|
|
119
|
+
*/
|
|
120
|
+
stopAutoCleanup(): void;
|
|
121
|
+
/**
|
|
122
|
+
* Start automatic cleanup of expired sessions
|
|
123
|
+
*/
|
|
124
|
+
startAutoCleanup(): void;
|
|
125
|
+
/**
|
|
126
|
+
* Manually clean up all expired sessions
|
|
127
|
+
*
|
|
128
|
+
* @returns Number of sessions removed
|
|
129
|
+
*/
|
|
130
|
+
cleanupExpired(): number;
|
|
131
|
+
/**
|
|
132
|
+
* Check if a session is expired
|
|
133
|
+
*/
|
|
134
|
+
private isExpired;
|
|
135
|
+
/**
|
|
136
|
+
* Touch a session to refresh its TTL
|
|
137
|
+
*/
|
|
138
|
+
private touchSession;
|
|
139
|
+
/**
|
|
140
|
+
* Get the configured TTL in milliseconds
|
|
141
|
+
*/
|
|
142
|
+
getTtlMs(): number;
|
|
143
|
+
/**
|
|
144
|
+
* Get the configured max sessions limit
|
|
145
|
+
*/
|
|
146
|
+
getMaxSessions(): number;
|
|
147
|
+
}
|
|
148
|
+
//# sourceMappingURL=session-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-store.d.ts","sourceRoot":"","sources":["../../../src/server/session-store.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAUH;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,uEAAuE;IACvE,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,oDAAoD;IACpD,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,oEAAoE;IACpE,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,gCAAgC;IAChC,UAAU,EAAE,MAAM,CAAC;IAEnB,+BAA+B;IAC/B,SAAS,EAAE,MAAM,CAAC;IAElB,4CAA4C;IAC5C,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAEtB,mCAAmC;IACnC,UAAU,EAAE,IAAI,CAAC;IAEjB,yCAAyC;IACzC,gBAAgB,EAAE,IAAI,CAAC;IAEvB,8CAA8C;IAC9C,UAAU,EAAE,IAAI,GAAG,IAAI,CAAC;CACzB;AAED;;GAEG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAoC;IAC7D,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,eAAe,CAA+B;gBAE1C,OAAO,GAAE,mBAAwB;IAS7C;;;;;;OAMG;IACH,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAuBxC;;;;;;OAMG;IACH,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAezD;;;;;OAKG;IACH,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAOlD;;;;;OAKG;IACH,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAOrD;;;;;OAKG;IACH,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE;IAQtC;;;;OAIG;IACH,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAIxC;;;;OAIG;IACH,YAAY,IAAI,aAAa,EAAE;IAI/B;;;;;OAKG;IACH,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,aAAa,EAAE;IAIvD;;;;OAIG;IACH,YAAY,IAAI,MAAM;IAItB;;;;;OAKG;IACH,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO;IAIvC;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb;;OAEG;IACH,eAAe,IAAI,IAAI;IAOvB;;OAEG;IACH,gBAAgB,IAAI,IAAI;IAUxB;;;;OAIG;IACH,cAAc,IAAI,MAAM;IAcxB;;OAEG;IACH,OAAO,CAAC,SAAS;IAKjB;;OAEG;IACH,OAAO,CAAC,YAAY;IAQpB;;OAEG;IACH,QAAQ,IAAI,MAAM;IAIlB;;OAEG;IACH,cAAc,IAAI,MAAM;CAGzB"}
|