@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,89 @@
1
+ /**
2
+ * Shared mock factory utilities for unit testing.
3
+ *
4
+ * Provides factory functions that return fresh mock instances following MetaMask testing guidelines:
5
+ * - Each factory call returns NEW object instances (test isolation)
6
+ * - Each factory creates fresh vi.fn() mocks (never reused)
7
+ * - Factories accept options for customization
8
+ * - Sensible defaults so most tests need no options
9
+ */
10
+ import type { ExtensionState } from "../../capabilities/types.cjs";
11
+ import type { KnowledgeStore } from "../knowledge-store.cjs";
12
+ import type { TrackedPage, SessionLaunchResult } from "../session-manager.cjs";
13
+ import type { SessionState } from "../types/session.cjs";
14
+ import type { SessionMetadata } from "../types/step-record.cjs";
15
+ /**
16
+ * Options for customizing mock session manager behavior
17
+ */
18
+ export type MockSessionManagerOptions = {
19
+ hasActive?: boolean;
20
+ sessionId?: string;
21
+ sessionState?: SessionState;
22
+ sessionMetadata?: SessionMetadata;
23
+ launchResult?: SessionLaunchResult;
24
+ trackedPages?: TrackedPage[];
25
+ extensionState?: ExtensionState;
26
+ refMap?: Map<string, string>;
27
+ environmentMode?: 'e2e' | 'prod';
28
+ };
29
+ /**
30
+ * Options for customizing mock knowledge store behavior
31
+ */
32
+ export type MockKnowledgeStoreOptions = {
33
+ lastSteps?: Record<string, unknown>[];
34
+ searchResults?: Record<string, unknown>[];
35
+ sessionSummary?: Record<string, unknown>;
36
+ sessions?: Record<string, unknown>[];
37
+ };
38
+ /**
39
+ * Create a fresh mock ISessionManager instance.
40
+ *
41
+ * Each call returns a NEW object with fresh vi.fn() mocks.
42
+ * Follows the pattern from session-manager.test.ts:15-48.
43
+ *
44
+ * @param options - Customize mock behavior
45
+ * @returns Fresh ISessionManager mock
46
+ */
47
+ export declare function createMockSessionManager(options?: MockSessionManagerOptions): {
48
+ hasActiveSession: import("vitest").Mock<(...args: any[]) => any>;
49
+ getSessionId: import("vitest").Mock<(...args: any[]) => any>;
50
+ getSessionState: import("vitest").Mock<(...args: any[]) => any>;
51
+ getSessionMetadata: import("vitest").Mock<(...args: any[]) => any>;
52
+ launch: import("vitest").Mock<(...args: any[]) => any>;
53
+ cleanup: import("vitest").Mock<(...args: any[]) => any>;
54
+ getPage: import("vitest").Mock<(...args: any[]) => any>;
55
+ setActivePage: import("vitest").Mock<(...args: any[]) => any>;
56
+ getTrackedPages: import("vitest").Mock<(...args: any[]) => any>;
57
+ classifyPageRole: import("vitest").Mock<(...args: any[]) => any>;
58
+ getContext: import("vitest").Mock<(...args: any[]) => any>;
59
+ getExtensionState: import("vitest").Mock<(...args: any[]) => any>;
60
+ setRefMap: import("vitest").Mock<(...args: any[]) => any>;
61
+ getRefMap: import("vitest").Mock<(...args: any[]) => any>;
62
+ clearRefMap: import("vitest").Mock<(...args: any[]) => any>;
63
+ resolveA11yRef: import("vitest").Mock<(...args: any[]) => any>;
64
+ navigateToHome: import("vitest").Mock<(...args: any[]) => any>;
65
+ navigateToSettings: import("vitest").Mock<(...args: any[]) => any>;
66
+ navigateToUrl: import("vitest").Mock<(...args: any[]) => any>;
67
+ navigateToNotification: import("vitest").Mock<(...args: any[]) => any>;
68
+ waitForNotificationPage: import("vitest").Mock<(...args: any[]) => any>;
69
+ screenshot: import("vitest").Mock<(...args: any[]) => any>;
70
+ getBuildCapability: import("vitest").Mock<(...args: any[]) => any>;
71
+ getFixtureCapability: import("vitest").Mock<(...args: any[]) => any>;
72
+ getChainCapability: import("vitest").Mock<(...args: any[]) => any>;
73
+ getContractSeedingCapability: import("vitest").Mock<(...args: any[]) => any>;
74
+ getStateSnapshotCapability: import("vitest").Mock<(...args: any[]) => any>;
75
+ getEnvironmentMode: import("vitest").Mock<(...args: any[]) => any>;
76
+ setContext: import("vitest").Mock<(...args: any[]) => any>;
77
+ getContextInfo: import("vitest").Mock<(...args: any[]) => any>;
78
+ };
79
+ /**
80
+ * Create a fresh mock KnowledgeStore instance.
81
+ *
82
+ * Returns an in-memory mock with sensible defaults.
83
+ * Each call creates fresh vi.fn() mocks.
84
+ *
85
+ * @param options - Customize mock behavior
86
+ * @returns Fresh KnowledgeStore mock
87
+ */
88
+ export declare function createMockKnowledgeStore(options?: MockKnowledgeStoreOptions): Partial<KnowledgeStore>;
89
+ //# sourceMappingURL=mock-factories.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mock-factories.d.cts","sourceRoot":"","sources":["../../../src/mcp-server/test-utils/mock-factories.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,KAAK,EAAE,cAAc,EAAE,qCAAoC;AAClE,OAAO,KAAK,EAAE,cAAc,EAAE,+BAA8B;AAC5D,OAAO,KAAK,EAAE,WAAW,EAAE,mBAAmB,EAAE,+BAA8B;AAC9E,OAAO,KAAK,EAAE,YAAY,EAAE,6BAA4B;AACxD,OAAO,KAAK,EAAE,eAAe,EAAE,iCAAgC;AAE/D;;GAEG;AACH,MAAM,MAAM,yBAAyB,GAAG;IACtC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,YAAY,CAAC,EAAE,mBAAmB,CAAC;IACnC,YAAY,CAAC,EAAE,WAAW,EAAE,CAAC;IAC7B,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,MAAM,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,eAAe,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;CAClC,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,yBAAyB,GAAG;IACtC,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IACtC,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IAC1C,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACzC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;CACtC,CAAC;AAEF;;;;;;;;GAQG;AACH,wBAAgB,wBAAwB,CACtC,OAAO,GAAE,yBAA8B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA6FxC;AAED;;;;;;;;GAQG;AACH,wBAAgB,wBAAwB,CACtC,OAAO,GAAE,yBAA8B,GACtC,OAAO,CAAC,cAAc,CAAC,CAgBzB"}
@@ -0,0 +1,89 @@
1
+ /**
2
+ * Shared mock factory utilities for unit testing.
3
+ *
4
+ * Provides factory functions that return fresh mock instances following MetaMask testing guidelines:
5
+ * - Each factory call returns NEW object instances (test isolation)
6
+ * - Each factory creates fresh vi.fn() mocks (never reused)
7
+ * - Factories accept options for customization
8
+ * - Sensible defaults so most tests need no options
9
+ */
10
+ import type { ExtensionState } from "../../capabilities/types.mjs";
11
+ import type { KnowledgeStore } from "../knowledge-store.mjs";
12
+ import type { TrackedPage, SessionLaunchResult } from "../session-manager.mjs";
13
+ import type { SessionState } from "../types/session.mjs";
14
+ import type { SessionMetadata } from "../types/step-record.mjs";
15
+ /**
16
+ * Options for customizing mock session manager behavior
17
+ */
18
+ export type MockSessionManagerOptions = {
19
+ hasActive?: boolean;
20
+ sessionId?: string;
21
+ sessionState?: SessionState;
22
+ sessionMetadata?: SessionMetadata;
23
+ launchResult?: SessionLaunchResult;
24
+ trackedPages?: TrackedPage[];
25
+ extensionState?: ExtensionState;
26
+ refMap?: Map<string, string>;
27
+ environmentMode?: 'e2e' | 'prod';
28
+ };
29
+ /**
30
+ * Options for customizing mock knowledge store behavior
31
+ */
32
+ export type MockKnowledgeStoreOptions = {
33
+ lastSteps?: Record<string, unknown>[];
34
+ searchResults?: Record<string, unknown>[];
35
+ sessionSummary?: Record<string, unknown>;
36
+ sessions?: Record<string, unknown>[];
37
+ };
38
+ /**
39
+ * Create a fresh mock ISessionManager instance.
40
+ *
41
+ * Each call returns a NEW object with fresh vi.fn() mocks.
42
+ * Follows the pattern from session-manager.test.ts:15-48.
43
+ *
44
+ * @param options - Customize mock behavior
45
+ * @returns Fresh ISessionManager mock
46
+ */
47
+ export declare function createMockSessionManager(options?: MockSessionManagerOptions): {
48
+ hasActiveSession: import("vitest").Mock<(...args: any[]) => any>;
49
+ getSessionId: import("vitest").Mock<(...args: any[]) => any>;
50
+ getSessionState: import("vitest").Mock<(...args: any[]) => any>;
51
+ getSessionMetadata: import("vitest").Mock<(...args: any[]) => any>;
52
+ launch: import("vitest").Mock<(...args: any[]) => any>;
53
+ cleanup: import("vitest").Mock<(...args: any[]) => any>;
54
+ getPage: import("vitest").Mock<(...args: any[]) => any>;
55
+ setActivePage: import("vitest").Mock<(...args: any[]) => any>;
56
+ getTrackedPages: import("vitest").Mock<(...args: any[]) => any>;
57
+ classifyPageRole: import("vitest").Mock<(...args: any[]) => any>;
58
+ getContext: import("vitest").Mock<(...args: any[]) => any>;
59
+ getExtensionState: import("vitest").Mock<(...args: any[]) => any>;
60
+ setRefMap: import("vitest").Mock<(...args: any[]) => any>;
61
+ getRefMap: import("vitest").Mock<(...args: any[]) => any>;
62
+ clearRefMap: import("vitest").Mock<(...args: any[]) => any>;
63
+ resolveA11yRef: import("vitest").Mock<(...args: any[]) => any>;
64
+ navigateToHome: import("vitest").Mock<(...args: any[]) => any>;
65
+ navigateToSettings: import("vitest").Mock<(...args: any[]) => any>;
66
+ navigateToUrl: import("vitest").Mock<(...args: any[]) => any>;
67
+ navigateToNotification: import("vitest").Mock<(...args: any[]) => any>;
68
+ waitForNotificationPage: import("vitest").Mock<(...args: any[]) => any>;
69
+ screenshot: import("vitest").Mock<(...args: any[]) => any>;
70
+ getBuildCapability: import("vitest").Mock<(...args: any[]) => any>;
71
+ getFixtureCapability: import("vitest").Mock<(...args: any[]) => any>;
72
+ getChainCapability: import("vitest").Mock<(...args: any[]) => any>;
73
+ getContractSeedingCapability: import("vitest").Mock<(...args: any[]) => any>;
74
+ getStateSnapshotCapability: import("vitest").Mock<(...args: any[]) => any>;
75
+ getEnvironmentMode: import("vitest").Mock<(...args: any[]) => any>;
76
+ setContext: import("vitest").Mock<(...args: any[]) => any>;
77
+ getContextInfo: import("vitest").Mock<(...args: any[]) => any>;
78
+ };
79
+ /**
80
+ * Create a fresh mock KnowledgeStore instance.
81
+ *
82
+ * Returns an in-memory mock with sensible defaults.
83
+ * Each call creates fresh vi.fn() mocks.
84
+ *
85
+ * @param options - Customize mock behavior
86
+ * @returns Fresh KnowledgeStore mock
87
+ */
88
+ export declare function createMockKnowledgeStore(options?: MockKnowledgeStoreOptions): Partial<KnowledgeStore>;
89
+ //# sourceMappingURL=mock-factories.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mock-factories.d.mts","sourceRoot":"","sources":["../../../src/mcp-server/test-utils/mock-factories.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,KAAK,EAAE,cAAc,EAAE,qCAAoC;AAClE,OAAO,KAAK,EAAE,cAAc,EAAE,+BAA8B;AAC5D,OAAO,KAAK,EAAE,WAAW,EAAE,mBAAmB,EAAE,+BAA8B;AAC9E,OAAO,KAAK,EAAE,YAAY,EAAE,6BAA4B;AACxD,OAAO,KAAK,EAAE,eAAe,EAAE,iCAAgC;AAE/D;;GAEG;AACH,MAAM,MAAM,yBAAyB,GAAG;IACtC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,YAAY,CAAC,EAAE,mBAAmB,CAAC;IACnC,YAAY,CAAC,EAAE,WAAW,EAAE,CAAC;IAC7B,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,MAAM,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,eAAe,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;CAClC,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,yBAAyB,GAAG;IACtC,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IACtC,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IAC1C,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACzC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;CACtC,CAAC;AAEF;;;;;;;;GAQG;AACH,wBAAgB,wBAAwB,CACtC,OAAO,GAAE,yBAA8B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA6FxC;AAED;;;;;;;;GAQG;AACH,wBAAgB,wBAAwB,CACtC,OAAO,GAAE,yBAA8B,GACtC,OAAO,CAAC,cAAc,CAAC,CAgBzB"}
@@ -0,0 +1,125 @@
1
+ /**
2
+ * Shared mock factory utilities for unit testing.
3
+ *
4
+ * Provides factory functions that return fresh mock instances following MetaMask testing guidelines:
5
+ * - Each factory call returns NEW object instances (test isolation)
6
+ * - Each factory creates fresh vi.fn() mocks (never reused)
7
+ * - Factories accept options for customization
8
+ * - Sensible defaults so most tests need no options
9
+ */
10
+ import { vi } from "vitest";
11
+ /**
12
+ * Create a fresh mock ISessionManager instance.
13
+ *
14
+ * Each call returns a NEW object with fresh vi.fn() mocks.
15
+ * Follows the pattern from session-manager.test.ts:15-48.
16
+ *
17
+ * @param options - Customize mock behavior
18
+ * @returns Fresh ISessionManager mock
19
+ */
20
+ export function createMockSessionManager(options = {}) {
21
+ return {
22
+ // Session Lifecycle
23
+ hasActiveSession: vi.fn().mockReturnValue(options.hasActive ?? false),
24
+ getSessionId: vi.fn().mockReturnValue(options.sessionId ?? undefined),
25
+ getSessionState: vi.fn().mockReturnValue(options.sessionState ?? undefined),
26
+ getSessionMetadata: vi
27
+ .fn()
28
+ .mockReturnValue(options.sessionMetadata ?? undefined),
29
+ launch: vi.fn().mockResolvedValue(options.launchResult ?? {
30
+ sessionId: 'test-session-123',
31
+ extensionId: 'ext-123',
32
+ state: {
33
+ isLoaded: true,
34
+ currentUrl: 'chrome-extension://ext-123/home.html',
35
+ extensionId: 'ext-123',
36
+ isUnlocked: false,
37
+ currentScreen: 'home',
38
+ accountAddress: null,
39
+ networkName: null,
40
+ chainId: null,
41
+ balance: null,
42
+ },
43
+ }),
44
+ cleanup: vi.fn().mockResolvedValue(true),
45
+ // Page Management
46
+ getPage: vi.fn(),
47
+ setActivePage: vi.fn(),
48
+ getTrackedPages: vi.fn().mockReturnValue(options.trackedPages ?? []),
49
+ classifyPageRole: vi.fn().mockReturnValue('extension'),
50
+ getContext: vi.fn(),
51
+ // Extension State
52
+ getExtensionState: vi.fn().mockResolvedValue(options.extensionState ?? {
53
+ isLoaded: true,
54
+ currentUrl: 'chrome-extension://ext-123/home.html',
55
+ extensionId: 'ext-123',
56
+ isUnlocked: false,
57
+ currentScreen: 'home',
58
+ accountAddress: null,
59
+ networkName: null,
60
+ chainId: null,
61
+ balance: null,
62
+ }),
63
+ // A11y Reference Map
64
+ setRefMap: vi.fn(),
65
+ getRefMap: vi.fn().mockReturnValue(options.refMap ?? new Map()),
66
+ clearRefMap: vi.fn(),
67
+ resolveA11yRef: vi.fn(),
68
+ // Navigation
69
+ navigateToHome: vi.fn().mockResolvedValue(undefined),
70
+ navigateToSettings: vi.fn().mockResolvedValue(undefined),
71
+ navigateToUrl: vi.fn(),
72
+ navigateToNotification: vi.fn(),
73
+ waitForNotificationPage: vi.fn(),
74
+ // Screenshots
75
+ screenshot: vi.fn().mockResolvedValue({
76
+ path: '/path/to/screenshot.png',
77
+ width: 1280,
78
+ height: 720,
79
+ }),
80
+ // Capabilities
81
+ getBuildCapability: vi.fn().mockReturnValue(undefined),
82
+ getFixtureCapability: vi.fn().mockReturnValue(undefined),
83
+ getChainCapability: vi.fn().mockReturnValue(undefined),
84
+ getContractSeedingCapability: vi.fn().mockReturnValue(undefined),
85
+ getStateSnapshotCapability: vi.fn().mockReturnValue(undefined),
86
+ // Environment
87
+ getEnvironmentMode: vi
88
+ .fn()
89
+ .mockReturnValue(options.environmentMode ?? 'e2e'),
90
+ // Context
91
+ setContext: vi.fn().mockReturnValue(undefined),
92
+ getContextInfo: vi.fn().mockReturnValue({
93
+ currentContext: options.environmentMode ?? 'e2e',
94
+ hasActiveSession: options.hasActive ?? false,
95
+ sessionId: options.sessionId ?? null,
96
+ capabilities: { available: [] },
97
+ canSwitchContext: !(options.hasActive ?? false),
98
+ }),
99
+ };
100
+ }
101
+ /**
102
+ * Create a fresh mock KnowledgeStore instance.
103
+ *
104
+ * Returns an in-memory mock with sensible defaults.
105
+ * Each call creates fresh vi.fn() mocks.
106
+ *
107
+ * @param options - Customize mock behavior
108
+ * @returns Fresh KnowledgeStore mock
109
+ */
110
+ export function createMockKnowledgeStore(options = {}) {
111
+ return {
112
+ recordStep: vi.fn().mockResolvedValue(undefined),
113
+ getLastSteps: vi.fn().mockResolvedValue(options.lastSteps ?? []),
114
+ searchSteps: vi.fn().mockResolvedValue(options.searchResults ?? []),
115
+ summarizeSession: vi.fn().mockResolvedValue(options.sessionSummary ?? {
116
+ sessionId: 'test-session-123',
117
+ stepCount: 0,
118
+ recipe: [],
119
+ }),
120
+ listSessions: vi.fn().mockResolvedValue(options.sessions ?? []),
121
+ generatePriorKnowledge: vi.fn().mockResolvedValue(undefined),
122
+ writeSessionMetadata: vi.fn().mockResolvedValue('test-session-123'),
123
+ };
124
+ }
125
+ //# sourceMappingURL=mock-factories.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mock-factories.mjs","sourceRoot":"","sources":["../../../src/mcp-server/test-utils/mock-factories.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Shared mock factory utilities for unit testing.\n *\n * Provides factory functions that return fresh mock instances following MetaMask testing guidelines:\n * - Each factory call returns NEW object instances (test isolation)\n * - Each factory creates fresh vi.fn() mocks (never reused)\n * - Factories accept options for customization\n * - Sensible defaults so most tests need no options\n */\n\nimport { vi } from 'vitest';\n\nimport type { ExtensionState } from '../../capabilities/types.js';\nimport type { KnowledgeStore } from '../knowledge-store.js';\nimport type { TrackedPage, SessionLaunchResult } from '../session-manager.js';\nimport type { SessionState } from '../types/session.js';\nimport type { SessionMetadata } from '../types/step-record.js';\n\n/**\n * Options for customizing mock session manager behavior\n */\nexport type MockSessionManagerOptions = {\n hasActive?: boolean;\n sessionId?: string;\n sessionState?: SessionState;\n sessionMetadata?: SessionMetadata;\n launchResult?: SessionLaunchResult;\n trackedPages?: TrackedPage[];\n extensionState?: ExtensionState;\n refMap?: Map<string, string>;\n environmentMode?: 'e2e' | 'prod';\n};\n\n/**\n * Options for customizing mock knowledge store behavior\n */\nexport type MockKnowledgeStoreOptions = {\n lastSteps?: Record<string, unknown>[];\n searchResults?: Record<string, unknown>[];\n sessionSummary?: Record<string, unknown>;\n sessions?: Record<string, unknown>[];\n};\n\n/**\n * Create a fresh mock ISessionManager instance.\n *\n * Each call returns a NEW object with fresh vi.fn() mocks.\n * Follows the pattern from session-manager.test.ts:15-48.\n *\n * @param options - Customize mock behavior\n * @returns Fresh ISessionManager mock\n */\nexport function createMockSessionManager(\n options: MockSessionManagerOptions = {},\n) {\n return {\n // Session Lifecycle\n hasActiveSession: vi.fn().mockReturnValue(options.hasActive ?? false),\n getSessionId: vi.fn().mockReturnValue(options.sessionId ?? undefined),\n getSessionState: vi.fn().mockReturnValue(options.sessionState ?? undefined),\n getSessionMetadata: vi\n .fn()\n .mockReturnValue(options.sessionMetadata ?? undefined),\n launch: vi.fn().mockResolvedValue(\n options.launchResult ?? {\n sessionId: 'test-session-123',\n extensionId: 'ext-123',\n state: {\n isLoaded: true,\n currentUrl: 'chrome-extension://ext-123/home.html',\n extensionId: 'ext-123',\n isUnlocked: false,\n currentScreen: 'home',\n accountAddress: null,\n networkName: null,\n chainId: null,\n balance: null,\n },\n },\n ),\n cleanup: vi.fn().mockResolvedValue(true),\n\n // Page Management\n getPage: vi.fn(),\n setActivePage: vi.fn(),\n getTrackedPages: vi.fn().mockReturnValue(options.trackedPages ?? []),\n classifyPageRole: vi.fn().mockReturnValue('extension'),\n getContext: vi.fn(),\n\n // Extension State\n getExtensionState: vi.fn().mockResolvedValue(\n options.extensionState ?? {\n isLoaded: true,\n currentUrl: 'chrome-extension://ext-123/home.html',\n extensionId: 'ext-123',\n isUnlocked: false,\n currentScreen: 'home',\n accountAddress: null,\n networkName: null,\n chainId: null,\n balance: null,\n },\n ),\n\n // A11y Reference Map\n setRefMap: vi.fn(),\n getRefMap: vi.fn().mockReturnValue(options.refMap ?? new Map()),\n clearRefMap: vi.fn(),\n resolveA11yRef: vi.fn(),\n\n // Navigation\n navigateToHome: vi.fn().mockResolvedValue(undefined),\n navigateToSettings: vi.fn().mockResolvedValue(undefined),\n navigateToUrl: vi.fn(),\n navigateToNotification: vi.fn(),\n waitForNotificationPage: vi.fn(),\n\n // Screenshots\n screenshot: vi.fn().mockResolvedValue({\n path: '/path/to/screenshot.png',\n width: 1280,\n height: 720,\n }),\n\n // Capabilities\n getBuildCapability: vi.fn().mockReturnValue(undefined),\n getFixtureCapability: vi.fn().mockReturnValue(undefined),\n getChainCapability: vi.fn().mockReturnValue(undefined),\n getContractSeedingCapability: vi.fn().mockReturnValue(undefined),\n getStateSnapshotCapability: vi.fn().mockReturnValue(undefined),\n\n // Environment\n getEnvironmentMode: vi\n .fn()\n .mockReturnValue(options.environmentMode ?? 'e2e'),\n\n // Context\n setContext: vi.fn().mockReturnValue(undefined),\n getContextInfo: vi.fn().mockReturnValue({\n currentContext: options.environmentMode ?? 'e2e',\n hasActiveSession: options.hasActive ?? false,\n sessionId: options.sessionId ?? null,\n capabilities: { available: [] },\n canSwitchContext: !(options.hasActive ?? false),\n }),\n };\n}\n\n/**\n * Create a fresh mock KnowledgeStore instance.\n *\n * Returns an in-memory mock with sensible defaults.\n * Each call creates fresh vi.fn() mocks.\n *\n * @param options - Customize mock behavior\n * @returns Fresh KnowledgeStore mock\n */\nexport function createMockKnowledgeStore(\n options: MockKnowledgeStoreOptions = {},\n): Partial<KnowledgeStore> {\n return {\n recordStep: vi.fn().mockResolvedValue(undefined),\n getLastSteps: vi.fn().mockResolvedValue(options.lastSteps ?? []),\n searchSteps: vi.fn().mockResolvedValue(options.searchResults ?? []),\n summarizeSession: vi.fn().mockResolvedValue(\n options.sessionSummary ?? {\n sessionId: 'test-session-123',\n stepCount: 0,\n recipe: [],\n },\n ),\n listSessions: vi.fn().mockResolvedValue(options.sessions ?? []),\n generatePriorKnowledge: vi.fn().mockResolvedValue(undefined),\n writeSessionMetadata: vi.fn().mockResolvedValue('test-session-123'),\n };\n}\n"]}
@@ -0,0 +1,205 @@
1
+ "use strict";
2
+ /**
3
+ * Playwright mock factories for unit testing.
4
+ *
5
+ * Provides factory functions that return fresh mock Playwright objects:
6
+ * - createMockPage() - Mock Playwright Page with all used methods
7
+ * - createMockLocator() - Mock Playwright Locator with chainable methods
8
+ * - createMockBrowserContext() - Mock BrowserContext
9
+ *
10
+ * Each factory call returns NEW instances with fresh vi.fn() mocks.
11
+ */
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.createMockLocator = createMockLocator;
14
+ exports.createMockPage = createMockPage;
15
+ exports.createMockBrowserContext = createMockBrowserContext;
16
+ const vitest_1 = require("vitest");
17
+ /**
18
+ * Create a fresh mock Playwright Locator instance.
19
+ *
20
+ * Includes all methods used in tool handlers:
21
+ * - click() - async mock
22
+ * - fill(text) - async mock
23
+ * - isVisible() - async mock
24
+ * - getAttribute(name) - async mock
25
+ * - textContent() - async mock
26
+ * - all() - async mock
27
+ * - first() - returns mock locator
28
+ * - nth(index) - returns mock locator
29
+ *
30
+ * Methods are chainable where appropriate.
31
+ *
32
+ * @param options - Customize mock behavior
33
+ * @returns Fresh Locator mock
34
+ */
35
+ function createMockLocator(options = {}) {
36
+ const mockLocator = {
37
+ click: vitest_1.vi.fn().mockResolvedValue(options.clickMock?.() ?? undefined),
38
+ fill: vitest_1.vi.fn().mockResolvedValue(options.fillMock?.('') ?? undefined),
39
+ isVisible: vitest_1.vi.fn().mockResolvedValue(options.isVisibleMock?.() ?? true),
40
+ getAttribute: vitest_1.vi
41
+ .fn()
42
+ .mockResolvedValue(options.getAttributeMock?.('') ?? null),
43
+ textContent: vitest_1.vi.fn().mockResolvedValue(options.textContentMock?.() ?? null),
44
+ all: vitest_1.vi.fn().mockResolvedValue(options.allMock?.() ?? []),
45
+ clear: vitest_1.vi.fn().mockResolvedValue(undefined),
46
+ check: vitest_1.vi.fn().mockResolvedValue(undefined),
47
+ uncheck: vitest_1.vi.fn().mockResolvedValue(undefined),
48
+ hover: vitest_1.vi.fn().mockResolvedValue(undefined),
49
+ focus: vitest_1.vi.fn().mockResolvedValue(undefined),
50
+ blur: vitest_1.vi.fn().mockResolvedValue(undefined),
51
+ type: vitest_1.vi.fn().mockResolvedValue(undefined),
52
+ press: vitest_1.vi.fn().mockResolvedValue(undefined),
53
+ selectOption: vitest_1.vi.fn().mockResolvedValue([]),
54
+ selectText: vitest_1.vi.fn().mockResolvedValue(undefined),
55
+ setInputFiles: vitest_1.vi.fn().mockResolvedValue(undefined),
56
+ setChecked: vitest_1.vi.fn().mockResolvedValue(undefined),
57
+ dragTo: vitest_1.vi.fn().mockResolvedValue(undefined),
58
+ screenshot: vitest_1.vi.fn().mockResolvedValue(Buffer.from('')),
59
+ scrollIntoViewIfNeeded: vitest_1.vi.fn().mockResolvedValue(undefined),
60
+ waitFor: vitest_1.vi.fn().mockResolvedValue(undefined),
61
+ evaluate: vitest_1.vi.fn().mockResolvedValue(undefined),
62
+ evaluateAll: vitest_1.vi.fn().mockResolvedValue([]),
63
+ evaluateHandle: vitest_1.vi.fn().mockResolvedValue({}),
64
+ count: vitest_1.vi.fn().mockResolvedValue(1),
65
+ boundingBox: vitest_1.vi.fn().mockResolvedValue(null),
66
+ elementHandle: vitest_1.vi.fn().mockResolvedValue(null),
67
+ elementHandles: vitest_1.vi.fn().mockResolvedValue([]),
68
+ isChecked: vitest_1.vi.fn().mockResolvedValue(false),
69
+ isDisabled: vitest_1.vi.fn().mockResolvedValue(false),
70
+ isEditable: vitest_1.vi.fn().mockResolvedValue(true),
71
+ isEnabled: vitest_1.vi.fn().mockResolvedValue(true),
72
+ innerHTML: vitest_1.vi.fn().mockResolvedValue(''),
73
+ inputValue: vitest_1.vi.fn().mockResolvedValue(''),
74
+ page: vitest_1.vi.fn(),
75
+ first: vitest_1.vi.fn().mockReturnValue(options.firstMock?.() ?? {}),
76
+ nth: vitest_1.vi.fn().mockReturnValue(options.nthMock?.(0) ?? {}),
77
+ };
78
+ return mockLocator;
79
+ }
80
+ /**
81
+ * Create a fresh mock Playwright Page instance.
82
+ *
83
+ * Includes all methods used in tool handlers:
84
+ * - locator(selector) - returns mock locator
85
+ * - waitForLoadState() - async mock
86
+ * - url() - returns string
87
+ * - context() - returns mock context
88
+ * - screenshot(options) - async mock
89
+ *
90
+ * @param options - Customize mock behavior
91
+ * @returns Fresh Page mock
92
+ */
93
+ function createMockPage(options = {}) {
94
+ const mockLocator = options.locatorMock ?? createMockLocator();
95
+ const page = {
96
+ locator: vitest_1.vi.fn().mockReturnValue(mockLocator),
97
+ waitForLoadState: vitest_1.vi.fn().mockResolvedValue(undefined),
98
+ url: vitest_1.vi.fn().mockReturnValue(options.url ?? 'about:blank'),
99
+ screenshot: vitest_1.vi.fn().mockResolvedValue({
100
+ buffer: Buffer.from(''),
101
+ path: '/path/to/screenshot.png',
102
+ }),
103
+ goto: vitest_1.vi.fn().mockResolvedValue(null),
104
+ close: vitest_1.vi.fn().mockResolvedValue(undefined),
105
+ isClosed: vitest_1.vi.fn().mockReturnValue(false),
106
+ evaluate: vitest_1.vi.fn().mockResolvedValue(undefined),
107
+ evaluateHandle: vitest_1.vi.fn().mockResolvedValue({}),
108
+ getByTestId: vitest_1.vi.fn().mockReturnValue(mockLocator),
109
+ getByRole: vitest_1.vi.fn().mockReturnValue(mockLocator),
110
+ getByLabel: vitest_1.vi.fn().mockReturnValue(mockLocator),
111
+ getByPlaceholder: vitest_1.vi.fn().mockReturnValue(mockLocator),
112
+ getByText: vitest_1.vi.fn().mockReturnValue(mockLocator),
113
+ getByAltText: vitest_1.vi.fn().mockReturnValue(mockLocator),
114
+ getByTitle: vitest_1.vi.fn().mockReturnValue(mockLocator),
115
+ frameLocator: vitest_1.vi.fn().mockReturnValue(mockLocator),
116
+ waitForFunction: vitest_1.vi.fn().mockResolvedValue(null),
117
+ waitForNavigation: vitest_1.vi.fn().mockResolvedValue(null),
118
+ waitForURL: vitest_1.vi.fn().mockResolvedValue(undefined),
119
+ waitForSelector: vitest_1.vi.fn().mockResolvedValue(mockLocator),
120
+ title: vitest_1.vi.fn().mockResolvedValue(''),
121
+ content: vitest_1.vi.fn().mockResolvedValue(''),
122
+ reload: vitest_1.vi.fn().mockResolvedValue(null),
123
+ goBack: vitest_1.vi.fn().mockResolvedValue(null),
124
+ goForward: vitest_1.vi.fn().mockResolvedValue(null),
125
+ bringToFront: vitest_1.vi.fn().mockResolvedValue(undefined),
126
+ focus: vitest_1.vi.fn().mockResolvedValue(undefined),
127
+ viewportSize: vitest_1.vi.fn().mockReturnValue({ width: 1280, height: 720 }),
128
+ setViewportSize: vitest_1.vi.fn().mockResolvedValue(undefined),
129
+ emulateMedia: vitest_1.vi.fn().mockResolvedValue(undefined),
130
+ setExtraHTTPHeaders: vitest_1.vi.fn().mockResolvedValue(undefined),
131
+ addInitScript: vitest_1.vi.fn().mockResolvedValue(undefined),
132
+ exposeFunction: vitest_1.vi.fn().mockResolvedValue(undefined),
133
+ exposeBinding: vitest_1.vi.fn().mockResolvedValue(undefined),
134
+ removeExposedBindings: vitest_1.vi.fn().mockResolvedValue(undefined),
135
+ pause: vitest_1.vi.fn().mockResolvedValue(undefined),
136
+ pdf: vitest_1.vi.fn().mockResolvedValue(Buffer.from('')),
137
+ accessibility: {
138
+ snapshot: vitest_1.vi.fn().mockResolvedValue(null),
139
+ },
140
+ keyboard: {
141
+ press: vitest_1.vi.fn().mockResolvedValue(undefined),
142
+ type: vitest_1.vi.fn().mockResolvedValue(undefined),
143
+ down: vitest_1.vi.fn().mockResolvedValue(undefined),
144
+ up: vitest_1.vi.fn().mockResolvedValue(undefined),
145
+ insertText: vitest_1.vi.fn().mockResolvedValue(undefined),
146
+ },
147
+ mouse: {
148
+ move: vitest_1.vi.fn().mockResolvedValue(undefined),
149
+ click: vitest_1.vi.fn().mockResolvedValue(undefined),
150
+ dblclick: vitest_1.vi.fn().mockResolvedValue(undefined),
151
+ down: vitest_1.vi.fn().mockResolvedValue(undefined),
152
+ up: vitest_1.vi.fn().mockResolvedValue(undefined),
153
+ wheel: vitest_1.vi.fn().mockResolvedValue(undefined),
154
+ },
155
+ touchscreen: {
156
+ tap: vitest_1.vi.fn().mockResolvedValue(undefined),
157
+ },
158
+ context: vitest_1.vi.fn(),
159
+ page: vitest_1.vi.fn(),
160
+ };
161
+ page.context.mockReturnValue({
162
+ pages: vitest_1.vi.fn().mockReturnValue([]),
163
+ newPage: vitest_1.vi.fn().mockResolvedValue({}),
164
+ close: vitest_1.vi.fn().mockResolvedValue(undefined),
165
+ });
166
+ page.page.mockReturnValue(page);
167
+ return page;
168
+ }
169
+ /**
170
+ * Create a fresh mock Playwright BrowserContext instance.
171
+ *
172
+ * @param options - Customize mock behavior
173
+ * @returns Fresh BrowserContext mock
174
+ */
175
+ function createMockBrowserContext(options = {}) {
176
+ const context = {
177
+ pages: vitest_1.vi.fn().mockReturnValue(options.pages ?? []),
178
+ newPage: vitest_1.vi.fn(),
179
+ close: vitest_1.vi.fn().mockResolvedValue(undefined),
180
+ browser: vitest_1.vi.fn().mockReturnValue(null),
181
+ addCookies: vitest_1.vi.fn().mockResolvedValue(undefined),
182
+ addInitScript: vitest_1.vi.fn().mockResolvedValue(undefined),
183
+ clearCookies: vitest_1.vi.fn().mockResolvedValue(undefined),
184
+ cookies: vitest_1.vi.fn().mockResolvedValue([]),
185
+ exposeBinding: vitest_1.vi.fn().mockResolvedValue(undefined),
186
+ exposeFunction: vitest_1.vi.fn().mockResolvedValue(undefined),
187
+ grantPermissions: vitest_1.vi.fn().mockResolvedValue(undefined),
188
+ revokePermissions: vitest_1.vi.fn().mockResolvedValue(undefined),
189
+ setExtraHTTPHeaders: vitest_1.vi.fn().mockResolvedValue(undefined),
190
+ setGeolocation: vitest_1.vi.fn().mockResolvedValue(undefined),
191
+ setOffline: vitest_1.vi.fn().mockResolvedValue(undefined),
192
+ waitForEvent: vitest_1.vi.fn().mockResolvedValue(null),
193
+ tracing: {
194
+ start: vitest_1.vi.fn().mockResolvedValue(undefined),
195
+ stop: vitest_1.vi.fn().mockResolvedValue(Buffer.from('')),
196
+ },
197
+ };
198
+ context.newPage.mockResolvedValue({
199
+ locator: vitest_1.vi.fn().mockReturnValue({}),
200
+ url: vitest_1.vi.fn().mockReturnValue('about:blank'),
201
+ close: vitest_1.vi.fn().mockResolvedValue(undefined),
202
+ });
203
+ return context;
204
+ }
205
+ //# sourceMappingURL=mock-playwright.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mock-playwright.cjs","sourceRoot":"","sources":["../../../src/mcp-server/test-utils/mock-playwright.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Playwright mock factories for unit testing.\n *\n * Provides factory functions that return fresh mock Playwright objects:\n * - createMockPage() - Mock Playwright Page with all used methods\n * - createMockLocator() - Mock Playwright Locator with chainable methods\n * - createMockBrowserContext() - Mock BrowserContext\n *\n * Each factory call returns NEW instances with fresh vi.fn() mocks.\n */\n\nimport type { Page, Locator, BrowserContext } from '@playwright/test';\nimport { vi } from 'vitest';\n\nexport type MockPageOptions = {\n url?: string;\n locatorMock?: Locator;\n};\n\nexport type MockLocatorOptions = {\n clickMock?: () => Promise<void>;\n fillMock?: (text: string) => Promise<void>;\n isVisibleMock?: () => Promise<boolean>;\n getAttributeMock?: (name: string) => Promise<string | null>;\n textContentMock?: () => Promise<string | null>;\n allMock?: () => Promise<Locator[]>;\n firstMock?: () => Locator;\n nthMock?: (index: number) => Locator;\n};\n\nexport type MockBrowserContextOptions = {\n pages?: Page[];\n};\n\n/**\n * Create a fresh mock Playwright Locator instance.\n *\n * Includes all methods used in tool handlers:\n * - click() - async mock\n * - fill(text) - async mock\n * - isVisible() - async mock\n * - getAttribute(name) - async mock\n * - textContent() - async mock\n * - all() - async mock\n * - first() - returns mock locator\n * - nth(index) - returns mock locator\n *\n * Methods are chainable where appropriate.\n *\n * @param options - Customize mock behavior\n * @returns Fresh Locator mock\n */\nexport function createMockLocator(options: MockLocatorOptions = {}): Locator {\n const mockLocator: any = {\n click: vi.fn().mockResolvedValue(options.clickMock?.() ?? undefined),\n fill: vi.fn().mockResolvedValue(options.fillMock?.('') ?? undefined),\n isVisible: vi.fn().mockResolvedValue(options.isVisibleMock?.() ?? true),\n getAttribute: vi\n .fn()\n .mockResolvedValue(options.getAttributeMock?.('') ?? null),\n textContent: vi.fn().mockResolvedValue(options.textContentMock?.() ?? null),\n all: vi.fn().mockResolvedValue(options.allMock?.() ?? []),\n clear: vi.fn().mockResolvedValue(undefined),\n check: vi.fn().mockResolvedValue(undefined),\n uncheck: vi.fn().mockResolvedValue(undefined),\n hover: vi.fn().mockResolvedValue(undefined),\n focus: vi.fn().mockResolvedValue(undefined),\n blur: vi.fn().mockResolvedValue(undefined),\n type: vi.fn().mockResolvedValue(undefined),\n press: vi.fn().mockResolvedValue(undefined),\n selectOption: vi.fn().mockResolvedValue([]),\n selectText: vi.fn().mockResolvedValue(undefined),\n setInputFiles: vi.fn().mockResolvedValue(undefined),\n setChecked: vi.fn().mockResolvedValue(undefined),\n dragTo: vi.fn().mockResolvedValue(undefined),\n screenshot: vi.fn().mockResolvedValue(Buffer.from('')),\n scrollIntoViewIfNeeded: vi.fn().mockResolvedValue(undefined),\n waitFor: vi.fn().mockResolvedValue(undefined),\n evaluate: vi.fn().mockResolvedValue(undefined),\n evaluateAll: vi.fn().mockResolvedValue([]),\n evaluateHandle: vi.fn().mockResolvedValue({}),\n count: vi.fn().mockResolvedValue(1),\n boundingBox: vi.fn().mockResolvedValue(null),\n elementHandle: vi.fn().mockResolvedValue(null),\n elementHandles: vi.fn().mockResolvedValue([]),\n isChecked: vi.fn().mockResolvedValue(false),\n isDisabled: vi.fn().mockResolvedValue(false),\n isEditable: vi.fn().mockResolvedValue(true),\n isEnabled: vi.fn().mockResolvedValue(true),\n innerHTML: vi.fn().mockResolvedValue(''),\n inputValue: vi.fn().mockResolvedValue(''),\n page: vi.fn(),\n first: vi.fn().mockReturnValue(options.firstMock?.() ?? {}),\n nth: vi.fn().mockReturnValue(options.nthMock?.(0) ?? {}),\n };\n\n return mockLocator as Locator;\n}\n\n/**\n * Create a fresh mock Playwright Page instance.\n *\n * Includes all methods used in tool handlers:\n * - locator(selector) - returns mock locator\n * - waitForLoadState() - async mock\n * - url() - returns string\n * - context() - returns mock context\n * - screenshot(options) - async mock\n *\n * @param options - Customize mock behavior\n * @returns Fresh Page mock\n */\nexport function createMockPage(options: MockPageOptions = {}): Page {\n const mockLocator = options.locatorMock ?? createMockLocator();\n\n const page: any = {\n locator: vi.fn().mockReturnValue(mockLocator),\n waitForLoadState: vi.fn().mockResolvedValue(undefined),\n url: vi.fn().mockReturnValue(options.url ?? 'about:blank'),\n screenshot: vi.fn().mockResolvedValue({\n buffer: Buffer.from(''),\n path: '/path/to/screenshot.png',\n }),\n goto: vi.fn().mockResolvedValue(null),\n close: vi.fn().mockResolvedValue(undefined),\n isClosed: vi.fn().mockReturnValue(false),\n evaluate: vi.fn().mockResolvedValue(undefined),\n evaluateHandle: vi.fn().mockResolvedValue({}),\n getByTestId: vi.fn().mockReturnValue(mockLocator),\n getByRole: vi.fn().mockReturnValue(mockLocator),\n getByLabel: vi.fn().mockReturnValue(mockLocator),\n getByPlaceholder: vi.fn().mockReturnValue(mockLocator),\n getByText: vi.fn().mockReturnValue(mockLocator),\n getByAltText: vi.fn().mockReturnValue(mockLocator),\n getByTitle: vi.fn().mockReturnValue(mockLocator),\n frameLocator: vi.fn().mockReturnValue(mockLocator),\n waitForFunction: vi.fn().mockResolvedValue(null),\n waitForNavigation: vi.fn().mockResolvedValue(null),\n waitForURL: vi.fn().mockResolvedValue(undefined),\n waitForSelector: vi.fn().mockResolvedValue(mockLocator),\n title: vi.fn().mockResolvedValue(''),\n content: vi.fn().mockResolvedValue(''),\n reload: vi.fn().mockResolvedValue(null),\n goBack: vi.fn().mockResolvedValue(null),\n goForward: vi.fn().mockResolvedValue(null),\n bringToFront: vi.fn().mockResolvedValue(undefined),\n focus: vi.fn().mockResolvedValue(undefined),\n viewportSize: vi.fn().mockReturnValue({ width: 1280, height: 720 }),\n setViewportSize: vi.fn().mockResolvedValue(undefined),\n emulateMedia: vi.fn().mockResolvedValue(undefined),\n setExtraHTTPHeaders: vi.fn().mockResolvedValue(undefined),\n addInitScript: vi.fn().mockResolvedValue(undefined),\n exposeFunction: vi.fn().mockResolvedValue(undefined),\n exposeBinding: vi.fn().mockResolvedValue(undefined),\n removeExposedBindings: vi.fn().mockResolvedValue(undefined),\n pause: vi.fn().mockResolvedValue(undefined),\n pdf: vi.fn().mockResolvedValue(Buffer.from('')),\n accessibility: {\n snapshot: vi.fn().mockResolvedValue(null),\n },\n keyboard: {\n press: vi.fn().mockResolvedValue(undefined),\n type: vi.fn().mockResolvedValue(undefined),\n down: vi.fn().mockResolvedValue(undefined),\n up: vi.fn().mockResolvedValue(undefined),\n insertText: vi.fn().mockResolvedValue(undefined),\n },\n mouse: {\n move: vi.fn().mockResolvedValue(undefined),\n click: vi.fn().mockResolvedValue(undefined),\n dblclick: vi.fn().mockResolvedValue(undefined),\n down: vi.fn().mockResolvedValue(undefined),\n up: vi.fn().mockResolvedValue(undefined),\n wheel: vi.fn().mockResolvedValue(undefined),\n },\n touchscreen: {\n tap: vi.fn().mockResolvedValue(undefined),\n },\n context: vi.fn(),\n page: vi.fn(),\n };\n\n page.context.mockReturnValue({\n pages: vi.fn().mockReturnValue([]),\n newPage: vi.fn().mockResolvedValue({}),\n close: vi.fn().mockResolvedValue(undefined),\n });\n page.page.mockReturnValue(page);\n\n return page as Page;\n}\n\n/**\n * Create a fresh mock Playwright BrowserContext instance.\n *\n * @param options - Customize mock behavior\n * @returns Fresh BrowserContext mock\n */\nexport function createMockBrowserContext(\n options: MockBrowserContextOptions = {},\n): Partial<BrowserContext> {\n const context: any = {\n pages: vi.fn().mockReturnValue(options.pages ?? []),\n newPage: vi.fn(),\n close: vi.fn().mockResolvedValue(undefined),\n browser: vi.fn().mockReturnValue(null),\n addCookies: vi.fn().mockResolvedValue(undefined),\n addInitScript: vi.fn().mockResolvedValue(undefined),\n clearCookies: vi.fn().mockResolvedValue(undefined),\n cookies: vi.fn().mockResolvedValue([]),\n exposeBinding: vi.fn().mockResolvedValue(undefined),\n exposeFunction: vi.fn().mockResolvedValue(undefined),\n grantPermissions: vi.fn().mockResolvedValue(undefined),\n revokePermissions: vi.fn().mockResolvedValue(undefined),\n setExtraHTTPHeaders: vi.fn().mockResolvedValue(undefined),\n setGeolocation: vi.fn().mockResolvedValue(undefined),\n setOffline: vi.fn().mockResolvedValue(undefined),\n waitForEvent: vi.fn().mockResolvedValue(null),\n tracing: {\n start: vi.fn().mockResolvedValue(undefined),\n stop: vi.fn().mockResolvedValue(Buffer.from('')),\n },\n };\n\n context.newPage.mockResolvedValue({\n locator: vi.fn().mockReturnValue({}),\n url: vi.fn().mockReturnValue('about:blank'),\n close: vi.fn().mockResolvedValue(undefined),\n });\n\n return context as Partial<BrowserContext>;\n}\n"]}
@@ -0,0 +1,69 @@
1
+ /**
2
+ * Playwright mock factories for unit testing.
3
+ *
4
+ * Provides factory functions that return fresh mock Playwright objects:
5
+ * - createMockPage() - Mock Playwright Page with all used methods
6
+ * - createMockLocator() - Mock Playwright Locator with chainable methods
7
+ * - createMockBrowserContext() - Mock BrowserContext
8
+ *
9
+ * Each factory call returns NEW instances with fresh vi.fn() mocks.
10
+ */
11
+ import type { Page, Locator, BrowserContext } from "@playwright/test";
12
+ export type MockPageOptions = {
13
+ url?: string;
14
+ locatorMock?: Locator;
15
+ };
16
+ export type MockLocatorOptions = {
17
+ clickMock?: () => Promise<void>;
18
+ fillMock?: (text: string) => Promise<void>;
19
+ isVisibleMock?: () => Promise<boolean>;
20
+ getAttributeMock?: (name: string) => Promise<string | null>;
21
+ textContentMock?: () => Promise<string | null>;
22
+ allMock?: () => Promise<Locator[]>;
23
+ firstMock?: () => Locator;
24
+ nthMock?: (index: number) => Locator;
25
+ };
26
+ export type MockBrowserContextOptions = {
27
+ pages?: Page[];
28
+ };
29
+ /**
30
+ * Create a fresh mock Playwright Locator instance.
31
+ *
32
+ * Includes all methods used in tool handlers:
33
+ * - click() - async mock
34
+ * - fill(text) - async mock
35
+ * - isVisible() - async mock
36
+ * - getAttribute(name) - async mock
37
+ * - textContent() - async mock
38
+ * - all() - async mock
39
+ * - first() - returns mock locator
40
+ * - nth(index) - returns mock locator
41
+ *
42
+ * Methods are chainable where appropriate.
43
+ *
44
+ * @param options - Customize mock behavior
45
+ * @returns Fresh Locator mock
46
+ */
47
+ export declare function createMockLocator(options?: MockLocatorOptions): Locator;
48
+ /**
49
+ * Create a fresh mock Playwright Page instance.
50
+ *
51
+ * Includes all methods used in tool handlers:
52
+ * - locator(selector) - returns mock locator
53
+ * - waitForLoadState() - async mock
54
+ * - url() - returns string
55
+ * - context() - returns mock context
56
+ * - screenshot(options) - async mock
57
+ *
58
+ * @param options - Customize mock behavior
59
+ * @returns Fresh Page mock
60
+ */
61
+ export declare function createMockPage(options?: MockPageOptions): Page;
62
+ /**
63
+ * Create a fresh mock Playwright BrowserContext instance.
64
+ *
65
+ * @param options - Customize mock behavior
66
+ * @returns Fresh BrowserContext mock
67
+ */
68
+ export declare function createMockBrowserContext(options?: MockBrowserContextOptions): Partial<BrowserContext>;
69
+ //# sourceMappingURL=mock-playwright.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mock-playwright.d.cts","sourceRoot":"","sources":["../../../src/mcp-server/test-utils/mock-playwright.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,cAAc,EAAE,yBAAyB;AAGtE,MAAM,MAAM,eAAe,GAAG;IAC5B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,SAAS,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAChC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3C,aAAa,CAAC,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;IACvC,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC5D,eAAe,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC/C,OAAO,CAAC,EAAE,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IACnC,SAAS,CAAC,EAAE,MAAM,OAAO,CAAC;IAC1B,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;CACtC,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG;IACtC,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC;CAChB,CAAC;AAEF;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,GAAE,kBAAuB,GAAG,OAAO,CA6C3E;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,cAAc,CAAC,OAAO,GAAE,eAAoB,GAAG,IAAI,CA8ElE;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CACtC,OAAO,GAAE,yBAA8B,GACtC,OAAO,CAAC,cAAc,CAAC,CA+BzB"}