@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,51 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.handleLaunch = handleLaunch;
4
+ const session_manager_js_1 = require("../session-manager.cjs");
5
+ const types_1 = require("../types/index.cjs");
6
+ const utils_1 = require("../utils/index.cjs");
7
+ const PROD_MODE_PREREQUISITES = [
8
+ {
9
+ step: 'Unlock Wallet',
10
+ description: 'The wallet must be unlocked before interacting with it. Use the extension UI to enter your password.',
11
+ },
12
+ {
13
+ step: 'Configure Network',
14
+ description: 'Ensure the correct network is selected (e.g., Ethereum Mainnet, Sepolia, or custom network).',
15
+ },
16
+ {
17
+ step: 'Set Up Accounts',
18
+ description: 'Import or create accounts as needed. Ensure the active account has sufficient funds for transactions.',
19
+ },
20
+ ];
21
+ /**
22
+ * Handles the launch tool request to start a browser session.
23
+ *
24
+ * @param input - The launch configuration parameters.
25
+ * @param _options - Handler options (unused).
26
+ * @returns Response with session info or error.
27
+ */
28
+ async function handleLaunch(input, _options) {
29
+ const startTime = Date.now();
30
+ const sessionManager = (0, session_manager_js_1.getSessionManager)();
31
+ try {
32
+ if (sessionManager.hasActiveSession()) {
33
+ return (0, utils_1.createErrorResponse)(types_1.ErrorCodes.MM_SESSION_ALREADY_RUNNING, 'A session is already running. Call mm_cleanup first.', { currentSessionId: sessionManager.getSessionId() }, sessionManager.getSessionId(), startTime);
34
+ }
35
+ const result = await sessionManager.launch(input);
36
+ const isProdMode = sessionManager.getEnvironmentMode() === 'prod';
37
+ const launchResult = {
38
+ ...result,
39
+ ...(isProdMode && { prerequisites: PROD_MODE_PREREQUISITES }),
40
+ };
41
+ return (0, utils_1.createSuccessResponse)(launchResult, result.sessionId, startTime);
42
+ }
43
+ catch (error) {
44
+ const message = (0, utils_1.extractErrorMessage)(error);
45
+ if (message.includes('EADDRINUSE') || message.includes('port')) {
46
+ return (0, utils_1.createErrorResponse)(types_1.ErrorCodes.MM_PORT_IN_USE, `Port conflict: ${message}`, { input }, undefined, startTime);
47
+ }
48
+ return (0, utils_1.createErrorResponse)(types_1.ErrorCodes.MM_LAUNCH_FAILED, `Launch failed: ${message}`, { input }, undefined, startTime);
49
+ }
50
+ }
51
+ //# sourceMappingURL=launch.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"launch.cjs","sourceRoot":"","sources":["../../../src/mcp-server/tools/launch.ts"],"names":[],"mappings":";;AAwCA,oCAoDC;AA5FD,+DAA0D;AAQ1D,8CAAsC;AACtC,8CAIkB;AAElB,MAAM,uBAAuB,GAAyB;IACpD;QACE,IAAI,EAAE,eAAe;QACrB,WAAW,EACT,sGAAsG;KACzG;IACD;QACE,IAAI,EAAE,mBAAmB;QACzB,WAAW,EACT,8FAA8F;KACjG;IACD;QACE,IAAI,EAAE,iBAAiB;QACvB,WAAW,EACT,uGAAuG;KAC1G;CACF,CAAC;AAEF;;;;;;GAMG;AACI,KAAK,UAAU,YAAY,CAChC,KAAkB,EAClB,QAAyB;IAEzB,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC7B,MAAM,cAAc,GAAG,IAAA,sCAAiB,GAAE,CAAC;IAE3C,IAAI,CAAC;QACH,IAAI,cAAc,CAAC,gBAAgB,EAAE,EAAE,CAAC;YACtC,OAAO,IAAA,2BAAmB,EACxB,kBAAU,CAAC,0BAA0B,EACrC,sDAAsD,EACtD,EAAE,gBAAgB,EAAE,cAAc,CAAC,YAAY,EAAE,EAAE,EACnD,cAAc,CAAC,YAAY,EAAE,EAC7B,SAAS,CACV,CAAC;QACJ,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAElD,MAAM,UAAU,GAAG,cAAc,CAAC,kBAAkB,EAAE,KAAK,MAAM,CAAC;QAClE,MAAM,YAAY,GAAiB;YACjC,GAAG,MAAM;YACT,GAAG,CAAC,UAAU,IAAI,EAAE,aAAa,EAAE,uBAAuB,EAAE,CAAC;SAC9D,CAAC;QAEF,OAAO,IAAA,6BAAqB,EAC1B,YAAY,EACZ,MAAM,CAAC,SAAS,EAChB,SAAS,CACV,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,IAAA,2BAAmB,EAAC,KAAK,CAAC,CAAC;QAE3C,IAAI,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YAC/D,OAAO,IAAA,2BAAmB,EACxB,kBAAU,CAAC,cAAc,EACzB,kBAAkB,OAAO,EAAE,EAC3B,EAAE,KAAK,EAAE,EACT,SAAS,EACT,SAAS,CACV,CAAC;QACJ,CAAC;QAED,OAAO,IAAA,2BAAmB,EACxB,kBAAU,CAAC,gBAAgB,EAC3B,kBAAkB,OAAO,EAAE,EAC3B,EAAE,KAAK,EAAE,EACT,SAAS,EACT,SAAS,CACV,CAAC;IACJ,CAAC;AACH,CAAC","sourcesContent":["import { getSessionManager } from '../session-manager.js';\nimport type {\n LaunchInput,\n LaunchResult,\n LaunchPrerequisite,\n McpResponse,\n HandlerOptions,\n} from '../types';\nimport { ErrorCodes } from '../types';\nimport {\n createSuccessResponse,\n createErrorResponse,\n extractErrorMessage,\n} from '../utils';\n\nconst PROD_MODE_PREREQUISITES: LaunchPrerequisite[] = [\n {\n step: 'Unlock Wallet',\n description:\n 'The wallet must be unlocked before interacting with it. Use the extension UI to enter your password.',\n },\n {\n step: 'Configure Network',\n description:\n 'Ensure the correct network is selected (e.g., Ethereum Mainnet, Sepolia, or custom network).',\n },\n {\n step: 'Set Up Accounts',\n description:\n 'Import or create accounts as needed. Ensure the active account has sufficient funds for transactions.',\n },\n];\n\n/**\n * Handles the launch tool request to start a browser session.\n *\n * @param input - The launch configuration parameters.\n * @param _options - Handler options (unused).\n * @returns Response with session info or error.\n */\nexport async function handleLaunch(\n input: LaunchInput,\n _options?: HandlerOptions,\n): Promise<McpResponse<LaunchResult>> {\n const startTime = Date.now();\n const sessionManager = getSessionManager();\n\n try {\n if (sessionManager.hasActiveSession()) {\n return createErrorResponse(\n ErrorCodes.MM_SESSION_ALREADY_RUNNING,\n 'A session is already running. Call mm_cleanup first.',\n { currentSessionId: sessionManager.getSessionId() },\n sessionManager.getSessionId(),\n startTime,\n );\n }\n\n const result = await sessionManager.launch(input);\n\n const isProdMode = sessionManager.getEnvironmentMode() === 'prod';\n const launchResult: LaunchResult = {\n ...result,\n ...(isProdMode && { prerequisites: PROD_MODE_PREREQUISITES }),\n };\n\n return createSuccessResponse<LaunchResult>(\n launchResult,\n result.sessionId,\n startTime,\n );\n } catch (error) {\n const message = extractErrorMessage(error);\n\n if (message.includes('EADDRINUSE') || message.includes('port')) {\n return createErrorResponse(\n ErrorCodes.MM_PORT_IN_USE,\n `Port conflict: ${message}`,\n { input },\n undefined,\n startTime,\n );\n }\n\n return createErrorResponse(\n ErrorCodes.MM_LAUNCH_FAILED,\n `Launch failed: ${message}`,\n { input },\n undefined,\n startTime,\n );\n }\n}\n"]}
@@ -0,0 +1,10 @@
1
+ import type { LaunchInput, LaunchResult, McpResponse, HandlerOptions } from "../types/index.cjs";
2
+ /**
3
+ * Handles the launch tool request to start a browser session.
4
+ *
5
+ * @param input - The launch configuration parameters.
6
+ * @param _options - Handler options (unused).
7
+ * @returns Response with session info or error.
8
+ */
9
+ export declare function handleLaunch(input: LaunchInput, _options?: HandlerOptions): Promise<McpResponse<LaunchResult>>;
10
+ //# sourceMappingURL=launch.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"launch.d.cts","sourceRoot":"","sources":["../../../src/mcp-server/tools/launch.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,WAAW,EACX,YAAY,EAEZ,WAAW,EACX,cAAc,EACf,2BAAiB;AA0BlB;;;;;;GAMG;AACH,wBAAsB,YAAY,CAChC,KAAK,EAAE,WAAW,EAClB,QAAQ,CAAC,EAAE,cAAc,GACxB,OAAO,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,CAiDpC"}
@@ -0,0 +1,10 @@
1
+ import type { LaunchInput, LaunchResult, McpResponse, HandlerOptions } from "../types/index.mjs";
2
+ /**
3
+ * Handles the launch tool request to start a browser session.
4
+ *
5
+ * @param input - The launch configuration parameters.
6
+ * @param _options - Handler options (unused).
7
+ * @returns Response with session info or error.
8
+ */
9
+ export declare function handleLaunch(input: LaunchInput, _options?: HandlerOptions): Promise<McpResponse<LaunchResult>>;
10
+ //# sourceMappingURL=launch.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"launch.d.mts","sourceRoot":"","sources":["../../../src/mcp-server/tools/launch.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,WAAW,EACX,YAAY,EAEZ,WAAW,EACX,cAAc,EACf,2BAAiB;AA0BlB;;;;;;GAMG;AACH,wBAAsB,YAAY,CAChC,KAAK,EAAE,WAAW,EAClB,QAAQ,CAAC,EAAE,cAAc,GACxB,OAAO,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,CAiDpC"}
@@ -0,0 +1,48 @@
1
+ import { getSessionManager } from "../session-manager.mjs";
2
+ import { ErrorCodes } from "../types/index.mjs";
3
+ import { createSuccessResponse, createErrorResponse, extractErrorMessage } from "../utils/index.mjs";
4
+ const PROD_MODE_PREREQUISITES = [
5
+ {
6
+ step: 'Unlock Wallet',
7
+ description: 'The wallet must be unlocked before interacting with it. Use the extension UI to enter your password.',
8
+ },
9
+ {
10
+ step: 'Configure Network',
11
+ description: 'Ensure the correct network is selected (e.g., Ethereum Mainnet, Sepolia, or custom network).',
12
+ },
13
+ {
14
+ step: 'Set Up Accounts',
15
+ description: 'Import or create accounts as needed. Ensure the active account has sufficient funds for transactions.',
16
+ },
17
+ ];
18
+ /**
19
+ * Handles the launch tool request to start a browser session.
20
+ *
21
+ * @param input - The launch configuration parameters.
22
+ * @param _options - Handler options (unused).
23
+ * @returns Response with session info or error.
24
+ */
25
+ export async function handleLaunch(input, _options) {
26
+ const startTime = Date.now();
27
+ const sessionManager = getSessionManager();
28
+ try {
29
+ if (sessionManager.hasActiveSession()) {
30
+ return createErrorResponse(ErrorCodes.MM_SESSION_ALREADY_RUNNING, 'A session is already running. Call mm_cleanup first.', { currentSessionId: sessionManager.getSessionId() }, sessionManager.getSessionId(), startTime);
31
+ }
32
+ const result = await sessionManager.launch(input);
33
+ const isProdMode = sessionManager.getEnvironmentMode() === 'prod';
34
+ const launchResult = {
35
+ ...result,
36
+ ...(isProdMode && { prerequisites: PROD_MODE_PREREQUISITES }),
37
+ };
38
+ return createSuccessResponse(launchResult, result.sessionId, startTime);
39
+ }
40
+ catch (error) {
41
+ const message = extractErrorMessage(error);
42
+ if (message.includes('EADDRINUSE') || message.includes('port')) {
43
+ return createErrorResponse(ErrorCodes.MM_PORT_IN_USE, `Port conflict: ${message}`, { input }, undefined, startTime);
44
+ }
45
+ return createErrorResponse(ErrorCodes.MM_LAUNCH_FAILED, `Launch failed: ${message}`, { input }, undefined, startTime);
46
+ }
47
+ }
48
+ //# sourceMappingURL=launch.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"launch.mjs","sourceRoot":"","sources":["../../../src/mcp-server/tools/launch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,+BAA8B;AAQ1D,OAAO,EAAE,UAAU,EAAE,2BAAiB;AACtC,OAAO,EACL,qBAAqB,EACrB,mBAAmB,EACnB,mBAAmB,EACpB,2BAAiB;AAElB,MAAM,uBAAuB,GAAyB;IACpD;QACE,IAAI,EAAE,eAAe;QACrB,WAAW,EACT,sGAAsG;KACzG;IACD;QACE,IAAI,EAAE,mBAAmB;QACzB,WAAW,EACT,8FAA8F;KACjG;IACD;QACE,IAAI,EAAE,iBAAiB;QACvB,WAAW,EACT,uGAAuG;KAC1G;CACF,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,KAAkB,EAClB,QAAyB;IAEzB,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC7B,MAAM,cAAc,GAAG,iBAAiB,EAAE,CAAC;IAE3C,IAAI,CAAC;QACH,IAAI,cAAc,CAAC,gBAAgB,EAAE,EAAE,CAAC;YACtC,OAAO,mBAAmB,CACxB,UAAU,CAAC,0BAA0B,EACrC,sDAAsD,EACtD,EAAE,gBAAgB,EAAE,cAAc,CAAC,YAAY,EAAE,EAAE,EACnD,cAAc,CAAC,YAAY,EAAE,EAC7B,SAAS,CACV,CAAC;QACJ,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAElD,MAAM,UAAU,GAAG,cAAc,CAAC,kBAAkB,EAAE,KAAK,MAAM,CAAC;QAClE,MAAM,YAAY,GAAiB;YACjC,GAAG,MAAM;YACT,GAAG,CAAC,UAAU,IAAI,EAAE,aAAa,EAAE,uBAAuB,EAAE,CAAC;SAC9D,CAAC;QAEF,OAAO,qBAAqB,CAC1B,YAAY,EACZ,MAAM,CAAC,SAAS,EAChB,SAAS,CACV,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;QAE3C,IAAI,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YAC/D,OAAO,mBAAmB,CACxB,UAAU,CAAC,cAAc,EACzB,kBAAkB,OAAO,EAAE,EAC3B,EAAE,KAAK,EAAE,EACT,SAAS,EACT,SAAS,CACV,CAAC;QACJ,CAAC;QAED,OAAO,mBAAmB,CACxB,UAAU,CAAC,gBAAgB,EAC3B,kBAAkB,OAAO,EAAE,EAC3B,EAAE,KAAK,EAAE,EACT,SAAS,EACT,SAAS,CACV,CAAC;IACJ,CAAC;AACH,CAAC","sourcesContent":["import { getSessionManager } from '../session-manager.js';\nimport type {\n LaunchInput,\n LaunchResult,\n LaunchPrerequisite,\n McpResponse,\n HandlerOptions,\n} from '../types';\nimport { ErrorCodes } from '../types';\nimport {\n createSuccessResponse,\n createErrorResponse,\n extractErrorMessage,\n} from '../utils';\n\nconst PROD_MODE_PREREQUISITES: LaunchPrerequisite[] = [\n {\n step: 'Unlock Wallet',\n description:\n 'The wallet must be unlocked before interacting with it. Use the extension UI to enter your password.',\n },\n {\n step: 'Configure Network',\n description:\n 'Ensure the correct network is selected (e.g., Ethereum Mainnet, Sepolia, or custom network).',\n },\n {\n step: 'Set Up Accounts',\n description:\n 'Import or create accounts as needed. Ensure the active account has sufficient funds for transactions.',\n },\n];\n\n/**\n * Handles the launch tool request to start a browser session.\n *\n * @param input - The launch configuration parameters.\n * @param _options - Handler options (unused).\n * @returns Response with session info or error.\n */\nexport async function handleLaunch(\n input: LaunchInput,\n _options?: HandlerOptions,\n): Promise<McpResponse<LaunchResult>> {\n const startTime = Date.now();\n const sessionManager = getSessionManager();\n\n try {\n if (sessionManager.hasActiveSession()) {\n return createErrorResponse(\n ErrorCodes.MM_SESSION_ALREADY_RUNNING,\n 'A session is already running. Call mm_cleanup first.',\n { currentSessionId: sessionManager.getSessionId() },\n sessionManager.getSessionId(),\n startTime,\n );\n }\n\n const result = await sessionManager.launch(input);\n\n const isProdMode = sessionManager.getEnvironmentMode() === 'prod';\n const launchResult: LaunchResult = {\n ...result,\n ...(isProdMode && { prerequisites: PROD_MODE_PREREQUISITES }),\n };\n\n return createSuccessResponse<LaunchResult>(\n launchResult,\n result.sessionId,\n startTime,\n );\n } catch (error) {\n const message = extractErrorMessage(error);\n\n if (message.includes('EADDRINUSE') || message.includes('port')) {\n return createErrorResponse(\n ErrorCodes.MM_PORT_IN_USE,\n `Port conflict: ${message}`,\n { input },\n undefined,\n startTime,\n );\n }\n\n return createErrorResponse(\n ErrorCodes.MM_LAUNCH_FAILED,\n `Launch failed: ${message}`,\n { input },\n undefined,\n startTime,\n );\n }\n}\n"]}
@@ -0,0 +1,242 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.handleNavigate = handleNavigate;
4
+ exports.handleWaitForNotification = handleWaitForNotification;
5
+ exports.handleSwitchToTab = handleSwitchToTab;
6
+ exports.handleCloseTab = handleCloseTab;
7
+ const constants_js_1 = require("../constants.cjs");
8
+ const session_manager_js_1 = require("../session-manager.cjs");
9
+ const error_classification_js_1 = require("./error-classification.cjs");
10
+ const run_tool_js_1 = require("./run-tool.cjs");
11
+ const types_1 = require("../types/index.cjs");
12
+ const utils_1 = require("../utils/index.cjs");
13
+ /**
14
+ * Handles navigation to a specific screen or URL.
15
+ *
16
+ * @param input The navigate input containing target screen and optional URL
17
+ * @param options Optional handler configuration
18
+ * @returns Promise resolving to navigate result with current URL information
19
+ */
20
+ async function handleNavigate(input, options) {
21
+ const startTime = Date.now();
22
+ const sessionManager = (0, session_manager_js_1.getSessionManager)();
23
+ const sessionId = sessionManager.getSessionId();
24
+ if (input.screen === 'url' && !input.url) {
25
+ return (0, utils_1.createErrorResponse)(types_1.ErrorCodes.MM_INVALID_INPUT, 'url is required when screen is "url"', { input }, sessionId, startTime);
26
+ }
27
+ const validScreens = ['home', 'settings', 'url', 'notification'];
28
+ if (!validScreens.includes(input.screen)) {
29
+ return (0, utils_1.createErrorResponse)(types_1.ErrorCodes.MM_INVALID_INPUT, `Unknown screen: ${String(input.screen)}`, { input }, sessionId, startTime);
30
+ }
31
+ return (0, run_tool_js_1.runTool)({
32
+ toolName: 'mm_navigate',
33
+ input,
34
+ options,
35
+ /**
36
+ * Executes the navigation action to the target screen.
37
+ *
38
+ * @param context The tool execution context containing page and reference map
39
+ * @returns Promise resolving to navigate result with success status and URL
40
+ */
41
+ execute: async (context) => {
42
+ switch (input.screen) {
43
+ case 'home':
44
+ await sessionManager.navigateToHome();
45
+ break;
46
+ case 'settings':
47
+ await sessionManager.navigateToSettings();
48
+ break;
49
+ case 'url':
50
+ await sessionManager.navigateToUrl(input.url);
51
+ break;
52
+ case 'notification':
53
+ await sessionManager.navigateToNotification();
54
+ break;
55
+ default:
56
+ throw new Error(`Unsupported screen: ${String(input.screen)}`);
57
+ }
58
+ return {
59
+ navigated: true,
60
+ currentUrl: context.page.url(),
61
+ };
62
+ },
63
+ classifyError: error_classification_js_1.classifyNavigationError,
64
+ /**
65
+ * Sanitizes input for knowledge store recording.
66
+ *
67
+ * @returns Sanitized input object with screen and URL information
68
+ */
69
+ sanitizeInputForRecording: () => ({
70
+ screen: input.screen,
71
+ url: input.url,
72
+ }),
73
+ });
74
+ }
75
+ /**
76
+ * Handles waiting for a notification popup to appear.
77
+ *
78
+ * @param input The wait input containing timeout options
79
+ * @param options Optional handler configuration
80
+ * @returns Promise resolving to wait result with notification page URL
81
+ */
82
+ async function handleWaitForNotification(input, options) {
83
+ const sessionManager = (0, session_manager_js_1.getSessionManager)();
84
+ const timeoutMs = input.timeoutMs ?? constants_js_1.DEFAULT_INTERACTION_TIMEOUT_MS;
85
+ return (0, run_tool_js_1.runTool)({
86
+ toolName: 'mm_wait_for_notification',
87
+ input,
88
+ options,
89
+ /**
90
+ * Executes the wait action for notification popup.
91
+ *
92
+ * @returns Promise resolving to wait result with notification page URL
93
+ */
94
+ execute: async () => {
95
+ const notificationPage = await sessionManager.waitForNotificationPage(timeoutMs);
96
+ const pageUrl = notificationPage.url();
97
+ return {
98
+ found: true,
99
+ pageUrl,
100
+ };
101
+ },
102
+ classifyError: error_classification_js_1.classifyNotificationError,
103
+ /**
104
+ * Sanitizes input for knowledge store recording.
105
+ *
106
+ * @returns Sanitized input object with timeout information
107
+ */
108
+ sanitizeInputForRecording: () => ({ timeoutMs }),
109
+ });
110
+ }
111
+ /**
112
+ * Handles switching to a different tab by role or URL.
113
+ *
114
+ * @param input The switch input containing tab role or URL to match
115
+ * @param options Optional handler configuration
116
+ * @returns Promise resolving to switch result with active tab information
117
+ */
118
+ async function handleSwitchToTab(input, options) {
119
+ const startTime = Date.now();
120
+ const sessionManager = (0, session_manager_js_1.getSessionManager)();
121
+ const sessionId = sessionManager.getSessionId();
122
+ if (!input.role && !input.url) {
123
+ return (0, utils_1.createErrorResponse)(types_1.ErrorCodes.MM_INVALID_INPUT, 'Either role or url must be provided', { input }, sessionId, startTime);
124
+ }
125
+ return (0, run_tool_js_1.runTool)({
126
+ toolName: 'mm_switch_to_tab',
127
+ input,
128
+ options,
129
+ /**
130
+ * Executes the tab switch action.
131
+ *
132
+ * @param _context The tool execution context containing page and reference map
133
+ * @returns Promise resolving to switch result with active tab information
134
+ */
135
+ execute: async (_context) => {
136
+ const trackedPages = sessionManager.getTrackedPages();
137
+ const targetPage = trackedPages.find((trackedPage) => {
138
+ if (input.role) {
139
+ return trackedPage.role === input.role;
140
+ }
141
+ if (input.url) {
142
+ return trackedPage.url.startsWith(input.url);
143
+ }
144
+ return false;
145
+ });
146
+ if (!targetPage) {
147
+ const availableTabs = trackedPages.map((trackedPage) => ({
148
+ role: trackedPage.role,
149
+ url: trackedPage.url,
150
+ }));
151
+ throw new Error(`No tab found matching: ${input.role ?? input.url}. Available tabs: ${JSON.stringify(availableTabs)}`);
152
+ }
153
+ await targetPage.page.bringToFront();
154
+ sessionManager.setActivePage(targetPage.page);
155
+ const updatedTrackedPages = sessionManager.getTrackedPages();
156
+ const activeTabInfo = updatedTrackedPages.find((trackedPage) => trackedPage.page === targetPage.page);
157
+ return {
158
+ switched: true,
159
+ activeTab: {
160
+ role: activeTabInfo?.role ?? 'other',
161
+ url: targetPage.page.url(),
162
+ },
163
+ };
164
+ },
165
+ classifyError: error_classification_js_1.classifyTabError,
166
+ /**
167
+ * Sanitizes input for knowledge store recording.
168
+ *
169
+ * @returns Sanitized input object with role and URL information
170
+ */
171
+ sanitizeInputForRecording: () => ({
172
+ role: input.role,
173
+ url: input.url,
174
+ }),
175
+ });
176
+ }
177
+ /**
178
+ * Handles closing a tab by role or URL.
179
+ *
180
+ * @param input The close input containing tab role or URL to match
181
+ * @param options Optional handler configuration
182
+ * @returns Promise resolving to close result with closed tab URL
183
+ */
184
+ async function handleCloseTab(input, options) {
185
+ const startTime = Date.now();
186
+ const sessionManager = (0, session_manager_js_1.getSessionManager)();
187
+ const sessionId = sessionManager.getSessionId();
188
+ if (!input.role && !input.url) {
189
+ return (0, utils_1.createErrorResponse)(types_1.ErrorCodes.MM_INVALID_INPUT, 'Either role or url must be provided', { input }, sessionId, startTime);
190
+ }
191
+ return (0, run_tool_js_1.runTool)({
192
+ toolName: 'mm_close_tab',
193
+ input,
194
+ options,
195
+ /**
196
+ * Executes the tab close action.
197
+ *
198
+ * @param context The tool execution context containing page and reference map
199
+ * @returns Promise resolving to close result with closed tab URL
200
+ */
201
+ execute: async (context) => {
202
+ const trackedPages = sessionManager.getTrackedPages();
203
+ const targetPage = trackedPages.find((trackedPage) => {
204
+ if (input.role) {
205
+ return trackedPage.role === input.role;
206
+ }
207
+ if (input.url) {
208
+ return trackedPage.url.startsWith(input.url);
209
+ }
210
+ return false;
211
+ });
212
+ if (!targetPage) {
213
+ throw new Error(`No tab found matching: ${input.role ?? input.url}`);
214
+ }
215
+ const closedUrl = targetPage.url;
216
+ const currentActivePage = context.page;
217
+ if (targetPage.page === currentActivePage) {
218
+ const extensionPage = trackedPages.find((trackedPage) => trackedPage.role === 'extension');
219
+ if (extensionPage) {
220
+ await extensionPage.page.bringToFront();
221
+ sessionManager.setActivePage(extensionPage.page);
222
+ }
223
+ }
224
+ await targetPage.page.close();
225
+ return {
226
+ closed: true,
227
+ closedUrl,
228
+ };
229
+ },
230
+ classifyError: error_classification_js_1.classifyTabError,
231
+ /**
232
+ * Sanitizes input for knowledge store recording.
233
+ *
234
+ * @returns Sanitized input object with role and URL information
235
+ */
236
+ sanitizeInputForRecording: () => ({
237
+ role: input.role,
238
+ url: input.url,
239
+ }),
240
+ });
241
+ }
242
+ //# sourceMappingURL=navigation.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"navigation.cjs","sourceRoot":"","sources":["../../../src/mcp-server/tools/navigation.ts"],"names":[],"mappings":"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","sourcesContent":["import { DEFAULT_INTERACTION_TIMEOUT_MS } from '../constants.js';\nimport { getSessionManager } from '../session-manager.js';\nimport {\n classifyNavigationError,\n classifyTabError,\n classifyNotificationError,\n} from './error-classification.js';\nimport { runTool } from './run-tool.js';\nimport type {\n NavigateInput,\n NavigateResult,\n WaitForNotificationInput,\n WaitForNotificationResult,\n SwitchToTabInput,\n SwitchToTabResult,\n CloseTabInput,\n CloseTabResult,\n McpResponse,\n HandlerOptions,\n} from '../types';\nimport { ErrorCodes } from '../types';\nimport { createErrorResponse } from '../utils';\n\n/**\n * Handles navigation to a specific screen or URL.\n *\n * @param input The navigate input containing target screen and optional URL\n * @param options Optional handler configuration\n * @returns Promise resolving to navigate result with current URL information\n */\nexport async function handleNavigate(\n input: NavigateInput,\n options?: HandlerOptions,\n): Promise<McpResponse<NavigateResult>> {\n const startTime = Date.now();\n const sessionManager = getSessionManager();\n const sessionId = sessionManager.getSessionId();\n\n if (input.screen === 'url' && !input.url) {\n return createErrorResponse(\n ErrorCodes.MM_INVALID_INPUT,\n 'url is required when screen is \"url\"',\n { input },\n sessionId,\n startTime,\n );\n }\n\n const validScreens = ['home', 'settings', 'url', 'notification'];\n if (!validScreens.includes(input.screen)) {\n return createErrorResponse(\n ErrorCodes.MM_INVALID_INPUT,\n `Unknown screen: ${String(input.screen)}`,\n { input },\n sessionId,\n startTime,\n );\n }\n\n return runTool<NavigateInput, NavigateResult>({\n toolName: 'mm_navigate',\n input,\n options,\n\n /**\n * Executes the navigation action to the target screen.\n *\n * @param context The tool execution context containing page and reference map\n * @returns Promise resolving to navigate result with success status and URL\n */\n execute: async (context) => {\n switch (input.screen) {\n case 'home':\n await sessionManager.navigateToHome();\n break;\n case 'settings':\n await sessionManager.navigateToSettings();\n break;\n case 'url':\n await sessionManager.navigateToUrl(input.url as string);\n break;\n case 'notification':\n await sessionManager.navigateToNotification();\n break;\n default:\n throw new Error(`Unsupported screen: ${String(input.screen)}`);\n }\n\n return {\n navigated: true,\n currentUrl: context.page.url(),\n };\n },\n\n classifyError: classifyNavigationError,\n\n /**\n * Sanitizes input for knowledge store recording.\n *\n * @returns Sanitized input object with screen and URL information\n */\n sanitizeInputForRecording: () => ({\n screen: input.screen,\n url: input.url,\n }),\n });\n}\n\n/**\n * Handles waiting for a notification popup to appear.\n *\n * @param input The wait input containing timeout options\n * @param options Optional handler configuration\n * @returns Promise resolving to wait result with notification page URL\n */\nexport async function handleWaitForNotification(\n input: WaitForNotificationInput,\n options?: HandlerOptions,\n): Promise<McpResponse<WaitForNotificationResult>> {\n const sessionManager = getSessionManager();\n const timeoutMs = input.timeoutMs ?? DEFAULT_INTERACTION_TIMEOUT_MS;\n\n return runTool<WaitForNotificationInput, WaitForNotificationResult>({\n toolName: 'mm_wait_for_notification',\n input,\n options,\n\n /**\n * Executes the wait action for notification popup.\n *\n * @returns Promise resolving to wait result with notification page URL\n */\n execute: async () => {\n const notificationPage =\n await sessionManager.waitForNotificationPage(timeoutMs);\n const pageUrl = notificationPage.url();\n\n return {\n found: true,\n pageUrl,\n };\n },\n\n classifyError: classifyNotificationError,\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 switching to a different tab by role or URL.\n *\n * @param input The switch input containing tab role or URL to match\n * @param options Optional handler configuration\n * @returns Promise resolving to switch result with active tab information\n */\nexport async function handleSwitchToTab(\n input: SwitchToTabInput,\n options?: HandlerOptions,\n): Promise<McpResponse<SwitchToTabResult>> {\n const startTime = Date.now();\n const sessionManager = getSessionManager();\n const sessionId = sessionManager.getSessionId();\n\n if (!input.role && !input.url) {\n return createErrorResponse(\n ErrorCodes.MM_INVALID_INPUT,\n 'Either role or url must be provided',\n { input },\n sessionId,\n startTime,\n );\n }\n\n return runTool<SwitchToTabInput, SwitchToTabResult>({\n toolName: 'mm_switch_to_tab',\n input,\n options,\n\n /**\n * Executes the tab switch action.\n *\n * @param _context The tool execution context containing page and reference map\n * @returns Promise resolving to switch result with active tab information\n */\n execute: async (_context) => {\n const trackedPages = sessionManager.getTrackedPages();\n const targetPage = trackedPages.find((trackedPage) => {\n if (input.role) {\n return trackedPage.role === input.role;\n }\n if (input.url) {\n return trackedPage.url.startsWith(input.url);\n }\n return false;\n });\n\n if (!targetPage) {\n const availableTabs = trackedPages.map((trackedPage) => ({\n role: trackedPage.role,\n url: trackedPage.url,\n }));\n throw new Error(\n `No tab found matching: ${input.role ?? input.url}. Available tabs: ${JSON.stringify(availableTabs)}`,\n );\n }\n\n await targetPage.page.bringToFront();\n sessionManager.setActivePage(targetPage.page);\n\n const updatedTrackedPages = sessionManager.getTrackedPages();\n const activeTabInfo = updatedTrackedPages.find(\n (trackedPage) => trackedPage.page === targetPage.page,\n );\n\n return {\n switched: true,\n activeTab: {\n role: activeTabInfo?.role ?? 'other',\n url: targetPage.page.url(),\n },\n };\n },\n\n classifyError: classifyTabError,\n\n /**\n * Sanitizes input for knowledge store recording.\n *\n * @returns Sanitized input object with role and URL information\n */\n sanitizeInputForRecording: () => ({\n role: input.role,\n url: input.url,\n }),\n });\n}\n\n/**\n * Handles closing a tab by role or URL.\n *\n * @param input The close input containing tab role or URL to match\n * @param options Optional handler configuration\n * @returns Promise resolving to close result with closed tab URL\n */\nexport async function handleCloseTab(\n input: CloseTabInput,\n options?: HandlerOptions,\n): Promise<McpResponse<CloseTabResult>> {\n const startTime = Date.now();\n const sessionManager = getSessionManager();\n const sessionId = sessionManager.getSessionId();\n\n if (!input.role && !input.url) {\n return createErrorResponse(\n ErrorCodes.MM_INVALID_INPUT,\n 'Either role or url must be provided',\n { input },\n sessionId,\n startTime,\n );\n }\n\n return runTool<CloseTabInput, CloseTabResult>({\n toolName: 'mm_close_tab',\n input,\n options,\n\n /**\n * Executes the tab close action.\n *\n * @param context The tool execution context containing page and reference map\n * @returns Promise resolving to close result with closed tab URL\n */\n execute: async (context) => {\n const trackedPages = sessionManager.getTrackedPages();\n const targetPage = trackedPages.find((trackedPage) => {\n if (input.role) {\n return trackedPage.role === input.role;\n }\n if (input.url) {\n return trackedPage.url.startsWith(input.url);\n }\n return false;\n });\n\n if (!targetPage) {\n throw new Error(`No tab found matching: ${input.role ?? input.url}`);\n }\n\n const closedUrl = targetPage.url;\n\n const currentActivePage = context.page;\n if (targetPage.page === currentActivePage) {\n const extensionPage = trackedPages.find(\n (trackedPage) => trackedPage.role === 'extension',\n );\n if (extensionPage) {\n await extensionPage.page.bringToFront();\n sessionManager.setActivePage(extensionPage.page);\n }\n }\n\n await targetPage.page.close();\n\n return {\n closed: true,\n closedUrl,\n };\n },\n\n classifyError: classifyTabError,\n\n /**\n * Sanitizes input for knowledge store recording.\n *\n * @returns Sanitized input object with role and URL information\n */\n sanitizeInputForRecording: () => ({\n role: input.role,\n url: input.url,\n }),\n });\n}\n"]}
@@ -0,0 +1,34 @@
1
+ import type { NavigateInput, NavigateResult, WaitForNotificationInput, WaitForNotificationResult, SwitchToTabInput, SwitchToTabResult, CloseTabInput, CloseTabResult, McpResponse, HandlerOptions } from "../types/index.cjs";
2
+ /**
3
+ * Handles navigation to a specific screen or URL.
4
+ *
5
+ * @param input The navigate input containing target screen and optional URL
6
+ * @param options Optional handler configuration
7
+ * @returns Promise resolving to navigate result with current URL information
8
+ */
9
+ export declare function handleNavigate(input: NavigateInput, options?: HandlerOptions): Promise<McpResponse<NavigateResult>>;
10
+ /**
11
+ * Handles waiting for a notification popup to appear.
12
+ *
13
+ * @param input The wait input containing timeout options
14
+ * @param options Optional handler configuration
15
+ * @returns Promise resolving to wait result with notification page URL
16
+ */
17
+ export declare function handleWaitForNotification(input: WaitForNotificationInput, options?: HandlerOptions): Promise<McpResponse<WaitForNotificationResult>>;
18
+ /**
19
+ * Handles switching to a different tab by role or URL.
20
+ *
21
+ * @param input The switch input containing tab role or URL to match
22
+ * @param options Optional handler configuration
23
+ * @returns Promise resolving to switch result with active tab information
24
+ */
25
+ export declare function handleSwitchToTab(input: SwitchToTabInput, options?: HandlerOptions): Promise<McpResponse<SwitchToTabResult>>;
26
+ /**
27
+ * Handles closing a tab by role or URL.
28
+ *
29
+ * @param input The close input containing tab role or URL to match
30
+ * @param options Optional handler configuration
31
+ * @returns Promise resolving to close result with closed tab URL
32
+ */
33
+ export declare function handleCloseTab(input: CloseTabInput, options?: HandlerOptions): Promise<McpResponse<CloseTabResult>>;
34
+ //# sourceMappingURL=navigation.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"navigation.d.cts","sourceRoot":"","sources":["../../../src/mcp-server/tools/navigation.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EACV,aAAa,EACb,cAAc,EACd,wBAAwB,EACxB,yBAAyB,EACzB,gBAAgB,EAChB,iBAAiB,EACjB,aAAa,EACb,cAAc,EACd,WAAW,EACX,cAAc,EACf,2BAAiB;AAIlB;;;;;;GAMG;AACH,wBAAsB,cAAc,CAClC,KAAK,EAAE,aAAa,EACpB,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC,CAyEtC;AAED;;;;;;GAMG;AACH,wBAAsB,yBAAyB,CAC7C,KAAK,EAAE,wBAAwB,EAC/B,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,WAAW,CAAC,yBAAyB,CAAC,CAAC,CAkCjD;AAED;;;;;;GAMG;AACH,wBAAsB,iBAAiB,CACrC,KAAK,EAAE,gBAAgB,EACvB,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC,CA6EzC;AAED;;;;;;GAMG;AACH,wBAAsB,cAAc,CAClC,KAAK,EAAE,aAAa,EACpB,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC,CA2EtC"}
@@ -0,0 +1,34 @@
1
+ import type { NavigateInput, NavigateResult, WaitForNotificationInput, WaitForNotificationResult, SwitchToTabInput, SwitchToTabResult, CloseTabInput, CloseTabResult, McpResponse, HandlerOptions } from "../types/index.mjs";
2
+ /**
3
+ * Handles navigation to a specific screen or URL.
4
+ *
5
+ * @param input The navigate input containing target screen and optional URL
6
+ * @param options Optional handler configuration
7
+ * @returns Promise resolving to navigate result with current URL information
8
+ */
9
+ export declare function handleNavigate(input: NavigateInput, options?: HandlerOptions): Promise<McpResponse<NavigateResult>>;
10
+ /**
11
+ * Handles waiting for a notification popup to appear.
12
+ *
13
+ * @param input The wait input containing timeout options
14
+ * @param options Optional handler configuration
15
+ * @returns Promise resolving to wait result with notification page URL
16
+ */
17
+ export declare function handleWaitForNotification(input: WaitForNotificationInput, options?: HandlerOptions): Promise<McpResponse<WaitForNotificationResult>>;
18
+ /**
19
+ * Handles switching to a different tab by role or URL.
20
+ *
21
+ * @param input The switch input containing tab role or URL to match
22
+ * @param options Optional handler configuration
23
+ * @returns Promise resolving to switch result with active tab information
24
+ */
25
+ export declare function handleSwitchToTab(input: SwitchToTabInput, options?: HandlerOptions): Promise<McpResponse<SwitchToTabResult>>;
26
+ /**
27
+ * Handles closing a tab by role or URL.
28
+ *
29
+ * @param input The close input containing tab role or URL to match
30
+ * @param options Optional handler configuration
31
+ * @returns Promise resolving to close result with closed tab URL
32
+ */
33
+ export declare function handleCloseTab(input: CloseTabInput, options?: HandlerOptions): Promise<McpResponse<CloseTabResult>>;
34
+ //# sourceMappingURL=navigation.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"navigation.d.mts","sourceRoot":"","sources":["../../../src/mcp-server/tools/navigation.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EACV,aAAa,EACb,cAAc,EACd,wBAAwB,EACxB,yBAAyB,EACzB,gBAAgB,EAChB,iBAAiB,EACjB,aAAa,EACb,cAAc,EACd,WAAW,EACX,cAAc,EACf,2BAAiB;AAIlB;;;;;;GAMG;AACH,wBAAsB,cAAc,CAClC,KAAK,EAAE,aAAa,EACpB,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC,CAyEtC;AAED;;;;;;GAMG;AACH,wBAAsB,yBAAyB,CAC7C,KAAK,EAAE,wBAAwB,EAC/B,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,WAAW,CAAC,yBAAyB,CAAC,CAAC,CAkCjD;AAED;;;;;;GAMG;AACH,wBAAsB,iBAAiB,CACrC,KAAK,EAAE,gBAAgB,EACvB,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC,CA6EzC;AAED;;;;;;GAMG;AACH,wBAAsB,cAAc,CAClC,KAAK,EAAE,aAAa,EACpB,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC,CA2EtC"}