@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 @@
1
+ {"version":3,"file":"interaction.d.cts","sourceRoot":"","sources":["../../../src/mcp-server/tools/interaction.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EACV,UAAU,EACV,WAAW,EACX,SAAS,EACT,UAAU,EACV,YAAY,EACZ,aAAa,EACb,WAAW,EACX,cAAc,EACf,2BAAiB;AASlB;;;;;;GAMG;AACH,wBAAsB,WAAW,CAC/B,KAAK,EAAE,UAAU,EACjB,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAmFnC;AAED;;;;;;GAMG;AACH,wBAAsB,UAAU,CAC9B,KAAK,EAAE,SAAS,EAChB,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,CA+ElC;AAED;;;;;;GAMG;AACH,wBAAsB,aAAa,CACjC,KAAK,EAAE,YAAY,EACnB,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAuErC"}
@@ -0,0 +1,26 @@
1
+ import type { ClickInput, ClickResult, TypeInput, TypeResult, WaitForInput, WaitForResult, McpResponse, HandlerOptions } from "../types/index.mjs";
2
+ /**
3
+ * Handles clicking on an element specified by testId, selector, or accessibility reference.
4
+ *
5
+ * @param input The click input containing target selection and timeout options
6
+ * @param options Optional handler configuration
7
+ * @returns Promise resolving to click result with target information
8
+ */
9
+ export declare function handleClick(input: ClickInput, options?: HandlerOptions): Promise<McpResponse<ClickResult>>;
10
+ /**
11
+ * Handles typing text into an element specified by testId, selector, or accessibility reference.
12
+ *
13
+ * @param input The type input containing target selection, text, and timeout options
14
+ * @param options Optional handler configuration
15
+ * @returns Promise resolving to type result with target and text length information
16
+ */
17
+ export declare function handleType(input: TypeInput, options?: HandlerOptions): Promise<McpResponse<TypeResult>>;
18
+ /**
19
+ * Handles waiting for an element to become visible.
20
+ *
21
+ * @param input The wait input containing target selection and timeout options
22
+ * @param options Optional handler configuration
23
+ * @returns Promise resolving to wait result with target information
24
+ */
25
+ export declare function handleWaitFor(input: WaitForInput, options?: HandlerOptions): Promise<McpResponse<WaitForResult>>;
26
+ //# sourceMappingURL=interaction.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interaction.d.mts","sourceRoot":"","sources":["../../../src/mcp-server/tools/interaction.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EACV,UAAU,EACV,WAAW,EACX,SAAS,EACT,UAAU,EACV,YAAY,EACZ,aAAa,EACb,WAAW,EACX,cAAc,EACf,2BAAiB;AASlB;;;;;;GAMG;AACH,wBAAsB,WAAW,CAC/B,KAAK,EAAE,UAAU,EACjB,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAmFnC;AAED;;;;;;GAMG;AACH,wBAAsB,UAAU,CAC9B,KAAK,EAAE,SAAS,EAChB,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,CA+ElC;AAED;;;;;;GAMG;AACH,wBAAsB,aAAa,CACjC,KAAK,EAAE,YAAY,EACnB,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAuErC"}
@@ -0,0 +1,185 @@
1
+ import { DEFAULT_INTERACTION_TIMEOUT_MS } from "../constants.mjs";
2
+ import { waitForTarget } from "../discovery.mjs";
3
+ import { getSessionManager } from "../session-manager.mjs";
4
+ import { classifyClickError, classifyTypeError, classifyWaitError, isPageClosedError } from "./error-classification.mjs";
5
+ import { runTool } from "./run-tool.mjs";
6
+ import { ErrorCodes } from "../types/index.mjs";
7
+ import { createErrorResponse, validateTargetSelection, isValidTargetSelection, isInvalidTargetSelection } from "../utils/index.mjs";
8
+ /**
9
+ * Handles clicking on an element specified by testId, selector, or accessibility reference.
10
+ *
11
+ * @param input The click input containing target selection and timeout options
12
+ * @param options Optional handler configuration
13
+ * @returns Promise resolving to click result with target information
14
+ */
15
+ export async function handleClick(input, options) {
16
+ const startTime = Date.now();
17
+ const sessionManager = getSessionManager();
18
+ const sessionId = sessionManager.getSessionId();
19
+ const timeoutMs = input.timeoutMs ?? DEFAULT_INTERACTION_TIMEOUT_MS;
20
+ const validation = validateTargetSelection(input);
21
+ if (isInvalidTargetSelection(validation)) {
22
+ return createErrorResponse(ErrorCodes.MM_INVALID_INPUT, validation.error, { input }, sessionId, startTime);
23
+ }
24
+ if (!isValidTargetSelection(validation)) {
25
+ return createErrorResponse(ErrorCodes.MM_INVALID_INPUT, 'Invalid target selection', { input }, sessionId, startTime);
26
+ }
27
+ const { type: targetType, value: targetValue } = validation;
28
+ return runTool({
29
+ toolName: 'mm_click',
30
+ input,
31
+ options,
32
+ /**
33
+ * Executes the click action on the target element.
34
+ *
35
+ * @param context The tool execution context containing page and reference map
36
+ * @returns Promise resolving to click result with success status and target info
37
+ */
38
+ execute: async (context) => {
39
+ const locator = await waitForTarget(context.page, targetType, targetValue, context.refMap, timeoutMs);
40
+ try {
41
+ await locator.click();
42
+ return {
43
+ clicked: true,
44
+ target: `${targetType}:${targetValue}`,
45
+ };
46
+ }
47
+ catch (clickError) {
48
+ if (isPageClosedError(clickError)) {
49
+ return {
50
+ clicked: true,
51
+ target: `${targetType}:${targetValue}`,
52
+ pageClosedAfterClick: true,
53
+ };
54
+ }
55
+ throw clickError;
56
+ }
57
+ },
58
+ /**
59
+ * Returns the target element information for recording.
60
+ *
61
+ * @returns Object containing the target type and value
62
+ */
63
+ getTarget: () => ({ [targetType]: targetValue }),
64
+ classifyError: classifyClickError,
65
+ /**
66
+ * Sanitizes input for knowledge store recording.
67
+ *
68
+ * @returns Sanitized input object with timeout information
69
+ */
70
+ sanitizeInputForRecording: () => ({ timeoutMs }),
71
+ });
72
+ }
73
+ /**
74
+ * Handles typing text into an element specified by testId, selector, or accessibility reference.
75
+ *
76
+ * @param input The type input containing target selection, text, and timeout options
77
+ * @param options Optional handler configuration
78
+ * @returns Promise resolving to type result with target and text length information
79
+ */
80
+ export async function handleType(input, options) {
81
+ const startTime = Date.now();
82
+ const sessionManager = getSessionManager();
83
+ const sessionId = sessionManager.getSessionId();
84
+ const timeoutMs = input.timeoutMs ?? DEFAULT_INTERACTION_TIMEOUT_MS;
85
+ const validation = validateTargetSelection(input);
86
+ if (isInvalidTargetSelection(validation)) {
87
+ return createErrorResponse(ErrorCodes.MM_INVALID_INPUT, validation.error, { input }, sessionId, startTime);
88
+ }
89
+ if (!isValidTargetSelection(validation)) {
90
+ return createErrorResponse(ErrorCodes.MM_INVALID_INPUT, 'Invalid target selection', { input }, sessionId, startTime);
91
+ }
92
+ const { type: targetType, value: targetValue } = validation;
93
+ return runTool({
94
+ toolName: 'mm_type',
95
+ input,
96
+ options,
97
+ /**
98
+ * Executes the type action on the target element.
99
+ *
100
+ * @param context The tool execution context containing page and reference map
101
+ * @returns Promise resolving to type result with success status and text length
102
+ */
103
+ execute: async (context) => {
104
+ const locator = await waitForTarget(context.page, targetType, targetValue, context.refMap, timeoutMs);
105
+ await locator.fill(input.text);
106
+ return {
107
+ typed: true,
108
+ target: `${targetType}:${targetValue}`,
109
+ textLength: input.text.length,
110
+ };
111
+ },
112
+ /**
113
+ * Returns the target element information for recording.
114
+ *
115
+ * @returns Object containing the target type and value
116
+ */
117
+ getTarget: () => ({ [targetType]: targetValue }),
118
+ classifyError: classifyTypeError,
119
+ /**
120
+ * Sanitizes input for knowledge store recording.
121
+ *
122
+ * @returns Sanitized input object with timeout and text information
123
+ */
124
+ sanitizeInputForRecording: () => ({
125
+ timeoutMs,
126
+ text: input.text,
127
+ testId: input.testId,
128
+ selector: input.selector,
129
+ a11yRef: input.a11yRef,
130
+ }),
131
+ });
132
+ }
133
+ /**
134
+ * Handles waiting for an element to become visible.
135
+ *
136
+ * @param input The wait input containing target selection and timeout options
137
+ * @param options Optional handler configuration
138
+ * @returns Promise resolving to wait result with target information
139
+ */
140
+ export async function handleWaitFor(input, options) {
141
+ const startTime = Date.now();
142
+ const sessionManager = getSessionManager();
143
+ const sessionId = sessionManager.getSessionId();
144
+ const timeoutMs = input.timeoutMs ?? DEFAULT_INTERACTION_TIMEOUT_MS;
145
+ const validation = validateTargetSelection(input);
146
+ if (isInvalidTargetSelection(validation)) {
147
+ return createErrorResponse(ErrorCodes.MM_INVALID_INPUT, validation.error, { input }, sessionId, startTime);
148
+ }
149
+ if (!isValidTargetSelection(validation)) {
150
+ return createErrorResponse(ErrorCodes.MM_INVALID_INPUT, 'Invalid target selection', { input }, sessionId, startTime);
151
+ }
152
+ const { type: targetType, value: targetValue } = validation;
153
+ return runTool({
154
+ toolName: 'mm_wait_for',
155
+ input,
156
+ options,
157
+ /**
158
+ * Executes the wait action for the target element.
159
+ *
160
+ * @param context The tool execution context containing page and reference map
161
+ * @returns Promise resolving to wait result with success status and target info
162
+ */
163
+ execute: async (context) => {
164
+ await waitForTarget(context.page, targetType, targetValue, context.refMap, timeoutMs);
165
+ return {
166
+ found: true,
167
+ target: `${targetType}:${targetValue}`,
168
+ };
169
+ },
170
+ /**
171
+ * Returns the target element information for recording.
172
+ *
173
+ * @returns Object containing the target type and value
174
+ */
175
+ getTarget: () => ({ [targetType]: targetValue }),
176
+ classifyError: classifyWaitError,
177
+ /**
178
+ * Sanitizes input for knowledge store recording.
179
+ *
180
+ * @returns Sanitized input object with timeout information
181
+ */
182
+ sanitizeInputForRecording: () => ({ timeoutMs }),
183
+ });
184
+ }
185
+ //# sourceMappingURL=interaction.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interaction.mjs","sourceRoot":"","sources":["../../../src/mcp-server/tools/interaction.ts"],"names":[],"mappings":"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","sourcesContent":["import { DEFAULT_INTERACTION_TIMEOUT_MS } from '../constants.js';\nimport { waitForTarget } from '../discovery.js';\nimport { getSessionManager } from '../session-manager.js';\nimport {\n classifyClickError,\n classifyTypeError,\n classifyWaitError,\n isPageClosedError,\n} from './error-classification.js';\nimport { runTool } from './run-tool.js';\nimport type {\n ClickInput,\n ClickResult,\n TypeInput,\n TypeResult,\n WaitForInput,\n WaitForResult,\n McpResponse,\n HandlerOptions,\n} from '../types';\nimport { ErrorCodes } from '../types';\nimport {\n createErrorResponse,\n validateTargetSelection,\n isValidTargetSelection,\n isInvalidTargetSelection,\n} from '../utils';\n\n/**\n * Handles clicking on an element specified by testId, selector, or accessibility reference.\n *\n * @param input The click input containing target selection and timeout options\n * @param options Optional handler configuration\n * @returns Promise resolving to click result with target information\n */\nexport async function handleClick(\n input: ClickInput,\n options?: HandlerOptions,\n): Promise<McpResponse<ClickResult>> {\n const startTime = Date.now();\n const sessionManager = getSessionManager();\n const sessionId = sessionManager.getSessionId();\n const timeoutMs = input.timeoutMs ?? DEFAULT_INTERACTION_TIMEOUT_MS;\n\n const validation = validateTargetSelection(input);\n if (isInvalidTargetSelection(validation)) {\n return createErrorResponse(\n ErrorCodes.MM_INVALID_INPUT,\n validation.error,\n { input },\n sessionId,\n startTime,\n );\n }\n\n if (!isValidTargetSelection(validation)) {\n return createErrorResponse(\n ErrorCodes.MM_INVALID_INPUT,\n 'Invalid target selection',\n { input },\n sessionId,\n startTime,\n );\n }\n\n const { type: targetType, value: targetValue } = validation;\n\n return runTool<ClickInput, ClickResult>({\n toolName: 'mm_click',\n input,\n options,\n\n /**\n * Executes the click action on the target element.\n *\n * @param context The tool execution context containing page and reference map\n * @returns Promise resolving to click result with success status and target info\n */\n execute: async (context) => {\n const locator = await waitForTarget(\n context.page,\n targetType,\n targetValue,\n context.refMap,\n timeoutMs,\n );\n\n try {\n await locator.click();\n return {\n clicked: true,\n target: `${targetType}:${targetValue}`,\n };\n } catch (clickError) {\n if (isPageClosedError(clickError)) {\n return {\n clicked: true,\n target: `${targetType}:${targetValue}`,\n pageClosedAfterClick: true,\n };\n }\n throw clickError;\n }\n },\n\n /**\n * Returns the target element information for recording.\n *\n * @returns Object containing the target type and value\n */\n getTarget: () => ({ [targetType]: targetValue }),\n\n classifyError: classifyClickError,\n\n /**\n * Sanitizes input for knowledge store recording.\n *\n * @returns Sanitized input object with timeout information\n */\n sanitizeInputForRecording: () => ({ timeoutMs }),\n });\n}\n\n/**\n * Handles typing text into an element specified by testId, selector, or accessibility reference.\n *\n * @param input The type input containing target selection, text, and timeout options\n * @param options Optional handler configuration\n * @returns Promise resolving to type result with target and text length information\n */\nexport async function handleType(\n input: TypeInput,\n options?: HandlerOptions,\n): Promise<McpResponse<TypeResult>> {\n const startTime = Date.now();\n const sessionManager = getSessionManager();\n const sessionId = sessionManager.getSessionId();\n const timeoutMs = input.timeoutMs ?? DEFAULT_INTERACTION_TIMEOUT_MS;\n\n const validation = validateTargetSelection(input);\n if (isInvalidTargetSelection(validation)) {\n return createErrorResponse(\n ErrorCodes.MM_INVALID_INPUT,\n validation.error,\n { input },\n sessionId,\n startTime,\n );\n }\n\n if (!isValidTargetSelection(validation)) {\n return createErrorResponse(\n ErrorCodes.MM_INVALID_INPUT,\n 'Invalid target selection',\n { input },\n sessionId,\n startTime,\n );\n }\n\n const { type: targetType, value: targetValue } = validation;\n\n return runTool<TypeInput, TypeResult>({\n toolName: 'mm_type',\n input,\n options,\n\n /**\n * Executes the type action on the target element.\n *\n * @param context The tool execution context containing page and reference map\n * @returns Promise resolving to type result with success status and text length\n */\n execute: async (context) => {\n const locator = await waitForTarget(\n context.page,\n targetType,\n targetValue,\n context.refMap,\n timeoutMs,\n );\n await locator.fill(input.text);\n\n return {\n typed: true,\n target: `${targetType}:${targetValue}`,\n textLength: input.text.length,\n };\n },\n\n /**\n * Returns the target element information for recording.\n *\n * @returns Object containing the target type and value\n */\n getTarget: () => ({ [targetType]: targetValue }),\n\n classifyError: classifyTypeError,\n\n /**\n * Sanitizes input for knowledge store recording.\n *\n * @returns Sanitized input object with timeout and text information\n */\n sanitizeInputForRecording: () => ({\n timeoutMs,\n text: input.text,\n testId: input.testId,\n selector: input.selector,\n a11yRef: input.a11yRef,\n }),\n });\n}\n\n/**\n * Handles waiting for an element to become visible.\n *\n * @param input The wait input containing target selection and timeout options\n * @param options Optional handler configuration\n * @returns Promise resolving to wait result with target information\n */\nexport async function handleWaitFor(\n input: WaitForInput,\n options?: HandlerOptions,\n): Promise<McpResponse<WaitForResult>> {\n const startTime = Date.now();\n const sessionManager = getSessionManager();\n const sessionId = sessionManager.getSessionId();\n const timeoutMs = input.timeoutMs ?? DEFAULT_INTERACTION_TIMEOUT_MS;\n\n const validation = validateTargetSelection(input);\n if (isInvalidTargetSelection(validation)) {\n return createErrorResponse(\n ErrorCodes.MM_INVALID_INPUT,\n validation.error,\n { input },\n sessionId,\n startTime,\n );\n }\n\n if (!isValidTargetSelection(validation)) {\n return createErrorResponse(\n ErrorCodes.MM_INVALID_INPUT,\n 'Invalid target selection',\n { input },\n sessionId,\n startTime,\n );\n }\n\n const { type: targetType, value: targetValue } = validation;\n\n return runTool<WaitForInput, WaitForResult>({\n toolName: 'mm_wait_for',\n input,\n options,\n\n /**\n * Executes the wait action for the target element.\n *\n * @param context The tool execution context containing page and reference map\n * @returns Promise resolving to wait result with success status and target info\n */\n execute: async (context) => {\n await waitForTarget(\n context.page,\n targetType,\n targetValue,\n context.refMap,\n timeoutMs,\n );\n\n return {\n found: true,\n target: `${targetType}:${targetValue}`,\n };\n },\n\n /**\n * Returns the target element information for recording.\n *\n * @returns Object containing the target type and value\n */\n getTarget: () => ({ [targetType]: targetValue }),\n\n classifyError: classifyWaitError,\n\n /**\n * Sanitizes input for knowledge store recording.\n *\n * @returns Sanitized input object with timeout information\n */\n sanitizeInputForRecording: () => ({ timeoutMs }),\n });\n}\n"]}
@@ -0,0 +1,120 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.handleKnowledgeLast = handleKnowledgeLast;
4
+ exports.handleKnowledgeSearch = handleKnowledgeSearch;
5
+ exports.handleKnowledgeSummarize = handleKnowledgeSummarize;
6
+ exports.handleKnowledgeSessions = handleKnowledgeSessions;
7
+ const knowledge_store_js_1 = require("../knowledge-store.cjs");
8
+ const session_manager_js_1 = require("../session-manager.cjs");
9
+ const types_1 = require("../types/index.cjs");
10
+ const utils_1 = require("../utils/index.cjs");
11
+ /**
12
+ * Handles retrieving the last N steps from knowledge store.
13
+ *
14
+ * @param input - Input with number of steps and scope.
15
+ * @param _options - Handler options (unused).
16
+ * @returns Response with step records.
17
+ */
18
+ async function handleKnowledgeLast(input, _options) {
19
+ const startTime = Date.now();
20
+ const sessionManager = (0, session_manager_js_1.getSessionManager)();
21
+ const sessionId = sessionManager.getSessionId();
22
+ const nSteps = input.n ?? 20;
23
+ const scope = input.scope ?? 'current';
24
+ try {
25
+ const steps = await knowledge_store_js_1.knowledgeStore.getLastSteps(nSteps, scope, sessionId, input.filters);
26
+ return (0, utils_1.createSuccessResponse)({ steps }, sessionId, startTime);
27
+ }
28
+ catch (error) {
29
+ const message = (0, utils_1.extractErrorMessage)(error);
30
+ return (0, utils_1.createErrorResponse)(types_1.ErrorCodes.MM_KNOWLEDGE_ERROR, `Failed to retrieve steps: ${message}`, { nSteps, scope }, sessionId, startTime);
31
+ }
32
+ }
33
+ /**
34
+ * Handles searching step records in knowledge store.
35
+ *
36
+ * @param input - Input with search query and filters.
37
+ * @param _options - Handler options (unused).
38
+ * @returns Response with matching steps.
39
+ */
40
+ async function handleKnowledgeSearch(input, _options) {
41
+ const startTime = Date.now();
42
+ const sessionManager = (0, session_manager_js_1.getSessionManager)();
43
+ const sessionId = sessionManager.getSessionId();
44
+ const limit = input.limit ?? 20;
45
+ const scope = input.scope ?? 'all';
46
+ try {
47
+ const matches = await knowledge_store_js_1.knowledgeStore.searchSteps(input.query, limit, scope, sessionId, input.filters);
48
+ return (0, utils_1.createSuccessResponse)({
49
+ matches,
50
+ query: input.query,
51
+ }, sessionId, startTime);
52
+ }
53
+ catch (error) {
54
+ const message = (0, utils_1.extractErrorMessage)(error);
55
+ return (0, utils_1.createErrorResponse)(types_1.ErrorCodes.MM_KNOWLEDGE_ERROR, `Search failed: ${message}`, { query: input.query, limit, scope }, sessionId, startTime);
56
+ }
57
+ }
58
+ /**
59
+ * Handles summarizing a session's steps as a recipe.
60
+ *
61
+ * @param input - Input with session scope or ID.
62
+ * @param _options - Handler options (unused).
63
+ * @returns Response with session summary.
64
+ */
65
+ async function handleKnowledgeSummarize(input, _options) {
66
+ const startTime = Date.now();
67
+ const sessionManager = (0, session_manager_js_1.getSessionManager)();
68
+ const currentSessionId = sessionManager.getSessionId();
69
+ let targetSessionId;
70
+ if (input.sessionId) {
71
+ targetSessionId = input.sessionId;
72
+ }
73
+ else if (input.scope) {
74
+ if (input.scope === 'all') {
75
+ return (0, utils_1.createErrorResponse)(types_1.ErrorCodes.MM_INVALID_INPUT, 'Cannot summarize all sessions. Use scope="current" or provide a specific sessionId.', { input }, currentSessionId, startTime);
76
+ }
77
+ else if (input.scope === 'current') {
78
+ targetSessionId = currentSessionId;
79
+ }
80
+ else if (typeof input.scope === 'object' && 'sessionId' in input.scope) {
81
+ targetSessionId = input.scope.sessionId;
82
+ }
83
+ }
84
+ else {
85
+ targetSessionId = currentSessionId;
86
+ }
87
+ if (!targetSessionId) {
88
+ return (0, utils_1.createErrorResponse)(types_1.ErrorCodes.MM_INVALID_INPUT, 'No sessionId provided and no active session', { input }, undefined, startTime);
89
+ }
90
+ try {
91
+ const summary = await knowledge_store_js_1.knowledgeStore.summarizeSession(targetSessionId);
92
+ return (0, utils_1.createSuccessResponse)(summary, targetSessionId, startTime);
93
+ }
94
+ catch (error) {
95
+ const message = (0, utils_1.extractErrorMessage)(error);
96
+ return (0, utils_1.createErrorResponse)(types_1.ErrorCodes.MM_KNOWLEDGE_ERROR, `Summarize failed: ${message}`, { sessionId: targetSessionId }, targetSessionId, startTime);
97
+ }
98
+ }
99
+ /**
100
+ * Handles listing recent sessions with metadata.
101
+ *
102
+ * @param input - Input with limit and filters.
103
+ * @param _options - Handler options (unused).
104
+ * @returns Response with session list.
105
+ */
106
+ async function handleKnowledgeSessions(input, _options) {
107
+ const startTime = Date.now();
108
+ const sessionManager = (0, session_manager_js_1.getSessionManager)();
109
+ const sessionId = sessionManager.getSessionId();
110
+ const limit = input.limit ?? 10;
111
+ try {
112
+ const sessions = await knowledge_store_js_1.knowledgeStore.listSessions(limit, input.filters);
113
+ return (0, utils_1.createSuccessResponse)({ sessions }, sessionId, startTime);
114
+ }
115
+ catch (error) {
116
+ const message = (0, utils_1.extractErrorMessage)(error);
117
+ return (0, utils_1.createErrorResponse)(types_1.ErrorCodes.MM_KNOWLEDGE_ERROR, `Failed to list sessions: ${message}`, { limit, filters: input.filters }, sessionId, startTime);
118
+ }
119
+ }
120
+ //# sourceMappingURL=knowledge.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"knowledge.cjs","sourceRoot":"","sources":["../../../src/mcp-server/tools/knowledge.ts"],"names":[],"mappings":"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","sourcesContent":["import { knowledgeStore } from '../knowledge-store.js';\nimport { getSessionManager } from '../session-manager.js';\nimport type {\n KnowledgeLastInput,\n KnowledgeLastResult,\n KnowledgeSearchInput,\n KnowledgeSearchResult,\n KnowledgeSummarizeInput,\n KnowledgeSummarizeResult,\n KnowledgeSessionsInput,\n KnowledgeSessionsResult,\n KnowledgeScope,\n McpResponse,\n HandlerOptions,\n} from '../types';\nimport { ErrorCodes } from '../types';\nimport {\n createSuccessResponse,\n createErrorResponse,\n extractErrorMessage,\n} from '../utils';\n\n/**\n * Handles retrieving the last N steps from knowledge store.\n *\n * @param input - Input with number of steps and scope.\n * @param _options - Handler options (unused).\n * @returns Response with step records.\n */\nexport async function handleKnowledgeLast(\n input: KnowledgeLastInput,\n _options?: HandlerOptions,\n): Promise<McpResponse<KnowledgeLastResult>> {\n const startTime = Date.now();\n const sessionManager = getSessionManager();\n const sessionId = sessionManager.getSessionId();\n const nSteps = input.n ?? 20;\n const scope: KnowledgeScope = input.scope ?? 'current';\n\n try {\n const steps = await knowledgeStore.getLastSteps(\n nSteps,\n scope,\n sessionId,\n input.filters,\n );\n\n return createSuccessResponse<KnowledgeLastResult>(\n { steps },\n sessionId,\n startTime,\n );\n } catch (error) {\n const message = extractErrorMessage(error);\n return createErrorResponse(\n ErrorCodes.MM_KNOWLEDGE_ERROR,\n `Failed to retrieve steps: ${message}`,\n { nSteps, scope },\n sessionId,\n startTime,\n );\n }\n}\n\n/**\n * Handles searching step records in knowledge store.\n *\n * @param input - Input with search query and filters.\n * @param _options - Handler options (unused).\n * @returns Response with matching steps.\n */\nexport async function handleKnowledgeSearch(\n input: KnowledgeSearchInput,\n _options?: HandlerOptions,\n): Promise<McpResponse<KnowledgeSearchResult>> {\n const startTime = Date.now();\n const sessionManager = getSessionManager();\n const sessionId = sessionManager.getSessionId();\n const limit = input.limit ?? 20;\n const scope: KnowledgeScope = input.scope ?? 'all';\n\n try {\n const matches = await knowledgeStore.searchSteps(\n input.query,\n limit,\n scope,\n sessionId,\n input.filters,\n );\n\n return createSuccessResponse<KnowledgeSearchResult>(\n {\n matches,\n query: input.query,\n },\n sessionId,\n startTime,\n );\n } catch (error) {\n const message = extractErrorMessage(error);\n return createErrorResponse(\n ErrorCodes.MM_KNOWLEDGE_ERROR,\n `Search failed: ${message}`,\n { query: input.query, limit, scope },\n sessionId,\n startTime,\n );\n }\n}\n\n/**\n * Handles summarizing a session's steps as a recipe.\n *\n * @param input - Input with session scope or ID.\n * @param _options - Handler options (unused).\n * @returns Response with session summary.\n */\nexport async function handleKnowledgeSummarize(\n input: KnowledgeSummarizeInput,\n _options?: HandlerOptions,\n): Promise<McpResponse<KnowledgeSummarizeResult>> {\n const startTime = Date.now();\n const sessionManager = getSessionManager();\n const currentSessionId = sessionManager.getSessionId();\n\n let targetSessionId: string | undefined;\n\n if (input.sessionId) {\n targetSessionId = input.sessionId;\n } else if (input.scope) {\n if (input.scope === 'all') {\n return createErrorResponse(\n ErrorCodes.MM_INVALID_INPUT,\n 'Cannot summarize all sessions. Use scope=\"current\" or provide a specific sessionId.',\n { input },\n currentSessionId,\n startTime,\n );\n } else if (input.scope === 'current') {\n targetSessionId = currentSessionId;\n } else if (typeof input.scope === 'object' && 'sessionId' in input.scope) {\n targetSessionId = input.scope.sessionId;\n }\n } else {\n targetSessionId = currentSessionId;\n }\n\n if (!targetSessionId) {\n return createErrorResponse(\n ErrorCodes.MM_INVALID_INPUT,\n 'No sessionId provided and no active session',\n { input },\n undefined,\n startTime,\n );\n }\n\n try {\n const summary = await knowledgeStore.summarizeSession(targetSessionId);\n\n return createSuccessResponse<KnowledgeSummarizeResult>(\n summary,\n targetSessionId,\n startTime,\n );\n } catch (error) {\n const message = extractErrorMessage(error);\n return createErrorResponse(\n ErrorCodes.MM_KNOWLEDGE_ERROR,\n `Summarize failed: ${message}`,\n { sessionId: targetSessionId },\n targetSessionId,\n startTime,\n );\n }\n}\n\n/**\n * Handles listing recent sessions with metadata.\n *\n * @param input - Input with limit and filters.\n * @param _options - Handler options (unused).\n * @returns Response with session list.\n */\nexport async function handleKnowledgeSessions(\n input: KnowledgeSessionsInput,\n _options?: HandlerOptions,\n): Promise<McpResponse<KnowledgeSessionsResult>> {\n const startTime = Date.now();\n const sessionManager = getSessionManager();\n const sessionId = sessionManager.getSessionId();\n const limit = input.limit ?? 10;\n\n try {\n const sessions = await knowledgeStore.listSessions(limit, input.filters);\n\n return createSuccessResponse<KnowledgeSessionsResult>(\n { sessions },\n sessionId,\n startTime,\n );\n } catch (error) {\n const message = extractErrorMessage(error);\n return createErrorResponse(\n ErrorCodes.MM_KNOWLEDGE_ERROR,\n `Failed to list sessions: ${message}`,\n { limit, filters: input.filters },\n sessionId,\n startTime,\n );\n }\n}\n"]}
@@ -0,0 +1,34 @@
1
+ import type { KnowledgeLastInput, KnowledgeLastResult, KnowledgeSearchInput, KnowledgeSearchResult, KnowledgeSummarizeInput, KnowledgeSummarizeResult, KnowledgeSessionsInput, KnowledgeSessionsResult, McpResponse, HandlerOptions } from "../types/index.cjs";
2
+ /**
3
+ * Handles retrieving the last N steps from knowledge store.
4
+ *
5
+ * @param input - Input with number of steps and scope.
6
+ * @param _options - Handler options (unused).
7
+ * @returns Response with step records.
8
+ */
9
+ export declare function handleKnowledgeLast(input: KnowledgeLastInput, _options?: HandlerOptions): Promise<McpResponse<KnowledgeLastResult>>;
10
+ /**
11
+ * Handles searching step records in knowledge store.
12
+ *
13
+ * @param input - Input with search query and filters.
14
+ * @param _options - Handler options (unused).
15
+ * @returns Response with matching steps.
16
+ */
17
+ export declare function handleKnowledgeSearch(input: KnowledgeSearchInput, _options?: HandlerOptions): Promise<McpResponse<KnowledgeSearchResult>>;
18
+ /**
19
+ * Handles summarizing a session's steps as a recipe.
20
+ *
21
+ * @param input - Input with session scope or ID.
22
+ * @param _options - Handler options (unused).
23
+ * @returns Response with session summary.
24
+ */
25
+ export declare function handleKnowledgeSummarize(input: KnowledgeSummarizeInput, _options?: HandlerOptions): Promise<McpResponse<KnowledgeSummarizeResult>>;
26
+ /**
27
+ * Handles listing recent sessions with metadata.
28
+ *
29
+ * @param input - Input with limit and filters.
30
+ * @param _options - Handler options (unused).
31
+ * @returns Response with session list.
32
+ */
33
+ export declare function handleKnowledgeSessions(input: KnowledgeSessionsInput, _options?: HandlerOptions): Promise<McpResponse<KnowledgeSessionsResult>>;
34
+ //# sourceMappingURL=knowledge.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"knowledge.d.cts","sourceRoot":"","sources":["../../../src/mcp-server/tools/knowledge.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,kBAAkB,EAClB,mBAAmB,EACnB,oBAAoB,EACpB,qBAAqB,EACrB,uBAAuB,EACvB,wBAAwB,EACxB,sBAAsB,EACtB,uBAAuB,EAEvB,WAAW,EACX,cAAc,EACf,2BAAiB;AAQlB;;;;;;GAMG;AACH,wBAAsB,mBAAmB,CACvC,KAAK,EAAE,kBAAkB,EACzB,QAAQ,CAAC,EAAE,cAAc,GACxB,OAAO,CAAC,WAAW,CAAC,mBAAmB,CAAC,CAAC,CA8B3C;AAED;;;;;;GAMG;AACH,wBAAsB,qBAAqB,CACzC,KAAK,EAAE,oBAAoB,EAC3B,QAAQ,CAAC,EAAE,cAAc,GACxB,OAAO,CAAC,WAAW,CAAC,qBAAqB,CAAC,CAAC,CAkC7C;AAED;;;;;;GAMG;AACH,wBAAsB,wBAAwB,CAC5C,KAAK,EAAE,uBAAuB,EAC9B,QAAQ,CAAC,EAAE,cAAc,GACxB,OAAO,CAAC,WAAW,CAAC,wBAAwB,CAAC,CAAC,CAuDhD;AAED;;;;;;GAMG;AACH,wBAAsB,uBAAuB,CAC3C,KAAK,EAAE,sBAAsB,EAC7B,QAAQ,CAAC,EAAE,cAAc,GACxB,OAAO,CAAC,WAAW,CAAC,uBAAuB,CAAC,CAAC,CAwB/C"}
@@ -0,0 +1,34 @@
1
+ import type { KnowledgeLastInput, KnowledgeLastResult, KnowledgeSearchInput, KnowledgeSearchResult, KnowledgeSummarizeInput, KnowledgeSummarizeResult, KnowledgeSessionsInput, KnowledgeSessionsResult, McpResponse, HandlerOptions } from "../types/index.mjs";
2
+ /**
3
+ * Handles retrieving the last N steps from knowledge store.
4
+ *
5
+ * @param input - Input with number of steps and scope.
6
+ * @param _options - Handler options (unused).
7
+ * @returns Response with step records.
8
+ */
9
+ export declare function handleKnowledgeLast(input: KnowledgeLastInput, _options?: HandlerOptions): Promise<McpResponse<KnowledgeLastResult>>;
10
+ /**
11
+ * Handles searching step records in knowledge store.
12
+ *
13
+ * @param input - Input with search query and filters.
14
+ * @param _options - Handler options (unused).
15
+ * @returns Response with matching steps.
16
+ */
17
+ export declare function handleKnowledgeSearch(input: KnowledgeSearchInput, _options?: HandlerOptions): Promise<McpResponse<KnowledgeSearchResult>>;
18
+ /**
19
+ * Handles summarizing a session's steps as a recipe.
20
+ *
21
+ * @param input - Input with session scope or ID.
22
+ * @param _options - Handler options (unused).
23
+ * @returns Response with session summary.
24
+ */
25
+ export declare function handleKnowledgeSummarize(input: KnowledgeSummarizeInput, _options?: HandlerOptions): Promise<McpResponse<KnowledgeSummarizeResult>>;
26
+ /**
27
+ * Handles listing recent sessions with metadata.
28
+ *
29
+ * @param input - Input with limit and filters.
30
+ * @param _options - Handler options (unused).
31
+ * @returns Response with session list.
32
+ */
33
+ export declare function handleKnowledgeSessions(input: KnowledgeSessionsInput, _options?: HandlerOptions): Promise<McpResponse<KnowledgeSessionsResult>>;
34
+ //# sourceMappingURL=knowledge.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"knowledge.d.mts","sourceRoot":"","sources":["../../../src/mcp-server/tools/knowledge.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,kBAAkB,EAClB,mBAAmB,EACnB,oBAAoB,EACpB,qBAAqB,EACrB,uBAAuB,EACvB,wBAAwB,EACxB,sBAAsB,EACtB,uBAAuB,EAEvB,WAAW,EACX,cAAc,EACf,2BAAiB;AAQlB;;;;;;GAMG;AACH,wBAAsB,mBAAmB,CACvC,KAAK,EAAE,kBAAkB,EACzB,QAAQ,CAAC,EAAE,cAAc,GACxB,OAAO,CAAC,WAAW,CAAC,mBAAmB,CAAC,CAAC,CA8B3C;AAED;;;;;;GAMG;AACH,wBAAsB,qBAAqB,CACzC,KAAK,EAAE,oBAAoB,EAC3B,QAAQ,CAAC,EAAE,cAAc,GACxB,OAAO,CAAC,WAAW,CAAC,qBAAqB,CAAC,CAAC,CAkC7C;AAED;;;;;;GAMG;AACH,wBAAsB,wBAAwB,CAC5C,KAAK,EAAE,uBAAuB,EAC9B,QAAQ,CAAC,EAAE,cAAc,GACxB,OAAO,CAAC,WAAW,CAAC,wBAAwB,CAAC,CAAC,CAuDhD;AAED;;;;;;GAMG;AACH,wBAAsB,uBAAuB,CAC3C,KAAK,EAAE,sBAAsB,EAC7B,QAAQ,CAAC,EAAE,cAAc,GACxB,OAAO,CAAC,WAAW,CAAC,uBAAuB,CAAC,CAAC,CAwB/C"}
@@ -0,0 +1,114 @@
1
+ import { knowledgeStore } from "../knowledge-store.mjs";
2
+ import { getSessionManager } from "../session-manager.mjs";
3
+ import { ErrorCodes } from "../types/index.mjs";
4
+ import { createSuccessResponse, createErrorResponse, extractErrorMessage } from "../utils/index.mjs";
5
+ /**
6
+ * Handles retrieving the last N steps from knowledge store.
7
+ *
8
+ * @param input - Input with number of steps and scope.
9
+ * @param _options - Handler options (unused).
10
+ * @returns Response with step records.
11
+ */
12
+ export async function handleKnowledgeLast(input, _options) {
13
+ const startTime = Date.now();
14
+ const sessionManager = getSessionManager();
15
+ const sessionId = sessionManager.getSessionId();
16
+ const nSteps = input.n ?? 20;
17
+ const scope = input.scope ?? 'current';
18
+ try {
19
+ const steps = await knowledgeStore.getLastSteps(nSteps, scope, sessionId, input.filters);
20
+ return createSuccessResponse({ steps }, sessionId, startTime);
21
+ }
22
+ catch (error) {
23
+ const message = extractErrorMessage(error);
24
+ return createErrorResponse(ErrorCodes.MM_KNOWLEDGE_ERROR, `Failed to retrieve steps: ${message}`, { nSteps, scope }, sessionId, startTime);
25
+ }
26
+ }
27
+ /**
28
+ * Handles searching step records in knowledge store.
29
+ *
30
+ * @param input - Input with search query and filters.
31
+ * @param _options - Handler options (unused).
32
+ * @returns Response with matching steps.
33
+ */
34
+ export async function handleKnowledgeSearch(input, _options) {
35
+ const startTime = Date.now();
36
+ const sessionManager = getSessionManager();
37
+ const sessionId = sessionManager.getSessionId();
38
+ const limit = input.limit ?? 20;
39
+ const scope = input.scope ?? 'all';
40
+ try {
41
+ const matches = await knowledgeStore.searchSteps(input.query, limit, scope, sessionId, input.filters);
42
+ return createSuccessResponse({
43
+ matches,
44
+ query: input.query,
45
+ }, sessionId, startTime);
46
+ }
47
+ catch (error) {
48
+ const message = extractErrorMessage(error);
49
+ return createErrorResponse(ErrorCodes.MM_KNOWLEDGE_ERROR, `Search failed: ${message}`, { query: input.query, limit, scope }, sessionId, startTime);
50
+ }
51
+ }
52
+ /**
53
+ * Handles summarizing a session's steps as a recipe.
54
+ *
55
+ * @param input - Input with session scope or ID.
56
+ * @param _options - Handler options (unused).
57
+ * @returns Response with session summary.
58
+ */
59
+ export async function handleKnowledgeSummarize(input, _options) {
60
+ const startTime = Date.now();
61
+ const sessionManager = getSessionManager();
62
+ const currentSessionId = sessionManager.getSessionId();
63
+ let targetSessionId;
64
+ if (input.sessionId) {
65
+ targetSessionId = input.sessionId;
66
+ }
67
+ else if (input.scope) {
68
+ if (input.scope === 'all') {
69
+ return createErrorResponse(ErrorCodes.MM_INVALID_INPUT, 'Cannot summarize all sessions. Use scope="current" or provide a specific sessionId.', { input }, currentSessionId, startTime);
70
+ }
71
+ else if (input.scope === 'current') {
72
+ targetSessionId = currentSessionId;
73
+ }
74
+ else if (typeof input.scope === 'object' && 'sessionId' in input.scope) {
75
+ targetSessionId = input.scope.sessionId;
76
+ }
77
+ }
78
+ else {
79
+ targetSessionId = currentSessionId;
80
+ }
81
+ if (!targetSessionId) {
82
+ return createErrorResponse(ErrorCodes.MM_INVALID_INPUT, 'No sessionId provided and no active session', { input }, undefined, startTime);
83
+ }
84
+ try {
85
+ const summary = await knowledgeStore.summarizeSession(targetSessionId);
86
+ return createSuccessResponse(summary, targetSessionId, startTime);
87
+ }
88
+ catch (error) {
89
+ const message = extractErrorMessage(error);
90
+ return createErrorResponse(ErrorCodes.MM_KNOWLEDGE_ERROR, `Summarize failed: ${message}`, { sessionId: targetSessionId }, targetSessionId, startTime);
91
+ }
92
+ }
93
+ /**
94
+ * Handles listing recent sessions with metadata.
95
+ *
96
+ * @param input - Input with limit and filters.
97
+ * @param _options - Handler options (unused).
98
+ * @returns Response with session list.
99
+ */
100
+ export async function handleKnowledgeSessions(input, _options) {
101
+ const startTime = Date.now();
102
+ const sessionManager = getSessionManager();
103
+ const sessionId = sessionManager.getSessionId();
104
+ const limit = input.limit ?? 10;
105
+ try {
106
+ const sessions = await knowledgeStore.listSessions(limit, input.filters);
107
+ return createSuccessResponse({ sessions }, sessionId, startTime);
108
+ }
109
+ catch (error) {
110
+ const message = extractErrorMessage(error);
111
+ return createErrorResponse(ErrorCodes.MM_KNOWLEDGE_ERROR, `Failed to list sessions: ${message}`, { limit, filters: input.filters }, sessionId, startTime);
112
+ }
113
+ }
114
+ //# sourceMappingURL=knowledge.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"knowledge.mjs","sourceRoot":"","sources":["../../../src/mcp-server/tools/knowledge.ts"],"names":[],"mappings":"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","sourcesContent":["import { knowledgeStore } from '../knowledge-store.js';\nimport { getSessionManager } from '../session-manager.js';\nimport type {\n KnowledgeLastInput,\n KnowledgeLastResult,\n KnowledgeSearchInput,\n KnowledgeSearchResult,\n KnowledgeSummarizeInput,\n KnowledgeSummarizeResult,\n KnowledgeSessionsInput,\n KnowledgeSessionsResult,\n KnowledgeScope,\n McpResponse,\n HandlerOptions,\n} from '../types';\nimport { ErrorCodes } from '../types';\nimport {\n createSuccessResponse,\n createErrorResponse,\n extractErrorMessage,\n} from '../utils';\n\n/**\n * Handles retrieving the last N steps from knowledge store.\n *\n * @param input - Input with number of steps and scope.\n * @param _options - Handler options (unused).\n * @returns Response with step records.\n */\nexport async function handleKnowledgeLast(\n input: KnowledgeLastInput,\n _options?: HandlerOptions,\n): Promise<McpResponse<KnowledgeLastResult>> {\n const startTime = Date.now();\n const sessionManager = getSessionManager();\n const sessionId = sessionManager.getSessionId();\n const nSteps = input.n ?? 20;\n const scope: KnowledgeScope = input.scope ?? 'current';\n\n try {\n const steps = await knowledgeStore.getLastSteps(\n nSteps,\n scope,\n sessionId,\n input.filters,\n );\n\n return createSuccessResponse<KnowledgeLastResult>(\n { steps },\n sessionId,\n startTime,\n );\n } catch (error) {\n const message = extractErrorMessage(error);\n return createErrorResponse(\n ErrorCodes.MM_KNOWLEDGE_ERROR,\n `Failed to retrieve steps: ${message}`,\n { nSteps, scope },\n sessionId,\n startTime,\n );\n }\n}\n\n/**\n * Handles searching step records in knowledge store.\n *\n * @param input - Input with search query and filters.\n * @param _options - Handler options (unused).\n * @returns Response with matching steps.\n */\nexport async function handleKnowledgeSearch(\n input: KnowledgeSearchInput,\n _options?: HandlerOptions,\n): Promise<McpResponse<KnowledgeSearchResult>> {\n const startTime = Date.now();\n const sessionManager = getSessionManager();\n const sessionId = sessionManager.getSessionId();\n const limit = input.limit ?? 20;\n const scope: KnowledgeScope = input.scope ?? 'all';\n\n try {\n const matches = await knowledgeStore.searchSteps(\n input.query,\n limit,\n scope,\n sessionId,\n input.filters,\n );\n\n return createSuccessResponse<KnowledgeSearchResult>(\n {\n matches,\n query: input.query,\n },\n sessionId,\n startTime,\n );\n } catch (error) {\n const message = extractErrorMessage(error);\n return createErrorResponse(\n ErrorCodes.MM_KNOWLEDGE_ERROR,\n `Search failed: ${message}`,\n { query: input.query, limit, scope },\n sessionId,\n startTime,\n );\n }\n}\n\n/**\n * Handles summarizing a session's steps as a recipe.\n *\n * @param input - Input with session scope or ID.\n * @param _options - Handler options (unused).\n * @returns Response with session summary.\n */\nexport async function handleKnowledgeSummarize(\n input: KnowledgeSummarizeInput,\n _options?: HandlerOptions,\n): Promise<McpResponse<KnowledgeSummarizeResult>> {\n const startTime = Date.now();\n const sessionManager = getSessionManager();\n const currentSessionId = sessionManager.getSessionId();\n\n let targetSessionId: string | undefined;\n\n if (input.sessionId) {\n targetSessionId = input.sessionId;\n } else if (input.scope) {\n if (input.scope === 'all') {\n return createErrorResponse(\n ErrorCodes.MM_INVALID_INPUT,\n 'Cannot summarize all sessions. Use scope=\"current\" or provide a specific sessionId.',\n { input },\n currentSessionId,\n startTime,\n );\n } else if (input.scope === 'current') {\n targetSessionId = currentSessionId;\n } else if (typeof input.scope === 'object' && 'sessionId' in input.scope) {\n targetSessionId = input.scope.sessionId;\n }\n } else {\n targetSessionId = currentSessionId;\n }\n\n if (!targetSessionId) {\n return createErrorResponse(\n ErrorCodes.MM_INVALID_INPUT,\n 'No sessionId provided and no active session',\n { input },\n undefined,\n startTime,\n );\n }\n\n try {\n const summary = await knowledgeStore.summarizeSession(targetSessionId);\n\n return createSuccessResponse<KnowledgeSummarizeResult>(\n summary,\n targetSessionId,\n startTime,\n );\n } catch (error) {\n const message = extractErrorMessage(error);\n return createErrorResponse(\n ErrorCodes.MM_KNOWLEDGE_ERROR,\n `Summarize failed: ${message}`,\n { sessionId: targetSessionId },\n targetSessionId,\n startTime,\n );\n }\n}\n\n/**\n * Handles listing recent sessions with metadata.\n *\n * @param input - Input with limit and filters.\n * @param _options - Handler options (unused).\n * @returns Response with session list.\n */\nexport async function handleKnowledgeSessions(\n input: KnowledgeSessionsInput,\n _options?: HandlerOptions,\n): Promise<McpResponse<KnowledgeSessionsResult>> {\n const startTime = Date.now();\n const sessionManager = getSessionManager();\n const sessionId = sessionManager.getSessionId();\n const limit = input.limit ?? 10;\n\n try {\n const sessions = await knowledgeStore.listSessions(limit, input.filters);\n\n return createSuccessResponse<KnowledgeSessionsResult>(\n { sessions },\n sessionId,\n startTime,\n );\n } catch (error) {\n const message = extractErrorMessage(error);\n return createErrorResponse(\n ErrorCodes.MM_KNOWLEDGE_ERROR,\n `Failed to list sessions: ${message}`,\n { limit, filters: input.filters },\n sessionId,\n startTime,\n );\n }\n}\n"]}