@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.
- package/CHANGELOG.md +17 -0
- package/LICENSE +6 -0
- package/LICENSE.APACHE2 +201 -0
- package/LICENSE.MIT +21 -0
- package/README.md +1459 -0
- package/dist/capabilities/context.cjs +34 -0
- package/dist/capabilities/context.cjs.map +1 -0
- package/dist/capabilities/context.d.cts +101 -0
- package/dist/capabilities/context.d.cts.map +1 -0
- package/dist/capabilities/context.d.mts +101 -0
- package/dist/capabilities/context.d.mts.map +1 -0
- package/dist/capabilities/context.mjs +29 -0
- package/dist/capabilities/context.mjs.map +1 -0
- package/dist/capabilities/index.cjs +18 -0
- package/dist/capabilities/index.cjs.map +1 -0
- package/dist/capabilities/index.d.cts +3 -0
- package/dist/capabilities/index.d.cts.map +1 -0
- package/dist/capabilities/index.d.mts +3 -0
- package/dist/capabilities/index.d.mts.map +1 -0
- package/dist/capabilities/index.mjs +2 -0
- package/dist/capabilities/index.mjs.map +1 -0
- package/dist/capabilities/types.cjs +3 -0
- package/dist/capabilities/types.cjs.map +1 -0
- package/dist/capabilities/types.d.cts +152 -0
- package/dist/capabilities/types.d.cts.map +1 -0
- package/dist/capabilities/types.d.mts +152 -0
- package/dist/capabilities/types.d.mts.map +1 -0
- package/dist/capabilities/types.mjs +2 -0
- package/dist/capabilities/types.mjs.map +1 -0
- package/dist/index.cjs +59 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +33 -0
- package/dist/index.d.cts.map +1 -0
- package/dist/index.d.mts +33 -0
- package/dist/index.d.mts.map +1 -0
- package/dist/index.mjs +43 -0
- package/dist/index.mjs.map +1 -0
- package/dist/launcher/console-error-buffer.cjs +72 -0
- package/dist/launcher/console-error-buffer.cjs.map +1 -0
- package/dist/launcher/console-error-buffer.d.cts +43 -0
- package/dist/launcher/console-error-buffer.d.cts.map +1 -0
- package/dist/launcher/console-error-buffer.d.mts +43 -0
- package/dist/launcher/console-error-buffer.d.mts.map +1 -0
- package/dist/launcher/console-error-buffer.mjs +68 -0
- package/dist/launcher/console-error-buffer.mjs.map +1 -0
- package/dist/launcher/extension-id-resolver.cjs +177 -0
- package/dist/launcher/extension-id-resolver.cjs.map +1 -0
- package/dist/launcher/extension-id-resolver.d.cts +32 -0
- package/dist/launcher/extension-id-resolver.d.cts.map +1 -0
- package/dist/launcher/extension-id-resolver.d.mts +32 -0
- package/dist/launcher/extension-id-resolver.d.mts.map +1 -0
- package/dist/launcher/extension-id-resolver.mjs +173 -0
- package/dist/launcher/extension-id-resolver.mjs.map +1 -0
- package/dist/launcher/extension-readiness.cjs +50 -0
- package/dist/launcher/extension-readiness.cjs.map +1 -0
- package/dist/launcher/extension-readiness.d.cts +37 -0
- package/dist/launcher/extension-readiness.d.cts.map +1 -0
- package/dist/launcher/extension-readiness.d.mts +37 -0
- package/dist/launcher/extension-readiness.d.mts.map +1 -0
- package/dist/launcher/extension-readiness.mjs +43 -0
- package/dist/launcher/extension-readiness.mjs.map +1 -0
- package/dist/launcher/index.cjs +21 -0
- package/dist/launcher/index.cjs.map +1 -0
- package/dist/launcher/index.d.cts +5 -0
- package/dist/launcher/index.d.cts.map +1 -0
- package/dist/launcher/index.d.mts +5 -0
- package/dist/launcher/index.d.mts.map +1 -0
- package/dist/launcher/index.mjs +5 -0
- package/dist/launcher/index.mjs.map +1 -0
- package/dist/launcher/retry.cjs +35 -0
- package/dist/launcher/retry.cjs.map +1 -0
- package/dist/launcher/retry.d.cts +20 -0
- package/dist/launcher/retry.d.cts.map +1 -0
- package/dist/launcher/retry.d.mts +20 -0
- package/dist/launcher/retry.d.mts.map +1 -0
- package/dist/launcher/retry.mjs +31 -0
- package/dist/launcher/retry.mjs.map +1 -0
- package/dist/mcp-server/constants.cjs +22 -0
- package/dist/mcp-server/constants.cjs.map +1 -0
- package/dist/mcp-server/constants.d.cts +13 -0
- package/dist/mcp-server/constants.d.cts.map +1 -0
- package/dist/mcp-server/constants.d.mts +13 -0
- package/dist/mcp-server/constants.d.mts.map +1 -0
- package/dist/mcp-server/constants.mjs +19 -0
- package/dist/mcp-server/constants.mjs.map +1 -0
- package/dist/mcp-server/discovery.cjs +299 -0
- package/dist/mcp-server/discovery.cjs.map +1 -0
- package/dist/mcp-server/discovery.d.cts +56 -0
- package/dist/mcp-server/discovery.d.cts.map +1 -0
- package/dist/mcp-server/discovery.d.mts +56 -0
- package/dist/mcp-server/discovery.d.mts.map +1 -0
- package/dist/mcp-server/discovery.mjs +292 -0
- package/dist/mcp-server/discovery.mjs.map +1 -0
- package/dist/mcp-server/knowledge-store.cjs +1196 -0
- package/dist/mcp-server/knowledge-store.cjs.map +1 -0
- package/dist/mcp-server/knowledge-store.d.cts +249 -0
- package/dist/mcp-server/knowledge-store.d.cts.map +1 -0
- package/dist/mcp-server/knowledge-store.d.mts +249 -0
- package/dist/mcp-server/knowledge-store.d.mts.map +1 -0
- package/dist/mcp-server/knowledge-store.mjs +1154 -0
- package/dist/mcp-server/knowledge-store.mjs.map +1 -0
- package/dist/mcp-server/schemas.cjs +433 -0
- package/dist/mcp-server/schemas.cjs.map +1 -0
- package/dist/mcp-server/schemas.d.cts +557 -0
- package/dist/mcp-server/schemas.d.cts.map +1 -0
- package/dist/mcp-server/schemas.d.mts +557 -0
- package/dist/mcp-server/schemas.d.mts.map +1 -0
- package/dist/mcp-server/schemas.mjs +430 -0
- package/dist/mcp-server/schemas.mjs.map +1 -0
- package/dist/mcp-server/server.cjs +161 -0
- package/dist/mcp-server/server.cjs.map +1 -0
- package/dist/mcp-server/server.d.cts +24 -0
- package/dist/mcp-server/server.d.cts.map +1 -0
- package/dist/mcp-server/server.d.mts +24 -0
- package/dist/mcp-server/server.d.mts.map +1 -0
- package/dist/mcp-server/server.mjs +158 -0
- package/dist/mcp-server/server.mjs.map +1 -0
- package/dist/mcp-server/session-manager.cjs +53 -0
- package/dist/mcp-server/session-manager.cjs.map +1 -0
- package/dist/mcp-server/session-manager.d.cts +240 -0
- package/dist/mcp-server/session-manager.d.cts.map +1 -0
- package/dist/mcp-server/session-manager.d.mts +240 -0
- package/dist/mcp-server/session-manager.d.mts.map +1 -0
- package/dist/mcp-server/session-manager.mjs +48 -0
- package/dist/mcp-server/session-manager.mjs.map +1 -0
- package/dist/mcp-server/test-utils/flush-promises.cjs +10 -0
- package/dist/mcp-server/test-utils/flush-promises.cjs.map +1 -0
- package/dist/mcp-server/test-utils/flush-promises.d.cts +2 -0
- package/dist/mcp-server/test-utils/flush-promises.d.cts.map +1 -0
- package/dist/mcp-server/test-utils/flush-promises.d.mts +2 -0
- package/dist/mcp-server/test-utils/flush-promises.d.mts.map +1 -0
- package/dist/mcp-server/test-utils/flush-promises.mjs +7 -0
- package/dist/mcp-server/test-utils/flush-promises.mjs.map +1 -0
- package/dist/mcp-server/test-utils/index.cjs +13 -0
- package/dist/mcp-server/test-utils/index.cjs.map +1 -0
- package/dist/mcp-server/test-utils/index.d.cts +4 -0
- package/dist/mcp-server/test-utils/index.d.cts.map +1 -0
- package/dist/mcp-server/test-utils/index.d.mts +4 -0
- package/dist/mcp-server/test-utils/index.d.mts.map +1 -0
- package/dist/mcp-server/test-utils/index.mjs +4 -0
- package/dist/mcp-server/test-utils/index.mjs.map +1 -0
- package/dist/mcp-server/test-utils/mock-factories.cjs +129 -0
- package/dist/mcp-server/test-utils/mock-factories.cjs.map +1 -0
- package/dist/mcp-server/test-utils/mock-factories.d.cts +89 -0
- package/dist/mcp-server/test-utils/mock-factories.d.cts.map +1 -0
- package/dist/mcp-server/test-utils/mock-factories.d.mts +89 -0
- package/dist/mcp-server/test-utils/mock-factories.d.mts.map +1 -0
- package/dist/mcp-server/test-utils/mock-factories.mjs +125 -0
- package/dist/mcp-server/test-utils/mock-factories.mjs.map +1 -0
- package/dist/mcp-server/test-utils/mock-playwright.cjs +205 -0
- package/dist/mcp-server/test-utils/mock-playwright.cjs.map +1 -0
- package/dist/mcp-server/test-utils/mock-playwright.d.cts +69 -0
- package/dist/mcp-server/test-utils/mock-playwright.d.cts.map +1 -0
- package/dist/mcp-server/test-utils/mock-playwright.d.mts +69 -0
- package/dist/mcp-server/test-utils/mock-playwright.d.mts.map +1 -0
- package/dist/mcp-server/test-utils/mock-playwright.mjs +200 -0
- package/dist/mcp-server/test-utils/mock-playwright.mjs.map +1 -0
- package/dist/mcp-server/tokenization.cjs +117 -0
- package/dist/mcp-server/tokenization.cjs.map +1 -0
- package/dist/mcp-server/tokenization.d.cts +22 -0
- package/dist/mcp-server/tokenization.d.cts.map +1 -0
- package/dist/mcp-server/tokenization.d.mts +22 -0
- package/dist/mcp-server/tokenization.d.mts.map +1 -0
- package/dist/mcp-server/tokenization.mjs +112 -0
- package/dist/mcp-server/tokenization.mjs.map +1 -0
- package/dist/mcp-server/tools/batch.cjs +199 -0
- package/dist/mcp-server/tools/batch.cjs.map +1 -0
- package/dist/mcp-server/tools/batch.d.cts +81 -0
- package/dist/mcp-server/tools/batch.d.cts.map +1 -0
- package/dist/mcp-server/tools/batch.d.mts +81 -0
- package/dist/mcp-server/tools/batch.d.mts.map +1 -0
- package/dist/mcp-server/tools/batch.mjs +191 -0
- package/dist/mcp-server/tools/batch.mjs.map +1 -0
- package/dist/mcp-server/tools/build.cjs +47 -0
- package/dist/mcp-server/tools/build.cjs.map +1 -0
- package/dist/mcp-server/tools/build.d.cts +22 -0
- package/dist/mcp-server/tools/build.d.cts.map +1 -0
- package/dist/mcp-server/tools/build.d.mts +22 -0
- package/dist/mcp-server/tools/build.d.mts.map +1 -0
- package/dist/mcp-server/tools/build.mjs +44 -0
- package/dist/mcp-server/tools/build.mjs.map +1 -0
- package/dist/mcp-server/tools/cleanup.cjs +20 -0
- package/dist/mcp-server/tools/cleanup.cjs.map +1 -0
- package/dist/mcp-server/tools/cleanup.d.cts +10 -0
- package/dist/mcp-server/tools/cleanup.d.cts.map +1 -0
- package/dist/mcp-server/tools/cleanup.d.mts +10 -0
- package/dist/mcp-server/tools/cleanup.d.mts.map +1 -0
- package/dist/mcp-server/tools/cleanup.mjs +17 -0
- package/dist/mcp-server/tools/cleanup.mjs.map +1 -0
- package/dist/mcp-server/tools/clipboard.cjs +100 -0
- package/dist/mcp-server/tools/clipboard.cjs.map +1 -0
- package/dist/mcp-server/tools/clipboard.d.cts +16 -0
- package/dist/mcp-server/tools/clipboard.d.cts.map +1 -0
- package/dist/mcp-server/tools/clipboard.d.mts +16 -0
- package/dist/mcp-server/tools/clipboard.d.mts.map +1 -0
- package/dist/mcp-server/tools/clipboard.mjs +97 -0
- package/dist/mcp-server/tools/clipboard.mjs.map +1 -0
- package/dist/mcp-server/tools/context.cjs +66 -0
- package/dist/mcp-server/tools/context.cjs.map +1 -0
- package/dist/mcp-server/tools/context.d.cts +35 -0
- package/dist/mcp-server/tools/context.d.cts.map +1 -0
- package/dist/mcp-server/tools/context.d.mts +35 -0
- package/dist/mcp-server/tools/context.d.mts.map +1 -0
- package/dist/mcp-server/tools/context.mjs +62 -0
- package/dist/mcp-server/tools/context.mjs.map +1 -0
- package/dist/mcp-server/tools/definitions.cjs +463 -0
- package/dist/mcp-server/tools/definitions.cjs.map +1 -0
- package/dist/mcp-server/tools/definitions.d.cts +97 -0
- package/dist/mcp-server/tools/definitions.d.cts.map +1 -0
- package/dist/mcp-server/tools/definitions.d.mts +97 -0
- package/dist/mcp-server/tools/definitions.d.mts.map +1 -0
- package/dist/mcp-server/tools/definitions.mjs +451 -0
- package/dist/mcp-server/tools/definitions.mjs.map +1 -0
- package/dist/mcp-server/tools/discovery-tools.cjs +162 -0
- package/dist/mcp-server/tools/discovery-tools.cjs.map +1 -0
- package/dist/mcp-server/tools/discovery-tools.d.cts +26 -0
- package/dist/mcp-server/tools/discovery-tools.d.cts.map +1 -0
- package/dist/mcp-server/tools/discovery-tools.d.mts +26 -0
- package/dist/mcp-server/tools/discovery-tools.d.mts.map +1 -0
- package/dist/mcp-server/tools/discovery-tools.mjs +157 -0
- package/dist/mcp-server/tools/discovery-tools.mjs.map +1 -0
- package/dist/mcp-server/tools/error-classification.cjs +296 -0
- package/dist/mcp-server/tools/error-classification.cjs.map +1 -0
- package/dist/mcp-server/tools/error-classification.d.cts +135 -0
- package/dist/mcp-server/tools/error-classification.d.cts.map +1 -0
- package/dist/mcp-server/tools/error-classification.d.mts +135 -0
- package/dist/mcp-server/tools/error-classification.d.mts.map +1 -0
- package/dist/mcp-server/tools/error-classification.mjs +281 -0
- package/dist/mcp-server/tools/error-classification.mjs.map +1 -0
- package/dist/mcp-server/tools/helpers.cjs +149 -0
- package/dist/mcp-server/tools/helpers.cjs.map +1 -0
- package/dist/mcp-server/tools/helpers.d.cts +149 -0
- package/dist/mcp-server/tools/helpers.d.cts.map +1 -0
- package/dist/mcp-server/tools/helpers.d.mts +149 -0
- package/dist/mcp-server/tools/helpers.d.mts.map +1 -0
- package/dist/mcp-server/tools/helpers.mjs +141 -0
- package/dist/mcp-server/tools/helpers.mjs.map +1 -0
- package/dist/mcp-server/tools/index.cjs +27 -0
- package/dist/mcp-server/tools/index.cjs.map +1 -0
- package/dist/mcp-server/tools/index.d.cts +11 -0
- package/dist/mcp-server/tools/index.d.cts.map +1 -0
- package/dist/mcp-server/tools/index.d.mts +11 -0
- package/dist/mcp-server/tools/index.d.mts.map +1 -0
- package/dist/mcp-server/tools/index.mjs +11 -0
- package/dist/mcp-server/tools/index.mjs.map +1 -0
- package/dist/mcp-server/tools/interaction.cjs +190 -0
- package/dist/mcp-server/tools/interaction.cjs.map +1 -0
- package/dist/mcp-server/tools/interaction.d.cts +26 -0
- package/dist/mcp-server/tools/interaction.d.cts.map +1 -0
- package/dist/mcp-server/tools/interaction.d.mts +26 -0
- package/dist/mcp-server/tools/interaction.d.mts.map +1 -0
- package/dist/mcp-server/tools/interaction.mjs +185 -0
- package/dist/mcp-server/tools/interaction.mjs.map +1 -0
- package/dist/mcp-server/tools/knowledge.cjs +120 -0
- package/dist/mcp-server/tools/knowledge.cjs.map +1 -0
- package/dist/mcp-server/tools/knowledge.d.cts +34 -0
- package/dist/mcp-server/tools/knowledge.d.cts.map +1 -0
- package/dist/mcp-server/tools/knowledge.d.mts +34 -0
- package/dist/mcp-server/tools/knowledge.d.mts.map +1 -0
- package/dist/mcp-server/tools/knowledge.mjs +114 -0
- package/dist/mcp-server/tools/knowledge.mjs.map +1 -0
- package/dist/mcp-server/tools/launch.cjs +51 -0
- package/dist/mcp-server/tools/launch.cjs.map +1 -0
- package/dist/mcp-server/tools/launch.d.cts +10 -0
- package/dist/mcp-server/tools/launch.d.cts.map +1 -0
- package/dist/mcp-server/tools/launch.d.mts +10 -0
- package/dist/mcp-server/tools/launch.d.mts.map +1 -0
- package/dist/mcp-server/tools/launch.mjs +48 -0
- package/dist/mcp-server/tools/launch.mjs.map +1 -0
- package/dist/mcp-server/tools/navigation.cjs +242 -0
- package/dist/mcp-server/tools/navigation.cjs.map +1 -0
- package/dist/mcp-server/tools/navigation.d.cts +34 -0
- package/dist/mcp-server/tools/navigation.d.cts.map +1 -0
- package/dist/mcp-server/tools/navigation.d.mts +34 -0
- package/dist/mcp-server/tools/navigation.d.mts.map +1 -0
- package/dist/mcp-server/tools/navigation.mjs +236 -0
- package/dist/mcp-server/tools/navigation.mjs.map +1 -0
- package/dist/mcp-server/tools/registry.cjs +10 -0
- package/dist/mcp-server/tools/registry.cjs.map +1 -0
- package/dist/mcp-server/tools/registry.d.cts +4 -0
- package/dist/mcp-server/tools/registry.d.cts.map +1 -0
- package/dist/mcp-server/tools/registry.d.mts +4 -0
- package/dist/mcp-server/tools/registry.d.mts.map +1 -0
- package/dist/mcp-server/tools/registry.mjs +4 -0
- package/dist/mcp-server/tools/registry.mjs.map +1 -0
- package/dist/mcp-server/tools/run-tool.cjs +140 -0
- package/dist/mcp-server/tools/run-tool.cjs.map +1 -0
- package/dist/mcp-server/tools/run-tool.d.cts +39 -0
- package/dist/mcp-server/tools/run-tool.d.cts.map +1 -0
- package/dist/mcp-server/tools/run-tool.d.mts +39 -0
- package/dist/mcp-server/tools/run-tool.d.mts.map +1 -0
- package/dist/mcp-server/tools/run-tool.mjs +137 -0
- package/dist/mcp-server/tools/run-tool.mjs.map +1 -0
- package/dist/mcp-server/tools/screenshot.cjs +55 -0
- package/dist/mcp-server/tools/screenshot.cjs.map +1 -0
- package/dist/mcp-server/tools/screenshot.d.cts +10 -0
- package/dist/mcp-server/tools/screenshot.d.cts.map +1 -0
- package/dist/mcp-server/tools/screenshot.d.mts +10 -0
- package/dist/mcp-server/tools/screenshot.d.mts.map +1 -0
- package/dist/mcp-server/tools/screenshot.mjs +52 -0
- package/dist/mcp-server/tools/screenshot.mjs.map +1 -0
- package/dist/mcp-server/tools/seeding.cjs +214 -0
- package/dist/mcp-server/tools/seeding.cjs.map +1 -0
- package/dist/mcp-server/tools/seeding.d.cts +38 -0
- package/dist/mcp-server/tools/seeding.d.cts.map +1 -0
- package/dist/mcp-server/tools/seeding.d.mts +38 -0
- package/dist/mcp-server/tools/seeding.d.mts.map +1 -0
- package/dist/mcp-server/tools/seeding.mjs +208 -0
- package/dist/mcp-server/tools/seeding.mjs.map +1 -0
- package/dist/mcp-server/tools/state.cjs +69 -0
- package/dist/mcp-server/tools/state.cjs.map +1 -0
- package/dist/mcp-server/tools/state.d.cts +19 -0
- package/dist/mcp-server/tools/state.d.cts.map +1 -0
- package/dist/mcp-server/tools/state.d.mts +19 -0
- package/dist/mcp-server/tools/state.d.mts.map +1 -0
- package/dist/mcp-server/tools/state.mjs +66 -0
- package/dist/mcp-server/tools/state.mjs.map +1 -0
- package/dist/mcp-server/types/discovery.cjs +24 -0
- package/dist/mcp-server/types/discovery.cjs.map +1 -0
- package/dist/mcp-server/types/discovery.d.cts +30 -0
- package/dist/mcp-server/types/discovery.d.cts.map +1 -0
- package/dist/mcp-server/types/discovery.d.mts +30 -0
- package/dist/mcp-server/types/discovery.d.mts.map +1 -0
- package/dist/mcp-server/types/discovery.mjs +21 -0
- package/dist/mcp-server/types/discovery.mjs.map +1 -0
- package/dist/mcp-server/types/errors.cjs +33 -0
- package/dist/mcp-server/types/errors.cjs.map +1 -0
- package/dist/mcp-server/types/errors.d.cts +31 -0
- package/dist/mcp-server/types/errors.d.cts.map +1 -0
- package/dist/mcp-server/types/errors.d.mts +31 -0
- package/dist/mcp-server/types/errors.d.mts.map +1 -0
- package/dist/mcp-server/types/errors.mjs +30 -0
- package/dist/mcp-server/types/errors.mjs.map +1 -0
- package/dist/mcp-server/types/index.cjs +21 -0
- package/dist/mcp-server/types/index.cjs.map +1 -0
- package/dist/mcp-server/types/index.d.cts +10 -0
- package/dist/mcp-server/types/index.d.cts.map +1 -0
- package/dist/mcp-server/types/index.d.mts +10 -0
- package/dist/mcp-server/types/index.d.mts.map +1 -0
- package/dist/mcp-server/types/index.mjs +5 -0
- package/dist/mcp-server/types/index.mjs.map +1 -0
- package/dist/mcp-server/types/knowledge.cjs +3 -0
- package/dist/mcp-server/types/knowledge.cjs.map +1 -0
- package/dist/mcp-server/types/knowledge.d.cts +116 -0
- package/dist/mcp-server/types/knowledge.d.cts.map +1 -0
- package/dist/mcp-server/types/knowledge.d.mts +116 -0
- package/dist/mcp-server/types/knowledge.d.mts.map +1 -0
- package/dist/mcp-server/types/knowledge.mjs +2 -0
- package/dist/mcp-server/types/knowledge.mjs.map +1 -0
- package/dist/mcp-server/types/responses.cjs +3 -0
- package/dist/mcp-server/types/responses.cjs.map +1 -0
- package/dist/mcp-server/types/responses.d.cts +22 -0
- package/dist/mcp-server/types/responses.d.cts.map +1 -0
- package/dist/mcp-server/types/responses.d.mts +22 -0
- package/dist/mcp-server/types/responses.d.mts.map +1 -0
- package/dist/mcp-server/types/responses.mjs +2 -0
- package/dist/mcp-server/types/responses.mjs.map +1 -0
- package/dist/mcp-server/types/seeding.cjs +34 -0
- package/dist/mcp-server/types/seeding.cjs.map +1 -0
- package/dist/mcp-server/types/seeding.d.cts +40 -0
- package/dist/mcp-server/types/seeding.d.cts.map +1 -0
- package/dist/mcp-server/types/seeding.d.mts +40 -0
- package/dist/mcp-server/types/seeding.d.mts.map +1 -0
- package/dist/mcp-server/types/seeding.mjs +31 -0
- package/dist/mcp-server/types/seeding.mjs.map +1 -0
- package/dist/mcp-server/types/session.cjs +3 -0
- package/dist/mcp-server/types/session.cjs.map +1 -0
- package/dist/mcp-server/types/session.d.cts +11 -0
- package/dist/mcp-server/types/session.d.cts.map +1 -0
- package/dist/mcp-server/types/session.d.mts +11 -0
- package/dist/mcp-server/types/session.d.mts.map +1 -0
- package/dist/mcp-server/types/session.mjs +2 -0
- package/dist/mcp-server/types/session.mjs.map +1 -0
- package/dist/mcp-server/types/step-record.cjs +20 -0
- package/dist/mcp-server/types/step-record.cjs.map +1 -0
- package/dist/mcp-server/types/step-record.d.cts +86 -0
- package/dist/mcp-server/types/step-record.d.cts.map +1 -0
- package/dist/mcp-server/types/step-record.d.mts +86 -0
- package/dist/mcp-server/types/step-record.d.mts.map +1 -0
- package/dist/mcp-server/types/step-record.mjs +17 -0
- package/dist/mcp-server/types/step-record.mjs.map +1 -0
- package/dist/mcp-server/types/tool-inputs.cjs +3 -0
- package/dist/mcp-server/types/tool-inputs.cjs.map +1 -0
- package/dist/mcp-server/types/tool-inputs.d.cts +118 -0
- package/dist/mcp-server/types/tool-inputs.d.cts.map +1 -0
- package/dist/mcp-server/types/tool-inputs.d.mts +118 -0
- package/dist/mcp-server/types/tool-inputs.d.mts.map +1 -0
- package/dist/mcp-server/types/tool-inputs.mjs +2 -0
- package/dist/mcp-server/types/tool-inputs.mjs.map +1 -0
- package/dist/mcp-server/types/tool-outputs.cjs +3 -0
- package/dist/mcp-server/types/tool-outputs.cjs.map +1 -0
- package/dist/mcp-server/types/tool-outputs.d.cts +121 -0
- package/dist/mcp-server/types/tool-outputs.d.cts.map +1 -0
- package/dist/mcp-server/types/tool-outputs.d.mts +121 -0
- package/dist/mcp-server/types/tool-outputs.d.mts.map +1 -0
- package/dist/mcp-server/types/tool-outputs.mjs +2 -0
- package/dist/mcp-server/types/tool-outputs.mjs.map +1 -0
- package/dist/mcp-server/utils/errors.cjs +14 -0
- package/dist/mcp-server/utils/errors.cjs.map +1 -0
- package/dist/mcp-server/utils/errors.d.cts +9 -0
- package/dist/mcp-server/utils/errors.d.cts.map +1 -0
- package/dist/mcp-server/utils/errors.d.mts +9 -0
- package/dist/mcp-server/utils/errors.d.mts.map +1 -0
- package/dist/mcp-server/utils/errors.mjs +11 -0
- package/dist/mcp-server/utils/errors.mjs.map +1 -0
- package/dist/mcp-server/utils/index.cjs +22 -0
- package/dist/mcp-server/utils/index.cjs.map +1 -0
- package/dist/mcp-server/utils/index.d.cts +8 -0
- package/dist/mcp-server/utils/index.d.cts.map +1 -0
- package/dist/mcp-server/utils/index.d.mts +8 -0
- package/dist/mcp-server/utils/index.d.mts.map +1 -0
- package/dist/mcp-server/utils/index.mjs +8 -0
- package/dist/mcp-server/utils/index.mjs.map +1 -0
- package/dist/mcp-server/utils/logger.cjs +25 -0
- package/dist/mcp-server/utils/logger.cjs.map +1 -0
- package/dist/mcp-server/utils/logger.d.cts +9 -0
- package/dist/mcp-server/utils/logger.d.cts.map +1 -0
- package/dist/mcp-server/utils/logger.d.mts +9 -0
- package/dist/mcp-server/utils/logger.d.mts.map +1 -0
- package/dist/mcp-server/utils/logger.mjs +22 -0
- package/dist/mcp-server/utils/logger.mjs.map +1 -0
- package/dist/mcp-server/utils/redaction.cjs +24 -0
- package/dist/mcp-server/utils/redaction.cjs.map +1 -0
- package/dist/mcp-server/utils/redaction.d.cts +9 -0
- package/dist/mcp-server/utils/redaction.d.cts.map +1 -0
- package/dist/mcp-server/utils/redaction.d.mts +9 -0
- package/dist/mcp-server/utils/redaction.d.mts.map +1 -0
- package/dist/mcp-server/utils/redaction.mjs +20 -0
- package/dist/mcp-server/utils/redaction.mjs.map +1 -0
- package/dist/mcp-server/utils/response.cjs +49 -0
- package/dist/mcp-server/utils/response.cjs.map +1 -0
- package/dist/mcp-server/utils/response.d.cts +22 -0
- package/dist/mcp-server/utils/response.d.cts.map +1 -0
- package/dist/mcp-server/utils/response.d.mts +22 -0
- package/dist/mcp-server/utils/response.d.mts.map +1 -0
- package/dist/mcp-server/utils/response.mjs +45 -0
- package/dist/mcp-server/utils/response.mjs.map +1 -0
- package/dist/mcp-server/utils/targets.cjs +32 -0
- package/dist/mcp-server/utils/targets.cjs.map +1 -0
- package/dist/mcp-server/utils/targets.d.cts +25 -0
- package/dist/mcp-server/utils/targets.d.cts.map +1 -0
- package/dist/mcp-server/utils/targets.d.mts +25 -0
- package/dist/mcp-server/utils/targets.d.mts.map +1 -0
- package/dist/mcp-server/utils/targets.mjs +29 -0
- package/dist/mcp-server/utils/targets.mjs.map +1 -0
- package/dist/mcp-server/utils/time.cjs +39 -0
- package/dist/mcp-server/utils/time.cjs.map +1 -0
- package/dist/mcp-server/utils/time.d.cts +15 -0
- package/dist/mcp-server/utils/time.d.cts.map +1 -0
- package/dist/mcp-server/utils/time.d.mts +15 -0
- package/dist/mcp-server/utils/time.d.mts.map +1 -0
- package/dist/mcp-server/utils/time.mjs +35 -0
- package/dist/mcp-server/utils/time.mjs.map +1 -0
- package/dist/mcp-server/utils/type-guards.cjs +42 -0
- package/dist/mcp-server/utils/type-guards.cjs.map +1 -0
- package/dist/mcp-server/utils/type-guards.d.cts +30 -0
- package/dist/mcp-server/utils/type-guards.d.cts.map +1 -0
- package/dist/mcp-server/utils/type-guards.d.mts +30 -0
- package/dist/mcp-server/utils/type-guards.d.mts.map +1 -0
- package/dist/mcp-server/utils/type-guards.mjs +38 -0
- package/dist/mcp-server/utils/type-guards.mjs.map +1 -0
- package/dist/utils/fetch.cjs +36 -0
- package/dist/utils/fetch.cjs.map +1 -0
- package/dist/utils/fetch.d.cts +20 -0
- package/dist/utils/fetch.d.cts.map +1 -0
- package/dist/utils/fetch.d.mts +20 -0
- package/dist/utils/fetch.d.mts.map +1 -0
- package/dist/utils/fetch.mjs +33 -0
- package/dist/utils/fetch.mjs.map +1 -0
- package/dist/utils/index.cjs +11 -0
- package/dist/utils/index.cjs.map +1 -0
- package/dist/utils/index.d.cts +6 -0
- package/dist/utils/index.d.cts.map +1 -0
- package/dist/utils/index.d.mts +6 -0
- package/dist/utils/index.d.mts.map +1 -0
- package/dist/utils/index.mjs +6 -0
- package/dist/utils/index.mjs.map +1 -0
- package/dist/utils/service-readiness.cjs +75 -0
- package/dist/utils/service-readiness.cjs.map +1 -0
- package/dist/utils/service-readiness.d.cts +61 -0
- package/dist/utils/service-readiness.d.cts.map +1 -0
- package/dist/utils/service-readiness.d.mts +61 -0
- package/dist/utils/service-readiness.d.mts.map +1 -0
- package/dist/utils/service-readiness.mjs +72 -0
- package/dist/utils/service-readiness.mjs.map +1 -0
- package/package.json +119 -0
|
@@ -0,0 +1,430 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { SMART_CONTRACT_NAMES, HARDFORKS } from "./types/seeding.mjs";
|
|
3
|
+
export const a11yRefPattern = z
|
|
4
|
+
.string()
|
|
5
|
+
.regex(/^e[0-9]+$/u)
|
|
6
|
+
.describe('Accessibility ref from accessibility_snapshot (e.g., e1, e2). ' +
|
|
7
|
+
'These refs are ephemeral and only valid within the current screen state.');
|
|
8
|
+
export const targetSelectionSchema = z
|
|
9
|
+
.object({
|
|
10
|
+
a11yRef: a11yRefPattern.optional(),
|
|
11
|
+
testId: z
|
|
12
|
+
.string()
|
|
13
|
+
.min(1)
|
|
14
|
+
.describe('data-testid attribute value (stable, preferred for interactions)')
|
|
15
|
+
.optional(),
|
|
16
|
+
selector: z
|
|
17
|
+
.string()
|
|
18
|
+
.min(1)
|
|
19
|
+
.describe('CSS selector (fallback, less stable than testId)')
|
|
20
|
+
.optional(),
|
|
21
|
+
})
|
|
22
|
+
.refine((data) => {
|
|
23
|
+
const provided = [data.a11yRef, data.testId, data.selector].filter(Boolean);
|
|
24
|
+
return provided.length === 1;
|
|
25
|
+
}, {
|
|
26
|
+
message: 'Exactly one of a11yRef, testId, or selector must be provided',
|
|
27
|
+
});
|
|
28
|
+
export const knowledgeScopeSchema = z.union([
|
|
29
|
+
z.literal('current').describe('Only search the active session'),
|
|
30
|
+
z.literal('all').describe('Search all sessions in the knowledge store'),
|
|
31
|
+
z
|
|
32
|
+
.object({
|
|
33
|
+
sessionId: z.string().min(4).describe('Specific session ID to query'),
|
|
34
|
+
})
|
|
35
|
+
.describe('Query a specific prior session by ID'),
|
|
36
|
+
]);
|
|
37
|
+
const smartContractNames = SMART_CONTRACT_NAMES;
|
|
38
|
+
const hardforks = HARDFORKS;
|
|
39
|
+
export const knowledgeFiltersSchema = z
|
|
40
|
+
.object({
|
|
41
|
+
flowTag: z
|
|
42
|
+
.string()
|
|
43
|
+
.min(1)
|
|
44
|
+
.describe('Filter by flow tag (e.g., send, swap, connect, sign)')
|
|
45
|
+
.optional(),
|
|
46
|
+
tag: z.string().min(1).describe('Filter by free-form tag').optional(),
|
|
47
|
+
screen: z
|
|
48
|
+
.string()
|
|
49
|
+
.min(1)
|
|
50
|
+
.describe('Filter by screen name (e.g., home, unlock, settings)')
|
|
51
|
+
.optional(),
|
|
52
|
+
sinceHours: z
|
|
53
|
+
.number()
|
|
54
|
+
.int()
|
|
55
|
+
.min(1)
|
|
56
|
+
.max(720)
|
|
57
|
+
.describe('Only include sessions/steps from the last N hours')
|
|
58
|
+
.optional(),
|
|
59
|
+
})
|
|
60
|
+
.optional();
|
|
61
|
+
export const buildInputSchema = z.object({
|
|
62
|
+
buildType: z
|
|
63
|
+
.enum(['build:test'])
|
|
64
|
+
.default('build:test')
|
|
65
|
+
.describe('Build command to run. Currently only build:test is supported.'),
|
|
66
|
+
force: z
|
|
67
|
+
.boolean()
|
|
68
|
+
.default(false)
|
|
69
|
+
.describe('Force rebuild even if a build already exists'),
|
|
70
|
+
});
|
|
71
|
+
export const launchInputSchema = z.object({
|
|
72
|
+
autoBuild: z
|
|
73
|
+
.boolean()
|
|
74
|
+
.default(true)
|
|
75
|
+
.describe('Automatically run build if extension is not found'),
|
|
76
|
+
stateMode: z
|
|
77
|
+
.enum(['default', 'onboarding', 'custom'])
|
|
78
|
+
.default('default')
|
|
79
|
+
.describe('Wallet state mode: ' +
|
|
80
|
+
'default = pre-onboarded wallet with 25 ETH, ' +
|
|
81
|
+
'onboarding = fresh wallet requiring setup, ' +
|
|
82
|
+
'custom = use provided fixture'),
|
|
83
|
+
fixturePreset: z
|
|
84
|
+
.string()
|
|
85
|
+
.min(1)
|
|
86
|
+
.describe('Name of preset fixture (e.g., withMultipleAccounts, withERC20Tokens). ' +
|
|
87
|
+
'Only used when stateMode=custom.')
|
|
88
|
+
.optional(),
|
|
89
|
+
fixture: z
|
|
90
|
+
.record(z.string(), z.unknown())
|
|
91
|
+
.describe('Direct fixture object for stateMode=custom')
|
|
92
|
+
.optional(),
|
|
93
|
+
ports: z
|
|
94
|
+
.object({
|
|
95
|
+
anvil: z
|
|
96
|
+
.number()
|
|
97
|
+
.int()
|
|
98
|
+
.min(1)
|
|
99
|
+
.max(65535)
|
|
100
|
+
.describe('Port for Anvil local chain (default: 8545)')
|
|
101
|
+
.optional(),
|
|
102
|
+
fixtureServer: z
|
|
103
|
+
.number()
|
|
104
|
+
.int()
|
|
105
|
+
.min(1)
|
|
106
|
+
.max(65535)
|
|
107
|
+
.describe('Port for fixture server (default: 12345)')
|
|
108
|
+
.optional(),
|
|
109
|
+
})
|
|
110
|
+
.optional(),
|
|
111
|
+
slowMo: z
|
|
112
|
+
.number()
|
|
113
|
+
.int()
|
|
114
|
+
.min(0)
|
|
115
|
+
.max(10000)
|
|
116
|
+
.default(0)
|
|
117
|
+
.describe('Slow down Playwright actions by N milliseconds (for debugging)'),
|
|
118
|
+
extensionPath: z
|
|
119
|
+
.string()
|
|
120
|
+
.describe('Custom path to built extension directory')
|
|
121
|
+
.optional(),
|
|
122
|
+
goal: z
|
|
123
|
+
.string()
|
|
124
|
+
.describe('Goal or task description for this session (for knowledge store)')
|
|
125
|
+
.optional(),
|
|
126
|
+
flowTags: z
|
|
127
|
+
.array(z.string())
|
|
128
|
+
.describe('Flow tags for categorization (e.g., ["send"], ["swap", "confirmation"]). ' +
|
|
129
|
+
'Used for cross-session knowledge retrieval.')
|
|
130
|
+
.optional(),
|
|
131
|
+
tags: z
|
|
132
|
+
.array(z.string())
|
|
133
|
+
.describe('Free-form tags for ad-hoc filtering')
|
|
134
|
+
.optional(),
|
|
135
|
+
seedContracts: z
|
|
136
|
+
.array(z.enum(smartContractNames))
|
|
137
|
+
.describe('Smart contracts to deploy on launch (before extension loads)')
|
|
138
|
+
.optional(),
|
|
139
|
+
});
|
|
140
|
+
export const cleanupInputSchema = z.object({
|
|
141
|
+
sessionId: z
|
|
142
|
+
.string()
|
|
143
|
+
.describe('Session ID to clean up (optional, defaults to current)')
|
|
144
|
+
.optional(),
|
|
145
|
+
});
|
|
146
|
+
export const getStateInputSchema = z.object({});
|
|
147
|
+
export const navigateInputSchema = z
|
|
148
|
+
.object({
|
|
149
|
+
screen: z
|
|
150
|
+
.enum(['home', 'settings', 'notification', 'url'])
|
|
151
|
+
.describe('Target screen: home, settings, notification (popup), or url (custom)'),
|
|
152
|
+
url: z
|
|
153
|
+
.string()
|
|
154
|
+
.min(1)
|
|
155
|
+
.describe('URL to navigate to (required when screen="url")')
|
|
156
|
+
.optional(),
|
|
157
|
+
})
|
|
158
|
+
.refine((data) => {
|
|
159
|
+
if (data.screen === 'url' && !data.url) {
|
|
160
|
+
return false;
|
|
161
|
+
}
|
|
162
|
+
return true;
|
|
163
|
+
}, {
|
|
164
|
+
message: 'url is required when screen is "url"',
|
|
165
|
+
path: ['url'],
|
|
166
|
+
});
|
|
167
|
+
export const waitForNotificationInputSchema = z.object({
|
|
168
|
+
timeoutMs: z
|
|
169
|
+
.number()
|
|
170
|
+
.int()
|
|
171
|
+
.min(1000)
|
|
172
|
+
.max(60000)
|
|
173
|
+
.default(15000)
|
|
174
|
+
.describe('Timeout in milliseconds to wait for notification popup'),
|
|
175
|
+
});
|
|
176
|
+
export const listTestIdsInputSchema = z.object({
|
|
177
|
+
limit: z
|
|
178
|
+
.number()
|
|
179
|
+
.int()
|
|
180
|
+
.min(1)
|
|
181
|
+
.max(500)
|
|
182
|
+
.default(150)
|
|
183
|
+
.describe('Maximum number of testIds to return'),
|
|
184
|
+
});
|
|
185
|
+
export const accessibilitySnapshotInputSchema = z.object({
|
|
186
|
+
rootSelector: z
|
|
187
|
+
.string()
|
|
188
|
+
.min(1)
|
|
189
|
+
.describe('CSS selector to scope the snapshot (optional)')
|
|
190
|
+
.optional(),
|
|
191
|
+
});
|
|
192
|
+
export const describeScreenInputSchema = z.object({
|
|
193
|
+
includeScreenshot: z
|
|
194
|
+
.boolean()
|
|
195
|
+
.default(false)
|
|
196
|
+
.describe('Capture and include a screenshot (opt-in for privacy)'),
|
|
197
|
+
screenshotName: z
|
|
198
|
+
.string()
|
|
199
|
+
.min(1)
|
|
200
|
+
.describe('Name for the screenshot file (without extension)')
|
|
201
|
+
.optional(),
|
|
202
|
+
includeScreenshotBase64: z
|
|
203
|
+
.boolean()
|
|
204
|
+
.default(false)
|
|
205
|
+
.describe('Include base64-encoded screenshot in response'),
|
|
206
|
+
});
|
|
207
|
+
export const screenshotInputSchema = z.object({
|
|
208
|
+
name: z.string().min(1).describe('Screenshot filename (without extension)'),
|
|
209
|
+
fullPage: z
|
|
210
|
+
.boolean()
|
|
211
|
+
.default(true)
|
|
212
|
+
.describe('Capture full page or just viewport'),
|
|
213
|
+
selector: z
|
|
214
|
+
.string()
|
|
215
|
+
.min(1)
|
|
216
|
+
.describe('CSS selector to capture specific element')
|
|
217
|
+
.optional(),
|
|
218
|
+
includeBase64: z
|
|
219
|
+
.boolean()
|
|
220
|
+
.default(false)
|
|
221
|
+
.describe('Include base64-encoded image in response'),
|
|
222
|
+
});
|
|
223
|
+
export const clickInputSchema = targetSelectionSchema.and(z.object({
|
|
224
|
+
timeoutMs: z
|
|
225
|
+
.number()
|
|
226
|
+
.int()
|
|
227
|
+
.min(0)
|
|
228
|
+
.max(60000)
|
|
229
|
+
.default(15000)
|
|
230
|
+
.describe('Timeout to wait for element to become visible'),
|
|
231
|
+
}));
|
|
232
|
+
export const typeInputSchema = targetSelectionSchema.and(z.object({
|
|
233
|
+
text: z.string().describe('Text to type into the element'),
|
|
234
|
+
timeoutMs: z
|
|
235
|
+
.number()
|
|
236
|
+
.int()
|
|
237
|
+
.min(0)
|
|
238
|
+
.max(60000)
|
|
239
|
+
.default(15000)
|
|
240
|
+
.describe('Timeout to wait for element to become visible'),
|
|
241
|
+
}));
|
|
242
|
+
export const waitForInputSchema = targetSelectionSchema.and(z.object({
|
|
243
|
+
timeoutMs: z
|
|
244
|
+
.number()
|
|
245
|
+
.int()
|
|
246
|
+
.min(100)
|
|
247
|
+
.max(120000)
|
|
248
|
+
.default(15000)
|
|
249
|
+
.describe('Timeout to wait for element'),
|
|
250
|
+
}));
|
|
251
|
+
export const knowledgeLastInputSchema = z.object({
|
|
252
|
+
n: z
|
|
253
|
+
.number()
|
|
254
|
+
.int()
|
|
255
|
+
.min(1)
|
|
256
|
+
.max(200)
|
|
257
|
+
.default(20)
|
|
258
|
+
.describe('Number of recent steps to retrieve'),
|
|
259
|
+
scope: knowledgeScopeSchema
|
|
260
|
+
.default('current')
|
|
261
|
+
.describe('Scope for retrieval: current session, all sessions, or specific session'),
|
|
262
|
+
filters: knowledgeFiltersSchema,
|
|
263
|
+
});
|
|
264
|
+
export const knowledgeSearchInputSchema = z.object({
|
|
265
|
+
query: z
|
|
266
|
+
.string()
|
|
267
|
+
.min(1)
|
|
268
|
+
.max(200)
|
|
269
|
+
.describe('Search query - matches tool names, screen names, testIds, and a11y names'),
|
|
270
|
+
limit: z
|
|
271
|
+
.number()
|
|
272
|
+
.int()
|
|
273
|
+
.min(1)
|
|
274
|
+
.max(100)
|
|
275
|
+
.default(20)
|
|
276
|
+
.describe('Maximum number of results'),
|
|
277
|
+
scope: knowledgeScopeSchema
|
|
278
|
+
.default('all')
|
|
279
|
+
.describe('Search scope (defaults to all sessions for cross-session learning)'),
|
|
280
|
+
filters: knowledgeFiltersSchema,
|
|
281
|
+
});
|
|
282
|
+
export const knowledgeSummarizeInputSchema = z.object({
|
|
283
|
+
sessionId: z
|
|
284
|
+
.string()
|
|
285
|
+
.describe('Deprecated: use scope. Session ID to summarize.')
|
|
286
|
+
.optional(),
|
|
287
|
+
scope: z
|
|
288
|
+
.union([
|
|
289
|
+
z.literal('current'),
|
|
290
|
+
z.object({
|
|
291
|
+
sessionId: z.string().min(4),
|
|
292
|
+
}),
|
|
293
|
+
])
|
|
294
|
+
.default('current')
|
|
295
|
+
.describe('Session to summarize (cannot use "all")'),
|
|
296
|
+
});
|
|
297
|
+
export const knowledgeSessionsInputSchema = z.object({
|
|
298
|
+
limit: z
|
|
299
|
+
.number()
|
|
300
|
+
.int()
|
|
301
|
+
.min(1)
|
|
302
|
+
.max(50)
|
|
303
|
+
.default(10)
|
|
304
|
+
.describe('Maximum number of sessions to list'),
|
|
305
|
+
filters: knowledgeFiltersSchema,
|
|
306
|
+
});
|
|
307
|
+
export const seedContractInputSchema = z.object({
|
|
308
|
+
contractName: z.enum(smartContractNames),
|
|
309
|
+
hardfork: z.enum(hardforks).optional(),
|
|
310
|
+
deployerOptions: z
|
|
311
|
+
.object({
|
|
312
|
+
fromAddress: z.string().optional(),
|
|
313
|
+
fromPrivateKey: z.string().optional(),
|
|
314
|
+
})
|
|
315
|
+
.optional(),
|
|
316
|
+
});
|
|
317
|
+
export const seedContractsInputSchema = z.object({
|
|
318
|
+
contracts: z.array(z.enum(smartContractNames)).min(1).max(9),
|
|
319
|
+
hardfork: z.enum(hardforks).optional(),
|
|
320
|
+
});
|
|
321
|
+
export const getContractAddressInputSchema = z.object({
|
|
322
|
+
contractName: z.enum(smartContractNames),
|
|
323
|
+
});
|
|
324
|
+
export const listDeployedContractsInputSchema = z.object({});
|
|
325
|
+
const tabRoles = ['extension', 'notification', 'dapp', 'other'];
|
|
326
|
+
const closableTabRoles = ['notification', 'dapp', 'other'];
|
|
327
|
+
export const switchToTabInputSchema = z
|
|
328
|
+
.object({
|
|
329
|
+
role: z
|
|
330
|
+
.enum(tabRoles)
|
|
331
|
+
.describe('Tab role to switch to (extension, notification, dapp, other)')
|
|
332
|
+
.optional(),
|
|
333
|
+
url: z
|
|
334
|
+
.string()
|
|
335
|
+
.min(1)
|
|
336
|
+
.describe('URL prefix to match for tab switching')
|
|
337
|
+
.optional(),
|
|
338
|
+
})
|
|
339
|
+
.refine((data) => data.role ?? data.url, {
|
|
340
|
+
message: 'Either role or url must be provided',
|
|
341
|
+
});
|
|
342
|
+
export const closeTabInputSchema = z
|
|
343
|
+
.object({
|
|
344
|
+
role: z
|
|
345
|
+
.enum(closableTabRoles)
|
|
346
|
+
.describe('Tab role to close (notification, dapp, other). Cannot close extension.')
|
|
347
|
+
.optional(),
|
|
348
|
+
url: z
|
|
349
|
+
.string()
|
|
350
|
+
.min(1)
|
|
351
|
+
.describe('URL prefix to match for tab closing')
|
|
352
|
+
.optional(),
|
|
353
|
+
})
|
|
354
|
+
.refine((data) => data.role ?? data.url, {
|
|
355
|
+
message: 'Either role or url must be provided',
|
|
356
|
+
});
|
|
357
|
+
export const runStepsInputSchema = z.object({
|
|
358
|
+
steps: z
|
|
359
|
+
.array(z.object({
|
|
360
|
+
tool: z.string(),
|
|
361
|
+
args: z.record(z.string(), z.unknown()).optional(),
|
|
362
|
+
}))
|
|
363
|
+
.min(1)
|
|
364
|
+
.max(50)
|
|
365
|
+
.describe('Array of tool calls to execute in order'),
|
|
366
|
+
stopOnError: z
|
|
367
|
+
.boolean()
|
|
368
|
+
.default(false)
|
|
369
|
+
.describe('Stop execution on first error (default: false - continue)'),
|
|
370
|
+
includeObservations: z
|
|
371
|
+
.enum(['none', 'failures', 'all'])
|
|
372
|
+
.default('all')
|
|
373
|
+
.describe('When to include observations in results: ' +
|
|
374
|
+
'none = never (fastest), failures = only for failed steps, all = always'),
|
|
375
|
+
});
|
|
376
|
+
export const setContextInputSchema = z.object({
|
|
377
|
+
context: z.enum(['e2e', 'prod']).describe('Target context to switch to'),
|
|
378
|
+
});
|
|
379
|
+
export const getContextInputSchema = z
|
|
380
|
+
.object({})
|
|
381
|
+
.describe('No parameters required');
|
|
382
|
+
export const clipboardInputSchema = z
|
|
383
|
+
.object({
|
|
384
|
+
action: z
|
|
385
|
+
.enum(['write', 'read'])
|
|
386
|
+
.describe('Action to perform: write text to clipboard or read from clipboard'),
|
|
387
|
+
text: z
|
|
388
|
+
.string()
|
|
389
|
+
.describe("Text to write to clipboard (required when action is 'write')")
|
|
390
|
+
.optional(),
|
|
391
|
+
})
|
|
392
|
+
.refine((data) => {
|
|
393
|
+
if (data.action === 'write' && !data.text) {
|
|
394
|
+
return false;
|
|
395
|
+
}
|
|
396
|
+
return true;
|
|
397
|
+
}, {
|
|
398
|
+
message: "text is required when action is 'write'",
|
|
399
|
+
path: ['text'],
|
|
400
|
+
});
|
|
401
|
+
export const toolSchemas = {
|
|
402
|
+
build: buildInputSchema,
|
|
403
|
+
launch: launchInputSchema,
|
|
404
|
+
cleanup: cleanupInputSchema,
|
|
405
|
+
get_state: getStateInputSchema,
|
|
406
|
+
navigate: navigateInputSchema,
|
|
407
|
+
wait_for_notification: waitForNotificationInputSchema,
|
|
408
|
+
switch_to_tab: switchToTabInputSchema,
|
|
409
|
+
close_tab: closeTabInputSchema,
|
|
410
|
+
list_testids: listTestIdsInputSchema,
|
|
411
|
+
accessibility_snapshot: accessibilitySnapshotInputSchema,
|
|
412
|
+
describe_screen: describeScreenInputSchema,
|
|
413
|
+
screenshot: screenshotInputSchema,
|
|
414
|
+
click: clickInputSchema,
|
|
415
|
+
type: typeInputSchema,
|
|
416
|
+
wait_for: waitForInputSchema,
|
|
417
|
+
knowledge_last: knowledgeLastInputSchema,
|
|
418
|
+
knowledge_search: knowledgeSearchInputSchema,
|
|
419
|
+
knowledge_summarize: knowledgeSummarizeInputSchema,
|
|
420
|
+
knowledge_sessions: knowledgeSessionsInputSchema,
|
|
421
|
+
seed_contract: seedContractInputSchema,
|
|
422
|
+
seed_contracts: seedContractsInputSchema,
|
|
423
|
+
get_contract_address: getContractAddressInputSchema,
|
|
424
|
+
list_contracts: listDeployedContractsInputSchema,
|
|
425
|
+
run_steps: runStepsInputSchema,
|
|
426
|
+
set_context: setContextInputSchema,
|
|
427
|
+
get_context: getContextInputSchema,
|
|
428
|
+
clipboard: clipboardInputSchema,
|
|
429
|
+
};
|
|
430
|
+
//# sourceMappingURL=schemas.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schemas.mjs","sourceRoot":"","sources":["../../src/mcp-server/schemas.ts"],"names":[],"mappings":"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","sourcesContent":["import { z } from 'zod';\n\nimport { SMART_CONTRACT_NAMES, HARDFORKS } from './types/seeding.js';\n\nexport const a11yRefPattern = z\n .string()\n .regex(/^e[0-9]+$/u)\n .describe(\n 'Accessibility ref from accessibility_snapshot (e.g., e1, e2). ' +\n 'These refs are ephemeral and only valid within the current screen state.',\n );\n\nexport const targetSelectionSchema = z\n .object({\n a11yRef: a11yRefPattern.optional(),\n testId: z\n .string()\n .min(1)\n .describe(\n 'data-testid attribute value (stable, preferred for interactions)',\n )\n .optional(),\n selector: z\n .string()\n .min(1)\n .describe('CSS selector (fallback, less stable than testId)')\n .optional(),\n })\n .refine(\n (data) => {\n const provided = [data.a11yRef, data.testId, data.selector].filter(\n Boolean,\n );\n return provided.length === 1;\n },\n {\n message: 'Exactly one of a11yRef, testId, or selector must be provided',\n },\n );\n\nexport const knowledgeScopeSchema = z.union([\n z.literal('current').describe('Only search the active session'),\n z.literal('all').describe('Search all sessions in the knowledge store'),\n z\n .object({\n sessionId: z.string().min(4).describe('Specific session ID to query'),\n })\n .describe('Query a specific prior session by ID'),\n]);\n\nconst smartContractNames = SMART_CONTRACT_NAMES;\nconst hardforks = HARDFORKS;\n\nexport const knowledgeFiltersSchema = z\n .object({\n flowTag: z\n .string()\n .min(1)\n .describe('Filter by flow tag (e.g., send, swap, connect, sign)')\n .optional(),\n tag: z.string().min(1).describe('Filter by free-form tag').optional(),\n screen: z\n .string()\n .min(1)\n .describe('Filter by screen name (e.g., home, unlock, settings)')\n .optional(),\n sinceHours: z\n .number()\n .int()\n .min(1)\n .max(720)\n .describe('Only include sessions/steps from the last N hours')\n .optional(),\n })\n .optional();\n\nexport const buildInputSchema = z.object({\n buildType: z\n .enum(['build:test'])\n .default('build:test')\n .describe('Build command to run. Currently only build:test is supported.'),\n force: z\n .boolean()\n .default(false)\n .describe('Force rebuild even if a build already exists'),\n});\n\nexport const launchInputSchema = z.object({\n autoBuild: z\n .boolean()\n .default(true)\n .describe('Automatically run build if extension is not found'),\n stateMode: z\n .enum(['default', 'onboarding', 'custom'])\n .default('default')\n .describe(\n 'Wallet state mode: ' +\n 'default = pre-onboarded wallet with 25 ETH, ' +\n 'onboarding = fresh wallet requiring setup, ' +\n 'custom = use provided fixture',\n ),\n fixturePreset: z\n .string()\n .min(1)\n .describe(\n 'Name of preset fixture (e.g., withMultipleAccounts, withERC20Tokens). ' +\n 'Only used when stateMode=custom.',\n )\n .optional(),\n fixture: z\n .record(z.string(), z.unknown())\n .describe('Direct fixture object for stateMode=custom')\n .optional(),\n ports: z\n .object({\n anvil: z\n .number()\n .int()\n .min(1)\n .max(65535)\n .describe('Port for Anvil local chain (default: 8545)')\n .optional(),\n fixtureServer: z\n .number()\n .int()\n .min(1)\n .max(65535)\n .describe('Port for fixture server (default: 12345)')\n .optional(),\n })\n .optional(),\n slowMo: z\n .number()\n .int()\n .min(0)\n .max(10000)\n .default(0)\n .describe('Slow down Playwright actions by N milliseconds (for debugging)'),\n extensionPath: z\n .string()\n .describe('Custom path to built extension directory')\n .optional(),\n goal: z\n .string()\n .describe('Goal or task description for this session (for knowledge store)')\n .optional(),\n flowTags: z\n .array(z.string())\n .describe(\n 'Flow tags for categorization (e.g., [\"send\"], [\"swap\", \"confirmation\"]). ' +\n 'Used for cross-session knowledge retrieval.',\n )\n .optional(),\n tags: z\n .array(z.string())\n .describe('Free-form tags for ad-hoc filtering')\n .optional(),\n seedContracts: z\n .array(z.enum(smartContractNames))\n .describe('Smart contracts to deploy on launch (before extension loads)')\n .optional(),\n});\n\nexport const cleanupInputSchema = z.object({\n sessionId: z\n .string()\n .describe('Session ID to clean up (optional, defaults to current)')\n .optional(),\n});\n\nexport const getStateInputSchema = z.object({});\n\nexport const navigateInputSchema = z\n .object({\n screen: z\n .enum(['home', 'settings', 'notification', 'url'])\n .describe(\n 'Target screen: home, settings, notification (popup), or url (custom)',\n ),\n url: z\n .string()\n .min(1)\n .describe('URL to navigate to (required when screen=\"url\")')\n .optional(),\n })\n .refine(\n (data) => {\n if (data.screen === 'url' && !data.url) {\n return false;\n }\n return true;\n },\n {\n message: 'url is required when screen is \"url\"',\n path: ['url'],\n },\n );\n\nexport const waitForNotificationInputSchema = z.object({\n timeoutMs: z\n .number()\n .int()\n .min(1000)\n .max(60000)\n .default(15000)\n .describe('Timeout in milliseconds to wait for notification popup'),\n});\n\nexport const listTestIdsInputSchema = z.object({\n limit: z\n .number()\n .int()\n .min(1)\n .max(500)\n .default(150)\n .describe('Maximum number of testIds to return'),\n});\n\nexport const accessibilitySnapshotInputSchema = z.object({\n rootSelector: z\n .string()\n .min(1)\n .describe('CSS selector to scope the snapshot (optional)')\n .optional(),\n});\n\nexport const describeScreenInputSchema = z.object({\n includeScreenshot: z\n .boolean()\n .default(false)\n .describe('Capture and include a screenshot (opt-in for privacy)'),\n screenshotName: z\n .string()\n .min(1)\n .describe('Name for the screenshot file (without extension)')\n .optional(),\n includeScreenshotBase64: z\n .boolean()\n .default(false)\n .describe('Include base64-encoded screenshot in response'),\n});\n\nexport const screenshotInputSchema = z.object({\n name: z.string().min(1).describe('Screenshot filename (without extension)'),\n fullPage: z\n .boolean()\n .default(true)\n .describe('Capture full page or just viewport'),\n selector: z\n .string()\n .min(1)\n .describe('CSS selector to capture specific element')\n .optional(),\n includeBase64: z\n .boolean()\n .default(false)\n .describe('Include base64-encoded image in response'),\n});\n\nexport const clickInputSchema = targetSelectionSchema.and(\n z.object({\n timeoutMs: z\n .number()\n .int()\n .min(0)\n .max(60000)\n .default(15000)\n .describe('Timeout to wait for element to become visible'),\n }),\n);\n\nexport const typeInputSchema = targetSelectionSchema.and(\n z.object({\n text: z.string().describe('Text to type into the element'),\n timeoutMs: z\n .number()\n .int()\n .min(0)\n .max(60000)\n .default(15000)\n .describe('Timeout to wait for element to become visible'),\n }),\n);\n\nexport const waitForInputSchema = targetSelectionSchema.and(\n z.object({\n timeoutMs: z\n .number()\n .int()\n .min(100)\n .max(120000)\n .default(15000)\n .describe('Timeout to wait for element'),\n }),\n);\n\nexport const knowledgeLastInputSchema = z.object({\n n: z\n .number()\n .int()\n .min(1)\n .max(200)\n .default(20)\n .describe('Number of recent steps to retrieve'),\n scope: knowledgeScopeSchema\n .default('current')\n .describe(\n 'Scope for retrieval: current session, all sessions, or specific session',\n ),\n filters: knowledgeFiltersSchema,\n});\n\nexport const knowledgeSearchInputSchema = z.object({\n query: z\n .string()\n .min(1)\n .max(200)\n .describe(\n 'Search query - matches tool names, screen names, testIds, and a11y names',\n ),\n limit: z\n .number()\n .int()\n .min(1)\n .max(100)\n .default(20)\n .describe('Maximum number of results'),\n scope: knowledgeScopeSchema\n .default('all')\n .describe(\n 'Search scope (defaults to all sessions for cross-session learning)',\n ),\n filters: knowledgeFiltersSchema,\n});\n\nexport const knowledgeSummarizeInputSchema = z.object({\n sessionId: z\n .string()\n .describe('Deprecated: use scope. Session ID to summarize.')\n .optional(),\n scope: z\n .union([\n z.literal('current'),\n z.object({\n sessionId: z.string().min(4),\n }),\n ])\n .default('current')\n .describe('Session to summarize (cannot use \"all\")'),\n});\n\nexport const knowledgeSessionsInputSchema = z.object({\n limit: z\n .number()\n .int()\n .min(1)\n .max(50)\n .default(10)\n .describe('Maximum number of sessions to list'),\n filters: knowledgeFiltersSchema,\n});\n\nexport const seedContractInputSchema = z.object({\n contractName: z.enum(smartContractNames),\n hardfork: z.enum(hardforks).optional(),\n deployerOptions: z\n .object({\n fromAddress: z.string().optional(),\n fromPrivateKey: z.string().optional(),\n })\n .optional(),\n});\n\nexport const seedContractsInputSchema = z.object({\n contracts: z.array(z.enum(smartContractNames)).min(1).max(9),\n hardfork: z.enum(hardforks).optional(),\n});\n\nexport const getContractAddressInputSchema = z.object({\n contractName: z.enum(smartContractNames),\n});\n\nexport const listDeployedContractsInputSchema = z.object({});\n\nconst tabRoles = ['extension', 'notification', 'dapp', 'other'] as const;\nconst closableTabRoles = ['notification', 'dapp', 'other'] as const;\n\nexport const switchToTabInputSchema = z\n .object({\n role: z\n .enum(tabRoles)\n .describe('Tab role to switch to (extension, notification, dapp, other)')\n .optional(),\n url: z\n .string()\n .min(1)\n .describe('URL prefix to match for tab switching')\n .optional(),\n })\n .refine((data) => data.role ?? data.url, {\n message: 'Either role or url must be provided',\n });\n\nexport const closeTabInputSchema = z\n .object({\n role: z\n .enum(closableTabRoles)\n .describe(\n 'Tab role to close (notification, dapp, other). Cannot close extension.',\n )\n .optional(),\n url: z\n .string()\n .min(1)\n .describe('URL prefix to match for tab closing')\n .optional(),\n })\n .refine((data) => data.role ?? data.url, {\n message: 'Either role or url must be provided',\n });\n\nexport const runStepsInputSchema = z.object({\n steps: z\n .array(\n z.object({\n tool: z.string(),\n args: z.record(z.string(), z.unknown()).optional(),\n }),\n )\n .min(1)\n .max(50)\n .describe('Array of tool calls to execute in order'),\n stopOnError: z\n .boolean()\n .default(false)\n .describe('Stop execution on first error (default: false - continue)'),\n includeObservations: z\n .enum(['none', 'failures', 'all'])\n .default('all')\n .describe(\n 'When to include observations in results: ' +\n 'none = never (fastest), failures = only for failed steps, all = always',\n ),\n});\n\nexport const setContextInputSchema = z.object({\n context: z.enum(['e2e', 'prod']).describe('Target context to switch to'),\n});\n\nexport const getContextInputSchema = z\n .object({})\n .describe('No parameters required');\n\nexport const clipboardInputSchema = z\n .object({\n action: z\n .enum(['write', 'read'])\n .describe(\n 'Action to perform: write text to clipboard or read from clipboard',\n ),\n text: z\n .string()\n .describe(\"Text to write to clipboard (required when action is 'write')\")\n .optional(),\n })\n .refine(\n (data) => {\n if (data.action === 'write' && !data.text) {\n return false;\n }\n return true;\n },\n {\n message: \"text is required when action is 'write'\",\n path: ['text'],\n },\n );\n\nexport type SetContextInputZ = z.infer<typeof setContextInputSchema>;\nexport type GetContextInputZ = z.infer<typeof getContextInputSchema>;\nexport type ClipboardInputZ = z.infer<typeof clipboardInputSchema>;\n\nexport const toolSchemas = {\n build: buildInputSchema,\n launch: launchInputSchema,\n cleanup: cleanupInputSchema,\n get_state: getStateInputSchema,\n navigate: navigateInputSchema,\n wait_for_notification: waitForNotificationInputSchema,\n switch_to_tab: switchToTabInputSchema,\n close_tab: closeTabInputSchema,\n list_testids: listTestIdsInputSchema,\n accessibility_snapshot: accessibilitySnapshotInputSchema,\n describe_screen: describeScreenInputSchema,\n screenshot: screenshotInputSchema,\n click: clickInputSchema,\n type: typeInputSchema,\n wait_for: waitForInputSchema,\n knowledge_last: knowledgeLastInputSchema,\n knowledge_search: knowledgeSearchInputSchema,\n knowledge_summarize: knowledgeSummarizeInputSchema,\n knowledge_sessions: knowledgeSessionsInputSchema,\n seed_contract: seedContractInputSchema,\n seed_contracts: seedContractsInputSchema,\n get_contract_address: getContractAddressInputSchema,\n list_contracts: listDeployedContractsInputSchema,\n run_steps: runStepsInputSchema,\n set_context: setContextInputSchema,\n get_context: getContextInputSchema,\n clipboard: clipboardInputSchema,\n} as const;\n\nexport type ToolName = keyof typeof toolSchemas;\n\nexport type BuildInputZ = z.infer<typeof buildInputSchema>;\nexport type LaunchInputZ = z.infer<typeof launchInputSchema>;\nexport type CleanupInputZ = z.infer<typeof cleanupInputSchema>;\nexport type GetStateInputZ = z.infer<typeof getStateInputSchema>;\nexport type NavigateInputZ = z.infer<typeof navigateInputSchema>;\nexport type WaitForNotificationInputZ = z.infer<\n typeof waitForNotificationInputSchema\n>;\nexport type ListTestIdsInputZ = z.infer<typeof listTestIdsInputSchema>;\nexport type AccessibilitySnapshotInputZ = z.infer<\n typeof accessibilitySnapshotInputSchema\n>;\nexport type DescribeScreenInputZ = z.infer<typeof describeScreenInputSchema>;\nexport type ScreenshotInputZ = z.infer<typeof screenshotInputSchema>;\nexport type ClickInputZ = z.infer<typeof clickInputSchema>;\nexport type TypeInputZ = z.infer<typeof typeInputSchema>;\nexport type WaitForInputZ = z.infer<typeof waitForInputSchema>;\nexport type KnowledgeLastInputZ = z.infer<typeof knowledgeLastInputSchema>;\nexport type KnowledgeSearchInputZ = z.infer<typeof knowledgeSearchInputSchema>;\nexport type KnowledgeSummarizeInputZ = z.infer<\n typeof knowledgeSummarizeInputSchema\n>;\nexport type KnowledgeSessionsInputZ = z.infer<\n typeof knowledgeSessionsInputSchema\n>;\nexport type KnowledgeScopeZ = z.infer<typeof knowledgeScopeSchema>;\nexport type KnowledgeFiltersZ = z.infer<typeof knowledgeFiltersSchema>;\nexport type RunStepsInputZ = z.infer<typeof runStepsInputSchema>;\nexport type SwitchToTabInputZ = z.infer<typeof switchToTabInputSchema>;\nexport type CloseTabInputZ = z.infer<typeof closeTabInputSchema>;\n"]}
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.createMcpServer = createMcpServer;
|
|
5
|
+
/* eslint-disable @typescript-eslint/explicit-function-return-type */
|
|
6
|
+
const index_js_1 = require("@modelcontextprotocol/sdk/server/index.js");
|
|
7
|
+
const stdio_js_1 = require("@modelcontextprotocol/sdk/server/stdio.js");
|
|
8
|
+
const types_js_1 = require("@modelcontextprotocol/sdk/types.js");
|
|
9
|
+
const session_manager_js_1 = require("./session-manager.cjs");
|
|
10
|
+
const batch_js_1 = require("./tools/batch.cjs");
|
|
11
|
+
const definitions_js_1 = require("./tools/definitions.cjs");
|
|
12
|
+
const types_1 = require("./types/index.cjs");
|
|
13
|
+
const utils_1 = require("./utils/index.cjs");
|
|
14
|
+
/**
|
|
15
|
+
* Create a standardized error response for tool execution failures.
|
|
16
|
+
*
|
|
17
|
+
* @param code The error code from ErrorCodes enum
|
|
18
|
+
* @param message Human-readable error message
|
|
19
|
+
* @param details Optional error details object
|
|
20
|
+
* @param startTime Timestamp when the operation started
|
|
21
|
+
* @returns MCP-formatted error response object
|
|
22
|
+
*/
|
|
23
|
+
function createToolErrorResponse(code, message, details, startTime) {
|
|
24
|
+
const sessionId = (0, session_manager_js_1.hasSessionManager)()
|
|
25
|
+
? (0, session_manager_js_1.getSessionManager)().getSessionId()
|
|
26
|
+
: undefined;
|
|
27
|
+
const response = (0, utils_1.createErrorResponse)(code, message, details, sessionId, startTime);
|
|
28
|
+
return {
|
|
29
|
+
content: [
|
|
30
|
+
{
|
|
31
|
+
type: 'text',
|
|
32
|
+
text: JSON.stringify(response),
|
|
33
|
+
},
|
|
34
|
+
],
|
|
35
|
+
isError: true,
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Create and configure an MCP server instance.
|
|
40
|
+
*
|
|
41
|
+
* @param config Server configuration including name, version, and optional cleanup handler
|
|
42
|
+
* @returns McpServer instance with start/stop methods and tool definitions
|
|
43
|
+
*/
|
|
44
|
+
function createMcpServer(config) {
|
|
45
|
+
const { name, version, onCleanup, logger = console.error } = config;
|
|
46
|
+
const toolDefinitions = (0, definitions_js_1.getToolDefinitions)();
|
|
47
|
+
const toolHandlers = (0, definitions_js_1.buildToolHandlersRecord)();
|
|
48
|
+
(0, batch_js_1.setToolRegistry)(toolHandlers);
|
|
49
|
+
const validToolNames = new Set(toolDefinitions.map((tool) => tool.name));
|
|
50
|
+
const server = new index_js_1.Server({ name, version }, { capabilities: { tools: {} } });
|
|
51
|
+
let isCleaningUp = false;
|
|
52
|
+
server.setRequestHandler(types_js_1.ListToolsRequestSchema, async () => ({
|
|
53
|
+
tools: toolDefinitions,
|
|
54
|
+
}));
|
|
55
|
+
server.setRequestHandler(types_js_1.CallToolRequestSchema, async (request, extra) => {
|
|
56
|
+
const { name: toolName, arguments: args } = request.params;
|
|
57
|
+
const startTime = Date.now();
|
|
58
|
+
const signal = extra?.signal;
|
|
59
|
+
if (!validToolNames.has(toolName)) {
|
|
60
|
+
return createToolErrorResponse(types_1.ErrorCodes.MM_INVALID_INPUT, `Unknown tool: ${toolName}`, undefined, startTime);
|
|
61
|
+
}
|
|
62
|
+
const validation = (0, definitions_js_1.safeValidateToolInput)(toolName, args);
|
|
63
|
+
if (!validation.success) {
|
|
64
|
+
return createToolErrorResponse(types_1.ErrorCodes.MM_INVALID_INPUT, `Invalid input: ${validation.error}`, { providedArgs: args }, startTime);
|
|
65
|
+
}
|
|
66
|
+
const handler = (0, definitions_js_1.getToolHandler)(toolName);
|
|
67
|
+
if (!handler) {
|
|
68
|
+
return createToolErrorResponse(types_1.ErrorCodes.MM_INVALID_INPUT, `No handler registered for tool: ${toolName}`, undefined, startTime);
|
|
69
|
+
}
|
|
70
|
+
const response = await handler(validation.data, {
|
|
71
|
+
signal,
|
|
72
|
+
});
|
|
73
|
+
return {
|
|
74
|
+
content: [
|
|
75
|
+
{
|
|
76
|
+
type: 'text',
|
|
77
|
+
text: JSON.stringify(response),
|
|
78
|
+
},
|
|
79
|
+
],
|
|
80
|
+
isError: !response.ok,
|
|
81
|
+
};
|
|
82
|
+
});
|
|
83
|
+
/**
|
|
84
|
+
* Handle process signals (SIGINT, SIGTERM) and perform cleanup.
|
|
85
|
+
*
|
|
86
|
+
* @param signal The signal name received (e.g., 'SIGINT', 'SIGTERM')
|
|
87
|
+
*/
|
|
88
|
+
const handleSignal = async (signal) => {
|
|
89
|
+
if (isCleaningUp) {
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
isCleaningUp = true;
|
|
93
|
+
logger(`Received ${signal}, cleaning up...`);
|
|
94
|
+
try {
|
|
95
|
+
if (onCleanup) {
|
|
96
|
+
await onCleanup();
|
|
97
|
+
}
|
|
98
|
+
if ((0, session_manager_js_1.hasSessionManager)()) {
|
|
99
|
+
await (0, session_manager_js_1.getSessionManager)().cleanup();
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
catch (error) {
|
|
103
|
+
logger(`Cleanup error: ${JSON.stringify(error)}`);
|
|
104
|
+
}
|
|
105
|
+
process.exit(0);
|
|
106
|
+
};
|
|
107
|
+
process.on('SIGINT', () => {
|
|
108
|
+
handleSignal('SIGINT').catch((error) => logger(`SIGINT error: ${error}`));
|
|
109
|
+
});
|
|
110
|
+
process.on('SIGTERM', () => {
|
|
111
|
+
handleSignal('SIGTERM').catch((error) => logger(`SIGTERM error: ${error}`));
|
|
112
|
+
});
|
|
113
|
+
let transport;
|
|
114
|
+
return {
|
|
115
|
+
/**
|
|
116
|
+
* Start the MCP server and connect to stdio transport.
|
|
117
|
+
*
|
|
118
|
+
* @returns Promise that resolves when server is running
|
|
119
|
+
*/
|
|
120
|
+
async start() {
|
|
121
|
+
transport = new stdio_js_1.StdioServerTransport();
|
|
122
|
+
await server.connect(transport);
|
|
123
|
+
logger(`${name} MCP Server v${version} running on stdio`);
|
|
124
|
+
},
|
|
125
|
+
/**
|
|
126
|
+
* Stop the MCP server and close the transport.
|
|
127
|
+
*
|
|
128
|
+
* @returns Promise that resolves when server is stopped
|
|
129
|
+
*/
|
|
130
|
+
async stop() {
|
|
131
|
+
if (transport) {
|
|
132
|
+
await server.close();
|
|
133
|
+
}
|
|
134
|
+
},
|
|
135
|
+
/**
|
|
136
|
+
* Get the underlying MCP Server instance.
|
|
137
|
+
*
|
|
138
|
+
* @returns The MCP Server instance
|
|
139
|
+
*/
|
|
140
|
+
getServer() {
|
|
141
|
+
return server;
|
|
142
|
+
},
|
|
143
|
+
/**
|
|
144
|
+
* Get all available tool definitions.
|
|
145
|
+
*
|
|
146
|
+
* @returns Array of tool definitions
|
|
147
|
+
*/
|
|
148
|
+
getToolDefinitions() {
|
|
149
|
+
return toolDefinitions;
|
|
150
|
+
},
|
|
151
|
+
/**
|
|
152
|
+
* Get the tool name prefix (e.g., 'mm_').
|
|
153
|
+
*
|
|
154
|
+
* @returns The tool prefix string
|
|
155
|
+
*/
|
|
156
|
+
getToolPrefix() {
|
|
157
|
+
return definitions_js_1.TOOL_PREFIX;
|
|
158
|
+
},
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
//# sourceMappingURL=server.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.cjs","sourceRoot":"","sources":["../../src/mcp-server/server.ts"],"names":[],"mappings":"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","sourcesContent":["#!/usr/bin/env node\n/* eslint-disable @typescript-eslint/explicit-function-return-type */\nimport { Server } from '@modelcontextprotocol/sdk/server/index.js';\nimport { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';\nimport {\n CallToolRequestSchema,\n ListToolsRequestSchema,\n} from '@modelcontextprotocol/sdk/types.js';\n\nimport { getSessionManager, hasSessionManager } from './session-manager.js';\nimport { setToolRegistry } from './tools/batch.js';\nimport {\n getToolDefinitions,\n getToolHandler,\n safeValidateToolInput,\n buildToolHandlersRecord,\n TOOL_PREFIX,\n} from './tools/definitions.js';\nimport type { ToolDefinition } from './tools/definitions.js';\nimport { ErrorCodes } from './types';\nimport { createErrorResponse } from './utils';\n\nexport type McpServerConfig = {\n name: string;\n version: string;\n onCleanup?: () => Promise<void>;\n logger?: (message: string) => void;\n};\n\n/**\n * Create a standardized error response for tool execution failures.\n *\n * @param code The error code from ErrorCodes enum\n * @param message Human-readable error message\n * @param details Optional error details object\n * @param startTime Timestamp when the operation started\n * @returns MCP-formatted error response object\n */\nfunction createToolErrorResponse(\n code: (typeof ErrorCodes)[keyof typeof ErrorCodes],\n message: string,\n details: Record<string, unknown> | undefined,\n startTime: number,\n) {\n const sessionId = hasSessionManager()\n ? getSessionManager().getSessionId()\n : undefined;\n\n const response = createErrorResponse(\n code,\n message,\n details,\n sessionId,\n startTime,\n );\n\n return {\n content: [\n {\n type: 'text' as const,\n text: JSON.stringify(response),\n },\n ],\n isError: true,\n };\n}\n\nexport type McpServer = {\n start(): Promise<void>;\n stop(): Promise<void>;\n getServer(): Server;\n getToolDefinitions(): ToolDefinition[];\n getToolPrefix(): string;\n};\n\n/**\n * Create and configure an MCP server instance.\n *\n * @param config Server configuration including name, version, and optional cleanup handler\n * @returns McpServer instance with start/stop methods and tool definitions\n */\nexport function createMcpServer(config: McpServerConfig): McpServer {\n const { name, version, onCleanup, logger = console.error } = config;\n\n const toolDefinitions = getToolDefinitions();\n const toolHandlers = buildToolHandlersRecord();\n\n setToolRegistry(toolHandlers);\n\n const validToolNames = new Set(toolDefinitions.map((tool) => tool.name));\n\n const server = new Server({ name, version }, { capabilities: { tools: {} } });\n\n let isCleaningUp = false;\n\n server.setRequestHandler(ListToolsRequestSchema, async () => ({\n tools: toolDefinitions,\n }));\n\n server.setRequestHandler(CallToolRequestSchema, async (request, extra) => {\n const { name: toolName, arguments: args } = request.params;\n const startTime = Date.now();\n const signal = extra?.signal;\n\n if (!validToolNames.has(toolName)) {\n return createToolErrorResponse(\n ErrorCodes.MM_INVALID_INPUT,\n `Unknown tool: ${toolName}`,\n undefined,\n startTime,\n );\n }\n\n const validation = safeValidateToolInput(toolName, args);\n if (!validation.success) {\n return createToolErrorResponse(\n ErrorCodes.MM_INVALID_INPUT,\n `Invalid input: ${validation.error}`,\n { providedArgs: args },\n startTime,\n );\n }\n\n const handler = getToolHandler(toolName);\n\n if (!handler) {\n return createToolErrorResponse(\n ErrorCodes.MM_INVALID_INPUT,\n `No handler registered for tool: ${toolName}`,\n undefined,\n startTime,\n );\n }\n\n const response = await handler(validation.data as Record<string, unknown>, {\n signal,\n });\n\n return {\n content: [\n {\n type: 'text' as const,\n text: JSON.stringify(response),\n },\n ],\n isError: !response.ok,\n };\n });\n\n /**\n * Handle process signals (SIGINT, SIGTERM) and perform cleanup.\n *\n * @param signal The signal name received (e.g., 'SIGINT', 'SIGTERM')\n */\n const handleSignal = async (signal: string) => {\n if (isCleaningUp) {\n return;\n }\n isCleaningUp = true;\n\n logger(`Received ${signal}, cleaning up...`);\n\n try {\n if (onCleanup) {\n await onCleanup();\n }\n\n if (hasSessionManager()) {\n await getSessionManager().cleanup();\n }\n } catch (error) {\n logger(`Cleanup error: ${JSON.stringify(error)}`);\n }\n\n process.exit(0);\n };\n\n process.on('SIGINT', () => {\n handleSignal('SIGINT').catch((error) => logger(`SIGINT error: ${error}`));\n });\n process.on('SIGTERM', () => {\n handleSignal('SIGTERM').catch((error) => logger(`SIGTERM error: ${error}`));\n });\n\n let transport: StdioServerTransport | undefined;\n\n return {\n /**\n * Start the MCP server and connect to stdio transport.\n *\n * @returns Promise that resolves when server is running\n */\n async start() {\n transport = new StdioServerTransport();\n await server.connect(transport);\n logger(`${name} MCP Server v${version} running on stdio`);\n },\n\n /**\n * Stop the MCP server and close the transport.\n *\n * @returns Promise that resolves when server is stopped\n */\n async stop() {\n if (transport) {\n await server.close();\n }\n },\n\n /**\n * Get the underlying MCP Server instance.\n *\n * @returns The MCP Server instance\n */\n getServer() {\n return server;\n },\n\n /**\n * Get all available tool definitions.\n *\n * @returns Array of tool definitions\n */\n getToolDefinitions() {\n return toolDefinitions;\n },\n\n /**\n * Get the tool name prefix (e.g., 'mm_').\n *\n * @returns The tool prefix string\n */\n getToolPrefix() {\n return TOOL_PREFIX;\n },\n };\n}\n"]}
|