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
@@ -6,10 +6,7 @@
6
6
  import { clickByBackendNodeId, clickAtCoordinates, clickAtElementOffset, typeByBackendNodeId, pressKey, selectOption, hoverByBackendNodeId, } from '../snapshot/index.js';
7
7
  import { ClickInputSchema, TypeInputSchema, PressInputSchema, SelectInputSchema, HoverInputSchema, } from './tool-schemas.js';
8
8
  import { executeAction, executeActionWithRetry, executeActionWithOutcome, } from './execute-action.js';
9
- import { getSnapshotStore, requireSnapshot, resolveElementByEid } from './tool-context.js';
10
9
  import { prepareActionContext } from './action-context.js';
11
- // Convenience alias for module-internal use
12
- const snapshotStore = getSnapshotStore();
13
10
  /**
14
11
  * Click an element or at viewport coordinates.
15
12
  *
@@ -21,7 +18,7 @@ const snapshotStore = getSnapshotStore();
21
18
  * @param rawInput - Click options (will be validated)
22
19
  * @returns Click result with navigation-aware outcome
23
20
  */
24
- export async function click(rawInput) {
21
+ export async function click(rawInput, ctx) {
25
22
  const input = ClickInputSchema.parse(rawInput);
26
23
  const hasEid = input.eid !== undefined;
27
24
  const hasCoords = input.x !== undefined && input.y !== undefined;
@@ -31,12 +28,12 @@ export async function click(rawInput) {
31
28
  if ((input.x !== undefined) !== (input.y !== undefined)) {
32
29
  throw new Error('Both x and y coordinates must be provided together.');
33
30
  }
34
- const { handleRef, pageId, captureSnapshot } = await prepareActionContext(input.page_id);
31
+ const { handleRef, pageId, captureSnapshot } = await prepareActionContext(input.page_id, ctx);
35
32
  let result;
36
33
  if (hasEid) {
37
34
  // Mode 1 & 2: element-based click (center or offset)
38
- const snap = requireSnapshot(pageId);
39
- const node = resolveElementByEid(pageId, input.eid, snap);
35
+ const snap = ctx.requireSnapshot(pageId);
36
+ const node = ctx.resolveElementByEid(pageId, input.eid, snap);
40
37
  result = await executeActionWithOutcome(handleRef.current, node, async (backendNodeId) => {
41
38
  if (hasCoords) {
42
39
  await clickAtElementOffset(handleRef.current.cdp, backendNodeId, input.x, input.y, input.modifiers);
@@ -44,15 +41,15 @@ export async function click(rawInput) {
44
41
  else {
45
42
  await clickByBackendNodeId(handleRef.current.cdp, backendNodeId, input.modifiers);
46
43
  }
47
- }, snapshotStore, captureSnapshot);
44
+ }, ctx, ctx.getSnapshotStore(), captureSnapshot);
48
45
  }
49
46
  else {
50
47
  // Mode 3: x/y only -> absolute viewport click
51
48
  result = await executeAction(handleRef.current, async () => {
52
49
  await clickAtCoordinates(handleRef.current.cdp, input.x, input.y, input.modifiers);
53
- }, captureSnapshot);
50
+ }, ctx, captureSnapshot);
54
51
  }
55
- snapshotStore.store(pageId, result.snapshot);
52
+ ctx.getSnapshotStore().store(pageId, result.snapshot);
56
53
  return result.state_response;
57
54
  }
58
55
  /**
@@ -61,19 +58,19 @@ export async function click(rawInput) {
61
58
  * @param rawInput - Type options (will be validated)
62
59
  * @returns Type result with delta
63
60
  */
64
- export async function type(rawInput) {
61
+ export async function type(rawInput, ctx) {
65
62
  const input = TypeInputSchema.parse(rawInput);
66
- const { handleRef, pageId, captureSnapshot } = await prepareActionContext(input.page_id);
67
- const snap = requireSnapshot(pageId);
68
- const node = resolveElementByEid(pageId, input.eid, snap);
63
+ const { handleRef, pageId, captureSnapshot } = await prepareActionContext(input.page_id, ctx);
64
+ const snap = ctx.requireSnapshot(pageId);
65
+ const node = ctx.resolveElementByEid(pageId, input.eid, snap);
69
66
  // Execute action with automatic retry on stale elements
70
67
  const result = await executeActionWithRetry(handleRef.current, node, async (backendNodeId) => {
71
68
  await typeByBackendNodeId(handleRef.current.cdp, backendNodeId, input.text, {
72
69
  clear: input.clear,
73
70
  });
74
- }, snapshotStore, captureSnapshot);
71
+ }, ctx, ctx.getSnapshotStore(), captureSnapshot);
75
72
  // Store snapshot for future queries
76
- snapshotStore.store(pageId, result.snapshot);
73
+ ctx.getSnapshotStore().store(pageId, result.snapshot);
77
74
  // Return XML state response directly
78
75
  return result.state_response;
79
76
  }
@@ -83,15 +80,15 @@ export async function type(rawInput) {
83
80
  * @param rawInput - Press options (will be validated)
84
81
  * @returns Press result with delta
85
82
  */
86
- export async function press(rawInput) {
83
+ export async function press(rawInput, ctx) {
87
84
  const input = PressInputSchema.parse(rawInput);
88
- const { handleRef, pageId, captureSnapshot } = await prepareActionContext(input.page_id);
85
+ const { handleRef, pageId, captureSnapshot } = await prepareActionContext(input.page_id, ctx);
89
86
  // Execute action with new simplified wrapper
90
87
  const result = await executeAction(handleRef.current, async () => {
91
88
  await pressKey(handleRef.current.cdp, input.key, input.modifiers);
92
- }, captureSnapshot);
89
+ }, ctx, captureSnapshot);
93
90
  // Store snapshot for future queries
94
- snapshotStore.store(pageId, result.snapshot);
91
+ ctx.getSnapshotStore().store(pageId, result.snapshot);
95
92
  // Return XML state response directly
96
93
  return result.state_response;
97
94
  }
@@ -101,17 +98,17 @@ export async function press(rawInput) {
101
98
  * @param rawInput - Select options (will be validated)
102
99
  * @returns Select result with delta
103
100
  */
104
- export async function select(rawInput) {
101
+ export async function select(rawInput, ctx) {
105
102
  const input = SelectInputSchema.parse(rawInput);
106
- const { handleRef, pageId, captureSnapshot } = await prepareActionContext(input.page_id);
107
- const snap = requireSnapshot(pageId);
108
- const node = resolveElementByEid(pageId, input.eid, snap);
103
+ const { handleRef, pageId, captureSnapshot } = await prepareActionContext(input.page_id, ctx);
104
+ const snap = ctx.requireSnapshot(pageId);
105
+ const node = ctx.resolveElementByEid(pageId, input.eid, snap);
109
106
  // Execute action with automatic retry on stale elements
110
107
  const result = await executeActionWithRetry(handleRef.current, node, async (backendNodeId) => {
111
108
  await selectOption(handleRef.current.cdp, backendNodeId, input.value);
112
- }, snapshotStore, captureSnapshot);
109
+ }, ctx, ctx.getSnapshotStore(), captureSnapshot);
113
110
  // Store snapshot for future queries
114
- snapshotStore.store(pageId, result.snapshot);
111
+ ctx.getSnapshotStore().store(pageId, result.snapshot);
115
112
  // Return XML state response directly
116
113
  return result.state_response;
117
114
  }
@@ -121,17 +118,17 @@ export async function select(rawInput) {
121
118
  * @param rawInput - Hover options (will be validated)
122
119
  * @returns Hover result with delta
123
120
  */
124
- export async function hover(rawInput) {
121
+ export async function hover(rawInput, ctx) {
125
122
  const input = HoverInputSchema.parse(rawInput);
126
- const { handleRef, pageId, captureSnapshot } = await prepareActionContext(input.page_id);
127
- const snap = requireSnapshot(pageId);
128
- const node = resolveElementByEid(pageId, input.eid, snap);
123
+ const { handleRef, pageId, captureSnapshot } = await prepareActionContext(input.page_id, ctx);
124
+ const snap = ctx.requireSnapshot(pageId);
125
+ const node = ctx.resolveElementByEid(pageId, input.eid, snap);
129
126
  // Execute action with automatic retry on stale elements
130
127
  const result = await executeActionWithRetry(handleRef.current, node, async (backendNodeId) => {
131
128
  await hoverByBackendNodeId(handleRef.current.cdp, backendNodeId);
132
- }, snapshotStore, captureSnapshot);
129
+ }, ctx, ctx.getSnapshotStore(), captureSnapshot);
133
130
  // Store snapshot for future queries
134
- snapshotStore.store(pageId, result.snapshot);
131
+ ctx.getSnapshotStore().store(pageId, result.snapshot);
135
132
  // Return XML state response directly
136
133
  return result.state_response;
137
134
  }
@@ -1 +1 @@
1
- {"version":3,"file":"interaction-tools.js","sourceRoot":"","sources":["../../../src/tools/interaction-tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"interaction-tools.js","sourceRoot":"","sources":["../../../src/tools/interaction-tools.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,7 @@
3
3
  *
4
4
  * MCP tool handlers for browser navigation and session management.
5
5
  */
6
+ import type { ToolContext } from './tool-context.types.js';
6
7
  /**
7
8
  * List all open browser pages with their metadata.
8
9
  *
@@ -11,47 +12,40 @@
11
12
  *
12
13
  * @returns XML result with page list
13
14
  */
14
- export declare function listPages(): Promise<import('./tool-schemas.js').ListPagesOutput>;
15
+ export declare function listPages(rawInput: unknown, ctx: ToolContext): Promise<import('./tool-schemas.js').ListPagesOutput>;
15
16
  /**
16
17
  * Close a specific page.
17
18
  *
18
19
  * @param rawInput - Close options (will be validated)
19
20
  * @returns Close result
20
21
  */
21
- export declare function closePage(rawInput: unknown): Promise<import('./tool-schemas.js').ClosePageOutput>;
22
- /**
23
- * Close the entire browser session.
24
- *
25
- * @param rawInput - Close options (will be validated)
26
- * @returns Close result
27
- */
28
- export declare function closeSession(rawInput: unknown): Promise<import('./tool-schemas.js').CloseSessionOutput>;
22
+ export declare function closePage(rawInput: unknown, ctx: ToolContext): Promise<import('./tool-schemas.js').ClosePageOutput>;
29
23
  /**
30
24
  * Navigate to a URL.
31
25
  *
32
26
  * @param rawInput - Navigation options (will be validated)
33
27
  * @returns Navigation result with snapshot data
34
28
  */
35
- export declare function navigate(rawInput: unknown): Promise<import('./tool-schemas.js').NavigateOutput>;
29
+ export declare function navigate(rawInput: unknown, ctx: ToolContext): Promise<import('./tool-schemas.js').NavigateOutput>;
36
30
  /**
37
31
  * Go back in browser history.
38
32
  *
39
33
  * @param rawInput - Navigation options (will be validated)
40
34
  * @returns Navigation result with snapshot data
41
35
  */
42
- export declare function goBack(rawInput: unknown): Promise<import('./tool-schemas.js').GoBackOutput>;
36
+ export declare function goBack(rawInput: unknown, ctx: ToolContext): Promise<import('./tool-schemas.js').GoBackOutput>;
43
37
  /**
44
38
  * Go forward in browser history.
45
39
  *
46
40
  * @param rawInput - Navigation options (will be validated)
47
41
  * @returns Navigation result with snapshot data
48
42
  */
49
- export declare function goForward(rawInput: unknown): Promise<import('./tool-schemas.js').GoForwardOutput>;
43
+ export declare function goForward(rawInput: unknown, ctx: ToolContext): Promise<import('./tool-schemas.js').GoForwardOutput>;
50
44
  /**
51
45
  * Reload the current page.
52
46
  *
53
47
  * @param rawInput - Navigation options (will be validated)
54
48
  * @returns Navigation result with snapshot data
55
49
  */
56
- export declare function reload(rawInput: unknown): Promise<import('./tool-schemas.js').ReloadOutput>;
50
+ export declare function reload(rawInput: unknown, ctx: ToolContext): Promise<import('./tool-schemas.js').ReloadOutput>;
57
51
  //# sourceMappingURL=navigation-tools.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"navigation-tools.d.ts","sourceRoot":"","sources":["../../../src/tools/navigation-tools.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAyFH;;;;;;;GAOG;AACH,wBAAsB,SAAS,IAAI,OAAO,CAAC,OAAO,mBAAmB,EAAE,eAAe,CAAC,CA4BtF;AAED;;;;;GAKG;AACH,wBAAsB,SAAS,CAC7B,QAAQ,EAAE,OAAO,GAChB,OAAO,CAAC,OAAO,mBAAmB,EAAE,eAAe,CAAC,CAUtD;AAED;;;;;GAKG;AACH,wBAAsB,YAAY,CAChC,QAAQ,EAAE,OAAO,GAChB,OAAO,CAAC,OAAO,mBAAmB,EAAE,kBAAkB,CAAC,CAWzD;AAED;;;;;GAKG;AACH,wBAAsB,QAAQ,CAC5B,QAAQ,EAAE,OAAO,GAChB,OAAO,CAAC,OAAO,mBAAmB,EAAE,cAAc,CAAC,CAsBrD;AAED;;;;;GAKG;AACH,wBAAsB,MAAM,CAAC,QAAQ,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,mBAAmB,EAAE,YAAY,CAAC,CAGjG;AAED;;;;;GAKG;AACH,wBAAsB,SAAS,CAC7B,QAAQ,EAAE,OAAO,GAChB,OAAO,CAAC,OAAO,mBAAmB,EAAE,eAAe,CAAC,CAGtD;AAED;;;;;GAKG;AACH,wBAAsB,MAAM,CAAC,QAAQ,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,mBAAmB,EAAE,YAAY,CAAC,CAGjG"}
1
+ {"version":3,"file":"navigation-tools.d.ts","sourceRoot":"","sources":["../../../src/tools/navigation-tools.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAWH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAuE3D;;;;;;;GAOG;AACH,wBAAsB,SAAS,CAC7B,QAAQ,EAAE,OAAO,EACjB,GAAG,EAAE,WAAW,GACf,OAAO,CAAC,OAAO,mBAAmB,EAAE,eAAe,CAAC,CA2BtD;AAED;;;;;GAKG;AACH,wBAAsB,SAAS,CAC7B,QAAQ,EAAE,OAAO,EACjB,GAAG,EAAE,WAAW,GACf,OAAO,CAAC,OAAO,mBAAmB,EAAE,eAAe,CAAC,CAStD;AAED;;;;;GAKG;AACH,wBAAsB,QAAQ,CAC5B,QAAQ,EAAE,OAAO,EACjB,GAAG,EAAE,WAAW,GACf,OAAO,CAAC,OAAO,mBAAmB,EAAE,cAAc,CAAC,CA+CrD;AAED;;;;;GAKG;AACH,wBAAsB,MAAM,CAC1B,QAAQ,EAAE,OAAO,EACjB,GAAG,EAAE,WAAW,GACf,OAAO,CAAC,OAAO,mBAAmB,EAAE,YAAY,CAAC,CAGnD;AAED;;;;;GAKG;AACH,wBAAsB,SAAS,CAC7B,QAAQ,EAAE,OAAO,EACjB,GAAG,EAAE,WAAW,GACf,OAAO,CAAC,OAAO,mBAAmB,EAAE,eAAe,CAAC,CAGtD;AAED;;;;;GAKG;AACH,wBAAsB,MAAM,CAC1B,QAAQ,EAAE,OAAO,EACjB,GAAG,EAAE,WAAW,GACf,OAAO,CAAC,OAAO,mBAAmB,EAAE,YAAY,CAAC,CAGnD"}
@@ -3,17 +3,14 @@
3
3
  *
4
4
  * MCP tool handlers for browser navigation and session management.
5
5
  */
6
- import { observationAccumulator } from '../observation/index.js';
7
- import { ClosePageInputSchema, CloseSessionInputSchema, NavigateInputSchema, GoBackInputSchema, GoForwardInputSchema, ReloadInputSchema, } from './tool-schemas.js';
8
- import { cleanupTempFiles } from '../lib/temp-file.js';
9
- import { getStateManager, removeStateManager, clearAllStateManagers, } from './state-manager-registry.js';
6
+ import { ClosePageInputSchema, NavigateInputSchema, GoBackInputSchema, GoForwardInputSchema, ReloadInputSchema, } from './tool-schemas.js';
10
7
  import { stabilizeAfterNavigation } from './action-stabilization.js';
11
- import { buildClosePageResponse, buildCloseSessionResponse, buildListPagesResponse, } from './response-builder.js';
12
- import { getDependencyTracker } from '../form/index.js';
13
- import { getSessionManager, getSnapshotStore } from './tool-context.js';
14
- import { captureSnapshotWithRecovery } from './action-context.js';
15
- // Convenience alias for module-internal use
16
- const snapshotStore = getSnapshotStore();
8
+ import { buildClosePageResponse, buildListPagesResponse } from './response-builder.js';
9
+ function browserConfigDiffers(current, requested) {
10
+ return ((requested.headless !== undefined && requested.headless !== current.headless) ||
11
+ (requested.isolated !== undefined && requested.isolated !== current.isolated) ||
12
+ (requested.autoConnect !== undefined && requested.autoConnect !== current.autoConnect));
13
+ }
17
14
  /**
18
15
  * Execute a navigation action with snapshot capture.
19
16
  * Consolidates goBack, goForward, and reload handlers.
@@ -25,13 +22,12 @@ const snapshotStore = getSnapshotStore();
25
22
  * @param action - Navigation action to execute
26
23
  * @returns State response after navigation
27
24
  */
28
- async function executeNavigationAction(pageId, action) {
29
- const session = getSessionManager();
30
- let handle = await session.resolvePageOrCreate(pageId);
25
+ async function executeNavigationAction(pageId, ctx, action) {
26
+ let handle = await ctx.resolvePageOrCreate(pageId);
31
27
  const page_id = handle.page_id;
32
- session.touchPage(page_id);
28
+ ctx.touchPage(page_id);
33
29
  // Clear dependency tracker before navigation (old dependencies no longer valid)
34
- getDependencyTracker().clearPage(page_id);
30
+ ctx.getDependencyTracker().clearPage(page_id);
35
31
  // Execute navigation
36
32
  switch (action) {
37
33
  case 'back':
@@ -47,14 +43,14 @@ async function executeNavigationAction(pageId, action) {
47
43
  // Wait for page to stabilize (DOM + network idle)
48
44
  await stabilizeAfterNavigation(handle.page);
49
45
  // Re-inject observation accumulator (new document context after navigation)
50
- await observationAccumulator.inject(handle.page);
46
+ await ctx.getObservationAccumulator().inject(handle.page);
51
47
  // Auto-capture snapshot after navigation
52
- const captureResult = await captureSnapshotWithRecovery(session, handle, page_id);
48
+ const captureResult = await ctx.captureSnapshotWithRecovery(handle, page_id);
53
49
  handle = captureResult.handle;
54
50
  const snapshot = captureResult.snapshot;
55
- snapshotStore.store(page_id, snapshot);
51
+ ctx.getSnapshotStore().store(page_id, snapshot);
56
52
  // Return XML state response (trimmed for navigation snapshots)
57
- const stateManager = getStateManager(page_id);
53
+ const stateManager = ctx.getStateManager(page_id);
58
54
  return stateManager.generateResponse(snapshot, { trimRegions: true });
59
55
  }
60
56
  /**
@@ -65,10 +61,9 @@ async function executeNavigationAction(pageId, action) {
65
61
  *
66
62
  * @returns XML result with page list
67
63
  */
68
- export async function listPages() {
69
- const session = getSessionManager();
64
+ export async function listPages(rawInput, ctx) {
70
65
  // Sync to pick up any unregistered browser tabs
71
- const pages = await session.syncPages();
66
+ const pages = await ctx.syncPages();
72
67
  const pageInfos = await Promise.all(pages.map(async (h) => {
73
68
  const liveUrl = h.page.url?.() ?? h.url ?? '';
74
69
  let liveTitle = h.title ?? '';
@@ -96,53 +91,56 @@ export async function listPages() {
96
91
  * @param rawInput - Close options (will be validated)
97
92
  * @returns Close result
98
93
  */
99
- export async function closePage(rawInput) {
94
+ export async function closePage(rawInput, ctx) {
100
95
  const input = ClosePageInputSchema.parse(rawInput);
101
- const session = getSessionManager();
102
- await session.closePage(input.page_id);
103
- snapshotStore.removeByPageId(input.page_id);
104
- removeStateManager(input.page_id); // Clean up state manager
105
- getDependencyTracker().clearPage(input.page_id); // Clean up dependencies
96
+ await ctx.closePage(input.page_id);
97
+ ctx.getSnapshotStore().removeByPageId(input.page_id);
98
+ ctx.removeStateManager(input.page_id); // Clean up state manager
99
+ ctx.getDependencyTracker().clearPage(input.page_id); // Clean up dependencies
106
100
  return buildClosePageResponse(input.page_id);
107
101
  }
108
- /**
109
- * Close the entire browser session.
110
- *
111
- * @param rawInput - Close options (will be validated)
112
- * @returns Close result
113
- */
114
- export async function closeSession(rawInput) {
115
- CloseSessionInputSchema.parse(rawInput);
116
- const session = getSessionManager();
117
- await session.shutdown();
118
- snapshotStore.clear();
119
- clearAllStateManagers(); // Clean up all state managers
120
- getDependencyTracker().clearAll(); // Clean up all dependencies
121
- await cleanupTempFiles(); // Clean up screenshot temp files
122
- return buildCloseSessionResponse();
123
- }
124
102
  /**
125
103
  * Navigate to a URL.
126
104
  *
127
105
  * @param rawInput - Navigation options (will be validated)
128
106
  * @returns Navigation result with snapshot data
129
107
  */
130
- export async function navigate(rawInput) {
108
+ export async function navigate(rawInput, ctx) {
131
109
  const input = NavigateInputSchema.parse(rawInput);
132
- const session = getSessionManager();
133
- let handle = await session.resolvePageOrCreate(input.page_id);
110
+ const requestedConfig = {
111
+ headless: input.headless,
112
+ isolated: input.isolated,
113
+ autoConnect: input.auto_connect,
114
+ };
115
+ // Apply browser preferences if provided
116
+ if (input.headless !== undefined ||
117
+ input.isolated !== undefined ||
118
+ input.auto_connect !== undefined) {
119
+ // Browser mode is session-scoped. If the caller requests a different mode
120
+ // mid-session, reset first so the next ensureBrowser() actually honors it.
121
+ if (!ctx.canReconfigure() && browserConfigDiffers(ctx.getBrowserConfig(), requestedConfig)) {
122
+ await ctx.resetBrowser();
123
+ }
124
+ if (ctx.canReconfigure()) {
125
+ ctx.setBrowserConfig(requestedConfig);
126
+ }
127
+ }
128
+ // navigate is excluded from the pre-handler ensureBrowser() call so that
129
+ // browser config (auto_connect, headless, isolated) can be set first.
130
+ await ctx.ensureBrowser();
131
+ let handle = await ctx.resolvePageOrCreate(input.page_id);
134
132
  const page_id = handle.page_id;
135
- session.touchPage(page_id);
133
+ ctx.touchPage(page_id);
136
134
  // Clear dependency tracker before navigation (old dependencies no longer valid)
137
- getDependencyTracker().clearPage(page_id);
138
- await session.navigateTo(page_id, input.url);
135
+ ctx.getDependencyTracker().clearPage(page_id);
136
+ await ctx.navigateTo(page_id, input.url);
139
137
  // Auto-capture snapshot after navigation
140
- const captureResult = await captureSnapshotWithRecovery(session, handle, page_id);
138
+ const captureResult = await ctx.captureSnapshotWithRecovery(handle, page_id);
141
139
  handle = captureResult.handle;
142
140
  const snapshot = captureResult.snapshot;
143
- snapshotStore.store(page_id, snapshot);
141
+ ctx.getSnapshotStore().store(page_id, snapshot);
144
142
  // Return XML state response directly (trimmed for navigation snapshots)
145
- const stateManager = getStateManager(page_id);
143
+ const stateManager = ctx.getStateManager(page_id);
146
144
  return stateManager.generateResponse(snapshot, { trimRegions: true });
147
145
  }
148
146
  /**
@@ -151,9 +149,9 @@ export async function navigate(rawInput) {
151
149
  * @param rawInput - Navigation options (will be validated)
152
150
  * @returns Navigation result with snapshot data
153
151
  */
154
- export async function goBack(rawInput) {
152
+ export async function goBack(rawInput, ctx) {
155
153
  const input = GoBackInputSchema.parse(rawInput);
156
- return executeNavigationAction(input.page_id, 'back');
154
+ return executeNavigationAction(input.page_id, ctx, 'back');
157
155
  }
158
156
  /**
159
157
  * Go forward in browser history.
@@ -161,9 +159,9 @@ export async function goBack(rawInput) {
161
159
  * @param rawInput - Navigation options (will be validated)
162
160
  * @returns Navigation result with snapshot data
163
161
  */
164
- export async function goForward(rawInput) {
162
+ export async function goForward(rawInput, ctx) {
165
163
  const input = GoForwardInputSchema.parse(rawInput);
166
- return executeNavigationAction(input.page_id, 'forward');
164
+ return executeNavigationAction(input.page_id, ctx, 'forward');
167
165
  }
168
166
  /**
169
167
  * Reload the current page.
@@ -171,8 +169,8 @@ export async function goForward(rawInput) {
171
169
  * @param rawInput - Navigation options (will be validated)
172
170
  * @returns Navigation result with snapshot data
173
171
  */
174
- export async function reload(rawInput) {
172
+ export async function reload(rawInput, ctx) {
175
173
  const input = ReloadInputSchema.parse(rawInput);
176
- return executeNavigationAction(input.page_id, 'reload');
174
+ return executeNavigationAction(input.page_id, ctx, 'reload');
177
175
  }
178
176
  //# sourceMappingURL=navigation-tools.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"navigation-tools.js","sourceRoot":"","sources":["../../../src/tools/navigation-tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"navigation-tools.js","sourceRoot":"","sources":["../../../src/tools/navigation-tools.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,oBAAoB,EACpB,mBAAmB,EACnB,iBAAiB,EACjB,oBAAoB,EACpB,iBAAiB,GAClB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAQvF,SAAS,oBAAoB,CAC3B,OAA4E,EAC5E,SAA8E;IAE9E,OAAO,CACL,CAAC,SAAS,CAAC,QAAQ,KAAK,SAAS,IAAI,SAAS,CAAC,QAAQ,KAAK,OAAO,CAAC,QAAQ,CAAC;QAC7E,CAAC,SAAS,CAAC,QAAQ,KAAK,SAAS,IAAI,SAAS,CAAC,QAAQ,KAAK,OAAO,CAAC,QAAQ,CAAC;QAC7E,CAAC,SAAS,CAAC,WAAW,KAAK,SAAS,IAAI,SAAS,CAAC,WAAW,KAAK,OAAO,CAAC,WAAW,CAAC,CACvF,CAAC;AACJ,CAAC;AAED;;;;;;;;;;GAUG;AACH,KAAK,UAAU,uBAAuB,CACpC,MAA0B,EAC1B,GAAgB,EAChB,MAAwB;IAExB,IAAI,MAAM,GAAG,MAAM,GAAG,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;IACnD,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;IAC/B,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IAEvB,gFAAgF;IAChF,GAAG,CAAC,oBAAoB,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IAE9C,qBAAqB;IACrB,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,MAAM;YACT,MAAM,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YAC3B,MAAM;QACR,KAAK,SAAS;YACZ,MAAM,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YAC9B,MAAM;QACR,KAAK,QAAQ;YACX,MAAM,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YAC3B,MAAM;IACV,CAAC;IAED,kDAAkD;IAClD,MAAM,wBAAwB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAE5C,4EAA4E;IAC5E,MAAM,GAAG,CAAC,yBAAyB,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAE1D,yCAAyC;IACzC,MAAM,aAAa,GAAG,MAAM,GAAG,CAAC,2BAA2B,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC7E,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC;IAC9B,MAAM,QAAQ,GAAG,aAAa,CAAC,QAAQ,CAAC;IACxC,GAAG,CAAC,gBAAgB,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAEhD,+DAA+D;IAC/D,MAAM,YAAY,GAAG,GAAG,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;IAClD,OAAO,YAAY,CAAC,gBAAgB,CAAC,QAAQ,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;AACxE,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,QAAiB,EACjB,GAAgB;IAEhB,gDAAgD;IAChD,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,SAAS,EAAE,CAAC;IACpC,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,GAAG,CACjC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;QACpB,MAAM,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC;QAC9C,IAAI,SAAS,GAAG,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QAE9B,IAAI,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;YACvC,IAAI,CAAC;gBACH,SAAS,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YACnC,CAAC;YAAC,MAAM,CAAC;gBACP,8DAA8D;YAChE,CAAC;QACH,CAAC;QAED,CAAC,CAAC,GAAG,GAAG,OAAO,CAAC;QAChB,CAAC,CAAC,KAAK,GAAG,SAAS,CAAC;QAEpB,OAAO;YACL,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,GAAG,EAAE,OAAO;YACZ,KAAK,EAAE,SAAS;SACjB,CAAC;IACJ,CAAC,CAAC,CACH,CAAC;IACF,OAAO,sBAAsB,CAAC,SAAS,CAAC,CAAC;AAC3C,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,QAAiB,EACjB,GAAgB;IAEhB,MAAM,KAAK,GAAG,oBAAoB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAEnD,MAAM,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACnC,GAAG,CAAC,gBAAgB,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACrD,GAAG,CAAC,kBAAkB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,yBAAyB;IAChE,GAAG,CAAC,oBAAoB,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,wBAAwB;IAE7E,OAAO,sBAAsB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAC/C,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAC5B,QAAiB,EACjB,GAAgB;IAEhB,MAAM,KAAK,GAAG,mBAAmB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAClD,MAAM,eAAe,GAAG;QACtB,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,WAAW,EAAE,KAAK,CAAC,YAAY;KAChC,CAAC;IAEF,wCAAwC;IACxC,IACE,KAAK,CAAC,QAAQ,KAAK,SAAS;QAC5B,KAAK,CAAC,QAAQ,KAAK,SAAS;QAC5B,KAAK,CAAC,YAAY,KAAK,SAAS,EAChC,CAAC;QACD,0EAA0E;QAC1E,2EAA2E;QAC3E,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE,IAAI,oBAAoB,CAAC,GAAG,CAAC,gBAAgB,EAAE,EAAE,eAAe,CAAC,EAAE,CAAC;YAC3F,MAAM,GAAG,CAAC,YAAY,EAAE,CAAC;QAC3B,CAAC;QAED,IAAI,GAAG,CAAC,cAAc,EAAE,EAAE,CAAC;YACzB,GAAG,CAAC,gBAAgB,CAAC,eAAe,CAAC,CAAC;QACxC,CAAC;IACH,CAAC;IAED,yEAAyE;IACzE,sEAAsE;IACtE,MAAM,GAAG,CAAC,aAAa,EAAE,CAAC;IAE1B,IAAI,MAAM,GAAG,MAAM,GAAG,CAAC,mBAAmB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC1D,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;IAC/B,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IAEvB,gFAAgF;IAChF,GAAG,CAAC,oBAAoB,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IAE9C,MAAM,GAAG,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;IAEzC,yCAAyC;IACzC,MAAM,aAAa,GAAG,MAAM,GAAG,CAAC,2BAA2B,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC7E,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC;IAC9B,MAAM,QAAQ,GAAG,aAAa,CAAC,QAAQ,CAAC;IACxC,GAAG,CAAC,gBAAgB,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAEhD,wEAAwE;IACxE,MAAM,YAAY,GAAG,GAAG,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;IAClD,OAAO,YAAY,CAAC,gBAAgB,CAAC,QAAQ,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;AACxE,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,MAAM,CAC1B,QAAiB,EACjB,GAAgB;IAEhB,MAAM,KAAK,GAAG,iBAAiB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAChD,OAAO,uBAAuB,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;AAC7D,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,QAAiB,EACjB,GAAgB;IAEhB,MAAM,KAAK,GAAG,oBAAoB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IACnD,OAAO,uBAAuB,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC;AAChE,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,MAAM,CAC1B,QAAiB,EACjB,GAAgB;IAEhB,MAAM,KAAK,GAAG,iBAAiB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAChD,OAAO,uBAAuB,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC;AAC/D,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Network Tools
3
+ *
4
+ * MCP tool handlers for inspecting network activity on a page.
5
+ * Provides list and search over recorded HTTP requests/responses.
6
+ */
7
+ import type { ToolContext } from './tool-context.types.js';
8
+ export declare function listNetworkCalls(rawInput: unknown, ctx: ToolContext): string;
9
+ export declare function searchNetworkCalls(rawInput: unknown, ctx: ToolContext): string;
10
+ //# sourceMappingURL=network-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"network-tools.d.ts","sourceRoot":"","sources":["../../../src/tools/network-tools.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAcH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AA8F3D,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,WAAW,GAAG,MAAM,CAoB5E;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,WAAW,GAAG,MAAM,CAmB9E"}
@@ -0,0 +1,117 @@
1
+ /**
2
+ * Network Tools
3
+ *
4
+ * MCP tool handlers for inspecting network activity on a page.
5
+ * Provides list and search over recorded HTTP requests/responses.
6
+ */
7
+ import { getOrCreateRecorder, } from '../browser/page-network-recorder.js';
8
+ import { escapeXml } from '../lib/text-utils.js';
9
+ import { ListNetworkCallsInputSchema, SearchNetworkCallsInputSchema, } from './tool-schemas.js';
10
+ // ============================================================================
11
+ // Helpers
12
+ // ============================================================================
13
+ function formatDuration(ms) {
14
+ if (ms === null)
15
+ return 'pending';
16
+ if (ms < 1000)
17
+ return `${ms}ms`;
18
+ return `${(ms / 1000).toFixed(1)}s`;
19
+ }
20
+ /** Build a NetworkFilter from the common filter fields shared by both tools. */
21
+ function buildFilter(input) {
22
+ const filter = {};
23
+ if (input.resource_type)
24
+ filter.resource_type = input.resource_type;
25
+ if (input.method)
26
+ filter.method = input.method;
27
+ if (input.status_min != null)
28
+ filter.status_min = input.status_min;
29
+ if (input.status_max != null)
30
+ filter.status_max = input.status_max;
31
+ if (input.failed_only)
32
+ filter.failed_only = true;
33
+ if (input.url_pattern)
34
+ filter.url_pattern = input.url_pattern;
35
+ return filter;
36
+ }
37
+ function entryToXml(entry, includeHeaders, includeBody) {
38
+ const attrs = [
39
+ `id="${entry.id}"`,
40
+ `method="${escapeXml(entry.method)}"`,
41
+ `url="${escapeXml(entry.url)}"`,
42
+ `type="${escapeXml(entry.resource_type)}"`,
43
+ ];
44
+ if (entry.status !== null) {
45
+ attrs.push(`status="${entry.status}"`);
46
+ }
47
+ attrs.push(`duration="${formatDuration(entry.duration_ms)}"`);
48
+ if (entry.failed) {
49
+ attrs.push('failed="true"');
50
+ if (entry.failure_text) {
51
+ attrs.push(`error="${escapeXml(entry.failure_text)}"`);
52
+ }
53
+ }
54
+ if (entry.mime_type) {
55
+ attrs.push(`mime="${escapeXml(entry.mime_type)}"`);
56
+ }
57
+ const needsChildren = includeHeaders || (includeBody && entry.post_data);
58
+ if (!needsChildren) {
59
+ return ` <call ${attrs.join(' ')}/>`;
60
+ }
61
+ const lines = [];
62
+ lines.push(` <call ${attrs.join(' ')}>`);
63
+ if (includeHeaders) {
64
+ if (Object.keys(entry.request_headers).length > 0) {
65
+ lines.push(' <request_headers>');
66
+ for (const [k, v] of Object.entries(entry.request_headers)) {
67
+ lines.push(` <h name="${escapeXml(k)}">${escapeXml(v)}</h>`);
68
+ }
69
+ lines.push(' </request_headers>');
70
+ }
71
+ if (entry.response_headers && Object.keys(entry.response_headers).length > 0) {
72
+ lines.push(' <response_headers>');
73
+ for (const [k, v] of Object.entries(entry.response_headers)) {
74
+ lines.push(` <h name="${escapeXml(k)}">${escapeXml(v)}</h>`);
75
+ }
76
+ lines.push(' </response_headers>');
77
+ }
78
+ }
79
+ if (includeBody && entry.post_data) {
80
+ lines.push(` <body>${escapeXml(entry.post_data)}</body>`);
81
+ }
82
+ lines.push(' </call>');
83
+ return lines.join('\n');
84
+ }
85
+ // ============================================================================
86
+ // Tool Handlers
87
+ // ============================================================================
88
+ export function listNetworkCalls(rawInput, ctx) {
89
+ const input = ListNetworkCallsInputSchema.parse(rawInput);
90
+ const handle = ctx.resolveExistingPage(input.page_id);
91
+ const recorder = getOrCreateRecorder(handle.page);
92
+ const filter = buildFilter(input);
93
+ const result = recorder.getEntries(filter, input.offset, input.limit);
94
+ const stats = recorder.getStats();
95
+ const lines = [];
96
+ lines.push(`<network_calls page_id="${escapeXml(handle.page_id)}" total="${result.total}" shown="${result.entries.length}" offset="${input.offset}" recorded="${stats.total}">`);
97
+ for (const entry of result.entries) {
98
+ lines.push(entryToXml(entry, false, false));
99
+ }
100
+ lines.push('</network_calls>');
101
+ return lines.join('\n');
102
+ }
103
+ export function searchNetworkCalls(rawInput, ctx) {
104
+ const input = SearchNetworkCallsInputSchema.parse(rawInput);
105
+ const handle = ctx.resolveExistingPage(input.page_id);
106
+ const recorder = getOrCreateRecorder(handle.page);
107
+ const filter = buildFilter(input);
108
+ const result = recorder.search(input.url_pattern, input.url_regex, filter, input.limit);
109
+ const lines = [];
110
+ lines.push(`<network_calls page_id="${escapeXml(handle.page_id)}" total="${result.total}" shown="${result.entries.length}" pattern="${escapeXml(input.url_pattern)}">`);
111
+ for (const entry of result.entries) {
112
+ lines.push(entryToXml(entry, input.include_headers, input.include_body));
113
+ }
114
+ lines.push('</network_calls>');
115
+ return lines.join('\n');
116
+ }
117
+ //# sourceMappingURL=network-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"network-tools.js","sourceRoot":"","sources":["../../../src/tools/network-tools.ts"],"names":[],"mappings":"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"}