@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,82 @@
1
+ /**
2
+ * Pagination helpers aligned with Dimensions DSL operational limits.
3
+ * @see https://docs.dimensions.ai/dsl/usagepolicy.html
4
+ * @module dsl/pagination
5
+ */
6
+ /** Soft warning threshold for very large result sets. */
7
+ export declare const LARGE_RESULT_THRESHOLD = 10000;
8
+ /** Default pages per batch invocation (single page). */
9
+ export declare const DEFAULT_BATCH_MAX_PAGES = 1;
10
+ /** Hard cap on pages per batch invocation. */
11
+ export declare const HARD_MAX_BATCH_PAGES = 50;
12
+ /** Pages above this require `confirmLargeFetch`. */
13
+ export declare const CONFIRM_LARGE_FETCH_PAGES = 5;
14
+ /** Records above this require `confirmLargeFetch`. */
15
+ export declare const CONFIRM_LARGE_FETCH_RECORDS = 5000;
16
+ /** Max IDs returned in aggregate mode before truncation. */
17
+ export declare const AGGREGATE_ID_CAP = 500;
18
+ /** Metadata describing pagination state for search tool responses. */
19
+ export interface PaginationMetadata {
20
+ readonly pageSize: number;
21
+ readonly skip: number;
22
+ readonly page: number;
23
+ readonly nextSkip: number | null;
24
+ readonly maxPageSize: number;
25
+ readonly maxTotalRecords: number;
26
+ readonly maxPagesRemaining: number;
27
+ readonly estimatedRequestsToFetchAll: number;
28
+ readonly estimatedMinutesToFetchAll: number;
29
+ }
30
+ /** Arguments for resolving skip/limit from tool input. */
31
+ export type PaginationInput = {
32
+ readonly skip?: number;
33
+ readonly page?: number;
34
+ readonly limit?: number;
35
+ readonly pageSize?: number;
36
+ };
37
+ /**
38
+ * Validates that skip/limit stay within Dimensions pagination bounds.
39
+ * @param skip - Records to skip
40
+ * @param limit - Page size
41
+ * @throws {ValidationError} When out of bounds
42
+ */
43
+ export declare function validatePaginationBounds(skip: number, limit: number): void;
44
+ /**
45
+ * Resolves skip and limit from tool arguments (`skip`, `page`, `limit`, or `pageSize`).
46
+ * @param args - Pagination-related tool arguments
47
+ * @returns Resolved skip and limit
48
+ * @throws {ValidationError} When both skip and page are set or bounds are invalid
49
+ */
50
+ export declare function resolveSkipAndLimit(args: PaginationInput): {
51
+ skip: number;
52
+ limit: number;
53
+ };
54
+ /**
55
+ * Builds pagination metadata for a search response.
56
+ * @param skip - Current skip offset
57
+ * @param pageSize - Current page size
58
+ * @param totalCount - Total matching records from the API
59
+ * @returns Pagination metadata block
60
+ */
61
+ export declare function buildPaginationMetadata(skip: number, pageSize: number, totalCount: number): PaginationMetadata;
62
+ /**
63
+ * Returns a soft warning when totalCount exceeds {@link LARGE_RESULT_THRESHOLD}.
64
+ * @param totalCount - Total matching records
65
+ * @returns Warning string or undefined
66
+ */
67
+ export declare function largeResultWarning(totalCount: number): string | undefined;
68
+ /** Options for validating a multi-page batch request. */
69
+ export type BatchPaginationOptions = {
70
+ readonly startPage: number;
71
+ readonly maxPages: number;
72
+ readonly pageSize: number;
73
+ readonly maxRecords?: number;
74
+ readonly confirmLargeFetch?: boolean;
75
+ };
76
+ /**
77
+ * Validates multi-page batch parameters against policy guardrails.
78
+ * @param options - Batch request options
79
+ * @throws {ValidationError} When limits are exceeded or confirmation is required
80
+ */
81
+ export declare function validateBatchPagination(options: BatchPaginationOptions): void;
82
+ //# sourceMappingURL=pagination.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pagination.d.ts","sourceRoot":"","sources":["../../src/dsl/pagination.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,yDAAyD;AACzD,eAAO,MAAM,sBAAsB,QAAS,CAAC;AAE7C,wDAAwD;AACxD,eAAO,MAAM,uBAAuB,IAAI,CAAC;AAEzC,8CAA8C;AAC9C,eAAO,MAAM,oBAAoB,KAAK,CAAC;AAEvC,oDAAoD;AACpD,eAAO,MAAM,yBAAyB,IAAI,CAAC;AAE3C,sDAAsD;AACtD,eAAO,MAAM,2BAA2B,OAAQ,CAAC;AAEjD,4DAA4D;AAC5D,eAAO,MAAM,gBAAgB,MAAM,CAAC;AAEpC,sEAAsE;AACtE,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,2BAA2B,EAAE,MAAM,CAAC;IAC7C,QAAQ,CAAC,0BAA0B,EAAE,MAAM,CAAC;CAC7C;AAED,0DAA0D;AAC1D,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC5B,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAgB1E;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,eAAe,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAiB1F;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,GACjB,kBAAkB,CA0BpB;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAQzE;AAED,yDAAyD;AACzD,MAAM,MAAM,sBAAsB,GAAG;IACnC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,iBAAiB,CAAC,EAAE,OAAO,CAAC;CACtC,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,sBAAsB,GAAG,IAAI,CAoC7E"}
@@ -0,0 +1,135 @@
1
+ /**
2
+ * Pagination helpers aligned with Dimensions DSL operational limits.
3
+ * @see https://docs.dimensions.ai/dsl/usagepolicy.html
4
+ * @module dsl/pagination
5
+ */
6
+ import { ValidationError } from "../client/index.js";
7
+ import { SCHEMA_LIMITS } from "./schema/store.js";
8
+ /** Soft warning threshold for very large result sets. */
9
+ export const LARGE_RESULT_THRESHOLD = 10_000;
10
+ /** Default pages per batch invocation (single page). */
11
+ export const DEFAULT_BATCH_MAX_PAGES = 1;
12
+ /** Hard cap on pages per batch invocation. */
13
+ export const HARD_MAX_BATCH_PAGES = 50;
14
+ /** Pages above this require `confirmLargeFetch`. */
15
+ export const CONFIRM_LARGE_FETCH_PAGES = 5;
16
+ /** Records above this require `confirmLargeFetch`. */
17
+ export const CONFIRM_LARGE_FETCH_RECORDS = 5_000;
18
+ /** Max IDs returned in aggregate mode before truncation. */
19
+ export const AGGREGATE_ID_CAP = 500;
20
+ /**
21
+ * Validates that skip/limit stay within Dimensions pagination bounds.
22
+ * @param skip - Records to skip
23
+ * @param limit - Page size
24
+ * @throws {ValidationError} When out of bounds
25
+ */
26
+ export function validatePaginationBounds(skip, limit) {
27
+ if (limit < 1 || limit > SCHEMA_LIMITS.maxLimit) {
28
+ throw new ValidationError(`limit must be between 1 and ${SCHEMA_LIMITS.maxLimit}`, {
29
+ limit,
30
+ maxLimit: SCHEMA_LIMITS.maxLimit,
31
+ });
32
+ }
33
+ if (skip < 0) {
34
+ throw new ValidationError("skip must be non-negative", { skip });
35
+ }
36
+ if (skip + limit > SCHEMA_LIMITS.maxOffset) {
37
+ throw new ValidationError(`skip + limit cannot exceed ${SCHEMA_LIMITS.maxOffset} (max paginated records)`, { skip, limit, maxOffset: SCHEMA_LIMITS.maxOffset });
38
+ }
39
+ }
40
+ /**
41
+ * Resolves skip and limit from tool arguments (`skip`, `page`, `limit`, or `pageSize`).
42
+ * @param args - Pagination-related tool arguments
43
+ * @returns Resolved skip and limit
44
+ * @throws {ValidationError} When both skip and page are set or bounds are invalid
45
+ */
46
+ export function resolveSkipAndLimit(args) {
47
+ const limit = args.pageSize ?? args.limit ?? 100;
48
+ let skip = 0;
49
+ if (args.skip !== undefined) {
50
+ skip = args.skip;
51
+ }
52
+ else if (args.page !== undefined) {
53
+ if (args.page < 0 || args.page >= SCHEMA_LIMITS.maxPages) {
54
+ throw new ValidationError(`page must be between 0 and ${SCHEMA_LIMITS.maxPages - 1}`, {
55
+ page: args.page,
56
+ maxPages: SCHEMA_LIMITS.maxPages,
57
+ });
58
+ }
59
+ skip = args.page * limit;
60
+ }
61
+ validatePaginationBounds(skip, limit);
62
+ return { skip, limit };
63
+ }
64
+ /**
65
+ * Builds pagination metadata for a search response.
66
+ * @param skip - Current skip offset
67
+ * @param pageSize - Current page size
68
+ * @param totalCount - Total matching records from the API
69
+ * @returns Pagination metadata block
70
+ */
71
+ export function buildPaginationMetadata(skip, pageSize, totalCount) {
72
+ const page = Math.floor(skip / pageSize);
73
+ const fetchedThrough = skip + pageSize;
74
+ const hasMore = totalCount > fetchedThrough;
75
+ const nextSkip = hasMore ? fetchedThrough : null;
76
+ const remainingRecords = Math.max(0, totalCount - fetchedThrough);
77
+ const maxPagesRemaining = Math.min(SCHEMA_LIMITS.maxPages - (page + 1), Math.ceil(remainingRecords / pageSize));
78
+ const estimatedRequestsToFetchAll = Math.ceil(totalCount / pageSize);
79
+ const estimatedMinutesToFetchAll = Math.ceil(estimatedRequestsToFetchAll / SCHEMA_LIMITS.requestsPerMinute);
80
+ return {
81
+ pageSize,
82
+ skip,
83
+ page,
84
+ nextSkip,
85
+ maxPageSize: SCHEMA_LIMITS.maxLimit,
86
+ maxTotalRecords: SCHEMA_LIMITS.maxOffset,
87
+ maxPagesRemaining,
88
+ estimatedRequestsToFetchAll,
89
+ estimatedMinutesToFetchAll,
90
+ };
91
+ }
92
+ /**
93
+ * Returns a soft warning when totalCount exceeds {@link LARGE_RESULT_THRESHOLD}.
94
+ * @param totalCount - Total matching records
95
+ * @returns Warning string or undefined
96
+ */
97
+ export function largeResultWarning(totalCount) {
98
+ if (totalCount <= LARGE_RESULT_THRESHOLD)
99
+ return undefined;
100
+ const pages = Math.ceil(totalCount / SCHEMA_LIMITS.maxLimit);
101
+ const minutes = Math.ceil(pages / SCHEMA_LIMITS.requestsPerMinute);
102
+ return (`${totalCount.toLocaleString()} matches — narrow filters or use facets first. ` +
103
+ `Full pagination needs ~${pages} requests (~${minutes} min at ${SCHEMA_LIMITS.requestsPerMinute}/min).`);
104
+ }
105
+ /**
106
+ * Validates multi-page batch parameters against policy guardrails.
107
+ * @param options - Batch request options
108
+ * @throws {ValidationError} When limits are exceeded or confirmation is required
109
+ */
110
+ export function validateBatchPagination(options) {
111
+ const { startPage, maxPages, pageSize, maxRecords, confirmLargeFetch } = options;
112
+ if (maxPages < 1 || maxPages > HARD_MAX_BATCH_PAGES) {
113
+ throw new ValidationError(`maxPages must be between 1 and ${HARD_MAX_BATCH_PAGES}`, {
114
+ maxPages,
115
+ hardMax: HARD_MAX_BATCH_PAGES,
116
+ });
117
+ }
118
+ if (startPage < 0 || startPage >= SCHEMA_LIMITS.maxPages) {
119
+ throw new ValidationError(`startPage must be between 0 and ${SCHEMA_LIMITS.maxPages - 1}`, {
120
+ startPage,
121
+ });
122
+ }
123
+ validatePaginationBounds(startPage * pageSize, pageSize);
124
+ const endSkip = startPage * pageSize + maxPages * pageSize;
125
+ if (endSkip > SCHEMA_LIMITS.maxOffset) {
126
+ throw new ValidationError(`startPage + maxPages exceeds max paginated records (${SCHEMA_LIMITS.maxOffset})`, { startPage, maxPages, pageSize, maxOffset: SCHEMA_LIMITS.maxOffset });
127
+ }
128
+ const recordsPlanned = Math.min(maxPages * pageSize, maxRecords ?? maxPages * pageSize);
129
+ const needsConfirm = maxPages > CONFIRM_LARGE_FETCH_PAGES || recordsPlanned > CONFIRM_LARGE_FETCH_RECORDS;
130
+ if (needsConfirm && !confirmLargeFetch) {
131
+ throw new ValidationError(`Large fetch requires confirmLargeFetch: true (maxPages=${maxPages}, ~${recordsPlanned} records). ` +
132
+ "Narrow filters or use aggregate mode for summaries.", { maxPages, recordsPlanned, confirmLargeFetch });
133
+ }
134
+ }
135
+ //# sourceMappingURL=pagination.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pagination.js","sourceRoot":"","sources":["../../src/dsl/pagination.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,456 @@
1
+ /**
2
+ * Query builder for constructing Dimensions DSL queries programmatically.
3
+ * @module query-builder
4
+ */
5
+ import type { SchemaStore } from "./schema/store.js";
6
+ import type { Currency } from "./types/return-clauses.js";
7
+ import type { EntityType, SearchIndex, SortOrder, WhereOperator } from "./types/vocabulary.js";
8
+ export type { EntityType, SearchIndex, SortOrder, WhereOperator };
9
+ /**
10
+ * Fluent builder for constructing Dimensions DSL queries.
11
+ * Provides a type-safe way to build search queries with conditions, sorting, and pagination.
12
+ *
13
+ * @example
14
+ * ```typescript
15
+ * const query = new QueryBuilder()
16
+ * .search("publications")
17
+ * .for("machine learning")
18
+ * .where("year", ">=", 2020)
19
+ * .fields(["id", "title", "doi"])
20
+ * .sort("times_cited", "desc")
21
+ * .limit(100)
22
+ * .build();
23
+ * ```
24
+ */
25
+ export declare class QueryBuilder {
26
+ private readonly schemaStore;
27
+ private entity;
28
+ private searchIndex;
29
+ private searchTerms;
30
+ private similarText;
31
+ private complexPhrase;
32
+ private complexMaxDist;
33
+ private minShouldMatchPhrase;
34
+ private minShouldMatchMin;
35
+ private expressionNodes;
36
+ private groupDepth;
37
+ private pendingConnector;
38
+ private returnFields;
39
+ private unnestFields;
40
+ private sortField;
41
+ private sortOrder;
42
+ private skipValue;
43
+ private limitValue;
44
+ private facetClauses;
45
+ private timeSeriesClauses;
46
+ private groupedClauses;
47
+ /**
48
+ * @param schemaStore - Optional describe schema for entity/index validation
49
+ */
50
+ constructor(schemaStore?: SchemaStore);
51
+ /**
52
+ * Adds a condition node to the expression tree.
53
+ * Handles automatic AND connector insertion.
54
+ * @param condition - The condition string to add
55
+ */
56
+ private addConditionNode;
57
+ /**
58
+ * Determines if a space should be added before an expression node.
59
+ * Handles spacing rules for parentheses in boolean expressions.
60
+ * @param node - The current expression node
61
+ * @param prevNode - The previous expression node (or null if first)
62
+ * @returns True if a space should be added before the node
63
+ */
64
+ private shouldAddSpaceBefore;
65
+ /**
66
+ * Sets the entity type to search.
67
+ * @param entity - The entity type to search (publications, grants, etc.)
68
+ * @returns This builder for chaining
69
+ * @throws {ValidationError} If entity type is invalid
70
+ */
71
+ search(entity: EntityType | string): this;
72
+ /**
73
+ * Sets the search index for full-text search.
74
+ * Requires search terms via {@link for} — building without search terms will throw.
75
+ * @param index - The search index to use
76
+ * @returns This builder for chaining
77
+ * @throws {ValidationError} If index is invalid
78
+ * @throws {ValidationError} If used without search terms at build time
79
+ */
80
+ in(index: SearchIndex | string): this;
81
+ /**
82
+ * Sets the search terms for full-text search.
83
+ *
84
+ * **Note:** `"*"` is **not** a wildcard in the Dimensions DSL — it is treated as a literal
85
+ * string. To search all records without a text filter, simply omit the `for()` call and
86
+ * use `where()` conditions instead.
87
+ *
88
+ * @param terms - Search terms to look for
89
+ * @returns This builder for chaining
90
+ */
91
+ for(terms: string): this;
92
+ /**
93
+ * Sets the search to find semantically similar documents based on text.
94
+ * Uses the similar_documents() DSL function.
95
+ * @param text - The text (abstract, description) to find similar documents for
96
+ * @returns This builder for chaining
97
+ *
98
+ * @example
99
+ * ```typescript
100
+ * const query = new QueryBuilder()
101
+ * .search("publications")
102
+ * .forSimilar("After spinal cord injury, macrophages infiltrate...")
103
+ * .where("year", ">", 2015)
104
+ * .limit(10)
105
+ * .build();
106
+ * // Generates: search publications for similar_documents("...") where year > 2015 ...
107
+ * ```
108
+ */
109
+ forSimilar(text: string): this;
110
+ /**
111
+ * Sets the search to use proximity matching via the complex() DSL function.
112
+ * Finds documents where search terms appear within a maximum distance of each other.
113
+ * @param phrase - The search phrase
114
+ * @param maxDist - Maximum distance between terms (must be >= 1)
115
+ * @returns This builder for chaining
116
+ * @throws {ValidationError} If maxDist is less than 1
117
+ *
118
+ * @example
119
+ * ```typescript
120
+ * const query = new QueryBuilder()
121
+ * .search("publications")
122
+ * .forComplex("quantum networking", 3)
123
+ * .build();
124
+ * // Generates: search publications for complex("quantum networking", 3)
125
+ * ```
126
+ */
127
+ forComplex(phrase: string, maxDist: number): this;
128
+ /**
129
+ * Sets the search to use minimum term matching via the min_should_match() DSL function.
130
+ * Finds documents matching at least `min` of the terms in the phrase.
131
+ * @param phrase - The search phrase
132
+ * @param min - Minimum number of terms that must match (must be >= 1)
133
+ * @returns This builder for chaining
134
+ * @throws {ValidationError} If min is less than 1
135
+ *
136
+ * @example
137
+ * ```typescript
138
+ * const query = new QueryBuilder()
139
+ * .search("publications")
140
+ * .forMinShouldMatch("quantum OR optical networking", 2)
141
+ * .build();
142
+ * // Generates: search publications for min_should_match("quantum OR optical networking", 2)
143
+ * ```
144
+ */
145
+ forMinShouldMatch(phrase: string, min: number): this;
146
+ /**
147
+ * Adds a where clause condition.
148
+ * @param field - Field name to filter on
149
+ * @param operator - Comparison operator
150
+ * @param value - Value to compare against
151
+ * @returns This builder for chaining
152
+ * @throws {ValidationError} If operator is invalid
153
+ */
154
+ where(field: string, operator: WhereOperator, value: string | number | boolean): this;
155
+ /**
156
+ * Adds a condition checking if a field is empty.
157
+ * @param field - Field name to check
158
+ * @returns This builder for chaining
159
+ */
160
+ whereEmpty(field: string): this;
161
+ /**
162
+ * Adds a condition checking if a field is not empty.
163
+ * @param field - Field name to check
164
+ * @returns This builder for chaining
165
+ */
166
+ whereNotEmpty(field: string): this;
167
+ /**
168
+ * Adds a list filter condition (field in ["a", "b", "c"]).
169
+ * @param field - Field name to filter on
170
+ * @param values - Array of values to match
171
+ * @returns This builder for chaining
172
+ * @throws {ValidationError} If values array is empty
173
+ * @throws {ValidationError} If values array exceeds 400 items (DSL limit)
174
+ */
175
+ whereIn(field: string, values: readonly (string | number)[]): this;
176
+ /**
177
+ * Adds a range filter condition (field in [start:end]).
178
+ * @param field - Field name to filter on
179
+ * @param start - Start of range (inclusive)
180
+ * @param end - End of range (inclusive)
181
+ * @returns This builder for chaining
182
+ * @throws {ValidationError} If numeric start is greater than numeric end
183
+ */
184
+ whereRange(field: string, start: string | number, end: string | number): this;
185
+ /**
186
+ * Sets the next connector to OR.
187
+ * @returns This builder for chaining
188
+ */
189
+ or(): this;
190
+ /**
191
+ * Sets the next connector to NOT.
192
+ * @returns This builder for chaining
193
+ */
194
+ not(): this;
195
+ /**
196
+ * Sets the next connector to AND explicitly.
197
+ * Note: AND is the default connector between conditions, but this method
198
+ * provides API symmetry with or() and not().
199
+ * @returns This builder for chaining
200
+ */
201
+ and(): this;
202
+ /**
203
+ * Opens a parenthesized group.
204
+ * @returns This builder for chaining
205
+ */
206
+ openGroup(): this;
207
+ /**
208
+ * Closes a parenthesized group.
209
+ * @returns This builder for chaining
210
+ * @throws {ValidationError} If no group is open
211
+ */
212
+ closeGroup(): this;
213
+ /**
214
+ * Adds a count filter condition (count(field) op value).
215
+ * @param field - Multi-value field name to count
216
+ * @param operator - Comparison operator
217
+ * @param value - Count to compare against
218
+ * @returns This builder for chaining
219
+ */
220
+ whereCount(field: string, operator: "=" | "!=" | ">" | "<" | ">=" | "<=", value: number): this;
221
+ /**
222
+ * Sets the fields to return.
223
+ * @param fieldList - Array of field names to return
224
+ * @returns This builder for chaining
225
+ */
226
+ fields(fieldList: string[]): this;
227
+ /**
228
+ * Sets the fields to return including unnest operations.
229
+ * Unnest flattens nested arrays into separate rows (Cartesian product).
230
+ * DSL: return publications[id+title+unnest(researchers)+unnest(category_for)]
231
+ *
232
+ * @param fieldList - Array of regular field names to return
233
+ * @param unnestFieldList - Array of field names to unnest
234
+ * @returns This builder for chaining
235
+ * @throws {ValidationError} If any unnest field name is empty or whitespace-only
236
+ *
237
+ * @example
238
+ * ```typescript
239
+ * const query = new QueryBuilder()
240
+ * .search("publications")
241
+ * .for("machine learning")
242
+ * .fieldsWithUnnest(["id", "title"], ["researchers", "category_for"])
243
+ * .build();
244
+ * // Returns flattened rows - one row per researcher × category combination
245
+ * ```
246
+ */
247
+ fieldsWithUnnest(fieldList: readonly string[], unnestFieldList: readonly string[]): this;
248
+ /**
249
+ * Adds an unnest field to the return clause.
250
+ * Can be chained with fields() to add unnest operations.
251
+ * DSL: return publications[id+title+unnest(researchers)]
252
+ *
253
+ * @param field - Field name to unnest
254
+ * @returns This builder for chaining
255
+ * @throws {ValidationError} If field name is empty or whitespace-only
256
+ *
257
+ * @example
258
+ * ```typescript
259
+ * const query = new QueryBuilder()
260
+ * .search("publications")
261
+ * .for("test")
262
+ * .fields(["id", "title"])
263
+ * .addUnnest("researchers")
264
+ * .addUnnest("category_for")
265
+ * .build();
266
+ * ```
267
+ */
268
+ addUnnest(field: string): this;
269
+ /**
270
+ * Sets the sort field and order.
271
+ * @param field - Field name to sort by
272
+ * @param order - Sort direction (asc or desc)
273
+ * @returns This builder for chaining
274
+ */
275
+ sort(field: string, order?: SortOrder): this;
276
+ /**
277
+ * Sets the number of results to skip (for pagination).
278
+ * @param count - Number of results to skip
279
+ * @returns This builder for chaining
280
+ * @throws {ValidationError} If count is negative
281
+ */
282
+ skip(count: number): this;
283
+ /**
284
+ * Sets the maximum number of results to return.
285
+ * @param count - Maximum number of results
286
+ * @returns This builder for chaining
287
+ * @throws {ValidationError} If count is negative
288
+ */
289
+ limit(count: number): this;
290
+ /**
291
+ * Adds a facet return clause.
292
+ * DSL: return <field> [limit <n>]
293
+ * @param field - Facet field name
294
+ * @param options - Optional limit for facet results
295
+ * @returns This builder for chaining
296
+ * @throws {ValidationError} If field is empty or whitespace-only
297
+ * @throws {ValidationError} If limit is negative
298
+ */
299
+ returnFacet(field: string, options?: {
300
+ limit?: number;
301
+ }): this;
302
+ /**
303
+ * Adds an aggregated facet return clause.
304
+ * DSL: return <field> aggregate <indicators> [sort by <indicator> <order>] [limit <n>]
305
+ * @param field - Facet field name
306
+ * @param indicators - Array of indicator names to aggregate
307
+ * @param options - Optional sort and limit options
308
+ * @returns This builder for chaining
309
+ * @throws {ValidationError} If field is empty or whitespace-only
310
+ * @throws {ValidationError} If indicators array is empty
311
+ * @throws {ValidationError} If any indicator is empty or whitespace-only
312
+ * @throws {ValidationError} If limit is negative
313
+ * @throws {ValidationError} If sortBy is not one of indicators or "count"
314
+ */
315
+ returnAggregate(field: string, indicators: readonly string[], options?: {
316
+ sortBy?: string;
317
+ sortOrder?: SortOrder;
318
+ limit?: number;
319
+ }): this;
320
+ /**
321
+ * Adds a citations_per_year time-series return clause.
322
+ * Returns citation counts per year for the specified range.
323
+ * DSL: return citations_per_year(2010, 2023)
324
+ *
325
+ * @param startYear - Start year for the time series (inclusive)
326
+ * @param endYear - End year for the time series (inclusive)
327
+ * @returns This builder for chaining
328
+ * @throws {ValidationError} If startYear is greater than endYear
329
+ *
330
+ * @example
331
+ * ```typescript
332
+ * const query = new QueryBuilder()
333
+ * .search("publications")
334
+ * .for("machine learning")
335
+ * .returnCitationsPerYear(2010, 2023)
336
+ * .build();
337
+ * // "search publications for ... return citations_per_year(2010, 2023)"
338
+ * ```
339
+ */
340
+ returnCitationsPerYear(startYear: number, endYear: number): this;
341
+ /**
342
+ * Adds a funding_per_year time-series return clause.
343
+ * Returns funding amounts per year for the specified range.
344
+ * DSL: return funding_per_year(2015, 2023, "USD")
345
+ *
346
+ * @param startYear - Start year for the time series (inclusive)
347
+ * @param endYear - End year for the time series (inclusive)
348
+ * @param currency - Currency for the funding amounts (default: "USD")
349
+ * @returns This builder for chaining
350
+ * @throws {ValidationError} If startYear is greater than endYear
351
+ *
352
+ * @example
353
+ * ```typescript
354
+ * const query = new QueryBuilder()
355
+ * .search("grants")
356
+ * .for("cancer research")
357
+ * .returnFundingPerYear(2015, 2023, "EUR")
358
+ * .build();
359
+ * // "search grants for ... return funding_per_year(2015, 2023, "EUR")"
360
+ * ```
361
+ */
362
+ returnFundingPerYear(startYear: number, endYear: number, currency?: Currency): this;
363
+ /**
364
+ * Adds a grouped entity return clause.
365
+ * DSL: return in "docs" publications[id + title]
366
+ *
367
+ * @param groupName - Name for the result group
368
+ * @param options - Entity return options (fields, limit, skip, sort)
369
+ * @returns This builder for chaining
370
+ * @throws {ValidationError} If groupName is empty or whitespace-only
371
+ *
372
+ * @example
373
+ * ```typescript
374
+ * const query = new QueryBuilder()
375
+ * .search("publications")
376
+ * .for("test")
377
+ * .returnGrouped("docs", { fields: ["id", "title"], limit: 10 })
378
+ * .build();
379
+ * // "... return in "docs" publications[id+title] limit 10"
380
+ * ```
381
+ */
382
+ returnGrouped(groupName: string, options?: {
383
+ fields?: readonly string[];
384
+ limit?: number;
385
+ skip?: number;
386
+ sortField?: string;
387
+ sortOrder?: SortOrder;
388
+ }): this;
389
+ /**
390
+ * Adds a grouped facet return clause (simple facet).
391
+ * DSL: return in "facets" year limit 10
392
+ *
393
+ * @param groupName - Name for the result group
394
+ * @param field - Facet field name
395
+ * @param options - Optional limit for facet results
396
+ * @returns This builder for chaining
397
+ * @throws {ValidationError} If groupName or field is empty
398
+ *
399
+ * @example
400
+ * ```typescript
401
+ * const query = new QueryBuilder()
402
+ * .search("publications")
403
+ * .for("test")
404
+ * .returnGroupedFacet("years", "year", { limit: 20 })
405
+ * .build();
406
+ * // "... return in "years" year limit 20"
407
+ * ```
408
+ */
409
+ returnGroupedFacet(groupName: string, field: string, options?: {
410
+ limit?: number;
411
+ }): this;
412
+ /**
413
+ * Adds a grouped aggregated facet return clause.
414
+ * DSL: return in "metrics" funders aggregate rcr_avg, funding_usd sort by rcr_avg desc
415
+ *
416
+ * @param groupName - Name for the result group
417
+ * @param field - Facet field name
418
+ * @param indicators - Array of indicator names to aggregate
419
+ * @param options - Optional sort and limit options
420
+ * @returns This builder for chaining
421
+ * @throws {ValidationError} If groupName, field, or indicators are invalid
422
+ *
423
+ * @example
424
+ * ```typescript
425
+ * const query = new QueryBuilder()
426
+ * .search("publications")
427
+ * .for("test")
428
+ * .returnGroupedAggregate("metrics", "funders", ["rcr_avg"], { sortBy: "rcr_avg" })
429
+ * .build();
430
+ * // "... return in "metrics" funders aggregate rcr_avg sort by rcr_avg desc"
431
+ * ```
432
+ */
433
+ returnGroupedAggregate(groupName: string, field: string, indicators: readonly string[], options?: {
434
+ sortBy?: string;
435
+ sortOrder?: SortOrder;
436
+ limit?: number;
437
+ }): this;
438
+ /**
439
+ * Builds the DSL query string.
440
+ * @returns The constructed DSL query
441
+ * @throws {ValidationError} If entity type is not set
442
+ */
443
+ build(): string;
444
+ /**
445
+ * Creates a deep copy of this builder.
446
+ * Useful when branching queries (e.g. adding different facets from a shared base).
447
+ * @returns A new QueryBuilder with the same state
448
+ */
449
+ clone(): QueryBuilder;
450
+ /**
451
+ * Resets the builder to its initial state.
452
+ * @returns This builder for chaining
453
+ */
454
+ reset(): this;
455
+ }
456
+ //# sourceMappingURL=query-builder.d.ts.map