@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,175 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Type definitions for Dimensions DSL special functions.
|
|
3
|
+
* Includes types for classify(), extract_concepts(), and similar_documents().
|
|
4
|
+
* @module types/special-functions
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Array of valid classification systems for runtime validation.
|
|
8
|
+
* Use this constant in Zod schemas and other runtime checks.
|
|
9
|
+
*/
|
|
10
|
+
export declare const CLASSIFICATION_SYSTEMS: readonly ["FOR", "FOR_2020", "SDG", "SDG_2021", "RCDC", "HRCS_HC", "HRCS_RAC", "HRA", "BRA", "ICRP_CSO", "ICRP_CT", "UOA"];
|
|
11
|
+
/**
|
|
12
|
+
* Classification systems supported by the Dimensions API.
|
|
13
|
+
* These systems categorize research into standardized taxonomies.
|
|
14
|
+
*/
|
|
15
|
+
export type ClassificationSystem = "FOR" | "FOR_2020" | "SDG" | "SDG_2021" | "RCDC" | "HRCS_HC" | "HRCS_RAC" | "HRA" | "BRA" | "ICRP_CSO" | "ICRP_CT" | "UOA";
|
|
16
|
+
/**
|
|
17
|
+
* A single classification entry returned by the classify() function.
|
|
18
|
+
* Contains an identifier and human-readable name for a category.
|
|
19
|
+
*/
|
|
20
|
+
export interface ClassificationEntry {
|
|
21
|
+
/** The classification code identifier */
|
|
22
|
+
readonly id: string;
|
|
23
|
+
/** The human-readable name of the classification */
|
|
24
|
+
readonly name: string;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Response from the classify() function.
|
|
28
|
+
* Keys are the classification system name, values are arrays of classification entries.
|
|
29
|
+
*
|
|
30
|
+
* @template S - The classification system type
|
|
31
|
+
*
|
|
32
|
+
* @example
|
|
33
|
+
* ```typescript
|
|
34
|
+
* // FOR classification response
|
|
35
|
+
* const response: ClassifyResponse<"FOR"> = {
|
|
36
|
+
* FOR: [
|
|
37
|
+
* { id: "1117", name: "Public Health and Health Services" },
|
|
38
|
+
* { id: "1103", name: "Clinical Sciences" }
|
|
39
|
+
* ]
|
|
40
|
+
* };
|
|
41
|
+
* ```
|
|
42
|
+
*/
|
|
43
|
+
export type ClassifyResponse<S extends ClassificationSystem = ClassificationSystem> = {
|
|
44
|
+
readonly [K in S]: readonly ClassificationEntry[];
|
|
45
|
+
};
|
|
46
|
+
/**
|
|
47
|
+
* A concept extracted without a relevance score.
|
|
48
|
+
* Used when return_scores is false or not specified.
|
|
49
|
+
*/
|
|
50
|
+
export interface ConceptBasic {
|
|
51
|
+
/** The extracted concept string */
|
|
52
|
+
readonly concept: string;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* A concept extracted with its relevance score.
|
|
56
|
+
* Used when return_scores=true is specified.
|
|
57
|
+
*/
|
|
58
|
+
export interface ConceptWithScore {
|
|
59
|
+
/** The extracted concept string */
|
|
60
|
+
readonly concept: string;
|
|
61
|
+
/** Relevance score indicating how strongly the concept relates to the text */
|
|
62
|
+
readonly relevance: number;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Response from the extract_concepts() function.
|
|
66
|
+
* Structure depends on whether return_scores was requested.
|
|
67
|
+
*
|
|
68
|
+
* @template WithScores - Whether relevance scores are included
|
|
69
|
+
*
|
|
70
|
+
* @example
|
|
71
|
+
* ```typescript
|
|
72
|
+
* // Without scores (default)
|
|
73
|
+
* const simple: ExtractConceptsResponse<false> = {
|
|
74
|
+
* extracted_concepts: ["machine learning", "neural networks", "deep learning"]
|
|
75
|
+
* };
|
|
76
|
+
*
|
|
77
|
+
* // With scores
|
|
78
|
+
* const withScores: ExtractConceptsResponse<true> = {
|
|
79
|
+
* extracted_concepts: [
|
|
80
|
+
* { concept: "machine learning", relevance: 0.95 },
|
|
81
|
+
* { concept: "neural networks", relevance: 0.87 }
|
|
82
|
+
* ]
|
|
83
|
+
* };
|
|
84
|
+
* ```
|
|
85
|
+
*/
|
|
86
|
+
export type ExtractConceptsResponse<WithScores extends boolean = false> = WithScores extends true ? {
|
|
87
|
+
readonly extracted_concepts: readonly ConceptWithScore[];
|
|
88
|
+
} : {
|
|
89
|
+
readonly extracted_concepts: readonly string[];
|
|
90
|
+
};
|
|
91
|
+
/**
|
|
92
|
+
* Input parameters for the classify() function.
|
|
93
|
+
*/
|
|
94
|
+
export interface ClassifyInput {
|
|
95
|
+
/** Document title (at least title or abstract must be provided) */
|
|
96
|
+
readonly title?: string;
|
|
97
|
+
/** Document abstract (at least title or abstract must be provided) */
|
|
98
|
+
readonly abstract?: string;
|
|
99
|
+
/** Classification system to use */
|
|
100
|
+
readonly system: ClassificationSystem;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Input parameters for the extract_concepts() function.
|
|
104
|
+
*/
|
|
105
|
+
export interface ExtractConceptsInput {
|
|
106
|
+
/** Text to extract concepts from */
|
|
107
|
+
readonly text: string;
|
|
108
|
+
/** Whether to include relevance scores in the response */
|
|
109
|
+
readonly returnScores?: boolean;
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* A single affiliation input for extract_affiliations().
|
|
113
|
+
* Can be either freetext (affiliation field) or structured (name, city, state, country).
|
|
114
|
+
*/
|
|
115
|
+
export interface AffiliationInput {
|
|
116
|
+
/** Freetext affiliation string (use this OR structured fields) */
|
|
117
|
+
readonly affiliation?: string;
|
|
118
|
+
/** Organization name (structured input) */
|
|
119
|
+
readonly name?: string;
|
|
120
|
+
/** City (structured input) */
|
|
121
|
+
readonly city?: string;
|
|
122
|
+
/** State/province (structured input) */
|
|
123
|
+
readonly state?: string;
|
|
124
|
+
/** Country (structured input) */
|
|
125
|
+
readonly country?: string;
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Input parameters for the extract_affiliations() function.
|
|
129
|
+
*/
|
|
130
|
+
export interface ExtractAffiliationsInput {
|
|
131
|
+
/** Array of affiliation inputs to resolve */
|
|
132
|
+
readonly affiliations: readonly AffiliationInput[];
|
|
133
|
+
/** Results detail level: "basic" (default), "full", or "publisher" */
|
|
134
|
+
readonly results?: "basic" | "full" | "publisher";
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* A single affiliation result from extract_affiliations().
|
|
138
|
+
*/
|
|
139
|
+
export interface AffiliationResult {
|
|
140
|
+
/** The organization identifier (e.g., "grid.xxx" or "or.xxx") */
|
|
141
|
+
readonly id: string;
|
|
142
|
+
/** The canonical organization name */
|
|
143
|
+
readonly name: string;
|
|
144
|
+
/** Country of the organization */
|
|
145
|
+
readonly country?: string;
|
|
146
|
+
/** Match confidence score (0-1) */
|
|
147
|
+
readonly score?: number;
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Response from the extract_affiliations() function.
|
|
151
|
+
*/
|
|
152
|
+
export interface ExtractAffiliationsResponse {
|
|
153
|
+
readonly extracted_affiliations: readonly AffiliationResult[];
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Input parameters for the extract_grants() function.
|
|
157
|
+
*/
|
|
158
|
+
export interface ExtractGrantsInput {
|
|
159
|
+
/** Grant number to look up */
|
|
160
|
+
readonly grantNumber: string;
|
|
161
|
+
/** FundRef ID of the funder (alternative to funderName) */
|
|
162
|
+
readonly fundref?: string;
|
|
163
|
+
/** Funder name (alternative to fundref) */
|
|
164
|
+
readonly funderName?: string;
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Response from the extract_grants() function.
|
|
168
|
+
* The Dimensions API resolves a grant number to a single grant ID.
|
|
169
|
+
* Returns `null` when no matching grant is found.
|
|
170
|
+
*/
|
|
171
|
+
export interface ExtractGrantsResponse {
|
|
172
|
+
/** Resolved Dimensions grant ID (e.g. "grant.2544064"), or null if not found */
|
|
173
|
+
readonly grant_id: string | null;
|
|
174
|
+
}
|
|
175
|
+
//# sourceMappingURL=special-functions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"special-functions.d.ts","sourceRoot":"","sources":["../../../src/dsl/types/special-functions.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Type definitions for Dimensions DSL special functions.
|
|
3
|
+
* Includes types for classify(), extract_concepts(), and similar_documents().
|
|
4
|
+
* @module types/special-functions
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Array of valid classification systems for runtime validation.
|
|
8
|
+
* Use this constant in Zod schemas and other runtime checks.
|
|
9
|
+
*/
|
|
10
|
+
export const CLASSIFICATION_SYSTEMS = [
|
|
11
|
+
"FOR",
|
|
12
|
+
"FOR_2020",
|
|
13
|
+
"SDG",
|
|
14
|
+
"SDG_2021",
|
|
15
|
+
"RCDC",
|
|
16
|
+
"HRCS_HC",
|
|
17
|
+
"HRCS_RAC",
|
|
18
|
+
"HRA",
|
|
19
|
+
"BRA",
|
|
20
|
+
"ICRP_CSO",
|
|
21
|
+
"ICRP_CT",
|
|
22
|
+
"UOA",
|
|
23
|
+
];
|
|
24
|
+
// #endregion
|
|
25
|
+
//# sourceMappingURL=special-functions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"special-functions.js","sourceRoot":"","sources":["../../../src/dsl/types/special-functions.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;GAGG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,KAAK;IACL,UAAU;IACV,KAAK;IACL,UAAU;IACV,MAAM;IACN,SAAS;IACT,UAAU;IACV,KAAK;IACL,KAAK;IACL,UAAU;IACV,SAAS;IACT,KAAK;CACG,CAAC;AAoMX,aAAa"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dimensions DSL vocabulary types and runtime validation lists.
|
|
3
|
+
* @module types/vocabulary
|
|
4
|
+
*/
|
|
5
|
+
/** Comparison operators supported in WHERE clause filters. */
|
|
6
|
+
export type Operator = "=" | "!=" | "<" | ">" | "<=" | ">=" | "in" | "~" | "@";
|
|
7
|
+
/** Backward-compatible alias for {@link Operator}. */
|
|
8
|
+
export type WhereOperator = Operator;
|
|
9
|
+
/** Supported entity types (data sources) in the Dimensions DSL. */
|
|
10
|
+
export type EntityType = "publications" | "grants" | "researchers" | "patents" | "clinical_trials" | "datasets" | "policy_documents" | "organizations";
|
|
11
|
+
/** Search indexes for `search <source> in <index> for "..."` clauses. */
|
|
12
|
+
export type SearchIndex = "full_data" | "full_data_exact" | "title_abstract_only" | "title_only" | "authors" | "inventors" | "investigators" | "concepts" | "funding" | "acknowledgements" | "raw_affiliations" | "assignees" | "title_abstract_claims";
|
|
13
|
+
/** Sort direction for order-by clauses. */
|
|
14
|
+
export type SortOrder = "asc" | "desc";
|
|
15
|
+
/** Valid operators for runtime validation. */
|
|
16
|
+
export declare const VALID_OPERATORS: readonly Operator[];
|
|
17
|
+
/** Valid entity types for runtime validation. */
|
|
18
|
+
export declare const VALID_ENTITIES: readonly EntityType[];
|
|
19
|
+
/** Valid search indexes for runtime validation. */
|
|
20
|
+
export declare const VALID_INDEXES: readonly SearchIndex[];
|
|
21
|
+
//# sourceMappingURL=vocabulary.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vocabulary.d.ts","sourceRoot":"","sources":["../../../src/dsl/types/vocabulary.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,8DAA8D;AAC9D,MAAM,MAAM,QAAQ,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,CAAC;AAE/E,sDAAsD;AACtD,MAAM,MAAM,aAAa,GAAG,QAAQ,CAAC;AAErC,mEAAmE;AACnE,MAAM,MAAM,UAAU,GAClB,cAAc,GACd,QAAQ,GACR,aAAa,GACb,SAAS,GACT,iBAAiB,GACjB,UAAU,GACV,kBAAkB,GAClB,eAAe,CAAC;AAEpB,yEAAyE;AACzE,MAAM,MAAM,WAAW,GACnB,WAAW,GACX,iBAAiB,GACjB,qBAAqB,GACrB,YAAY,GACZ,SAAS,GACT,WAAW,GACX,eAAe,GACf,UAAU,GACV,SAAS,GACT,kBAAkB,GAClB,kBAAkB,GAClB,WAAW,GACX,uBAAuB,CAAC;AAE5B,2CAA2C;AAC3C,MAAM,MAAM,SAAS,GAAG,KAAK,GAAG,MAAM,CAAC;AAEvC,8CAA8C;AAC9C,eAAO,MAAM,eAAe,EAAE,SAAS,QAAQ,EAUrC,CAAC;AAEX,iDAAiD;AACjD,eAAO,MAAM,cAAc,EAAE,SAAS,UAAU,EAStC,CAAC;AAEX,mDAAmD;AACnD,eAAO,MAAM,aAAa,EAAE,SAAS,WAAW,EActC,CAAC"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dimensions DSL vocabulary types and runtime validation lists.
|
|
3
|
+
* @module types/vocabulary
|
|
4
|
+
*/
|
|
5
|
+
/** Valid operators for runtime validation. */
|
|
6
|
+
export const VALID_OPERATORS = [
|
|
7
|
+
"=",
|
|
8
|
+
"!=",
|
|
9
|
+
">",
|
|
10
|
+
"<",
|
|
11
|
+
">=",
|
|
12
|
+
"<=",
|
|
13
|
+
"in",
|
|
14
|
+
"~",
|
|
15
|
+
"@",
|
|
16
|
+
];
|
|
17
|
+
/** Valid entity types for runtime validation. */
|
|
18
|
+
export const VALID_ENTITIES = [
|
|
19
|
+
"publications",
|
|
20
|
+
"grants",
|
|
21
|
+
"researchers",
|
|
22
|
+
"patents",
|
|
23
|
+
"clinical_trials",
|
|
24
|
+
"datasets",
|
|
25
|
+
"policy_documents",
|
|
26
|
+
"organizations",
|
|
27
|
+
];
|
|
28
|
+
/** Valid search indexes for runtime validation. */
|
|
29
|
+
export const VALID_INDEXES = [
|
|
30
|
+
"full_data",
|
|
31
|
+
"full_data_exact",
|
|
32
|
+
"title_abstract_only",
|
|
33
|
+
"title_only",
|
|
34
|
+
"authors",
|
|
35
|
+
"inventors",
|
|
36
|
+
"investigators",
|
|
37
|
+
"concepts",
|
|
38
|
+
"funding",
|
|
39
|
+
"acknowledgements",
|
|
40
|
+
"raw_affiliations",
|
|
41
|
+
"assignees",
|
|
42
|
+
"title_abstract_claims",
|
|
43
|
+
];
|
|
44
|
+
//# sourceMappingURL=vocabulary.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vocabulary.js","sourceRoot":"","sources":["../../../src/dsl/types/vocabulary.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAsCH,8CAA8C;AAC9C,MAAM,CAAC,MAAM,eAAe,GAAwB;IAClD,GAAG;IACH,IAAI;IACJ,GAAG;IACH,GAAG;IACH,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,GAAG;IACH,GAAG;CACK,CAAC;AAEX,iDAAiD;AACjD,MAAM,CAAC,MAAM,cAAc,GAA0B;IACnD,cAAc;IACd,QAAQ;IACR,aAAa;IACb,SAAS;IACT,iBAAiB;IACjB,UAAU;IACV,kBAAkB;IAClB,eAAe;CACP,CAAC;AAEX,mDAAmD;AACnD,MAAM,CAAC,MAAM,aAAa,GAA2B;IACnD,WAAW;IACX,iBAAiB;IACjB,qBAAqB;IACrB,YAAY;IACZ,SAAS;IACT,WAAW;IACX,eAAe;IACf,UAAU;IACV,SAAS;IACT,kBAAkB;IAClB,kBAAkB;IAClB,WAAW;IACX,uBAAuB;CACf,CAAC"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dimensions reasonable-use policy guardrails for MCP tools.
|
|
3
|
+
* @see https://docs.dimensions.ai/dsl/usagepolicy.html
|
|
4
|
+
* @module dsl/usage-policy
|
|
5
|
+
*/
|
|
6
|
+
import { SCHEMA_LIMITS } from "./schema/store.js";
|
|
7
|
+
/** Official Dimensions usage policy URL. */
|
|
8
|
+
export declare const USAGE_POLICY_URL = "https://docs.dimensions.ai/dsl/usagepolicy.html";
|
|
9
|
+
/** MCP resource URI for policy guidance. */
|
|
10
|
+
export declare const USAGE_POLICY_RESOURCE_URI = "dimensions://schema/policy";
|
|
11
|
+
/** Short notice included in guarded tool responses. */
|
|
12
|
+
export declare const POLICY_NOTICE: string;
|
|
13
|
+
/** Parsed skip/limit modifiers from a DSL query string. */
|
|
14
|
+
export type DslPaginationModifiers = {
|
|
15
|
+
readonly limit?: number;
|
|
16
|
+
readonly skip?: number;
|
|
17
|
+
};
|
|
18
|
+
/** Payload for dimensions://schema/policy. */
|
|
19
|
+
export type UsagePolicyPayload = {
|
|
20
|
+
readonly source: string;
|
|
21
|
+
readonly purpose: string;
|
|
22
|
+
readonly limits: typeof SCHEMA_LIMITS;
|
|
23
|
+
readonly guardrails: {
|
|
24
|
+
readonly largeResultWarningThreshold: number;
|
|
25
|
+
readonly confirmLargeFetchRequiredWhen: {
|
|
26
|
+
readonly batchMaxPagesExceeds: number;
|
|
27
|
+
readonly batchRecordsExceeds: number;
|
|
28
|
+
readonly searchSkipAtLeast: number;
|
|
29
|
+
readonly searchPageAtLeast: number;
|
|
30
|
+
};
|
|
31
|
+
readonly clientRateLimitPerMinute: number;
|
|
32
|
+
};
|
|
33
|
+
readonly recommendations: readonly string[];
|
|
34
|
+
readonly notice: string;
|
|
35
|
+
};
|
|
36
|
+
/**
|
|
37
|
+
* Builds the usage policy payload for MCP resources and agent discovery.
|
|
38
|
+
* @returns Policy guidance object
|
|
39
|
+
*/
|
|
40
|
+
export declare function buildUsagePolicy(): UsagePolicyPayload;
|
|
41
|
+
/**
|
|
42
|
+
* Extracts `limit` and `skip` modifiers from a DSL query string.
|
|
43
|
+
* @param dsl - Raw DSL query
|
|
44
|
+
* @returns Parsed modifiers (undefined when absent)
|
|
45
|
+
*/
|
|
46
|
+
export declare function parseDslPagination(dsl: string): DslPaginationModifiers;
|
|
47
|
+
/**
|
|
48
|
+
* Returns true when the DSL appears to be a facet-only query (no entity row pagination).
|
|
49
|
+
* @param dsl - Raw DSL query
|
|
50
|
+
* @returns Whether the query targets facets without entity records
|
|
51
|
+
*/
|
|
52
|
+
export declare function isFacetOnlyQuery(dsl: string): boolean;
|
|
53
|
+
/** Options for single-page search policy validation. */
|
|
54
|
+
export type SearchPolicyOptions = {
|
|
55
|
+
readonly skip: number;
|
|
56
|
+
readonly limit: number;
|
|
57
|
+
readonly confirmLargeFetch?: boolean;
|
|
58
|
+
};
|
|
59
|
+
/**
|
|
60
|
+
* Validates single-page search pagination against reasonable-use guardrails.
|
|
61
|
+
* @param options - Resolved skip/limit and optional confirmation flag
|
|
62
|
+
* @throws {ValidationError} When deep pagination lacks confirmation
|
|
63
|
+
*/
|
|
64
|
+
export declare function validateSearchPaginationPolicy(options: SearchPolicyOptions): void;
|
|
65
|
+
/** Options for raw DSL policy validation. */
|
|
66
|
+
export type ExecuteDslPolicyOptions = {
|
|
67
|
+
readonly dsl: string;
|
|
68
|
+
readonly confirmLargeFetch?: boolean;
|
|
69
|
+
};
|
|
70
|
+
/**
|
|
71
|
+
* Validates a raw DSL query against pagination and reasonable-use guardrails.
|
|
72
|
+
* @param options - DSL string and optional confirmation flag
|
|
73
|
+
* @throws {ValidationError} When the query violates policy bounds
|
|
74
|
+
*/
|
|
75
|
+
export declare function validateExecuteDslPolicy(options: ExecuteDslPolicyOptions): void;
|
|
76
|
+
/**
|
|
77
|
+
* Builds response-level policy hints for execute_dsl results.
|
|
78
|
+
* @param dsl - Executed DSL query
|
|
79
|
+
* @param response - Raw API response
|
|
80
|
+
* @returns Optional policy fields to merge into the tool result
|
|
81
|
+
*/
|
|
82
|
+
export declare function buildExecuteDslPolicyHints(dsl: string, response: Record<string, unknown>): {
|
|
83
|
+
policyNotice?: string;
|
|
84
|
+
largeResultWarning?: string;
|
|
85
|
+
paginationHint?: string;
|
|
86
|
+
};
|
|
87
|
+
//# sourceMappingURL=usage-policy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"usage-policy.d.ts","sourceRoot":"","sources":["../../src/dsl/usage-policy.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAUH,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAElD,4CAA4C;AAC5C,eAAO,MAAM,gBAAgB,oDAAoD,CAAC;AAElF,4CAA4C;AAC5C,eAAO,MAAM,yBAAyB,+BAA+B,CAAC;AAEtE,uDAAuD;AACvD,eAAO,MAAM,aAAa,QAEmC,CAAC;AAE9D,2DAA2D;AAC3D,MAAM,MAAM,sBAAsB,GAAG;IACnC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,8CAA8C;AAC9C,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,OAAO,aAAa,CAAC;IACtC,QAAQ,CAAC,UAAU,EAAE;QACnB,QAAQ,CAAC,2BAA2B,EAAE,MAAM,CAAC;QAC7C,QAAQ,CAAC,6BAA6B,EAAE;YACtC,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;YACtC,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;YACrC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;YACnC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;SACpC,CAAC;QACF,QAAQ,CAAC,wBAAwB,EAAE,MAAM,CAAC;KAC3C,CAAC;IACF,QAAQ,CAAC,eAAe,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF;;;GAGG;AACH,wBAAgB,gBAAgB,IAAI,kBAAkB,CAyBrD;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,sBAAsB,CAOtE;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAarD;AAED,wDAAwD;AACxD,MAAM,MAAM,mBAAmB,GAAG;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,iBAAiB,CAAC,EAAE,OAAO,CAAC;CACtC,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,8BAA8B,CAAC,OAAO,EAAE,mBAAmB,GAAG,IAAI,CAgBjF;AAED,6CAA6C;AAC7C,MAAM,MAAM,uBAAuB,GAAG;IACpC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,iBAAiB,CAAC,EAAE,OAAO,CAAC;CACtC,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,uBAAuB,GAAG,IAAI,CAmB/E;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,CACxC,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAChC;IACD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CA0BA"}
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dimensions reasonable-use policy guardrails for MCP tools.
|
|
3
|
+
* @see https://docs.dimensions.ai/dsl/usagepolicy.html
|
|
4
|
+
* @module dsl/usage-policy
|
|
5
|
+
*/
|
|
6
|
+
import { ValidationError } from "../client/index.js";
|
|
7
|
+
import { CONFIRM_LARGE_FETCH_PAGES, CONFIRM_LARGE_FETCH_RECORDS, LARGE_RESULT_THRESHOLD, largeResultWarning, validatePaginationBounds, } from "./pagination.js";
|
|
8
|
+
import { SCHEMA_LIMITS } from "./schema/store.js";
|
|
9
|
+
/** Official Dimensions usage policy URL. */
|
|
10
|
+
export const USAGE_POLICY_URL = "https://docs.dimensions.ai/dsl/usagepolicy.html";
|
|
11
|
+
/** MCP resource URI for policy guidance. */
|
|
12
|
+
export const USAGE_POLICY_RESOURCE_URI = "dimensions://schema/policy";
|
|
13
|
+
/** Short notice included in guarded tool responses. */
|
|
14
|
+
export const POLICY_NOTICE = "Dimensions API is for task-sized analytical queries, not bulk local copies or training data. " +
|
|
15
|
+
`See ${USAGE_POLICY_RESOURCE_URI} and ${USAGE_POLICY_URL}.`;
|
|
16
|
+
/**
|
|
17
|
+
* Builds the usage policy payload for MCP resources and agent discovery.
|
|
18
|
+
* @returns Policy guidance object
|
|
19
|
+
*/
|
|
20
|
+
export function buildUsagePolicy() {
|
|
21
|
+
return {
|
|
22
|
+
source: USAGE_POLICY_URL,
|
|
23
|
+
purpose: "Support complex analytical tasks — not local copies of Dimensions data, training corpora, or open-ended crawling.",
|
|
24
|
+
limits: SCHEMA_LIMITS,
|
|
25
|
+
guardrails: {
|
|
26
|
+
largeResultWarningThreshold: LARGE_RESULT_THRESHOLD,
|
|
27
|
+
confirmLargeFetchRequiredWhen: {
|
|
28
|
+
batchMaxPagesExceeds: CONFIRM_LARGE_FETCH_PAGES,
|
|
29
|
+
batchRecordsExceeds: CONFIRM_LARGE_FETCH_RECORDS,
|
|
30
|
+
searchSkipAtLeast: CONFIRM_LARGE_FETCH_RECORDS,
|
|
31
|
+
searchPageAtLeast: CONFIRM_LARGE_FETCH_PAGES,
|
|
32
|
+
},
|
|
33
|
+
clientRateLimitPerMinute: SCHEMA_LIMITS.requestsPerMinute,
|
|
34
|
+
},
|
|
35
|
+
recommendations: [
|
|
36
|
+
"Start with narrow filters and facet_query before paginating large sets",
|
|
37
|
+
"Use search_* with default limit 100 for discovery; raise only when needed",
|
|
38
|
+
"Use fetch_search_pages aggregate mode for ID lists and counts without full rows",
|
|
39
|
+
"Use fetch_search_pages file mode (JSONL or CSV) only with outputPath and confirmLargeFetch for large exports",
|
|
40
|
+
"Facets return at most 1000 buckets with no pagination — do not loop facet queries",
|
|
41
|
+
],
|
|
42
|
+
notice: POLICY_NOTICE,
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Extracts `limit` and `skip` modifiers from a DSL query string.
|
|
47
|
+
* @param dsl - Raw DSL query
|
|
48
|
+
* @returns Parsed modifiers (undefined when absent)
|
|
49
|
+
*/
|
|
50
|
+
export function parseDslPagination(dsl) {
|
|
51
|
+
const limitMatch = dsl.match(/\blimit\s+(\d+)\b/i);
|
|
52
|
+
const skipMatch = dsl.match(/\bskip\s+(\d+)\b/i);
|
|
53
|
+
return {
|
|
54
|
+
...(limitMatch ? { limit: Number.parseInt(limitMatch[1], 10) } : {}),
|
|
55
|
+
...(skipMatch ? { skip: Number.parseInt(skipMatch[1], 10) } : {}),
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Returns true when the DSL appears to be a facet-only query (no entity row pagination).
|
|
60
|
+
* @param dsl - Raw DSL query
|
|
61
|
+
* @returns Whether the query targets facets without entity records
|
|
62
|
+
*/
|
|
63
|
+
export function isFacetOnlyQuery(dsl) {
|
|
64
|
+
const hasFacetReturn = /\breturn\s+(?:year|journal|funder|researcher|category|phase|source|repository|funder_orgs?)\b/i.test(dsl) ||
|
|
65
|
+
/\breturn\s+\w+\s+facet\b/i.test(dsl) ||
|
|
66
|
+
/\bfacet\s+\w+/i.test(dsl);
|
|
67
|
+
const hasEntityReturn = /\breturn\s+(?:publications|grants|patents|clinical_trials|datasets|policy_documents|researchers|organizations)\b/i.test(dsl);
|
|
68
|
+
const limitZero = /\blimit\s+0\b/i.test(dsl);
|
|
69
|
+
return hasFacetReturn && (!hasEntityReturn || limitZero);
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Validates single-page search pagination against reasonable-use guardrails.
|
|
73
|
+
* @param options - Resolved skip/limit and optional confirmation flag
|
|
74
|
+
* @throws {ValidationError} When deep pagination lacks confirmation
|
|
75
|
+
*/
|
|
76
|
+
export function validateSearchPaginationPolicy(options) {
|
|
77
|
+
const { skip, limit, confirmLargeFetch } = options;
|
|
78
|
+
const page = limit > 0 ? Math.floor(skip / limit) : 0;
|
|
79
|
+
const needsConfirm = skip >= CONFIRM_LARGE_FETCH_RECORDS ||
|
|
80
|
+
page >= CONFIRM_LARGE_FETCH_PAGES ||
|
|
81
|
+
(limit === SCHEMA_LIMITS.maxLimit && skip > 0);
|
|
82
|
+
if (needsConfirm && !confirmLargeFetch) {
|
|
83
|
+
throw new ValidationError(`Deep pagination requires confirmLargeFetch: true (skip=${skip}, limit=${limit}, page≈${page}). ` +
|
|
84
|
+
"Narrow filters first or use facet_query. See dimensions://schema/policy.", { skip, limit, page, confirmLargeFetch, policyUri: USAGE_POLICY_RESOURCE_URI });
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Validates a raw DSL query against pagination and reasonable-use guardrails.
|
|
89
|
+
* @param options - DSL string and optional confirmation flag
|
|
90
|
+
* @throws {ValidationError} When the query violates policy bounds
|
|
91
|
+
*/
|
|
92
|
+
export function validateExecuteDslPolicy(options) {
|
|
93
|
+
const { dsl, confirmLargeFetch } = options;
|
|
94
|
+
const { limit, skip } = parseDslPagination(dsl);
|
|
95
|
+
if (isFacetOnlyQuery(dsl) && skip !== undefined && skip > 0) {
|
|
96
|
+
throw new ValidationError("Facet queries cannot be paginated with skip — facets return at most 1000 buckets with no pagination.", { skip, policyUri: USAGE_POLICY_RESOURCE_URI });
|
|
97
|
+
}
|
|
98
|
+
if (skip !== undefined || limit !== undefined) {
|
|
99
|
+
validatePaginationBounds(skip ?? 0, limit ?? SCHEMA_LIMITS.maxLimit);
|
|
100
|
+
validateSearchPaginationPolicy({
|
|
101
|
+
skip: skip ?? 0,
|
|
102
|
+
limit: limit ?? 100,
|
|
103
|
+
confirmLargeFetch,
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Builds response-level policy hints for execute_dsl results.
|
|
109
|
+
* @param dsl - Executed DSL query
|
|
110
|
+
* @param response - Raw API response
|
|
111
|
+
* @returns Optional policy fields to merge into the tool result
|
|
112
|
+
*/
|
|
113
|
+
export function buildExecuteDslPolicyHints(dsl, response) {
|
|
114
|
+
const stats = response._stats;
|
|
115
|
+
const totalCount = stats?.total_count;
|
|
116
|
+
const hints = {};
|
|
117
|
+
const warning = totalCount !== undefined ? largeResultWarning(totalCount) : undefined;
|
|
118
|
+
if (warning) {
|
|
119
|
+
hints.largeResultWarning = warning;
|
|
120
|
+
hints.policyNotice = POLICY_NOTICE;
|
|
121
|
+
}
|
|
122
|
+
const { limit, skip } = parseDslPagination(dsl);
|
|
123
|
+
if (totalCount !== undefined && limit !== undefined && totalCount > (skip ?? 0) + limit) {
|
|
124
|
+
const pages = Math.ceil(totalCount / limit);
|
|
125
|
+
const minutes = Math.ceil(pages / SCHEMA_LIMITS.requestsPerMinute);
|
|
126
|
+
hints.paginationHint =
|
|
127
|
+
`${totalCount} total matches; this page returned up to ${limit}. ` +
|
|
128
|
+
`Full pagination ≈${pages} requests (~${minutes} min). Prefer search_* or fetch_search_pages.`;
|
|
129
|
+
hints.policyNotice ??= POLICY_NOTICE;
|
|
130
|
+
}
|
|
131
|
+
return hints;
|
|
132
|
+
}
|
|
133
|
+
//# sourceMappingURL=usage-policy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"usage-policy.js","sourceRoot":"","sources":["../../src/dsl/usage-policy.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Escapes a string for safe inclusion in a DSL query.
|
|
3
|
+
*
|
|
4
|
+
* Handles backslashes, double quotes (including Unicode smart quotes),
|
|
5
|
+
* and control characters to prevent DSL injection attacks when
|
|
6
|
+
* user-supplied strings are interpolated into queries.
|
|
7
|
+
*
|
|
8
|
+
* Characters escaped via `\uXXXX` (ANTLR grammar-compatible):
|
|
9
|
+
* - Null byte and C0 controls (U+0000–U+001F) not covered by named escapes
|
|
10
|
+
* - DEL and C1 controls (U+007F–U+009F)
|
|
11
|
+
* - Smart single quotes (U+2018, U+2019)
|
|
12
|
+
* - Line and paragraph separators (U+2028, U+2029)
|
|
13
|
+
*
|
|
14
|
+
* @param text - The string to escape
|
|
15
|
+
* @returns The escaped string safe for DSL interpolation
|
|
16
|
+
*/
|
|
17
|
+
export declare function escapeDslString(text: string): string;
|
|
18
|
+
/**
|
|
19
|
+
* Unescapes DSL string literal content (inverse of {@link escapeDslString} for common sequences).
|
|
20
|
+
* @param text - Escaped string content without surrounding quotes
|
|
21
|
+
* @returns Unescaped string
|
|
22
|
+
*/
|
|
23
|
+
export declare function unescapeDslString(text: string): string;
|
|
24
|
+
//# sourceMappingURL=escape.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"escape.d.ts","sourceRoot":"","sources":["../../../src/dsl/utils/escape.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAkDpD;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAiDtD"}
|