agent-web-interface 4.4.0 → 4.5.1

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 (334) hide show
  1. package/README.md +35 -34
  2. package/dist/src/browser/browser-session-config.d.ts +33 -0
  3. package/dist/src/browser/browser-session-config.d.ts.map +1 -0
  4. package/dist/src/browser/browser-session-config.js +25 -0
  5. package/dist/src/browser/browser-session-config.js.map +1 -0
  6. package/dist/src/browser/ensure-browser.d.ts +12 -27
  7. package/dist/src/browser/ensure-browser.d.ts.map +1 -1
  8. package/dist/src/browser/ensure-browser.js +131 -39
  9. package/dist/src/browser/ensure-browser.js.map +1 -1
  10. package/dist/src/browser/index.d.ts +2 -1
  11. package/dist/src/browser/index.d.ts.map +1 -1
  12. package/dist/src/browser/index.js +1 -0
  13. package/dist/src/browser/index.js.map +1 -1
  14. package/dist/src/browser/page-network-recorder.d.ts +95 -0
  15. package/dist/src/browser/page-network-recorder.d.ts.map +1 -0
  16. package/dist/src/browser/page-network-recorder.js +306 -0
  17. package/dist/src/browser/page-network-recorder.js.map +1 -0
  18. package/dist/src/browser/session-manager.d.ts +20 -0
  19. package/dist/src/browser/session-manager.d.ts.map +1 -1
  20. package/dist/src/browser/session-manager.js +169 -20
  21. package/dist/src/browser/session-manager.js.map +1 -1
  22. package/dist/src/browser/session-manager.types.d.ts +14 -2
  23. package/dist/src/browser/session-manager.types.d.ts.map +1 -1
  24. package/dist/src/browser/session-manager.types.js +5 -1
  25. package/dist/src/browser/session-manager.types.js.map +1 -1
  26. package/dist/src/cli/args.d.ts +12 -18
  27. package/dist/src/cli/args.d.ts.map +1 -1
  28. package/dist/src/cli/args.js +35 -40
  29. package/dist/src/cli/args.js.map +1 -1
  30. package/dist/src/form/constraint-extraction.d.ts +5 -0
  31. package/dist/src/form/constraint-extraction.d.ts.map +1 -1
  32. package/dist/src/form/constraint-extraction.js +13 -6
  33. package/dist/src/form/constraint-extraction.js.map +1 -1
  34. package/dist/src/form/field-extractor.d.ts.map +1 -1
  35. package/dist/src/form/field-extractor.js +14 -7
  36. package/dist/src/form/field-extractor.js.map +1 -1
  37. package/dist/src/form/form-state.d.ts.map +1 -1
  38. package/dist/src/form/form-state.js +16 -4
  39. package/dist/src/form/form-state.js.map +1 -1
  40. package/dist/src/gateway/http-gateway.d.ts +56 -0
  41. package/dist/src/gateway/http-gateway.d.ts.map +1 -0
  42. package/dist/src/gateway/http-gateway.js +229 -0
  43. package/dist/src/gateway/http-gateway.js.map +1 -0
  44. package/dist/src/gateway/json-rpc-errors.d.ts +6 -0
  45. package/dist/src/gateway/json-rpc-errors.d.ts.map +1 -0
  46. package/dist/src/gateway/json-rpc-errors.js +11 -0
  47. package/dist/src/gateway/json-rpc-errors.js.map +1 -0
  48. package/dist/src/gateway/session-router.d.ts +80 -0
  49. package/dist/src/gateway/session-router.d.ts.map +1 -0
  50. package/dist/src/gateway/session-router.js +177 -0
  51. package/dist/src/gateway/session-router.js.map +1 -0
  52. package/dist/src/http-entry.d.ts +20 -0
  53. package/dist/src/http-entry.d.ts.map +1 -0
  54. package/dist/src/http-entry.js +112 -0
  55. package/dist/src/http-entry.js.map +1 -0
  56. package/dist/src/index.d.ts +1 -10
  57. package/dist/src/index.d.ts.map +1 -1
  58. package/dist/src/index.js +25 -232
  59. package/dist/src/index.js.map +1 -1
  60. package/dist/src/lib/text-utils.d.ts +0 -24
  61. package/dist/src/lib/text-utils.d.ts.map +1 -1
  62. package/dist/src/lib/text-utils.js +2 -38
  63. package/dist/src/lib/text-utils.js.map +1 -1
  64. package/dist/src/observation/eid-linker.d.ts.map +1 -1
  65. package/dist/src/observation/eid-linker.js +1 -21
  66. package/dist/src/observation/eid-linker.js.map +1 -1
  67. package/dist/src/server/index.d.ts +0 -1
  68. package/dist/src/server/index.d.ts.map +1 -1
  69. package/dist/src/server/index.js +0 -1
  70. package/dist/src/server/index.js.map +1 -1
  71. package/dist/src/server/mcp-server.d.ts +6 -2
  72. package/dist/src/server/mcp-server.d.ts.map +1 -1
  73. package/dist/src/server/mcp-server.js +3 -91
  74. package/dist/src/server/mcp-server.js.map +1 -1
  75. package/dist/src/server/server-config.d.ts +4 -20
  76. package/dist/src/server/server-config.d.ts.map +1 -1
  77. package/dist/src/server/server-config.js +6 -50
  78. package/dist/src/server/server-config.js.map +1 -1
  79. package/dist/src/server/tool-registrar.types.d.ts +25 -0
  80. package/dist/src/server/tool-registrar.types.d.ts.map +1 -0
  81. package/dist/src/server/tool-registrar.types.js +10 -0
  82. package/dist/src/server/tool-registrar.types.js.map +1 -0
  83. package/dist/src/server/tool-result-handler.d.ts +61 -0
  84. package/dist/src/server/tool-result-handler.d.ts.map +1 -0
  85. package/dist/src/server/tool-result-handler.js +155 -0
  86. package/dist/src/server/tool-result-handler.js.map +1 -0
  87. package/dist/src/session/session-controller.d.ts +124 -0
  88. package/dist/src/session/session-controller.d.ts.map +1 -0
  89. package/dist/src/session/session-controller.js +276 -0
  90. package/dist/src/session/session-controller.js.map +1 -0
  91. package/dist/src/shared/services/index.d.ts +0 -2
  92. package/dist/src/shared/services/index.d.ts.map +1 -1
  93. package/dist/src/shared/services/index.js +0 -2
  94. package/dist/src/shared/services/index.js.map +1 -1
  95. package/dist/src/shared/version.d.ts +10 -0
  96. package/dist/src/shared/version.d.ts.map +1 -0
  97. package/dist/src/shared/version.js +32 -0
  98. package/dist/src/shared/version.js.map +1 -0
  99. package/dist/src/snapshot/element-resolver.d.ts +3 -2
  100. package/dist/src/snapshot/element-resolver.d.ts.map +1 -1
  101. package/dist/src/snapshot/element-resolver.js +83 -8
  102. package/dist/src/snapshot/element-resolver.js.map +1 -1
  103. package/dist/src/snapshot/extractors/attribute-extractor.d.ts.map +1 -1
  104. package/dist/src/snapshot/extractors/attribute-extractor.js +4 -0
  105. package/dist/src/snapshot/extractors/attribute-extractor.js.map +1 -1
  106. package/dist/src/snapshot/extractors/layout-extractor.d.ts +9 -7
  107. package/dist/src/snapshot/extractors/layout-extractor.d.ts.map +1 -1
  108. package/dist/src/snapshot/extractors/layout-extractor.js +34 -19
  109. package/dist/src/snapshot/extractors/layout-extractor.js.map +1 -1
  110. package/dist/src/snapshot/extractors/state-extractor.d.ts +2 -2
  111. package/dist/src/snapshot/extractors/state-extractor.d.ts.map +1 -1
  112. package/dist/src/snapshot/extractors/state-extractor.js +22 -2
  113. package/dist/src/snapshot/extractors/state-extractor.js.map +1 -1
  114. package/dist/src/snapshot/extractors/types.d.ts +6 -0
  115. package/dist/src/snapshot/extractors/types.d.ts.map +1 -1
  116. package/dist/src/snapshot/extractors/types.js.map +1 -1
  117. package/dist/src/snapshot/snapshot-compiler.d.ts.map +1 -1
  118. package/dist/src/snapshot/snapshot-compiler.js +15 -2
  119. package/dist/src/snapshot/snapshot-compiler.js.map +1 -1
  120. package/dist/src/snapshot/snapshot.types.d.ts +10 -1
  121. package/dist/src/snapshot/snapshot.types.d.ts.map +1 -1
  122. package/dist/src/snapshot/snapshot.types.js.map +1 -1
  123. package/dist/src/state/actionables-filter.d.ts.map +1 -1
  124. package/dist/src/state/actionables-filter.js +7 -3
  125. package/dist/src/state/actionables-filter.js.map +1 -1
  126. package/dist/src/state/atoms-extractor.d.ts.map +1 -1
  127. package/dist/src/state/atoms-extractor.js +3 -23
  128. package/dist/src/state/atoms-extractor.js.map +1 -1
  129. package/dist/src/state/diff-engine.d.ts.map +1 -1
  130. package/dist/src/state/diff-engine.js +6 -33
  131. package/dist/src/state/diff-engine.js.map +1 -1
  132. package/dist/src/state/element-identity.d.ts +3 -6
  133. package/dist/src/state/element-identity.d.ts.map +1 -1
  134. package/dist/src/state/element-identity.js +10 -7
  135. package/dist/src/state/element-identity.js.map +1 -1
  136. package/dist/src/state/element-ref.types.d.ts +5 -27
  137. package/dist/src/state/element-ref.types.d.ts.map +1 -1
  138. package/dist/src/state/state-manager.d.ts.map +1 -1
  139. package/dist/src/state/state-manager.js +3 -1
  140. package/dist/src/state/state-manager.js.map +1 -1
  141. package/dist/src/state/state-renderer.d.ts.map +1 -1
  142. package/dist/src/state/state-renderer.js +3 -1
  143. package/dist/src/state/state-renderer.js.map +1 -1
  144. package/dist/src/state/types.d.ts +2 -1
  145. package/dist/src/state/types.d.ts.map +1 -1
  146. package/dist/src/state/url-sanitization.d.ts +1 -1
  147. package/dist/src/state/url-sanitization.d.ts.map +1 -1
  148. package/dist/src/state/url-sanitization.js +29 -13
  149. package/dist/src/state/url-sanitization.js.map +1 -1
  150. package/dist/src/tools/action-context.d.ts +6 -11
  151. package/dist/src/tools/action-context.d.ts.map +1 -1
  152. package/dist/src/tools/action-context.js +10 -19
  153. package/dist/src/tools/action-context.js.map +1 -1
  154. package/dist/src/tools/action-stabilization.d.ts.map +1 -1
  155. package/dist/src/tools/action-stabilization.js +6 -0
  156. package/dist/src/tools/action-stabilization.js.map +1 -1
  157. package/dist/src/tools/browser-tools.d.ts +4 -2
  158. package/dist/src/tools/browser-tools.d.ts.map +1 -1
  159. package/dist/src/tools/browser-tools.js +7 -3
  160. package/dist/src/tools/browser-tools.js.map +1 -1
  161. package/dist/src/tools/canvas-tools.d.ts +2 -1
  162. package/dist/src/tools/canvas-tools.d.ts.map +1 -1
  163. package/dist/src/tools/canvas-tools.js +5 -7
  164. package/dist/src/tools/canvas-tools.js.map +1 -1
  165. package/dist/src/tools/errors.d.ts +2 -34
  166. package/dist/src/tools/errors.d.ts.map +1 -1
  167. package/dist/src/tools/errors.js +1 -44
  168. package/dist/src/tools/errors.js.map +1 -1
  169. package/dist/src/tools/execute-action.d.ts +4 -3
  170. package/dist/src/tools/execute-action.d.ts.map +1 -1
  171. package/dist/src/tools/execute-action.js +32 -23
  172. package/dist/src/tools/execute-action.js.map +1 -1
  173. package/dist/src/tools/form-tools.d.ts +3 -8
  174. package/dist/src/tools/form-tools.d.ts.map +1 -1
  175. package/dist/src/tools/form-tools.js +38 -18
  176. package/dist/src/tools/form-tools.js.map +1 -1
  177. package/dist/src/tools/index.d.ts +8 -6
  178. package/dist/src/tools/index.d.ts.map +1 -1
  179. package/dist/src/tools/index.js +10 -10
  180. package/dist/src/tools/index.js.map +1 -1
  181. package/dist/src/tools/interaction-tools.d.ts +6 -5
  182. package/dist/src/tools/interaction-tools.d.ts.map +1 -1
  183. package/dist/src/tools/interaction-tools.js +29 -32
  184. package/dist/src/tools/interaction-tools.js.map +1 -1
  185. package/dist/src/tools/navigation-tools.d.ts +7 -13
  186. package/dist/src/tools/navigation-tools.d.ts.map +1 -1
  187. package/dist/src/tools/navigation-tools.js +57 -59
  188. package/dist/src/tools/navigation-tools.js.map +1 -1
  189. package/dist/src/tools/network-tools.d.ts +10 -0
  190. package/dist/src/tools/network-tools.d.ts.map +1 -0
  191. package/dist/src/tools/network-tools.js +117 -0
  192. package/dist/src/tools/network-tools.js.map +1 -0
  193. package/dist/src/tools/observation-tools.d.ts +6 -5
  194. package/dist/src/tools/observation-tools.d.ts.map +1 -1
  195. package/dist/src/tools/observation-tools.js +30 -34
  196. package/dist/src/tools/observation-tools.js.map +1 -1
  197. package/dist/src/tools/readability-tools.d.ts +16 -0
  198. package/dist/src/tools/readability-tools.d.ts.map +1 -0
  199. package/dist/src/tools/readability-tools.js +45 -0
  200. package/dist/src/tools/readability-tools.js.map +1 -0
  201. package/dist/src/tools/response-builder.d.ts +20 -32
  202. package/dist/src/tools/response-builder.d.ts.map +1 -1
  203. package/dist/src/tools/response-builder.js +31 -47
  204. package/dist/src/tools/response-builder.js.map +1 -1
  205. package/dist/src/tools/stale-element-retry.d.ts.map +1 -1
  206. package/dist/src/tools/stale-element-retry.js +37 -2
  207. package/dist/src/tools/stale-element-retry.js.map +1 -1
  208. package/dist/src/tools/tool-context.d.ts +4 -36
  209. package/dist/src/tools/tool-context.d.ts.map +1 -1
  210. package/dist/src/tools/tool-context.js +6 -75
  211. package/dist/src/tools/tool-context.js.map +1 -1
  212. package/dist/src/tools/tool-context.types.d.ts +147 -0
  213. package/dist/src/tools/tool-context.types.d.ts.map +1 -0
  214. package/dist/src/tools/tool-context.types.js +11 -0
  215. package/dist/src/tools/tool-context.types.js.map +1 -0
  216. package/dist/src/tools/tool-registration.d.ts +25 -0
  217. package/dist/src/tools/tool-registration.d.ts.map +1 -0
  218. package/dist/src/tools/tool-registration.js +195 -0
  219. package/dist/src/tools/tool-registration.js.map +1 -0
  220. package/dist/src/tools/tool-schemas.d.ts +178 -1947
  221. package/dist/src/tools/tool-schemas.d.ts.map +1 -1
  222. package/dist/src/tools/tool-schemas.js +130 -302
  223. package/dist/src/tools/tool-schemas.js.map +1 -1
  224. package/dist/src/tools/viewport-tools.d.ts +4 -3
  225. package/dist/src/tools/viewport-tools.d.ts.map +1 -1
  226. package/dist/src/tools/viewport-tools.js +17 -21
  227. package/dist/src/tools/viewport-tools.js.map +1 -1
  228. package/dist/src/worker/chrome-worker-process.d.ts +4 -0
  229. package/dist/src/worker/chrome-worker-process.d.ts.map +1 -1
  230. package/dist/src/worker/chrome-worker-process.js +1 -1
  231. package/dist/src/worker/chrome-worker-process.js.map +1 -1
  232. package/dist/vitest.config.js +1 -1
  233. package/dist/vitest.config.js.map +1 -1
  234. package/dist/vitest.integration.config.d.ts +3 -0
  235. package/dist/vitest.integration.config.d.ts.map +1 -0
  236. package/dist/vitest.integration.config.js +11 -0
  237. package/dist/vitest.integration.config.js.map +1 -0
  238. package/package.json +20 -5
  239. package/dist/src/factpack/action-selector.d.ts +0 -36
  240. package/dist/src/factpack/action-selector.d.ts.map +0 -1
  241. package/dist/src/factpack/action-selector.js +0 -367
  242. package/dist/src/factpack/action-selector.js.map +0 -1
  243. package/dist/src/factpack/dialog-detector.d.ts +0 -19
  244. package/dist/src/factpack/dialog-detector.d.ts.map +0 -1
  245. package/dist/src/factpack/dialog-detector.js +0 -354
  246. package/dist/src/factpack/dialog-detector.js.map +0 -1
  247. package/dist/src/factpack/form-detector.d.ts +0 -28
  248. package/dist/src/factpack/form-detector.d.ts.map +0 -1
  249. package/dist/src/factpack/form-detector.js +0 -555
  250. package/dist/src/factpack/form-detector.js.map +0 -1
  251. package/dist/src/factpack/index.d.ts +0 -32
  252. package/dist/src/factpack/index.d.ts.map +0 -1
  253. package/dist/src/factpack/index.js +0 -73
  254. package/dist/src/factpack/index.js.map +0 -1
  255. package/dist/src/factpack/page-classifier.d.ts +0 -22
  256. package/dist/src/factpack/page-classifier.d.ts.map +0 -1
  257. package/dist/src/factpack/page-classifier.js +0 -526
  258. package/dist/src/factpack/page-classifier.js.map +0 -1
  259. package/dist/src/factpack/types.d.ts +0 -307
  260. package/dist/src/factpack/types.d.ts.map +0 -1
  261. package/dist/src/factpack/types.js +0 -12
  262. package/dist/src/factpack/types.js.map +0 -1
  263. package/dist/src/lib/constants.d.ts +0 -27
  264. package/dist/src/lib/constants.d.ts.map +0 -1
  265. package/dist/src/lib/constants.js +0 -63
  266. package/dist/src/lib/constants.js.map +0 -1
  267. package/dist/src/lib/index.d.ts +0 -12
  268. package/dist/src/lib/index.d.ts.map +0 -1
  269. package/dist/src/lib/index.js +0 -17
  270. package/dist/src/lib/index.js.map +0 -1
  271. package/dist/src/lib/regions.d.ts +0 -29
  272. package/dist/src/lib/regions.d.ts.map +0 -1
  273. package/dist/src/lib/regions.js +0 -93
  274. package/dist/src/lib/regions.js.map +0 -1
  275. package/dist/src/lib/scoring.d.ts +0 -47
  276. package/dist/src/lib/scoring.d.ts.map +0 -1
  277. package/dist/src/lib/scoring.js +0 -79
  278. package/dist/src/lib/scoring.js.map +0 -1
  279. package/dist/src/lib/selectors.d.ts +0 -42
  280. package/dist/src/lib/selectors.d.ts.map +0 -1
  281. package/dist/src/lib/selectors.js +0 -138
  282. package/dist/src/lib/selectors.js.map +0 -1
  283. package/dist/src/renderer/budget-manager.d.ts +0 -46
  284. package/dist/src/renderer/budget-manager.d.ts.map +0 -1
  285. package/dist/src/renderer/budget-manager.js +0 -133
  286. package/dist/src/renderer/budget-manager.js.map +0 -1
  287. package/dist/src/renderer/constants.d.ts +0 -38
  288. package/dist/src/renderer/constants.d.ts.map +0 -1
  289. package/dist/src/renderer/constants.js +0 -29
  290. package/dist/src/renderer/constants.js.map +0 -1
  291. package/dist/src/renderer/index.d.ts +0 -12
  292. package/dist/src/renderer/index.d.ts.map +0 -1
  293. package/dist/src/renderer/index.js +0 -16
  294. package/dist/src/renderer/index.js.map +0 -1
  295. package/dist/src/renderer/section-renderers.d.ts +0 -42
  296. package/dist/src/renderer/section-renderers.d.ts.map +0 -1
  297. package/dist/src/renderer/section-renderers.js +0 -252
  298. package/dist/src/renderer/section-renderers.js.map +0 -1
  299. package/dist/src/renderer/token-counter.d.ts +0 -45
  300. package/dist/src/renderer/token-counter.d.ts.map +0 -1
  301. package/dist/src/renderer/token-counter.js +0 -65
  302. package/dist/src/renderer/token-counter.js.map +0 -1
  303. package/dist/src/renderer/types.d.ts +0 -71
  304. package/dist/src/renderer/types.d.ts.map +0 -1
  305. package/dist/src/renderer/types.js +0 -7
  306. package/dist/src/renderer/types.js.map +0 -1
  307. package/dist/src/renderer/xml-renderer.d.ts +0 -42
  308. package/dist/src/renderer/xml-renderer.d.ts.map +0 -1
  309. package/dist/src/renderer/xml-renderer.js +0 -103
  310. package/dist/src/renderer/xml-renderer.js.map +0 -1
  311. package/dist/src/server/session-store.d.ts +0 -163
  312. package/dist/src/server/session-store.d.ts.map +0 -1
  313. package/dist/src/server/session-store.js +0 -248
  314. package/dist/src/server/session-store.js.map +0 -1
  315. package/dist/src/session/session-worker-binding.d.ts +0 -57
  316. package/dist/src/session/session-worker-binding.d.ts.map +0 -1
  317. package/dist/src/session/session-worker-binding.js +0 -109
  318. package/dist/src/session/session-worker-binding.js.map +0 -1
  319. package/dist/src/shared/services/dom-transformer.service.d.ts +0 -71
  320. package/dist/src/shared/services/dom-transformer.service.d.ts.map +0 -1
  321. package/dist/src/shared/services/dom-transformer.service.js +0 -190
  322. package/dist/src/shared/services/dom-transformer.service.js.map +0 -1
  323. package/dist/src/shared/services/selector-builder.service.d.ts +0 -53
  324. package/dist/src/shared/services/selector-builder.service.d.ts.map +0 -1
  325. package/dist/src/shared/services/selector-builder.service.js +0 -240
  326. package/dist/src/shared/services/selector-builder.service.js.map +0 -1
  327. package/dist/src/state/constants.d.ts +0 -125
  328. package/dist/src/state/constants.d.ts.map +0 -1
  329. package/dist/src/state/constants.js +0 -131
  330. package/dist/src/state/constants.js.map +0 -1
  331. package/dist/src/tools/state-manager-registry.d.ts +0 -26
  332. package/dist/src/tools/state-manager-registry.d.ts.map +0 -1
  333. package/dist/src/tools/state-manager-registry.js +0 -39
  334. package/dist/src/tools/state-manager-registry.js.map +0 -1
@@ -4,13 +4,14 @@
4
4
  * MCP tool handlers for page observation: snapshots, find, get_element, scroll.
5
5
  */
6
6
  import type { NodeKind } from '../snapshot/snapshot.types.js';
7
+ import type { ToolContext } from './tool-context.types.js';
7
8
  /**
8
9
  * Capture a fresh snapshot of the current page.
9
10
  *
10
11
  * @param rawInput - Capture options (will be validated)
11
12
  * @returns Snapshot data for the current page
12
13
  */
13
- export declare function captureSnapshot(rawInput: unknown): Promise<import('./tool-schemas.js').CaptureSnapshotOutput>;
14
+ export declare function captureSnapshot(rawInput: unknown, ctx: ToolContext): Promise<import('./tool-schemas.js').CaptureSnapshotOutput>;
14
15
  /**
15
16
  * Map schema kind values to internal NodeKind values.
16
17
  *
@@ -28,26 +29,26 @@ export declare function mapSchemaKindToNodeKind(schemaKind: string): NodeKind |
28
29
  * @param rawInput - Query filters (will be validated)
29
30
  * @returns Matched nodes
30
31
  */
31
- export declare function findElements(rawInput: unknown): import('./tool-schemas.js').FindElementsOutput;
32
+ export declare function findElements(rawInput: unknown, ctx: ToolContext): import('./tool-schemas.js').FindElementsOutput;
32
33
  /**
33
34
  * Get full details for a specific node.
34
35
  *
35
36
  * @param rawInput - Node details request (will be validated)
36
37
  * @returns Full node details
37
38
  */
38
- export declare function getNodeDetails(rawInput: unknown): import('./tool-schemas.js').GetNodeDetailsOutput;
39
+ export declare function getNodeDetails(rawInput: unknown, ctx: ToolContext): import('./tool-schemas.js').GetNodeDetailsOutput;
39
40
  /**
40
41
  * Scroll an element into view.
41
42
  *
42
43
  * @param rawInput - Scroll options (will be validated)
43
44
  * @returns Scroll result with delta
44
45
  */
45
- export declare function scrollElementIntoView(rawInput: unknown): Promise<import('./tool-schemas.js').ScrollElementIntoViewOutput>;
46
+ export declare function scrollElementIntoView(rawInput: unknown, ctx: ToolContext): Promise<import('./tool-schemas.js').ScrollElementIntoViewOutput>;
46
47
  /**
47
48
  * Scroll the page up or down.
48
49
  *
49
50
  * @param rawInput - Scroll options (will be validated)
50
51
  * @returns Scroll result with delta
51
52
  */
52
- export declare function scrollPage(rawInput: unknown): Promise<import('./tool-schemas.js').ScrollPageOutput>;
53
+ export declare function scrollPage(rawInput: unknown, ctx: ToolContext): Promise<import('./tool-schemas.js').ScrollPageOutput>;
53
54
  //# sourceMappingURL=observation-tools.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"observation-tools.d.ts","sourceRoot":"","sources":["../../../src/tools/observation-tools.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAeH,OAAO,KAAK,EAAE,QAAQ,EAAkB,MAAM,+BAA+B,CAAC;AAuB9E;;;;;GAKG;AACH,wBAAsB,eAAe,CACnC,QAAQ,EAAE,OAAO,GAChB,OAAO,CAAC,OAAO,mBAAmB,EAAE,qBAAqB,CAAC,CA8B5D;AAED;;;;;;;;;GASG;AACH,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,MAAM,GAAG,QAAQ,GAAG,QAAQ,EAAE,CASjF;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,OAAO,GAAG,OAAO,mBAAmB,EAAE,kBAAkB,CA2F9F;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,OAAO,GAChB,OAAO,mBAAmB,EAAE,oBAAoB,CAqDlD;AAED;;;;;GAKG;AACH,wBAAsB,qBAAqB,CACzC,QAAQ,EAAE,OAAO,GAChB,OAAO,CAAC,OAAO,mBAAmB,EAAE,2BAA2B,CAAC,CAuBlE;AAED;;;;;GAKG;AACH,wBAAsB,UAAU,CAC9B,QAAQ,EAAE,OAAO,GAChB,OAAO,CAAC,OAAO,mBAAmB,EAAE,gBAAgB,CAAC,CAkBvD"}
1
+ {"version":3,"file":"observation-tools.d.ts","sourceRoot":"","sources":["../../../src/tools/observation-tools.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAcH,OAAO,KAAK,EAAE,QAAQ,EAAkB,MAAM,+BAA+B,CAAC;AAW9E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAE3D;;;;;GAKG;AACH,wBAAsB,eAAe,CACnC,QAAQ,EAAE,OAAO,EACjB,GAAG,EAAE,WAAW,GACf,OAAO,CAAC,OAAO,mBAAmB,EAAE,qBAAqB,CAAC,CA8B5D;AAED;;;;;;;;;GASG;AACH,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,MAAM,GAAG,QAAQ,GAAG,QAAQ,EAAE,CASjF;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,OAAO,EACjB,GAAG,EAAE,WAAW,GACf,OAAO,mBAAmB,EAAE,kBAAkB,CA0FhD;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,OAAO,EACjB,GAAG,EAAE,WAAW,GACf,OAAO,mBAAmB,EAAE,oBAAoB,CAoDlD;AAED;;;;;GAKG;AACH,wBAAsB,qBAAqB,CACzC,QAAQ,EAAE,OAAO,EACjB,GAAG,EAAE,WAAW,GACf,OAAO,CAAC,OAAO,mBAAmB,EAAE,2BAA2B,CAAC,CAwBlE;AAED;;;;;GAKG;AACH,wBAAsB,UAAU,CAC9B,QAAQ,EAAE,OAAO,EACjB,GAAG,EAAE,WAAW,GACf,OAAO,CAAC,OAAO,mBAAmB,EAAE,gBAAgB,CAAC,CAmBvD"}
@@ -4,7 +4,6 @@
4
4
  * MCP tool handlers for page observation: snapshots, find, get_element, scroll.
5
5
  */
6
6
  import { scrollIntoView, scrollPage as scrollPageByAmount } from '../snapshot/index.js';
7
- import { observationAccumulator } from '../observation/index.js';
8
7
  import { ATTACHMENT_SIGNIFICANCE_THRESHOLD } from '../observation/observation.types.js';
9
8
  import { CaptureSnapshotInputSchema, FindElementsInputSchema, GetNodeDetailsInputSchema, ScrollElementIntoViewInputSchema, ScrollPageInputSchema, } from './tool-schemas.js';
10
9
  import { QueryEngine } from '../query/query-engine.js';
@@ -12,37 +11,36 @@ import { isReadableNode, isStructuralNode, isLiveRegionNode } from '../snapshot/
12
11
  import { computeEid } from '../state/element-identity.js';
13
12
  import { LIVE_REGION_KINDS } from '../state/actionables-filter.js';
14
13
  import { executeAction, executeActionWithRetry } from './execute-action.js';
15
- import { getStateManager } from './state-manager-registry.js';
16
14
  import { buildFindElementsResponse, buildGetElementDetailsResponse, } from './response-builder.js';
17
- import { getSessionManager, getSnapshotStore, resolveExistingPage, requireSnapshot, resolveElementByEid, } from './tool-context.js';
18
- import { captureSnapshotWithRecovery, prepareActionContext } from './action-context.js';
19
- // Convenience alias for module-internal use
20
- const snapshotStore = getSnapshotStore();
15
+ import { prepareActionContext } from './action-context.js';
21
16
  /**
22
17
  * Capture a fresh snapshot of the current page.
23
18
  *
24
19
  * @param rawInput - Capture options (will be validated)
25
20
  * @returns Snapshot data for the current page
26
21
  */
27
- export async function captureSnapshot(rawInput) {
22
+ export async function captureSnapshot(rawInput, ctx) {
28
23
  const input = CaptureSnapshotInputSchema.parse(rawInput);
29
- const session = getSessionManager();
30
- let handle = resolveExistingPage(session, input.page_id);
24
+ let handle = ctx.resolveExistingPage(input.page_id);
31
25
  const page_id = handle.page_id;
32
26
  // Capture any accumulated observations (no action window)
33
- const observations = await observationAccumulator.getAccumulatedObservations(handle.page);
34
- const captureResult = await captureSnapshotWithRecovery(session, handle, page_id);
27
+ const observations = await ctx
28
+ .getObservationAccumulator()
29
+ .getAccumulatedObservations(handle.page);
30
+ const captureResult = await ctx.captureSnapshotWithRecovery(handle, page_id);
35
31
  handle = captureResult.handle;
36
32
  const snapshot = captureResult.snapshot;
37
33
  // Filter observations to reduce noise (threshold 5 requires semantic signals)
38
- const filteredObservations = observationAccumulator.filterBySignificance(observations, ATTACHMENT_SIGNIFICANCE_THRESHOLD);
34
+ const filteredObservations = ctx
35
+ .getObservationAccumulator()
36
+ .filterBySignificance(observations, ATTACHMENT_SIGNIFICANCE_THRESHOLD);
39
37
  // Attach accumulated observations to snapshot if any
40
38
  if (filteredObservations.sincePrevious.length > 0) {
41
39
  snapshot.observations = filteredObservations;
42
40
  }
43
- snapshotStore.store(page_id, snapshot);
41
+ ctx.getSnapshotStore().store(page_id, snapshot);
44
42
  // Return XML state response directly (trimmed for observation snapshots)
45
- const stateManager = getStateManager(page_id);
43
+ const stateManager = ctx.getStateManager(page_id);
46
44
  return stateManager.generateResponse(snapshot, { trimRegions: true });
47
45
  }
48
46
  /**
@@ -71,12 +69,11 @@ export function mapSchemaKindToNodeKind(schemaKind) {
71
69
  * @param rawInput - Query filters (will be validated)
72
70
  * @returns Matched nodes
73
71
  */
74
- export function findElements(rawInput) {
72
+ export function findElements(rawInput, ctx) {
75
73
  const input = FindElementsInputSchema.parse(rawInput);
76
- const session = getSessionManager();
77
- const handle = resolveExistingPage(session, input.page_id);
74
+ const handle = ctx.resolveExistingPage(input.page_id);
78
75
  const page_id = handle.page_id;
79
- const snap = snapshotStore.getByPageId(page_id);
76
+ const snap = ctx.getSnapshotStore().getByPageId(page_id);
80
77
  if (!snap) {
81
78
  throw new Error(`No snapshot for page ${page_id} - capture a snapshot first`);
82
79
  }
@@ -96,7 +93,7 @@ export function findElements(rawInput) {
96
93
  const engine = new QueryEngine(snap);
97
94
  const response = engine.find(request);
98
95
  // Get registry and state manager for EID lookup
99
- const stateManager = getStateManager(page_id);
96
+ const stateManager = ctx.getStateManager(page_id);
100
97
  const registry = stateManager.getElementRegistry();
101
98
  const activeLayer = stateManager.getActiveLayer();
102
99
  const matches = response.matches.map((m) => {
@@ -159,17 +156,16 @@ export function findElements(rawInput) {
159
156
  * @param rawInput - Node details request (will be validated)
160
157
  * @returns Full node details
161
158
  */
162
- export function getNodeDetails(rawInput) {
159
+ export function getNodeDetails(rawInput, ctx) {
163
160
  const input = GetNodeDetailsInputSchema.parse(rawInput);
164
- const session = getSessionManager();
165
- const handle = resolveExistingPage(session, input.page_id);
161
+ const handle = ctx.resolveExistingPage(input.page_id);
166
162
  const page_id = handle.page_id;
167
- const snap = snapshotStore.getByPageId(page_id);
163
+ const snap = ctx.getSnapshotStore().getByPageId(page_id);
168
164
  if (!snap) {
169
165
  throw new Error(`No snapshot for page ${page_id} - capture a snapshot first`);
170
166
  }
171
167
  // Look up element by EID from registry
172
- const stateManager = getStateManager(page_id);
168
+ const stateManager = ctx.getStateManager(page_id);
173
169
  const elementRef = stateManager.getElementRegistry().getByEid(input.eid);
174
170
  if (!elementRef) {
175
171
  throw new Error(`Element with eid ${input.eid} not found in registry`);
@@ -212,17 +208,17 @@ export function getNodeDetails(rawInput) {
212
208
  * @param rawInput - Scroll options (will be validated)
213
209
  * @returns Scroll result with delta
214
210
  */
215
- export async function scrollElementIntoView(rawInput) {
211
+ export async function scrollElementIntoView(rawInput, ctx) {
216
212
  const input = ScrollElementIntoViewInputSchema.parse(rawInput);
217
- const { handleRef, pageId, captureSnapshot } = await prepareActionContext(input.page_id);
218
- const snap = requireSnapshot(pageId);
219
- const node = resolveElementByEid(pageId, input.eid, snap);
213
+ const { handleRef, pageId, captureSnapshot } = await prepareActionContext(input.page_id, ctx);
214
+ const snap = ctx.requireSnapshot(pageId);
215
+ const node = ctx.resolveElementByEid(pageId, input.eid, snap);
220
216
  // Execute action with automatic retry on stale elements
221
217
  const result = await executeActionWithRetry(handleRef.current, node, async (backendNodeId) => {
222
218
  await scrollIntoView(handleRef.current.cdp, backendNodeId);
223
- }, snapshotStore, captureSnapshot);
219
+ }, ctx, ctx.getSnapshotStore(), captureSnapshot);
224
220
  // Store snapshot for future queries
225
- snapshotStore.store(pageId, result.snapshot);
221
+ ctx.getSnapshotStore().store(pageId, result.snapshot);
226
222
  // Return XML state response directly
227
223
  return result.state_response;
228
224
  }
@@ -232,15 +228,15 @@ export async function scrollElementIntoView(rawInput) {
232
228
  * @param rawInput - Scroll options (will be validated)
233
229
  * @returns Scroll result with delta
234
230
  */
235
- export async function scrollPage(rawInput) {
231
+ export async function scrollPage(rawInput, ctx) {
236
232
  const input = ScrollPageInputSchema.parse(rawInput);
237
- const { handleRef, pageId, captureSnapshot } = await prepareActionContext(input.page_id);
233
+ const { handleRef, pageId, captureSnapshot } = await prepareActionContext(input.page_id, ctx);
238
234
  // Execute action with new simplified wrapper
239
235
  const result = await executeAction(handleRef.current, async () => {
240
236
  await scrollPageByAmount(handleRef.current.cdp, input.direction, input.amount);
241
- }, captureSnapshot);
237
+ }, ctx, captureSnapshot);
242
238
  // Store snapshot for future queries
243
- snapshotStore.store(pageId, result.snapshot);
239
+ ctx.getSnapshotStore().store(pageId, result.snapshot);
244
240
  // Return XML state response directly
245
241
  return result.state_response;
246
242
  }
@@ -1 +1 @@
1
- {"version":3,"file":"observation-tools.js","sourceRoot":"","sources":["../../../src/tools/observation-tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"observation-tools.js","sourceRoot":"","sources":["../../../src/tools/observation-tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Readability Tools
3
+ *
4
+ * MCP tool handler for extracting clean, readable page content
5
+ * using Mozilla's Readability.js (the engine behind Firefox Reader View).
6
+ */
7
+ import { type ReadPageOutput } from './tool-schemas.js';
8
+ import type { ToolContext } from './tool-context.types.js';
9
+ /**
10
+ * Extract the main readable content from the page.
11
+ *
12
+ * Uses Mozilla Readability (Firefox Reader View engine) to strip
13
+ * navigation, ads, and clutter, returning clean text with metadata.
14
+ */
15
+ export declare function readPage(rawInput: unknown, ctx: ToolContext): Promise<ReadPageOutput>;
16
+ //# sourceMappingURL=readability-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"readability-tools.d.ts","sourceRoot":"","sources":["../../../src/tools/readability-tools.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAuB,KAAK,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAC7E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAG3D;;;;;GAKG;AACH,wBAAsB,QAAQ,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,cAAc,CAAC,CA+B3F"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * Readability Tools
3
+ *
4
+ * MCP tool handler for extracting clean, readable page content
5
+ * using Mozilla's Readability.js (the engine behind Firefox Reader View).
6
+ */
7
+ import { Readability } from '@mozilla/readability';
8
+ import { JSDOM } from 'jsdom';
9
+ import { ReadPageInputSchema } from './tool-schemas.js';
10
+ import { buildReadPageResponse } from './response-builder.js';
11
+ /**
12
+ * Extract the main readable content from the page.
13
+ *
14
+ * Uses Mozilla Readability (Firefox Reader View engine) to strip
15
+ * navigation, ads, and clutter, returning clean text with metadata.
16
+ */
17
+ export async function readPage(rawInput, ctx) {
18
+ const input = ReadPageInputSchema.parse(rawInput);
19
+ const handle = ctx.resolveExistingPage(input.page_id);
20
+ // Get full page HTML and URL
21
+ const html = await handle.page.content();
22
+ const url = handle.page.url();
23
+ // Parse with JSDOM and extract with Readability
24
+ const doc = new JSDOM(html, { url });
25
+ try {
26
+ const reader = new Readability(doc.window.document);
27
+ const article = reader.parse();
28
+ if (!article) {
29
+ return '<result type="read_page"><error>Could not extract readable content from this page. The page may not have article-like content. Try using snapshot instead for structured page state.</error></result>';
30
+ }
31
+ return buildReadPageResponse({
32
+ title: article.title ?? '',
33
+ byline: article.byline ?? null,
34
+ excerpt: article.excerpt ?? null,
35
+ siteName: article.siteName ?? null,
36
+ lang: article.lang ?? null,
37
+ textContent: article.textContent ?? '',
38
+ length: article.length ?? 0,
39
+ });
40
+ }
41
+ finally {
42
+ doc.window.close();
43
+ }
44
+ }
45
+ //# sourceMappingURL=readability-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"readability-tools.js","sourceRoot":"","sources":["../../../src/tools/readability-tools.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAC9B,OAAO,EAAE,mBAAmB,EAAuB,MAAM,mBAAmB,CAAC;AAE7E,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAE9D;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,QAAiB,EAAE,GAAgB;IAChE,MAAM,KAAK,GAAG,mBAAmB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAElD,MAAM,MAAM,GAAG,GAAG,CAAC,mBAAmB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAEtD,6BAA6B;IAC7B,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;IACzC,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;IAE9B,gDAAgD;IAChD,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;IACrC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACpD,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC;QAE/B,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,uMAAuM,CAAC;QACjN,CAAC;QAED,OAAO,qBAAqB,CAAC;YAC3B,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,EAAE;YAC1B,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,IAAI;YAC9B,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,IAAI;YAChC,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,IAAI;YAClC,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,IAAI;YAC1B,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,EAAE;YACtC,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,CAAC;SAC5B,CAAC,CAAC;IACL,CAAC;YAAS,CAAC;QACT,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;AACH,CAAC"}
@@ -5,33 +5,8 @@
5
5
  * - State tools return `<state>...</state>` (via StateManager)
6
6
  * - Data tools return `<result type="...">...</result>` (via builders here)
7
7
  */
8
- import type { BaseSnapshot, NodeState } from '../snapshot/snapshot.types.js';
9
- import type { StateResponse } from '../state/types.js';
8
+ import type { NodeState } from '../snapshot/snapshot.types.js';
10
9
  import type { NodeDetails } from './tool-schemas.js';
11
- /**
12
- * Build an XML state response for a page snapshot.
13
- *
14
- * This is the standard way to generate a response for tools that:
15
- * - Launch/connect browsers
16
- * - Navigate to URLs
17
- * - Capture snapshots directly
18
- * - Perform mutations (click, type, etc.)
19
- *
20
- * @param pageId - The page identifier
21
- * @param snapshot - The captured snapshot
22
- * @returns XML state response string
23
- */
24
- export declare function buildStateResponse(pageId: string, snapshot: BaseSnapshot): StateResponse;
25
- /**
26
- * Build an error response.
27
- *
28
- * This provides a consistent error format across all tools.
29
- *
30
- * @param pageId - The page identifier
31
- * @param error - The error message or Error object
32
- * @returns XML state response string with error
33
- */
34
- export declare function buildErrorResponse(pageId: string, error: Error | string): StateResponse;
35
10
  /**
36
11
  * Page metadata for list_pages response.
37
12
  */
@@ -54,12 +29,6 @@ export declare function buildListPagesResponse(pages: PageInfo[]): string;
54
29
  * @returns XML result string
55
30
  */
56
31
  export declare function buildClosePageResponse(pageId: string): string;
57
- /**
58
- * Build XML response for close_session tool.
59
- *
60
- * @returns XML result string
61
- */
62
- export declare function buildCloseSessionResponse(): string;
63
32
  /**
64
33
  * Match item from find_elements query.
65
34
  */
@@ -83,6 +52,25 @@ export interface FindElementsMatch {
83
52
  * @returns XML result string
84
53
  */
85
54
  export declare function buildFindElementsResponse(pageId: string, snapshotId: string, matches: FindElementsMatch[]): string;
55
+ /**
56
+ * Article metadata for read_page response.
57
+ */
58
+ export interface ReadPageArticle {
59
+ title: string;
60
+ byline: string | null;
61
+ excerpt: string | null;
62
+ siteName: string | null;
63
+ lang: string | null;
64
+ textContent: string;
65
+ length: number;
66
+ }
67
+ /**
68
+ * Build XML response for read_page tool.
69
+ *
70
+ * @param article - Extracted article metadata and content
71
+ * @returns XML result string
72
+ */
73
+ export declare function buildReadPageResponse(article: ReadPageArticle): string;
86
74
  /**
87
75
  * Build XML response for get_element_details tool.
88
76
  *
@@ -1 +1 @@
1
- {"version":3,"file":"response-builder.d.ts","sourceRoot":"","sources":["../../../src/tools/response-builder.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAE7E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAOrD;;;;;;;;;;;;GAYG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,GAAG,aAAa,CAGxF;AAED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,MAAM,GAAG,aAAa,CAIvF;AAMD;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,MAAM,CAWhE;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAI7D;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,IAAI,MAAM,CAIlD;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,kDAAkD;IAClD,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,sDAAsD;IACtD,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACrC;AAED;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,iBAAiB,EAAE,GAC3B,MAAM,CA+CR;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,8BAA8B,CAC5C,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,WAAW,GAChB,MAAM,CAqER"}
1
+ {"version":3,"file":"response-builder.d.ts","sourceRoot":"","sources":["../../../src/tools/response-builder.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAOrD;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,MAAM,CAWhE;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAI7D;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,kDAAkD;IAClD,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,sDAAsD;IACtD,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACrC;AAED;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,iBAAiB,EAAE,GAC3B,MAAM,CAiDR;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,eAAe,GAAG,MAAM,CAgBtE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,8BAA8B,CAC5C,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,WAAW,GAChB,MAAM,CAuER"}
@@ -5,42 +5,7 @@
5
5
  * - State tools return `<state>...</state>` (via StateManager)
6
6
  * - Data tools return `<result type="...">...</result>` (via builders here)
7
7
  */
8
- import { getStateManager } from './state-manager-registry.js';
9
8
  import { escapeXml, xmlAttr } from '../lib/text-utils.js';
10
- // ============================================================================
11
- // State Response Builders (for mutation/navigation tools)
12
- // ============================================================================
13
- /**
14
- * Build an XML state response for a page snapshot.
15
- *
16
- * This is the standard way to generate a response for tools that:
17
- * - Launch/connect browsers
18
- * - Navigate to URLs
19
- * - Capture snapshots directly
20
- * - Perform mutations (click, type, etc.)
21
- *
22
- * @param pageId - The page identifier
23
- * @param snapshot - The captured snapshot
24
- * @returns XML state response string
25
- */
26
- export function buildStateResponse(pageId, snapshot) {
27
- const stateManager = getStateManager(pageId);
28
- return stateManager.generateResponse(snapshot);
29
- }
30
- /**
31
- * Build an error response.
32
- *
33
- * This provides a consistent error format across all tools.
34
- *
35
- * @param pageId - The page identifier
36
- * @param error - The error message or Error object
37
- * @returns XML state response string with error
38
- */
39
- export function buildErrorResponse(pageId, error) {
40
- const stateManager = getStateManager(pageId);
41
- const errorMessage = error instanceof Error ? error.message : error;
42
- return stateManager.generateErrorResponse(errorMessage);
43
- }
44
9
  /**
45
10
  * Build XML response for list_pages tool.
46
11
  *
@@ -66,16 +31,6 @@ export function buildClosePageResponse(pageId) {
66
31
  <closed page_id="${escapeXml(pageId)}" />
67
32
  </result>`;
68
33
  }
69
- /**
70
- * Build XML response for close_session tool.
71
- *
72
- * @returns XML result string
73
- */
74
- export function buildCloseSessionResponse() {
75
- return `<result type="close_session" status="success">
76
- <closed />
77
- </result>`;
78
- }
79
34
  /**
80
35
  * Build XML response for find_elements tool.
81
36
  *
@@ -105,11 +60,13 @@ export function buildFindElementsResponse(pageId, snapshotId, matches) {
105
60
  if (m.state.enabled !== undefined)
106
61
  attrs.push(`enabled="${m.state.enabled ? 'true' : 'false'}"`);
107
62
  if (m.state.checked)
108
- attrs.push(`checked="true"`);
63
+ attrs.push(`checked="${m.state.checked === 'mixed' ? 'mixed' : 'true'}"`);
109
64
  if (m.state.expanded)
110
65
  attrs.push(`expanded="true"`);
111
66
  if (m.state.selected)
112
67
  attrs.push(`selected="true"`);
68
+ if (m.state.pressed)
69
+ attrs.push(`pressed="true"`);
113
70
  if (m.state.focused)
114
71
  attrs.push(`focused="true"`);
115
72
  }
@@ -129,6 +86,31 @@ export function buildFindElementsResponse(pageId, snapshotId, matches) {
129
86
  lines.push(`</result>`);
130
87
  return lines.join('\n');
131
88
  }
89
+ /**
90
+ * Build XML response for read_page tool.
91
+ *
92
+ * @param article - Extracted article metadata and content
93
+ * @returns XML result string
94
+ */
95
+ export function buildReadPageResponse(article) {
96
+ const metaAttrs = [xmlAttr('title', article.title)];
97
+ if (article.byline)
98
+ metaAttrs.push(xmlAttr('byline', article.byline));
99
+ if (article.excerpt)
100
+ metaAttrs.push(xmlAttr('excerpt', article.excerpt));
101
+ if (article.siteName)
102
+ metaAttrs.push(xmlAttr('site_name', article.siteName));
103
+ if (article.lang)
104
+ metaAttrs.push(xmlAttr('lang', article.lang));
105
+ const lines = [];
106
+ lines.push('<result type="read_page">');
107
+ lines.push(` <metadata ${metaAttrs.join(' ')} />`);
108
+ lines.push(` <content length="${article.length}">`);
109
+ lines.push(escapeXml(article.textContent.trim()));
110
+ lines.push(' </content>');
111
+ lines.push('</result>');
112
+ return lines.join('\n');
113
+ }
132
114
  /**
133
115
  * Build XML response for get_element_details tool.
134
116
  *
@@ -171,11 +153,13 @@ export function buildGetElementDetailsResponse(_pageId, _snapshotId, node) {
171
153
  if (node.state.enabled === false)
172
154
  attrs.push('enabled="false"');
173
155
  if (node.state.checked)
174
- attrs.push('checked="true"');
156
+ attrs.push(`checked="${node.state.checked === 'mixed' ? 'mixed' : 'true'}"`);
175
157
  if (node.state.expanded)
176
158
  attrs.push('expanded="true"');
177
159
  if (node.state.selected)
178
160
  attrs.push('selected="true"');
161
+ if (node.state.pressed)
162
+ attrs.push('pressed="true"');
179
163
  if (node.state.focused)
180
164
  attrs.push('focused="true"');
181
165
  if (node.state.required)
@@ -1 +1 @@
1
- {"version":3,"file":"response-builder.js","sourceRoot":"","sources":["../../../src/tools/response-builder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"response-builder.js","sourceRoot":"","sources":["../../../src/tools/response-builder.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"stale-element-retry.d.ts","sourceRoot":"","sources":["../../../src/tools/stale-element-retry.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAChF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAE7D;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CASzD;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,YAAY,CAAC;CACvB;AAED;;;;;;;;;GASG;AACH,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE,UAAU,EAClB,IAAI,EAAE,YAAY,EAClB,MAAM,EAAE,CAAC,aAAa,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,EAChD,OAAO,EAAE,iBAAiB,EAC1B,aAAa,CAAC,EAAE;IAAE,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,KAAK,IAAI,CAAA;CAAE,GAC1E,OAAO,CAAC,uBAAuB,CAAC,CA4ClC"}
1
+ {"version":3,"file":"stale-element-retry.d.ts","sourceRoot":"","sources":["../../../src/tools/stale-element-retry.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAChF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAE7D;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CASzD;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,YAAY,CAAC;CACvB;AA8CD;;;;;;;;;GASG;AACH,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE,UAAU,EAClB,IAAI,EAAE,YAAY,EAClB,MAAM,EAAE,CAAC,aAAa,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,EAChD,OAAO,EAAE,iBAAiB,EAC1B,aAAa,CAAC,EAAE;IAAE,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,KAAK,IAAI,CAAA;CAAE,GAC1E,OAAO,CAAC,uBAAuB,CAAC,CA0ClC"}
@@ -17,6 +17,41 @@ export function isStaleElementError(err) {
17
17
  message.includes('node is detached from document') ||
18
18
  message.includes('node has been deleted'));
19
19
  }
20
+ /**
21
+ * Find the best matching node in a fresh snapshot using label+kind plus
22
+ * location-based disambiguation scoring.
23
+ *
24
+ * Candidates must match on label and kind. Among those, we score by how many
25
+ * `where` properties (region, heading_context, group_id) also match. Ties are
26
+ * broken by choosing the node whose backend_node_id is closest to the original,
27
+ * as a proxy for DOM proximity.
28
+ */
29
+ function findBestMatch(original, freshNodes) {
30
+ const candidates = freshNodes.filter((n) => n.label === original.label && n.kind === original.kind);
31
+ if (candidates.length <= 1)
32
+ return candidates[0];
33
+ // Score each candidate by matching where-properties
34
+ const scored = candidates.map((candidate) => {
35
+ let score = 0;
36
+ if (candidate.where.region === original.where.region)
37
+ score++;
38
+ if (original.where.heading_context != null &&
39
+ candidate.where.heading_context === original.where.heading_context)
40
+ score++;
41
+ if (original.where.group_id != null && candidate.where.group_id === original.where.group_id)
42
+ score++;
43
+ return { candidate, score };
44
+ });
45
+ // Sort: highest score first, then closest backend_node_id as tiebreaker
46
+ scored.sort((a, b) => {
47
+ if (b.score !== a.score)
48
+ return b.score - a.score;
49
+ const distA = Math.abs(a.candidate.backend_node_id - original.backend_node_id);
50
+ const distB = Math.abs(b.candidate.backend_node_id - original.backend_node_id);
51
+ return distA - distB;
52
+ });
53
+ return scored[0].candidate;
54
+ }
20
55
  /**
21
56
  * Handle stale element retry logic.
22
57
  *
@@ -35,8 +70,8 @@ export async function handleStaleElementRetry(handle, node, action, capture, sna
35
70
  if (snapshotStore) {
36
71
  snapshotStore.store(handle.page_id, freshSnapshot);
37
72
  }
38
- // Find element by label in fresh snapshot
39
- const freshNode = freshSnapshot.nodes.find((n) => n.label === node.label && n.kind === node.kind);
73
+ // Find element by label+kind, then disambiguate using location context
74
+ const freshNode = findBestMatch(node, freshSnapshot.nodes);
40
75
  if (!freshNode) {
41
76
  return {
42
77
  success: false,
@@ -1 +1 @@
1
- {"version":3,"file":"stale-element-retry.js","sourceRoot":"","sources":["../../../src/tools/stale-element-retry.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAOH;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,GAAY;IAC9C,IAAI,CAAC,CAAC,GAAG,YAAY,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAC1C,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;IAC1C,OAAO,CACL,OAAO,CAAC,QAAQ,CAAC,oCAAoC,CAAC;QACtD,OAAO,CAAC,QAAQ,CAAC,6CAA6C,CAAC;QAC/D,OAAO,CAAC,QAAQ,CAAC,gCAAgC,CAAC;QAClD,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAC,CAC1C,CAAC;AACJ,CAAC;AAWD;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,MAAkB,EAClB,IAAkB,EAClB,MAAgD,EAChD,OAA0B,EAC1B,aAA2E;IAE3E,IAAI,CAAC;QACH,yBAAyB;QACzB,MAAM,aAAa,GAAG,CAAC,MAAM,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC;QAEjD,oCAAoC;QACpC,IAAI,aAAa,EAAE,CAAC;YAClB,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;QACrD,CAAC;QAED,0CAA0C;QAC1C,MAAM,SAAS,GAAG,aAAa,CAAC,KAAK,CAAC,IAAI,CACxC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CACtD,CAAC;QAEF,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,0CAA0C,IAAI,CAAC,KAAK,EAAE;gBAC7D,OAAO,EAAE;oBACP,MAAM,EAAE,mBAAmB;oBAC3B,GAAG,EAAE,EAAE,EAAE,wCAAwC;oBACjD,gBAAgB,EAAE,IAAI,CAAC,KAAK;iBAC7B;aACF,CAAC;QACJ,CAAC;QAED,0CAA0C;QAC1C,MAAM,MAAM,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;QAExC,OAAO;YACL,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE,IAAI,EAAE;SAC5E,CAAC;IACJ,CAAC;IAAC,OAAO,QAAQ,EAAE,CAAC;QAClB,OAAO;YACL,OAAO,EAAE,KAAK;YACd,KAAK,EACH,QAAQ,YAAY,KAAK;gBACvB,CAAC,CAAC,iBAAiB,QAAQ,CAAC,OAAO,EAAE;gBACrC,CAAC,CAAC,iBAAiB,MAAM,CAAC,QAAQ,CAAC,EAAE;YACzC,OAAO,EAAE,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE,IAAI,EAAE;SAC5E,CAAC;IACJ,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"stale-element-retry.js","sourceRoot":"","sources":["../../../src/tools/stale-element-retry.ts"],"names":[],"mappings":"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"}