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,202 @@
1
+ /**
2
+ * Snapshot Store
3
+ *
4
+ * In-memory storage for page snapshots with optional TTL-based cleanup.
5
+ * Keeps most recent snapshot per page for element resolution.
6
+ *
7
+ * @module snapshot/snapshot-store
8
+ */
9
+ /**
10
+ * Simple in-memory store for BaseSnapshot objects.
11
+ * Tracks one snapshot per page (latest overwrites previous).
12
+ * Supports optional TTL-based expiration with automatic cleanup.
13
+ */
14
+ export class SnapshotStore {
15
+ /** Map of snapshot_id → SnapshotEntry */
16
+ entries = new Map();
17
+ /** Map of page_id → snapshot_id (for lookup by page) */
18
+ pageToSnapshot = new Map();
19
+ /** TTL in milliseconds (undefined = no expiration) */
20
+ ttlMs;
21
+ /** Cleanup interval timer */
22
+ cleanupTimer;
23
+ constructor(options) {
24
+ this.ttlMs = options?.ttlMs;
25
+ // Start automatic cleanup if TTL is configured
26
+ if (this.ttlMs !== undefined) {
27
+ const intervalMs = options?.cleanupIntervalMs ?? this.ttlMs;
28
+ this.startCleanupTimer(intervalMs);
29
+ }
30
+ }
31
+ /**
32
+ * Start automatic cleanup timer.
33
+ * @param intervalMs - Cleanup interval in milliseconds
34
+ */
35
+ startCleanupTimer(intervalMs) {
36
+ this.cleanupTimer = setInterval(() => {
37
+ this.cleanupExpired();
38
+ }, intervalMs);
39
+ // Ensure timer doesn't prevent process exit
40
+ if (this.cleanupTimer.unref) {
41
+ this.cleanupTimer.unref();
42
+ }
43
+ }
44
+ /**
45
+ * Stop automatic cleanup timer.
46
+ */
47
+ stopCleanupTimer() {
48
+ if (this.cleanupTimer) {
49
+ clearInterval(this.cleanupTimer);
50
+ this.cleanupTimer = undefined;
51
+ }
52
+ }
53
+ /**
54
+ * Store a snapshot for a page.
55
+ * Overwrites any previous snapshot for the same page.
56
+ *
57
+ * @param pageId - Page identifier
58
+ * @param snapshot - Snapshot to store
59
+ */
60
+ store(pageId, snapshot) {
61
+ // Remove previous snapshot for this page if exists
62
+ const previousSnapshotId = this.pageToSnapshot.get(pageId);
63
+ if (previousSnapshotId) {
64
+ this.entries.delete(previousSnapshotId);
65
+ }
66
+ // Store new snapshot with metadata
67
+ const entry = {
68
+ snapshot,
69
+ storedAt: Date.now(),
70
+ pageId,
71
+ };
72
+ this.entries.set(snapshot.snapshot_id, entry);
73
+ this.pageToSnapshot.set(pageId, snapshot.snapshot_id);
74
+ }
75
+ /**
76
+ * Get a snapshot by its ID.
77
+ *
78
+ * @param snapshotId - Snapshot identifier
79
+ * @returns Snapshot or undefined if not found
80
+ */
81
+ get(snapshotId) {
82
+ const entry = this.entries.get(snapshotId);
83
+ return entry?.snapshot;
84
+ }
85
+ /**
86
+ * Get full entry (with metadata) by snapshot ID.
87
+ *
88
+ * @param snapshotId - Snapshot identifier
89
+ * @returns SnapshotEntry or undefined if not found
90
+ */
91
+ getEntry(snapshotId) {
92
+ return this.entries.get(snapshotId);
93
+ }
94
+ /**
95
+ * Get the most recent snapshot for a page.
96
+ *
97
+ * @param pageId - Page identifier
98
+ * @returns Snapshot or undefined if no snapshot for page
99
+ */
100
+ getByPageId(pageId) {
101
+ const snapshotId = this.pageToSnapshot.get(pageId);
102
+ return snapshotId ? this.get(snapshotId) : undefined;
103
+ }
104
+ /**
105
+ * Find a node within a snapshot.
106
+ *
107
+ * @param snapshotId - Snapshot identifier
108
+ * @param nodeId - Node identifier
109
+ * @returns Node or undefined if not found
110
+ */
111
+ findNode(snapshotId, nodeId) {
112
+ const snapshot = this.get(snapshotId);
113
+ return snapshot?.nodes.find((n) => n.node_id === nodeId);
114
+ }
115
+ /**
116
+ * Remove snapshot for a specific page.
117
+ *
118
+ * @param pageId - Page identifier
119
+ * @returns true if snapshot was removed, false if not found
120
+ */
121
+ removeByPageId(pageId) {
122
+ const snapshotId = this.pageToSnapshot.get(pageId);
123
+ if (!snapshotId) {
124
+ return false;
125
+ }
126
+ this.entries.delete(snapshotId);
127
+ this.pageToSnapshot.delete(pageId);
128
+ return true;
129
+ }
130
+ /**
131
+ * Clear all stored snapshots.
132
+ */
133
+ clear() {
134
+ this.entries.clear();
135
+ this.pageToSnapshot.clear();
136
+ }
137
+ /**
138
+ * Destroy the store, clearing all data and stopping cleanup timer.
139
+ */
140
+ destroy() {
141
+ this.stopCleanupTimer();
142
+ this.clear();
143
+ }
144
+ /**
145
+ * Cleanup expired snapshots based on TTL.
146
+ * Does nothing if TTL is not configured.
147
+ *
148
+ * @returns Number of expired snapshots removed
149
+ */
150
+ cleanupExpired() {
151
+ if (this.ttlMs === undefined) {
152
+ return 0;
153
+ }
154
+ const now = Date.now();
155
+ const expiredIds = [];
156
+ for (const [snapshotId, entry] of this.entries) {
157
+ if (now - entry.storedAt > this.ttlMs) {
158
+ expiredIds.push(snapshotId);
159
+ }
160
+ }
161
+ for (const snapshotId of expiredIds) {
162
+ const entry = this.entries.get(snapshotId);
163
+ if (entry) {
164
+ this.pageToSnapshot.delete(entry.pageId);
165
+ this.entries.delete(snapshotId);
166
+ }
167
+ }
168
+ return expiredIds.length;
169
+ }
170
+ /**
171
+ * Get store statistics.
172
+ *
173
+ * @returns SnapshotStoreStats
174
+ */
175
+ getStats() {
176
+ let totalNodes = 0;
177
+ let oldestSnapshot;
178
+ let newestSnapshot;
179
+ for (const entry of this.entries.values()) {
180
+ totalNodes += entry.snapshot.nodes.length;
181
+ if (oldestSnapshot === undefined || entry.storedAt < oldestSnapshot) {
182
+ oldestSnapshot = entry.storedAt;
183
+ }
184
+ if (newestSnapshot === undefined || entry.storedAt > newestSnapshot) {
185
+ newestSnapshot = entry.storedAt;
186
+ }
187
+ }
188
+ return {
189
+ snapshotCount: this.entries.size,
190
+ totalNodes,
191
+ oldestSnapshot,
192
+ newestSnapshot,
193
+ };
194
+ }
195
+ /**
196
+ * Get count of stored snapshots.
197
+ */
198
+ get size() {
199
+ return this.entries.size;
200
+ }
201
+ }
202
+ //# sourceMappingURL=snapshot-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"snapshot-store.js","sourceRoot":"","sources":["../../../src/snapshot/snapshot-store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,250 @@
1
+ /**
2
+ * BaseSnapshot Types
3
+ *
4
+ * Canonical semantic representation of a web page.
5
+ * Designed to be:
6
+ * - Compact: No raw HTML, no class soup
7
+ * - Semantic: Preserves meaning, order, hierarchy
8
+ * - Actionable: Interactive elements have stable locators
9
+ * - Token-efficient: Suitable for LLM context
10
+ */
11
+ import { BBox } from '../shared/types/base.types.js';
12
+ import type { ObservationGroups } from '../observation/observation.types.js';
13
+ export type { BBox };
14
+ export type BoundingBox = BBox;
15
+ /**
16
+ * Canonical snapshot of a web page.
17
+ * Single source of truth for page state at a point in time.
18
+ */
19
+ export interface BaseSnapshot {
20
+ /** Unique identifier for this snapshot */
21
+ snapshot_id: string;
22
+ /** Page URL at capture time */
23
+ url: string;
24
+ /** Page title */
25
+ title: string;
26
+ /** Document language (from <html lang="...">) */
27
+ language?: string;
28
+ /** ISO 8601 timestamp of capture */
29
+ captured_at: string;
30
+ /** Viewport dimensions at capture time */
31
+ viewport: Viewport;
32
+ /** Ordered list of semantic nodes (preserves visual/DOM order) */
33
+ nodes: ReadableNode[];
34
+ /** Metadata about the snapshot */
35
+ meta: SnapshotMeta;
36
+ /**
37
+ * DOM observations - significant elements that appeared or disappeared.
38
+ * Split by when they occurred for clarity.
39
+ */
40
+ observations?: ObservationGroups;
41
+ }
42
+ /**
43
+ * Viewport dimensions
44
+ */
45
+ export interface Viewport {
46
+ width: number;
47
+ height: number;
48
+ }
49
+ /**
50
+ * Snapshot metadata
51
+ */
52
+ export interface SnapshotMeta {
53
+ /** True if snapshot is incomplete (e.g., timeout, cross-origin frames) */
54
+ partial?: boolean;
55
+ /** Warnings encountered during capture */
56
+ warnings?: string[];
57
+ /** Total node count in snapshot */
58
+ node_count: number;
59
+ /** Count of interactive nodes */
60
+ interactive_count: number;
61
+ /** Capture duration in milliseconds */
62
+ capture_duration_ms?: number;
63
+ }
64
+ /**
65
+ * Semantic node representation.
66
+ * Captures essential information for both reading and interaction.
67
+ */
68
+ export interface ReadableNode {
69
+ /** Unique identifier within snapshot (e.g., "n1", "n2") */
70
+ node_id: string;
71
+ /** CDP backend node ID - stable within session, guaranteed unique per DOM element.
72
+ * Used for direct CDP interactions to avoid Playwright locator ambiguity. */
73
+ backend_node_id: number;
74
+ /** CDP frame ID containing this node.
75
+ * Used with loader_id to create globally unique element references. */
76
+ frame_id: string;
77
+ /** CDP loader ID at snapshot time - changes on frame navigation.
78
+ * Combined with frame_id and backend_node_id for safe cross-frame references. */
79
+ loader_id: string;
80
+ /** Semantic classification */
81
+ kind: NodeKind;
82
+ /** Human-readable label (accessible name, text content, placeholder, etc.) */
83
+ label: string;
84
+ /** Semantic location within page */
85
+ where: NodeLocation;
86
+ /** Layout/positioning information */
87
+ layout: NodeLayout;
88
+ /** State for interactive elements */
89
+ state?: NodeState;
90
+ /** Locator strategies for finding/acting on this element */
91
+ find?: NodeLocators;
92
+ /** Additional attributes for specific node types */
93
+ attributes?: NodeAttributes;
94
+ }
95
+ /**
96
+ * Semantic node classification.
97
+ * Covers interactive elements and readable content.
98
+ */
99
+ export type NodeKind = 'link' | 'button' | 'input' | 'textarea' | 'select' | 'combobox' | 'checkbox' | 'radio' | 'switch' | 'slider' | 'tab' | 'menuitem' | 'heading' | 'paragraph' | 'text' | 'list' | 'listitem' | 'image' | 'media' | 'table' | 'form' | 'dialog' | 'navigation' | 'section' | 'generic';
100
+ /**
101
+ * Semantic region classification.
102
+ * Based on ARIA landmarks and common page structure.
103
+ */
104
+ export type SemanticRegion = 'header' | 'nav' | 'main' | 'aside' | 'footer' | 'dialog' | 'search' | 'form' | 'contentinfo' | 'unknown';
105
+ /**
106
+ * Semantic location within the page.
107
+ */
108
+ export interface NodeLocation {
109
+ /** Page region (header, nav, main, footer, etc.) */
110
+ region: SemanticRegion;
111
+ /** Group identifier (section/menu/card/form cluster) */
112
+ group_id?: string;
113
+ /** Hierarchy path for nested elements (e.g., ["Men", "Shoes", "Running"]) */
114
+ group_path?: string[];
115
+ /** Nearest heading context */
116
+ heading_context?: string;
117
+ }
118
+ /**
119
+ * Layout and positioning information.
120
+ */
121
+ export interface NodeLayout {
122
+ /** Bounding box in viewport coordinates */
123
+ bbox: BoundingBox;
124
+ /** CSS display value */
125
+ display?: string;
126
+ /** CSS position value */
127
+ positioning?: string;
128
+ /** Container flow direction (row/column for flex, etc.) */
129
+ flow?: 'row' | 'column' | 'grid' | 'block' | 'inline';
130
+ /** Coarse screen position */
131
+ screen_zone?: ScreenZone;
132
+ /** CSS z-index value (used for overlay detection) */
133
+ zIndex?: number;
134
+ }
135
+ /**
136
+ * Coarse screen zone (for spatial reasoning).
137
+ */
138
+ export type ScreenZone = 'top-left' | 'top-center' | 'top-right' | 'middle-left' | 'middle-center' | 'middle-right' | 'bottom-left' | 'bottom-center' | 'bottom-right' | 'above-fold' | 'below-fold';
139
+ /**
140
+ * State for interactive elements.
141
+ */
142
+ export interface NodeState {
143
+ /** Element is visible (not hidden, not zero-size) */
144
+ visible: boolean;
145
+ /** Element is enabled (not disabled, not aria-disabled) */
146
+ enabled: boolean;
147
+ /** Checked state for checkboxes/radios/switches */
148
+ checked?: boolean;
149
+ /** Expanded state for accordions/dropdowns */
150
+ expanded?: boolean;
151
+ /** Selected state for tabs/options */
152
+ selected?: boolean;
153
+ /** Focused state */
154
+ focused?: boolean;
155
+ /** Required for form inputs */
156
+ required?: boolean;
157
+ /** Invalid state for form inputs */
158
+ invalid?: boolean;
159
+ /** Read-only state */
160
+ readonly?: boolean;
161
+ }
162
+ /**
163
+ * Locator strategies for element identification.
164
+ * Ordered by reliability/stability.
165
+ */
166
+ export interface NodeLocators {
167
+ /** Primary (most reliable) locator */
168
+ primary: string;
169
+ /** Alternative locators (fallbacks) */
170
+ alternates?: string[];
171
+ /** Frame path if element is in iframe */
172
+ frame_path?: string[];
173
+ /** Shadow DOM path if element is in shadow root */
174
+ shadow_path?: string[];
175
+ }
176
+ /**
177
+ * Additional attributes for specific node types.
178
+ */
179
+ export interface NodeAttributes {
180
+ /** Input type (text, email, password, etc.) */
181
+ input_type?: string;
182
+ /** Placeholder text */
183
+ placeholder?: string;
184
+ /** Current value (redacted by default for sensitive fields) */
185
+ value?: string;
186
+ /** Link href */
187
+ href?: string;
188
+ /** Image alt text */
189
+ alt?: string;
190
+ /** Image src (domain + path only, no query params) */
191
+ src?: string;
192
+ /** Heading level (1-6) */
193
+ heading_level?: number;
194
+ /** Form action URL */
195
+ action?: string;
196
+ /** Form method */
197
+ method?: string;
198
+ /** Autocomplete attribute */
199
+ autocomplete?: string;
200
+ /** ARIA role (if different from implied role) */
201
+ role?: string;
202
+ /** Data-testid or similar test identifier */
203
+ test_id?: string;
204
+ }
205
+ /**
206
+ * Snapshot capture options.
207
+ */
208
+ export interface SnapshotOptions {
209
+ /** Include hidden elements (default: false) */
210
+ include_hidden?: boolean;
211
+ /** Maximum nodes to capture (default: unlimited) */
212
+ max_nodes?: number;
213
+ /** Timeout in milliseconds (default: 30000) */
214
+ timeout?: number;
215
+ /** Redact sensitive values like passwords (default: true) */
216
+ redact_sensitive?: boolean;
217
+ /** Include value attribute for inputs (default: false for security) */
218
+ include_values?: boolean;
219
+ }
220
+ /**
221
+ * Snapshot capture result returned by MCP tool.
222
+ */
223
+ export interface SnapshotResult {
224
+ /** Snapshot identifier */
225
+ snapshot_id: string;
226
+ /** Page URL */
227
+ url: string;
228
+ /** Page title */
229
+ title: string;
230
+ /** Capture statistics */
231
+ stats: {
232
+ node_count: number;
233
+ interactive_count: number;
234
+ captured_at: string;
235
+ duration_ms: number;
236
+ };
237
+ }
238
+ /**
239
+ * Type guard for interactive nodes.
240
+ */
241
+ export declare function isInteractiveNode(node: ReadableNode): boolean;
242
+ /**
243
+ * Type guard for readable content nodes.
244
+ */
245
+ export declare function isReadableNode(node: ReadableNode): boolean;
246
+ /**
247
+ * Type guard for structural nodes.
248
+ */
249
+ export declare function isStructuralNode(node: ReadableNode): boolean;
250
+ //# sourceMappingURL=snapshot.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"snapshot.types.d.ts","sourceRoot":"","sources":["../../../src/snapshot/snapshot.types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,54 @@
1
+ /**
2
+ * BaseSnapshot Types
3
+ *
4
+ * Canonical semantic representation of a web page.
5
+ * Designed to be:
6
+ * - Compact: No raw HTML, no class soup
7
+ * - Semantic: Preserves meaning, order, hierarchy
8
+ * - Actionable: Interactive elements have stable locators
9
+ * - Token-efficient: Suitable for LLM context
10
+ */
11
+ /**
12
+ * Type guard for interactive nodes.
13
+ */
14
+ export function isInteractiveNode(node) {
15
+ const interactiveKinds = [
16
+ 'link',
17
+ 'button',
18
+ 'input',
19
+ 'textarea',
20
+ 'select',
21
+ 'combobox',
22
+ 'checkbox',
23
+ 'radio',
24
+ 'switch',
25
+ 'slider',
26
+ 'tab',
27
+ 'menuitem',
28
+ ];
29
+ return interactiveKinds.includes(node.kind);
30
+ }
31
+ /**
32
+ * Type guard for readable content nodes.
33
+ */
34
+ export function isReadableNode(node) {
35
+ const readableKinds = [
36
+ 'heading',
37
+ 'paragraph',
38
+ 'text',
39
+ 'list',
40
+ 'listitem',
41
+ 'image',
42
+ 'media',
43
+ 'table',
44
+ ];
45
+ return readableKinds.includes(node.kind);
46
+ }
47
+ /**
48
+ * Type guard for structural nodes.
49
+ */
50
+ export function isStructuralNode(node) {
51
+ const structuralKinds = ['form', 'dialog', 'navigation', 'section'];
52
+ return structuralKinds.includes(node.kind);
53
+ }
54
+ //# sourceMappingURL=snapshot.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"snapshot.types.js","sourceRoot":"","sources":["../../../src/snapshot/snapshot.types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AA+WH;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAkB;IAClD,MAAM,gBAAgB,GAAe;QACnC,MAAM;QACN,QAAQ;QACR,OAAO;QACP,UAAU;QACV,QAAQ;QACR,UAAU;QACV,UAAU;QACV,OAAO;QACP,QAAQ;QACR,QAAQ;QACR,KAAK;QACL,UAAU;KACX,CAAC;IACF,OAAO,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC9C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,IAAkB;IAC/C,MAAM,aAAa,GAAe;QAChC,SAAS;QACT,WAAW;QACX,MAAM;QACN,MAAM;QACN,UAAU;QACV,OAAO;QACP,OAAO;QACP,OAAO;KACR,CAAC;IACF,OAAO,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAkB;IACjD,MAAM,eAAe,GAAe,CAAC,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,SAAS,CAAC,CAAC;IAChF,OAAO,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC7C,CAAC"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Actionables Filter
3
+ *
4
+ * Select and rank interactive elements for LLM context.
5
+ * Filter to active layer, score by relevance, cap at max count.
6
+ */
7
+ import type { BaseSnapshot, ReadableNode, NodeKind } from '../snapshot/snapshot.types.js';
8
+ import type { ScoringContext } from './types.js';
9
+ /**
10
+ * Check if node kind is interactive.
11
+ */
12
+ export declare function isInteractiveKind(kind: NodeKind): boolean;
13
+ /**
14
+ * Select actionable elements from snapshot.
15
+ *
16
+ * Filtering rules:
17
+ * 1. Only interactive elements
18
+ * 2. Only visible elements
19
+ * 3. Only from active layer
20
+ * 4. Score by relevance
21
+ * 5. Cap at maxCount
22
+ *
23
+ * @param snapshot - Compiled snapshot
24
+ * @param activeLayer - Active layer name
25
+ * @param maxCount - Maximum number of actionables to return
26
+ * @param context - Scoring context (optional)
27
+ * @returns Selected nodes sorted by relevance
28
+ */
29
+ export declare function selectActionables(snapshot: BaseSnapshot, activeLayer: string, maxCount: number, context?: ScoringContext): ReadableNode[];
30
+ /**
31
+ * Score an actionable element by relevance.
32
+ *
33
+ * Scoring factors:
34
+ * - Enabled state (+0.2)
35
+ * - Role importance (button/input: +0.3, link: +0.25, etc.)
36
+ * - Semantic region (main: +0.15, dialog: +0.2)
37
+ * - Screen position (above-fold: +0.1)
38
+ * - Has label (+0.15)
39
+ * - Primary CTA (+0.3)
40
+ * - Currently focused (+0.2)
41
+ *
42
+ * @param node - Node to score
43
+ * @param context - Scoring context
44
+ * @returns Score from 0-1
45
+ */
46
+ export declare function scoreActionable(node: ReadableNode, context?: ScoringContext): number;
47
+ //# sourceMappingURL=actionables-filter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"actionables-filter.d.ts","sourceRoot":"","sources":["../../../src/state/actionables-filter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AAC1F,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAkBjD;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAEzD;AAMD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,YAAY,EACtB,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,cAAc,GACvB,YAAY,EAAE,CAiChB;AAMD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,MAAM,CA4DpF"}