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,31 @@
1
+ /**
2
+ * Region Resolver
3
+ *
4
+ * Determines semantic page region for each node.
5
+ *
6
+ * @module snapshot/extractors/region-resolver
7
+ *
8
+ * Sources:
9
+ * - ARIA landmark roles (banner, navigation, main, contentinfo)
10
+ * - HTML5 sectioning elements (header, nav, main, footer, aside)
11
+ * - Ancestor traversal for inherited region
12
+ */
13
+ import type { SemanticRegion } from '../snapshot.types.js';
14
+ import type { RawDomNode, RawAxNode } from './types.js';
15
+ /**
16
+ * Resolve semantic region for a node.
17
+ *
18
+ * Priority:
19
+ * 1. AX role (most reliable)
20
+ * 2. DOM role attribute
21
+ * 3. HTML5 tag name
22
+ * 4. Ancestor traversal (checks DOM tags, DOM role attrs, AND AX roles)
23
+ *
24
+ * @param domNode - Raw DOM node data (optional)
25
+ * @param axNode - Raw AX node data (optional)
26
+ * @param domTree - Full DOM tree for ancestor lookup
27
+ * @param axTree - Full AX tree for ancestor AX role lookup (optional)
28
+ * @returns SemanticRegion
29
+ */
30
+ export declare function resolveRegion(domNode: RawDomNode | undefined, axNode: RawAxNode | undefined, domTree: Map<number, RawDomNode>, axTree?: Map<number, RawAxNode>): SemanticRegion;
31
+ //# sourceMappingURL=region-resolver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"region-resolver.d.ts","sourceRoot":"","sources":["../../../../src/snapshot/extractors/region-resolver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAmExD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,aAAa,CAC3B,OAAO,EAAE,UAAU,GAAG,SAAS,EAC/B,MAAM,EAAE,SAAS,GAAG,SAAS,EAC7B,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,EAChC,MAAM,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,GAC9B,cAAc,CA4BhB"}
@@ -0,0 +1,168 @@
1
+ /**
2
+ * Region Resolver
3
+ *
4
+ * Determines semantic page region for each node.
5
+ *
6
+ * @module snapshot/extractors/region-resolver
7
+ *
8
+ * Sources:
9
+ * - ARIA landmark roles (banner, navigation, main, contentinfo)
10
+ * - HTML5 sectioning elements (header, nav, main, footer, aside)
11
+ * - Ancestor traversal for inherited region
12
+ */
13
+ /**
14
+ * Mapping of ARIA roles to semantic regions
15
+ */
16
+ const ROLE_TO_REGION = {
17
+ banner: 'header',
18
+ navigation: 'nav',
19
+ main: 'main',
20
+ complementary: 'aside',
21
+ contentinfo: 'footer',
22
+ dialog: 'dialog',
23
+ alertdialog: 'dialog',
24
+ search: 'search',
25
+ form: 'form',
26
+ region: 'unknown', // Generic region
27
+ };
28
+ /**
29
+ * Mapping of HTML5 sectioning tags to semantic regions
30
+ */
31
+ const TAG_TO_REGION = {
32
+ HEADER: 'header',
33
+ NAV: 'nav',
34
+ MAIN: 'main',
35
+ ASIDE: 'aside',
36
+ FOOTER: 'footer',
37
+ DIALOG: 'dialog',
38
+ FORM: 'form',
39
+ SEARCH: 'search',
40
+ };
41
+ /**
42
+ * Get region from AX role.
43
+ *
44
+ * @param role - AX role string
45
+ * @returns SemanticRegion or undefined
46
+ */
47
+ function getRegionFromRole(role) {
48
+ if (!role)
49
+ return undefined;
50
+ return ROLE_TO_REGION[role.toLowerCase()];
51
+ }
52
+ /**
53
+ * Get region from DOM tag name.
54
+ *
55
+ * @param tagName - DOM tag name
56
+ * @returns SemanticRegion or undefined
57
+ */
58
+ function getRegionFromTag(tagName) {
59
+ if (!tagName)
60
+ return undefined;
61
+ return TAG_TO_REGION[tagName.toUpperCase()];
62
+ }
63
+ /**
64
+ * Get region from DOM role attribute.
65
+ *
66
+ * @param attributes - DOM attributes
67
+ * @returns SemanticRegion or undefined
68
+ */
69
+ function getRegionFromDomRole(attributes) {
70
+ if (!attributes?.role)
71
+ return undefined;
72
+ return ROLE_TO_REGION[attributes.role.toLowerCase()];
73
+ }
74
+ /**
75
+ * Resolve semantic region for a node.
76
+ *
77
+ * Priority:
78
+ * 1. AX role (most reliable)
79
+ * 2. DOM role attribute
80
+ * 3. HTML5 tag name
81
+ * 4. Ancestor traversal (checks DOM tags, DOM role attrs, AND AX roles)
82
+ *
83
+ * @param domNode - Raw DOM node data (optional)
84
+ * @param axNode - Raw AX node data (optional)
85
+ * @param domTree - Full DOM tree for ancestor lookup
86
+ * @param axTree - Full AX tree for ancestor AX role lookup (optional)
87
+ * @returns SemanticRegion
88
+ */
89
+ export function resolveRegion(domNode, axNode, domTree, axTree) {
90
+ // 1. Check AX role (highest priority)
91
+ const axRegion = getRegionFromRole(axNode?.role);
92
+ if (axRegion && axRegion !== 'unknown') {
93
+ return axRegion;
94
+ }
95
+ // 2. Check DOM role attribute
96
+ const domRoleRegion = getRegionFromDomRole(domNode?.attributes);
97
+ if (domRoleRegion && domRoleRegion !== 'unknown') {
98
+ return domRoleRegion;
99
+ }
100
+ // 3. Check current node's tag
101
+ const tagRegion = getRegionFromTag(domNode?.nodeName);
102
+ if (tagRegion && tagRegion !== 'unknown') {
103
+ return tagRegion;
104
+ }
105
+ // 4. Traverse ancestors to find containing landmark
106
+ if (domNode && domTree.size > 0) {
107
+ const ancestorRegion = findAncestorRegion(domNode, domTree, axTree);
108
+ if (ancestorRegion && ancestorRegion !== 'unknown') {
109
+ return ancestorRegion;
110
+ }
111
+ }
112
+ return 'unknown';
113
+ }
114
+ /**
115
+ * Find region by traversing DOM ancestors.
116
+ *
117
+ * Checks (in priority order):
118
+ * 1. Parent's AX role (if axTree provided)
119
+ * 2. Parent's DOM tag name
120
+ * 3. Parent's DOM role attribute
121
+ *
122
+ * @param node - Starting node
123
+ * @param domTree - Full DOM tree
124
+ * @param axTree - Full AX tree (optional)
125
+ * @returns SemanticRegion from nearest ancestor landmark, or undefined
126
+ */
127
+ function findAncestorRegion(node, domTree, axTree) {
128
+ let currentId = node.parentId;
129
+ const visited = new Set();
130
+ // Traverse up to 50 levels (prevent infinite loops)
131
+ let depth = 0;
132
+ const maxDepth = 50;
133
+ while (currentId !== undefined && depth < maxDepth) {
134
+ if (visited.has(currentId)) {
135
+ // Cycle detected
136
+ break;
137
+ }
138
+ visited.add(currentId);
139
+ const parentNode = domTree.get(currentId);
140
+ if (!parentNode) {
141
+ break;
142
+ }
143
+ // Check parent's AX role (highest priority if available)
144
+ if (axTree) {
145
+ const parentAx = axTree.get(currentId);
146
+ if (parentAx?.role) {
147
+ const axRoleRegion = getRegionFromRole(parentAx.role);
148
+ if (axRoleRegion && axRoleRegion !== 'unknown') {
149
+ return axRoleRegion;
150
+ }
151
+ }
152
+ }
153
+ // Check parent's tag for landmark
154
+ const tagRegion = getRegionFromTag(parentNode.nodeName);
155
+ if (tagRegion && tagRegion !== 'unknown') {
156
+ return tagRegion;
157
+ }
158
+ // Check parent's role attribute
159
+ const roleRegion = getRegionFromDomRole(parentNode.attributes);
160
+ if (roleRegion && roleRegion !== 'unknown') {
161
+ return roleRegion;
162
+ }
163
+ currentId = parentNode.parentId;
164
+ depth++;
165
+ }
166
+ return undefined;
167
+ }
168
+ //# sourceMappingURL=region-resolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"region-resolver.js","sourceRoot":"","sources":["../../../../src/snapshot/extractors/region-resolver.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * State Extractor
3
+ *
4
+ * Extracts interactive element state (visible, enabled, checked, etc.)
5
+ * by merging data from AX tree properties, DOM attributes, and layout.
6
+ *
7
+ * @module snapshot/extractors/state-extractor
8
+ *
9
+ * Sources (priority order):
10
+ * 1. AX tree properties (checked, expanded, selected, disabled)
11
+ * 2. DOM attributes (disabled, readonly, required)
12
+ * 3. Computed visibility from layout
13
+ */
14
+ import type { NodeState } from '../snapshot.types.js';
15
+ import type { RawDomNode, RawAxNode, NodeLayoutInfo } from './types.js';
16
+ /**
17
+ * Extract state for an interactive element.
18
+ *
19
+ * Merges state from multiple sources:
20
+ * - AX properties (primary source)
21
+ * - DOM attributes (fallback)
22
+ * - Layout information (visibility)
23
+ *
24
+ * @param domNode - Raw DOM node data (optional)
25
+ * @param axNode - Raw AX node data (optional)
26
+ * @param layout - Node layout info (optional)
27
+ * @returns NodeState object
28
+ */
29
+ export declare function extractState(domNode: RawDomNode | undefined, axNode: RawAxNode | undefined, layout: NodeLayoutInfo | undefined): NodeState;
30
+ //# sourceMappingURL=state-extractor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state-extractor.d.ts","sourceRoot":"","sources":["../../../../src/snapshot/extractors/state-extractor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,cAAc,EAAc,MAAM,YAAY,CAAC;AAuEpF;;;;;;;;;;;;GAYG;AACH,wBAAgB,YAAY,CAC1B,OAAO,EAAE,UAAU,GAAG,SAAS,EAC/B,MAAM,EAAE,SAAS,GAAG,SAAS,EAC7B,MAAM,EAAE,cAAc,GAAG,SAAS,GACjC,SAAS,CAyFX"}
@@ -0,0 +1,181 @@
1
+ /**
2
+ * State Extractor
3
+ *
4
+ * Extracts interactive element state (visible, enabled, checked, etc.)
5
+ * by merging data from AX tree properties, DOM attributes, and layout.
6
+ *
7
+ * @module snapshot/extractors/state-extractor
8
+ *
9
+ * Sources (priority order):
10
+ * 1. AX tree properties (checked, expanded, selected, disabled)
11
+ * 2. DOM attributes (disabled, readonly, required)
12
+ * 3. Computed visibility from layout
13
+ */
14
+ /**
15
+ * Get AX property value by name.
16
+ *
17
+ * @param properties - Array of AX properties
18
+ * @param name - Property name to find
19
+ * @returns Property value or undefined
20
+ */
21
+ function getAxProperty(properties, name) {
22
+ if (!properties)
23
+ return undefined;
24
+ const prop = properties.find((p) => p.name === name);
25
+ return prop?.value?.value;
26
+ }
27
+ /**
28
+ * Check if DOM node has a boolean attribute (present = true).
29
+ *
30
+ * @param attributes - DOM attributes record
31
+ * @param name - Attribute name
32
+ * @returns true if attribute is present
33
+ */
34
+ function hasBooleanAttribute(attributes, name) {
35
+ if (!attributes)
36
+ return false;
37
+ return name in attributes;
38
+ }
39
+ /**
40
+ * Get ARIA attribute value from DOM.
41
+ *
42
+ * @param attributes - DOM attributes record
43
+ * @param name - ARIA attribute name (e.g., 'aria-disabled')
44
+ * @returns Attribute value or undefined
45
+ */
46
+ function getAriaAttribute(attributes, name) {
47
+ if (!attributes)
48
+ return undefined;
49
+ return attributes[name];
50
+ }
51
+ /**
52
+ * Parse checked state from AX property value.
53
+ * AX uses tristate: 'true', 'false', 'mixed'
54
+ *
55
+ * @param value - AX property value
56
+ * @returns boolean for true/false, undefined for mixed or unset
57
+ */
58
+ function parseCheckedState(value) {
59
+ if (value === true || value === 'true')
60
+ return true;
61
+ if (value === false || value === 'false')
62
+ return false;
63
+ // 'mixed' or undefined results in undefined
64
+ return undefined;
65
+ }
66
+ /**
67
+ * Parse boolean state from various value types.
68
+ *
69
+ * @param value - Value to parse
70
+ * @returns boolean or undefined
71
+ */
72
+ function parseBooleanState(value) {
73
+ if (value === true || value === 'true')
74
+ return true;
75
+ if (value === false || value === 'false')
76
+ return false;
77
+ return undefined;
78
+ }
79
+ /**
80
+ * Extract state for an interactive element.
81
+ *
82
+ * Merges state from multiple sources:
83
+ * - AX properties (primary source)
84
+ * - DOM attributes (fallback)
85
+ * - Layout information (visibility)
86
+ *
87
+ * @param domNode - Raw DOM node data (optional)
88
+ * @param axNode - Raw AX node data (optional)
89
+ * @param layout - Node layout info (optional)
90
+ * @returns NodeState object
91
+ */
92
+ export function extractState(domNode, axNode, layout) {
93
+ const attributes = domNode?.attributes;
94
+ const properties = axNode?.properties;
95
+ // === Visibility ===
96
+ // Primary: layout.isVisible
97
+ // Default: true (assume visible if no layout info)
98
+ const visible = layout?.isVisible ?? true;
99
+ // === Enabled ===
100
+ // Priority: AX disabled > DOM disabled > aria-disabled
101
+ let enabled = true;
102
+ // Check AX disabled property
103
+ const axDisabled = getAxProperty(properties, 'disabled');
104
+ if (axDisabled !== undefined) {
105
+ enabled = !parseBooleanState(axDisabled);
106
+ }
107
+ else {
108
+ // Fallback to DOM attributes
109
+ if (hasBooleanAttribute(attributes, 'disabled')) {
110
+ enabled = false;
111
+ }
112
+ else if (getAriaAttribute(attributes, 'aria-disabled') === 'true') {
113
+ enabled = false;
114
+ }
115
+ }
116
+ // === Checked (checkboxes, radios, switches) ===
117
+ const axChecked = getAxProperty(properties, 'checked');
118
+ const checked = parseCheckedState(axChecked);
119
+ // === Expanded (accordions, dropdowns) ===
120
+ const axExpanded = getAxProperty(properties, 'expanded');
121
+ const expanded = parseBooleanState(axExpanded);
122
+ // === Selected (tabs, options) ===
123
+ const axSelected = getAxProperty(properties, 'selected');
124
+ const selected = parseBooleanState(axSelected);
125
+ // === Focused ===
126
+ const axFocused = getAxProperty(properties, 'focused');
127
+ const focused = parseBooleanState(axFocused);
128
+ // === Required ===
129
+ // Check DOM required attribute or aria-required
130
+ let required;
131
+ if (hasBooleanAttribute(attributes, 'required')) {
132
+ required = true;
133
+ }
134
+ else if (getAriaAttribute(attributes, 'aria-required') === 'true') {
135
+ required = true;
136
+ }
137
+ // === Invalid ===
138
+ // Check AX invalid or aria-invalid
139
+ const axInvalid = getAxProperty(properties, 'invalid');
140
+ let invalid;
141
+ if (axInvalid !== undefined) {
142
+ // AX invalid can be 'true', 'false', 'grammar', 'spelling'
143
+ invalid =
144
+ axInvalid === true ||
145
+ axInvalid === 'true' ||
146
+ (typeof axInvalid === 'string' && axInvalid !== 'false');
147
+ }
148
+ else if (getAriaAttribute(attributes, 'aria-invalid') === 'true') {
149
+ invalid = true;
150
+ }
151
+ // === Readonly ===
152
+ // Check DOM readonly attribute or aria-readonly
153
+ let readonly;
154
+ if (hasBooleanAttribute(attributes, 'readonly')) {
155
+ readonly = true;
156
+ }
157
+ else if (getAriaAttribute(attributes, 'aria-readonly') === 'true') {
158
+ readonly = true;
159
+ }
160
+ // Build state object, omitting undefined values
161
+ const state = {
162
+ visible,
163
+ enabled,
164
+ };
165
+ if (checked !== undefined)
166
+ state.checked = checked;
167
+ if (expanded !== undefined)
168
+ state.expanded = expanded;
169
+ if (selected !== undefined)
170
+ state.selected = selected;
171
+ if (focused !== undefined)
172
+ state.focused = focused;
173
+ if (required !== undefined)
174
+ state.required = required;
175
+ if (invalid !== undefined)
176
+ state.invalid = invalid;
177
+ if (readonly !== undefined)
178
+ state.readonly = readonly;
179
+ return state;
180
+ }
181
+ //# sourceMappingURL=state-extractor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state-extractor.js","sourceRoot":"","sources":["../../../../src/snapshot/extractors/state-extractor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,213 @@
1
+ /**
2
+ * Extractor Types
3
+ *
4
+ * Shared types for all extractors to ensure consistent data flow.
5
+ * These types represent the raw CDP data structures and intermediate
6
+ * representations used during snapshot compilation.
7
+ *
8
+ * @module snapshot/extractors/types
9
+ *
10
+ * CDP Domains:
11
+ * - DOM: getDocument, describeNode, requestChildNodes
12
+ * - Accessibility: getFullAXTree
13
+ * - CSS: getComputedStyleForNode
14
+ */
15
+ import type { CdpClient } from '../../cdp/cdp-client.interface.js';
16
+ import type { BBox, Viewport, ScreenZone, SnapshotOptions } from '../snapshot.types.js';
17
+ /**
18
+ * Raw DOM node data from CDP DOM.getDocument / DOM.describeNode
19
+ */
20
+ export interface RawDomNode {
21
+ /** CDP node ID (ephemeral, changes between calls) */
22
+ nodeId: number;
23
+ /** Backend node ID (stable within session) */
24
+ backendNodeId: number;
25
+ /** Node name (uppercase tag or #text, #comment, etc.) */
26
+ nodeName: string;
27
+ /** DOM node type (1=Element, 3=Text, etc.) */
28
+ nodeType: number;
29
+ /** Node attributes as key-value pairs */
30
+ attributes?: Record<string, string>;
31
+ /** Child node IDs (backendNodeIds) */
32
+ childNodeIds?: number[];
33
+ /** Shadow root type if this node hosts a shadow root */
34
+ shadowRootType?: 'open' | 'closed';
35
+ /** Frame ID if this node is an iframe content document */
36
+ frameId?: string;
37
+ /** Loader ID from the frame at extraction time.
38
+ * Changes on frame navigation. Used for delta computation. */
39
+ loaderId?: string;
40
+ /** Parent node's backendNodeId */
41
+ parentId?: number;
42
+ /** Text content for text nodes */
43
+ nodeValue?: string;
44
+ /**
45
+ * Frame path - backendNodeIds of iframe ancestors (outermost first).
46
+ * Used to scope selectors to the correct frame context.
47
+ */
48
+ framePath?: number[];
49
+ /**
50
+ * Shadow path - backendNodeIds of shadow host ancestors (outermost first).
51
+ * Used to pierce shadow boundaries when finding elements.
52
+ */
53
+ shadowPath?: number[];
54
+ }
55
+ /**
56
+ * AX property value structure from CDP
57
+ */
58
+ export interface AxPropertyValue {
59
+ type: string;
60
+ value?: unknown;
61
+ }
62
+ /**
63
+ * AX property structure from CDP
64
+ */
65
+ export interface AxProperty {
66
+ name: string;
67
+ value: AxPropertyValue;
68
+ }
69
+ /**
70
+ * Raw accessibility node data from CDP Accessibility.getFullAXTree
71
+ */
72
+ export interface RawAxNode {
73
+ /** AX tree node ID */
74
+ nodeId: string;
75
+ /** Corresponding DOM backend node ID (for correlation) */
76
+ backendDOMNodeId?: number;
77
+ /** ARIA role (button, link, textbox, etc.) */
78
+ role?: string;
79
+ /** Computed accessible name */
80
+ name?: string;
81
+ /** AX properties (focusable, checked, expanded, etc.) */
82
+ properties?: AxProperty[];
83
+ /** Whether this node is ignored in the AX tree */
84
+ ignored?: boolean;
85
+ /** Child AX node IDs */
86
+ childIds?: string[];
87
+ }
88
+ /**
89
+ * Layout and positioning information for a node
90
+ */
91
+ export interface NodeLayoutInfo {
92
+ /** Bounding box in viewport coordinates */
93
+ bbox: BBox;
94
+ /** CSS display value */
95
+ display?: string;
96
+ /** CSS visibility value */
97
+ visibility?: string;
98
+ /** Whether the element is visible (computed from display, visibility, size) */
99
+ isVisible: boolean;
100
+ /** Coarse screen position (above/below fold, quadrant) */
101
+ screenZone?: ScreenZone;
102
+ /** CSS z-index value (used for overlay detection) */
103
+ zIndex?: number;
104
+ }
105
+ /**
106
+ * Combined raw data for a single node from all extraction phases
107
+ */
108
+ export interface RawNodeData {
109
+ /** Raw DOM node data */
110
+ domNode?: RawDomNode;
111
+ /** Raw AX node data */
112
+ axNode?: RawAxNode;
113
+ /** Layout information */
114
+ layout?: NodeLayoutInfo;
115
+ /** Backend node ID (primary key for correlation) */
116
+ backendNodeId: number;
117
+ }
118
+ /**
119
+ * Context passed to all extractors for accessing CDP and configuration
120
+ */
121
+ export interface ExtractorContext {
122
+ /** CDP client for making protocol calls */
123
+ cdp: CdpClient;
124
+ /** Viewport dimensions */
125
+ viewport: Viewport;
126
+ /** Snapshot options */
127
+ options: Partial<SnapshotOptions>;
128
+ }
129
+ /**
130
+ * Create an extractor context.
131
+ *
132
+ * @param cdp - CDP client instance
133
+ * @param viewport - Viewport dimensions
134
+ * @param options - Snapshot capture options
135
+ * @returns ExtractorContext
136
+ */
137
+ export declare function createExtractorContext(cdp: CdpClient, viewport: Viewport, options?: Partial<SnapshotOptions>): ExtractorContext;
138
+ /**
139
+ * Result from DOM extractor
140
+ */
141
+ export interface DomExtractionResult {
142
+ /** Map of backendNodeId -> RawDomNode */
143
+ nodes: Map<number, RawDomNode>;
144
+ /** Root document backendNodeId */
145
+ rootId: number;
146
+ /** Frame IDs found during extraction */
147
+ frameIds: string[];
148
+ /** BackendNodeIds of shadow roots */
149
+ shadowRoots: number[];
150
+ }
151
+ /**
152
+ * Result from AX extractor
153
+ */
154
+ export interface AxExtractionResult {
155
+ /** Map of backendDOMNodeId -> RawAxNode */
156
+ nodes: Map<number, RawAxNode>;
157
+ /** BackendDOMNodeIds of interactive elements */
158
+ interactiveIds: Set<number>;
159
+ /** BackendDOMNodeIds of readable content elements */
160
+ readableIds: Set<number>;
161
+ }
162
+ /**
163
+ * Result from layout extractor
164
+ */
165
+ export interface LayoutExtractionResult {
166
+ /** Map of backendNodeId -> NodeLayoutInfo */
167
+ layouts: Map<number, NodeLayoutInfo>;
168
+ }
169
+ /**
170
+ * Validate that an object is a valid RawDomNode.
171
+ *
172
+ * @param node - Object to validate
173
+ * @returns true if valid RawDomNode
174
+ */
175
+ export declare function isValidRawDomNode(node: RawDomNode): boolean;
176
+ /**
177
+ * Validate that an object is a valid RawAxNode.
178
+ *
179
+ * @param node - Object to validate
180
+ * @returns true if valid RawAxNode
181
+ */
182
+ export declare function isValidRawAxNode(node: RawAxNode): boolean;
183
+ /**
184
+ * Validate that an object is a valid NodeLayoutInfo.
185
+ *
186
+ * @param layout - Object to validate
187
+ * @returns true if valid NodeLayoutInfo
188
+ */
189
+ export declare function isValidNodeLayoutInfo(layout: NodeLayoutInfo): boolean;
190
+ /**
191
+ * DOM node types (subset relevant to extraction)
192
+ */
193
+ export declare const DOM_NODE_TYPES: {
194
+ readonly ELEMENT_NODE: 1;
195
+ readonly TEXT_NODE: 3;
196
+ readonly COMMENT_NODE: 8;
197
+ readonly DOCUMENT_NODE: 9;
198
+ readonly DOCUMENT_TYPE_NODE: 10;
199
+ readonly DOCUMENT_FRAGMENT_NODE: 11;
200
+ };
201
+ /**
202
+ * AX roles that indicate interactive elements
203
+ */
204
+ export declare const INTERACTIVE_AX_ROLES: Set<string>;
205
+ /**
206
+ * AX roles that indicate readable content
207
+ */
208
+ export declare const READABLE_AX_ROLES: Set<string>;
209
+ /**
210
+ * AX roles that indicate structural/landmark elements
211
+ */
212
+ export declare const STRUCTURAL_AX_ROLES: Set<string>;
213
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/snapshot/extractors/types.ts"],"names":[],"mappings":"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"}