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,273 @@
1
+ /**
2
+ * Puppeteer CDP Client
3
+ *
4
+ * CdpClient implementation wrapping Puppeteer's CDPSession.
5
+ * Provides a consistent interface for CDP communication regardless
6
+ * of the underlying browser automation framework.
7
+ */
8
+ import { getLogger } from '../shared/services/logging.service.js';
9
+ /**
10
+ * CdpClient implementation wrapping Puppeteer's CDPSession.
11
+ *
12
+ * @example
13
+ * ```typescript
14
+ * import puppeteer from 'puppeteer-core';
15
+ *
16
+ * const browser = await puppeteer.launch({ channel: 'chrome' });
17
+ * const [page] = await browser.pages();
18
+ *
19
+ * // Create CDP session from Puppeteer page
20
+ * const cdpSession = await page.createCDPSession();
21
+ * const cdp = new PuppeteerCdpClient(cdpSession);
22
+ *
23
+ * // Use CDP commands
24
+ * const doc = await cdp.send('DOM.getDocument', { depth: -1 });
25
+ * ```
26
+ */
27
+ export class PuppeteerCdpClient {
28
+ session;
29
+ /** Default CDP domains that don't have .enable() methods */
30
+ static DEFAULT_DOMAINS_WITHOUT_ENABLE = new Set([
31
+ 'Browser',
32
+ 'Target',
33
+ 'SystemInfo',
34
+ 'Input',
35
+ 'IO',
36
+ 'DeviceAccess',
37
+ 'Tethering',
38
+ 'HeapProfiler',
39
+ 'Schema',
40
+ ]);
41
+ active = true;
42
+ logger = getLogger();
43
+ timeout;
44
+ enabledDomains = new Set();
45
+ eventHandlers = new Map();
46
+ domainsWithoutEnable;
47
+ /** Last error message from CDP operations */
48
+ lastError;
49
+ /** Timestamp of last error */
50
+ lastErrorTime;
51
+ constructor(session, options = {}) {
52
+ this.session = session;
53
+ this.timeout = options.timeout ?? 30000;
54
+ this.domainsWithoutEnable = options.domainsWithoutEnable
55
+ ? new Set(options.domainsWithoutEnable)
56
+ : PuppeteerCdpClient.DEFAULT_DOMAINS_WITHOUT_ENABLE;
57
+ // Note: CDPSession doesn't expose lifecycle events.
58
+ // State is tracked via close() and error handling in send().
59
+ }
60
+ /**
61
+ * Send a CDP command and wait for response.
62
+ * Automatically enables required domains if not already enabled.
63
+ */
64
+ async send(method, params) {
65
+ if (!this.active) {
66
+ throw new Error('CDP session is closed');
67
+ }
68
+ // Validate method format (must be Domain.method)
69
+ if (!method.includes('.')) {
70
+ throw new Error(`Invalid CDP method format: "${method}". Expected "Domain.method" format.`);
71
+ }
72
+ // Extract domain from method (e.g., 'DOM' from 'DOM.getDocument')
73
+ const domain = method.split('.')[0];
74
+ // Auto-enable domain if needed (except for *.enable and *.disable methods)
75
+ if (!this.enabledDomains.has(domain) &&
76
+ !method.endsWith('.enable') &&
77
+ !method.endsWith('.disable')) {
78
+ await this.enableDomain(domain);
79
+ }
80
+ let timeoutId;
81
+ try {
82
+ // Puppeteer's CDPSession.send() accepts method as string and params as object
83
+ const result = await Promise.race([
84
+ this.session.send(method, params),
85
+ new Promise((_, reject) => {
86
+ timeoutId = setTimeout(() => {
87
+ reject(new Error(`CDP command timed out after ${this.timeout}ms: ${method}`));
88
+ }, this.timeout);
89
+ }),
90
+ ]);
91
+ return result;
92
+ }
93
+ catch (error) {
94
+ // Detect session disconnection from error messages
95
+ const errorMessage = error instanceof Error ? error.message : String(error);
96
+ // Track error for health diagnostics
97
+ this.lastError = errorMessage;
98
+ this.lastErrorTime = new Date();
99
+ // Check if this is an expected failure BEFORE evaluating session state
100
+ // Expected failures (like cross-origin frame access) shouldn't affect session health
101
+ const isExpectedFailure = this.isExpectedCdpFailure(method, errorMessage);
102
+ if (isExpectedFailure) {
103
+ this.logger.debug(`CDP command expected failure: ${method} - ${errorMessage}`);
104
+ }
105
+ else {
106
+ // Check for session-level failures that indicate CDP is no longer usable
107
+ // Be specific to avoid false positives from operation-level Protocol errors
108
+ const isSessionDead = errorMessage.includes('Target closed') ||
109
+ errorMessage.includes('Session closed') ||
110
+ errorMessage.includes('Session detached') ||
111
+ errorMessage.includes('Target crashed') ||
112
+ // Specific protocol errors that indicate session death
113
+ (errorMessage.includes('Protocol error') &&
114
+ (errorMessage.includes('Cannot find context') ||
115
+ errorMessage.includes('Inspected target navigated') ||
116
+ errorMessage.includes('No target with given id')));
117
+ if (isSessionDead) {
118
+ this.active = false;
119
+ this.enabledDomains.clear();
120
+ }
121
+ this.logger.error(`CDP command failed: ${method}`, error instanceof Error ? error : undefined);
122
+ }
123
+ throw error;
124
+ }
125
+ finally {
126
+ // Clear timeout to prevent memory leak
127
+ if (timeoutId) {
128
+ clearTimeout(timeoutId);
129
+ }
130
+ }
131
+ }
132
+ /**
133
+ * Subscribe to CDP events.
134
+ */
135
+ on(event, handler) {
136
+ // Track handler for cleanup on close()
137
+ if (!this.eventHandlers.has(event)) {
138
+ this.eventHandlers.set(event, new Set());
139
+ }
140
+ this.eventHandlers.get(event).add(handler);
141
+ // Puppeteer CDPSession uses typed events, but we need to handle any event name
142
+ this.session.on(event, handler);
143
+ }
144
+ /**
145
+ * Unsubscribe from CDP events.
146
+ */
147
+ off(event, handler) {
148
+ // Remove from tracking and clean up empty Sets
149
+ const handlers = this.eventHandlers.get(event);
150
+ handlers?.delete(handler);
151
+ if (handlers?.size === 0) {
152
+ this.eventHandlers.delete(event);
153
+ }
154
+ this.session.off(event, handler);
155
+ }
156
+ /**
157
+ * Subscribe to a CDP event once (auto-unsubscribes after first fire).
158
+ */
159
+ once(event, handler) {
160
+ const wrappedHandler = (params) => {
161
+ this.off(event, wrappedHandler);
162
+ handler(params);
163
+ };
164
+ this.on(event, wrappedHandler);
165
+ }
166
+ /**
167
+ * Close/detach the CDP session.
168
+ */
169
+ async close() {
170
+ if (this.active) {
171
+ try {
172
+ // Remove all tracked event handlers first
173
+ this.removeAllEventHandlers();
174
+ await this.session.detach();
175
+ }
176
+ catch (error) {
177
+ // Session may already be detached
178
+ this.logger.debug('Error detaching CDP session (may already be detached)', {
179
+ error: error instanceof Error ? error.message : String(error),
180
+ });
181
+ }
182
+ finally {
183
+ this.active = false;
184
+ this.enabledDomains.clear();
185
+ this.eventHandlers.clear();
186
+ }
187
+ }
188
+ }
189
+ /**
190
+ * Check if a CDP failure is expected (not worth logging as error).
191
+ * Some CDP commands fail for valid reasons (e.g., box model for hidden elements).
192
+ */
193
+ isExpectedCdpFailure(method, errorMessage) {
194
+ // DOM.getBoxModel fails for non-rendered elements
195
+ if (method === 'DOM.getBoxModel' && errorMessage.includes('Could not compute box model')) {
196
+ return true;
197
+ }
198
+ // CSS.getComputedStyleForNode may fail for detached nodes
199
+ if (method === 'CSS.getComputedStyleForNode' && errorMessage.includes('not found')) {
200
+ return true;
201
+ }
202
+ return false;
203
+ }
204
+ /**
205
+ * Remove all tracked event handlers from the session.
206
+ */
207
+ removeAllEventHandlers() {
208
+ for (const [event, handlers] of this.eventHandlers) {
209
+ for (const handler of handlers) {
210
+ try {
211
+ this.session.off(event, handler);
212
+ }
213
+ catch (err) {
214
+ // Handler may already be removed
215
+ this.logger.debug('Failed to remove event handler during cleanup', {
216
+ event,
217
+ error: err instanceof Error ? err.message : String(err),
218
+ });
219
+ }
220
+ }
221
+ }
222
+ }
223
+ /**
224
+ * Check if session is still active.
225
+ */
226
+ isActive() {
227
+ return this.active;
228
+ }
229
+ /**
230
+ * Get detailed health diagnostics for this CDP session.
231
+ *
232
+ * Includes:
233
+ * - active: Whether session is operational
234
+ * - lastError: Last error message if any
235
+ * - lastErrorTime: When the last error occurred
236
+ */
237
+ getHealth() {
238
+ return {
239
+ active: this.active,
240
+ lastError: this.lastError,
241
+ lastErrorTime: this.lastErrorTime,
242
+ };
243
+ }
244
+ /**
245
+ * Get the set of currently enabled CDP domains.
246
+ */
247
+ getEnabledDomains() {
248
+ return this.enabledDomains;
249
+ }
250
+ /**
251
+ * Enable a CDP domain (e.g., 'DOM', 'Page', 'Accessibility').
252
+ * Automatically called by send() when needed.
253
+ */
254
+ async enableDomain(domain) {
255
+ // Check if domain doesn't require enable
256
+ if (this.domainsWithoutEnable.has(domain)) {
257
+ this.enabledDomains.add(domain);
258
+ return;
259
+ }
260
+ try {
261
+ await this.session.send(`${domain}.enable`);
262
+ this.enabledDomains.add(domain);
263
+ this.logger.debug(`Enabled CDP domain: ${domain}`);
264
+ }
265
+ catch {
266
+ // Some domains may not support enable or may already be enabled
267
+ this.logger.debug(`Could not enable domain ${domain} (may not support enable or already enabled)`);
268
+ // Still mark as enabled to avoid repeated attempts
269
+ this.enabledDomains.add(domain);
270
+ }
271
+ }
272
+ }
273
+ //# sourceMappingURL=puppeteer-cdp-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"puppeteer-cdp-client.js","sourceRoot":"","sources":["../../../src/cdp/puppeteer-cdp-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * CLI Argument Parsing
3
+ *
4
+ * Parses command-line arguments for server configuration.
5
+ * All browser initialization is controlled via these arguments.
6
+ */
7
+ /**
8
+ * Server configuration from CLI arguments
9
+ */
10
+ export interface ServerArgs {
11
+ /** Run browser in headless mode (default: false) */
12
+ headless: boolean;
13
+ /** Use isolated temp profile instead of persistent (default: false) */
14
+ isolated: boolean;
15
+ /** HTTP endpoint URL for connecting to existing browser */
16
+ browserUrl?: string;
17
+ /** WebSocket endpoint URL for connecting to existing browser */
18
+ wsEndpoint?: string;
19
+ /** Auto-connect to Chrome 144+ via DevToolsActivePort */
20
+ autoConnect: boolean;
21
+ /** Chrome user data directory */
22
+ userDataDir?: string;
23
+ /** Chrome channel to use */
24
+ channel?: 'chrome' | 'chrome-canary' | 'chrome-beta' | 'chrome-dev';
25
+ /** Path to Chrome executable */
26
+ executablePath?: string;
27
+ }
28
+ /**
29
+ * Parse command-line arguments into ServerArgs.
30
+ *
31
+ * @param argv - Command line arguments (process.argv.slice(2))
32
+ * @returns Parsed server configuration
33
+ */
34
+ export declare function parseArgs(argv: string[]): ServerArgs;
35
+ //# sourceMappingURL=args.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"args.d.ts","sourceRoot":"","sources":["../../../src/cli/args.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,oDAAoD;IACpD,QAAQ,EAAE,OAAO,CAAC;IAElB,uEAAuE;IACvE,QAAQ,EAAE,OAAO,CAAC;IAElB,2DAA2D;IAC3D,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,gEAAgE;IAChE,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,yDAAyD;IACzD,WAAW,EAAE,OAAO,CAAC;IAErB,iCAAiC;IACjC,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,4BAA4B;IAC5B,OAAO,CAAC,EAAE,QAAQ,GAAG,eAAe,GAAG,aAAa,GAAG,YAAY,CAAC;IAEpE,gCAAgC;IAChC,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAwBD;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,UAAU,CAmCpD"}
@@ -0,0 +1,76 @@
1
+ /**
2
+ * CLI Argument Parsing
3
+ *
4
+ * Parses command-line arguments for server configuration.
5
+ * All browser initialization is controlled via these arguments.
6
+ */
7
+ /** Known CLI argument base names for validation */
8
+ const KNOWN_ARG_NAMES = new Set([
9
+ 'headless',
10
+ 'isolated',
11
+ 'autoConnect',
12
+ 'browserUrl',
13
+ 'wsEndpoint',
14
+ 'userDataDir',
15
+ 'channel',
16
+ 'executablePath',
17
+ ]);
18
+ /**
19
+ * Check if an argument is a known CLI flag (handles --arg and --arg=value forms).
20
+ */
21
+ function isKnownArg(arg) {
22
+ if (!arg.startsWith('--'))
23
+ return true; // Not a flag, skip validation
24
+ const withoutDashes = arg.slice(2);
25
+ const baseName = withoutDashes.split('=')[0];
26
+ return KNOWN_ARG_NAMES.has(baseName);
27
+ }
28
+ /**
29
+ * Parse command-line arguments into ServerArgs.
30
+ *
31
+ * @param argv - Command line arguments (process.argv.slice(2))
32
+ * @returns Parsed server configuration
33
+ */
34
+ export function parseArgs(argv) {
35
+ const args = {
36
+ headless: false,
37
+ isolated: false,
38
+ autoConnect: false,
39
+ };
40
+ for (let i = 0; i < argv.length; i++) {
41
+ const arg = argv[i];
42
+ if (arg === '--headless=false' || arg === '--headless=0') {
43
+ args.headless = false;
44
+ }
45
+ else if (arg === '--headless=true' || arg === '--headless=1' || arg === '--headless') {
46
+ args.headless = true;
47
+ }
48
+ else if (arg === '--isolated') {
49
+ args.isolated = true;
50
+ }
51
+ else if (arg === '--autoConnect') {
52
+ args.autoConnect = true;
53
+ }
54
+ else if (arg === '--browserUrl' && argv[i + 1]) {
55
+ args.browserUrl = argv[++i];
56
+ }
57
+ else if (arg === '--wsEndpoint' && argv[i + 1]) {
58
+ args.wsEndpoint = argv[++i];
59
+ }
60
+ else if (arg === '--userDataDir' && argv[i + 1]) {
61
+ args.userDataDir = argv[++i];
62
+ }
63
+ else if (arg === '--channel' && argv[i + 1]) {
64
+ args.channel = argv[++i];
65
+ }
66
+ else if (arg === '--executablePath' && argv[i + 1]) {
67
+ args.executablePath = argv[++i];
68
+ }
69
+ else if (!isKnownArg(arg)) {
70
+ // Warn about unknown arguments to catch typos like --hedless
71
+ console.warn(`Warning: Unknown argument "${arg}" - ignored`);
72
+ }
73
+ }
74
+ return args;
75
+ }
76
+ //# sourceMappingURL=args.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"args.js","sourceRoot":"","sources":["../../../src/cli/args.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AA+BH,mDAAmD;AACnD,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC;IAC9B,UAAU;IACV,UAAU;IACV,aAAa;IACb,YAAY;IACZ,YAAY;IACZ,aAAa;IACb,SAAS;IACT,gBAAgB;CACjB,CAAC,CAAC;AAEH;;GAEG;AACH,SAAS,UAAU,CAAC,GAAW;IAC7B,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC,CAAC,8BAA8B;IACtE,MAAM,aAAa,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACnC,MAAM,QAAQ,GAAG,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7C,OAAO,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AACvC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,SAAS,CAAC,IAAc;IACtC,MAAM,IAAI,GAAe;QACvB,QAAQ,EAAE,KAAK;QACf,QAAQ,EAAE,KAAK;QACf,WAAW,EAAE,KAAK;KACnB,CAAC;IAEF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAEpB,IAAI,GAAG,KAAK,kBAAkB,IAAI,GAAG,KAAK,cAAc,EAAE,CAAC;YACzD,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACxB,CAAC;aAAM,IAAI,GAAG,KAAK,iBAAiB,IAAI,GAAG,KAAK,cAAc,IAAI,GAAG,KAAK,YAAY,EAAE,CAAC;YACvF,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACvB,CAAC;aAAM,IAAI,GAAG,KAAK,YAAY,EAAE,CAAC;YAChC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACvB,CAAC;aAAM,IAAI,GAAG,KAAK,eAAe,EAAE,CAAC;YACnC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QAC1B,CAAC;aAAM,IAAI,GAAG,KAAK,cAAc,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YACjD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QAC9B,CAAC;aAAM,IAAI,GAAG,KAAK,cAAc,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YACjD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QAC9B,CAAC;aAAM,IAAI,GAAG,KAAK,eAAe,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YAClD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QAC/B,CAAC;aAAM,IAAI,GAAG,KAAK,WAAW,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YAC9C,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC,CAA0B,CAAC;QACpD,CAAC;aAAM,IAAI,GAAG,KAAK,kBAAkB,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YACrD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QAClC,CAAC;aAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAC5B,6DAA6D;YAC7D,OAAO,CAAC,IAAI,CAAC,8BAA8B,GAAG,aAAa,CAAC,CAAC;QAC/D,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * DOM Stabilizer
3
+ *
4
+ * Waits for DOM to stabilize after an action with guaranteed termination.
5
+ * Uses MutationObserver to detect when mutations settle.
6
+ */
7
+ import type { Page } from 'puppeteer-core';
8
+ /**
9
+ * Options for DOM stabilization.
10
+ */
11
+ export interface StabilizationOptions {
12
+ /** Time window of no mutations to consider DOM stable (ms). Default: 100ms */
13
+ quietWindowMs?: number;
14
+ /** Maximum time to wait before timing out (ms). Default: 2000ms */
15
+ maxTimeoutMs?: number;
16
+ }
17
+ /**
18
+ * Result of DOM stabilization.
19
+ */
20
+ export interface StabilizationResult {
21
+ /** Status of stabilization */
22
+ status: 'stable' | 'timeout' | 'error';
23
+ /** Time waited for stabilization (ms) */
24
+ waitTimeMs: number;
25
+ /** Number of mutations observed during stabilization */
26
+ mutationCount?: number;
27
+ /** Warning message if timeout or error */
28
+ warning?: string;
29
+ }
30
+ /** Type alias for compatibility */
31
+ export type DomStability = StabilizationResult;
32
+ /**
33
+ * Wait for DOM to stabilize with guaranteed termination.
34
+ *
35
+ * Uses MutationObserver in the browser to detect when mutations stop.
36
+ * Returns when either:
37
+ * - No mutations observed for quietWindowMs (stable)
38
+ * - maxTimeoutMs elapsed (timeout)
39
+ * - An error occurred (error)
40
+ *
41
+ * @param page - Puppeteer Page instance
42
+ * @param options - Stabilization options
43
+ * @returns StabilizationResult with status and timing info
44
+ */
45
+ export declare function stabilizeDom(page: Page, options?: StabilizationOptions): Promise<StabilizationResult>;
46
+ //# sourceMappingURL=dom-stabilizer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dom-stabilizer.d.ts","sourceRoot":"","sources":["../../../src/delta/dom-stabilizer.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAE3C;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,8EAA8E;IAC9E,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,mEAAmE;IACnE,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,8BAA8B;IAC9B,MAAM,EAAE,QAAQ,GAAG,SAAS,GAAG,OAAO,CAAC;IACvC,yCAAyC;IACzC,UAAU,EAAE,MAAM,CAAC;IACnB,wDAAwD;IACxD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,0CAA0C;IAC1C,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,mCAAmC;AACnC,MAAM,MAAM,YAAY,GAAG,mBAAmB,CAAC;AAmC/C;;;;;;;;;;;;GAYG;AACH,wBAAsB,YAAY,CAChC,IAAI,EAAE,IAAI,EACV,OAAO,GAAE,oBAAyB,GACjC,OAAO,CAAC,mBAAmB,CAAC,CAiH9B"}
@@ -0,0 +1,121 @@
1
+ /**
2
+ * DOM Stabilizer
3
+ *
4
+ * Waits for DOM to stabilize after an action with guaranteed termination.
5
+ * Uses MutationObserver to detect when mutations settle.
6
+ */
7
+ /** Default quiet window in milliseconds */
8
+ const DEFAULT_QUIET_WINDOW_MS = 100;
9
+ /** Default hard timeout in milliseconds */
10
+ const DEFAULT_MAX_TIMEOUT_MS = 2000;
11
+ /**
12
+ * Wait for DOM to stabilize with guaranteed termination.
13
+ *
14
+ * Uses MutationObserver in the browser to detect when mutations stop.
15
+ * Returns when either:
16
+ * - No mutations observed for quietWindowMs (stable)
17
+ * - maxTimeoutMs elapsed (timeout)
18
+ * - An error occurred (error)
19
+ *
20
+ * @param page - Puppeteer Page instance
21
+ * @param options - Stabilization options
22
+ * @returns StabilizationResult with status and timing info
23
+ */
24
+ export async function stabilizeDom(page, options = {}) {
25
+ const quietWindowMs = options.quietWindowMs ?? DEFAULT_QUIET_WINDOW_MS;
26
+ const maxTimeoutMs = options.maxTimeoutMs ?? DEFAULT_MAX_TIMEOUT_MS;
27
+ const startTime = Date.now();
28
+ try {
29
+ const result = await page.evaluate(({ quietWindowMs, maxTimeoutMs }) => {
30
+ return new Promise((resolve) => {
31
+ // Guard: document.body may not exist during navigation
32
+ if (!document.body) {
33
+ resolve({ stable: false, elapsed: 0, mutationCount: 0 });
34
+ return;
35
+ }
36
+ let quietTimer = null;
37
+ let mutationCount = 0;
38
+ const start = performance.now();
39
+ // Hard timeout - always resolves
40
+ const hardTimeout = window.setTimeout(() => {
41
+ cleanup();
42
+ resolve({
43
+ stable: false,
44
+ elapsed: performance.now() - start,
45
+ mutationCount,
46
+ });
47
+ }, maxTimeoutMs);
48
+ const observer = new MutationObserver(() => {
49
+ mutationCount++;
50
+ // Reset quiet timer on each mutation
51
+ if (quietTimer !== null) {
52
+ clearTimeout(quietTimer);
53
+ }
54
+ quietTimer = window.setTimeout(() => {
55
+ cleanup();
56
+ resolve({
57
+ stable: true,
58
+ elapsed: performance.now() - start,
59
+ mutationCount,
60
+ });
61
+ }, quietWindowMs);
62
+ });
63
+ function cleanup() {
64
+ if (quietTimer !== null)
65
+ clearTimeout(quietTimer);
66
+ clearTimeout(hardTimeout);
67
+ observer.disconnect();
68
+ }
69
+ // Start observing
70
+ try {
71
+ observer.observe(document.body, {
72
+ childList: true,
73
+ subtree: true,
74
+ attributes: true,
75
+ characterData: true,
76
+ });
77
+ }
78
+ catch {
79
+ // Observer failed (rare edge case)
80
+ cleanup();
81
+ resolve({ stable: false, elapsed: 0, mutationCount: 0 });
82
+ return;
83
+ }
84
+ // Initial quiet timer (page may already be stable)
85
+ quietTimer = window.setTimeout(() => {
86
+ cleanup();
87
+ resolve({
88
+ stable: true,
89
+ elapsed: performance.now() - start,
90
+ mutationCount,
91
+ });
92
+ }, quietWindowMs);
93
+ });
94
+ }, { quietWindowMs, maxTimeoutMs });
95
+ const waitTimeMs = Date.now() - startTime;
96
+ if (result.stable) {
97
+ return {
98
+ status: 'stable',
99
+ waitTimeMs,
100
+ mutationCount: result.mutationCount,
101
+ };
102
+ }
103
+ return {
104
+ status: 'timeout',
105
+ waitTimeMs,
106
+ mutationCount: result.mutationCount,
107
+ warning: `DOM still mutating after ${maxTimeoutMs}ms (${result.mutationCount} mutations observed). Snapshot may be incomplete.`,
108
+ };
109
+ }
110
+ catch (error) {
111
+ // page.evaluate failed - likely navigation occurred
112
+ const waitTimeMs = Date.now() - startTime;
113
+ const message = error instanceof Error ? error.message : String(error);
114
+ return {
115
+ status: 'error',
116
+ waitTimeMs,
117
+ warning: `Stabilization interrupted: ${message}. Page may have navigated.`,
118
+ };
119
+ }
120
+ }
121
+ //# sourceMappingURL=dom-stabilizer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dom-stabilizer.js","sourceRoot":"","sources":["../../../src/delta/dom-stabilizer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Delta System Exports
3
+ *
4
+ * Only DOM stabilizer remains - all other delta functionality removed.
5
+ */
6
+ export { stabilizeDom } from './dom-stabilizer.js';
7
+ export type { DomStability } from './dom-stabilizer.js';
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/delta/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,YAAY,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Delta System Exports
3
+ *
4
+ * Only DOM stabilizer remains - all other delta functionality removed.
5
+ */
6
+ export { stabilizeDom } from './dom-stabilizer.js';
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/delta/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Action Selector
3
+ *
4
+ * Selects and scores key actions from a BaseSnapshot.
5
+ *
6
+ * Design: Generic First, Specific Second
7
+ * 1. Score ALL interactive elements generically (works on any page)
8
+ * 2. Optionally categorize actions (may return 'generic')
9
+ * 3. Select top actions above threshold
10
+ */
11
+ import type { BaseSnapshot } from '../snapshot/snapshot.types.js';
12
+ import type { ActionSelectionResult, DialogDetectionResult, FormDetectionResult, PageClassification } from './types.js';
13
+ /**
14
+ * Options for action selection.
15
+ */
16
+ export interface ActionSelectionOptions {
17
+ /** Max actions to return (default: 12) */
18
+ max_actions?: number;
19
+ /** Min score threshold (default: 0.2) */
20
+ min_action_score?: number;
21
+ /** Form detection result for context */
22
+ forms?: FormDetectionResult;
23
+ /** Dialog detection result for context */
24
+ dialogs?: DialogDetectionResult;
25
+ /** Page classification for context */
26
+ pageType?: PageClassification;
27
+ }
28
+ /**
29
+ * Select key actions from a BaseSnapshot.
30
+ *
31
+ * @param snapshot - The snapshot to analyze
32
+ * @param options - Selection options
33
+ * @returns Selection result with top actions and metadata
34
+ */
35
+ export declare function selectKeyActions(snapshot: BaseSnapshot, options?: ActionSelectionOptions): ActionSelectionResult;
36
+ //# sourceMappingURL=action-selector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"action-selector.d.ts","sourceRoot":"","sources":["../../../src/factpack/action-selector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAoC,MAAM,+BAA+B,CAAC;AAGpG,OAAO,KAAK,EACV,qBAAqB,EAIrB,qBAAqB,EACrB,mBAAmB,EACnB,kBAAkB,EACnB,MAAM,YAAY,CAAC;AAyTpB;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,0CAA0C;IAC1C,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,yCAAyC;IACzC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B,wCAAwC;IACxC,KAAK,CAAC,EAAE,mBAAmB,CAAC;IAE5B,0CAA0C;IAC1C,OAAO,CAAC,EAAE,qBAAqB,CAAC;IAEhC,sCAAsC;IACtC,QAAQ,CAAC,EAAE,kBAAkB,CAAC;CAC/B;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,YAAY,EACtB,OAAO,GAAE,sBAA2B,GACnC,qBAAqB,CAyHvB"}