@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,55 @@
|
|
|
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
|
+
/**
|
|
10
|
+
* Converts concept groups (or raw search JSON) to a {@link QuerySpec}.
|
|
11
|
+
*
|
|
12
|
+
* Include groups: each group's terms OR'd, groups AND'd together.
|
|
13
|
+
* Exclude groups: all terms flattened into a single OR, negated.
|
|
14
|
+
*
|
|
15
|
+
* @param input - Concept groups and query parameters
|
|
16
|
+
* @returns A fully-formed QuerySpec ready for `buildQuery()`
|
|
17
|
+
*/
|
|
18
|
+
export function conceptGroupsToQuerySpec(input) {
|
|
19
|
+
let search;
|
|
20
|
+
let exclude;
|
|
21
|
+
if (input.search_json) {
|
|
22
|
+
search = JSON.parse(input.search_json);
|
|
23
|
+
}
|
|
24
|
+
else if (input.concept_groups) {
|
|
25
|
+
const includeGroups = input.concept_groups.filter((g) => g.role === "include");
|
|
26
|
+
const excludeGroups = input.concept_groups.filter((g) => g.role === "exclude");
|
|
27
|
+
// Build include expression: each group's terms OR'd, groups AND'd
|
|
28
|
+
if (includeGroups.length > 0) {
|
|
29
|
+
const includeExprs = includeGroups.map((g) => g.terms.length === 1 ? g.terms[0] : { or: g.terms });
|
|
30
|
+
search = includeExprs.length === 1 ? includeExprs[0] : { and: includeExprs };
|
|
31
|
+
}
|
|
32
|
+
// Build exclude expression: all exclude terms flattened into a single OR
|
|
33
|
+
if (excludeGroups.length > 0) {
|
|
34
|
+
const excludeTerms = excludeGroups.flatMap((g) => g.terms);
|
|
35
|
+
exclude = excludeTerms.length === 1 ? excludeTerms[0] : { or: excludeTerms };
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
return {
|
|
39
|
+
entity: input.entity,
|
|
40
|
+
search,
|
|
41
|
+
exclude,
|
|
42
|
+
index: input.index,
|
|
43
|
+
filters: input.filters?.map((f) => ({
|
|
44
|
+
field: f.field,
|
|
45
|
+
op: f.op,
|
|
46
|
+
value: f.value,
|
|
47
|
+
})),
|
|
48
|
+
fields: input.fields,
|
|
49
|
+
sortBy: input.sort_by,
|
|
50
|
+
sortOrder: input.sort_order,
|
|
51
|
+
limit: input.limit,
|
|
52
|
+
skip: input.skip,
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=concept-groups.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"concept-groups.js","sourceRoot":"","sources":["../../src/kwq/concept-groups.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AA+BH;;;;;;;;GAQG;AACH,MAAM,UAAU,wBAAwB,CAAC,KAAyB;IAChE,IAAI,MAA8B,CAAC;IACnC,IAAI,OAA+B,CAAC;IAEpC,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;QACtB,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,CAAe,CAAC;IACvD,CAAC;SAAM,IAAI,KAAK,CAAC,cAAc,EAAE,CAAC;QAChC,MAAM,aAAa,GAAG,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;QAC/E,MAAM,aAAa,GAAG,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;QAE/E,kEAAkE;QAClE,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7B,MAAM,YAAY,GAAiB,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CACzD,CAAC,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,CACpD,CAAC;YACF,MAAM,GAAG,YAAY,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,YAAY,EAAE,CAAC;QAC/E,CAAC;QAED,yEAAyE;QACzE,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7B,MAAM,YAAY,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YAC3D,OAAO,GAAG,YAAY,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,YAAY,EAAE,CAAC;QAC/E,CAAC;IACH,CAAC;IAED,OAAO;QACL,MAAM,EAAE,KAAK,CAAC,MAA6B;QAC3C,MAAM;QACN,OAAO;QACP,KAAK,EAAE,KAAK,CAAC,KAA2B;QACxC,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAClC,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,EAAE,EAAE,CAAC,CAAC,EAAuD;YAC7D,KAAK,EAAE,CAAC,CAAC,KAAgE;SAC1E,CAAC,CAAC;QACH,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,MAAM,EAAE,KAAK,CAAC,OAAO;QACrB,SAAS,EAAE,KAAK,CAAC,UAAoC;QACrD,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,IAAI,EAAE,KAAK,CAAC,IAAI;KACjB,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Assembles Dimensions DSL query strings from structured specs (no AST).
|
|
3
|
+
* @module dsl-assembler
|
|
4
|
+
*/
|
|
5
|
+
import type { QuerySpec, SearchExpr } from "./types.js";
|
|
6
|
+
/**
|
|
7
|
+
* Emits a `for "..."` clause (with optional index) from a search expression.
|
|
8
|
+
* @param expr - Search expression tree
|
|
9
|
+
* @param defaultIndex - Default index for string leaves
|
|
10
|
+
* @returns DSL search fragment (without leading `search`)
|
|
11
|
+
*/
|
|
12
|
+
export declare function buildSearchClause(expr: SearchExpr, defaultIndex: string | null): string;
|
|
13
|
+
/**
|
|
14
|
+
* Builds a full DSL query string from a {@link QuerySpec}.
|
|
15
|
+
* @param spec - Structured query specification
|
|
16
|
+
* @returns DSL source text
|
|
17
|
+
*/
|
|
18
|
+
export declare function assembleQueryDsl(spec: QuerySpec): string;
|
|
19
|
+
/**
|
|
20
|
+
* Lightweight complexity metrics for a query spec.
|
|
21
|
+
* @param spec - Query specification
|
|
22
|
+
*/
|
|
23
|
+
export declare function querySpecComplexity(spec: QuerySpec): {
|
|
24
|
+
readonly filterCount: number;
|
|
25
|
+
readonly hasExclusion: boolean;
|
|
26
|
+
readonly hasSearch: boolean;
|
|
27
|
+
};
|
|
28
|
+
//# sourceMappingURL=dsl-assembler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dsl-assembler.d.ts","sourceRoot":"","sources":["../../src/kwq/dsl-assembler.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAc,SAAS,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAcpE;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CA6BvF;AA6BD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM,CAuCxD;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,SAAS,GAAG;IACpD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;CAC7B,CAMA"}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Assembles Dimensions DSL query strings from structured specs (no AST).
|
|
3
|
+
* @module dsl-assembler
|
|
4
|
+
*/
|
|
5
|
+
import { escapeDslString } from "../dsl/index.js";
|
|
6
|
+
/** Default search index label when none is set. */
|
|
7
|
+
const DEFAULT_INDEX = "full_data";
|
|
8
|
+
function quoteDsl(text) {
|
|
9
|
+
return `"${escapeDslString(text)}"`;
|
|
10
|
+
}
|
|
11
|
+
function indexPrefix(index) {
|
|
12
|
+
if (!index || index === DEFAULT_INDEX)
|
|
13
|
+
return "";
|
|
14
|
+
return `in ${index} `;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Emits a `for "..."` clause (with optional index) from a search expression.
|
|
18
|
+
* @param expr - Search expression tree
|
|
19
|
+
* @param defaultIndex - Default index for string leaves
|
|
20
|
+
* @returns DSL search fragment (without leading `search`)
|
|
21
|
+
*/
|
|
22
|
+
export function buildSearchClause(expr, defaultIndex) {
|
|
23
|
+
if (typeof expr === "string") {
|
|
24
|
+
return `${indexPrefix(defaultIndex)}for ${quoteDsl(expr)}`;
|
|
25
|
+
}
|
|
26
|
+
if ("term" in expr) {
|
|
27
|
+
const idx = expr.index ?? defaultIndex;
|
|
28
|
+
return `${indexPrefix(idx)}for ${quoteDsl(expr.term)}`;
|
|
29
|
+
}
|
|
30
|
+
if ("and" in expr) {
|
|
31
|
+
if (expr.and.length === 0) {
|
|
32
|
+
throw new Error("AND expression must have at least one child");
|
|
33
|
+
}
|
|
34
|
+
const parts = expr.and.map((child) => buildSearchClause(child, defaultIndex));
|
|
35
|
+
if (parts.length === 1)
|
|
36
|
+
return parts[0];
|
|
37
|
+
return parts.map((p) => wrapSearch(p, "or")).join(" and ");
|
|
38
|
+
}
|
|
39
|
+
if ("or" in expr) {
|
|
40
|
+
if (expr.or.length === 0) {
|
|
41
|
+
throw new Error("OR expression must have at least one child");
|
|
42
|
+
}
|
|
43
|
+
const parts = expr.or.map((child) => buildSearchClause(child, defaultIndex));
|
|
44
|
+
if (parts.length === 1)
|
|
45
|
+
return parts[0];
|
|
46
|
+
return `(${parts.join(" or ")})`;
|
|
47
|
+
}
|
|
48
|
+
throw new Error("Invalid SearchExpr: must be string, { term }, { and }, or { or }");
|
|
49
|
+
}
|
|
50
|
+
function wrapSearch(clause, childOp) {
|
|
51
|
+
if (childOp === "or" && clause.includes(" or ")) {
|
|
52
|
+
return `(${clause})`;
|
|
53
|
+
}
|
|
54
|
+
return clause;
|
|
55
|
+
}
|
|
56
|
+
function formatFilterValue(value) {
|
|
57
|
+
if (typeof value === "string") {
|
|
58
|
+
return quoteDsl(value);
|
|
59
|
+
}
|
|
60
|
+
if (typeof value === "number") {
|
|
61
|
+
return String(value);
|
|
62
|
+
}
|
|
63
|
+
if (Array.isArray(value) && value.length > 0) {
|
|
64
|
+
if (typeof value[0] === "string") {
|
|
65
|
+
return `[${value.map(quoteDsl).join(", ")}]`;
|
|
66
|
+
}
|
|
67
|
+
return `[${value.join(", ")}]`;
|
|
68
|
+
}
|
|
69
|
+
return "[]";
|
|
70
|
+
}
|
|
71
|
+
function formatFilter(filter) {
|
|
72
|
+
return `${filter.field} ${filter.op} ${formatFilterValue(filter.value)}`;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Builds a full DSL query string from a {@link QuerySpec}.
|
|
76
|
+
* @param spec - Structured query specification
|
|
77
|
+
* @returns DSL source text
|
|
78
|
+
*/
|
|
79
|
+
export function assembleQueryDsl(spec) {
|
|
80
|
+
const parts = [`search ${spec.entity}`];
|
|
81
|
+
let searchPart = "";
|
|
82
|
+
if (spec.search) {
|
|
83
|
+
searchPart = buildSearchClause(spec.search, spec.index ?? null);
|
|
84
|
+
}
|
|
85
|
+
if (spec.exclude) {
|
|
86
|
+
const excludePart = buildSearchClause(spec.exclude, spec.index ?? null);
|
|
87
|
+
if (searchPart) {
|
|
88
|
+
searchPart = `${searchPart} not ${excludePart}`;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
if (searchPart) {
|
|
92
|
+
parts.push(searchPart);
|
|
93
|
+
}
|
|
94
|
+
if (spec.filters?.length) {
|
|
95
|
+
parts.push(`where ${spec.filters.map(formatFilter).join(" and ")}`);
|
|
96
|
+
}
|
|
97
|
+
const returnParts = [`return ${spec.entity}`];
|
|
98
|
+
if (spec.fields?.length) {
|
|
99
|
+
returnParts[0] = `return ${spec.entity}[${spec.fields.join(" + ")}]`;
|
|
100
|
+
}
|
|
101
|
+
if (spec.sortBy) {
|
|
102
|
+
returnParts.push(`sort by ${spec.sortBy} ${spec.sortOrder ?? "desc"}`);
|
|
103
|
+
}
|
|
104
|
+
if (spec.limit !== undefined) {
|
|
105
|
+
returnParts.push(`limit ${spec.limit}`);
|
|
106
|
+
}
|
|
107
|
+
if (spec.skip !== undefined && spec.skip > 0) {
|
|
108
|
+
returnParts.push(`skip ${spec.skip}`);
|
|
109
|
+
}
|
|
110
|
+
parts.push(returnParts.join(" "));
|
|
111
|
+
return parts.join(" ");
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Lightweight complexity metrics for a query spec.
|
|
115
|
+
* @param spec - Query specification
|
|
116
|
+
*/
|
|
117
|
+
export function querySpecComplexity(spec) {
|
|
118
|
+
return {
|
|
119
|
+
filterCount: spec.filters?.length ?? 0,
|
|
120
|
+
hasExclusion: spec.exclude !== undefined,
|
|
121
|
+
hasSearch: spec.search !== undefined,
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
//# sourceMappingURL=dsl-assembler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dsl-assembler.js","sourceRoot":"","sources":["../../src/kwq/dsl-assembler.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Ring 4: RRF (Reciprocal Rank Fusion) ensemble.
|
|
3
|
+
*
|
|
4
|
+
* Executes multiple QuerySpecs in parallel, merges results using RRF scoring,
|
|
5
|
+
* and returns a fused ranking. Pure function — no LLM dependency.
|
|
6
|
+
*
|
|
7
|
+
* @module ensemble
|
|
8
|
+
*/
|
|
9
|
+
import type { EnsembleResult, QuerySpec } from "./types.js";
|
|
10
|
+
/**
|
|
11
|
+
* Execute multiple query specs and fuse results using Reciprocal Rank Fusion.
|
|
12
|
+
*
|
|
13
|
+
* RRF score for a document `d` across N ranked lists:
|
|
14
|
+
* score(d) = Σ 1/(k + rank_i(d))
|
|
15
|
+
* where rank_i is the 0-based position in list i.
|
|
16
|
+
*
|
|
17
|
+
* @param execute - Executes a DSL string and returns the raw API response.
|
|
18
|
+
* In MCP context: `(dsl) => client.rawQuery(dsl)`.
|
|
19
|
+
* @param specs - Query specifications to build, execute, and fuse.
|
|
20
|
+
* @param options - Optional k (default 60) and limit (default 100).
|
|
21
|
+
*
|
|
22
|
+
* @example
|
|
23
|
+
* ```typescript
|
|
24
|
+
* const result = await ensembleQueries(
|
|
25
|
+
* (dsl) => client.rawQuery(dsl),
|
|
26
|
+
* [
|
|
27
|
+
* { entity: "publications", search: "quantum networking" },
|
|
28
|
+
* { entity: "publications", search: "quantum key distribution" },
|
|
29
|
+
* ],
|
|
30
|
+
* );
|
|
31
|
+
* // result.items: [{ id: "pub.123", rrfScore: 0.033, ... }, ...]
|
|
32
|
+
* ```
|
|
33
|
+
*/
|
|
34
|
+
export declare function ensembleQueries(execute: (dsl: string) => Promise<Record<string, unknown>>, specs: readonly QuerySpec[], options?: {
|
|
35
|
+
k?: number;
|
|
36
|
+
limit?: number;
|
|
37
|
+
}): Promise<EnsembleResult>;
|
|
38
|
+
//# sourceMappingURL=ensemble.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ensemble.d.ts","sourceRoot":"","sources":["../../src/kwq/ensemble.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EAAgB,cAAc,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAK1E;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EAC1D,KAAK,EAAE,SAAS,SAAS,EAAE,EAC3B,OAAO,CAAC,EAAE;IAAE,CAAC,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GACvC,OAAO,CAAC,cAAc,CAAC,CAoFzB"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Ring 4: RRF (Reciprocal Rank Fusion) ensemble.
|
|
3
|
+
*
|
|
4
|
+
* Executes multiple QuerySpecs in parallel, merges results using RRF scoring,
|
|
5
|
+
* and returns a fused ranking. Pure function — no LLM dependency.
|
|
6
|
+
*
|
|
7
|
+
* @module ensemble
|
|
8
|
+
*/
|
|
9
|
+
import { buildQuery } from "./build-query.js";
|
|
10
|
+
const DEFAULT_K = 60;
|
|
11
|
+
const DEFAULT_LIMIT = 100;
|
|
12
|
+
/**
|
|
13
|
+
* Execute multiple query specs and fuse results using Reciprocal Rank Fusion.
|
|
14
|
+
*
|
|
15
|
+
* RRF score for a document `d` across N ranked lists:
|
|
16
|
+
* score(d) = Σ 1/(k + rank_i(d))
|
|
17
|
+
* where rank_i is the 0-based position in list i.
|
|
18
|
+
*
|
|
19
|
+
* @param execute - Executes a DSL string and returns the raw API response.
|
|
20
|
+
* In MCP context: `(dsl) => client.rawQuery(dsl)`.
|
|
21
|
+
* @param specs - Query specifications to build, execute, and fuse.
|
|
22
|
+
* @param options - Optional k (default 60) and limit (default 100).
|
|
23
|
+
*
|
|
24
|
+
* @example
|
|
25
|
+
* ```typescript
|
|
26
|
+
* const result = await ensembleQueries(
|
|
27
|
+
* (dsl) => client.rawQuery(dsl),
|
|
28
|
+
* [
|
|
29
|
+
* { entity: "publications", search: "quantum networking" },
|
|
30
|
+
* { entity: "publications", search: "quantum key distribution" },
|
|
31
|
+
* ],
|
|
32
|
+
* );
|
|
33
|
+
* // result.items: [{ id: "pub.123", rrfScore: 0.033, ... }, ...]
|
|
34
|
+
* ```
|
|
35
|
+
*/
|
|
36
|
+
export async function ensembleQueries(execute, specs, options) {
|
|
37
|
+
const startMs = Date.now();
|
|
38
|
+
const k = options?.k ?? DEFAULT_K;
|
|
39
|
+
const limit = options?.limit ?? DEFAULT_LIMIT;
|
|
40
|
+
// Phase 1: Build DSL for each spec, skip invalid ones
|
|
41
|
+
const built = specs.map((spec, originalIndex) => {
|
|
42
|
+
const result = buildQuery(spec);
|
|
43
|
+
return { spec, result, valid: result.validation._tag === "valid", originalIndex };
|
|
44
|
+
});
|
|
45
|
+
// Phase 2: Execute valid queries in parallel
|
|
46
|
+
const validEntries = built.filter((b) => b.valid);
|
|
47
|
+
const settled = await Promise.allSettled(validEntries.map((entry) => execute(entry.result.dsl)));
|
|
48
|
+
const rankedLists = [];
|
|
49
|
+
for (let i = 0; i < settled.length; i++) {
|
|
50
|
+
const outcome = settled[i];
|
|
51
|
+
if (outcome.status !== "fulfilled")
|
|
52
|
+
continue;
|
|
53
|
+
const response = outcome.value;
|
|
54
|
+
const entity = validEntries[i].spec.entity;
|
|
55
|
+
// Dimensions API returns entity array under the entity name key
|
|
56
|
+
const entityArray = response[entity];
|
|
57
|
+
if (!Array.isArray(entityArray))
|
|
58
|
+
continue;
|
|
59
|
+
rankedLists.push({
|
|
60
|
+
specIndex: validEntries[i].originalIndex,
|
|
61
|
+
items: entityArray,
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
// Phase 4: RRF merge
|
|
65
|
+
const scoreMap = new Map();
|
|
66
|
+
for (const list of rankedLists) {
|
|
67
|
+
for (let rank = 0; rank < list.items.length; rank++) {
|
|
68
|
+
const item = list.items[rank];
|
|
69
|
+
const id = String(item.id ?? "");
|
|
70
|
+
if (!id)
|
|
71
|
+
continue;
|
|
72
|
+
const existing = scoreMap.get(id);
|
|
73
|
+
const contribution = 1 / (k + rank);
|
|
74
|
+
if (existing) {
|
|
75
|
+
existing.rrfScore += contribution;
|
|
76
|
+
existing.sourceIndices.push(list.specIndex);
|
|
77
|
+
}
|
|
78
|
+
else {
|
|
79
|
+
scoreMap.set(id, {
|
|
80
|
+
rrfScore: contribution,
|
|
81
|
+
sourceIndices: [list.specIndex],
|
|
82
|
+
data: item,
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
// Phase 5: Sort by rrfScore descending, truncate to limit
|
|
88
|
+
const items = [...scoreMap.entries()]
|
|
89
|
+
.map(([id, entry]) => ({
|
|
90
|
+
id,
|
|
91
|
+
rrfScore: entry.rrfScore,
|
|
92
|
+
sourceIndices: entry.sourceIndices,
|
|
93
|
+
data: entry.data,
|
|
94
|
+
}))
|
|
95
|
+
.sort((a, b) => b.rrfScore - a.rrfScore)
|
|
96
|
+
.slice(0, limit);
|
|
97
|
+
return {
|
|
98
|
+
items,
|
|
99
|
+
metadata: {
|
|
100
|
+
specsProvided: specs.length,
|
|
101
|
+
specsExecuted: rankedLists.length,
|
|
102
|
+
k,
|
|
103
|
+
durationMs: Date.now() - startMs,
|
|
104
|
+
},
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
//# sourceMappingURL=ensemble.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ensemble.js","sourceRoot":"","sources":["../../src/kwq/ensemble.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @digital-science/dimensions-kwq
|
|
3
|
+
*
|
|
4
|
+
* Keyword query construction for Dimensions DSL.
|
|
5
|
+
*
|
|
6
|
+
* Ring 1: buildQuery() — structured spec → DSL string
|
|
7
|
+
* Ring 4: ensembleQueries() — multi-query RRF fusion
|
|
8
|
+
*
|
|
9
|
+
* @module index
|
|
10
|
+
*/
|
|
11
|
+
export { buildQuery, buildSearchNode } from "./build-query.js";
|
|
12
|
+
export type { ConceptGroup, ConceptGroupsInput } from "./concept-groups.js";
|
|
13
|
+
export { conceptGroupsToQuerySpec } from "./concept-groups.js";
|
|
14
|
+
export { ensembleQueries } from "./ensemble.js";
|
|
15
|
+
export type { BuildResult, EnsembleItem, EnsembleResult, FilterSpec, QuerySpec, SearchExpr, } from "./types.js";
|
|
16
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/kwq/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAC/D,YAAY,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC5E,OAAO,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,YAAY,EACV,WAAW,EACX,YAAY,EACZ,cAAc,EACd,UAAU,EACV,SAAS,EACT,UAAU,GACX,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @digital-science/dimensions-kwq
|
|
3
|
+
*
|
|
4
|
+
* Keyword query construction for Dimensions DSL.
|
|
5
|
+
*
|
|
6
|
+
* Ring 1: buildQuery() — structured spec → DSL string
|
|
7
|
+
* Ring 4: ensembleQueries() — multi-query RRF fusion
|
|
8
|
+
*
|
|
9
|
+
* @module index
|
|
10
|
+
*/
|
|
11
|
+
export { buildQuery, buildSearchNode } from "./build-query.js";
|
|
12
|
+
export { conceptGroupsToQuerySpec } from "./concept-groups.js";
|
|
13
|
+
export { ensembleQueries } from "./ensemble.js";
|
|
14
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/kwq/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAE/D,OAAO,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC"}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Types for the KWQ (Keyword Query) package.
|
|
3
|
+
*
|
|
4
|
+
* Ring 1: QuerySpec → buildQuery() → BuildResult (DSL string)
|
|
5
|
+
* Ring 4: ensembleQueries() → EnsembleResult
|
|
6
|
+
*
|
|
7
|
+
* @module types
|
|
8
|
+
*/
|
|
9
|
+
/** Result of structural query validation (API validates on execute). */
|
|
10
|
+
export type ValidationResult = {
|
|
11
|
+
readonly _tag: "valid";
|
|
12
|
+
readonly warnings: readonly [];
|
|
13
|
+
} | {
|
|
14
|
+
readonly _tag: "invalid";
|
|
15
|
+
readonly errors: readonly {
|
|
16
|
+
readonly message: string;
|
|
17
|
+
}[];
|
|
18
|
+
readonly warnings: readonly [];
|
|
19
|
+
};
|
|
20
|
+
/** Dimensions search index names (see describe schema `search_fields`). */
|
|
21
|
+
export type SearchIndex = "full_data" | "full_data_exact" | "title_abstract_only" | "title_only" | "authors" | "inventors" | "investigators" | "concepts" | "funding" | "abstract_only" | "title_abstract" | "title_abstract_concepts";
|
|
22
|
+
/**
|
|
23
|
+
* A search expression tree.
|
|
24
|
+
*
|
|
25
|
+
* - `string` shorthand becomes a single phrase with default index
|
|
26
|
+
* - `{ term, index? }` for explicit per-clause index control
|
|
27
|
+
* - `{ and: [...] }` / `{ or: [...] }` for boolean composition
|
|
28
|
+
*/
|
|
29
|
+
export type SearchExpr = string | {
|
|
30
|
+
readonly term: string;
|
|
31
|
+
readonly index?: SearchIndex;
|
|
32
|
+
} | {
|
|
33
|
+
readonly and: readonly SearchExpr[];
|
|
34
|
+
} | {
|
|
35
|
+
readonly or: readonly SearchExpr[];
|
|
36
|
+
};
|
|
37
|
+
/**
|
|
38
|
+
* A WHERE-clause filter.
|
|
39
|
+
*/
|
|
40
|
+
export interface FilterSpec {
|
|
41
|
+
readonly field: string;
|
|
42
|
+
readonly op: "=" | "!=" | ">" | "<" | ">=" | "<=" | "in" | "~";
|
|
43
|
+
readonly value: string | number | readonly string[] | readonly number[];
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Full query specification — the input to `buildQuery()`.
|
|
47
|
+
*/
|
|
48
|
+
export interface QuerySpec {
|
|
49
|
+
/** Target entity type */
|
|
50
|
+
readonly entity: "publications" | "grants" | "researchers" | "patents" | "clinical_trials" | "datasets" | "policy_documents" | "organizations";
|
|
51
|
+
/** Search expression (the `for "..."` clause) */
|
|
52
|
+
readonly search?: SearchExpr;
|
|
53
|
+
/** Exclusion expression — combined as `search NOT exclude` */
|
|
54
|
+
readonly exclude?: SearchExpr;
|
|
55
|
+
/** Default search index for terms without explicit index */
|
|
56
|
+
readonly index?: SearchIndex;
|
|
57
|
+
/** WHERE-clause filters */
|
|
58
|
+
readonly filters?: readonly FilterSpec[];
|
|
59
|
+
/** Fields to return */
|
|
60
|
+
readonly fields?: readonly string[];
|
|
61
|
+
/** Sort field */
|
|
62
|
+
readonly sortBy?: string;
|
|
63
|
+
/** Sort order (default: "desc") */
|
|
64
|
+
readonly sortOrder?: "asc" | "desc";
|
|
65
|
+
/** Result limit (default: 20) */
|
|
66
|
+
readonly limit?: number;
|
|
67
|
+
/** Result offset */
|
|
68
|
+
readonly skip?: number;
|
|
69
|
+
}
|
|
70
|
+
/** Lightweight complexity summary for a built query. */
|
|
71
|
+
export interface QueryComplexity {
|
|
72
|
+
readonly filterCount: number;
|
|
73
|
+
readonly hasExclusion: boolean;
|
|
74
|
+
readonly hasSearch: boolean;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Result of `buildQuery()`.
|
|
78
|
+
*/
|
|
79
|
+
export interface BuildResult {
|
|
80
|
+
/** Emitted DSL string */
|
|
81
|
+
readonly dsl: string;
|
|
82
|
+
/** Validation result (may be valid with warnings, or invalid with errors) */
|
|
83
|
+
readonly validation: ValidationResult;
|
|
84
|
+
/** Human-readable query explanation */
|
|
85
|
+
readonly description: string;
|
|
86
|
+
/** Query complexity metrics */
|
|
87
|
+
readonly complexity: QueryComplexity;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* A single item in the fused RRF ranking.
|
|
91
|
+
*/
|
|
92
|
+
export interface EnsembleItem {
|
|
93
|
+
/** Entity ID (e.g. publication id, grant id) */
|
|
94
|
+
readonly id: string;
|
|
95
|
+
/** Reciprocal Rank Fusion score: Σ 1/(k + rank_i) */
|
|
96
|
+
readonly rrfScore: number;
|
|
97
|
+
/** Indices of the source specs that contributed this item (0-based) */
|
|
98
|
+
readonly sourceIndices: readonly number[];
|
|
99
|
+
/** Raw entity data from the first source that contained this item */
|
|
100
|
+
readonly data: Record<string, unknown>;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Result of `ensembleQueries()`.
|
|
104
|
+
*/
|
|
105
|
+
export interface EnsembleResult {
|
|
106
|
+
/** Fused items sorted by rrfScore descending */
|
|
107
|
+
readonly items: readonly EnsembleItem[];
|
|
108
|
+
/** Ensemble metadata */
|
|
109
|
+
readonly metadata: {
|
|
110
|
+
/** Number of specs provided */
|
|
111
|
+
readonly specsProvided: number;
|
|
112
|
+
/** Number of specs that produced valid DSL and executed successfully */
|
|
113
|
+
readonly specsExecuted: number;
|
|
114
|
+
/** RRF k parameter used */
|
|
115
|
+
readonly k: number;
|
|
116
|
+
/** Total duration in milliseconds */
|
|
117
|
+
readonly durationMs: number;
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/kwq/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Types for the KWQ (Keyword Query) package.
|
|
3
|
+
*
|
|
4
|
+
* Ring 1: QuerySpec → buildQuery() → BuildResult (DSL string)
|
|
5
|
+
* Ring 4: ensembleQueries() → EnsembleResult
|
|
6
|
+
*
|
|
7
|
+
* @module types
|
|
8
|
+
*/
|
|
9
|
+
export {};
|
|
10
|
+
// #endregion
|
|
11
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/kwq/types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;;AA8JH,aAAa"}
|
package/dist/lambda.d.ts
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export declare const handler: <L extends import("hono/aws-lambda").LambdaEvent>(event: L, lambdaContext?: import("hono/aws-lambda").LambdaContext) => Promise<import("hono/aws-lambda").APIGatewayProxyResult & (L extends {
|
|
2
|
+
multiValueHeaders: Record<string, string[]>;
|
|
3
|
+
} ? {
|
|
4
|
+
headers?: undefined;
|
|
5
|
+
multiValueHeaders: Record<string, string[]>;
|
|
6
|
+
} : {
|
|
7
|
+
headers: Record<string, string>;
|
|
8
|
+
multiValueHeaders?: undefined;
|
|
9
|
+
})>;
|
|
10
|
+
//# sourceMappingURL=lambda.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lambda.d.ts","sourceRoot":"","sources":["../src/lambda.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,OAAO;;;;;;;;GAAc,CAAC"}
|
package/dist/lambda.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lambda.js","sourceRoot":"","sources":["../src/lambda.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAEhC,MAAM,CAAC,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC"}
|
package/dist/main.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":";AACA;;;;GAIG"}
|
package/dist/main.js
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* MCP server entry point.
|
|
4
|
+
* Starts the Dimensions Analytics MCP server with stdio transport.
|
|
5
|
+
* @module main
|
|
6
|
+
*/
|
|
7
|
+
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
8
|
+
import { createMcpServerAsync } from "./mcp/server.js";
|
|
9
|
+
let close;
|
|
10
|
+
try {
|
|
11
|
+
const { server } = await createMcpServerAsync();
|
|
12
|
+
const transport = new StdioServerTransport();
|
|
13
|
+
server.server.onerror = (error) => console.error(`MCP server error: ${error.message}`);
|
|
14
|
+
server.server.onclose = () => {
|
|
15
|
+
process.exit(0);
|
|
16
|
+
};
|
|
17
|
+
await server.connect(transport);
|
|
18
|
+
close = async () => {
|
|
19
|
+
await server.close();
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
catch (error) {
|
|
23
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
24
|
+
console.error(`Failed to start MCP server: ${message}`);
|
|
25
|
+
process.exit(1);
|
|
26
|
+
}
|
|
27
|
+
const shutdown = async () => {
|
|
28
|
+
await close();
|
|
29
|
+
process.exit(0);
|
|
30
|
+
};
|
|
31
|
+
process.on("SIGTERM", shutdown);
|
|
32
|
+
process.on("SIGINT", shutdown);
|
|
33
|
+
//# sourceMappingURL=main.js.map
|
package/dist/main.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":";AACA;;;;GAIG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAEvD,IAAI,KAA0B,CAAC;AAE/B,IAAI,CAAC;IACH,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,oBAAoB,EAAE,CAAC;IAEhD,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAE7C,MAAM,CAAC,MAAM,CAAC,OAAO,GAAG,CAAC,KAAY,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,qBAAqB,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IAC9F,MAAM,CAAC,MAAM,CAAC,OAAO,GAAG,GAAG,EAAE;QAC3B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC;IAEF,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAEhC,KAAK,GAAG,KAAK,IAAI,EAAE;QACjB,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;IACvB,CAAC,CAAC;AACJ,CAAC;AAAC,OAAO,KAAc,EAAE,CAAC;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,+BAA+B,OAAO,EAAE,CAAC,CAAC;IACxD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,MAAM,QAAQ,GAAG,KAAK,IAAI,EAAE;IAC1B,MAAM,KAAK,EAAE,CAAC;IACd,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC;AAEF,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;AAChC,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC"}
|