@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.
Files changed (722) hide show
  1. package/CHANGELOG.md +61 -0
  2. package/README.md +152 -0
  3. package/bin/dimensions-analytics-mcp-http.js +2 -0
  4. package/bin/dimensions-analytics-mcp.js +2 -0
  5. package/dist/client/auth/config-loaders.d.ts +22 -0
  6. package/dist/client/auth/config-loaders.d.ts.map +1 -0
  7. package/dist/client/auth/config-loaders.js +68 -0
  8. package/dist/client/auth/config-loaders.js.map +1 -0
  9. package/dist/client/auth/decorators/index.d.ts +7 -0
  10. package/dist/client/auth/decorators/index.d.ts.map +1 -0
  11. package/dist/client/auth/decorators/index.js +6 -0
  12. package/dist/client/auth/decorators/index.js.map +1 -0
  13. package/dist/client/auth/decorators/with-caching.d.ts +81 -0
  14. package/dist/client/auth/decorators/with-caching.d.ts.map +1 -0
  15. package/dist/client/auth/decorators/with-caching.js +168 -0
  16. package/dist/client/auth/decorators/with-caching.js.map +1 -0
  17. package/dist/client/auth/factory.d.ts +13 -0
  18. package/dist/client/auth/factory.d.ts.map +1 -0
  19. package/dist/client/auth/factory.js +29 -0
  20. package/dist/client/auth/factory.js.map +1 -0
  21. package/dist/client/auth/index.d.ts +7 -0
  22. package/dist/client/auth/index.d.ts.map +1 -0
  23. package/dist/client/auth/index.js +6 -0
  24. package/dist/client/auth/index.js.map +1 -0
  25. package/dist/client/auth/jwt-utils.d.ts +17 -0
  26. package/dist/client/auth/jwt-utils.d.ts.map +1 -0
  27. package/dist/client/auth/jwt-utils.js +33 -0
  28. package/dist/client/auth/jwt-utils.js.map +1 -0
  29. package/dist/client/auth/node.d.ts +16 -0
  30. package/dist/client/auth/node.d.ts.map +1 -0
  31. package/dist/client/auth/node.js +15 -0
  32. package/dist/client/auth/node.js.map +1 -0
  33. package/dist/client/auth/providers/index.d.ts +2 -0
  34. package/dist/client/auth/providers/index.d.ts.map +1 -0
  35. package/dist/client/auth/providers/index.js +2 -0
  36. package/dist/client/auth/providers/index.js.map +1 -0
  37. package/dist/client/auth/providers/jwt-auth-provider.d.ts +70 -0
  38. package/dist/client/auth/providers/jwt-auth-provider.d.ts.map +1 -0
  39. package/dist/client/auth/providers/jwt-auth-provider.js +134 -0
  40. package/dist/client/auth/providers/jwt-auth-provider.js.map +1 -0
  41. package/dist/client/auth/schemas.d.ts +19 -0
  42. package/dist/client/auth/schemas.d.ts.map +1 -0
  43. package/dist/client/auth/schemas.js +23 -0
  44. package/dist/client/auth/schemas.js.map +1 -0
  45. package/dist/client/auth/types.d.ts +25 -0
  46. package/dist/client/auth/types.d.ts.map +1 -0
  47. package/dist/client/auth/types.js +9 -0
  48. package/dist/client/auth/types.js.map +1 -0
  49. package/dist/client/command.d.ts +44 -0
  50. package/dist/client/command.d.ts.map +1 -0
  51. package/dist/client/command.js +23 -0
  52. package/dist/client/command.js.map +1 -0
  53. package/dist/client/config/index.d.ts +11 -0
  54. package/dist/client/config/index.d.ts.map +1 -0
  55. package/dist/client/config/index.js +8 -0
  56. package/dist/client/config/index.js.map +1 -0
  57. package/dist/client/config/loader.d.ts +27 -0
  58. package/dist/client/config/loader.d.ts.map +1 -0
  59. package/dist/client/config/loader.js +128 -0
  60. package/dist/client/config/loader.js.map +1 -0
  61. package/dist/client/config/node.d.ts +18 -0
  62. package/dist/client/config/node.d.ts.map +1 -0
  63. package/dist/client/config/node.js +17 -0
  64. package/dist/client/config/node.js.map +1 -0
  65. package/dist/client/config/schemas.d.ts +23 -0
  66. package/dist/client/config/schemas.d.ts.map +1 -0
  67. package/dist/client/config/schemas.js +24 -0
  68. package/dist/client/config/schemas.js.map +1 -0
  69. package/dist/client/config/types.d.ts +37 -0
  70. package/dist/client/config/types.d.ts.map +1 -0
  71. package/dist/client/config/types.js +6 -0
  72. package/dist/client/config/types.js.map +1 -0
  73. package/dist/client/config/unified-loader.d.ts +41 -0
  74. package/dist/client/config/unified-loader.d.ts.map +1 -0
  75. package/dist/client/config/unified-loader.js +86 -0
  76. package/dist/client/config/unified-loader.js.map +1 -0
  77. package/dist/client/config.d.ts +43 -0
  78. package/dist/client/config.d.ts.map +1 -0
  79. package/dist/client/config.js +56 -0
  80. package/dist/client/config.js.map +1 -0
  81. package/dist/client/deployment-config.d.ts +36 -0
  82. package/dist/client/deployment-config.d.ts.map +1 -0
  83. package/dist/client/deployment-config.js +79 -0
  84. package/dist/client/deployment-config.js.map +1 -0
  85. package/dist/client/errors.d.ts +180 -0
  86. package/dist/client/errors.d.ts.map +1 -0
  87. package/dist/client/errors.js +253 -0
  88. package/dist/client/errors.js.map +1 -0
  89. package/dist/client/http-client.d.ts +215 -0
  90. package/dist/client/http-client.d.ts.map +1 -0
  91. package/dist/client/http-client.js +419 -0
  92. package/dist/client/http-client.js.map +1 -0
  93. package/dist/client/index.d.ts +28 -0
  94. package/dist/client/index.d.ts.map +1 -0
  95. package/dist/client/index.js +18 -0
  96. package/dist/client/index.js.map +1 -0
  97. package/dist/client/internal-dsl-client.d.ts +30 -0
  98. package/dist/client/internal-dsl-client.d.ts.map +1 -0
  99. package/dist/client/internal-dsl-client.js +101 -0
  100. package/dist/client/internal-dsl-client.js.map +1 -0
  101. package/dist/client/rate-limiter.d.ts +79 -0
  102. package/dist/client/rate-limiter.d.ts.map +1 -0
  103. package/dist/client/rate-limiter.js +118 -0
  104. package/dist/client/rate-limiter.js.map +1 -0
  105. package/dist/client/resolve-api-key-user.d.ts +24 -0
  106. package/dist/client/resolve-api-key-user.d.ts.map +1 -0
  107. package/dist/client/resolve-api-key-user.js +80 -0
  108. package/dist/client/resolve-api-key-user.js.map +1 -0
  109. package/dist/client/types.d.ts +44 -0
  110. package/dist/client/types.d.ts.map +1 -0
  111. package/dist/client/types.js +10 -0
  112. package/dist/client/types.js.map +1 -0
  113. package/dist/dsl/client.d.ts +330 -0
  114. package/dist/dsl/client.d.ts.map +1 -0
  115. package/dist/dsl/client.js +433 -0
  116. package/dist/dsl/client.js.map +1 -0
  117. package/dist/dsl/commands/apply-filters.d.ts +15 -0
  118. package/dist/dsl/commands/apply-filters.d.ts.map +1 -0
  119. package/dist/dsl/commands/apply-filters.js +29 -0
  120. package/dist/dsl/commands/apply-filters.js.map +1 -0
  121. package/dist/dsl/commands/facet/index.d.ts +6 -0
  122. package/dist/dsl/commands/facet/index.d.ts.map +1 -0
  123. package/dist/dsl/commands/facet/index.js +6 -0
  124. package/dist/dsl/commands/facet/index.js.map +1 -0
  125. package/dist/dsl/commands/facet/schemas.d.ts +71 -0
  126. package/dist/dsl/commands/facet/schemas.d.ts.map +1 -0
  127. package/dist/dsl/commands/facet/schemas.js +84 -0
  128. package/dist/dsl/commands/facet/schemas.js.map +1 -0
  129. package/dist/dsl/commands/functions/ClassifyCommand.d.ts +96 -0
  130. package/dist/dsl/commands/functions/ClassifyCommand.d.ts.map +1 -0
  131. package/dist/dsl/commands/functions/ClassifyCommand.js +95 -0
  132. package/dist/dsl/commands/functions/ClassifyCommand.js.map +1 -0
  133. package/dist/dsl/commands/functions/ExtractAffiliationsCommand.d.ts +86 -0
  134. package/dist/dsl/commands/functions/ExtractAffiliationsCommand.d.ts.map +1 -0
  135. package/dist/dsl/commands/functions/ExtractAffiliationsCommand.js +131 -0
  136. package/dist/dsl/commands/functions/ExtractAffiliationsCommand.js.map +1 -0
  137. package/dist/dsl/commands/functions/ExtractConceptsCommand.d.ts +73 -0
  138. package/dist/dsl/commands/functions/ExtractConceptsCommand.d.ts.map +1 -0
  139. package/dist/dsl/commands/functions/ExtractConceptsCommand.js +110 -0
  140. package/dist/dsl/commands/functions/ExtractConceptsCommand.js.map +1 -0
  141. package/dist/dsl/commands/functions/ExtractGrantsCommand.d.ts +66 -0
  142. package/dist/dsl/commands/functions/ExtractGrantsCommand.d.ts.map +1 -0
  143. package/dist/dsl/commands/functions/ExtractGrantsCommand.js +87 -0
  144. package/dist/dsl/commands/functions/ExtractGrantsCommand.js.map +1 -0
  145. package/dist/dsl/commands/functions/index.d.ts +10 -0
  146. package/dist/dsl/commands/functions/index.d.ts.map +1 -0
  147. package/dist/dsl/commands/functions/index.js +10 -0
  148. package/dist/dsl/commands/functions/index.js.map +1 -0
  149. package/dist/dsl/commands/index.d.ts +8 -0
  150. package/dist/dsl/commands/index.d.ts.map +1 -0
  151. package/dist/dsl/commands/index.js +7 -0
  152. package/dist/dsl/commands/index.js.map +1 -0
  153. package/dist/dsl/commands/validate-input.d.ts +18 -0
  154. package/dist/dsl/commands/validate-input.d.ts.map +1 -0
  155. package/dist/dsl/commands/validate-input.js +27 -0
  156. package/dist/dsl/commands/validate-input.js.map +1 -0
  157. package/dist/dsl/create-client.d.ts +32 -0
  158. package/dist/dsl/create-client.d.ts.map +1 -0
  159. package/dist/dsl/create-client.js +58 -0
  160. package/dist/dsl/create-client.js.map +1 -0
  161. package/dist/dsl/fluent-query-builder.d.ts +439 -0
  162. package/dist/dsl/fluent-query-builder.d.ts.map +1 -0
  163. package/dist/dsl/fluent-query-builder.js +534 -0
  164. package/dist/dsl/fluent-query-builder.js.map +1 -0
  165. package/dist/dsl/index.d.ts +32 -0
  166. package/dist/dsl/index.d.ts.map +1 -0
  167. package/dist/dsl/index.js +31 -0
  168. package/dist/dsl/index.js.map +1 -0
  169. package/dist/dsl/pagination.d.ts +82 -0
  170. package/dist/dsl/pagination.d.ts.map +1 -0
  171. package/dist/dsl/pagination.js +135 -0
  172. package/dist/dsl/pagination.js.map +1 -0
  173. package/dist/dsl/query-builder.d.ts +456 -0
  174. package/dist/dsl/query-builder.d.ts.map +1 -0
  175. package/dist/dsl/query-builder.js +994 -0
  176. package/dist/dsl/query-builder.js.map +1 -0
  177. package/dist/dsl/response-parser.d.ts +111 -0
  178. package/dist/dsl/response-parser.d.ts.map +1 -0
  179. package/dist/dsl/response-parser.js +210 -0
  180. package/dist/dsl/response-parser.js.map +1 -0
  181. package/dist/dsl/schema/cache.d.ts +52 -0
  182. package/dist/dsl/schema/cache.d.ts.map +1 -0
  183. package/dist/dsl/schema/cache.js +97 -0
  184. package/dist/dsl/schema/cache.js.map +1 -0
  185. package/dist/dsl/schema/extract.d.ts +18 -0
  186. package/dist/dsl/schema/extract.d.ts.map +1 -0
  187. package/dist/dsl/schema/extract.js +41 -0
  188. package/dist/dsl/schema/extract.js.map +1 -0
  189. package/dist/dsl/schema/index.d.ts +13 -0
  190. package/dist/dsl/schema/index.d.ts.map +1 -0
  191. package/dist/dsl/schema/index.js +12 -0
  192. package/dist/dsl/schema/index.js.map +1 -0
  193. package/dist/dsl/schema/load.d.ts +41 -0
  194. package/dist/dsl/schema/load.d.ts.map +1 -0
  195. package/dist/dsl/schema/load.js +119 -0
  196. package/dist/dsl/schema/load.js.map +1 -0
  197. package/dist/dsl/schema/store.d.ts +137 -0
  198. package/dist/dsl/schema/store.d.ts.map +1 -0
  199. package/dist/dsl/schema/store.js +204 -0
  200. package/dist/dsl/schema/store.js.map +1 -0
  201. package/dist/dsl/schema/structured-entities.d.ts +21 -0
  202. package/dist/dsl/schema/structured-entities.d.ts.map +1 -0
  203. package/dist/dsl/schema/structured-entities.js +39 -0
  204. package/dist/dsl/schema/structured-entities.js.map +1 -0
  205. package/dist/dsl/schema/summary.d.ts +51 -0
  206. package/dist/dsl/schema/summary.d.ts.map +1 -0
  207. package/dist/dsl/schema/summary.js +61 -0
  208. package/dist/dsl/schema/summary.js.map +1 -0
  209. package/dist/dsl/schema/types.d.ts +36 -0
  210. package/dist/dsl/schema/types.d.ts.map +1 -0
  211. package/dist/dsl/schema/types.js +6 -0
  212. package/dist/dsl/schema/types.js.map +1 -0
  213. package/dist/dsl/schema/validation.d.ts +21 -0
  214. package/dist/dsl/schema/validation.d.ts.map +1 -0
  215. package/dist/dsl/schema/validation.js +44 -0
  216. package/dist/dsl/schema/validation.js.map +1 -0
  217. package/dist/dsl/types/buckets.d.ts +18 -0
  218. package/dist/dsl/types/buckets.d.ts.map +1 -0
  219. package/dist/dsl/types/buckets.js +6 -0
  220. package/dist/dsl/types/buckets.js.map +1 -0
  221. package/dist/dsl/types/common.d.ts +91 -0
  222. package/dist/dsl/types/common.d.ts.map +1 -0
  223. package/dist/dsl/types/common.js +6 -0
  224. package/dist/dsl/types/common.js.map +1 -0
  225. package/dist/dsl/types/entities.d.ts +35 -0
  226. package/dist/dsl/types/entities.d.ts.map +1 -0
  227. package/dist/dsl/types/entities.js +11 -0
  228. package/dist/dsl/types/entities.js.map +1 -0
  229. package/dist/dsl/types/index.d.ts +12 -0
  230. package/dist/dsl/types/index.d.ts.map +1 -0
  231. package/dist/dsl/types/index.js +7 -0
  232. package/dist/dsl/types/index.js.map +1 -0
  233. package/dist/dsl/types/return-clauses.d.ts +107 -0
  234. package/dist/dsl/types/return-clauses.d.ts.map +1 -0
  235. package/dist/dsl/types/return-clauses.js +22 -0
  236. package/dist/dsl/types/return-clauses.js.map +1 -0
  237. package/dist/dsl/types/special-functions.d.ts +175 -0
  238. package/dist/dsl/types/special-functions.d.ts.map +1 -0
  239. package/dist/dsl/types/special-functions.js +25 -0
  240. package/dist/dsl/types/special-functions.js.map +1 -0
  241. package/dist/dsl/types/vocabulary.d.ts +21 -0
  242. package/dist/dsl/types/vocabulary.d.ts.map +1 -0
  243. package/dist/dsl/types/vocabulary.js +44 -0
  244. package/dist/dsl/types/vocabulary.js.map +1 -0
  245. package/dist/dsl/usage-policy.d.ts +87 -0
  246. package/dist/dsl/usage-policy.d.ts.map +1 -0
  247. package/dist/dsl/usage-policy.js +133 -0
  248. package/dist/dsl/usage-policy.js.map +1 -0
  249. package/dist/dsl/utils/escape.d.ts +24 -0
  250. package/dist/dsl/utils/escape.d.ts.map +1 -0
  251. package/dist/dsl/utils/escape.js +124 -0
  252. package/dist/dsl/utils/escape.js.map +1 -0
  253. package/dist/dsl/utils/sanitize.d.ts +13 -0
  254. package/dist/dsl/utils/sanitize.d.ts.map +1 -0
  255. package/dist/dsl/utils/sanitize.js +19 -0
  256. package/dist/dsl/utils/sanitize.js.map +1 -0
  257. package/dist/dsl/utils/string-utils.d.ts +35 -0
  258. package/dist/dsl/utils/string-utils.d.ts.map +1 -0
  259. package/dist/dsl/utils/string-utils.js +145 -0
  260. package/dist/dsl/utils/string-utils.js.map +1 -0
  261. package/dist/dsl/utils/validate-field-name.d.ts +11 -0
  262. package/dist/dsl/utils/validate-field-name.d.ts.map +1 -0
  263. package/dist/dsl/utils/validate-field-name.js +18 -0
  264. package/dist/dsl/utils/validate-field-name.js.map +1 -0
  265. package/dist/examples/dsl-examples.d.ts +11 -0
  266. package/dist/examples/dsl-examples.d.ts.map +1 -0
  267. package/dist/examples/dsl-examples.js +49 -0
  268. package/dist/examples/dsl-examples.js.map +1 -0
  269. package/dist/examples/usage-scenarios.d.ts +22 -0
  270. package/dist/examples/usage-scenarios.d.ts.map +1 -0
  271. package/dist/examples/usage-scenarios.js +173 -0
  272. package/dist/examples/usage-scenarios.js.map +1 -0
  273. package/dist/funder-org-names.d.ts +12 -0
  274. package/dist/funder-org-names.d.ts.map +1 -0
  275. package/dist/funder-org-names.js +30 -0
  276. package/dist/funder-org-names.js.map +1 -0
  277. package/dist/http-main.d.ts +7 -0
  278. package/dist/http-main.d.ts.map +1 -0
  279. package/dist/http-main.js +36 -0
  280. package/dist/http-main.js.map +1 -0
  281. package/dist/http.d.ts +29 -0
  282. package/dist/http.d.ts.map +1 -0
  283. package/dist/http.js +173 -0
  284. package/dist/http.js.map +1 -0
  285. package/dist/index.d.ts +9 -0
  286. package/dist/index.d.ts.map +1 -0
  287. package/dist/index.js +7 -0
  288. package/dist/index.js.map +1 -0
  289. package/dist/kwq/build-query.d.ts +26 -0
  290. package/dist/kwq/build-query.d.ts.map +1 -0
  291. package/dist/kwq/build-query.js +37 -0
  292. package/dist/kwq/build-query.js.map +1 -0
  293. package/dist/kwq/concept-groups.d.ts +49 -0
  294. package/dist/kwq/concept-groups.d.ts.map +1 -0
  295. package/dist/kwq/concept-groups.js +55 -0
  296. package/dist/kwq/concept-groups.js.map +1 -0
  297. package/dist/kwq/dsl-assembler.d.ts +28 -0
  298. package/dist/kwq/dsl-assembler.d.ts.map +1 -0
  299. package/dist/kwq/dsl-assembler.js +124 -0
  300. package/dist/kwq/dsl-assembler.js.map +1 -0
  301. package/dist/kwq/ensemble.d.ts +38 -0
  302. package/dist/kwq/ensemble.d.ts.map +1 -0
  303. package/dist/kwq/ensemble.js +107 -0
  304. package/dist/kwq/ensemble.js.map +1 -0
  305. package/dist/kwq/index.d.ts +16 -0
  306. package/dist/kwq/index.d.ts.map +1 -0
  307. package/dist/kwq/index.js +14 -0
  308. package/dist/kwq/index.js.map +1 -0
  309. package/dist/kwq/types.d.ts +120 -0
  310. package/dist/kwq/types.d.ts.map +1 -0
  311. package/dist/kwq/types.js +11 -0
  312. package/dist/kwq/types.js.map +1 -0
  313. package/dist/lambda.d.ts +10 -0
  314. package/dist/lambda.d.ts.map +1 -0
  315. package/dist/lambda.js +4 -0
  316. package/dist/lambda.js.map +1 -0
  317. package/dist/main.d.ts +8 -0
  318. package/dist/main.d.ts.map +1 -0
  319. package/dist/main.js +33 -0
  320. package/dist/main.js.map +1 -0
  321. package/dist/mcp/batch-fetch.d.ts +89 -0
  322. package/dist/mcp/batch-fetch.d.ts.map +1 -0
  323. package/dist/mcp/batch-fetch.js +178 -0
  324. package/dist/mcp/batch-fetch.js.map +1 -0
  325. package/dist/mcp/examples/dsl-examples.d.ts +21 -0
  326. package/dist/mcp/examples/dsl-examples.d.ts.map +1 -0
  327. package/dist/mcp/examples/dsl-examples.js +61 -0
  328. package/dist/mcp/examples/dsl-examples.js.map +1 -0
  329. package/dist/mcp/examples/usage-scenarios.d.ts +20 -0
  330. package/dist/mcp/examples/usage-scenarios.d.ts.map +1 -0
  331. package/dist/mcp/examples/usage-scenarios.js +169 -0
  332. package/dist/mcp/examples/usage-scenarios.js.map +1 -0
  333. package/dist/mcp/export-format.d.ts +43 -0
  334. package/dist/mcp/export-format.d.ts.map +1 -0
  335. package/dist/mcp/export-format.js +92 -0
  336. package/dist/mcp/export-format.js.map +1 -0
  337. package/dist/mcp/funder-org-names.d.ts +12 -0
  338. package/dist/mcp/funder-org-names.d.ts.map +1 -0
  339. package/dist/mcp/funder-org-names.js +30 -0
  340. package/dist/mcp/funder-org-names.js.map +1 -0
  341. package/dist/mcp/http-server.d.ts +20 -0
  342. package/dist/mcp/http-server.d.ts.map +1 -0
  343. package/dist/mcp/http-server.js +118 -0
  344. package/dist/mcp/http-server.js.map +1 -0
  345. package/dist/mcp/middleware/field-aliases.d.ts +97 -0
  346. package/dist/mcp/middleware/field-aliases.d.ts.map +1 -0
  347. package/dist/mcp/middleware/field-aliases.js +208 -0
  348. package/dist/mcp/middleware/field-aliases.js.map +1 -0
  349. package/dist/mcp/resources/schema.d.ts +13 -0
  350. package/dist/mcp/resources/schema.d.ts.map +1 -0
  351. package/dist/mcp/resources/schema.js +262 -0
  352. package/dist/mcp/resources/schema.js.map +1 -0
  353. package/dist/mcp/schema/context.d.ts +10 -0
  354. package/dist/mcp/schema/context.d.ts.map +1 -0
  355. package/dist/mcp/schema/context.js +6 -0
  356. package/dist/mcp/schema/context.js.map +1 -0
  357. package/dist/mcp/schema/index.d.ts +8 -0
  358. package/dist/mcp/schema/index.d.ts.map +1 -0
  359. package/dist/mcp/schema/index.js +6 -0
  360. package/dist/mcp/schema/index.js.map +1 -0
  361. package/dist/mcp/server.d.ts +56 -0
  362. package/dist/mcp/server.d.ts.map +1 -0
  363. package/dist/mcp/server.js +168 -0
  364. package/dist/mcp/server.js.map +1 -0
  365. package/dist/mcp/shared-schema.d.ts +13 -0
  366. package/dist/mcp/shared-schema.d.ts.map +1 -0
  367. package/dist/mcp/shared-schema.js +28 -0
  368. package/dist/mcp/shared-schema.js.map +1 -0
  369. package/dist/mcp/tools/analytics-filters.d.ts +18 -0
  370. package/dist/mcp/tools/analytics-filters.d.ts.map +1 -0
  371. package/dist/mcp/tools/analytics-filters.js +35 -0
  372. package/dist/mcp/tools/analytics-filters.js.map +1 -0
  373. package/dist/mcp/tools/analytics.d.ts +16 -0
  374. package/dist/mcp/tools/analytics.d.ts.map +1 -0
  375. package/dist/mcp/tools/analytics.js +381 -0
  376. package/dist/mcp/tools/analytics.js.map +1 -0
  377. package/dist/mcp/tools/concept-profile.d.ts +14 -0
  378. package/dist/mcp/tools/concept-profile.d.ts.map +1 -0
  379. package/dist/mcp/tools/concept-profile.js +130 -0
  380. package/dist/mcp/tools/concept-profile.js.map +1 -0
  381. package/dist/mcp/tools/dataset-profile.d.ts +15 -0
  382. package/dist/mcp/tools/dataset-profile.d.ts.map +1 -0
  383. package/dist/mcp/tools/dataset-profile.js +194 -0
  384. package/dist/mcp/tools/dataset-profile.js.map +1 -0
  385. package/dist/mcp/tools/fetch-search-pages.d.ts +15 -0
  386. package/dist/mcp/tools/fetch-search-pages.d.ts.map +1 -0
  387. package/dist/mcp/tools/fetch-search-pages.js +237 -0
  388. package/dist/mcp/tools/fetch-search-pages.js.map +1 -0
  389. package/dist/mcp/tools/functions.d.ts +14 -0
  390. package/dist/mcp/tools/functions.d.ts.map +1 -0
  391. package/dist/mcp/tools/functions.js +87 -0
  392. package/dist/mcp/tools/functions.js.map +1 -0
  393. package/dist/mcp/tools/impact-chain.d.ts +15 -0
  394. package/dist/mcp/tools/impact-chain.d.ts.map +1 -0
  395. package/dist/mcp/tools/impact-chain.js +96 -0
  396. package/dist/mcp/tools/impact-chain.js.map +1 -0
  397. package/dist/mcp/tools/kwq.d.ts +19 -0
  398. package/dist/mcp/tools/kwq.d.ts.map +1 -0
  399. package/dist/mcp/tools/kwq.js +156 -0
  400. package/dist/mcp/tools/kwq.js.map +1 -0
  401. package/dist/mcp/tools/lookup.d.ts +14 -0
  402. package/dist/mcp/tools/lookup.d.ts.map +1 -0
  403. package/dist/mcp/tools/lookup.js +146 -0
  404. package/dist/mcp/tools/lookup.js.map +1 -0
  405. package/dist/mcp/tools/policy-profile.d.ts +15 -0
  406. package/dist/mcp/tools/policy-profile.d.ts.map +1 -0
  407. package/dist/mcp/tools/policy-profile.js +174 -0
  408. package/dist/mcp/tools/policy-profile.js.map +1 -0
  409. package/dist/mcp/tools/profile.d.ts +14 -0
  410. package/dist/mcp/tools/profile.d.ts.map +1 -0
  411. package/dist/mcp/tools/profile.js +349 -0
  412. package/dist/mcp/tools/profile.js.map +1 -0
  413. package/dist/mcp/tools/query.d.ts +16 -0
  414. package/dist/mcp/tools/query.d.ts.map +1 -0
  415. package/dist/mcp/tools/query.js +75 -0
  416. package/dist/mcp/tools/query.js.map +1 -0
  417. package/dist/mcp/tools/schema.d.ts +23 -0
  418. package/dist/mcp/tools/schema.d.ts.map +1 -0
  419. package/dist/mcp/tools/schema.js +124 -0
  420. package/dist/mcp/tools/schema.js.map +1 -0
  421. package/dist/mcp/tools/search-entity-metadata.d.ts +18 -0
  422. package/dist/mcp/tools/search-entity-metadata.d.ts.map +1 -0
  423. package/dist/mcp/tools/search-entity-metadata.js +221 -0
  424. package/dist/mcp/tools/search-entity-metadata.js.map +1 -0
  425. package/dist/mcp/tools/search-input.d.ts +58 -0
  426. package/dist/mcp/tools/search-input.d.ts.map +1 -0
  427. package/dist/mcp/tools/search-input.js +76 -0
  428. package/dist/mcp/tools/search-input.js.map +1 -0
  429. package/dist/mcp/tools/search.d.ts +24 -0
  430. package/dist/mcp/tools/search.d.ts.map +1 -0
  431. package/dist/mcp/tools/search.js +115 -0
  432. package/dist/mcp/tools/search.js.map +1 -0
  433. package/dist/mcp/utils.d.ts +82 -0
  434. package/dist/mcp/utils.d.ts.map +1 -0
  435. package/dist/mcp/utils.js +126 -0
  436. package/dist/mcp/utils.js.map +1 -0
  437. package/dist/middleware/field-aliases.d.ts +97 -0
  438. package/dist/middleware/field-aliases.d.ts.map +1 -0
  439. package/dist/middleware/field-aliases.js +208 -0
  440. package/dist/middleware/field-aliases.js.map +1 -0
  441. package/dist/resources/schema.d.ts +13 -0
  442. package/dist/resources/schema.d.ts.map +1 -0
  443. package/dist/resources/schema.js +204 -0
  444. package/dist/resources/schema.js.map +1 -0
  445. package/dist/schema/context.d.ts +10 -0
  446. package/dist/schema/context.d.ts.map +1 -0
  447. package/dist/schema/context.js +6 -0
  448. package/dist/schema/context.js.map +1 -0
  449. package/dist/schema/index.d.ts +9 -0
  450. package/dist/schema/index.d.ts.map +1 -0
  451. package/dist/schema/index.js +6 -0
  452. package/dist/schema/index.js.map +1 -0
  453. package/dist/schema/load.d.ts +43 -0
  454. package/dist/schema/load.d.ts.map +1 -0
  455. package/dist/schema/load.js +139 -0
  456. package/dist/schema/load.js.map +1 -0
  457. package/dist/schema/store.d.ts +112 -0
  458. package/dist/schema/store.d.ts.map +1 -0
  459. package/dist/schema/store.js +173 -0
  460. package/dist/schema/store.js.map +1 -0
  461. package/dist/schema/structured-entities.d.ts +21 -0
  462. package/dist/schema/structured-entities.d.ts.map +1 -0
  463. package/dist/schema/structured-entities.js +39 -0
  464. package/dist/schema/structured-entities.js.map +1 -0
  465. package/dist/schema/types.d.ts +36 -0
  466. package/dist/schema/types.d.ts.map +1 -0
  467. package/dist/schema/types.js +6 -0
  468. package/dist/schema/types.js.map +1 -0
  469. package/dist/server.d.ts +57 -0
  470. package/dist/server.d.ts.map +1 -0
  471. package/dist/server.js +144 -0
  472. package/dist/server.js.map +1 -0
  473. package/dist/telemetry.d.ts +172 -0
  474. package/dist/telemetry.d.ts.map +1 -0
  475. package/dist/telemetry.js +233 -0
  476. package/dist/telemetry.js.map +1 -0
  477. package/dist/tools/analytics-filters.d.ts +18 -0
  478. package/dist/tools/analytics-filters.d.ts.map +1 -0
  479. package/dist/tools/analytics-filters.js +35 -0
  480. package/dist/tools/analytics-filters.js.map +1 -0
  481. package/dist/tools/analytics.d.ts +16 -0
  482. package/dist/tools/analytics.d.ts.map +1 -0
  483. package/dist/tools/analytics.js +381 -0
  484. package/dist/tools/analytics.js.map +1 -0
  485. package/dist/tools/concept-profile.d.ts +14 -0
  486. package/dist/tools/concept-profile.d.ts.map +1 -0
  487. package/dist/tools/concept-profile.js +130 -0
  488. package/dist/tools/concept-profile.js.map +1 -0
  489. package/dist/tools/dataset-profile.d.ts +15 -0
  490. package/dist/tools/dataset-profile.d.ts.map +1 -0
  491. package/dist/tools/dataset-profile.js +194 -0
  492. package/dist/tools/dataset-profile.js.map +1 -0
  493. package/dist/tools/functions.d.ts +14 -0
  494. package/dist/tools/functions.d.ts.map +1 -0
  495. package/dist/tools/functions.js +294 -0
  496. package/dist/tools/functions.js.map +1 -0
  497. package/dist/tools/impact-chain.d.ts +15 -0
  498. package/dist/tools/impact-chain.d.ts.map +1 -0
  499. package/dist/tools/impact-chain.js +96 -0
  500. package/dist/tools/impact-chain.js.map +1 -0
  501. package/dist/tools/kwq.d.ts +19 -0
  502. package/dist/tools/kwq.d.ts.map +1 -0
  503. package/dist/tools/kwq.js +156 -0
  504. package/dist/tools/kwq.js.map +1 -0
  505. package/dist/tools/lookup.d.ts +14 -0
  506. package/dist/tools/lookup.d.ts.map +1 -0
  507. package/dist/tools/lookup.js +213 -0
  508. package/dist/tools/lookup.js.map +1 -0
  509. package/dist/tools/policy-profile.d.ts +15 -0
  510. package/dist/tools/policy-profile.d.ts.map +1 -0
  511. package/dist/tools/policy-profile.js +174 -0
  512. package/dist/tools/policy-profile.js.map +1 -0
  513. package/dist/tools/profile.d.ts +14 -0
  514. package/dist/tools/profile.d.ts.map +1 -0
  515. package/dist/tools/profile.js +349 -0
  516. package/dist/tools/profile.js.map +1 -0
  517. package/dist/tools/query.d.ts +16 -0
  518. package/dist/tools/query.d.ts.map +1 -0
  519. package/dist/tools/query.js +53 -0
  520. package/dist/tools/query.js.map +1 -0
  521. package/dist/tools/schema.d.ts +23 -0
  522. package/dist/tools/schema.d.ts.map +1 -0
  523. package/dist/tools/schema.js +124 -0
  524. package/dist/tools/schema.js.map +1 -0
  525. package/dist/tools/search-entity-metadata.d.ts +18 -0
  526. package/dist/tools/search-entity-metadata.d.ts.map +1 -0
  527. package/dist/tools/search-entity-metadata.js +221 -0
  528. package/dist/tools/search-entity-metadata.js.map +1 -0
  529. package/dist/tools/search.d.ts +23 -0
  530. package/dist/tools/search.d.ts.map +1 -0
  531. package/dist/tools/search.js +110 -0
  532. package/dist/tools/search.js.map +1 -0
  533. package/dist/tools/solr-fields.d.ts +39 -0
  534. package/dist/tools/solr-fields.d.ts.map +1 -0
  535. package/dist/tools/solr-fields.js +40 -0
  536. package/dist/tools/solr-fields.js.map +1 -0
  537. package/dist/utils.d.ts +70 -0
  538. package/dist/utils.d.ts.map +1 -0
  539. package/dist/utils.js +104 -0
  540. package/dist/utils.js.map +1 -0
  541. package/package.json +41 -0
  542. package/src/client/auth/config-loaders.ts +81 -0
  543. package/src/client/auth/decorators/index.ts +7 -0
  544. package/src/client/auth/decorators/with-caching.ts +237 -0
  545. package/src/client/auth/factory.ts +34 -0
  546. package/src/client/auth/index.ts +6 -0
  547. package/src/client/auth/jwt-utils.ts +36 -0
  548. package/src/client/auth/node.ts +16 -0
  549. package/src/client/auth/providers/index.ts +1 -0
  550. package/src/client/auth/providers/jwt-auth-provider.ts +153 -0
  551. package/src/client/auth/schemas.ts +25 -0
  552. package/src/client/auth/types.ts +30 -0
  553. package/src/client/command.ts +54 -0
  554. package/src/client/config/index.ts +15 -0
  555. package/src/client/config/loader.ts +155 -0
  556. package/src/client/config/node.ts +22 -0
  557. package/src/client/config/schemas.ts +28 -0
  558. package/src/client/config/types.ts +39 -0
  559. package/src/client/config/unified-loader.ts +118 -0
  560. package/src/client/config.ts +69 -0
  561. package/src/client/deployment-config.ts +98 -0
  562. package/src/client/errors.ts +295 -0
  563. package/src/client/http-client.ts +577 -0
  564. package/src/client/index.ts +68 -0
  565. package/src/client/internal-dsl-client.ts +128 -0
  566. package/src/client/rate-limiter.ts +139 -0
  567. package/src/client/resolve-api-key-user.ts +99 -0
  568. package/src/client/types.ts +44 -0
  569. package/src/dsl/client.ts +538 -0
  570. package/src/dsl/commands/apply-filters.ts +35 -0
  571. package/src/dsl/commands/facet/index.ts +12 -0
  572. package/src/dsl/commands/facet/schemas.ts +101 -0
  573. package/src/dsl/commands/functions/ClassifyCommand.ts +129 -0
  574. package/src/dsl/commands/functions/ExtractAffiliationsCommand.ts +163 -0
  575. package/src/dsl/commands/functions/ExtractConceptsCommand.ts +141 -0
  576. package/src/dsl/commands/functions/ExtractGrantsCommand.ts +112 -0
  577. package/src/dsl/commands/functions/index.ts +31 -0
  578. package/src/dsl/commands/index.ts +29 -0
  579. package/src/dsl/commands/validate-input.ts +29 -0
  580. package/src/dsl/create-client.ts +80 -0
  581. package/src/dsl/fluent-query-builder.ts +684 -0
  582. package/src/dsl/index.ts +206 -0
  583. package/src/dsl/pagination.ts +202 -0
  584. package/src/dsl/query-builder.ts +1120 -0
  585. package/src/dsl/response-parser.ts +299 -0
  586. package/src/dsl/schema/cache.ts +124 -0
  587. package/src/dsl/schema/extract.ts +44 -0
  588. package/src/dsl/schema/index.ts +50 -0
  589. package/src/dsl/schema/load.ts +160 -0
  590. package/src/dsl/schema/store.ts +253 -0
  591. package/src/dsl/schema/structured-entities.ts +44 -0
  592. package/src/dsl/schema/summary.ts +94 -0
  593. package/src/dsl/schema/types.ts +40 -0
  594. package/src/dsl/schema/validation.ts +56 -0
  595. package/src/dsl/types/buckets.ts +22 -0
  596. package/src/dsl/types/common.ts +99 -0
  597. package/src/dsl/types/entities.ts +43 -0
  598. package/src/dsl/types/index.ts +63 -0
  599. package/src/dsl/types/return-clauses.ts +147 -0
  600. package/src/dsl/types/special-functions.ts +220 -0
  601. package/src/dsl/types/vocabulary.ts +82 -0
  602. package/src/dsl/usage-policy.ts +219 -0
  603. package/src/dsl/utils/escape.ts +123 -0
  604. package/src/dsl/utils/sanitize.ts +21 -0
  605. package/src/dsl/utils/string-utils.ts +147 -0
  606. package/src/dsl/utils/validate-field-name.ts +19 -0
  607. package/src/http-main.ts +41 -0
  608. package/src/index.ts +14 -0
  609. package/src/main.ts +40 -0
  610. package/src/mcp/batch-fetch.ts +255 -0
  611. package/src/mcp/examples/dsl-examples.ts +66 -0
  612. package/src/mcp/examples/usage-scenarios.ts +185 -0
  613. package/src/mcp/export-format.ts +113 -0
  614. package/src/mcp/funder-org-names.ts +30 -0
  615. package/src/mcp/http-server.ts +148 -0
  616. package/src/mcp/middleware/field-aliases.ts +274 -0
  617. package/src/mcp/resources/schema.ts +364 -0
  618. package/src/mcp/schema/context.ts +11 -0
  619. package/src/mcp/schema/index.ts +38 -0
  620. package/src/mcp/server.ts +247 -0
  621. package/src/mcp/shared-schema.ts +34 -0
  622. package/src/mcp/tools/analytics-filters.ts +46 -0
  623. package/src/mcp/tools/analytics.ts +453 -0
  624. package/src/mcp/tools/fetch-search-pages.ts +329 -0
  625. package/src/mcp/tools/functions.ts +105 -0
  626. package/src/mcp/tools/lookup.ts +182 -0
  627. package/src/mcp/tools/query.ts +91 -0
  628. package/src/mcp/tools/schema.ts +147 -0
  629. package/src/mcp/tools/search-entity-metadata.ts +253 -0
  630. package/src/mcp/tools/search-input.ts +87 -0
  631. package/src/mcp/tools/search.ts +168 -0
  632. package/src/mcp/utils.ts +199 -0
  633. package/test/client/auth/config-loaders.test.ts +92 -0
  634. package/test/client/auth/decorators/with-caching.test.ts +482 -0
  635. package/test/client/auth/factory.test.ts +68 -0
  636. package/test/client/auth/providers/jwt-auth-provider.test.ts +398 -0
  637. package/test/client/auth/types.test.ts +18 -0
  638. package/test/client/command.test.ts +163 -0
  639. package/test/client/config/loader.test.ts +377 -0
  640. package/test/client/config/unified-loader.test.ts +136 -0
  641. package/test/client/deployment-config.test.ts +69 -0
  642. package/test/client/errors/index.test.ts +408 -0
  643. package/test/client/helpers/mock-fetch.ts +42 -0
  644. package/test/client/http-client.test.ts +1148 -0
  645. package/test/client/integration/auth-providers.integration.test.ts +186 -0
  646. package/test/client/internal-dsl-client.test.ts +76 -0
  647. package/test/client/rate-limiter.test.ts +204 -0
  648. package/test/client/resolve-api-key-user.test.ts +87 -0
  649. package/test/dsl/client.special-functions.test.ts +387 -0
  650. package/test/dsl/client.test.ts +457 -0
  651. package/test/dsl/commands/apply-filters.test.ts +147 -0
  652. package/test/dsl/commands/functions/ClassifyCommand.test.ts +170 -0
  653. package/test/dsl/commands/functions/ExtractAffiliationsCommand.test.ts +306 -0
  654. package/test/dsl/commands/functions/ExtractConceptsCommand.test.ts +136 -0
  655. package/test/dsl/commands/functions/ExtractGrantsCommand.test.ts +202 -0
  656. package/test/dsl/commands/search/filters.test.ts +42 -0
  657. package/test/dsl/fluent-query-builder.test.ts +865 -0
  658. package/test/dsl/integration/client.integration.test.ts +294 -0
  659. package/test/dsl/integration/facet-api.integration.test.ts +276 -0
  660. package/test/dsl/integration/field-existence.integration.test.ts +148 -0
  661. package/test/dsl/integration/fluent-api-docs-examples.integration.test.ts +988 -0
  662. package/test/dsl/integration/fluent-api.integration.test.ts +615 -0
  663. package/test/dsl/integration/search-helpers.ts +27 -0
  664. package/test/dsl/integration/special-functions.integration.test.ts +224 -0
  665. package/test/dsl/integration/test-config.ts +52 -0
  666. package/test/dsl/pagination.test.ts +86 -0
  667. package/test/dsl/query-builder.test.ts +1775 -0
  668. package/test/dsl/response-parser.test.ts +520 -0
  669. package/test/dsl/schema/cache.test.ts +53 -0
  670. package/test/dsl/schema/load.test.ts +165 -0
  671. package/test/dsl/schema/summary.test.ts +61 -0
  672. package/test/dsl/schema/validation.test.ts +46 -0
  673. package/test/dsl/time-series.test.ts +135 -0
  674. package/test/dsl/unnest.test.ts +151 -0
  675. package/test/dsl/usage-policy.test.ts +100 -0
  676. package/test/dsl/utils/escape.property.test.ts +109 -0
  677. package/test/dsl/utils/escape.test.ts +140 -0
  678. package/test/dsl/utils/validate-field-name.property.test.ts +99 -0
  679. package/test/dsl/utils/validate-field-name.test.ts +55 -0
  680. package/test/examples/dsl-examples.test.ts +29 -0
  681. package/test/examples/usage-scenarios.test.ts +90 -0
  682. package/test/fixtures/describe-schema.json +4000 -0
  683. package/test/funder-org-names.test.ts +20 -0
  684. package/test/helpers/schema-fixture.ts +18 -0
  685. package/test/helpers/tool-test-harness.ts +114 -0
  686. package/test/integration/assertions.ts +263 -0
  687. package/test/integration/env.ts +108 -0
  688. package/test/integration/harness.ts +307 -0
  689. package/test/integration/hosted-client.ts +56 -0
  690. package/test/integration/hosted-mocks.ts +81 -0
  691. package/test/integration/hosted-run.ts +86 -0
  692. package/test/integration/hosted.e2e.test.ts +101 -0
  693. package/test/integration/reporter.ts +100 -0
  694. package/test/integration/run.ts +74 -0
  695. package/test/integration/suites/analytics.integration.ts +72 -0
  696. package/test/integration/suites/functions.integration.ts +37 -0
  697. package/test/integration/suites/hosted-smoke.integration.ts +38 -0
  698. package/test/integration/suites/index.ts +22 -0
  699. package/test/integration/suites/lookup.integration.ts +57 -0
  700. package/test/integration/suites/query.integration.ts +49 -0
  701. package/test/integration/suites/resources.integration.ts +68 -0
  702. package/test/integration/suites/search.integration.ts +80 -0
  703. package/test/integration/types.ts +92 -0
  704. package/test/integration/verify-usage-scenarios.ts +162 -0
  705. package/test/mcp/export-format.test.ts +67 -0
  706. package/test/mcp/http-server.test.ts +80 -0
  707. package/test/middleware/field-aliases.test.ts +287 -0
  708. package/test/resources/schema.test.ts +28 -0
  709. package/test/schema/describe-contract.test.ts +24 -0
  710. package/test/schema/store.test.ts +45 -0
  711. package/test/server.test.ts +170 -0
  712. package/test/tools/analytics-filters.test.ts +35 -0
  713. package/test/tools/analytics.test.ts +419 -0
  714. package/test/tools/fetch-search-pages.test.ts +200 -0
  715. package/test/tools/functions.test.ts +153 -0
  716. package/test/tools/lookup.test.ts +296 -0
  717. package/test/tools/query.test.ts +100 -0
  718. package/test/tools/schema.test.ts +37 -0
  719. package/test/tools/search.test.ts +415 -0
  720. package/test/utils.test.ts +45 -0
  721. package/tsconfig.json +9 -0
  722. 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"}