@digital-science-dsl/dimensions-analytics-mcp 0.5.3 → 1.0.1

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.
Files changed (218) hide show
  1. package/CHANGELOG.md +4 -56
  2. package/README.md +1 -5
  3. package/dist/client/deployment-config.d.ts +20 -2
  4. package/dist/client/deployment-config.d.ts.map +1 -1
  5. package/dist/client/deployment-config.js +26 -2
  6. package/dist/client/deployment-config.js.map +1 -1
  7. package/dist/client/internal-dsl-client.d.ts +1 -1
  8. package/dist/client/internal-dsl-client.d.ts.map +1 -1
  9. package/dist/client/internal-dsl-client.js +2 -5
  10. package/dist/client/internal-dsl-client.js.map +1 -1
  11. package/dist/dsl/create-client.d.ts +1 -1
  12. package/dist/dsl/create-client.js +1 -1
  13. package/dist/dsl/fluent-query-builder.d.ts +1 -1
  14. package/dist/dsl/fluent-query-builder.js +1 -1
  15. package/dist/dsl/schema/cache.d.ts +2 -2
  16. package/dist/dsl/schema/cache.d.ts.map +1 -1
  17. package/dist/dsl/schema/cache.js +8 -14
  18. package/dist/dsl/schema/cache.js.map +1 -1
  19. package/dist/dsl/schema/load.d.ts +0 -1
  20. package/dist/dsl/schema/load.d.ts.map +1 -1
  21. package/dist/dsl/schema/load.js +1 -3
  22. package/dist/dsl/schema/load.js.map +1 -1
  23. package/dist/mcp/tools/schema.d.ts +0 -2
  24. package/dist/mcp/tools/schema.d.ts.map +1 -1
  25. package/dist/mcp/tools/schema.js.map +1 -1
  26. package/dist/mcp/utils.d.ts +0 -4
  27. package/dist/mcp/utils.d.ts.map +1 -1
  28. package/dist/mcp/utils.js +0 -7
  29. package/dist/mcp/utils.js.map +1 -1
  30. package/package.json +1 -1
  31. package/src/client/deployment-config.ts +39 -2
  32. package/src/client/internal-dsl-client.ts +2 -6
  33. package/src/dsl/create-client.ts +1 -1
  34. package/src/dsl/fluent-query-builder.ts +1 -1
  35. package/src/dsl/schema/cache.ts +8 -13
  36. package/src/dsl/schema/load.ts +1 -4
  37. package/src/mcp/tools/schema.ts +0 -3
  38. package/src/mcp/utils.ts +0 -12
  39. package/test/client/deployment-config.test.ts +25 -1
  40. package/test/client/http-client.test.ts +2 -2
  41. package/test/client/internal-dsl-client.test.ts +3 -0
  42. package/test/dsl/schema/cache.test.ts +2 -4
  43. package/test/helpers/tool-test-harness.ts +2 -19
  44. package/test/middleware/field-aliases.test.ts +1 -1
  45. package/test/tools/analytics.test.ts +2 -2
  46. package/tsconfig.tsbuildinfo +1 -1
  47. package/dist/examples/dsl-examples.d.ts +0 -11
  48. package/dist/examples/dsl-examples.d.ts.map +0 -1
  49. package/dist/examples/dsl-examples.js +0 -49
  50. package/dist/examples/dsl-examples.js.map +0 -1
  51. package/dist/examples/usage-scenarios.d.ts +0 -22
  52. package/dist/examples/usage-scenarios.d.ts.map +0 -1
  53. package/dist/examples/usage-scenarios.js +0 -173
  54. package/dist/examples/usage-scenarios.js.map +0 -1
  55. package/dist/funder-org-names.d.ts +0 -12
  56. package/dist/funder-org-names.d.ts.map +0 -1
  57. package/dist/funder-org-names.js +0 -30
  58. package/dist/funder-org-names.js.map +0 -1
  59. package/dist/http.d.ts +0 -29
  60. package/dist/http.d.ts.map +0 -1
  61. package/dist/http.js +0 -173
  62. package/dist/http.js.map +0 -1
  63. package/dist/kwq/build-query.d.ts +0 -26
  64. package/dist/kwq/build-query.d.ts.map +0 -1
  65. package/dist/kwq/build-query.js +0 -37
  66. package/dist/kwq/build-query.js.map +0 -1
  67. package/dist/kwq/concept-groups.d.ts +0 -49
  68. package/dist/kwq/concept-groups.d.ts.map +0 -1
  69. package/dist/kwq/concept-groups.js +0 -55
  70. package/dist/kwq/concept-groups.js.map +0 -1
  71. package/dist/kwq/dsl-assembler.d.ts +0 -28
  72. package/dist/kwq/dsl-assembler.d.ts.map +0 -1
  73. package/dist/kwq/dsl-assembler.js +0 -124
  74. package/dist/kwq/dsl-assembler.js.map +0 -1
  75. package/dist/kwq/ensemble.d.ts +0 -38
  76. package/dist/kwq/ensemble.d.ts.map +0 -1
  77. package/dist/kwq/ensemble.js +0 -107
  78. package/dist/kwq/ensemble.js.map +0 -1
  79. package/dist/kwq/index.d.ts +0 -16
  80. package/dist/kwq/index.d.ts.map +0 -1
  81. package/dist/kwq/index.js +0 -14
  82. package/dist/kwq/index.js.map +0 -1
  83. package/dist/kwq/types.d.ts +0 -120
  84. package/dist/kwq/types.d.ts.map +0 -1
  85. package/dist/kwq/types.js +0 -11
  86. package/dist/kwq/types.js.map +0 -1
  87. package/dist/lambda.d.ts +0 -10
  88. package/dist/lambda.d.ts.map +0 -1
  89. package/dist/lambda.js +0 -4
  90. package/dist/lambda.js.map +0 -1
  91. package/dist/mcp/tools/concept-profile.d.ts +0 -14
  92. package/dist/mcp/tools/concept-profile.d.ts.map +0 -1
  93. package/dist/mcp/tools/concept-profile.js +0 -130
  94. package/dist/mcp/tools/concept-profile.js.map +0 -1
  95. package/dist/mcp/tools/dataset-profile.d.ts +0 -15
  96. package/dist/mcp/tools/dataset-profile.d.ts.map +0 -1
  97. package/dist/mcp/tools/dataset-profile.js +0 -194
  98. package/dist/mcp/tools/dataset-profile.js.map +0 -1
  99. package/dist/mcp/tools/impact-chain.d.ts +0 -15
  100. package/dist/mcp/tools/impact-chain.d.ts.map +0 -1
  101. package/dist/mcp/tools/impact-chain.js +0 -96
  102. package/dist/mcp/tools/impact-chain.js.map +0 -1
  103. package/dist/mcp/tools/kwq.d.ts +0 -19
  104. package/dist/mcp/tools/kwq.d.ts.map +0 -1
  105. package/dist/mcp/tools/kwq.js +0 -156
  106. package/dist/mcp/tools/kwq.js.map +0 -1
  107. package/dist/mcp/tools/policy-profile.d.ts +0 -15
  108. package/dist/mcp/tools/policy-profile.d.ts.map +0 -1
  109. package/dist/mcp/tools/policy-profile.js +0 -174
  110. package/dist/mcp/tools/policy-profile.js.map +0 -1
  111. package/dist/mcp/tools/profile.d.ts +0 -14
  112. package/dist/mcp/tools/profile.d.ts.map +0 -1
  113. package/dist/mcp/tools/profile.js +0 -349
  114. package/dist/mcp/tools/profile.js.map +0 -1
  115. package/dist/middleware/field-aliases.d.ts +0 -97
  116. package/dist/middleware/field-aliases.d.ts.map +0 -1
  117. package/dist/middleware/field-aliases.js +0 -208
  118. package/dist/middleware/field-aliases.js.map +0 -1
  119. package/dist/resources/schema.d.ts +0 -13
  120. package/dist/resources/schema.d.ts.map +0 -1
  121. package/dist/resources/schema.js +0 -204
  122. package/dist/resources/schema.js.map +0 -1
  123. package/dist/schema/context.d.ts +0 -10
  124. package/dist/schema/context.d.ts.map +0 -1
  125. package/dist/schema/context.js +0 -6
  126. package/dist/schema/context.js.map +0 -1
  127. package/dist/schema/index.d.ts +0 -9
  128. package/dist/schema/index.d.ts.map +0 -1
  129. package/dist/schema/index.js +0 -6
  130. package/dist/schema/index.js.map +0 -1
  131. package/dist/schema/load.d.ts +0 -43
  132. package/dist/schema/load.d.ts.map +0 -1
  133. package/dist/schema/load.js +0 -139
  134. package/dist/schema/load.js.map +0 -1
  135. package/dist/schema/store.d.ts +0 -112
  136. package/dist/schema/store.d.ts.map +0 -1
  137. package/dist/schema/store.js +0 -173
  138. package/dist/schema/store.js.map +0 -1
  139. package/dist/schema/structured-entities.d.ts +0 -21
  140. package/dist/schema/structured-entities.d.ts.map +0 -1
  141. package/dist/schema/structured-entities.js +0 -39
  142. package/dist/schema/structured-entities.js.map +0 -1
  143. package/dist/schema/types.d.ts +0 -36
  144. package/dist/schema/types.d.ts.map +0 -1
  145. package/dist/schema/types.js +0 -6
  146. package/dist/schema/types.js.map +0 -1
  147. package/dist/server.d.ts +0 -57
  148. package/dist/server.d.ts.map +0 -1
  149. package/dist/server.js +0 -144
  150. package/dist/server.js.map +0 -1
  151. package/dist/telemetry.d.ts +0 -172
  152. package/dist/telemetry.d.ts.map +0 -1
  153. package/dist/telemetry.js +0 -233
  154. package/dist/telemetry.js.map +0 -1
  155. package/dist/tools/analytics-filters.d.ts +0 -18
  156. package/dist/tools/analytics-filters.d.ts.map +0 -1
  157. package/dist/tools/analytics-filters.js +0 -35
  158. package/dist/tools/analytics-filters.js.map +0 -1
  159. package/dist/tools/analytics.d.ts +0 -16
  160. package/dist/tools/analytics.d.ts.map +0 -1
  161. package/dist/tools/analytics.js +0 -381
  162. package/dist/tools/analytics.js.map +0 -1
  163. package/dist/tools/concept-profile.d.ts +0 -14
  164. package/dist/tools/concept-profile.d.ts.map +0 -1
  165. package/dist/tools/concept-profile.js +0 -130
  166. package/dist/tools/concept-profile.js.map +0 -1
  167. package/dist/tools/dataset-profile.d.ts +0 -15
  168. package/dist/tools/dataset-profile.d.ts.map +0 -1
  169. package/dist/tools/dataset-profile.js +0 -194
  170. package/dist/tools/dataset-profile.js.map +0 -1
  171. package/dist/tools/functions.d.ts +0 -14
  172. package/dist/tools/functions.d.ts.map +0 -1
  173. package/dist/tools/functions.js +0 -294
  174. package/dist/tools/functions.js.map +0 -1
  175. package/dist/tools/impact-chain.d.ts +0 -15
  176. package/dist/tools/impact-chain.d.ts.map +0 -1
  177. package/dist/tools/impact-chain.js +0 -96
  178. package/dist/tools/impact-chain.js.map +0 -1
  179. package/dist/tools/kwq.d.ts +0 -19
  180. package/dist/tools/kwq.d.ts.map +0 -1
  181. package/dist/tools/kwq.js +0 -156
  182. package/dist/tools/kwq.js.map +0 -1
  183. package/dist/tools/lookup.d.ts +0 -14
  184. package/dist/tools/lookup.d.ts.map +0 -1
  185. package/dist/tools/lookup.js +0 -213
  186. package/dist/tools/lookup.js.map +0 -1
  187. package/dist/tools/policy-profile.d.ts +0 -15
  188. package/dist/tools/policy-profile.d.ts.map +0 -1
  189. package/dist/tools/policy-profile.js +0 -174
  190. package/dist/tools/policy-profile.js.map +0 -1
  191. package/dist/tools/profile.d.ts +0 -14
  192. package/dist/tools/profile.d.ts.map +0 -1
  193. package/dist/tools/profile.js +0 -349
  194. package/dist/tools/profile.js.map +0 -1
  195. package/dist/tools/query.d.ts +0 -16
  196. package/dist/tools/query.d.ts.map +0 -1
  197. package/dist/tools/query.js +0 -53
  198. package/dist/tools/query.js.map +0 -1
  199. package/dist/tools/schema.d.ts +0 -23
  200. package/dist/tools/schema.d.ts.map +0 -1
  201. package/dist/tools/schema.js +0 -124
  202. package/dist/tools/schema.js.map +0 -1
  203. package/dist/tools/search-entity-metadata.d.ts +0 -18
  204. package/dist/tools/search-entity-metadata.d.ts.map +0 -1
  205. package/dist/tools/search-entity-metadata.js +0 -221
  206. package/dist/tools/search-entity-metadata.js.map +0 -1
  207. package/dist/tools/search.d.ts +0 -23
  208. package/dist/tools/search.d.ts.map +0 -1
  209. package/dist/tools/search.js +0 -110
  210. package/dist/tools/search.js.map +0 -1
  211. package/dist/tools/solr-fields.d.ts +0 -39
  212. package/dist/tools/solr-fields.d.ts.map +0 -1
  213. package/dist/tools/solr-fields.js +0 -40
  214. package/dist/tools/solr-fields.js.map +0 -1
  215. package/dist/utils.d.ts +0 -70
  216. package/dist/utils.d.ts.map +0 -1
  217. package/dist/utils.js +0 -104
  218. package/dist/utils.js.map +0 -1
@@ -1,97 +0,0 @@
1
- /**
2
- * Field name alias middleware for MCP tools.
3
- * Translates LLM-friendly field aliases to raw Dimensions DSL field names
4
- * via a higher-order function (decorator) pattern.
5
- * @module mcp/middleware/field-aliases
6
- */
7
- import type { EntityType } from "@digital-science/dimensions-dsl";
8
- import type { CallToolResult } from "@modelcontextprotocol/sdk/types.js";
9
- /**
10
- * Runtime alias registry. One flat map per entity type.
11
- * Keys: LLM-friendly alias names. Values: raw DSL field names.
12
- * Unknown names pass through unchanged at resolution time.
13
- */
14
- export declare const ENTITY_ALIASES: Readonly<Record<EntityType, Readonly<Record<string, string>>>>;
15
- /**
16
- * Resolves a single field alias to its raw DSL name.
17
- * Returns the input unchanged if it is not a known alias (pass-through).
18
- * @param entity - The entity type
19
- * @param name - Alias name or raw DSL field name
20
- * @returns The raw DSL field name
21
- */
22
- export declare function resolveFieldName(entity: EntityType, name: string): string;
23
- /**
24
- * Resolves facet-field aliases (e.g. grants `funders` → `funder_orgs` on live describe).
25
- * Falls back to {@link resolveFieldName} when no facet-specific alias exists.
26
- * @param entity - The entity type
27
- * @param name - Facet field name or alias
28
- * @returns Raw DSL facet field name
29
- */
30
- export declare function resolveFacetFieldName(entity: EntityType, name: string): string;
31
- /**
32
- * Resolves an array of field names, applying alias resolution to each.
33
- * @param entity - The entity type
34
- * @param names - Array of alias or DSL field names
35
- * @returns Array of raw DSL field names
36
- */
37
- export declare function resolveFieldNames(entity: EntityType, names: readonly string[]): string[];
38
- /**
39
- * Builds a reverse lookup map: DSL field name → alias names.
40
- * Useful for documentation and resource generation.
41
- * @param entity - The entity type
42
- * @returns Map of DSL field name → array of alias names
43
- */
44
- export declare function buildReverseAliasMap(entity: EntityType): Map<string, string[]>;
45
- /**
46
- * Where to find the entity type for alias resolution.
47
- * - `static`: hardcoded at registration time (e.g., search_publications → "publications")
48
- * - `dynamic`: read from an arg at call time (e.g., get_by_id → args.entityType)
49
- */
50
- export type EntitySource = {
51
- readonly kind: "static";
52
- readonly entity: EntityType;
53
- } | {
54
- readonly kind: "dynamic";
55
- readonly argName: string;
56
- };
57
- /**
58
- * Describes which args of a tool contain field names that need alias resolution.
59
- */
60
- export interface FieldAliasDescriptor {
61
- /** Where to get the entity type. */
62
- readonly entitySource: EntitySource;
63
- /** Args that are `string[]` of field names (e.g., `["fields"]`, `["indicators"]`). */
64
- readonly fieldArrayArgs?: readonly string[];
65
- /** Args that are a single field name string (e.g., `["sortBy"]`, `["facetField"]`). */
66
- readonly fieldStringArgs?: readonly string[];
67
- /** Args that are arrays of filter objects with a `.field` property (e.g., `["filters"]`). */
68
- readonly filterArrayArgs?: readonly string[];
69
- }
70
- /** Generic tool handler function type compatible with the MCP SDK. */
71
- type ToolHandler = (args: any, extra: any) => CallToolResult | Promise<CallToolResult>;
72
- /**
73
- * Wraps a tool handler with transparent field alias resolution.
74
- * Resolves LLM-friendly aliases to raw DSL field names before the inner handler runs.
75
- *
76
- * @param descriptor - Declares which args contain field names
77
- * @param handler - The inner tool handler
78
- * @returns A new handler with the same signature that pre-processes args
79
- *
80
- * @example
81
- * ```typescript
82
- * server.registerTool("search_publications", config,
83
- * withFieldAliases(
84
- * {
85
- * entitySource: { kind: "static", entity: "publications" },
86
- * fieldArrayArgs: ["fields"],
87
- * fieldStringArgs: ["sortBy"],
88
- * filterArrayArgs: ["filters"],
89
- * },
90
- * async (args) => { ... },
91
- * ),
92
- * );
93
- * ```
94
- */
95
- export declare function withFieldAliases<T extends ToolHandler>(descriptor: FieldAliasDescriptor, handler: T): T;
96
- export {};
97
- //# sourceMappingURL=field-aliases.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"field-aliases.d.ts","sourceRoot":"","sources":["../../src/middleware/field-aliases.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAoFzE;;;;GAIG;AACH,eAAO,MAAM,cAAc,EAAE,QAAQ,CAAC,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CASzF,CAAC;AAMF;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAIzE;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAI9E;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,EAAE,CAIxF;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,UAAU,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAY9E;AAMD;;;;GAIG;AACH,MAAM,MAAM,YAAY,GACpB;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAA;CAAE,GACxD;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAE3D;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,oCAAoC;IACpC,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IACpC,sFAAsF;IACtF,QAAQ,CAAC,cAAc,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5C,uFAAuF;IACvF,QAAQ,CAAC,eAAe,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC7C,6FAA6F;IAC7F,QAAQ,CAAC,eAAe,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC9C;AAMD,sEAAsE;AAEtE,KAAK,WAAW,GAAG,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,KAAK,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;AAEvF;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,WAAW,EACpD,UAAU,EAAE,oBAAoB,EAChC,OAAO,EAAE,CAAC,GACT,CAAC,CA2CH"}
@@ -1,208 +0,0 @@
1
- /**
2
- * Field name alias middleware for MCP tools.
3
- * Translates LLM-friendly field aliases to raw Dimensions DSL field names
4
- * via a higher-order function (decorator) pattern.
5
- * @module mcp/middleware/field-aliases
6
- */
7
- // ---------------------------------------------------------------------------
8
- // Per-entity alias maps (targets are raw DSL field / metric names)
9
- // ---------------------------------------------------------------------------
10
- /**
11
- * Publication field aliases.
12
- * Keys: LLM-friendly names. Values: raw DSL field names.
13
- */
14
- const PUBLICATION_ALIASES = {
15
- total_citations: "times_cited",
16
- citation_ratio: "field_citation_ratio",
17
- altmetric_score: "altmetric",
18
- fields_of_research: "category_for",
19
- sdg_categories: "category_sdg",
20
- };
21
- /**
22
- * Publication indicator aliases for aggregation queries.
23
- */
24
- const PUBLICATION_INDICATOR_ALIASES = {
25
- field_citation_ratio_avg: "fcr_gavg",
26
- relative_citation_ratio_avg: "rcr_avg",
27
- total_citations_sum: "citations_total",
28
- average_citations: "citations_avg",
29
- median_citations: "citations_median",
30
- };
31
- /**
32
- * Grant field aliases.
33
- */
34
- const GRANT_ALIASES = {
35
- funding_amount_usd: "funding_usd",
36
- funding_amount_eur: "funding_eur",
37
- funder_name: "funder_org_name",
38
- };
39
- /**
40
- * Grant facet-field aliases (entity facets, not filter fields).
41
- * Live describe uses `funder_orgs`; older examples used `funders`.
42
- */
43
- const GRANT_FACET_FIELD_ALIASES = {
44
- funders: "funder_orgs",
45
- };
46
- /** Per-entity facet field alias maps. */
47
- const FACET_FIELD_ALIASES = {
48
- grants: GRANT_FACET_FIELD_ALIASES,
49
- };
50
- /**
51
- * Grant indicator aliases for aggregation queries.
52
- */
53
- const GRANT_INDICATOR_ALIASES = {
54
- total_funding: "funding",
55
- };
56
- /** Patent field aliases. */
57
- const PATENT_ALIASES = {};
58
- /** Clinical trial field aliases. */
59
- const CLINICAL_TRIAL_ALIASES = {};
60
- /** Dataset field aliases. */
61
- const DATASET_ALIASES = {};
62
- /** Policy document field aliases. */
63
- const POLICY_DOCUMENT_ALIASES = {};
64
- /** Researcher field aliases. */
65
- const RESEARCHER_ALIASES = {
66
- orcid: "orcid_id",
67
- };
68
- /** Organization field aliases. */
69
- const ORGANIZATION_ALIASES = {};
70
- // ---------------------------------------------------------------------------
71
- // Merged per-entity runtime maps
72
- // ---------------------------------------------------------------------------
73
- /**
74
- * Runtime alias registry. One flat map per entity type.
75
- * Keys: LLM-friendly alias names. Values: raw DSL field names.
76
- * Unknown names pass through unchanged at resolution time.
77
- */
78
- export const ENTITY_ALIASES = {
79
- publications: { ...PUBLICATION_ALIASES, ...PUBLICATION_INDICATOR_ALIASES },
80
- grants: { ...GRANT_ALIASES, ...GRANT_INDICATOR_ALIASES },
81
- patents: { ...PATENT_ALIASES },
82
- clinical_trials: { ...CLINICAL_TRIAL_ALIASES },
83
- datasets: { ...DATASET_ALIASES },
84
- policy_documents: { ...POLICY_DOCUMENT_ALIASES },
85
- researchers: { ...RESEARCHER_ALIASES },
86
- organizations: { ...ORGANIZATION_ALIASES },
87
- };
88
- // ---------------------------------------------------------------------------
89
- // Resolution functions
90
- // ---------------------------------------------------------------------------
91
- /**
92
- * Resolves a single field alias to its raw DSL name.
93
- * Returns the input unchanged if it is not a known alias (pass-through).
94
- * @param entity - The entity type
95
- * @param name - Alias name or raw DSL field name
96
- * @returns The raw DSL field name
97
- */
98
- export function resolveFieldName(entity, name) {
99
- const map = ENTITY_ALIASES[entity];
100
- if (!map)
101
- return name;
102
- return map[name] ?? name;
103
- }
104
- /**
105
- * Resolves facet-field aliases (e.g. grants `funders` → `funder_orgs` on live describe).
106
- * Falls back to {@link resolveFieldName} when no facet-specific alias exists.
107
- * @param entity - The entity type
108
- * @param name - Facet field name or alias
109
- * @returns Raw DSL facet field name
110
- */
111
- export function resolveFacetFieldName(entity, name) {
112
- const facetMap = FACET_FIELD_ALIASES[entity];
113
- if (facetMap?.[name])
114
- return facetMap[name];
115
- return resolveFieldName(entity, name);
116
- }
117
- /**
118
- * Resolves an array of field names, applying alias resolution to each.
119
- * @param entity - The entity type
120
- * @param names - Array of alias or DSL field names
121
- * @returns Array of raw DSL field names
122
- */
123
- export function resolveFieldNames(entity, names) {
124
- const map = ENTITY_ALIASES[entity];
125
- if (!map)
126
- return [...names];
127
- return names.map((n) => map[n] ?? n);
128
- }
129
- /**
130
- * Builds a reverse lookup map: DSL field name → alias names.
131
- * Useful for documentation and resource generation.
132
- * @param entity - The entity type
133
- * @returns Map of DSL field name → array of alias names
134
- */
135
- export function buildReverseAliasMap(entity) {
136
- const map = ENTITY_ALIASES[entity];
137
- const reverse = new Map();
138
- for (const [alias, dslName] of Object.entries(map)) {
139
- const existing = reverse.get(dslName);
140
- if (existing) {
141
- existing.push(alias);
142
- }
143
- else {
144
- reverse.set(dslName, [alias]);
145
- }
146
- }
147
- return reverse;
148
- }
149
- /**
150
- * Wraps a tool handler with transparent field alias resolution.
151
- * Resolves LLM-friendly aliases to raw DSL field names before the inner handler runs.
152
- *
153
- * @param descriptor - Declares which args contain field names
154
- * @param handler - The inner tool handler
155
- * @returns A new handler with the same signature that pre-processes args
156
- *
157
- * @example
158
- * ```typescript
159
- * server.registerTool("search_publications", config,
160
- * withFieldAliases(
161
- * {
162
- * entitySource: { kind: "static", entity: "publications" },
163
- * fieldArrayArgs: ["fields"],
164
- * fieldStringArgs: ["sortBy"],
165
- * filterArrayArgs: ["filters"],
166
- * },
167
- * async (args) => { ... },
168
- * ),
169
- * );
170
- * ```
171
- */
172
- export function withFieldAliases(descriptor, handler) {
173
- const wrapper = (args, extra) => {
174
- const entity = descriptor.entitySource.kind === "static"
175
- ? descriptor.entitySource.entity
176
- : args[descriptor.entitySource.argName];
177
- const resolved = { ...args };
178
- // Resolve string[] field arrays (e.g., args.fields, args.indicators)
179
- for (const argName of descriptor.fieldArrayArgs ?? []) {
180
- const val = resolved[argName];
181
- if (Array.isArray(val)) {
182
- resolved[argName] = resolveFieldNames(entity, val);
183
- }
184
- }
185
- // Resolve single field name strings (e.g., args.sortBy, args.facetField)
186
- for (const argName of descriptor.fieldStringArgs ?? []) {
187
- const val = resolved[argName];
188
- if (typeof val === "string") {
189
- resolved[argName] = resolveFieldName(entity, val);
190
- }
191
- }
192
- // Resolve filter object arrays (e.g., args.filters[].field)
193
- for (const argName of descriptor.filterArrayArgs ?? []) {
194
- const val = resolved[argName];
195
- if (Array.isArray(val)) {
196
- resolved[argName] = val.map((filter) => ({
197
- ...filter,
198
- field: typeof filter.field === "string"
199
- ? resolveFieldName(entity, filter.field)
200
- : filter.field,
201
- }));
202
- }
203
- }
204
- return handler(resolved, extra);
205
- };
206
- return wrapper;
207
- }
208
- //# sourceMappingURL=field-aliases.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"field-aliases.js","sourceRoot":"","sources":["../../src/middleware/field-aliases.ts"],"names":[],"mappings":"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"}
@@ -1,13 +0,0 @@
1
- /**
2
- * Dynamic MCP resources derived from runtime {@link SchemaStore}.
3
- * @module mcp/resources/schema
4
- */
5
- import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
6
- import type { SchemaContext } from "../schema/context.js";
7
- /**
8
- * Registers schema MCP resources from a loaded {@link SchemaStore}.
9
- * @param server - MCP server instance
10
- * @param context - Mutable schema context (handlers read latest store)
11
- */
12
- export declare function registerSchemaResources(server: McpServer, context: SchemaContext): void;
13
- //# sourceMappingURL=schema.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/resources/schema.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAQH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAQzE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE1D;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,aAAa,GAAG,IAAI,CA6PvF"}
@@ -1,204 +0,0 @@
1
- /**
2
- * Dynamic MCP resources derived from runtime {@link SchemaStore}.
3
- * @module mcp/resources/schema
4
- */
5
- import { SCHEMA_LIMITS, } from "@digital-science/dimensions-dsl";
6
- import { ResourceTemplate } from "@modelcontextprotocol/sdk/server/mcp.js";
7
- import { DSL_DOCUMENTATION_URL, DSL_EXAMPLES_BY_ENTITY, DSL_GENERAL_EXAMPLES, } from "../examples/dsl-examples.js";
8
- import { buildReverseAliasMap } from "../middleware/field-aliases.js";
9
- /**
10
- * Registers schema MCP resources from a loaded {@link SchemaStore}.
11
- * @param server - MCP server instance
12
- * @param context - Mutable schema context (handlers read latest store)
13
- */
14
- export function registerSchemaResources(server, context) {
15
- const schemaStore = () => context.store;
16
- server.resource("schema-summary", "dimensions://schema/summary", {
17
- description: "Compact Dimensions DSL schema overview (counts, resource URIs) — start here on cold-start",
18
- mimeType: "application/json",
19
- }, async (uri) => ({
20
- contents: [
21
- {
22
- uri: uri.href,
23
- mimeType: "application/json",
24
- text: JSON.stringify(schemaStore().summary(), null, 2),
25
- },
26
- ],
27
- }));
28
- // Full schema
29
- server.resource("schema-full", "dimensions://schema", {
30
- description: "Full Dimensions DSL schema (all sources and auxiliary entities). Prefer dimensions://schema/summary for discovery.",
31
- mimeType: "application/json",
32
- }, async (uri) => ({
33
- contents: [
34
- {
35
- uri: uri.href,
36
- mimeType: "application/json",
37
- text: JSON.stringify(schemaStore().raw, null, 2),
38
- },
39
- ],
40
- }));
41
- // Version
42
- server.resource("schema-version", "dimensions://schema/version", {
43
- description: "Dimensions DSL version",
44
- mimeType: "application/json",
45
- }, async (uri) => ({
46
- contents: [
47
- {
48
- uri: uri.href,
49
- mimeType: "application/json",
50
- text: JSON.stringify({ version: schemaStore().version, loadedAt: schemaStore().loadedAt.toISOString() }, null, 2),
51
- },
52
- ],
53
- }));
54
- // Limits (static until upstream `describe limits` exists)
55
- server.resource("schema-limits", "dimensions://schema/limits", {
56
- description: "Operational limits for Dimensions DSL queries",
57
- mimeType: "application/json",
58
- }, async (uri) => ({
59
- contents: [
60
- {
61
- uri: uri.href,
62
- mimeType: "application/json",
63
- text: JSON.stringify(SCHEMA_LIMITS, null, 2),
64
- },
65
- ],
66
- }));
67
- server.resource("dsl-examples", "dimensions://examples", {
68
- description: "Curated Dimensions DSL example queries. See official docs: " + DSL_DOCUMENTATION_URL,
69
- mimeType: "application/json",
70
- }, async (uri) => ({
71
- contents: [
72
- {
73
- uri: uri.href,
74
- mimeType: "application/json",
75
- text: JSON.stringify({
76
- documentation: DSL_DOCUMENTATION_URL,
77
- general: DSL_GENERAL_EXAMPLES,
78
- byEntity: DSL_EXAMPLES_BY_ENTITY,
79
- }, null, 2),
80
- },
81
- ],
82
- }));
83
- const sourceNames = () => schemaStore().sourceNames();
84
- server.resource("schema-sources", new ResourceTemplate("dimensions://schema/sources/{sourceName}", {
85
- list: async () => ({
86
- resources: sourceNames().map((name) => ({
87
- uri: `dimensions://schema/sources/${name}`,
88
- name: `${name} schema`,
89
- description: `Schema for source ${name}`,
90
- mimeType: "application/json",
91
- })),
92
- }),
93
- complete: {
94
- sourceName: (value) => sourceNames().filter((name) => name.startsWith(value)),
95
- },
96
- }), {
97
- description: "Per-source Dimensions DSL schema",
98
- mimeType: "application/json",
99
- }, async (uri, { sourceName }) => {
100
- const source = schemaStore().getSource(String(sourceName));
101
- if (!source) {
102
- throw new Error(`Unknown source: ${sourceName}`);
103
- }
104
- return {
105
- contents: [
106
- {
107
- uri: uri.href,
108
- mimeType: "application/json",
109
- text: JSON.stringify(source, null, 2),
110
- },
111
- ],
112
- };
113
- });
114
- const entityNames = () => schemaStore().entityNames();
115
- server.resource("schema-entities", new ResourceTemplate("dimensions://schema/entities/{entityName}", {
116
- list: async () => ({
117
- resources: entityNames().map((name) => ({
118
- uri: `dimensions://schema/entities/${name}`,
119
- name: `${name} entity schema`,
120
- description: `Auxiliary entity schema for ${name}`,
121
- mimeType: "application/json",
122
- })),
123
- }),
124
- complete: {
125
- entityName: (value) => entityNames().filter((name) => name.startsWith(value)),
126
- },
127
- }), {
128
- description: "Auxiliary entity schema for dot-notation filters",
129
- mimeType: "application/json",
130
- }, async (uri, { entityName }) => {
131
- const entity = schemaStore().getEntity(String(entityName));
132
- if (!entity) {
133
- throw new Error(`Unknown entity: ${entityName}`);
134
- }
135
- return {
136
- contents: [
137
- {
138
- uri: uri.href,
139
- mimeType: "application/json",
140
- text: JSON.stringify(entity, null, 2),
141
- },
142
- ],
143
- };
144
- });
145
- // Compatibility view for structured search tools
146
- const entityTypes = () => schemaStore().structuredEntityTypes();
147
- server.resource("fields", new ResourceTemplate("dimensions://fields/{entityType}", {
148
- list: async () => ({
149
- resources: entityTypes().map((et) => ({
150
- uri: `dimensions://fields/${et}`,
151
- name: `${et} fields`,
152
- description: `Filterable fields for ${et}`,
153
- mimeType: "application/json",
154
- })),
155
- }),
156
- complete: {
157
- entityType: (value) => entityTypes().filter((et) => et.startsWith(value)),
158
- },
159
- }), {
160
- description: "Filterable fields and aliases for a Dimensions entity type",
161
- mimeType: "application/json",
162
- }, async (uri, { entityType }) => {
163
- const entity = String(entityType);
164
- if (!entityTypes().includes(entity)) {
165
- throw new Error(`Unknown entity type: ${entity}`);
166
- }
167
- const source = schemaStore().getSource(entity);
168
- if (!source) {
169
- throw new Error(`No schema loaded for entity type: ${entity}`);
170
- }
171
- const reverseAliases = buildReverseAliasMap(entity);
172
- const augmentedFields = {};
173
- for (const [fieldName, field] of Object.entries(source.fields)) {
174
- if (field.is_filter !== true) {
175
- continue;
176
- }
177
- const description = field.description ?? field.type;
178
- const aliases = reverseAliases.get(fieldName);
179
- augmentedFields[fieldName] = aliases ? { description, aliases } : { description };
180
- }
181
- return {
182
- contents: [
183
- {
184
- uri: uri.href,
185
- mimeType: "application/json",
186
- text: JSON.stringify({
187
- entityType: entity,
188
- fields: augmentedFields,
189
- facets: schemaStore().facetFields(entity),
190
- metrics: schemaStore().metrics(entity),
191
- searchIndexes: schemaStore().searchIndexes(entity),
192
- fieldsets: schemaStore().fieldsets(entity),
193
- dslExamples: {
194
- basicSearch: `search ${entity} for "your query" return ${entity} limit 10`,
195
- withFields: `search ${entity} for "your query" return ${entity}[id+title] limit 10`,
196
- withFilter: `search ${entity} for "your query" where year >= 2020 return ${entity} limit 10`,
197
- },
198
- }, null, 2),
199
- },
200
- ],
201
- };
202
- });
203
- }
204
- //# sourceMappingURL=schema.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/resources/schema.ts"],"names":[],"mappings":"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"}
@@ -1,10 +0,0 @@
1
- /**
2
- * Mutable schema context shared across MCP resources and tools.
3
- * @module schema/context
4
- */
5
- import type { SchemaStore } from "@digital-science/dimensions-dsl";
6
- /** Mutable holder so refresh can update the active store without re-registering resources. */
7
- export type SchemaContext = {
8
- store: SchemaStore;
9
- };
10
- //# sourceMappingURL=context.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/schema/context.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAEnE,8FAA8F;AAC9F,MAAM,MAAM,aAAa,GAAG;IAC1B,KAAK,EAAE,WAAW,CAAC;CACpB,CAAC"}
@@ -1,6 +0,0 @@
1
- /**
2
- * Mutable schema context shared across MCP resources and tools.
3
- * @module schema/context
4
- */
5
- export {};
6
- //# sourceMappingURL=context.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/schema/context.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
@@ -1,9 +0,0 @@
1
- /**
2
- * Runtime schema loading and access for the MCP server.
3
- * @module schema
4
- */
5
- export type { DescribeField, DescribeSchemaResponse, DescribeVersionResponse, EntityDescribe, LoadSchemaOptions, SourceDescribe, StructuredEntityType, } from "@digital-science/dimensions-dsl";
6
- export { buildSchemaSummary, clearSchemaCache, createSchemaStoreFromResponse, DEFAULT_SCHEMA_CACHE_TTL_MS, extractDescribeSchema, extractDescribeVersion, getCachedSchemaStore, getOrLoadSchema, loadSchema, SCHEMA_LIMITS, SCHEMA_RESOURCE_URIS, SchemaStore, STRUCTURED_ENTITY_TYPES, searchResultKey, searchToolName, } from "@digital-science/dimensions-dsl";
7
- export type { SchemaCacheEnvelope, SchemaCacheEntry, SchemaLoadSource, SchemaSourceSummary, SchemaStoreMetadata, SchemaSummary, } from "@digital-science/dimensions-dsl";
8
- export type { SchemaContext } from "./context.js";
9
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/schema/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,YAAY,EACV,aAAa,EACb,sBAAsB,EACtB,uBAAuB,EACvB,cAAc,EACd,iBAAiB,EACjB,cAAc,EACd,oBAAoB,GACrB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,6BAA6B,EAC7B,2BAA2B,EAC3B,qBAAqB,EACrB,sBAAsB,EACtB,oBAAoB,EACpB,eAAe,EACf,UAAU,EACV,aAAa,EACb,oBAAoB,EACpB,WAAW,EACX,uBAAuB,EACvB,eAAe,EACf,cAAc,GACf,MAAM,iCAAiC,CAAC;AACzC,YAAY,EACV,mBAAmB,EACnB,gBAAgB,EAChB,gBAAgB,EAChB,mBAAmB,EACnB,mBAAmB,EACnB,aAAa,GACd,MAAM,iCAAiC,CAAC;AACzC,YAAY,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC"}
@@ -1,6 +0,0 @@
1
- /**
2
- * Runtime schema loading and access for the MCP server.
3
- * @module schema
4
- */
5
- export { buildSchemaSummary, clearSchemaCache, createSchemaStoreFromResponse, DEFAULT_SCHEMA_CACHE_TTL_MS, extractDescribeSchema, extractDescribeVersion, getCachedSchemaStore, getOrLoadSchema, loadSchema, SCHEMA_LIMITS, SCHEMA_RESOURCE_URIS, SchemaStore, STRUCTURED_ENTITY_TYPES, searchResultKey, searchToolName, } from "@digital-science/dimensions-dsl";
6
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/schema/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAWH,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,6BAA6B,EAC7B,2BAA2B,EAC3B,qBAAqB,EACrB,sBAAsB,EACtB,oBAAoB,EACpB,eAAe,EACf,UAAU,EACV,aAAa,EACb,oBAAoB,EACpB,WAAW,EACX,uBAAuB,EACvB,eAAe,EACf,cAAc,GACf,MAAM,iCAAiC,CAAC"}
@@ -1,43 +0,0 @@
1
- /**
2
- * Load schema from the Dimensions API or optional disk cache.
3
- * @module schema/load
4
- */
5
- import type { DimensionsClient } from "@digital-science/dimensions-dsl";
6
- import { type SchemaStore } from "./store.js";
7
- import type { DescribeSchemaResponse } from "./types.js";
8
- /**
9
- * Returns the module-level cached schema store, if loaded.
10
- * @returns Cached store or undefined before first load
11
- */
12
- export declare function getCachedSchemaStore(): SchemaStore | undefined;
13
- /**
14
- * Clears the module-level schema cache (for tests and refresh).
15
- */
16
- export declare function clearSchemaCache(): void;
17
- /**
18
- * Extracts describe schema payload from a raw API response.
19
- * @param raw - Raw DSL API response
20
- * @returns Normalized describe schema object
21
- */
22
- export declare function extractDescribeSchema(raw: unknown): DescribeSchemaResponse;
23
- /**
24
- * Extracts version string from `describe version` response.
25
- * @param raw - Raw DSL API response
26
- * @returns Version string or undefined
27
- */
28
- export declare function extractDescribeVersion(raw: unknown): string | undefined;
29
- /**
30
- * Fetches schema from the Dimensions API.
31
- * @param client - Authenticated Dimensions client
32
- * @param cachePath - Optional cache file path
33
- * @returns Loaded schema store
34
- */
35
- export declare function loadSchema(client: DimensionsClient, cachePath?: string): Promise<SchemaStore>;
36
- /**
37
- * Returns cached schema or loads once per process.
38
- * @param client - Authenticated Dimensions client
39
- * @param cachePath - Optional cache override
40
- * @returns Schema store
41
- */
42
- export declare function getOrLoadSchema(client: DimensionsClient, cachePath?: string): Promise<SchemaStore>;
43
- //# sourceMappingURL=load.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"load.d.ts","sourceRoot":"","sources":["../../src/schema/load.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,EAAiC,KAAK,WAAW,EAAE,MAAM,YAAY,CAAC;AAC7E,OAAO,KAAK,EAAE,sBAAsB,EAA2B,MAAM,YAAY,CAAC;AAKlF;;;GAGG;AACH,wBAAgB,oBAAoB,IAAI,WAAW,GAAG,SAAS,CAE9D;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,IAAI,CAGvC;AAyBD;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,OAAO,GAAG,sBAAsB,CAY1E;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAYvE;AAED;;;;;GAKG;AACH,wBAAsB,UAAU,CAC9B,MAAM,EAAE,gBAAgB,EACxB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,WAAW,CAAC,CAwCtB;AAED;;;;;GAKG;AACH,wBAAsB,eAAe,CACnC,MAAM,EAAE,gBAAgB,EACxB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,WAAW,CAAC,CAUtB"}