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,252 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Section Renderers
|
|
3
|
+
*
|
|
4
|
+
* Individual renderers for each FactPack section.
|
|
5
|
+
* Each renderer produces XML-compact output.
|
|
6
|
+
*/
|
|
7
|
+
import { DEFAULT_MAX_ACTIONS, MIN_ACTIONS_ON_TRUNCATE } from './constants.js';
|
|
8
|
+
/**
|
|
9
|
+
* Truncation priority constants (lower = cut first).
|
|
10
|
+
*/
|
|
11
|
+
export const TRUNCATION_PRIORITY = {
|
|
12
|
+
STATE: 1, // Cut first
|
|
13
|
+
ACTIONS_EXTRA: 2, // Cut extra actions (keep top 5)
|
|
14
|
+
FORM_DETAILS: 3, // Cut form field details
|
|
15
|
+
DIALOG_SECONDARY: 4, // Cut secondary dialog actions
|
|
16
|
+
FORMS: 5, // Full forms section
|
|
17
|
+
DIALOGS: 6, // Full dialogs section (if not blocking)
|
|
18
|
+
ACTIONS_CORE: 7, // Core actions (top 5)
|
|
19
|
+
PAGE: 8, // Never cut
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
* Render the <page> section.
|
|
23
|
+
*/
|
|
24
|
+
export function renderPageSection(pageResult) {
|
|
25
|
+
const { type, confidence, secondary_type } = pageResult.classification;
|
|
26
|
+
// Find page title from entities
|
|
27
|
+
const titleEntity = pageResult.classification.entities.find((e) => e.type === 'product-name' || e.type === 'article-title' || e.type === 'category-name');
|
|
28
|
+
const title = titleEntity?.value ?? '';
|
|
29
|
+
// Build attributes
|
|
30
|
+
const attrs = [`type="${type}"`, `confidence="${confidence.toFixed(2)}"`];
|
|
31
|
+
if (secondary_type) {
|
|
32
|
+
attrs.push(`secondary="${secondary_type}"`);
|
|
33
|
+
}
|
|
34
|
+
const content = `<page ${attrs.join(' ')}>\n${title}\n</page>`;
|
|
35
|
+
return {
|
|
36
|
+
name: 'page',
|
|
37
|
+
content,
|
|
38
|
+
truncation_priority: TRUNCATION_PRIORITY.PAGE,
|
|
39
|
+
can_truncate: false,
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Render the <dialogs> section.
|
|
44
|
+
*/
|
|
45
|
+
export function renderDialogsSection(dialogResult) {
|
|
46
|
+
const { dialogs, has_blocking_dialog } = dialogResult;
|
|
47
|
+
if (dialogs.length === 0) {
|
|
48
|
+
return {
|
|
49
|
+
name: 'dialogs',
|
|
50
|
+
content: `<dialogs blocking="false">\nNone\n</dialogs>`,
|
|
51
|
+
truncation_priority: TRUNCATION_PRIORITY.DIALOGS,
|
|
52
|
+
can_truncate: false, // Empty section, nothing to truncate
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
const lines = [];
|
|
56
|
+
for (let i = 0; i < dialogs.length; i++) {
|
|
57
|
+
const dialog = dialogs[i];
|
|
58
|
+
lines.push(renderDialogItem(dialog, i + 1));
|
|
59
|
+
}
|
|
60
|
+
const content = `<dialogs blocking="${has_blocking_dialog}">\n${lines.join('\n')}\n</dialogs>`;
|
|
61
|
+
// Build truncated version (just dialog types, no actions)
|
|
62
|
+
const truncatedLines = dialogs.map((d, i) => `${i + 1}. [${d.type}] "${d.title ?? 'Untitled'}" node:${d.node_id}`);
|
|
63
|
+
const truncatedContent = `<dialogs blocking="${has_blocking_dialog}">\n${truncatedLines.join('\n')}\n</dialogs>`;
|
|
64
|
+
return {
|
|
65
|
+
name: 'dialogs',
|
|
66
|
+
content,
|
|
67
|
+
truncation_priority: has_blocking_dialog
|
|
68
|
+
? TRUNCATION_PRIORITY.PAGE // Never cut blocking dialogs
|
|
69
|
+
: TRUNCATION_PRIORITY.DIALOGS,
|
|
70
|
+
can_truncate: dialogs.some((d) => d.actions.length > 0),
|
|
71
|
+
truncated_content: truncatedContent,
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Render a single dialog item with its actions.
|
|
76
|
+
*/
|
|
77
|
+
function renderDialogItem(dialog, index) {
|
|
78
|
+
const lines = [];
|
|
79
|
+
// Dialog header
|
|
80
|
+
lines.push(`${index}. [${dialog.type}] "${dialog.title ?? 'Untitled'}" node:${dialog.node_id}`);
|
|
81
|
+
// Dialog actions
|
|
82
|
+
for (const action of dialog.actions) {
|
|
83
|
+
lines.push(` - ${action.label} [${action.role}] node:${action.node_id}`);
|
|
84
|
+
}
|
|
85
|
+
return lines.join('\n');
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Render the <forms> section.
|
|
89
|
+
*/
|
|
90
|
+
export function renderFormsSection(formResult, _options) {
|
|
91
|
+
const { forms, primary_form } = formResult;
|
|
92
|
+
if (forms.length === 0) {
|
|
93
|
+
return {
|
|
94
|
+
name: 'forms',
|
|
95
|
+
content: `<forms count="0">\nNone\n</forms>`,
|
|
96
|
+
truncation_priority: TRUNCATION_PRIORITY.FORMS,
|
|
97
|
+
can_truncate: false,
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
// Build attributes
|
|
101
|
+
const primaryPurpose = primary_form?.purpose ?? forms[0]?.purpose;
|
|
102
|
+
const attrs = [`count="${forms.length}"`];
|
|
103
|
+
if (primaryPurpose && primaryPurpose !== 'generic') {
|
|
104
|
+
attrs.push(`primary="${primaryPurpose}"`);
|
|
105
|
+
}
|
|
106
|
+
const lines = [];
|
|
107
|
+
for (let i = 0; i < forms.length; i++) {
|
|
108
|
+
const form = forms[i];
|
|
109
|
+
lines.push(renderFormItem(form, i + 1, false));
|
|
110
|
+
}
|
|
111
|
+
const content = `<forms ${attrs.join(' ')}>\n${lines.join('\n')}\n</forms>`;
|
|
112
|
+
// Build truncated version (forms without field details)
|
|
113
|
+
const truncatedLines = [];
|
|
114
|
+
for (let i = 0; i < forms.length; i++) {
|
|
115
|
+
const form = forms[i];
|
|
116
|
+
truncatedLines.push(renderFormItem(form, i + 1, true));
|
|
117
|
+
}
|
|
118
|
+
const truncatedContent = `<forms ${attrs.join(' ')}>\n${truncatedLines.join('\n')}\n</forms>`;
|
|
119
|
+
return {
|
|
120
|
+
name: 'forms',
|
|
121
|
+
content,
|
|
122
|
+
truncation_priority: TRUNCATION_PRIORITY.FORMS,
|
|
123
|
+
can_truncate: forms.some((f) => f.fields.length > 0),
|
|
124
|
+
truncated_content: truncatedContent,
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Render a single form item with its fields.
|
|
129
|
+
*/
|
|
130
|
+
function renderFormItem(form, index, compact) {
|
|
131
|
+
const lines = [];
|
|
132
|
+
// Form header
|
|
133
|
+
const confidenceStr = form.purpose_confidence >= 0.5 ? `, ${form.purpose_confidence.toFixed(1)}` : '';
|
|
134
|
+
lines.push(`${index}. ${form.title ?? 'Form'} [${form.purpose}${confidenceStr}] node:${form.node_id}`);
|
|
135
|
+
if (compact) {
|
|
136
|
+
// Just show field count
|
|
137
|
+
const fieldCount = form.fields.length;
|
|
138
|
+
const requiredCount = form.fields.filter((f) => f.required).length;
|
|
139
|
+
lines.push(` - ${fieldCount} fields (${requiredCount} required)`);
|
|
140
|
+
}
|
|
141
|
+
else {
|
|
142
|
+
// Show all fields
|
|
143
|
+
for (const field of form.fields) {
|
|
144
|
+
lines.push(renderFormField(field));
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
// Submit button
|
|
148
|
+
if (form.submit_button) {
|
|
149
|
+
const submitLabel = form.submit_button.label || 'Submit';
|
|
150
|
+
lines.push(` - [Submit: ${submitLabel}] node:${form.submit_button.node_id}`);
|
|
151
|
+
}
|
|
152
|
+
return lines.join('\n');
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Render a single form field.
|
|
156
|
+
*/
|
|
157
|
+
function renderFormField(field) {
|
|
158
|
+
const parts = [];
|
|
159
|
+
// Field name/label
|
|
160
|
+
parts.push(field.label ?? field.semantic_type ?? 'field');
|
|
161
|
+
// State indicators
|
|
162
|
+
const stateIndicators = [];
|
|
163
|
+
if (field.required)
|
|
164
|
+
stateIndicators.push('required');
|
|
165
|
+
if (field.invalid)
|
|
166
|
+
stateIndicators.push('invalid');
|
|
167
|
+
if (field.disabled)
|
|
168
|
+
stateIndicators.push('disabled');
|
|
169
|
+
if (field.readonly)
|
|
170
|
+
stateIndicators.push('readonly');
|
|
171
|
+
const state = stateIndicators.length > 0 ? ` (${stateIndicators.join(', ')})` : '';
|
|
172
|
+
return ` - ${parts.join('')}${state} node:${field.node_id}`;
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Render the <actions> section.
|
|
176
|
+
*/
|
|
177
|
+
export function renderActionsSection(actionResult, options) {
|
|
178
|
+
const { actions, primary_cta } = actionResult;
|
|
179
|
+
const maxActions = options.max_actions ?? DEFAULT_MAX_ACTIONS;
|
|
180
|
+
if (actions.length === 0) {
|
|
181
|
+
return {
|
|
182
|
+
name: 'actions',
|
|
183
|
+
content: `<actions>\nNone\n</actions>`,
|
|
184
|
+
truncation_priority: TRUNCATION_PRIORITY.ACTIONS_CORE,
|
|
185
|
+
can_truncate: false,
|
|
186
|
+
};
|
|
187
|
+
}
|
|
188
|
+
// Limit to max actions
|
|
189
|
+
const displayActions = actions.slice(0, maxActions);
|
|
190
|
+
// Build attributes
|
|
191
|
+
const attrs = [];
|
|
192
|
+
if (primary_cta) {
|
|
193
|
+
attrs.push(`primary="${escapeXmlAttr(primary_cta.label)}"`);
|
|
194
|
+
}
|
|
195
|
+
const attrStr = attrs.length > 0 ? ` ${attrs.join(' ')}` : '';
|
|
196
|
+
const lines = displayActions.map((action, i) => renderActionItem(action, i + 1));
|
|
197
|
+
const content = `<actions${attrStr}>\n${lines.join('\n')}\n</actions>`;
|
|
198
|
+
// Build truncated version (top 5 only)
|
|
199
|
+
const truncatedActions = actions.slice(0, MIN_ACTIONS_ON_TRUNCATE);
|
|
200
|
+
const truncatedLines = truncatedActions.map((action, i) => renderActionItem(action, i + 1));
|
|
201
|
+
const truncatedContent = `<actions${attrStr}>\n${truncatedLines.join('\n')}\n</actions>`;
|
|
202
|
+
return {
|
|
203
|
+
name: 'actions',
|
|
204
|
+
content,
|
|
205
|
+
truncation_priority: TRUNCATION_PRIORITY.ACTIONS_CORE,
|
|
206
|
+
can_truncate: actions.length > MIN_ACTIONS_ON_TRUNCATE,
|
|
207
|
+
truncated_content: truncatedContent,
|
|
208
|
+
};
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* Render a single action item.
|
|
212
|
+
*/
|
|
213
|
+
function renderActionItem(action, index) {
|
|
214
|
+
return `${index}. ${action.label} [${action.category}] node:${action.node_id}`;
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* Render the <state> section.
|
|
218
|
+
*/
|
|
219
|
+
export function renderStateSection(factpack, options) {
|
|
220
|
+
const { classification } = factpack.page_type;
|
|
221
|
+
const lines = [];
|
|
222
|
+
// URL would need to be passed in; for now skip or use placeholder
|
|
223
|
+
if (options.include_url !== false) {
|
|
224
|
+
// Note: URL is not in FactPack - would need to be passed from snapshot
|
|
225
|
+
// For now we omit it or the caller can add it
|
|
226
|
+
}
|
|
227
|
+
// Page capabilities from classification
|
|
228
|
+
lines.push(`- Has search: ${classification.has_search}`);
|
|
229
|
+
lines.push(`- Has navigation: ${classification.has_navigation}`);
|
|
230
|
+
lines.push(`- Has main content: ${classification.has_main_content}`);
|
|
231
|
+
lines.push(`- Has forms: ${classification.has_forms}`);
|
|
232
|
+
const content = `<state>\n${lines.join('\n')}\n</state>`;
|
|
233
|
+
return {
|
|
234
|
+
name: 'state',
|
|
235
|
+
content,
|
|
236
|
+
truncation_priority: TRUNCATION_PRIORITY.STATE,
|
|
237
|
+
can_truncate: true, // Can be completely removed
|
|
238
|
+
truncated_content: '', // Remove entirely when truncated
|
|
239
|
+
};
|
|
240
|
+
}
|
|
241
|
+
/**
|
|
242
|
+
* Escape special characters for XML attribute values.
|
|
243
|
+
*/
|
|
244
|
+
function escapeXmlAttr(str) {
|
|
245
|
+
return str
|
|
246
|
+
.replace(/&/g, '&')
|
|
247
|
+
.replace(/"/g, '"')
|
|
248
|
+
.replace(/'/g, ''')
|
|
249
|
+
.replace(/</g, '<')
|
|
250
|
+
.replace(/>/g, '>');
|
|
251
|
+
}
|
|
252
|
+
//# sourceMappingURL=section-renderers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"section-renderers.js","sourceRoot":"","sources":["../../../src/renderer/section-renderers.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Token Counter
|
|
3
|
+
*
|
|
4
|
+
* Estimates token count for rendered content.
|
|
5
|
+
* Uses a simple character-based heuristic since we don't have
|
|
6
|
+
* access to the actual tokenizer in the runtime environment.
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* Estimate token count for a string.
|
|
10
|
+
*
|
|
11
|
+
* Uses a simple heuristic: tokens ≈ characters / 4
|
|
12
|
+
* This is reasonably accurate for English text with XML tags.
|
|
13
|
+
*
|
|
14
|
+
* For more accurate counting in production, consider:
|
|
15
|
+
* - tiktoken (OpenAI's tokenizer)
|
|
16
|
+
* - claude-tokenizer (if available)
|
|
17
|
+
*
|
|
18
|
+
* @param text - Text to estimate tokens for
|
|
19
|
+
* @returns Estimated token count
|
|
20
|
+
*/
|
|
21
|
+
export declare function estimateTokens(text: string): number;
|
|
22
|
+
/**
|
|
23
|
+
* Calculate tokens needed to reach target.
|
|
24
|
+
*
|
|
25
|
+
* @param currentTokens - Current token count
|
|
26
|
+
* @param targetTokens - Target token count
|
|
27
|
+
* @returns Tokens over budget (negative if under budget)
|
|
28
|
+
*/
|
|
29
|
+
export declare function tokensOverBudget(currentTokens: number, targetTokens: number): number;
|
|
30
|
+
/**
|
|
31
|
+
* Check if content is within budget.
|
|
32
|
+
*
|
|
33
|
+
* @param text - Text to check
|
|
34
|
+
* @param targetTokens - Target token count
|
|
35
|
+
* @returns True if within budget
|
|
36
|
+
*/
|
|
37
|
+
export declare function isWithinBudget(text: string, targetTokens: number): boolean;
|
|
38
|
+
/**
|
|
39
|
+
* Estimate tokens saved by removing a section.
|
|
40
|
+
*
|
|
41
|
+
* @param section - Section content to measure
|
|
42
|
+
* @returns Estimated tokens that would be saved
|
|
43
|
+
*/
|
|
44
|
+
export declare function estimateTokenSavings(section: string): number;
|
|
45
|
+
//# sourceMappingURL=token-counter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token-counter.d.ts","sourceRoot":"","sources":["../../../src/renderer/token-counter.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH;;;;;;;;;;;;GAYG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAenD;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,aAAa,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,CAEpF;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAE1E;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAG5D"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Token Counter
|
|
3
|
+
*
|
|
4
|
+
* Estimates token count for rendered content.
|
|
5
|
+
* Uses a simple character-based heuristic since we don't have
|
|
6
|
+
* access to the actual tokenizer in the runtime environment.
|
|
7
|
+
*/
|
|
8
|
+
import { CHARS_PER_TOKEN } from './constants.js';
|
|
9
|
+
/**
|
|
10
|
+
* Estimate token count for a string.
|
|
11
|
+
*
|
|
12
|
+
* Uses a simple heuristic: tokens ≈ characters / 4
|
|
13
|
+
* This is reasonably accurate for English text with XML tags.
|
|
14
|
+
*
|
|
15
|
+
* For more accurate counting in production, consider:
|
|
16
|
+
* - tiktoken (OpenAI's tokenizer)
|
|
17
|
+
* - claude-tokenizer (if available)
|
|
18
|
+
*
|
|
19
|
+
* @param text - Text to estimate tokens for
|
|
20
|
+
* @returns Estimated token count
|
|
21
|
+
*/
|
|
22
|
+
export function estimateTokens(text) {
|
|
23
|
+
if (!text)
|
|
24
|
+
return 0;
|
|
25
|
+
// Base estimate: characters / 4
|
|
26
|
+
const baseEstimate = Math.ceil(text.length / CHARS_PER_TOKEN);
|
|
27
|
+
// Adjust for XML tags (they tend to tokenize more efficiently)
|
|
28
|
+
// XML tags like <page> become ~2 tokens, not 6 characters / 4 = 1.5
|
|
29
|
+
const tagMatches = text.match(/<\/?[a-z_-]+(?:\s+[^>]*)?>/gi);
|
|
30
|
+
const tagCount = tagMatches?.length ?? 0;
|
|
31
|
+
// Each tag adds roughly 1 extra token beyond char estimate
|
|
32
|
+
const tagAdjustment = Math.ceil(tagCount * 0.5);
|
|
33
|
+
return baseEstimate + tagAdjustment;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Calculate tokens needed to reach target.
|
|
37
|
+
*
|
|
38
|
+
* @param currentTokens - Current token count
|
|
39
|
+
* @param targetTokens - Target token count
|
|
40
|
+
* @returns Tokens over budget (negative if under budget)
|
|
41
|
+
*/
|
|
42
|
+
export function tokensOverBudget(currentTokens, targetTokens) {
|
|
43
|
+
return currentTokens - targetTokens;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Check if content is within budget.
|
|
47
|
+
*
|
|
48
|
+
* @param text - Text to check
|
|
49
|
+
* @param targetTokens - Target token count
|
|
50
|
+
* @returns True if within budget
|
|
51
|
+
*/
|
|
52
|
+
export function isWithinBudget(text, targetTokens) {
|
|
53
|
+
return estimateTokens(text) <= targetTokens;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Estimate tokens saved by removing a section.
|
|
57
|
+
*
|
|
58
|
+
* @param section - Section content to measure
|
|
59
|
+
* @returns Estimated tokens that would be saved
|
|
60
|
+
*/
|
|
61
|
+
export function estimateTokenSavings(section) {
|
|
62
|
+
// Account for the newlines between sections too
|
|
63
|
+
return estimateTokens(section) + 1;
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=token-counter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token-counter.js","sourceRoot":"","sources":["../../../src/renderer/token-counter.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEjD;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,IAAI,CAAC,IAAI;QAAE,OAAO,CAAC,CAAC;IAEpB,gCAAgC;IAChC,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,eAAe,CAAC,CAAC;IAE9D,+DAA+D;IAC/D,oEAAoE;IACpE,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;IAC9D,MAAM,QAAQ,GAAG,UAAU,EAAE,MAAM,IAAI,CAAC,CAAC;IAEzC,2DAA2D;IAC3D,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,CAAC;IAEhD,OAAO,YAAY,GAAG,aAAa,CAAC;AACtC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB,CAAC,aAAqB,EAAE,YAAoB;IAC1E,OAAO,aAAa,GAAG,YAAY,CAAC;AACtC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAAC,IAAY,EAAE,YAAoB;IAC/D,OAAO,cAAc,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC;AAC9C,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAAC,OAAe;IAClD,gDAAgD;IAChD,OAAO,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AACrC,CAAC"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Renderer Types
|
|
3
|
+
*
|
|
4
|
+
* Type definitions for FactPack rendering.
|
|
5
|
+
*/
|
|
6
|
+
import type { TOKEN_BUDGETS } from './constants.js';
|
|
7
|
+
/**
|
|
8
|
+
* Token budget tier names.
|
|
9
|
+
*/
|
|
10
|
+
export type TokenBudget = keyof typeof TOKEN_BUDGETS;
|
|
11
|
+
/**
|
|
12
|
+
* Output format for rendered FactPack.
|
|
13
|
+
*/
|
|
14
|
+
export type OutputFormat = 'xml-compact';
|
|
15
|
+
/**
|
|
16
|
+
* Options for rendering FactPack to page_brief.
|
|
17
|
+
*/
|
|
18
|
+
export interface RenderOptions {
|
|
19
|
+
/** Output format (currently only xml-compact) */
|
|
20
|
+
format: OutputFormat;
|
|
21
|
+
/** Token budget tier */
|
|
22
|
+
budget: TokenBudget;
|
|
23
|
+
/** Include <state> section (default: true) */
|
|
24
|
+
include_state?: boolean;
|
|
25
|
+
/** Maximum actions to include (overrides default) */
|
|
26
|
+
max_actions?: number;
|
|
27
|
+
/** Include URL in state (default: true) */
|
|
28
|
+
include_url?: boolean;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Result of page_brief rendering.
|
|
32
|
+
*/
|
|
33
|
+
export interface PageBriefResult {
|
|
34
|
+
/** The rendered XML-compact page brief */
|
|
35
|
+
page_brief: string;
|
|
36
|
+
/** Estimated token count */
|
|
37
|
+
page_brief_tokens: number;
|
|
38
|
+
/** Was truncation applied? */
|
|
39
|
+
was_truncated: boolean;
|
|
40
|
+
/** Original token count before truncation (if truncated) */
|
|
41
|
+
original_tokens?: number;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Section render result (before budget application).
|
|
45
|
+
*/
|
|
46
|
+
export interface RenderedSection {
|
|
47
|
+
/** Section name (for identification) */
|
|
48
|
+
name: string;
|
|
49
|
+
/** Rendered content */
|
|
50
|
+
content: string;
|
|
51
|
+
/** Priority for truncation (lower = cut first) */
|
|
52
|
+
truncation_priority: number;
|
|
53
|
+
/** Can this section be truncated? */
|
|
54
|
+
can_truncate: boolean;
|
|
55
|
+
/** Minimum content if truncated (for sections that can be partially truncated) */
|
|
56
|
+
truncated_content?: string;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Truncation context passed to section renderers.
|
|
60
|
+
*/
|
|
61
|
+
export interface TruncationContext {
|
|
62
|
+
/** Current total tokens */
|
|
63
|
+
current_tokens: number;
|
|
64
|
+
/** Target token limit */
|
|
65
|
+
target_tokens: number;
|
|
66
|
+
/** Hard cap */
|
|
67
|
+
cap_tokens: number;
|
|
68
|
+
/** Which sections have been truncated */
|
|
69
|
+
truncated_sections: string[];
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/renderer/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEpD;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,MAAM,OAAO,aAAa,CAAC;AAErD;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,aAAa,CAAC;AAEzC;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,iDAAiD;IACjD,MAAM,EAAE,YAAY,CAAC;IAErB,wBAAwB;IACxB,MAAM,EAAE,WAAW,CAAC;IAEpB,8CAA8C;IAC9C,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB,qDAAqD;IACrD,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,2CAA2C;IAC3C,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,0CAA0C;IAC1C,UAAU,EAAE,MAAM,CAAC;IAEnB,4BAA4B;IAC5B,iBAAiB,EAAE,MAAM,CAAC;IAE1B,8BAA8B;IAC9B,aAAa,EAAE,OAAO,CAAC;IAEvB,4DAA4D;IAC5D,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,wCAAwC;IACxC,IAAI,EAAE,MAAM,CAAC;IAEb,uBAAuB;IACvB,OAAO,EAAE,MAAM,CAAC;IAEhB,kDAAkD;IAClD,mBAAmB,EAAE,MAAM,CAAC;IAE5B,qCAAqC;IACrC,YAAY,EAAE,OAAO,CAAC;IAEtB,kFAAkF;IAClF,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,2BAA2B;IAC3B,cAAc,EAAE,MAAM,CAAC;IAEvB,yBAAyB;IACzB,aAAa,EAAE,MAAM,CAAC;IAEtB,eAAe;IACf,UAAU,EAAE,MAAM,CAAC;IAEnB,yCAAyC;IACzC,kBAAkB,EAAE,MAAM,EAAE,CAAC;CAC9B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/renderer/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* XML Renderer
|
|
3
|
+
*
|
|
4
|
+
* Main orchestrator for rendering FactPack to XML-compact format.
|
|
5
|
+
*/
|
|
6
|
+
import type { FactPack } from '../factpack/types.js';
|
|
7
|
+
import type { RenderOptions, PageBriefResult, TokenBudget } from './types.js';
|
|
8
|
+
/**
|
|
9
|
+
* Render a FactPack to XML-compact page brief format.
|
|
10
|
+
*
|
|
11
|
+
* @param factpack - The FactPack to render
|
|
12
|
+
* @param options - Render options (budget, format, etc.)
|
|
13
|
+
* @returns Page brief result with rendered content and token count
|
|
14
|
+
*/
|
|
15
|
+
export declare function renderFactPackXml(factpack: FactPack, options?: Partial<RenderOptions>): PageBriefResult;
|
|
16
|
+
/**
|
|
17
|
+
* Quick render without budget management.
|
|
18
|
+
* Use for testing or when you know the content is small.
|
|
19
|
+
*
|
|
20
|
+
* @param factpack - The FactPack to render
|
|
21
|
+
* @param options - Render options
|
|
22
|
+
* @returns Raw XML-compact string
|
|
23
|
+
*/
|
|
24
|
+
export declare function renderFactPackXmlRaw(factpack: FactPack, options?: Partial<RenderOptions>): string;
|
|
25
|
+
/**
|
|
26
|
+
* Generate page brief with default options.
|
|
27
|
+
* Convenience function for the most common use case.
|
|
28
|
+
*
|
|
29
|
+
* @param factpack - The FactPack to render
|
|
30
|
+
* @param budget - Token budget tier (default: 'standard')
|
|
31
|
+
* @returns Page brief result
|
|
32
|
+
*/
|
|
33
|
+
export declare function generatePageBrief(factpack: FactPack, budget?: TokenBudget): PageBriefResult;
|
|
34
|
+
/**
|
|
35
|
+
* Estimate tokens for a FactPack without full rendering.
|
|
36
|
+
* Useful for deciding whether to use compact or detailed budget.
|
|
37
|
+
*
|
|
38
|
+
* @param factpack - The FactPack to estimate
|
|
39
|
+
* @returns Rough token estimate
|
|
40
|
+
*/
|
|
41
|
+
export declare function estimateFactPackTokens(factpack: FactPack): number;
|
|
42
|
+
//# sourceMappingURL=xml-renderer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"xml-renderer.d.ts","sourceRoot":"","sources":["../../../src/renderer/xml-renderer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAqB9E;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,QAAQ,EAClB,OAAO,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,GAC/B,eAAe,CAyBjB;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,GAAG,MAAM,CAiBjG;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,QAAQ,EAClB,MAAM,GAAE,WAA4B,GACnC,eAAe,CAEjB;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,CAiBjE"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* XML Renderer
|
|
3
|
+
*
|
|
4
|
+
* Main orchestrator for rendering FactPack to XML-compact format.
|
|
5
|
+
*/
|
|
6
|
+
import { DEFAULT_BUDGET } from './constants.js';
|
|
7
|
+
import { applyBudget } from './budget-manager.js';
|
|
8
|
+
import { renderPageSection, renderDialogsSection, renderFormsSection, renderActionsSection, renderStateSection, } from './section-renderers.js';
|
|
9
|
+
/**
|
|
10
|
+
* Default render options.
|
|
11
|
+
*/
|
|
12
|
+
const DEFAULT_OPTIONS = {
|
|
13
|
+
format: 'xml-compact',
|
|
14
|
+
budget: DEFAULT_BUDGET,
|
|
15
|
+
include_state: true,
|
|
16
|
+
include_url: true,
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* Render a FactPack to XML-compact page brief format.
|
|
20
|
+
*
|
|
21
|
+
* @param factpack - The FactPack to render
|
|
22
|
+
* @param options - Render options (budget, format, etc.)
|
|
23
|
+
* @returns Page brief result with rendered content and token count
|
|
24
|
+
*/
|
|
25
|
+
export function renderFactPackXml(factpack, options) {
|
|
26
|
+
const opts = { ...DEFAULT_OPTIONS, ...options };
|
|
27
|
+
// Render each section
|
|
28
|
+
const sections = [
|
|
29
|
+
renderPageSection(factpack.page_type),
|
|
30
|
+
renderDialogsSection(factpack.dialogs),
|
|
31
|
+
renderFormsSection(factpack.forms, opts),
|
|
32
|
+
renderActionsSection(factpack.actions, opts),
|
|
33
|
+
];
|
|
34
|
+
// Optionally add state section
|
|
35
|
+
if (opts.include_state) {
|
|
36
|
+
sections.push(renderStateSection(factpack, opts));
|
|
37
|
+
}
|
|
38
|
+
// Apply budget and get final content
|
|
39
|
+
const budgetResult = applyBudget(sections, opts.budget);
|
|
40
|
+
return {
|
|
41
|
+
page_brief: budgetResult.content,
|
|
42
|
+
page_brief_tokens: budgetResult.tokens,
|
|
43
|
+
was_truncated: budgetResult.was_truncated,
|
|
44
|
+
original_tokens: budgetResult.was_truncated ? budgetResult.original_tokens : undefined,
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Quick render without budget management.
|
|
49
|
+
* Use for testing or when you know the content is small.
|
|
50
|
+
*
|
|
51
|
+
* @param factpack - The FactPack to render
|
|
52
|
+
* @param options - Render options
|
|
53
|
+
* @returns Raw XML-compact string
|
|
54
|
+
*/
|
|
55
|
+
export function renderFactPackXmlRaw(factpack, options) {
|
|
56
|
+
const opts = { ...DEFAULT_OPTIONS, ...options };
|
|
57
|
+
// Render each section
|
|
58
|
+
const sections = [
|
|
59
|
+
renderPageSection(factpack.page_type).content,
|
|
60
|
+
renderDialogsSection(factpack.dialogs).content,
|
|
61
|
+
renderFormsSection(factpack.forms, opts).content,
|
|
62
|
+
renderActionsSection(factpack.actions, opts).content,
|
|
63
|
+
];
|
|
64
|
+
// Optionally add state section
|
|
65
|
+
if (opts.include_state) {
|
|
66
|
+
sections.push(renderStateSection(factpack, opts).content);
|
|
67
|
+
}
|
|
68
|
+
return `<page_context>\n${sections.join('\n\n')}\n</page_context>`;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Generate page brief with default options.
|
|
72
|
+
* Convenience function for the most common use case.
|
|
73
|
+
*
|
|
74
|
+
* @param factpack - The FactPack to render
|
|
75
|
+
* @param budget - Token budget tier (default: 'standard')
|
|
76
|
+
* @returns Page brief result
|
|
77
|
+
*/
|
|
78
|
+
export function generatePageBrief(factpack, budget = DEFAULT_BUDGET) {
|
|
79
|
+
return renderFactPackXml(factpack, { budget });
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Estimate tokens for a FactPack without full rendering.
|
|
83
|
+
* Useful for deciding whether to use compact or detailed budget.
|
|
84
|
+
*
|
|
85
|
+
* @param factpack - The FactPack to estimate
|
|
86
|
+
* @returns Rough token estimate
|
|
87
|
+
*/
|
|
88
|
+
export function estimateFactPackTokens(factpack) {
|
|
89
|
+
// Quick estimation based on counts
|
|
90
|
+
const dialogCount = factpack.dialogs.dialogs.length;
|
|
91
|
+
const formCount = factpack.forms.forms.length;
|
|
92
|
+
const fieldCount = factpack.forms.forms.reduce((acc, f) => acc + f.fields.length, 0);
|
|
93
|
+
const actionCount = factpack.actions.actions.length;
|
|
94
|
+
// Base tokens for structure
|
|
95
|
+
let estimate = 100;
|
|
96
|
+
// Add for content
|
|
97
|
+
estimate += dialogCount * 30; // ~30 tokens per dialog
|
|
98
|
+
estimate += formCount * 40; // ~40 tokens per form header
|
|
99
|
+
estimate += fieldCount * 15; // ~15 tokens per field
|
|
100
|
+
estimate += actionCount * 20; // ~20 tokens per action
|
|
101
|
+
return estimate;
|
|
102
|
+
}
|
|
103
|
+
//# sourceMappingURL=xml-renderer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"xml-renderer.js","sourceRoot":"","sources":["../../../src/renderer/xml-renderer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Server module exports
|
|
3
|
+
*
|
|
4
|
+
* Barrel export for MCP server components.
|
|
5
|
+
*/
|
|
6
|
+
export { BrowserAutomationServer, type ServerConfig } from './mcp-server.js';
|
|
7
|
+
export { SessionStore, type TenantSession, type SessionStoreOptions } from './session-store.js';
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/server/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,uBAAuB,EAAE,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC7E,OAAO,EAAE,YAAY,EAAE,KAAK,aAAa,EAAE,KAAK,mBAAmB,EAAE,MAAM,oBAAoB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/server/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,uBAAuB,EAAqB,MAAM,iBAAiB,CAAC;AAC7E,OAAO,EAAE,YAAY,EAAgD,MAAM,oBAAoB,CAAC"}
|