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.
Files changed (395) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +226 -0
  3. package/dist/src/browser/ensure-browser.d.ts +39 -0
  4. package/dist/src/browser/ensure-browser.d.ts.map +1 -0
  5. package/dist/src/browser/ensure-browser.js +65 -0
  6. package/dist/src/browser/ensure-browser.js.map +1 -0
  7. package/dist/src/browser/index.d.ts +8 -0
  8. package/dist/src/browser/index.d.ts.map +1 -0
  9. package/dist/src/browser/index.js +8 -0
  10. package/dist/src/browser/index.js.map +1 -0
  11. package/dist/src/browser/page-network-tracker.d.ts +96 -0
  12. package/dist/src/browser/page-network-tracker.d.ts.map +1 -0
  13. package/dist/src/browser/page-network-tracker.js +235 -0
  14. package/dist/src/browser/page-network-tracker.js.map +1 -0
  15. package/dist/src/browser/page-registry.d.ts +137 -0
  16. package/dist/src/browser/page-registry.d.ts.map +1 -0
  17. package/dist/src/browser/page-registry.js +194 -0
  18. package/dist/src/browser/page-registry.js.map +1 -0
  19. package/dist/src/browser/page-stabilization.d.ts +35 -0
  20. package/dist/src/browser/page-stabilization.d.ts.map +1 -0
  21. package/dist/src/browser/page-stabilization.js +42 -0
  22. package/dist/src/browser/page-stabilization.js.map +1 -0
  23. package/dist/src/browser/session-manager.d.ts +336 -0
  24. package/dist/src/browser/session-manager.d.ts.map +1 -0
  25. package/dist/src/browser/session-manager.js +964 -0
  26. package/dist/src/browser/session-manager.js.map +1 -0
  27. package/dist/src/cdp/cdp-client.interface.d.ts +193 -0
  28. package/dist/src/cdp/cdp-client.interface.d.ts.map +1 -0
  29. package/dist/src/cdp/cdp-client.interface.js +9 -0
  30. package/dist/src/cdp/cdp-client.interface.js.map +1 -0
  31. package/dist/src/cdp/index.d.ts +9 -0
  32. package/dist/src/cdp/index.d.ts.map +1 -0
  33. package/dist/src/cdp/index.js +8 -0
  34. package/dist/src/cdp/index.js.map +1 -0
  35. package/dist/src/cdp/puppeteer-cdp-client.d.ts +97 -0
  36. package/dist/src/cdp/puppeteer-cdp-client.d.ts.map +1 -0
  37. package/dist/src/cdp/puppeteer-cdp-client.js +273 -0
  38. package/dist/src/cdp/puppeteer-cdp-client.js.map +1 -0
  39. package/dist/src/cli/args.d.ts +35 -0
  40. package/dist/src/cli/args.d.ts.map +1 -0
  41. package/dist/src/cli/args.js +76 -0
  42. package/dist/src/cli/args.js.map +1 -0
  43. package/dist/src/delta/dom-stabilizer.d.ts +46 -0
  44. package/dist/src/delta/dom-stabilizer.d.ts.map +1 -0
  45. package/dist/src/delta/dom-stabilizer.js +121 -0
  46. package/dist/src/delta/dom-stabilizer.js.map +1 -0
  47. package/dist/src/delta/index.d.ts +8 -0
  48. package/dist/src/delta/index.d.ts.map +1 -0
  49. package/dist/src/delta/index.js +7 -0
  50. package/dist/src/delta/index.js.map +1 -0
  51. package/dist/src/factpack/action-selector.d.ts +36 -0
  52. package/dist/src/factpack/action-selector.d.ts.map +1 -0
  53. package/dist/src/factpack/action-selector.js +367 -0
  54. package/dist/src/factpack/action-selector.js.map +1 -0
  55. package/dist/src/factpack/dialog-detector.d.ts +19 -0
  56. package/dist/src/factpack/dialog-detector.d.ts.map +1 -0
  57. package/dist/src/factpack/dialog-detector.js +354 -0
  58. package/dist/src/factpack/dialog-detector.js.map +1 -0
  59. package/dist/src/factpack/form-detector.d.ts +28 -0
  60. package/dist/src/factpack/form-detector.d.ts.map +1 -0
  61. package/dist/src/factpack/form-detector.js +555 -0
  62. package/dist/src/factpack/form-detector.js.map +1 -0
  63. package/dist/src/factpack/index.d.ts +32 -0
  64. package/dist/src/factpack/index.d.ts.map +1 -0
  65. package/dist/src/factpack/index.js +73 -0
  66. package/dist/src/factpack/index.js.map +1 -0
  67. package/dist/src/factpack/page-classifier.d.ts +22 -0
  68. package/dist/src/factpack/page-classifier.d.ts.map +1 -0
  69. package/dist/src/factpack/page-classifier.js +526 -0
  70. package/dist/src/factpack/page-classifier.js.map +1 -0
  71. package/dist/src/factpack/types.d.ts +307 -0
  72. package/dist/src/factpack/types.d.ts.map +1 -0
  73. package/dist/src/factpack/types.js +12 -0
  74. package/dist/src/factpack/types.js.map +1 -0
  75. package/dist/src/form/dependency-tracker.d.ts +108 -0
  76. package/dist/src/form/dependency-tracker.d.ts.map +1 -0
  77. package/dist/src/form/dependency-tracker.js +298 -0
  78. package/dist/src/form/dependency-tracker.js.map +1 -0
  79. package/dist/src/form/field-extractor.d.ts +32 -0
  80. package/dist/src/form/field-extractor.d.ts.map +1 -0
  81. package/dist/src/form/field-extractor.js +544 -0
  82. package/dist/src/form/field-extractor.js.map +1 -0
  83. package/dist/src/form/form-detector.d.ts +103 -0
  84. package/dist/src/form/form-detector.d.ts.map +1 -0
  85. package/dist/src/form/form-detector.js +704 -0
  86. package/dist/src/form/form-detector.js.map +1 -0
  87. package/dist/src/form/form-state.d.ts +23 -0
  88. package/dist/src/form/form-state.d.ts.map +1 -0
  89. package/dist/src/form/form-state.js +39 -0
  90. package/dist/src/form/form-state.js.map +1 -0
  91. package/dist/src/form/index.d.ts +23 -0
  92. package/dist/src/form/index.d.ts.map +1 -0
  93. package/dist/src/form/index.js +27 -0
  94. package/dist/src/form/index.js.map +1 -0
  95. package/dist/src/form/runtime-value-reader.d.ts +72 -0
  96. package/dist/src/form/runtime-value-reader.d.ts.map +1 -0
  97. package/dist/src/form/runtime-value-reader.js +232 -0
  98. package/dist/src/form/runtime-value-reader.js.map +1 -0
  99. package/dist/src/form/types.d.ts +384 -0
  100. package/dist/src/form/types.d.ts.map +1 -0
  101. package/dist/src/form/types.js +17 -0
  102. package/dist/src/form/types.js.map +1 -0
  103. package/dist/src/index.d.ts +8 -0
  104. package/dist/src/index.d.ts.map +1 -0
  105. package/dist/src/index.js +212 -0
  106. package/dist/src/index.js.map +1 -0
  107. package/dist/src/lib/constants.d.ts +27 -0
  108. package/dist/src/lib/constants.d.ts.map +1 -0
  109. package/dist/src/lib/constants.js +63 -0
  110. package/dist/src/lib/constants.js.map +1 -0
  111. package/dist/src/lib/index.d.ts +12 -0
  112. package/dist/src/lib/index.d.ts.map +1 -0
  113. package/dist/src/lib/index.js +17 -0
  114. package/dist/src/lib/index.js.map +1 -0
  115. package/dist/src/lib/regions.d.ts +29 -0
  116. package/dist/src/lib/regions.d.ts.map +1 -0
  117. package/dist/src/lib/regions.js +93 -0
  118. package/dist/src/lib/regions.js.map +1 -0
  119. package/dist/src/lib/scoring.d.ts +47 -0
  120. package/dist/src/lib/scoring.d.ts.map +1 -0
  121. package/dist/src/lib/scoring.js +79 -0
  122. package/dist/src/lib/scoring.js.map +1 -0
  123. package/dist/src/lib/selectors.d.ts +42 -0
  124. package/dist/src/lib/selectors.d.ts.map +1 -0
  125. package/dist/src/lib/selectors.js +138 -0
  126. package/dist/src/lib/selectors.js.map +1 -0
  127. package/dist/src/lib/text-utils.d.ts +155 -0
  128. package/dist/src/lib/text-utils.d.ts.map +1 -0
  129. package/dist/src/lib/text-utils.js +391 -0
  130. package/dist/src/lib/text-utils.js.map +1 -0
  131. package/dist/src/observation/eid-linker.d.ts +104 -0
  132. package/dist/src/observation/eid-linker.d.ts.map +1 -0
  133. package/dist/src/observation/eid-linker.js +403 -0
  134. package/dist/src/observation/eid-linker.js.map +1 -0
  135. package/dist/src/observation/index.d.ts +12 -0
  136. package/dist/src/observation/index.d.ts.map +1 -0
  137. package/dist/src/observation/index.js +15 -0
  138. package/dist/src/observation/index.js.map +1 -0
  139. package/dist/src/observation/observation-accumulator.d.ts +58 -0
  140. package/dist/src/observation/observation-accumulator.d.ts.map +1 -0
  141. package/dist/src/observation/observation-accumulator.js +213 -0
  142. package/dist/src/observation/observation-accumulator.js.map +1 -0
  143. package/dist/src/observation/observation.types.d.ts +139 -0
  144. package/dist/src/observation/observation.types.d.ts.map +1 -0
  145. package/dist/src/observation/observation.types.js +59 -0
  146. package/dist/src/observation/observation.types.js.map +1 -0
  147. package/dist/src/observation/observer-script.d.ts +19 -0
  148. package/dist/src/observation/observer-script.d.ts.map +1 -0
  149. package/dist/src/observation/observer-script.js +569 -0
  150. package/dist/src/observation/observer-script.js.map +1 -0
  151. package/dist/src/query/index.d.ts +9 -0
  152. package/dist/src/query/index.d.ts.map +1 -0
  153. package/dist/src/query/index.js +10 -0
  154. package/dist/src/query/index.js.map +1 -0
  155. package/dist/src/query/query-engine.d.ts +111 -0
  156. package/dist/src/query/query-engine.d.ts.map +1 -0
  157. package/dist/src/query/query-engine.js +509 -0
  158. package/dist/src/query/query-engine.js.map +1 -0
  159. package/dist/src/query/types/index.d.ts +5 -0
  160. package/dist/src/query/types/index.d.ts.map +1 -0
  161. package/dist/src/query/types/index.js +5 -0
  162. package/dist/src/query/types/index.js.map +1 -0
  163. package/dist/src/query/types/query.types.d.ts +141 -0
  164. package/dist/src/query/types/query.types.d.ts.map +1 -0
  165. package/dist/src/query/types/query.types.js +19 -0
  166. package/dist/src/query/types/query.types.js.map +1 -0
  167. package/dist/src/renderer/budget-manager.d.ts +46 -0
  168. package/dist/src/renderer/budget-manager.d.ts.map +1 -0
  169. package/dist/src/renderer/budget-manager.js +133 -0
  170. package/dist/src/renderer/budget-manager.js.map +1 -0
  171. package/dist/src/renderer/constants.d.ts +38 -0
  172. package/dist/src/renderer/constants.d.ts.map +1 -0
  173. package/dist/src/renderer/constants.js +29 -0
  174. package/dist/src/renderer/constants.js.map +1 -0
  175. package/dist/src/renderer/index.d.ts +12 -0
  176. package/dist/src/renderer/index.d.ts.map +1 -0
  177. package/dist/src/renderer/index.js +16 -0
  178. package/dist/src/renderer/index.js.map +1 -0
  179. package/dist/src/renderer/section-renderers.d.ts +42 -0
  180. package/dist/src/renderer/section-renderers.d.ts.map +1 -0
  181. package/dist/src/renderer/section-renderers.js +252 -0
  182. package/dist/src/renderer/section-renderers.js.map +1 -0
  183. package/dist/src/renderer/token-counter.d.ts +45 -0
  184. package/dist/src/renderer/token-counter.d.ts.map +1 -0
  185. package/dist/src/renderer/token-counter.js +65 -0
  186. package/dist/src/renderer/token-counter.js.map +1 -0
  187. package/dist/src/renderer/types.d.ts +71 -0
  188. package/dist/src/renderer/types.d.ts.map +1 -0
  189. package/dist/src/renderer/types.js +7 -0
  190. package/dist/src/renderer/types.js.map +1 -0
  191. package/dist/src/renderer/xml-renderer.d.ts +42 -0
  192. package/dist/src/renderer/xml-renderer.d.ts.map +1 -0
  193. package/dist/src/renderer/xml-renderer.js +103 -0
  194. package/dist/src/renderer/xml-renderer.js.map +1 -0
  195. package/dist/src/server/index.d.ts +8 -0
  196. package/dist/src/server/index.d.ts.map +1 -0
  197. package/dist/src/server/index.js +8 -0
  198. package/dist/src/server/index.js.map +1 -0
  199. package/dist/src/server/mcp-server.d.ts +59 -0
  200. package/dist/src/server/mcp-server.d.ts.map +1 -0
  201. package/dist/src/server/mcp-server.js +140 -0
  202. package/dist/src/server/mcp-server.js.map +1 -0
  203. package/dist/src/server/server-config.d.ts +41 -0
  204. package/dist/src/server/server-config.d.ts.map +1 -0
  205. package/dist/src/server/server-config.js +80 -0
  206. package/dist/src/server/server-config.js.map +1 -0
  207. package/dist/src/server/session-store.d.ts +148 -0
  208. package/dist/src/server/session-store.d.ts.map +1 -0
  209. package/dist/src/server/session-store.js +224 -0
  210. package/dist/src/server/session-store.js.map +1 -0
  211. package/dist/src/shared/errors/browser-session.error.d.ts +102 -0
  212. package/dist/src/shared/errors/browser-session.error.d.ts.map +1 -0
  213. package/dist/src/shared/errors/browser-session.error.js +153 -0
  214. package/dist/src/shared/errors/browser-session.error.js.map +1 -0
  215. package/dist/src/shared/errors/index.d.ts +5 -0
  216. package/dist/src/shared/errors/index.d.ts.map +1 -0
  217. package/dist/src/shared/errors/index.js +5 -0
  218. package/dist/src/shared/errors/index.js.map +1 -0
  219. package/dist/src/shared/services/dom-transformer.service.d.ts +71 -0
  220. package/dist/src/shared/services/dom-transformer.service.d.ts.map +1 -0
  221. package/dist/src/shared/services/dom-transformer.service.js +190 -0
  222. package/dist/src/shared/services/dom-transformer.service.js.map +1 -0
  223. package/dist/src/shared/services/index.d.ts +7 -0
  224. package/dist/src/shared/services/index.d.ts.map +1 -0
  225. package/dist/src/shared/services/index.js +7 -0
  226. package/dist/src/shared/services/index.js.map +1 -0
  227. package/dist/src/shared/services/logging.service.d.ts +154 -0
  228. package/dist/src/shared/services/logging.service.d.ts.map +1 -0
  229. package/dist/src/shared/services/logging.service.js +267 -0
  230. package/dist/src/shared/services/logging.service.js.map +1 -0
  231. package/dist/src/shared/services/selector-builder.service.d.ts +53 -0
  232. package/dist/src/shared/services/selector-builder.service.d.ts.map +1 -0
  233. package/dist/src/shared/services/selector-builder.service.js +240 -0
  234. package/dist/src/shared/services/selector-builder.service.js.map +1 -0
  235. package/dist/src/shared/types/base.types.d.ts +45 -0
  236. package/dist/src/shared/types/base.types.d.ts.map +1 -0
  237. package/dist/src/shared/types/base.types.js +8 -0
  238. package/dist/src/shared/types/base.types.js.map +1 -0
  239. package/dist/src/shared/types/index.d.ts +5 -0
  240. package/dist/src/shared/types/index.d.ts.map +1 -0
  241. package/dist/src/shared/types/index.js +5 -0
  242. package/dist/src/shared/types/index.js.map +1 -0
  243. package/dist/src/snapshot/element-resolver.d.ts +102 -0
  244. package/dist/src/snapshot/element-resolver.d.ts.map +1 -0
  245. package/dist/src/snapshot/element-resolver.js +379 -0
  246. package/dist/src/snapshot/element-resolver.js.map +1 -0
  247. package/dist/src/snapshot/extractors/attribute-extractor.d.ts +40 -0
  248. package/dist/src/snapshot/extractors/attribute-extractor.d.ts.map +1 -0
  249. package/dist/src/snapshot/extractors/attribute-extractor.js +237 -0
  250. package/dist/src/snapshot/extractors/attribute-extractor.js.map +1 -0
  251. package/dist/src/snapshot/extractors/ax-extractor.d.ts +36 -0
  252. package/dist/src/snapshot/extractors/ax-extractor.d.ts.map +1 -0
  253. package/dist/src/snapshot/extractors/ax-extractor.js +144 -0
  254. package/dist/src/snapshot/extractors/ax-extractor.js.map +1 -0
  255. package/dist/src/snapshot/extractors/dom-extractor.d.ts +21 -0
  256. package/dist/src/snapshot/extractors/dom-extractor.d.ts.map +1 -0
  257. package/dist/src/snapshot/extractors/dom-extractor.js +137 -0
  258. package/dist/src/snapshot/extractors/dom-extractor.js.map +1 -0
  259. package/dist/src/snapshot/extractors/grouping-resolver.d.ts +39 -0
  260. package/dist/src/snapshot/extractors/grouping-resolver.d.ts.map +1 -0
  261. package/dist/src/snapshot/extractors/grouping-resolver.js +260 -0
  262. package/dist/src/snapshot/extractors/grouping-resolver.js.map +1 -0
  263. package/dist/src/snapshot/extractors/index.d.ts +19 -0
  264. package/dist/src/snapshot/extractors/index.d.ts.map +1 -0
  265. package/dist/src/snapshot/extractors/index.js +27 -0
  266. package/dist/src/snapshot/extractors/index.js.map +1 -0
  267. package/dist/src/snapshot/extractors/label-resolver.d.ts +44 -0
  268. package/dist/src/snapshot/extractors/label-resolver.d.ts.map +1 -0
  269. package/dist/src/snapshot/extractors/label-resolver.js +173 -0
  270. package/dist/src/snapshot/extractors/label-resolver.js.map +1 -0
  271. package/dist/src/snapshot/extractors/layout-extractor.d.ts +52 -0
  272. package/dist/src/snapshot/extractors/layout-extractor.d.ts.map +1 -0
  273. package/dist/src/snapshot/extractors/layout-extractor.js +382 -0
  274. package/dist/src/snapshot/extractors/layout-extractor.js.map +1 -0
  275. package/dist/src/snapshot/extractors/locator-builder.d.ts +27 -0
  276. package/dist/src/snapshot/extractors/locator-builder.d.ts.map +1 -0
  277. package/dist/src/snapshot/extractors/locator-builder.js +223 -0
  278. package/dist/src/snapshot/extractors/locator-builder.js.map +1 -0
  279. package/dist/src/snapshot/extractors/region-resolver.d.ts +31 -0
  280. package/dist/src/snapshot/extractors/region-resolver.d.ts.map +1 -0
  281. package/dist/src/snapshot/extractors/region-resolver.js +168 -0
  282. package/dist/src/snapshot/extractors/region-resolver.js.map +1 -0
  283. package/dist/src/snapshot/extractors/state-extractor.d.ts +30 -0
  284. package/dist/src/snapshot/extractors/state-extractor.d.ts.map +1 -0
  285. package/dist/src/snapshot/extractors/state-extractor.js +181 -0
  286. package/dist/src/snapshot/extractors/state-extractor.js.map +1 -0
  287. package/dist/src/snapshot/extractors/types.d.ts +213 -0
  288. package/dist/src/snapshot/extractors/types.d.ts.map +1 -0
  289. package/dist/src/snapshot/extractors/types.js +145 -0
  290. package/dist/src/snapshot/extractors/types.js.map +1 -0
  291. package/dist/src/snapshot/index.d.ts +14 -0
  292. package/dist/src/snapshot/index.d.ts.map +1 -0
  293. package/dist/src/snapshot/index.js +18 -0
  294. package/dist/src/snapshot/index.js.map +1 -0
  295. package/dist/src/snapshot/snapshot-compiler.d.ts +73 -0
  296. package/dist/src/snapshot/snapshot-compiler.d.ts.map +1 -0
  297. package/dist/src/snapshot/snapshot-compiler.js +763 -0
  298. package/dist/src/snapshot/snapshot-compiler.js.map +1 -0
  299. package/dist/src/snapshot/snapshot-health.d.ts +97 -0
  300. package/dist/src/snapshot/snapshot-health.d.ts.map +1 -0
  301. package/dist/src/snapshot/snapshot-health.js +214 -0
  302. package/dist/src/snapshot/snapshot-health.js.map +1 -0
  303. package/dist/src/snapshot/snapshot-store.d.ts +137 -0
  304. package/dist/src/snapshot/snapshot-store.d.ts.map +1 -0
  305. package/dist/src/snapshot/snapshot-store.js +202 -0
  306. package/dist/src/snapshot/snapshot-store.js.map +1 -0
  307. package/dist/src/snapshot/snapshot.types.d.ts +250 -0
  308. package/dist/src/snapshot/snapshot.types.d.ts.map +1 -0
  309. package/dist/src/snapshot/snapshot.types.js +54 -0
  310. package/dist/src/snapshot/snapshot.types.js.map +1 -0
  311. package/dist/src/state/actionables-filter.d.ts +47 -0
  312. package/dist/src/state/actionables-filter.d.ts.map +1 -0
  313. package/dist/src/state/actionables-filter.js +173 -0
  314. package/dist/src/state/actionables-filter.js.map +1 -0
  315. package/dist/src/state/atoms-extractor.d.ts +23 -0
  316. package/dist/src/state/atoms-extractor.d.ts.map +1 -0
  317. package/dist/src/state/atoms-extractor.js +160 -0
  318. package/dist/src/state/atoms-extractor.js.map +1 -0
  319. package/dist/src/state/constants.d.ts +125 -0
  320. package/dist/src/state/constants.d.ts.map +1 -0
  321. package/dist/src/state/constants.js +131 -0
  322. package/dist/src/state/constants.js.map +1 -0
  323. package/dist/src/state/diff-engine.d.ts +23 -0
  324. package/dist/src/state/diff-engine.d.ts.map +1 -0
  325. package/dist/src/state/diff-engine.js +475 -0
  326. package/dist/src/state/diff-engine.js.map +1 -0
  327. package/dist/src/state/element-identity.d.ts +75 -0
  328. package/dist/src/state/element-identity.d.ts.map +1 -0
  329. package/dist/src/state/element-identity.js +129 -0
  330. package/dist/src/state/element-identity.js.map +1 -0
  331. package/dist/src/state/element-ref.types.d.ts +135 -0
  332. package/dist/src/state/element-ref.types.d.ts.map +1 -0
  333. package/dist/src/state/element-ref.types.js +13 -0
  334. package/dist/src/state/element-ref.types.js.map +1 -0
  335. package/dist/src/state/element-registry.d.ts +118 -0
  336. package/dist/src/state/element-registry.d.ts.map +1 -0
  337. package/dist/src/state/element-registry.js +222 -0
  338. package/dist/src/state/element-registry.js.map +1 -0
  339. package/dist/src/state/health.types.d.ts +93 -0
  340. package/dist/src/state/health.types.d.ts.map +1 -0
  341. package/dist/src/state/health.types.js +56 -0
  342. package/dist/src/state/health.types.js.map +1 -0
  343. package/dist/src/state/layer-detector.d.ts +23 -0
  344. package/dist/src/state/layer-detector.d.ts.map +1 -0
  345. package/dist/src/state/layer-detector.js +368 -0
  346. package/dist/src/state/layer-detector.js.map +1 -0
  347. package/dist/src/state/locator-generator.d.ts +21 -0
  348. package/dist/src/state/locator-generator.d.ts.map +1 -0
  349. package/dist/src/state/locator-generator.js +137 -0
  350. package/dist/src/state/locator-generator.js.map +1 -0
  351. package/dist/src/state/state-manager.d.ts +104 -0
  352. package/dist/src/state/state-manager.d.ts.map +1 -0
  353. package/dist/src/state/state-manager.js +618 -0
  354. package/dist/src/state/state-manager.js.map +1 -0
  355. package/dist/src/state/state-renderer.d.ts +63 -0
  356. package/dist/src/state/state-renderer.d.ts.map +1 -0
  357. package/dist/src/state/state-renderer.js +340 -0
  358. package/dist/src/state/state-renderer.js.map +1 -0
  359. package/dist/src/state/types.d.ts +353 -0
  360. package/dist/src/state/types.d.ts.map +1 -0
  361. package/dist/src/state/types.js +8 -0
  362. package/dist/src/state/types.js.map +1 -0
  363. package/dist/src/tools/browser-tools.d.ts +140 -0
  364. package/dist/src/tools/browser-tools.d.ts.map +1 -0
  365. package/dist/src/tools/browser-tools.js +657 -0
  366. package/dist/src/tools/browser-tools.js.map +1 -0
  367. package/dist/src/tools/errors.d.ts +63 -0
  368. package/dist/src/tools/errors.d.ts.map +1 -0
  369. package/dist/src/tools/errors.js +86 -0
  370. package/dist/src/tools/errors.js.map +1 -0
  371. package/dist/src/tools/execute-action.d.ts +135 -0
  372. package/dist/src/tools/execute-action.d.ts.map +1 -0
  373. package/dist/src/tools/execute-action.js +579 -0
  374. package/dist/src/tools/execute-action.js.map +1 -0
  375. package/dist/src/tools/form-tools.d.ts +109 -0
  376. package/dist/src/tools/form-tools.d.ts.map +1 -0
  377. package/dist/src/tools/form-tools.js +434 -0
  378. package/dist/src/tools/form-tools.js.map +1 -0
  379. package/dist/src/tools/index.d.ts +11 -0
  380. package/dist/src/tools/index.d.ts.map +1 -0
  381. package/dist/src/tools/index.js +49 -0
  382. package/dist/src/tools/index.js.map +1 -0
  383. package/dist/src/tools/response-builder.d.ts +98 -0
  384. package/dist/src/tools/response-builder.d.ts.map +1 -0
  385. package/dist/src/tools/response-builder.js +219 -0
  386. package/dist/src/tools/response-builder.js.map +1 -0
  387. package/dist/src/tools/tool-schemas.d.ts +2482 -0
  388. package/dist/src/tools/tool-schemas.d.ts.map +1 -0
  389. package/dist/src/tools/tool-schemas.js +606 -0
  390. package/dist/src/tools/tool-schemas.js.map +1 -0
  391. package/dist/vitest.config.d.ts +3 -0
  392. package/dist/vitest.config.d.ts.map +1 -0
  393. package/dist/vitest.config.js +16 -0
  394. package/dist/vitest.config.js.map +1 -0
  395. package/package.json +76 -0
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Shared constants for interactive element discovery
3
+ *
4
+ * These constants define what elements are considered interactive
5
+ * for browser automation purposes.
6
+ */
7
+ /**
8
+ * ARIA roles that indicate interactive elements
9
+ */
10
+ export declare const INTERACTIVE_ROLES: Set<string>;
11
+ /**
12
+ * HTML tags that are inherently interactive
13
+ */
14
+ export declare const INTERACTIVE_TAGS: Set<string>;
15
+ /**
16
+ * ARIA roles that indicate form input controls
17
+ */
18
+ export declare const ARIA_INPUT_ROLES: Set<string>;
19
+ /**
20
+ * Click handler attributes that indicate clickable elements
21
+ */
22
+ export declare const CLICK_HANDLER_ATTRIBUTES: string[];
23
+ /**
24
+ * Generic HTML tags that shouldn't be used for selector hints
25
+ */
26
+ export declare const GENERIC_TAGS: Set<string>;
27
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/lib/constants.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;GAEG;AACH,eAAO,MAAM,iBAAiB,aAkB5B,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,gBAAgB,aAS3B,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,gBAAgB,aAS3B,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,wBAAwB,UAAkD,CAAC;AAExF;;GAEG;AACH,eAAO,MAAM,YAAY,aAAyE,CAAC"}
@@ -0,0 +1,63 @@
1
+ /**
2
+ * Shared constants for interactive element discovery
3
+ *
4
+ * These constants define what elements are considered interactive
5
+ * for browser automation purposes.
6
+ */
7
+ /**
8
+ * ARIA roles that indicate interactive elements
9
+ */
10
+ export const INTERACTIVE_ROLES = new Set([
11
+ 'button',
12
+ 'link',
13
+ 'textbox',
14
+ 'searchbox',
15
+ 'combobox',
16
+ 'listbox',
17
+ 'menuitem',
18
+ 'menuitemcheckbox',
19
+ 'menuitemradio',
20
+ 'option',
21
+ 'radio',
22
+ 'checkbox',
23
+ 'switch',
24
+ 'tab',
25
+ 'slider',
26
+ 'spinbutton',
27
+ 'scrollbar',
28
+ ]);
29
+ /**
30
+ * HTML tags that are inherently interactive
31
+ */
32
+ export const INTERACTIVE_TAGS = new Set([
33
+ 'a',
34
+ 'button',
35
+ 'input',
36
+ 'select',
37
+ 'textarea',
38
+ 'option',
39
+ 'details',
40
+ 'summary',
41
+ ]);
42
+ /**
43
+ * ARIA roles that indicate form input controls
44
+ */
45
+ export const ARIA_INPUT_ROLES = new Set([
46
+ 'radio',
47
+ 'checkbox',
48
+ 'switch',
49
+ 'combobox',
50
+ 'option',
51
+ 'menuitemradio',
52
+ 'menuitemcheckbox',
53
+ 'tab',
54
+ ]);
55
+ /**
56
+ * Click handler attributes that indicate clickable elements
57
+ */
58
+ export const CLICK_HANDLER_ATTRIBUTES = ['onclick', '@click', 'v-on:click', 'ng-click'];
59
+ /**
60
+ * Generic HTML tags that shouldn't be used for selector hints
61
+ */
62
+ export const GENERIC_TAGS = new Set(['html', 'body', 'main', 'article', 'section', 'div', 'span']);
63
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/lib/constants.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC;IACvC,QAAQ;IACR,MAAM;IACN,SAAS;IACT,WAAW;IACX,UAAU;IACV,SAAS;IACT,UAAU;IACV,kBAAkB;IAClB,eAAe;IACf,QAAQ;IACR,OAAO;IACP,UAAU;IACV,QAAQ;IACR,KAAK;IACL,QAAQ;IACR,YAAY;IACZ,WAAW;CACZ,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC;IACtC,GAAG;IACH,QAAQ;IACR,OAAO;IACP,QAAQ;IACR,UAAU;IACV,QAAQ;IACR,SAAS;IACT,SAAS;CACV,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC;IACtC,OAAO;IACP,UAAU;IACV,QAAQ;IACR,UAAU;IACV,QAAQ;IACR,eAAe;IACf,kBAAkB;IAClB,KAAK;CACN,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,SAAS,EAAE,QAAQ,EAAE,YAAY,EAAE,UAAU,CAAC,CAAC;AAExF;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Reusable algorithms and utilities extracted from the original implementation
3
+ *
4
+ * These modules contain pure, framework-agnostic code that can be used
5
+ * in the new BaseSnapshot/Query Engine implementation.
6
+ */
7
+ export { INTERACTIVE_ROLES, INTERACTIVE_TAGS, ARIA_INPUT_ROLES, CLICK_HANDLER_ATTRIBUTES, GENERIC_TAGS, } from './constants.js';
8
+ export { resolveRegion, getRegisteredRegions, STRUCTURED_REGION_SELECTORS, type NamedRegion, type RegionResolution, } from './regions.js';
9
+ export { scoreElement, dedupeByKey, rankByRelevance, type RankingMode, type ScoringSignals, type ScoredCandidate, type ScoreOptions, } from './scoring.js';
10
+ export { normalizeText, sanitizeAccessibleHint, truncate, escapeAttributeValue, escapeAttrSelectorValue, cssEscape, escapeXPathValue, tokenizeForMatching, fuzzyTokenMatch, levenshteinDistance, stringSimilarity, fuzzyTokensMatch, getTextContent, type TextContentNode, type FuzzyTokenMatchOptions, type FuzzyTokenMatchResult, } from './text-utils.js';
11
+ export { buildRoleSelector, buildAriaLabelSelector, buildNameSelector, buildTextContentXPath, buildAxSelector, combineRoleAndAttribute, isLikelyHtmlNameAttribute, } from './selectors.js';
12
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,EAChB,wBAAwB,EACxB,YAAY,GACb,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EACL,aAAa,EACb,oBAAoB,EACpB,2BAA2B,EAC3B,KAAK,WAAW,EAChB,KAAK,gBAAgB,GACtB,MAAM,cAAc,CAAC;AAGtB,OAAO,EACL,YAAY,EACZ,WAAW,EACX,eAAe,EACf,KAAK,WAAW,EAChB,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,YAAY,GAClB,MAAM,cAAc,CAAC;AAGtB,OAAO,EACL,aAAa,EACb,sBAAsB,EACtB,QAAQ,EACR,oBAAoB,EACpB,uBAAuB,EACvB,SAAS,EACT,gBAAgB,EAChB,mBAAmB,EACnB,eAAe,EACf,mBAAmB,EACnB,gBAAgB,EAChB,gBAAgB,EAChB,cAAc,EACd,KAAK,eAAe,EACpB,KAAK,sBAAsB,EAC3B,KAAK,qBAAqB,GAC3B,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EACL,iBAAiB,EACjB,sBAAsB,EACtB,iBAAiB,EACjB,qBAAqB,EACrB,eAAe,EACf,uBAAuB,EACvB,yBAAyB,GAC1B,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Reusable algorithms and utilities extracted from the original implementation
3
+ *
4
+ * These modules contain pure, framework-agnostic code that can be used
5
+ * in the new BaseSnapshot/Query Engine implementation.
6
+ */
7
+ // Constants for element discovery
8
+ export { INTERACTIVE_ROLES, INTERACTIVE_TAGS, ARIA_INPUT_ROLES, CLICK_HANDLER_ATTRIBUTES, GENERIC_TAGS, } from './constants.js';
9
+ // Semantic region resolution
10
+ export { resolveRegion, getRegisteredRegions, STRUCTURED_REGION_SELECTORS, } from './regions.js';
11
+ // Element scoring and ranking
12
+ export { scoreElement, dedupeByKey, rankByRelevance, } from './scoring.js';
13
+ // Text processing utilities
14
+ export { normalizeText, sanitizeAccessibleHint, truncate, escapeAttributeValue, escapeAttrSelectorValue, cssEscape, escapeXPathValue, tokenizeForMatching, fuzzyTokenMatch, levenshteinDistance, stringSimilarity, fuzzyTokensMatch, getTextContent, } from './text-utils.js';
15
+ // Selector building utilities
16
+ export { buildRoleSelector, buildAriaLabelSelector, buildNameSelector, buildTextContentXPath, buildAxSelector, combineRoleAndAttribute, isLikelyHtmlNameAttribute, } from './selectors.js';
17
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,kCAAkC;AAClC,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,EAChB,wBAAwB,EACxB,YAAY,GACb,MAAM,gBAAgB,CAAC;AAExB,6BAA6B;AAC7B,OAAO,EACL,aAAa,EACb,oBAAoB,EACpB,2BAA2B,GAG5B,MAAM,cAAc,CAAC;AAEtB,8BAA8B;AAC9B,OAAO,EACL,YAAY,EACZ,WAAW,EACX,eAAe,GAKhB,MAAM,cAAc,CAAC;AAEtB,4BAA4B;AAC5B,OAAO,EACL,aAAa,EACb,sBAAsB,EACtB,QAAQ,EACR,oBAAoB,EACpB,uBAAuB,EACvB,SAAS,EACT,gBAAgB,EAChB,mBAAmB,EACnB,eAAe,EACf,mBAAmB,EACnB,gBAAgB,EAChB,gBAAgB,EAChB,cAAc,GAIf,MAAM,iBAAiB,CAAC;AAEzB,8BAA8B;AAC9B,OAAO,EACL,iBAAiB,EACjB,sBAAsB,EACtB,iBAAiB,EACjB,qBAAqB,EACrB,eAAe,EACf,uBAAuB,EACvB,yBAAyB,GAC1B,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Semantic Region Resolver
3
+ *
4
+ * Maps string region names to CSS selectors and keywords
5
+ * for scoping element discovery to specific page areas.
6
+ */
7
+ export interface NamedRegion {
8
+ summary: string;
9
+ cssSelector: string;
10
+ keywords: string[];
11
+ }
12
+ export interface RegionResolution {
13
+ cssSelector?: string;
14
+ summary: string;
15
+ keywords?: string[];
16
+ }
17
+ /**
18
+ * Resolve a region string to its CSS selector and metadata
19
+ */
20
+ export declare function resolveRegion(region?: string): RegionResolution;
21
+ /**
22
+ * Get all registered region names
23
+ */
24
+ export declare function getRegisteredRegions(): string[];
25
+ /**
26
+ * Structured region selectors for content extraction
27
+ */
28
+ export declare const STRUCTURED_REGION_SELECTORS: Record<string, string>;
29
+ //# sourceMappingURL=regions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"regions.d.ts","sourceRoot":"","sources":["../../../src/lib/regions.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAuDD,MAAM,WAAW,gBAAgB;IAC/B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,gBAAgB,CAwB/D;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,EAAE,CAE/C;AAED;;GAEG;AACH,eAAO,MAAM,2BAA2B,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAM9D,CAAC"}
@@ -0,0 +1,93 @@
1
+ /**
2
+ * Semantic Region Resolver
3
+ *
4
+ * Maps string region names to CSS selectors and keywords
5
+ * for scoping element discovery to specific page areas.
6
+ */
7
+ /**
8
+ * Mapping of region aliases to their properties
9
+ */
10
+ const NAMED_REGIONS = {};
11
+ function registerRegion(aliases, region) {
12
+ for (const alias of aliases) {
13
+ NAMED_REGIONS[alias] = region;
14
+ }
15
+ }
16
+ // Header/Navigation
17
+ registerRegion(['header', 'top', 'topnav', 'navigation', 'nav'], {
18
+ summary: 'header',
19
+ cssSelector: 'header',
20
+ keywords: ['header', 'banner', 'nav', 'globalnav'],
21
+ });
22
+ // Footer
23
+ registerRegion(['footer', 'bottom'], {
24
+ summary: 'footer',
25
+ cssSelector: 'footer',
26
+ keywords: ['footer', 'contentinfo'],
27
+ });
28
+ // Main content
29
+ registerRegion(['main', 'content'], {
30
+ summary: 'main content',
31
+ cssSelector: 'main',
32
+ keywords: ['main', 'content'],
33
+ });
34
+ // Sidebar
35
+ registerRegion(['sidebar', 'aside'], {
36
+ summary: 'sidebar',
37
+ cssSelector: 'aside',
38
+ keywords: ['sidebar', 'aside', 'complementary'],
39
+ });
40
+ // Hero section
41
+ registerRegion(['hero'], {
42
+ summary: 'hero region',
43
+ cssSelector: '[data-hero]',
44
+ keywords: ['hero'],
45
+ });
46
+ // Dialog/Modal
47
+ registerRegion(['dialog', 'modal'], {
48
+ summary: 'dialog',
49
+ cssSelector: '[role="dialog"], dialog',
50
+ keywords: ['dialog', 'modal'],
51
+ });
52
+ /**
53
+ * Resolve a region string to its CSS selector and metadata
54
+ */
55
+ export function resolveRegion(region) {
56
+ if (!region) {
57
+ return { summary: 'main frame' };
58
+ }
59
+ const normalized = region.trim().toLowerCase();
60
+ if (!normalized) {
61
+ return { summary: 'main frame' };
62
+ }
63
+ const named = NAMED_REGIONS[normalized];
64
+ if (named) {
65
+ return {
66
+ cssSelector: named.cssSelector,
67
+ summary: named.summary,
68
+ keywords: [...named.keywords],
69
+ };
70
+ }
71
+ // Unknown region - treat as nearText search hint
72
+ return {
73
+ summary: region,
74
+ keywords: normalized.split(/\s+/).filter(Boolean),
75
+ };
76
+ }
77
+ /**
78
+ * Get all registered region names
79
+ */
80
+ export function getRegisteredRegions() {
81
+ return Object.keys(NAMED_REGIONS);
82
+ }
83
+ /**
84
+ * Structured region selectors for content extraction
85
+ */
86
+ export const STRUCTURED_REGION_SELECTORS = {
87
+ header: 'header',
88
+ main: 'main',
89
+ footer: 'footer',
90
+ sidebar: 'aside,[role="complementary"]',
91
+ article: 'article',
92
+ };
93
+ //# sourceMappingURL=regions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"regions.js","sourceRoot":"","sources":["../../../src/lib/regions.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAQH;;GAEG;AACH,MAAM,aAAa,GAAgC,EAAE,CAAC;AAEtD,SAAS,cAAc,CAAC,OAAiB,EAAE,MAAmB;IAC5D,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,aAAa,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC;IAChC,CAAC;AACH,CAAC;AAED,oBAAoB;AACpB,cAAc,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,KAAK,CAAC,EAAE;IAC/D,OAAO,EAAE,QAAQ;IACjB,WAAW,EAAE,QAAQ;IACrB,QAAQ,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,CAAC;CACnD,CAAC,CAAC;AAEH,SAAS;AACT,cAAc,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE;IACnC,OAAO,EAAE,QAAQ;IACjB,WAAW,EAAE,QAAQ;IACrB,QAAQ,EAAE,CAAC,QAAQ,EAAE,aAAa,CAAC;CACpC,CAAC,CAAC;AAEH,eAAe;AACf,cAAc,CAAC,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE;IAClC,OAAO,EAAE,cAAc;IACvB,WAAW,EAAE,MAAM;IACnB,QAAQ,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC;CAC9B,CAAC,CAAC;AAEH,UAAU;AACV,cAAc,CAAC,CAAC,SAAS,EAAE,OAAO,CAAC,EAAE;IACnC,OAAO,EAAE,SAAS;IAClB,WAAW,EAAE,OAAO;IACpB,QAAQ,EAAE,CAAC,SAAS,EAAE,OAAO,EAAE,eAAe,CAAC;CAChD,CAAC,CAAC;AAEH,eAAe;AACf,cAAc,CAAC,CAAC,MAAM,CAAC,EAAE;IACvB,OAAO,EAAE,aAAa;IACtB,WAAW,EAAE,aAAa;IAC1B,QAAQ,EAAE,CAAC,MAAM,CAAC;CACnB,CAAC,CAAC;AAEH,eAAe;AACf,cAAc,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE;IAClC,OAAO,EAAE,QAAQ;IACjB,WAAW,EAAE,yBAAyB;IACtC,QAAQ,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC;CAC9B,CAAC,CAAC;AAQH;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,MAAe;IAC3C,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC;IACnC,CAAC;IAED,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC/C,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC;IACnC,CAAC;IAED,MAAM,KAAK,GAAG,aAAa,CAAC,UAAU,CAAC,CAAC;IACxC,IAAI,KAAK,EAAE,CAAC;QACV,OAAO;YACL,WAAW,EAAE,KAAK,CAAC,WAAW;YAC9B,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,QAAQ,EAAE,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC;SAC9B,CAAC;IACJ,CAAC;IAED,iDAAiD;IACjD,OAAO;QACL,OAAO,EAAE,MAAM;QACf,QAAQ,EAAE,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;KAClD,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB;IAClC,OAAO,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AACpC,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAA2B;IACjE,MAAM,EAAE,QAAQ;IAChB,IAAI,EAAE,MAAM;IACZ,MAAM,EAAE,QAAQ;IAChB,OAAO,EAAE,8BAA8B;IACvC,OAAO,EAAE,SAAS;CACnB,CAAC"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Element Scoring and Ranking Engine
3
+ *
4
+ * Multi-signal scoring system for ranking discovered elements
5
+ * by relevance to user intent.
6
+ */
7
+ export type RankingMode = 'balanced' | 'semantic-first' | 'visual-first';
8
+ export interface ScoringSignals {
9
+ role?: string;
10
+ hasName: boolean;
11
+ hasLabel: boolean;
12
+ hasCssSelector: boolean;
13
+ hasXpathSelector: boolean;
14
+ hasAxSelector: boolean;
15
+ bboxArea: number;
16
+ }
17
+ export interface ScoredCandidate<T> {
18
+ item: T;
19
+ relevance: number;
20
+ signals: ScoringSignals;
21
+ }
22
+ export interface ScoreOptions {
23
+ /** Filter/prioritize by ARIA roles */
24
+ roles?: string[];
25
+ /** Ranking strategy */
26
+ rankingMode?: RankingMode;
27
+ }
28
+ /**
29
+ * Score an element based on multiple signals
30
+ */
31
+ export declare function scoreElement<T>(item: T, getRole: (item: T) => string | undefined, getName: (item: T) => string | undefined, getLabel: (item: T) => string | undefined, getSelectors: (item: T) => {
32
+ css?: string;
33
+ xpath?: string;
34
+ ax?: string;
35
+ }, getBbox: (item: T) => {
36
+ w: number;
37
+ h: number;
38
+ } | undefined, options?: ScoreOptions): ScoredCandidate<T>;
39
+ /**
40
+ * Deduplicate scored candidates by a key function
41
+ */
42
+ export declare function dedupeByKey<T>(candidates: ScoredCandidate<T>[], getKey: (item: T) => string): ScoredCandidate<T>[];
43
+ /**
44
+ * Rank candidates by relevance (descending)
45
+ */
46
+ export declare function rankByRelevance<T>(candidates: ScoredCandidate<T>[]): ScoredCandidate<T>[];
47
+ //# sourceMappingURL=scoring.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scoring.d.ts","sourceRoot":"","sources":["../../../src/lib/scoring.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,MAAM,WAAW,GAAG,UAAU,GAAG,gBAAgB,GAAG,cAAc,CAAC;AAEzE,MAAM,WAAW,cAAc;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,cAAc,EAAE,OAAO,CAAC;IACxB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,aAAa,EAAE,OAAO,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,eAAe,CAAC,CAAC;IAChC,IAAI,EAAE,CAAC,CAAC;IACR,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,cAAc,CAAC;CACzB;AAED,MAAM,WAAW,YAAY;IAC3B,sCAAsC;IACtC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,uBAAuB;IACvB,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAC5B,IAAI,EAAE,CAAC,EACP,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,MAAM,GAAG,SAAS,EACxC,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,MAAM,GAAG,SAAS,EACxC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,MAAM,GAAG,SAAS,EACzC,YAAY,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,EAAE,CAAC,EAAE,MAAM,CAAA;CAAE,EACxE,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,EAC1D,OAAO,GAAE,YAAiB,GACzB,eAAe,CAAC,CAAC,CAAC,CAgDpB;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAC3B,UAAU,EAAE,eAAe,CAAC,CAAC,CAAC,EAAE,EAChC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,MAAM,GAC1B,eAAe,CAAC,CAAC,CAAC,EAAE,CAYtB;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,UAAU,EAAE,eAAe,CAAC,CAAC,CAAC,EAAE,GAAG,eAAe,CAAC,CAAC,CAAC,EAAE,CAEzF"}
@@ -0,0 +1,79 @@
1
+ /**
2
+ * Element Scoring and Ranking Engine
3
+ *
4
+ * Multi-signal scoring system for ranking discovered elements
5
+ * by relevance to user intent.
6
+ */
7
+ /**
8
+ * Score an element based on multiple signals
9
+ */
10
+ export function scoreElement(item, getRole, getName, getLabel, getSelectors, getBbox, options = {}) {
11
+ const normalizedRoles = (options.roles ?? []).map((role) => role.toLowerCase());
12
+ const rankingMode = options.rankingMode ?? 'balanced';
13
+ let relevance = 0;
14
+ const role = getRole(item)?.toLowerCase();
15
+ // Role matching
16
+ if (normalizedRoles.length === 0 && role) {
17
+ relevance += 0.5; // Any role is a positive signal
18
+ }
19
+ if (role && normalizedRoles.includes(role)) {
20
+ relevance += 2; // Exact role match is strong
21
+ }
22
+ // Name/label presence and length
23
+ const name = getName(item);
24
+ const label = getLabel(item);
25
+ const nameLen = name?.trim().length ?? 0;
26
+ const labelLen = label?.trim().length ?? 0;
27
+ if (nameLen > 0)
28
+ relevance += Math.min(1.5, nameLen / 20);
29
+ if (labelLen > 0)
30
+ relevance += Math.min(1, labelLen / 30);
31
+ // Selector availability
32
+ const selectors = getSelectors(item);
33
+ if (selectors.css)
34
+ relevance += 0.3;
35
+ if (selectors.xpath)
36
+ relevance += 0.2;
37
+ if (selectors.ax)
38
+ relevance += 0.1;
39
+ // Ranking mode boosts
40
+ if (rankingMode === 'semantic-first' && role)
41
+ relevance += 0.5;
42
+ const bbox = getBbox(item);
43
+ if (rankingMode === 'visual-first' && bbox)
44
+ relevance += 0.5;
45
+ return {
46
+ item,
47
+ relevance,
48
+ signals: {
49
+ role: role ?? 'unknown',
50
+ hasName: nameLen > 0,
51
+ hasLabel: labelLen > 0,
52
+ hasCssSelector: Boolean(selectors.css),
53
+ hasXpathSelector: Boolean(selectors.xpath),
54
+ hasAxSelector: Boolean(selectors.ax),
55
+ bboxArea: bbox ? bbox.w * bbox.h : 0,
56
+ },
57
+ };
58
+ }
59
+ /**
60
+ * Deduplicate scored candidates by a key function
61
+ */
62
+ export function dedupeByKey(candidates, getKey) {
63
+ const seen = new Map();
64
+ for (const candidate of candidates) {
65
+ const key = getKey(candidate.item);
66
+ const existing = seen.get(key);
67
+ if (!existing || candidate.relevance > existing.relevance) {
68
+ seen.set(key, candidate);
69
+ }
70
+ }
71
+ return Array.from(seen.values());
72
+ }
73
+ /**
74
+ * Rank candidates by relevance (descending)
75
+ */
76
+ export function rankByRelevance(candidates) {
77
+ return [...candidates].sort((a, b) => b.relevance - a.relevance);
78
+ }
79
+ //# sourceMappingURL=scoring.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scoring.js","sourceRoot":"","sources":["../../../src/lib/scoring.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Selector Building Utilities
3
+ *
4
+ * Functions for building CSS and XPath selectors
5
+ * from semantic element information.
6
+ */
7
+ /**
8
+ * Build CSS selector for a given ARIA role
9
+ * Maps roles to both native HTML elements and ARIA attributes
10
+ */
11
+ export declare function buildRoleSelector(role?: string): string | undefined;
12
+ /**
13
+ * Build CSS attribute selector for aria-label
14
+ */
15
+ export declare function buildAriaLabelSelector(label: string): string;
16
+ /**
17
+ * Build CSS attribute selector for name attribute
18
+ */
19
+ export declare function buildNameSelector(name: string): string;
20
+ /**
21
+ * Build XPath selector for text content matching
22
+ * Used when accessible name comes from text content (not HTML attribute)
23
+ */
24
+ export declare function buildTextContentXPath(text: string, role?: string): string | undefined;
25
+ /**
26
+ * Build AX selector format: role=button[name*="..."]
27
+ */
28
+ export declare function buildAxSelector(role?: string, name?: string, label?: string): string | undefined;
29
+ /**
30
+ * Combine role selector with attribute clause
31
+ */
32
+ export declare function combineRoleAndAttribute(roleSelector?: string, attrClause?: string): string | undefined;
33
+ /**
34
+ * Determine if element.name likely represents an HTML name attribute
35
+ * vs an accessible name computed from text content
36
+ *
37
+ * HTML name attribute is only valid on specific elements:
38
+ * - Form elements: input, button, select, textarea, fieldset
39
+ * - Embedded content: iframe, object
40
+ */
41
+ export declare function isLikelyHtmlNameAttribute(role?: string): boolean;
42
+ //# sourceMappingURL=selectors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"selectors.d.ts","sourceRoot":"","sources":["../../../src/lib/selectors.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAiCnE;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAG5D;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAGtD;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAkBrF;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAoBhG;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,YAAY,CAAC,EAAE,MAAM,EACrB,UAAU,CAAC,EAAE,MAAM,GAClB,MAAM,GAAG,SAAS,CAcpB;AAED;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAahE"}
@@ -0,0 +1,138 @@
1
+ /**
2
+ * Selector Building Utilities
3
+ *
4
+ * Functions for building CSS and XPath selectors
5
+ * from semantic element information.
6
+ */
7
+ import { escapeAttributeValue, escapeXPathValue, tokenizeForMatching } from './text-utils.js';
8
+ /**
9
+ * Build CSS selector for a given ARIA role
10
+ * Maps roles to both native HTML elements and ARIA attributes
11
+ */
12
+ export function buildRoleSelector(role) {
13
+ if (!role)
14
+ return undefined;
15
+ const normalized = role.trim().toLowerCase();
16
+ switch (normalized) {
17
+ case 'link':
18
+ return 'a,[role="link"]';
19
+ case 'button':
20
+ return 'button,[role="button"],input[type="button"],input[type="submit"],input[type="reset"]';
21
+ case 'textbox':
22
+ case 'searchbox':
23
+ return 'input[type="text"],input[type="search"],textarea,[role="textbox"]';
24
+ case 'checkbox':
25
+ return 'input[type="checkbox"],[role="checkbox"]';
26
+ case 'radio':
27
+ return 'input[type="radio"],[role="radio"]';
28
+ case 'combobox':
29
+ return 'select,[role="combobox"],input[list]';
30
+ case 'listbox':
31
+ return 'select[multiple],[role="listbox"]';
32
+ case 'option':
33
+ return 'option,[role="option"]';
34
+ case 'tab':
35
+ return '[role="tab"],.tab';
36
+ case 'menuitem':
37
+ return '[role="menuitem"],[role="menuitemcheckbox"],[role="menuitemradio"]';
38
+ case 'switch':
39
+ return '[role="switch"]';
40
+ case 'slider':
41
+ return 'input[type="range"],[role="slider"]';
42
+ default:
43
+ return undefined;
44
+ }
45
+ }
46
+ /**
47
+ * Build CSS attribute selector for aria-label
48
+ */
49
+ export function buildAriaLabelSelector(label) {
50
+ const escaped = escapeAttributeValue(label);
51
+ return `[aria-label*="${escaped}"]`;
52
+ }
53
+ /**
54
+ * Build CSS attribute selector for name attribute
55
+ */
56
+ export function buildNameSelector(name) {
57
+ const escaped = escapeAttributeValue(name);
58
+ return `[name*="${escaped}"]`;
59
+ }
60
+ /**
61
+ * Build XPath selector for text content matching
62
+ * Used when accessible name comes from text content (not HTML attribute)
63
+ */
64
+ export function buildTextContentXPath(text, role) {
65
+ const tokens = tokenizeForMatching(text);
66
+ if (tokens.length === 0)
67
+ return undefined;
68
+ const parts = [];
69
+ // Add role constraint if available
70
+ if (role) {
71
+ parts.push(`@role='${escapeXPathValue(role)}'`);
72
+ }
73
+ // Add text matching for each significant token
74
+ const textMatches = tokens
75
+ .map((token) => `contains(., '${escapeXPathValue(token)}')`)
76
+ .join(' and ');
77
+ parts.push(textMatches);
78
+ return `//*[${parts.join(' and ')}]`;
79
+ }
80
+ /**
81
+ * Build AX selector format: role=button[name*="..."]
82
+ */
83
+ export function buildAxSelector(role, name, label) {
84
+ const qualifierSource = name ?? label;
85
+ const snippet = qualifierSource?.trim();
86
+ if (!role && !snippet) {
87
+ return undefined;
88
+ }
89
+ if (!snippet && role) {
90
+ return `role=${role}`;
91
+ }
92
+ if (!snippet) {
93
+ return undefined;
94
+ }
95
+ const qualifierKey = name ? 'name' : 'label';
96
+ const qualifier = escapeAttributeValue(snippet, 160);
97
+ const prefix = role ? `role=${role}` : '';
98
+ return `${prefix}[${qualifierKey}*="${qualifier}"]`.trim();
99
+ }
100
+ /**
101
+ * Combine role selector with attribute clause
102
+ */
103
+ export function combineRoleAndAttribute(roleSelector, attrClause) {
104
+ if (roleSelector && attrClause) {
105
+ return roleSelector
106
+ .split(',')
107
+ .map((segment) => `${segment.trim()}${attrClause}`)
108
+ .join(',');
109
+ }
110
+ if (roleSelector) {
111
+ return roleSelector;
112
+ }
113
+ if (attrClause) {
114
+ return `*${attrClause}`;
115
+ }
116
+ return undefined;
117
+ }
118
+ /**
119
+ * Determine if element.name likely represents an HTML name attribute
120
+ * vs an accessible name computed from text content
121
+ *
122
+ * HTML name attribute is only valid on specific elements:
123
+ * - Form elements: input, button, select, textarea, fieldset
124
+ * - Embedded content: iframe, object
125
+ */
126
+ export function isLikelyHtmlNameAttribute(role) {
127
+ if (!role)
128
+ return true; // No role info, assume it could be HTML name attribute
129
+ const normalized = role.toLowerCase();
130
+ // Native HTML elements that have actual name attributes
131
+ const NATIVE_HTML_ROLES = new Set([
132
+ 'textbox', // Could be <input> or <textarea> with name attribute
133
+ 'searchbox', // Could be <input type="search"> with name attribute
134
+ 'combobox', // Could be <select> with name attribute
135
+ ]);
136
+ return NATIVE_HTML_ROLES.has(normalized);
137
+ }
138
+ //# sourceMappingURL=selectors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"selectors.js","sourceRoot":"","sources":["../../../src/lib/selectors.ts"],"names":[],"mappings":"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"}