@adaptabletools/adaptable-mcp 0.1.0-canary.1 → 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 (271) hide show
  1. package/README.md +3 -1
  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 +28 -10
  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 +7 -0
  54. package/dist/bin.js.map +1 -1
  55. package/dist/cli/index.js +8 -0
  56. package/dist/cli/index.js.map +1 -1
  57. package/dist/core/anonymise/anonymise.js +315 -0
  58. package/dist/core/anonymise/anonymise.js.map +1 -0
  59. package/dist/core/anonymise/capabilities.js +94 -0
  60. package/dist/core/anonymise/capabilities.js.map +1 -0
  61. package/dist/core/aql/capabilities.js +339 -0
  62. package/dist/core/aql/capabilities.js.map +1 -0
  63. package/dist/core/aql/check.js +204 -0
  64. package/dist/core/aql/check.js.map +1 -0
  65. package/dist/core/aql/engine.js +92 -0
  66. package/dist/core/aql/engine.js.map +1 -0
  67. package/dist/core/aql/functions.js +108 -0
  68. package/dist/core/aql/functions.js.map +1 -0
  69. package/dist/core/aql/migrate.js +62 -0
  70. package/dist/core/aql/migrate.js.map +1 -0
  71. package/dist/core/capabilities.js +9 -3
  72. package/dist/core/capabilities.js.map +1 -1
  73. package/dist/core/changes/capabilities.js +92 -0
  74. package/dist/core/changes/capabilities.js.map +1 -0
  75. package/dist/core/changes/changes.js +101 -0
  76. package/dist/core/changes/changes.js.map +1 -0
  77. package/dist/core/changes/grep.js +183 -0
  78. package/dist/core/changes/grep.js.map +1 -0
  79. package/dist/core/changes/records.js +172 -0
  80. package/dist/core/changes/records.js.map +1 -0
  81. package/dist/core/changes/render-md.js +101 -0
  82. package/dist/core/changes/render-md.js.map +1 -0
  83. package/dist/core/changes/with-docs.js +86 -0
  84. package/dist/core/changes/with-docs.js.map +1 -0
  85. package/dist/core/compat/capabilities.js +1 -1
  86. package/dist/core/compat/capabilities.js.map +1 -1
  87. package/dist/core/context/capabilities.js +1 -1
  88. package/dist/core/context/capabilities.js.map +1 -1
  89. package/dist/core/convert/capabilities.js +86 -0
  90. package/dist/core/convert/capabilities.js.map +1 -0
  91. package/dist/core/convert/coldefs.js +313 -0
  92. package/dist/core/convert/coldefs.js.map +1 -0
  93. package/dist/core/docs/cache.js +1 -1
  94. package/dist/core/docs/capabilities.js +1 -5
  95. package/dist/core/docs/capabilities.js.map +1 -1
  96. package/dist/core/docs/hosts.js +2 -2
  97. package/dist/core/docs/hosts.js.map +1 -1
  98. package/dist/core/extract/imports.js +163 -0
  99. package/dist/core/extract/imports.js.map +1 -0
  100. package/dist/core/extract/input.js +140 -0
  101. package/dist/core/extract/input.js.map +1 -0
  102. package/dist/core/extract/line-map.js +90 -0
  103. package/dist/core/extract/line-map.js.map +1 -0
  104. package/dist/core/extract/ts-literal.js +963 -0
  105. package/dist/core/extract/ts-literal.js.map +1 -0
  106. package/dist/core/migrate/capabilities.js +143 -0
  107. package/dist/core/migrate/capabilities.js.map +1 -0
  108. package/dist/core/migrate/leftovers.js +119 -0
  109. package/dist/core/migrate/leftovers.js.map +1 -0
  110. package/dist/core/migrate/state.js +295 -0
  111. package/dist/core/migrate/state.js.map +1 -0
  112. package/dist/core/packages/cache.js +2 -1
  113. package/dist/core/packages/cache.js.map +1 -1
  114. package/dist/core/register.js +8 -0
  115. package/dist/core/register.js.map +1 -1
  116. package/dist/core/scaffold/capabilities.js +434 -0
  117. package/dist/core/scaffold/capabilities.js.map +1 -0
  118. package/dist/core/scaffold/generate.js +409 -0
  119. package/dist/core/scaffold/generate.js.map +1 -0
  120. package/dist/core/scaffold/infer.js +441 -0
  121. package/dist/core/scaffold/infer.js.map +1 -0
  122. package/dist/core/scaffold/overlay.js +290 -0
  123. package/dist/core/scaffold/overlay.js.map +1 -0
  124. package/dist/core/scaffold/readers/csv.js +146 -0
  125. package/dist/core/scaffold/readers/csv.js.map +1 -0
  126. package/dist/core/scaffold/readers/dataset.js +53 -0
  127. package/dist/core/scaffold/readers/dataset.js.map +1 -0
  128. package/dist/core/scaffold/readers/index.js +62 -0
  129. package/dist/core/scaffold/readers/index.js.map +1 -0
  130. package/dist/core/scaffold/readers/json.js +101 -0
  131. package/dist/core/scaffold/readers/json.js.map +1 -0
  132. package/dist/core/scaffold/readers/xlsx.js +81 -0
  133. package/dist/core/scaffold/readers/xlsx.js.map +1 -0
  134. package/dist/core/scaffold/suggestions.js +57 -0
  135. package/dist/core/scaffold/suggestions.js.map +1 -0
  136. package/dist/core/scaffold/templates.js +59 -0
  137. package/dist/core/scaffold/templates.js.map +1 -0
  138. package/dist/core/setup/audit.js +91 -0
  139. package/dist/core/setup/audit.js.map +1 -0
  140. package/dist/core/setup/capabilities.js +80 -0
  141. package/dist/core/setup/capabilities.js.map +1 -0
  142. package/dist/core/setup/context.js +118 -0
  143. package/dist/core/setup/context.js.map +1 -0
  144. package/dist/core/setup/rules/cell-data-type.js +40 -0
  145. package/dist/core/setup/rules/cell-data-type.js.map +1 -0
  146. package/dist/core/setup/rules/coldef-ownership.js +67 -0
  147. package/dist/core/setup/rules/coldef-ownership.js.map +1 -0
  148. package/dist/core/setup/rules/css-import.js +34 -0
  149. package/dist/core/setup/rules/css-import.js.map +1 -0
  150. package/dist/core/setup/rules/direct-grid.js +42 -0
  151. package/dist/core/setup/rules/direct-grid.js.map +1 -0
  152. package/dist/core/setup/rules/index.js +53 -0
  153. package/dist/core/setup/rules/index.js.map +1 -0
  154. package/dist/core/setup/rules/licence-literal.js +23 -0
  155. package/dist/core/setup/rules/licence-literal.js.map +1 -0
  156. package/dist/core/setup/rules/modules.js +86 -0
  157. package/dist/core/setup/rules/modules.js.map +1 -0
  158. package/dist/core/setup/rules/react-stable-refs.js +20 -0
  159. package/dist/core/setup/rules/react-stable-refs.js.map +1 -0
  160. package/dist/core/setup/rules/ready-hook.js +33 -0
  161. package/dist/core/setup/rules/ready-hook.js.map +1 -0
  162. package/dist/core/setup/rules/required-options.js +43 -0
  163. package/dist/core/setup/rules/required-options.js.map +1 -0
  164. package/dist/core/setup/rules/rule.js +10 -0
  165. package/dist/core/setup/rules/rule.js.map +1 -0
  166. package/dist/core/setup/rules/version-skew.js +65 -0
  167. package/dist/core/setup/rules/version-skew.js.map +1 -0
  168. package/dist/core/state/capabilities.js +78 -0
  169. package/dist/core/state/capabilities.js.map +1 -0
  170. package/dist/core/state/check.js +216 -0
  171. package/dist/core/state/check.js.map +1 -0
  172. package/dist/core/state/columns.js +130 -0
  173. package/dist/core/state/columns.js.map +1 -0
  174. package/dist/core/state/did-you-mean.js +83 -0
  175. package/dist/core/state/did-you-mean.js.map +1 -0
  176. package/dist/core/state/expressions.js +170 -0
  177. package/dist/core/state/expressions.js.map +1 -0
  178. package/dist/core/state/known-names.js +96 -0
  179. package/dist/core/state/known-names.js.map +1 -0
  180. package/dist/core/state/rules/aql-legacy-shape.js +42 -0
  181. package/dist/core/state/rules/aql-legacy-shape.js.map +1 -0
  182. package/dist/core/state/rules/aql-missing.js +21 -0
  183. package/dist/core/state/rules/aql-missing.js.map +1 -0
  184. package/dist/core/state/rules/aql-syntax.js +77 -0
  185. package/dist/core/state/rules/aql-syntax.js.map +1 -0
  186. package/dist/core/state/rules/calculated-settings.js +23 -0
  187. package/dist/core/state/rules/calculated-settings.js.map +1 -0
  188. package/dist/core/state/rules/column-id-exists.js +29 -0
  189. package/dist/core/state/rules/column-id-exists.js.map +1 -0
  190. package/dist/core/state/rules/dashboard-module-names.js +31 -0
  191. package/dist/core/state/rules/dashboard-module-names.js.map +1 -0
  192. package/dist/core/state/rules/dashboard-toolbar-names.js +48 -0
  193. package/dist/core/state/rules/dashboard-toolbar-names.js.map +1 -0
  194. package/dist/core/state/rules/format-column-pivot-display-format.js +43 -0
  195. package/dist/core/state/rules/format-column-pivot-display-format.js.map +1 -0
  196. package/dist/core/state/rules/helpers.js +39 -0
  197. package/dist/core/state/rules/helpers.js.map +1 -0
  198. package/dist/core/state/rules/index.js +80 -0
  199. package/dist/core/state/rules/index.js.map +1 -0
  200. package/dist/core/state/rules/layout-column-refs.js +60 -0
  201. package/dist/core/state/rules/layout-column-refs.js.map +1 -0
  202. package/dist/core/state/rules/layout-current-exists.js +27 -0
  203. package/dist/core/state/rules/layout-current-exists.js.map +1 -0
  204. package/dist/core/state/rules/layout-non-empty.js +32 -0
  205. package/dist/core/state/rules/layout-non-empty.js.map +1 -0
  206. package/dist/core/state/rules/rule.js +2 -0
  207. package/dist/core/state/rules/rule.js.map +1 -0
  208. package/dist/core/state/rules/scope-column-refs.js +32 -0
  209. package/dist/core/state/rules/scope-column-refs.js.map +1 -0
  210. package/dist/core/state/rules/scope-shape.js +61 -0
  211. package/dist/core/state/rules/scope-shape.js.map +1 -0
  212. package/dist/core/state/rules/state-unique-name.js +40 -0
  213. package/dist/core/state/rules/state-unique-name.js.map +1 -0
  214. package/dist/core/state/rules/state-unknown-section.js +30 -0
  215. package/dist/core/state/rules/state-unknown-section.js.map +1 -0
  216. package/dist/core/state/rules/type-discriminator.js +70 -0
  217. package/dist/core/state/rules/type-discriminator.js.map +1 -0
  218. package/dist/core/state/type-check.js +349 -83
  219. package/dist/core/state/type-check.js.map +1 -1
  220. package/dist/mcp/index.js +104 -16
  221. package/dist/mcp/index.js.map +1 -1
  222. package/dist/mcp/server.js +110 -0
  223. package/dist/mcp/server.js.map +1 -0
  224. package/dist/skills/adaptable-debug/SKILL.md +145 -0
  225. package/dist/skills/adaptable-debug/VERSION.md +1 -0
  226. package/dist/skills/adaptable-debug/references/_shared/agents-snippet.md +3 -0
  227. package/dist/skills/adaptable-debug/references/_shared/capabilities.md +35 -0
  228. package/dist/skills/adaptable-debug/references/_shared/conversation.md +20 -0
  229. package/dist/skills/adaptable-debug/references/_shared/docs-protocol.md +36 -0
  230. package/dist/skills/adaptable-debug/references/_shared/grounding.md +54 -0
  231. package/dist/skills/adaptable-debug/references/_shared/guards.md +20 -0
  232. package/dist/skills/adaptable-debug/references/_shared/validation-loop.md +42 -0
  233. package/dist/skills/adaptable-debug/references/devtools-api.md +36 -0
  234. package/dist/skills/adaptable-debug/references/feedback-template.md +36 -0
  235. package/dist/skills/adaptable-debug/references/symptoms.md +37 -0
  236. package/dist/skills/adaptable-debug/references/ticket-template.md +50 -0
  237. package/dist/skills/adaptable-dev/SKILL.md +97 -0
  238. package/dist/skills/adaptable-dev/VERSION.md +1 -0
  239. package/dist/skills/adaptable-dev/references/_shared/agents-snippet.md +3 -0
  240. package/dist/skills/adaptable-dev/references/_shared/capabilities.md +35 -0
  241. package/dist/skills/adaptable-dev/references/_shared/conversation.md +20 -0
  242. package/dist/skills/adaptable-dev/references/_shared/docs-protocol.md +36 -0
  243. package/dist/skills/adaptable-dev/references/_shared/grounding.md +54 -0
  244. package/dist/skills/adaptable-dev/references/_shared/guards.md +20 -0
  245. package/dist/skills/adaptable-dev/references/_shared/validation-loop.md +42 -0
  246. package/dist/skills/adaptable-dev/references/recommendations.md +93 -0
  247. package/dist/skills/adaptable-setup/SKILL.md +158 -0
  248. package/dist/skills/adaptable-setup/VERSION.md +1 -0
  249. package/dist/skills/adaptable-setup/references/_shared/agents-snippet.md +3 -0
  250. package/dist/skills/adaptable-setup/references/_shared/capabilities.md +35 -0
  251. package/dist/skills/adaptable-setup/references/_shared/conversation.md +20 -0
  252. package/dist/skills/adaptable-setup/references/_shared/docs-protocol.md +36 -0
  253. package/dist/skills/adaptable-setup/references/_shared/grounding.md +54 -0
  254. package/dist/skills/adaptable-setup/references/_shared/guards.md +20 -0
  255. package/dist/skills/adaptable-setup/references/_shared/validation-loop.md +42 -0
  256. package/dist/skills/adaptable-setup/references/paths.md +45 -0
  257. package/dist/skills/adaptable-upgrade/SKILL.md +269 -0
  258. package/dist/skills/adaptable-upgrade/VERSION.md +1 -0
  259. package/dist/skills/adaptable-upgrade/references/_shared/agents-snippet.md +3 -0
  260. package/dist/skills/adaptable-upgrade/references/_shared/capabilities.md +35 -0
  261. package/dist/skills/adaptable-upgrade/references/_shared/conversation.md +20 -0
  262. package/dist/skills/adaptable-upgrade/references/_shared/docs-protocol.md +36 -0
  263. package/dist/skills/adaptable-upgrade/references/_shared/grounding.md +54 -0
  264. package/dist/skills/adaptable-upgrade/references/_shared/guards.md +20 -0
  265. package/dist/skills/adaptable-upgrade/references/_shared/validation-loop.md +42 -0
  266. package/dist/skills/adaptable-upgrade/references/apply-order.md +171 -0
  267. package/dist/skills/adaptable-upgrade/references/plan-preamble.md +151 -0
  268. package/dist/skills/adaptable-upgrade/scripts/adaptable.mjs +24 -0
  269. package/package.json +11 -5
  270. package/dist/core/state/rules.js +0 -417
  271. package/dist/core/state/rules.js.map +0 -1
@@ -0,0 +1,70 @@
1
+ import { asArray, isObj } from '../expressions.js';
2
+ import { defineRule } from './rule.js';
3
+ const TABLE_ONLY_KEYS = ['TableColumns', 'TableAggregationColumns', 'RowGroupedColumns'];
4
+ const PIVOT_ONLY_KEYS = ['PivotColumns', 'PivotAggregationColumns', 'PivotGroupedColumns', 'PivotExpandLevel'];
5
+ const PIVOT_FOR = {
6
+ RowGroupedColumns: 'PivotGroupedColumns',
7
+ TableAggregationColumns: 'PivotAggregationColumns',
8
+ TableColumns: 'PivotColumns',
9
+ };
10
+ /**
11
+ * Discriminated unions the compiler reports poorly: a Layout is a Table Layout
12
+ * (`TableColumns`) or a Pivot Layout (`PivotColumns`), and column sizing takes
13
+ * `Width` or `Flex`.
14
+ */
15
+ export default defineRule({
16
+ id: 'type/discriminator',
17
+ docs: 'handbook-layouts',
18
+ check({ state }) {
19
+ const issues = [];
20
+ asArray(isObj(state.Layout) ? state.Layout.Layouts : undefined).forEach((layout, i) => {
21
+ const path = `Layout.Layouts[${i}]`;
22
+ if (!isObj(layout)) {
23
+ issues.push({ path, severity: 'error', message: 'Layout must be an object.' });
24
+ return;
25
+ }
26
+ const isTable = layout.TableColumns !== undefined;
27
+ const isPivot = layout.PivotColumns !== undefined;
28
+ if (isTable && isPivot) {
29
+ issues.push({
30
+ path,
31
+ severity: 'error',
32
+ message: 'A Layout is either a Table Layout (`TableColumns`) or a Pivot Layout (`PivotColumns`), not both.',
33
+ fix: 'Remove `PivotColumns` (and the other Pivot* properties) for a Table Layout, or `TableColumns` for a Pivot Layout.',
34
+ });
35
+ }
36
+ else if (!isTable && !isPivot) {
37
+ issues.push({
38
+ path,
39
+ severity: 'error',
40
+ message: 'Layout needs `TableColumns` (Table Layout) or `PivotColumns` (Pivot Layout; use [] to show only aggregations).',
41
+ });
42
+ }
43
+ else {
44
+ for (const key of (isTable ? PIVOT_ONLY_KEYS : TABLE_ONLY_KEYS).filter((k) => layout[k] !== undefined)) {
45
+ issues.push({
46
+ path: `${path}.${key}`,
47
+ severity: 'error',
48
+ at: 'key',
49
+ message: isTable
50
+ ? `\`${key}\` belongs to Pivot Layouts; this is a Table Layout.`
51
+ : `\`${key}\` belongs to Table Layouts; in Pivot Layouts use \`${PIVOT_FOR[key]}\`.`,
52
+ });
53
+ }
54
+ }
55
+ if (isObj(layout.ColumnSizing)) {
56
+ for (const [columnId, sizing] of Object.entries(layout.ColumnSizing)) {
57
+ if (isObj(sizing) && sizing.Width !== undefined && sizing.Flex !== undefined) {
58
+ issues.push({
59
+ path: `${path}.ColumnSizing.${columnId}`,
60
+ severity: 'error',
61
+ message: 'Column sizing takes `Width` or `Flex`, not both.',
62
+ });
63
+ }
64
+ }
65
+ }
66
+ });
67
+ return issues;
68
+ },
69
+ });
70
+ //# sourceMappingURL=type-discriminator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"type-discriminator.js","sourceRoot":"","sources":["../../../../src/core/state/rules/type-discriminator.ts"],"names":[],"mappings":"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"}
@@ -1,35 +1,143 @@
1
+ /**
2
+ * Shape layer of `check state` and `check setup`'s `options-shape` (plan §8.4
3
+ * layer 1, §8.6): the extracted value is type-checked against `InitialState`,
4
+ * `AdaptablePersistentState` or `AdaptableOptions` from the `types` entry of
5
+ * the package for the *checked* major (plan §7.3 — the types package, resolved
6
+ * by the caller through `packages/resolve.ts`), the way the carried MCP did:
7
+ * a generated check file importing the type, compiled with the TypeScript
8
+ * compiler API, diagnostics mapped back to paths.
9
+ *
10
+ * Positions: the generated file's positions never reach the caller. Each
11
+ * diagnostic is mapped to a path in the same syntax the extractor's line map
12
+ * uses, and the line map (when the value came from a source file) gives the
13
+ * `{ file, line, column }` of that path — the key position for unknown keys,
14
+ * the value position otherwise. Diagnostics at or under an `unverifiable` path
15
+ * are dropped: the extractor stubbed those values as `null`, so the compiler's
16
+ * complaint there is about the stub, not the user's code.
17
+ */
1
18
  import { existsSync, statSync } from 'node:fs';
2
19
  import { createRequire } from 'node:module';
3
- import { dirname, join } from 'node:path';
4
- const CHECK_FILE = '__adaptable_mcp_state_check__.ts';
5
- /** Module that exports `InitialState`, as an absolute path without extension */
6
- function resolveInitialStateModule(projectPath) {
7
- const sourceDir = process.env.ADAPTABLE_MCP_ADAPTABLE_SRC;
8
- if (sourceDir) {
9
- const file = join(sourceDir, 'src/AdaptableState/InitialState');
10
- return existsSync(`${file}.ts`) ? file : undefined;
11
- }
12
- try {
13
- const require = createRequire(join(projectPath, 'package.json'));
14
- const packageDir = dirname(require.resolve('@adaptabletools/adaptable/package.json'));
15
- const file = join(packageDir, 'types');
16
- return existsSync(`${file}.d.ts`) ? file : undefined;
17
- }
18
- catch {
19
- return undefined;
20
- }
21
- }
20
+ import { join, resolve } from 'node:path';
21
+ import { childPath } from '../extract/line-map.js';
22
+ import { describeSuggestions, suggestKeys } from './did-you-mean.js';
23
+ const CHECK_FILE = '__adaptable_mcp_shape_check__.ts';
22
24
  let typescript;
23
25
  const loadTypeScript = () => (typescript ??= import('typescript').then((m) => m.default));
24
- /** Parsed declaration files, shared across calls (AdapTable's types are large) */
26
+ /** Parsed declaration files, shared across calls and programs (AdapTable's types are large) */
25
27
  const sourceFiles = new Map();
28
+ /** Last program per types location, reused as `oldProgram` (helps the long-lived MCP process) */
29
+ const programs = new Map();
26
30
  const OPTIONS = {
27
31
  strict: true,
28
32
  noEmit: true,
29
33
  skipLibCheck: true,
30
34
  types: [],
31
35
  };
32
- /** Path of the state property that contains `pos`, e.g. `CalculatedColumn.CalculatedColumns[0].Query` */
36
+ /** `<dir>/types` when `types.d.ts` (package) or `types.ts` (source) exists there */
37
+ function typesModule(location) {
38
+ const file = join(location.dir, 'types');
39
+ const ext = location.kind === 'source' ? '.ts' : '.d.ts';
40
+ return existsSync(file + ext) ? file : undefined;
41
+ }
42
+ function agGridTypesResolve(dir) {
43
+ const require = createRequire(join(resolve(dir), 'package.json'));
44
+ return ['ag-grid-enterprise', 'ag-grid-community'].some((name) => {
45
+ try {
46
+ require.resolve(name);
47
+ return true;
48
+ }
49
+ catch {
50
+ return false;
51
+ }
52
+ });
53
+ }
54
+ /**
55
+ * A program over one generated file plus the types it imports. Declaration files are
56
+ * cached by mtime across calls; the previous program for the same types folder and
57
+ * root file is reused (helps the long-lived MCP process).
58
+ */
59
+ function createProgramFor(ts, typesDir, rootFile, text) {
60
+ const host = ts.createCompilerHost(OPTIONS, true);
61
+ const getSourceFile = host.getSourceFile.bind(host);
62
+ host.getSourceFile = (fileName, languageVersion, onError) => {
63
+ if (fileName === rootFile) {
64
+ return ts.createSourceFile(fileName, text, languageVersion, true);
65
+ }
66
+ let mtime = 0;
67
+ try {
68
+ mtime = statSync(fileName).mtimeMs;
69
+ }
70
+ catch {
71
+ // missing files are reported by the compiler
72
+ }
73
+ const cached = sourceFiles.get(fileName);
74
+ if (cached && cached.mtime === mtime) {
75
+ return cached.file;
76
+ }
77
+ const file = getSourceFile(fileName, languageVersion, onError);
78
+ if (file) {
79
+ sourceFiles.set(fileName, { mtime, file });
80
+ }
81
+ return file;
82
+ };
83
+ const fileExists = host.fileExists.bind(host);
84
+ host.fileExists = (fileName) => fileName === rootFile || fileExists(fileName);
85
+ const key = `${typesDir}\n${rootFile}`;
86
+ const program = ts.createProgram({
87
+ rootNames: [rootFile],
88
+ options: {
89
+ ...OPTIONS,
90
+ target: ts.ScriptTarget.ES2020,
91
+ module: ts.ModuleKind.ESNext,
92
+ moduleResolution: ts.ModuleResolutionKind.Bundler,
93
+ jsx: ts.JsxEmit.ReactJSX,
94
+ },
95
+ host,
96
+ oldProgram: programs.get(key),
97
+ });
98
+ programs.set(key, program);
99
+ return { program, sf: program.getSourceFile(rootFile) };
100
+ }
101
+ const NAMES_FILE = '__adaptable_mcp_names__.ts';
102
+ /**
103
+ * Reads the keys of object types and the members of string-literal unions from the
104
+ * types of the checked major (e.g. `InitialState`, `AdaptableDashboardToolbar`).
105
+ * A name the major does not export is `undefined`; nothing throws.
106
+ */
107
+ export async function readTypeNames(types, typeNames) {
108
+ const out = {};
109
+ const module = typesModule(types);
110
+ if (!module) {
111
+ return out;
112
+ }
113
+ const ts = await loadTypeScript();
114
+ const file = join(types.dir, NAMES_FILE);
115
+ const text = typeNames
116
+ .map((name, i) => `import type { ${name} as T${i} } from ${JSON.stringify(module)};\nexport type N${i} = T${i};`)
117
+ .join('\n');
118
+ const { program, sf } = createProgramFor(ts, types.dir, file, `${text}\n`);
119
+ const checker = program.getTypeChecker();
120
+ sf.statements.filter(ts.isTypeAliasDeclaration).forEach((alias, i) => {
121
+ const type = checker.getTypeAtLocation(alias.name);
122
+ // a name the major does not export resolves to the error type (flagged Any)
123
+ if (type.flags & ts.TypeFlags.Any) {
124
+ return;
125
+ }
126
+ if (type.isUnion()) {
127
+ const literals = type.types.filter((t) => t.isStringLiteral()).map((t) => t.value);
128
+ if (literals.length) {
129
+ out[typeNames[i]] = literals;
130
+ return;
131
+ }
132
+ }
133
+ const properties = checker.getPropertiesOfType(type).map((p) => p.name);
134
+ if (properties.length) {
135
+ out[typeNames[i]] = properties;
136
+ }
137
+ });
138
+ return out;
139
+ }
140
+ /** Path of the property that contains `pos` in the generated literal (same syntax as the extractor's line map) */
33
141
  function pathAt(ts, sf, root, pos) {
34
142
  let path = '';
35
143
  let node = root;
@@ -38,7 +146,7 @@ function pathAt(ts, sf, root, pos) {
38
146
  if (ts.isObjectLiteralExpression(node)) {
39
147
  const prop = node.properties.find((p) => p.getStart(sf) <= pos && pos < p.end);
40
148
  if (prop?.name && (ts.isStringLiteral(prop.name) || ts.isIdentifier(prop.name))) {
41
- path += `${path ? '.' : ''}${prop.name.text}`;
149
+ path = childPath(path, prop.name.text);
42
150
  next = ts.isPropertyAssignment(prop) ? prop.initializer : undefined;
43
151
  }
44
152
  }
@@ -55,88 +163,246 @@ function pathAt(ts, sf, root, pos) {
55
163
  node = next;
56
164
  }
57
165
  }
166
+ /** The generated file quotes every key (`JSON.stringify`), so the compiler names them as `'"Key"'` */
167
+ const unquote = (key) => key.replace(/^"(.*)"$/, '$1');
58
168
  function messageOf(ts, diagnostic) {
59
169
  const lines = ts
60
170
  .flattenDiagnosticMessageText(diagnostic.messageText, '\n')
61
171
  .split('\n')
62
172
  .map((l) => l.trim())
63
173
  .filter(Boolean);
64
- const message = lines.length > 2 ? `${lines[0]} ${lines[lines.length - 1]}` : lines.join(' ');
174
+ let message = lines.length > 2 ? `${lines[0]} ${lines[lines.length - 1]}` : lines.join(' ');
175
+ message = message
176
+ .replace(/'"([^"']+)"'/g, "'$1'")
177
+ .replace(/^Property '([^']+)' is missing in type '.*' but required in type '([^']+)'\.$/, "Property '$1' is required in type '$2' but missing.")
178
+ .replace(/^Type '.*' is missing the following properties from type '([^']+)': (.*)$/, "Properties required in type '$1' are missing: $2.");
65
179
  return message.length > 400 ? `${message.slice(0, 400)}…` : message;
66
180
  }
67
- /** Type issues not already explained by a rule issue on the same object (or inside it) */
68
- export function unexplainedTypeIssues(typeIssues, ruleIssues) {
69
- return typeIssues.filter((t) => !ruleIssues.some((r) => r.path === t.path || r.path.startsWith(`${t.path}.`)));
181
+ /** TS diagnostic codes → shape issue codes */
182
+ const UNKNOWN_KEY_CODES = new Set([2353, 2561, 2322 /* when the message is an excess-property one */]);
183
+ const MISSING_PROPERTY_CODES = new Set([2741, 2739, 2740, 2345]);
184
+ const TYPE_MISMATCH_CODES = new Set([2322, 2820, 2352, 2367]);
185
+ const UNKNOWN_KEY_MESSAGE = /'([^']+)' does not exist in type/;
186
+ function classify(diagnostic, message) {
187
+ const unknownKey = UNKNOWN_KEY_MESSAGE.exec(message);
188
+ if (unknownKey && UNKNOWN_KEY_CODES.has(diagnostic.code)) {
189
+ return { code: 'shape/unknown-key', key: unquote(unknownKey[1]) };
190
+ }
191
+ if (MISSING_PROPERTY_CODES.has(diagnostic.code) || /is required in type '[^']+' but missing|are missing:/.test(message)) {
192
+ return { code: 'shape/missing-property' };
193
+ }
194
+ if (TYPE_MISMATCH_CODES.has(diagnostic.code)) {
195
+ return { code: 'shape/type-mismatch' };
196
+ }
197
+ return { code: 'shape/invalid' };
198
+ }
199
+ /** Property names the contextual type of an object literal accepts (union members merged) */
200
+ function acceptedKeys(ts, checker, literal) {
201
+ const type = checker.getContextualType(literal);
202
+ if (!type) {
203
+ return [];
204
+ }
205
+ const types = type.isUnion() ? type.types : [type];
206
+ const names = new Set();
207
+ for (const member of types) {
208
+ for (const property of checker.getPropertiesOfType(member)) {
209
+ // `PivotColumns?: never` marks a key as *forbidden* in that union member, not accepted
210
+ const declaration = property.valueDeclaration;
211
+ if (declaration && ts.isPropertySignature(declaration) && declaration.type?.kind === ts.SyntaxKind.NeverKeyword) {
212
+ continue;
213
+ }
214
+ names.add(property.name);
215
+ }
216
+ }
217
+ return [...names];
218
+ }
219
+ function isUnder(path, parent) {
220
+ return path === parent || path.startsWith(`${parent}.`) || path.startsWith(`${parent}[`);
70
221
  }
71
222
  /**
72
- * Type-checks a state object against `InitialState` from the project's AdapTable
73
- * (the TypeScript a developer would get from `const initialState: InitialState = ...`).
223
+ * The generated file up to the checked literal. A persisted State is what the runtime
224
+ * stored: each section object carries the metadata `addUuidsToInitialState` writes
225
+ * (`Uuid`, `AdaptableVersion`, `Source`), which the published types do not declare on
226
+ * `BaseState`; the checked type allows it (and keeps every section required, as the
227
+ * runtime writes them all) so a `getPersistentState()` export is judged on its content.
74
228
  */
75
- export async function typeCheckState(projectPath, state) {
76
- const typesModule = resolveInitialStateModule(projectPath);
77
- if (!typesModule) {
229
+ function checkPrefix(type, module) {
230
+ if (type !== 'AdaptablePersistentState') {
231
+ return `import type { ${type} } from ${JSON.stringify(module)};\nexport const value: ${type} = `;
232
+ }
233
+ // the alias keeps the diagnostics naming `AdaptablePersistentState`
234
+ return (`import type { ${type} as Persisted } from ${JSON.stringify(module)};\n` +
235
+ `type RuntimeMeta = { Uuid?: string; AdaptableVersion?: string; Source?: string };\n` +
236
+ `type ${type} = { [K in keyof Persisted]: Persisted[K] & RuntimeMeta };\n` +
237
+ `export const value: ${type} = `);
238
+ }
239
+ /**
240
+ * Type-checks `value` as `type` against the types of `types`. Never throws for a
241
+ * shape problem; `ok: false` only when the types cannot be loaded.
242
+ */
243
+ export async function checkShape(input) {
244
+ const module = typesModule(input.types);
245
+ if (!module) {
246
+ const where = input.types.kind === 'source' ? `${input.types.dir}/types.ts` : `${input.types.dir}/types.d.ts`;
247
+ return { ok: false, reason: `The types entry ${where} does not exist; the package layout is not the one the check expects.` };
248
+ }
249
+ const ts = await loadTypeScript();
250
+ const checkFile = join(input.types.dir, CHECK_FILE);
251
+ const prefix = checkPrefix(input.type, module);
252
+ const text = `${prefix}${JSON.stringify(input.value, null, 2)};\n`;
253
+ const { program, sf } = createProgramFor(ts, input.types.dir, checkFile, text);
254
+ const diagnostics = [...program.getSyntacticDiagnostics(sf), ...program.getSemanticDiagnostics(sf)];
255
+ if (diagnostics.some((d) => d.code === 2307 || (d.start ?? 0) < prefix.indexOf('export'))) {
78
256
  return {
79
257
  ok: false,
80
- reason: 'AdapTable type definitions (InitialState) not found in this project; install @adaptabletools/adaptable first.',
258
+ reason: `Could not load ${input.type} from ${module}: ${diagnostics.map((d) => messageOf(ts, d)).join('; ')}`,
81
259
  };
82
260
  }
83
- const ts = await loadTypeScript();
84
- const checkFile = join(projectPath, CHECK_FILE);
85
- const prefix = `import type { InitialState } from ${JSON.stringify(typesModule)};\nexport const state: InitialState = `;
86
- const text = `${prefix}${JSON.stringify(state, null, 2)};\n`;
87
- const host = ts.createCompilerHost(OPTIONS, true);
88
- const getSourceFile = host.getSourceFile.bind(host);
89
- host.getSourceFile = (fileName, languageVersion, onError) => {
90
- if (fileName === checkFile) {
91
- return ts.createSourceFile(fileName, text, languageVersion, true);
261
+ const declaration = sf.statements.filter(ts.isVariableStatement).flatMap((s) => s.declarationList.declarations)[0];
262
+ const root = declaration?.initializer;
263
+ const checker = program.getTypeChecker();
264
+ const area = input.type === 'AdaptableOptions' ? 'options' : 'state';
265
+ const unverifiablePaths = (input.unverifiable ?? []).map((u) => u.path);
266
+ const issues = [];
267
+ const suppressed = [];
268
+ for (const diagnostic of diagnostics) {
269
+ const message = messageOf(ts, diagnostic);
270
+ const { code, key } = classify(diagnostic, message);
271
+ // an unknown key is reported at the key's own path (the compiler usually positions it there already)
272
+ let path = root && diagnostic.start !== undefined ? pathAt(ts, sf, root, diagnostic.start) : '';
273
+ if (code === 'shape/unknown-key' && key && path !== key && !path.endsWith(`.${key}`)) {
274
+ path = childPath(path, key);
92
275
  }
93
- let mtime = 0;
94
- try {
95
- mtime = statSync(fileName).mtimeMs;
276
+ // a diagnostic at or under a stubbed value is about the stub; so is one about `null` on a container holding stubs
277
+ // (the compiler elaborates `Tags: [null]` to the enclosing array or object)
278
+ if (unverifiablePaths.some((u) => isUnder(path, u) || (isUnder(u, path) && /'null'|\bnull\b/.test(message)))) {
279
+ suppressed.push({ path, message });
280
+ continue;
96
281
  }
97
- catch {
98
- // missing files are reported by the compiler
282
+ const issue = { code, severity: 'error', path, message };
283
+ if (code === 'shape/unknown-key' && key) {
284
+ issue.key = key;
285
+ const literal = deepestObjectLiteral(ts, sf, root, diagnostic.start);
286
+ const accepted = literal ? acceptedKeys(ts, checker, literal) : [];
287
+ const suggestions = suggestKeys(key, path, accepted, input.renames ?? [], area);
288
+ if (suggestions.length) {
289
+ issue.suggestions = suggestions;
290
+ issue.fix = describeSuggestions(key, suggestions);
291
+ }
292
+ const first = suggestions[0];
293
+ if (first?.kind === 'renamed') {
294
+ issue.docs = `#chg-${first.rename.anchor}`;
295
+ }
99
296
  }
100
- const cached = sourceFiles.get(fileName);
101
- if (cached && cached.mtime === mtime) {
102
- return cached.file;
297
+ const position = input.lineMap?.[path];
298
+ if (position) {
299
+ const at = code === 'shape/unknown-key' ? position.key ?? position.value : position.value;
300
+ issue.file = at.file;
301
+ issue.line = at.line;
302
+ issue.column = at.column;
103
303
  }
104
- const file = getSourceFile(fileName, languageVersion, onError);
105
- if (file) {
106
- sourceFiles.set(fileName, { mtime, file });
304
+ issues.push(issue);
305
+ }
306
+ const version = input.types.kind === 'package' ? input.types.version : undefined;
307
+ return {
308
+ ok: true,
309
+ issues,
310
+ suppressed,
311
+ checked: {
312
+ types: version ? `types.d.ts@${version}` : `source@${input.types.dir}`,
313
+ ...(version ? { version } : {}),
314
+ source: input.types.kind,
315
+ agGridTypes: agGridTypesResolve(input.types.dir),
316
+ },
317
+ };
318
+ }
319
+ /** Whether any key is acceptable in a literal of this type: `any`/`unknown`/`object`, an index signature, or no type at all */
320
+ function acceptsAnyKey(ts, checker, type) {
321
+ if (!type) {
322
+ return true;
323
+ }
324
+ const members = type.isUnion() ? type.types : [type];
325
+ return members.some((member) => (member.flags & (ts.TypeFlags.Any | ts.TypeFlags.Unknown | ts.TypeFlags.NonPrimitive | ts.TypeFlags.TypeParameter)) !== 0 ||
326
+ checker.getIndexInfosOfType(member).length > 0);
327
+ }
328
+ /**
329
+ * Every property of `value` whose key the contextual type at that place does not
330
+ * declare — exhaustively, in one pass over the generated literal, independent of
331
+ * how the compiler elaborates its diagnostics (which stop at one problem per
332
+ * failing top-level property). A literal whose type accepts any key (`any`,
333
+ * index signatures, unresolved AG Grid types) contributes nothing; the children
334
+ * of an unknown key are not descended into.
335
+ */
336
+ export async function findUnknownKeys(input) {
337
+ const module = typesModule(input.types);
338
+ if (!module) {
339
+ const where = input.types.kind === 'source' ? `${input.types.dir}/types.ts` : `${input.types.dir}/types.d.ts`;
340
+ return { ok: false, reason: `The types entry ${where} does not exist; the package layout is not the one the check expects.` };
341
+ }
342
+ const ts = await loadTypeScript();
343
+ const checkFile = join(input.types.dir, CHECK_FILE);
344
+ const prefix = checkPrefix(input.type, module);
345
+ const text = `${prefix}${JSON.stringify(input.value, null, 2)};\n`;
346
+ const { program, sf } = createProgramFor(ts, input.types.dir, checkFile, text);
347
+ const diagnostics = program.getSemanticDiagnostics(sf);
348
+ if (diagnostics.some((d) => d.code === 2307)) {
349
+ return { ok: false, reason: `Could not load ${input.type} from ${module}: ${diagnostics.map((d) => messageOf(ts, d)).join('; ')}` };
350
+ }
351
+ const root = sf.statements.filter(ts.isVariableStatement).flatMap((s) => s.declarationList.declarations)[0]?.initializer;
352
+ const checker = program.getTypeChecker();
353
+ const unknown = [];
354
+ const visit = (node, path) => {
355
+ if (ts.isObjectLiteralExpression(node)) {
356
+ const type = checker.getContextualType(node);
357
+ const accepted = acceptsAnyKey(ts, checker, type) ? undefined : acceptedKeys(ts, checker, node);
358
+ for (const property of node.properties) {
359
+ if (!ts.isPropertyAssignment(property) || !(ts.isStringLiteral(property.name) || ts.isIdentifier(property.name))) {
360
+ continue;
361
+ }
362
+ const key = property.name.text;
363
+ const child = childPath(path, key);
364
+ if (accepted && !accepted.includes(key)) {
365
+ unknown.push({ path: child, key, accepted, type: checker.typeToString(checker.getNonNullableType(type)).replace(/ & RuntimeMeta$/, '') });
366
+ continue;
367
+ }
368
+ visit(property.initializer, child);
369
+ }
370
+ }
371
+ else if (ts.isArrayLiteralExpression(node)) {
372
+ node.elements.forEach((element, index) => visit(element, `${path}[${index}]`));
107
373
  }
108
- return file;
109
374
  };
110
- const fileExists = host.fileExists.bind(host);
111
- host.fileExists = (fileName) => fileName === checkFile || fileExists(fileName);
112
- const program = ts.createProgram({
113
- rootNames: [checkFile],
114
- options: {
115
- ...OPTIONS,
116
- target: ts.ScriptTarget.ES2020,
117
- module: ts.ModuleKind.ESNext,
118
- moduleResolution: ts.ModuleResolutionKind.Bundler,
119
- jsx: ts.JsxEmit.ReactJSX,
120
- },
121
- host,
122
- });
123
- const sf = program.getSourceFile(checkFile);
124
- const diagnostics = [...program.getSyntacticDiagnostics(sf), ...program.getSemanticDiagnostics(sf)];
125
- if (diagnostics.some((d) => d.code === 2307 || (d.start ?? 0) < prefix.indexOf('export'))) {
126
- return {
127
- ok: false,
128
- reason: `Could not load InitialState from ${typesModule}: ${diagnostics.map((d) => messageOf(ts, d)).join('; ')}`,
129
- };
375
+ if (root) {
376
+ visit(root, '');
130
377
  }
131
- const declaration = sf.statements
132
- .filter(ts.isVariableStatement)
133
- .flatMap((s) => s.declarationList.declarations)[0];
134
- const root = declaration?.initializer;
135
- const issues = diagnostics.map((d) => ({
136
- path: root && d.start !== undefined ? pathAt(ts, sf, root, d.start) : '',
137
- severity: 'error',
138
- message: messageOf(ts, d),
139
- }));
140
- return { ok: true, issues, source: `${typesModule}${process.env.ADAPTABLE_MCP_ADAPTABLE_SRC ? '.ts' : '.d.ts'}` };
378
+ const version = input.types.kind === 'package' ? input.types.version : undefined;
379
+ return {
380
+ ok: true,
381
+ unknown,
382
+ checked: {
383
+ types: version ? `types.d.ts@${version}` : `source@${input.types.dir}`,
384
+ ...(version ? { version } : {}),
385
+ source: input.types.kind,
386
+ agGridTypes: agGridTypesResolve(input.types.dir),
387
+ },
388
+ };
389
+ }
390
+ /** The innermost object literal containing `pos` — for a diagnostic at a key, the object that key was written in */
391
+ function deepestObjectLiteral(ts, sf, root, pos) {
392
+ let found;
393
+ const visit = (node) => {
394
+ if (node.getStart(sf) <= pos && pos < node.end) {
395
+ if (ts.isObjectLiteralExpression(node)) {
396
+ found = node;
397
+ }
398
+ ts.forEachChild(node, visit);
399
+ }
400
+ };
401
+ visit(root);
402
+ return found;
403
+ }
404
+ /** Type issues not already explained by a rule issue on the same object (or inside it); kept for A2.3 */
405
+ export function unexplainedShapeIssues(shapeIssues, ruleIssues) {
406
+ return shapeIssues.filter((t) => !ruleIssues.some((r) => r.path === t.path || r.path.startsWith(`${t.path}.`)));
141
407
  }
142
408
  //# sourceMappingURL=type-check.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"type-check.js","sourceRoot":"","sources":["../../../src/core/state/type-check.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"type-check.js","sourceRoot":"","sources":["../../../src/core/state/type-check.ts"],"names":[],"mappings":"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"}