@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,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.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mock-playwright.d.mts","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"}
@@ -0,0 +1,200 @@
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 { vi } from "vitest";
12
+ /**
13
+ * Create a fresh mock Playwright Locator instance.
14
+ *
15
+ * Includes all methods used in tool handlers:
16
+ * - click() - async mock
17
+ * - fill(text) - async mock
18
+ * - isVisible() - async mock
19
+ * - getAttribute(name) - async mock
20
+ * - textContent() - async mock
21
+ * - all() - async mock
22
+ * - first() - returns mock locator
23
+ * - nth(index) - returns mock locator
24
+ *
25
+ * Methods are chainable where appropriate.
26
+ *
27
+ * @param options - Customize mock behavior
28
+ * @returns Fresh Locator mock
29
+ */
30
+ export function createMockLocator(options = {}) {
31
+ const mockLocator = {
32
+ click: vi.fn().mockResolvedValue(options.clickMock?.() ?? undefined),
33
+ fill: vi.fn().mockResolvedValue(options.fillMock?.('') ?? undefined),
34
+ isVisible: vi.fn().mockResolvedValue(options.isVisibleMock?.() ?? true),
35
+ getAttribute: vi
36
+ .fn()
37
+ .mockResolvedValue(options.getAttributeMock?.('') ?? null),
38
+ textContent: vi.fn().mockResolvedValue(options.textContentMock?.() ?? null),
39
+ all: vi.fn().mockResolvedValue(options.allMock?.() ?? []),
40
+ clear: vi.fn().mockResolvedValue(undefined),
41
+ check: vi.fn().mockResolvedValue(undefined),
42
+ uncheck: vi.fn().mockResolvedValue(undefined),
43
+ hover: vi.fn().mockResolvedValue(undefined),
44
+ focus: vi.fn().mockResolvedValue(undefined),
45
+ blur: vi.fn().mockResolvedValue(undefined),
46
+ type: vi.fn().mockResolvedValue(undefined),
47
+ press: vi.fn().mockResolvedValue(undefined),
48
+ selectOption: vi.fn().mockResolvedValue([]),
49
+ selectText: vi.fn().mockResolvedValue(undefined),
50
+ setInputFiles: vi.fn().mockResolvedValue(undefined),
51
+ setChecked: vi.fn().mockResolvedValue(undefined),
52
+ dragTo: vi.fn().mockResolvedValue(undefined),
53
+ screenshot: vi.fn().mockResolvedValue(Buffer.from('')),
54
+ scrollIntoViewIfNeeded: vi.fn().mockResolvedValue(undefined),
55
+ waitFor: vi.fn().mockResolvedValue(undefined),
56
+ evaluate: vi.fn().mockResolvedValue(undefined),
57
+ evaluateAll: vi.fn().mockResolvedValue([]),
58
+ evaluateHandle: vi.fn().mockResolvedValue({}),
59
+ count: vi.fn().mockResolvedValue(1),
60
+ boundingBox: vi.fn().mockResolvedValue(null),
61
+ elementHandle: vi.fn().mockResolvedValue(null),
62
+ elementHandles: vi.fn().mockResolvedValue([]),
63
+ isChecked: vi.fn().mockResolvedValue(false),
64
+ isDisabled: vi.fn().mockResolvedValue(false),
65
+ isEditable: vi.fn().mockResolvedValue(true),
66
+ isEnabled: vi.fn().mockResolvedValue(true),
67
+ innerHTML: vi.fn().mockResolvedValue(''),
68
+ inputValue: vi.fn().mockResolvedValue(''),
69
+ page: vi.fn(),
70
+ first: vi.fn().mockReturnValue(options.firstMock?.() ?? {}),
71
+ nth: vi.fn().mockReturnValue(options.nthMock?.(0) ?? {}),
72
+ };
73
+ return mockLocator;
74
+ }
75
+ /**
76
+ * Create a fresh mock Playwright Page instance.
77
+ *
78
+ * Includes all methods used in tool handlers:
79
+ * - locator(selector) - returns mock locator
80
+ * - waitForLoadState() - async mock
81
+ * - url() - returns string
82
+ * - context() - returns mock context
83
+ * - screenshot(options) - async mock
84
+ *
85
+ * @param options - Customize mock behavior
86
+ * @returns Fresh Page mock
87
+ */
88
+ export function createMockPage(options = {}) {
89
+ const mockLocator = options.locatorMock ?? createMockLocator();
90
+ const page = {
91
+ locator: vi.fn().mockReturnValue(mockLocator),
92
+ waitForLoadState: vi.fn().mockResolvedValue(undefined),
93
+ url: vi.fn().mockReturnValue(options.url ?? 'about:blank'),
94
+ screenshot: vi.fn().mockResolvedValue({
95
+ buffer: Buffer.from(''),
96
+ path: '/path/to/screenshot.png',
97
+ }),
98
+ goto: vi.fn().mockResolvedValue(null),
99
+ close: vi.fn().mockResolvedValue(undefined),
100
+ isClosed: vi.fn().mockReturnValue(false),
101
+ evaluate: vi.fn().mockResolvedValue(undefined),
102
+ evaluateHandle: vi.fn().mockResolvedValue({}),
103
+ getByTestId: vi.fn().mockReturnValue(mockLocator),
104
+ getByRole: vi.fn().mockReturnValue(mockLocator),
105
+ getByLabel: vi.fn().mockReturnValue(mockLocator),
106
+ getByPlaceholder: vi.fn().mockReturnValue(mockLocator),
107
+ getByText: vi.fn().mockReturnValue(mockLocator),
108
+ getByAltText: vi.fn().mockReturnValue(mockLocator),
109
+ getByTitle: vi.fn().mockReturnValue(mockLocator),
110
+ frameLocator: vi.fn().mockReturnValue(mockLocator),
111
+ waitForFunction: vi.fn().mockResolvedValue(null),
112
+ waitForNavigation: vi.fn().mockResolvedValue(null),
113
+ waitForURL: vi.fn().mockResolvedValue(undefined),
114
+ waitForSelector: vi.fn().mockResolvedValue(mockLocator),
115
+ title: vi.fn().mockResolvedValue(''),
116
+ content: vi.fn().mockResolvedValue(''),
117
+ reload: vi.fn().mockResolvedValue(null),
118
+ goBack: vi.fn().mockResolvedValue(null),
119
+ goForward: vi.fn().mockResolvedValue(null),
120
+ bringToFront: vi.fn().mockResolvedValue(undefined),
121
+ focus: vi.fn().mockResolvedValue(undefined),
122
+ viewportSize: vi.fn().mockReturnValue({ width: 1280, height: 720 }),
123
+ setViewportSize: vi.fn().mockResolvedValue(undefined),
124
+ emulateMedia: vi.fn().mockResolvedValue(undefined),
125
+ setExtraHTTPHeaders: vi.fn().mockResolvedValue(undefined),
126
+ addInitScript: vi.fn().mockResolvedValue(undefined),
127
+ exposeFunction: vi.fn().mockResolvedValue(undefined),
128
+ exposeBinding: vi.fn().mockResolvedValue(undefined),
129
+ removeExposedBindings: vi.fn().mockResolvedValue(undefined),
130
+ pause: vi.fn().mockResolvedValue(undefined),
131
+ pdf: vi.fn().mockResolvedValue(Buffer.from('')),
132
+ accessibility: {
133
+ snapshot: vi.fn().mockResolvedValue(null),
134
+ },
135
+ keyboard: {
136
+ press: vi.fn().mockResolvedValue(undefined),
137
+ type: vi.fn().mockResolvedValue(undefined),
138
+ down: vi.fn().mockResolvedValue(undefined),
139
+ up: vi.fn().mockResolvedValue(undefined),
140
+ insertText: vi.fn().mockResolvedValue(undefined),
141
+ },
142
+ mouse: {
143
+ move: vi.fn().mockResolvedValue(undefined),
144
+ click: vi.fn().mockResolvedValue(undefined),
145
+ dblclick: vi.fn().mockResolvedValue(undefined),
146
+ down: vi.fn().mockResolvedValue(undefined),
147
+ up: vi.fn().mockResolvedValue(undefined),
148
+ wheel: vi.fn().mockResolvedValue(undefined),
149
+ },
150
+ touchscreen: {
151
+ tap: vi.fn().mockResolvedValue(undefined),
152
+ },
153
+ context: vi.fn(),
154
+ page: vi.fn(),
155
+ };
156
+ page.context.mockReturnValue({
157
+ pages: vi.fn().mockReturnValue([]),
158
+ newPage: vi.fn().mockResolvedValue({}),
159
+ close: vi.fn().mockResolvedValue(undefined),
160
+ });
161
+ page.page.mockReturnValue(page);
162
+ return page;
163
+ }
164
+ /**
165
+ * Create a fresh mock Playwright BrowserContext instance.
166
+ *
167
+ * @param options - Customize mock behavior
168
+ * @returns Fresh BrowserContext mock
169
+ */
170
+ export function createMockBrowserContext(options = {}) {
171
+ const context = {
172
+ pages: vi.fn().mockReturnValue(options.pages ?? []),
173
+ newPage: vi.fn(),
174
+ close: vi.fn().mockResolvedValue(undefined),
175
+ browser: vi.fn().mockReturnValue(null),
176
+ addCookies: vi.fn().mockResolvedValue(undefined),
177
+ addInitScript: vi.fn().mockResolvedValue(undefined),
178
+ clearCookies: vi.fn().mockResolvedValue(undefined),
179
+ cookies: vi.fn().mockResolvedValue([]),
180
+ exposeBinding: vi.fn().mockResolvedValue(undefined),
181
+ exposeFunction: vi.fn().mockResolvedValue(undefined),
182
+ grantPermissions: vi.fn().mockResolvedValue(undefined),
183
+ revokePermissions: vi.fn().mockResolvedValue(undefined),
184
+ setExtraHTTPHeaders: vi.fn().mockResolvedValue(undefined),
185
+ setGeolocation: vi.fn().mockResolvedValue(undefined),
186
+ setOffline: vi.fn().mockResolvedValue(undefined),
187
+ waitForEvent: vi.fn().mockResolvedValue(null),
188
+ tracing: {
189
+ start: vi.fn().mockResolvedValue(undefined),
190
+ stop: vi.fn().mockResolvedValue(Buffer.from('')),
191
+ },
192
+ };
193
+ context.newPage.mockResolvedValue({
194
+ locator: vi.fn().mockReturnValue({}),
195
+ url: vi.fn().mockReturnValue('about:blank'),
196
+ close: vi.fn().mockResolvedValue(undefined),
197
+ });
198
+ return context;
199
+ }
200
+ //# sourceMappingURL=mock-playwright.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mock-playwright.mjs","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,117 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.tokenize = tokenize;
4
+ exports.tokenizeIdentifier = tokenizeIdentifier;
5
+ exports.expandWithSynonyms = expandWithSynonyms;
6
+ const STOPWORDS = new Set([
7
+ 'a',
8
+ 'an',
9
+ 'the',
10
+ 'to',
11
+ 'from',
12
+ 'in',
13
+ 'on',
14
+ 'at',
15
+ 'for',
16
+ 'with',
17
+ 'and',
18
+ 'or',
19
+ 'but',
20
+ 'is',
21
+ 'are',
22
+ 'was',
23
+ 'were',
24
+ 'be',
25
+ 'been',
26
+ 'flow',
27
+ 'test',
28
+ 'should',
29
+ 'can',
30
+ 'will',
31
+ 'do',
32
+ 'does',
33
+ 'did',
34
+ 'have',
35
+ 'has',
36
+ 'had',
37
+ 'this',
38
+ 'that',
39
+ 'these',
40
+ 'those',
41
+ 'it',
42
+ 'mm',
43
+ 'mcp',
44
+ 'lw',
45
+ ]);
46
+ const MIN_TOKEN_LENGTH = 2;
47
+ /**
48
+ * Tokenizes text into lowercase words, removing stopwords.
49
+ *
50
+ * @param text - The text to tokenize.
51
+ * @returns Array of unique lowercase tokens.
52
+ */
53
+ function tokenize(text) {
54
+ if (!text) {
55
+ return [];
56
+ }
57
+ const tokens = text
58
+ .toLowerCase()
59
+ .split(/[^a-z0-9]+/iu)
60
+ .filter((token) => token.length >= MIN_TOKEN_LENGTH && !STOPWORDS.has(token));
61
+ return [...new Set(tokens)];
62
+ }
63
+ /**
64
+ * Tokenizes a camelCase/PascalCase identifier into words.
65
+ *
66
+ * @param identifier - The identifier to tokenize.
67
+ * @returns Array of unique lowercase tokens.
68
+ */
69
+ function tokenizeIdentifier(identifier) {
70
+ if (!identifier) {
71
+ return [];
72
+ }
73
+ const withSpaces = identifier
74
+ .replace(/([a-z])([A-Z])/gu, '$1 $2')
75
+ .replace(/([A-Z]+)([A-Z][a-z])/gu, '$1 $2');
76
+ const tokens = withSpaces
77
+ .toLowerCase()
78
+ .split(/[^a-z0-9]+/iu)
79
+ .filter((token) => token.length >= MIN_TOKEN_LENGTH);
80
+ return [...new Set(tokens)];
81
+ }
82
+ const ACTION_SYNONYMS = {
83
+ send: ['transfer', 'pay'],
84
+ receive: ['deposit'],
85
+ approve: ['confirm', 'accept', 'allow'],
86
+ reject: ['deny', 'cancel', 'decline'],
87
+ unlock: ['login', 'signin'],
88
+ connect: ['link', 'authorize'],
89
+ swap: ['exchange', 'trade'],
90
+ sign: ['signature'],
91
+ };
92
+ /**
93
+ * Expands tokens by adding action-related synonyms.
94
+ *
95
+ * @param tokens - The tokens to expand.
96
+ * @returns Expanded array including synonyms.
97
+ */
98
+ function expandWithSynonyms(tokens) {
99
+ const expanded = new Set(tokens);
100
+ for (const token of tokens) {
101
+ if (ACTION_SYNONYMS[token]) {
102
+ for (const synonym of ACTION_SYNONYMS[token]) {
103
+ expanded.add(synonym);
104
+ }
105
+ }
106
+ for (const [canonical, synonyms] of Object.entries(ACTION_SYNONYMS)) {
107
+ if (synonyms.includes(token)) {
108
+ expanded.add(canonical);
109
+ for (const synonym of synonyms) {
110
+ expanded.add(synonym);
111
+ }
112
+ }
113
+ }
114
+ }
115
+ return [...expanded];
116
+ }
117
+ //# sourceMappingURL=tokenization.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokenization.cjs","sourceRoot":"","sources":["../../src/mcp-server/tokenization.ts"],"names":[],"mappings":";;AAiDA,4BAaC;AAQD,gDAeC;AAmBD,gDAqBC;AA7HD,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC;IACxB,GAAG;IACH,IAAI;IACJ,KAAK;IACL,IAAI;IACJ,MAAM;IACN,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,KAAK;IACL,MAAM;IACN,KAAK;IACL,IAAI;IACJ,KAAK;IACL,IAAI;IACJ,KAAK;IACL,KAAK;IACL,MAAM;IACN,IAAI;IACJ,MAAM;IACN,MAAM;IACN,MAAM;IACN,QAAQ;IACR,KAAK;IACL,MAAM;IACN,IAAI;IACJ,MAAM;IACN,KAAK;IACL,MAAM;IACN,KAAK;IACL,KAAK;IACL,MAAM;IACN,MAAM;IACN,OAAO;IACP,OAAO;IACP,IAAI;IACJ,IAAI;IACJ,KAAK;IACL,IAAI;CACL,CAAC,CAAC;AAEH,MAAM,gBAAgB,GAAG,CAAC,CAAC;AAE3B;;;;;GAKG;AACH,SAAgB,QAAQ,CAAC,IAAY;IACnC,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,MAAM,GAAG,IAAI;SAChB,WAAW,EAAE;SACb,KAAK,CAAC,cAAc,CAAC;SACrB,MAAM,CACL,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,IAAI,gBAAgB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CACrE,CAAC;IAEJ,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;AAC9B,CAAC;AAED;;;;;GAKG;AACH,SAAgB,kBAAkB,CAAC,UAAkB;IACnD,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,UAAU,GAAG,UAAU;SAC1B,OAAO,CAAC,kBAAkB,EAAE,OAAO,CAAC;SACpC,OAAO,CAAC,wBAAwB,EAAE,OAAO,CAAC,CAAC;IAE9C,MAAM,MAAM,GAAG,UAAU;SACtB,WAAW,EAAE;SACb,KAAK,CAAC,cAAc,CAAC;SACrB,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,IAAI,gBAAgB,CAAC,CAAC;IAEvD,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;AAC9B,CAAC;AAED,MAAM,eAAe,GAA6B;IAChD,IAAI,EAAE,CAAC,UAAU,EAAE,KAAK,CAAC;IACzB,OAAO,EAAE,CAAC,SAAS,CAAC;IACpB,OAAO,EAAE,CAAC,SAAS,EAAE,QAAQ,EAAE,OAAO,CAAC;IACvC,MAAM,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,SAAS,CAAC;IACrC,MAAM,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC;IAC3B,OAAO,EAAE,CAAC,MAAM,EAAE,WAAW,CAAC;IAC9B,IAAI,EAAE,CAAC,UAAU,EAAE,OAAO,CAAC;IAC3B,IAAI,EAAE,CAAC,WAAW,CAAC;CACpB,CAAC;AAEF;;;;;GAKG;AACH,SAAgB,kBAAkB,CAAC,MAAgB;IACjD,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC;IAEjC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC;YAC3B,KAAK,MAAM,OAAO,IAAI,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC7C,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACxB,CAAC;QACH,CAAC;QAED,KAAK,MAAM,CAAC,SAAS,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,CAAC;YACpE,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC7B,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;gBACxB,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;oBAC/B,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBACxB,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,QAAQ,CAAC,CAAC;AACvB,CAAC","sourcesContent":["const STOPWORDS = new Set([\n 'a',\n 'an',\n 'the',\n 'to',\n 'from',\n 'in',\n 'on',\n 'at',\n 'for',\n 'with',\n 'and',\n 'or',\n 'but',\n 'is',\n 'are',\n 'was',\n 'were',\n 'be',\n 'been',\n 'flow',\n 'test',\n 'should',\n 'can',\n 'will',\n 'do',\n 'does',\n 'did',\n 'have',\n 'has',\n 'had',\n 'this',\n 'that',\n 'these',\n 'those',\n 'it',\n 'mm',\n 'mcp',\n 'lw',\n]);\n\nconst MIN_TOKEN_LENGTH = 2;\n\n/**\n * Tokenizes text into lowercase words, removing stopwords.\n *\n * @param text - The text to tokenize.\n * @returns Array of unique lowercase tokens.\n */\nexport function tokenize(text: string): string[] {\n if (!text) {\n return [];\n }\n\n const tokens = text\n .toLowerCase()\n .split(/[^a-z0-9]+/iu)\n .filter(\n (token) => token.length >= MIN_TOKEN_LENGTH && !STOPWORDS.has(token),\n );\n\n return [...new Set(tokens)];\n}\n\n/**\n * Tokenizes a camelCase/PascalCase identifier into words.\n *\n * @param identifier - The identifier to tokenize.\n * @returns Array of unique lowercase tokens.\n */\nexport function tokenizeIdentifier(identifier: string): string[] {\n if (!identifier) {\n return [];\n }\n\n const withSpaces = identifier\n .replace(/([a-z])([A-Z])/gu, '$1 $2')\n .replace(/([A-Z]+)([A-Z][a-z])/gu, '$1 $2');\n\n const tokens = withSpaces\n .toLowerCase()\n .split(/[^a-z0-9]+/iu)\n .filter((token) => token.length >= MIN_TOKEN_LENGTH);\n\n return [...new Set(tokens)];\n}\n\nconst ACTION_SYNONYMS: Record<string, string[]> = {\n send: ['transfer', 'pay'],\n receive: ['deposit'],\n approve: ['confirm', 'accept', 'allow'],\n reject: ['deny', 'cancel', 'decline'],\n unlock: ['login', 'signin'],\n connect: ['link', 'authorize'],\n swap: ['exchange', 'trade'],\n sign: ['signature'],\n};\n\n/**\n * Expands tokens by adding action-related synonyms.\n *\n * @param tokens - The tokens to expand.\n * @returns Expanded array including synonyms.\n */\nexport function expandWithSynonyms(tokens: string[]): string[] {\n const expanded = new Set(tokens);\n\n for (const token of tokens) {\n if (ACTION_SYNONYMS[token]) {\n for (const synonym of ACTION_SYNONYMS[token]) {\n expanded.add(synonym);\n }\n }\n\n for (const [canonical, synonyms] of Object.entries(ACTION_SYNONYMS)) {\n if (synonyms.includes(token)) {\n expanded.add(canonical);\n for (const synonym of synonyms) {\n expanded.add(synonym);\n }\n }\n }\n }\n\n return [...expanded];\n}\n"]}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Tokenizes text into lowercase words, removing stopwords.
3
+ *
4
+ * @param text - The text to tokenize.
5
+ * @returns Array of unique lowercase tokens.
6
+ */
7
+ export declare function tokenize(text: string): string[];
8
+ /**
9
+ * Tokenizes a camelCase/PascalCase identifier into words.
10
+ *
11
+ * @param identifier - The identifier to tokenize.
12
+ * @returns Array of unique lowercase tokens.
13
+ */
14
+ export declare function tokenizeIdentifier(identifier: string): string[];
15
+ /**
16
+ * Expands tokens by adding action-related synonyms.
17
+ *
18
+ * @param tokens - The tokens to expand.
19
+ * @returns Expanded array including synonyms.
20
+ */
21
+ export declare function expandWithSynonyms(tokens: string[]): string[];
22
+ //# sourceMappingURL=tokenization.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokenization.d.cts","sourceRoot":"","sources":["../../src/mcp-server/tokenization.ts"],"names":[],"mappings":"AA2CA;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAa/C;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE,CAe/D;AAaD;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAqB7D"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Tokenizes text into lowercase words, removing stopwords.
3
+ *
4
+ * @param text - The text to tokenize.
5
+ * @returns Array of unique lowercase tokens.
6
+ */
7
+ export declare function tokenize(text: string): string[];
8
+ /**
9
+ * Tokenizes a camelCase/PascalCase identifier into words.
10
+ *
11
+ * @param identifier - The identifier to tokenize.
12
+ * @returns Array of unique lowercase tokens.
13
+ */
14
+ export declare function tokenizeIdentifier(identifier: string): string[];
15
+ /**
16
+ * Expands tokens by adding action-related synonyms.
17
+ *
18
+ * @param tokens - The tokens to expand.
19
+ * @returns Expanded array including synonyms.
20
+ */
21
+ export declare function expandWithSynonyms(tokens: string[]): string[];
22
+ //# sourceMappingURL=tokenization.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokenization.d.mts","sourceRoot":"","sources":["../../src/mcp-server/tokenization.ts"],"names":[],"mappings":"AA2CA;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAa/C;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE,CAe/D;AAaD;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAqB7D"}
@@ -0,0 +1,112 @@
1
+ const STOPWORDS = new Set([
2
+ 'a',
3
+ 'an',
4
+ 'the',
5
+ 'to',
6
+ 'from',
7
+ 'in',
8
+ 'on',
9
+ 'at',
10
+ 'for',
11
+ 'with',
12
+ 'and',
13
+ 'or',
14
+ 'but',
15
+ 'is',
16
+ 'are',
17
+ 'was',
18
+ 'were',
19
+ 'be',
20
+ 'been',
21
+ 'flow',
22
+ 'test',
23
+ 'should',
24
+ 'can',
25
+ 'will',
26
+ 'do',
27
+ 'does',
28
+ 'did',
29
+ 'have',
30
+ 'has',
31
+ 'had',
32
+ 'this',
33
+ 'that',
34
+ 'these',
35
+ 'those',
36
+ 'it',
37
+ 'mm',
38
+ 'mcp',
39
+ 'lw',
40
+ ]);
41
+ const MIN_TOKEN_LENGTH = 2;
42
+ /**
43
+ * Tokenizes text into lowercase words, removing stopwords.
44
+ *
45
+ * @param text - The text to tokenize.
46
+ * @returns Array of unique lowercase tokens.
47
+ */
48
+ export function tokenize(text) {
49
+ if (!text) {
50
+ return [];
51
+ }
52
+ const tokens = text
53
+ .toLowerCase()
54
+ .split(/[^a-z0-9]+/iu)
55
+ .filter((token) => token.length >= MIN_TOKEN_LENGTH && !STOPWORDS.has(token));
56
+ return [...new Set(tokens)];
57
+ }
58
+ /**
59
+ * Tokenizes a camelCase/PascalCase identifier into words.
60
+ *
61
+ * @param identifier - The identifier to tokenize.
62
+ * @returns Array of unique lowercase tokens.
63
+ */
64
+ export function tokenizeIdentifier(identifier) {
65
+ if (!identifier) {
66
+ return [];
67
+ }
68
+ const withSpaces = identifier
69
+ .replace(/([a-z])([A-Z])/gu, '$1 $2')
70
+ .replace(/([A-Z]+)([A-Z][a-z])/gu, '$1 $2');
71
+ const tokens = withSpaces
72
+ .toLowerCase()
73
+ .split(/[^a-z0-9]+/iu)
74
+ .filter((token) => token.length >= MIN_TOKEN_LENGTH);
75
+ return [...new Set(tokens)];
76
+ }
77
+ const ACTION_SYNONYMS = {
78
+ send: ['transfer', 'pay'],
79
+ receive: ['deposit'],
80
+ approve: ['confirm', 'accept', 'allow'],
81
+ reject: ['deny', 'cancel', 'decline'],
82
+ unlock: ['login', 'signin'],
83
+ connect: ['link', 'authorize'],
84
+ swap: ['exchange', 'trade'],
85
+ sign: ['signature'],
86
+ };
87
+ /**
88
+ * Expands tokens by adding action-related synonyms.
89
+ *
90
+ * @param tokens - The tokens to expand.
91
+ * @returns Expanded array including synonyms.
92
+ */
93
+ export function expandWithSynonyms(tokens) {
94
+ const expanded = new Set(tokens);
95
+ for (const token of tokens) {
96
+ if (ACTION_SYNONYMS[token]) {
97
+ for (const synonym of ACTION_SYNONYMS[token]) {
98
+ expanded.add(synonym);
99
+ }
100
+ }
101
+ for (const [canonical, synonyms] of Object.entries(ACTION_SYNONYMS)) {
102
+ if (synonyms.includes(token)) {
103
+ expanded.add(canonical);
104
+ for (const synonym of synonyms) {
105
+ expanded.add(synonym);
106
+ }
107
+ }
108
+ }
109
+ }
110
+ return [...expanded];
111
+ }
112
+ //# sourceMappingURL=tokenization.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokenization.mjs","sourceRoot":"","sources":["../../src/mcp-server/tokenization.ts"],"names":[],"mappings":"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","sourcesContent":["const STOPWORDS = new Set([\n 'a',\n 'an',\n 'the',\n 'to',\n 'from',\n 'in',\n 'on',\n 'at',\n 'for',\n 'with',\n 'and',\n 'or',\n 'but',\n 'is',\n 'are',\n 'was',\n 'were',\n 'be',\n 'been',\n 'flow',\n 'test',\n 'should',\n 'can',\n 'will',\n 'do',\n 'does',\n 'did',\n 'have',\n 'has',\n 'had',\n 'this',\n 'that',\n 'these',\n 'those',\n 'it',\n 'mm',\n 'mcp',\n 'lw',\n]);\n\nconst MIN_TOKEN_LENGTH = 2;\n\n/**\n * Tokenizes text into lowercase words, removing stopwords.\n *\n * @param text - The text to tokenize.\n * @returns Array of unique lowercase tokens.\n */\nexport function tokenize(text: string): string[] {\n if (!text) {\n return [];\n }\n\n const tokens = text\n .toLowerCase()\n .split(/[^a-z0-9]+/iu)\n .filter(\n (token) => token.length >= MIN_TOKEN_LENGTH && !STOPWORDS.has(token),\n );\n\n return [...new Set(tokens)];\n}\n\n/**\n * Tokenizes a camelCase/PascalCase identifier into words.\n *\n * @param identifier - The identifier to tokenize.\n * @returns Array of unique lowercase tokens.\n */\nexport function tokenizeIdentifier(identifier: string): string[] {\n if (!identifier) {\n return [];\n }\n\n const withSpaces = identifier\n .replace(/([a-z])([A-Z])/gu, '$1 $2')\n .replace(/([A-Z]+)([A-Z][a-z])/gu, '$1 $2');\n\n const tokens = withSpaces\n .toLowerCase()\n .split(/[^a-z0-9]+/iu)\n .filter((token) => token.length >= MIN_TOKEN_LENGTH);\n\n return [...new Set(tokens)];\n}\n\nconst ACTION_SYNONYMS: Record<string, string[]> = {\n send: ['transfer', 'pay'],\n receive: ['deposit'],\n approve: ['confirm', 'accept', 'allow'],\n reject: ['deny', 'cancel', 'decline'],\n unlock: ['login', 'signin'],\n connect: ['link', 'authorize'],\n swap: ['exchange', 'trade'],\n sign: ['signature'],\n};\n\n/**\n * Expands tokens by adding action-related synonyms.\n *\n * @param tokens - The tokens to expand.\n * @returns Expanded array including synonyms.\n */\nexport function expandWithSynonyms(tokens: string[]): string[] {\n const expanded = new Set(tokens);\n\n for (const token of tokens) {\n if (ACTION_SYNONYMS[token]) {\n for (const synonym of ACTION_SYNONYMS[token]) {\n expanded.add(synonym);\n }\n }\n\n for (const [canonical, synonyms] of Object.entries(ACTION_SYNONYMS)) {\n if (synonyms.includes(token)) {\n expanded.add(canonical);\n for (const synonym of synonyms) {\n expanded.add(synonym);\n }\n }\n }\n }\n\n return [...expanded];\n}\n"]}