@metamask/client-mcp-core 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (486) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/LICENSE +6 -0
  3. package/LICENSE.APACHE2 +201 -0
  4. package/LICENSE.MIT +21 -0
  5. package/README.md +1459 -0
  6. package/dist/capabilities/context.cjs +34 -0
  7. package/dist/capabilities/context.cjs.map +1 -0
  8. package/dist/capabilities/context.d.cts +101 -0
  9. package/dist/capabilities/context.d.cts.map +1 -0
  10. package/dist/capabilities/context.d.mts +101 -0
  11. package/dist/capabilities/context.d.mts.map +1 -0
  12. package/dist/capabilities/context.mjs +29 -0
  13. package/dist/capabilities/context.mjs.map +1 -0
  14. package/dist/capabilities/index.cjs +18 -0
  15. package/dist/capabilities/index.cjs.map +1 -0
  16. package/dist/capabilities/index.d.cts +3 -0
  17. package/dist/capabilities/index.d.cts.map +1 -0
  18. package/dist/capabilities/index.d.mts +3 -0
  19. package/dist/capabilities/index.d.mts.map +1 -0
  20. package/dist/capabilities/index.mjs +2 -0
  21. package/dist/capabilities/index.mjs.map +1 -0
  22. package/dist/capabilities/types.cjs +3 -0
  23. package/dist/capabilities/types.cjs.map +1 -0
  24. package/dist/capabilities/types.d.cts +152 -0
  25. package/dist/capabilities/types.d.cts.map +1 -0
  26. package/dist/capabilities/types.d.mts +152 -0
  27. package/dist/capabilities/types.d.mts.map +1 -0
  28. package/dist/capabilities/types.mjs +2 -0
  29. package/dist/capabilities/types.mjs.map +1 -0
  30. package/dist/index.cjs +59 -0
  31. package/dist/index.cjs.map +1 -0
  32. package/dist/index.d.cts +33 -0
  33. package/dist/index.d.cts.map +1 -0
  34. package/dist/index.d.mts +33 -0
  35. package/dist/index.d.mts.map +1 -0
  36. package/dist/index.mjs +43 -0
  37. package/dist/index.mjs.map +1 -0
  38. package/dist/launcher/console-error-buffer.cjs +72 -0
  39. package/dist/launcher/console-error-buffer.cjs.map +1 -0
  40. package/dist/launcher/console-error-buffer.d.cts +43 -0
  41. package/dist/launcher/console-error-buffer.d.cts.map +1 -0
  42. package/dist/launcher/console-error-buffer.d.mts +43 -0
  43. package/dist/launcher/console-error-buffer.d.mts.map +1 -0
  44. package/dist/launcher/console-error-buffer.mjs +68 -0
  45. package/dist/launcher/console-error-buffer.mjs.map +1 -0
  46. package/dist/launcher/extension-id-resolver.cjs +177 -0
  47. package/dist/launcher/extension-id-resolver.cjs.map +1 -0
  48. package/dist/launcher/extension-id-resolver.d.cts +32 -0
  49. package/dist/launcher/extension-id-resolver.d.cts.map +1 -0
  50. package/dist/launcher/extension-id-resolver.d.mts +32 -0
  51. package/dist/launcher/extension-id-resolver.d.mts.map +1 -0
  52. package/dist/launcher/extension-id-resolver.mjs +173 -0
  53. package/dist/launcher/extension-id-resolver.mjs.map +1 -0
  54. package/dist/launcher/extension-readiness.cjs +50 -0
  55. package/dist/launcher/extension-readiness.cjs.map +1 -0
  56. package/dist/launcher/extension-readiness.d.cts +37 -0
  57. package/dist/launcher/extension-readiness.d.cts.map +1 -0
  58. package/dist/launcher/extension-readiness.d.mts +37 -0
  59. package/dist/launcher/extension-readiness.d.mts.map +1 -0
  60. package/dist/launcher/extension-readiness.mjs +43 -0
  61. package/dist/launcher/extension-readiness.mjs.map +1 -0
  62. package/dist/launcher/index.cjs +21 -0
  63. package/dist/launcher/index.cjs.map +1 -0
  64. package/dist/launcher/index.d.cts +5 -0
  65. package/dist/launcher/index.d.cts.map +1 -0
  66. package/dist/launcher/index.d.mts +5 -0
  67. package/dist/launcher/index.d.mts.map +1 -0
  68. package/dist/launcher/index.mjs +5 -0
  69. package/dist/launcher/index.mjs.map +1 -0
  70. package/dist/launcher/retry.cjs +35 -0
  71. package/dist/launcher/retry.cjs.map +1 -0
  72. package/dist/launcher/retry.d.cts +20 -0
  73. package/dist/launcher/retry.d.cts.map +1 -0
  74. package/dist/launcher/retry.d.mts +20 -0
  75. package/dist/launcher/retry.d.mts.map +1 -0
  76. package/dist/launcher/retry.mjs +31 -0
  77. package/dist/launcher/retry.mjs.map +1 -0
  78. package/dist/mcp-server/constants.cjs +22 -0
  79. package/dist/mcp-server/constants.cjs.map +1 -0
  80. package/dist/mcp-server/constants.d.cts +13 -0
  81. package/dist/mcp-server/constants.d.cts.map +1 -0
  82. package/dist/mcp-server/constants.d.mts +13 -0
  83. package/dist/mcp-server/constants.d.mts.map +1 -0
  84. package/dist/mcp-server/constants.mjs +19 -0
  85. package/dist/mcp-server/constants.mjs.map +1 -0
  86. package/dist/mcp-server/discovery.cjs +299 -0
  87. package/dist/mcp-server/discovery.cjs.map +1 -0
  88. package/dist/mcp-server/discovery.d.cts +56 -0
  89. package/dist/mcp-server/discovery.d.cts.map +1 -0
  90. package/dist/mcp-server/discovery.d.mts +56 -0
  91. package/dist/mcp-server/discovery.d.mts.map +1 -0
  92. package/dist/mcp-server/discovery.mjs +292 -0
  93. package/dist/mcp-server/discovery.mjs.map +1 -0
  94. package/dist/mcp-server/knowledge-store.cjs +1196 -0
  95. package/dist/mcp-server/knowledge-store.cjs.map +1 -0
  96. package/dist/mcp-server/knowledge-store.d.cts +249 -0
  97. package/dist/mcp-server/knowledge-store.d.cts.map +1 -0
  98. package/dist/mcp-server/knowledge-store.d.mts +249 -0
  99. package/dist/mcp-server/knowledge-store.d.mts.map +1 -0
  100. package/dist/mcp-server/knowledge-store.mjs +1154 -0
  101. package/dist/mcp-server/knowledge-store.mjs.map +1 -0
  102. package/dist/mcp-server/schemas.cjs +433 -0
  103. package/dist/mcp-server/schemas.cjs.map +1 -0
  104. package/dist/mcp-server/schemas.d.cts +557 -0
  105. package/dist/mcp-server/schemas.d.cts.map +1 -0
  106. package/dist/mcp-server/schemas.d.mts +557 -0
  107. package/dist/mcp-server/schemas.d.mts.map +1 -0
  108. package/dist/mcp-server/schemas.mjs +430 -0
  109. package/dist/mcp-server/schemas.mjs.map +1 -0
  110. package/dist/mcp-server/server.cjs +161 -0
  111. package/dist/mcp-server/server.cjs.map +1 -0
  112. package/dist/mcp-server/server.d.cts +24 -0
  113. package/dist/mcp-server/server.d.cts.map +1 -0
  114. package/dist/mcp-server/server.d.mts +24 -0
  115. package/dist/mcp-server/server.d.mts.map +1 -0
  116. package/dist/mcp-server/server.mjs +158 -0
  117. package/dist/mcp-server/server.mjs.map +1 -0
  118. package/dist/mcp-server/session-manager.cjs +53 -0
  119. package/dist/mcp-server/session-manager.cjs.map +1 -0
  120. package/dist/mcp-server/session-manager.d.cts +240 -0
  121. package/dist/mcp-server/session-manager.d.cts.map +1 -0
  122. package/dist/mcp-server/session-manager.d.mts +240 -0
  123. package/dist/mcp-server/session-manager.d.mts.map +1 -0
  124. package/dist/mcp-server/session-manager.mjs +48 -0
  125. package/dist/mcp-server/session-manager.mjs.map +1 -0
  126. package/dist/mcp-server/test-utils/flush-promises.cjs +10 -0
  127. package/dist/mcp-server/test-utils/flush-promises.cjs.map +1 -0
  128. package/dist/mcp-server/test-utils/flush-promises.d.cts +2 -0
  129. package/dist/mcp-server/test-utils/flush-promises.d.cts.map +1 -0
  130. package/dist/mcp-server/test-utils/flush-promises.d.mts +2 -0
  131. package/dist/mcp-server/test-utils/flush-promises.d.mts.map +1 -0
  132. package/dist/mcp-server/test-utils/flush-promises.mjs +7 -0
  133. package/dist/mcp-server/test-utils/flush-promises.mjs.map +1 -0
  134. package/dist/mcp-server/test-utils/index.cjs +13 -0
  135. package/dist/mcp-server/test-utils/index.cjs.map +1 -0
  136. package/dist/mcp-server/test-utils/index.d.cts +4 -0
  137. package/dist/mcp-server/test-utils/index.d.cts.map +1 -0
  138. package/dist/mcp-server/test-utils/index.d.mts +4 -0
  139. package/dist/mcp-server/test-utils/index.d.mts.map +1 -0
  140. package/dist/mcp-server/test-utils/index.mjs +4 -0
  141. package/dist/mcp-server/test-utils/index.mjs.map +1 -0
  142. package/dist/mcp-server/test-utils/mock-factories.cjs +129 -0
  143. package/dist/mcp-server/test-utils/mock-factories.cjs.map +1 -0
  144. package/dist/mcp-server/test-utils/mock-factories.d.cts +89 -0
  145. package/dist/mcp-server/test-utils/mock-factories.d.cts.map +1 -0
  146. package/dist/mcp-server/test-utils/mock-factories.d.mts +89 -0
  147. package/dist/mcp-server/test-utils/mock-factories.d.mts.map +1 -0
  148. package/dist/mcp-server/test-utils/mock-factories.mjs +125 -0
  149. package/dist/mcp-server/test-utils/mock-factories.mjs.map +1 -0
  150. package/dist/mcp-server/test-utils/mock-playwright.cjs +205 -0
  151. package/dist/mcp-server/test-utils/mock-playwright.cjs.map +1 -0
  152. package/dist/mcp-server/test-utils/mock-playwright.d.cts +69 -0
  153. package/dist/mcp-server/test-utils/mock-playwright.d.cts.map +1 -0
  154. package/dist/mcp-server/test-utils/mock-playwright.d.mts +69 -0
  155. package/dist/mcp-server/test-utils/mock-playwright.d.mts.map +1 -0
  156. package/dist/mcp-server/test-utils/mock-playwright.mjs +200 -0
  157. package/dist/mcp-server/test-utils/mock-playwright.mjs.map +1 -0
  158. package/dist/mcp-server/tokenization.cjs +117 -0
  159. package/dist/mcp-server/tokenization.cjs.map +1 -0
  160. package/dist/mcp-server/tokenization.d.cts +22 -0
  161. package/dist/mcp-server/tokenization.d.cts.map +1 -0
  162. package/dist/mcp-server/tokenization.d.mts +22 -0
  163. package/dist/mcp-server/tokenization.d.mts.map +1 -0
  164. package/dist/mcp-server/tokenization.mjs +112 -0
  165. package/dist/mcp-server/tokenization.mjs.map +1 -0
  166. package/dist/mcp-server/tools/batch.cjs +199 -0
  167. package/dist/mcp-server/tools/batch.cjs.map +1 -0
  168. package/dist/mcp-server/tools/batch.d.cts +81 -0
  169. package/dist/mcp-server/tools/batch.d.cts.map +1 -0
  170. package/dist/mcp-server/tools/batch.d.mts +81 -0
  171. package/dist/mcp-server/tools/batch.d.mts.map +1 -0
  172. package/dist/mcp-server/tools/batch.mjs +191 -0
  173. package/dist/mcp-server/tools/batch.mjs.map +1 -0
  174. package/dist/mcp-server/tools/build.cjs +47 -0
  175. package/dist/mcp-server/tools/build.cjs.map +1 -0
  176. package/dist/mcp-server/tools/build.d.cts +22 -0
  177. package/dist/mcp-server/tools/build.d.cts.map +1 -0
  178. package/dist/mcp-server/tools/build.d.mts +22 -0
  179. package/dist/mcp-server/tools/build.d.mts.map +1 -0
  180. package/dist/mcp-server/tools/build.mjs +44 -0
  181. package/dist/mcp-server/tools/build.mjs.map +1 -0
  182. package/dist/mcp-server/tools/cleanup.cjs +20 -0
  183. package/dist/mcp-server/tools/cleanup.cjs.map +1 -0
  184. package/dist/mcp-server/tools/cleanup.d.cts +10 -0
  185. package/dist/mcp-server/tools/cleanup.d.cts.map +1 -0
  186. package/dist/mcp-server/tools/cleanup.d.mts +10 -0
  187. package/dist/mcp-server/tools/cleanup.d.mts.map +1 -0
  188. package/dist/mcp-server/tools/cleanup.mjs +17 -0
  189. package/dist/mcp-server/tools/cleanup.mjs.map +1 -0
  190. package/dist/mcp-server/tools/clipboard.cjs +100 -0
  191. package/dist/mcp-server/tools/clipboard.cjs.map +1 -0
  192. package/dist/mcp-server/tools/clipboard.d.cts +16 -0
  193. package/dist/mcp-server/tools/clipboard.d.cts.map +1 -0
  194. package/dist/mcp-server/tools/clipboard.d.mts +16 -0
  195. package/dist/mcp-server/tools/clipboard.d.mts.map +1 -0
  196. package/dist/mcp-server/tools/clipboard.mjs +97 -0
  197. package/dist/mcp-server/tools/clipboard.mjs.map +1 -0
  198. package/dist/mcp-server/tools/context.cjs +66 -0
  199. package/dist/mcp-server/tools/context.cjs.map +1 -0
  200. package/dist/mcp-server/tools/context.d.cts +35 -0
  201. package/dist/mcp-server/tools/context.d.cts.map +1 -0
  202. package/dist/mcp-server/tools/context.d.mts +35 -0
  203. package/dist/mcp-server/tools/context.d.mts.map +1 -0
  204. package/dist/mcp-server/tools/context.mjs +62 -0
  205. package/dist/mcp-server/tools/context.mjs.map +1 -0
  206. package/dist/mcp-server/tools/definitions.cjs +463 -0
  207. package/dist/mcp-server/tools/definitions.cjs.map +1 -0
  208. package/dist/mcp-server/tools/definitions.d.cts +97 -0
  209. package/dist/mcp-server/tools/definitions.d.cts.map +1 -0
  210. package/dist/mcp-server/tools/definitions.d.mts +97 -0
  211. package/dist/mcp-server/tools/definitions.d.mts.map +1 -0
  212. package/dist/mcp-server/tools/definitions.mjs +451 -0
  213. package/dist/mcp-server/tools/definitions.mjs.map +1 -0
  214. package/dist/mcp-server/tools/discovery-tools.cjs +162 -0
  215. package/dist/mcp-server/tools/discovery-tools.cjs.map +1 -0
  216. package/dist/mcp-server/tools/discovery-tools.d.cts +26 -0
  217. package/dist/mcp-server/tools/discovery-tools.d.cts.map +1 -0
  218. package/dist/mcp-server/tools/discovery-tools.d.mts +26 -0
  219. package/dist/mcp-server/tools/discovery-tools.d.mts.map +1 -0
  220. package/dist/mcp-server/tools/discovery-tools.mjs +157 -0
  221. package/dist/mcp-server/tools/discovery-tools.mjs.map +1 -0
  222. package/dist/mcp-server/tools/error-classification.cjs +296 -0
  223. package/dist/mcp-server/tools/error-classification.cjs.map +1 -0
  224. package/dist/mcp-server/tools/error-classification.d.cts +135 -0
  225. package/dist/mcp-server/tools/error-classification.d.cts.map +1 -0
  226. package/dist/mcp-server/tools/error-classification.d.mts +135 -0
  227. package/dist/mcp-server/tools/error-classification.d.mts.map +1 -0
  228. package/dist/mcp-server/tools/error-classification.mjs +281 -0
  229. package/dist/mcp-server/tools/error-classification.mjs.map +1 -0
  230. package/dist/mcp-server/tools/helpers.cjs +149 -0
  231. package/dist/mcp-server/tools/helpers.cjs.map +1 -0
  232. package/dist/mcp-server/tools/helpers.d.cts +149 -0
  233. package/dist/mcp-server/tools/helpers.d.cts.map +1 -0
  234. package/dist/mcp-server/tools/helpers.d.mts +149 -0
  235. package/dist/mcp-server/tools/helpers.d.mts.map +1 -0
  236. package/dist/mcp-server/tools/helpers.mjs +141 -0
  237. package/dist/mcp-server/tools/helpers.mjs.map +1 -0
  238. package/dist/mcp-server/tools/index.cjs +27 -0
  239. package/dist/mcp-server/tools/index.cjs.map +1 -0
  240. package/dist/mcp-server/tools/index.d.cts +11 -0
  241. package/dist/mcp-server/tools/index.d.cts.map +1 -0
  242. package/dist/mcp-server/tools/index.d.mts +11 -0
  243. package/dist/mcp-server/tools/index.d.mts.map +1 -0
  244. package/dist/mcp-server/tools/index.mjs +11 -0
  245. package/dist/mcp-server/tools/index.mjs.map +1 -0
  246. package/dist/mcp-server/tools/interaction.cjs +190 -0
  247. package/dist/mcp-server/tools/interaction.cjs.map +1 -0
  248. package/dist/mcp-server/tools/interaction.d.cts +26 -0
  249. package/dist/mcp-server/tools/interaction.d.cts.map +1 -0
  250. package/dist/mcp-server/tools/interaction.d.mts +26 -0
  251. package/dist/mcp-server/tools/interaction.d.mts.map +1 -0
  252. package/dist/mcp-server/tools/interaction.mjs +185 -0
  253. package/dist/mcp-server/tools/interaction.mjs.map +1 -0
  254. package/dist/mcp-server/tools/knowledge.cjs +120 -0
  255. package/dist/mcp-server/tools/knowledge.cjs.map +1 -0
  256. package/dist/mcp-server/tools/knowledge.d.cts +34 -0
  257. package/dist/mcp-server/tools/knowledge.d.cts.map +1 -0
  258. package/dist/mcp-server/tools/knowledge.d.mts +34 -0
  259. package/dist/mcp-server/tools/knowledge.d.mts.map +1 -0
  260. package/dist/mcp-server/tools/knowledge.mjs +114 -0
  261. package/dist/mcp-server/tools/knowledge.mjs.map +1 -0
  262. package/dist/mcp-server/tools/launch.cjs +51 -0
  263. package/dist/mcp-server/tools/launch.cjs.map +1 -0
  264. package/dist/mcp-server/tools/launch.d.cts +10 -0
  265. package/dist/mcp-server/tools/launch.d.cts.map +1 -0
  266. package/dist/mcp-server/tools/launch.d.mts +10 -0
  267. package/dist/mcp-server/tools/launch.d.mts.map +1 -0
  268. package/dist/mcp-server/tools/launch.mjs +48 -0
  269. package/dist/mcp-server/tools/launch.mjs.map +1 -0
  270. package/dist/mcp-server/tools/navigation.cjs +242 -0
  271. package/dist/mcp-server/tools/navigation.cjs.map +1 -0
  272. package/dist/mcp-server/tools/navigation.d.cts +34 -0
  273. package/dist/mcp-server/tools/navigation.d.cts.map +1 -0
  274. package/dist/mcp-server/tools/navigation.d.mts +34 -0
  275. package/dist/mcp-server/tools/navigation.d.mts.map +1 -0
  276. package/dist/mcp-server/tools/navigation.mjs +236 -0
  277. package/dist/mcp-server/tools/navigation.mjs.map +1 -0
  278. package/dist/mcp-server/tools/registry.cjs +10 -0
  279. package/dist/mcp-server/tools/registry.cjs.map +1 -0
  280. package/dist/mcp-server/tools/registry.d.cts +4 -0
  281. package/dist/mcp-server/tools/registry.d.cts.map +1 -0
  282. package/dist/mcp-server/tools/registry.d.mts +4 -0
  283. package/dist/mcp-server/tools/registry.d.mts.map +1 -0
  284. package/dist/mcp-server/tools/registry.mjs +4 -0
  285. package/dist/mcp-server/tools/registry.mjs.map +1 -0
  286. package/dist/mcp-server/tools/run-tool.cjs +140 -0
  287. package/dist/mcp-server/tools/run-tool.cjs.map +1 -0
  288. package/dist/mcp-server/tools/run-tool.d.cts +39 -0
  289. package/dist/mcp-server/tools/run-tool.d.cts.map +1 -0
  290. package/dist/mcp-server/tools/run-tool.d.mts +39 -0
  291. package/dist/mcp-server/tools/run-tool.d.mts.map +1 -0
  292. package/dist/mcp-server/tools/run-tool.mjs +137 -0
  293. package/dist/mcp-server/tools/run-tool.mjs.map +1 -0
  294. package/dist/mcp-server/tools/screenshot.cjs +55 -0
  295. package/dist/mcp-server/tools/screenshot.cjs.map +1 -0
  296. package/dist/mcp-server/tools/screenshot.d.cts +10 -0
  297. package/dist/mcp-server/tools/screenshot.d.cts.map +1 -0
  298. package/dist/mcp-server/tools/screenshot.d.mts +10 -0
  299. package/dist/mcp-server/tools/screenshot.d.mts.map +1 -0
  300. package/dist/mcp-server/tools/screenshot.mjs +52 -0
  301. package/dist/mcp-server/tools/screenshot.mjs.map +1 -0
  302. package/dist/mcp-server/tools/seeding.cjs +214 -0
  303. package/dist/mcp-server/tools/seeding.cjs.map +1 -0
  304. package/dist/mcp-server/tools/seeding.d.cts +38 -0
  305. package/dist/mcp-server/tools/seeding.d.cts.map +1 -0
  306. package/dist/mcp-server/tools/seeding.d.mts +38 -0
  307. package/dist/mcp-server/tools/seeding.d.mts.map +1 -0
  308. package/dist/mcp-server/tools/seeding.mjs +208 -0
  309. package/dist/mcp-server/tools/seeding.mjs.map +1 -0
  310. package/dist/mcp-server/tools/state.cjs +69 -0
  311. package/dist/mcp-server/tools/state.cjs.map +1 -0
  312. package/dist/mcp-server/tools/state.d.cts +19 -0
  313. package/dist/mcp-server/tools/state.d.cts.map +1 -0
  314. package/dist/mcp-server/tools/state.d.mts +19 -0
  315. package/dist/mcp-server/tools/state.d.mts.map +1 -0
  316. package/dist/mcp-server/tools/state.mjs +66 -0
  317. package/dist/mcp-server/tools/state.mjs.map +1 -0
  318. package/dist/mcp-server/types/discovery.cjs +24 -0
  319. package/dist/mcp-server/types/discovery.cjs.map +1 -0
  320. package/dist/mcp-server/types/discovery.d.cts +30 -0
  321. package/dist/mcp-server/types/discovery.d.cts.map +1 -0
  322. package/dist/mcp-server/types/discovery.d.mts +30 -0
  323. package/dist/mcp-server/types/discovery.d.mts.map +1 -0
  324. package/dist/mcp-server/types/discovery.mjs +21 -0
  325. package/dist/mcp-server/types/discovery.mjs.map +1 -0
  326. package/dist/mcp-server/types/errors.cjs +33 -0
  327. package/dist/mcp-server/types/errors.cjs.map +1 -0
  328. package/dist/mcp-server/types/errors.d.cts +31 -0
  329. package/dist/mcp-server/types/errors.d.cts.map +1 -0
  330. package/dist/mcp-server/types/errors.d.mts +31 -0
  331. package/dist/mcp-server/types/errors.d.mts.map +1 -0
  332. package/dist/mcp-server/types/errors.mjs +30 -0
  333. package/dist/mcp-server/types/errors.mjs.map +1 -0
  334. package/dist/mcp-server/types/index.cjs +21 -0
  335. package/dist/mcp-server/types/index.cjs.map +1 -0
  336. package/dist/mcp-server/types/index.d.cts +10 -0
  337. package/dist/mcp-server/types/index.d.cts.map +1 -0
  338. package/dist/mcp-server/types/index.d.mts +10 -0
  339. package/dist/mcp-server/types/index.d.mts.map +1 -0
  340. package/dist/mcp-server/types/index.mjs +5 -0
  341. package/dist/mcp-server/types/index.mjs.map +1 -0
  342. package/dist/mcp-server/types/knowledge.cjs +3 -0
  343. package/dist/mcp-server/types/knowledge.cjs.map +1 -0
  344. package/dist/mcp-server/types/knowledge.d.cts +116 -0
  345. package/dist/mcp-server/types/knowledge.d.cts.map +1 -0
  346. package/dist/mcp-server/types/knowledge.d.mts +116 -0
  347. package/dist/mcp-server/types/knowledge.d.mts.map +1 -0
  348. package/dist/mcp-server/types/knowledge.mjs +2 -0
  349. package/dist/mcp-server/types/knowledge.mjs.map +1 -0
  350. package/dist/mcp-server/types/responses.cjs +3 -0
  351. package/dist/mcp-server/types/responses.cjs.map +1 -0
  352. package/dist/mcp-server/types/responses.d.cts +22 -0
  353. package/dist/mcp-server/types/responses.d.cts.map +1 -0
  354. package/dist/mcp-server/types/responses.d.mts +22 -0
  355. package/dist/mcp-server/types/responses.d.mts.map +1 -0
  356. package/dist/mcp-server/types/responses.mjs +2 -0
  357. package/dist/mcp-server/types/responses.mjs.map +1 -0
  358. package/dist/mcp-server/types/seeding.cjs +34 -0
  359. package/dist/mcp-server/types/seeding.cjs.map +1 -0
  360. package/dist/mcp-server/types/seeding.d.cts +40 -0
  361. package/dist/mcp-server/types/seeding.d.cts.map +1 -0
  362. package/dist/mcp-server/types/seeding.d.mts +40 -0
  363. package/dist/mcp-server/types/seeding.d.mts.map +1 -0
  364. package/dist/mcp-server/types/seeding.mjs +31 -0
  365. package/dist/mcp-server/types/seeding.mjs.map +1 -0
  366. package/dist/mcp-server/types/session.cjs +3 -0
  367. package/dist/mcp-server/types/session.cjs.map +1 -0
  368. package/dist/mcp-server/types/session.d.cts +11 -0
  369. package/dist/mcp-server/types/session.d.cts.map +1 -0
  370. package/dist/mcp-server/types/session.d.mts +11 -0
  371. package/dist/mcp-server/types/session.d.mts.map +1 -0
  372. package/dist/mcp-server/types/session.mjs +2 -0
  373. package/dist/mcp-server/types/session.mjs.map +1 -0
  374. package/dist/mcp-server/types/step-record.cjs +20 -0
  375. package/dist/mcp-server/types/step-record.cjs.map +1 -0
  376. package/dist/mcp-server/types/step-record.d.cts +86 -0
  377. package/dist/mcp-server/types/step-record.d.cts.map +1 -0
  378. package/dist/mcp-server/types/step-record.d.mts +86 -0
  379. package/dist/mcp-server/types/step-record.d.mts.map +1 -0
  380. package/dist/mcp-server/types/step-record.mjs +17 -0
  381. package/dist/mcp-server/types/step-record.mjs.map +1 -0
  382. package/dist/mcp-server/types/tool-inputs.cjs +3 -0
  383. package/dist/mcp-server/types/tool-inputs.cjs.map +1 -0
  384. package/dist/mcp-server/types/tool-inputs.d.cts +118 -0
  385. package/dist/mcp-server/types/tool-inputs.d.cts.map +1 -0
  386. package/dist/mcp-server/types/tool-inputs.d.mts +118 -0
  387. package/dist/mcp-server/types/tool-inputs.d.mts.map +1 -0
  388. package/dist/mcp-server/types/tool-inputs.mjs +2 -0
  389. package/dist/mcp-server/types/tool-inputs.mjs.map +1 -0
  390. package/dist/mcp-server/types/tool-outputs.cjs +3 -0
  391. package/dist/mcp-server/types/tool-outputs.cjs.map +1 -0
  392. package/dist/mcp-server/types/tool-outputs.d.cts +121 -0
  393. package/dist/mcp-server/types/tool-outputs.d.cts.map +1 -0
  394. package/dist/mcp-server/types/tool-outputs.d.mts +121 -0
  395. package/dist/mcp-server/types/tool-outputs.d.mts.map +1 -0
  396. package/dist/mcp-server/types/tool-outputs.mjs +2 -0
  397. package/dist/mcp-server/types/tool-outputs.mjs.map +1 -0
  398. package/dist/mcp-server/utils/errors.cjs +14 -0
  399. package/dist/mcp-server/utils/errors.cjs.map +1 -0
  400. package/dist/mcp-server/utils/errors.d.cts +9 -0
  401. package/dist/mcp-server/utils/errors.d.cts.map +1 -0
  402. package/dist/mcp-server/utils/errors.d.mts +9 -0
  403. package/dist/mcp-server/utils/errors.d.mts.map +1 -0
  404. package/dist/mcp-server/utils/errors.mjs +11 -0
  405. package/dist/mcp-server/utils/errors.mjs.map +1 -0
  406. package/dist/mcp-server/utils/index.cjs +22 -0
  407. package/dist/mcp-server/utils/index.cjs.map +1 -0
  408. package/dist/mcp-server/utils/index.d.cts +8 -0
  409. package/dist/mcp-server/utils/index.d.cts.map +1 -0
  410. package/dist/mcp-server/utils/index.d.mts +8 -0
  411. package/dist/mcp-server/utils/index.d.mts.map +1 -0
  412. package/dist/mcp-server/utils/index.mjs +8 -0
  413. package/dist/mcp-server/utils/index.mjs.map +1 -0
  414. package/dist/mcp-server/utils/logger.cjs +25 -0
  415. package/dist/mcp-server/utils/logger.cjs.map +1 -0
  416. package/dist/mcp-server/utils/logger.d.cts +9 -0
  417. package/dist/mcp-server/utils/logger.d.cts.map +1 -0
  418. package/dist/mcp-server/utils/logger.d.mts +9 -0
  419. package/dist/mcp-server/utils/logger.d.mts.map +1 -0
  420. package/dist/mcp-server/utils/logger.mjs +22 -0
  421. package/dist/mcp-server/utils/logger.mjs.map +1 -0
  422. package/dist/mcp-server/utils/redaction.cjs +24 -0
  423. package/dist/mcp-server/utils/redaction.cjs.map +1 -0
  424. package/dist/mcp-server/utils/redaction.d.cts +9 -0
  425. package/dist/mcp-server/utils/redaction.d.cts.map +1 -0
  426. package/dist/mcp-server/utils/redaction.d.mts +9 -0
  427. package/dist/mcp-server/utils/redaction.d.mts.map +1 -0
  428. package/dist/mcp-server/utils/redaction.mjs +20 -0
  429. package/dist/mcp-server/utils/redaction.mjs.map +1 -0
  430. package/dist/mcp-server/utils/response.cjs +49 -0
  431. package/dist/mcp-server/utils/response.cjs.map +1 -0
  432. package/dist/mcp-server/utils/response.d.cts +22 -0
  433. package/dist/mcp-server/utils/response.d.cts.map +1 -0
  434. package/dist/mcp-server/utils/response.d.mts +22 -0
  435. package/dist/mcp-server/utils/response.d.mts.map +1 -0
  436. package/dist/mcp-server/utils/response.mjs +45 -0
  437. package/dist/mcp-server/utils/response.mjs.map +1 -0
  438. package/dist/mcp-server/utils/targets.cjs +32 -0
  439. package/dist/mcp-server/utils/targets.cjs.map +1 -0
  440. package/dist/mcp-server/utils/targets.d.cts +25 -0
  441. package/dist/mcp-server/utils/targets.d.cts.map +1 -0
  442. package/dist/mcp-server/utils/targets.d.mts +25 -0
  443. package/dist/mcp-server/utils/targets.d.mts.map +1 -0
  444. package/dist/mcp-server/utils/targets.mjs +29 -0
  445. package/dist/mcp-server/utils/targets.mjs.map +1 -0
  446. package/dist/mcp-server/utils/time.cjs +39 -0
  447. package/dist/mcp-server/utils/time.cjs.map +1 -0
  448. package/dist/mcp-server/utils/time.d.cts +15 -0
  449. package/dist/mcp-server/utils/time.d.cts.map +1 -0
  450. package/dist/mcp-server/utils/time.d.mts +15 -0
  451. package/dist/mcp-server/utils/time.d.mts.map +1 -0
  452. package/dist/mcp-server/utils/time.mjs +35 -0
  453. package/dist/mcp-server/utils/time.mjs.map +1 -0
  454. package/dist/mcp-server/utils/type-guards.cjs +42 -0
  455. package/dist/mcp-server/utils/type-guards.cjs.map +1 -0
  456. package/dist/mcp-server/utils/type-guards.d.cts +30 -0
  457. package/dist/mcp-server/utils/type-guards.d.cts.map +1 -0
  458. package/dist/mcp-server/utils/type-guards.d.mts +30 -0
  459. package/dist/mcp-server/utils/type-guards.d.mts.map +1 -0
  460. package/dist/mcp-server/utils/type-guards.mjs +38 -0
  461. package/dist/mcp-server/utils/type-guards.mjs.map +1 -0
  462. package/dist/utils/fetch.cjs +36 -0
  463. package/dist/utils/fetch.cjs.map +1 -0
  464. package/dist/utils/fetch.d.cts +20 -0
  465. package/dist/utils/fetch.d.cts.map +1 -0
  466. package/dist/utils/fetch.d.mts +20 -0
  467. package/dist/utils/fetch.d.mts.map +1 -0
  468. package/dist/utils/fetch.mjs +33 -0
  469. package/dist/utils/fetch.mjs.map +1 -0
  470. package/dist/utils/index.cjs +11 -0
  471. package/dist/utils/index.cjs.map +1 -0
  472. package/dist/utils/index.d.cts +6 -0
  473. package/dist/utils/index.d.cts.map +1 -0
  474. package/dist/utils/index.d.mts +6 -0
  475. package/dist/utils/index.d.mts.map +1 -0
  476. package/dist/utils/index.mjs +6 -0
  477. package/dist/utils/index.mjs.map +1 -0
  478. package/dist/utils/service-readiness.cjs +75 -0
  479. package/dist/utils/service-readiness.cjs.map +1 -0
  480. package/dist/utils/service-readiness.d.cts +61 -0
  481. package/dist/utils/service-readiness.d.cts.map +1 -0
  482. package/dist/utils/service-readiness.d.mts +61 -0
  483. package/dist/utils/service-readiness.d.mts.map +1 -0
  484. package/dist/utils/service-readiness.mjs +72 -0
  485. package/dist/utils/service-readiness.mjs.map +1 -0
  486. package/package.json +119 -0
@@ -0,0 +1,281 @@
1
+ /**
2
+ * Error classification utilities for tool handlers.
3
+ *
4
+ * These utilities help classify errors into specific error codes
5
+ * based on error message patterns.
6
+ */
7
+ import { ErrorCodes } from "../types/index.mjs";
8
+ import { extractErrorMessage } from "../utils/index.mjs";
9
+ const ERROR_PATTERNS = {
10
+ targetNotFound: [
11
+ 'Unknown a11yRef',
12
+ 'not found',
13
+ 'No element found',
14
+ 'Timeout waiting for selector',
15
+ ],
16
+ timeout: ['Timeout', 'exceeded', 'timed out'],
17
+ navigation: ['Navigation failed', 'net::ERR'],
18
+ pageClosed: [
19
+ 'Target page, context or browser has been closed',
20
+ 'page has been closed',
21
+ 'context has been closed',
22
+ 'browser has been closed',
23
+ 'Target closed',
24
+ 'Session closed',
25
+ ],
26
+ };
27
+ /**
28
+ * Check if an error indicates the page was closed.
29
+ *
30
+ * @param error - The error to check for page closure indicators
31
+ * @returns True if the error indicates the page was closed
32
+ */
33
+ export function isPageClosedError(error) {
34
+ const message = extractErrorMessage(error);
35
+ return ERROR_PATTERNS.pageClosed.some((pattern) => message.includes(pattern));
36
+ }
37
+ /**
38
+ * Classify an interaction error into a specific error code.
39
+ *
40
+ * @param error - The error to classify
41
+ * @param fallbackCode - The fallback error code if no pattern matches
42
+ * @returns Object with error code and message
43
+ */
44
+ export function classifyInteractionError(error, fallbackCode) {
45
+ const message = extractErrorMessage(error);
46
+ for (const pattern of ERROR_PATTERNS.targetNotFound) {
47
+ if (message.includes(pattern)) {
48
+ return { code: ErrorCodes.MM_TARGET_NOT_FOUND, message };
49
+ }
50
+ }
51
+ for (const pattern of ERROR_PATTERNS.timeout) {
52
+ if (message.includes(pattern)) {
53
+ return { code: ErrorCodes.MM_WAIT_TIMEOUT, message };
54
+ }
55
+ }
56
+ return { code: fallbackCode, message: `Operation failed: ${message}` };
57
+ }
58
+ /**
59
+ * Classify a click error.
60
+ *
61
+ * @param error - The error to classify
62
+ * @returns Object with error code and message
63
+ */
64
+ export function classifyClickError(error) {
65
+ return classifyInteractionError(error, ErrorCodes.MM_CLICK_FAILED);
66
+ }
67
+ /**
68
+ * Classify a type error.
69
+ *
70
+ * @param error - The error to classify
71
+ * @returns Object with error code and message
72
+ */
73
+ export function classifyTypeError(error) {
74
+ return classifyInteractionError(error, ErrorCodes.MM_TYPE_FAILED);
75
+ }
76
+ /**
77
+ * Classify a wait error.
78
+ *
79
+ * @param error - The error to classify
80
+ * @returns Object with error code and message
81
+ */
82
+ export function classifyWaitError(error) {
83
+ const message = extractErrorMessage(error);
84
+ return {
85
+ code: ErrorCodes.MM_WAIT_TIMEOUT,
86
+ message: `Wait timed out: ${message}`,
87
+ };
88
+ }
89
+ /**
90
+ * Classify a navigation error.
91
+ *
92
+ * @param error - The error to classify
93
+ * @returns Object with error code and message
94
+ */
95
+ export function classifyNavigationError(error) {
96
+ const message = extractErrorMessage(error);
97
+ for (const pattern of ERROR_PATTERNS.navigation) {
98
+ if (message.includes(pattern)) {
99
+ return { code: ErrorCodes.MM_NAVIGATION_FAILED, message };
100
+ }
101
+ }
102
+ for (const pattern of ERROR_PATTERNS.timeout) {
103
+ if (message.includes(pattern)) {
104
+ return { code: ErrorCodes.MM_WAIT_TIMEOUT, message };
105
+ }
106
+ }
107
+ for (const pattern of ERROR_PATTERNS.pageClosed) {
108
+ if (message.includes(pattern)) {
109
+ return {
110
+ code: ErrorCodes.MM_NAVIGATION_FAILED,
111
+ message: `Page closed during navigation: ${message}`,
112
+ };
113
+ }
114
+ }
115
+ return {
116
+ code: ErrorCodes.MM_NAVIGATION_FAILED,
117
+ message: `Navigation failed: ${message}`,
118
+ };
119
+ }
120
+ /**
121
+ * Classify a tab operation error.
122
+ *
123
+ * @param error - The error to classify
124
+ * @returns Object with error code and message
125
+ */
126
+ export function classifyTabError(error) {
127
+ const message = extractErrorMessage(error);
128
+ if (message.includes('not found') || message.includes('No tab found')) {
129
+ return { code: ErrorCodes.MM_TAB_NOT_FOUND, message };
130
+ }
131
+ for (const pattern of ERROR_PATTERNS.timeout) {
132
+ if (message.includes(pattern)) {
133
+ return { code: ErrorCodes.MM_WAIT_TIMEOUT, message };
134
+ }
135
+ }
136
+ for (const pattern of ERROR_PATTERNS.pageClosed) {
137
+ if (message.includes(pattern)) {
138
+ return {
139
+ code: ErrorCodes.MM_NAVIGATION_FAILED,
140
+ message: `Tab operation failed - page closed: ${message}`,
141
+ };
142
+ }
143
+ }
144
+ return {
145
+ code: ErrorCodes.MM_NAVIGATION_FAILED,
146
+ message: `Tab operation failed: ${message}`,
147
+ };
148
+ }
149
+ /**
150
+ * Classify a notification wait error.
151
+ *
152
+ * @param error - The error to classify
153
+ * @returns Object with error code and message
154
+ */
155
+ export function classifyNotificationError(error) {
156
+ const message = extractErrorMessage(error);
157
+ for (const pattern of ERROR_PATTERNS.timeout) {
158
+ if (message.includes(pattern)) {
159
+ return {
160
+ code: ErrorCodes.MM_NOTIFICATION_TIMEOUT,
161
+ message: `Notification popup did not appear: ${message}`,
162
+ };
163
+ }
164
+ }
165
+ for (const pattern of ERROR_PATTERNS.pageClosed) {
166
+ if (message.includes(pattern)) {
167
+ return {
168
+ code: ErrorCodes.MM_NOTIFICATION_TIMEOUT,
169
+ message: `Browser closed while waiting for notification: ${message}`,
170
+ };
171
+ }
172
+ }
173
+ return {
174
+ code: ErrorCodes.MM_NOTIFICATION_TIMEOUT,
175
+ message: `Notification popup did not appear: ${message}`,
176
+ };
177
+ }
178
+ /**
179
+ * Classify a discovery tool error (list_testids, accessibility_snapshot, describe_screen).
180
+ *
181
+ * @param error - The error to classify
182
+ * @returns Object with error code and message
183
+ */
184
+ export function classifyDiscoveryError(error) {
185
+ const message = extractErrorMessage(error);
186
+ for (const pattern of ERROR_PATTERNS.pageClosed) {
187
+ if (message.includes(pattern)) {
188
+ return {
189
+ code: ErrorCodes.MM_PAGE_CLOSED,
190
+ message: `Page closed during discovery: ${message}`,
191
+ };
192
+ }
193
+ }
194
+ for (const pattern of ERROR_PATTERNS.timeout) {
195
+ if (message.includes(pattern)) {
196
+ return {
197
+ code: ErrorCodes.MM_WAIT_TIMEOUT,
198
+ message: `Discovery timed out: ${message}`,
199
+ };
200
+ }
201
+ }
202
+ return {
203
+ code: ErrorCodes.MM_DISCOVERY_FAILED,
204
+ message: `Discovery failed: ${message}`,
205
+ };
206
+ }
207
+ /**
208
+ * Classify a screenshot error.
209
+ *
210
+ * @param error - The error to classify
211
+ * @returns Object with error code and message
212
+ */
213
+ export function classifyScreenshotError(error) {
214
+ const message = extractErrorMessage(error);
215
+ for (const pattern of ERROR_PATTERNS.pageClosed) {
216
+ if (message.includes(pattern)) {
217
+ return {
218
+ code: ErrorCodes.MM_PAGE_CLOSED,
219
+ message: `Page closed during screenshot: ${message}`,
220
+ };
221
+ }
222
+ }
223
+ return {
224
+ code: ErrorCodes.MM_SCREENSHOT_FAILED,
225
+ message: `Screenshot failed: ${message}`,
226
+ };
227
+ }
228
+ /**
229
+ * Classify a state tool error.
230
+ *
231
+ * @param error - The error to classify
232
+ * @returns Object with error code and message
233
+ */
234
+ export function classifyStateError(error) {
235
+ const message = extractErrorMessage(error);
236
+ for (const pattern of ERROR_PATTERNS.pageClosed) {
237
+ if (message.includes(pattern)) {
238
+ return {
239
+ code: ErrorCodes.MM_PAGE_CLOSED,
240
+ message: `Page closed during state retrieval: ${message}`,
241
+ };
242
+ }
243
+ }
244
+ return {
245
+ code: ErrorCodes.MM_STATE_FAILED,
246
+ message: `State retrieval failed: ${message}`,
247
+ };
248
+ }
249
+ /**
250
+ * Classify a seeding/contract deployment error.
251
+ *
252
+ * @param error - The error to classify
253
+ * @returns Object with error code and message
254
+ */
255
+ export function classifySeedingError(error) {
256
+ const message = extractErrorMessage(error);
257
+ if (message.includes('not found') || message.includes('Unknown contract')) {
258
+ return { code: ErrorCodes.MM_CONTRACT_NOT_FOUND, message };
259
+ }
260
+ return {
261
+ code: ErrorCodes.MM_SEED_FAILED,
262
+ message: `Contract operation failed: ${message}`,
263
+ };
264
+ }
265
+ /**
266
+ * Classify a context switching error.
267
+ *
268
+ * @param error - The error to classify
269
+ * @returns Object with error code and message
270
+ */
271
+ export function classifyContextError(error) {
272
+ const message = extractErrorMessage(error);
273
+ if (message.includes(ErrorCodes.MM_CONTEXT_SWITCH_BLOCKED)) {
274
+ return { code: ErrorCodes.MM_CONTEXT_SWITCH_BLOCKED, message };
275
+ }
276
+ return {
277
+ code: ErrorCodes.MM_SET_CONTEXT_FAILED,
278
+ message: `Context switch failed: ${message}`,
279
+ };
280
+ }
281
+ //# sourceMappingURL=error-classification.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error-classification.mjs","sourceRoot":"","sources":["../../../src/mcp-server/tools/error-classification.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Error classification utilities for tool handlers.\n *\n * These utilities help classify errors into specific error codes\n * based on error message patterns.\n */\n\nimport { ErrorCodes } from '../types';\nimport { extractErrorMessage } from '../utils';\n\nconst ERROR_PATTERNS = {\n targetNotFound: [\n 'Unknown a11yRef',\n 'not found',\n 'No element found',\n 'Timeout waiting for selector',\n ],\n timeout: ['Timeout', 'exceeded', 'timed out'],\n navigation: ['Navigation failed', 'net::ERR'],\n pageClosed: [\n 'Target page, context or browser has been closed',\n 'page has been closed',\n 'context has been closed',\n 'browser has been closed',\n 'Target closed',\n 'Session closed',\n ],\n} as const;\n\n/**\n * Check if an error indicates the page was closed.\n *\n * @param error - The error to check for page closure indicators\n * @returns True if the error indicates the page was closed\n */\nexport function isPageClosedError(error: unknown): boolean {\n const message = extractErrorMessage(error);\n return ERROR_PATTERNS.pageClosed.some((pattern) => message.includes(pattern));\n}\n\n/**\n * Classify an interaction error into a specific error code.\n *\n * @param error - The error to classify\n * @param fallbackCode - The fallback error code if no pattern matches\n * @returns Object with error code and message\n */\nexport function classifyInteractionError(\n error: unknown,\n fallbackCode: string,\n): {\n code: string;\n message: string;\n} {\n const message = extractErrorMessage(error);\n\n for (const pattern of ERROR_PATTERNS.targetNotFound) {\n if (message.includes(pattern)) {\n return { code: ErrorCodes.MM_TARGET_NOT_FOUND, message };\n }\n }\n\n for (const pattern of ERROR_PATTERNS.timeout) {\n if (message.includes(pattern)) {\n return { code: ErrorCodes.MM_WAIT_TIMEOUT, message };\n }\n }\n\n return { code: fallbackCode, message: `Operation failed: ${message}` };\n}\n\n/**\n * Classify a click error.\n *\n * @param error - The error to classify\n * @returns Object with error code and message\n */\nexport function classifyClickError(error: unknown): {\n code: string;\n message: string;\n} {\n return classifyInteractionError(error, ErrorCodes.MM_CLICK_FAILED);\n}\n\n/**\n * Classify a type error.\n *\n * @param error - The error to classify\n * @returns Object with error code and message\n */\nexport function classifyTypeError(error: unknown): {\n code: string;\n message: string;\n} {\n return classifyInteractionError(error, ErrorCodes.MM_TYPE_FAILED);\n}\n\n/**\n * Classify a wait error.\n *\n * @param error - The error to classify\n * @returns Object with error code and message\n */\nexport function classifyWaitError(error: unknown): {\n code: string;\n message: string;\n} {\n const message = extractErrorMessage(error);\n return {\n code: ErrorCodes.MM_WAIT_TIMEOUT,\n message: `Wait timed out: ${message}`,\n };\n}\n\n/**\n * Classify a navigation error.\n *\n * @param error - The error to classify\n * @returns Object with error code and message\n */\nexport function classifyNavigationError(error: unknown): {\n code: string;\n message: string;\n} {\n const message = extractErrorMessage(error);\n\n for (const pattern of ERROR_PATTERNS.navigation) {\n if (message.includes(pattern)) {\n return { code: ErrorCodes.MM_NAVIGATION_FAILED, message };\n }\n }\n\n for (const pattern of ERROR_PATTERNS.timeout) {\n if (message.includes(pattern)) {\n return { code: ErrorCodes.MM_WAIT_TIMEOUT, message };\n }\n }\n\n for (const pattern of ERROR_PATTERNS.pageClosed) {\n if (message.includes(pattern)) {\n return {\n code: ErrorCodes.MM_NAVIGATION_FAILED,\n message: `Page closed during navigation: ${message}`,\n };\n }\n }\n\n return {\n code: ErrorCodes.MM_NAVIGATION_FAILED,\n message: `Navigation failed: ${message}`,\n };\n}\n\n/**\n * Classify a tab operation error.\n *\n * @param error - The error to classify\n * @returns Object with error code and message\n */\nexport function classifyTabError(error: unknown): {\n code: string;\n message: string;\n} {\n const message = extractErrorMessage(error);\n\n if (message.includes('not found') || message.includes('No tab found')) {\n return { code: ErrorCodes.MM_TAB_NOT_FOUND, message };\n }\n\n for (const pattern of ERROR_PATTERNS.timeout) {\n if (message.includes(pattern)) {\n return { code: ErrorCodes.MM_WAIT_TIMEOUT, message };\n }\n }\n\n for (const pattern of ERROR_PATTERNS.pageClosed) {\n if (message.includes(pattern)) {\n return {\n code: ErrorCodes.MM_NAVIGATION_FAILED,\n message: `Tab operation failed - page closed: ${message}`,\n };\n }\n }\n\n return {\n code: ErrorCodes.MM_NAVIGATION_FAILED,\n message: `Tab operation failed: ${message}`,\n };\n}\n\n/**\n * Classify a notification wait error.\n *\n * @param error - The error to classify\n * @returns Object with error code and message\n */\nexport function classifyNotificationError(error: unknown): {\n code: string;\n message: string;\n} {\n const message = extractErrorMessage(error);\n\n for (const pattern of ERROR_PATTERNS.timeout) {\n if (message.includes(pattern)) {\n return {\n code: ErrorCodes.MM_NOTIFICATION_TIMEOUT,\n message: `Notification popup did not appear: ${message}`,\n };\n }\n }\n\n for (const pattern of ERROR_PATTERNS.pageClosed) {\n if (message.includes(pattern)) {\n return {\n code: ErrorCodes.MM_NOTIFICATION_TIMEOUT,\n message: `Browser closed while waiting for notification: ${message}`,\n };\n }\n }\n\n return {\n code: ErrorCodes.MM_NOTIFICATION_TIMEOUT,\n message: `Notification popup did not appear: ${message}`,\n };\n}\n\n/**\n * Classify a discovery tool error (list_testids, accessibility_snapshot, describe_screen).\n *\n * @param error - The error to classify\n * @returns Object with error code and message\n */\nexport function classifyDiscoveryError(error: unknown): {\n code: string;\n message: string;\n} {\n const message = extractErrorMessage(error);\n\n for (const pattern of ERROR_PATTERNS.pageClosed) {\n if (message.includes(pattern)) {\n return {\n code: ErrorCodes.MM_PAGE_CLOSED,\n message: `Page closed during discovery: ${message}`,\n };\n }\n }\n\n for (const pattern of ERROR_PATTERNS.timeout) {\n if (message.includes(pattern)) {\n return {\n code: ErrorCodes.MM_WAIT_TIMEOUT,\n message: `Discovery timed out: ${message}`,\n };\n }\n }\n\n return {\n code: ErrorCodes.MM_DISCOVERY_FAILED,\n message: `Discovery failed: ${message}`,\n };\n}\n\n/**\n * Classify a screenshot error.\n *\n * @param error - The error to classify\n * @returns Object with error code and message\n */\nexport function classifyScreenshotError(error: unknown): {\n code: string;\n message: string;\n} {\n const message = extractErrorMessage(error);\n\n for (const pattern of ERROR_PATTERNS.pageClosed) {\n if (message.includes(pattern)) {\n return {\n code: ErrorCodes.MM_PAGE_CLOSED,\n message: `Page closed during screenshot: ${message}`,\n };\n }\n }\n\n return {\n code: ErrorCodes.MM_SCREENSHOT_FAILED,\n message: `Screenshot failed: ${message}`,\n };\n}\n\n/**\n * Classify a state tool error.\n *\n * @param error - The error to classify\n * @returns Object with error code and message\n */\nexport function classifyStateError(error: unknown): {\n code: string;\n message: string;\n} {\n const message = extractErrorMessage(error);\n\n for (const pattern of ERROR_PATTERNS.pageClosed) {\n if (message.includes(pattern)) {\n return {\n code: ErrorCodes.MM_PAGE_CLOSED,\n message: `Page closed during state retrieval: ${message}`,\n };\n }\n }\n\n return {\n code: ErrorCodes.MM_STATE_FAILED,\n message: `State retrieval failed: ${message}`,\n };\n}\n\n/**\n * Classify a seeding/contract deployment error.\n *\n * @param error - The error to classify\n * @returns Object with error code and message\n */\nexport function classifySeedingError(error: unknown): {\n code: string;\n message: string;\n} {\n const message = extractErrorMessage(error);\n\n if (message.includes('not found') || message.includes('Unknown contract')) {\n return { code: ErrorCodes.MM_CONTRACT_NOT_FOUND, message };\n }\n\n return {\n code: ErrorCodes.MM_SEED_FAILED,\n message: `Contract operation failed: ${message}`,\n };\n}\n\n/**\n * Classify a context switching error.\n *\n * @param error - The error to classify\n * @returns Object with error code and message\n */\nexport function classifyContextError(error: unknown): {\n code: string;\n message: string;\n} {\n const message = extractErrorMessage(error);\n\n if (message.includes(ErrorCodes.MM_CONTEXT_SWITCH_BLOCKED)) {\n return { code: ErrorCodes.MM_CONTEXT_SWITCH_BLOCKED, message };\n }\n\n return {\n code: ErrorCodes.MM_SET_CONTEXT_FAILED,\n message: `Context switch failed: ${message}`,\n };\n}\n"]}
@@ -0,0 +1,149 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.requireActiveSession = requireActiveSession;
4
+ exports.collectObservation = collectObservation;
5
+ exports.withActiveSession = withActiveSession;
6
+ exports.recordToolStep = recordToolStep;
7
+ exports.collectObservationAndRecord = collectObservationAndRecord;
8
+ exports.handleToolError = handleToolError;
9
+ const constants_js_1 = require("../constants.cjs");
10
+ const discovery_js_1 = require("../discovery.cjs");
11
+ const knowledge_store_js_1 = require("../knowledge-store.cjs");
12
+ const session_manager_js_1 = require("../session-manager.cjs");
13
+ const types_1 = require("../types/index.cjs");
14
+ const utils_1 = require("../utils/index.cjs");
15
+ /**
16
+ * Check if an active session exists and return error if not.
17
+ *
18
+ * @param startTime - Timestamp when the operation started
19
+ * @returns Error response if no active session, undefined otherwise
20
+ */
21
+ function requireActiveSession(startTime) {
22
+ const sessionManager = (0, session_manager_js_1.getSessionManager)();
23
+ if (!sessionManager.hasActiveSession()) {
24
+ return (0, utils_1.createErrorResponse)(types_1.ErrorCodes.MM_NO_ACTIVE_SESSION, 'No active session. Call launch first.', undefined, undefined, startTime);
25
+ }
26
+ return undefined;
27
+ }
28
+ /**
29
+ * Collect observation data from the current page state.
30
+ *
31
+ * @param page - The page to collect observation from
32
+ * @param level - Level of detail to collect (full, minimal, or none)
33
+ * @param presetState - Optional pre-fetched extension state to use instead of querying
34
+ * @returns Observation data with state, testIds, and accessibility tree
35
+ */
36
+ async function collectObservation(page, level, presetState) {
37
+ const sessionManager = (0, session_manager_js_1.getSessionManager)();
38
+ if (level === 'none') {
39
+ return (0, knowledge_store_js_1.createDefaultObservation)({}, [], []);
40
+ }
41
+ const state = presetState ?? (await sessionManager.getExtensionState());
42
+ if (level === 'minimal') {
43
+ return (0, knowledge_store_js_1.createDefaultObservation)(state, [], []);
44
+ }
45
+ if (!page) {
46
+ (0, utils_1.debugWarn)('collectObservation', 'Page not provided for full observation');
47
+ return (0, knowledge_store_js_1.createDefaultObservation)(state, [], []);
48
+ }
49
+ try {
50
+ const testIds = await (0, discovery_js_1.collectTestIds)(page, constants_js_1.OBSERVATION_TESTID_LIMIT);
51
+ const { nodes, refMap } = await (0, discovery_js_1.collectTrimmedA11ySnapshot)(page);
52
+ sessionManager.setRefMap(refMap);
53
+ return (0, knowledge_store_js_1.createDefaultObservation)(state, testIds, nodes);
54
+ }
55
+ catch (error) {
56
+ (0, utils_1.debugWarn)('collectObservation', error);
57
+ return (0, knowledge_store_js_1.createDefaultObservation)(state, [], []);
58
+ }
59
+ }
60
+ /**
61
+ * Wrapper that ensures an active session exists before executing a handler.
62
+ *
63
+ * @param handler - Function to execute with active session context
64
+ * @returns Wrapped function that validates session before calling handler
65
+ */
66
+ function withActiveSession(handler) {
67
+ return async (input) => {
68
+ const startTime = Date.now();
69
+ const sessionManager = (0, session_manager_js_1.getSessionManager)();
70
+ const sessionError = requireActiveSession(startTime);
71
+ if (sessionError) {
72
+ return sessionError;
73
+ }
74
+ const sessionId = sessionManager.getSessionId();
75
+ if (!sessionId) {
76
+ return (0, utils_1.createErrorResponse)(types_1.ErrorCodes.MM_NO_ACTIVE_SESSION, 'Session ID not found', undefined, undefined, startTime);
77
+ }
78
+ const page = sessionManager.getPage();
79
+ const refMap = sessionManager.getRefMap();
80
+ return handler(input, { sessionId, page, refMap }, startTime);
81
+ };
82
+ }
83
+ /**
84
+ * Record a tool execution step in the knowledge store.
85
+ *
86
+ * @param params - Parameters containing tool name, input, observation, and metadata
87
+ */
88
+ async function recordToolStep(params) {
89
+ const sessionManager = (0, session_manager_js_1.getSessionManager)();
90
+ const sessionId = sessionManager.getSessionId() ?? '';
91
+ await knowledge_store_js_1.knowledgeStore.recordStep({
92
+ sessionId,
93
+ toolName: params.toolName,
94
+ input: params.input,
95
+ target: params.target,
96
+ outcome: { ok: true },
97
+ observation: params.observation,
98
+ durationMs: Date.now() - params.startTime,
99
+ screenshotPath: params.screenshotPath,
100
+ screenshotDimensions: params.screenshotDimensions,
101
+ });
102
+ }
103
+ /**
104
+ * Collect observation data and record the tool step in the knowledge store.
105
+ *
106
+ * @param page - The page to collect observation from
107
+ * @param toolName - Name of the tool that was executed
108
+ * @param input - Input parameters passed to the tool
109
+ * @param startTime - Timestamp when the tool execution started
110
+ * @param options - Optional metadata for the step record
111
+ * @param options.target - Target element information
112
+ * @param options.screenshotPath - Path to screenshot file if captured
113
+ * @param options.screenshotDimensions - Screenshot dimensions
114
+ * @param options.screenshotDimensions.width - Screenshot width in pixels
115
+ * @param options.screenshotDimensions.height - Screenshot height in pixels
116
+ * @returns Observation data collected after tool execution
117
+ */
118
+ async function collectObservationAndRecord(page, toolName, input, startTime, options = {}) {
119
+ const observation = await collectObservation(page, 'full');
120
+ await recordToolStep({
121
+ toolName,
122
+ input,
123
+ startTime,
124
+ observation,
125
+ target: options.target,
126
+ screenshotPath: options.screenshotPath,
127
+ screenshotDimensions: options.screenshotDimensions,
128
+ });
129
+ return observation;
130
+ }
131
+ /**
132
+ * Handle tool execution errors and return appropriate error response.
133
+ *
134
+ * @param error - The error that occurred during tool execution
135
+ * @param defaultCode - Default error code to use if no specific match found
136
+ * @param defaultMessage - Default error message to use
137
+ * @param input - Input parameters that were passed to the tool
138
+ * @param sessionId - Current session ID for error context
139
+ * @param startTime - Timestamp when the tool execution started
140
+ * @returns Error response with appropriate code and message
141
+ */
142
+ function handleToolError(error, defaultCode, defaultMessage, input, sessionId, startTime) {
143
+ const message = (0, utils_1.extractErrorMessage)(error);
144
+ if (message.includes('Unknown a11yRef') || message.includes('not found')) {
145
+ return (0, utils_1.createErrorResponse)(types_1.ErrorCodes.MM_TARGET_NOT_FOUND, message, { input }, sessionId, startTime);
146
+ }
147
+ return (0, utils_1.createErrorResponse)(defaultCode, `${defaultMessage}: ${message}`, { input }, sessionId, startTime);
148
+ }
149
+ //# sourceMappingURL=helpers.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.cjs","sourceRoot":"","sources":["../../../src/mcp-server/tools/helpers.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Page } from '@playwright/test';\n\nimport type { ExtensionState } from '../../capabilities/types.js';\nimport { OBSERVATION_TESTID_LIMIT } from '../constants.js';\nimport { collectTestIds, collectTrimmedA11ySnapshot } from '../discovery.js';\nimport {\n knowledgeStore,\n createDefaultObservation,\n} from '../knowledge-store.js';\nimport { getSessionManager } from '../session-manager.js';\nimport type {\n McpResponse,\n ErrorCode,\n TestIdItem,\n StepRecordObservation,\n} from '../types';\nimport { ErrorCodes } from '../types';\nimport { createErrorResponse, extractErrorMessage, debugWarn } from '../utils';\n\n/**\n * Level of detail to collect for observation data.\n * - \"full\": Collect state, testIds, and a11y tree\n * - \"minimal\": Collect state only (no testIds or a11y)\n * - \"none\": Return empty observation\n */\nexport type ObservationLevel = 'full' | 'minimal' | 'none';\n\n/**\n * Parameters for recording a tool step in the knowledge store.\n */\nexport type RecordStepParams = {\n /**\n * Name of the tool that was executed\n */\n toolName: string;\n /**\n * Input parameters passed to the tool\n */\n input: Record<string, unknown>;\n /**\n * Timestamp when the tool execution started\n */\n startTime: number;\n /**\n * Observation data collected after tool execution\n */\n observation: StepRecordObservation;\n /**\n * Target element information (selector, testId, etc.)\n */\n target?: Record<string, string>;\n /**\n * Path to screenshot file if captured\n */\n screenshotPath?: string;\n /**\n * Screenshot dimensions if captured\n */\n screenshotDimensions?: {\n /**\n * Screenshot width in pixels\n */\n width: number;\n /**\n * Screenshot height in pixels\n */\n height: number;\n };\n};\n\n/**\n * Context information for an active session.\n */\nexport type ActiveSessionContext = {\n /**\n * Unique session identifier\n */\n sessionId: string;\n /**\n * Current active page instance\n */\n page: Page;\n /**\n * Map of accessibility references to selectors\n */\n refMap: Map<string, string>;\n};\n\n/**\n * Check if an active session exists and return error if not.\n *\n * @param startTime - Timestamp when the operation started\n * @returns Error response if no active session, undefined otherwise\n */\nexport function requireActiveSession<Result>(\n startTime: number,\n): McpResponse<Result> | undefined {\n const sessionManager = getSessionManager();\n if (!sessionManager.hasActiveSession()) {\n return createErrorResponse(\n ErrorCodes.MM_NO_ACTIVE_SESSION,\n 'No active session. Call launch first.',\n undefined,\n undefined,\n startTime,\n ) as McpResponse<Result>;\n }\n return undefined;\n}\n\n/**\n * Collect observation data from the current page state.\n *\n * @param page - The page to collect observation from\n * @param level - Level of detail to collect (full, minimal, or none)\n * @param presetState - Optional pre-fetched extension state to use instead of querying\n * @returns Observation data with state, testIds, and accessibility tree\n */\nexport async function collectObservation(\n page: Page | undefined,\n level: ObservationLevel,\n presetState?: ExtensionState,\n): Promise<StepRecordObservation> {\n const sessionManager = getSessionManager();\n\n if (level === 'none') {\n return createDefaultObservation({} as ExtensionState, [], []);\n }\n\n const state = presetState ?? (await sessionManager.getExtensionState());\n\n if (level === 'minimal') {\n return createDefaultObservation(state, [], []);\n }\n\n if (!page) {\n debugWarn('collectObservation', 'Page not provided for full observation');\n return createDefaultObservation(state, [], []);\n }\n\n try {\n const testIds: TestIdItem[] = await collectTestIds(\n page,\n OBSERVATION_TESTID_LIMIT,\n );\n const { nodes, refMap } = await collectTrimmedA11ySnapshot(page);\n sessionManager.setRefMap(refMap);\n return createDefaultObservation(state, testIds, nodes);\n } catch (error) {\n debugWarn('collectObservation', error);\n return createDefaultObservation(state, [], []);\n }\n}\n\n/**\n * Wrapper that ensures an active session exists before executing a handler.\n *\n * @param handler - Function to execute with active session context\n * @returns Wrapped function that validates session before calling handler\n */\nexport function withActiveSession<TInput, TResult>(\n handler: (\n input: TInput,\n ctx: ActiveSessionContext,\n startTime: number,\n ) => Promise<McpResponse<TResult>>,\n): (input: TInput) => Promise<McpResponse<TResult>> {\n return async (input: TInput): Promise<McpResponse<TResult>> => {\n const startTime = Date.now();\n const sessionManager = getSessionManager();\n\n const sessionError = requireActiveSession<TResult>(startTime);\n if (sessionError) {\n return sessionError;\n }\n\n const sessionId = sessionManager.getSessionId();\n if (!sessionId) {\n return createErrorResponse(\n ErrorCodes.MM_NO_ACTIVE_SESSION,\n 'Session ID not found',\n undefined,\n undefined,\n startTime,\n ) as McpResponse<TResult>;\n }\n const page = sessionManager.getPage();\n const refMap = sessionManager.getRefMap();\n\n return handler(input, { sessionId, page, refMap }, startTime);\n };\n}\n\n/**\n * Record a tool execution step in the knowledge store.\n *\n * @param params - Parameters containing tool name, input, observation, and metadata\n */\nexport async function recordToolStep(params: RecordStepParams): Promise<void> {\n const sessionManager = getSessionManager();\n const sessionId = sessionManager.getSessionId() ?? '';\n\n await knowledgeStore.recordStep({\n sessionId,\n toolName: params.toolName,\n input: params.input,\n target: params.target,\n outcome: { ok: true },\n observation: params.observation,\n durationMs: Date.now() - params.startTime,\n screenshotPath: params.screenshotPath,\n screenshotDimensions: params.screenshotDimensions,\n });\n}\n\n/**\n * Collect observation data and record the tool step in the knowledge store.\n *\n * @param page - The page to collect observation from\n * @param toolName - Name of the tool that was executed\n * @param input - Input parameters passed to the tool\n * @param startTime - Timestamp when the tool execution started\n * @param options - Optional metadata for the step record\n * @param options.target - Target element information\n * @param options.screenshotPath - Path to screenshot file if captured\n * @param options.screenshotDimensions - Screenshot dimensions\n * @param options.screenshotDimensions.width - Screenshot width in pixels\n * @param options.screenshotDimensions.height - Screenshot height in pixels\n * @returns Observation data collected after tool execution\n */\nexport async function collectObservationAndRecord(\n page: Page,\n toolName: string,\n input: Record<string, unknown>,\n startTime: number,\n options: {\n /**\n * Target element information (selector, testId, etc.)\n */\n target?: Record<string, string>;\n /**\n * Path to screenshot file if captured\n */\n screenshotPath?: string;\n /**\n * Screenshot dimensions if captured\n */\n screenshotDimensions?: {\n /**\n * Screenshot width in pixels\n */\n width: number;\n /**\n * Screenshot height in pixels\n */\n height: number;\n };\n } = {},\n): Promise<StepRecordObservation> {\n const observation = await collectObservation(page, 'full');\n\n await recordToolStep({\n toolName,\n input,\n startTime,\n observation,\n target: options.target,\n screenshotPath: options.screenshotPath,\n screenshotDimensions: options.screenshotDimensions,\n });\n\n return observation;\n}\n\n/**\n * Handle tool execution errors and return appropriate error response.\n *\n * @param error - The error that occurred during tool execution\n * @param defaultCode - Default error code to use if no specific match found\n * @param defaultMessage - Default error message to use\n * @param input - Input parameters that were passed to the tool\n * @param sessionId - Current session ID for error context\n * @param startTime - Timestamp when the tool execution started\n * @returns Error response with appropriate code and message\n */\nexport function handleToolError<Result>(\n error: unknown,\n defaultCode: ErrorCode,\n defaultMessage: string,\n input: unknown,\n sessionId: string | undefined,\n startTime: number,\n): McpResponse<Result> {\n const message = extractErrorMessage(error);\n\n if (message.includes('Unknown a11yRef') || message.includes('not found')) {\n return createErrorResponse(\n ErrorCodes.MM_TARGET_NOT_FOUND,\n message,\n { input },\n sessionId,\n startTime,\n ) as McpResponse<Result>;\n }\n\n return createErrorResponse(\n defaultCode,\n `${defaultMessage}: ${message}`,\n { input },\n sessionId,\n startTime,\n ) as McpResponse<Result>;\n}\n"]}
@@ -0,0 +1,149 @@
1
+ import type { Page } from "@playwright/test";
2
+ import type { ExtensionState } from "../../capabilities/types.cjs";
3
+ import type { McpResponse, ErrorCode, StepRecordObservation } from "../types/index.cjs";
4
+ /**
5
+ * Level of detail to collect for observation data.
6
+ * - "full": Collect state, testIds, and a11y tree
7
+ * - "minimal": Collect state only (no testIds or a11y)
8
+ * - "none": Return empty observation
9
+ */
10
+ export type ObservationLevel = 'full' | 'minimal' | 'none';
11
+ /**
12
+ * Parameters for recording a tool step in the knowledge store.
13
+ */
14
+ export type RecordStepParams = {
15
+ /**
16
+ * Name of the tool that was executed
17
+ */
18
+ toolName: string;
19
+ /**
20
+ * Input parameters passed to the tool
21
+ */
22
+ input: Record<string, unknown>;
23
+ /**
24
+ * Timestamp when the tool execution started
25
+ */
26
+ startTime: number;
27
+ /**
28
+ * Observation data collected after tool execution
29
+ */
30
+ observation: StepRecordObservation;
31
+ /**
32
+ * Target element information (selector, testId, etc.)
33
+ */
34
+ target?: Record<string, string>;
35
+ /**
36
+ * Path to screenshot file if captured
37
+ */
38
+ screenshotPath?: string;
39
+ /**
40
+ * Screenshot dimensions if captured
41
+ */
42
+ screenshotDimensions?: {
43
+ /**
44
+ * Screenshot width in pixels
45
+ */
46
+ width: number;
47
+ /**
48
+ * Screenshot height in pixels
49
+ */
50
+ height: number;
51
+ };
52
+ };
53
+ /**
54
+ * Context information for an active session.
55
+ */
56
+ export type ActiveSessionContext = {
57
+ /**
58
+ * Unique session identifier
59
+ */
60
+ sessionId: string;
61
+ /**
62
+ * Current active page instance
63
+ */
64
+ page: Page;
65
+ /**
66
+ * Map of accessibility references to selectors
67
+ */
68
+ refMap: Map<string, string>;
69
+ };
70
+ /**
71
+ * Check if an active session exists and return error if not.
72
+ *
73
+ * @param startTime - Timestamp when the operation started
74
+ * @returns Error response if no active session, undefined otherwise
75
+ */
76
+ export declare function requireActiveSession<Result>(startTime: number): McpResponse<Result> | undefined;
77
+ /**
78
+ * Collect observation data from the current page state.
79
+ *
80
+ * @param page - The page to collect observation from
81
+ * @param level - Level of detail to collect (full, minimal, or none)
82
+ * @param presetState - Optional pre-fetched extension state to use instead of querying
83
+ * @returns Observation data with state, testIds, and accessibility tree
84
+ */
85
+ export declare function collectObservation(page: Page | undefined, level: ObservationLevel, presetState?: ExtensionState): Promise<StepRecordObservation>;
86
+ /**
87
+ * Wrapper that ensures an active session exists before executing a handler.
88
+ *
89
+ * @param handler - Function to execute with active session context
90
+ * @returns Wrapped function that validates session before calling handler
91
+ */
92
+ export declare function withActiveSession<TInput, TResult>(handler: (input: TInput, ctx: ActiveSessionContext, startTime: number) => Promise<McpResponse<TResult>>): (input: TInput) => Promise<McpResponse<TResult>>;
93
+ /**
94
+ * Record a tool execution step in the knowledge store.
95
+ *
96
+ * @param params - Parameters containing tool name, input, observation, and metadata
97
+ */
98
+ export declare function recordToolStep(params: RecordStepParams): Promise<void>;
99
+ /**
100
+ * Collect observation data and record the tool step in the knowledge store.
101
+ *
102
+ * @param page - The page to collect observation from
103
+ * @param toolName - Name of the tool that was executed
104
+ * @param input - Input parameters passed to the tool
105
+ * @param startTime - Timestamp when the tool execution started
106
+ * @param options - Optional metadata for the step record
107
+ * @param options.target - Target element information
108
+ * @param options.screenshotPath - Path to screenshot file if captured
109
+ * @param options.screenshotDimensions - Screenshot dimensions
110
+ * @param options.screenshotDimensions.width - Screenshot width in pixels
111
+ * @param options.screenshotDimensions.height - Screenshot height in pixels
112
+ * @returns Observation data collected after tool execution
113
+ */
114
+ export declare function collectObservationAndRecord(page: Page, toolName: string, input: Record<string, unknown>, startTime: number, options?: {
115
+ /**
116
+ * Target element information (selector, testId, etc.)
117
+ */
118
+ target?: Record<string, string>;
119
+ /**
120
+ * Path to screenshot file if captured
121
+ */
122
+ screenshotPath?: string;
123
+ /**
124
+ * Screenshot dimensions if captured
125
+ */
126
+ screenshotDimensions?: {
127
+ /**
128
+ * Screenshot width in pixels
129
+ */
130
+ width: number;
131
+ /**
132
+ * Screenshot height in pixels
133
+ */
134
+ height: number;
135
+ };
136
+ }): Promise<StepRecordObservation>;
137
+ /**
138
+ * Handle tool execution errors and return appropriate error response.
139
+ *
140
+ * @param error - The error that occurred during tool execution
141
+ * @param defaultCode - Default error code to use if no specific match found
142
+ * @param defaultMessage - Default error message to use
143
+ * @param input - Input parameters that were passed to the tool
144
+ * @param sessionId - Current session ID for error context
145
+ * @param startTime - Timestamp when the tool execution started
146
+ * @returns Error response with appropriate code and message
147
+ */
148
+ export declare function handleToolError<Result>(error: unknown, defaultCode: ErrorCode, defaultMessage: string, input: unknown, sessionId: string | undefined, startTime: number): McpResponse<Result>;
149
+ //# sourceMappingURL=helpers.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.d.cts","sourceRoot":"","sources":["../../../src/mcp-server/tools/helpers.ts"],"names":[],"mappings":"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"}