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