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,173 @@
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
+ // Interactive element kinds
8
+ const INTERACTIVE_KINDS = [
9
+ 'link',
10
+ 'button',
11
+ 'input',
12
+ 'textarea',
13
+ 'select',
14
+ 'combobox',
15
+ 'checkbox',
16
+ 'radio',
17
+ 'switch',
18
+ 'slider',
19
+ 'tab',
20
+ 'menuitem',
21
+ ];
22
+ /**
23
+ * Check if node kind is interactive.
24
+ */
25
+ export function isInteractiveKind(kind) {
26
+ return INTERACTIVE_KINDS.includes(kind);
27
+ }
28
+ // ============================================================================
29
+ // Actionables Selection
30
+ // ============================================================================
31
+ /**
32
+ * Select actionable elements from snapshot.
33
+ *
34
+ * Filtering rules:
35
+ * 1. Only interactive elements
36
+ * 2. Only visible elements
37
+ * 3. Only from active layer
38
+ * 4. Score by relevance
39
+ * 5. Cap at maxCount
40
+ *
41
+ * @param snapshot - Compiled snapshot
42
+ * @param activeLayer - Active layer name
43
+ * @param maxCount - Maximum number of actionables to return
44
+ * @param context - Scoring context (optional)
45
+ * @returns Selected nodes sorted by relevance
46
+ */
47
+ export function selectActionables(snapshot, activeLayer, maxCount, context) {
48
+ // Filter to candidates
49
+ const candidates = snapshot.nodes.filter((node) => {
50
+ // Must be interactive
51
+ if (!isInteractiveKind(node.kind)) {
52
+ return false;
53
+ }
54
+ // Must be visible
55
+ if (!node.state?.visible) {
56
+ return false;
57
+ }
58
+ // Must be in active layer
59
+ const nodeLayer = getNodeLayer(node);
60
+ if (nodeLayer !== activeLayer) {
61
+ return false;
62
+ }
63
+ return true;
64
+ });
65
+ // Score each candidate
66
+ const scored = candidates.map((node) => ({
67
+ node,
68
+ score: scoreActionable(node, context),
69
+ }));
70
+ // Sort by score (highest first)
71
+ scored.sort((a, b) => b.score - a.score);
72
+ // Cap at maxCount
73
+ return scored.slice(0, maxCount).map((s) => s.node);
74
+ }
75
+ // ============================================================================
76
+ // Scoring Algorithm
77
+ // ============================================================================
78
+ /**
79
+ * Score an actionable element by relevance.
80
+ *
81
+ * Scoring factors:
82
+ * - Enabled state (+0.2)
83
+ * - Role importance (button/input: +0.3, link: +0.25, etc.)
84
+ * - Semantic region (main: +0.15, dialog: +0.2)
85
+ * - Screen position (above-fold: +0.1)
86
+ * - Has label (+0.15)
87
+ * - Primary CTA (+0.3)
88
+ * - Currently focused (+0.2)
89
+ *
90
+ * @param node - Node to score
91
+ * @param context - Scoring context
92
+ * @returns Score from 0-1
93
+ */
94
+ export function scoreActionable(node, context) {
95
+ let score = 0.5; // Base score
96
+ // Visibility required (already filtered, but double-check)
97
+ if (!node.state?.visible) {
98
+ return 0;
99
+ }
100
+ // Enabled state
101
+ if (node.state?.enabled) {
102
+ score += 0.2;
103
+ }
104
+ // Role importance
105
+ const roleWeight = {
106
+ button: 0.3,
107
+ link: 0.25,
108
+ input: 0.3,
109
+ textarea: 0.25,
110
+ select: 0.25,
111
+ checkbox: 0.2,
112
+ radio: 0.2,
113
+ switch: 0.2,
114
+ combobox: 0.25,
115
+ slider: 0.15,
116
+ tab: 0.2,
117
+ menuitem: 0.2,
118
+ };
119
+ score += roleWeight[node.kind] ?? 0.1;
120
+ // Semantic region (main/dialog favored)
121
+ const region = node.where.region ?? 'unknown';
122
+ if (region === 'main') {
123
+ score += 0.15;
124
+ }
125
+ else if (region === 'dialog') {
126
+ score += 0.2;
127
+ }
128
+ // Above fold (from layout.screen_zone)
129
+ if (node.layout.screen_zone?.includes('above-fold')) {
130
+ score += 0.1;
131
+ }
132
+ // Has label (actionable without label is suspect)
133
+ if (node.label.trim().length > 0) {
134
+ score += 0.15;
135
+ }
136
+ // Primary CTA (from FactPack if available)
137
+ if (context?.primaryCTA?.node_id === node.node_id) {
138
+ score += 0.3;
139
+ }
140
+ // Currently focused
141
+ if (node.state?.focused) {
142
+ score += 0.2;
143
+ }
144
+ // Cap at 1.0
145
+ return Math.min(score, 1.0);
146
+ }
147
+ // ============================================================================
148
+ // Layer Determination
149
+ // ============================================================================
150
+ /**
151
+ * Determine which layer a node belongs to.
152
+ * Simplified: use region as proxy.
153
+ *
154
+ * Modal elements are in 'dialog' region.
155
+ * Everything else is in 'main'.
156
+ *
157
+ * TODO: Make this more sophisticated by checking node ancestry
158
+ * and matching against detected layer root EIDs.
159
+ *
160
+ * @param node - Node to check
161
+ * @returns Layer name
162
+ */
163
+ function getNodeLayer(node) {
164
+ const region = node.where.region ?? 'unknown';
165
+ // Dialog region maps to modal layer
166
+ if (region === 'dialog') {
167
+ return 'modal';
168
+ }
169
+ // Everything else maps to main layer
170
+ // TODO: Add drawer and popover detection based on ancestry
171
+ return 'main';
172
+ }
173
+ //# sourceMappingURL=actionables-filter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"actionables-filter.js","sourceRoot":"","sources":["../../../src/state/actionables-filter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Atoms Extractor
3
+ *
4
+ * Extract universal UI state atoms from snapshot.
5
+ * Domain-agnostic - works on any website.
6
+ */
7
+ import type { BaseSnapshot } from '../snapshot/snapshot.types.js';
8
+ import type { Atoms } from './types.js';
9
+ /**
10
+ * Extract universal UI state atoms from snapshot.
11
+ *
12
+ * Includes:
13
+ * - Viewport dimensions (always)
14
+ * - Scroll position (always)
15
+ * - Loading indicators (optional)
16
+ * - Form state (optional)
17
+ * - Notifications (optional)
18
+ *
19
+ * @param snapshot - Compiled snapshot
20
+ * @returns Atoms object
21
+ */
22
+ export declare function extractAtoms(snapshot: BaseSnapshot): Atoms;
23
+ //# sourceMappingURL=atoms-extractor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"atoms-extractor.d.ts","sourceRoot":"","sources":["../../../src/state/atoms-extractor.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAY,MAAM,+BAA+B,CAAC;AAC5E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AA8BxC;;;;;;;;;;;;GAYG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,YAAY,GAAG,KAAK,CAgC1D"}
@@ -0,0 +1,160 @@
1
+ /**
2
+ * Atoms Extractor
3
+ *
4
+ * Extract universal UI state atoms from snapshot.
5
+ * Domain-agnostic - works on any website.
6
+ */
7
+ import { computeEid } from './element-identity.js';
8
+ // Interactive element kinds (for filtering)
9
+ const INTERACTIVE_KINDS = [
10
+ 'link',
11
+ 'button',
12
+ 'input',
13
+ 'textarea',
14
+ 'select',
15
+ 'combobox',
16
+ 'checkbox',
17
+ 'radio',
18
+ 'switch',
19
+ 'slider',
20
+ 'tab',
21
+ 'menuitem',
22
+ ];
23
+ /**
24
+ * Check if node kind is interactive.
25
+ */
26
+ function isInteractiveKind(kind) {
27
+ return INTERACTIVE_KINDS.includes(kind);
28
+ }
29
+ // ============================================================================
30
+ // Atoms Extraction
31
+ // ============================================================================
32
+ /**
33
+ * Extract universal UI state atoms from snapshot.
34
+ *
35
+ * Includes:
36
+ * - Viewport dimensions (always)
37
+ * - Scroll position (always)
38
+ * - Loading indicators (optional)
39
+ * - Form state (optional)
40
+ * - Notifications (optional)
41
+ *
42
+ * @param snapshot - Compiled snapshot
43
+ * @returns Atoms object
44
+ */
45
+ export function extractAtoms(snapshot) {
46
+ const atoms = {
47
+ viewport: {
48
+ w: snapshot.viewport.width,
49
+ h: snapshot.viewport.height,
50
+ dpr: 1.0, // TODO: get from CDP or page context
51
+ },
52
+ scroll: {
53
+ x: 0, // TODO: extract from page.evaluate(() => window.scrollX)
54
+ y: 0, // TODO: extract from page.evaluate(() => window.scrollY)
55
+ },
56
+ };
57
+ // Extract loading indicators
58
+ const loading = extractLoading(snapshot);
59
+ if (loading) {
60
+ atoms.loading = loading;
61
+ }
62
+ // Extract form state
63
+ const forms = extractForms(snapshot);
64
+ if (forms) {
65
+ atoms.forms = forms;
66
+ }
67
+ // Extract notifications
68
+ const notifications = extractNotifications(snapshot);
69
+ if (notifications) {
70
+ atoms.notifications = notifications;
71
+ }
72
+ return atoms;
73
+ }
74
+ // ============================================================================
75
+ // Loading Indicators
76
+ // ============================================================================
77
+ /**
78
+ * Extract loading indicators from snapshot.
79
+ *
80
+ * @param snapshot - Compiled snapshot
81
+ * @returns Loading state or undefined
82
+ */
83
+ function extractLoading(snapshot) {
84
+ // Count spinner elements
85
+ const spinners = snapshot.nodes.filter((n) => {
86
+ if (n.attributes?.role === 'progressbar')
87
+ return true;
88
+ // Safely check aria-busy using index access
89
+ const attrs = n.attributes;
90
+ return attrs?.['aria-busy'] === 'true';
91
+ }).length;
92
+ if (spinners > 0) {
93
+ return {
94
+ network_busy: false, // TODO: track from CDP Network domain
95
+ spinners,
96
+ progress: undefined, // TODO: extract from progressbar value
97
+ };
98
+ }
99
+ return undefined;
100
+ }
101
+ // ============================================================================
102
+ // Form State
103
+ // ============================================================================
104
+ /**
105
+ * Extract form state from snapshot.
106
+ *
107
+ * @param snapshot - Compiled snapshot
108
+ * @returns Form state or undefined
109
+ */
110
+ function extractForms(snapshot) {
111
+ // Check if any forms exist
112
+ const hasForms = snapshot.nodes.some((n) => n.kind === 'form');
113
+ if (!hasForms) {
114
+ return undefined;
115
+ }
116
+ // Find focused input
117
+ const focusedInput = snapshot.nodes.find((n) => isInteractiveKind(n.kind) && n.state?.focused);
118
+ // Count validation errors
119
+ const validationErrors = snapshot.nodes.filter((n) => isInteractiveKind(n.kind) && n.state?.invalid).length;
120
+ // Only return forms object if there's meaningful state
121
+ if (focusedInput || validationErrors > 0) {
122
+ return {
123
+ dirty: false, // TODO: track value changes across snapshots
124
+ focused_field: focusedInput ? computeEid(focusedInput) : undefined,
125
+ validation_errors: validationErrors,
126
+ };
127
+ }
128
+ return undefined;
129
+ }
130
+ // ============================================================================
131
+ // Notifications
132
+ // ============================================================================
133
+ /**
134
+ * Maximum notifications to report (prevent bloat).
135
+ */
136
+ const MAX_TOASTS = 5;
137
+ const MAX_BANNERS = 3;
138
+ /**
139
+ * Extract notifications from snapshot.
140
+ * Capped to prevent response bloat.
141
+ *
142
+ * @param snapshot - Compiled snapshot
143
+ * @returns Notifications state or undefined
144
+ */
145
+ function extractNotifications(snapshot) {
146
+ // Count toasts (alerts, status messages) - capped
147
+ const toastNodes = snapshot.nodes.filter((n) => n.attributes?.role === 'alert' || n.attributes?.role === 'status');
148
+ const toasts = Math.min(toastNodes.length, MAX_TOASTS);
149
+ // Count banners (non-header banners) - capped
150
+ const bannerNodes = snapshot.nodes.filter((n) => n.attributes?.role === 'banner' && n.where.region !== 'header');
151
+ const banners = Math.min(bannerNodes.length, MAX_BANNERS);
152
+ if (toasts > 0 || banners > 0) {
153
+ return {
154
+ toasts,
155
+ banners,
156
+ };
157
+ }
158
+ return undefined;
159
+ }
160
+ //# sourceMappingURL=atoms-extractor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"atoms-extractor.js","sourceRoot":"","sources":["../../../src/state/atoms-extractor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,125 @@
1
+ /**
2
+ * State System Constants
3
+ *
4
+ * Centralized configuration for magic numbers used across the state system.
5
+ * Each constant includes rationale for its value.
6
+ */
7
+ /**
8
+ * Viewport thresholds for quadrant computation.
9
+ * Used to compute coarse position hints for element disambiguation.
10
+ */
11
+ export declare const VIEWPORT: {
12
+ /**
13
+ * Horizontal midpoint for quadrant detection.
14
+ * Assumes common viewport width ~1000px (iPad, small desktop).
15
+ * Elements left of this are 'L', right are 'R'.
16
+ */
17
+ readonly MIDPOINT_X: 500;
18
+ /**
19
+ * Vertical midpoint for quadrant detection.
20
+ * Assumes common viewport height ~800px or fold line at 50%.
21
+ * Elements above this are 'T', below are 'B'.
22
+ */
23
+ readonly MIDPOINT_Y: 400;
24
+ };
25
+ /**
26
+ * Accessible name normalization limits.
27
+ */
28
+ export declare const ACCESSIBLE_NAME: {
29
+ /**
30
+ * Maximum length for normalized accessible names.
31
+ * Truncated to prevent excessively long EID inputs.
32
+ */
33
+ readonly MAX_LENGTH: 100;
34
+ };
35
+ /**
36
+ * Layer detection confidence thresholds.
37
+ */
38
+ export declare const LAYER_CONFIDENCE: {
39
+ /**
40
+ * Minimum confidence score to include layer in stack.
41
+ * Candidates below this are filtered out.
42
+ * Value chosen empirically: modal detection is high confidence (0.95+),
43
+ * while class-based detection is lower (0.65-0.75).
44
+ * 0.6 threshold excludes weak class matches while keeping strong patterns.
45
+ */
46
+ readonly MIN_THRESHOLD: 0.6;
47
+ };
48
+ /**
49
+ * Z-index thresholds for layer type detection.
50
+ * Modern UI libraries typically use z-index ranges:
51
+ * - Base content: 0-50
52
+ * - Fixed headers/footers: 50-100
53
+ * - Drawers/sidebars: 100-500
54
+ * - Modals: 500-1000+
55
+ * - Tooltips/popovers: 100-500
56
+ */
57
+ export declare const Z_INDEX: {
58
+ /**
59
+ * Z-index threshold for high-confidence modal detection.
60
+ * Dialogs with z-index > 1000 are almost certainly modals.
61
+ */
62
+ readonly MODAL_HIGH: 1000;
63
+ /**
64
+ * Minimum z-index for portal container detection.
65
+ * React/Vue portals typically render at z-index >= 100.
66
+ */
67
+ readonly PORTAL_MIN: 100;
68
+ /**
69
+ * Z-index threshold for portal area coverage check.
70
+ * Large elements at this z-index likely cover significant viewport.
71
+ */
72
+ readonly PORTAL_HIGH: 500;
73
+ /**
74
+ * Minimum z-index for drawer overlay detection.
75
+ * Below this, element is likely inline nav, not overlay drawer.
76
+ */
77
+ readonly DRAWER_MIN: 50;
78
+ /**
79
+ * Z-index threshold for confident drawer detection.
80
+ * Drawers with z-index > 100 are likely overlay panels.
81
+ */
82
+ readonly DRAWER_HIGH: 100;
83
+ /**
84
+ * Minimum z-index for popover detection.
85
+ * Standard popovers (menus, tooltips) render above this.
86
+ */
87
+ readonly POPOVER_MIN: 100;
88
+ };
89
+ /**
90
+ * Size thresholds for element detection.
91
+ */
92
+ export declare const ELEMENT_SIZE: {
93
+ /**
94
+ * Minimum width for portal container detection.
95
+ * Portals typically have meaningful content size.
96
+ */
97
+ readonly PORTAL_MIN_WIDTH: 200;
98
+ /**
99
+ * Minimum height for portal container detection.
100
+ */
101
+ readonly PORTAL_MIN_HEIGHT: 200;
102
+ };
103
+ /**
104
+ * Edge position detection thresholds.
105
+ * Used to identify drawers positioned at viewport edges.
106
+ */
107
+ export declare const EDGE_DETECTION: {
108
+ /**
109
+ * Maximum x-coordinate for left edge detection.
110
+ * Elements with x < 10 are considered left-edge positioned.
111
+ */
112
+ readonly LEFT_MAX_X: 10;
113
+ /**
114
+ * Minimum right edge position.
115
+ * rightEdge (x + width) must exceed this to be right-edge positioned.
116
+ * Assumes typical viewport width ~1366px (common laptop).
117
+ */
118
+ readonly RIGHT_MIN: 1200;
119
+ /**
120
+ * Minimum x-coordinate for right edge detection.
121
+ * Prevents false positives from wide centered elements.
122
+ */
123
+ readonly RIGHT_MIN_X: 800;
124
+ };
125
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/state/constants.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH;;;GAGG;AACH,eAAO,MAAM,QAAQ;IACnB;;;;OAIG;;IAGH;;;;OAIG;;CAEK,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,eAAe;IAC1B;;;OAGG;;CAEK,CAAC;AAMX;;GAEG;AACH,eAAO,MAAM,gBAAgB;IAC3B;;;;;;OAMG;;CAEK,CAAC;AAEX;;;;;;;;GAQG;AACH,eAAO,MAAM,OAAO;IAClB;;;OAGG;;IAGH;;;OAGG;;IAGH;;;OAGG;;IAGH;;;OAGG;;IAGH;;;OAGG;;IAGH;;;OAGG;;CAEK,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,YAAY;IACvB;;;OAGG;;IAGH;;OAEG;;CAEK,CAAC;AAEX;;;GAGG;AACH,eAAO,MAAM,cAAc;IACzB;;;OAGG;;IAGH;;;;OAIG;;IAGH;;;OAGG;;CAEK,CAAC"}
@@ -0,0 +1,131 @@
1
+ /**
2
+ * State System Constants
3
+ *
4
+ * Centralized configuration for magic numbers used across the state system.
5
+ * Each constant includes rationale for its value.
6
+ */
7
+ // ============================================================================
8
+ // Element Identity Constants (element-identity.ts)
9
+ // ============================================================================
10
+ /**
11
+ * Viewport thresholds for quadrant computation.
12
+ * Used to compute coarse position hints for element disambiguation.
13
+ */
14
+ export const VIEWPORT = {
15
+ /**
16
+ * Horizontal midpoint for quadrant detection.
17
+ * Assumes common viewport width ~1000px (iPad, small desktop).
18
+ * Elements left of this are 'L', right are 'R'.
19
+ */
20
+ MIDPOINT_X: 500,
21
+ /**
22
+ * Vertical midpoint for quadrant detection.
23
+ * Assumes common viewport height ~800px or fold line at 50%.
24
+ * Elements above this are 'T', below are 'B'.
25
+ */
26
+ MIDPOINT_Y: 400,
27
+ };
28
+ /**
29
+ * Accessible name normalization limits.
30
+ */
31
+ export const ACCESSIBLE_NAME = {
32
+ /**
33
+ * Maximum length for normalized accessible names.
34
+ * Truncated to prevent excessively long EID inputs.
35
+ */
36
+ MAX_LENGTH: 100,
37
+ };
38
+ // ============================================================================
39
+ // Layer Detection Constants (layer-detector.ts)
40
+ // ============================================================================
41
+ /**
42
+ * Layer detection confidence thresholds.
43
+ */
44
+ export const LAYER_CONFIDENCE = {
45
+ /**
46
+ * Minimum confidence score to include layer in stack.
47
+ * Candidates below this are filtered out.
48
+ * Value chosen empirically: modal detection is high confidence (0.95+),
49
+ * while class-based detection is lower (0.65-0.75).
50
+ * 0.6 threshold excludes weak class matches while keeping strong patterns.
51
+ */
52
+ MIN_THRESHOLD: 0.6,
53
+ };
54
+ /**
55
+ * Z-index thresholds for layer type detection.
56
+ * Modern UI libraries typically use z-index ranges:
57
+ * - Base content: 0-50
58
+ * - Fixed headers/footers: 50-100
59
+ * - Drawers/sidebars: 100-500
60
+ * - Modals: 500-1000+
61
+ * - Tooltips/popovers: 100-500
62
+ */
63
+ export const Z_INDEX = {
64
+ /**
65
+ * Z-index threshold for high-confidence modal detection.
66
+ * Dialogs with z-index > 1000 are almost certainly modals.
67
+ */
68
+ MODAL_HIGH: 1000,
69
+ /**
70
+ * Minimum z-index for portal container detection.
71
+ * React/Vue portals typically render at z-index >= 100.
72
+ */
73
+ PORTAL_MIN: 100,
74
+ /**
75
+ * Z-index threshold for portal area coverage check.
76
+ * Large elements at this z-index likely cover significant viewport.
77
+ */
78
+ PORTAL_HIGH: 500,
79
+ /**
80
+ * Minimum z-index for drawer overlay detection.
81
+ * Below this, element is likely inline nav, not overlay drawer.
82
+ */
83
+ DRAWER_MIN: 50,
84
+ /**
85
+ * Z-index threshold for confident drawer detection.
86
+ * Drawers with z-index > 100 are likely overlay panels.
87
+ */
88
+ DRAWER_HIGH: 100,
89
+ /**
90
+ * Minimum z-index for popover detection.
91
+ * Standard popovers (menus, tooltips) render above this.
92
+ */
93
+ POPOVER_MIN: 100,
94
+ };
95
+ /**
96
+ * Size thresholds for element detection.
97
+ */
98
+ export const ELEMENT_SIZE = {
99
+ /**
100
+ * Minimum width for portal container detection.
101
+ * Portals typically have meaningful content size.
102
+ */
103
+ PORTAL_MIN_WIDTH: 200,
104
+ /**
105
+ * Minimum height for portal container detection.
106
+ */
107
+ PORTAL_MIN_HEIGHT: 200,
108
+ };
109
+ /**
110
+ * Edge position detection thresholds.
111
+ * Used to identify drawers positioned at viewport edges.
112
+ */
113
+ export const EDGE_DETECTION = {
114
+ /**
115
+ * Maximum x-coordinate for left edge detection.
116
+ * Elements with x < 10 are considered left-edge positioned.
117
+ */
118
+ LEFT_MAX_X: 10,
119
+ /**
120
+ * Minimum right edge position.
121
+ * rightEdge (x + width) must exceed this to be right-edge positioned.
122
+ * Assumes typical viewport width ~1366px (common laptop).
123
+ */
124
+ RIGHT_MIN: 1200,
125
+ /**
126
+ * Minimum x-coordinate for right edge detection.
127
+ * Prevents false positives from wide centered elements.
128
+ */
129
+ RIGHT_MIN_X: 800,
130
+ };
131
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/state/constants.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,+EAA+E;AAC/E,mDAAmD;AACnD,+EAA+E;AAE/E;;;GAGG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB;;;;OAIG;IACH,UAAU,EAAE,GAAG;IAEf;;;;OAIG;IACH,UAAU,EAAE,GAAG;CACP,CAAC;AAEX;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B;;;OAGG;IACH,UAAU,EAAE,GAAG;CACP,CAAC;AAEX,+EAA+E;AAC/E,gDAAgD;AAChD,+EAA+E;AAE/E;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B;;;;;;OAMG;IACH,aAAa,EAAE,GAAG;CACV,CAAC;AAEX;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG;IACrB;;;OAGG;IACH,UAAU,EAAE,IAAI;IAEhB;;;OAGG;IACH,UAAU,EAAE,GAAG;IAEf;;;OAGG;IACH,WAAW,EAAE,GAAG;IAEhB;;;OAGG;IACH,UAAU,EAAE,EAAE;IAEd;;;OAGG;IACH,WAAW,EAAE,GAAG;IAEhB;;;OAGG;IACH,WAAW,EAAE,GAAG;CACR,CAAC;AAEX;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B;;;OAGG;IACH,gBAAgB,EAAE,GAAG;IAErB;;OAEG;IACH,iBAAiB,EAAE,GAAG;CACd,CAAC;AAEX;;;GAGG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B;;;OAGG;IACH,UAAU,EAAE,EAAE;IAEd;;;;OAIG;IACH,SAAS,EAAE,IAAI;IAEf;;;OAGG;IACH,WAAW,EAAE,GAAG;CACR,CAAC"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Diff Engine
3
+ *
4
+ * Compute incremental changes between snapshots.
5
+ * Returns added/removed/changed actionables and atoms.
6
+ */
7
+ import type { BaseSnapshot } from '../snapshot/snapshot.types.js';
8
+ import type { DiffResponse } from './types.js';
9
+ /**
10
+ * Compute diff between previous and current snapshots.
11
+ *
12
+ * Includes:
13
+ * - Document changes (URL, title, navigation type)
14
+ * - Layer changes (stack changes)
15
+ * - Actionables changes (added, removed, changed)
16
+ * - Atoms changes (viewport, scroll, loading, forms, notifications)
17
+ *
18
+ * @param prev - Previous snapshot
19
+ * @param curr - Current snapshot
20
+ * @returns Diff response
21
+ */
22
+ export declare function computeDiff(prev: BaseSnapshot, curr: BaseSnapshot): DiffResponse;
23
+ //# sourceMappingURL=diff-engine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diff-engine.d.ts","sourceRoot":"","sources":["../../../src/state/diff-engine.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAgB,MAAM,+BAA+B,CAAC;AAChF,OAAO,KAAK,EACV,YAAY,EAMb,MAAM,YAAY,CAAC;AAUpB;;;;;;;;;;;;GAYG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,YAAY,GAAG,YAAY,CA+ChF"}