@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,92 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* File export formatting for batch search results (JSONL and CSV).
|
|
3
|
+
* @module mcp/export-format
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Resolves export format from an explicit choice or output path extension.
|
|
7
|
+
* @param outputPath - Destination file path
|
|
8
|
+
* @param explicit - Optional format override
|
|
9
|
+
* @returns Resolved format (defaults to JSONL)
|
|
10
|
+
*/
|
|
11
|
+
export function resolveExportFormat(outputPath, explicit) {
|
|
12
|
+
if (explicit)
|
|
13
|
+
return explicit;
|
|
14
|
+
return outputPath.toLowerCase().endsWith(".csv") ? "csv" : "jsonl";
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Escapes a single CSV cell value.
|
|
18
|
+
* @param value - Cell value
|
|
19
|
+
* @returns CSV-safe string
|
|
20
|
+
*/
|
|
21
|
+
export function escapeCsvCell(value) {
|
|
22
|
+
if (value === null || value === undefined)
|
|
23
|
+
return "";
|
|
24
|
+
const text = typeof value === "string"
|
|
25
|
+
? value
|
|
26
|
+
: typeof value === "number" || typeof value === "boolean"
|
|
27
|
+
? String(value)
|
|
28
|
+
: JSON.stringify(value);
|
|
29
|
+
if (/[",\n\r]/.test(text)) {
|
|
30
|
+
return `"${text.replace(/"/g, '""')}"`;
|
|
31
|
+
}
|
|
32
|
+
return text;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Derives stable CSV column order from rows and optional preferred field list.
|
|
36
|
+
* @param rows - Result rows
|
|
37
|
+
* @param preferredFields - Field order from the search `fields` argument
|
|
38
|
+
* @param existing - Columns from a resumed export
|
|
39
|
+
* @returns Ordered column names
|
|
40
|
+
*/
|
|
41
|
+
export function deriveCsvColumns(rows, preferredFields, existing) {
|
|
42
|
+
if (existing?.length)
|
|
43
|
+
return [...existing];
|
|
44
|
+
const keySet = new Set();
|
|
45
|
+
for (const row of rows) {
|
|
46
|
+
for (const key of Object.keys(row)) {
|
|
47
|
+
keySet.add(key);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
const columns = [];
|
|
51
|
+
if (preferredFields?.length) {
|
|
52
|
+
for (const field of preferredFields) {
|
|
53
|
+
if (keySet.has(field)) {
|
|
54
|
+
columns.push(field);
|
|
55
|
+
keySet.delete(field);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
columns.push(...[...keySet].sort());
|
|
60
|
+
return columns;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Formats result rows for file export.
|
|
64
|
+
* @param rows - Records to write
|
|
65
|
+
* @param format - Target format
|
|
66
|
+
* @param options - CSV column and header options
|
|
67
|
+
* @returns Serialized text and resolved CSV columns
|
|
68
|
+
*/
|
|
69
|
+
export function formatRowsForExport(rows, format, options = {}) {
|
|
70
|
+
if (rows.length === 0) {
|
|
71
|
+
return { text: "", columns: options.columns ? [...options.columns] : [] };
|
|
72
|
+
}
|
|
73
|
+
if (format === "jsonl") {
|
|
74
|
+
return {
|
|
75
|
+
text: `${rows.map((row) => JSON.stringify(row)).join("\n")}\n`,
|
|
76
|
+
columns: [],
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
const columns = deriveCsvColumns(rows, options.preferredFields, options.columns);
|
|
80
|
+
const lines = [];
|
|
81
|
+
if (options.includeHeader) {
|
|
82
|
+
lines.push(columns.map(escapeCsvCell).join(","));
|
|
83
|
+
}
|
|
84
|
+
for (const row of rows) {
|
|
85
|
+
lines.push(columns.map((column) => escapeCsvCell(row[column])).join(","));
|
|
86
|
+
}
|
|
87
|
+
return {
|
|
88
|
+
text: `${lines.join("\n")}\n`,
|
|
89
|
+
columns,
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=export-format.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"export-format.js","sourceRoot":"","sources":["../../src/mcp/export-format.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/mcp/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/mcp/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,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Express HTTP server for hosted MCP (Streamable HTTP transport).
|
|
3
|
+
* @module mcp/http-server
|
|
4
|
+
*/
|
|
5
|
+
import type { HostedEnvConfig } from "../client/deployment-config.js";
|
|
6
|
+
export interface HostedHttpServerOptions {
|
|
7
|
+
readonly hosted: HostedEnvConfig;
|
|
8
|
+
readonly port: number;
|
|
9
|
+
readonly bindHost?: string;
|
|
10
|
+
}
|
|
11
|
+
export interface HostedHttpServerHandle {
|
|
12
|
+
/** Resolves to the bound TCP port once the server is listening. */
|
|
13
|
+
readonly ready: Promise<number>;
|
|
14
|
+
readonly close: () => Promise<void>;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Starts the hosted MCP HTTP server with Streamable HTTP at POST /mcp.
|
|
18
|
+
*/
|
|
19
|
+
export declare function startHostedHttpServer(options: HostedHttpServerOptions): HostedHttpServerHandle;
|
|
20
|
+
//# sourceMappingURL=http-server.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http-server.d.ts","sourceRoot":"","sources":["../../src/mcp/http-server.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAKtE,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;IACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,sBAAsB;IACrC,mEAAmE;IACnE,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IAChC,QAAQ,CAAC,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CACrC;AAaD;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,uBAAuB,GAAG,sBAAsB,CA2G9F"}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Express HTTP server for hosted MCP (Streamable HTTP transport).
|
|
3
|
+
* @module mcp/http-server
|
|
4
|
+
*/
|
|
5
|
+
import { createMcpExpressApp } from "@modelcontextprotocol/sdk/server/express.js";
|
|
6
|
+
import { StreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/streamableHttp.js";
|
|
7
|
+
import { AuthenticationError } from "../client/errors.js";
|
|
8
|
+
import { parseBearerToken, resolveUserFromApiKey } from "../client/resolve-api-key-user.js";
|
|
9
|
+
import { createMcpServerAsync, warmHostedSchemaCache } from "./server.js";
|
|
10
|
+
function clientIpFromRequest(req) {
|
|
11
|
+
const forwarded = req.headers["x-forwarded-for"];
|
|
12
|
+
if (typeof forwarded === "string" && forwarded.length > 0) {
|
|
13
|
+
return forwarded.split(",")[0]?.trim();
|
|
14
|
+
}
|
|
15
|
+
if (Array.isArray(forwarded) && forwarded[0]) {
|
|
16
|
+
return forwarded[0].split(",")[0]?.trim();
|
|
17
|
+
}
|
|
18
|
+
return req.socket.remoteAddress ?? undefined;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Starts the hosted MCP HTTP server with Streamable HTTP at POST /mcp.
|
|
22
|
+
*/
|
|
23
|
+
export function startHostedHttpServer(options) {
|
|
24
|
+
const bindHost = options.bindHost ?? "0.0.0.0";
|
|
25
|
+
const app = createMcpExpressApp({ host: bindHost });
|
|
26
|
+
app.get("/health", (_req, res) => {
|
|
27
|
+
res.status(200).json({ status: "ok" });
|
|
28
|
+
});
|
|
29
|
+
app.post("/mcp", async (req, res) => {
|
|
30
|
+
try {
|
|
31
|
+
const apiKey = parseBearerToken(req.headers.authorization);
|
|
32
|
+
const clientIp = clientIpFromRequest(req);
|
|
33
|
+
const userEmail = await resolveUserFromApiKey({
|
|
34
|
+
apiKey,
|
|
35
|
+
authUrl: options.hosted.radarAuthUrl,
|
|
36
|
+
clientIp,
|
|
37
|
+
});
|
|
38
|
+
const { server } = await createMcpServerAsync({
|
|
39
|
+
deploymentMode: "hosted",
|
|
40
|
+
hosted: options.hosted,
|
|
41
|
+
userEmail,
|
|
42
|
+
clientIp,
|
|
43
|
+
});
|
|
44
|
+
const transport = new StreamableHTTPServerTransport({
|
|
45
|
+
sessionIdGenerator: undefined,
|
|
46
|
+
});
|
|
47
|
+
await server.connect(transport);
|
|
48
|
+
await transport.handleRequest(req, res, req.body);
|
|
49
|
+
res.on("close", () => {
|
|
50
|
+
void transport.close();
|
|
51
|
+
void server.close();
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
catch (error) {
|
|
55
|
+
if (error instanceof AuthenticationError) {
|
|
56
|
+
if (!res.headersSent) {
|
|
57
|
+
res.status(401).json({
|
|
58
|
+
jsonrpc: "2.0",
|
|
59
|
+
error: { code: -32001, message: "Unauthorized" },
|
|
60
|
+
id: null,
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
console.error("MCP HTTP error:", error instanceof Error ? error.message : error);
|
|
66
|
+
if (!res.headersSent) {
|
|
67
|
+
res.status(500).json({
|
|
68
|
+
jsonrpc: "2.0",
|
|
69
|
+
error: { code: -32603, message: "Internal server error" },
|
|
70
|
+
id: null,
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
});
|
|
75
|
+
app.get("/mcp", (_req, res) => {
|
|
76
|
+
res.status(405).json({
|
|
77
|
+
jsonrpc: "2.0",
|
|
78
|
+
error: { code: -32000, message: "Method not allowed." },
|
|
79
|
+
id: null,
|
|
80
|
+
});
|
|
81
|
+
});
|
|
82
|
+
app.delete("/mcp", (_req, res) => {
|
|
83
|
+
res.status(405).json({
|
|
84
|
+
jsonrpc: "2.0",
|
|
85
|
+
error: { code: -32000, message: "Method not allowed." },
|
|
86
|
+
id: null,
|
|
87
|
+
});
|
|
88
|
+
});
|
|
89
|
+
let httpServer;
|
|
90
|
+
const ready = warmHostedSchemaCache(options.hosted).then(() => new Promise((resolve, reject) => {
|
|
91
|
+
const server = app.listen(options.port, bindHost);
|
|
92
|
+
httpServer = server;
|
|
93
|
+
server.once("error", reject);
|
|
94
|
+
server.once("listening", () => {
|
|
95
|
+
const address = server.address();
|
|
96
|
+
const port = address != null && typeof address === "object" ? address.port : options.port;
|
|
97
|
+
resolve(port);
|
|
98
|
+
});
|
|
99
|
+
}));
|
|
100
|
+
return {
|
|
101
|
+
ready,
|
|
102
|
+
close: async () => {
|
|
103
|
+
await new Promise((resolve, reject) => {
|
|
104
|
+
if (!httpServer) {
|
|
105
|
+
resolve();
|
|
106
|
+
return;
|
|
107
|
+
}
|
|
108
|
+
httpServer.close((error) => {
|
|
109
|
+
if (error)
|
|
110
|
+
reject(error);
|
|
111
|
+
else
|
|
112
|
+
resolve();
|
|
113
|
+
});
|
|
114
|
+
});
|
|
115
|
+
},
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
//# sourceMappingURL=http-server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http-server.js","sourceRoot":"","sources":["../../src/mcp/http-server.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Field name alias middleware for MCP tools.
|
|
3
|
+
* Translates LLM-friendly field aliases to raw Dimensions DSL field names
|
|
4
|
+
* via a higher-order function (decorator) pattern.
|
|
5
|
+
* @module mcp/middleware/field-aliases
|
|
6
|
+
*/
|
|
7
|
+
import type { CallToolResult } from "@modelcontextprotocol/sdk/types.js";
|
|
8
|
+
import type { EntityType } from "../../dsl/index.js";
|
|
9
|
+
/**
|
|
10
|
+
* Runtime alias registry. One flat map per entity type.
|
|
11
|
+
* Keys: LLM-friendly alias names. Values: raw DSL field names.
|
|
12
|
+
* Unknown names pass through unchanged at resolution time.
|
|
13
|
+
*/
|
|
14
|
+
export declare const ENTITY_ALIASES: Readonly<Record<EntityType, Readonly<Record<string, string>>>>;
|
|
15
|
+
/**
|
|
16
|
+
* Resolves a single field alias to its raw DSL name.
|
|
17
|
+
* Returns the input unchanged if it is not a known alias (pass-through).
|
|
18
|
+
* @param entity - The entity type
|
|
19
|
+
* @param name - Alias name or raw DSL field name
|
|
20
|
+
* @returns The raw DSL field name
|
|
21
|
+
*/
|
|
22
|
+
export declare function resolveFieldName(entity: EntityType, name: string): string;
|
|
23
|
+
/**
|
|
24
|
+
* Resolves facet-field aliases (e.g. grants `funders` → `funder_orgs` on live describe).
|
|
25
|
+
* Falls back to {@link resolveFieldName} when no facet-specific alias exists.
|
|
26
|
+
* @param entity - The entity type
|
|
27
|
+
* @param name - Facet field name or alias
|
|
28
|
+
* @returns Raw DSL facet field name
|
|
29
|
+
*/
|
|
30
|
+
export declare function resolveFacetFieldName(entity: EntityType, name: string): string;
|
|
31
|
+
/**
|
|
32
|
+
* Resolves an array of field names, applying alias resolution to each.
|
|
33
|
+
* @param entity - The entity type
|
|
34
|
+
* @param names - Array of alias or DSL field names
|
|
35
|
+
* @returns Array of raw DSL field names
|
|
36
|
+
*/
|
|
37
|
+
export declare function resolveFieldNames(entity: EntityType, names: readonly string[]): string[];
|
|
38
|
+
/**
|
|
39
|
+
* Builds a reverse lookup map: DSL field name → alias names.
|
|
40
|
+
* Useful for documentation and resource generation.
|
|
41
|
+
* @param entity - The entity type
|
|
42
|
+
* @returns Map of DSL field name → array of alias names
|
|
43
|
+
*/
|
|
44
|
+
export declare function buildReverseAliasMap(entity: EntityType): Map<string, string[]>;
|
|
45
|
+
/**
|
|
46
|
+
* Where to find the entity type for alias resolution.
|
|
47
|
+
* - `static`: hardcoded at registration time (e.g., search_publications → "publications")
|
|
48
|
+
* - `dynamic`: read from an arg at call time (e.g., get_by_id → args.entityType)
|
|
49
|
+
*/
|
|
50
|
+
export type EntitySource = {
|
|
51
|
+
readonly kind: "static";
|
|
52
|
+
readonly entity: EntityType;
|
|
53
|
+
} | {
|
|
54
|
+
readonly kind: "dynamic";
|
|
55
|
+
readonly argName: string;
|
|
56
|
+
};
|
|
57
|
+
/**
|
|
58
|
+
* Describes which args of a tool contain field names that need alias resolution.
|
|
59
|
+
*/
|
|
60
|
+
export interface FieldAliasDescriptor {
|
|
61
|
+
/** Where to get the entity type. */
|
|
62
|
+
readonly entitySource: EntitySource;
|
|
63
|
+
/** Args that are `string[]` of field names (e.g., `["fields"]`, `["indicators"]`). */
|
|
64
|
+
readonly fieldArrayArgs?: readonly string[];
|
|
65
|
+
/** Args that are a single field name string (e.g., `["sortBy"]`, `["facetField"]`). */
|
|
66
|
+
readonly fieldStringArgs?: readonly string[];
|
|
67
|
+
/** Args that are arrays of filter objects with a `.field` property (e.g., `["filters"]`). */
|
|
68
|
+
readonly filterArrayArgs?: readonly string[];
|
|
69
|
+
}
|
|
70
|
+
/** Generic tool handler function type compatible with the MCP SDK. */
|
|
71
|
+
type ToolHandler = (args: any, extra: any) => CallToolResult | Promise<CallToolResult>;
|
|
72
|
+
/**
|
|
73
|
+
* Wraps a tool handler with transparent field alias resolution.
|
|
74
|
+
* Resolves LLM-friendly aliases to raw DSL field names before the inner handler runs.
|
|
75
|
+
*
|
|
76
|
+
* @param descriptor - Declares which args contain field names
|
|
77
|
+
* @param handler - The inner tool handler
|
|
78
|
+
* @returns A new handler with the same signature that pre-processes args
|
|
79
|
+
*
|
|
80
|
+
* @example
|
|
81
|
+
* ```typescript
|
|
82
|
+
* server.registerTool("search_publications", config,
|
|
83
|
+
* withFieldAliases(
|
|
84
|
+
* {
|
|
85
|
+
* entitySource: { kind: "static", entity: "publications" },
|
|
86
|
+
* fieldArrayArgs: ["fields"],
|
|
87
|
+
* fieldStringArgs: ["sortBy"],
|
|
88
|
+
* filterArrayArgs: ["filters"],
|
|
89
|
+
* },
|
|
90
|
+
* async (args) => { ... },
|
|
91
|
+
* ),
|
|
92
|
+
* );
|
|
93
|
+
* ```
|
|
94
|
+
*/
|
|
95
|
+
export declare function withFieldAliases<T extends ToolHandler>(descriptor: FieldAliasDescriptor, handler: T): T;
|
|
96
|
+
export {};
|
|
97
|
+
//# sourceMappingURL=field-aliases.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"field-aliases.d.ts","sourceRoot":"","sources":["../../../src/mcp/middleware/field-aliases.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAmFrD;;;;GAIG;AACH,eAAO,MAAM,cAAc,EAAE,QAAQ,CAAC,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CASzF,CAAC;AAMF;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAIzE;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAI9E;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,EAAE,CAIxF;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,UAAU,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAY9E;AAMD;;;;GAIG;AACH,MAAM,MAAM,YAAY,GACpB;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAA;CAAE,GACxD;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAE3D;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,oCAAoC;IACpC,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IACpC,sFAAsF;IACtF,QAAQ,CAAC,cAAc,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5C,uFAAuF;IACvF,QAAQ,CAAC,eAAe,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC7C,6FAA6F;IAC7F,QAAQ,CAAC,eAAe,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC9C;AAMD,sEAAsE;AAEtE,KAAK,WAAW,GAAG,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,KAAK,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;AAEvF;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,WAAW,EACpD,UAAU,EAAE,oBAAoB,EAChC,OAAO,EAAE,CAAC,GACT,CAAC,CA2CH"}
|
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Field name alias middleware for MCP tools.
|
|
3
|
+
* Translates LLM-friendly field aliases to raw Dimensions DSL field names
|
|
4
|
+
* via a higher-order function (decorator) pattern.
|
|
5
|
+
* @module mcp/middleware/field-aliases
|
|
6
|
+
*/
|
|
7
|
+
// ---------------------------------------------------------------------------
|
|
8
|
+
// Per-entity alias maps (targets are raw DSL field / metric names)
|
|
9
|
+
// ---------------------------------------------------------------------------
|
|
10
|
+
/**
|
|
11
|
+
* Publication field aliases.
|
|
12
|
+
* Keys: LLM-friendly names. Values: raw DSL field names.
|
|
13
|
+
*/
|
|
14
|
+
const PUBLICATION_ALIASES = {
|
|
15
|
+
total_citations: "times_cited",
|
|
16
|
+
citation_ratio: "field_citation_ratio",
|
|
17
|
+
altmetric_score: "altmetric",
|
|
18
|
+
fields_of_research: "category_for",
|
|
19
|
+
sdg_categories: "category_sdg",
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
* Publication indicator aliases for aggregation queries.
|
|
23
|
+
*/
|
|
24
|
+
const PUBLICATION_INDICATOR_ALIASES = {
|
|
25
|
+
field_citation_ratio_avg: "fcr_gavg",
|
|
26
|
+
relative_citation_ratio_avg: "rcr_avg",
|
|
27
|
+
total_citations_sum: "citations_total",
|
|
28
|
+
average_citations: "citations_avg",
|
|
29
|
+
median_citations: "citations_median",
|
|
30
|
+
};
|
|
31
|
+
/**
|
|
32
|
+
* Grant field aliases.
|
|
33
|
+
*/
|
|
34
|
+
const GRANT_ALIASES = {
|
|
35
|
+
funding_amount_usd: "funding_usd",
|
|
36
|
+
funding_amount_eur: "funding_eur",
|
|
37
|
+
funder_name: "funder_org_name",
|
|
38
|
+
};
|
|
39
|
+
/**
|
|
40
|
+
* Grant facet-field aliases (entity facets, not filter fields).
|
|
41
|
+
* Live describe uses `funder_orgs`; older examples used `funders`.
|
|
42
|
+
*/
|
|
43
|
+
const GRANT_FACET_FIELD_ALIASES = {
|
|
44
|
+
funders: "funder_orgs",
|
|
45
|
+
};
|
|
46
|
+
/** Per-entity facet field alias maps. */
|
|
47
|
+
const FACET_FIELD_ALIASES = {
|
|
48
|
+
grants: GRANT_FACET_FIELD_ALIASES,
|
|
49
|
+
};
|
|
50
|
+
/**
|
|
51
|
+
* Grant indicator aliases for aggregation queries.
|
|
52
|
+
*/
|
|
53
|
+
const GRANT_INDICATOR_ALIASES = {
|
|
54
|
+
total_funding: "funding",
|
|
55
|
+
};
|
|
56
|
+
/** Patent field aliases. */
|
|
57
|
+
const PATENT_ALIASES = {};
|
|
58
|
+
/** Clinical trial field aliases. */
|
|
59
|
+
const CLINICAL_TRIAL_ALIASES = {};
|
|
60
|
+
/** Dataset field aliases. */
|
|
61
|
+
const DATASET_ALIASES = {};
|
|
62
|
+
/** Policy document field aliases. */
|
|
63
|
+
const POLICY_DOCUMENT_ALIASES = {};
|
|
64
|
+
/** Researcher field aliases. */
|
|
65
|
+
const RESEARCHER_ALIASES = {
|
|
66
|
+
orcid: "orcid_id",
|
|
67
|
+
};
|
|
68
|
+
/** Organization field aliases. */
|
|
69
|
+
const ORGANIZATION_ALIASES = {};
|
|
70
|
+
// ---------------------------------------------------------------------------
|
|
71
|
+
// Merged per-entity runtime maps
|
|
72
|
+
// ---------------------------------------------------------------------------
|
|
73
|
+
/**
|
|
74
|
+
* Runtime alias registry. One flat map per entity type.
|
|
75
|
+
* Keys: LLM-friendly alias names. Values: raw DSL field names.
|
|
76
|
+
* Unknown names pass through unchanged at resolution time.
|
|
77
|
+
*/
|
|
78
|
+
export const ENTITY_ALIASES = {
|
|
79
|
+
publications: { ...PUBLICATION_ALIASES, ...PUBLICATION_INDICATOR_ALIASES },
|
|
80
|
+
grants: { ...GRANT_ALIASES, ...GRANT_INDICATOR_ALIASES },
|
|
81
|
+
patents: { ...PATENT_ALIASES },
|
|
82
|
+
clinical_trials: { ...CLINICAL_TRIAL_ALIASES },
|
|
83
|
+
datasets: { ...DATASET_ALIASES },
|
|
84
|
+
policy_documents: { ...POLICY_DOCUMENT_ALIASES },
|
|
85
|
+
researchers: { ...RESEARCHER_ALIASES },
|
|
86
|
+
organizations: { ...ORGANIZATION_ALIASES },
|
|
87
|
+
};
|
|
88
|
+
// ---------------------------------------------------------------------------
|
|
89
|
+
// Resolution functions
|
|
90
|
+
// ---------------------------------------------------------------------------
|
|
91
|
+
/**
|
|
92
|
+
* Resolves a single field alias to its raw DSL name.
|
|
93
|
+
* Returns the input unchanged if it is not a known alias (pass-through).
|
|
94
|
+
* @param entity - The entity type
|
|
95
|
+
* @param name - Alias name or raw DSL field name
|
|
96
|
+
* @returns The raw DSL field name
|
|
97
|
+
*/
|
|
98
|
+
export function resolveFieldName(entity, name) {
|
|
99
|
+
const map = ENTITY_ALIASES[entity];
|
|
100
|
+
if (!map)
|
|
101
|
+
return name;
|
|
102
|
+
return map[name] ?? name;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Resolves facet-field aliases (e.g. grants `funders` → `funder_orgs` on live describe).
|
|
106
|
+
* Falls back to {@link resolveFieldName} when no facet-specific alias exists.
|
|
107
|
+
* @param entity - The entity type
|
|
108
|
+
* @param name - Facet field name or alias
|
|
109
|
+
* @returns Raw DSL facet field name
|
|
110
|
+
*/
|
|
111
|
+
export function resolveFacetFieldName(entity, name) {
|
|
112
|
+
const facetMap = FACET_FIELD_ALIASES[entity];
|
|
113
|
+
if (facetMap?.[name])
|
|
114
|
+
return facetMap[name];
|
|
115
|
+
return resolveFieldName(entity, name);
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Resolves an array of field names, applying alias resolution to each.
|
|
119
|
+
* @param entity - The entity type
|
|
120
|
+
* @param names - Array of alias or DSL field names
|
|
121
|
+
* @returns Array of raw DSL field names
|
|
122
|
+
*/
|
|
123
|
+
export function resolveFieldNames(entity, names) {
|
|
124
|
+
const map = ENTITY_ALIASES[entity];
|
|
125
|
+
if (!map)
|
|
126
|
+
return [...names];
|
|
127
|
+
return names.map((n) => map[n] ?? n);
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Builds a reverse lookup map: DSL field name → alias names.
|
|
131
|
+
* Useful for documentation and resource generation.
|
|
132
|
+
* @param entity - The entity type
|
|
133
|
+
* @returns Map of DSL field name → array of alias names
|
|
134
|
+
*/
|
|
135
|
+
export function buildReverseAliasMap(entity) {
|
|
136
|
+
const map = ENTITY_ALIASES[entity];
|
|
137
|
+
const reverse = new Map();
|
|
138
|
+
for (const [alias, dslName] of Object.entries(map)) {
|
|
139
|
+
const existing = reverse.get(dslName);
|
|
140
|
+
if (existing) {
|
|
141
|
+
existing.push(alias);
|
|
142
|
+
}
|
|
143
|
+
else {
|
|
144
|
+
reverse.set(dslName, [alias]);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
return reverse;
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Wraps a tool handler with transparent field alias resolution.
|
|
151
|
+
* Resolves LLM-friendly aliases to raw DSL field names before the inner handler runs.
|
|
152
|
+
*
|
|
153
|
+
* @param descriptor - Declares which args contain field names
|
|
154
|
+
* @param handler - The inner tool handler
|
|
155
|
+
* @returns A new handler with the same signature that pre-processes args
|
|
156
|
+
*
|
|
157
|
+
* @example
|
|
158
|
+
* ```typescript
|
|
159
|
+
* server.registerTool("search_publications", config,
|
|
160
|
+
* withFieldAliases(
|
|
161
|
+
* {
|
|
162
|
+
* entitySource: { kind: "static", entity: "publications" },
|
|
163
|
+
* fieldArrayArgs: ["fields"],
|
|
164
|
+
* fieldStringArgs: ["sortBy"],
|
|
165
|
+
* filterArrayArgs: ["filters"],
|
|
166
|
+
* },
|
|
167
|
+
* async (args) => { ... },
|
|
168
|
+
* ),
|
|
169
|
+
* );
|
|
170
|
+
* ```
|
|
171
|
+
*/
|
|
172
|
+
export function withFieldAliases(descriptor, handler) {
|
|
173
|
+
const wrapper = (args, extra) => {
|
|
174
|
+
const entity = descriptor.entitySource.kind === "static"
|
|
175
|
+
? descriptor.entitySource.entity
|
|
176
|
+
: args[descriptor.entitySource.argName];
|
|
177
|
+
const resolved = { ...args };
|
|
178
|
+
// Resolve string[] field arrays (e.g., args.fields, args.indicators)
|
|
179
|
+
for (const argName of descriptor.fieldArrayArgs ?? []) {
|
|
180
|
+
const val = resolved[argName];
|
|
181
|
+
if (Array.isArray(val)) {
|
|
182
|
+
resolved[argName] = resolveFieldNames(entity, val);
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
// Resolve single field name strings (e.g., args.sortBy, args.facetField)
|
|
186
|
+
for (const argName of descriptor.fieldStringArgs ?? []) {
|
|
187
|
+
const val = resolved[argName];
|
|
188
|
+
if (typeof val === "string") {
|
|
189
|
+
resolved[argName] = resolveFieldName(entity, val);
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
// Resolve filter object arrays (e.g., args.filters[].field)
|
|
193
|
+
for (const argName of descriptor.filterArrayArgs ?? []) {
|
|
194
|
+
const val = resolved[argName];
|
|
195
|
+
if (Array.isArray(val)) {
|
|
196
|
+
resolved[argName] = val.map((filter) => ({
|
|
197
|
+
...filter,
|
|
198
|
+
field: typeof filter.field === "string"
|
|
199
|
+
? resolveFieldName(entity, filter.field)
|
|
200
|
+
: filter.field,
|
|
201
|
+
}));
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
return handler(resolved, extra);
|
|
205
|
+
};
|
|
206
|
+
return wrapper;
|
|
207
|
+
}
|
|
208
|
+
//# sourceMappingURL=field-aliases.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"field-aliases.js","sourceRoot":"","sources":["../../../src/mcp/middleware/field-aliases.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dynamic MCP resources derived from runtime {@link SchemaStore}.
|
|
3
|
+
* @module mcp/resources/schema
|
|
4
|
+
*/
|
|
5
|
+
import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
6
|
+
import type { SchemaContext } from "../schema/context.js";
|
|
7
|
+
/**
|
|
8
|
+
* Registers schema MCP resources from a loaded {@link SchemaStore}.
|
|
9
|
+
* @param server - MCP server instance
|
|
10
|
+
* @param context - Mutable schema context (handlers read latest store)
|
|
11
|
+
*/
|
|
12
|
+
export declare function registerSchemaResources(server: McpServer, context: SchemaContext): void;
|
|
13
|
+
//# sourceMappingURL=schema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/mcp/resources/schema.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAoBzE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE1D;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,aAAa,GAAG,IAAI,CA2UvF"}
|