@adaptabletools/adaptable-mcp 0.1.0-canary.0 → 0.1.0-canary.2

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 (348) hide show
  1. package/README.md +58 -61
  2. package/data/changes/21-22.json +542 -0
  3. package/data/changes/22-23.json +639 -0
  4. package/data/changes/23-24.json +1874 -0
  5. package/data/manifest.snapshot.json +202 -0
  6. package/data/templates/angular/src/app/adaptableOptions.ts +40 -0
  7. package/data/templates/angular/src/app/agGridModules.ts +7 -0
  8. package/data/templates/angular/src/app/app.component.ts +66 -0
  9. package/data/templates/angular/src/app/app.module.ts +14 -0
  10. package/data/templates/angular/src/app/columnDefs.ts +121 -0
  11. package/data/templates/angular/src/app/gridOptions.ts +32 -0
  12. package/data/templates/angular/src/app/onAdaptableReady.ts +11 -0
  13. package/data/templates/angular/src/app/rowData.ts +851 -0
  14. package/data/templates/angular/src/app/styles.css +50 -0
  15. package/data/templates/angular/src/index.html +17 -0
  16. package/data/templates/angular/src/main.ts +18 -0
  17. package/data/templates/angular/src/polyfills.ts +1 -0
  18. package/data/templates/angular/tsconfig.json +16 -0
  19. package/data/templates/manifest.json +406 -0
  20. package/data/templates/react/src/App.tsx +71 -0
  21. package/data/templates/react/src/adaptableOptions.ts +40 -0
  22. package/data/templates/react/src/agGridModules.ts +7 -0
  23. package/data/templates/react/src/columnDefs.ts +121 -0
  24. package/data/templates/react/src/gridOptions.ts +32 -0
  25. package/data/templates/react/src/index.tsx +8 -0
  26. package/data/templates/react/src/onAdaptableReady.ts +11 -0
  27. package/data/templates/react/src/rowData.ts +851 -0
  28. package/data/templates/react/src/styles.css +50 -0
  29. package/data/templates/react/tsconfig.json +9 -0
  30. package/data/templates/vanilla/index.html +18 -0
  31. package/data/templates/vanilla/src/adaptableOptions.ts +40 -0
  32. package/data/templates/vanilla/src/agGridModules.ts +7 -0
  33. package/data/templates/vanilla/src/columnDefs.ts +121 -0
  34. package/data/templates/vanilla/src/gridOptions.ts +32 -0
  35. package/data/templates/vanilla/src/index.ts +41 -0
  36. package/data/templates/vanilla/src/onAdaptableReady.ts +11 -0
  37. package/data/templates/vanilla/src/rowData.ts +851 -0
  38. package/data/templates/vanilla/src/styles.css +50 -0
  39. package/data/templates/vanilla/tsconfig.json +14 -0
  40. package/data/templates/vue/.babelrc +3 -0
  41. package/data/templates/vue/public/index.html +19 -0
  42. package/data/templates/vue/src/App.vue +35 -0
  43. package/data/templates/vue/src/adaptableOptions.ts +40 -0
  44. package/data/templates/vue/src/agGridModules.ts +7 -0
  45. package/data/templates/vue/src/columnDefs.ts +121 -0
  46. package/data/templates/vue/src/gridOptions.ts +32 -0
  47. package/data/templates/vue/src/main.ts +6 -0
  48. package/data/templates/vue/src/onAdaptableReady.ts +11 -0
  49. package/data/templates/vue/src/rowData.ts +851 -0
  50. package/data/templates/vue/src/shims-vue.d.ts +6 -0
  51. package/data/templates/vue/src/styles.css +50 -0
  52. package/data/templates/vue/tsconfig.json +30 -0
  53. package/dist/bin.js +23 -0
  54. package/dist/bin.js.map +1 -0
  55. package/dist/cli/build-commands.js +200 -0
  56. package/dist/cli/build-commands.js.map +1 -0
  57. package/dist/cli/index.js +94 -0
  58. package/dist/cli/index.js.map +1 -0
  59. package/dist/cli/render.js +57 -0
  60. package/dist/cli/render.js.map +1 -0
  61. package/dist/core/anonymise/anonymise.js +315 -0
  62. package/dist/core/anonymise/anonymise.js.map +1 -0
  63. package/dist/core/anonymise/capabilities.js +94 -0
  64. package/dist/core/anonymise/capabilities.js.map +1 -0
  65. package/dist/core/aql/capabilities.js +339 -0
  66. package/dist/core/aql/capabilities.js.map +1 -0
  67. package/dist/core/aql/check.js +204 -0
  68. package/dist/core/aql/check.js.map +1 -0
  69. package/dist/core/aql/engine.js +92 -0
  70. package/dist/core/aql/engine.js.map +1 -0
  71. package/dist/core/aql/functions.js +108 -0
  72. package/dist/core/aql/functions.js.map +1 -0
  73. package/dist/core/aql/migrate.js +62 -0
  74. package/dist/core/aql/migrate.js.map +1 -0
  75. package/dist/core/capabilities.js +105 -0
  76. package/dist/core/capabilities.js.map +1 -0
  77. package/dist/core/changes/capabilities.js +92 -0
  78. package/dist/core/changes/capabilities.js.map +1 -0
  79. package/dist/core/changes/changes.js +101 -0
  80. package/dist/core/changes/changes.js.map +1 -0
  81. package/dist/core/changes/grep.js +183 -0
  82. package/dist/core/changes/grep.js.map +1 -0
  83. package/dist/core/changes/records.js +172 -0
  84. package/dist/core/changes/records.js.map +1 -0
  85. package/dist/core/changes/render-md.js +101 -0
  86. package/dist/core/changes/render-md.js.map +1 -0
  87. package/dist/core/changes/with-docs.js +86 -0
  88. package/dist/core/changes/with-docs.js.map +1 -0
  89. package/dist/core/compat/capabilities.js +127 -0
  90. package/dist/core/compat/capabilities.js.map +1 -0
  91. package/dist/core/compat/manifest.js +203 -0
  92. package/dist/core/compat/manifest.js.map +1 -0
  93. package/dist/core/constants.js +38 -0
  94. package/dist/core/constants.js.map +1 -0
  95. package/dist/core/context/capabilities.js +106 -0
  96. package/dist/core/context/capabilities.js.map +1 -0
  97. package/dist/core/context/detect.js +370 -0
  98. package/dist/core/context/detect.js.map +1 -0
  99. package/dist/core/context/projects.js +159 -0
  100. package/dist/core/context/projects.js.map +1 -0
  101. package/dist/core/context/resolve.js +85 -0
  102. package/dist/core/context/resolve.js.map +1 -0
  103. package/dist/core/convert/capabilities.js +86 -0
  104. package/dist/core/convert/capabilities.js.map +1 -0
  105. package/dist/core/convert/coldefs.js +313 -0
  106. package/dist/core/convert/coldefs.js.map +1 -0
  107. package/dist/core/docs/areas.js +22 -0
  108. package/dist/core/docs/areas.js.map +1 -0
  109. package/dist/core/docs/cache.js +133 -0
  110. package/dist/core/docs/cache.js.map +1 -0
  111. package/dist/core/docs/capabilities.js +377 -0
  112. package/dist/core/docs/capabilities.js.map +1 -0
  113. package/dist/core/docs/corpus.js.map +1 -0
  114. package/dist/core/docs/demos.js +105 -0
  115. package/dist/core/docs/demos.js.map +1 -0
  116. package/dist/core/docs/get-page.js +182 -0
  117. package/dist/core/docs/get-page.js.map +1 -0
  118. package/dist/core/docs/hosts.js +74 -0
  119. package/dist/core/docs/hosts.js.map +1 -0
  120. package/dist/core/docs/search.js.map +1 -0
  121. package/dist/core/envelope.js +79 -0
  122. package/dist/core/envelope.js.map +1 -0
  123. package/dist/core/extract/imports.js +163 -0
  124. package/dist/core/extract/imports.js.map +1 -0
  125. package/dist/core/extract/input.js +140 -0
  126. package/dist/core/extract/input.js.map +1 -0
  127. package/dist/core/extract/line-map.js +90 -0
  128. package/dist/core/extract/line-map.js.map +1 -0
  129. package/dist/core/extract/ts-literal.js +963 -0
  130. package/dist/core/extract/ts-literal.js.map +1 -0
  131. package/dist/core/index.js +13 -0
  132. package/dist/core/index.js.map +1 -0
  133. package/dist/core/migrate/capabilities.js +143 -0
  134. package/dist/core/migrate/capabilities.js.map +1 -0
  135. package/dist/core/migrate/leftovers.js +119 -0
  136. package/dist/core/migrate/leftovers.js.map +1 -0
  137. package/dist/core/migrate/state.js +295 -0
  138. package/dist/core/migrate/state.js.map +1 -0
  139. package/dist/core/packages/cache.js +139 -0
  140. package/dist/core/packages/cache.js.map +1 -0
  141. package/dist/core/packages/capabilities.js +95 -0
  142. package/dist/core/packages/capabilities.js.map +1 -0
  143. package/dist/{adaptable/types.js → core/packages/entry-types.js} +1 -1
  144. package/dist/core/packages/entry-types.js.map +1 -0
  145. package/dist/core/packages/exec.js +37 -0
  146. package/dist/core/packages/exec.js.map +1 -0
  147. package/dist/core/packages/load-entry.js +123 -0
  148. package/dist/core/packages/load-entry.js.map +1 -0
  149. package/dist/core/packages/prepare.js +122 -0
  150. package/dist/core/packages/prepare.js.map +1 -0
  151. package/dist/core/packages/registry.js +75 -0
  152. package/dist/core/packages/registry.js.map +1 -0
  153. package/dist/core/packages/resolve.js +94 -0
  154. package/dist/core/packages/resolve.js.map +1 -0
  155. package/dist/core/packages/versions.js +71 -0
  156. package/dist/core/packages/versions.js.map +1 -0
  157. package/dist/core/ping.js +22 -0
  158. package/dist/core/ping.js.map +1 -0
  159. package/dist/core/register.js +18 -0
  160. package/dist/core/register.js.map +1 -0
  161. package/dist/core/scaffold/capabilities.js +434 -0
  162. package/dist/core/scaffold/capabilities.js.map +1 -0
  163. package/dist/core/scaffold/generate.js +409 -0
  164. package/dist/core/scaffold/generate.js.map +1 -0
  165. package/dist/core/scaffold/infer.js +441 -0
  166. package/dist/core/scaffold/infer.js.map +1 -0
  167. package/dist/core/scaffold/overlay.js +290 -0
  168. package/dist/core/scaffold/overlay.js.map +1 -0
  169. package/dist/core/scaffold/readers/csv.js +146 -0
  170. package/dist/core/scaffold/readers/csv.js.map +1 -0
  171. package/dist/core/scaffold/readers/dataset.js +53 -0
  172. package/dist/core/scaffold/readers/dataset.js.map +1 -0
  173. package/dist/core/scaffold/readers/index.js +62 -0
  174. package/dist/core/scaffold/readers/index.js.map +1 -0
  175. package/dist/core/scaffold/readers/json.js +101 -0
  176. package/dist/core/scaffold/readers/json.js.map +1 -0
  177. package/dist/core/scaffold/readers/xlsx.js +81 -0
  178. package/dist/core/scaffold/readers/xlsx.js.map +1 -0
  179. package/dist/core/scaffold/suggestions.js +57 -0
  180. package/dist/core/scaffold/suggestions.js.map +1 -0
  181. package/dist/core/scaffold/templates.js +59 -0
  182. package/dist/core/scaffold/templates.js.map +1 -0
  183. package/dist/core/setup/audit.js +91 -0
  184. package/dist/core/setup/audit.js.map +1 -0
  185. package/dist/core/setup/capabilities.js +80 -0
  186. package/dist/core/setup/capabilities.js.map +1 -0
  187. package/dist/core/setup/context.js +118 -0
  188. package/dist/core/setup/context.js.map +1 -0
  189. package/dist/core/setup/rules/cell-data-type.js +40 -0
  190. package/dist/core/setup/rules/cell-data-type.js.map +1 -0
  191. package/dist/core/setup/rules/coldef-ownership.js +67 -0
  192. package/dist/core/setup/rules/coldef-ownership.js.map +1 -0
  193. package/dist/core/setup/rules/css-import.js +34 -0
  194. package/dist/core/setup/rules/css-import.js.map +1 -0
  195. package/dist/core/setup/rules/direct-grid.js +42 -0
  196. package/dist/core/setup/rules/direct-grid.js.map +1 -0
  197. package/dist/core/setup/rules/index.js +53 -0
  198. package/dist/core/setup/rules/index.js.map +1 -0
  199. package/dist/core/setup/rules/licence-literal.js +23 -0
  200. package/dist/core/setup/rules/licence-literal.js.map +1 -0
  201. package/dist/core/setup/rules/modules.js +86 -0
  202. package/dist/core/setup/rules/modules.js.map +1 -0
  203. package/dist/core/setup/rules/react-stable-refs.js +20 -0
  204. package/dist/core/setup/rules/react-stable-refs.js.map +1 -0
  205. package/dist/core/setup/rules/ready-hook.js +33 -0
  206. package/dist/core/setup/rules/ready-hook.js.map +1 -0
  207. package/dist/core/setup/rules/required-options.js +43 -0
  208. package/dist/core/setup/rules/required-options.js.map +1 -0
  209. package/dist/core/setup/rules/rule.js +10 -0
  210. package/dist/core/setup/rules/rule.js.map +1 -0
  211. package/dist/core/setup/rules/version-skew.js +65 -0
  212. package/dist/core/setup/rules/version-skew.js.map +1 -0
  213. package/dist/core/state/capabilities.js +78 -0
  214. package/dist/core/state/capabilities.js.map +1 -0
  215. package/dist/core/state/check.js +216 -0
  216. package/dist/core/state/check.js.map +1 -0
  217. package/dist/core/state/columns.js +130 -0
  218. package/dist/core/state/columns.js.map +1 -0
  219. package/dist/core/state/did-you-mean.js +83 -0
  220. package/dist/core/state/did-you-mean.js.map +1 -0
  221. package/dist/core/state/expressions.js +170 -0
  222. package/dist/core/state/expressions.js.map +1 -0
  223. package/dist/core/state/known-names.js +96 -0
  224. package/dist/core/state/known-names.js.map +1 -0
  225. package/dist/core/state/rules/aql-legacy-shape.js +42 -0
  226. package/dist/core/state/rules/aql-legacy-shape.js.map +1 -0
  227. package/dist/core/state/rules/aql-missing.js +21 -0
  228. package/dist/core/state/rules/aql-missing.js.map +1 -0
  229. package/dist/core/state/rules/aql-syntax.js +77 -0
  230. package/dist/core/state/rules/aql-syntax.js.map +1 -0
  231. package/dist/core/state/rules/calculated-settings.js +23 -0
  232. package/dist/core/state/rules/calculated-settings.js.map +1 -0
  233. package/dist/core/state/rules/column-id-exists.js +29 -0
  234. package/dist/core/state/rules/column-id-exists.js.map +1 -0
  235. package/dist/core/state/rules/dashboard-module-names.js +31 -0
  236. package/dist/core/state/rules/dashboard-module-names.js.map +1 -0
  237. package/dist/core/state/rules/dashboard-toolbar-names.js +48 -0
  238. package/dist/core/state/rules/dashboard-toolbar-names.js.map +1 -0
  239. package/dist/core/state/rules/format-column-pivot-display-format.js +43 -0
  240. package/dist/core/state/rules/format-column-pivot-display-format.js.map +1 -0
  241. package/dist/core/state/rules/helpers.js +39 -0
  242. package/dist/core/state/rules/helpers.js.map +1 -0
  243. package/dist/core/state/rules/index.js +80 -0
  244. package/dist/core/state/rules/index.js.map +1 -0
  245. package/dist/core/state/rules/layout-column-refs.js +60 -0
  246. package/dist/core/state/rules/layout-column-refs.js.map +1 -0
  247. package/dist/core/state/rules/layout-current-exists.js +27 -0
  248. package/dist/core/state/rules/layout-current-exists.js.map +1 -0
  249. package/dist/core/state/rules/layout-non-empty.js +32 -0
  250. package/dist/core/state/rules/layout-non-empty.js.map +1 -0
  251. package/dist/core/state/rules/rule.js +2 -0
  252. package/dist/core/state/rules/rule.js.map +1 -0
  253. package/dist/core/state/rules/scope-column-refs.js +32 -0
  254. package/dist/core/state/rules/scope-column-refs.js.map +1 -0
  255. package/dist/core/state/rules/scope-shape.js +61 -0
  256. package/dist/core/state/rules/scope-shape.js.map +1 -0
  257. package/dist/core/state/rules/state-unique-name.js +40 -0
  258. package/dist/core/state/rules/state-unique-name.js.map +1 -0
  259. package/dist/core/state/rules/state-unknown-section.js +30 -0
  260. package/dist/core/state/rules/state-unknown-section.js.map +1 -0
  261. package/dist/core/state/rules/type-discriminator.js +70 -0
  262. package/dist/core/state/rules/type-discriminator.js.map +1 -0
  263. package/dist/core/state/type-check.js +408 -0
  264. package/dist/core/state/type-check.js.map +1 -0
  265. package/dist/mcp/index.js +109 -0
  266. package/dist/mcp/index.js.map +1 -0
  267. package/dist/mcp/server.js +110 -0
  268. package/dist/mcp/server.js.map +1 -0
  269. package/dist/skills/adaptable-debug/SKILL.md +145 -0
  270. package/dist/skills/adaptable-debug/VERSION.md +1 -0
  271. package/dist/skills/adaptable-debug/references/_shared/agents-snippet.md +3 -0
  272. package/dist/skills/adaptable-debug/references/_shared/capabilities.md +35 -0
  273. package/dist/skills/adaptable-debug/references/_shared/conversation.md +20 -0
  274. package/dist/skills/adaptable-debug/references/_shared/docs-protocol.md +36 -0
  275. package/dist/skills/adaptable-debug/references/_shared/grounding.md +54 -0
  276. package/dist/skills/adaptable-debug/references/_shared/guards.md +20 -0
  277. package/dist/skills/adaptable-debug/references/_shared/validation-loop.md +42 -0
  278. package/dist/skills/adaptable-debug/references/devtools-api.md +36 -0
  279. package/dist/skills/adaptable-debug/references/feedback-template.md +36 -0
  280. package/dist/skills/adaptable-debug/references/symptoms.md +37 -0
  281. package/dist/skills/adaptable-debug/references/ticket-template.md +50 -0
  282. package/dist/skills/adaptable-dev/SKILL.md +97 -0
  283. package/dist/skills/adaptable-dev/VERSION.md +1 -0
  284. package/dist/skills/adaptable-dev/references/_shared/agents-snippet.md +3 -0
  285. package/dist/skills/adaptable-dev/references/_shared/capabilities.md +35 -0
  286. package/dist/skills/adaptable-dev/references/_shared/conversation.md +20 -0
  287. package/dist/skills/adaptable-dev/references/_shared/docs-protocol.md +36 -0
  288. package/dist/skills/adaptable-dev/references/_shared/grounding.md +54 -0
  289. package/dist/skills/adaptable-dev/references/_shared/guards.md +20 -0
  290. package/dist/skills/adaptable-dev/references/_shared/validation-loop.md +42 -0
  291. package/dist/skills/adaptable-dev/references/recommendations.md +93 -0
  292. package/dist/skills/adaptable-setup/SKILL.md +158 -0
  293. package/dist/skills/adaptable-setup/VERSION.md +1 -0
  294. package/dist/skills/adaptable-setup/references/_shared/agents-snippet.md +3 -0
  295. package/dist/skills/adaptable-setup/references/_shared/capabilities.md +35 -0
  296. package/dist/skills/adaptable-setup/references/_shared/conversation.md +20 -0
  297. package/dist/skills/adaptable-setup/references/_shared/docs-protocol.md +36 -0
  298. package/dist/skills/adaptable-setup/references/_shared/grounding.md +54 -0
  299. package/dist/skills/adaptable-setup/references/_shared/guards.md +20 -0
  300. package/dist/skills/adaptable-setup/references/_shared/validation-loop.md +42 -0
  301. package/dist/skills/adaptable-setup/references/paths.md +45 -0
  302. package/dist/skills/adaptable-upgrade/SKILL.md +269 -0
  303. package/dist/skills/adaptable-upgrade/VERSION.md +1 -0
  304. package/dist/skills/adaptable-upgrade/references/_shared/agents-snippet.md +3 -0
  305. package/dist/skills/adaptable-upgrade/references/_shared/capabilities.md +35 -0
  306. package/dist/skills/adaptable-upgrade/references/_shared/conversation.md +20 -0
  307. package/dist/skills/adaptable-upgrade/references/_shared/docs-protocol.md +36 -0
  308. package/dist/skills/adaptable-upgrade/references/_shared/grounding.md +54 -0
  309. package/dist/skills/adaptable-upgrade/references/_shared/guards.md +20 -0
  310. package/dist/skills/adaptable-upgrade/references/_shared/validation-loop.md +42 -0
  311. package/dist/skills/adaptable-upgrade/references/apply-order.md +171 -0
  312. package/dist/skills/adaptable-upgrade/references/plan-preamble.md +151 -0
  313. package/dist/skills/adaptable-upgrade/scripts/adaptable.mjs +24 -0
  314. package/package.json +34 -13
  315. package/dist/adaptable/loadEntry.js +0 -94
  316. package/dist/adaptable/loadEntry.js.map +0 -1
  317. package/dist/adaptable/types.js.map +0 -1
  318. package/dist/cache.js +0 -11
  319. package/dist/cache.js.map +0 -1
  320. package/dist/checks/stateRules.js +0 -389
  321. package/dist/checks/stateRules.js.map +0 -1
  322. package/dist/checks/stateTypes.js +0 -142
  323. package/dist/checks/stateTypes.js.map +0 -1
  324. package/dist/context.js +0 -39
  325. package/dist/context.js.map +0 -1
  326. package/dist/docs/corpus.js.map +0 -1
  327. package/dist/docs/search.js.map +0 -1
  328. package/dist/docs/source.js +0 -151
  329. package/dist/docs/source.js.map +0 -1
  330. package/dist/environment.js +0 -181
  331. package/dist/environment.js.map +0 -1
  332. package/dist/index.js +0 -7
  333. package/dist/index.js.map +0 -1
  334. package/dist/prompts.js +0 -84
  335. package/dist/prompts.js.map +0 -1
  336. package/dist/resources.js +0 -59
  337. package/dist/resources.js.map +0 -1
  338. package/dist/server.js +0 -23
  339. package/dist/server.js.map +0 -1
  340. package/dist/tools/checks.js +0 -250
  341. package/dist/tools/checks.js.map +0 -1
  342. package/dist/tools/docs.js +0 -173
  343. package/dist/tools/docs.js.map +0 -1
  344. package/dist/tools/environment.js +0 -52
  345. package/dist/tools/environment.js.map +0 -1
  346. package/skills/adaptable-dev/SKILL.md +0 -42
  347. /package/dist/{docs → core/docs}/corpus.js +0 -0
  348. /package/dist/{docs → core/docs}/search.js +0 -0
@@ -1,250 +0,0 @@
1
- import { z } from 'zod';
2
- import { loadEntry } from '../adaptable/loadEntry.js';
3
- import { EXPRESSION_MODULES, } from '../adaptable/types.js';
4
- import { checkStateRules, collectExpressions, getStateColumnIds, } from '../checks/stateRules.js';
5
- import { typeCheckState, unexplainedTypeIssues } from '../checks/stateTypes.js';
6
- import { resolveProjectPath } from '../context.js';
7
- const KIND = z
8
- .enum(['boolean', 'scalar', 'aggregatedScalar', 'aggregatedBoolean'])
9
- .describe('boolean: filters, rules, boolean Named Queries, Relative Change (ANY_CHANGE()) and boolean Observable rules (CHANGE_COUNT{...} >= n); scalar: Calculated Columns and Named Queries returning a value, Observable values (MAX{[x], WITHIN(1d)}); aggregatedScalar: Calculated Columns with SUM{...}, Cumulative, Quantile or Window (LAG, RANK) expressions; aggregatedBoolean: Alert rules with aggregation (SUM{[x]} > n)');
10
- const MODULE = z
11
- .enum(EXPRESSION_MODULES)
12
- .optional()
13
- .describe("Module the expression is used in. Pass it: Observable functions, Relative Change functions, Cumulative / Window functions and aggregations are only available in some Modules");
14
- const COLUMNS = z
15
- .array(z.object({ id: z.string(), dataType: z.string().optional() }))
16
- .optional()
17
- .describe("Grid columns from columnDefs (colId or field), with AdapTable data types (text, number, boolean, date, textArray, numberArray, ...); enables column checks");
18
- const STATE = z
19
- .union([z.string(), z.record(z.string(), z.unknown())])
20
- .describe('Initial State as a JSON object or JSON string (convert TypeScript object literals to JSON)');
21
- const CUSTOM_NOTE = 'Custom expression functions, custom aggregations and Named Queries from AdaptableOptions / state are not known to this check; issues about those names can be ignored.';
22
- const text = (value) => ({ content: [{ type: 'text', text: value }] });
23
- const failure = (value) => ({ ...text(value), isError: true });
24
- function formatIssue(expression, issue) {
25
- let line = `- ${issue.severity}${issue.code ? ` ${issue.code}` : ''}: ${issue.message}`;
26
- if (issue.range) {
27
- line += ` (at ${issue.range[0]}-${issue.range[1]}: \`${expression.slice(issue.range[0], issue.range[1])}\`)`;
28
- }
29
- if (issue.quickFix) {
30
- line += `\n fix: ${issue.quickFix.label} -> \`${issue.quickFix.replacement}\``;
31
- }
32
- return line;
33
- }
34
- function summarize(lines, clean) {
35
- const count = (severity) => lines.filter((l) => new RegExp(`^\\s*- ${severity}\\b`).test(l)).length;
36
- const errors = count('error');
37
- const warnings = count('warning');
38
- if (!errors && !warnings) {
39
- return clean;
40
- }
41
- return `${errors} error(s), ${warnings} warning(s)${errors ? '; fix the errors' : ''}:`;
42
- }
43
- const toColumnTypes = (columns) => columns ? Object.fromEntries(columns.map((c) => [c.id, c.dataType])) : undefined;
44
- function parseState(state) {
45
- if (typeof state !== 'string') {
46
- return state;
47
- }
48
- try {
49
- const parsed = JSON.parse(state);
50
- return parsed && typeof parsed === 'object' && !Array.isArray(parsed)
51
- ? parsed
52
- : 'State must be a JSON object.';
53
- }
54
- catch (error) {
55
- return `State is not valid JSON (${error instanceof Error ? error.message : String(error)}). Convert the TypeScript object literal to JSON: quote keys, no comments, no trailing commas, no functions.`;
56
- }
57
- }
58
- async function getAql(projectPath) {
59
- return loadEntry(await projectPath, 'aql');
60
- }
61
- function checkOne(aql, expression, kind, module, columns) {
62
- const result = aql.validateExpression(expression, { kind, module, columns });
63
- const lines = result.issues.map((issue) => formatIssue(expression, issue));
64
- if (!result.isValid) {
65
- const migrated = aql.migrateExpression(expression, { kind });
66
- if (!migrated.error && migrated.changed) {
67
- const recheck = aql.validateExpression(migrated.expression, { kind, module, columns });
68
- const errorCount = (issues) => issues.filter((issue) => issue.severity === 'error').length;
69
- if (errorCount(recheck.issues) < errorCount(result.issues)) {
70
- lines.push(` This is pre-v24 syntax. v24 form: \`${migrated.expression}\`${recheck.isValid ? ' (valid)' : ' (still has issues)'}`);
71
- }
72
- }
73
- }
74
- return lines;
75
- }
76
- export function registerCheckTools(server) {
77
- server.registerTool('check_expression', {
78
- title: 'Check an AdapTableQL expression',
79
- description: "Validates an AdapTableQL expression with the AdapTable version installed in the project: syntax, known functions, argument types, aggregation rules, (with module) the functions that Module offers, and (with columns) column references and data types. Returns issues with positions and quick fixes; pre-v24 syntax gets the v24 rewrite. Run it on every expression before presenting config.",
80
- inputSchema: {
81
- expression: z.string(),
82
- kind: KIND,
83
- module: MODULE,
84
- columns: COLUMNS,
85
- projectPath: z.string().optional(),
86
- },
87
- annotations: { readOnlyHint: true },
88
- }, async ({ expression, kind, module, columns, projectPath }) => {
89
- const loaded = await getAql(resolveProjectPath(server, projectPath));
90
- if (!loaded.ok) {
91
- return failure(loaded.reason);
92
- }
93
- const lines = checkOne(loaded.module, expression, kind, module, toColumnTypes(columns));
94
- return text([
95
- summarize(lines, 'Expression is valid.'),
96
- ...lines,
97
- '',
98
- CUSTOM_NOTE,
99
- ].join('\n'));
100
- });
101
- server.registerTool('migrate_expression', {
102
- title: 'Migrate an AdapTableQL expression to v24',
103
- description: 'Rewrites a pre-v24 AdapTableQL expression (legacy function spellings, paren-form aggregations such as SUM([x]), old clauses) into v24 syntax, using the installed AdapTable version.',
104
- inputSchema: { expression: z.string(), kind: KIND.optional(), projectPath: z.string().optional() },
105
- annotations: { readOnlyHint: true },
106
- }, async ({ expression, kind, projectPath }) => {
107
- const loaded = await getAql(resolveProjectPath(server, projectPath));
108
- if (!loaded.ok) {
109
- return failure(loaded.reason);
110
- }
111
- const result = loaded.module.migrateExpression(expression, { kind });
112
- if (result.error) {
113
- return failure(`Could not migrate: ${result.error}`);
114
- }
115
- const notes = result.notes?.length
116
- ? `\n\nThe rewrite changes behaviour; tell the user:\n${result.notes.map((n) => `- ${n}`).join('\n')}`
117
- : '';
118
- return text(result.changed
119
- ? `v24 form:\n${result.expression}${notes}`
120
- : `Already v24 syntax; no changes:\n${result.expression}`);
121
- });
122
- server.registerTool('list_expression_functions', {
123
- title: 'List AdapTableQL functions',
124
- description: 'Built-in AdapTableQL functions, aggregations, observable functions and clauses of the installed AdapTable version, with signatures and examples. Filter by group or by text.',
125
- inputSchema: {
126
- group: z.enum(['scalar', 'aggregation', 'observable', 'clause']).optional(),
127
- query: z.string().optional().describe('Case-insensitive match on name, description or category'),
128
- projectPath: z.string().optional(),
129
- },
130
- annotations: { readOnlyHint: true },
131
- }, async ({ group, query, projectPath }) => {
132
- const loaded = await getAql(resolveProjectPath(server, projectPath));
133
- if (!loaded.ok) {
134
- return failure(loaded.reason);
135
- }
136
- const needle = query?.toLowerCase();
137
- const entries = loaded.module
138
- .getExpressionFunctionCatalogue()
139
- .filter((f) => !group || f.group === group)
140
- .filter((f) => !needle ||
141
- [f.name, f.description, f.category].some((v) => v?.toLowerCase().includes(needle)));
142
- if (!entries.length) {
143
- return text('No matching functions.');
144
- }
145
- return text(entries
146
- .map((f) => [
147
- `## ${f.name} (${f.group}${f.category ? `, ${f.category}` : ''}${f.returnType ? ` -> ${f.returnType}` : ''})`,
148
- f.description,
149
- ...f.signatures.map((s) => `- \`${s}\``),
150
- ...f.examples.slice(0, 2).map((e) => `- e.g. \`${e}\``),
151
- ]
152
- .filter(Boolean)
153
- .join('\n'))
154
- .join('\n\n'));
155
- });
156
- server.registerTool('check_state', {
157
- title: 'Check AdapTable Initial State',
158
- description: "Checks an Initial State object: type-checks it against InitialState from the installed AdapTable (wrong or missing properties, pre-v24 shapes), plus semantic checks TypeScript cannot catch: unknown sections (e.g. PredefinedConfig), unique Layout names, CurrentLayout present, Table vs Pivot Layout properties, Width xor Flex, column references (with columns), and every embedded AdapTableQL expression validated as check_expression would.",
159
- inputSchema: { state: STATE, columns: COLUMNS, projectPath: z.string().optional() },
160
- annotations: { readOnlyHint: true },
161
- }, async ({ state, columns, projectPath }) => {
162
- const parsed = parseState(state);
163
- if (typeof parsed === 'string') {
164
- return failure(parsed);
165
- }
166
- const loaded = await getAql(resolveProjectPath(server, projectPath));
167
- const aggregations = new Map(loaded.ok
168
- ? loaded.module
169
- .getExpressionFunctionCatalogue()
170
- .filter((f) => f.group === 'aggregation')
171
- .map((f) => [f.name.toUpperCase(), f.callForm])
172
- : []);
173
- const ruleIssues = checkStateRules(parsed, { columnIds: columns?.map((c) => c.id) });
174
- const typed = await typeCheckState(await resolveProjectPath(server, projectPath), parsed);
175
- const typeIssues = typed.ok ? unexplainedTypeIssues(typed.issues, ruleIssues) : [];
176
- const lines = [
177
- ...ruleIssues.map((issue) => `- ${issue.severity} at ${issue.path || '(root)'}: ${issue.message}`),
178
- ...typeIssues.map((issue) => `- ${issue.severity} at ${issue.path || '(root)'}: (types) ${issue.message}`),
179
- ];
180
- if (!typed.ok) {
181
- lines.push(`- warning: types not checked: ${typed.reason}`);
182
- }
183
- const expressions = collectExpressions(parsed, aggregations);
184
- if (loaded.ok) {
185
- const columnTypes = columns
186
- ? { ...Object.fromEntries(getStateColumnIds(parsed)), ...toColumnTypes(columns) }
187
- : undefined;
188
- for (const { path, expression, kind, module } of expressions) {
189
- const issues = checkOne(loaded.module, expression, kind, module, columnTypes);
190
- if (issues.length) {
191
- lines.push(`- expression at ${path} (${module}, ${kind}): \`${expression}\``, ...issues.map((l) => ` ${l}`));
192
- }
193
- }
194
- }
195
- else {
196
- lines.push(`- warning: expressions not checked: ${loaded.reason}`);
197
- }
198
- return text([
199
- summarize(lines, 'No problems found.'),
200
- ...lines,
201
- '',
202
- `Checked ${expressions.length} expression(s)${typed.ok ? ` and the state's types (against ${typed.source})` : ''}. ${CUSTOM_NOTE}`,
203
- ].join('\n'));
204
- });
205
- server.registerTool('migrate_state', {
206
- title: 'Migrate AdapTable state to the installed version',
207
- description: "Upgrades an Initial State (or persisted state) object from an older AdapTable major version using AdaptableUpgradeHelper.migrateAdaptableState from the installed package — the same migration AdapTable runs at startup. Install the target AdapTable version first. Returns the migrated JSON and the migration log; run check_state on the result.",
208
- inputSchema: {
209
- state: STATE,
210
- fromVersion: z.number().int().describe('AdapTable major version the state was written for, e.g. 22'),
211
- toVersion: z.number().int().optional().describe('Defaults to the installed major version'),
212
- projectPath: z.string().optional(),
213
- },
214
- annotations: { readOnlyHint: true },
215
- }, async ({ state, fromVersion, toVersion, projectPath }) => {
216
- const parsed = parseState(state);
217
- if (typeof parsed === 'string') {
218
- return failure(parsed);
219
- }
220
- const loaded = await loadEntry(await resolveProjectPath(server, projectPath), 'upgrade');
221
- if (!loaded.ok) {
222
- return failure(loaded.reason);
223
- }
224
- const helper = loaded.module.AdaptableUpgradeHelper;
225
- const target = toVersion ?? helper.getCurrentMajorVersion();
226
- if (fromVersion >= target) {
227
- return failure(`fromVersion (${fromVersion}) must be lower than the target version (${target}).`);
228
- }
229
- const log = [];
230
- const record = (level) => (message) => log.push(`- ${level}: ${message}`);
231
- const logger = {
232
- success: record('success'),
233
- info: record('info'),
234
- warn: record('warning'),
235
- error: record('error'),
236
- };
237
- const migrated = helper.migrateAdaptableState(parsed, { fromVersion, toVersion: target, logger });
238
- return text([
239
- `Migrated from ${fromVersion} to ${target}.`,
240
- '',
241
- 'Migration log:',
242
- ...(log.length ? log : ['- (no messages)']),
243
- '',
244
- '```json',
245
- JSON.stringify(migrated, null, 2),
246
- '```',
247
- ].join('\n'));
248
- });
249
- }
250
- //# sourceMappingURL=checks.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"checks.js","sourceRoot":"","sources":["../../src/tools/checks.ts"],"names":[],"mappings":"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"}
@@ -1,173 +0,0 @@
1
- import { z } from 'zod';
2
- import { filterFramework, FRAMEWORKS } from '../docs/corpus.js';
3
- import { loadCorpus } from '../docs/source.js';
4
- import { pageUrl, pickFramework, resolveEnvironment } from '../context.js';
5
- const CATEGORIES = [
6
- 'getting-started',
7
- 'handbook',
8
- 'dev-guide',
9
- 'adaptable-ql',
10
- 'ui',
11
- 'api',
12
- 'technical-reference',
13
- 'framework',
14
- 'integrations',
15
- 'demos',
16
- 'documentation',
17
- 'support',
18
- 'release-notes',
19
- ];
20
- const MAX_SECTION_CHARS = 1800;
21
- const MAX_PAGE_CHARS = 40_000;
22
- const text = (value) => ({ content: [{ type: 'text', text: value }] });
23
- function truncate(value, max) {
24
- return value.length > max ? `${value.slice(0, max)}\n… (truncated; use get_doc for the full page)` : value;
25
- }
26
- function docsHeader(corpus, framework, envMajor) {
27
- const lines = [
28
- `Docs: AdapTable ${corpus.manifest.adaptableVersion} from ${corpus.origin}; framework: ${framework ?? 'all'}`,
29
- ];
30
- if (envMajor !== undefined && envMajor !== corpus.manifest.major) {
31
- lines.push(`Warning: this project uses AdapTable ${envMajor}, but these docs are for ${corpus.manifest.major}.`);
32
- }
33
- return lines.join('\n');
34
- }
35
- /** Accepts a slug, a route path or a docs URL (with or without `.md`) */
36
- export function findPage(corpus, page) {
37
- const routePath = page
38
- .trim()
39
- .replace(/^https?:\/\/[^/]+/, '')
40
- .replace(/[?#].*$/, '')
41
- .replace(/\/index\.md$|\.md$/, '')
42
- .replace(/\/+$/, '');
43
- const candidates = /^\/(docs|support)(\/|$)/.test(routePath)
44
- ? [routePath]
45
- : [
46
- `/docs/${routePath}`,
47
- `/docs/reference/${routePath.toLowerCase()}`,
48
- `/support/${routePath}`,
49
- ];
50
- for (const candidate of candidates) {
51
- const found = corpus.pages.get(candidate) ?? corpus.pages.get(candidate.toLowerCase());
52
- if (found) {
53
- return found;
54
- }
55
- }
56
- return undefined;
57
- }
58
- function extractHeading(markdown, heading) {
59
- const lines = markdown.split('\n');
60
- const target = heading.trim().toLowerCase();
61
- let start = -1;
62
- let level = 0;
63
- let inFence = false;
64
- for (let i = 0; i < lines.length; i++) {
65
- if (/^\s*(```|~~~)/.test(lines[i])) {
66
- inFence = !inFence;
67
- }
68
- if (inFence) {
69
- continue;
70
- }
71
- const match = lines[i].match(/^(#{1,6})\s+(.+)$/);
72
- if (!match) {
73
- continue;
74
- }
75
- if (start < 0 && match[2].trim().toLowerCase().includes(target)) {
76
- start = i;
77
- level = match[1].length;
78
- }
79
- else if (start >= 0 && match[1].length <= level) {
80
- return lines.slice(start, i).join('\n');
81
- }
82
- }
83
- return start >= 0 ? lines.slice(start).join('\n') : undefined;
84
- }
85
- function outline(markdown) {
86
- let inFence = false;
87
- return markdown
88
- .split('\n')
89
- .filter((line) => {
90
- if (/^\s*(```|~~~)/.test(line)) {
91
- inFence = !inFence;
92
- }
93
- return !inFence && /^#{2,4}\s/.test(line);
94
- })
95
- .join('\n');
96
- }
97
- export function registerDocsTools(server) {
98
- server.registerTool('search_docs', {
99
- title: 'Search AdapTable docs',
100
- description: "Search the AdapTable documentation for the project's AdapTable version and framework. Returns matching sections with canonical URLs. Use exact API names (e.g. `LayoutApi`, `CalculatedColumn`, `GROUP_BY`) or plain questions. For AG Grid itself (columnDefs, AG Grid modules, row models, grid API) use AG Grid's ag-mcp instead.",
101
- inputSchema: {
102
- query: z.string().describe('What to look for'),
103
- category: z
104
- .enum(CATEGORIES)
105
- .optional()
106
- .describe('Restrict to one docs area; `api` is the generated API reference. Release notes (old syntax, upgrade steps) are searched only with `release-notes`'),
107
- framework: z
108
- .enum(FRAMEWORKS)
109
- .optional()
110
- .describe('Defaults to the framework detected in the project'),
111
- limit: z.number().int().min(1).max(20).optional(),
112
- projectPath: z.string().optional().describe('Project folder; defaults to the workspace'),
113
- },
114
- annotations: { readOnlyHint: true, openWorldHint: true },
115
- }, async ({ query, category, framework: requestedFramework, limit, projectPath }) => {
116
- const env = await resolveEnvironment(server, projectPath);
117
- const framework = pickFramework(requestedFramework, env);
118
- const corpus = await loadCorpus(env.adaptableMajor);
119
- const hits = corpus.index.search(query, {
120
- framework,
121
- categories: category ? [category] : undefined,
122
- excludeCategories: ['release-notes'],
123
- limit: limit ?? 6,
124
- });
125
- if (!hits.length) {
126
- return text(`${docsHeader(corpus, framework, env.adaptableMajor)}\n\nNo matches for "${query}".`);
127
- }
128
- const body = hits
129
- .map(({ section }, i) => {
130
- const trail = [section.pageTitle, ...section.headings].join(' > ');
131
- const url = pageUrl(corpus.manifest.baseUrl, section.routePath, framework);
132
- return `## ${i + 1}. ${trail}\nPage: ${section.routePath} (${section.category}) ${url}\n\n${truncate(section.text, MAX_SECTION_CHARS)}`;
133
- })
134
- .join('\n\n---\n\n');
135
- return text(`${docsHeader(corpus, framework, env.adaptableMajor)}\n\n${body}`);
136
- });
137
- server.registerTool('get_doc', {
138
- title: 'Read an AdapTable docs page',
139
- description: "Read one AdapTable docs page as markdown, for the project's version, with other frameworks' sections removed. Pass a slug (`handbook-calculated-column`), an API reference name (`layoutapi`), a release note (`version-240-release-note`), `release-schedule`, a route (`/docs/...`) or a docs URL. Long pages return an outline; pass `heading` to read one section.",
140
- inputSchema: {
141
- page: z.string(),
142
- heading: z.string().optional().describe('Return only the section under this heading'),
143
- framework: z.enum(FRAMEWORKS).optional(),
144
- projectPath: z.string().optional(),
145
- },
146
- annotations: { readOnlyHint: true, openWorldHint: true },
147
- }, async ({ page, heading, framework: requestedFramework, projectPath }) => {
148
- const env = await resolveEnvironment(server, projectPath);
149
- const framework = pickFramework(requestedFramework, env);
150
- const corpus = await loadCorpus(env.adaptableMajor);
151
- const found = findPage(corpus, page);
152
- if (!found) {
153
- const suggestions = corpus.index
154
- .search(page.replace(/[-/]/g, ' '), { limit: 5 })
155
- .map((hit) => hit.section.routePath);
156
- return text(`No docs page "${page}". Closest pages:\n${[...new Set(suggestions)].map((p) => `- ${p}`).join('\n')}`);
157
- }
158
- let markdown = filterFramework(found.markdown, framework);
159
- if (heading) {
160
- const section = extractHeading(markdown, heading);
161
- if (!section) {
162
- return text(`No heading matching "${heading}" in ${found.routePath}. Outline:\n${outline(markdown)}`);
163
- }
164
- markdown = section;
165
- }
166
- else if (markdown.length > MAX_PAGE_CHARS) {
167
- markdown = `${markdown.slice(0, MAX_PAGE_CHARS)}\n\n… (page truncated; pass \`heading\` to read a section)\n\nOutline:\n${outline(markdown)}`;
168
- }
169
- const url = pageUrl(corpus.manifest.baseUrl, found.routePath, framework);
170
- return text(`${docsHeader(corpus, framework, env.adaptableMajor)}\nURL: ${url}\n\n${markdown}`);
171
- });
172
- }
173
- //# sourceMappingURL=docs.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"docs.js","sourceRoot":"","sources":["../../src/tools/docs.ts"],"names":[],"mappings":"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"}
@@ -1,52 +0,0 @@
1
- import { z } from 'zod';
2
- import { getManifest } from '../docs/source.js';
3
- import { getEnvironmentWarnings } from '../environment.js';
4
- import { resolveEnvironment } from '../context.js';
5
- const describePackage = (p) => `- ${p.name}: ${p.installed ? `installed ${p.installed}` : 'not installed'}${p.declared ? ` (package.json: ${p.declared})` : ''}`;
6
- export function registerEnvironmentTools(server) {
7
- server.registerTool('detect_environment', {
8
- title: 'Detect AdapTable setup',
9
- description: "Call this first. Reads the project's package.json and node_modules: AdapTable version and framework wrapper, AG Grid packages, whether AG Grid satisfies AdapTable's peer range and documented pairing, and which docs version the other tools will use. Returns warnings for setup mistakes (Community instead of Enterprise, version mismatches).",
10
- inputSchema: {
11
- projectPath: z.string().optional().describe('Project folder; defaults to the workspace'),
12
- },
13
- annotations: { readOnlyHint: true, openWorldHint: true },
14
- }, async ({ projectPath }) => {
15
- const env = await resolveEnvironment(server, projectPath);
16
- const manifestResult = await getManifest(env.adaptableMajor);
17
- const manifest = 'manifest' in manifestResult ? manifestResult.manifest : undefined;
18
- const warnings = getEnvironmentWarnings(env, manifest?.agGridPairings);
19
- const lines = [`Project: ${env.projectPath}`];
20
- if (env.adaptable) {
21
- lines.push(`AdapTable: ${env.adaptable.installed ?? env.adaptable.declared ?? 'unknown'} (major ${env.adaptableMajor ?? 'unknown'})`, `Framework: ${env.framework ?? 'unknown'}`);
22
- }
23
- else {
24
- lines.push('AdapTable: not installed (docs default to the latest version)');
25
- }
26
- if (env.agGridPeer) {
27
- lines.push(`AdapTable requires ag-grid-enterprise ${env.agGridPeer}`);
28
- }
29
- if (env.adaptablePackages.length) {
30
- lines.push('', 'AdapTable packages:', ...env.adaptablePackages.map(describePackage));
31
- }
32
- if (env.agGridPackages.length) {
33
- lines.push('', 'AG Grid packages:', ...env.agGridPackages.map(describePackage));
34
- }
35
- lines.push('');
36
- if ('manifest' in manifestResult) {
37
- const { manifest, origin } = manifestResult;
38
- lines.push(`Docs: AdapTable ${manifest.adaptableVersion} from ${origin}`);
39
- const pairing = manifest.agGridPairings.find((p) => Number(p.adaptableVersion.split('.')[0]) === (env.adaptableMajor ?? manifest.major));
40
- if (pairing) {
41
- lines.push(`Documented pairing: AdapTable ${pairing.adaptableVersion} with AG Grid ${pairing.agGridMajor} (${pairing.agGridVersion})`);
42
- }
43
- }
44
- else {
45
- lines.push(`Docs: unavailable (${'error' in manifestResult ? manifestResult.error : ''})`);
46
- }
47
- lines.push('', warnings.length ? 'Warnings:' : 'No setup problems found.', ...warnings.map((w) => `- ${w}`));
48
- lines.push('', 'For AG Grid questions (columnDefs, AG Grid modules, row models, grid API) use the ag-mcp server.');
49
- return { content: [{ type: 'text', text: lines.join('\n') }] };
50
- });
51
- }
52
- //# sourceMappingURL=environment.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"environment.js","sourceRoot":"","sources":["../../src/tools/environment.ts"],"names":[],"mappings":"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"}
@@ -1,42 +0,0 @@
1
- ---
2
- name: adaptable-dev
3
- description: Write, review and upgrade AdapTable code (the AG Grid extension in @adaptabletools/* packages) for the version the project uses. Use when code imports from @adaptabletools/*, or the user asks about AdapTable options, Initial State, Layouts, AdapTableQL expressions or upgrading AdapTable.
4
- ---
5
-
6
- # AdapTable development
7
-
8
- AdapTable's options, state shapes and AdapTableQL syntax change between major versions. What you remember is probably from an older version and will look right but fail. Look things up and check them with the `adaptable` MCP server (`@adaptabletools/adaptable-mcp`) instead.
9
-
10
- ## Workflow
11
-
12
- 1. Call `detect_environment` first. Fix the setup problems it reports before anything else.
13
- 2. Before writing AdapTable config, find the current form with `search_docs` (exact names work best: `LayoutApi`, `CalculatedColumn`, `GROUP_BY`) and `get_doc`. Cite the URLs.
14
- 3. Write the code.
15
- 4. Run `check_expression` (with the `module` the expression belongs to) on every AdapTableQL expression and `check_state` on every Initial State, passing the grid's columns (`colId` or `field`, with AdapTable data types). Fix every error before showing the code.
16
- 5. Type-check or build the project.
17
-
18
- If the server is not available, read the docs for the project's major version at `https://www.adaptabletools.com/llms.txt` (older majors: `https://v{major}.adaptabletools.com/llms.txt`).
19
-
20
- ## Where settings go
21
-
22
- - **Adaptable Options**: design-time configuration users cannot change, such as `primaryKey`, `licenseKey`, `adaptableId`, entitlements (`entitlementOptions`), custom AdapTableQL functions (`expressionOptions`), Action Columns (`actionColumnOptions`) and other `*Options`.
23
- - **Initial State** (`initialState` in Adaptable Options): objects users can edit and that get persisted, such as Layouts, Calculated Columns, Format Columns, Alerts and Named Queries. There is no `PredefinedConfig`.
24
- - **Adaptable API**: runtime changes from application code, once AdapTable is ready.
25
-
26
- ## AdapTableQL (version 24)
27
-
28
- - Expressions are plain strings: `Rule: '[pnl] < 0'`, `Expression: '[price] * [quantity]'`. Do not use `{ BooleanExpression: ... }` wrappers, `Query`, or Predicates.
29
- - Aggregations use braces: `SUM{[notional], GROUP_BY([desk])}`, not `SUM([notional])`. Basically braces are for functions that work on multiple rows. In this example, make the sum of all notionals, while grouping by desk.
30
- - When converting older expressions or state, use `migrate_expression` and `migrate_state`, not hand edits.
31
-
32
- ## AdapTable and AG Grid
33
-
34
- AdapTable requires AG Grid Enterprise (`ag-grid-enterprise`), at the version `detect_environment` reports. For AG Grid questions (`columnDefs`, AG Grid modules, row models, grid API), use AG Grid's `ag-mcp` server or AG Grid docs, not this one.
35
-
36
- ## Upgrades
37
-
38
- Use the `upgrade-adaptable` prompt, or follow it by hand:
39
-
40
- 1. Read the release note of every version in between (`get_doc("version-240-release-note")`, and so on).
41
- 2. Run `migrate_state` on each Initial State and `migrate_expression` on expressions outside state.
42
- 3. Run `check_state` and `check_expression` on the results, then build.
File without changes
File without changes