@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,137 @@
1
+ import { knowledgeStore } from "../knowledge-store.mjs";
2
+ import { getSessionManager } from "../session-manager.mjs";
3
+ import { collectObservation } from "./helpers.mjs";
4
+ import { ErrorCodes } from "../types/index.mjs";
5
+ import { createSuccessResponse, createErrorResponse, extractErrorMessage, debugWarn } from "../utils/index.mjs";
6
+ /**
7
+ * Creates an empty observation object for step recording.
8
+ *
9
+ * @returns Empty observation with default state, testIds, and a11y nodes
10
+ */
11
+ function createEmptyObservation() {
12
+ return {
13
+ state: {},
14
+ testIds: [],
15
+ a11y: { nodes: [] },
16
+ };
17
+ }
18
+ /**
19
+ * Type guard to check if result is a ToolExecuteResult with observation.
20
+ *
21
+ * @param result The result to check
22
+ * @returns True if result is a ToolExecuteResult with observation property
23
+ */
24
+ function isToolExecuteResult(result) {
25
+ return (typeof result === 'object' &&
26
+ result !== null &&
27
+ 'result' in result &&
28
+ Object.prototype.hasOwnProperty.call(result, 'result'));
29
+ }
30
+ /**
31
+ * Executes a tool with error handling, observation collection, and knowledge store recording.
32
+ *
33
+ * @param config The tool execution configuration with input, execute function, and error handling
34
+ * @returns Promise resolving to MCP response with tool result or error information
35
+ */
36
+ export async function runTool(config) {
37
+ const startTime = Date.now();
38
+ const sessionManager = getSessionManager();
39
+ const sessionId = sessionManager.getSessionId();
40
+ const requiresSession = config.requiresSession ?? true;
41
+ const effectivePolicy = config.options?.observationPolicy ?? config.observationPolicy ?? 'default';
42
+ try {
43
+ if (requiresSession && !sessionManager.hasActiveSession()) {
44
+ return createErrorResponse(ErrorCodes.MM_NO_ACTIVE_SESSION, 'No active session. Call launch first.', { input: config.input }, undefined, startTime);
45
+ }
46
+ const context = {
47
+ sessionId,
48
+ page: requiresSession ? sessionManager.getPage() : undefined,
49
+ refMap: requiresSession ? sessionManager.getRefMap() : new Map(),
50
+ startTime,
51
+ };
52
+ const executeResult = await config.execute(context);
53
+ let result;
54
+ let customObservation;
55
+ if (isToolExecuteResult(executeResult)) {
56
+ result = executeResult.result;
57
+ customObservation = executeResult.observation;
58
+ }
59
+ else {
60
+ result = executeResult;
61
+ }
62
+ let observation;
63
+ if (effectivePolicy === 'custom' && customObservation) {
64
+ observation = customObservation;
65
+ }
66
+ else if (effectivePolicy === 'default' && requiresSession) {
67
+ observation = await collectObservation(context.page, 'full');
68
+ }
69
+ else if ((effectivePolicy === 'none' || effectivePolicy === 'failures') &&
70
+ requiresSession) {
71
+ observation = await collectObservation(context.page, 'minimal');
72
+ }
73
+ if (sessionId) {
74
+ const recordInput = config.sanitizeInputForRecording
75
+ ? config.sanitizeInputForRecording(config.input)
76
+ : config.input;
77
+ await knowledgeStore.recordStep({
78
+ sessionId,
79
+ toolName: config.toolName,
80
+ input: recordInput,
81
+ target: config.getTarget?.(config.input),
82
+ outcome: { ok: true },
83
+ observation: observation ?? createEmptyObservation(),
84
+ durationMs: Date.now() - startTime,
85
+ context: sessionManager.getEnvironmentMode(),
86
+ });
87
+ }
88
+ return createSuccessResponse(result, sessionId, startTime);
89
+ }
90
+ catch (error) {
91
+ const errorInfo = config.classifyError?.(error) ?? {
92
+ code: `MM_${config.toolName.toUpperCase().replace(/^MM_/u, '')}_FAILED`,
93
+ message: extractErrorMessage(error),
94
+ };
95
+ let failureObservation = createEmptyObservation();
96
+ if (requiresSession && sessionManager.hasActiveSession()) {
97
+ if (effectivePolicy === 'failures' || effectivePolicy === 'default') {
98
+ try {
99
+ const page = sessionManager.getPage();
100
+ failureObservation = await collectObservation(page, 'full');
101
+ }
102
+ catch (collectError) {
103
+ debugWarn('run-tool.collectObservation', collectError);
104
+ failureObservation = await collectObservation(undefined, 'minimal');
105
+ }
106
+ }
107
+ else if (effectivePolicy === 'none') {
108
+ try {
109
+ failureObservation = await collectObservation(undefined, 'minimal');
110
+ }
111
+ catch (collectError) {
112
+ debugWarn('run-tool.collectObservation', collectError);
113
+ }
114
+ }
115
+ }
116
+ if (sessionId) {
117
+ const recordInput = config.sanitizeInputForRecording
118
+ ? config.sanitizeInputForRecording(config.input)
119
+ : config.input;
120
+ await knowledgeStore.recordStep({
121
+ sessionId,
122
+ toolName: config.toolName,
123
+ input: recordInput,
124
+ target: config.getTarget?.(config.input),
125
+ outcome: {
126
+ ok: false,
127
+ error: { code: errorInfo.code, message: errorInfo.message },
128
+ },
129
+ observation: failureObservation,
130
+ durationMs: Date.now() - startTime,
131
+ context: sessionManager.getEnvironmentMode(),
132
+ });
133
+ }
134
+ return createErrorResponse(errorInfo.code, errorInfo.message, { input: config.input }, sessionId, startTime);
135
+ }
136
+ }
137
+ //# sourceMappingURL=run-tool.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-tool.mjs","sourceRoot":"","sources":["../../../src/mcp-server/tools/run-tool.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Page } from '@playwright/test';\n\nimport type { ExtensionState } from '../../capabilities/types.js';\nimport { knowledgeStore } from '../knowledge-store.js';\nimport { getSessionManager } from '../session-manager.js';\nimport { collectObservation } from './helpers.js';\nimport type {\n McpResponse,\n HandlerOptions,\n StepRecordObservation,\n ErrorCode,\n} from '../types';\nimport { ErrorCodes } from '../types';\nimport {\n createSuccessResponse,\n createErrorResponse,\n extractErrorMessage,\n debugWarn,\n} from '../utils';\n\n/**\n * Creates an empty observation object for step recording.\n *\n * @returns Empty observation with default state, testIds, and a11y nodes\n */\nfunction createEmptyObservation(): StepRecordObservation {\n return {\n state: {} as ExtensionState,\n testIds: [],\n a11y: { nodes: [] },\n };\n}\n\nexport type ObservationPolicy = 'none' | 'default' | 'custom' | 'failures';\n\nexport type ToolExecutionContext = {\n sessionId: string | undefined;\n page: Page;\n refMap: Map<string, string>;\n startTime: number;\n};\n\nexport type ToolExecuteResult<TResult> = {\n result: TResult;\n observation?: StepRecordObservation;\n};\n\nexport type ToolExecutionConfig<TInput, TResult> = {\n toolName: string;\n input: TInput;\n options?: HandlerOptions;\n requiresSession?: boolean;\n observationPolicy?: ObservationPolicy;\n execute: (\n context: ToolExecutionContext,\n ) => Promise<TResult | ToolExecuteResult<TResult>>;\n classifyError?: (error: unknown) => {\n code: string;\n message: string;\n };\n getTarget?: (input: TInput) =>\n | {\n testId?: string;\n selector?: string;\n a11yRef?: string;\n }\n | undefined;\n sanitizeInputForRecording?: (input: TInput) => Record<string, unknown>;\n};\n\n/**\n * Type guard to check if result is a ToolExecuteResult with observation.\n *\n * @param result The result to check\n * @returns True if result is a ToolExecuteResult with observation property\n */\nfunction isToolExecuteResult<TResult>(\n result: TResult | ToolExecuteResult<TResult>,\n): result is ToolExecuteResult<TResult> {\n return (\n typeof result === 'object' &&\n result !== null &&\n 'result' in result &&\n Object.prototype.hasOwnProperty.call(result, 'result')\n );\n}\n\n/**\n * Executes a tool with error handling, observation collection, and knowledge store recording.\n *\n * @param config The tool execution configuration with input, execute function, and error handling\n * @returns Promise resolving to MCP response with tool result or error information\n */\nexport async function runTool<TInput, TResult>(\n config: ToolExecutionConfig<TInput, TResult>,\n): Promise<McpResponse<TResult>> {\n const startTime = Date.now();\n const sessionManager = getSessionManager();\n const sessionId = sessionManager.getSessionId();\n const requiresSession = config.requiresSession ?? true;\n\n const effectivePolicy =\n config.options?.observationPolicy ?? config.observationPolicy ?? 'default';\n\n try {\n if (requiresSession && !sessionManager.hasActiveSession()) {\n return createErrorResponse(\n ErrorCodes.MM_NO_ACTIVE_SESSION,\n 'No active session. Call launch first.',\n { input: config.input },\n undefined,\n startTime,\n );\n }\n\n const context: ToolExecutionContext = {\n sessionId,\n page: requiresSession ? sessionManager.getPage() : (undefined as never),\n refMap: requiresSession ? sessionManager.getRefMap() : new Map(),\n startTime,\n };\n\n const executeResult = await config.execute(context);\n\n let result: TResult;\n let customObservation: StepRecordObservation | undefined;\n\n if (isToolExecuteResult<TResult>(executeResult)) {\n result = executeResult.result;\n customObservation = executeResult.observation;\n } else {\n result = executeResult;\n }\n\n let observation: StepRecordObservation | undefined;\n\n if (effectivePolicy === 'custom' && customObservation) {\n observation = customObservation;\n } else if (effectivePolicy === 'default' && requiresSession) {\n observation = await collectObservation(context.page, 'full');\n } else if (\n (effectivePolicy === 'none' || effectivePolicy === 'failures') &&\n requiresSession\n ) {\n observation = await collectObservation(context.page, 'minimal');\n }\n\n if (sessionId) {\n const recordInput = config.sanitizeInputForRecording\n ? config.sanitizeInputForRecording(config.input)\n : (config.input as Record<string, unknown>);\n\n await knowledgeStore.recordStep({\n sessionId,\n toolName: config.toolName,\n input: recordInput,\n target: config.getTarget?.(config.input),\n outcome: { ok: true },\n observation: observation ?? createEmptyObservation(),\n durationMs: Date.now() - startTime,\n context: sessionManager.getEnvironmentMode(),\n });\n }\n\n return createSuccessResponse<TResult>(result, sessionId, startTime);\n } catch (error) {\n const errorInfo = config.classifyError?.(error) ?? {\n code: `MM_${config.toolName.toUpperCase().replace(/^MM_/u, '')}_FAILED`,\n message: extractErrorMessage(error),\n };\n\n let failureObservation: StepRecordObservation = createEmptyObservation();\n\n if (requiresSession && sessionManager.hasActiveSession()) {\n if (effectivePolicy === 'failures' || effectivePolicy === 'default') {\n try {\n const page = sessionManager.getPage();\n failureObservation = await collectObservation(page, 'full');\n } catch (collectError) {\n debugWarn('run-tool.collectObservation', collectError);\n failureObservation = await collectObservation(undefined, 'minimal');\n }\n } else if (effectivePolicy === 'none') {\n try {\n failureObservation = await collectObservation(undefined, 'minimal');\n } catch (collectError) {\n debugWarn('run-tool.collectObservation', collectError);\n }\n }\n }\n\n if (sessionId) {\n const recordInput = config.sanitizeInputForRecording\n ? config.sanitizeInputForRecording(config.input)\n : (config.input as Record<string, unknown>);\n\n await knowledgeStore.recordStep({\n sessionId,\n toolName: config.toolName,\n input: recordInput,\n target: config.getTarget?.(config.input),\n outcome: {\n ok: false,\n error: { code: errorInfo.code, message: errorInfo.message },\n },\n observation: failureObservation,\n durationMs: Date.now() - startTime,\n context: sessionManager.getEnvironmentMode(),\n });\n }\n\n return createErrorResponse(\n errorInfo.code as ErrorCode,\n errorInfo.message,\n { input: config.input },\n sessionId,\n startTime,\n );\n }\n}\n"]}
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.handleScreenshot = handleScreenshot;
4
+ const session_manager_js_1 = require("../session-manager.cjs");
5
+ const error_classification_js_1 = require("./error-classification.cjs");
6
+ const run_tool_js_1 = require("./run-tool.cjs");
7
+ /**
8
+ * Handles the screenshot tool request.
9
+ *
10
+ * @param input - The screenshot input parameters.
11
+ * @param options - Handler options including abort signal.
12
+ * @returns Response with screenshot path and dimensions.
13
+ */
14
+ async function handleScreenshot(input, options) {
15
+ return (0, run_tool_js_1.runTool)({
16
+ toolName: 'mm_screenshot',
17
+ input,
18
+ options,
19
+ observationPolicy: 'none',
20
+ /**
21
+ * Executes the screenshot capture.
22
+ *
23
+ * @returns The screenshot result.
24
+ */
25
+ execute: async () => {
26
+ const sessionManager = (0, session_manager_js_1.getSessionManager)();
27
+ const result = await sessionManager.screenshot({
28
+ name: input.name,
29
+ fullPage: input.fullPage ?? true,
30
+ selector: input.selector,
31
+ });
32
+ const response = {
33
+ path: result.path,
34
+ width: result.width,
35
+ height: result.height,
36
+ };
37
+ if (input.includeBase64) {
38
+ response.base64 = result.base64;
39
+ }
40
+ return response;
41
+ },
42
+ classifyError: error_classification_js_1.classifyScreenshotError,
43
+ /**
44
+ * Sanitizes input for knowledge store recording.
45
+ *
46
+ * @returns Sanitized input object.
47
+ */
48
+ sanitizeInputForRecording: () => ({
49
+ name: input.name,
50
+ fullPage: input.fullPage,
51
+ selector: input.selector,
52
+ }),
53
+ });
54
+ }
55
+ //# sourceMappingURL=screenshot.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"screenshot.cjs","sourceRoot":"","sources":["../../../src/mcp-server/tools/screenshot.ts"],"names":[],"mappings":";;AAiBA,4CAiDC;AAlED,+DAA0D;AAC1D,wEAAoE;AACpE,gDAAwC;AAQxC;;;;;;GAMG;AACI,KAAK,UAAU,gBAAgB,CACpC,KAAsB,EACtB,OAAwB;IAExB,OAAO,IAAA,qBAAO,EAAwC;QACpD,QAAQ,EAAE,eAAe;QACzB,KAAK;QACL,OAAO;QACP,iBAAiB,EAAE,MAAM;QAEzB;;;;WAIG;QACH,OAAO,EAAE,KAAK,IAAI,EAAE;YAClB,MAAM,cAAc,GAAG,IAAA,sCAAiB,GAAE,CAAC;YAC3C,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,UAAU,CAAC;gBAC7C,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,IAAI;gBAChC,QAAQ,EAAE,KAAK,CAAC,QAAQ;aACzB,CAAC,CAAC;YAEH,MAAM,QAAQ,GAAyB;gBACrC,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,MAAM,EAAE,MAAM,CAAC,MAAM;aACtB,CAAC;YAEF,IAAI,KAAK,CAAC,aAAa,EAAE,CAAC;gBACxB,QAAQ,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;YAClC,CAAC;YAED,OAAO,QAAQ,CAAC;QAClB,CAAC;QAED,aAAa,EAAE,iDAAuB;QAEtC;;;;WAIG;QACH,yBAAyB,EAAE,GAAG,EAAE,CAAC,CAAC;YAChC,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,QAAQ,EAAE,KAAK,CAAC,QAAQ;SACzB,CAAC;KACH,CAAC,CAAC;AACL,CAAC","sourcesContent":["import { getSessionManager } from '../session-manager.js';\nimport { classifyScreenshotError } from './error-classification.js';\nimport { runTool } from './run-tool.js';\nimport type {\n ScreenshotInput,\n ScreenshotToolResult,\n McpResponse,\n HandlerOptions,\n} from '../types';\n\n/**\n * Handles the screenshot tool request.\n *\n * @param input - The screenshot input parameters.\n * @param options - Handler options including abort signal.\n * @returns Response with screenshot path and dimensions.\n */\nexport async function handleScreenshot(\n input: ScreenshotInput,\n options?: HandlerOptions,\n): Promise<McpResponse<ScreenshotToolResult>> {\n return runTool<ScreenshotInput, ScreenshotToolResult>({\n toolName: 'mm_screenshot',\n input,\n options,\n observationPolicy: 'none',\n\n /**\n * Executes the screenshot capture.\n *\n * @returns The screenshot result.\n */\n execute: async () => {\n const sessionManager = getSessionManager();\n const result = await sessionManager.screenshot({\n name: input.name,\n fullPage: input.fullPage ?? true,\n selector: input.selector,\n });\n\n const response: ScreenshotToolResult = {\n path: result.path,\n width: result.width,\n height: result.height,\n };\n\n if (input.includeBase64) {\n response.base64 = result.base64;\n }\n\n return response;\n },\n\n classifyError: classifyScreenshotError,\n\n /**\n * Sanitizes input for knowledge store recording.\n *\n * @returns Sanitized input object.\n */\n sanitizeInputForRecording: () => ({\n name: input.name,\n fullPage: input.fullPage,\n selector: input.selector,\n }),\n });\n}\n"]}
@@ -0,0 +1,10 @@
1
+ import type { ScreenshotInput, ScreenshotToolResult, McpResponse, HandlerOptions } from "../types/index.cjs";
2
+ /**
3
+ * Handles the screenshot tool request.
4
+ *
5
+ * @param input - The screenshot input parameters.
6
+ * @param options - Handler options including abort signal.
7
+ * @returns Response with screenshot path and dimensions.
8
+ */
9
+ export declare function handleScreenshot(input: ScreenshotInput, options?: HandlerOptions): Promise<McpResponse<ScreenshotToolResult>>;
10
+ //# sourceMappingURL=screenshot.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"screenshot.d.cts","sourceRoot":"","sources":["../../../src/mcp-server/tools/screenshot.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,eAAe,EACf,oBAAoB,EACpB,WAAW,EACX,cAAc,EACf,2BAAiB;AAElB;;;;;;GAMG;AACH,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,eAAe,EACtB,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,WAAW,CAAC,oBAAoB,CAAC,CAAC,CA8C5C"}
@@ -0,0 +1,10 @@
1
+ import type { ScreenshotInput, ScreenshotToolResult, McpResponse, HandlerOptions } from "../types/index.mjs";
2
+ /**
3
+ * Handles the screenshot tool request.
4
+ *
5
+ * @param input - The screenshot input parameters.
6
+ * @param options - Handler options including abort signal.
7
+ * @returns Response with screenshot path and dimensions.
8
+ */
9
+ export declare function handleScreenshot(input: ScreenshotInput, options?: HandlerOptions): Promise<McpResponse<ScreenshotToolResult>>;
10
+ //# sourceMappingURL=screenshot.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"screenshot.d.mts","sourceRoot":"","sources":["../../../src/mcp-server/tools/screenshot.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,eAAe,EACf,oBAAoB,EACpB,WAAW,EACX,cAAc,EACf,2BAAiB;AAElB;;;;;;GAMG;AACH,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,eAAe,EACtB,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,WAAW,CAAC,oBAAoB,CAAC,CAAC,CA8C5C"}
@@ -0,0 +1,52 @@
1
+ import { getSessionManager } from "../session-manager.mjs";
2
+ import { classifyScreenshotError } from "./error-classification.mjs";
3
+ import { runTool } from "./run-tool.mjs";
4
+ /**
5
+ * Handles the screenshot tool request.
6
+ *
7
+ * @param input - The screenshot input parameters.
8
+ * @param options - Handler options including abort signal.
9
+ * @returns Response with screenshot path and dimensions.
10
+ */
11
+ export async function handleScreenshot(input, options) {
12
+ return runTool({
13
+ toolName: 'mm_screenshot',
14
+ input,
15
+ options,
16
+ observationPolicy: 'none',
17
+ /**
18
+ * Executes the screenshot capture.
19
+ *
20
+ * @returns The screenshot result.
21
+ */
22
+ execute: async () => {
23
+ const sessionManager = getSessionManager();
24
+ const result = await sessionManager.screenshot({
25
+ name: input.name,
26
+ fullPage: input.fullPage ?? true,
27
+ selector: input.selector,
28
+ });
29
+ const response = {
30
+ path: result.path,
31
+ width: result.width,
32
+ height: result.height,
33
+ };
34
+ if (input.includeBase64) {
35
+ response.base64 = result.base64;
36
+ }
37
+ return response;
38
+ },
39
+ classifyError: classifyScreenshotError,
40
+ /**
41
+ * Sanitizes input for knowledge store recording.
42
+ *
43
+ * @returns Sanitized input object.
44
+ */
45
+ sanitizeInputForRecording: () => ({
46
+ name: input.name,
47
+ fullPage: input.fullPage,
48
+ selector: input.selector,
49
+ }),
50
+ });
51
+ }
52
+ //# sourceMappingURL=screenshot.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"screenshot.mjs","sourceRoot":"","sources":["../../../src/mcp-server/tools/screenshot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,+BAA8B;AAC1D,OAAO,EAAE,uBAAuB,EAAE,mCAAkC;AACpE,OAAO,EAAE,OAAO,EAAE,uBAAsB;AAQxC;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,KAAsB,EACtB,OAAwB;IAExB,OAAO,OAAO,CAAwC;QACpD,QAAQ,EAAE,eAAe;QACzB,KAAK;QACL,OAAO;QACP,iBAAiB,EAAE,MAAM;QAEzB;;;;WAIG;QACH,OAAO,EAAE,KAAK,IAAI,EAAE;YAClB,MAAM,cAAc,GAAG,iBAAiB,EAAE,CAAC;YAC3C,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,UAAU,CAAC;gBAC7C,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,IAAI;gBAChC,QAAQ,EAAE,KAAK,CAAC,QAAQ;aACzB,CAAC,CAAC;YAEH,MAAM,QAAQ,GAAyB;gBACrC,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,MAAM,EAAE,MAAM,CAAC,MAAM;aACtB,CAAC;YAEF,IAAI,KAAK,CAAC,aAAa,EAAE,CAAC;gBACxB,QAAQ,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;YAClC,CAAC;YAED,OAAO,QAAQ,CAAC;QAClB,CAAC;QAED,aAAa,EAAE,uBAAuB;QAEtC;;;;WAIG;QACH,yBAAyB,EAAE,GAAG,EAAE,CAAC,CAAC;YAChC,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,QAAQ,EAAE,KAAK,CAAC,QAAQ;SACzB,CAAC;KACH,CAAC,CAAC;AACL,CAAC","sourcesContent":["import { getSessionManager } from '../session-manager.js';\nimport { classifyScreenshotError } from './error-classification.js';\nimport { runTool } from './run-tool.js';\nimport type {\n ScreenshotInput,\n ScreenshotToolResult,\n McpResponse,\n HandlerOptions,\n} from '../types';\n\n/**\n * Handles the screenshot tool request.\n *\n * @param input - The screenshot input parameters.\n * @param options - Handler options including abort signal.\n * @returns Response with screenshot path and dimensions.\n */\nexport async function handleScreenshot(\n input: ScreenshotInput,\n options?: HandlerOptions,\n): Promise<McpResponse<ScreenshotToolResult>> {\n return runTool<ScreenshotInput, ScreenshotToolResult>({\n toolName: 'mm_screenshot',\n input,\n options,\n observationPolicy: 'none',\n\n /**\n * Executes the screenshot capture.\n *\n * @returns The screenshot result.\n */\n execute: async () => {\n const sessionManager = getSessionManager();\n const result = await sessionManager.screenshot({\n name: input.name,\n fullPage: input.fullPage ?? true,\n selector: input.selector,\n });\n\n const response: ScreenshotToolResult = {\n path: result.path,\n width: result.width,\n height: result.height,\n };\n\n if (input.includeBase64) {\n response.base64 = result.base64;\n }\n\n return response;\n },\n\n classifyError: classifyScreenshotError,\n\n /**\n * Sanitizes input for knowledge store recording.\n *\n * @returns Sanitized input object.\n */\n sanitizeInputForRecording: () => ({\n name: input.name,\n fullPage: input.fullPage,\n selector: input.selector,\n }),\n });\n}\n"]}
@@ -0,0 +1,214 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.handleSeedContract = handleSeedContract;
4
+ exports.handleSeedContracts = handleSeedContracts;
5
+ exports.handleGetContractAddress = handleGetContractAddress;
6
+ exports.handleListDeployedContracts = handleListDeployedContracts;
7
+ const session_manager_js_1 = require("../session-manager.cjs");
8
+ const error_classification_js_1 = require("./error-classification.cjs");
9
+ const run_tool_js_1 = require("./run-tool.cjs");
10
+ const types_1 = require("../types/index.cjs");
11
+ const utils_1 = require("../utils/index.cjs");
12
+ /**
13
+ * Validates that the seeding capability is available, returning either the capability or an error response.
14
+ *
15
+ * @param toolName The name of the tool requesting the capability
16
+ * @param input The input provided to the tool
17
+ * @param options Tool options containing the seeding capability
18
+ * @param startTime Timestamp when the tool execution started
19
+ * @returns The seeding capability if available, or an error response if not
20
+ */
21
+ function checkSeedingCapability(toolName, input, options, startTime) {
22
+ const sessionManager = (0, session_manager_js_1.getSessionManager)();
23
+ const sessionId = sessionManager.getSessionId();
24
+ if (!options?.seedingCapability) {
25
+ return (0, utils_1.createErrorResponse)(types_1.ErrorCodes.MM_CAPABILITY_NOT_AVAILABLE, `ContractSeedingCapability not available. The ${toolName} tool requires running in e2e mode with the MetaMask extension wrapper, which provides Anvil chain and contract deployment support.`, { capability: 'ContractSeedingCapability', input }, sessionId, startTime);
26
+ }
27
+ return options.seedingCapability;
28
+ }
29
+ /**
30
+ * Type guard to check if a result is a ContractSeedingCapability.
31
+ *
32
+ * @param result The value to check
33
+ * @returns True if result is a ContractSeedingCapability, false if it's an error response
34
+ */
35
+ function isCapability(result) {
36
+ return (typeof result === 'object' && result !== null && 'deployContract' in result);
37
+ }
38
+ /**
39
+ * Handles the mm_seed_contract tool to deploy a single smart contract.
40
+ *
41
+ * @param input The contract name and deployment options
42
+ * @param options Tool options including seeding capability
43
+ * @returns Promise resolving to the deployment result with contract address
44
+ */
45
+ async function handleSeedContract(input, options) {
46
+ const startTime = Date.now();
47
+ const capabilityOrError = checkSeedingCapability('mm_seed_contract', input, options, startTime);
48
+ if (!isCapability(capabilityOrError)) {
49
+ return capabilityOrError;
50
+ }
51
+ const seedingCapability = capabilityOrError;
52
+ return (0, run_tool_js_1.runTool)({
53
+ toolName: 'mm_seed_contract',
54
+ input,
55
+ options,
56
+ observationPolicy: 'none',
57
+ /**
58
+ * Executes the contract deployment using the seeding capability.
59
+ *
60
+ * @returns The deployed contract details including name, address, and timestamp
61
+ */
62
+ execute: async () => {
63
+ const deployed = await seedingCapability.deployContract(input.contractName, {
64
+ hardfork: input.hardfork,
65
+ deployerOptions: input.deployerOptions,
66
+ });
67
+ return {
68
+ contractName: deployed.name,
69
+ contractAddress: deployed.address,
70
+ deployedAt: deployed.deployedAt,
71
+ };
72
+ },
73
+ classifyError: error_classification_js_1.classifySeedingError,
74
+ /**
75
+ * Sanitizes the input for recording in the knowledge store.
76
+ *
77
+ * @returns The sanitized input containing contract name and hardfork
78
+ */
79
+ sanitizeInputForRecording: () => ({
80
+ contractName: input.contractName,
81
+ hardfork: input.hardfork ?? 'prague',
82
+ }),
83
+ });
84
+ }
85
+ /**
86
+ * Handles the mm_seed_contracts tool to deploy multiple smart contracts.
87
+ *
88
+ * @param input The list of contract names and deployment options
89
+ * @param options Tool options including seeding capability
90
+ * @returns Promise resolving to deployment results with deployed and failed contracts
91
+ */
92
+ async function handleSeedContracts(input, options) {
93
+ const startTime = Date.now();
94
+ const capabilityOrError = checkSeedingCapability('mm_seed_contracts', input, options, startTime);
95
+ if (!isCapability(capabilityOrError)) {
96
+ return capabilityOrError;
97
+ }
98
+ const seedingCapability = capabilityOrError;
99
+ return (0, run_tool_js_1.runTool)({
100
+ toolName: 'mm_seed_contracts',
101
+ input,
102
+ options,
103
+ observationPolicy: 'none',
104
+ /**
105
+ * Executes the multi-contract deployment using the seeding capability.
106
+ *
107
+ * @returns The deployment results with deployed and failed contract lists
108
+ */
109
+ execute: async () => {
110
+ const seedResult = await seedingCapability.deployContracts(input.contracts, { hardfork: input.hardfork });
111
+ return {
112
+ deployed: seedResult.deployed.map((deployedContract) => ({
113
+ contractName: deployedContract.name,
114
+ contractAddress: deployedContract.address,
115
+ deployedAt: deployedContract.deployedAt,
116
+ })),
117
+ failed: seedResult.failed.map((failedDeployment) => ({
118
+ contractName: failedDeployment.name,
119
+ error: failedDeployment.error,
120
+ })),
121
+ };
122
+ },
123
+ classifyError: error_classification_js_1.classifySeedingError,
124
+ /**
125
+ * Sanitizes the input for recording in the knowledge store.
126
+ *
127
+ * @returns The sanitized input containing contracts list and hardfork
128
+ */
129
+ sanitizeInputForRecording: () => ({
130
+ contracts: input.contracts,
131
+ hardfork: input.hardfork ?? 'prague',
132
+ }),
133
+ });
134
+ }
135
+ /**
136
+ * Handles the mm_get_contract_address tool to retrieve a deployed contract's address.
137
+ *
138
+ * @param input The contract name to look up
139
+ * @param options Tool options including seeding capability
140
+ * @returns Promise resolving to the contract address or null if not found
141
+ */
142
+ async function handleGetContractAddress(input, options) {
143
+ const startTime = Date.now();
144
+ const capabilityOrError = checkSeedingCapability('mm_get_contract_address', input, options, startTime);
145
+ if (!isCapability(capabilityOrError)) {
146
+ return capabilityOrError;
147
+ }
148
+ const seedingCapability = capabilityOrError;
149
+ return (0, run_tool_js_1.runTool)({
150
+ toolName: 'mm_get_contract_address',
151
+ input,
152
+ options,
153
+ observationPolicy: 'none',
154
+ /**
155
+ * Executes the contract address lookup using the seeding capability.
156
+ *
157
+ * @returns The contract name and its deployed address
158
+ */
159
+ execute: async () => {
160
+ const address = seedingCapability.getContractAddress(input.contractName);
161
+ return {
162
+ contractName: input.contractName,
163
+ contractAddress: address,
164
+ };
165
+ },
166
+ classifyError: error_classification_js_1.classifySeedingError,
167
+ /**
168
+ * Sanitizes the input for recording in the knowledge store.
169
+ *
170
+ * @returns The sanitized input containing the contract name
171
+ */
172
+ sanitizeInputForRecording: () => ({
173
+ contractName: input.contractName,
174
+ }),
175
+ });
176
+ }
177
+ /**
178
+ * Handles the mm_list_contracts tool to list all deployed contracts in the session.
179
+ *
180
+ * @param _input Unused input parameter (no input required for this tool)
181
+ * @param options Tool options including seeding capability
182
+ * @returns Promise resolving to a list of all deployed contracts with their addresses
183
+ */
184
+ async function handleListDeployedContracts(_input, options) {
185
+ const startTime = Date.now();
186
+ const capabilityOrError = checkSeedingCapability('mm_list_contracts', _input, options, startTime);
187
+ if (!isCapability(capabilityOrError)) {
188
+ return capabilityOrError;
189
+ }
190
+ const seedingCapability = capabilityOrError;
191
+ return (0, run_tool_js_1.runTool)({
192
+ toolName: 'mm_list_contracts',
193
+ input: _input,
194
+ options,
195
+ observationPolicy: 'none',
196
+ /**
197
+ * Executes the contract listing using the seeding capability.
198
+ *
199
+ * @returns The list of all deployed contracts with their details
200
+ */
201
+ execute: async () => {
202
+ const deployed = seedingCapability.listDeployedContracts();
203
+ return {
204
+ contracts: deployed.map((deployedContract) => ({
205
+ contractName: deployedContract.name,
206
+ contractAddress: deployedContract.address,
207
+ deployedAt: deployedContract.deployedAt,
208
+ })),
209
+ };
210
+ },
211
+ classifyError: error_classification_js_1.classifySeedingError,
212
+ });
213
+ }
214
+ //# sourceMappingURL=seeding.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"seeding.cjs","sourceRoot":"","sources":["../../../src/mcp-server/tools/seeding.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ContractSeedingCapability } from '../../capabilities/types.js';\nimport { getSessionManager } from '../session-manager.js';\nimport { classifySeedingError } from './error-classification.js';\nimport { runTool } from './run-tool.js';\nimport type {\n SeedContractInput,\n SeedContractsInput,\n GetContractAddressInput,\n ListDeployedContractsInput,\n SeedContractResult,\n SeedContractsResult,\n GetContractAddressResult,\n ListDeployedContractsResult,\n McpResponse,\n HandlerOptions,\n} from '../types';\nimport { ErrorCodes } from '../types';\nimport { createErrorResponse } from '../utils';\n\nexport type SeedingToolOptions = HandlerOptions & {\n seedingCapability?: ContractSeedingCapability;\n};\n\n/**\n * Validates that the seeding capability is available, returning either the capability or an error response.\n *\n * @param toolName The name of the tool requesting the capability\n * @param input The input provided to the tool\n * @param options Tool options containing the seeding capability\n * @param startTime Timestamp when the tool execution started\n * @returns The seeding capability if available, or an error response if not\n */\nfunction checkSeedingCapability<Type>(\n toolName: string,\n input: unknown,\n options: SeedingToolOptions | undefined,\n startTime: number,\n): McpResponse<Type> | ContractSeedingCapability {\n const sessionManager = getSessionManager();\n const sessionId = sessionManager.getSessionId();\n\n if (!options?.seedingCapability) {\n return createErrorResponse(\n ErrorCodes.MM_CAPABILITY_NOT_AVAILABLE,\n `ContractSeedingCapability not available. The ${toolName} tool requires running in e2e mode with the MetaMask extension wrapper, which provides Anvil chain and contract deployment support.`,\n { capability: 'ContractSeedingCapability', input },\n sessionId,\n startTime,\n ) as McpResponse<Type>;\n }\n\n return options.seedingCapability;\n}\n\n/**\n * Type guard to check if a result is a ContractSeedingCapability.\n *\n * @param result The value to check\n * @returns True if result is a ContractSeedingCapability, false if it's an error response\n */\nfunction isCapability(\n result: McpResponse<unknown> | ContractSeedingCapability,\n): result is ContractSeedingCapability {\n return (\n typeof result === 'object' && result !== null && 'deployContract' in result\n );\n}\n\n/**\n * Handles the mm_seed_contract tool to deploy a single smart contract.\n *\n * @param input The contract name and deployment options\n * @param options Tool options including seeding capability\n * @returns Promise resolving to the deployment result with contract address\n */\nexport async function handleSeedContract(\n input: SeedContractInput,\n options?: SeedingToolOptions,\n): Promise<McpResponse<SeedContractResult>> {\n const startTime = Date.now();\n const capabilityOrError = checkSeedingCapability<SeedContractResult>(\n 'mm_seed_contract',\n input,\n options,\n startTime,\n );\n\n if (!isCapability(capabilityOrError)) {\n return capabilityOrError;\n }\n\n const seedingCapability = capabilityOrError;\n\n return runTool<SeedContractInput, SeedContractResult>({\n toolName: 'mm_seed_contract',\n input,\n options,\n observationPolicy: 'none',\n\n /**\n * Executes the contract deployment using the seeding capability.\n *\n * @returns The deployed contract details including name, address, and timestamp\n */\n execute: async () => {\n const deployed = await seedingCapability.deployContract(\n input.contractName,\n {\n hardfork: input.hardfork,\n deployerOptions: input.deployerOptions,\n },\n );\n\n return {\n contractName: deployed.name,\n contractAddress: deployed.address,\n deployedAt: deployed.deployedAt,\n };\n },\n\n classifyError: classifySeedingError,\n\n /**\n * Sanitizes the input for recording in the knowledge store.\n *\n * @returns The sanitized input containing contract name and hardfork\n */\n sanitizeInputForRecording: () => ({\n contractName: input.contractName,\n hardfork: input.hardfork ?? 'prague',\n }),\n });\n}\n\n/**\n * Handles the mm_seed_contracts tool to deploy multiple smart contracts.\n *\n * @param input The list of contract names and deployment options\n * @param options Tool options including seeding capability\n * @returns Promise resolving to deployment results with deployed and failed contracts\n */\nexport async function handleSeedContracts(\n input: SeedContractsInput,\n options?: SeedingToolOptions,\n): Promise<McpResponse<SeedContractsResult>> {\n const startTime = Date.now();\n const capabilityOrError = checkSeedingCapability<SeedContractsResult>(\n 'mm_seed_contracts',\n input,\n options,\n startTime,\n );\n\n if (!isCapability(capabilityOrError)) {\n return capabilityOrError;\n }\n\n const seedingCapability = capabilityOrError;\n\n return runTool<SeedContractsInput, SeedContractsResult>({\n toolName: 'mm_seed_contracts',\n input,\n options,\n observationPolicy: 'none',\n\n /**\n * Executes the multi-contract deployment using the seeding capability.\n *\n * @returns The deployment results with deployed and failed contract lists\n */\n execute: async () => {\n const seedResult = await seedingCapability.deployContracts(\n input.contracts,\n { hardfork: input.hardfork },\n );\n\n return {\n deployed: seedResult.deployed.map((deployedContract) => ({\n contractName: deployedContract.name,\n contractAddress: deployedContract.address,\n deployedAt: deployedContract.deployedAt,\n })),\n failed: seedResult.failed.map((failedDeployment) => ({\n contractName: failedDeployment.name,\n error: failedDeployment.error,\n })),\n };\n },\n\n classifyError: classifySeedingError,\n\n /**\n * Sanitizes the input for recording in the knowledge store.\n *\n * @returns The sanitized input containing contracts list and hardfork\n */\n sanitizeInputForRecording: () => ({\n contracts: input.contracts,\n hardfork: input.hardfork ?? 'prague',\n }),\n });\n}\n\n/**\n * Handles the mm_get_contract_address tool to retrieve a deployed contract's address.\n *\n * @param input The contract name to look up\n * @param options Tool options including seeding capability\n * @returns Promise resolving to the contract address or null if not found\n */\nexport async function handleGetContractAddress(\n input: GetContractAddressInput,\n options?: SeedingToolOptions,\n): Promise<McpResponse<GetContractAddressResult>> {\n const startTime = Date.now();\n const capabilityOrError = checkSeedingCapability<GetContractAddressResult>(\n 'mm_get_contract_address',\n input,\n options,\n startTime,\n );\n\n if (!isCapability(capabilityOrError)) {\n return capabilityOrError;\n }\n\n const seedingCapability = capabilityOrError;\n\n return runTool<GetContractAddressInput, GetContractAddressResult>({\n toolName: 'mm_get_contract_address',\n input,\n options,\n observationPolicy: 'none',\n\n /**\n * Executes the contract address lookup using the seeding capability.\n *\n * @returns The contract name and its deployed address\n */\n execute: async () => {\n const address = seedingCapability.getContractAddress(input.contractName);\n\n return {\n contractName: input.contractName,\n contractAddress: address,\n };\n },\n\n classifyError: classifySeedingError,\n\n /**\n * Sanitizes the input for recording in the knowledge store.\n *\n * @returns The sanitized input containing the contract name\n */\n sanitizeInputForRecording: () => ({\n contractName: input.contractName,\n }),\n });\n}\n\n/**\n * Handles the mm_list_contracts tool to list all deployed contracts in the session.\n *\n * @param _input Unused input parameter (no input required for this tool)\n * @param options Tool options including seeding capability\n * @returns Promise resolving to a list of all deployed contracts with their addresses\n */\nexport async function handleListDeployedContracts(\n _input: ListDeployedContractsInput,\n options?: SeedingToolOptions,\n): Promise<McpResponse<ListDeployedContractsResult>> {\n const startTime = Date.now();\n const capabilityOrError = checkSeedingCapability<ListDeployedContractsResult>(\n 'mm_list_contracts',\n _input,\n options,\n startTime,\n );\n\n if (!isCapability(capabilityOrError)) {\n return capabilityOrError;\n }\n\n const seedingCapability = capabilityOrError;\n\n return runTool<ListDeployedContractsInput, ListDeployedContractsResult>({\n toolName: 'mm_list_contracts',\n input: _input,\n options,\n observationPolicy: 'none',\n\n /**\n * Executes the contract listing using the seeding capability.\n *\n * @returns The list of all deployed contracts with their details\n */\n execute: async () => {\n const deployed = seedingCapability.listDeployedContracts();\n\n return {\n contracts: deployed.map(\n (deployedContract: {\n /**\n * The contract name\n */\n name: string;\n /**\n * The contract's deployed address\n */\n address: string;\n /**\n * The deployment timestamp\n */\n deployedAt: string;\n }) => ({\n contractName: deployedContract.name,\n contractAddress: deployedContract.address,\n deployedAt: deployedContract.deployedAt,\n }),\n ),\n };\n },\n\n classifyError: classifySeedingError,\n });\n}\n"]}
@@ -0,0 +1,38 @@
1
+ import type { ContractSeedingCapability } from "../../capabilities/types.cjs";
2
+ import type { SeedContractInput, SeedContractsInput, GetContractAddressInput, ListDeployedContractsInput, SeedContractResult, SeedContractsResult, GetContractAddressResult, ListDeployedContractsResult, McpResponse, HandlerOptions } from "../types/index.cjs";
3
+ export type SeedingToolOptions = HandlerOptions & {
4
+ seedingCapability?: ContractSeedingCapability;
5
+ };
6
+ /**
7
+ * Handles the mm_seed_contract tool to deploy a single smart contract.
8
+ *
9
+ * @param input The contract name and deployment options
10
+ * @param options Tool options including seeding capability
11
+ * @returns Promise resolving to the deployment result with contract address
12
+ */
13
+ export declare function handleSeedContract(input: SeedContractInput, options?: SeedingToolOptions): Promise<McpResponse<SeedContractResult>>;
14
+ /**
15
+ * Handles the mm_seed_contracts tool to deploy multiple smart contracts.
16
+ *
17
+ * @param input The list of contract names and deployment options
18
+ * @param options Tool options including seeding capability
19
+ * @returns Promise resolving to deployment results with deployed and failed contracts
20
+ */
21
+ export declare function handleSeedContracts(input: SeedContractsInput, options?: SeedingToolOptions): Promise<McpResponse<SeedContractsResult>>;
22
+ /**
23
+ * Handles the mm_get_contract_address tool to retrieve a deployed contract's address.
24
+ *
25
+ * @param input The contract name to look up
26
+ * @param options Tool options including seeding capability
27
+ * @returns Promise resolving to the contract address or null if not found
28
+ */
29
+ export declare function handleGetContractAddress(input: GetContractAddressInput, options?: SeedingToolOptions): Promise<McpResponse<GetContractAddressResult>>;
30
+ /**
31
+ * Handles the mm_list_contracts tool to list all deployed contracts in the session.
32
+ *
33
+ * @param _input Unused input parameter (no input required for this tool)
34
+ * @param options Tool options including seeding capability
35
+ * @returns Promise resolving to a list of all deployed contracts with their addresses
36
+ */
37
+ export declare function handleListDeployedContracts(_input: ListDeployedContractsInput, options?: SeedingToolOptions): Promise<McpResponse<ListDeployedContractsResult>>;
38
+ //# sourceMappingURL=seeding.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"seeding.d.cts","sourceRoot":"","sources":["../../../src/mcp-server/tools/seeding.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,qCAAoC;AAI7E,OAAO,KAAK,EACV,iBAAiB,EACjB,kBAAkB,EAClB,uBAAuB,EACvB,0BAA0B,EAC1B,kBAAkB,EAClB,mBAAmB,EACnB,wBAAwB,EACxB,2BAA2B,EAC3B,WAAW,EACX,cAAc,EACf,2BAAiB;AAIlB,MAAM,MAAM,kBAAkB,GAAG,cAAc,GAAG;IAChD,iBAAiB,CAAC,EAAE,yBAAyB,CAAC;CAC/C,CAAC;AA+CF;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CACtC,KAAK,EAAE,iBAAiB,EACxB,OAAO,CAAC,EAAE,kBAAkB,GAC3B,OAAO,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC,CAsD1C;AAED;;;;;;GAMG;AACH,wBAAsB,mBAAmB,CACvC,KAAK,EAAE,kBAAkB,EACzB,OAAO,CAAC,EAAE,kBAAkB,GAC3B,OAAO,CAAC,WAAW,CAAC,mBAAmB,CAAC,CAAC,CAyD3C;AAED;;;;;;GAMG;AACH,wBAAsB,wBAAwB,CAC5C,KAAK,EAAE,uBAAuB,EAC9B,OAAO,CAAC,EAAE,kBAAkB,GAC3B,OAAO,CAAC,WAAW,CAAC,wBAAwB,CAAC,CAAC,CA8ChD;AAED;;;;;;GAMG;AACH,wBAAsB,2BAA2B,CAC/C,MAAM,EAAE,0BAA0B,EAClC,OAAO,CAAC,EAAE,kBAAkB,GAC3B,OAAO,CAAC,WAAW,CAAC,2BAA2B,CAAC,CAAC,CAuDnD"}
@@ -0,0 +1,38 @@
1
+ import type { ContractSeedingCapability } from "../../capabilities/types.mjs";
2
+ import type { SeedContractInput, SeedContractsInput, GetContractAddressInput, ListDeployedContractsInput, SeedContractResult, SeedContractsResult, GetContractAddressResult, ListDeployedContractsResult, McpResponse, HandlerOptions } from "../types/index.mjs";
3
+ export type SeedingToolOptions = HandlerOptions & {
4
+ seedingCapability?: ContractSeedingCapability;
5
+ };
6
+ /**
7
+ * Handles the mm_seed_contract tool to deploy a single smart contract.
8
+ *
9
+ * @param input The contract name and deployment options
10
+ * @param options Tool options including seeding capability
11
+ * @returns Promise resolving to the deployment result with contract address
12
+ */
13
+ export declare function handleSeedContract(input: SeedContractInput, options?: SeedingToolOptions): Promise<McpResponse<SeedContractResult>>;
14
+ /**
15
+ * Handles the mm_seed_contracts tool to deploy multiple smart contracts.
16
+ *
17
+ * @param input The list of contract names and deployment options
18
+ * @param options Tool options including seeding capability
19
+ * @returns Promise resolving to deployment results with deployed and failed contracts
20
+ */
21
+ export declare function handleSeedContracts(input: SeedContractsInput, options?: SeedingToolOptions): Promise<McpResponse<SeedContractsResult>>;
22
+ /**
23
+ * Handles the mm_get_contract_address tool to retrieve a deployed contract's address.
24
+ *
25
+ * @param input The contract name to look up
26
+ * @param options Tool options including seeding capability
27
+ * @returns Promise resolving to the contract address or null if not found
28
+ */
29
+ export declare function handleGetContractAddress(input: GetContractAddressInput, options?: SeedingToolOptions): Promise<McpResponse<GetContractAddressResult>>;
30
+ /**
31
+ * Handles the mm_list_contracts tool to list all deployed contracts in the session.
32
+ *
33
+ * @param _input Unused input parameter (no input required for this tool)
34
+ * @param options Tool options including seeding capability
35
+ * @returns Promise resolving to a list of all deployed contracts with their addresses
36
+ */
37
+ export declare function handleListDeployedContracts(_input: ListDeployedContractsInput, options?: SeedingToolOptions): Promise<McpResponse<ListDeployedContractsResult>>;
38
+ //# sourceMappingURL=seeding.d.mts.map