@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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve.js","sourceRoot":"","sources":["../../../src/core/context/resolve.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,86 @@
1
+ /**
2
+ * `adaptable convert coldefs <file|-> [--layout-name <name>] [--out <file>]` · CLI only (plan §8.7).
3
+ */
4
+ import { z } from 'zod';
5
+ import { registerCapability } from '../capabilities.js';
6
+ import { CapabilityError, ok } from '../envelope.js';
7
+ import { convertColdefs } from './coldefs.js';
8
+ const Position = { file: z.string(), line: z.number(), column: z.number() };
9
+ const ConvertOutput = z.object({
10
+ source: z.object({ file: z.string(), locatedBy: z.string(), line: z.number().optional(), column: z.number().optional() }),
11
+ layoutType: z.enum(['Table', 'Pivot']),
12
+ layout: z.record(z.string(), z.unknown()),
13
+ state: z.object({ Layout: z.object({ CurrentLayout: z.string(), Layouts: z.array(z.record(z.string(), z.unknown())) }) }),
14
+ columns: z.object({ total: z.number(), included: z.array(z.string()), hidden: z.array(z.string()), groups: z.number(), skipped: z.array(z.string()) }),
15
+ remove: z.array(z.object({ ...Position, colId: z.string(), prop: z.string(), movedTo: z.string() })),
16
+ candidates: z.array(z.object({ ...Position, colId: z.string(), prop: z.string(), owner: z.string(), note: z.string().optional(), source: z.string(), kind: z.enum(['function', 'value', 'unverifiable']) })),
17
+ check: z.object({
18
+ checked: z.object({ shape: z.string(), semantics: z.string(), columnRefs: z.string(), options: z.enum(['visible', 'not visible']), aql: z.string(), agGridTypes: z.boolean().optional() }),
19
+ rules: z.number(),
20
+ issues: z.number(),
21
+ requiresAnotherCheckAfterFix: z.boolean(),
22
+ }),
23
+ wrote: z.string().optional(),
24
+ });
25
+ registerCapability({
26
+ name: 'convert-coldefs',
27
+ description: 'Turns AG Grid columnDefs into an AdapTable Layout (order, hidden columns, sizing, pinning, sorts, row groups, aggregations, pivots), lists the ColDef properties to remove with file:line, and the cellStyle / valueFormatter / valueGetter / cellRenderer snippets to re-express as Format, Calculated, Styled or Action Columns. The Layout is run through check state first.',
28
+ cli: { command: ['convert', 'coldefs'], positionals: ['file'], stdinField: 'text' },
29
+ mcp: null,
30
+ input: z.object({
31
+ file: z.string().optional().describe('columnDefs input: a JSON / JSONC / JSON5 array, or a .ts/.tsx/.js/.jsx/.vue file holding the literal; `-` reads stdin'),
32
+ text: z.string().optional().describe('The input text itself (stdin); the CLI fills it for `-`'),
33
+ layoutName: z.string().default('Default').describe('Name of the Layout to emit'),
34
+ out: z.string().optional().describe('Write the Layout (JSON) to this file; never the input file'),
35
+ }),
36
+ output: ConvertOutput,
37
+ run: async (input, ctx) => {
38
+ if (!input.file && input.text === undefined) {
39
+ throw new CapabilityError('USAGE', 'Pass the columnDefs file (or `-` for stdin).', 'Example: `adaptable convert coldefs src/columnDefs.ts --layout-name "Trading"`.');
40
+ }
41
+ const resolution = await ctx.resolveContext();
42
+ const major = resolution.context.adaptableMajor;
43
+ if (major === undefined) {
44
+ throw new CapabilityError('USAGE', 'The AdapTable major to check the Layout against could not be determined.', 'Run inside a project that depends on @adaptabletools/adaptable, or pass --major <n>.');
45
+ }
46
+ const result = await convertColdefs({ file: input.file, text: input.text, layoutName: input.layoutName, out: input.out }, { major, projectDir: resolution.project?.path ?? ctx.cwd, offline: ctx.globals.offline });
47
+ return ok(result.data, {
48
+ issues: result.issues,
49
+ warnings: [...resolution.warnings, ...result.warnings],
50
+ resolvedContext: {
51
+ ...resolution.context,
52
+ ...(result.codeSource ? { codeSource: result.codeSource } : {}),
53
+ ...(result.engine ? { engine: result.engine } : {}),
54
+ },
55
+ });
56
+ },
57
+ markdown: (data, envelope) => {
58
+ const lines = [
59
+ `# convert coldefs → ${data.layoutType} Layout "${data.layout.Name}"`,
60
+ '',
61
+ `- Input: ${data.source.file}${data.source.line ? `:${data.source.line}:${data.source.column}` : ''} (${data.source.locatedBy}); ${data.columns.total} column${data.columns.total === 1 ? '' : 's'}${data.columns.groups ? ` in ${data.columns.groups} group${data.columns.groups === 1 ? '' : 's'}` : ''}${data.columns.hidden.length ? `, ${data.columns.hidden.length} hidden (${data.columns.hidden.join(', ')})` : ''}`,
62
+ `- check state --major: ${data.check.issues === 0 ? 'clean' : `${data.check.issues} issue${data.check.issues === 1 ? '' : 's'}`} (${data.check.rules} rules; shape ${data.check.checked.shape}; column refs ${data.check.checked.columnRefs})`,
63
+ ];
64
+ if (data.wrote) {
65
+ lines.push(`- Written to: ${data.wrote}`);
66
+ }
67
+ lines.push('', '## Layout', '', '```json', JSON.stringify(data.state, null, 2), '```');
68
+ if (data.remove.length) {
69
+ lines.push('', `## Remove from the ColDefs (${data.remove.length})`, '', '| Where | Column | Property | Now in |', '| --- | --- | --- | --- |');
70
+ for (const r of data.remove) {
71
+ lines.push(`| ${r.file}:${r.line}:${r.column} | \`${r.colId}\` | \`${r.prop}\` | ${r.movedTo} |`);
72
+ }
73
+ }
74
+ if (data.candidates.length) {
75
+ lines.push('', `## Re-express by hand (${data.candidates.length})`, '');
76
+ for (const c of data.candidates) {
77
+ lines.push(`- \`${c.colId}.${c.prop}\` (${c.file}:${c.line}:${c.column}) → ${c.owner}${c.note ? ` — ${c.note}` : ''}`, ` \`${c.source}\``);
78
+ }
79
+ }
80
+ if (envelope.issues.length) {
81
+ lines.push('', '_The Layout did not pass check state cleanly; see the findings above before pasting it._');
82
+ }
83
+ return lines.join('\n');
84
+ },
85
+ });
86
+ //# sourceMappingURL=capabilities.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capabilities.js","sourceRoot":"","sources":["../../../src/core/convert/capabilities.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,313 @@
1
+ /**
2
+ * `convert coldefs` (plan §8.7, Appendix E): reads `columnDefs` through the shared
3
+ * extractor and emits a Layout — the columns in declared order minus the hidden ones,
4
+ * sizing, pinning, sorts, row groups, aggregations, pivots — plus `remove[]` for the
5
+ * ColDef properties the Layout now owns (positioned) and `candidates[]` for the
6
+ * `cellStyle` / `cellClassRules` / `valueFormatter` / `valueGetter` / `cellRenderer`
7
+ * snippets to re-express by hand as Format, Calculated, Styled or Action Columns. The
8
+ * Layout is run through `check state` (with the columns) before it is returned.
9
+ *
10
+ * Which ColDef properties are owned, and by what, comes from `COLDEF_OWNERSHIP` — the
11
+ * Appendix E table `check setup` uses — not from a second list here. The Layout written
12
+ * is the 24 shape (`TableLayout` / `PivotLayout` with `ColumnSizing`, `ColumnPinning`,
13
+ * `TableAggregationColumns`); §8.7 names the pre-24 `ColumnWidthMap` / `PinnedColumnsMap` /
14
+ * `AggregationColumns`, which the library keeps only as `LayoutOld`.
15
+ */
16
+ import { existsSync, readFileSync, writeFileSync } from 'node:fs';
17
+ import { basename, resolve } from 'node:path';
18
+ import { CapabilityError } from '../envelope.js';
19
+ import { extractFromFile, extractFromSource } from '../extract/input.js';
20
+ import { COLDEF_OWNERSHIP } from '../setup/rules/coldef-ownership.js';
21
+ import { positionOf } from '../setup/rules/rule.js';
22
+ import { checkState } from '../state/check.js';
23
+ const isObj = (value) => typeof value === 'object' && value !== null && !Array.isArray(value);
24
+ /** Leaf columns in declared order, through column groups; `colId ?? field`, groups counted */
25
+ function flatten(defs) {
26
+ const leaves = [];
27
+ const skipped = [];
28
+ let groups = 0;
29
+ const visit = (def, path) => {
30
+ if (!isObj(def)) {
31
+ skipped.push(`${path}: not an object`);
32
+ return;
33
+ }
34
+ if (Array.isArray(def.children)) {
35
+ groups += 1;
36
+ def.children.forEach((child, i) => visit(child, `${path}.children[${i}]`));
37
+ return;
38
+ }
39
+ const colId = typeof def.colId === 'string' ? def.colId : typeof def.field === 'string' ? def.field : undefined;
40
+ if (!colId) {
41
+ skipped.push(`${path}: no colId or field`);
42
+ return;
43
+ }
44
+ leaves.push({ def, path, colId, order: leaves.length });
45
+ };
46
+ defs.forEach((def, i) => visit(def, `[${i}]`));
47
+ return { leaves, groups, skipped };
48
+ }
49
+ function readInput(input) {
50
+ const options = { target: 'columnDefs' };
51
+ const result = input.text !== undefined ? extractFromSource(input.text, { ...options, file: input.file && input.file !== '-' ? input.file : '<stdin>' }) : extractFromFile(input.file ?? '', options);
52
+ if (result.value === undefined) {
53
+ throw new CapabilityError('EXTRACTION_FAILED', `No columnDefs found in ${basename(input.file ?? '<stdin>')}: tried ${result.tried.join(', ')}.`, 'Pass a JSON array of ColDefs, or a .ts/.tsx/.js/.jsx/.vue file that declares `columnDefs` (annotated `ColDef[]`, named `columnDefs`, or the `columnDefs` property of the Grid Options).');
54
+ }
55
+ return { extraction: result, result };
56
+ }
57
+ /** The source from the value's column to the end of its line, without a trailing `},` / `,` */
58
+ function sourceSnippet(file, line, column) {
59
+ try {
60
+ const text = readFileSync(file, 'utf8').split(/\r?\n/)[line - 1] ?? '';
61
+ const trimmed = text
62
+ .slice(Math.max(0, column - 1))
63
+ .trim()
64
+ .replace(/\s*\}?\s*,?\s*$/, '');
65
+ return trimmed.length > 200 ? `${trimmed.slice(0, 197)}…` : trimmed;
66
+ }
67
+ catch {
68
+ return '';
69
+ }
70
+ }
71
+ /** Appendix E guidance for a JavaScript `aggFunc`, which the Layout cannot carry */
72
+ const AGG_FUNC_CANDIDATE = {
73
+ owner: 'TableAggregationColumns with a named aggregation (sum, min, max, avg, count, first, last) or a CalculatedColumn with an AdapTableQL aggregation',
74
+ note: 'a JavaScript aggFunc does not serialise into State',
75
+ };
76
+ function shortJson(value) {
77
+ const text = JSON.stringify(value);
78
+ return text.length > 200 ? `${text.slice(0, 197)}…` : text;
79
+ }
80
+ /** Sorted by an explicit index (undefined last), then by declared order */
81
+ function byIndex(items) {
82
+ return [...items].sort((a, b) => {
83
+ if (a.index === undefined && b.index === undefined) {
84
+ return a.order - b.order;
85
+ }
86
+ if (a.index === undefined) {
87
+ return 1;
88
+ }
89
+ if (b.index === undefined) {
90
+ return -1;
91
+ }
92
+ return a.index - b.index || a.order - b.order;
93
+ });
94
+ }
95
+ const asIndex = (value) => (typeof value === 'number' && Number.isFinite(value) ? value : undefined);
96
+ export async function convertColdefs(input, deps) {
97
+ const { extraction } = readInput(input);
98
+ if (!Array.isArray(extraction.value)) {
99
+ throw new CapabilityError('EXTRACTION_FAILED', `The columnDefs in ${basename(extraction.source.file)} is not an array.`, 'columnDefs is an array of ColDef / ColGroupDef objects.');
100
+ }
101
+ const defs = extraction.value;
102
+ const { leaves, groups, skipped } = flatten(defs);
103
+ const unverifiableAt = new Map(extraction.unverifiable.map((u) => [u.path, u]));
104
+ const warnings = [];
105
+ for (const entry of skipped) {
106
+ warnings.push(`Column ${entry}; left out of the Layout.`);
107
+ }
108
+ const remove = [];
109
+ const candidates = [];
110
+ const position = (path, at) => positionOf(extraction, path, at) ?? { file: extraction.source.file, line: extraction.source.line, column: extraction.source.column };
111
+ const included = [];
112
+ const hidden = [];
113
+ const sizing = {};
114
+ const pinning = {};
115
+ const sorts = [];
116
+ const rowGroups = [];
117
+ const pivots = [];
118
+ const aggregations = [];
119
+ const moved = (leaf, prop, movedTo) => {
120
+ const at = position(`${leaf.path}.${prop}`, 'key');
121
+ remove.push({ file: at.file, line: at.line, column: at.column, colId: leaf.colId, prop, movedTo });
122
+ };
123
+ const candidate = (leaf, prop) => {
124
+ const ownership = prop === 'aggFunc' ? AGG_FUNC_CANDIDATE : COLDEF_OWNERSHIP[prop];
125
+ const path = `${leaf.path}.${prop}`;
126
+ const stub = unverifiableAt.get(path);
127
+ const at = position(path, 'value');
128
+ const value = leaf.def[prop];
129
+ candidates.push({
130
+ colId: leaf.colId,
131
+ prop,
132
+ owner: ownership.owner,
133
+ ...(ownership.note ? { note: ownership.note } : {}),
134
+ source: stub ? sourceSnippet(at.file, at.line, at.column) || `(${stub.kind})` : shortJson(value ?? null),
135
+ kind: stub ? (stub.kind === 'function' ? 'function' : 'unverifiable') : 'value',
136
+ file: at.file,
137
+ line: at.line,
138
+ column: at.column,
139
+ });
140
+ };
141
+ for (const leaf of leaves) {
142
+ const { def, colId, order } = leaf;
143
+ const stubbed = (prop) => unverifiableAt.has(`${leaf.path}.${prop}`);
144
+ // visibility and order
145
+ if (def.hide === true) {
146
+ hidden.push(colId);
147
+ moved(leaf, 'hide', 'TableColumns (left out)');
148
+ }
149
+ else {
150
+ included.push(colId);
151
+ if (def.hide !== undefined && !stubbed('hide')) {
152
+ moved(leaf, 'hide', 'TableColumns (included)');
153
+ }
154
+ }
155
+ // sizing
156
+ if (typeof def.width === 'number') {
157
+ sizing[colId] = { Width: def.width };
158
+ moved(leaf, 'width', `ColumnSizing.${colId}.Width`);
159
+ }
160
+ else if (typeof def.flex === 'number') {
161
+ sizing[colId] = { Flex: def.flex };
162
+ moved(leaf, 'flex', `ColumnSizing.${colId}.Flex`);
163
+ }
164
+ if (typeof def.width === 'number' && typeof def.flex === 'number') {
165
+ warnings.push(`Column "${colId}" sets both width and flex; the Layout keeps Width (a column is fixed-width or flex, not both).`);
166
+ moved(leaf, 'flex', `ColumnSizing.${colId} (dropped: Width wins)`);
167
+ }
168
+ // pinning
169
+ if (def.pinned === 'left' || def.pinned === 'right' || def.pinned === true) {
170
+ pinning[colId] = def.pinned === true ? 'left' : def.pinned;
171
+ moved(leaf, 'pinned', `ColumnPinning.${colId}`);
172
+ }
173
+ else if (def.pinned !== undefined && !stubbed('pinned')) {
174
+ moved(leaf, 'pinned', 'ColumnPinning (not pinned)');
175
+ }
176
+ // sorting
177
+ if (def.sort === 'asc' || def.sort === 'desc') {
178
+ sorts.push({ ColumnId: colId, SortOrder: def.sort === 'asc' ? 'Asc' : 'Desc', index: asIndex(def.sortIndex), order });
179
+ moved(leaf, 'sort', 'ColumnSorts');
180
+ if (def.sortIndex !== undefined) {
181
+ moved(leaf, 'sortIndex', 'ColumnSorts (order)');
182
+ }
183
+ }
184
+ else {
185
+ if (def.sort !== undefined && !stubbed('sort')) {
186
+ moved(leaf, 'sort', 'ColumnSorts (no sort)');
187
+ }
188
+ if (def.sortIndex !== undefined) {
189
+ moved(leaf, 'sortIndex', 'ColumnSorts (no sort)');
190
+ }
191
+ }
192
+ // row grouping
193
+ if (def.rowGroup === true || asIndex(def.rowGroupIndex) !== undefined) {
194
+ rowGroups.push({ ColumnId: colId, index: asIndex(def.rowGroupIndex), order });
195
+ }
196
+ if (def.rowGroup !== undefined && !stubbed('rowGroup')) {
197
+ moved(leaf, 'rowGroup', def.rowGroup === true || asIndex(def.rowGroupIndex) !== undefined ? 'RowGroupedColumns' : 'RowGroupedColumns (not grouped)');
198
+ }
199
+ if (def.rowGroupIndex !== undefined) {
200
+ moved(leaf, 'rowGroupIndex', 'RowGroupedColumns (order)');
201
+ }
202
+ // pivoting
203
+ if (def.pivot === true || asIndex(def.pivotIndex) !== undefined) {
204
+ pivots.push({ ColumnId: colId, index: asIndex(def.pivotIndex), order });
205
+ }
206
+ if (def.pivot !== undefined && !stubbed('pivot')) {
207
+ moved(leaf, 'pivot', def.pivot === true || asIndex(def.pivotIndex) !== undefined ? 'PivotColumns' : 'PivotColumns (not pivoted)');
208
+ }
209
+ if (def.pivotIndex !== undefined) {
210
+ moved(leaf, 'pivotIndex', 'PivotColumns (order)');
211
+ }
212
+ // aggregation: a named function converts, a JavaScript one is a candidate
213
+ if (typeof def.aggFunc === 'string' && def.aggFunc !== '') {
214
+ aggregations.push({ ColumnId: colId, AggFunc: def.aggFunc, order });
215
+ moved(leaf, 'aggFunc', 'TableAggregationColumns / PivotAggregationColumns');
216
+ }
217
+ else if (def.aggFunc === true) {
218
+ aggregations.push({ ColumnId: colId, AggFunc: true, order });
219
+ moved(leaf, 'aggFunc', 'TableAggregationColumns / PivotAggregationColumns');
220
+ }
221
+ else if (stubbed('aggFunc')) {
222
+ candidate(leaf, 'aggFunc');
223
+ }
224
+ else if (def.aggFunc !== undefined && def.aggFunc !== null && def.aggFunc !== false) {
225
+ warnings.push(`Column "${colId}": aggFunc ${shortJson(def.aggFunc)} is not a named aggregation; left in the ColDef.`);
226
+ }
227
+ // the Format / Calculated / Styled / Action Column candidates (the info rows of Appendix E)
228
+ for (const [prop, ownership] of Object.entries(COLDEF_OWNERSHIP)) {
229
+ if (ownership.severity === 'info' && (def[prop] !== undefined || stubbed(prop))) {
230
+ candidate(leaf, prop);
231
+ }
232
+ }
233
+ }
234
+ const base = { Name: input.layoutName };
235
+ const layoutType = pivots.length > 0 ? 'Pivot' : 'Table';
236
+ const sortList = byIndex(sorts).map(({ ColumnId, SortOrder }) => ({ ColumnId, SortOrder }));
237
+ const groupList = byIndex(rowGroups).map((g) => g.ColumnId);
238
+ const aggList = aggregations.map(({ ColumnId, AggFunc }) => ({ ColumnId, AggFunc }));
239
+ let layout;
240
+ if (layoutType === 'Pivot') {
241
+ layout = {
242
+ ...base,
243
+ PivotColumns: byIndex(pivots).map((p) => p.ColumnId),
244
+ ...(groupList.length ? { PivotGroupedColumns: groupList } : {}),
245
+ ...(aggList.length ? { PivotAggregationColumns: aggList } : {}),
246
+ };
247
+ warnings.push('Columns with `pivot` produce a Pivot Layout: it has no TableColumns, so the column order and the hidden columns apply only to a Table Layout you add beside it.');
248
+ }
249
+ else {
250
+ layout = {
251
+ ...base,
252
+ TableColumns: included,
253
+ ...(groupList.length ? { RowGroupedColumns: groupList } : {}),
254
+ ...(aggList.length ? { TableAggregationColumns: aggList } : {}),
255
+ };
256
+ }
257
+ if (sortList.length) {
258
+ layout.ColumnSorts = sortList;
259
+ }
260
+ if (Object.keys(pinning).length) {
261
+ layout.ColumnPinning = pinning;
262
+ }
263
+ if (Object.keys(sizing).length) {
264
+ layout.ColumnSizing = sizing;
265
+ }
266
+ // remove entries whose owner is the Table-only part when the Layout is a Pivot one
267
+ if (layoutType === 'Pivot') {
268
+ for (const entry of remove) {
269
+ if (entry.movedTo.startsWith('TableColumns')) {
270
+ entry.movedTo = `${entry.movedTo}; no TableColumns in a Pivot Layout`;
271
+ }
272
+ }
273
+ }
274
+ const state = { Layout: { CurrentLayout: input.layoutName, Layouts: [layout] } };
275
+ // the Layout through check state, with the columns, before it is returned (plan §8.7)
276
+ const check = await checkState({ state, columnsValue: defs, kind: 'initial' }, deps);
277
+ const issues = check.issues.map((issue) => ({ ...issue, file: issue.file ?? extraction.source.file }));
278
+ warnings.push(...check.warnings);
279
+ let wrote;
280
+ if (input.out) {
281
+ const target = resolve(input.out);
282
+ if (input.file && input.file !== '-' && resolve(input.file) === target) {
283
+ throw new CapabilityError('USAGE', '--out must not be the input file.', 'Write the Layout to a new file and paste it into initialState.Layout.');
284
+ }
285
+ if (existsSync(target) && extraction.source.file === target) {
286
+ throw new CapabilityError('USAGE', '--out must not be the file the columnDefs were read from.', 'Write the Layout to a new file.');
287
+ }
288
+ writeFileSync(target, `${JSON.stringify(layout, null, 2)}\n`);
289
+ wrote = target;
290
+ }
291
+ return {
292
+ data: {
293
+ source: {
294
+ file: extraction.source.file,
295
+ locatedBy: extraction.source.locatedBy,
296
+ ...(extraction.source.line ? { line: extraction.source.line, column: extraction.source.column } : {}),
297
+ },
298
+ layoutType,
299
+ layout,
300
+ state,
301
+ columns: { total: leaves.length, included, hidden, groups, skipped },
302
+ remove,
303
+ candidates,
304
+ check: { checked: check.data.checked, rules: check.data.rules.length, issues: check.issues.length, requiresAnotherCheckAfterFix: check.data.requiresAnotherCheckAfterFix },
305
+ ...(wrote ? { wrote } : {}),
306
+ },
307
+ issues,
308
+ warnings,
309
+ ...(check.codeSource ? { codeSource: check.codeSource } : {}),
310
+ ...(check.engine ? { engine: check.engine } : {}),
311
+ };
312
+ }
313
+ //# sourceMappingURL=coldefs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coldefs.js","sourceRoot":"","sources":["../../../src/core/convert/coldefs.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ /** `--area` of `docs list|search` (plan §8.3) → the `pages.json` categories it covers */
2
+ export const AREAS = ['handbook', 'dev-guide', 'reference', 'tutorial', 'support', 'all'];
3
+ const AREA_CATEGORIES = {
4
+ handbook: ['handbook', 'ui', 'adaptable-ql', 'framework', 'integrations', 'adaptable-server'],
5
+ 'dev-guide': ['dev-guide'],
6
+ reference: ['api', 'technical-reference'],
7
+ tutorial: ['getting-started', 'demos', 'documentation'],
8
+ support: ['support', 'release-notes'],
9
+ };
10
+ /** Categories for an area; undefined for `all` */
11
+ export function categoriesFor(area) {
12
+ return area && area !== 'all' ? AREA_CATEGORIES[area] : undefined;
13
+ }
14
+ export function areaOf(category) {
15
+ for (const [area, categories] of Object.entries(AREA_CATEGORIES)) {
16
+ if (categories.includes(category)) {
17
+ return area;
18
+ }
19
+ }
20
+ return 'handbook';
21
+ }
22
+ //# sourceMappingURL=areas.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"areas.js","sourceRoot":"","sources":["../../../src/core/docs/areas.ts"],"names":[],"mappings":"AAAA,yFAAyF;AACzF,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,CAAU,CAAC;AAGnG,MAAM,eAAe,GAA2C;IAC9D,QAAQ,EAAE,CAAC,UAAU,EAAE,IAAI,EAAE,cAAc,EAAE,WAAW,EAAE,cAAc,EAAE,kBAAkB,CAAC;IAC7F,WAAW,EAAE,CAAC,WAAW,CAAC;IAC1B,SAAS,EAAE,CAAC,KAAK,EAAE,qBAAqB,CAAC;IACzC,QAAQ,EAAE,CAAC,iBAAiB,EAAE,OAAO,EAAE,eAAe,CAAC;IACvD,OAAO,EAAE,CAAC,SAAS,EAAE,eAAe,CAAC;CACtC,CAAC;AAEF,kDAAkD;AAClD,MAAM,UAAU,aAAa,CAAC,IAAsB;IAClD,OAAO,IAAI,IAAI,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACpE,CAAC;AAED,MAAM,UAAU,MAAM,CAAC,QAAgB;IACrC,KAAK,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,eAAe,CAAuC,EAAE,CAAC;QACvG,IAAI,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YAClC,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC"}
@@ -0,0 +1,133 @@
1
+ /**
2
+ * The docs corpus cache (plan §8.3 "Freshness"): `pages.json` and `llms-full.txt`
3
+ * live under `docs/<host>/<files hash>/`, where the hash is taken from the
4
+ * manifest's `files` block, so a deploy that changes the docs changes the folder
5
+ * and nothing else triggers a download. Offline, the newest cached corpus for the
6
+ * host is used with a warning.
7
+ */
8
+ import { createHash } from 'node:crypto';
9
+ import { existsSync, mkdirSync, readdirSync, readFileSync, statSync, writeFileSync } from 'node:fs';
10
+ import { join } from 'node:path';
11
+ import { hostCacheDir } from '../compat/manifest.js';
12
+ import { splitPages, splitSections } from './corpus.js';
13
+ import { docsNotAvailable, resolveDocsSource } from './hosts.js';
14
+ import { SectionIndex } from './search.js';
15
+ const CORPUS_FILES = { full: 'llms-full.txt', pages: 'pages.json' };
16
+ const FETCH_TIMEOUT_MS = 60_000;
17
+ /** Short hash of the manifest's file hashes: the corpus folder name */
18
+ export function corpusKey(manifest) {
19
+ const hashes = Object.keys(manifest.files)
20
+ .sort()
21
+ .map((name) => `${name}:${manifest.files[name].sha256}`)
22
+ .join('\n');
23
+ return createHash('sha256').update(hashes).digest('hex').slice(0, 16);
24
+ }
25
+ export function corpusDir(host, manifest) {
26
+ return join(hostCacheDir(host), corpusKey(manifest));
27
+ }
28
+ const isComplete = (dir) => Object.values(CORPUS_FILES).every((file) => existsSync(join(dir, file)));
29
+ /** The newest complete corpus folder cached for a host, by modification time */
30
+ function newestCachedCorpus(host) {
31
+ const root = hostCacheDir(host);
32
+ let entries;
33
+ try {
34
+ entries = readdirSync(root);
35
+ }
36
+ catch {
37
+ return undefined;
38
+ }
39
+ return entries
40
+ .map((name) => join(root, name))
41
+ .filter((dir) => statSync(dir).isDirectory() && isComplete(dir))
42
+ .sort((a, b) => statSync(b).mtimeMs - statSync(a).mtimeMs)[0];
43
+ }
44
+ async function download(host, path) {
45
+ const url = `${host}${path}`;
46
+ const response = await fetch(url, { signal: AbortSignal.timeout(FETCH_TIMEOUT_MS) });
47
+ if (!response.ok) {
48
+ throw new Error(`${url} returned ${response.status}`);
49
+ }
50
+ return response.text();
51
+ }
52
+ function buildCorpus(source, origin, dir) {
53
+ const pagesJson = readFileSync(join(dir, CORPUS_FILES.pages), 'utf8');
54
+ const llmsFull = readFileSync(join(dir, CORPUS_FILES.full), 'utf8');
55
+ const pageMeta = new Map(JSON.parse(pagesJson).map((meta) => [meta.routePath, meta]));
56
+ const pages = new Map();
57
+ const sections = [];
58
+ for (const page of splitPages(llmsFull, pageMeta)) {
59
+ pages.set(page.routePath, page);
60
+ sections.push(...splitSections(page, sections.length));
61
+ }
62
+ return {
63
+ manifest: source.manifest,
64
+ host: source.host,
65
+ origin,
66
+ pages,
67
+ pageMeta,
68
+ sections,
69
+ index: new SectionIndex(sections),
70
+ };
71
+ }
72
+ async function loadUncached(source, options) {
73
+ const warnings = [...source.warnings];
74
+ const { host, manifest } = source;
75
+ const files = manifest.files ?? {};
76
+ if (!files.pages?.path || !files.llmsFullTxt?.path) {
77
+ throw docsNotAvailable(host, 'The docs manifest lists no pages.json / llms-full.txt');
78
+ }
79
+ const dir = corpusDir(host, manifest);
80
+ if (isComplete(dir)) {
81
+ return { corpus: buildCorpus(source, 'cache', dir), warnings };
82
+ }
83
+ if (options.offline) {
84
+ const fallback = newestCachedCorpus(host);
85
+ if (!fallback) {
86
+ throw docsNotAvailable(host, '--offline and no docs corpus is cached');
87
+ }
88
+ warnings.push(`--offline: using the most recent docs corpus cached for ${host}, which predates the current manifest.`);
89
+ return { corpus: buildCorpus(source, 'cache', fallback), warnings };
90
+ }
91
+ try {
92
+ const [pagesJson, llmsFull] = await Promise.all([download(host, files.pages.path), download(host, files.llmsFullTxt.path)]);
93
+ mkdirSync(dir, { recursive: true });
94
+ writeFileSync(join(dir, CORPUS_FILES.pages), pagesJson);
95
+ writeFileSync(join(dir, CORPUS_FILES.full), llmsFull);
96
+ writeFileSync(join(dir, 'manifest.json'), JSON.stringify(manifest, null, 2));
97
+ }
98
+ catch (error) {
99
+ const fallback = newestCachedCorpus(host);
100
+ const reason = error instanceof Error ? error.message : String(error);
101
+ if (!fallback) {
102
+ throw docsNotAvailable(host, `Could not download the docs corpus: ${reason}`);
103
+ }
104
+ warnings.push(`Could not download the docs corpus (${reason}); using the most recent one cached for ${host}.`);
105
+ return { corpus: buildCorpus(source, 'cache', fallback), warnings };
106
+ }
107
+ return { corpus: buildCorpus(source, 'host', dir), warnings };
108
+ }
109
+ const corpora = new Map();
110
+ /**
111
+ * The corpus for a major (or the current host): host resolution, manifest
112
+ * re-validation, cache lookup or download. Memoised per host + manifest hash
113
+ * within the process; the manifest re-validation is governed by `maxAgeMs`.
114
+ */
115
+ export async function loadCorpus(options = {}) {
116
+ const source = await resolveDocsSource(options);
117
+ const key = `${source.host}/${corpusKey(source.manifest)}`;
118
+ let loaded = corpora.get(key);
119
+ if (!loaded) {
120
+ loaded = loadUncached(source, options);
121
+ loaded.catch(() => corpora.delete(key));
122
+ corpora.set(key, loaded);
123
+ }
124
+ const result = await loaded;
125
+ // the memoised load carries its own warnings; the fresh source resolution may add new ones
126
+ const warnings = [...new Set([...result.warnings, ...source.warnings])];
127
+ return { corpus: result.corpus, warnings };
128
+ }
129
+ /** Test hook: forget memoised corpora */
130
+ export function resetCorpusCache() {
131
+ corpora.clear();
132
+ }
133
+ //# sourceMappingURL=cache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache.js","sourceRoot":"","sources":["../../../src/core/docs/cache.ts"],"names":[],"mappings":"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"}