@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,137 @@
|
|
|
1
|
+
import { knowledgeStore } from "../knowledge-store.mjs";
|
|
2
|
+
import { getSessionManager } from "../session-manager.mjs";
|
|
3
|
+
import { collectObservation } from "./helpers.mjs";
|
|
4
|
+
import { ErrorCodes } from "../types/index.mjs";
|
|
5
|
+
import { createSuccessResponse, createErrorResponse, extractErrorMessage, debugWarn } from "../utils/index.mjs";
|
|
6
|
+
/**
|
|
7
|
+
* Creates an empty observation object for step recording.
|
|
8
|
+
*
|
|
9
|
+
* @returns Empty observation with default state, testIds, and a11y nodes
|
|
10
|
+
*/
|
|
11
|
+
function createEmptyObservation() {
|
|
12
|
+
return {
|
|
13
|
+
state: {},
|
|
14
|
+
testIds: [],
|
|
15
|
+
a11y: { nodes: [] },
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Type guard to check if result is a ToolExecuteResult with observation.
|
|
20
|
+
*
|
|
21
|
+
* @param result The result to check
|
|
22
|
+
* @returns True if result is a ToolExecuteResult with observation property
|
|
23
|
+
*/
|
|
24
|
+
function isToolExecuteResult(result) {
|
|
25
|
+
return (typeof result === 'object' &&
|
|
26
|
+
result !== null &&
|
|
27
|
+
'result' in result &&
|
|
28
|
+
Object.prototype.hasOwnProperty.call(result, 'result'));
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Executes a tool with error handling, observation collection, and knowledge store recording.
|
|
32
|
+
*
|
|
33
|
+
* @param config The tool execution configuration with input, execute function, and error handling
|
|
34
|
+
* @returns Promise resolving to MCP response with tool result or error information
|
|
35
|
+
*/
|
|
36
|
+
export async function runTool(config) {
|
|
37
|
+
const startTime = Date.now();
|
|
38
|
+
const sessionManager = getSessionManager();
|
|
39
|
+
const sessionId = sessionManager.getSessionId();
|
|
40
|
+
const requiresSession = config.requiresSession ?? true;
|
|
41
|
+
const effectivePolicy = config.options?.observationPolicy ?? config.observationPolicy ?? 'default';
|
|
42
|
+
try {
|
|
43
|
+
if (requiresSession && !sessionManager.hasActiveSession()) {
|
|
44
|
+
return createErrorResponse(ErrorCodes.MM_NO_ACTIVE_SESSION, 'No active session. Call launch first.', { input: config.input }, undefined, startTime);
|
|
45
|
+
}
|
|
46
|
+
const context = {
|
|
47
|
+
sessionId,
|
|
48
|
+
page: requiresSession ? sessionManager.getPage() : undefined,
|
|
49
|
+
refMap: requiresSession ? sessionManager.getRefMap() : new Map(),
|
|
50
|
+
startTime,
|
|
51
|
+
};
|
|
52
|
+
const executeResult = await config.execute(context);
|
|
53
|
+
let result;
|
|
54
|
+
let customObservation;
|
|
55
|
+
if (isToolExecuteResult(executeResult)) {
|
|
56
|
+
result = executeResult.result;
|
|
57
|
+
customObservation = executeResult.observation;
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
result = executeResult;
|
|
61
|
+
}
|
|
62
|
+
let observation;
|
|
63
|
+
if (effectivePolicy === 'custom' && customObservation) {
|
|
64
|
+
observation = customObservation;
|
|
65
|
+
}
|
|
66
|
+
else if (effectivePolicy === 'default' && requiresSession) {
|
|
67
|
+
observation = await collectObservation(context.page, 'full');
|
|
68
|
+
}
|
|
69
|
+
else if ((effectivePolicy === 'none' || effectivePolicy === 'failures') &&
|
|
70
|
+
requiresSession) {
|
|
71
|
+
observation = await collectObservation(context.page, 'minimal');
|
|
72
|
+
}
|
|
73
|
+
if (sessionId) {
|
|
74
|
+
const recordInput = config.sanitizeInputForRecording
|
|
75
|
+
? config.sanitizeInputForRecording(config.input)
|
|
76
|
+
: config.input;
|
|
77
|
+
await knowledgeStore.recordStep({
|
|
78
|
+
sessionId,
|
|
79
|
+
toolName: config.toolName,
|
|
80
|
+
input: recordInput,
|
|
81
|
+
target: config.getTarget?.(config.input),
|
|
82
|
+
outcome: { ok: true },
|
|
83
|
+
observation: observation ?? createEmptyObservation(),
|
|
84
|
+
durationMs: Date.now() - startTime,
|
|
85
|
+
context: sessionManager.getEnvironmentMode(),
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
return createSuccessResponse(result, sessionId, startTime);
|
|
89
|
+
}
|
|
90
|
+
catch (error) {
|
|
91
|
+
const errorInfo = config.classifyError?.(error) ?? {
|
|
92
|
+
code: `MM_${config.toolName.toUpperCase().replace(/^MM_/u, '')}_FAILED`,
|
|
93
|
+
message: extractErrorMessage(error),
|
|
94
|
+
};
|
|
95
|
+
let failureObservation = createEmptyObservation();
|
|
96
|
+
if (requiresSession && sessionManager.hasActiveSession()) {
|
|
97
|
+
if (effectivePolicy === 'failures' || effectivePolicy === 'default') {
|
|
98
|
+
try {
|
|
99
|
+
const page = sessionManager.getPage();
|
|
100
|
+
failureObservation = await collectObservation(page, 'full');
|
|
101
|
+
}
|
|
102
|
+
catch (collectError) {
|
|
103
|
+
debugWarn('run-tool.collectObservation', collectError);
|
|
104
|
+
failureObservation = await collectObservation(undefined, 'minimal');
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
else if (effectivePolicy === 'none') {
|
|
108
|
+
try {
|
|
109
|
+
failureObservation = await collectObservation(undefined, 'minimal');
|
|
110
|
+
}
|
|
111
|
+
catch (collectError) {
|
|
112
|
+
debugWarn('run-tool.collectObservation', collectError);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
if (sessionId) {
|
|
117
|
+
const recordInput = config.sanitizeInputForRecording
|
|
118
|
+
? config.sanitizeInputForRecording(config.input)
|
|
119
|
+
: config.input;
|
|
120
|
+
await knowledgeStore.recordStep({
|
|
121
|
+
sessionId,
|
|
122
|
+
toolName: config.toolName,
|
|
123
|
+
input: recordInput,
|
|
124
|
+
target: config.getTarget?.(config.input),
|
|
125
|
+
outcome: {
|
|
126
|
+
ok: false,
|
|
127
|
+
error: { code: errorInfo.code, message: errorInfo.message },
|
|
128
|
+
},
|
|
129
|
+
observation: failureObservation,
|
|
130
|
+
durationMs: Date.now() - startTime,
|
|
131
|
+
context: sessionManager.getEnvironmentMode(),
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
return createErrorResponse(errorInfo.code, errorInfo.message, { input: config.input }, sessionId, startTime);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
//# sourceMappingURL=run-tool.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-tool.mjs","sourceRoot":"","sources":["../../../src/mcp-server/tools/run-tool.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Page } from '@playwright/test';\n\nimport type { ExtensionState } from '../../capabilities/types.js';\nimport { knowledgeStore } from '../knowledge-store.js';\nimport { getSessionManager } from '../session-manager.js';\nimport { collectObservation } from './helpers.js';\nimport type {\n McpResponse,\n HandlerOptions,\n StepRecordObservation,\n ErrorCode,\n} from '../types';\nimport { ErrorCodes } from '../types';\nimport {\n createSuccessResponse,\n createErrorResponse,\n extractErrorMessage,\n debugWarn,\n} from '../utils';\n\n/**\n * Creates an empty observation object for step recording.\n *\n * @returns Empty observation with default state, testIds, and a11y nodes\n */\nfunction createEmptyObservation(): StepRecordObservation {\n return {\n state: {} as ExtensionState,\n testIds: [],\n a11y: { nodes: [] },\n };\n}\n\nexport type ObservationPolicy = 'none' | 'default' | 'custom' | 'failures';\n\nexport type ToolExecutionContext = {\n sessionId: string | undefined;\n page: Page;\n refMap: Map<string, string>;\n startTime: number;\n};\n\nexport type ToolExecuteResult<TResult> = {\n result: TResult;\n observation?: StepRecordObservation;\n};\n\nexport type ToolExecutionConfig<TInput, TResult> = {\n toolName: string;\n input: TInput;\n options?: HandlerOptions;\n requiresSession?: boolean;\n observationPolicy?: ObservationPolicy;\n execute: (\n context: ToolExecutionContext,\n ) => Promise<TResult | ToolExecuteResult<TResult>>;\n classifyError?: (error: unknown) => {\n code: string;\n message: string;\n };\n getTarget?: (input: TInput) =>\n | {\n testId?: string;\n selector?: string;\n a11yRef?: string;\n }\n | undefined;\n sanitizeInputForRecording?: (input: TInput) => Record<string, unknown>;\n};\n\n/**\n * Type guard to check if result is a ToolExecuteResult with observation.\n *\n * @param result The result to check\n * @returns True if result is a ToolExecuteResult with observation property\n */\nfunction isToolExecuteResult<TResult>(\n result: TResult | ToolExecuteResult<TResult>,\n): result is ToolExecuteResult<TResult> {\n return (\n typeof result === 'object' &&\n result !== null &&\n 'result' in result &&\n Object.prototype.hasOwnProperty.call(result, 'result')\n );\n}\n\n/**\n * Executes a tool with error handling, observation collection, and knowledge store recording.\n *\n * @param config The tool execution configuration with input, execute function, and error handling\n * @returns Promise resolving to MCP response with tool result or error information\n */\nexport async function runTool<TInput, TResult>(\n config: ToolExecutionConfig<TInput, TResult>,\n): Promise<McpResponse<TResult>> {\n const startTime = Date.now();\n const sessionManager = getSessionManager();\n const sessionId = sessionManager.getSessionId();\n const requiresSession = config.requiresSession ?? true;\n\n const effectivePolicy =\n config.options?.observationPolicy ?? config.observationPolicy ?? 'default';\n\n try {\n if (requiresSession && !sessionManager.hasActiveSession()) {\n return createErrorResponse(\n ErrorCodes.MM_NO_ACTIVE_SESSION,\n 'No active session. Call launch first.',\n { input: config.input },\n undefined,\n startTime,\n );\n }\n\n const context: ToolExecutionContext = {\n sessionId,\n page: requiresSession ? sessionManager.getPage() : (undefined as never),\n refMap: requiresSession ? sessionManager.getRefMap() : new Map(),\n startTime,\n };\n\n const executeResult = await config.execute(context);\n\n let result: TResult;\n let customObservation: StepRecordObservation | undefined;\n\n if (isToolExecuteResult<TResult>(executeResult)) {\n result = executeResult.result;\n customObservation = executeResult.observation;\n } else {\n result = executeResult;\n }\n\n let observation: StepRecordObservation | undefined;\n\n if (effectivePolicy === 'custom' && customObservation) {\n observation = customObservation;\n } else if (effectivePolicy === 'default' && requiresSession) {\n observation = await collectObservation(context.page, 'full');\n } else if (\n (effectivePolicy === 'none' || effectivePolicy === 'failures') &&\n requiresSession\n ) {\n observation = await collectObservation(context.page, 'minimal');\n }\n\n if (sessionId) {\n const recordInput = config.sanitizeInputForRecording\n ? config.sanitizeInputForRecording(config.input)\n : (config.input as Record<string, unknown>);\n\n await knowledgeStore.recordStep({\n sessionId,\n toolName: config.toolName,\n input: recordInput,\n target: config.getTarget?.(config.input),\n outcome: { ok: true },\n observation: observation ?? createEmptyObservation(),\n durationMs: Date.now() - startTime,\n context: sessionManager.getEnvironmentMode(),\n });\n }\n\n return createSuccessResponse<TResult>(result, sessionId, startTime);\n } catch (error) {\n const errorInfo = config.classifyError?.(error) ?? {\n code: `MM_${config.toolName.toUpperCase().replace(/^MM_/u, '')}_FAILED`,\n message: extractErrorMessage(error),\n };\n\n let failureObservation: StepRecordObservation = createEmptyObservation();\n\n if (requiresSession && sessionManager.hasActiveSession()) {\n if (effectivePolicy === 'failures' || effectivePolicy === 'default') {\n try {\n const page = sessionManager.getPage();\n failureObservation = await collectObservation(page, 'full');\n } catch (collectError) {\n debugWarn('run-tool.collectObservation', collectError);\n failureObservation = await collectObservation(undefined, 'minimal');\n }\n } else if (effectivePolicy === 'none') {\n try {\n failureObservation = await collectObservation(undefined, 'minimal');\n } catch (collectError) {\n debugWarn('run-tool.collectObservation', collectError);\n }\n }\n }\n\n if (sessionId) {\n const recordInput = config.sanitizeInputForRecording\n ? config.sanitizeInputForRecording(config.input)\n : (config.input as Record<string, unknown>);\n\n await knowledgeStore.recordStep({\n sessionId,\n toolName: config.toolName,\n input: recordInput,\n target: config.getTarget?.(config.input),\n outcome: {\n ok: false,\n error: { code: errorInfo.code, message: errorInfo.message },\n },\n observation: failureObservation,\n durationMs: Date.now() - startTime,\n context: sessionManager.getEnvironmentMode(),\n });\n }\n\n return createErrorResponse(\n errorInfo.code as ErrorCode,\n errorInfo.message,\n { input: config.input },\n sessionId,\n startTime,\n );\n }\n}\n"]}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.handleScreenshot = handleScreenshot;
|
|
4
|
+
const session_manager_js_1 = require("../session-manager.cjs");
|
|
5
|
+
const error_classification_js_1 = require("./error-classification.cjs");
|
|
6
|
+
const run_tool_js_1 = require("./run-tool.cjs");
|
|
7
|
+
/**
|
|
8
|
+
* Handles the screenshot tool request.
|
|
9
|
+
*
|
|
10
|
+
* @param input - The screenshot input parameters.
|
|
11
|
+
* @param options - Handler options including abort signal.
|
|
12
|
+
* @returns Response with screenshot path and dimensions.
|
|
13
|
+
*/
|
|
14
|
+
async function handleScreenshot(input, options) {
|
|
15
|
+
return (0, run_tool_js_1.runTool)({
|
|
16
|
+
toolName: 'mm_screenshot',
|
|
17
|
+
input,
|
|
18
|
+
options,
|
|
19
|
+
observationPolicy: 'none',
|
|
20
|
+
/**
|
|
21
|
+
* Executes the screenshot capture.
|
|
22
|
+
*
|
|
23
|
+
* @returns The screenshot result.
|
|
24
|
+
*/
|
|
25
|
+
execute: async () => {
|
|
26
|
+
const sessionManager = (0, session_manager_js_1.getSessionManager)();
|
|
27
|
+
const result = await sessionManager.screenshot({
|
|
28
|
+
name: input.name,
|
|
29
|
+
fullPage: input.fullPage ?? true,
|
|
30
|
+
selector: input.selector,
|
|
31
|
+
});
|
|
32
|
+
const response = {
|
|
33
|
+
path: result.path,
|
|
34
|
+
width: result.width,
|
|
35
|
+
height: result.height,
|
|
36
|
+
};
|
|
37
|
+
if (input.includeBase64) {
|
|
38
|
+
response.base64 = result.base64;
|
|
39
|
+
}
|
|
40
|
+
return response;
|
|
41
|
+
},
|
|
42
|
+
classifyError: error_classification_js_1.classifyScreenshotError,
|
|
43
|
+
/**
|
|
44
|
+
* Sanitizes input for knowledge store recording.
|
|
45
|
+
*
|
|
46
|
+
* @returns Sanitized input object.
|
|
47
|
+
*/
|
|
48
|
+
sanitizeInputForRecording: () => ({
|
|
49
|
+
name: input.name,
|
|
50
|
+
fullPage: input.fullPage,
|
|
51
|
+
selector: input.selector,
|
|
52
|
+
}),
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=screenshot.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"screenshot.cjs","sourceRoot":"","sources":["../../../src/mcp-server/tools/screenshot.ts"],"names":[],"mappings":";;AAiBA,4CAiDC;AAlED,+DAA0D;AAC1D,wEAAoE;AACpE,gDAAwC;AAQxC;;;;;;GAMG;AACI,KAAK,UAAU,gBAAgB,CACpC,KAAsB,EACtB,OAAwB;IAExB,OAAO,IAAA,qBAAO,EAAwC;QACpD,QAAQ,EAAE,eAAe;QACzB,KAAK;QACL,OAAO;QACP,iBAAiB,EAAE,MAAM;QAEzB;;;;WAIG;QACH,OAAO,EAAE,KAAK,IAAI,EAAE;YAClB,MAAM,cAAc,GAAG,IAAA,sCAAiB,GAAE,CAAC;YAC3C,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,UAAU,CAAC;gBAC7C,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,IAAI;gBAChC,QAAQ,EAAE,KAAK,CAAC,QAAQ;aACzB,CAAC,CAAC;YAEH,MAAM,QAAQ,GAAyB;gBACrC,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,MAAM,EAAE,MAAM,CAAC,MAAM;aACtB,CAAC;YAEF,IAAI,KAAK,CAAC,aAAa,EAAE,CAAC;gBACxB,QAAQ,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;YAClC,CAAC;YAED,OAAO,QAAQ,CAAC;QAClB,CAAC;QAED,aAAa,EAAE,iDAAuB;QAEtC;;;;WAIG;QACH,yBAAyB,EAAE,GAAG,EAAE,CAAC,CAAC;YAChC,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,QAAQ,EAAE,KAAK,CAAC,QAAQ;SACzB,CAAC;KACH,CAAC,CAAC;AACL,CAAC","sourcesContent":["import { getSessionManager } from '../session-manager.js';\nimport { classifyScreenshotError } from './error-classification.js';\nimport { runTool } from './run-tool.js';\nimport type {\n ScreenshotInput,\n ScreenshotToolResult,\n McpResponse,\n HandlerOptions,\n} from '../types';\n\n/**\n * Handles the screenshot tool request.\n *\n * @param input - The screenshot input parameters.\n * @param options - Handler options including abort signal.\n * @returns Response with screenshot path and dimensions.\n */\nexport async function handleScreenshot(\n input: ScreenshotInput,\n options?: HandlerOptions,\n): Promise<McpResponse<ScreenshotToolResult>> {\n return runTool<ScreenshotInput, ScreenshotToolResult>({\n toolName: 'mm_screenshot',\n input,\n options,\n observationPolicy: 'none',\n\n /**\n * Executes the screenshot capture.\n *\n * @returns The screenshot result.\n */\n execute: async () => {\n const sessionManager = getSessionManager();\n const result = await sessionManager.screenshot({\n name: input.name,\n fullPage: input.fullPage ?? true,\n selector: input.selector,\n });\n\n const response: ScreenshotToolResult = {\n path: result.path,\n width: result.width,\n height: result.height,\n };\n\n if (input.includeBase64) {\n response.base64 = result.base64;\n }\n\n return response;\n },\n\n classifyError: classifyScreenshotError,\n\n /**\n * Sanitizes input for knowledge store recording.\n *\n * @returns Sanitized input object.\n */\n sanitizeInputForRecording: () => ({\n name: input.name,\n fullPage: input.fullPage,\n selector: input.selector,\n }),\n });\n}\n"]}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { ScreenshotInput, ScreenshotToolResult, McpResponse, HandlerOptions } from "../types/index.cjs";
|
|
2
|
+
/**
|
|
3
|
+
* Handles the screenshot tool request.
|
|
4
|
+
*
|
|
5
|
+
* @param input - The screenshot input parameters.
|
|
6
|
+
* @param options - Handler options including abort signal.
|
|
7
|
+
* @returns Response with screenshot path and dimensions.
|
|
8
|
+
*/
|
|
9
|
+
export declare function handleScreenshot(input: ScreenshotInput, options?: HandlerOptions): Promise<McpResponse<ScreenshotToolResult>>;
|
|
10
|
+
//# sourceMappingURL=screenshot.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"screenshot.d.cts","sourceRoot":"","sources":["../../../src/mcp-server/tools/screenshot.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,eAAe,EACf,oBAAoB,EACpB,WAAW,EACX,cAAc,EACf,2BAAiB;AAElB;;;;;;GAMG;AACH,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,eAAe,EACtB,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,WAAW,CAAC,oBAAoB,CAAC,CAAC,CA8C5C"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { ScreenshotInput, ScreenshotToolResult, McpResponse, HandlerOptions } from "../types/index.mjs";
|
|
2
|
+
/**
|
|
3
|
+
* Handles the screenshot tool request.
|
|
4
|
+
*
|
|
5
|
+
* @param input - The screenshot input parameters.
|
|
6
|
+
* @param options - Handler options including abort signal.
|
|
7
|
+
* @returns Response with screenshot path and dimensions.
|
|
8
|
+
*/
|
|
9
|
+
export declare function handleScreenshot(input: ScreenshotInput, options?: HandlerOptions): Promise<McpResponse<ScreenshotToolResult>>;
|
|
10
|
+
//# sourceMappingURL=screenshot.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"screenshot.d.mts","sourceRoot":"","sources":["../../../src/mcp-server/tools/screenshot.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,eAAe,EACf,oBAAoB,EACpB,WAAW,EACX,cAAc,EACf,2BAAiB;AAElB;;;;;;GAMG;AACH,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,eAAe,EACtB,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,WAAW,CAAC,oBAAoB,CAAC,CAAC,CA8C5C"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { getSessionManager } from "../session-manager.mjs";
|
|
2
|
+
import { classifyScreenshotError } from "./error-classification.mjs";
|
|
3
|
+
import { runTool } from "./run-tool.mjs";
|
|
4
|
+
/**
|
|
5
|
+
* Handles the screenshot tool request.
|
|
6
|
+
*
|
|
7
|
+
* @param input - The screenshot input parameters.
|
|
8
|
+
* @param options - Handler options including abort signal.
|
|
9
|
+
* @returns Response with screenshot path and dimensions.
|
|
10
|
+
*/
|
|
11
|
+
export async function handleScreenshot(input, options) {
|
|
12
|
+
return runTool({
|
|
13
|
+
toolName: 'mm_screenshot',
|
|
14
|
+
input,
|
|
15
|
+
options,
|
|
16
|
+
observationPolicy: 'none',
|
|
17
|
+
/**
|
|
18
|
+
* Executes the screenshot capture.
|
|
19
|
+
*
|
|
20
|
+
* @returns The screenshot result.
|
|
21
|
+
*/
|
|
22
|
+
execute: async () => {
|
|
23
|
+
const sessionManager = getSessionManager();
|
|
24
|
+
const result = await sessionManager.screenshot({
|
|
25
|
+
name: input.name,
|
|
26
|
+
fullPage: input.fullPage ?? true,
|
|
27
|
+
selector: input.selector,
|
|
28
|
+
});
|
|
29
|
+
const response = {
|
|
30
|
+
path: result.path,
|
|
31
|
+
width: result.width,
|
|
32
|
+
height: result.height,
|
|
33
|
+
};
|
|
34
|
+
if (input.includeBase64) {
|
|
35
|
+
response.base64 = result.base64;
|
|
36
|
+
}
|
|
37
|
+
return response;
|
|
38
|
+
},
|
|
39
|
+
classifyError: classifyScreenshotError,
|
|
40
|
+
/**
|
|
41
|
+
* Sanitizes input for knowledge store recording.
|
|
42
|
+
*
|
|
43
|
+
* @returns Sanitized input object.
|
|
44
|
+
*/
|
|
45
|
+
sanitizeInputForRecording: () => ({
|
|
46
|
+
name: input.name,
|
|
47
|
+
fullPage: input.fullPage,
|
|
48
|
+
selector: input.selector,
|
|
49
|
+
}),
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=screenshot.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"screenshot.mjs","sourceRoot":"","sources":["../../../src/mcp-server/tools/screenshot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,+BAA8B;AAC1D,OAAO,EAAE,uBAAuB,EAAE,mCAAkC;AACpE,OAAO,EAAE,OAAO,EAAE,uBAAsB;AAQxC;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,KAAsB,EACtB,OAAwB;IAExB,OAAO,OAAO,CAAwC;QACpD,QAAQ,EAAE,eAAe;QACzB,KAAK;QACL,OAAO;QACP,iBAAiB,EAAE,MAAM;QAEzB;;;;WAIG;QACH,OAAO,EAAE,KAAK,IAAI,EAAE;YAClB,MAAM,cAAc,GAAG,iBAAiB,EAAE,CAAC;YAC3C,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,UAAU,CAAC;gBAC7C,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,IAAI;gBAChC,QAAQ,EAAE,KAAK,CAAC,QAAQ;aACzB,CAAC,CAAC;YAEH,MAAM,QAAQ,GAAyB;gBACrC,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,MAAM,EAAE,MAAM,CAAC,MAAM;aACtB,CAAC;YAEF,IAAI,KAAK,CAAC,aAAa,EAAE,CAAC;gBACxB,QAAQ,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;YAClC,CAAC;YAED,OAAO,QAAQ,CAAC;QAClB,CAAC;QAED,aAAa,EAAE,uBAAuB;QAEtC;;;;WAIG;QACH,yBAAyB,EAAE,GAAG,EAAE,CAAC,CAAC;YAChC,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,QAAQ,EAAE,KAAK,CAAC,QAAQ;SACzB,CAAC;KACH,CAAC,CAAC;AACL,CAAC","sourcesContent":["import { getSessionManager } from '../session-manager.js';\nimport { classifyScreenshotError } from './error-classification.js';\nimport { runTool } from './run-tool.js';\nimport type {\n ScreenshotInput,\n ScreenshotToolResult,\n McpResponse,\n HandlerOptions,\n} from '../types';\n\n/**\n * Handles the screenshot tool request.\n *\n * @param input - The screenshot input parameters.\n * @param options - Handler options including abort signal.\n * @returns Response with screenshot path and dimensions.\n */\nexport async function handleScreenshot(\n input: ScreenshotInput,\n options?: HandlerOptions,\n): Promise<McpResponse<ScreenshotToolResult>> {\n return runTool<ScreenshotInput, ScreenshotToolResult>({\n toolName: 'mm_screenshot',\n input,\n options,\n observationPolicy: 'none',\n\n /**\n * Executes the screenshot capture.\n *\n * @returns The screenshot result.\n */\n execute: async () => {\n const sessionManager = getSessionManager();\n const result = await sessionManager.screenshot({\n name: input.name,\n fullPage: input.fullPage ?? true,\n selector: input.selector,\n });\n\n const response: ScreenshotToolResult = {\n path: result.path,\n width: result.width,\n height: result.height,\n };\n\n if (input.includeBase64) {\n response.base64 = result.base64;\n }\n\n return response;\n },\n\n classifyError: classifyScreenshotError,\n\n /**\n * Sanitizes input for knowledge store recording.\n *\n * @returns Sanitized input object.\n */\n sanitizeInputForRecording: () => ({\n name: input.name,\n fullPage: input.fullPage,\n selector: input.selector,\n }),\n });\n}\n"]}
|
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.handleSeedContract = handleSeedContract;
|
|
4
|
+
exports.handleSeedContracts = handleSeedContracts;
|
|
5
|
+
exports.handleGetContractAddress = handleGetContractAddress;
|
|
6
|
+
exports.handleListDeployedContracts = handleListDeployedContracts;
|
|
7
|
+
const session_manager_js_1 = require("../session-manager.cjs");
|
|
8
|
+
const error_classification_js_1 = require("./error-classification.cjs");
|
|
9
|
+
const run_tool_js_1 = require("./run-tool.cjs");
|
|
10
|
+
const types_1 = require("../types/index.cjs");
|
|
11
|
+
const utils_1 = require("../utils/index.cjs");
|
|
12
|
+
/**
|
|
13
|
+
* Validates that the seeding capability is available, returning either the capability or an error response.
|
|
14
|
+
*
|
|
15
|
+
* @param toolName The name of the tool requesting the capability
|
|
16
|
+
* @param input The input provided to the tool
|
|
17
|
+
* @param options Tool options containing the seeding capability
|
|
18
|
+
* @param startTime Timestamp when the tool execution started
|
|
19
|
+
* @returns The seeding capability if available, or an error response if not
|
|
20
|
+
*/
|
|
21
|
+
function checkSeedingCapability(toolName, input, options, startTime) {
|
|
22
|
+
const sessionManager = (0, session_manager_js_1.getSessionManager)();
|
|
23
|
+
const sessionId = sessionManager.getSessionId();
|
|
24
|
+
if (!options?.seedingCapability) {
|
|
25
|
+
return (0, utils_1.createErrorResponse)(types_1.ErrorCodes.MM_CAPABILITY_NOT_AVAILABLE, `ContractSeedingCapability not available. The ${toolName} tool requires running in e2e mode with the MetaMask extension wrapper, which provides Anvil chain and contract deployment support.`, { capability: 'ContractSeedingCapability', input }, sessionId, startTime);
|
|
26
|
+
}
|
|
27
|
+
return options.seedingCapability;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Type guard to check if a result is a ContractSeedingCapability.
|
|
31
|
+
*
|
|
32
|
+
* @param result The value to check
|
|
33
|
+
* @returns True if result is a ContractSeedingCapability, false if it's an error response
|
|
34
|
+
*/
|
|
35
|
+
function isCapability(result) {
|
|
36
|
+
return (typeof result === 'object' && result !== null && 'deployContract' in result);
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Handles the mm_seed_contract tool to deploy a single smart contract.
|
|
40
|
+
*
|
|
41
|
+
* @param input The contract name and deployment options
|
|
42
|
+
* @param options Tool options including seeding capability
|
|
43
|
+
* @returns Promise resolving to the deployment result with contract address
|
|
44
|
+
*/
|
|
45
|
+
async function handleSeedContract(input, options) {
|
|
46
|
+
const startTime = Date.now();
|
|
47
|
+
const capabilityOrError = checkSeedingCapability('mm_seed_contract', input, options, startTime);
|
|
48
|
+
if (!isCapability(capabilityOrError)) {
|
|
49
|
+
return capabilityOrError;
|
|
50
|
+
}
|
|
51
|
+
const seedingCapability = capabilityOrError;
|
|
52
|
+
return (0, run_tool_js_1.runTool)({
|
|
53
|
+
toolName: 'mm_seed_contract',
|
|
54
|
+
input,
|
|
55
|
+
options,
|
|
56
|
+
observationPolicy: 'none',
|
|
57
|
+
/**
|
|
58
|
+
* Executes the contract deployment using the seeding capability.
|
|
59
|
+
*
|
|
60
|
+
* @returns The deployed contract details including name, address, and timestamp
|
|
61
|
+
*/
|
|
62
|
+
execute: async () => {
|
|
63
|
+
const deployed = await seedingCapability.deployContract(input.contractName, {
|
|
64
|
+
hardfork: input.hardfork,
|
|
65
|
+
deployerOptions: input.deployerOptions,
|
|
66
|
+
});
|
|
67
|
+
return {
|
|
68
|
+
contractName: deployed.name,
|
|
69
|
+
contractAddress: deployed.address,
|
|
70
|
+
deployedAt: deployed.deployedAt,
|
|
71
|
+
};
|
|
72
|
+
},
|
|
73
|
+
classifyError: error_classification_js_1.classifySeedingError,
|
|
74
|
+
/**
|
|
75
|
+
* Sanitizes the input for recording in the knowledge store.
|
|
76
|
+
*
|
|
77
|
+
* @returns The sanitized input containing contract name and hardfork
|
|
78
|
+
*/
|
|
79
|
+
sanitizeInputForRecording: () => ({
|
|
80
|
+
contractName: input.contractName,
|
|
81
|
+
hardfork: input.hardfork ?? 'prague',
|
|
82
|
+
}),
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Handles the mm_seed_contracts tool to deploy multiple smart contracts.
|
|
87
|
+
*
|
|
88
|
+
* @param input The list of contract names and deployment options
|
|
89
|
+
* @param options Tool options including seeding capability
|
|
90
|
+
* @returns Promise resolving to deployment results with deployed and failed contracts
|
|
91
|
+
*/
|
|
92
|
+
async function handleSeedContracts(input, options) {
|
|
93
|
+
const startTime = Date.now();
|
|
94
|
+
const capabilityOrError = checkSeedingCapability('mm_seed_contracts', input, options, startTime);
|
|
95
|
+
if (!isCapability(capabilityOrError)) {
|
|
96
|
+
return capabilityOrError;
|
|
97
|
+
}
|
|
98
|
+
const seedingCapability = capabilityOrError;
|
|
99
|
+
return (0, run_tool_js_1.runTool)({
|
|
100
|
+
toolName: 'mm_seed_contracts',
|
|
101
|
+
input,
|
|
102
|
+
options,
|
|
103
|
+
observationPolicy: 'none',
|
|
104
|
+
/**
|
|
105
|
+
* Executes the multi-contract deployment using the seeding capability.
|
|
106
|
+
*
|
|
107
|
+
* @returns The deployment results with deployed and failed contract lists
|
|
108
|
+
*/
|
|
109
|
+
execute: async () => {
|
|
110
|
+
const seedResult = await seedingCapability.deployContracts(input.contracts, { hardfork: input.hardfork });
|
|
111
|
+
return {
|
|
112
|
+
deployed: seedResult.deployed.map((deployedContract) => ({
|
|
113
|
+
contractName: deployedContract.name,
|
|
114
|
+
contractAddress: deployedContract.address,
|
|
115
|
+
deployedAt: deployedContract.deployedAt,
|
|
116
|
+
})),
|
|
117
|
+
failed: seedResult.failed.map((failedDeployment) => ({
|
|
118
|
+
contractName: failedDeployment.name,
|
|
119
|
+
error: failedDeployment.error,
|
|
120
|
+
})),
|
|
121
|
+
};
|
|
122
|
+
},
|
|
123
|
+
classifyError: error_classification_js_1.classifySeedingError,
|
|
124
|
+
/**
|
|
125
|
+
* Sanitizes the input for recording in the knowledge store.
|
|
126
|
+
*
|
|
127
|
+
* @returns The sanitized input containing contracts list and hardfork
|
|
128
|
+
*/
|
|
129
|
+
sanitizeInputForRecording: () => ({
|
|
130
|
+
contracts: input.contracts,
|
|
131
|
+
hardfork: input.hardfork ?? 'prague',
|
|
132
|
+
}),
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Handles the mm_get_contract_address tool to retrieve a deployed contract's address.
|
|
137
|
+
*
|
|
138
|
+
* @param input The contract name to look up
|
|
139
|
+
* @param options Tool options including seeding capability
|
|
140
|
+
* @returns Promise resolving to the contract address or null if not found
|
|
141
|
+
*/
|
|
142
|
+
async function handleGetContractAddress(input, options) {
|
|
143
|
+
const startTime = Date.now();
|
|
144
|
+
const capabilityOrError = checkSeedingCapability('mm_get_contract_address', input, options, startTime);
|
|
145
|
+
if (!isCapability(capabilityOrError)) {
|
|
146
|
+
return capabilityOrError;
|
|
147
|
+
}
|
|
148
|
+
const seedingCapability = capabilityOrError;
|
|
149
|
+
return (0, run_tool_js_1.runTool)({
|
|
150
|
+
toolName: 'mm_get_contract_address',
|
|
151
|
+
input,
|
|
152
|
+
options,
|
|
153
|
+
observationPolicy: 'none',
|
|
154
|
+
/**
|
|
155
|
+
* Executes the contract address lookup using the seeding capability.
|
|
156
|
+
*
|
|
157
|
+
* @returns The contract name and its deployed address
|
|
158
|
+
*/
|
|
159
|
+
execute: async () => {
|
|
160
|
+
const address = seedingCapability.getContractAddress(input.contractName);
|
|
161
|
+
return {
|
|
162
|
+
contractName: input.contractName,
|
|
163
|
+
contractAddress: address,
|
|
164
|
+
};
|
|
165
|
+
},
|
|
166
|
+
classifyError: error_classification_js_1.classifySeedingError,
|
|
167
|
+
/**
|
|
168
|
+
* Sanitizes the input for recording in the knowledge store.
|
|
169
|
+
*
|
|
170
|
+
* @returns The sanitized input containing the contract name
|
|
171
|
+
*/
|
|
172
|
+
sanitizeInputForRecording: () => ({
|
|
173
|
+
contractName: input.contractName,
|
|
174
|
+
}),
|
|
175
|
+
});
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Handles the mm_list_contracts tool to list all deployed contracts in the session.
|
|
179
|
+
*
|
|
180
|
+
* @param _input Unused input parameter (no input required for this tool)
|
|
181
|
+
* @param options Tool options including seeding capability
|
|
182
|
+
* @returns Promise resolving to a list of all deployed contracts with their addresses
|
|
183
|
+
*/
|
|
184
|
+
async function handleListDeployedContracts(_input, options) {
|
|
185
|
+
const startTime = Date.now();
|
|
186
|
+
const capabilityOrError = checkSeedingCapability('mm_list_contracts', _input, options, startTime);
|
|
187
|
+
if (!isCapability(capabilityOrError)) {
|
|
188
|
+
return capabilityOrError;
|
|
189
|
+
}
|
|
190
|
+
const seedingCapability = capabilityOrError;
|
|
191
|
+
return (0, run_tool_js_1.runTool)({
|
|
192
|
+
toolName: 'mm_list_contracts',
|
|
193
|
+
input: _input,
|
|
194
|
+
options,
|
|
195
|
+
observationPolicy: 'none',
|
|
196
|
+
/**
|
|
197
|
+
* Executes the contract listing using the seeding capability.
|
|
198
|
+
*
|
|
199
|
+
* @returns The list of all deployed contracts with their details
|
|
200
|
+
*/
|
|
201
|
+
execute: async () => {
|
|
202
|
+
const deployed = seedingCapability.listDeployedContracts();
|
|
203
|
+
return {
|
|
204
|
+
contracts: deployed.map((deployedContract) => ({
|
|
205
|
+
contractName: deployedContract.name,
|
|
206
|
+
contractAddress: deployedContract.address,
|
|
207
|
+
deployedAt: deployedContract.deployedAt,
|
|
208
|
+
})),
|
|
209
|
+
};
|
|
210
|
+
},
|
|
211
|
+
classifyError: error_classification_js_1.classifySeedingError,
|
|
212
|
+
});
|
|
213
|
+
}
|
|
214
|
+
//# sourceMappingURL=seeding.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"seeding.cjs","sourceRoot":"","sources":["../../../src/mcp-server/tools/seeding.ts"],"names":[],"mappings":";;AA2EA,gDAyDC;AASD,kDA4DC;AASD,4DAiDC;AASD,kEA0DC;AArUD,+DAA0D;AAC1D,wEAAiE;AACjE,gDAAwC;AAaxC,8CAAsC;AACtC,8CAA+C;AAM/C;;;;;;;;GAQG;AACH,SAAS,sBAAsB,CAC7B,QAAgB,EAChB,KAAc,EACd,OAAuC,EACvC,SAAiB;IAEjB,MAAM,cAAc,GAAG,IAAA,sCAAiB,GAAE,CAAC;IAC3C,MAAM,SAAS,GAAG,cAAc,CAAC,YAAY,EAAE,CAAC;IAEhD,IAAI,CAAC,OAAO,EAAE,iBAAiB,EAAE,CAAC;QAChC,OAAO,IAAA,2BAAmB,EACxB,kBAAU,CAAC,2BAA2B,EACtC,gDAAgD,QAAQ,qIAAqI,EAC7L,EAAE,UAAU,EAAE,2BAA2B,EAAE,KAAK,EAAE,EAClD,SAAS,EACT,SAAS,CACW,CAAC;IACzB,CAAC;IAED,OAAO,OAAO,CAAC,iBAAiB,CAAC;AACnC,CAAC;AAED;;;;;GAKG;AACH,SAAS,YAAY,CACnB,MAAwD;IAExD,OAAO,CACL,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,IAAI,gBAAgB,IAAI,MAAM,CAC5E,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACI,KAAK,UAAU,kBAAkB,CACtC,KAAwB,EACxB,OAA4B;IAE5B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC7B,MAAM,iBAAiB,GAAG,sBAAsB,CAC9C,kBAAkB,EAClB,KAAK,EACL,OAAO,EACP,SAAS,CACV,CAAC;IAEF,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,EAAE,CAAC;QACrC,OAAO,iBAAiB,CAAC;IAC3B,CAAC;IAED,MAAM,iBAAiB,GAAG,iBAAiB,CAAC;IAE5C,OAAO,IAAA,qBAAO,EAAwC;QACpD,QAAQ,EAAE,kBAAkB;QAC5B,KAAK;QACL,OAAO;QACP,iBAAiB,EAAE,MAAM;QAEzB;;;;WAIG;QACH,OAAO,EAAE,KAAK,IAAI,EAAE;YAClB,MAAM,QAAQ,GAAG,MAAM,iBAAiB,CAAC,cAAc,CACrD,KAAK,CAAC,YAAY,EAClB;gBACE,QAAQ,EAAE,KAAK,CAAC,QAAQ;gBACxB,eAAe,EAAE,KAAK,CAAC,eAAe;aACvC,CACF,CAAC;YAEF,OAAO;gBACL,YAAY,EAAE,QAAQ,CAAC,IAAI;gBAC3B,eAAe,EAAE,QAAQ,CAAC,OAAO;gBACjC,UAAU,EAAE,QAAQ,CAAC,UAAU;aAChC,CAAC;QACJ,CAAC;QAED,aAAa,EAAE,8CAAoB;QAEnC;;;;WAIG;QACH,yBAAyB,EAAE,GAAG,EAAE,CAAC,CAAC;YAChC,YAAY,EAAE,KAAK,CAAC,YAAY;YAChC,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,QAAQ;SACrC,CAAC;KACH,CAAC,CAAC;AACL,CAAC;AAED;;;;;;GAMG;AACI,KAAK,UAAU,mBAAmB,CACvC,KAAyB,EACzB,OAA4B;IAE5B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC7B,MAAM,iBAAiB,GAAG,sBAAsB,CAC9C,mBAAmB,EACnB,KAAK,EACL,OAAO,EACP,SAAS,CACV,CAAC;IAEF,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,EAAE,CAAC;QACrC,OAAO,iBAAiB,CAAC;IAC3B,CAAC;IAED,MAAM,iBAAiB,GAAG,iBAAiB,CAAC;IAE5C,OAAO,IAAA,qBAAO,EAA0C;QACtD,QAAQ,EAAE,mBAAmB;QAC7B,KAAK;QACL,OAAO;QACP,iBAAiB,EAAE,MAAM;QAEzB;;;;WAIG;QACH,OAAO,EAAE,KAAK,IAAI,EAAE;YAClB,MAAM,UAAU,GAAG,MAAM,iBAAiB,CAAC,eAAe,CACxD,KAAK,CAAC,SAAS,EACf,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAC7B,CAAC;YAEF,OAAO;gBACL,QAAQ,EAAE,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC;oBACvD,YAAY,EAAE,gBAAgB,CAAC,IAAI;oBACnC,eAAe,EAAE,gBAAgB,CAAC,OAAO;oBACzC,UAAU,EAAE,gBAAgB,CAAC,UAAU;iBACxC,CAAC,CAAC;gBACH,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC;oBACnD,YAAY,EAAE,gBAAgB,CAAC,IAAI;oBACnC,KAAK,EAAE,gBAAgB,CAAC,KAAK;iBAC9B,CAAC,CAAC;aACJ,CAAC;QACJ,CAAC;QAED,aAAa,EAAE,8CAAoB;QAEnC;;;;WAIG;QACH,yBAAyB,EAAE,GAAG,EAAE,CAAC,CAAC;YAChC,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,QAAQ;SACrC,CAAC;KACH,CAAC,CAAC;AACL,CAAC;AAED;;;;;;GAMG;AACI,KAAK,UAAU,wBAAwB,CAC5C,KAA8B,EAC9B,OAA4B;IAE5B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC7B,MAAM,iBAAiB,GAAG,sBAAsB,CAC9C,yBAAyB,EACzB,KAAK,EACL,OAAO,EACP,SAAS,CACV,CAAC;IAEF,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,EAAE,CAAC;QACrC,OAAO,iBAAiB,CAAC;IAC3B,CAAC;IAED,MAAM,iBAAiB,GAAG,iBAAiB,CAAC;IAE5C,OAAO,IAAA,qBAAO,EAAoD;QAChE,QAAQ,EAAE,yBAAyB;QACnC,KAAK;QACL,OAAO;QACP,iBAAiB,EAAE,MAAM;QAEzB;;;;WAIG;QACH,OAAO,EAAE,KAAK,IAAI,EAAE;YAClB,MAAM,OAAO,GAAG,iBAAiB,CAAC,kBAAkB,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;YAEzE,OAAO;gBACL,YAAY,EAAE,KAAK,CAAC,YAAY;gBAChC,eAAe,EAAE,OAAO;aACzB,CAAC;QACJ,CAAC;QAED,aAAa,EAAE,8CAAoB;QAEnC;;;;WAIG;QACH,yBAAyB,EAAE,GAAG,EAAE,CAAC,CAAC;YAChC,YAAY,EAAE,KAAK,CAAC,YAAY;SACjC,CAAC;KACH,CAAC,CAAC;AACL,CAAC;AAED;;;;;;GAMG;AACI,KAAK,UAAU,2BAA2B,CAC/C,MAAkC,EAClC,OAA4B;IAE5B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC7B,MAAM,iBAAiB,GAAG,sBAAsB,CAC9C,mBAAmB,EACnB,MAAM,EACN,OAAO,EACP,SAAS,CACV,CAAC;IAEF,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,EAAE,CAAC;QACrC,OAAO,iBAAiB,CAAC;IAC3B,CAAC;IAED,MAAM,iBAAiB,GAAG,iBAAiB,CAAC;IAE5C,OAAO,IAAA,qBAAO,EAA0D;QACtE,QAAQ,EAAE,mBAAmB;QAC7B,KAAK,EAAE,MAAM;QACb,OAAO;QACP,iBAAiB,EAAE,MAAM;QAEzB;;;;WAIG;QACH,OAAO,EAAE,KAAK,IAAI,EAAE;YAClB,MAAM,QAAQ,GAAG,iBAAiB,CAAC,qBAAqB,EAAE,CAAC;YAE3D,OAAO;gBACL,SAAS,EAAE,QAAQ,CAAC,GAAG,CACrB,CAAC,gBAaA,EAAE,EAAE,CAAC,CAAC;oBACL,YAAY,EAAE,gBAAgB,CAAC,IAAI;oBACnC,eAAe,EAAE,gBAAgB,CAAC,OAAO;oBACzC,UAAU,EAAE,gBAAgB,CAAC,UAAU;iBACxC,CAAC,CACH;aACF,CAAC;QACJ,CAAC;QAED,aAAa,EAAE,8CAAoB;KACpC,CAAC,CAAC;AACL,CAAC","sourcesContent":["import type { ContractSeedingCapability } from '../../capabilities/types.js';\nimport { getSessionManager } from '../session-manager.js';\nimport { classifySeedingError } from './error-classification.js';\nimport { runTool } from './run-tool.js';\nimport type {\n SeedContractInput,\n SeedContractsInput,\n GetContractAddressInput,\n ListDeployedContractsInput,\n SeedContractResult,\n SeedContractsResult,\n GetContractAddressResult,\n ListDeployedContractsResult,\n McpResponse,\n HandlerOptions,\n} from '../types';\nimport { ErrorCodes } from '../types';\nimport { createErrorResponse } from '../utils';\n\nexport type SeedingToolOptions = HandlerOptions & {\n seedingCapability?: ContractSeedingCapability;\n};\n\n/**\n * Validates that the seeding capability is available, returning either the capability or an error response.\n *\n * @param toolName The name of the tool requesting the capability\n * @param input The input provided to the tool\n * @param options Tool options containing the seeding capability\n * @param startTime Timestamp when the tool execution started\n * @returns The seeding capability if available, or an error response if not\n */\nfunction checkSeedingCapability<Type>(\n toolName: string,\n input: unknown,\n options: SeedingToolOptions | undefined,\n startTime: number,\n): McpResponse<Type> | ContractSeedingCapability {\n const sessionManager = getSessionManager();\n const sessionId = sessionManager.getSessionId();\n\n if (!options?.seedingCapability) {\n return createErrorResponse(\n ErrorCodes.MM_CAPABILITY_NOT_AVAILABLE,\n `ContractSeedingCapability not available. The ${toolName} tool requires running in e2e mode with the MetaMask extension wrapper, which provides Anvil chain and contract deployment support.`,\n { capability: 'ContractSeedingCapability', input },\n sessionId,\n startTime,\n ) as McpResponse<Type>;\n }\n\n return options.seedingCapability;\n}\n\n/**\n * Type guard to check if a result is a ContractSeedingCapability.\n *\n * @param result The value to check\n * @returns True if result is a ContractSeedingCapability, false if it's an error response\n */\nfunction isCapability(\n result: McpResponse<unknown> | ContractSeedingCapability,\n): result is ContractSeedingCapability {\n return (\n typeof result === 'object' && result !== null && 'deployContract' in result\n );\n}\n\n/**\n * Handles the mm_seed_contract tool to deploy a single smart contract.\n *\n * @param input The contract name and deployment options\n * @param options Tool options including seeding capability\n * @returns Promise resolving to the deployment result with contract address\n */\nexport async function handleSeedContract(\n input: SeedContractInput,\n options?: SeedingToolOptions,\n): Promise<McpResponse<SeedContractResult>> {\n const startTime = Date.now();\n const capabilityOrError = checkSeedingCapability<SeedContractResult>(\n 'mm_seed_contract',\n input,\n options,\n startTime,\n );\n\n if (!isCapability(capabilityOrError)) {\n return capabilityOrError;\n }\n\n const seedingCapability = capabilityOrError;\n\n return runTool<SeedContractInput, SeedContractResult>({\n toolName: 'mm_seed_contract',\n input,\n options,\n observationPolicy: 'none',\n\n /**\n * Executes the contract deployment using the seeding capability.\n *\n * @returns The deployed contract details including name, address, and timestamp\n */\n execute: async () => {\n const deployed = await seedingCapability.deployContract(\n input.contractName,\n {\n hardfork: input.hardfork,\n deployerOptions: input.deployerOptions,\n },\n );\n\n return {\n contractName: deployed.name,\n contractAddress: deployed.address,\n deployedAt: deployed.deployedAt,\n };\n },\n\n classifyError: classifySeedingError,\n\n /**\n * Sanitizes the input for recording in the knowledge store.\n *\n * @returns The sanitized input containing contract name and hardfork\n */\n sanitizeInputForRecording: () => ({\n contractName: input.contractName,\n hardfork: input.hardfork ?? 'prague',\n }),\n });\n}\n\n/**\n * Handles the mm_seed_contracts tool to deploy multiple smart contracts.\n *\n * @param input The list of contract names and deployment options\n * @param options Tool options including seeding capability\n * @returns Promise resolving to deployment results with deployed and failed contracts\n */\nexport async function handleSeedContracts(\n input: SeedContractsInput,\n options?: SeedingToolOptions,\n): Promise<McpResponse<SeedContractsResult>> {\n const startTime = Date.now();\n const capabilityOrError = checkSeedingCapability<SeedContractsResult>(\n 'mm_seed_contracts',\n input,\n options,\n startTime,\n );\n\n if (!isCapability(capabilityOrError)) {\n return capabilityOrError;\n }\n\n const seedingCapability = capabilityOrError;\n\n return runTool<SeedContractsInput, SeedContractsResult>({\n toolName: 'mm_seed_contracts',\n input,\n options,\n observationPolicy: 'none',\n\n /**\n * Executes the multi-contract deployment using the seeding capability.\n *\n * @returns The deployment results with deployed and failed contract lists\n */\n execute: async () => {\n const seedResult = await seedingCapability.deployContracts(\n input.contracts,\n { hardfork: input.hardfork },\n );\n\n return {\n deployed: seedResult.deployed.map((deployedContract) => ({\n contractName: deployedContract.name,\n contractAddress: deployedContract.address,\n deployedAt: deployedContract.deployedAt,\n })),\n failed: seedResult.failed.map((failedDeployment) => ({\n contractName: failedDeployment.name,\n error: failedDeployment.error,\n })),\n };\n },\n\n classifyError: classifySeedingError,\n\n /**\n * Sanitizes the input for recording in the knowledge store.\n *\n * @returns The sanitized input containing contracts list and hardfork\n */\n sanitizeInputForRecording: () => ({\n contracts: input.contracts,\n hardfork: input.hardfork ?? 'prague',\n }),\n });\n}\n\n/**\n * Handles the mm_get_contract_address tool to retrieve a deployed contract's address.\n *\n * @param input The contract name to look up\n * @param options Tool options including seeding capability\n * @returns Promise resolving to the contract address or null if not found\n */\nexport async function handleGetContractAddress(\n input: GetContractAddressInput,\n options?: SeedingToolOptions,\n): Promise<McpResponse<GetContractAddressResult>> {\n const startTime = Date.now();\n const capabilityOrError = checkSeedingCapability<GetContractAddressResult>(\n 'mm_get_contract_address',\n input,\n options,\n startTime,\n );\n\n if (!isCapability(capabilityOrError)) {\n return capabilityOrError;\n }\n\n const seedingCapability = capabilityOrError;\n\n return runTool<GetContractAddressInput, GetContractAddressResult>({\n toolName: 'mm_get_contract_address',\n input,\n options,\n observationPolicy: 'none',\n\n /**\n * Executes the contract address lookup using the seeding capability.\n *\n * @returns The contract name and its deployed address\n */\n execute: async () => {\n const address = seedingCapability.getContractAddress(input.contractName);\n\n return {\n contractName: input.contractName,\n contractAddress: address,\n };\n },\n\n classifyError: classifySeedingError,\n\n /**\n * Sanitizes the input for recording in the knowledge store.\n *\n * @returns The sanitized input containing the contract name\n */\n sanitizeInputForRecording: () => ({\n contractName: input.contractName,\n }),\n });\n}\n\n/**\n * Handles the mm_list_contracts tool to list all deployed contracts in the session.\n *\n * @param _input Unused input parameter (no input required for this tool)\n * @param options Tool options including seeding capability\n * @returns Promise resolving to a list of all deployed contracts with their addresses\n */\nexport async function handleListDeployedContracts(\n _input: ListDeployedContractsInput,\n options?: SeedingToolOptions,\n): Promise<McpResponse<ListDeployedContractsResult>> {\n const startTime = Date.now();\n const capabilityOrError = checkSeedingCapability<ListDeployedContractsResult>(\n 'mm_list_contracts',\n _input,\n options,\n startTime,\n );\n\n if (!isCapability(capabilityOrError)) {\n return capabilityOrError;\n }\n\n const seedingCapability = capabilityOrError;\n\n return runTool<ListDeployedContractsInput, ListDeployedContractsResult>({\n toolName: 'mm_list_contracts',\n input: _input,\n options,\n observationPolicy: 'none',\n\n /**\n * Executes the contract listing using the seeding capability.\n *\n * @returns The list of all deployed contracts with their details\n */\n execute: async () => {\n const deployed = seedingCapability.listDeployedContracts();\n\n return {\n contracts: deployed.map(\n (deployedContract: {\n /**\n * The contract name\n */\n name: string;\n /**\n * The contract's deployed address\n */\n address: string;\n /**\n * The deployment timestamp\n */\n deployedAt: string;\n }) => ({\n contractName: deployedContract.name,\n contractAddress: deployedContract.address,\n deployedAt: deployedContract.deployedAt,\n }),\n ),\n };\n },\n\n classifyError: classifySeedingError,\n });\n}\n"]}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import type { ContractSeedingCapability } from "../../capabilities/types.cjs";
|
|
2
|
+
import type { SeedContractInput, SeedContractsInput, GetContractAddressInput, ListDeployedContractsInput, SeedContractResult, SeedContractsResult, GetContractAddressResult, ListDeployedContractsResult, McpResponse, HandlerOptions } from "../types/index.cjs";
|
|
3
|
+
export type SeedingToolOptions = HandlerOptions & {
|
|
4
|
+
seedingCapability?: ContractSeedingCapability;
|
|
5
|
+
};
|
|
6
|
+
/**
|
|
7
|
+
* Handles the mm_seed_contract tool to deploy a single smart contract.
|
|
8
|
+
*
|
|
9
|
+
* @param input The contract name and deployment options
|
|
10
|
+
* @param options Tool options including seeding capability
|
|
11
|
+
* @returns Promise resolving to the deployment result with contract address
|
|
12
|
+
*/
|
|
13
|
+
export declare function handleSeedContract(input: SeedContractInput, options?: SeedingToolOptions): Promise<McpResponse<SeedContractResult>>;
|
|
14
|
+
/**
|
|
15
|
+
* Handles the mm_seed_contracts tool to deploy multiple smart contracts.
|
|
16
|
+
*
|
|
17
|
+
* @param input The list of contract names and deployment options
|
|
18
|
+
* @param options Tool options including seeding capability
|
|
19
|
+
* @returns Promise resolving to deployment results with deployed and failed contracts
|
|
20
|
+
*/
|
|
21
|
+
export declare function handleSeedContracts(input: SeedContractsInput, options?: SeedingToolOptions): Promise<McpResponse<SeedContractsResult>>;
|
|
22
|
+
/**
|
|
23
|
+
* Handles the mm_get_contract_address tool to retrieve a deployed contract's address.
|
|
24
|
+
*
|
|
25
|
+
* @param input The contract name to look up
|
|
26
|
+
* @param options Tool options including seeding capability
|
|
27
|
+
* @returns Promise resolving to the contract address or null if not found
|
|
28
|
+
*/
|
|
29
|
+
export declare function handleGetContractAddress(input: GetContractAddressInput, options?: SeedingToolOptions): Promise<McpResponse<GetContractAddressResult>>;
|
|
30
|
+
/**
|
|
31
|
+
* Handles the mm_list_contracts tool to list all deployed contracts in the session.
|
|
32
|
+
*
|
|
33
|
+
* @param _input Unused input parameter (no input required for this tool)
|
|
34
|
+
* @param options Tool options including seeding capability
|
|
35
|
+
* @returns Promise resolving to a list of all deployed contracts with their addresses
|
|
36
|
+
*/
|
|
37
|
+
export declare function handleListDeployedContracts(_input: ListDeployedContractsInput, options?: SeedingToolOptions): Promise<McpResponse<ListDeployedContractsResult>>;
|
|
38
|
+
//# sourceMappingURL=seeding.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"seeding.d.cts","sourceRoot":"","sources":["../../../src/mcp-server/tools/seeding.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,qCAAoC;AAI7E,OAAO,KAAK,EACV,iBAAiB,EACjB,kBAAkB,EAClB,uBAAuB,EACvB,0BAA0B,EAC1B,kBAAkB,EAClB,mBAAmB,EACnB,wBAAwB,EACxB,2BAA2B,EAC3B,WAAW,EACX,cAAc,EACf,2BAAiB;AAIlB,MAAM,MAAM,kBAAkB,GAAG,cAAc,GAAG;IAChD,iBAAiB,CAAC,EAAE,yBAAyB,CAAC;CAC/C,CAAC;AA+CF;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CACtC,KAAK,EAAE,iBAAiB,EACxB,OAAO,CAAC,EAAE,kBAAkB,GAC3B,OAAO,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC,CAsD1C;AAED;;;;;;GAMG;AACH,wBAAsB,mBAAmB,CACvC,KAAK,EAAE,kBAAkB,EACzB,OAAO,CAAC,EAAE,kBAAkB,GAC3B,OAAO,CAAC,WAAW,CAAC,mBAAmB,CAAC,CAAC,CAyD3C;AAED;;;;;;GAMG;AACH,wBAAsB,wBAAwB,CAC5C,KAAK,EAAE,uBAAuB,EAC9B,OAAO,CAAC,EAAE,kBAAkB,GAC3B,OAAO,CAAC,WAAW,CAAC,wBAAwB,CAAC,CAAC,CA8ChD;AAED;;;;;;GAMG;AACH,wBAAsB,2BAA2B,CAC/C,MAAM,EAAE,0BAA0B,EAClC,OAAO,CAAC,EAAE,kBAAkB,GAC3B,OAAO,CAAC,WAAW,CAAC,2BAA2B,CAAC,CAAC,CAuDnD"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import type { ContractSeedingCapability } from "../../capabilities/types.mjs";
|
|
2
|
+
import type { SeedContractInput, SeedContractsInput, GetContractAddressInput, ListDeployedContractsInput, SeedContractResult, SeedContractsResult, GetContractAddressResult, ListDeployedContractsResult, McpResponse, HandlerOptions } from "../types/index.mjs";
|
|
3
|
+
export type SeedingToolOptions = HandlerOptions & {
|
|
4
|
+
seedingCapability?: ContractSeedingCapability;
|
|
5
|
+
};
|
|
6
|
+
/**
|
|
7
|
+
* Handles the mm_seed_contract tool to deploy a single smart contract.
|
|
8
|
+
*
|
|
9
|
+
* @param input The contract name and deployment options
|
|
10
|
+
* @param options Tool options including seeding capability
|
|
11
|
+
* @returns Promise resolving to the deployment result with contract address
|
|
12
|
+
*/
|
|
13
|
+
export declare function handleSeedContract(input: SeedContractInput, options?: SeedingToolOptions): Promise<McpResponse<SeedContractResult>>;
|
|
14
|
+
/**
|
|
15
|
+
* Handles the mm_seed_contracts tool to deploy multiple smart contracts.
|
|
16
|
+
*
|
|
17
|
+
* @param input The list of contract names and deployment options
|
|
18
|
+
* @param options Tool options including seeding capability
|
|
19
|
+
* @returns Promise resolving to deployment results with deployed and failed contracts
|
|
20
|
+
*/
|
|
21
|
+
export declare function handleSeedContracts(input: SeedContractsInput, options?: SeedingToolOptions): Promise<McpResponse<SeedContractsResult>>;
|
|
22
|
+
/**
|
|
23
|
+
* Handles the mm_get_contract_address tool to retrieve a deployed contract's address.
|
|
24
|
+
*
|
|
25
|
+
* @param input The contract name to look up
|
|
26
|
+
* @param options Tool options including seeding capability
|
|
27
|
+
* @returns Promise resolving to the contract address or null if not found
|
|
28
|
+
*/
|
|
29
|
+
export declare function handleGetContractAddress(input: GetContractAddressInput, options?: SeedingToolOptions): Promise<McpResponse<GetContractAddressResult>>;
|
|
30
|
+
/**
|
|
31
|
+
* Handles the mm_list_contracts tool to list all deployed contracts in the session.
|
|
32
|
+
*
|
|
33
|
+
* @param _input Unused input parameter (no input required for this tool)
|
|
34
|
+
* @param options Tool options including seeding capability
|
|
35
|
+
* @returns Promise resolving to a list of all deployed contracts with their addresses
|
|
36
|
+
*/
|
|
37
|
+
export declare function handleListDeployedContracts(_input: ListDeployedContractsInput, options?: SeedingToolOptions): Promise<McpResponse<ListDeployedContractsResult>>;
|
|
38
|
+
//# sourceMappingURL=seeding.d.mts.map
|