agent-web-interface 4.3.0 → 4.4.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.
Files changed (251) hide show
  1. package/dist/src/browser/connection-utils.d.ts +48 -0
  2. package/dist/src/browser/connection-utils.d.ts.map +1 -0
  3. package/dist/src/browser/connection-utils.js +129 -0
  4. package/dist/src/browser/connection-utils.js.map +1 -0
  5. package/dist/src/browser/index.d.ts +3 -1
  6. package/dist/src/browser/index.d.ts.map +1 -1
  7. package/dist/src/browser/index.js +2 -1
  8. package/dist/src/browser/index.js.map +1 -1
  9. package/dist/src/browser/session-manager.d.ts +1 -89
  10. package/dist/src/browser/session-manager.d.ts.map +1 -1
  11. package/dist/src/browser/session-manager.js +1 -116
  12. package/dist/src/browser/session-manager.js.map +1 -1
  13. package/dist/src/browser/session-manager.types.d.ts +90 -0
  14. package/dist/src/browser/session-manager.types.d.ts.map +1 -0
  15. package/dist/src/browser/session-manager.types.js +7 -0
  16. package/dist/src/browser/session-manager.types.js.map +1 -0
  17. package/dist/src/form/constraint-extraction.d.ts +31 -0
  18. package/dist/src/form/constraint-extraction.d.ts.map +1 -0
  19. package/dist/src/form/constraint-extraction.js +110 -0
  20. package/dist/src/form/constraint-extraction.js.map +1 -0
  21. package/dist/src/form/field-extractor.d.ts.map +1 -1
  22. package/dist/src/form/field-extractor.js +3 -444
  23. package/dist/src/form/field-extractor.js.map +1 -1
  24. package/dist/src/form/field-state-extractor.d.ts +22 -0
  25. package/dist/src/form/field-state-extractor.d.ts.map +1 -0
  26. package/dist/src/form/field-state-extractor.js +55 -0
  27. package/dist/src/form/field-state-extractor.js.map +1 -0
  28. package/dist/src/form/form-actions.d.ts +45 -0
  29. package/dist/src/form/form-actions.d.ts.map +1 -0
  30. package/dist/src/form/form-actions.js +108 -0
  31. package/dist/src/form/form-actions.js.map +1 -0
  32. package/dist/src/form/form-detector.d.ts +0 -36
  33. package/dist/src/form/form-detector.d.ts.map +1 -1
  34. package/dist/src/form/form-detector.js +11 -376
  35. package/dist/src/form/form-detector.js.map +1 -1
  36. package/dist/src/form/input-clustering.d.ts +15 -0
  37. package/dist/src/form/input-clustering.d.ts.map +1 -0
  38. package/dist/src/form/input-clustering.js +61 -0
  39. package/dist/src/form/input-clustering.js.map +1 -0
  40. package/dist/src/form/intent-inference.d.ts +28 -0
  41. package/dist/src/form/intent-inference.d.ts.map +1 -0
  42. package/dist/src/form/intent-inference.js +137 -0
  43. package/dist/src/form/intent-inference.js.map +1 -0
  44. package/dist/src/form/purpose-inference.d.ts +50 -0
  45. package/dist/src/form/purpose-inference.d.ts.map +1 -0
  46. package/dist/src/form/purpose-inference.js +313 -0
  47. package/dist/src/form/purpose-inference.js.map +1 -0
  48. package/dist/src/form/submit-detection.d.ts +36 -0
  49. package/dist/src/form/submit-detection.d.ts.map +1 -0
  50. package/dist/src/form/submit-detection.js +101 -0
  51. package/dist/src/form/submit-detection.js.map +1 -0
  52. package/dist/src/form/types.d.ts +2 -2
  53. package/dist/src/index.js +52 -47
  54. package/dist/src/index.js.map +1 -1
  55. package/dist/src/observation/observation-accumulator.d.ts +1 -1
  56. package/dist/src/observation/observation-accumulator.js +1 -1
  57. package/dist/src/observation/observer-script.d.ts +1 -1
  58. package/dist/src/observation/observer-script.d.ts.map +1 -1
  59. package/dist/src/observation/observer-script.js +129 -7
  60. package/dist/src/observation/observer-script.js.map +1 -1
  61. package/dist/src/query/disambiguation.d.ts +18 -0
  62. package/dist/src/query/disambiguation.d.ts.map +1 -0
  63. package/dist/src/query/disambiguation.js +123 -0
  64. package/dist/src/query/disambiguation.js.map +1 -0
  65. package/dist/src/query/fuzzy-match.d.ts +17 -0
  66. package/dist/src/query/fuzzy-match.d.ts.map +1 -0
  67. package/dist/src/query/fuzzy-match.js +34 -0
  68. package/dist/src/query/fuzzy-match.js.map +1 -0
  69. package/dist/src/query/index.d.ts +3 -0
  70. package/dist/src/query/index.d.ts.map +1 -1
  71. package/dist/src/query/index.js +6 -0
  72. package/dist/src/query/index.js.map +1 -1
  73. package/dist/src/query/query-engine.d.ts +0 -35
  74. package/dist/src/query/query-engine.d.ts.map +1 -1
  75. package/dist/src/query/query-engine.js +9 -309
  76. package/dist/src/query/query-engine.js.map +1 -1
  77. package/dist/src/query/scoring.d.ts +52 -0
  78. package/dist/src/query/scoring.d.ts.map +1 -0
  79. package/dist/src/query/scoring.js +162 -0
  80. package/dist/src/query/scoring.js.map +1 -0
  81. package/dist/src/snapshot/element-resolver.d.ts +24 -13
  82. package/dist/src/snapshot/element-resolver.d.ts.map +1 -1
  83. package/dist/src/snapshot/element-resolver.js +117 -87
  84. package/dist/src/snapshot/element-resolver.js.map +1 -1
  85. package/dist/src/snapshot/extractors/ax-extractor.d.ts +1 -1
  86. package/dist/src/snapshot/extractors/ax-extractor.d.ts.map +1 -1
  87. package/dist/src/snapshot/extractors/ax-extractor.js +4 -1
  88. package/dist/src/snapshot/extractors/ax-extractor.js.map +1 -1
  89. package/dist/src/snapshot/extractors/index.d.ts +1 -1
  90. package/dist/src/snapshot/extractors/index.d.ts.map +1 -1
  91. package/dist/src/snapshot/extractors/index.js +1 -1
  92. package/dist/src/snapshot/extractors/index.js.map +1 -1
  93. package/dist/src/snapshot/extractors/region-resolver.d.ts.map +1 -1
  94. package/dist/src/snapshot/extractors/region-resolver.js +8 -0
  95. package/dist/src/snapshot/extractors/region-resolver.js.map +1 -1
  96. package/dist/src/snapshot/extractors/types.d.ts +8 -0
  97. package/dist/src/snapshot/extractors/types.d.ts.map +1 -1
  98. package/dist/src/snapshot/extractors/types.js +16 -0
  99. package/dist/src/snapshot/extractors/types.js.map +1 -1
  100. package/dist/src/snapshot/frame-context.d.ts +68 -0
  101. package/dist/src/snapshot/frame-context.d.ts.map +1 -0
  102. package/dist/src/snapshot/frame-context.js +131 -0
  103. package/dist/src/snapshot/frame-context.js.map +1 -0
  104. package/dist/src/snapshot/heading-index.d.ts +28 -0
  105. package/dist/src/snapshot/heading-index.d.ts.map +1 -0
  106. package/dist/src/snapshot/heading-index.js +108 -0
  107. package/dist/src/snapshot/heading-index.js.map +1 -0
  108. package/dist/src/snapshot/index.d.ts +5 -3
  109. package/dist/src/snapshot/index.d.ts.map +1 -1
  110. package/dist/src/snapshot/index.js +3 -2
  111. package/dist/src/snapshot/index.js.map +1 -1
  112. package/dist/src/snapshot/kind-mapping.d.ts +30 -0
  113. package/dist/src/snapshot/kind-mapping.d.ts.map +1 -0
  114. package/dist/src/snapshot/kind-mapping.js +114 -0
  115. package/dist/src/snapshot/kind-mapping.js.map +1 -0
  116. package/dist/src/snapshot/node-filter.d.ts +31 -0
  117. package/dist/src/snapshot/node-filter.d.ts.map +1 -0
  118. package/dist/src/snapshot/node-filter.js +137 -0
  119. package/dist/src/snapshot/node-filter.js.map +1 -0
  120. package/dist/src/snapshot/node-synthesizer.d.ts +62 -0
  121. package/dist/src/snapshot/node-synthesizer.d.ts.map +1 -0
  122. package/dist/src/snapshot/node-synthesizer.js +185 -0
  123. package/dist/src/snapshot/node-synthesizer.js.map +1 -0
  124. package/dist/src/snapshot/snapshot-compiler.d.ts +2 -36
  125. package/dist/src/snapshot/snapshot-compiler.d.ts.map +1 -1
  126. package/dist/src/snapshot/snapshot-compiler.js +25 -547
  127. package/dist/src/snapshot/snapshot-compiler.js.map +1 -1
  128. package/dist/src/snapshot/snapshot.types.d.ts +7 -2
  129. package/dist/src/snapshot/snapshot.types.d.ts.map +1 -1
  130. package/dist/src/snapshot/snapshot.types.js +8 -0
  131. package/dist/src/snapshot/snapshot.types.js.map +1 -1
  132. package/dist/src/state/actionables-filter.d.ts +5 -0
  133. package/dist/src/state/actionables-filter.d.ts.map +1 -1
  134. package/dist/src/state/actionables-filter.js +21 -3
  135. package/dist/src/state/actionables-filter.js.map +1 -1
  136. package/dist/src/state/diff-engine.js +3 -3
  137. package/dist/src/state/diff-engine.js.map +1 -1
  138. package/dist/src/state/element-registry.d.ts.map +1 -1
  139. package/dist/src/state/element-registry.js +6 -4
  140. package/dist/src/state/element-registry.js.map +1 -1
  141. package/dist/src/state/hash-utils.d.ts +24 -0
  142. package/dist/src/state/hash-utils.d.ts.map +1 -0
  143. package/dist/src/state/hash-utils.js +41 -0
  144. package/dist/src/state/hash-utils.js.map +1 -0
  145. package/dist/src/state/layer-detector.d.ts.map +1 -1
  146. package/dist/src/state/layer-detector.js +15 -286
  147. package/dist/src/state/layer-detector.js.map +1 -1
  148. package/dist/src/state/layer-detectors/drawer-detector.d.ts +32 -0
  149. package/dist/src/state/layer-detectors/drawer-detector.d.ts.map +1 -0
  150. package/dist/src/state/layer-detectors/drawer-detector.js +96 -0
  151. package/dist/src/state/layer-detectors/drawer-detector.js.map +1 -0
  152. package/dist/src/state/layer-detectors/index.d.ts +10 -0
  153. package/dist/src/state/layer-detectors/index.d.ts.map +1 -0
  154. package/dist/src/state/layer-detectors/index.js +10 -0
  155. package/dist/src/state/layer-detectors/index.js.map +1 -0
  156. package/dist/src/state/layer-detectors/modal-detector.d.ts +30 -0
  157. package/dist/src/state/layer-detectors/modal-detector.d.ts.map +1 -0
  158. package/dist/src/state/layer-detectors/modal-detector.js +127 -0
  159. package/dist/src/state/layer-detectors/modal-detector.js.map +1 -0
  160. package/dist/src/state/layer-detectors/popover-detector.d.ts +20 -0
  161. package/dist/src/state/layer-detectors/popover-detector.d.ts.map +1 -0
  162. package/dist/src/state/layer-detectors/popover-detector.js +76 -0
  163. package/dist/src/state/layer-detectors/popover-detector.js.map +1 -0
  164. package/dist/src/state/layer-detectors/toast-detector.d.ts +24 -0
  165. package/dist/src/state/layer-detectors/toast-detector.d.ts.map +1 -0
  166. package/dist/src/state/layer-detectors/toast-detector.js +48 -0
  167. package/dist/src/state/layer-detectors/toast-detector.js.map +1 -0
  168. package/dist/src/state/region-mapping.d.ts +13 -0
  169. package/dist/src/state/region-mapping.d.ts.map +1 -0
  170. package/dist/src/state/region-mapping.js +25 -0
  171. package/dist/src/state/region-mapping.js.map +1 -0
  172. package/dist/src/state/state-manager.d.ts.map +1 -1
  173. package/dist/src/state/state-manager.js +8 -192
  174. package/dist/src/state/state-manager.js.map +1 -1
  175. package/dist/src/state/state-renderer.d.ts.map +1 -1
  176. package/dist/src/state/state-renderer.js +14 -2
  177. package/dist/src/state/state-renderer.js.map +1 -1
  178. package/dist/src/state/types.d.ts +8 -4
  179. package/dist/src/state/types.d.ts.map +1 -1
  180. package/dist/src/state/url-sanitization.d.ts +22 -0
  181. package/dist/src/state/url-sanitization.d.ts.map +1 -0
  182. package/dist/src/state/url-sanitization.js +60 -0
  183. package/dist/src/state/url-sanitization.js.map +1 -0
  184. package/dist/src/state/value-masking.d.ts +36 -0
  185. package/dist/src/state/value-masking.d.ts.map +1 -0
  186. package/dist/src/state/value-masking.js +86 -0
  187. package/dist/src/state/value-masking.js.map +1 -0
  188. package/dist/src/tools/action-context.d.ts +60 -0
  189. package/dist/src/tools/action-context.d.ts.map +1 -0
  190. package/dist/src/tools/action-context.js +78 -0
  191. package/dist/src/tools/action-context.js.map +1 -0
  192. package/dist/src/tools/action-stabilization.d.ts +48 -0
  193. package/dist/src/tools/action-stabilization.d.ts.map +1 -0
  194. package/dist/src/tools/action-stabilization.js +87 -0
  195. package/dist/src/tools/action-stabilization.js.map +1 -0
  196. package/dist/src/tools/browser-tools.d.ts +8 -167
  197. package/dist/src/tools/browser-tools.d.ts.map +1 -1
  198. package/dist/src/tools/browser-tools.js +13 -651
  199. package/dist/src/tools/browser-tools.js.map +1 -1
  200. package/dist/src/tools/effect-tracker.d.ts +25 -0
  201. package/dist/src/tools/effect-tracker.d.ts.map +1 -0
  202. package/dist/src/tools/effect-tracker.js +69 -0
  203. package/dist/src/tools/effect-tracker.js.map +1 -0
  204. package/dist/src/tools/execute-action.d.ts +1 -31
  205. package/dist/src/tools/execute-action.d.ts.map +1 -1
  206. package/dist/src/tools/execute-action.js +7 -276
  207. package/dist/src/tools/execute-action.js.map +1 -1
  208. package/dist/src/tools/form-tools.d.ts +2 -2
  209. package/dist/src/tools/form-tools.js +4 -4
  210. package/dist/src/tools/form-tools.js.map +1 -1
  211. package/dist/src/tools/index.d.ts +2 -2
  212. package/dist/src/tools/index.d.ts.map +1 -1
  213. package/dist/src/tools/index.js +10 -8
  214. package/dist/src/tools/index.js.map +1 -1
  215. package/dist/src/tools/interaction-tools.d.ts +46 -0
  216. package/dist/src/tools/interaction-tools.d.ts.map +1 -0
  217. package/dist/src/tools/interaction-tools.js +138 -0
  218. package/dist/src/tools/interaction-tools.js.map +1 -0
  219. package/dist/src/tools/navigation-detection.d.ts +31 -0
  220. package/dist/src/tools/navigation-detection.d.ts.map +1 -0
  221. package/dist/src/tools/navigation-detection.js +46 -0
  222. package/dist/src/tools/navigation-detection.js.map +1 -0
  223. package/dist/src/tools/navigation-tools.d.ts +57 -0
  224. package/dist/src/tools/navigation-tools.d.ts.map +1 -0
  225. package/dist/src/tools/navigation-tools.js +178 -0
  226. package/dist/src/tools/navigation-tools.js.map +1 -0
  227. package/dist/src/tools/observation-tools.d.ts +53 -0
  228. package/dist/src/tools/observation-tools.d.ts.map +1 -0
  229. package/dist/src/tools/observation-tools.js +247 -0
  230. package/dist/src/tools/observation-tools.js.map +1 -0
  231. package/dist/src/tools/response-builder.js +2 -2
  232. package/dist/src/tools/response-builder.js.map +1 -1
  233. package/dist/src/tools/stale-element-retry.d.ts +37 -0
  234. package/dist/src/tools/stale-element-retry.d.ts.map +1 -0
  235. package/dist/src/tools/stale-element-retry.js +68 -0
  236. package/dist/src/tools/stale-element-retry.js.map +1 -0
  237. package/dist/src/tools/state-manager-registry.d.ts +26 -0
  238. package/dist/src/tools/state-manager-registry.d.ts.map +1 -0
  239. package/dist/src/tools/state-manager-registry.js +39 -0
  240. package/dist/src/tools/state-manager-registry.js.map +1 -0
  241. package/dist/src/tools/tool-context.js +1 -1
  242. package/dist/src/tools/tool-context.js.map +1 -1
  243. package/dist/src/tools/tool-schemas.d.ts +106 -21
  244. package/dist/src/tools/tool-schemas.d.ts.map +1 -1
  245. package/dist/src/tools/tool-schemas.js +59 -18
  246. package/dist/src/tools/tool-schemas.js.map +1 -1
  247. package/dist/src/tools/viewport-tools.d.ts +36 -0
  248. package/dist/src/tools/viewport-tools.d.ts.map +1 -0
  249. package/dist/src/tools/viewport-tools.js +105 -0
  250. package/dist/src/tools/viewport-tools.js.map +1 -0
  251. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"query-engine.js","sourceRoot":"","sources":["../../../src/query/query-engine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"query-engine.js","sourceRoot":"","sources":["../../../src/query/query-engine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAiBH,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAgBtD;;GAEG;AACH,MAAM,OAAO,WAAW;IACL,QAAQ,CAAe;IACvB,OAAO,CAA4B;IACnC,YAAY,CAAS;IAEtC;;OAEG;IACH,YAAY,QAAsB,EAAE,UAA8B,EAAE;QAClE,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,OAAO,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAClE,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,EAAE,CAAC;IACjD,CAAC;IAED;;OAEG;IACH,IAAI,CAAC,UAA+B,EAAE;QACpC,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;QACpC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,YAAY,CAAC;QAEjD,IAAI,UAAU,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC1C,IAAI,WAA4C,CAAC;QAEjD,wEAAwE;QAExE,iBAAiB;QACjB,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC/B,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;QAC3D,CAAC;QAED,uCAAuC;QACvC,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YAChC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,aAAa,EAAE,YAAY,EAAE,GAAG,oBAAoB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAExF,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;gBACrB,MAAM,MAAM,GAAG,kBAAkB,CAAC,UAAU,EAAE,IAAI,EAAE,aAAa,EAAE,YAAY,CAAC,CAAC;gBACjF,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC;gBAC1B,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC;YAC9B,CAAC;iBAAM,CAAC;gBACN,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;YAC7D,CAAC;QACH,CAAC;QAED,mBAAmB;QACnB,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YACjC,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;QAC/D,CAAC;QAED,kBAAkB;QAClB,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YAChC,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;QAC7D,CAAC;QAED,mCAAmC;QACnC,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YACnC,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC/E,CAAC;QAED,0CAA0C;QAC1C,IAAI,OAAO,CAAC,eAAe,KAAK,SAAS,EAAE,CAAC;YAC1C,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,eAAe,KAAK,OAAO,CAAC,eAAe,CAAC,CAAC;QAC7F,CAAC;QAED,uBAAuB;QACvB,MAAM,aAAa,GAAkB,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YAC3D,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;YACzF,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,aAAa,EAAE,OAAO,EAAE,CAAC;QACrD,CAAC,CAAC,CAAC;QAEH,yBAAyB;QACzB,IAAI,eAAe,GAAG,aAAa,CAAC;QACpC,IAAI,OAAO,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YACpC,eAAe,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,IAAI,OAAO,CAAC,SAAU,CAAC,CAAC;QAC1F,CAAC;QAED,iCAAiC;QACjC,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC;YAC9B,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC,CAAC;QAC1E,CAAC;QAED,qCAAqC;QACrC,MAAM,YAAY,GAAG,eAAe,CAAC,MAAM,CAAC;QAE5C,cAAc;QACd,MAAM,cAAc,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QAEvD,8DAA8D;QAC9D,IAAI,WAAmD,CAAC;QACxD,IAAI,OAAO,CAAC,mBAAmB,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;YACpD,WAAW,GAAG,mBAAmB,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;YAC3D,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC;gBAAE,WAAW,GAAG,SAAS,CAAC;QACxD,CAAC;QAED,OAAO;YACL,OAAO,EAAE,cAAc;YACvB,KAAK,EAAE;gBACL,aAAa,EAAE,YAAY;gBAC3B,aAAa,EAAE,WAAW,CAAC,GAAG,EAAE,GAAG,SAAS;gBAC5C,eAAe,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM;aAC5C;YACD,WAAW;SACZ,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,OAAO,CAAC,MAAc;QACpB,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAClC,CAAC;IAED;;OAEG;IACH,eAAe;QACb,OAAO;YACL,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC,WAAW;YACtC,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM;SACvC,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,WAAW,CAAC,KAAc;QACxB,MAAM,cAAc,GAAG,KAAK,IAAI,IAAI,CAAC,YAAY,CAAC;QAClD,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC;IACtD,CAAC;IAED,8EAA8E;IAC9E,yBAAyB;IACzB,8EAA8E;IAE9E;;OAEG;IACK,YAAY,CAAC,KAAqB,EAAE,IAA2B;QACrE,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAClD,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IACrD,CAAC;IAED;;OAEG;IACK,aAAa,CAAC,KAAqB,EAAE,MAA4B;QACvE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,aAAa,EAAE,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC;QAEnE,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO,KAAK,CAAC;QACf,CAAC;QAED,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC;IAClF,CAAC;IAED;;OAEG;IACK,UAAU,CAChB,KAAa,EACb,UAAkB,EAClB,IAAmB,EACnB,aAAsB;QAEtB,MAAM,eAAe,GAAG,aAAa,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;QACnF,MAAM,gBAAgB,GAAG,aAAa,CAAC,aAAa,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC;QAE9F,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,OAAO;gBACV,OAAO,eAAe,KAAK,gBAAgB,CAAC;YAC9C,KAAK,UAAU,CAAC;YAChB;gBACE,OAAO,eAAe,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;QACtD,CAAC;QAED,yBAAyB;QACzB,gBAAgB;QAChB,+DAA+D;IACjE,CAAC;IAED;;OAEG;IACK,cAAc,CACpB,KAAqB,EACrB,MAAyC;QAEzC,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QAC1D,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IAC/D,CAAC;IAED;;OAEG;IACK,aAAa,CAAC,KAAqB,EAAE,UAA2B;QACtE,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC;IAC7D,CAAC;IAED;;OAEG;IACK,UAAU,CAAC,IAAkB,EAAE,UAA2B;QAChE,oDAAoD;QACpD,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YAChB,OAAO,KAAK,CAAC;QACf,CAAC;QAED,8BAA8B;QAC9B,KAAK,MAAM,CAAC,GAAG,EAAE,aAAa,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;YAC9D,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;gBAChC,SAAS;YACX,CAAC;YAED,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,GAA4B,CAAC,CAAC;YAE7D,0EAA0E;YAC1E,wEAAwE;YACxE,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;gBAC9B,wDAAwD;gBACxD,IAAI,aAAa,KAAK,KAAK,EAAE,CAAC;oBAC5B,SAAS;gBACX,CAAC;gBACD,OAAO,KAAK,CAAC;YACf,CAAC;YAED,IAAI,WAAW,KAAK,aAAa,EAAE,CAAC;gBAClC,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;CACF"}
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Scoring
3
+ *
4
+ * Relevance scoring for query matches.
5
+ * Calculates how well a node matches the query request.
6
+ */
7
+ import type { ReadableNode } from '../snapshot/snapshot.types.js';
8
+ import type { FindElementsRequest, MatchReason, LabelFilter, TextMatchMode } from './types/query.types.js';
9
+ /**
10
+ * Scoring weights for relevance calculation.
11
+ * Values represent the maximum contribution each signal can add to the score.
12
+ */
13
+ export declare const SCORING_WEIGHTS: {
14
+ readonly labelMatch: {
15
+ readonly exact: 0.4;
16
+ readonly contains: 0.3;
17
+ readonly fuzzy: 0.25;
18
+ };
19
+ readonly kindMatch: 0.15;
20
+ readonly regionMatch: 0.12;
21
+ readonly stateMatch: 0.03;
22
+ readonly groupMatch: 0.08;
23
+ readonly headingMatch: 0.08;
24
+ readonly visibility: 0.02;
25
+ };
26
+ /**
27
+ * Normalize a label filter to its constituent parts.
28
+ * Shared helper used by both scoring and the query engine.
29
+ */
30
+ export declare function normalizeLabelFilter(filter: string | LabelFilter): {
31
+ text: string;
32
+ mode: TextMatchMode;
33
+ caseSensitive: boolean;
34
+ fuzzyOptions?: import('./types/query.types.js').FuzzyMatchOptions;
35
+ };
36
+ /**
37
+ * Calculate relevance score and match reasons for a node.
38
+ *
39
+ * @param node - The node to score
40
+ * @param request - The original query request
41
+ * @param labelMatchScore - Pre-computed label match score (for fuzzy matching)
42
+ * @returns Relevance score (0-1) and list of reasons
43
+ */
44
+ export declare function scoreMatch(node: ReadableNode, request: FindElementsRequest, labelMatchScore?: number): {
45
+ relevance: number;
46
+ reasons: MatchReason[];
47
+ };
48
+ /**
49
+ * Calculate the maximum possible score given the request filters.
50
+ */
51
+ export declare function calculateMaxPossibleScore(request: FindElementsRequest): number;
52
+ //# sourceMappingURL=scoring.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scoring.d.ts","sourceRoot":"","sources":["../../../src/query/scoring.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,KAAK,EACV,mBAAmB,EACnB,WAAW,EACX,WAAW,EAEX,aAAa,EACd,MAAM,wBAAwB,CAAC;AAEhC;;;GAGG;AACH,eAAO,MAAM,eAAe;;;;;;;;;;;;CAYlB,CAAC;AAEX;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,GAAG;IAClE,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,aAAa,CAAC;IACpB,aAAa,EAAE,OAAO,CAAC;IACvB,YAAY,CAAC,EAAE,OAAO,wBAAwB,EAAE,iBAAiB,CAAC;CACnE,CAUA;AAED;;;;;;;GAOG;AACH,wBAAgB,UAAU,CACxB,IAAI,EAAE,YAAY,EAClB,OAAO,EAAE,mBAAmB,EAC5B,eAAe,CAAC,EAAE,MAAM,GACvB;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,WAAW,EAAE,CAAA;CAAE,CA+F/C;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,mBAAmB,GAAG,MAAM,CAmB9E"}
@@ -0,0 +1,162 @@
1
+ /**
2
+ * Scoring
3
+ *
4
+ * Relevance scoring for query matches.
5
+ * Calculates how well a node matches the query request.
6
+ */
7
+ /**
8
+ * Scoring weights for relevance calculation.
9
+ * Values represent the maximum contribution each signal can add to the score.
10
+ */
11
+ export const SCORING_WEIGHTS = {
12
+ labelMatch: {
13
+ exact: 0.4,
14
+ contains: 0.3,
15
+ fuzzy: 0.25, // Base, multiplied by fuzzy match quality
16
+ },
17
+ kindMatch: 0.15,
18
+ regionMatch: 0.12,
19
+ stateMatch: 0.03, // Per matching state property (max ~0.27 for 9 props)
20
+ groupMatch: 0.08,
21
+ headingMatch: 0.08,
22
+ visibility: 0.02,
23
+ };
24
+ /**
25
+ * Normalize a label filter to its constituent parts.
26
+ * Shared helper used by both scoring and the query engine.
27
+ */
28
+ export function normalizeLabelFilter(filter) {
29
+ if (typeof filter === 'string') {
30
+ return { text: filter, mode: 'contains', caseSensitive: false };
31
+ }
32
+ return {
33
+ text: filter.text,
34
+ mode: filter.mode ?? 'contains',
35
+ caseSensitive: filter.caseSensitive ?? false,
36
+ fuzzyOptions: filter.fuzzyOptions,
37
+ };
38
+ }
39
+ /**
40
+ * Calculate relevance score and match reasons for a node.
41
+ *
42
+ * @param node - The node to score
43
+ * @param request - The original query request
44
+ * @param labelMatchScore - Pre-computed label match score (for fuzzy matching)
45
+ * @returns Relevance score (0-1) and list of reasons
46
+ */
47
+ export function scoreMatch(node, request, labelMatchScore) {
48
+ let relevance = 0;
49
+ const reasons = [];
50
+ // Label scoring
51
+ if (request.label !== undefined) {
52
+ const { mode } = normalizeLabelFilter(request.label);
53
+ let labelContribution;
54
+ if (mode === 'fuzzy' && labelMatchScore !== undefined) {
55
+ // Fuzzy: base weight * match quality
56
+ labelContribution = SCORING_WEIGHTS.labelMatch.fuzzy * labelMatchScore;
57
+ }
58
+ else if (mode === 'exact') {
59
+ labelContribution = SCORING_WEIGHTS.labelMatch.exact;
60
+ }
61
+ else {
62
+ labelContribution = SCORING_WEIGHTS.labelMatch.contains;
63
+ }
64
+ relevance += labelContribution;
65
+ reasons.push({
66
+ type: 'label',
67
+ description: `Label "${truncateLabel(node.label)}" matches query`,
68
+ score_contribution: labelContribution,
69
+ });
70
+ }
71
+ // Kind scoring
72
+ if (request.kind !== undefined) {
73
+ relevance += SCORING_WEIGHTS.kindMatch;
74
+ reasons.push({
75
+ type: 'kind',
76
+ description: `Kind "${node.kind}" matches filter`,
77
+ score_contribution: SCORING_WEIGHTS.kindMatch,
78
+ });
79
+ }
80
+ // Region scoring
81
+ if (request.region !== undefined) {
82
+ relevance += SCORING_WEIGHTS.regionMatch;
83
+ reasons.push({
84
+ type: 'region',
85
+ description: `Region "${node.where.region}" matches filter`,
86
+ score_contribution: SCORING_WEIGHTS.regionMatch,
87
+ });
88
+ }
89
+ // State scoring (per matched property)
90
+ if (request.state !== undefined && node.state) {
91
+ const matchedStates = Object.keys(request.state).filter((k) => request.state[k] !== undefined &&
92
+ request.state[k] === node.state[k]);
93
+ const stateContribution = matchedStates.length * SCORING_WEIGHTS.stateMatch;
94
+ if (stateContribution > 0) {
95
+ relevance += stateContribution;
96
+ reasons.push({
97
+ type: 'state',
98
+ description: `States match: ${matchedStates.join(', ')}`,
99
+ score_contribution: stateContribution,
100
+ });
101
+ }
102
+ }
103
+ // Group scoring
104
+ if (request.group_id !== undefined) {
105
+ relevance += SCORING_WEIGHTS.groupMatch;
106
+ reasons.push({
107
+ type: 'group',
108
+ description: `Group "${node.where.group_id}" matches`,
109
+ score_contribution: SCORING_WEIGHTS.groupMatch,
110
+ });
111
+ }
112
+ // Heading context scoring
113
+ if (request.heading_context !== undefined) {
114
+ relevance += SCORING_WEIGHTS.headingMatch;
115
+ reasons.push({
116
+ type: 'heading',
117
+ description: `Heading context "${node.where.heading_context}" matches`,
118
+ score_contribution: SCORING_WEIGHTS.headingMatch,
119
+ });
120
+ }
121
+ // Visibility bonus (always applied if node is visible)
122
+ if (node.state?.visible) {
123
+ relevance += SCORING_WEIGHTS.visibility;
124
+ }
125
+ // Normalize to 0-1 range based on what was actually queried
126
+ // This gives higher scores when fewer filters are used but all match
127
+ const maxPossible = calculateMaxPossibleScore(request);
128
+ const normalizedRelevance = maxPossible > 0 ? Math.min(1, relevance / maxPossible) : 0;
129
+ return { relevance: normalizedRelevance, reasons };
130
+ }
131
+ /**
132
+ * Calculate the maximum possible score given the request filters.
133
+ */
134
+ export function calculateMaxPossibleScore(request) {
135
+ let max = SCORING_WEIGHTS.visibility; // Always possible
136
+ if (request.label !== undefined) {
137
+ const { mode } = normalizeLabelFilter(request.label);
138
+ max += SCORING_WEIGHTS.labelMatch[mode];
139
+ }
140
+ if (request.kind !== undefined)
141
+ max += SCORING_WEIGHTS.kindMatch;
142
+ if (request.region !== undefined)
143
+ max += SCORING_WEIGHTS.regionMatch;
144
+ if (request.state !== undefined) {
145
+ const stateCount = Object.keys(request.state).filter((k) => request.state[k] !== undefined).length;
146
+ max += stateCount * SCORING_WEIGHTS.stateMatch;
147
+ }
148
+ if (request.group_id !== undefined)
149
+ max += SCORING_WEIGHTS.groupMatch;
150
+ if (request.heading_context !== undefined)
151
+ max += SCORING_WEIGHTS.headingMatch;
152
+ return max;
153
+ }
154
+ /**
155
+ * Truncate a label for display in reasons.
156
+ */
157
+ function truncateLabel(label, maxLength = 30) {
158
+ if (label.length <= maxLength)
159
+ return label;
160
+ return label.slice(0, maxLength - 1) + '…';
161
+ }
162
+ //# sourceMappingURL=scoring.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scoring.js","sourceRoot":"","sources":["../../../src/query/scoring.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,14 @@
5
5
  * Provides CDP-based clicking using backendNodeId for guaranteed uniqueness.
6
6
  */
7
7
  import type { CdpClient } from '../cdp/cdp-client.interface.js';
8
+ /**
9
+ * CDP Input modifier bitmask values.
10
+ * These are ORed together for combined modifiers.
11
+ */
12
+ export declare const MODIFIER_ALT = 1;
13
+ export declare const MODIFIER_CTRL = 2;
14
+ export declare const MODIFIER_META = 4;
15
+ export declare const MODIFIER_SHIFT = 8;
8
16
  /**
9
17
  * Get the top-left viewport coordinates of an element.
10
18
  * Scrolls element into view first.
@@ -19,24 +27,16 @@ export declare function getElementTopLeft(cdp: CdpClient, backendNodeId: number)
19
27
  * Bypasses Playwright's locator system to avoid strict mode violations
20
28
  * when multiple elements match the same selector.
21
29
  */
22
- export declare function clickByBackendNodeId(cdp: CdpClient, backendNodeId: number): Promise<void>;
30
+ export declare function clickByBackendNodeId(cdp: CdpClient, backendNodeId: number, modifiers?: string[]): Promise<void>;
23
31
  /**
24
32
  * Click at absolute viewport coordinates using CDP.
25
33
  */
26
- export declare function clickAtCoordinates(cdp: CdpClient, x: number, y: number): Promise<void>;
34
+ export declare function clickAtCoordinates(cdp: CdpClient, x: number, y: number, modifiers?: string[]): Promise<void>;
27
35
  /**
28
36
  * Click at an offset relative to an element's top-left corner.
29
37
  * Scrolls element into view, computes absolute coordinates, then clicks.
30
38
  */
31
- export declare function clickAtElementOffset(cdp: CdpClient, backendNodeId: number, offsetX: number, offsetY: number): Promise<void>;
32
- /**
33
- * CDP Input modifier bitmask values.
34
- * These are ORed together for combined modifiers.
35
- */
36
- export declare const MODIFIER_ALT = 1;
37
- export declare const MODIFIER_CTRL = 2;
38
- export declare const MODIFIER_META = 4;
39
- export declare const MODIFIER_SHIFT = 8;
39
+ export declare function clickAtElementOffset(cdp: CdpClient, backendNodeId: number, offsetX: number, offsetY: number, modifiers?: string[]): Promise<void>;
40
40
  /**
41
41
  * Clear text in the currently focused element using Ctrl+A then Delete.
42
42
  *
@@ -117,7 +117,18 @@ export declare function scrollPage(cdp: CdpClient, direction: 'up' | 'down', amo
117
117
  * @param targetX - End X coordinate
118
118
  * @param targetY - End Y coordinate
119
119
  * @param steps - Number of intermediate mouseMoved events (default: 10)
120
- * @throws Error if coordinates are invalid
120
+ * @param modifiers - Optional modifier keys (e.g., ['Shift', 'Control'])
121
+ */
122
+ export declare function dragBetweenCoordinates(cdp: CdpClient, sourceX: number, sourceY: number, targetX: number, targetY: number, steps?: number, modifiers?: string[]): Promise<void>;
123
+ /**
124
+ * Dispatch a mouse wheel event at the given coordinates using CDP.
125
+ *
126
+ * @param cdp - CDP client instance
127
+ * @param x - X coordinate where the wheel event occurs
128
+ * @param y - Y coordinate where the wheel event occurs
129
+ * @param deltaX - Horizontal scroll delta (positive = right)
130
+ * @param deltaY - Vertical scroll delta (positive = down)
131
+ * @param modifiers - Optional modifier keys (e.g., ['Control'] for zoom)
121
132
  */
122
- export declare function dragBetweenCoordinates(cdp: CdpClient, sourceX: number, sourceY: number, targetX: number, targetY: number, steps?: number): Promise<void>;
133
+ export declare function dispatchWheelEvent(cdp: CdpClient, x: number, y: number, deltaX: number, deltaY: number, modifiers?: string[]): Promise<void>;
123
134
  //# sourceMappingURL=element-resolver.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"element-resolver.d.ts","sourceRoot":"","sources":["../../../src/snapshot/element-resolver.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AA6ChE;;;GAGG;AACH,wBAAsB,iBAAiB,CACrC,GAAG,EAAE,SAAS,EACd,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAGnC;AAMD;;;;;GAKG;AACH,wBAAsB,oBAAoB,CAAC,GAAG,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAG/F;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,GAAG,EAAE,SAAS,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAsB5F;AAED;;;GAGG;AACH,wBAAsB,oBAAoB,CACxC,GAAG,EAAE,SAAS,EACd,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,IAAI,CAAC,CAGf;AAMD;;;GAGG;AACH,eAAO,MAAM,YAAY,IAAI,CAAC;AAC9B,eAAO,MAAM,aAAa,IAAI,CAAC;AAC/B,eAAO,MAAM,aAAa,IAAI,CAAC;AAC/B,eAAO,MAAM,cAAc,IAAI,CAAC;AAyFhC;;;;;;;GAOG;AACH,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CA8BpE;AAMD;;;;;;;;;;GAUG;AACH,wBAAsB,mBAAmB,CACvC,GAAG,EAAE,SAAS,EACd,aAAa,EAAE,MAAM,EACrB,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GAC5B,OAAO,CAAC,IAAI,CAAC,CAWf;AAMD;;;;;;;;GAQG;AACH,wBAAsB,QAAQ,CAAC,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA0B/F;AAMD;;;;;;;;;GASG;AACH,wBAAsB,YAAY,CAChC,GAAG,EAAE,SAAS,EACd,aAAa,EAAE,MAAM,EACrB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,MAAM,CAAC,CAwCjB;AAMD;;;;;;;GAOG;AACH,wBAAsB,oBAAoB,CAAC,GAAG,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAQ/F;AAMD;;;;;GAKG;AACH,wBAAsB,cAAc,CAAC,GAAG,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAUzF;AAED;;;;;;GAMG;AACH,wBAAsB,UAAU,CAC9B,GAAG,EAAE,SAAS,EACd,SAAS,EAAE,IAAI,GAAG,MAAM,EACxB,MAAM,SAAM,GACX,OAAO,CAAC,IAAI,CAAC,CAMf;AAMD;;;;;;;;;;;;;GAaG;AACH,wBAAsB,sBAAsB,CAC1C,GAAG,EAAE,SAAS,EACd,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,KAAK,SAAK,GACT,OAAO,CAAC,IAAI,CAAC,CA8Cf"}
1
+ {"version":3,"file":"element-resolver.d.ts","sourceRoot":"","sources":["../../../src/snapshot/element-resolver.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAMhE;;;GAGG;AACH,eAAO,MAAM,YAAY,IAAI,CAAC;AAC9B,eAAO,MAAM,aAAa,IAAI,CAAC;AAC/B,eAAO,MAAM,aAAa,IAAI,CAAC;AAC/B,eAAO,MAAM,cAAc,IAAI,CAAC;AAqGhC;;;GAGG;AACH,wBAAsB,iBAAiB,CACrC,GAAG,EAAE,SAAS,EACd,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAGnC;AA6BD;;;;;GAKG;AACH,wBAAsB,oBAAoB,CACxC,GAAG,EAAE,SAAS,EACd,aAAa,EAAE,MAAM,EACrB,SAAS,CAAC,EAAE,MAAM,EAAE,GACnB,OAAO,CAAC,IAAI,CAAC,CAGf;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,GAAG,EAAE,SAAS,EACd,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,SAAS,CAAC,EAAE,MAAM,EAAE,GACnB,OAAO,CAAC,IAAI,CAAC,CA0Bf;AAED;;;GAGG;AACH,wBAAsB,oBAAoB,CACxC,GAAG,EAAE,SAAS,EACd,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,SAAS,CAAC,EAAE,MAAM,EAAE,GACnB,OAAO,CAAC,IAAI,CAAC,CAGf;AAMD;;;;;;;GAOG;AACH,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CA8BpE;AAMD;;;;;;;;;;GAUG;AACH,wBAAsB,mBAAmB,CACvC,GAAG,EAAE,SAAS,EACd,aAAa,EAAE,MAAM,EACrB,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GAC5B,OAAO,CAAC,IAAI,CAAC,CAWf;AAMD;;;;;;;;GAQG;AACH,wBAAsB,QAAQ,CAAC,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA0B/F;AAMD;;;;;;;;;GASG;AACH,wBAAsB,YAAY,CAChC,GAAG,EAAE,SAAS,EACd,aAAa,EAAE,MAAM,EACrB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,MAAM,CAAC,CAwCjB;AAMD;;;;;;;GAOG;AACH,wBAAsB,oBAAoB,CAAC,GAAG,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAQ/F;AAMD;;;;;GAKG;AACH,wBAAsB,cAAc,CAAC,GAAG,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAUzF;AAED;;;;;;GAMG;AACH,wBAAsB,UAAU,CAC9B,GAAG,EAAE,SAAS,EACd,SAAS,EAAE,IAAI,GAAG,MAAM,EACxB,MAAM,SAAM,GACX,OAAO,CAAC,IAAI,CAAC,CAMf;AAMD;;;;;;;;;;;;;GAaG;AACH,wBAAsB,sBAAsB,CAC1C,GAAG,EAAE,SAAS,EACd,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,KAAK,SAAK,EACV,SAAS,CAAC,EAAE,MAAM,EAAE,GACnB,OAAO,CAAC,IAAI,CAAC,CAmDf;AAMD;;;;;;;;;GASG;AACH,wBAAsB,kBAAkB,CACtC,GAAG,EAAE,SAAS,EACd,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,SAAS,CAAC,EAAE,MAAM,EAAE,GACnB,OAAO,CAAC,IAAI,CAAC,CAef"}
@@ -5,6 +5,68 @@
5
5
  * Provides CDP-based clicking using backendNodeId for guaranteed uniqueness.
6
6
  */
7
7
  // ============================================================================
8
+ // Modifier Bitmask Constants
9
+ // ============================================================================
10
+ /**
11
+ * CDP Input modifier bitmask values.
12
+ * These are ORed together for combined modifiers.
13
+ */
14
+ export const MODIFIER_ALT = 1;
15
+ export const MODIFIER_CTRL = 2;
16
+ export const MODIFIER_META = 4;
17
+ export const MODIFIER_SHIFT = 8;
18
+ /**
19
+ * Convert modifier names to CDP modifier bitmask.
20
+ */
21
+ function computeModifiers(modifiers) {
22
+ if (!modifiers)
23
+ return 0;
24
+ let bits = 0;
25
+ for (const mod of modifiers) {
26
+ switch (mod.toLowerCase()) {
27
+ case 'alt':
28
+ bits |= MODIFIER_ALT;
29
+ break;
30
+ case 'control':
31
+ case 'ctrl':
32
+ bits |= MODIFIER_CTRL;
33
+ break;
34
+ case 'meta':
35
+ case 'cmd':
36
+ case 'command':
37
+ bits |= MODIFIER_META;
38
+ break;
39
+ case 'shift':
40
+ bits |= MODIFIER_SHIFT;
41
+ break;
42
+ }
43
+ }
44
+ return bits;
45
+ }
46
+ // ============================================================================
47
+ // Key Code Mapping
48
+ // ============================================================================
49
+ /**
50
+ * Maps key names to their DOM key codes.
51
+ * Used for Input.dispatchKeyEvent CDP commands.
52
+ */
53
+ const KEY_DEFINITIONS = {
54
+ Enter: { code: 'Enter', keyCode: 13, key: 'Enter', text: '\r' },
55
+ Tab: { code: 'Tab', keyCode: 9, key: 'Tab' },
56
+ Escape: { code: 'Escape', keyCode: 27, key: 'Escape' },
57
+ Backspace: { code: 'Backspace', keyCode: 8, key: 'Backspace' },
58
+ Delete: { code: 'Delete', keyCode: 46, key: 'Delete' },
59
+ Space: { code: 'Space', keyCode: 32, key: ' ', text: ' ' },
60
+ ArrowUp: { code: 'ArrowUp', keyCode: 38, key: 'ArrowUp' },
61
+ ArrowDown: { code: 'ArrowDown', keyCode: 40, key: 'ArrowDown' },
62
+ ArrowLeft: { code: 'ArrowLeft', keyCode: 37, key: 'ArrowLeft' },
63
+ ArrowRight: { code: 'ArrowRight', keyCode: 39, key: 'ArrowRight' },
64
+ Home: { code: 'Home', keyCode: 36, key: 'Home' },
65
+ End: { code: 'End', keyCode: 35, key: 'End' },
66
+ PageUp: { code: 'PageUp', keyCode: 33, key: 'PageUp' },
67
+ PageDown: { code: 'PageDown', keyCode: 34, key: 'PageDown' },
68
+ };
69
+ // ============================================================================
8
70
  // Element Box Model Helpers
9
71
  // ============================================================================
10
72
  /**
@@ -46,6 +108,21 @@ export async function getElementTopLeft(cdp, backendNodeId) {
46
108
  const content = await scrollAndGetContentQuad(cdp, backendNodeId);
47
109
  return { x: content[0], y: content[1] };
48
110
  }
111
+ /**
112
+ * Get the center coordinates of an element by its backendNodeId.
113
+ * Scrolls the element into view first.
114
+ */
115
+ async function getElementCenter(cdp, backendNodeId) {
116
+ const content = await scrollAndGetContentQuad(cdp, backendNodeId);
117
+ const [x1, y1, x2, , , y3] = content;
118
+ const x = x1 + (x2 - x1) / 2;
119
+ const y = y1 + (y3 - y1) / 2;
120
+ if (x < 0 || y < 0 || !Number.isFinite(x) || !Number.isFinite(y)) {
121
+ throw new Error(`Invalid coordinates (x: ${x}, y: ${y}) for backendNodeId: ${backendNodeId}. ` +
122
+ `The element may be positioned off-screen.`);
123
+ }
124
+ return { x, y };
125
+ }
49
126
  // ============================================================================
50
127
  // Click Operations
51
128
  // ============================================================================
@@ -55,23 +132,25 @@ export async function getElementTopLeft(cdp, backendNodeId) {
55
132
  * Bypasses Playwright's locator system to avoid strict mode violations
56
133
  * when multiple elements match the same selector.
57
134
  */
58
- export async function clickByBackendNodeId(cdp, backendNodeId) {
135
+ export async function clickByBackendNodeId(cdp, backendNodeId, modifiers) {
59
136
  const { x, y } = await getElementCenter(cdp, backendNodeId);
60
- await clickAtCoordinates(cdp, x, y);
137
+ await clickAtCoordinates(cdp, x, y, modifiers);
61
138
  }
62
139
  /**
63
140
  * Click at absolute viewport coordinates using CDP.
64
141
  */
65
- export async function clickAtCoordinates(cdp, x, y) {
142
+ export async function clickAtCoordinates(cdp, x, y, modifiers) {
66
143
  if (!Number.isFinite(x) || !Number.isFinite(y) || x < 0 || y < 0) {
67
144
  throw new Error(`Invalid click coordinates (x: ${x}, y: ${y}). Coordinates must be non-negative finite numbers.`);
68
145
  }
146
+ const modifierBits = computeModifiers(modifiers);
69
147
  await cdp.send('Input.dispatchMouseEvent', {
70
148
  type: 'mousePressed',
71
149
  x,
72
150
  y,
73
151
  button: 'left',
74
152
  clickCount: 1,
153
+ modifiers: modifierBits,
75
154
  });
76
155
  await cdp.send('Input.dispatchMouseEvent', {
77
156
  type: 'mouseReleased',
@@ -79,95 +158,16 @@ export async function clickAtCoordinates(cdp, x, y) {
79
158
  y,
80
159
  button: 'left',
81
160
  clickCount: 1,
161
+ modifiers: modifierBits,
82
162
  });
83
163
  }
84
164
  /**
85
165
  * Click at an offset relative to an element's top-left corner.
86
166
  * Scrolls element into view, computes absolute coordinates, then clicks.
87
167
  */
88
- export async function clickAtElementOffset(cdp, backendNodeId, offsetX, offsetY) {
168
+ export async function clickAtElementOffset(cdp, backendNodeId, offsetX, offsetY, modifiers) {
89
169
  const { x, y } = await getElementTopLeft(cdp, backendNodeId);
90
- await clickAtCoordinates(cdp, x + offsetX, y + offsetY);
91
- }
92
- // ============================================================================
93
- // Modifier Bitmask Constants
94
- // ============================================================================
95
- /**
96
- * CDP Input modifier bitmask values.
97
- * These are ORed together for combined modifiers.
98
- */
99
- export const MODIFIER_ALT = 1;
100
- export const MODIFIER_CTRL = 2;
101
- export const MODIFIER_META = 4;
102
- export const MODIFIER_SHIFT = 8;
103
- // ============================================================================
104
- // Key Code Mapping
105
- // ============================================================================
106
- /**
107
- * Maps key names to their DOM key codes.
108
- * Used for Input.dispatchKeyEvent CDP commands.
109
- */
110
- const KEY_DEFINITIONS = {
111
- Enter: { code: 'Enter', keyCode: 13, key: 'Enter', text: '\r' },
112
- Tab: { code: 'Tab', keyCode: 9, key: 'Tab' },
113
- Escape: { code: 'Escape', keyCode: 27, key: 'Escape' },
114
- Backspace: { code: 'Backspace', keyCode: 8, key: 'Backspace' },
115
- Delete: { code: 'Delete', keyCode: 46, key: 'Delete' },
116
- Space: { code: 'Space', keyCode: 32, key: ' ', text: ' ' },
117
- ArrowUp: { code: 'ArrowUp', keyCode: 38, key: 'ArrowUp' },
118
- ArrowDown: { code: 'ArrowDown', keyCode: 40, key: 'ArrowDown' },
119
- ArrowLeft: { code: 'ArrowLeft', keyCode: 37, key: 'ArrowLeft' },
120
- ArrowRight: { code: 'ArrowRight', keyCode: 39, key: 'ArrowRight' },
121
- Home: { code: 'Home', keyCode: 36, key: 'Home' },
122
- End: { code: 'End', keyCode: 35, key: 'End' },
123
- PageUp: { code: 'PageUp', keyCode: 33, key: 'PageUp' },
124
- PageDown: { code: 'PageDown', keyCode: 34, key: 'PageDown' },
125
- };
126
- /**
127
- * Convert modifier names to CDP modifier bitmask.
128
- */
129
- function computeModifiers(modifiers) {
130
- if (!modifiers)
131
- return 0;
132
- let bits = 0;
133
- for (const mod of modifiers) {
134
- switch (mod.toLowerCase()) {
135
- case 'alt':
136
- bits |= MODIFIER_ALT;
137
- break;
138
- case 'control':
139
- case 'ctrl':
140
- bits |= MODIFIER_CTRL;
141
- break;
142
- case 'meta':
143
- case 'cmd':
144
- case 'command':
145
- bits |= MODIFIER_META;
146
- break;
147
- case 'shift':
148
- bits |= MODIFIER_SHIFT;
149
- break;
150
- }
151
- }
152
- return bits;
153
- }
154
- // ============================================================================
155
- // Helper: Get Element Center Coordinates
156
- // ============================================================================
157
- /**
158
- * Get the center coordinates of an element by its backendNodeId.
159
- * Scrolls the element into view first.
160
- */
161
- async function getElementCenter(cdp, backendNodeId) {
162
- const content = await scrollAndGetContentQuad(cdp, backendNodeId);
163
- const [x1, y1, x2, , , y3] = content;
164
- const x = x1 + (x2 - x1) / 2;
165
- const y = y1 + (y3 - y1) / 2;
166
- if (x < 0 || y < 0 || !Number.isFinite(x) || !Number.isFinite(y)) {
167
- throw new Error(`Invalid coordinates (x: ${x}, y: ${y}) for backendNodeId: ${backendNodeId}. ` +
168
- `The element may be positioned off-screen.`);
169
- }
170
- return { x, y };
170
+ await clickAtCoordinates(cdp, x + offsetX, y + offsetY, modifiers);
171
171
  }
172
172
  // ============================================================================
173
173
  // Clear Text Helper
@@ -382,9 +382,9 @@ export async function scrollPage(cdp, direction, amount = 500) {
382
382
  * @param targetX - End X coordinate
383
383
  * @param targetY - End Y coordinate
384
384
  * @param steps - Number of intermediate mouseMoved events (default: 10)
385
- * @throws Error if coordinates are invalid
385
+ * @param modifiers - Optional modifier keys (e.g., ['Shift', 'Control'])
386
386
  */
387
- export async function dragBetweenCoordinates(cdp, sourceX, sourceY, targetX, targetY, steps = 10) {
387
+ export async function dragBetweenCoordinates(cdp, sourceX, sourceY, targetX, targetY, steps = 10, modifiers) {
388
388
  // Validate all coordinates
389
389
  for (const [name, val] of [
390
390
  ['sourceX', sourceX],
@@ -396,6 +396,7 @@ export async function dragBetweenCoordinates(cdp, sourceX, sourceY, targetX, tar
396
396
  throw new Error(`Invalid drag coordinate ${name}: ${val}. Coordinates must be non-negative finite numbers.`);
397
397
  }
398
398
  }
399
+ const modifierBits = computeModifiers(modifiers);
399
400
  // Mouse down at source
400
401
  await cdp.send('Input.dispatchMouseEvent', {
401
402
  type: 'mousePressed',
@@ -403,6 +404,7 @@ export async function dragBetweenCoordinates(cdp, sourceX, sourceY, targetX, tar
403
404
  y: sourceY,
404
405
  button: 'left',
405
406
  clickCount: 1,
407
+ modifiers: modifierBits,
406
408
  });
407
409
  // Interpolate mouse moves from source to target
408
410
  for (let i = 1; i <= steps; i++) {
@@ -414,6 +416,7 @@ export async function dragBetweenCoordinates(cdp, sourceX, sourceY, targetX, tar
414
416
  x,
415
417
  y,
416
418
  button: 'left',
419
+ modifiers: modifierBits,
417
420
  });
418
421
  }
419
422
  // Mouse up at target
@@ -423,6 +426,33 @@ export async function dragBetweenCoordinates(cdp, sourceX, sourceY, targetX, tar
423
426
  y: targetY,
424
427
  button: 'left',
425
428
  clickCount: 1,
429
+ modifiers: modifierBits,
430
+ });
431
+ }
432
+ // ============================================================================
433
+ // Wheel Event
434
+ // ============================================================================
435
+ /**
436
+ * Dispatch a mouse wheel event at the given coordinates using CDP.
437
+ *
438
+ * @param cdp - CDP client instance
439
+ * @param x - X coordinate where the wheel event occurs
440
+ * @param y - Y coordinate where the wheel event occurs
441
+ * @param deltaX - Horizontal scroll delta (positive = right)
442
+ * @param deltaY - Vertical scroll delta (positive = down)
443
+ * @param modifiers - Optional modifier keys (e.g., ['Control'] for zoom)
444
+ */
445
+ export async function dispatchWheelEvent(cdp, x, y, deltaX, deltaY, modifiers) {
446
+ if (!Number.isFinite(x) || !Number.isFinite(y) || x < 0 || y < 0) {
447
+ throw new Error(`Invalid wheel coordinates (x: ${x}, y: ${y}). Coordinates must be non-negative finite numbers.`);
448
+ }
449
+ await cdp.send('Input.dispatchMouseEvent', {
450
+ type: 'mouseWheel',
451
+ x,
452
+ y,
453
+ deltaX,
454
+ deltaY,
455
+ modifiers: computeModifiers(modifiers),
426
456
  });
427
457
  }
428
458
  //# sourceMappingURL=element-resolver.js.map