@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,24 @@
1
+ #!/usr/bin/env node
2
+ import { Server } from "@modelcontextprotocol/sdk/server/index.js";
3
+ import type { ToolDefinition } from "./tools/definitions.cjs";
4
+ export type McpServerConfig = {
5
+ name: string;
6
+ version: string;
7
+ onCleanup?: () => Promise<void>;
8
+ logger?: (message: string) => void;
9
+ };
10
+ export type McpServer = {
11
+ start(): Promise<void>;
12
+ stop(): Promise<void>;
13
+ getServer(): Server;
14
+ getToolDefinitions(): ToolDefinition[];
15
+ getToolPrefix(): string;
16
+ };
17
+ /**
18
+ * Create and configure an MCP server instance.
19
+ *
20
+ * @param config Server configuration including name, version, and optional cleanup handler
21
+ * @returns McpServer instance with start/stop methods and tool definitions
22
+ */
23
+ export declare function createMcpServer(config: McpServerConfig): McpServer;
24
+ //# sourceMappingURL=server.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.d.cts","sourceRoot":"","sources":["../../src/mcp-server/server.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,MAAM,EAAE,kDAAkD;AAgBnE,OAAO,KAAK,EAAE,cAAc,EAAE,gCAA+B;AAI7D,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAChC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACpC,CAAC;AAwCF,MAAM,MAAM,SAAS,GAAG;IACtB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACtB,SAAS,IAAI,MAAM,CAAC;IACpB,kBAAkB,IAAI,cAAc,EAAE,CAAC;IACvC,aAAa,IAAI,MAAM,CAAC;CACzB,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,eAAe,GAAG,SAAS,CA2JlE"}
@@ -0,0 +1,24 @@
1
+ #!/usr/bin/env node
2
+ import { Server } from "@modelcontextprotocol/sdk/server/index.js";
3
+ import type { ToolDefinition } from "./tools/definitions.mjs";
4
+ export type McpServerConfig = {
5
+ name: string;
6
+ version: string;
7
+ onCleanup?: () => Promise<void>;
8
+ logger?: (message: string) => void;
9
+ };
10
+ export type McpServer = {
11
+ start(): Promise<void>;
12
+ stop(): Promise<void>;
13
+ getServer(): Server;
14
+ getToolDefinitions(): ToolDefinition[];
15
+ getToolPrefix(): string;
16
+ };
17
+ /**
18
+ * Create and configure an MCP server instance.
19
+ *
20
+ * @param config Server configuration including name, version, and optional cleanup handler
21
+ * @returns McpServer instance with start/stop methods and tool definitions
22
+ */
23
+ export declare function createMcpServer(config: McpServerConfig): McpServer;
24
+ //# sourceMappingURL=server.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.d.mts","sourceRoot":"","sources":["../../src/mcp-server/server.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,MAAM,EAAE,kDAAkD;AAgBnE,OAAO,KAAK,EAAE,cAAc,EAAE,gCAA+B;AAI7D,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAChC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACpC,CAAC;AAwCF,MAAM,MAAM,SAAS,GAAG;IACtB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACtB,SAAS,IAAI,MAAM,CAAC;IACpB,kBAAkB,IAAI,cAAc,EAAE,CAAC;IACvC,aAAa,IAAI,MAAM,CAAC;CACzB,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,eAAe,GAAG,SAAS,CA2JlE"}
@@ -0,0 +1,158 @@
1
+ #!/usr/bin/env node
2
+ /* eslint-disable @typescript-eslint/explicit-function-return-type */
3
+ import { Server } from "@modelcontextprotocol/sdk/server/index.js";
4
+ import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
5
+ import { CallToolRequestSchema, ListToolsRequestSchema } from "@modelcontextprotocol/sdk/types.js";
6
+ import { getSessionManager, hasSessionManager } from "./session-manager.mjs";
7
+ import { setToolRegistry } from "./tools/batch.mjs";
8
+ import { getToolDefinitions, getToolHandler, safeValidateToolInput, buildToolHandlersRecord, TOOL_PREFIX } from "./tools/definitions.mjs";
9
+ import { ErrorCodes } from "./types/index.mjs";
10
+ import { createErrorResponse } from "./utils/index.mjs";
11
+ /**
12
+ * Create a standardized error response for tool execution failures.
13
+ *
14
+ * @param code The error code from ErrorCodes enum
15
+ * @param message Human-readable error message
16
+ * @param details Optional error details object
17
+ * @param startTime Timestamp when the operation started
18
+ * @returns MCP-formatted error response object
19
+ */
20
+ function createToolErrorResponse(code, message, details, startTime) {
21
+ const sessionId = hasSessionManager()
22
+ ? getSessionManager().getSessionId()
23
+ : undefined;
24
+ const response = createErrorResponse(code, message, details, sessionId, startTime);
25
+ return {
26
+ content: [
27
+ {
28
+ type: 'text',
29
+ text: JSON.stringify(response),
30
+ },
31
+ ],
32
+ isError: true,
33
+ };
34
+ }
35
+ /**
36
+ * Create and configure an MCP server instance.
37
+ *
38
+ * @param config Server configuration including name, version, and optional cleanup handler
39
+ * @returns McpServer instance with start/stop methods and tool definitions
40
+ */
41
+ export function createMcpServer(config) {
42
+ const { name, version, onCleanup, logger = console.error } = config;
43
+ const toolDefinitions = getToolDefinitions();
44
+ const toolHandlers = buildToolHandlersRecord();
45
+ setToolRegistry(toolHandlers);
46
+ const validToolNames = new Set(toolDefinitions.map((tool) => tool.name));
47
+ const server = new Server({ name, version }, { capabilities: { tools: {} } });
48
+ let isCleaningUp = false;
49
+ server.setRequestHandler(ListToolsRequestSchema, async () => ({
50
+ tools: toolDefinitions,
51
+ }));
52
+ server.setRequestHandler(CallToolRequestSchema, async (request, extra) => {
53
+ const { name: toolName, arguments: args } = request.params;
54
+ const startTime = Date.now();
55
+ const signal = extra?.signal;
56
+ if (!validToolNames.has(toolName)) {
57
+ return createToolErrorResponse(ErrorCodes.MM_INVALID_INPUT, `Unknown tool: ${toolName}`, undefined, startTime);
58
+ }
59
+ const validation = safeValidateToolInput(toolName, args);
60
+ if (!validation.success) {
61
+ return createToolErrorResponse(ErrorCodes.MM_INVALID_INPUT, `Invalid input: ${validation.error}`, { providedArgs: args }, startTime);
62
+ }
63
+ const handler = getToolHandler(toolName);
64
+ if (!handler) {
65
+ return createToolErrorResponse(ErrorCodes.MM_INVALID_INPUT, `No handler registered for tool: ${toolName}`, undefined, startTime);
66
+ }
67
+ const response = await handler(validation.data, {
68
+ signal,
69
+ });
70
+ return {
71
+ content: [
72
+ {
73
+ type: 'text',
74
+ text: JSON.stringify(response),
75
+ },
76
+ ],
77
+ isError: !response.ok,
78
+ };
79
+ });
80
+ /**
81
+ * Handle process signals (SIGINT, SIGTERM) and perform cleanup.
82
+ *
83
+ * @param signal The signal name received (e.g., 'SIGINT', 'SIGTERM')
84
+ */
85
+ const handleSignal = async (signal) => {
86
+ if (isCleaningUp) {
87
+ return;
88
+ }
89
+ isCleaningUp = true;
90
+ logger(`Received ${signal}, cleaning up...`);
91
+ try {
92
+ if (onCleanup) {
93
+ await onCleanup();
94
+ }
95
+ if (hasSessionManager()) {
96
+ await getSessionManager().cleanup();
97
+ }
98
+ }
99
+ catch (error) {
100
+ logger(`Cleanup error: ${JSON.stringify(error)}`);
101
+ }
102
+ process.exit(0);
103
+ };
104
+ process.on('SIGINT', () => {
105
+ handleSignal('SIGINT').catch((error) => logger(`SIGINT error: ${error}`));
106
+ });
107
+ process.on('SIGTERM', () => {
108
+ handleSignal('SIGTERM').catch((error) => logger(`SIGTERM error: ${error}`));
109
+ });
110
+ let transport;
111
+ return {
112
+ /**
113
+ * Start the MCP server and connect to stdio transport.
114
+ *
115
+ * @returns Promise that resolves when server is running
116
+ */
117
+ async start() {
118
+ transport = new StdioServerTransport();
119
+ await server.connect(transport);
120
+ logger(`${name} MCP Server v${version} running on stdio`);
121
+ },
122
+ /**
123
+ * Stop the MCP server and close the transport.
124
+ *
125
+ * @returns Promise that resolves when server is stopped
126
+ */
127
+ async stop() {
128
+ if (transport) {
129
+ await server.close();
130
+ }
131
+ },
132
+ /**
133
+ * Get the underlying MCP Server instance.
134
+ *
135
+ * @returns The MCP Server instance
136
+ */
137
+ getServer() {
138
+ return server;
139
+ },
140
+ /**
141
+ * Get all available tool definitions.
142
+ *
143
+ * @returns Array of tool definitions
144
+ */
145
+ getToolDefinitions() {
146
+ return toolDefinitions;
147
+ },
148
+ /**
149
+ * Get the tool name prefix (e.g., 'mm_').
150
+ *
151
+ * @returns The tool prefix string
152
+ */
153
+ getToolPrefix() {
154
+ return TOOL_PREFIX;
155
+ },
156
+ };
157
+ }
158
+ //# sourceMappingURL=server.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.mjs","sourceRoot":"","sources":["../../src/mcp-server/server.ts"],"names":[],"mappings":"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","sourcesContent":["#!/usr/bin/env node\n/* eslint-disable @typescript-eslint/explicit-function-return-type */\nimport { Server } from '@modelcontextprotocol/sdk/server/index.js';\nimport { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';\nimport {\n CallToolRequestSchema,\n ListToolsRequestSchema,\n} from '@modelcontextprotocol/sdk/types.js';\n\nimport { getSessionManager, hasSessionManager } from './session-manager.js';\nimport { setToolRegistry } from './tools/batch.js';\nimport {\n getToolDefinitions,\n getToolHandler,\n safeValidateToolInput,\n buildToolHandlersRecord,\n TOOL_PREFIX,\n} from './tools/definitions.js';\nimport type { ToolDefinition } from './tools/definitions.js';\nimport { ErrorCodes } from './types';\nimport { createErrorResponse } from './utils';\n\nexport type McpServerConfig = {\n name: string;\n version: string;\n onCleanup?: () => Promise<void>;\n logger?: (message: string) => void;\n};\n\n/**\n * Create a standardized error response for tool execution failures.\n *\n * @param code The error code from ErrorCodes enum\n * @param message Human-readable error message\n * @param details Optional error details object\n * @param startTime Timestamp when the operation started\n * @returns MCP-formatted error response object\n */\nfunction createToolErrorResponse(\n code: (typeof ErrorCodes)[keyof typeof ErrorCodes],\n message: string,\n details: Record<string, unknown> | undefined,\n startTime: number,\n) {\n const sessionId = hasSessionManager()\n ? getSessionManager().getSessionId()\n : undefined;\n\n const response = createErrorResponse(\n code,\n message,\n details,\n sessionId,\n startTime,\n );\n\n return {\n content: [\n {\n type: 'text' as const,\n text: JSON.stringify(response),\n },\n ],\n isError: true,\n };\n}\n\nexport type McpServer = {\n start(): Promise<void>;\n stop(): Promise<void>;\n getServer(): Server;\n getToolDefinitions(): ToolDefinition[];\n getToolPrefix(): string;\n};\n\n/**\n * Create and configure an MCP server instance.\n *\n * @param config Server configuration including name, version, and optional cleanup handler\n * @returns McpServer instance with start/stop methods and tool definitions\n */\nexport function createMcpServer(config: McpServerConfig): McpServer {\n const { name, version, onCleanup, logger = console.error } = config;\n\n const toolDefinitions = getToolDefinitions();\n const toolHandlers = buildToolHandlersRecord();\n\n setToolRegistry(toolHandlers);\n\n const validToolNames = new Set(toolDefinitions.map((tool) => tool.name));\n\n const server = new Server({ name, version }, { capabilities: { tools: {} } });\n\n let isCleaningUp = false;\n\n server.setRequestHandler(ListToolsRequestSchema, async () => ({\n tools: toolDefinitions,\n }));\n\n server.setRequestHandler(CallToolRequestSchema, async (request, extra) => {\n const { name: toolName, arguments: args } = request.params;\n const startTime = Date.now();\n const signal = extra?.signal;\n\n if (!validToolNames.has(toolName)) {\n return createToolErrorResponse(\n ErrorCodes.MM_INVALID_INPUT,\n `Unknown tool: ${toolName}`,\n undefined,\n startTime,\n );\n }\n\n const validation = safeValidateToolInput(toolName, args);\n if (!validation.success) {\n return createToolErrorResponse(\n ErrorCodes.MM_INVALID_INPUT,\n `Invalid input: ${validation.error}`,\n { providedArgs: args },\n startTime,\n );\n }\n\n const handler = getToolHandler(toolName);\n\n if (!handler) {\n return createToolErrorResponse(\n ErrorCodes.MM_INVALID_INPUT,\n `No handler registered for tool: ${toolName}`,\n undefined,\n startTime,\n );\n }\n\n const response = await handler(validation.data as Record<string, unknown>, {\n signal,\n });\n\n return {\n content: [\n {\n type: 'text' as const,\n text: JSON.stringify(response),\n },\n ],\n isError: !response.ok,\n };\n });\n\n /**\n * Handle process signals (SIGINT, SIGTERM) and perform cleanup.\n *\n * @param signal The signal name received (e.g., 'SIGINT', 'SIGTERM')\n */\n const handleSignal = async (signal: string) => {\n if (isCleaningUp) {\n return;\n }\n isCleaningUp = true;\n\n logger(`Received ${signal}, cleaning up...`);\n\n try {\n if (onCleanup) {\n await onCleanup();\n }\n\n if (hasSessionManager()) {\n await getSessionManager().cleanup();\n }\n } catch (error) {\n logger(`Cleanup error: ${JSON.stringify(error)}`);\n }\n\n process.exit(0);\n };\n\n process.on('SIGINT', () => {\n handleSignal('SIGINT').catch((error) => logger(`SIGINT error: ${error}`));\n });\n process.on('SIGTERM', () => {\n handleSignal('SIGTERM').catch((error) => logger(`SIGTERM error: ${error}`));\n });\n\n let transport: StdioServerTransport | undefined;\n\n return {\n /**\n * Start the MCP server and connect to stdio transport.\n *\n * @returns Promise that resolves when server is running\n */\n async start() {\n transport = new StdioServerTransport();\n await server.connect(transport);\n logger(`${name} MCP Server v${version} running on stdio`);\n },\n\n /**\n * Stop the MCP server and close the transport.\n *\n * @returns Promise that resolves when server is stopped\n */\n async stop() {\n if (transport) {\n await server.close();\n }\n },\n\n /**\n * Get the underlying MCP Server instance.\n *\n * @returns The MCP Server instance\n */\n getServer() {\n return server;\n },\n\n /**\n * Get all available tool definitions.\n *\n * @returns Array of tool definitions\n */\n getToolDefinitions() {\n return toolDefinitions;\n },\n\n /**\n * Get the tool name prefix (e.g., 'mm_').\n *\n * @returns The tool prefix string\n */\n getToolPrefix() {\n return TOOL_PREFIX;\n },\n };\n}\n"]}
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+ /**
3
+ * Generic Session Manager Interface for Browser Extension MCP Servers.
4
+ *
5
+ * This module defines the interface that concrete session managers must implement.
6
+ * The interface abstracts browser session management, page tracking, and extension state.
7
+ *
8
+ * Extension-specific implementations (e.g., MetaMaskSessionManager) should implement
9
+ * this interface and be injected into the core tool handlers.
10
+ */
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.setSessionManager = setSessionManager;
13
+ exports.getSessionManager = getSessionManager;
14
+ exports.hasSessionManager = hasSessionManager;
15
+ /**
16
+ * Session manager instance holder.
17
+ *
18
+ * In the core package, this is undefined by default.
19
+ * Extension implementations should call setSessionManager() to inject
20
+ * their concrete implementation.
21
+ */
22
+ let _sessionManager;
23
+ /**
24
+ * Set the session manager instance.
25
+ *
26
+ * This should be called by extension-specific code during server initialization.
27
+ *
28
+ * @param manager The session manager implementation to inject
29
+ */
30
+ function setSessionManager(manager) {
31
+ _sessionManager = manager;
32
+ }
33
+ /**
34
+ * Get the session manager instance.
35
+ *
36
+ * @throws Error if no session manager has been set
37
+ * @returns The session manager instance
38
+ */
39
+ function getSessionManager() {
40
+ if (!_sessionManager) {
41
+ throw new Error('Session manager not initialized. Call setSessionManager() first.');
42
+ }
43
+ return _sessionManager;
44
+ }
45
+ /**
46
+ * Check if a session manager has been set.
47
+ *
48
+ * @returns True if a session manager is set, false otherwise
49
+ */
50
+ function hasSessionManager() {
51
+ return _sessionManager !== undefined;
52
+ }
53
+ //# sourceMappingURL=session-manager.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-manager.cjs","sourceRoot":"","sources":["../../src/mcp-server/session-manager.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;AA+SH,8CAEC;AAQD,8CAOC;AAOD,8CAEC;AA1CD;;;;;;GAMG;AACH,IAAI,eAA4C,CAAC;AAEjD;;;;;;GAMG;AACH,SAAgB,iBAAiB,CAAC,OAAwB;IACxD,eAAe,GAAG,OAAO,CAAC;AAC5B,CAAC;AAED;;;;;GAKG;AACH,SAAgB,iBAAiB;IAC/B,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CACb,kEAAkE,CACnE,CAAC;IACJ,CAAC;IACD,OAAO,eAAe,CAAC;AACzB,CAAC;AAED;;;;GAIG;AACH,SAAgB,iBAAiB;IAC/B,OAAO,eAAe,KAAK,SAAS,CAAC;AACvC,CAAC","sourcesContent":["/**\n * Generic Session Manager Interface for Browser Extension MCP Servers.\n *\n * This module defines the interface that concrete session managers must implement.\n * The interface abstracts browser session management, page tracking, and extension state.\n *\n * Extension-specific implementations (e.g., MetaMaskSessionManager) should implement\n * this interface and be injected into the core tool handlers.\n */\n\nimport type { Page, BrowserContext } from '@playwright/test';\n\nimport type { TabRole, SessionState, SessionMetadata } from './types';\nimport type { EnvironmentMode } from '../capabilities/context.js';\nimport type {\n ExtensionState,\n BuildCapability,\n FixtureCapability,\n ChainCapability,\n ContractSeedingCapability,\n StateSnapshotCapability,\n ScreenshotResult,\n} from '../capabilities/types.js';\n\n/**\n * Represents a tracked browser page with its role and URL.\n */\nexport type TrackedPage = {\n role: TabRole;\n url: string;\n page: Page;\n};\n\n/**\n * Configuration for launching a new browser session.\n */\nexport type SessionLaunchInput = {\n /** State initialization mode */\n stateMode?: 'default' | 'onboarding' | 'custom';\n /** Name of a preset fixture to use when stateMode is 'custom' */\n fixturePreset?: string;\n /** Custom fixture data when stateMode is 'custom' */\n fixture?: Record<string, unknown>;\n /** Goal description for this session (used in knowledge store) */\n goal?: string;\n /** Flow tags for categorizing this session */\n flowTags?: string[];\n /** Free-form tags for ad-hoc filtering */\n tags?: string[];\n /** Path to extension directory */\n extensionPath?: string;\n /** Whether to auto-build extension if not found */\n autoBuild?: boolean;\n /** Slow down actions for debugging (ms) */\n slowMo?: number;\n /** Port configuration */\n ports?: {\n anvil?: number;\n fixtureServer?: number;\n };\n /** Smart contracts to deploy on launch */\n seedContracts?: string[];\n};\n\n/**\n * Result of launching a new session.\n */\nexport type SessionLaunchResult = {\n sessionId: string;\n extensionId: string;\n state: ExtensionState;\n};\n\n/**\n * Screenshot options.\n */\nexport type SessionScreenshotOptions = {\n name: string;\n fullPage?: boolean;\n selector?: string;\n};\n\n/**\n * Interface for session manager implementations.\n *\n * This interface defines the contract that extension-specific session managers\n * must fulfill. Tool handlers depend on this interface, allowing them to work\n * with any compliant session manager implementation.\n */\nexport type ISessionManager = {\n // -----------------------------------------------------------------------------\n // Session Lifecycle\n // -----------------------------------------------------------------------------\n\n /**\n * Check if there is an active session.\n */\n hasActiveSession(): boolean;\n\n /**\n * Get the current session ID, or undefined if no session.\n */\n getSessionId(): string | undefined;\n\n /**\n * Get the current session state.\n */\n getSessionState(): SessionState | undefined;\n\n /**\n * Get the current session metadata.\n */\n getSessionMetadata(): SessionMetadata | undefined;\n\n /**\n * Launch a new browser session.\n *\n * @throws If a session is already active\n */\n launch(input: SessionLaunchInput): Promise<SessionLaunchResult>;\n\n /**\n * Clean up the current session (browser, services, etc.).\n *\n * @returns true if cleanup was performed, false if no session was active\n */\n cleanup(): Promise<boolean>;\n\n // -----------------------------------------------------------------------------\n // Page Management\n // -----------------------------------------------------------------------------\n\n /**\n * Get the current active page.\n *\n * @throws If no active session\n */\n getPage(): Page;\n\n /**\n * Set the active page for subsequent interactions.\n */\n setActivePage(page: Page): void;\n\n /**\n * Get all tracked pages in the current session.\n */\n getTrackedPages(): TrackedPage[];\n\n /**\n * Classify a page's role based on its URL.\n */\n classifyPageRole(page: Page, extensionId?: string): TabRole;\n\n /**\n * Get the browser context.\n *\n * @throws If no active session\n */\n getContext(): BrowserContext;\n\n // -----------------------------------------------------------------------------\n // Extension State\n // -----------------------------------------------------------------------------\n\n /**\n * Get the current extension state.\n *\n * @throws If no active session\n */\n getExtensionState(): Promise<ExtensionState>;\n\n // -----------------------------------------------------------------------------\n // A11y Reference Map\n // -----------------------------------------------------------------------------\n\n /**\n * Set the accessibility reference map (e1 -> selector).\n */\n setRefMap(map: Map<string, string>): void;\n\n /**\n * Get the current accessibility reference map.\n */\n getRefMap(): Map<string, string>;\n\n /**\n * Clear the accessibility reference map.\n */\n clearRefMap(): void;\n\n /**\n * Resolve an a11y ref (e.g., \"e5\") to a selector.\n */\n resolveA11yRef(ref: string): string | undefined;\n\n // -----------------------------------------------------------------------------\n // Navigation\n // -----------------------------------------------------------------------------\n\n /**\n * Navigate to the extension home page.\n */\n navigateToHome(): Promise<void>;\n\n /**\n * Navigate to the extension settings page.\n */\n navigateToSettings(): Promise<void>;\n\n /**\n * Navigate to an external URL (opens new tab).\n */\n navigateToUrl(url: string): Promise<Page>;\n\n /**\n * Navigate to the notification page.\n */\n navigateToNotification(): Promise<Page>;\n\n /**\n * Wait for a notification page to appear.\n */\n waitForNotificationPage(timeoutMs: number): Promise<Page>;\n\n // -----------------------------------------------------------------------------\n // Screenshots\n // -----------------------------------------------------------------------------\n\n /**\n * Take a screenshot of the current page.\n */\n screenshot(options: SessionScreenshotOptions): Promise<ScreenshotResult>;\n\n // -----------------------------------------------------------------------------\n // Capabilities (Optional - Extension-Specific)\n // -----------------------------------------------------------------------------\n\n /**\n * Get the build capability (if available).\n */\n getBuildCapability(): BuildCapability | undefined;\n\n /**\n * Get the fixture capability (if available).\n */\n getFixtureCapability(): FixtureCapability | undefined;\n\n /**\n * Get the chain capability (if available).\n */\n getChainCapability(): ChainCapability | undefined;\n\n /**\n * Get the contract seeding capability (if available).\n */\n getContractSeedingCapability(): ContractSeedingCapability | undefined;\n\n /**\n * Get the state snapshot capability (if available).\n */\n getStateSnapshotCapability(): StateSnapshotCapability | undefined;\n\n // -----------------------------------------------------------------------------\n // Environment Configuration\n // -----------------------------------------------------------------------------\n\n /**\n * Get the current environment mode.\n *\n * @returns 'e2e' for testing environment, 'prod' for production-like environment\n */\n getEnvironmentMode(): EnvironmentMode;\n\n /**\n * Set the current context (e2e or prod).\n *\n * @throws Error with code MM_CONTEXT_SWITCH_BLOCKED if session is active\n */\n setContext(context: 'e2e' | 'prod'): void;\n\n /**\n * Get current context information.\n */\n getContextInfo(): {\n currentContext: 'e2e' | 'prod';\n hasActiveSession: boolean;\n sessionId: string | null;\n capabilities: {\n available: string[];\n };\n canSwitchContext: boolean;\n };\n};\n\n/**\n * Session manager instance holder.\n *\n * In the core package, this is undefined by default.\n * Extension implementations should call setSessionManager() to inject\n * their concrete implementation.\n */\nlet _sessionManager: ISessionManager | undefined;\n\n/**\n * Set the session manager instance.\n *\n * This should be called by extension-specific code during server initialization.\n *\n * @param manager The session manager implementation to inject\n */\nexport function setSessionManager(manager: ISessionManager): void {\n _sessionManager = manager;\n}\n\n/**\n * Get the session manager instance.\n *\n * @throws Error if no session manager has been set\n * @returns The session manager instance\n */\nexport function getSessionManager(): ISessionManager {\n if (!_sessionManager) {\n throw new Error(\n 'Session manager not initialized. Call setSessionManager() first.',\n );\n }\n return _sessionManager;\n}\n\n/**\n * Check if a session manager has been set.\n *\n * @returns True if a session manager is set, false otherwise\n */\nexport function hasSessionManager(): boolean {\n return _sessionManager !== undefined;\n}\n"]}
@@ -0,0 +1,240 @@
1
+ /**
2
+ * Generic Session Manager Interface for Browser Extension MCP Servers.
3
+ *
4
+ * This module defines the interface that concrete session managers must implement.
5
+ * The interface abstracts browser session management, page tracking, and extension state.
6
+ *
7
+ * Extension-specific implementations (e.g., MetaMaskSessionManager) should implement
8
+ * this interface and be injected into the core tool handlers.
9
+ */
10
+ import type { Page, BrowserContext } from "@playwright/test";
11
+ import type { TabRole, SessionState, SessionMetadata } from "./types/index.cjs";
12
+ import type { EnvironmentMode } from "../capabilities/context.cjs";
13
+ import type { ExtensionState, BuildCapability, FixtureCapability, ChainCapability, ContractSeedingCapability, StateSnapshotCapability, ScreenshotResult } from "../capabilities/types.cjs";
14
+ /**
15
+ * Represents a tracked browser page with its role and URL.
16
+ */
17
+ export type TrackedPage = {
18
+ role: TabRole;
19
+ url: string;
20
+ page: Page;
21
+ };
22
+ /**
23
+ * Configuration for launching a new browser session.
24
+ */
25
+ export type SessionLaunchInput = {
26
+ /** State initialization mode */
27
+ stateMode?: 'default' | 'onboarding' | 'custom';
28
+ /** Name of a preset fixture to use when stateMode is 'custom' */
29
+ fixturePreset?: string;
30
+ /** Custom fixture data when stateMode is 'custom' */
31
+ fixture?: Record<string, unknown>;
32
+ /** Goal description for this session (used in knowledge store) */
33
+ goal?: string;
34
+ /** Flow tags for categorizing this session */
35
+ flowTags?: string[];
36
+ /** Free-form tags for ad-hoc filtering */
37
+ tags?: string[];
38
+ /** Path to extension directory */
39
+ extensionPath?: string;
40
+ /** Whether to auto-build extension if not found */
41
+ autoBuild?: boolean;
42
+ /** Slow down actions for debugging (ms) */
43
+ slowMo?: number;
44
+ /** Port configuration */
45
+ ports?: {
46
+ anvil?: number;
47
+ fixtureServer?: number;
48
+ };
49
+ /** Smart contracts to deploy on launch */
50
+ seedContracts?: string[];
51
+ };
52
+ /**
53
+ * Result of launching a new session.
54
+ */
55
+ export type SessionLaunchResult = {
56
+ sessionId: string;
57
+ extensionId: string;
58
+ state: ExtensionState;
59
+ };
60
+ /**
61
+ * Screenshot options.
62
+ */
63
+ export type SessionScreenshotOptions = {
64
+ name: string;
65
+ fullPage?: boolean;
66
+ selector?: string;
67
+ };
68
+ /**
69
+ * Interface for session manager implementations.
70
+ *
71
+ * This interface defines the contract that extension-specific session managers
72
+ * must fulfill. Tool handlers depend on this interface, allowing them to work
73
+ * with any compliant session manager implementation.
74
+ */
75
+ export type ISessionManager = {
76
+ /**
77
+ * Check if there is an active session.
78
+ */
79
+ hasActiveSession(): boolean;
80
+ /**
81
+ * Get the current session ID, or undefined if no session.
82
+ */
83
+ getSessionId(): string | undefined;
84
+ /**
85
+ * Get the current session state.
86
+ */
87
+ getSessionState(): SessionState | undefined;
88
+ /**
89
+ * Get the current session metadata.
90
+ */
91
+ getSessionMetadata(): SessionMetadata | undefined;
92
+ /**
93
+ * Launch a new browser session.
94
+ *
95
+ * @throws If a session is already active
96
+ */
97
+ launch(input: SessionLaunchInput): Promise<SessionLaunchResult>;
98
+ /**
99
+ * Clean up the current session (browser, services, etc.).
100
+ *
101
+ * @returns true if cleanup was performed, false if no session was active
102
+ */
103
+ cleanup(): Promise<boolean>;
104
+ /**
105
+ * Get the current active page.
106
+ *
107
+ * @throws If no active session
108
+ */
109
+ getPage(): Page;
110
+ /**
111
+ * Set the active page for subsequent interactions.
112
+ */
113
+ setActivePage(page: Page): void;
114
+ /**
115
+ * Get all tracked pages in the current session.
116
+ */
117
+ getTrackedPages(): TrackedPage[];
118
+ /**
119
+ * Classify a page's role based on its URL.
120
+ */
121
+ classifyPageRole(page: Page, extensionId?: string): TabRole;
122
+ /**
123
+ * Get the browser context.
124
+ *
125
+ * @throws If no active session
126
+ */
127
+ getContext(): BrowserContext;
128
+ /**
129
+ * Get the current extension state.
130
+ *
131
+ * @throws If no active session
132
+ */
133
+ getExtensionState(): Promise<ExtensionState>;
134
+ /**
135
+ * Set the accessibility reference map (e1 -> selector).
136
+ */
137
+ setRefMap(map: Map<string, string>): void;
138
+ /**
139
+ * Get the current accessibility reference map.
140
+ */
141
+ getRefMap(): Map<string, string>;
142
+ /**
143
+ * Clear the accessibility reference map.
144
+ */
145
+ clearRefMap(): void;
146
+ /**
147
+ * Resolve an a11y ref (e.g., "e5") to a selector.
148
+ */
149
+ resolveA11yRef(ref: string): string | undefined;
150
+ /**
151
+ * Navigate to the extension home page.
152
+ */
153
+ navigateToHome(): Promise<void>;
154
+ /**
155
+ * Navigate to the extension settings page.
156
+ */
157
+ navigateToSettings(): Promise<void>;
158
+ /**
159
+ * Navigate to an external URL (opens new tab).
160
+ */
161
+ navigateToUrl(url: string): Promise<Page>;
162
+ /**
163
+ * Navigate to the notification page.
164
+ */
165
+ navigateToNotification(): Promise<Page>;
166
+ /**
167
+ * Wait for a notification page to appear.
168
+ */
169
+ waitForNotificationPage(timeoutMs: number): Promise<Page>;
170
+ /**
171
+ * Take a screenshot of the current page.
172
+ */
173
+ screenshot(options: SessionScreenshotOptions): Promise<ScreenshotResult>;
174
+ /**
175
+ * Get the build capability (if available).
176
+ */
177
+ getBuildCapability(): BuildCapability | undefined;
178
+ /**
179
+ * Get the fixture capability (if available).
180
+ */
181
+ getFixtureCapability(): FixtureCapability | undefined;
182
+ /**
183
+ * Get the chain capability (if available).
184
+ */
185
+ getChainCapability(): ChainCapability | undefined;
186
+ /**
187
+ * Get the contract seeding capability (if available).
188
+ */
189
+ getContractSeedingCapability(): ContractSeedingCapability | undefined;
190
+ /**
191
+ * Get the state snapshot capability (if available).
192
+ */
193
+ getStateSnapshotCapability(): StateSnapshotCapability | undefined;
194
+ /**
195
+ * Get the current environment mode.
196
+ *
197
+ * @returns 'e2e' for testing environment, 'prod' for production-like environment
198
+ */
199
+ getEnvironmentMode(): EnvironmentMode;
200
+ /**
201
+ * Set the current context (e2e or prod).
202
+ *
203
+ * @throws Error with code MM_CONTEXT_SWITCH_BLOCKED if session is active
204
+ */
205
+ setContext(context: 'e2e' | 'prod'): void;
206
+ /**
207
+ * Get current context information.
208
+ */
209
+ getContextInfo(): {
210
+ currentContext: 'e2e' | 'prod';
211
+ hasActiveSession: boolean;
212
+ sessionId: string | null;
213
+ capabilities: {
214
+ available: string[];
215
+ };
216
+ canSwitchContext: boolean;
217
+ };
218
+ };
219
+ /**
220
+ * Set the session manager instance.
221
+ *
222
+ * This should be called by extension-specific code during server initialization.
223
+ *
224
+ * @param manager The session manager implementation to inject
225
+ */
226
+ export declare function setSessionManager(manager: ISessionManager): void;
227
+ /**
228
+ * Get the session manager instance.
229
+ *
230
+ * @throws Error if no session manager has been set
231
+ * @returns The session manager instance
232
+ */
233
+ export declare function getSessionManager(): ISessionManager;
234
+ /**
235
+ * Check if a session manager has been set.
236
+ *
237
+ * @returns True if a session manager is set, false otherwise
238
+ */
239
+ export declare function hasSessionManager(): boolean;
240
+ //# sourceMappingURL=session-manager.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-manager.d.cts","sourceRoot":"","sources":["../../src/mcp-server/session-manager.ts"],"names":[],"mappings":"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"}