@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,6 @@
1
+ /* eslint-disable */
2
+ declare module '*.vue' {
3
+ import type {DefineComponent} from 'vue';
4
+ const component: DefineComponent<{}, {}, any>;
5
+ export default component;
6
+ }
@@ -0,0 +1,50 @@
1
+ @import url('https://fonts.googleapis.com/css2?family=Poppins:wght@300;500;700&display=swap');
2
+
3
+ :root {
4
+ --ab__font-family:
5
+ 'IBM Plex Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto,
6
+ Oxygen-Sans, Ubuntu;
7
+
8
+ /* Default rem value: 16px; docs value: 14px */
9
+ --ab-font-size-0: 0.5rem; /* 7px for 1rem=14px; 8px for 1rem=16px */
10
+ --ab-font-size-1: 0.625rem; /* 8.75px for 1rem=14px; 10px for 1rem=16px */
11
+ --ab-font-size-2: 0.75rem; /* 10.5px for 1rem=14px; 12px for 1rem=16px */
12
+ --ab-font-size-3: 0.875rem; /* 12.25px for 1rem=14px; 14px for 1rem=16px */
13
+ --ab-font-size-4: 1rem;
14
+ --ab-font-size-5: 1.25rem; /* 17.5px for 1rem=14px; 20px for 1rem=16px */
15
+ --ab-font-size-6: 1.5rem; /* 21px for 1rem=14px; 24px for 1rem=16px */
16
+ --ab-font-size-7: 2.25rem; /* 31.5px for 1rem=14px; 36px for 1rem=16px */
17
+ --ab-input-height: 34px;
18
+ }
19
+
20
+ html,
21
+ body {
22
+ height: 100%;
23
+ font-family: var(--ab__font-family);
24
+ font-size: 14px;
25
+ }
26
+
27
+ body {
28
+ display: flex;
29
+ flex-flow: column;
30
+ height: 100vh;
31
+ margin: 0px;
32
+ }
33
+
34
+ #grid {
35
+ flex: 1;
36
+ }
37
+
38
+ .ab-Dashboard__title {
39
+ font-weight: normal;
40
+ }
41
+
42
+ .ab-Dashboard__tab {
43
+ padding: 6px 9px;
44
+ }
45
+
46
+ /* Charting size */
47
+ #demoOutputAbove .ag-chart,
48
+ #demoOutputBelow .ag-chart {
49
+ height: 300px;
50
+ }
@@ -0,0 +1,30 @@
1
+ {
2
+ "compilerOptions": {
3
+ "target": "ES2020",
4
+ "module": "esnext",
5
+ "strict": true,
6
+ "jsx": "preserve",
7
+ "moduleResolution": "node",
8
+ "experimentalDecorators": true,
9
+ "skipLibCheck": true,
10
+ "esModuleInterop": true,
11
+ "allowSyntheticDefaultImports": true,
12
+ "forceConsistentCasingInFileNames": true,
13
+ "useDefineForClassFields": true,
14
+ "sourceMap": false,
15
+ "baseUrl": ".",
16
+ "types": ["webpack-env"],
17
+ "paths": {
18
+ "@/*": ["src/*"]
19
+ },
20
+ "lib": ["ES2020", "dom", "dom.iterable", "scripthost"]
21
+ },
22
+ "include": [
23
+ "src/**/*.ts",
24
+ "src/**/*.tsx",
25
+ "src/**/*.vue",
26
+ "tests/**/*.ts",
27
+ "tests/**/*.tsx"
28
+ ],
29
+ "exclude": ["node_modules"]
30
+ }
package/dist/bin.js CHANGED
@@ -11,6 +11,13 @@ const io = {
11
11
  stderr: (text) => {
12
12
  process.stderr.write(text);
13
13
  },
14
+ stdin: async () => {
15
+ const chunks = [];
16
+ for await (const chunk of process.stdin) {
17
+ chunks.push(typeof chunk === 'string' ? Buffer.from(chunk) : chunk);
18
+ }
19
+ return Buffer.concat(chunks).toString('utf8');
20
+ },
14
21
  };
15
22
  process.exitCode = argv[0] === 'mcp' ? await runMcp(argv.slice(1), io) : await runCli(argv, io);
16
23
  //# sourceMappingURL=bin.js.map
package/dist/bin.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"bin.js","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":";AACA,kFAAkF;AAClF,yDAAyD;AACzD,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACxC,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAExC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnC,MAAM,EAAE,GAAG;IACT,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE;QACvB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IACD,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE;QACvB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;CACF,CAAC;AAEF,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC"}
1
+ {"version":3,"file":"bin.js","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":";AACA,kFAAkF;AAClF,yDAAyD;AACzD,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACxC,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAExC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnC,MAAM,EAAE,GAAG;IACT,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE;QACvB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IACD,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE;QACvB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IACD,KAAK,EAAE,KAAK,IAAI,EAAE;QAChB,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YACxC,MAAM,CAAC,IAAI,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QACtE,CAAC;QACD,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAChD,CAAC;CACF,CAAC;AAEF,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC"}
package/dist/cli/index.js CHANGED
@@ -50,6 +50,14 @@ export async function runCli(argv, io) {
50
50
  writeOut: io.stdout,
51
51
  writeErr: io.stderr,
52
52
  onInvoke: async ({ capability, input, globals }) => {
53
+ const { stdinField, positionals = [] } = capability.cli;
54
+ if (stdinField && positionals.some((field) => input[field] === '-')) {
55
+ if (!io.stdin) {
56
+ exitCode = emit(io, usageEnvelope('`-` reads the input from stdin, which this binding does not provide.', 'Pass a file path instead.'), globals, capability);
57
+ return;
58
+ }
59
+ input[stdinField] = await io.stdin();
60
+ }
53
61
  const envelope = await runCapability(capability.name, input, {
54
62
  cwd: globals.cwd,
55
63
  major: globals.major,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,315 @@
1
+ /** Values under these keys are identifiers or structure, never data */
2
+ export const KEEP_KEYS = new Set([
3
+ // identifiers
4
+ 'Name',
5
+ 'Names',
6
+ 'Uuid',
7
+ 'Id',
8
+ 'id',
9
+ 'Key',
10
+ 'CurrentLayout',
11
+ 'LayoutName',
12
+ 'PrimaryKey',
13
+ 'primaryKey',
14
+ 'adaptableId',
15
+ 'AdaptableId',
16
+ 'adaptableStateKey',
17
+ 'stateKey',
18
+ // DevTools getGridInfo() column lists
19
+ 'rowGroups',
20
+ 'pivotColumns',
21
+ 'groupedColumns',
22
+ 'columnIds',
23
+ 'calculated',
24
+ 'freeText',
25
+ 'action',
26
+ 'ColumnId',
27
+ 'ColumnIds',
28
+ 'columnId',
29
+ 'colId',
30
+ 'field',
31
+ 'Field',
32
+ 'headerName',
33
+ 'HeaderName',
34
+ 'friendlyName',
35
+ 'FriendlyName',
36
+ // ColDef and column-info properties (structure, not data; a string valueGetter is a formula)
37
+ 'width',
38
+ 'flex',
39
+ 'minWidth',
40
+ 'maxWidth',
41
+ 'pinned',
42
+ 'sort',
43
+ 'sortIndex',
44
+ 'rowGroupIndex',
45
+ 'pivotIndex',
46
+ 'aggFunc',
47
+ 'cellRenderer',
48
+ 'cellEditor',
49
+ 'valueGetter',
50
+ 'valueFormatter',
51
+ 'cellClass',
52
+ 'cellStyle',
53
+ 'cellClassRules',
54
+ 'filter',
55
+ 'floatingFilter',
56
+ 'TableColumns',
57
+ 'PivotColumns',
58
+ 'RowGroupedColumns',
59
+ 'PivotGroupedColumns',
60
+ 'GroupedColumns',
61
+ 'ColumnSorts',
62
+ 'ColumnPinning',
63
+ 'ColumnSizing',
64
+ 'ColumnVisibility',
65
+ 'ColumnHeaders',
66
+ 'Toolbars',
67
+ 'PinnedToolbars',
68
+ 'ModuleButtons',
69
+ 'Module',
70
+ 'Modules',
71
+ 'Tabs',
72
+ 'Buttons',
73
+ // types and enums
74
+ 'Type',
75
+ 'type',
76
+ 'DataType',
77
+ 'DataTypes',
78
+ 'dataType',
79
+ 'cellDataType',
80
+ 'CellDataType',
81
+ 'ColumnType',
82
+ 'ColumnTypes',
83
+ 'Operator',
84
+ 'PredicateId',
85
+ 'SortOrder',
86
+ 'Direction',
87
+ 'Position',
88
+ 'Mode',
89
+ 'Source',
90
+ 'Status',
91
+ 'Severity',
92
+ 'MessageType',
93
+ 'Frequency',
94
+ 'Behaviour',
95
+ 'Format',
96
+ 'Formatter',
97
+ 'Pattern',
98
+ 'Locale',
99
+ 'Currency',
100
+ 'Theme',
101
+ 'Visibility',
102
+ 'Trigger',
103
+ 'Scope',
104
+ 'Style',
105
+ 'DisplayFormat',
106
+ 'Settings',
107
+ 'AggregationType',
108
+ 'AggFunc',
109
+ 'Rounding',
110
+ 'Alignment',
111
+ 'Shape',
112
+ 'Icon',
113
+ 'Variant',
114
+ 'Size',
115
+ 'Unit',
116
+ // versions and structure
117
+ 'Revision',
118
+ 'stateVersion',
119
+ 'adaptableVersion',
120
+ 'agGridVersion',
121
+ 'version',
122
+ 'Version',
123
+ 'schemaVersion',
124
+ 'major',
125
+ 'framework',
126
+ // sizing and positions
127
+ 'Width',
128
+ 'Flex',
129
+ 'MinWidth',
130
+ 'MaxWidth',
131
+ 'Height',
132
+ 'x',
133
+ 'y',
134
+ 'Index',
135
+ 'ActiveTabIndex',
136
+ 'Order',
137
+ 'Priority',
138
+ 'Limit',
139
+ 'Interval',
140
+ 'Precision',
141
+ 'Decimals',
142
+ 'FractionDigits',
143
+ 'IntegerDigits',
144
+ 'Multiplier',
145
+ 'Zoom',
146
+ 'Count',
147
+ 'count',
148
+ 'length',
149
+ 'all',
150
+ 'visible',
151
+ 'selected',
152
+ ]);
153
+ /** Keys whose values are expressions: kept (plan §8.12 "keeps expressions"); a Predicate's `Inputs` are data and are not here */
154
+ export const EXPRESSION_KEY = /(Expression|Expressions|Query|Queries|Formula|^Rule)$/;
155
+ /** Keys that carry secrets or identities: the value becomes `<redacted:key>` */
156
+ export const REDACT_KEY = /licen[cs]e|^user(name|id)?$|username|userName|email|e-mail|password|passwd|secret|token|apikey|api_key|authorization|cookie|session/i;
157
+ /**
158
+ * Object keys that mark an AdapTable State object, a column definition or a DevTools
159
+ * `getColumns()` entry (`{ id, friendlyName, dataType, visible, isPrimaryKey }`) rather than a data row
160
+ */
161
+ const STATE_OBJECT_MARKERS = new Set([
162
+ 'Name', 'Uuid', 'ColumnId', 'ColumnIds', 'Scope', 'Rule', 'Style', 'Predicate', 'PredicateId', 'Expression',
163
+ 'field', 'colId', 'columnId', 'headerName', 'children', 'Toolbars', 'Tabs',
164
+ 'friendlyName', 'dataType', 'columnTypes', 'isPrimaryKey',
165
+ ]);
166
+ /** `Goldman Sachs` → `Xxxxxxx Xxxxx`; digits → `0`; other characters kept */
167
+ export function placeholderString(text) {
168
+ return text
169
+ .replace(/[A-Z]/g, 'X')
170
+ .replace(/[a-z]/g, 'x')
171
+ .replace(/[0-9]/g, '0')
172
+ .replace(/[\u0080-\uFFFF]/g, 'x');
173
+ }
174
+ /**
175
+ * Numbers keep their sign, magnitude and integer-ness, and distinct values stay distinct:
176
+ * the n-th distinct value of a magnitude class becomes `10^magnitude + n` (a float gets
177
+ * `.5`): `1001, 1002` → `1000, 1001`; `-3200` → `-1000`; `1250000.5` → `1000000.5`; `0` → `0`.
178
+ */
179
+ export class NumberPlaceholders {
180
+ seen = new Map();
181
+ counters = new Map();
182
+ placeholder(value) {
183
+ if (!Number.isFinite(value) || value === 0) {
184
+ return 0;
185
+ }
186
+ const known = this.seen.get(value);
187
+ if (known !== undefined) {
188
+ return known;
189
+ }
190
+ const magnitude = Math.floor(Math.log10(Math.abs(value)));
191
+ const integer = Number.isInteger(value);
192
+ const classKey = `${Math.sign(value)}:${magnitude}:${integer}`;
193
+ const n = this.counters.get(classKey) ?? 0;
194
+ this.counters.set(classKey, n + 1);
195
+ const base = Math.pow(10, magnitude) + n;
196
+ const result = Math.sign(value) * (integer ? base : base + 0.5);
197
+ this.seen.set(value, result);
198
+ return result;
199
+ }
200
+ }
201
+ /** `placeholderNumber` for one value (tests and callers without a shared mapping) */
202
+ export function placeholderNumber(value) {
203
+ return new NumberPlaceholders().placeholder(value);
204
+ }
205
+ /** Quoted string literals inside an expression are data; the structure (columns, functions, operators, numbers) is kept */
206
+ export function placeholderExpression(expression) {
207
+ return expression.replace(/'((?:[^'\\]|\\.)*)'|"((?:[^"\\]|\\.)*)"/g, (whole, single, double) => {
208
+ const inner = single ?? double ?? '';
209
+ const quote = single !== undefined ? "'" : '"';
210
+ return `${quote}${placeholderString(inner)}${quote}`;
211
+ });
212
+ }
213
+ const isObj = (value) => typeof value === 'object' && value !== null && !Array.isArray(value);
214
+ /** A data row: an object inside an array whose keys carry no State / ColDef vocabulary */
215
+ function isDataRow(value) {
216
+ if (!isObj(value)) {
217
+ return false;
218
+ }
219
+ const keys = Object.keys(value);
220
+ return keys.length > 0 && keys.every((key) => !STATE_OBJECT_MARKERS.has(key) && !EXPRESSION_KEY.test(key));
221
+ }
222
+ export function anonymise(input, options = {}) {
223
+ const stats = { strings: 0, numbers: 0, redacted: [], kept: 0, rows: 0, fields: {}, expressions: 0 };
224
+ const numbers = new NumberPlaceholders();
225
+ const fieldName = (key) => {
226
+ if (options.keepKeys || KEEP_KEYS.has(key) || REDACT_KEY.test(key)) {
227
+ return key;
228
+ }
229
+ if (!stats.fields[key]) {
230
+ stats.fields[key] = `field${Object.keys(stats.fields).length + 1}`;
231
+ }
232
+ return stats.fields[key];
233
+ };
234
+ const scrub = (value) => {
235
+ if (typeof value === 'string') {
236
+ stats.strings += 1;
237
+ return placeholderString(value);
238
+ }
239
+ if (typeof value === 'number') {
240
+ stats.numbers += 1;
241
+ return numbers.placeholder(value);
242
+ }
243
+ if (Array.isArray(value)) {
244
+ return value.map(scrub);
245
+ }
246
+ if (isObj(value)) {
247
+ return Object.fromEntries(Object.entries(value).map(([key, inner]) => [key, scrub(inner)]));
248
+ }
249
+ return value;
250
+ };
251
+ /** Kept, except quoted literals inside expressions and secrets under a redacted key */
252
+ const keep = (value, expression = false) => {
253
+ if (typeof value === 'string') {
254
+ stats.kept += 1;
255
+ if (expression) {
256
+ const scrubbed = placeholderExpression(value);
257
+ if (scrubbed !== value) {
258
+ stats.expressions += 1;
259
+ }
260
+ return scrubbed;
261
+ }
262
+ return value;
263
+ }
264
+ if (typeof value === 'number') {
265
+ stats.kept += 1;
266
+ }
267
+ else if (Array.isArray(value)) {
268
+ return value.map((item) => keep(item, expression));
269
+ }
270
+ else if (isObj(value)) {
271
+ return Object.fromEntries(Object.entries(value).map(([key, inner]) => [key, REDACT_KEY.test(key) ? redact(`${key}`, inner) : keep(inner, expression || EXPRESSION_KEY.test(key))]));
272
+ }
273
+ return value;
274
+ };
275
+ const redact = (path, value) => {
276
+ stats.redacted.push(path);
277
+ const key = path.split('.').pop() ?? path;
278
+ return value === null ? null : `<redacted:${key}>`;
279
+ };
280
+ const row = (value) => {
281
+ stats.rows += 1;
282
+ return Object.fromEntries(Object.entries(value).map(([key, inner]) => {
283
+ if (REDACT_KEY.test(key)) {
284
+ return [key, redact(key, inner)];
285
+ }
286
+ if (KEEP_KEYS.has(key)) {
287
+ return [key, keep(inner)];
288
+ }
289
+ return [fieldName(key), scrub(inner)];
290
+ }));
291
+ };
292
+ const visit = (value, path, parentKey) => {
293
+ if (Array.isArray(value)) {
294
+ return value.map((item, index) => (isDataRow(item) ? row(item) : visit(item, `${path}[${index}]`, parentKey)));
295
+ }
296
+ if (isObj(value)) {
297
+ return Object.fromEntries(Object.entries(value).map(([key, inner]) => {
298
+ const childPath = path ? `${path}.${key}` : key;
299
+ if (REDACT_KEY.test(key)) {
300
+ return [key, redact(childPath, inner)];
301
+ }
302
+ if (KEEP_KEYS.has(key) || EXPRESSION_KEY.test(key)) {
303
+ return [key, keep(inner, EXPRESSION_KEY.test(key))];
304
+ }
305
+ return [key, visit(inner, childPath, key)];
306
+ }));
307
+ }
308
+ if (typeof value === 'string' || typeof value === 'number') {
309
+ return parentKey !== undefined && (KEEP_KEYS.has(parentKey) || EXPRESSION_KEY.test(parentKey)) ? keep(value, EXPRESSION_KEY.test(parentKey)) : scrub(value);
310
+ }
311
+ return value;
312
+ };
313
+ return { value: visit(input, '', undefined), stats };
314
+ }
315
+ //# sourceMappingURL=anonymise.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anonymise.js","sourceRoot":"","sources":["../../../src/core/anonymise/anonymise.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,94 @@
1
+ /**
2
+ * `adaptable anonymise <state-or-data.json|-> [--keep-keys] [--out <file>]` · CLI only (plan §8.12).
3
+ */
4
+ import { writeFileSync } from 'node:fs';
5
+ import { basename, resolve } from 'node:path';
6
+ import { z } from 'zod';
7
+ import { registerCapability } from '../capabilities.js';
8
+ import { CapabilityError, ok } from '../envelope.js';
9
+ import { extractFromFile, extractFromSource } from '../extract/input.js';
10
+ import { anonymise } from './anonymise.js';
11
+ const AnonymiseOutput = z.object({
12
+ source: z.object({ file: z.string(), locatedBy: z.string() }),
13
+ /** The input with its values replaced */
14
+ anonymised: z.unknown(),
15
+ stats: z.object({
16
+ strings: z.number(),
17
+ numbers: z.number(),
18
+ redacted: z.array(z.string()),
19
+ kept: z.number(),
20
+ rows: z.number(),
21
+ fields: z.record(z.string(), z.string()),
22
+ expressions: z.number(),
23
+ }),
24
+ wrote: z.string().optional(),
25
+ });
26
+ /**
27
+ * JSON is taken whole (a State, Options, Grid Info, columns or rows export). A source file
28
+ * goes through the extractor: the Options literal first (it carries the licence key and
29
+ * the State), else a State literal.
30
+ */
31
+ function read(file, text) {
32
+ const name = file && file !== '-' ? file : '<stdin>';
33
+ if (text !== undefined) {
34
+ const asOptions = extractFromSource(text, { target: 'options', file: name });
35
+ return asOptions.value !== undefined ? asOptions : extractFromSource(text, { target: 'state', file: name });
36
+ }
37
+ const asOptions = extractFromFile(file ?? '', { target: 'options' });
38
+ return asOptions.value !== undefined ? asOptions : extractFromFile(file ?? '', { target: 'state' });
39
+ }
40
+ registerCapability({
41
+ name: 'anonymise',
42
+ description: 'Replaces the values of a State, Options, Grid Info, columns or row-data JSON with shape-preserving placeholders — names, column ids, expressions and structure kept, licence keys and user names redacted, row data scrubbed — for a support case.',
43
+ cli: { command: ['anonymise'], positionals: ['file'], stdinField: 'text' },
44
+ mcp: null,
45
+ input: z.object({
46
+ file: z.string().optional().describe('JSON / JSONC / JSON5 to anonymise (a State, Options, DevTools output or rows), or a source file holding a State / Options literal; `-` reads stdin'),
47
+ text: z.string().optional().describe('The input text itself (stdin); the CLI fills it for `-`'),
48
+ keepKeys: z.boolean().optional().describe('Keep the field names of row data (they are renamed field1, field2, … otherwise); values are scrubbed either way'),
49
+ out: z.string().optional().describe('Write the anonymised JSON to this file; never the input file'),
50
+ }),
51
+ output: AnonymiseOutput,
52
+ run: async (input) => {
53
+ if (!input.file && input.text === undefined) {
54
+ throw new CapabilityError('USAGE', 'Pass the file to anonymise (or `-` for stdin).', 'Example: `adaptable anonymise persistent-state.json --out state.anonymised.json`.');
55
+ }
56
+ const extraction = read(input.file, input.text);
57
+ if (extraction.value === undefined) {
58
+ throw new CapabilityError('EXTRACTION_FAILED', `Nothing to anonymise in ${basename(input.file ?? '<stdin>')}: tried ${extraction.tried.join(', ')}.`, 'Pass a JSON file (State, Options, DevTools getGridInfo / getColumns / getPersistentState output, or an array of rows), or a source file that declares the State or Options literal.');
59
+ }
60
+ const { value, stats } = anonymise(extraction.value, { keepKeys: input.keepKeys });
61
+ let wrote;
62
+ if (input.out) {
63
+ const target = resolve(input.out);
64
+ if ((input.file && input.file !== '-' && resolve(input.file) === target) || resolve(extraction.source.file) === target) {
65
+ throw new CapabilityError('USAGE', '--out must not be the input file.', 'Write the anonymised copy to a new file; the original stays as it is.');
66
+ }
67
+ writeFileSync(target, `${JSON.stringify(value, null, 2)}\n`);
68
+ wrote = target;
69
+ }
70
+ const warnings = [];
71
+ if (extraction.unverifiable.length > 0) {
72
+ warnings.push(`${extraction.unverifiable.length} value(s) in the source were functions or references and are null in the output.`);
73
+ }
74
+ return ok({ source: { file: extraction.source.file, locatedBy: extraction.source.locatedBy }, anonymised: value, stats, ...(wrote ? { wrote } : {}) }, { warnings });
75
+ },
76
+ markdown: (data) => {
77
+ const lines = [
78
+ `# anonymise — ${data.stats.strings} string${data.stats.strings === 1 ? '' : 's'} and ${data.stats.numbers} number${data.stats.numbers === 1 ? '' : 's'} replaced, ${data.stats.kept} identifier${data.stats.kept === 1 ? '' : 's'} kept`,
79
+ '',
80
+ `- Input: ${data.source.file} (${data.source.locatedBy})`,
81
+ `- Redacted: ${data.stats.redacted.length ? data.stats.redacted.map((p) => `\`${p}\``).join(', ') : 'nothing (no licence / user keys found)'}`,
82
+ `- Row data: ${data.stats.rows} row${data.stats.rows === 1 ? '' : 's'}${Object.keys(data.stats.fields).length ? `; fields renamed: ${Object.entries(data.stats.fields).map(([from, to]) => `${from} → ${to}`).join(', ')}` : ''}`,
83
+ `- Expressions kept: literals inside ${data.stats.expressions} of them replaced`,
84
+ ];
85
+ if (data.wrote) {
86
+ lines.push(`- Written to: ${data.wrote}`);
87
+ }
88
+ else {
89
+ lines.push('', '```json', JSON.stringify(data.anonymised, null, 2), '```');
90
+ }
91
+ return lines.join('\n');
92
+ },
93
+ });
94
+ //# sourceMappingURL=capabilities.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capabilities.js","sourceRoot":"","sources":["../../../src/core/anonymise/capabilities.ts"],"names":[],"mappings":"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"}