@digital-science-dsl/dimensions-analytics-mcp 0.5.3
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 +61 -0
- package/README.md +152 -0
- package/bin/dimensions-analytics-mcp-http.js +2 -0
- package/bin/dimensions-analytics-mcp.js +2 -0
- package/dist/client/auth/config-loaders.d.ts +22 -0
- package/dist/client/auth/config-loaders.d.ts.map +1 -0
- package/dist/client/auth/config-loaders.js +68 -0
- package/dist/client/auth/config-loaders.js.map +1 -0
- package/dist/client/auth/decorators/index.d.ts +7 -0
- package/dist/client/auth/decorators/index.d.ts.map +1 -0
- package/dist/client/auth/decorators/index.js +6 -0
- package/dist/client/auth/decorators/index.js.map +1 -0
- package/dist/client/auth/decorators/with-caching.d.ts +81 -0
- package/dist/client/auth/decorators/with-caching.d.ts.map +1 -0
- package/dist/client/auth/decorators/with-caching.js +168 -0
- package/dist/client/auth/decorators/with-caching.js.map +1 -0
- package/dist/client/auth/factory.d.ts +13 -0
- package/dist/client/auth/factory.d.ts.map +1 -0
- package/dist/client/auth/factory.js +29 -0
- package/dist/client/auth/factory.js.map +1 -0
- package/dist/client/auth/index.d.ts +7 -0
- package/dist/client/auth/index.d.ts.map +1 -0
- package/dist/client/auth/index.js +6 -0
- package/dist/client/auth/index.js.map +1 -0
- package/dist/client/auth/jwt-utils.d.ts +17 -0
- package/dist/client/auth/jwt-utils.d.ts.map +1 -0
- package/dist/client/auth/jwt-utils.js +33 -0
- package/dist/client/auth/jwt-utils.js.map +1 -0
- package/dist/client/auth/node.d.ts +16 -0
- package/dist/client/auth/node.d.ts.map +1 -0
- package/dist/client/auth/node.js +15 -0
- package/dist/client/auth/node.js.map +1 -0
- package/dist/client/auth/providers/index.d.ts +2 -0
- package/dist/client/auth/providers/index.d.ts.map +1 -0
- package/dist/client/auth/providers/index.js +2 -0
- package/dist/client/auth/providers/index.js.map +1 -0
- package/dist/client/auth/providers/jwt-auth-provider.d.ts +70 -0
- package/dist/client/auth/providers/jwt-auth-provider.d.ts.map +1 -0
- package/dist/client/auth/providers/jwt-auth-provider.js +134 -0
- package/dist/client/auth/providers/jwt-auth-provider.js.map +1 -0
- package/dist/client/auth/schemas.d.ts +19 -0
- package/dist/client/auth/schemas.d.ts.map +1 -0
- package/dist/client/auth/schemas.js +23 -0
- package/dist/client/auth/schemas.js.map +1 -0
- package/dist/client/auth/types.d.ts +25 -0
- package/dist/client/auth/types.d.ts.map +1 -0
- package/dist/client/auth/types.js +9 -0
- package/dist/client/auth/types.js.map +1 -0
- package/dist/client/command.d.ts +44 -0
- package/dist/client/command.d.ts.map +1 -0
- package/dist/client/command.js +23 -0
- package/dist/client/command.js.map +1 -0
- package/dist/client/config/index.d.ts +11 -0
- package/dist/client/config/index.d.ts.map +1 -0
- package/dist/client/config/index.js +8 -0
- package/dist/client/config/index.js.map +1 -0
- package/dist/client/config/loader.d.ts +27 -0
- package/dist/client/config/loader.d.ts.map +1 -0
- package/dist/client/config/loader.js +128 -0
- package/dist/client/config/loader.js.map +1 -0
- package/dist/client/config/node.d.ts +18 -0
- package/dist/client/config/node.d.ts.map +1 -0
- package/dist/client/config/node.js +17 -0
- package/dist/client/config/node.js.map +1 -0
- package/dist/client/config/schemas.d.ts +23 -0
- package/dist/client/config/schemas.d.ts.map +1 -0
- package/dist/client/config/schemas.js +24 -0
- package/dist/client/config/schemas.js.map +1 -0
- package/dist/client/config/types.d.ts +37 -0
- package/dist/client/config/types.d.ts.map +1 -0
- package/dist/client/config/types.js +6 -0
- package/dist/client/config/types.js.map +1 -0
- package/dist/client/config/unified-loader.d.ts +41 -0
- package/dist/client/config/unified-loader.d.ts.map +1 -0
- package/dist/client/config/unified-loader.js +86 -0
- package/dist/client/config/unified-loader.js.map +1 -0
- package/dist/client/config.d.ts +43 -0
- package/dist/client/config.d.ts.map +1 -0
- package/dist/client/config.js +56 -0
- package/dist/client/config.js.map +1 -0
- package/dist/client/deployment-config.d.ts +36 -0
- package/dist/client/deployment-config.d.ts.map +1 -0
- package/dist/client/deployment-config.js +79 -0
- package/dist/client/deployment-config.js.map +1 -0
- package/dist/client/errors.d.ts +180 -0
- package/dist/client/errors.d.ts.map +1 -0
- package/dist/client/errors.js +253 -0
- package/dist/client/errors.js.map +1 -0
- package/dist/client/http-client.d.ts +215 -0
- package/dist/client/http-client.d.ts.map +1 -0
- package/dist/client/http-client.js +419 -0
- package/dist/client/http-client.js.map +1 -0
- package/dist/client/index.d.ts +28 -0
- package/dist/client/index.d.ts.map +1 -0
- package/dist/client/index.js +18 -0
- package/dist/client/index.js.map +1 -0
- package/dist/client/internal-dsl-client.d.ts +30 -0
- package/dist/client/internal-dsl-client.d.ts.map +1 -0
- package/dist/client/internal-dsl-client.js +101 -0
- package/dist/client/internal-dsl-client.js.map +1 -0
- package/dist/client/rate-limiter.d.ts +79 -0
- package/dist/client/rate-limiter.d.ts.map +1 -0
- package/dist/client/rate-limiter.js +118 -0
- package/dist/client/rate-limiter.js.map +1 -0
- package/dist/client/resolve-api-key-user.d.ts +24 -0
- package/dist/client/resolve-api-key-user.d.ts.map +1 -0
- package/dist/client/resolve-api-key-user.js +80 -0
- package/dist/client/resolve-api-key-user.js.map +1 -0
- package/dist/client/types.d.ts +44 -0
- package/dist/client/types.d.ts.map +1 -0
- package/dist/client/types.js +10 -0
- package/dist/client/types.js.map +1 -0
- package/dist/dsl/client.d.ts +330 -0
- package/dist/dsl/client.d.ts.map +1 -0
- package/dist/dsl/client.js +433 -0
- package/dist/dsl/client.js.map +1 -0
- package/dist/dsl/commands/apply-filters.d.ts +15 -0
- package/dist/dsl/commands/apply-filters.d.ts.map +1 -0
- package/dist/dsl/commands/apply-filters.js +29 -0
- package/dist/dsl/commands/apply-filters.js.map +1 -0
- package/dist/dsl/commands/facet/index.d.ts +6 -0
- package/dist/dsl/commands/facet/index.d.ts.map +1 -0
- package/dist/dsl/commands/facet/index.js +6 -0
- package/dist/dsl/commands/facet/index.js.map +1 -0
- package/dist/dsl/commands/facet/schemas.d.ts +71 -0
- package/dist/dsl/commands/facet/schemas.d.ts.map +1 -0
- package/dist/dsl/commands/facet/schemas.js +84 -0
- package/dist/dsl/commands/facet/schemas.js.map +1 -0
- package/dist/dsl/commands/functions/ClassifyCommand.d.ts +96 -0
- package/dist/dsl/commands/functions/ClassifyCommand.d.ts.map +1 -0
- package/dist/dsl/commands/functions/ClassifyCommand.js +95 -0
- package/dist/dsl/commands/functions/ClassifyCommand.js.map +1 -0
- package/dist/dsl/commands/functions/ExtractAffiliationsCommand.d.ts +86 -0
- package/dist/dsl/commands/functions/ExtractAffiliationsCommand.d.ts.map +1 -0
- package/dist/dsl/commands/functions/ExtractAffiliationsCommand.js +131 -0
- package/dist/dsl/commands/functions/ExtractAffiliationsCommand.js.map +1 -0
- package/dist/dsl/commands/functions/ExtractConceptsCommand.d.ts +73 -0
- package/dist/dsl/commands/functions/ExtractConceptsCommand.d.ts.map +1 -0
- package/dist/dsl/commands/functions/ExtractConceptsCommand.js +110 -0
- package/dist/dsl/commands/functions/ExtractConceptsCommand.js.map +1 -0
- package/dist/dsl/commands/functions/ExtractGrantsCommand.d.ts +66 -0
- package/dist/dsl/commands/functions/ExtractGrantsCommand.d.ts.map +1 -0
- package/dist/dsl/commands/functions/ExtractGrantsCommand.js +87 -0
- package/dist/dsl/commands/functions/ExtractGrantsCommand.js.map +1 -0
- package/dist/dsl/commands/functions/index.d.ts +10 -0
- package/dist/dsl/commands/functions/index.d.ts.map +1 -0
- package/dist/dsl/commands/functions/index.js +10 -0
- package/dist/dsl/commands/functions/index.js.map +1 -0
- package/dist/dsl/commands/index.d.ts +8 -0
- package/dist/dsl/commands/index.d.ts.map +1 -0
- package/dist/dsl/commands/index.js +7 -0
- package/dist/dsl/commands/index.js.map +1 -0
- package/dist/dsl/commands/validate-input.d.ts +18 -0
- package/dist/dsl/commands/validate-input.d.ts.map +1 -0
- package/dist/dsl/commands/validate-input.js +27 -0
- package/dist/dsl/commands/validate-input.js.map +1 -0
- package/dist/dsl/create-client.d.ts +32 -0
- package/dist/dsl/create-client.d.ts.map +1 -0
- package/dist/dsl/create-client.js +58 -0
- package/dist/dsl/create-client.js.map +1 -0
- package/dist/dsl/fluent-query-builder.d.ts +439 -0
- package/dist/dsl/fluent-query-builder.d.ts.map +1 -0
- package/dist/dsl/fluent-query-builder.js +534 -0
- package/dist/dsl/fluent-query-builder.js.map +1 -0
- package/dist/dsl/index.d.ts +32 -0
- package/dist/dsl/index.d.ts.map +1 -0
- package/dist/dsl/index.js +31 -0
- package/dist/dsl/index.js.map +1 -0
- package/dist/dsl/pagination.d.ts +82 -0
- package/dist/dsl/pagination.d.ts.map +1 -0
- package/dist/dsl/pagination.js +135 -0
- package/dist/dsl/pagination.js.map +1 -0
- package/dist/dsl/query-builder.d.ts +456 -0
- package/dist/dsl/query-builder.d.ts.map +1 -0
- package/dist/dsl/query-builder.js +994 -0
- package/dist/dsl/query-builder.js.map +1 -0
- package/dist/dsl/response-parser.d.ts +111 -0
- package/dist/dsl/response-parser.d.ts.map +1 -0
- package/dist/dsl/response-parser.js +210 -0
- package/dist/dsl/response-parser.js.map +1 -0
- package/dist/dsl/schema/cache.d.ts +52 -0
- package/dist/dsl/schema/cache.d.ts.map +1 -0
- package/dist/dsl/schema/cache.js +97 -0
- package/dist/dsl/schema/cache.js.map +1 -0
- package/dist/dsl/schema/extract.d.ts +18 -0
- package/dist/dsl/schema/extract.d.ts.map +1 -0
- package/dist/dsl/schema/extract.js +41 -0
- package/dist/dsl/schema/extract.js.map +1 -0
- package/dist/dsl/schema/index.d.ts +13 -0
- package/dist/dsl/schema/index.d.ts.map +1 -0
- package/dist/dsl/schema/index.js +12 -0
- package/dist/dsl/schema/index.js.map +1 -0
- package/dist/dsl/schema/load.d.ts +41 -0
- package/dist/dsl/schema/load.d.ts.map +1 -0
- package/dist/dsl/schema/load.js +119 -0
- package/dist/dsl/schema/load.js.map +1 -0
- package/dist/dsl/schema/store.d.ts +137 -0
- package/dist/dsl/schema/store.d.ts.map +1 -0
- package/dist/dsl/schema/store.js +204 -0
- package/dist/dsl/schema/store.js.map +1 -0
- package/dist/dsl/schema/structured-entities.d.ts +21 -0
- package/dist/dsl/schema/structured-entities.d.ts.map +1 -0
- package/dist/dsl/schema/structured-entities.js +39 -0
- package/dist/dsl/schema/structured-entities.js.map +1 -0
- package/dist/dsl/schema/summary.d.ts +51 -0
- package/dist/dsl/schema/summary.d.ts.map +1 -0
- package/dist/dsl/schema/summary.js +61 -0
- package/dist/dsl/schema/summary.js.map +1 -0
- package/dist/dsl/schema/types.d.ts +36 -0
- package/dist/dsl/schema/types.d.ts.map +1 -0
- package/dist/dsl/schema/types.js +6 -0
- package/dist/dsl/schema/types.js.map +1 -0
- package/dist/dsl/schema/validation.d.ts +21 -0
- package/dist/dsl/schema/validation.d.ts.map +1 -0
- package/dist/dsl/schema/validation.js +44 -0
- package/dist/dsl/schema/validation.js.map +1 -0
- package/dist/dsl/types/buckets.d.ts +18 -0
- package/dist/dsl/types/buckets.d.ts.map +1 -0
- package/dist/dsl/types/buckets.js +6 -0
- package/dist/dsl/types/buckets.js.map +1 -0
- package/dist/dsl/types/common.d.ts +91 -0
- package/dist/dsl/types/common.d.ts.map +1 -0
- package/dist/dsl/types/common.js +6 -0
- package/dist/dsl/types/common.js.map +1 -0
- package/dist/dsl/types/entities.d.ts +35 -0
- package/dist/dsl/types/entities.d.ts.map +1 -0
- package/dist/dsl/types/entities.js +11 -0
- package/dist/dsl/types/entities.js.map +1 -0
- package/dist/dsl/types/index.d.ts +12 -0
- package/dist/dsl/types/index.d.ts.map +1 -0
- package/dist/dsl/types/index.js +7 -0
- package/dist/dsl/types/index.js.map +1 -0
- package/dist/dsl/types/return-clauses.d.ts +107 -0
- package/dist/dsl/types/return-clauses.d.ts.map +1 -0
- package/dist/dsl/types/return-clauses.js +22 -0
- package/dist/dsl/types/return-clauses.js.map +1 -0
- package/dist/dsl/types/special-functions.d.ts +175 -0
- package/dist/dsl/types/special-functions.d.ts.map +1 -0
- package/dist/dsl/types/special-functions.js +25 -0
- package/dist/dsl/types/special-functions.js.map +1 -0
- package/dist/dsl/types/vocabulary.d.ts +21 -0
- package/dist/dsl/types/vocabulary.d.ts.map +1 -0
- package/dist/dsl/types/vocabulary.js +44 -0
- package/dist/dsl/types/vocabulary.js.map +1 -0
- package/dist/dsl/usage-policy.d.ts +87 -0
- package/dist/dsl/usage-policy.d.ts.map +1 -0
- package/dist/dsl/usage-policy.js +133 -0
- package/dist/dsl/usage-policy.js.map +1 -0
- package/dist/dsl/utils/escape.d.ts +24 -0
- package/dist/dsl/utils/escape.d.ts.map +1 -0
- package/dist/dsl/utils/escape.js +124 -0
- package/dist/dsl/utils/escape.js.map +1 -0
- package/dist/dsl/utils/sanitize.d.ts +13 -0
- package/dist/dsl/utils/sanitize.d.ts.map +1 -0
- package/dist/dsl/utils/sanitize.js +19 -0
- package/dist/dsl/utils/sanitize.js.map +1 -0
- package/dist/dsl/utils/string-utils.d.ts +35 -0
- package/dist/dsl/utils/string-utils.d.ts.map +1 -0
- package/dist/dsl/utils/string-utils.js +145 -0
- package/dist/dsl/utils/string-utils.js.map +1 -0
- package/dist/dsl/utils/validate-field-name.d.ts +11 -0
- package/dist/dsl/utils/validate-field-name.d.ts.map +1 -0
- package/dist/dsl/utils/validate-field-name.js +18 -0
- package/dist/dsl/utils/validate-field-name.js.map +1 -0
- package/dist/examples/dsl-examples.d.ts +11 -0
- package/dist/examples/dsl-examples.d.ts.map +1 -0
- package/dist/examples/dsl-examples.js +49 -0
- package/dist/examples/dsl-examples.js.map +1 -0
- package/dist/examples/usage-scenarios.d.ts +22 -0
- package/dist/examples/usage-scenarios.d.ts.map +1 -0
- package/dist/examples/usage-scenarios.js +173 -0
- package/dist/examples/usage-scenarios.js.map +1 -0
- package/dist/funder-org-names.d.ts +12 -0
- package/dist/funder-org-names.d.ts.map +1 -0
- package/dist/funder-org-names.js +30 -0
- package/dist/funder-org-names.js.map +1 -0
- package/dist/http-main.d.ts +7 -0
- package/dist/http-main.d.ts.map +1 -0
- package/dist/http-main.js +36 -0
- package/dist/http-main.js.map +1 -0
- package/dist/http.d.ts +29 -0
- package/dist/http.d.ts.map +1 -0
- package/dist/http.js +173 -0
- package/dist/http.js.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -0
- package/dist/kwq/build-query.d.ts +26 -0
- package/dist/kwq/build-query.d.ts.map +1 -0
- package/dist/kwq/build-query.js +37 -0
- package/dist/kwq/build-query.js.map +1 -0
- package/dist/kwq/concept-groups.d.ts +49 -0
- package/dist/kwq/concept-groups.d.ts.map +1 -0
- package/dist/kwq/concept-groups.js +55 -0
- package/dist/kwq/concept-groups.js.map +1 -0
- package/dist/kwq/dsl-assembler.d.ts +28 -0
- package/dist/kwq/dsl-assembler.d.ts.map +1 -0
- package/dist/kwq/dsl-assembler.js +124 -0
- package/dist/kwq/dsl-assembler.js.map +1 -0
- package/dist/kwq/ensemble.d.ts +38 -0
- package/dist/kwq/ensemble.d.ts.map +1 -0
- package/dist/kwq/ensemble.js +107 -0
- package/dist/kwq/ensemble.js.map +1 -0
- package/dist/kwq/index.d.ts +16 -0
- package/dist/kwq/index.d.ts.map +1 -0
- package/dist/kwq/index.js +14 -0
- package/dist/kwq/index.js.map +1 -0
- package/dist/kwq/types.d.ts +120 -0
- package/dist/kwq/types.d.ts.map +1 -0
- package/dist/kwq/types.js +11 -0
- package/dist/kwq/types.js.map +1 -0
- package/dist/lambda.d.ts +10 -0
- package/dist/lambda.d.ts.map +1 -0
- package/dist/lambda.js +4 -0
- package/dist/lambda.js.map +1 -0
- package/dist/main.d.ts +8 -0
- package/dist/main.d.ts.map +1 -0
- package/dist/main.js +33 -0
- package/dist/main.js.map +1 -0
- package/dist/mcp/batch-fetch.d.ts +89 -0
- package/dist/mcp/batch-fetch.d.ts.map +1 -0
- package/dist/mcp/batch-fetch.js +178 -0
- package/dist/mcp/batch-fetch.js.map +1 -0
- package/dist/mcp/examples/dsl-examples.d.ts +21 -0
- package/dist/mcp/examples/dsl-examples.d.ts.map +1 -0
- package/dist/mcp/examples/dsl-examples.js +61 -0
- package/dist/mcp/examples/dsl-examples.js.map +1 -0
- package/dist/mcp/examples/usage-scenarios.d.ts +20 -0
- package/dist/mcp/examples/usage-scenarios.d.ts.map +1 -0
- package/dist/mcp/examples/usage-scenarios.js +169 -0
- package/dist/mcp/examples/usage-scenarios.js.map +1 -0
- package/dist/mcp/export-format.d.ts +43 -0
- package/dist/mcp/export-format.d.ts.map +1 -0
- package/dist/mcp/export-format.js +92 -0
- package/dist/mcp/export-format.js.map +1 -0
- package/dist/mcp/funder-org-names.d.ts +12 -0
- package/dist/mcp/funder-org-names.d.ts.map +1 -0
- package/dist/mcp/funder-org-names.js +30 -0
- package/dist/mcp/funder-org-names.js.map +1 -0
- package/dist/mcp/http-server.d.ts +20 -0
- package/dist/mcp/http-server.d.ts.map +1 -0
- package/dist/mcp/http-server.js +118 -0
- package/dist/mcp/http-server.js.map +1 -0
- package/dist/mcp/middleware/field-aliases.d.ts +97 -0
- package/dist/mcp/middleware/field-aliases.d.ts.map +1 -0
- package/dist/mcp/middleware/field-aliases.js +208 -0
- package/dist/mcp/middleware/field-aliases.js.map +1 -0
- package/dist/mcp/resources/schema.d.ts +13 -0
- package/dist/mcp/resources/schema.d.ts.map +1 -0
- package/dist/mcp/resources/schema.js +262 -0
- package/dist/mcp/resources/schema.js.map +1 -0
- package/dist/mcp/schema/context.d.ts +10 -0
- package/dist/mcp/schema/context.d.ts.map +1 -0
- package/dist/mcp/schema/context.js +6 -0
- package/dist/mcp/schema/context.js.map +1 -0
- package/dist/mcp/schema/index.d.ts +8 -0
- package/dist/mcp/schema/index.d.ts.map +1 -0
- package/dist/mcp/schema/index.js +6 -0
- package/dist/mcp/schema/index.js.map +1 -0
- package/dist/mcp/server.d.ts +56 -0
- package/dist/mcp/server.d.ts.map +1 -0
- package/dist/mcp/server.js +168 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/mcp/shared-schema.d.ts +13 -0
- package/dist/mcp/shared-schema.d.ts.map +1 -0
- package/dist/mcp/shared-schema.js +28 -0
- package/dist/mcp/shared-schema.js.map +1 -0
- package/dist/mcp/tools/analytics-filters.d.ts +18 -0
- package/dist/mcp/tools/analytics-filters.d.ts.map +1 -0
- package/dist/mcp/tools/analytics-filters.js +35 -0
- package/dist/mcp/tools/analytics-filters.js.map +1 -0
- package/dist/mcp/tools/analytics.d.ts +16 -0
- package/dist/mcp/tools/analytics.d.ts.map +1 -0
- package/dist/mcp/tools/analytics.js +381 -0
- package/dist/mcp/tools/analytics.js.map +1 -0
- package/dist/mcp/tools/concept-profile.d.ts +14 -0
- package/dist/mcp/tools/concept-profile.d.ts.map +1 -0
- package/dist/mcp/tools/concept-profile.js +130 -0
- package/dist/mcp/tools/concept-profile.js.map +1 -0
- package/dist/mcp/tools/dataset-profile.d.ts +15 -0
- package/dist/mcp/tools/dataset-profile.d.ts.map +1 -0
- package/dist/mcp/tools/dataset-profile.js +194 -0
- package/dist/mcp/tools/dataset-profile.js.map +1 -0
- package/dist/mcp/tools/fetch-search-pages.d.ts +15 -0
- package/dist/mcp/tools/fetch-search-pages.d.ts.map +1 -0
- package/dist/mcp/tools/fetch-search-pages.js +237 -0
- package/dist/mcp/tools/fetch-search-pages.js.map +1 -0
- package/dist/mcp/tools/functions.d.ts +14 -0
- package/dist/mcp/tools/functions.d.ts.map +1 -0
- package/dist/mcp/tools/functions.js +87 -0
- package/dist/mcp/tools/functions.js.map +1 -0
- package/dist/mcp/tools/impact-chain.d.ts +15 -0
- package/dist/mcp/tools/impact-chain.d.ts.map +1 -0
- package/dist/mcp/tools/impact-chain.js +96 -0
- package/dist/mcp/tools/impact-chain.js.map +1 -0
- package/dist/mcp/tools/kwq.d.ts +19 -0
- package/dist/mcp/tools/kwq.d.ts.map +1 -0
- package/dist/mcp/tools/kwq.js +156 -0
- package/dist/mcp/tools/kwq.js.map +1 -0
- package/dist/mcp/tools/lookup.d.ts +14 -0
- package/dist/mcp/tools/lookup.d.ts.map +1 -0
- package/dist/mcp/tools/lookup.js +146 -0
- package/dist/mcp/tools/lookup.js.map +1 -0
- package/dist/mcp/tools/policy-profile.d.ts +15 -0
- package/dist/mcp/tools/policy-profile.d.ts.map +1 -0
- package/dist/mcp/tools/policy-profile.js +174 -0
- package/dist/mcp/tools/policy-profile.js.map +1 -0
- package/dist/mcp/tools/profile.d.ts +14 -0
- package/dist/mcp/tools/profile.d.ts.map +1 -0
- package/dist/mcp/tools/profile.js +349 -0
- package/dist/mcp/tools/profile.js.map +1 -0
- package/dist/mcp/tools/query.d.ts +16 -0
- package/dist/mcp/tools/query.d.ts.map +1 -0
- package/dist/mcp/tools/query.js +75 -0
- package/dist/mcp/tools/query.js.map +1 -0
- package/dist/mcp/tools/schema.d.ts +23 -0
- package/dist/mcp/tools/schema.d.ts.map +1 -0
- package/dist/mcp/tools/schema.js +124 -0
- package/dist/mcp/tools/schema.js.map +1 -0
- package/dist/mcp/tools/search-entity-metadata.d.ts +18 -0
- package/dist/mcp/tools/search-entity-metadata.d.ts.map +1 -0
- package/dist/mcp/tools/search-entity-metadata.js +221 -0
- package/dist/mcp/tools/search-entity-metadata.js.map +1 -0
- package/dist/mcp/tools/search-input.d.ts +58 -0
- package/dist/mcp/tools/search-input.d.ts.map +1 -0
- package/dist/mcp/tools/search-input.js +76 -0
- package/dist/mcp/tools/search-input.js.map +1 -0
- package/dist/mcp/tools/search.d.ts +24 -0
- package/dist/mcp/tools/search.d.ts.map +1 -0
- package/dist/mcp/tools/search.js +115 -0
- package/dist/mcp/tools/search.js.map +1 -0
- package/dist/mcp/utils.d.ts +82 -0
- package/dist/mcp/utils.d.ts.map +1 -0
- package/dist/mcp/utils.js +126 -0
- package/dist/mcp/utils.js.map +1 -0
- package/dist/middleware/field-aliases.d.ts +97 -0
- package/dist/middleware/field-aliases.d.ts.map +1 -0
- package/dist/middleware/field-aliases.js +208 -0
- package/dist/middleware/field-aliases.js.map +1 -0
- package/dist/resources/schema.d.ts +13 -0
- package/dist/resources/schema.d.ts.map +1 -0
- package/dist/resources/schema.js +204 -0
- package/dist/resources/schema.js.map +1 -0
- package/dist/schema/context.d.ts +10 -0
- package/dist/schema/context.d.ts.map +1 -0
- package/dist/schema/context.js +6 -0
- package/dist/schema/context.js.map +1 -0
- package/dist/schema/index.d.ts +9 -0
- package/dist/schema/index.d.ts.map +1 -0
- package/dist/schema/index.js +6 -0
- package/dist/schema/index.js.map +1 -0
- package/dist/schema/load.d.ts +43 -0
- package/dist/schema/load.d.ts.map +1 -0
- package/dist/schema/load.js +139 -0
- package/dist/schema/load.js.map +1 -0
- package/dist/schema/store.d.ts +112 -0
- package/dist/schema/store.d.ts.map +1 -0
- package/dist/schema/store.js +173 -0
- package/dist/schema/store.js.map +1 -0
- package/dist/schema/structured-entities.d.ts +21 -0
- package/dist/schema/structured-entities.d.ts.map +1 -0
- package/dist/schema/structured-entities.js +39 -0
- package/dist/schema/structured-entities.js.map +1 -0
- package/dist/schema/types.d.ts +36 -0
- package/dist/schema/types.d.ts.map +1 -0
- package/dist/schema/types.js +6 -0
- package/dist/schema/types.js.map +1 -0
- package/dist/server.d.ts +57 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +144 -0
- package/dist/server.js.map +1 -0
- package/dist/telemetry.d.ts +172 -0
- package/dist/telemetry.d.ts.map +1 -0
- package/dist/telemetry.js +233 -0
- package/dist/telemetry.js.map +1 -0
- package/dist/tools/analytics-filters.d.ts +18 -0
- package/dist/tools/analytics-filters.d.ts.map +1 -0
- package/dist/tools/analytics-filters.js +35 -0
- package/dist/tools/analytics-filters.js.map +1 -0
- package/dist/tools/analytics.d.ts +16 -0
- package/dist/tools/analytics.d.ts.map +1 -0
- package/dist/tools/analytics.js +381 -0
- package/dist/tools/analytics.js.map +1 -0
- package/dist/tools/concept-profile.d.ts +14 -0
- package/dist/tools/concept-profile.d.ts.map +1 -0
- package/dist/tools/concept-profile.js +130 -0
- package/dist/tools/concept-profile.js.map +1 -0
- package/dist/tools/dataset-profile.d.ts +15 -0
- package/dist/tools/dataset-profile.d.ts.map +1 -0
- package/dist/tools/dataset-profile.js +194 -0
- package/dist/tools/dataset-profile.js.map +1 -0
- package/dist/tools/functions.d.ts +14 -0
- package/dist/tools/functions.d.ts.map +1 -0
- package/dist/tools/functions.js +294 -0
- package/dist/tools/functions.js.map +1 -0
- package/dist/tools/impact-chain.d.ts +15 -0
- package/dist/tools/impact-chain.d.ts.map +1 -0
- package/dist/tools/impact-chain.js +96 -0
- package/dist/tools/impact-chain.js.map +1 -0
- package/dist/tools/kwq.d.ts +19 -0
- package/dist/tools/kwq.d.ts.map +1 -0
- package/dist/tools/kwq.js +156 -0
- package/dist/tools/kwq.js.map +1 -0
- package/dist/tools/lookup.d.ts +14 -0
- package/dist/tools/lookup.d.ts.map +1 -0
- package/dist/tools/lookup.js +213 -0
- package/dist/tools/lookup.js.map +1 -0
- package/dist/tools/policy-profile.d.ts +15 -0
- package/dist/tools/policy-profile.d.ts.map +1 -0
- package/dist/tools/policy-profile.js +174 -0
- package/dist/tools/policy-profile.js.map +1 -0
- package/dist/tools/profile.d.ts +14 -0
- package/dist/tools/profile.d.ts.map +1 -0
- package/dist/tools/profile.js +349 -0
- package/dist/tools/profile.js.map +1 -0
- package/dist/tools/query.d.ts +16 -0
- package/dist/tools/query.d.ts.map +1 -0
- package/dist/tools/query.js +53 -0
- package/dist/tools/query.js.map +1 -0
- package/dist/tools/schema.d.ts +23 -0
- package/dist/tools/schema.d.ts.map +1 -0
- package/dist/tools/schema.js +124 -0
- package/dist/tools/schema.js.map +1 -0
- package/dist/tools/search-entity-metadata.d.ts +18 -0
- package/dist/tools/search-entity-metadata.d.ts.map +1 -0
- package/dist/tools/search-entity-metadata.js +221 -0
- package/dist/tools/search-entity-metadata.js.map +1 -0
- package/dist/tools/search.d.ts +23 -0
- package/dist/tools/search.d.ts.map +1 -0
- package/dist/tools/search.js +110 -0
- package/dist/tools/search.js.map +1 -0
- package/dist/tools/solr-fields.d.ts +39 -0
- package/dist/tools/solr-fields.d.ts.map +1 -0
- package/dist/tools/solr-fields.js +40 -0
- package/dist/tools/solr-fields.js.map +1 -0
- package/dist/utils.d.ts +70 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +104 -0
- package/dist/utils.js.map +1 -0
- package/package.json +41 -0
- package/src/client/auth/config-loaders.ts +81 -0
- package/src/client/auth/decorators/index.ts +7 -0
- package/src/client/auth/decorators/with-caching.ts +237 -0
- package/src/client/auth/factory.ts +34 -0
- package/src/client/auth/index.ts +6 -0
- package/src/client/auth/jwt-utils.ts +36 -0
- package/src/client/auth/node.ts +16 -0
- package/src/client/auth/providers/index.ts +1 -0
- package/src/client/auth/providers/jwt-auth-provider.ts +153 -0
- package/src/client/auth/schemas.ts +25 -0
- package/src/client/auth/types.ts +30 -0
- package/src/client/command.ts +54 -0
- package/src/client/config/index.ts +15 -0
- package/src/client/config/loader.ts +155 -0
- package/src/client/config/node.ts +22 -0
- package/src/client/config/schemas.ts +28 -0
- package/src/client/config/types.ts +39 -0
- package/src/client/config/unified-loader.ts +118 -0
- package/src/client/config.ts +69 -0
- package/src/client/deployment-config.ts +98 -0
- package/src/client/errors.ts +295 -0
- package/src/client/http-client.ts +577 -0
- package/src/client/index.ts +68 -0
- package/src/client/internal-dsl-client.ts +128 -0
- package/src/client/rate-limiter.ts +139 -0
- package/src/client/resolve-api-key-user.ts +99 -0
- package/src/client/types.ts +44 -0
- package/src/dsl/client.ts +538 -0
- package/src/dsl/commands/apply-filters.ts +35 -0
- package/src/dsl/commands/facet/index.ts +12 -0
- package/src/dsl/commands/facet/schemas.ts +101 -0
- package/src/dsl/commands/functions/ClassifyCommand.ts +129 -0
- package/src/dsl/commands/functions/ExtractAffiliationsCommand.ts +163 -0
- package/src/dsl/commands/functions/ExtractConceptsCommand.ts +141 -0
- package/src/dsl/commands/functions/ExtractGrantsCommand.ts +112 -0
- package/src/dsl/commands/functions/index.ts +31 -0
- package/src/dsl/commands/index.ts +29 -0
- package/src/dsl/commands/validate-input.ts +29 -0
- package/src/dsl/create-client.ts +80 -0
- package/src/dsl/fluent-query-builder.ts +684 -0
- package/src/dsl/index.ts +206 -0
- package/src/dsl/pagination.ts +202 -0
- package/src/dsl/query-builder.ts +1120 -0
- package/src/dsl/response-parser.ts +299 -0
- package/src/dsl/schema/cache.ts +124 -0
- package/src/dsl/schema/extract.ts +44 -0
- package/src/dsl/schema/index.ts +50 -0
- package/src/dsl/schema/load.ts +160 -0
- package/src/dsl/schema/store.ts +253 -0
- package/src/dsl/schema/structured-entities.ts +44 -0
- package/src/dsl/schema/summary.ts +94 -0
- package/src/dsl/schema/types.ts +40 -0
- package/src/dsl/schema/validation.ts +56 -0
- package/src/dsl/types/buckets.ts +22 -0
- package/src/dsl/types/common.ts +99 -0
- package/src/dsl/types/entities.ts +43 -0
- package/src/dsl/types/index.ts +63 -0
- package/src/dsl/types/return-clauses.ts +147 -0
- package/src/dsl/types/special-functions.ts +220 -0
- package/src/dsl/types/vocabulary.ts +82 -0
- package/src/dsl/usage-policy.ts +219 -0
- package/src/dsl/utils/escape.ts +123 -0
- package/src/dsl/utils/sanitize.ts +21 -0
- package/src/dsl/utils/string-utils.ts +147 -0
- package/src/dsl/utils/validate-field-name.ts +19 -0
- package/src/http-main.ts +41 -0
- package/src/index.ts +14 -0
- package/src/main.ts +40 -0
- package/src/mcp/batch-fetch.ts +255 -0
- package/src/mcp/examples/dsl-examples.ts +66 -0
- package/src/mcp/examples/usage-scenarios.ts +185 -0
- package/src/mcp/export-format.ts +113 -0
- package/src/mcp/funder-org-names.ts +30 -0
- package/src/mcp/http-server.ts +148 -0
- package/src/mcp/middleware/field-aliases.ts +274 -0
- package/src/mcp/resources/schema.ts +364 -0
- package/src/mcp/schema/context.ts +11 -0
- package/src/mcp/schema/index.ts +38 -0
- package/src/mcp/server.ts +247 -0
- package/src/mcp/shared-schema.ts +34 -0
- package/src/mcp/tools/analytics-filters.ts +46 -0
- package/src/mcp/tools/analytics.ts +453 -0
- package/src/mcp/tools/fetch-search-pages.ts +329 -0
- package/src/mcp/tools/functions.ts +105 -0
- package/src/mcp/tools/lookup.ts +182 -0
- package/src/mcp/tools/query.ts +91 -0
- package/src/mcp/tools/schema.ts +147 -0
- package/src/mcp/tools/search-entity-metadata.ts +253 -0
- package/src/mcp/tools/search-input.ts +87 -0
- package/src/mcp/tools/search.ts +168 -0
- package/src/mcp/utils.ts +199 -0
- package/test/client/auth/config-loaders.test.ts +92 -0
- package/test/client/auth/decorators/with-caching.test.ts +482 -0
- package/test/client/auth/factory.test.ts +68 -0
- package/test/client/auth/providers/jwt-auth-provider.test.ts +398 -0
- package/test/client/auth/types.test.ts +18 -0
- package/test/client/command.test.ts +163 -0
- package/test/client/config/loader.test.ts +377 -0
- package/test/client/config/unified-loader.test.ts +136 -0
- package/test/client/deployment-config.test.ts +69 -0
- package/test/client/errors/index.test.ts +408 -0
- package/test/client/helpers/mock-fetch.ts +42 -0
- package/test/client/http-client.test.ts +1148 -0
- package/test/client/integration/auth-providers.integration.test.ts +186 -0
- package/test/client/internal-dsl-client.test.ts +76 -0
- package/test/client/rate-limiter.test.ts +204 -0
- package/test/client/resolve-api-key-user.test.ts +87 -0
- package/test/dsl/client.special-functions.test.ts +387 -0
- package/test/dsl/client.test.ts +457 -0
- package/test/dsl/commands/apply-filters.test.ts +147 -0
- package/test/dsl/commands/functions/ClassifyCommand.test.ts +170 -0
- package/test/dsl/commands/functions/ExtractAffiliationsCommand.test.ts +306 -0
- package/test/dsl/commands/functions/ExtractConceptsCommand.test.ts +136 -0
- package/test/dsl/commands/functions/ExtractGrantsCommand.test.ts +202 -0
- package/test/dsl/commands/search/filters.test.ts +42 -0
- package/test/dsl/fluent-query-builder.test.ts +865 -0
- package/test/dsl/integration/client.integration.test.ts +294 -0
- package/test/dsl/integration/facet-api.integration.test.ts +276 -0
- package/test/dsl/integration/field-existence.integration.test.ts +148 -0
- package/test/dsl/integration/fluent-api-docs-examples.integration.test.ts +988 -0
- package/test/dsl/integration/fluent-api.integration.test.ts +615 -0
- package/test/dsl/integration/search-helpers.ts +27 -0
- package/test/dsl/integration/special-functions.integration.test.ts +224 -0
- package/test/dsl/integration/test-config.ts +52 -0
- package/test/dsl/pagination.test.ts +86 -0
- package/test/dsl/query-builder.test.ts +1775 -0
- package/test/dsl/response-parser.test.ts +520 -0
- package/test/dsl/schema/cache.test.ts +53 -0
- package/test/dsl/schema/load.test.ts +165 -0
- package/test/dsl/schema/summary.test.ts +61 -0
- package/test/dsl/schema/validation.test.ts +46 -0
- package/test/dsl/time-series.test.ts +135 -0
- package/test/dsl/unnest.test.ts +151 -0
- package/test/dsl/usage-policy.test.ts +100 -0
- package/test/dsl/utils/escape.property.test.ts +109 -0
- package/test/dsl/utils/escape.test.ts +140 -0
- package/test/dsl/utils/validate-field-name.property.test.ts +99 -0
- package/test/dsl/utils/validate-field-name.test.ts +55 -0
- package/test/examples/dsl-examples.test.ts +29 -0
- package/test/examples/usage-scenarios.test.ts +90 -0
- package/test/fixtures/describe-schema.json +4000 -0
- package/test/funder-org-names.test.ts +20 -0
- package/test/helpers/schema-fixture.ts +18 -0
- package/test/helpers/tool-test-harness.ts +114 -0
- package/test/integration/assertions.ts +263 -0
- package/test/integration/env.ts +108 -0
- package/test/integration/harness.ts +307 -0
- package/test/integration/hosted-client.ts +56 -0
- package/test/integration/hosted-mocks.ts +81 -0
- package/test/integration/hosted-run.ts +86 -0
- package/test/integration/hosted.e2e.test.ts +101 -0
- package/test/integration/reporter.ts +100 -0
- package/test/integration/run.ts +74 -0
- package/test/integration/suites/analytics.integration.ts +72 -0
- package/test/integration/suites/functions.integration.ts +37 -0
- package/test/integration/suites/hosted-smoke.integration.ts +38 -0
- package/test/integration/suites/index.ts +22 -0
- package/test/integration/suites/lookup.integration.ts +57 -0
- package/test/integration/suites/query.integration.ts +49 -0
- package/test/integration/suites/resources.integration.ts +68 -0
- package/test/integration/suites/search.integration.ts +80 -0
- package/test/integration/types.ts +92 -0
- package/test/integration/verify-usage-scenarios.ts +162 -0
- package/test/mcp/export-format.test.ts +67 -0
- package/test/mcp/http-server.test.ts +80 -0
- package/test/middleware/field-aliases.test.ts +287 -0
- package/test/resources/schema.test.ts +28 -0
- package/test/schema/describe-contract.test.ts +24 -0
- package/test/schema/store.test.ts +45 -0
- package/test/server.test.ts +170 -0
- package/test/tools/analytics-filters.test.ts +35 -0
- package/test/tools/analytics.test.ts +419 -0
- package/test/tools/fetch-search-pages.test.ts +200 -0
- package/test/tools/functions.test.ts +153 -0
- package/test/tools/lookup.test.ts +296 -0
- package/test/tools/query.test.ts +100 -0
- package/test/tools/schema.test.ts +37 -0
- package/test/tools/search.test.ts +415 -0
- package/test/utils.test.ts +45 -0
- package/tsconfig.json +9 -0
- package/tsconfig.tsbuildinfo +1 -0
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tool routing for natural-language prompts in docs/USAGE.md.
|
|
3
|
+
* @module examples/usage-scenarios
|
|
4
|
+
*/
|
|
5
|
+
export const USAGE_SCENARIOS = [
|
|
6
|
+
{
|
|
7
|
+
id: "top-publications",
|
|
8
|
+
goal: "Top papers on a topic",
|
|
9
|
+
prompt: "Find the 20 most-cited publications on CRISPR gene editing since 2020.",
|
|
10
|
+
tool: "search_publications",
|
|
11
|
+
args: {
|
|
12
|
+
query: "CRISPR gene editing",
|
|
13
|
+
yearFrom: 2020,
|
|
14
|
+
sortBy: "total_citations",
|
|
15
|
+
limit: 20,
|
|
16
|
+
fields: ["id", "title", "doi", "year", "total_citations"],
|
|
17
|
+
},
|
|
18
|
+
dslContains: [
|
|
19
|
+
"search publications",
|
|
20
|
+
"CRISPR gene editing",
|
|
21
|
+
"year >= 2020",
|
|
22
|
+
"sort by times_cited desc",
|
|
23
|
+
"limit 20",
|
|
24
|
+
],
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
id: "nih-grants",
|
|
28
|
+
goal: "Grants from a funder",
|
|
29
|
+
prompt: "Search NIH grants about cancer immunotherapy started after 2020, limit 25.",
|
|
30
|
+
tool: "search_grants",
|
|
31
|
+
args: {
|
|
32
|
+
query: "cancer immunotherapy",
|
|
33
|
+
startYearFrom: 2020,
|
|
34
|
+
funderOrgName: "National Cancer Institute",
|
|
35
|
+
limit: 25,
|
|
36
|
+
fields: ["id", "title", "funding_usd", "funder_name", "start_year"],
|
|
37
|
+
},
|
|
38
|
+
dslContains: [
|
|
39
|
+
"search grants",
|
|
40
|
+
"cancer immunotherapy",
|
|
41
|
+
"start_year >= 2020",
|
|
42
|
+
'funder_org_name = "National Cancer Institute"',
|
|
43
|
+
"limit 25",
|
|
44
|
+
],
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
id: "researchers-by-topic",
|
|
48
|
+
goal: "Who works on a topic",
|
|
49
|
+
prompt: "Who are the top researchers working on quantum computing?",
|
|
50
|
+
tool: "facet_query",
|
|
51
|
+
args: {
|
|
52
|
+
entityType: "publications",
|
|
53
|
+
facetField: "researchers",
|
|
54
|
+
query: "quantum computing",
|
|
55
|
+
limit: 10,
|
|
56
|
+
},
|
|
57
|
+
dslContains: ["search publications", "quantum computing", "return researchers"],
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
id: "researchers-by-name",
|
|
61
|
+
goal: "Find researchers by name",
|
|
62
|
+
prompt: "Search researchers named Jennifer Doudna, sort by publication count.",
|
|
63
|
+
tool: "search_researchers",
|
|
64
|
+
args: {
|
|
65
|
+
query: "Jennifer Doudna",
|
|
66
|
+
sortBy: "total_publications",
|
|
67
|
+
limit: 10,
|
|
68
|
+
fields: ["id", "first_name", "last_name", "total_publications"],
|
|
69
|
+
},
|
|
70
|
+
dslContains: ["search researchers", "Jennifer Doudna", "sort by total_publications"],
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
id: "doi-lookup",
|
|
74
|
+
goal: "Known paper",
|
|
75
|
+
prompt: "Look up DOI 10.1038/nature12373 and show title, citations, and journal.",
|
|
76
|
+
tool: "get_by_doi",
|
|
77
|
+
args: {
|
|
78
|
+
doi: "10.1038/nature12373",
|
|
79
|
+
fields: ["id", "title", "times_cited", "journal"],
|
|
80
|
+
},
|
|
81
|
+
dslContains: ["10.1038/nature12373"],
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
id: "author-profile",
|
|
85
|
+
goal: "Researcher deep-dive",
|
|
86
|
+
prompt: "Get an author profile for Jennifer Doudna with recent publications.",
|
|
87
|
+
tool: "author_profile",
|
|
88
|
+
args: {
|
|
89
|
+
name: "Jennifer Doudna",
|
|
90
|
+
includePublications: true,
|
|
91
|
+
publicationLimit: 10,
|
|
92
|
+
},
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
id: "org-profile",
|
|
96
|
+
goal: "Institution",
|
|
97
|
+
prompt: "Profile Stanford University — publications and grants.",
|
|
98
|
+
tool: "org_profile",
|
|
99
|
+
args: {
|
|
100
|
+
organizationId: "grid.168010.e",
|
|
101
|
+
name: "Stanford University",
|
|
102
|
+
includePublications: true,
|
|
103
|
+
includeGrants: true,
|
|
104
|
+
},
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
id: "facet-journals-since-year",
|
|
108
|
+
goal: "Topic breakdown",
|
|
109
|
+
prompt: "Which journals publish the most machine learning research since 2020?",
|
|
110
|
+
tool: "facet_query",
|
|
111
|
+
args: {
|
|
112
|
+
entityType: "publications",
|
|
113
|
+
facetField: "journal",
|
|
114
|
+
query: "machine learning",
|
|
115
|
+
yearFrom: 2020,
|
|
116
|
+
limit: 20,
|
|
117
|
+
},
|
|
118
|
+
dslContains: ["machine learning", "year >= 2020", "return journal"],
|
|
119
|
+
},
|
|
120
|
+
{
|
|
121
|
+
id: "funding-leaders",
|
|
122
|
+
goal: "Funding leaders",
|
|
123
|
+
prompt: "Which funders have the most grant funding on climate adaptation?",
|
|
124
|
+
tool: "aggregate_query",
|
|
125
|
+
args: {
|
|
126
|
+
entityType: "grants",
|
|
127
|
+
facetField: "funder_orgs",
|
|
128
|
+
indicators: ["funding"],
|
|
129
|
+
query: "climate adaptation",
|
|
130
|
+
sortBy: "funding",
|
|
131
|
+
sortOrder: "desc",
|
|
132
|
+
limit: 10,
|
|
133
|
+
},
|
|
134
|
+
dslContains: ["search grants", "climate adaptation", "return funder_orgs aggregate funding"],
|
|
135
|
+
},
|
|
136
|
+
{
|
|
137
|
+
id: "citation-trend",
|
|
138
|
+
goal: "Citations over time",
|
|
139
|
+
prompt: "Citation trend for large language model publications from 2018 to 2024.",
|
|
140
|
+
tool: "citation_trend",
|
|
141
|
+
args: {
|
|
142
|
+
query: "large language model",
|
|
143
|
+
startYear: 2018,
|
|
144
|
+
endYear: 2024,
|
|
145
|
+
},
|
|
146
|
+
dslContains: ["large language model", "citations_per_year(2018, 2024)"],
|
|
147
|
+
},
|
|
148
|
+
{
|
|
149
|
+
id: "build-complex-query",
|
|
150
|
+
goal: "Build a complex query",
|
|
151
|
+
prompt: "Build a DSL query for publications: include CRISPR or gene editing, exclude animal models, year ≥ 2020.",
|
|
152
|
+
tool: "build_query",
|
|
153
|
+
args: {
|
|
154
|
+
entity: "publications",
|
|
155
|
+
concept_groups: [
|
|
156
|
+
{ terms: ["CRISPR", "gene editing"], role: "include" },
|
|
157
|
+
{ terms: ["animal model", "animal models"], role: "exclude" },
|
|
158
|
+
],
|
|
159
|
+
filters: [{ field: "year", op: ">=", value: 2020 }],
|
|
160
|
+
fields: ["id", "title", "doi", "times_cited"],
|
|
161
|
+
limit: 20,
|
|
162
|
+
},
|
|
163
|
+
buildDslContains: [
|
|
164
|
+
"search publications",
|
|
165
|
+
"CRISPR",
|
|
166
|
+
"gene editing",
|
|
167
|
+
"animal model",
|
|
168
|
+
"year >= 2020",
|
|
169
|
+
"limit 20",
|
|
170
|
+
],
|
|
171
|
+
},
|
|
172
|
+
];
|
|
173
|
+
//# sourceMappingURL=usage-scenarios.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"usage-scenarios.js","sourceRoot":"","sources":["../../src/examples/usage-scenarios.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resolves common funder acronyms and aliases to Dimensions funder_org_name values.
|
|
3
|
+
* @module funder-org-names
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Resolves a funder organization name or acronym to the canonical Dimensions value.
|
|
7
|
+
* Unknown names pass through unchanged.
|
|
8
|
+
* @param input - Funder name or acronym from tool arguments
|
|
9
|
+
* @returns Canonical Dimensions funder_org_name
|
|
10
|
+
*/
|
|
11
|
+
export declare function resolveFunderOrgName(input: string): string;
|
|
12
|
+
//# sourceMappingURL=funder-org-names.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"funder-org-names.d.ts","sourceRoot":"","sources":["../src/funder-org-names.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAgBH;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAI1D"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resolves common funder acronyms and aliases to Dimensions funder_org_name values.
|
|
3
|
+
* @module funder-org-names
|
|
4
|
+
*/
|
|
5
|
+
/** Case-insensitive acronym / alias → exact Dimensions funder_org_name */
|
|
6
|
+
const FUNDER_ORG_ALIASES = {
|
|
7
|
+
nih: "National Institutes of Health",
|
|
8
|
+
nci: "National Cancer Institute",
|
|
9
|
+
nsf: "National Science Foundation",
|
|
10
|
+
neh: "National Endowment for the Humanities",
|
|
11
|
+
cdc: "Centers for Disease Control and Prevention",
|
|
12
|
+
dod: "Department of Defense",
|
|
13
|
+
usaid: "United States Agency for International Development",
|
|
14
|
+
"national institutes of health": "National Institutes of Health",
|
|
15
|
+
"national cancer institute": "National Cancer Institute",
|
|
16
|
+
"national science foundation": "National Science Foundation",
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* Resolves a funder organization name or acronym to the canonical Dimensions value.
|
|
20
|
+
* Unknown names pass through unchanged.
|
|
21
|
+
* @param input - Funder name or acronym from tool arguments
|
|
22
|
+
* @returns Canonical Dimensions funder_org_name
|
|
23
|
+
*/
|
|
24
|
+
export function resolveFunderOrgName(input) {
|
|
25
|
+
const trimmed = input.trim();
|
|
26
|
+
if (!trimmed)
|
|
27
|
+
return trimmed;
|
|
28
|
+
return FUNDER_ORG_ALIASES[trimmed.toLowerCase()] ?? trimmed;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=funder-org-names.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"funder-org-names.js","sourceRoot":"","sources":["../src/funder-org-names.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,0EAA0E;AAC1E,MAAM,kBAAkB,GAAqC;IAC3D,GAAG,EAAE,+BAA+B;IACpC,GAAG,EAAE,2BAA2B;IAChC,GAAG,EAAE,6BAA6B;IAClC,GAAG,EAAE,uCAAuC;IAC5C,GAAG,EAAE,4CAA4C;IACjD,GAAG,EAAE,uBAAuB;IAC5B,KAAK,EAAE,oDAAoD;IAC3D,+BAA+B,EAAE,+BAA+B;IAChE,2BAA2B,EAAE,2BAA2B;IACxD,6BAA6B,EAAE,6BAA6B;CAC7D,CAAC;AAEF;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAAC,KAAa;IAChD,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC7B,IAAI,CAAC,OAAO;QAAE,OAAO,OAAO,CAAC;IAC7B,OAAO,kBAAkB,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,IAAI,OAAO,CAAC;AAC9D,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http-main.d.ts","sourceRoot":"","sources":["../src/http-main.ts"],"names":[],"mappings":";AACA;;;GAGG"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* HTTP MCP server entry for hosted deployment (Streamable HTTP at /mcp).
|
|
4
|
+
* @module http-main
|
|
5
|
+
*/
|
|
6
|
+
import { loadDeploymentConfig } from "./client/deployment-config.js";
|
|
7
|
+
import { startHostedHttpServer } from "./mcp/http-server.js";
|
|
8
|
+
const deployment = loadDeploymentConfig();
|
|
9
|
+
if (deployment.deploymentMode !== "hosted") {
|
|
10
|
+
console.error("http-main requires DEPLOYMENT_MODE=hosted");
|
|
11
|
+
process.exit(1);
|
|
12
|
+
}
|
|
13
|
+
const { close, ready } = startHostedHttpServer({
|
|
14
|
+
hosted: deployment,
|
|
15
|
+
port: deployment.httpPort,
|
|
16
|
+
});
|
|
17
|
+
ready
|
|
18
|
+
.then((port) => {
|
|
19
|
+
console.error(`Dimensions Analytics MCP HTTP server listening on port ${port}`);
|
|
20
|
+
})
|
|
21
|
+
.catch((error) => {
|
|
22
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
23
|
+
console.error(`Failed to start HTTP server: ${message}`);
|
|
24
|
+
process.exit(1);
|
|
25
|
+
});
|
|
26
|
+
async function shutdown() {
|
|
27
|
+
await close();
|
|
28
|
+
process.exit(0);
|
|
29
|
+
}
|
|
30
|
+
process.on("SIGTERM", () => {
|
|
31
|
+
void shutdown();
|
|
32
|
+
});
|
|
33
|
+
process.on("SIGINT", () => {
|
|
34
|
+
void shutdown();
|
|
35
|
+
});
|
|
36
|
+
//# sourceMappingURL=http-main.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http-main.js","sourceRoot":"","sources":["../src/http-main.ts"],"names":[],"mappings":";AACA;;;GAGG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAE7D,MAAM,UAAU,GAAG,oBAAoB,EAAE,CAAC;AAC1C,IAAI,UAAU,CAAC,cAAc,KAAK,QAAQ,EAAE,CAAC;IAC3C,OAAO,CAAC,KAAK,CAAC,2CAA2C,CAAC,CAAC;IAC3D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,qBAAqB,CAAC;IAC7C,MAAM,EAAE,UAAU;IAClB,IAAI,EAAE,UAAU,CAAC,QAAQ;CAC1B,CAAC,CAAC;AAEH,KAAK;KACF,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;IACb,OAAO,CAAC,KAAK,CAAC,0DAA0D,IAAI,EAAE,CAAC,CAAC;AAClF,CAAC,CAAC;KACD,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;IACxB,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACvE,OAAO,CAAC,KAAK,CAAC,gCAAgC,OAAO,EAAE,CAAC,CAAC;IACzD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC;AAEL,KAAK,UAAU,QAAQ;IACrB,MAAM,KAAK,EAAE,CAAC;IACd,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE;IACzB,KAAK,QAAQ,EAAE,CAAC;AAClB,CAAC,CAAC,CAAC;AACH,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;IACxB,KAAK,QAAQ,EAAE,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
package/dist/http.d.ts
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HTTP entry point for the Dimensions MCP server.
|
|
3
|
+
*
|
|
4
|
+
* Callers authenticate with their Dimensions API key — the same credential
|
|
5
|
+
* used for DSL API requests. Pass it on each `/mcp` POST as:
|
|
6
|
+
*
|
|
7
|
+
* - `Authorization: Bearer <dimensions-api-key>`, or
|
|
8
|
+
* - `X-Dimensions-Api-Key: <dimensions-api-key>`
|
|
9
|
+
*
|
|
10
|
+
* The server exchanges the key for a JWT via Dimensions `auth.json` and
|
|
11
|
+
* forwards queries upstream; keys are not stored server-side.
|
|
12
|
+
* @module mcp/http
|
|
13
|
+
*/
|
|
14
|
+
import { Hono } from "hono";
|
|
15
|
+
/**
|
|
16
|
+
* Extracts a Dimensions API key from request headers.
|
|
17
|
+
* @param authorization - Raw Authorization header value
|
|
18
|
+
* @param dimensionsApiKey - Raw X-Dimensions-Api-Key header value
|
|
19
|
+
* @returns API key or null when missing
|
|
20
|
+
*/
|
|
21
|
+
export declare function extractDimensionsApiKey(authorization: string | undefined, dimensionsApiKey: string | undefined): string | null;
|
|
22
|
+
/**
|
|
23
|
+
* Derives a stable, non-reversible telemetry distinct id from an API key.
|
|
24
|
+
* @param apiKey - Dimensions API key
|
|
25
|
+
* @returns Hex prefix of SHA-256 hash
|
|
26
|
+
*/
|
|
27
|
+
export declare function telemetryDistinctId(apiKey: string): string;
|
|
28
|
+
export declare const app: Hono<import("hono/types").BlankEnv, import("hono/types").BlankSchema, "/">;
|
|
29
|
+
//# sourceMappingURL=http.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAIH,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAgB5B;;;;;GAKG;AACH,wBAAgB,uBAAuB,CACrC,aAAa,EAAE,MAAM,GAAG,SAAS,EACjC,gBAAgB,EAAE,MAAM,GAAG,SAAS,GACnC,MAAM,GAAG,IAAI,CASf;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAE1D;AAMD,eAAO,MAAM,GAAG,4EAAa,CAAC"}
|
package/dist/http.js
ADDED
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HTTP entry point for the Dimensions MCP server.
|
|
3
|
+
*
|
|
4
|
+
* Callers authenticate with their Dimensions API key — the same credential
|
|
5
|
+
* used for DSL API requests. Pass it on each `/mcp` POST as:
|
|
6
|
+
*
|
|
7
|
+
* - `Authorization: Bearer <dimensions-api-key>`, or
|
|
8
|
+
* - `X-Dimensions-Api-Key: <dimensions-api-key>`
|
|
9
|
+
*
|
|
10
|
+
* The server exchanges the key for a JWT via Dimensions `auth.json` and
|
|
11
|
+
* forwards queries upstream; keys are not stored server-side.
|
|
12
|
+
* @module mcp/http
|
|
13
|
+
*/
|
|
14
|
+
import { createHash, randomUUID } from "node:crypto";
|
|
15
|
+
import { WebStandardStreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/webStandardStreamableHttp.js";
|
|
16
|
+
import { Hono } from "hono";
|
|
17
|
+
import { html, raw } from "hono/html";
|
|
18
|
+
import pkg from "../package.json";
|
|
19
|
+
import { createMcpServerAsync } from "./server.js";
|
|
20
|
+
import { getCachedSchemaStore } from "./schema/index.js";
|
|
21
|
+
import { createTelemetry, initMixpanelClient } from "./telemetry.js";
|
|
22
|
+
/** Shared Mixpanel client. Opt-in via `MIXPANEL_TOKEN`. */
|
|
23
|
+
const MIXPANEL_CLIENT = initMixpanelClient(process.env.MIXPANEL_TOKEN, process.env.MIXPANEL_HOST);
|
|
24
|
+
/** Optional stage label attached to telemetry events. */
|
|
25
|
+
const TELEMETRY_STAGE = process.env.SST_STAGE;
|
|
26
|
+
/** Public URL of this deployment (for setup page snippets only). */
|
|
27
|
+
const MCP_PUBLIC_URL = (process.env.MCP_PUBLIC_URL ?? "").replace(/\/$/, "");
|
|
28
|
+
/**
|
|
29
|
+
* Extracts a Dimensions API key from request headers.
|
|
30
|
+
* @param authorization - Raw Authorization header value
|
|
31
|
+
* @param dimensionsApiKey - Raw X-Dimensions-Api-Key header value
|
|
32
|
+
* @returns API key or null when missing
|
|
33
|
+
*/
|
|
34
|
+
export function extractDimensionsApiKey(authorization, dimensionsApiKey) {
|
|
35
|
+
const bearer = authorization ?? "";
|
|
36
|
+
if (bearer.startsWith("Bearer ")) {
|
|
37
|
+
const token = bearer.slice("Bearer ".length).trim();
|
|
38
|
+
if (token.length > 0)
|
|
39
|
+
return token;
|
|
40
|
+
}
|
|
41
|
+
const headerKey = dimensionsApiKey?.trim();
|
|
42
|
+
if (headerKey && headerKey.length > 0)
|
|
43
|
+
return headerKey;
|
|
44
|
+
return null;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Derives a stable, non-reversible telemetry distinct id from an API key.
|
|
48
|
+
* @param apiKey - Dimensions API key
|
|
49
|
+
* @returns Hex prefix of SHA-256 hash
|
|
50
|
+
*/
|
|
51
|
+
export function telemetryDistinctId(apiKey) {
|
|
52
|
+
return createHash("sha256").update(apiKey).digest("hex").slice(0, 16);
|
|
53
|
+
}
|
|
54
|
+
function wwwAuthenticate() {
|
|
55
|
+
return 'Bearer realm="Dimensions API key required"';
|
|
56
|
+
}
|
|
57
|
+
export const app = new Hono();
|
|
58
|
+
app.get("/health", (c) => {
|
|
59
|
+
const store = getCachedSchemaStore();
|
|
60
|
+
if (!store) {
|
|
61
|
+
return c.json({ ok: true, schemaLoaded: false });
|
|
62
|
+
}
|
|
63
|
+
const stats = store.stats();
|
|
64
|
+
return c.json({
|
|
65
|
+
ok: true,
|
|
66
|
+
schemaLoaded: true,
|
|
67
|
+
dslVersion: stats.dslVersion,
|
|
68
|
+
sourceCount: stats.sourceCount,
|
|
69
|
+
schemaLoadedAt: stats.schemaLoadedAt,
|
|
70
|
+
});
|
|
71
|
+
});
|
|
72
|
+
app.get("/", (c) => {
|
|
73
|
+
const mcpUrl = MCP_PUBLIC_URL || new URL("/mcp", c.req.url).href;
|
|
74
|
+
return c.html(html `<!doctype html>
|
|
75
|
+
<html lang="en">
|
|
76
|
+
<head>
|
|
77
|
+
<meta charset="utf-8" />
|
|
78
|
+
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
79
|
+
<title>Dimensions MCP Server — Setup</title>
|
|
80
|
+
<style>
|
|
81
|
+
*{box-sizing:border-box;margin:0;padding:0}
|
|
82
|
+
body{font-family:system-ui,-apple-system,sans-serif;max-width:640px;margin:2rem auto;padding:0 1rem;color:#1a1a1a;line-height:1.5}
|
|
83
|
+
h1{font-size:1.4rem;margin-bottom:.25rem}
|
|
84
|
+
p.sub{color:#666;margin-bottom:1.5rem;font-size:.9rem}
|
|
85
|
+
.note{font-size:.85rem;color:#444;margin-bottom:1.5rem;padding:.75rem 1rem;background:#f3f6fb;border-left:3px solid #2563eb;border-radius:3px}
|
|
86
|
+
pre{background:#f5f5f5;padding:1rem;border-radius:4px;overflow-x:auto;font-size:.8rem;line-height:1.6;white-space:pre-wrap;word-break:break-all;border:1px solid #e5e7eb}
|
|
87
|
+
h2{font-size:.95rem;margin:1.5rem 0 .5rem;color:#444}
|
|
88
|
+
ol{padding-left:1.25rem;font-size:.85rem;color:#444}
|
|
89
|
+
ol li{margin-bottom:.35rem}
|
|
90
|
+
code.inline{background:#eef1f5;padding:.1rem .35rem;border-radius:3px;font-size:.8rem}
|
|
91
|
+
</style>
|
|
92
|
+
</head>
|
|
93
|
+
<body>
|
|
94
|
+
<h1>Dimensions MCP Server</h1>
|
|
95
|
+
<p class="sub">Connect your AI assistant using your Dimensions API key.</p>
|
|
96
|
+
|
|
97
|
+
<div class="note">
|
|
98
|
+
<b>Your key stays yours.</b> Send it on each MCP request as
|
|
99
|
+
<code class="inline">Authorization: Bearer <api-key></code> or
|
|
100
|
+
<code class="inline">X-Dimensions-Api-Key</code>. The server uses it
|
|
101
|
+
only to call Dimensions DSL endpoints — same auth flow as the REST API.
|
|
102
|
+
</div>
|
|
103
|
+
|
|
104
|
+
<h2>Endpoint</h2>
|
|
105
|
+
<pre>${raw(mcpUrl)}</pre>
|
|
106
|
+
|
|
107
|
+
<h2>Local stdio (recommended for single-user setups)</h2>
|
|
108
|
+
<pre>${raw(JSON.stringify({
|
|
109
|
+
mcpServers: {
|
|
110
|
+
dimensions: {
|
|
111
|
+
command: "dimensions-mcp",
|
|
112
|
+
env: { DIMENSIONS_API_KEY: "your-dimensions-api-key" },
|
|
113
|
+
},
|
|
114
|
+
},
|
|
115
|
+
}, null, 2))}</pre>
|
|
116
|
+
|
|
117
|
+
<h2>HTTP clients</h2>
|
|
118
|
+
<ol>
|
|
119
|
+
<li>Configure your MCP client to POST to the endpoint above.</li>
|
|
120
|
+
<li>Set <code class="inline">Authorization: Bearer <your-api-key></code> on each request.</li>
|
|
121
|
+
<li>Obtain a key from your Dimensions account team if you do not have one.</li>
|
|
122
|
+
</ol>
|
|
123
|
+
</body>
|
|
124
|
+
</html>`);
|
|
125
|
+
});
|
|
126
|
+
app.all("/mcp", async (c) => {
|
|
127
|
+
if (c.req.method === "GET") {
|
|
128
|
+
return c.text("Method Not Allowed", 405, { Allow: "POST" });
|
|
129
|
+
}
|
|
130
|
+
const apiKey = extractDimensionsApiKey(c.req.header("Authorization"), c.req.header("X-Dimensions-Api-Key"));
|
|
131
|
+
if (!apiKey) {
|
|
132
|
+
return c.text("Dimensions API key required", 401, {
|
|
133
|
+
"WWW-Authenticate": wwwAuthenticate(),
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
let telemetry;
|
|
137
|
+
if (MIXPANEL_CLIENT) {
|
|
138
|
+
telemetry = createTelemetry({
|
|
139
|
+
client: MIXPANEL_CLIENT,
|
|
140
|
+
distinctId: telemetryDistinctId(apiKey),
|
|
141
|
+
transport: "http",
|
|
142
|
+
serverVersion: pkg.version,
|
|
143
|
+
stage: TELEMETRY_STAGE,
|
|
144
|
+
requestId: randomUUID(),
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
const { server } = await createMcpServerAsync({
|
|
148
|
+
apiKey,
|
|
149
|
+
baseUrl: process.env.DIMENSIONS_BASE_URL,
|
|
150
|
+
telemetry,
|
|
151
|
+
});
|
|
152
|
+
const transport = new WebStandardStreamableHTTPServerTransport({
|
|
153
|
+
sessionIdGenerator: undefined,
|
|
154
|
+
enableJsonResponse: true,
|
|
155
|
+
});
|
|
156
|
+
try {
|
|
157
|
+
await server.connect(transport);
|
|
158
|
+
return await transport.handleRequest(c.req.raw);
|
|
159
|
+
}
|
|
160
|
+
finally {
|
|
161
|
+
if (telemetry) {
|
|
162
|
+
try {
|
|
163
|
+
await telemetry.flush();
|
|
164
|
+
}
|
|
165
|
+
catch {
|
|
166
|
+
// telemetry must never affect the caller's response
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
await transport.close();
|
|
170
|
+
await server.close();
|
|
171
|
+
}
|
|
172
|
+
});
|
|
173
|
+
//# sourceMappingURL=http.js.map
|
package/dist/http.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http.js","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @digital-science-dsl/dimensions-analytics-mcp - Dimensions Analytics MCP server for Dimensions Analytics API.
|
|
3
|
+
* @module @digital-science-dsl/dimensions-analytics-mcp
|
|
4
|
+
*/
|
|
5
|
+
export type { SchemaStore } from "./dsl/schema/index.js";
|
|
6
|
+
export type { SchemaContext } from "./mcp/schema/context.js";
|
|
7
|
+
export { createMcpServerAsync, type McpServerConfig, type McpServerHandle, startMcpServer, } from "./mcp/server.js";
|
|
8
|
+
export { type McpLogLevel, mcpLog } from "./mcp/utils.js";
|
|
9
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,YAAY,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzD,YAAY,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EACL,oBAAoB,EACpB,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,cAAc,GACf,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @digital-science-dsl/dimensions-analytics-mcp - Dimensions Analytics MCP server for Dimensions Analytics API.
|
|
3
|
+
* @module @digital-science-dsl/dimensions-analytics-mcp
|
|
4
|
+
*/
|
|
5
|
+
export { createMcpServerAsync, startMcpServer, } from "./mcp/server.js";
|
|
6
|
+
export { mcpLog } from "./mcp/utils.js";
|
|
7
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EACL,oBAAoB,EAGpB,cAAc,GACf,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAoB,MAAM,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Structured DSL construction for keyword queries (no AST).
|
|
3
|
+
*
|
|
4
|
+
* @module build-query
|
|
5
|
+
*/
|
|
6
|
+
import type { BuildResult, QuerySpec, SearchExpr } from "./types.js";
|
|
7
|
+
/**
|
|
8
|
+
* Build a Dimensions DSL query from a structured specification.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```typescript
|
|
12
|
+
* const result = buildQuery({
|
|
13
|
+
* entity: "publications",
|
|
14
|
+
* search: { and: [{ or: ["cancer", "oncology"] }, "immune checkpoint"] },
|
|
15
|
+
* exclude: "animal model",
|
|
16
|
+
* filters: [{ field: "year", op: ">=", value: 2020 }],
|
|
17
|
+
* fields: ["id", "title", "doi", "times_cited"],
|
|
18
|
+
* limit: 100,
|
|
19
|
+
* });
|
|
20
|
+
* console.log(result.dsl);
|
|
21
|
+
* ```
|
|
22
|
+
*/
|
|
23
|
+
export declare function buildQuery(spec: QuerySpec): BuildResult;
|
|
24
|
+
/** @deprecated Use {@link buildSearchClause} — kept for tests and backward compatibility. */
|
|
25
|
+
export declare function buildSearchNode(expr: SearchExpr, defaultIndex: string | null): string;
|
|
26
|
+
//# sourceMappingURL=build-query.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build-query.d.ts","sourceRoot":"","sources":["../../src/kwq/build-query.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAErE;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,SAAS,GAAG,WAAW,CAUvD;AAED,6FAA6F;AAC7F,wBAAgB,eAAe,CAAC,IAAI,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAErF"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Structured DSL construction for keyword queries (no AST).
|
|
3
|
+
*
|
|
4
|
+
* @module build-query
|
|
5
|
+
*/
|
|
6
|
+
import { assembleQueryDsl, buildSearchClause, querySpecComplexity } from "./dsl-assembler.js";
|
|
7
|
+
/**
|
|
8
|
+
* Build a Dimensions DSL query from a structured specification.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```typescript
|
|
12
|
+
* const result = buildQuery({
|
|
13
|
+
* entity: "publications",
|
|
14
|
+
* search: { and: [{ or: ["cancer", "oncology"] }, "immune checkpoint"] },
|
|
15
|
+
* exclude: "animal model",
|
|
16
|
+
* filters: [{ field: "year", op: ">=", value: 2020 }],
|
|
17
|
+
* fields: ["id", "title", "doi", "times_cited"],
|
|
18
|
+
* limit: 100,
|
|
19
|
+
* });
|
|
20
|
+
* console.log(result.dsl);
|
|
21
|
+
* ```
|
|
22
|
+
*/
|
|
23
|
+
export function buildQuery(spec) {
|
|
24
|
+
const dsl = assembleQueryDsl(spec);
|
|
25
|
+
const validation = { _tag: "valid", warnings: [] };
|
|
26
|
+
return {
|
|
27
|
+
dsl,
|
|
28
|
+
validation,
|
|
29
|
+
description: dsl,
|
|
30
|
+
complexity: querySpecComplexity(spec),
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
/** @deprecated Use {@link buildSearchClause} — kept for tests and backward compatibility. */
|
|
34
|
+
export function buildSearchNode(expr, defaultIndex) {
|
|
35
|
+
return buildSearchClause(expr, defaultIndex);
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=build-query.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build-query.js","sourceRoot":"","sources":["../../src/kwq/build-query.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAG9F;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,UAAU,CAAC,IAAe;IACxC,MAAM,GAAG,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACnC,MAAM,UAAU,GAAG,EAAE,IAAI,EAAE,OAAgB,EAAE,QAAQ,EAAE,EAAW,EAAE,CAAC;IAErE,OAAO;QACL,GAAG;QACH,UAAU;QACV,WAAW,EAAE,GAAG;QAChB,UAAU,EAAE,mBAAmB,CAAC,IAAI,CAAC;KACtC,CAAC;AACJ,CAAC;AAED,6FAA6F;AAC7F,MAAM,UAAU,eAAe,CAAC,IAAgB,EAAE,YAA2B;IAC3E,OAAO,iBAAiB,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;AAC/C,CAAC"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Converts concept groups (include/exclude term clusters) to a QuerySpec.
|
|
3
|
+
*
|
|
4
|
+
* Extracted from `apps/mcp/src/tools/kwq.ts` so both MCP tools and skills
|
|
5
|
+
* can import from one source.
|
|
6
|
+
*
|
|
7
|
+
* @module concept-groups
|
|
8
|
+
*/
|
|
9
|
+
import type { QuerySpec } from "./types.js";
|
|
10
|
+
/**
|
|
11
|
+
* A group of synonym terms with a role (include or exclude).
|
|
12
|
+
*
|
|
13
|
+
* - **include**: group's terms are OR'd together, then AND'd with other include groups
|
|
14
|
+
* - **exclude**: group's terms are flattened into a single OR and negated (NOT)
|
|
15
|
+
*/
|
|
16
|
+
export interface ConceptGroup {
|
|
17
|
+
readonly terms: string[];
|
|
18
|
+
readonly role: "include" | "exclude";
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Input for {@link conceptGroupsToQuerySpec}.
|
|
22
|
+
*/
|
|
23
|
+
export interface ConceptGroupsInput {
|
|
24
|
+
readonly entity: string;
|
|
25
|
+
readonly concept_groups?: readonly ConceptGroup[];
|
|
26
|
+
readonly search_json?: string;
|
|
27
|
+
readonly index?: string;
|
|
28
|
+
readonly filters?: ReadonlyArray<{
|
|
29
|
+
field: string;
|
|
30
|
+
op: string;
|
|
31
|
+
value: unknown;
|
|
32
|
+
}>;
|
|
33
|
+
readonly fields?: readonly string[];
|
|
34
|
+
readonly sort_by?: string;
|
|
35
|
+
readonly sort_order?: string;
|
|
36
|
+
readonly limit?: number;
|
|
37
|
+
readonly skip?: number;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Converts concept groups (or raw search JSON) to a {@link QuerySpec}.
|
|
41
|
+
*
|
|
42
|
+
* Include groups: each group's terms OR'd, groups AND'd together.
|
|
43
|
+
* Exclude groups: all terms flattened into a single OR, negated.
|
|
44
|
+
*
|
|
45
|
+
* @param input - Concept groups and query parameters
|
|
46
|
+
* @returns A fully-formed QuerySpec ready for `buildQuery()`
|
|
47
|
+
*/
|
|
48
|
+
export declare function conceptGroupsToQuerySpec(input: ConceptGroupsInput): QuerySpec;
|
|
49
|
+
//# sourceMappingURL=concept-groups.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"concept-groups.d.ts","sourceRoot":"","sources":["../../src/kwq/concept-groups.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAc,MAAM,YAAY,CAAC;AAExD;;;;;GAKG;AACH,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,SAAS,CAAC;CACtC;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,cAAc,CAAC,EAAE,SAAS,YAAY,EAAE,CAAC;IAClD,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,CAAC,EAAE,aAAa,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IAChF,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;;;GAQG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,kBAAkB,GAAG,SAAS,CAyC7E"}
|