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,224 @@
1
+ /**
2
+ * Session Store
3
+ *
4
+ * Tracks active sessions per MCP client (tenant isolation).
5
+ * Supports optional TTL-based auto-cleanup of expired sessions.
6
+ */
7
+ import { randomUUID } from 'crypto';
8
+ /** Default TTL in milliseconds (30 minutes) */
9
+ const DEFAULT_TTL_MS = 30 * 60 * 1000;
10
+ /** Cleanup interval in milliseconds (5 minutes) */
11
+ const CLEANUP_INTERVAL_MS = 5 * 60 * 1000;
12
+ /**
13
+ * In-memory session store for tenant isolation
14
+ */
15
+ export class SessionStore {
16
+ sessions = new Map();
17
+ ttlMs;
18
+ maxSessions;
19
+ cleanupInterval = null;
20
+ constructor(options = {}) {
21
+ this.ttlMs = options.ttlMs ?? DEFAULT_TTL_MS;
22
+ this.maxSessions = options.maxSessions ?? Infinity;
23
+ if (options.autoCleanup && this.ttlMs > 0) {
24
+ this.startAutoCleanup();
25
+ }
26
+ }
27
+ /**
28
+ * Create a new session for a tenant
29
+ *
30
+ * @param tenant_id - The tenant/client identifier
31
+ * @returns The new session_id
32
+ * @throws Error if max sessions limit reached
33
+ */
34
+ createSession(tenant_id) {
35
+ // Check max sessions limit
36
+ if (this.sessions.size >= this.maxSessions) {
37
+ throw new Error(`Maximum sessions limit reached: ${this.maxSessions}`);
38
+ }
39
+ const session_id = `session-${randomUUID()}`;
40
+ const now = new Date();
41
+ const session = {
42
+ session_id,
43
+ tenant_id,
44
+ page_ids: new Set(),
45
+ created_at: now,
46
+ last_accessed_at: now,
47
+ expires_at: this.ttlMs > 0 ? new Date(now.getTime() + this.ttlMs) : null,
48
+ };
49
+ this.sessions.set(session_id, session);
50
+ return session_id;
51
+ }
52
+ /**
53
+ * Get a session by its ID.
54
+ * Automatically refreshes TTL and checks for expiration.
55
+ *
56
+ * @param session_id - The session identifier
57
+ * @returns TenantSession if found and not expired, undefined otherwise
58
+ */
59
+ getSession(session_id) {
60
+ const session = this.sessions.get(session_id);
61
+ if (!session)
62
+ return undefined;
63
+ // Check if expired
64
+ if (this.isExpired(session)) {
65
+ this.sessions.delete(session_id);
66
+ return undefined;
67
+ }
68
+ // Touch session to refresh TTL
69
+ this.touchSession(session);
70
+ return session;
71
+ }
72
+ /**
73
+ * Add a page to a session
74
+ *
75
+ * @param session_id - The session identifier
76
+ * @param page_id - The page identifier to add
77
+ */
78
+ addPage(session_id, page_id) {
79
+ const session = this.sessions.get(session_id);
80
+ if (session) {
81
+ session.page_ids.add(page_id);
82
+ }
83
+ }
84
+ /**
85
+ * Remove a page from a session
86
+ *
87
+ * @param session_id - The session identifier
88
+ * @param page_id - The page identifier to remove
89
+ */
90
+ removePage(session_id, page_id) {
91
+ const session = this.sessions.get(session_id);
92
+ if (session) {
93
+ session.page_ids.delete(page_id);
94
+ }
95
+ }
96
+ /**
97
+ * Get all pages for a session
98
+ *
99
+ * @param session_id - The session identifier
100
+ * @returns Array of page_ids (empty if session not found)
101
+ */
102
+ getPages(session_id) {
103
+ const session = this.sessions.get(session_id);
104
+ if (!session) {
105
+ return [];
106
+ }
107
+ return Array.from(session.page_ids);
108
+ }
109
+ /**
110
+ * Destroy a session completely
111
+ *
112
+ * @param session_id - The session identifier
113
+ */
114
+ destroySession(session_id) {
115
+ this.sessions.delete(session_id);
116
+ }
117
+ /**
118
+ * List all active sessions
119
+ *
120
+ * @returns Array of all TenantSession objects
121
+ */
122
+ listSessions() {
123
+ return Array.from(this.sessions.values());
124
+ }
125
+ /**
126
+ * Get sessions for a specific tenant
127
+ *
128
+ * @param tenant_id - The tenant identifier
129
+ * @returns Array of sessions for this tenant
130
+ */
131
+ getSessionsByTenant(tenant_id) {
132
+ return this.listSessions().filter((s) => s.tenant_id === tenant_id);
133
+ }
134
+ /**
135
+ * Get the total number of sessions
136
+ *
137
+ * @returns Session count
138
+ */
139
+ sessionCount() {
140
+ return this.sessions.size;
141
+ }
142
+ /**
143
+ * Check if a session exists
144
+ *
145
+ * @param session_id - The session identifier
146
+ * @returns true if session exists
147
+ */
148
+ hasSession(session_id) {
149
+ return this.sessions.has(session_id);
150
+ }
151
+ /**
152
+ * Clear all sessions (for testing or shutdown)
153
+ */
154
+ clear() {
155
+ this.sessions.clear();
156
+ }
157
+ /**
158
+ * Stop automatic cleanup timer
159
+ */
160
+ stopAutoCleanup() {
161
+ if (this.cleanupInterval) {
162
+ clearInterval(this.cleanupInterval);
163
+ this.cleanupInterval = null;
164
+ }
165
+ }
166
+ /**
167
+ * Start automatic cleanup of expired sessions
168
+ */
169
+ startAutoCleanup() {
170
+ this.stopAutoCleanup();
171
+ this.cleanupInterval = setInterval(() => {
172
+ this.cleanupExpired();
173
+ }, CLEANUP_INTERVAL_MS);
174
+ // Don't keep the process alive just for cleanup
175
+ this.cleanupInterval.unref();
176
+ }
177
+ /**
178
+ * Manually clean up all expired sessions
179
+ *
180
+ * @returns Number of sessions removed
181
+ */
182
+ cleanupExpired() {
183
+ let removed = 0;
184
+ const now = new Date();
185
+ for (const [session_id, session] of this.sessions) {
186
+ if (session.expires_at && session.expires_at <= now) {
187
+ this.sessions.delete(session_id);
188
+ removed++;
189
+ }
190
+ }
191
+ return removed;
192
+ }
193
+ /**
194
+ * Check if a session is expired
195
+ */
196
+ isExpired(session) {
197
+ if (!session.expires_at)
198
+ return false;
199
+ return session.expires_at <= new Date();
200
+ }
201
+ /**
202
+ * Touch a session to refresh its TTL
203
+ */
204
+ touchSession(session) {
205
+ const now = new Date();
206
+ session.last_accessed_at = now;
207
+ if (this.ttlMs > 0) {
208
+ session.expires_at = new Date(now.getTime() + this.ttlMs);
209
+ }
210
+ }
211
+ /**
212
+ * Get the configured TTL in milliseconds
213
+ */
214
+ getTtlMs() {
215
+ return this.ttlMs;
216
+ }
217
+ /**
218
+ * Get the configured max sessions limit
219
+ */
220
+ getMaxSessions() {
221
+ return this.maxSessions;
222
+ }
223
+ }
224
+ //# sourceMappingURL=session-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-store.js","sourceRoot":"","sources":["../../../src/server/session-store.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAEpC,+CAA+C;AAC/C,MAAM,cAAc,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAEtC,mDAAmD;AACnD,MAAM,mBAAmB,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;AAuC1C;;GAEG;AACH,MAAM,OAAO,YAAY;IACN,QAAQ,GAAG,IAAI,GAAG,EAAyB,CAAC;IAC5C,KAAK,CAAS;IACd,WAAW,CAAS;IAC7B,eAAe,GAA0B,IAAI,CAAC;IAEtD,YAAY,UAA+B,EAAE;QAC3C,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,cAAc,CAAC;QAC7C,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,QAAQ,CAAC;QAEnD,IAAI,OAAO,CAAC,WAAW,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC;YAC1C,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC1B,CAAC;IACH,CAAC;IAED;;;;;;OAMG;IACH,aAAa,CAAC,SAAiB;QAC7B,2BAA2B;QAC3B,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YAC3C,MAAM,IAAI,KAAK,CAAC,mCAAmC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;QACzE,CAAC;QAED,MAAM,UAAU,GAAG,WAAW,UAAU,EAAE,EAAE,CAAC;QAC7C,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QAEvB,MAAM,OAAO,GAAkB;YAC7B,UAAU;YACV,SAAS;YACT,QAAQ,EAAE,IAAI,GAAG,EAAE;YACnB,UAAU,EAAE,GAAG;YACf,gBAAgB,EAAE,GAAG;YACrB,UAAU,EAAE,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI;SACzE,CAAC;QAEF,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAEvC,OAAO,UAAU,CAAC;IACpB,CAAC;IAED;;;;;;OAMG;IACH,UAAU,CAAC,UAAkB;QAC3B,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAC9C,IAAI,CAAC,OAAO;YAAE,OAAO,SAAS,CAAC;QAE/B,mBAAmB;QACnB,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;YAC5B,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;YACjC,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,+BAA+B;QAC/B,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QAC3B,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;;;;OAKG;IACH,OAAO,CAAC,UAAkB,EAAE,OAAe;QACzC,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAC9C,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAChC,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACH,UAAU,CAAC,UAAkB,EAAE,OAAe;QAC5C,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAC9C,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACnC,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACH,QAAQ,CAAC,UAAkB;QACzB,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAC9C,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACtC,CAAC;IAED;;;;OAIG;IACH,cAAc,CAAC,UAAkB;QAC/B,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IACnC,CAAC;IAED;;;;OAIG;IACH,YAAY;QACV,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED;;;;;OAKG;IACH,mBAAmB,CAAC,SAAiB;QACnC,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC;IACtE,CAAC;IAED;;;;OAIG;IACH,YAAY;QACV,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;IAC5B,CAAC;IAED;;;;;OAKG;IACH,UAAU,CAAC,UAAkB;QAC3B,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IACvC,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;IACxB,CAAC;IAED;;OAEG;IACH,eAAe;QACb,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YACzB,aAAa,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YACpC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;QAC9B,CAAC;IACH,CAAC;IAED;;OAEG;IACH,gBAAgB;QACd,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,IAAI,CAAC,eAAe,GAAG,WAAW,CAAC,GAAG,EAAE;YACtC,IAAI,CAAC,cAAc,EAAE,CAAC;QACxB,CAAC,EAAE,mBAAmB,CAAC,CAAC;QAExB,gDAAgD;QAChD,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;IAC/B,CAAC;IAED;;;;OAIG;IACH,cAAc;QACZ,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QAEvB,KAAK,MAAM,CAAC,UAAU,EAAE,OAAO,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClD,IAAI,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,UAAU,IAAI,GAAG,EAAE,CAAC;gBACpD,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;gBACjC,OAAO,EAAE,CAAC;YACZ,CAAC;QACH,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACK,SAAS,CAAC,OAAsB;QACtC,IAAI,CAAC,OAAO,CAAC,UAAU;YAAE,OAAO,KAAK,CAAC;QACtC,OAAO,OAAO,CAAC,UAAU,IAAI,IAAI,IAAI,EAAE,CAAC;IAC1C,CAAC;IAED;;OAEG;IACK,YAAY,CAAC,OAAsB;QACzC,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,OAAO,CAAC,gBAAgB,GAAG,GAAG,CAAC;QAC/B,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC;YACnB,OAAO,CAAC,UAAU,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;QAC5D,CAAC;IACH,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED;;OAEG;IACH,cAAc;QACZ,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;CACF"}
@@ -0,0 +1,102 @@
1
+ /**
2
+ * Browser Session Error
3
+ *
4
+ * Standardized error classification for browser session operations.
5
+ * Provides error codes for programmatic handling and detailed messages for debugging.
6
+ */
7
+ /**
8
+ * Error codes for browser session operations
9
+ */
10
+ export type BrowserErrorCode = 'NOT_CONNECTED' | 'ALREADY_CONNECTED' | 'CONNECTION_FAILED' | 'CONNECTION_TIMEOUT' | 'INVALID_URL' | 'PAGE_NOT_FOUND' | 'PAGE_CLOSED' | 'CDP_ERROR' | 'CDP_TIMEOUT' | 'CDP_SESSION_CLOSED' | 'BROWSER_DISCONNECTED' | 'INVALID_STATE' | 'OPERATION_FAILED';
11
+ /**
12
+ * Standardized error for browser session operations.
13
+ *
14
+ * @example
15
+ * ```typescript
16
+ * throw new BrowserSessionError(
17
+ * 'Browser disconnected unexpectedly',
18
+ * 'BROWSER_DISCONNECTED',
19
+ * originalError
20
+ * );
21
+ *
22
+ * // Catching and handling by code
23
+ * try {
24
+ * await session.connect();
25
+ * } catch (error) {
26
+ * if (error instanceof BrowserSessionError) {
27
+ * switch (error.code) {
28
+ * case 'CONNECTION_TIMEOUT':
29
+ * console.log('Connection timed out, retrying...');
30
+ * break;
31
+ * case 'INVALID_URL':
32
+ * console.log('Invalid endpoint URL');
33
+ * break;
34
+ * }
35
+ * }
36
+ * }
37
+ * ```
38
+ */
39
+ export declare class BrowserSessionError extends Error {
40
+ /**
41
+ * Error code for programmatic handling
42
+ */
43
+ readonly code: BrowserErrorCode;
44
+ /**
45
+ * Original error that caused this error (if any)
46
+ */
47
+ readonly cause?: Error;
48
+ /**
49
+ * Additional context for debugging
50
+ */
51
+ readonly context?: Record<string, unknown>;
52
+ constructor(message: string, code: BrowserErrorCode, cause?: Error, context?: Record<string, unknown>);
53
+ /**
54
+ * Create a JSON-serializable representation of the error
55
+ */
56
+ toJSON(): Record<string, unknown>;
57
+ /**
58
+ * Type guard to check if an error is a BrowserSessionError
59
+ */
60
+ static isBrowserSessionError(error: unknown): error is BrowserSessionError;
61
+ /**
62
+ * Create error for not connected state
63
+ */
64
+ static notConnected(context?: Record<string, unknown>): BrowserSessionError;
65
+ /**
66
+ * Create error for already connected state
67
+ */
68
+ static alreadyConnected(context?: Record<string, unknown>): BrowserSessionError;
69
+ /**
70
+ * Create error for connection failure
71
+ */
72
+ static connectionFailed(cause: Error, context?: Record<string, unknown>): BrowserSessionError;
73
+ /**
74
+ * Create error for connection timeout
75
+ */
76
+ static connectionTimeout(endpointUrl: string, timeoutMs: number, context?: Record<string, unknown>): BrowserSessionError;
77
+ /**
78
+ * Create error for invalid URL
79
+ */
80
+ static invalidUrl(url: string, context?: Record<string, unknown>): BrowserSessionError;
81
+ /**
82
+ * Create error for page not found
83
+ */
84
+ static pageNotFound(pageId: string, context?: Record<string, unknown>): BrowserSessionError;
85
+ /**
86
+ * Create error for CDP operation failure
87
+ */
88
+ static cdpError(method: string, cause: Error, context?: Record<string, unknown>): BrowserSessionError;
89
+ /**
90
+ * Create error for CDP timeout
91
+ */
92
+ static cdpTimeout(method: string, timeoutMs: number, context?: Record<string, unknown>): BrowserSessionError;
93
+ /**
94
+ * Create error for browser disconnect
95
+ */
96
+ static browserDisconnected(context?: Record<string, unknown>): BrowserSessionError;
97
+ /**
98
+ * Create error for invalid state transition
99
+ */
100
+ static invalidState(currentState: string, attemptedOperation: string, context?: Record<string, unknown>): BrowserSessionError;
101
+ }
102
+ //# sourceMappingURL=browser-session.error.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser-session.error.d.ts","sourceRoot":"","sources":["../../../../src/shared/errors/browser-session.error.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;GAEG;AACH,MAAM,MAAM,gBAAgB,GACxB,eAAe,GACf,mBAAmB,GACnB,mBAAmB,GACnB,oBAAoB,GACpB,aAAa,GACb,gBAAgB,GAChB,aAAa,GACb,WAAW,GACX,aAAa,GACb,oBAAoB,GACpB,sBAAsB,GACtB,eAAe,GACf,kBAAkB,CAAC;AAEvB;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,qBAAa,mBAAoB,SAAQ,KAAK;IAC5C;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;IAEhC;;OAEG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC;IAEvB;;OAEG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;gBAGzC,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,gBAAgB,EACtB,KAAK,CAAC,EAAE,KAAK,EACb,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAcnC;;OAEG;IACH,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAgBjC;;OAEG;IACH,MAAM,CAAC,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,mBAAmB;IAI1E;;OAEG;IACH,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,mBAAmB;IAI3E;;OAEG;IACH,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,mBAAmB;IAS/E;;OAEG;IACH,MAAM,CAAC,gBAAgB,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,mBAAmB;IAS7F;;OAEG;IACH,MAAM,CAAC,iBAAiB,CACtB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAChC,mBAAmB;IAStB;;OAEG;IACH,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,mBAAmB;IAOtF;;OAEG;IACH,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,mBAAmB;IAO3F;;OAEG;IACH,MAAM,CAAC,QAAQ,CACb,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,KAAK,EACZ,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAChC,mBAAmB;IAOtB;;OAEG;IACH,MAAM,CAAC,UAAU,CACf,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAChC,mBAAmB;IAStB;;OAEG;IACH,MAAM,CAAC,mBAAmB,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,mBAAmB;IASlF;;OAEG;IACH,MAAM,CAAC,YAAY,CACjB,YAAY,EAAE,MAAM,EACpB,kBAAkB,EAAE,MAAM,EAC1B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAChC,mBAAmB;CAQvB"}
@@ -0,0 +1,153 @@
1
+ /**
2
+ * Browser Session Error
3
+ *
4
+ * Standardized error classification for browser session operations.
5
+ * Provides error codes for programmatic handling and detailed messages for debugging.
6
+ */
7
+ /**
8
+ * Standardized error for browser session operations.
9
+ *
10
+ * @example
11
+ * ```typescript
12
+ * throw new BrowserSessionError(
13
+ * 'Browser disconnected unexpectedly',
14
+ * 'BROWSER_DISCONNECTED',
15
+ * originalError
16
+ * );
17
+ *
18
+ * // Catching and handling by code
19
+ * try {
20
+ * await session.connect();
21
+ * } catch (error) {
22
+ * if (error instanceof BrowserSessionError) {
23
+ * switch (error.code) {
24
+ * case 'CONNECTION_TIMEOUT':
25
+ * console.log('Connection timed out, retrying...');
26
+ * break;
27
+ * case 'INVALID_URL':
28
+ * console.log('Invalid endpoint URL');
29
+ * break;
30
+ * }
31
+ * }
32
+ * }
33
+ * ```
34
+ */
35
+ export class BrowserSessionError extends Error {
36
+ /**
37
+ * Error code for programmatic handling
38
+ */
39
+ code;
40
+ /**
41
+ * Original error that caused this error (if any)
42
+ */
43
+ cause;
44
+ /**
45
+ * Additional context for debugging
46
+ */
47
+ context;
48
+ constructor(message, code, cause, context) {
49
+ super(message);
50
+ this.name = 'BrowserSessionError';
51
+ this.code = code;
52
+ this.cause = cause;
53
+ this.context = context;
54
+ // Maintains proper stack trace for where error was thrown (V8 only)
55
+ if (Error.captureStackTrace) {
56
+ Error.captureStackTrace(this, BrowserSessionError);
57
+ }
58
+ }
59
+ /**
60
+ * Create a JSON-serializable representation of the error
61
+ */
62
+ toJSON() {
63
+ return {
64
+ name: this.name,
65
+ message: this.message,
66
+ code: this.code,
67
+ context: this.context,
68
+ cause: this.cause
69
+ ? {
70
+ name: this.cause.name,
71
+ message: this.cause.message,
72
+ }
73
+ : undefined,
74
+ stack: this.stack,
75
+ };
76
+ }
77
+ /**
78
+ * Type guard to check if an error is a BrowserSessionError
79
+ */
80
+ static isBrowserSessionError(error) {
81
+ return error instanceof BrowserSessionError;
82
+ }
83
+ /**
84
+ * Create error for not connected state
85
+ */
86
+ static notConnected(context) {
87
+ return new BrowserSessionError('Browser not connected', 'NOT_CONNECTED', undefined, context);
88
+ }
89
+ /**
90
+ * Create error for already connected state
91
+ */
92
+ static alreadyConnected(context) {
93
+ return new BrowserSessionError('Browser already connected or connection in progress', 'ALREADY_CONNECTED', undefined, context);
94
+ }
95
+ /**
96
+ * Create error for connection failure
97
+ */
98
+ static connectionFailed(cause, context) {
99
+ return new BrowserSessionError(`Failed to connect to browser: ${cause.message}`, 'CONNECTION_FAILED', cause, context);
100
+ }
101
+ /**
102
+ * Create error for connection timeout
103
+ */
104
+ static connectionTimeout(endpointUrl, timeoutMs, context) {
105
+ return new BrowserSessionError(`Connection timeout after ${timeoutMs}ms: ${endpointUrl}`, 'CONNECTION_TIMEOUT', undefined, { endpointUrl, timeoutMs, ...context });
106
+ }
107
+ /**
108
+ * Create error for invalid URL
109
+ */
110
+ static invalidUrl(url, context) {
111
+ return new BrowserSessionError(`Invalid endpoint URL: ${url}`, 'INVALID_URL', undefined, {
112
+ url,
113
+ ...context,
114
+ });
115
+ }
116
+ /**
117
+ * Create error for page not found
118
+ */
119
+ static pageNotFound(pageId, context) {
120
+ return new BrowserSessionError(`Page not found: ${pageId}`, 'PAGE_NOT_FOUND', undefined, {
121
+ pageId,
122
+ ...context,
123
+ });
124
+ }
125
+ /**
126
+ * Create error for CDP operation failure
127
+ */
128
+ static cdpError(method, cause, context) {
129
+ return new BrowserSessionError(`CDP command failed: ${method}`, 'CDP_ERROR', cause, {
130
+ method,
131
+ ...context,
132
+ });
133
+ }
134
+ /**
135
+ * Create error for CDP timeout
136
+ */
137
+ static cdpTimeout(method, timeoutMs, context) {
138
+ return new BrowserSessionError(`CDP command timed out after ${timeoutMs}ms: ${method}`, 'CDP_TIMEOUT', undefined, { method, timeoutMs, ...context });
139
+ }
140
+ /**
141
+ * Create error for browser disconnect
142
+ */
143
+ static browserDisconnected(context) {
144
+ return new BrowserSessionError('Browser disconnected unexpectedly', 'BROWSER_DISCONNECTED', undefined, context);
145
+ }
146
+ /**
147
+ * Create error for invalid state transition
148
+ */
149
+ static invalidState(currentState, attemptedOperation, context) {
150
+ return new BrowserSessionError(`Invalid operation "${attemptedOperation}" in state "${currentState}"`, 'INVALID_STATE', undefined, { currentState, attemptedOperation, ...context });
151
+ }
152
+ }
153
+ //# sourceMappingURL=browser-session.error.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser-session.error.js","sourceRoot":"","sources":["../../../../src/shared/errors/browser-session.error.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Error module exports
3
+ */
4
+ export { BrowserSessionError, type BrowserErrorCode } from './browser-session.error.js';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/shared/errors/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,mBAAmB,EAAE,KAAK,gBAAgB,EAAE,MAAM,4BAA4B,CAAC"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Error module exports
3
+ */
4
+ export { BrowserSessionError } from './browser-session.error.js';
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/shared/errors/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,mBAAmB,EAAyB,MAAM,4BAA4B,CAAC"}
@@ -0,0 +1,71 @@
1
+ /**
2
+ * DOM Transformer Service
3
+ *
4
+ * Transforms CDP DOM.getDocument responses into our DomTreeNode format
5
+ *
6
+ * FIXES: The stub implementation in browser-automation-mcp-server.ts:731-736
7
+ * that returned { nodes: [] } without transforming the CDP response
8
+ */
9
+ import type { DomTreeNode } from '../types/index.js';
10
+ /**
11
+ * CDP DOM Node structure
12
+ */
13
+ interface CdpDomNode {
14
+ nodeId: number;
15
+ nodeType: number;
16
+ nodeName: string;
17
+ localName: string;
18
+ nodeValue: string;
19
+ childNodeCount?: number;
20
+ children?: CdpDomNode[];
21
+ attributes?: string[];
22
+ documentURL?: string;
23
+ baseURL?: string;
24
+ }
25
+ interface CdpDomTreeResponse {
26
+ root: CdpDomNode;
27
+ }
28
+ export interface DomGetTreeParams {
29
+ frameId?: string;
30
+ depth?: number;
31
+ visibleOnly?: boolean;
32
+ }
33
+ export interface DomGetTreeResponse {
34
+ nodes: DomTreeNode[];
35
+ }
36
+ export declare class DomTransformerService {
37
+ /**
38
+ * Transform CDP DOM.getDocument response into our DomTreeNode format
39
+ */
40
+ transform(cdpResponse: CdpDomTreeResponse, params: DomGetTreeParams): DomGetTreeResponse;
41
+ /**
42
+ * Recursively transform a CDP node and its children
43
+ */
44
+ private transformNode;
45
+ /**
46
+ * Parse CDP attributes array [key1, value1, key2, value2, ...] to object
47
+ */
48
+ private parseAttributes;
49
+ /**
50
+ * Check if element is hidden by inline style
51
+ */
52
+ private isHiddenByStyle;
53
+ /**
54
+ * Extract text content from immediate text children
55
+ */
56
+ private extractTextContent;
57
+ /**
58
+ * Flatten tree structure into array (breadth-first traversal)
59
+ */
60
+ flattenTree(nodes: DomTreeNode[]): DomTreeNode[];
61
+ /**
62
+ * Filter nodes by tag name
63
+ */
64
+ filterByTag(nodes: DomTreeNode[], tag: string): DomTreeNode[];
65
+ /**
66
+ * Find nodes by attribute
67
+ */
68
+ findByAttribute(nodes: DomTreeNode[], attrName: string, attrValue?: string): DomTreeNode[];
69
+ }
70
+ export {};
71
+ //# sourceMappingURL=dom-transformer.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dom-transformer.service.d.ts","sourceRoot":"","sources":["../../../../src/shared/services/dom-transformer.service.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD;;GAEG;AACH,UAAU,UAAU;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,UAAU,EAAE,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,UAAU,kBAAkB;IAC1B,IAAI,EAAE,UAAU,CAAC;CAClB;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,WAAW,EAAE,CAAC;CACtB;AAED,qBAAa,qBAAqB;IAChC;;OAEG;IACH,SAAS,CAAC,WAAW,EAAE,kBAAkB,EAAE,MAAM,EAAE,gBAAgB,GAAG,kBAAkB;IASxF;;OAEG;IACH,OAAO,CAAC,aAAa;IAoFrB;;OAEG;IACH,OAAO,CAAC,eAAe;IAQvB;;OAEG;IACH,OAAO,CAAC,eAAe;IAUvB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAuB1B;;OAEG;IACH,WAAW,CAAC,KAAK,EAAE,WAAW,EAAE,GAAG,WAAW,EAAE;IAgBhD;;OAEG;IACH,WAAW,CAAC,KAAK,EAAE,WAAW,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,WAAW,EAAE;IAe7D;;OAEG;IACH,eAAe,CAAC,KAAK,EAAE,WAAW,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,WAAW,EAAE;CA2B3F"}