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
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-server.d.ts","sourceRoot":"","sources":["../../../src/server/mcp-server.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAGtC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,KAAK,CAAC;AACvC,OAAO,EAEL,KAAK,QAAQ,EACb,KAAK,qBAAqB,EAC3B,MAAM,uCAAuC,CAAC;AAI/C,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,OAAO,oBAAoB,EAAE,UAAU,GAAG,SAAS,CAAC;CACjE;AAED,MAAM,WAAW,6BAA6B;IAC5C,eAAe,EAAE,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC;IAC5C,aAAa,EAAE,EAAE,CAAC;CACnB;AAED,qBAAa,uBAAwB,SAAQ,YAAa,YAAW,qBAAqB;IAI5E,OAAO,CAAC,QAAQ,CAAC,MAAM;IAHnC,OAAO,CAAC,MAAM,CAAY;IAC1B,OAAO,CAAC,SAAS,CAAuB;gBAEX,MAAM,EAAE,YAAY;IAmCjD;;;;OAIG;IACH,OAAO,CAAC,gBAAgB;IAMxB;;OAEG;IACH,YAAY,CACV,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE;QACV,KAAK,EAAE,MAAM,CAAC;QACd,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,WAAW,EAAE,WAAW,CAAC;QACzB,YAAY,CAAC,EAAE,WAAW,CAAC;KAC5B,EACD,OAAO,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,GAC5C,IAAI;IA6GP;;OAEG;IACG,kBAAkB,CAAC,MAAM,EAAE;QAC/B,KAAK,EAAE,QAAQ,CAAC;QAChB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KAC/B,GAAG,OAAO,CAAC,IAAI,CAAC;IAWjB;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAU/B;;;OAGG;IACH,OAAO,CAAC,sBAAsB;IAe9B;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAK5B;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAG5B"}
1
+ {"version":3,"file":"mcp-server.d.ts","sourceRoot":"","sources":["../../../src/server/mcp-server.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAGtC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,KAAK,CAAC;AACvC,OAAO,EAEL,KAAK,QAAQ,EACb,KAAK,qBAAqB,EAC3B,MAAM,uCAAuC,CAAC;AAE/C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAG/D,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAAC;CAC3D;AAED,MAAM,WAAW,6BAA6B;IAC5C,eAAe,EAAE,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC;IAC5C,aAAa,EAAE,EAAE,CAAC;CACnB;AAED,qBAAa,uBACX,SAAQ,YACR,YAAW,qBAAqB,EAAE,aAAa;IAKnC,OAAO,CAAC,QAAQ,CAAC,MAAM;IAHnC,OAAO,CAAC,MAAM,CAAY;IAC1B,OAAO,CAAC,SAAS,CAAuB;gBAEX,MAAM,EAAE,YAAY;IAmCjD;;;;OAIG;IACH,OAAO,CAAC,gBAAgB;IAMxB;;OAEG;IACH,YAAY,CACV,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE;QACV,KAAK,EAAE,MAAM,CAAC;QACd,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,WAAW,EAAE,WAAW,CAAC;QACzB,YAAY,CAAC,EAAE,WAAW,CAAC;KAC5B,EACD,OAAO,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,GAC5C,IAAI;IAcP;;OAEG;IACG,kBAAkB,CAAC,MAAM,EAAE;QAC/B,KAAK,EAAE,QAAQ,CAAC;QAChB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KAC/B,GAAG,OAAO,CAAC,IAAI,CAAC;IAWjB;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAU/B;;;OAGG;IACH,OAAO,CAAC,sBAAsB;IAe9B;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAK5B;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAG5B"}
@@ -9,7 +9,7 @@ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
9
9
  import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
10
10
  import { getLogger, } from '../shared/services/logging.service.js';
11
11
  import { SetLevelRequestSchema } from '@modelcontextprotocol/sdk/types.js';
12
- import { isCompositeResult, isImageResult, isFileResult } from '../tools/tool-result.types.js';
12
+ import { wrapToolHandler } from './tool-result-handler.js';
13
13
  export class BrowserAutomationServer extends EventEmitter {
14
14
  config;
15
15
  server;
@@ -54,101 +54,13 @@ export class BrowserAutomationServer extends EventEmitter {
54
54
  * Register a custom tool with the MCP server
55
55
  */
56
56
  registerTool(name, definition, handler) {
57
+ const wrapped = wrapToolHandler(name, handler, !!definition.outputSchema);
57
58
  this.server.registerTool(name, {
58
59
  title: definition.title,
59
60
  description: definition.description,
60
61
  inputSchema: definition.inputSchema,
61
62
  outputSchema: definition.outputSchema,
62
- }, async (input) => {
63
- const logger = getLogger();
64
- const startTime = Date.now();
65
- try {
66
- logger.debug(`Executing tool: ${name}`);
67
- const result = await handler(input);
68
- const executionTime = Date.now() - startTime;
69
- logger.debug(`Tool ${name} completed in ${executionTime}ms`);
70
- // Composite result - return as multi-content (text + image)
71
- if (isCompositeResult(result)) {
72
- if (isImageResult(result.image)) {
73
- return {
74
- content: [
75
- { type: 'text', text: result.text },
76
- {
77
- type: 'image',
78
- data: result.image.data,
79
- mimeType: result.image.mimeType,
80
- },
81
- ],
82
- };
83
- }
84
- else {
85
- // FileResult fallback - return text + file path
86
- const sizeMB = (result.image.sizeBytes / 1024 / 1024).toFixed(2);
87
- return {
88
- content: [
89
- { type: 'text', text: result.text },
90
- {
91
- type: 'text',
92
- text: `Screenshot saved to: ${result.image.path} (${sizeMB} MB, ${result.image.mimeType})`,
93
- },
94
- ],
95
- };
96
- }
97
- }
98
- // Image result - return as MCP ImageContent (inline base64)
99
- if (isImageResult(result)) {
100
- return {
101
- content: [
102
- {
103
- type: 'image',
104
- data: result.data,
105
- mimeType: result.mimeType,
106
- },
107
- ],
108
- };
109
- }
110
- // File result - return file path as text (for large screenshots)
111
- if (isFileResult(result)) {
112
- const sizeMB = (result.sizeBytes / 1024 / 1024).toFixed(2);
113
- return {
114
- content: [
115
- {
116
- type: 'text',
117
- text: `Screenshot saved to: ${result.path} (${sizeMB} MB, ${result.mimeType})`,
118
- },
119
- ],
120
- };
121
- }
122
- // When outputSchema is defined, return structuredContent for MCP validation
123
- if (definition.outputSchema) {
124
- return {
125
- content: [{ type: 'text', text: JSON.stringify(result) }],
126
- structuredContent: result,
127
- };
128
- }
129
- // If result is already a string (e.g., XML), use it directly
130
- // Otherwise JSON.stringify it
131
- const textContent = typeof result === 'string' ? result : JSON.stringify(result);
132
- return {
133
- content: [{ type: 'text', text: textContent }],
134
- };
135
- }
136
- catch (error) {
137
- const executionTime = Date.now() - startTime;
138
- logger.error(`Tool ${name} failed after ${executionTime}ms`, error instanceof Error ? error : undefined);
139
- return {
140
- content: [
141
- {
142
- type: 'text',
143
- text: JSON.stringify({
144
- error: error instanceof Error ? error.message : String(error),
145
- }),
146
- },
147
- ],
148
- isError: true,
149
- };
150
- }
151
- });
63
+ }, wrapped);
152
64
  }
153
65
  /**
154
66
  * Send logging message notification via MCP protocol
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-server.js","sourceRoot":"","sources":["../../../src/server/mcp-server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mcp-server.js","sourceRoot":"","sources":["../../../src/server/mcp-server.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,12 @@
1
1
  /**
2
2
  * Server Configuration
3
3
  *
4
- * Global server configuration combining CLI args and environment variables.
5
- * Provides the ensureBrowserForTools function that tool handlers call.
4
+ * Global server configuration from CLI args and environment variables.
5
+ * Contains only transport-level settings (transport mode, port).
6
+ *
7
+ * Browser configuration is per-session and managed by SessionController.
6
8
  */
7
9
  import { type ServerArgs } from '../cli/args.js';
8
- import { SessionManager } from '../browser/session-manager.js';
9
10
  /**
10
11
  * Initialize server configuration from CLI arguments and environment variables.
11
12
  *
@@ -17,23 +18,6 @@ export declare function initServerConfig(argv: string[]): void;
17
18
  * Throws if not initialized.
18
19
  */
19
20
  export declare function getServerConfig(): ServerArgs;
20
- /**
21
- * Get or create the SessionManager singleton.
22
- */
23
- export declare function getSessionManager(): SessionManager;
24
- /**
25
- * Check if the SessionManager has been initialized.
26
- * Use this before calling getSessionManager() in cleanup paths
27
- * to avoid creating a new instance unnecessarily.
28
- */
29
- export declare function isSessionManagerInitialized(): boolean;
30
- /**
31
- * Ensure browser is ready for tool execution.
32
- *
33
- * This is the main entry point for tools to call before executing.
34
- * It will lazily launch or connect to a browser based on server configuration.
35
- */
36
- export declare function ensureBrowserForTools(): Promise<void>;
37
21
  /**
38
22
  * Reset server state (for testing).
39
23
  */
@@ -1 +1 @@
1
- {"version":3,"file":"server-config.d.ts","sourceRoot":"","sources":["../../../src/server/server-config.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAa,KAAK,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAO/D;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAUrD;AAED;;;GAGG;AACH,wBAAgB,eAAe,IAAI,UAAU,CAK5C;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,cAAc,CAGlD;AAED;;;;GAIG;AACH,wBAAgB,2BAA2B,IAAI,OAAO,CAErD;AAED;;;;;GAKG;AACH,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC,CAgB3D;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,IAAI,CAGvC"}
1
+ {"version":3,"file":"server-config.d.ts","sourceRoot":"","sources":["../../../src/server/server-config.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAa,KAAK,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAK5D;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAErD;AAED;;;GAGG;AACH,wBAAgB,eAAe,IAAI,UAAU,CAK5C;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,IAAI,CAEvC"}
@@ -1,28 +1,21 @@
1
1
  /**
2
2
  * Server Configuration
3
3
  *
4
- * Global server configuration combining CLI args and environment variables.
5
- * Provides the ensureBrowserForTools function that tool handlers call.
4
+ * Global server configuration from CLI args and environment variables.
5
+ * Contains only transport-level settings (transport mode, port).
6
+ *
7
+ * Browser configuration is per-session and managed by SessionController.
6
8
  */
7
9
  import { parseArgs } from '../cli/args.js';
8
- import { SessionManager } from '../browser/session-manager.js';
9
- import { ensureBrowserReady } from '../browser/ensure-browser.js';
10
- // Singleton instances
10
+ // Singleton config
11
11
  let serverConfig = null;
12
- let sessionManager = null;
13
12
  /**
14
13
  * Initialize server configuration from CLI arguments and environment variables.
15
14
  *
16
15
  * @param argv - Command line arguments (process.argv.slice(2))
17
16
  */
18
17
  export function initServerConfig(argv) {
19
- const args = parseArgs(argv);
20
- // Apply environment variable overrides
21
- // Only enable autoConnect from env if no explicit browserUrl/wsEndpoint was provided
22
- if (process.env.AUTO_CONNECT === 'true' && !args.browserUrl && !args.wsEndpoint) {
23
- args.autoConnect = true;
24
- }
25
- serverConfig = args;
18
+ serverConfig = parseArgs(argv);
26
19
  }
27
20
  /**
28
21
  * Get the current server configuration.
@@ -34,47 +27,10 @@ export function getServerConfig() {
34
27
  }
35
28
  return serverConfig;
36
29
  }
37
- /**
38
- * Get or create the SessionManager singleton.
39
- */
40
- export function getSessionManager() {
41
- sessionManager ??= new SessionManager();
42
- return sessionManager;
43
- }
44
- /**
45
- * Check if the SessionManager has been initialized.
46
- * Use this before calling getSessionManager() in cleanup paths
47
- * to avoid creating a new instance unnecessarily.
48
- */
49
- export function isSessionManagerInitialized() {
50
- return sessionManager !== null;
51
- }
52
- /**
53
- * Ensure browser is ready for tool execution.
54
- *
55
- * This is the main entry point for tools to call before executing.
56
- * It will lazily launch or connect to a browser based on server configuration.
57
- */
58
- export async function ensureBrowserForTools() {
59
- const config = getServerConfig();
60
- const session = getSessionManager();
61
- const options = {
62
- headless: config.headless,
63
- isolated: config.isolated,
64
- browserUrl: config.browserUrl,
65
- wsEndpoint: config.wsEndpoint,
66
- autoConnect: config.autoConnect,
67
- userDataDir: config.userDataDir,
68
- channel: config.channel,
69
- executablePath: config.executablePath,
70
- };
71
- await ensureBrowserReady(session, options);
72
- }
73
30
  /**
74
31
  * Reset server state (for testing).
75
32
  */
76
33
  export function resetServerState() {
77
34
  serverConfig = null;
78
- sessionManager = null;
79
35
  }
80
36
  //# sourceMappingURL=server-config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"server-config.js","sourceRoot":"","sources":["../../../src/server/server-config.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,SAAS,EAAmB,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAA6B,MAAM,8BAA8B,CAAC;AAE7F,sBAAsB;AACtB,IAAI,YAAY,GAAsB,IAAI,CAAC;AAC3C,IAAI,cAAc,GAA0B,IAAI,CAAC;AAEjD;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAc;IAC7C,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAE7B,uCAAuC;IACvC,qFAAqF;IACrF,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,KAAK,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;QAChF,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;IAC1B,CAAC;IAED,YAAY,GAAG,IAAI,CAAC;AACtB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe;IAC7B,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAC;IACnF,CAAC;IACD,OAAO,YAAY,CAAC;AACtB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB;IAC/B,cAAc,KAAK,IAAI,cAAc,EAAE,CAAC;IACxC,OAAO,cAAc,CAAC;AACxB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,2BAA2B;IACzC,OAAO,cAAc,KAAK,IAAI,CAAC;AACjC,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB;IACzC,MAAM,MAAM,GAAG,eAAe,EAAE,CAAC;IACjC,MAAM,OAAO,GAAG,iBAAiB,EAAE,CAAC;IAEpC,MAAM,OAAO,GAAyB;QACpC,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,cAAc,EAAE,MAAM,CAAC,cAAc;KACtC,CAAC;IAEF,MAAM,kBAAkB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AAC7C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB;IAC9B,YAAY,GAAG,IAAI,CAAC;IACpB,cAAc,GAAG,IAAI,CAAC;AACxB,CAAC"}
1
+ {"version":3,"file":"server-config.js","sourceRoot":"","sources":["../../../src/server/server-config.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,SAAS,EAAmB,MAAM,gBAAgB,CAAC;AAE5D,mBAAmB;AACnB,IAAI,YAAY,GAAsB,IAAI,CAAC;AAE3C;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAc;IAC7C,YAAY,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;AACjC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe;IAC7B,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAC;IACnF,CAAC;IACD,OAAO,YAAY,CAAC;AACtB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB;IAC9B,YAAY,GAAG,IAAI,CAAC;AACtB,CAAC"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Tool Registrar Types
3
+ *
4
+ * Defines the minimal interface for registering MCP tools.
5
+ * Used by both BrowserAutomationServer (stdio) and HttpGateway (HTTP).
6
+ *
7
+ * @module server/tool-registrar.types
8
+ */
9
+ import type { ZodRawShape } from 'zod';
10
+ /**
11
+ * Minimal interface for registering tools on an MCP server.
12
+ *
13
+ * Implemented by:
14
+ * - BrowserAutomationServer (stdio transport with logging/error wrapping)
15
+ * - HttpToolRegistrar (HTTP transport, wraps McpServer.registerTool)
16
+ */
17
+ export interface ToolRegistrar {
18
+ registerTool(name: string, definition: {
19
+ title: string;
20
+ description?: string;
21
+ inputSchema: ZodRawShape;
22
+ outputSchema?: ZodRawShape;
23
+ }, handler: (input: unknown) => Promise<unknown>): void;
24
+ }
25
+ //# sourceMappingURL=tool-registrar.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-registrar.types.d.ts","sourceRoot":"","sources":["../../../src/server/tool-registrar.types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,KAAK,CAAC;AAEvC;;;;;;GAMG;AACH,MAAM,WAAW,aAAa;IAC5B,YAAY,CACV,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE;QACV,KAAK,EAAE,MAAM,CAAC;QACd,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,WAAW,EAAE,WAAW,CAAC;QACzB,YAAY,CAAC,EAAE,WAAW,CAAC;KAC5B,EACD,OAAO,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,GAC5C,IAAI,CAAC;CACT"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Tool Registrar Types
3
+ *
4
+ * Defines the minimal interface for registering MCP tools.
5
+ * Used by both BrowserAutomationServer (stdio) and HttpGateway (HTTP).
6
+ *
7
+ * @module server/tool-registrar.types
8
+ */
9
+ export {};
10
+ //# sourceMappingURL=tool-registrar.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-registrar.types.js","sourceRoot":"","sources":["../../../src/server/tool-registrar.types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG"}
@@ -0,0 +1,61 @@
1
+ /**
2
+ * Tool Result Handler
3
+ *
4
+ * Shared result-wrapping logic for converting tool handler return values
5
+ * into MCP-compatible content arrays. Used by both BrowserAutomationServer
6
+ * (stdio) and HttpToolRegistrar (HTTP) to avoid duplication.
7
+ *
8
+ * @module server/tool-result-handler
9
+ */
10
+ /** MCP text content */
11
+ interface TextContent {
12
+ readonly type: 'text';
13
+ readonly text: string;
14
+ }
15
+ /** MCP image content */
16
+ interface ImageContent {
17
+ readonly type: 'image';
18
+ readonly data: string;
19
+ readonly mimeType: string;
20
+ }
21
+ /** Union of MCP content types produced by this module */
22
+ export type Content = TextContent | ImageContent;
23
+ /** Formatted tool result ready for MCP response */
24
+ export interface FormattedToolResult {
25
+ [key: string]: unknown;
26
+ content: Content[];
27
+ structuredContent?: Record<string, unknown>;
28
+ isError?: boolean;
29
+ }
30
+ /**
31
+ * Format a tool handler result into an MCP-compatible content array.
32
+ *
33
+ * Handles CompositeResult, ImageResult, FileResult, structured output,
34
+ * plain strings, and arbitrary objects (JSON-stringified).
35
+ *
36
+ * @param result - The raw return value from a tool handler
37
+ * @param hasOutputSchema - Whether the tool definition has an outputSchema
38
+ * @returns MCP-compatible content array with optional structuredContent
39
+ */
40
+ export declare function formatToolResult(result: unknown, hasOutputSchema?: boolean): FormattedToolResult;
41
+ /**
42
+ * Format an error into an MCP-compatible error response.
43
+ *
44
+ * @param error - The caught error
45
+ * @returns MCP-compatible error content
46
+ */
47
+ export declare function formatToolError(error: unknown): FormattedToolResult;
48
+ /**
49
+ * Wrap a tool handler with logging, timing, and MCP result formatting.
50
+ *
51
+ * Shared by both BrowserAutomationServer (stdio) and HttpToolRegistrar (HTTP)
52
+ * to avoid duplicating the try/catch/timing/logging boilerplate.
53
+ *
54
+ * @param name - Tool name used in log messages
55
+ * @param handler - The raw tool handler function
56
+ * @param hasOutputSchema - Whether the tool definition has an outputSchema
57
+ * @returns A wrapped handler that returns a FormattedToolResult
58
+ */
59
+ export declare function wrapToolHandler<T>(name: string, handler: (input: T) => Promise<unknown>, hasOutputSchema: boolean): (input: T) => Promise<FormattedToolResult>;
60
+ export {};
61
+ //# sourceMappingURL=tool-result-handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-result-handler.d.ts","sourceRoot":"","sources":["../../../src/server/tool-result-handler.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH,uBAAuB;AACvB,UAAU,WAAW;IACnB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,wBAAwB;AACxB,UAAU,YAAY;IACpB,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED,yDAAyD;AACzD,MAAM,MAAM,OAAO,GAAG,WAAW,GAAG,YAAY,CAAC;AAEjD,mDAAmD;AACnD,MAAM,WAAW,mBAAmB;IAClC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IACvB,OAAO,EAAE,OAAO,EAAE,CAAC;IACnB,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC5C,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,OAAO,EAAE,eAAe,UAAQ,GAAG,mBAAmB,CAqE9F;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,mBAAmB,CAanE;AA4BD;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAC/B,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,EACvC,eAAe,EAAE,OAAO,GACvB,CAAC,KAAK,EAAE,CAAC,KAAK,OAAO,CAAC,mBAAmB,CAAC,CAmB5C"}
@@ -0,0 +1,155 @@
1
+ /**
2
+ * Tool Result Handler
3
+ *
4
+ * Shared result-wrapping logic for converting tool handler return values
5
+ * into MCP-compatible content arrays. Used by both BrowserAutomationServer
6
+ * (stdio) and HttpToolRegistrar (HTTP) to avoid duplication.
7
+ *
8
+ * @module server/tool-result-handler
9
+ */
10
+ import { isCompositeResult, isImageResult, isFileResult } from '../tools/tool-result.types.js';
11
+ import { getLogger } from '../shared/services/logging.service.js';
12
+ import { BrowserSessionError } from '../shared/errors/browser-session.error.js';
13
+ /**
14
+ * Format a tool handler result into an MCP-compatible content array.
15
+ *
16
+ * Handles CompositeResult, ImageResult, FileResult, structured output,
17
+ * plain strings, and arbitrary objects (JSON-stringified).
18
+ *
19
+ * @param result - The raw return value from a tool handler
20
+ * @param hasOutputSchema - Whether the tool definition has an outputSchema
21
+ * @returns MCP-compatible content array with optional structuredContent
22
+ */
23
+ export function formatToolResult(result, hasOutputSchema = false) {
24
+ // Composite result - return as multi-content (text + image)
25
+ if (isCompositeResult(result)) {
26
+ if (isImageResult(result.image)) {
27
+ return {
28
+ content: [
29
+ { type: 'text', text: result.text },
30
+ {
31
+ type: 'image',
32
+ data: result.image.data,
33
+ mimeType: result.image.mimeType,
34
+ },
35
+ ],
36
+ };
37
+ }
38
+ else {
39
+ // FileResult fallback - return text + file path
40
+ const sizeMB = (result.image.sizeBytes / 1024 / 1024).toFixed(2);
41
+ return {
42
+ content: [
43
+ { type: 'text', text: result.text },
44
+ {
45
+ type: 'text',
46
+ text: `Screenshot saved to: ${result.image.path} (${sizeMB} MB, ${result.image.mimeType})`,
47
+ },
48
+ ],
49
+ };
50
+ }
51
+ }
52
+ // Image result - return as MCP ImageContent (inline base64)
53
+ if (isImageResult(result)) {
54
+ return {
55
+ content: [
56
+ {
57
+ type: 'image',
58
+ data: result.data,
59
+ mimeType: result.mimeType,
60
+ },
61
+ ],
62
+ };
63
+ }
64
+ // File result - return file path as text (for large screenshots)
65
+ if (isFileResult(result)) {
66
+ const sizeMB = (result.sizeBytes / 1024 / 1024).toFixed(2);
67
+ return {
68
+ content: [
69
+ {
70
+ type: 'text',
71
+ text: `Screenshot saved to: ${result.path} (${sizeMB} MB, ${result.mimeType})`,
72
+ },
73
+ ],
74
+ };
75
+ }
76
+ // When outputSchema is defined, return structuredContent for MCP validation
77
+ if (hasOutputSchema) {
78
+ return {
79
+ content: [{ type: 'text', text: JSON.stringify(result) }],
80
+ structuredContent: result,
81
+ };
82
+ }
83
+ // If result is already a string (e.g., XML), use it directly
84
+ // Otherwise JSON.stringify it
85
+ const textContent = typeof result === 'string' ? result : JSON.stringify(result);
86
+ return {
87
+ content: [{ type: 'text', text: textContent }],
88
+ };
89
+ }
90
+ /**
91
+ * Format an error into an MCP-compatible error response.
92
+ *
93
+ * @param error - The caught error
94
+ * @returns MCP-compatible error content
95
+ */
96
+ export function formatToolError(error) {
97
+ const message = formatUserFacingErrorMessage(error);
98
+ return {
99
+ content: [
100
+ {
101
+ type: 'text',
102
+ text: JSON.stringify({
103
+ error: message,
104
+ }),
105
+ },
106
+ ],
107
+ isError: true,
108
+ };
109
+ }
110
+ function formatUserFacingErrorMessage(error) {
111
+ if (!BrowserSessionError.isBrowserSessionError(error)) {
112
+ return error instanceof Error ? error.message : String(error);
113
+ }
114
+ if (error.code === 'CONNECTION_FAILED' &&
115
+ error.context?.operation === 'autoConnect' &&
116
+ error.cause?.message.includes('DevToolsActivePort')) {
117
+ return ('Could not connect to your existing Chrome session. Open Chrome first and enable remote debugging, then retry with auto_connect=true. ' +
118
+ 'Or launch an AWI-managed browser with isolated=true or headless=true.');
119
+ }
120
+ if (error.code === 'BROWSER_DISCONNECTED' && error.context?.connectionMode === 'external') {
121
+ return ('The connected Chrome session was closed. Open Chrome again and retry with auto_connect=true. ' +
122
+ 'Or launch an AWI-managed browser with isolated=true or headless=true.');
123
+ }
124
+ return error.message;
125
+ }
126
+ /**
127
+ * Wrap a tool handler with logging, timing, and MCP result formatting.
128
+ *
129
+ * Shared by both BrowserAutomationServer (stdio) and HttpToolRegistrar (HTTP)
130
+ * to avoid duplicating the try/catch/timing/logging boilerplate.
131
+ *
132
+ * @param name - Tool name used in log messages
133
+ * @param handler - The raw tool handler function
134
+ * @param hasOutputSchema - Whether the tool definition has an outputSchema
135
+ * @returns A wrapped handler that returns a FormattedToolResult
136
+ */
137
+ export function wrapToolHandler(name, handler, hasOutputSchema) {
138
+ const logger = getLogger();
139
+ return async (input) => {
140
+ const startTime = Date.now();
141
+ logger.debug(`Executing tool: ${name}`);
142
+ try {
143
+ const result = await handler(input);
144
+ const executionTime = Date.now() - startTime;
145
+ logger.debug(`Tool ${name} completed in ${executionTime}ms`);
146
+ return formatToolResult(result, hasOutputSchema);
147
+ }
148
+ catch (error) {
149
+ const executionTime = Date.now() - startTime;
150
+ logger.error(`Tool ${name} failed after ${executionTime}ms`, error instanceof Error ? error : undefined);
151
+ return formatToolError(error);
152
+ }
153
+ };
154
+ }
155
+ //# sourceMappingURL=tool-result-handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-result-handler.js","sourceRoot":"","sources":["../../../src/server/tool-result-handler.ts"],"names":[],"mappings":"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"}