@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,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.fetchWithTimeout = fetchWithTimeout;
|
|
4
|
+
/**
|
|
5
|
+
* Fetch with configurable timeout using AbortController
|
|
6
|
+
*
|
|
7
|
+
* @param url - The URL to fetch
|
|
8
|
+
* @param options - Standard fetch options (method, headers, body, etc.)
|
|
9
|
+
* @param timeoutMs - Timeout in milliseconds (default: 5000ms)
|
|
10
|
+
* @returns Promise resolving to the fetch Response
|
|
11
|
+
* @throws Error if the request times out or fails
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* ```typescript
|
|
15
|
+
* const response = await fetchWithTimeout(
|
|
16
|
+
* 'http://localhost:8545',
|
|
17
|
+
* { method: 'GET' },
|
|
18
|
+
* 3000
|
|
19
|
+
* );
|
|
20
|
+
* ```
|
|
21
|
+
*/
|
|
22
|
+
async function fetchWithTimeout(url, options = {}, timeoutMs = 5000) {
|
|
23
|
+
const controller = new AbortController();
|
|
24
|
+
const timeoutId = setTimeout(() => controller.abort(), timeoutMs);
|
|
25
|
+
try {
|
|
26
|
+
const response = await fetch(url, {
|
|
27
|
+
...options,
|
|
28
|
+
signal: controller.signal,
|
|
29
|
+
});
|
|
30
|
+
return response;
|
|
31
|
+
}
|
|
32
|
+
finally {
|
|
33
|
+
clearTimeout(timeoutId);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=fetch.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fetch.cjs","sourceRoot":"","sources":["../../src/utils/fetch.ts"],"names":[],"mappings":";;AAkBA,4CAiBC;AAnCD;;;;;;;;;;;;;;;;;GAiBG;AACI,KAAK,UAAU,gBAAgB,CACpC,GAAW,EACX,UAAuB,EAAE,EACzB,SAAS,GAAG,IAAI;IAEhB,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,SAAS,CAAC,CAAC;IAElE,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YAChC,GAAG,OAAO;YACV,MAAM,EAAE,UAAU,CAAC,MAAM;SAC1B,CAAC,CAAC;QACH,OAAO,QAAQ,CAAC;IAClB,CAAC;YAAS,CAAC;QACT,YAAY,CAAC,SAAS,CAAC,CAAC;IAC1B,CAAC;AACH,CAAC","sourcesContent":["/**\n * Fetch with configurable timeout using AbortController\n *\n * @param url - The URL to fetch\n * @param options - Standard fetch options (method, headers, body, etc.)\n * @param timeoutMs - Timeout in milliseconds (default: 5000ms)\n * @returns Promise resolving to the fetch Response\n * @throws Error if the request times out or fails\n *\n * @example\n * ```typescript\n * const response = await fetchWithTimeout(\n * 'http://localhost:8545',\n * { method: 'GET' },\n * 3000\n * );\n * ```\n */\nexport async function fetchWithTimeout(\n url: string,\n options: RequestInit = {},\n timeoutMs = 5000,\n): Promise<Response> {\n const controller = new AbortController();\n const timeoutId = setTimeout(() => controller.abort(), timeoutMs);\n\n try {\n const response = await fetch(url, {\n ...options,\n signal: controller.signal,\n });\n return response;\n } finally {\n clearTimeout(timeoutId);\n }\n}\n"]}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Fetch with configurable timeout using AbortController
|
|
3
|
+
*
|
|
4
|
+
* @param url - The URL to fetch
|
|
5
|
+
* @param options - Standard fetch options (method, headers, body, etc.)
|
|
6
|
+
* @param timeoutMs - Timeout in milliseconds (default: 5000ms)
|
|
7
|
+
* @returns Promise resolving to the fetch Response
|
|
8
|
+
* @throws Error if the request times out or fails
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```typescript
|
|
12
|
+
* const response = await fetchWithTimeout(
|
|
13
|
+
* 'http://localhost:8545',
|
|
14
|
+
* { method: 'GET' },
|
|
15
|
+
* 3000
|
|
16
|
+
* );
|
|
17
|
+
* ```
|
|
18
|
+
*/
|
|
19
|
+
export declare function fetchWithTimeout(url: string, options?: RequestInit, timeoutMs?: number): Promise<Response>;
|
|
20
|
+
//# sourceMappingURL=fetch.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fetch.d.cts","sourceRoot":"","sources":["../../src/utils/fetch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,gBAAgB,CACpC,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,WAAgB,EACzB,SAAS,SAAO,GACf,OAAO,CAAC,QAAQ,CAAC,CAanB"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Fetch with configurable timeout using AbortController
|
|
3
|
+
*
|
|
4
|
+
* @param url - The URL to fetch
|
|
5
|
+
* @param options - Standard fetch options (method, headers, body, etc.)
|
|
6
|
+
* @param timeoutMs - Timeout in milliseconds (default: 5000ms)
|
|
7
|
+
* @returns Promise resolving to the fetch Response
|
|
8
|
+
* @throws Error if the request times out or fails
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```typescript
|
|
12
|
+
* const response = await fetchWithTimeout(
|
|
13
|
+
* 'http://localhost:8545',
|
|
14
|
+
* { method: 'GET' },
|
|
15
|
+
* 3000
|
|
16
|
+
* );
|
|
17
|
+
* ```
|
|
18
|
+
*/
|
|
19
|
+
export declare function fetchWithTimeout(url: string, options?: RequestInit, timeoutMs?: number): Promise<Response>;
|
|
20
|
+
//# sourceMappingURL=fetch.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fetch.d.mts","sourceRoot":"","sources":["../../src/utils/fetch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,gBAAgB,CACpC,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,WAAgB,EACzB,SAAS,SAAO,GACf,OAAO,CAAC,QAAQ,CAAC,CAanB"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Fetch with configurable timeout using AbortController
|
|
3
|
+
*
|
|
4
|
+
* @param url - The URL to fetch
|
|
5
|
+
* @param options - Standard fetch options (method, headers, body, etc.)
|
|
6
|
+
* @param timeoutMs - Timeout in milliseconds (default: 5000ms)
|
|
7
|
+
* @returns Promise resolving to the fetch Response
|
|
8
|
+
* @throws Error if the request times out or fails
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```typescript
|
|
12
|
+
* const response = await fetchWithTimeout(
|
|
13
|
+
* 'http://localhost:8545',
|
|
14
|
+
* { method: 'GET' },
|
|
15
|
+
* 3000
|
|
16
|
+
* );
|
|
17
|
+
* ```
|
|
18
|
+
*/
|
|
19
|
+
export async function fetchWithTimeout(url, options = {}, timeoutMs = 5000) {
|
|
20
|
+
const controller = new AbortController();
|
|
21
|
+
const timeoutId = setTimeout(() => controller.abort(), timeoutMs);
|
|
22
|
+
try {
|
|
23
|
+
const response = await fetch(url, {
|
|
24
|
+
...options,
|
|
25
|
+
signal: controller.signal,
|
|
26
|
+
});
|
|
27
|
+
return response;
|
|
28
|
+
}
|
|
29
|
+
finally {
|
|
30
|
+
clearTimeout(timeoutId);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=fetch.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fetch.mjs","sourceRoot":"","sources":["../../src/utils/fetch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,GAAW,EACX,UAAuB,EAAE,EACzB,SAAS,GAAG,IAAI;IAEhB,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,SAAS,CAAC,CAAC;IAElE,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YAChC,GAAG,OAAO;YACV,MAAM,EAAE,UAAU,CAAC,MAAM;SAC1B,CAAC,CAAC;QACH,OAAO,QAAQ,CAAC;IAClB,CAAC;YAAS,CAAC;QACT,YAAY,CAAC,SAAS,CAAC,CAAC;IAC1B,CAAC;AACH,CAAC","sourcesContent":["/**\n * Fetch with configurable timeout using AbortController\n *\n * @param url - The URL to fetch\n * @param options - Standard fetch options (method, headers, body, etc.)\n * @param timeoutMs - Timeout in milliseconds (default: 5000ms)\n * @returns Promise resolving to the fetch Response\n * @throws Error if the request times out or fails\n *\n * @example\n * ```typescript\n * const response = await fetchWithTimeout(\n * 'http://localhost:8545',\n * { method: 'GET' },\n * 3000\n * );\n * ```\n */\nexport async function fetchWithTimeout(\n url: string,\n options: RequestInit = {},\n timeoutMs = 5000,\n): Promise<Response> {\n const controller = new AbortController();\n const timeoutId = setTimeout(() => controller.abort(), timeoutMs);\n\n try {\n const response = await fetch(url, {\n ...options,\n signal: controller.signal,\n });\n return response;\n } finally {\n clearTimeout(timeoutId);\n }\n}\n"]}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Shared utility functions
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.waitForServiceReady = exports.fetchWithTimeout = void 0;
|
|
7
|
+
var fetch_js_1 = require("./fetch.cjs");
|
|
8
|
+
Object.defineProperty(exports, "fetchWithTimeout", { enumerable: true, get: function () { return fetch_js_1.fetchWithTimeout; } });
|
|
9
|
+
var service_readiness_js_1 = require("./service-readiness.cjs");
|
|
10
|
+
Object.defineProperty(exports, "waitForServiceReady", { enumerable: true, get: function () { return service_readiness_js_1.waitForServiceReady; } });
|
|
11
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,wCAA8C;AAArC,4GAAA,gBAAgB,OAAA;AACzB,gEAGgC;AAF9B,2HAAA,mBAAmB,OAAA","sourcesContent":["/**\n * Shared utility functions\n */\n\nexport { fetchWithTimeout } from './fetch.js';\nexport {\n waitForServiceReady,\n type WaitForServiceReadyOptions,\n} from './service-readiness.js';\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.cts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,gBAAgB,EAAE,oBAAmB;AAC9C,OAAO,EACL,mBAAmB,EACnB,KAAK,0BAA0B,GAChC,gCAA+B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,gBAAgB,EAAE,oBAAmB;AAC9C,OAAO,EACL,mBAAmB,EACnB,KAAK,0BAA0B,GAChC,gCAA+B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,gBAAgB,EAAE,oBAAmB;AAC9C,OAAO,EACL,mBAAmB,EAEpB,gCAA+B","sourcesContent":["/**\n * Shared utility functions\n */\n\nexport { fetchWithTimeout } from './fetch.js';\nexport {\n waitForServiceReady,\n type WaitForServiceReadyOptions,\n} from './service-readiness.js';\n"]}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.waitForServiceReady = waitForServiceReady;
|
|
4
|
+
const fetch_js_1 = require("./fetch.cjs");
|
|
5
|
+
/**
|
|
6
|
+
* Wait for a service to become ready by polling an endpoint
|
|
7
|
+
*
|
|
8
|
+
* Repeatedly attempts to fetch from the given URL until either:
|
|
9
|
+
* - The service responds with a successful status (2xx or 503)
|
|
10
|
+
* - Maximum attempts are reached (throws error)
|
|
11
|
+
*
|
|
12
|
+
* @param url - The URL to poll for service readiness
|
|
13
|
+
* @param options - Configuration options
|
|
14
|
+
* @throws Error if service doesn't become ready within maxAttempts
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* ```typescript
|
|
18
|
+
* // Wait for fixture server to be ready
|
|
19
|
+
* await waitForServiceReady('http://localhost:12345/state.json', {
|
|
20
|
+
* maxAttempts: 10,
|
|
21
|
+
* delayMs: 500,
|
|
22
|
+
* timeoutMs: 3000,
|
|
23
|
+
* });
|
|
24
|
+
* ```
|
|
25
|
+
*
|
|
26
|
+
* @example
|
|
27
|
+
* ```typescript
|
|
28
|
+
* // With custom fetch function
|
|
29
|
+
* await waitForServiceReady('http://localhost:8545', {
|
|
30
|
+
* fetchFn: customFetch,
|
|
31
|
+
* maxAttempts: 5,
|
|
32
|
+
* });
|
|
33
|
+
* ```
|
|
34
|
+
*/
|
|
35
|
+
async function waitForServiceReady(url, options = {}) {
|
|
36
|
+
const { maxAttempts = 10, delayMs = 500, fetchFn = fetch_js_1.fetchWithTimeout, timeoutMs = 3000, } = options;
|
|
37
|
+
for (let attempt = 0; attempt < maxAttempts; attempt++) {
|
|
38
|
+
try {
|
|
39
|
+
const response = await fetchFn(url, {}, timeoutMs);
|
|
40
|
+
// Service is ready if it responds with 2xx or 503 (service unavailable but responding)
|
|
41
|
+
if (response.ok || response.status === 503) {
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
catch (error) {
|
|
46
|
+
const caughtError = error;
|
|
47
|
+
// Connection refused - service not yet started, retry
|
|
48
|
+
if (caughtError.cause &&
|
|
49
|
+
JSON.stringify(caughtError.cause).includes('ECONNREFUSED')) {
|
|
50
|
+
await delay(delayMs);
|
|
51
|
+
continue;
|
|
52
|
+
}
|
|
53
|
+
// Timeout - service slow to respond, retry
|
|
54
|
+
if (caughtError.name === 'AbortError') {
|
|
55
|
+
await delay(delayMs);
|
|
56
|
+
continue;
|
|
57
|
+
}
|
|
58
|
+
// Other errors (e.g., self-signed cert accepted) - consider service ready
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
// Response received but not ok/503 - retry
|
|
62
|
+
await delay(delayMs);
|
|
63
|
+
}
|
|
64
|
+
throw new Error(`Service at ${url} failed to become ready after ${maxAttempts} attempts`);
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Delay helper function.
|
|
68
|
+
*
|
|
69
|
+
* @param ms - The delay in milliseconds.
|
|
70
|
+
* @returns A promise that resolves after the delay.
|
|
71
|
+
*/
|
|
72
|
+
async function delay(ms) {
|
|
73
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=service-readiness.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service-readiness.cjs","sourceRoot":"","sources":["../../src/utils/service-readiness.ts"],"names":[],"mappings":";;AAiEA,kDAgDC;AAjHD,0CAA8C;AAmC9C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACI,KAAK,UAAU,mBAAmB,CACvC,GAAW,EACX,UAAsC,EAAE;IAExC,MAAM,EACJ,WAAW,GAAG,EAAE,EAChB,OAAO,GAAG,GAAG,EACb,OAAO,GAAG,2BAAgB,EAC1B,SAAS,GAAG,IAAI,GACjB,GAAG,OAAO,CAAC;IAEZ,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,WAAW,EAAE,OAAO,EAAE,EAAE,CAAC;QACvD,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,EAAE,EAAE,EAAE,SAAS,CAAC,CAAC;YAEnD,uFAAuF;YACvF,IAAI,QAAQ,CAAC,EAAE,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;gBAC3C,OAAO;YACT,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,WAAW,GAAG,KAAc,CAAC;YAEnC,sDAAsD;YACtD,IACE,WAAW,CAAC,KAAK;gBACjB,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,EAC1D,CAAC;gBACD,MAAM,KAAK,CAAC,OAAO,CAAC,CAAC;gBACrB,SAAS;YACX,CAAC;YAED,2CAA2C;YAC3C,IAAI,WAAW,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;gBACtC,MAAM,KAAK,CAAC,OAAO,CAAC,CAAC;gBACrB,SAAS;YACX,CAAC;YAED,0EAA0E;YAC1E,OAAO;QACT,CAAC;QAED,2CAA2C;QAC3C,MAAM,KAAK,CAAC,OAAO,CAAC,CAAC;IACvB,CAAC;IAED,MAAM,IAAI,KAAK,CACb,cAAc,GAAG,iCAAiC,WAAW,WAAW,CACzE,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,KAAK,UAAU,KAAK,CAAC,EAAU;IAC7B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAC3D,CAAC","sourcesContent":["import { fetchWithTimeout } from './fetch.js';\n\n/**\n * Options for waitForServiceReady\n */\nexport type WaitForServiceReadyOptions = {\n /**\n * Maximum number of attempts to check service readiness\n *\n * @default 10\n */\n maxAttempts?: number;\n\n /**\n * Delay in milliseconds between attempts\n *\n * @default 500\n */\n delayMs?: number;\n\n /**\n * Custom fetch function (useful for testing or custom timeout behavior)\n *\n * @default fetchWithTimeout\n */\n fetchFn?: typeof fetch;\n\n /**\n * Timeout in milliseconds for each fetch attempt\n *\n * @default 3000\n */\n timeoutMs?: number;\n};\n\n/**\n * Wait for a service to become ready by polling an endpoint\n *\n * Repeatedly attempts to fetch from the given URL until either:\n * - The service responds with a successful status (2xx or 503)\n * - Maximum attempts are reached (throws error)\n *\n * @param url - The URL to poll for service readiness\n * @param options - Configuration options\n * @throws Error if service doesn't become ready within maxAttempts\n *\n * @example\n * ```typescript\n * // Wait for fixture server to be ready\n * await waitForServiceReady('http://localhost:12345/state.json', {\n * maxAttempts: 10,\n * delayMs: 500,\n * timeoutMs: 3000,\n * });\n * ```\n *\n * @example\n * ```typescript\n * // With custom fetch function\n * await waitForServiceReady('http://localhost:8545', {\n * fetchFn: customFetch,\n * maxAttempts: 5,\n * });\n * ```\n */\nexport async function waitForServiceReady(\n url: string,\n options: WaitForServiceReadyOptions = {},\n): Promise<void> {\n const {\n maxAttempts = 10,\n delayMs = 500,\n fetchFn = fetchWithTimeout,\n timeoutMs = 3000,\n } = options;\n\n for (let attempt = 0; attempt < maxAttempts; attempt++) {\n try {\n const response = await fetchFn(url, {}, timeoutMs);\n\n // Service is ready if it responds with 2xx or 503 (service unavailable but responding)\n if (response.ok || response.status === 503) {\n return;\n }\n } catch (error) {\n const caughtError = error as Error;\n\n // Connection refused - service not yet started, retry\n if (\n caughtError.cause &&\n JSON.stringify(caughtError.cause).includes('ECONNREFUSED')\n ) {\n await delay(delayMs);\n continue;\n }\n\n // Timeout - service slow to respond, retry\n if (caughtError.name === 'AbortError') {\n await delay(delayMs);\n continue;\n }\n\n // Other errors (e.g., self-signed cert accepted) - consider service ready\n return;\n }\n\n // Response received but not ok/503 - retry\n await delay(delayMs);\n }\n\n throw new Error(\n `Service at ${url} failed to become ready after ${maxAttempts} attempts`,\n );\n}\n\n/**\n * Delay helper function.\n *\n * @param ms - The delay in milliseconds.\n * @returns A promise that resolves after the delay.\n */\nasync function delay(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n"]}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Options for waitForServiceReady
|
|
3
|
+
*/
|
|
4
|
+
export type WaitForServiceReadyOptions = {
|
|
5
|
+
/**
|
|
6
|
+
* Maximum number of attempts to check service readiness
|
|
7
|
+
*
|
|
8
|
+
* @default 10
|
|
9
|
+
*/
|
|
10
|
+
maxAttempts?: number;
|
|
11
|
+
/**
|
|
12
|
+
* Delay in milliseconds between attempts
|
|
13
|
+
*
|
|
14
|
+
* @default 500
|
|
15
|
+
*/
|
|
16
|
+
delayMs?: number;
|
|
17
|
+
/**
|
|
18
|
+
* Custom fetch function (useful for testing or custom timeout behavior)
|
|
19
|
+
*
|
|
20
|
+
* @default fetchWithTimeout
|
|
21
|
+
*/
|
|
22
|
+
fetchFn?: typeof fetch;
|
|
23
|
+
/**
|
|
24
|
+
* Timeout in milliseconds for each fetch attempt
|
|
25
|
+
*
|
|
26
|
+
* @default 3000
|
|
27
|
+
*/
|
|
28
|
+
timeoutMs?: number;
|
|
29
|
+
};
|
|
30
|
+
/**
|
|
31
|
+
* Wait for a service to become ready by polling an endpoint
|
|
32
|
+
*
|
|
33
|
+
* Repeatedly attempts to fetch from the given URL until either:
|
|
34
|
+
* - The service responds with a successful status (2xx or 503)
|
|
35
|
+
* - Maximum attempts are reached (throws error)
|
|
36
|
+
*
|
|
37
|
+
* @param url - The URL to poll for service readiness
|
|
38
|
+
* @param options - Configuration options
|
|
39
|
+
* @throws Error if service doesn't become ready within maxAttempts
|
|
40
|
+
*
|
|
41
|
+
* @example
|
|
42
|
+
* ```typescript
|
|
43
|
+
* // Wait for fixture server to be ready
|
|
44
|
+
* await waitForServiceReady('http://localhost:12345/state.json', {
|
|
45
|
+
* maxAttempts: 10,
|
|
46
|
+
* delayMs: 500,
|
|
47
|
+
* timeoutMs: 3000,
|
|
48
|
+
* });
|
|
49
|
+
* ```
|
|
50
|
+
*
|
|
51
|
+
* @example
|
|
52
|
+
* ```typescript
|
|
53
|
+
* // With custom fetch function
|
|
54
|
+
* await waitForServiceReady('http://localhost:8545', {
|
|
55
|
+
* fetchFn: customFetch,
|
|
56
|
+
* maxAttempts: 5,
|
|
57
|
+
* });
|
|
58
|
+
* ```
|
|
59
|
+
*/
|
|
60
|
+
export declare function waitForServiceReady(url: string, options?: WaitForServiceReadyOptions): Promise<void>;
|
|
61
|
+
//# sourceMappingURL=service-readiness.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service-readiness.d.cts","sourceRoot":"","sources":["../../src/utils/service-readiness.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,MAAM,0BAA0B,GAAG;IACvC;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,KAAK,CAAC;IAEvB;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAsB,mBAAmB,CACvC,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,0BAA+B,GACvC,OAAO,CAAC,IAAI,CAAC,CA6Cf"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Options for waitForServiceReady
|
|
3
|
+
*/
|
|
4
|
+
export type WaitForServiceReadyOptions = {
|
|
5
|
+
/**
|
|
6
|
+
* Maximum number of attempts to check service readiness
|
|
7
|
+
*
|
|
8
|
+
* @default 10
|
|
9
|
+
*/
|
|
10
|
+
maxAttempts?: number;
|
|
11
|
+
/**
|
|
12
|
+
* Delay in milliseconds between attempts
|
|
13
|
+
*
|
|
14
|
+
* @default 500
|
|
15
|
+
*/
|
|
16
|
+
delayMs?: number;
|
|
17
|
+
/**
|
|
18
|
+
* Custom fetch function (useful for testing or custom timeout behavior)
|
|
19
|
+
*
|
|
20
|
+
* @default fetchWithTimeout
|
|
21
|
+
*/
|
|
22
|
+
fetchFn?: typeof fetch;
|
|
23
|
+
/**
|
|
24
|
+
* Timeout in milliseconds for each fetch attempt
|
|
25
|
+
*
|
|
26
|
+
* @default 3000
|
|
27
|
+
*/
|
|
28
|
+
timeoutMs?: number;
|
|
29
|
+
};
|
|
30
|
+
/**
|
|
31
|
+
* Wait for a service to become ready by polling an endpoint
|
|
32
|
+
*
|
|
33
|
+
* Repeatedly attempts to fetch from the given URL until either:
|
|
34
|
+
* - The service responds with a successful status (2xx or 503)
|
|
35
|
+
* - Maximum attempts are reached (throws error)
|
|
36
|
+
*
|
|
37
|
+
* @param url - The URL to poll for service readiness
|
|
38
|
+
* @param options - Configuration options
|
|
39
|
+
* @throws Error if service doesn't become ready within maxAttempts
|
|
40
|
+
*
|
|
41
|
+
* @example
|
|
42
|
+
* ```typescript
|
|
43
|
+
* // Wait for fixture server to be ready
|
|
44
|
+
* await waitForServiceReady('http://localhost:12345/state.json', {
|
|
45
|
+
* maxAttempts: 10,
|
|
46
|
+
* delayMs: 500,
|
|
47
|
+
* timeoutMs: 3000,
|
|
48
|
+
* });
|
|
49
|
+
* ```
|
|
50
|
+
*
|
|
51
|
+
* @example
|
|
52
|
+
* ```typescript
|
|
53
|
+
* // With custom fetch function
|
|
54
|
+
* await waitForServiceReady('http://localhost:8545', {
|
|
55
|
+
* fetchFn: customFetch,
|
|
56
|
+
* maxAttempts: 5,
|
|
57
|
+
* });
|
|
58
|
+
* ```
|
|
59
|
+
*/
|
|
60
|
+
export declare function waitForServiceReady(url: string, options?: WaitForServiceReadyOptions): Promise<void>;
|
|
61
|
+
//# sourceMappingURL=service-readiness.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service-readiness.d.mts","sourceRoot":"","sources":["../../src/utils/service-readiness.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,MAAM,0BAA0B,GAAG;IACvC;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,KAAK,CAAC;IAEvB;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAsB,mBAAmB,CACvC,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,0BAA+B,GACvC,OAAO,CAAC,IAAI,CAAC,CA6Cf"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { fetchWithTimeout } from "./fetch.mjs";
|
|
2
|
+
/**
|
|
3
|
+
* Wait for a service to become ready by polling an endpoint
|
|
4
|
+
*
|
|
5
|
+
* Repeatedly attempts to fetch from the given URL until either:
|
|
6
|
+
* - The service responds with a successful status (2xx or 503)
|
|
7
|
+
* - Maximum attempts are reached (throws error)
|
|
8
|
+
*
|
|
9
|
+
* @param url - The URL to poll for service readiness
|
|
10
|
+
* @param options - Configuration options
|
|
11
|
+
* @throws Error if service doesn't become ready within maxAttempts
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* ```typescript
|
|
15
|
+
* // Wait for fixture server to be ready
|
|
16
|
+
* await waitForServiceReady('http://localhost:12345/state.json', {
|
|
17
|
+
* maxAttempts: 10,
|
|
18
|
+
* delayMs: 500,
|
|
19
|
+
* timeoutMs: 3000,
|
|
20
|
+
* });
|
|
21
|
+
* ```
|
|
22
|
+
*
|
|
23
|
+
* @example
|
|
24
|
+
* ```typescript
|
|
25
|
+
* // With custom fetch function
|
|
26
|
+
* await waitForServiceReady('http://localhost:8545', {
|
|
27
|
+
* fetchFn: customFetch,
|
|
28
|
+
* maxAttempts: 5,
|
|
29
|
+
* });
|
|
30
|
+
* ```
|
|
31
|
+
*/
|
|
32
|
+
export async function waitForServiceReady(url, options = {}) {
|
|
33
|
+
const { maxAttempts = 10, delayMs = 500, fetchFn = fetchWithTimeout, timeoutMs = 3000, } = options;
|
|
34
|
+
for (let attempt = 0; attempt < maxAttempts; attempt++) {
|
|
35
|
+
try {
|
|
36
|
+
const response = await fetchFn(url, {}, timeoutMs);
|
|
37
|
+
// Service is ready if it responds with 2xx or 503 (service unavailable but responding)
|
|
38
|
+
if (response.ok || response.status === 503) {
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
catch (error) {
|
|
43
|
+
const caughtError = error;
|
|
44
|
+
// Connection refused - service not yet started, retry
|
|
45
|
+
if (caughtError.cause &&
|
|
46
|
+
JSON.stringify(caughtError.cause).includes('ECONNREFUSED')) {
|
|
47
|
+
await delay(delayMs);
|
|
48
|
+
continue;
|
|
49
|
+
}
|
|
50
|
+
// Timeout - service slow to respond, retry
|
|
51
|
+
if (caughtError.name === 'AbortError') {
|
|
52
|
+
await delay(delayMs);
|
|
53
|
+
continue;
|
|
54
|
+
}
|
|
55
|
+
// Other errors (e.g., self-signed cert accepted) - consider service ready
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
// Response received but not ok/503 - retry
|
|
59
|
+
await delay(delayMs);
|
|
60
|
+
}
|
|
61
|
+
throw new Error(`Service at ${url} failed to become ready after ${maxAttempts} attempts`);
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Delay helper function.
|
|
65
|
+
*
|
|
66
|
+
* @param ms - The delay in milliseconds.
|
|
67
|
+
* @returns A promise that resolves after the delay.
|
|
68
|
+
*/
|
|
69
|
+
async function delay(ms) {
|
|
70
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=service-readiness.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service-readiness.mjs","sourceRoot":"","sources":["../../src/utils/service-readiness.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,oBAAmB;AAmC9C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,GAAW,EACX,UAAsC,EAAE;IAExC,MAAM,EACJ,WAAW,GAAG,EAAE,EAChB,OAAO,GAAG,GAAG,EACb,OAAO,GAAG,gBAAgB,EAC1B,SAAS,GAAG,IAAI,GACjB,GAAG,OAAO,CAAC;IAEZ,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,WAAW,EAAE,OAAO,EAAE,EAAE,CAAC;QACvD,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,EAAE,EAAE,EAAE,SAAS,CAAC,CAAC;YAEnD,uFAAuF;YACvF,IAAI,QAAQ,CAAC,EAAE,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;gBAC3C,OAAO;YACT,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,WAAW,GAAG,KAAc,CAAC;YAEnC,sDAAsD;YACtD,IACE,WAAW,CAAC,KAAK;gBACjB,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,EAC1D,CAAC;gBACD,MAAM,KAAK,CAAC,OAAO,CAAC,CAAC;gBACrB,SAAS;YACX,CAAC;YAED,2CAA2C;YAC3C,IAAI,WAAW,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;gBACtC,MAAM,KAAK,CAAC,OAAO,CAAC,CAAC;gBACrB,SAAS;YACX,CAAC;YAED,0EAA0E;YAC1E,OAAO;QACT,CAAC;QAED,2CAA2C;QAC3C,MAAM,KAAK,CAAC,OAAO,CAAC,CAAC;IACvB,CAAC;IAED,MAAM,IAAI,KAAK,CACb,cAAc,GAAG,iCAAiC,WAAW,WAAW,CACzE,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,KAAK,UAAU,KAAK,CAAC,EAAU;IAC7B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAC3D,CAAC","sourcesContent":["import { fetchWithTimeout } from './fetch.js';\n\n/**\n * Options for waitForServiceReady\n */\nexport type WaitForServiceReadyOptions = {\n /**\n * Maximum number of attempts to check service readiness\n *\n * @default 10\n */\n maxAttempts?: number;\n\n /**\n * Delay in milliseconds between attempts\n *\n * @default 500\n */\n delayMs?: number;\n\n /**\n * Custom fetch function (useful for testing or custom timeout behavior)\n *\n * @default fetchWithTimeout\n */\n fetchFn?: typeof fetch;\n\n /**\n * Timeout in milliseconds for each fetch attempt\n *\n * @default 3000\n */\n timeoutMs?: number;\n};\n\n/**\n * Wait for a service to become ready by polling an endpoint\n *\n * Repeatedly attempts to fetch from the given URL until either:\n * - The service responds with a successful status (2xx or 503)\n * - Maximum attempts are reached (throws error)\n *\n * @param url - The URL to poll for service readiness\n * @param options - Configuration options\n * @throws Error if service doesn't become ready within maxAttempts\n *\n * @example\n * ```typescript\n * // Wait for fixture server to be ready\n * await waitForServiceReady('http://localhost:12345/state.json', {\n * maxAttempts: 10,\n * delayMs: 500,\n * timeoutMs: 3000,\n * });\n * ```\n *\n * @example\n * ```typescript\n * // With custom fetch function\n * await waitForServiceReady('http://localhost:8545', {\n * fetchFn: customFetch,\n * maxAttempts: 5,\n * });\n * ```\n */\nexport async function waitForServiceReady(\n url: string,\n options: WaitForServiceReadyOptions = {},\n): Promise<void> {\n const {\n maxAttempts = 10,\n delayMs = 500,\n fetchFn = fetchWithTimeout,\n timeoutMs = 3000,\n } = options;\n\n for (let attempt = 0; attempt < maxAttempts; attempt++) {\n try {\n const response = await fetchFn(url, {}, timeoutMs);\n\n // Service is ready if it responds with 2xx or 503 (service unavailable but responding)\n if (response.ok || response.status === 503) {\n return;\n }\n } catch (error) {\n const caughtError = error as Error;\n\n // Connection refused - service not yet started, retry\n if (\n caughtError.cause &&\n JSON.stringify(caughtError.cause).includes('ECONNREFUSED')\n ) {\n await delay(delayMs);\n continue;\n }\n\n // Timeout - service slow to respond, retry\n if (caughtError.name === 'AbortError') {\n await delay(delayMs);\n continue;\n }\n\n // Other errors (e.g., self-signed cert accepted) - consider service ready\n return;\n }\n\n // Response received but not ok/503 - retry\n await delay(delayMs);\n }\n\n throw new Error(\n `Service at ${url} failed to become ready after ${maxAttempts} attempts`,\n );\n}\n\n/**\n * Delay helper function.\n *\n * @param ms - The delay in milliseconds.\n * @returns A promise that resolves after the delay.\n */\nasync function delay(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n"]}
|
package/package.json
ADDED
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@metamask/client-mcp-core",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "MCP server for MetaMask Extension visual testing with LLM agents",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"mcp",
|
|
7
|
+
"playwright",
|
|
8
|
+
"llm",
|
|
9
|
+
"visual-testing",
|
|
10
|
+
"browser-extension"
|
|
11
|
+
],
|
|
12
|
+
"homepage": "https://github.com/MetaMask/client-mcp-core#readme",
|
|
13
|
+
"bugs": {
|
|
14
|
+
"url": "https://github.com/MetaMask/client-mcp-core/issues"
|
|
15
|
+
},
|
|
16
|
+
"repository": {
|
|
17
|
+
"type": "git",
|
|
18
|
+
"url": "https://github.com/MetaMask/client-mcp-core.git"
|
|
19
|
+
},
|
|
20
|
+
"license": "(MIT OR Apache-2.0)",
|
|
21
|
+
"sideEffects": false,
|
|
22
|
+
"exports": {
|
|
23
|
+
".": {
|
|
24
|
+
"import": {
|
|
25
|
+
"types": "./dist/index.d.mts",
|
|
26
|
+
"default": "./dist/index.mjs"
|
|
27
|
+
},
|
|
28
|
+
"require": {
|
|
29
|
+
"types": "./dist/index.d.cts",
|
|
30
|
+
"default": "./dist/index.cjs"
|
|
31
|
+
}
|
|
32
|
+
},
|
|
33
|
+
"./package.json": "./package.json"
|
|
34
|
+
},
|
|
35
|
+
"main": "./dist/index.cjs",
|
|
36
|
+
"module": "./dist/index.mjs",
|
|
37
|
+
"types": "./dist/index.d.cts",
|
|
38
|
+
"files": [
|
|
39
|
+
"dist"
|
|
40
|
+
],
|
|
41
|
+
"scripts": {
|
|
42
|
+
"build": "ts-bridge --project tsconfig.build.json --clean",
|
|
43
|
+
"build:docs": "typedoc",
|
|
44
|
+
"lint": "yarn lint:eslint && yarn lint:constraints && yarn lint:misc --check && yarn lint:dependencies --check && yarn lint:changelog",
|
|
45
|
+
"lint:changelog": "auto-changelog validate --prettier",
|
|
46
|
+
"lint:constraints": "yarn constraints",
|
|
47
|
+
"lint:dependencies": "depcheck && yarn dedupe --check",
|
|
48
|
+
"lint:dependencies:fix": "depcheck && yarn dedupe",
|
|
49
|
+
"lint:eslint": "eslint .",
|
|
50
|
+
"lint:fix": "yarn lint:eslint --fix && yarn lint:constraints --fix && yarn lint:misc --write && yarn lint:dependencies:fix && yarn lint:changelog",
|
|
51
|
+
"lint:misc": "prettier '**/*.json' '**/*.md' '**/*.yml' '!.yarnrc.yml' --ignore-path .gitignore --no-error-on-unmatched-pattern",
|
|
52
|
+
"prepack": "./scripts/prepack.sh",
|
|
53
|
+
"test": "vitest && attw --pack",
|
|
54
|
+
"test:watch": "vitest --watch"
|
|
55
|
+
},
|
|
56
|
+
"resolutions": {
|
|
57
|
+
"@isaacs/brace-expansion": "5.0.1"
|
|
58
|
+
},
|
|
59
|
+
"dependencies": {
|
|
60
|
+
"@modelcontextprotocol/sdk": "^1.26.0",
|
|
61
|
+
"zod": "^4.3.5"
|
|
62
|
+
},
|
|
63
|
+
"devDependencies": {
|
|
64
|
+
"@arethetypeswrong/cli": "^0.15.3",
|
|
65
|
+
"@lavamoat/allow-scripts": "^3.0.4",
|
|
66
|
+
"@lavamoat/preinstall-always-fail": "^2.0.0",
|
|
67
|
+
"@metamask/auto-changelog": "^5.3.0",
|
|
68
|
+
"@metamask/eslint-config": "^15.0.0",
|
|
69
|
+
"@metamask/eslint-config-nodejs": "^15.0.0",
|
|
70
|
+
"@metamask/eslint-config-typescript": "^15.0.0",
|
|
71
|
+
"@metamask/eslint-config-vitest": "^15.0.0",
|
|
72
|
+
"@playwright/test": "^1.49.0",
|
|
73
|
+
"@ts-bridge/cli": "^0.6.3",
|
|
74
|
+
"@types/node": "^20.0.0",
|
|
75
|
+
"@typescript-eslint/utils": "^8.6.0",
|
|
76
|
+
"@vitest/coverage-istanbul": "^3.0.7",
|
|
77
|
+
"@vitest/eslint-plugin": "^1.1.4",
|
|
78
|
+
"@yarnpkg/types": "^4.0.0-rc.52",
|
|
79
|
+
"depcheck": "^1.4.3",
|
|
80
|
+
"eslint": "^9.11.0",
|
|
81
|
+
"eslint-config-prettier": "^9.1.0",
|
|
82
|
+
"eslint-import-resolver-typescript": "^3.6.3",
|
|
83
|
+
"eslint-plugin-import-x": "^4.3.0",
|
|
84
|
+
"eslint-plugin-jsdoc": "^50.2.4",
|
|
85
|
+
"eslint-plugin-n": "^17.10.3",
|
|
86
|
+
"eslint-plugin-prettier": "^5.2.1",
|
|
87
|
+
"eslint-plugin-promise": "^7.1.0",
|
|
88
|
+
"playwright": "^1.49.0",
|
|
89
|
+
"prettier": "^3.3.3",
|
|
90
|
+
"prettier-plugin-packagejson": "^2.5.8",
|
|
91
|
+
"ts-node": "^10.7.0",
|
|
92
|
+
"typedoc": "^0.26.11",
|
|
93
|
+
"typescript": "~5.7.3",
|
|
94
|
+
"typescript-eslint": "^8.48.1",
|
|
95
|
+
"vite": "^6.4.1",
|
|
96
|
+
"vitest": "^3.0.7"
|
|
97
|
+
},
|
|
98
|
+
"peerDependencies": {
|
|
99
|
+
"@playwright/test": "^1.49.0",
|
|
100
|
+
"playwright": "^1.49.0"
|
|
101
|
+
},
|
|
102
|
+
"packageManager": "yarn@4.11.0",
|
|
103
|
+
"engines": {
|
|
104
|
+
"node": "^20 || ^22 || >=24"
|
|
105
|
+
},
|
|
106
|
+
"publishConfig": {
|
|
107
|
+
"access": "public",
|
|
108
|
+
"registry": "https://registry.npmjs.org/"
|
|
109
|
+
},
|
|
110
|
+
"lavamoat": {
|
|
111
|
+
"allowScripts": {
|
|
112
|
+
"@lavamoat/preinstall-always-fail": false,
|
|
113
|
+
"eslint-plugin-import-x>unrs-resolver": false,
|
|
114
|
+
"vite>esbuild": false,
|
|
115
|
+
"vitest>vite-node>vite>esbuild": false,
|
|
116
|
+
"vitest>vite>esbuild": false
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
}
|