@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.
- package/README.md +58 -61
- package/data/changes/21-22.json +542 -0
- package/data/changes/22-23.json +639 -0
- package/data/changes/23-24.json +1874 -0
- package/data/manifest.snapshot.json +202 -0
- package/data/templates/angular/src/app/adaptableOptions.ts +40 -0
- package/data/templates/angular/src/app/agGridModules.ts +7 -0
- package/data/templates/angular/src/app/app.component.ts +66 -0
- package/data/templates/angular/src/app/app.module.ts +14 -0
- package/data/templates/angular/src/app/columnDefs.ts +121 -0
- package/data/templates/angular/src/app/gridOptions.ts +32 -0
- package/data/templates/angular/src/app/onAdaptableReady.ts +11 -0
- package/data/templates/angular/src/app/rowData.ts +851 -0
- package/data/templates/angular/src/app/styles.css +50 -0
- package/data/templates/angular/src/index.html +17 -0
- package/data/templates/angular/src/main.ts +18 -0
- package/data/templates/angular/src/polyfills.ts +1 -0
- package/data/templates/angular/tsconfig.json +16 -0
- package/data/templates/manifest.json +406 -0
- package/data/templates/react/src/App.tsx +71 -0
- package/data/templates/react/src/adaptableOptions.ts +40 -0
- package/data/templates/react/src/agGridModules.ts +7 -0
- package/data/templates/react/src/columnDefs.ts +121 -0
- package/data/templates/react/src/gridOptions.ts +32 -0
- package/data/templates/react/src/index.tsx +8 -0
- package/data/templates/react/src/onAdaptableReady.ts +11 -0
- package/data/templates/react/src/rowData.ts +851 -0
- package/data/templates/react/src/styles.css +50 -0
- package/data/templates/react/tsconfig.json +9 -0
- package/data/templates/vanilla/index.html +18 -0
- package/data/templates/vanilla/src/adaptableOptions.ts +40 -0
- package/data/templates/vanilla/src/agGridModules.ts +7 -0
- package/data/templates/vanilla/src/columnDefs.ts +121 -0
- package/data/templates/vanilla/src/gridOptions.ts +32 -0
- package/data/templates/vanilla/src/index.ts +41 -0
- package/data/templates/vanilla/src/onAdaptableReady.ts +11 -0
- package/data/templates/vanilla/src/rowData.ts +851 -0
- package/data/templates/vanilla/src/styles.css +50 -0
- package/data/templates/vanilla/tsconfig.json +14 -0
- package/data/templates/vue/.babelrc +3 -0
- package/data/templates/vue/public/index.html +19 -0
- package/data/templates/vue/src/App.vue +35 -0
- package/data/templates/vue/src/adaptableOptions.ts +40 -0
- package/data/templates/vue/src/agGridModules.ts +7 -0
- package/data/templates/vue/src/columnDefs.ts +121 -0
- package/data/templates/vue/src/gridOptions.ts +32 -0
- package/data/templates/vue/src/main.ts +6 -0
- package/data/templates/vue/src/onAdaptableReady.ts +11 -0
- package/data/templates/vue/src/rowData.ts +851 -0
- package/data/templates/vue/src/shims-vue.d.ts +6 -0
- package/data/templates/vue/src/styles.css +50 -0
- package/data/templates/vue/tsconfig.json +30 -0
- package/dist/bin.js +23 -0
- package/dist/bin.js.map +1 -0
- package/dist/cli/build-commands.js +200 -0
- package/dist/cli/build-commands.js.map +1 -0
- package/dist/cli/index.js +94 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/render.js +57 -0
- package/dist/cli/render.js.map +1 -0
- package/dist/core/anonymise/anonymise.js +315 -0
- package/dist/core/anonymise/anonymise.js.map +1 -0
- package/dist/core/anonymise/capabilities.js +94 -0
- package/dist/core/anonymise/capabilities.js.map +1 -0
- package/dist/core/aql/capabilities.js +339 -0
- package/dist/core/aql/capabilities.js.map +1 -0
- package/dist/core/aql/check.js +204 -0
- package/dist/core/aql/check.js.map +1 -0
- package/dist/core/aql/engine.js +92 -0
- package/dist/core/aql/engine.js.map +1 -0
- package/dist/core/aql/functions.js +108 -0
- package/dist/core/aql/functions.js.map +1 -0
- package/dist/core/aql/migrate.js +62 -0
- package/dist/core/aql/migrate.js.map +1 -0
- package/dist/core/capabilities.js +105 -0
- package/dist/core/capabilities.js.map +1 -0
- package/dist/core/changes/capabilities.js +92 -0
- package/dist/core/changes/capabilities.js.map +1 -0
- package/dist/core/changes/changes.js +101 -0
- package/dist/core/changes/changes.js.map +1 -0
- package/dist/core/changes/grep.js +183 -0
- package/dist/core/changes/grep.js.map +1 -0
- package/dist/core/changes/records.js +172 -0
- package/dist/core/changes/records.js.map +1 -0
- package/dist/core/changes/render-md.js +101 -0
- package/dist/core/changes/render-md.js.map +1 -0
- package/dist/core/changes/with-docs.js +86 -0
- package/dist/core/changes/with-docs.js.map +1 -0
- package/dist/core/compat/capabilities.js +127 -0
- package/dist/core/compat/capabilities.js.map +1 -0
- package/dist/core/compat/manifest.js +203 -0
- package/dist/core/compat/manifest.js.map +1 -0
- package/dist/core/constants.js +38 -0
- package/dist/core/constants.js.map +1 -0
- package/dist/core/context/capabilities.js +106 -0
- package/dist/core/context/capabilities.js.map +1 -0
- package/dist/core/context/detect.js +370 -0
- package/dist/core/context/detect.js.map +1 -0
- package/dist/core/context/projects.js +159 -0
- package/dist/core/context/projects.js.map +1 -0
- package/dist/core/context/resolve.js +85 -0
- package/dist/core/context/resolve.js.map +1 -0
- package/dist/core/convert/capabilities.js +86 -0
- package/dist/core/convert/capabilities.js.map +1 -0
- package/dist/core/convert/coldefs.js +313 -0
- package/dist/core/convert/coldefs.js.map +1 -0
- package/dist/core/docs/areas.js +22 -0
- package/dist/core/docs/areas.js.map +1 -0
- package/dist/core/docs/cache.js +133 -0
- package/dist/core/docs/cache.js.map +1 -0
- package/dist/core/docs/capabilities.js +377 -0
- package/dist/core/docs/capabilities.js.map +1 -0
- package/dist/core/docs/corpus.js.map +1 -0
- package/dist/core/docs/demos.js +105 -0
- package/dist/core/docs/demos.js.map +1 -0
- package/dist/core/docs/get-page.js +182 -0
- package/dist/core/docs/get-page.js.map +1 -0
- package/dist/core/docs/hosts.js +74 -0
- package/dist/core/docs/hosts.js.map +1 -0
- package/dist/core/docs/search.js.map +1 -0
- package/dist/core/envelope.js +79 -0
- package/dist/core/envelope.js.map +1 -0
- package/dist/core/extract/imports.js +163 -0
- package/dist/core/extract/imports.js.map +1 -0
- package/dist/core/extract/input.js +140 -0
- package/dist/core/extract/input.js.map +1 -0
- package/dist/core/extract/line-map.js +90 -0
- package/dist/core/extract/line-map.js.map +1 -0
- package/dist/core/extract/ts-literal.js +963 -0
- package/dist/core/extract/ts-literal.js.map +1 -0
- package/dist/core/index.js +13 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/migrate/capabilities.js +143 -0
- package/dist/core/migrate/capabilities.js.map +1 -0
- package/dist/core/migrate/leftovers.js +119 -0
- package/dist/core/migrate/leftovers.js.map +1 -0
- package/dist/core/migrate/state.js +295 -0
- package/dist/core/migrate/state.js.map +1 -0
- package/dist/core/packages/cache.js +139 -0
- package/dist/core/packages/cache.js.map +1 -0
- package/dist/core/packages/capabilities.js +95 -0
- package/dist/core/packages/capabilities.js.map +1 -0
- package/dist/{adaptable/types.js → core/packages/entry-types.js} +1 -1
- package/dist/core/packages/entry-types.js.map +1 -0
- package/dist/core/packages/exec.js +37 -0
- package/dist/core/packages/exec.js.map +1 -0
- package/dist/core/packages/load-entry.js +123 -0
- package/dist/core/packages/load-entry.js.map +1 -0
- package/dist/core/packages/prepare.js +122 -0
- package/dist/core/packages/prepare.js.map +1 -0
- package/dist/core/packages/registry.js +75 -0
- package/dist/core/packages/registry.js.map +1 -0
- package/dist/core/packages/resolve.js +94 -0
- package/dist/core/packages/resolve.js.map +1 -0
- package/dist/core/packages/versions.js +71 -0
- package/dist/core/packages/versions.js.map +1 -0
- package/dist/core/ping.js +22 -0
- package/dist/core/ping.js.map +1 -0
- package/dist/core/register.js +18 -0
- package/dist/core/register.js.map +1 -0
- package/dist/core/scaffold/capabilities.js +434 -0
- package/dist/core/scaffold/capabilities.js.map +1 -0
- package/dist/core/scaffold/generate.js +409 -0
- package/dist/core/scaffold/generate.js.map +1 -0
- package/dist/core/scaffold/infer.js +441 -0
- package/dist/core/scaffold/infer.js.map +1 -0
- package/dist/core/scaffold/overlay.js +290 -0
- package/dist/core/scaffold/overlay.js.map +1 -0
- package/dist/core/scaffold/readers/csv.js +146 -0
- package/dist/core/scaffold/readers/csv.js.map +1 -0
- package/dist/core/scaffold/readers/dataset.js +53 -0
- package/dist/core/scaffold/readers/dataset.js.map +1 -0
- package/dist/core/scaffold/readers/index.js +62 -0
- package/dist/core/scaffold/readers/index.js.map +1 -0
- package/dist/core/scaffold/readers/json.js +101 -0
- package/dist/core/scaffold/readers/json.js.map +1 -0
- package/dist/core/scaffold/readers/xlsx.js +81 -0
- package/dist/core/scaffold/readers/xlsx.js.map +1 -0
- package/dist/core/scaffold/suggestions.js +57 -0
- package/dist/core/scaffold/suggestions.js.map +1 -0
- package/dist/core/scaffold/templates.js +59 -0
- package/dist/core/scaffold/templates.js.map +1 -0
- package/dist/core/setup/audit.js +91 -0
- package/dist/core/setup/audit.js.map +1 -0
- package/dist/core/setup/capabilities.js +80 -0
- package/dist/core/setup/capabilities.js.map +1 -0
- package/dist/core/setup/context.js +118 -0
- package/dist/core/setup/context.js.map +1 -0
- package/dist/core/setup/rules/cell-data-type.js +40 -0
- package/dist/core/setup/rules/cell-data-type.js.map +1 -0
- package/dist/core/setup/rules/coldef-ownership.js +67 -0
- package/dist/core/setup/rules/coldef-ownership.js.map +1 -0
- package/dist/core/setup/rules/css-import.js +34 -0
- package/dist/core/setup/rules/css-import.js.map +1 -0
- package/dist/core/setup/rules/direct-grid.js +42 -0
- package/dist/core/setup/rules/direct-grid.js.map +1 -0
- package/dist/core/setup/rules/index.js +53 -0
- package/dist/core/setup/rules/index.js.map +1 -0
- package/dist/core/setup/rules/licence-literal.js +23 -0
- package/dist/core/setup/rules/licence-literal.js.map +1 -0
- package/dist/core/setup/rules/modules.js +86 -0
- package/dist/core/setup/rules/modules.js.map +1 -0
- package/dist/core/setup/rules/react-stable-refs.js +20 -0
- package/dist/core/setup/rules/react-stable-refs.js.map +1 -0
- package/dist/core/setup/rules/ready-hook.js +33 -0
- package/dist/core/setup/rules/ready-hook.js.map +1 -0
- package/dist/core/setup/rules/required-options.js +43 -0
- package/dist/core/setup/rules/required-options.js.map +1 -0
- package/dist/core/setup/rules/rule.js +10 -0
- package/dist/core/setup/rules/rule.js.map +1 -0
- package/dist/core/setup/rules/version-skew.js +65 -0
- package/dist/core/setup/rules/version-skew.js.map +1 -0
- package/dist/core/state/capabilities.js +78 -0
- package/dist/core/state/capabilities.js.map +1 -0
- package/dist/core/state/check.js +216 -0
- package/dist/core/state/check.js.map +1 -0
- package/dist/core/state/columns.js +130 -0
- package/dist/core/state/columns.js.map +1 -0
- package/dist/core/state/did-you-mean.js +83 -0
- package/dist/core/state/did-you-mean.js.map +1 -0
- package/dist/core/state/expressions.js +170 -0
- package/dist/core/state/expressions.js.map +1 -0
- package/dist/core/state/known-names.js +96 -0
- package/dist/core/state/known-names.js.map +1 -0
- package/dist/core/state/rules/aql-legacy-shape.js +42 -0
- package/dist/core/state/rules/aql-legacy-shape.js.map +1 -0
- package/dist/core/state/rules/aql-missing.js +21 -0
- package/dist/core/state/rules/aql-missing.js.map +1 -0
- package/dist/core/state/rules/aql-syntax.js +77 -0
- package/dist/core/state/rules/aql-syntax.js.map +1 -0
- package/dist/core/state/rules/calculated-settings.js +23 -0
- package/dist/core/state/rules/calculated-settings.js.map +1 -0
- package/dist/core/state/rules/column-id-exists.js +29 -0
- package/dist/core/state/rules/column-id-exists.js.map +1 -0
- package/dist/core/state/rules/dashboard-module-names.js +31 -0
- package/dist/core/state/rules/dashboard-module-names.js.map +1 -0
- package/dist/core/state/rules/dashboard-toolbar-names.js +48 -0
- package/dist/core/state/rules/dashboard-toolbar-names.js.map +1 -0
- package/dist/core/state/rules/format-column-pivot-display-format.js +43 -0
- package/dist/core/state/rules/format-column-pivot-display-format.js.map +1 -0
- package/dist/core/state/rules/helpers.js +39 -0
- package/dist/core/state/rules/helpers.js.map +1 -0
- package/dist/core/state/rules/index.js +80 -0
- package/dist/core/state/rules/index.js.map +1 -0
- package/dist/core/state/rules/layout-column-refs.js +60 -0
- package/dist/core/state/rules/layout-column-refs.js.map +1 -0
- package/dist/core/state/rules/layout-current-exists.js +27 -0
- package/dist/core/state/rules/layout-current-exists.js.map +1 -0
- package/dist/core/state/rules/layout-non-empty.js +32 -0
- package/dist/core/state/rules/layout-non-empty.js.map +1 -0
- package/dist/core/state/rules/rule.js +2 -0
- package/dist/core/state/rules/rule.js.map +1 -0
- package/dist/core/state/rules/scope-column-refs.js +32 -0
- package/dist/core/state/rules/scope-column-refs.js.map +1 -0
- package/dist/core/state/rules/scope-shape.js +61 -0
- package/dist/core/state/rules/scope-shape.js.map +1 -0
- package/dist/core/state/rules/state-unique-name.js +40 -0
- package/dist/core/state/rules/state-unique-name.js.map +1 -0
- package/dist/core/state/rules/state-unknown-section.js +30 -0
- package/dist/core/state/rules/state-unknown-section.js.map +1 -0
- package/dist/core/state/rules/type-discriminator.js +70 -0
- package/dist/core/state/rules/type-discriminator.js.map +1 -0
- package/dist/core/state/type-check.js +408 -0
- package/dist/core/state/type-check.js.map +1 -0
- package/dist/mcp/index.js +109 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/mcp/server.js +110 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/skills/adaptable-debug/SKILL.md +145 -0
- package/dist/skills/adaptable-debug/VERSION.md +1 -0
- package/dist/skills/adaptable-debug/references/_shared/agents-snippet.md +3 -0
- package/dist/skills/adaptable-debug/references/_shared/capabilities.md +35 -0
- package/dist/skills/adaptable-debug/references/_shared/conversation.md +20 -0
- package/dist/skills/adaptable-debug/references/_shared/docs-protocol.md +36 -0
- package/dist/skills/adaptable-debug/references/_shared/grounding.md +54 -0
- package/dist/skills/adaptable-debug/references/_shared/guards.md +20 -0
- package/dist/skills/adaptable-debug/references/_shared/validation-loop.md +42 -0
- package/dist/skills/adaptable-debug/references/devtools-api.md +36 -0
- package/dist/skills/adaptable-debug/references/feedback-template.md +36 -0
- package/dist/skills/adaptable-debug/references/symptoms.md +37 -0
- package/dist/skills/adaptable-debug/references/ticket-template.md +50 -0
- package/dist/skills/adaptable-dev/SKILL.md +97 -0
- package/dist/skills/adaptable-dev/VERSION.md +1 -0
- package/dist/skills/adaptable-dev/references/_shared/agents-snippet.md +3 -0
- package/dist/skills/adaptable-dev/references/_shared/capabilities.md +35 -0
- package/dist/skills/adaptable-dev/references/_shared/conversation.md +20 -0
- package/dist/skills/adaptable-dev/references/_shared/docs-protocol.md +36 -0
- package/dist/skills/adaptable-dev/references/_shared/grounding.md +54 -0
- package/dist/skills/adaptable-dev/references/_shared/guards.md +20 -0
- package/dist/skills/adaptable-dev/references/_shared/validation-loop.md +42 -0
- package/dist/skills/adaptable-dev/references/recommendations.md +93 -0
- package/dist/skills/adaptable-setup/SKILL.md +158 -0
- package/dist/skills/adaptable-setup/VERSION.md +1 -0
- package/dist/skills/adaptable-setup/references/_shared/agents-snippet.md +3 -0
- package/dist/skills/adaptable-setup/references/_shared/capabilities.md +35 -0
- package/dist/skills/adaptable-setup/references/_shared/conversation.md +20 -0
- package/dist/skills/adaptable-setup/references/_shared/docs-protocol.md +36 -0
- package/dist/skills/adaptable-setup/references/_shared/grounding.md +54 -0
- package/dist/skills/adaptable-setup/references/_shared/guards.md +20 -0
- package/dist/skills/adaptable-setup/references/_shared/validation-loop.md +42 -0
- package/dist/skills/adaptable-setup/references/paths.md +45 -0
- package/dist/skills/adaptable-upgrade/SKILL.md +269 -0
- package/dist/skills/adaptable-upgrade/VERSION.md +1 -0
- package/dist/skills/adaptable-upgrade/references/_shared/agents-snippet.md +3 -0
- package/dist/skills/adaptable-upgrade/references/_shared/capabilities.md +35 -0
- package/dist/skills/adaptable-upgrade/references/_shared/conversation.md +20 -0
- package/dist/skills/adaptable-upgrade/references/_shared/docs-protocol.md +36 -0
- package/dist/skills/adaptable-upgrade/references/_shared/grounding.md +54 -0
- package/dist/skills/adaptable-upgrade/references/_shared/guards.md +20 -0
- package/dist/skills/adaptable-upgrade/references/_shared/validation-loop.md +42 -0
- package/dist/skills/adaptable-upgrade/references/apply-order.md +171 -0
- package/dist/skills/adaptable-upgrade/references/plan-preamble.md +151 -0
- package/dist/skills/adaptable-upgrade/scripts/adaptable.mjs +24 -0
- package/package.json +34 -13
- package/dist/adaptable/loadEntry.js +0 -94
- package/dist/adaptable/loadEntry.js.map +0 -1
- package/dist/adaptable/types.js.map +0 -1
- package/dist/cache.js +0 -11
- package/dist/cache.js.map +0 -1
- package/dist/checks/stateRules.js +0 -389
- package/dist/checks/stateRules.js.map +0 -1
- package/dist/checks/stateTypes.js +0 -142
- package/dist/checks/stateTypes.js.map +0 -1
- package/dist/context.js +0 -39
- package/dist/context.js.map +0 -1
- package/dist/docs/corpus.js.map +0 -1
- package/dist/docs/search.js.map +0 -1
- package/dist/docs/source.js +0 -151
- package/dist/docs/source.js.map +0 -1
- package/dist/environment.js +0 -181
- package/dist/environment.js.map +0 -1
- package/dist/index.js +0 -7
- package/dist/index.js.map +0 -1
- package/dist/prompts.js +0 -84
- package/dist/prompts.js.map +0 -1
- package/dist/resources.js +0 -59
- package/dist/resources.js.map +0 -1
- package/dist/server.js +0 -23
- package/dist/server.js.map +0 -1
- package/dist/tools/checks.js +0 -250
- package/dist/tools/checks.js.map +0 -1
- package/dist/tools/docs.js +0 -173
- package/dist/tools/docs.js.map +0 -1
- package/dist/tools/environment.js +0 -52
- package/dist/tools/environment.js.map +0 -1
- package/skills/adaptable-dev/SKILL.md +0 -42
- /package/dist/{docs → core/docs}/corpus.js +0 -0
- /package/dist/{docs → core/docs}/search.js +0 -0
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `adaptable compat [--adaptable <n>] [--ag-grid <n>] [--framework <fw>]` · MCP `get_compatibility` (plan §8.2).
|
|
3
|
+
* From the manifest only; no project needed.
|
|
4
|
+
*/
|
|
5
|
+
import { z } from 'zod';
|
|
6
|
+
import { registerCapability } from '../capabilities.js';
|
|
7
|
+
import { FRAMEWORKS } from '../docs/corpus.js';
|
|
8
|
+
import { CapabilityError, ok } from '../envelope.js';
|
|
9
|
+
import { getManifestInfo, majorsWithRecords, pairingFor } from './manifest.js';
|
|
10
|
+
const Environment = z.object({
|
|
11
|
+
node: z.string().optional(),
|
|
12
|
+
typescript: z.string().optional(),
|
|
13
|
+
react: z.string().optional(),
|
|
14
|
+
angular: z.string().optional(),
|
|
15
|
+
vue: z.string().optional(),
|
|
16
|
+
});
|
|
17
|
+
const CompatOutput = z.object({
|
|
18
|
+
adaptable: z.object({ major: z.number(), latest: z.boolean(), latestMajor: z.number() }),
|
|
19
|
+
agGrid: z.object({
|
|
20
|
+
requiredMajor: z.number(),
|
|
21
|
+
requiredVersion: z.string(),
|
|
22
|
+
/** the range the latest AdapTable requires, when the manifest states it */
|
|
23
|
+
requiredByLatest: z.string().optional(),
|
|
24
|
+
}),
|
|
25
|
+
/** present when --ag-grid was given */
|
|
26
|
+
compatible: z.boolean().optional(),
|
|
27
|
+
wrappers: z.record(z.string(), z.string()).optional(),
|
|
28
|
+
environment: Environment.optional(),
|
|
29
|
+
releaseNote: z.string(),
|
|
30
|
+
docsHost: z.string(),
|
|
31
|
+
majorsWithRecords: z.array(z.number()),
|
|
32
|
+
manifest: z.object({ source: z.enum(['hosted', 'cached', 'snapshot']), builtAt: z.string(), host: z.string() }),
|
|
33
|
+
});
|
|
34
|
+
export const releaseNoteSlug = (major) => `version-${major}0-release-note`;
|
|
35
|
+
export function compatFor(info, adaptableMajor, input) {
|
|
36
|
+
const pairing = pairingFor(info, adaptableMajor);
|
|
37
|
+
if (!pairing) {
|
|
38
|
+
const known = [...new Set(info.pairings.map((p) => p.adaptableMajor))].sort((a, b) => a - b);
|
|
39
|
+
throw new CapabilityError('VERSION_NOT_SUPPORTED', `AdapTable ${adaptableMajor} is not in the documented AG Grid pairings.`, `Known majors: ${known.join(', ')}. Pass one of them with --adaptable, or check the release schedule at ${info.latest.docsHost}/support/release-schedule.`);
|
|
40
|
+
}
|
|
41
|
+
const warnings = [];
|
|
42
|
+
const key = String(adaptableMajor);
|
|
43
|
+
const wrappersAll = info.wrappers?.[key];
|
|
44
|
+
const wrappers = wrappersAll
|
|
45
|
+
? input.framework
|
|
46
|
+
? input.framework === 'vanilla'
|
|
47
|
+
? {}
|
|
48
|
+
: wrappersAll[input.framework]
|
|
49
|
+
? { [input.framework]: wrappersAll[input.framework] }
|
|
50
|
+
: {}
|
|
51
|
+
: wrappersAll
|
|
52
|
+
: undefined;
|
|
53
|
+
const environment = info.environment?.[key];
|
|
54
|
+
if (!info.environment || !info.wrappers) {
|
|
55
|
+
warnings.push(`The manifest from ${info.host} (built ${info.manifest.builtAt}) has no environment / wrapper table yet; those fields are omitted.`);
|
|
56
|
+
}
|
|
57
|
+
const docsHost = info.docsHosts?.[key] ?? (adaptableMajor >= info.latest.adaptableMajor ? info.latest.docsHost : `https://v${adaptableMajor}.adaptabletools.com`);
|
|
58
|
+
const data = {
|
|
59
|
+
adaptable: { major: adaptableMajor, latest: adaptableMajor === info.latest.adaptableMajor, latestMajor: info.latest.adaptableMajor },
|
|
60
|
+
agGrid: {
|
|
61
|
+
requiredMajor: pairing.agGridMajor,
|
|
62
|
+
requiredVersion: pairing.agGridVersion,
|
|
63
|
+
...(info.latest.requiredAgGrid ? { requiredByLatest: info.latest.requiredAgGrid } : {}),
|
|
64
|
+
},
|
|
65
|
+
...(input.agGrid !== undefined ? { compatible: input.agGrid === pairing.agGridMajor } : {}),
|
|
66
|
+
...(wrappers ? { wrappers } : {}),
|
|
67
|
+
...(environment ? { environment } : {}),
|
|
68
|
+
releaseNote: releaseNoteSlug(adaptableMajor),
|
|
69
|
+
docsHost,
|
|
70
|
+
majorsWithRecords: majorsWithRecords(),
|
|
71
|
+
manifest: { source: info.source, builtAt: info.manifest.builtAt, host: info.host },
|
|
72
|
+
};
|
|
73
|
+
return { data, warnings };
|
|
74
|
+
}
|
|
75
|
+
registerCapability({
|
|
76
|
+
name: 'compat',
|
|
77
|
+
description: 'AG Grid pairing, wrapper packages and environment requirements for an AdapTable major, from the docs manifest.',
|
|
78
|
+
cli: { command: ['compat'] },
|
|
79
|
+
mcp: { tool: 'get_compatibility' },
|
|
80
|
+
input: z.object({
|
|
81
|
+
adaptable: z.number().int().optional().describe('AdapTable major; defaults to the detected one, else the latest'),
|
|
82
|
+
agGrid: z.number().int().optional().describe('AG Grid major to check against the pairing'),
|
|
83
|
+
framework: z.enum(FRAMEWORKS).optional().describe('Return only this framework’s wrapper'),
|
|
84
|
+
}),
|
|
85
|
+
output: CompatOutput,
|
|
86
|
+
run: async (input, ctx) => {
|
|
87
|
+
const info = await getManifestInfo(ctx.manifest);
|
|
88
|
+
if (!info) {
|
|
89
|
+
throw new CapabilityError('DOCS_NOT_AVAILABLE', 'No docs manifest could be read: the host is unreachable (or --offline) and nothing is cached or bundled.', 'Retry with network access, or pass --docs-host <url>.');
|
|
90
|
+
}
|
|
91
|
+
const warnings = [];
|
|
92
|
+
let major = input.adaptable;
|
|
93
|
+
let resolvedContext;
|
|
94
|
+
if (major === undefined) {
|
|
95
|
+
const resolution = await ctx.resolveContext();
|
|
96
|
+
resolvedContext = resolution.context;
|
|
97
|
+
warnings.push(...resolution.warnings);
|
|
98
|
+
major = resolution.context.adaptableMajor ?? info.latest.adaptableMajor;
|
|
99
|
+
}
|
|
100
|
+
const result = compatFor(info, major, { agGrid: input.agGrid, framework: input.framework ?? ctx.globals.framework });
|
|
101
|
+
return ok(result.data, { warnings: [...warnings, ...result.warnings], resolvedContext });
|
|
102
|
+
},
|
|
103
|
+
markdown: (data) => {
|
|
104
|
+
const lines = [
|
|
105
|
+
`# AdapTable ${data.adaptable.major}${data.adaptable.latest ? ' (latest)' : ` (latest is ${data.adaptable.latestMajor})`}`,
|
|
106
|
+
'',
|
|
107
|
+
`- AG Grid: ${data.agGrid.requiredMajor} (documented with ${data.agGrid.requiredVersion})${data.compatible !== undefined ? ` — your AG Grid is ${data.compatible ? 'compatible' : 'not the documented major'}` : ''}`,
|
|
108
|
+
];
|
|
109
|
+
if (data.agGrid.requiredByLatest) {
|
|
110
|
+
lines.push(`- Latest AdapTable requires AG Grid ${data.agGrid.requiredByLatest}`);
|
|
111
|
+
}
|
|
112
|
+
if (data.wrappers && Object.keys(data.wrappers).length) {
|
|
113
|
+
lines.push(`- Wrappers: ${Object.entries(data.wrappers).map(([fw, pkg]) => `${fw} → \`${pkg}\``).join(', ')}`);
|
|
114
|
+
}
|
|
115
|
+
if (data.environment) {
|
|
116
|
+
lines.push(`- Environment: ${Object.entries(data.environment).map(([k, v]) => `${k} ${v}`).join(', ')}`);
|
|
117
|
+
}
|
|
118
|
+
lines.push(`- Release note: ${data.docsHost}/support/${data.releaseNote}`);
|
|
119
|
+
lines.push(`- Docs: ${data.docsHost}`);
|
|
120
|
+
if (data.majorsWithRecords.length) {
|
|
121
|
+
lines.push(`- Majors with change records: ${data.majorsWithRecords.join(', ')}`);
|
|
122
|
+
}
|
|
123
|
+
lines.push('', `_Manifest: ${data.manifest.source} from ${data.manifest.host}, built ${data.manifest.builtAt}_`);
|
|
124
|
+
return lines.join('\n');
|
|
125
|
+
},
|
|
126
|
+
});
|
|
127
|
+
//# sourceMappingURL=capabilities.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"capabilities.js","sourceRoot":"","sources":["../../../src/core/compat/capabilities.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The docs manifest (plan Appendix C, §8.3 "Freshness"): `GET <host>/llms/manifest.json`
|
|
3
|
+
* with `If-None-Match`, an ETag store under `docs/<host>/`, the bundled
|
|
4
|
+
* `data/manifest.snapshot.json` as the offline / unreachable fallback, and the
|
|
5
|
+
* derived `ManifestInfo` that `compat`, `detect` and context resolution consume.
|
|
6
|
+
*/
|
|
7
|
+
import { existsSync, mkdirSync, readdirSync, readFileSync, writeFileSync } from 'node:fs';
|
|
8
|
+
import { join } from 'node:path';
|
|
9
|
+
import { CURRENT_DOCS_HOST, RECORDS_FLOOR } from '../constants.js';
|
|
10
|
+
import { getCacheRoot, DOCS_DIR } from '../packages/cache.js';
|
|
11
|
+
import { compareSemver } from '../packages/versions.js';
|
|
12
|
+
const MANIFEST_PATH = '/llms/manifest.json';
|
|
13
|
+
const SNAPSHOT_URL = new URL('../../../data/manifest.snapshot.json', import.meta.url);
|
|
14
|
+
export function manifestHost(options = {}) {
|
|
15
|
+
return (options.docsHost ?? process.env.ADAPTABLE_MCP_DOCS_HOST ?? CURRENT_DOCS_HOST).replace(/\/+$/, '');
|
|
16
|
+
}
|
|
17
|
+
/** Folder for a host's cached manifest and corpora: `docs/<hostname>/` */
|
|
18
|
+
export function hostCacheDir(host) {
|
|
19
|
+
const name = host.replace(/^https?:\/\//, '').replace(/[^A-Za-z0-9.-]/g, '_');
|
|
20
|
+
return join(getCacheRoot(), DOCS_DIR, name);
|
|
21
|
+
}
|
|
22
|
+
function readJsonFile(path) {
|
|
23
|
+
try {
|
|
24
|
+
return JSON.parse(readFileSync(path, 'utf8'));
|
|
25
|
+
}
|
|
26
|
+
catch {
|
|
27
|
+
return undefined;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
export function readSnapshot() {
|
|
31
|
+
return readJsonFile(SNAPSHOT_URL);
|
|
32
|
+
}
|
|
33
|
+
function readCachedManifest(host) {
|
|
34
|
+
const dir = hostCacheDir(host);
|
|
35
|
+
const manifest = readJsonFile(join(dir, 'manifest.json'));
|
|
36
|
+
if (!manifest) {
|
|
37
|
+
return undefined;
|
|
38
|
+
}
|
|
39
|
+
const readText = (name) => {
|
|
40
|
+
try {
|
|
41
|
+
return readFileSync(join(dir, name), 'utf8').trim() || undefined;
|
|
42
|
+
}
|
|
43
|
+
catch {
|
|
44
|
+
return undefined;
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
const checked = readText('manifest.checked');
|
|
48
|
+
return { manifest, etag: readText('manifest.etag'), checkedAt: checked ? Number(checked) : undefined };
|
|
49
|
+
}
|
|
50
|
+
function writeCachedManifest(host, manifest, etag) {
|
|
51
|
+
const dir = hostCacheDir(host);
|
|
52
|
+
mkdirSync(dir, { recursive: true });
|
|
53
|
+
writeFileSync(join(dir, 'manifest.json'), JSON.stringify(manifest, null, 2));
|
|
54
|
+
writeFileSync(join(dir, 'manifest.etag'), etag ?? '');
|
|
55
|
+
touchChecked(host);
|
|
56
|
+
}
|
|
57
|
+
function touchChecked(host) {
|
|
58
|
+
const dir = hostCacheDir(host);
|
|
59
|
+
mkdirSync(dir, { recursive: true });
|
|
60
|
+
writeFileSync(join(dir, 'manifest.checked'), String(Date.now()));
|
|
61
|
+
}
|
|
62
|
+
const fallback = (host, reason, allowSnapshot) => {
|
|
63
|
+
const cached = readCachedManifest(host);
|
|
64
|
+
if (cached) {
|
|
65
|
+
return { manifest: cached.manifest, source: 'cached', warning: `${reason}; using the manifest cached from ${host} (built ${cached.manifest.builtAt}).` };
|
|
66
|
+
}
|
|
67
|
+
const snapshot = allowSnapshot ? readSnapshot() : undefined;
|
|
68
|
+
if (snapshot) {
|
|
69
|
+
return { manifest: snapshot, source: 'snapshot', warning: `${reason}; using the bundled manifest snapshot (built ${snapshot.builtAt}).` };
|
|
70
|
+
}
|
|
71
|
+
throw new ManifestUnavailable(allowSnapshot
|
|
72
|
+
? `${reason}, nothing is cached for ${host} and the bundled manifest snapshot is missing.`
|
|
73
|
+
: `${reason} and nothing is cached for ${host}.`);
|
|
74
|
+
};
|
|
75
|
+
export class ManifestUnavailable extends Error {
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* The manifest for a host. Online: conditional GET, `304` → cached copy, `200` →
|
|
79
|
+
* stored with its ETag; skipped entirely when the cached copy was validated within
|
|
80
|
+
* `maxAgeMs`. Offline or unreachable: cached copy, else (when allowed) the snapshot.
|
|
81
|
+
*/
|
|
82
|
+
export async function fetchManifest(options = {}) {
|
|
83
|
+
const host = manifestHost(options);
|
|
84
|
+
const allowSnapshot = options.allowSnapshot ?? true;
|
|
85
|
+
const cached = readCachedManifest(host);
|
|
86
|
+
if (options.offline) {
|
|
87
|
+
if (cached) {
|
|
88
|
+
return { manifest: cached.manifest, source: 'cached' };
|
|
89
|
+
}
|
|
90
|
+
const snapshot = allowSnapshot ? readSnapshot() : undefined;
|
|
91
|
+
if (snapshot) {
|
|
92
|
+
return { manifest: snapshot, source: 'snapshot' };
|
|
93
|
+
}
|
|
94
|
+
throw new ManifestUnavailable(allowSnapshot
|
|
95
|
+
? `--offline, nothing is cached for ${host} and the bundled manifest snapshot is missing.`
|
|
96
|
+
: `--offline and nothing is cached for ${host}.`);
|
|
97
|
+
}
|
|
98
|
+
if (cached?.checkedAt !== undefined && options.maxAgeMs && Date.now() - cached.checkedAt < options.maxAgeMs) {
|
|
99
|
+
return { manifest: cached.manifest, source: 'cached' };
|
|
100
|
+
}
|
|
101
|
+
let response;
|
|
102
|
+
try {
|
|
103
|
+
response = await fetch(`${host}${MANIFEST_PATH}`, {
|
|
104
|
+
headers: cached?.etag ? { 'If-None-Match': cached.etag } : {},
|
|
105
|
+
signal: AbortSignal.timeout(options.timeoutMs ?? 8_000),
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
catch (error) {
|
|
109
|
+
return fallback(host, `Could not reach ${host} (${error instanceof Error ? error.message : String(error)})`, allowSnapshot);
|
|
110
|
+
}
|
|
111
|
+
if (response.status === 304 && cached) {
|
|
112
|
+
touchChecked(host);
|
|
113
|
+
return { manifest: cached.manifest, source: 'cached' };
|
|
114
|
+
}
|
|
115
|
+
if (!response.ok) {
|
|
116
|
+
return fallback(host, `${host}${MANIFEST_PATH} returned ${response.status}`, allowSnapshot);
|
|
117
|
+
}
|
|
118
|
+
let manifest;
|
|
119
|
+
try {
|
|
120
|
+
manifest = (await response.json());
|
|
121
|
+
}
|
|
122
|
+
catch (error) {
|
|
123
|
+
return fallback(host, `${host}${MANIFEST_PATH} is not JSON (${error instanceof Error ? error.message : String(error)})`, allowSnapshot);
|
|
124
|
+
}
|
|
125
|
+
writeCachedManifest(host, manifest, response.headers.get('etag'));
|
|
126
|
+
return { manifest, source: 'hosted' };
|
|
127
|
+
}
|
|
128
|
+
export const majorOfPairing = (pairing) => Number(pairing.adaptableVersion.split('.')[0]);
|
|
129
|
+
/** Pairings sorted newest first (by AdapTable version) so `find` gives the newest row of a major */
|
|
130
|
+
export function normalisePairings(manifest) {
|
|
131
|
+
return [...manifest.agGridPairings]
|
|
132
|
+
.map((p) => ({ ...p, adaptableMajor: majorOfPairing(p) }))
|
|
133
|
+
.filter((p) => Number.isFinite(p.adaptableMajor))
|
|
134
|
+
.sort((a, b) => compareSemver(pad(b.adaptableVersion), pad(a.adaptableVersion)));
|
|
135
|
+
}
|
|
136
|
+
const pad = (version) => {
|
|
137
|
+
const parts = version.split('.');
|
|
138
|
+
while (parts.length < 3) {
|
|
139
|
+
parts.push('0');
|
|
140
|
+
}
|
|
141
|
+
return parts.join('.');
|
|
142
|
+
};
|
|
143
|
+
export function toManifestInfo(fetched, host) {
|
|
144
|
+
const { manifest } = fetched;
|
|
145
|
+
const latestMajor = manifest.latest?.adaptableMajor ?? manifest.major;
|
|
146
|
+
return {
|
|
147
|
+
latest: {
|
|
148
|
+
adaptableMajor: latestMajor,
|
|
149
|
+
adaptableVersion: manifest.adaptableVersion,
|
|
150
|
+
...(manifest.latest?.requiredAgGrid ?? manifest.agGridPeer
|
|
151
|
+
? { requiredAgGrid: manifest.latest?.requiredAgGrid ?? manifest.agGridPeer ?? undefined }
|
|
152
|
+
: {}),
|
|
153
|
+
docsHost: manifest.docsHosts?.[String(latestMajor)] ?? host,
|
|
154
|
+
...(manifest.docsHosts ? { docsHosts: manifest.docsHosts } : {}),
|
|
155
|
+
},
|
|
156
|
+
pairings: normalisePairings(manifest),
|
|
157
|
+
...(manifest.docsHosts ? { docsHosts: manifest.docsHosts } : {}),
|
|
158
|
+
...(manifest.environment ? { environment: manifest.environment } : {}),
|
|
159
|
+
...(manifest.wrappers ? { wrappers: manifest.wrappers } : {}),
|
|
160
|
+
source: fetched.source,
|
|
161
|
+
manifest,
|
|
162
|
+
host,
|
|
163
|
+
...(fetched.warning ? { warning: fetched.warning } : {}),
|
|
164
|
+
};
|
|
165
|
+
}
|
|
166
|
+
/** The manifest-derived facts, or undefined when no manifest can be had at all */
|
|
167
|
+
export async function getManifestInfo(options = {}) {
|
|
168
|
+
const host = manifestHost(options);
|
|
169
|
+
try {
|
|
170
|
+
return toManifestInfo(await fetchManifest(options), host);
|
|
171
|
+
}
|
|
172
|
+
catch (error) {
|
|
173
|
+
if (error instanceof ManifestUnavailable) {
|
|
174
|
+
return undefined;
|
|
175
|
+
}
|
|
176
|
+
throw error;
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
/** The documented AG Grid pairing for an AdapTable major (its newest row) */
|
|
180
|
+
export function pairingFor(info, adaptableMajor) {
|
|
181
|
+
if (!info || adaptableMajor === undefined) {
|
|
182
|
+
return undefined;
|
|
183
|
+
}
|
|
184
|
+
return info.pairings.find((p) => p.adaptableMajor === adaptableMajor);
|
|
185
|
+
}
|
|
186
|
+
/** Majors with change records bundled in `data/changes/<N-1>-<N>.json` */
|
|
187
|
+
export function majorsWithRecords(dataDir = new URL('../../../data/changes/', import.meta.url)) {
|
|
188
|
+
if (!existsSync(dataDir)) {
|
|
189
|
+
return [];
|
|
190
|
+
}
|
|
191
|
+
try {
|
|
192
|
+
return readdirSync(dataDir)
|
|
193
|
+
.map((name) => name.match(/^\d+-(\d+)\.json$/)?.[1])
|
|
194
|
+
.filter((m) => !!m)
|
|
195
|
+
.map(Number)
|
|
196
|
+
.filter((m) => m >= RECORDS_FLOOR)
|
|
197
|
+
.sort((a, b) => a - b);
|
|
198
|
+
}
|
|
199
|
+
catch {
|
|
200
|
+
return [];
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
//# sourceMappingURL=manifest.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../../src/core/compat/manifest.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Values shared by the registry, context resolution and the docs layer.
|
|
3
|
+
* `capabilities.ts` re-exports them under the names the plan uses (§6.1);
|
|
4
|
+
* they live here so `context/` and `docs/` can import them without a cycle.
|
|
5
|
+
*/
|
|
6
|
+
import { readFileSync } from 'node:fs';
|
|
7
|
+
export const CLI_PACKAGE = '@adaptabletools/adaptable-mcp';
|
|
8
|
+
/** Oldest major with change records (`data/changes/<N-1>-<N>.json`). */
|
|
9
|
+
export const RECORDS_FLOOR = 21;
|
|
10
|
+
/** Oldest major `migrate state` accepts as `--from`. */
|
|
11
|
+
export const MIGRATION_FLOOR = 16;
|
|
12
|
+
/** The library package whose `types.d.ts`, `aql` and `upgrade` entries the checks use (plan §7.3). */
|
|
13
|
+
export const LIBRARY_PACKAGE = '@adaptabletools/adaptable';
|
|
14
|
+
/** Oldest major whose package carries the `aql` and `upgrade` entries — the engine is always ≥ this (plan §7.3). */
|
|
15
|
+
export const ENGINE_FLOOR = 24;
|
|
16
|
+
/**
|
|
17
|
+
* The docs host for the current major (plan §7.4, decision 7 of the implementation file).
|
|
18
|
+
* Never switched at release; other hosts are reached through `--docs-host` / `ADAPTABLE_MCP_DOCS_HOST`.
|
|
19
|
+
*/
|
|
20
|
+
export const CURRENT_DOCS_HOST = 'https://www.adaptabletools.com';
|
|
21
|
+
/** Environment variable that overrides the docs host for one invocation. */
|
|
22
|
+
export const DOCS_HOST_ENV = 'ADAPTABLE_MCP_DOCS_HOST';
|
|
23
|
+
/**
|
|
24
|
+
* The npm range skills use to invoke the CLI, derived from the package's own
|
|
25
|
+
* version: `^<major>` for a stable version, the prerelease dist-tag
|
|
26
|
+
* (`canary`) for a `-canary.N` prerelease — `^1` would match neither `0.x`
|
|
27
|
+
* nor prereleases (§6.1).
|
|
28
|
+
*/
|
|
29
|
+
export function cliRangeFor(version) {
|
|
30
|
+
const prerelease = version.match(/-([0-9A-Za-z]+)(?:[.-]|$)/);
|
|
31
|
+
if (prerelease) {
|
|
32
|
+
return prerelease[1];
|
|
33
|
+
}
|
|
34
|
+
return `^${version.split('.')[0]}`;
|
|
35
|
+
}
|
|
36
|
+
export const PACKAGE_VERSION = JSON.parse(readFileSync(new URL('../../package.json', import.meta.url), 'utf8')).version;
|
|
37
|
+
export const CLI_RANGE = cliRangeFor(PACKAGE_VERSION);
|
|
38
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/core/constants.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvC,MAAM,CAAC,MAAM,WAAW,GAAG,+BAA+B,CAAC;AAE3D,wEAAwE;AACxE,MAAM,CAAC,MAAM,aAAa,GAAG,EAAE,CAAC;AAEhC,wDAAwD;AACxD,MAAM,CAAC,MAAM,eAAe,GAAG,EAAE,CAAC;AAElC,sGAAsG;AACtG,MAAM,CAAC,MAAM,eAAe,GAAG,2BAA2B,CAAC;AAE3D,oHAAoH;AACpH,MAAM,CAAC,MAAM,YAAY,GAAG,EAAE,CAAC;AAE/B;;;GAGG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,gCAAgC,CAAC;AAElE,4EAA4E;AAC5E,MAAM,CAAC,MAAM,aAAa,GAAG,yBAAyB,CAAC;AAEvD;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CAAC,OAAe;IACzC,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;IAC9D,IAAI,UAAU,EAAE,CAAC;QACf,OAAO,UAAU,CAAC,CAAC,CAAC,CAAC;IACvB,CAAC;IACD,OAAO,IAAI,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AACrC,CAAC;AAED,MAAM,CAAC,MAAM,eAAe,GAC1B,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,GAAG,CAAC,oBAAoB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAChF,CAAC,OAAO,CAAC;AAEV,MAAM,CAAC,MAAM,SAAS,GAAG,WAAW,CAAC,eAAe,CAAC,CAAC"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `adaptable detect [--all-projects]` · MCP `detect_environment` (plan §8.1).
|
|
3
|
+
*/
|
|
4
|
+
import { z } from 'zod';
|
|
5
|
+
import { registerCapability } from '../capabilities.js';
|
|
6
|
+
import { getManifestInfo } from '../compat/manifest.js';
|
|
7
|
+
import { FRAMEWORKS } from '../docs/corpus.js';
|
|
8
|
+
import { ok } from '../envelope.js';
|
|
9
|
+
import { detect } from './detect.js';
|
|
10
|
+
const VersionPair = z.object({ range: z.string().optional(), installed: z.string().optional() });
|
|
11
|
+
export const ProjectReportSchema = z.object({
|
|
12
|
+
path: z.string(),
|
|
13
|
+
packageManager: z.enum(['npm', 'yarn', 'pnpm', 'bun']).optional(),
|
|
14
|
+
adaptable: z.object({ range: z.string().optional(), installed: z.string().optional(), major: z.number().optional() }),
|
|
15
|
+
wrapper: z
|
|
16
|
+
.object({ name: z.string(), range: z.string().optional(), installed: z.string().optional(), skew: z.boolean() })
|
|
17
|
+
.optional(),
|
|
18
|
+
agGrid: z
|
|
19
|
+
.object({
|
|
20
|
+
name: z.string(),
|
|
21
|
+
range: z.string().optional(),
|
|
22
|
+
installed: z.string().optional(),
|
|
23
|
+
major: z.number().optional(),
|
|
24
|
+
enterprise: z.boolean(),
|
|
25
|
+
compatible: z.boolean().optional(),
|
|
26
|
+
requiredByTarget: z.string().optional(),
|
|
27
|
+
})
|
|
28
|
+
.optional(),
|
|
29
|
+
framework: z.enum(FRAMEWORKS),
|
|
30
|
+
frameworkVersions: z.record(z.string(), VersionPair),
|
|
31
|
+
typescript: VersionPair.optional(),
|
|
32
|
+
node: z.object({ engines: z.string().optional(), nvmrc: z.string().optional() }).optional(),
|
|
33
|
+
licensePresent: z.boolean(),
|
|
34
|
+
rowModelHints: z.array(z.string()),
|
|
35
|
+
entryPoints: z.array(z.string()),
|
|
36
|
+
initialStateLiterals: z.array(z.string()),
|
|
37
|
+
columnDefsFiles: z.array(z.string()),
|
|
38
|
+
agGridModulesFile: z.string().optional(),
|
|
39
|
+
plugins: z.array(z.string()),
|
|
40
|
+
companionSkills: z.object({ agDev: z.boolean(), agUpdate: z.boolean() }),
|
|
41
|
+
});
|
|
42
|
+
const DetectOutput = z.object({
|
|
43
|
+
projects: z.array(ProjectReportSchema),
|
|
44
|
+
agGridOnly: z.boolean(),
|
|
45
|
+
latest: z
|
|
46
|
+
.object({ adaptableMajor: z.number(), requiredAgGrid: z.string().optional(), docsHost: z.string() })
|
|
47
|
+
.optional(),
|
|
48
|
+
});
|
|
49
|
+
function projectMarkdown(project) {
|
|
50
|
+
const lines = [`## ${project.path}`, ''];
|
|
51
|
+
const versions = (pair) => pair ? `${pair.installed ?? 'not installed'}${pair.range ? ` (declared ${pair.range})` : ''}` : '—';
|
|
52
|
+
lines.push(`- AdapTable: ${versions(project.adaptable)}${project.adaptable.major !== undefined ? `, major ${project.adaptable.major}` : ''}`);
|
|
53
|
+
if (project.wrapper) {
|
|
54
|
+
lines.push(`- Wrapper: ${project.wrapper.name} ${versions(project.wrapper)}${project.wrapper.skew ? ' — version skew with the core package' : ''}`);
|
|
55
|
+
}
|
|
56
|
+
lines.push(`- AG Grid: ${project.agGrid ? `${project.agGrid.name} ${versions(project.agGrid)}${project.agGrid.compatible === false ? ' — not the documented pairing' : ''}` : 'not declared'}`);
|
|
57
|
+
lines.push(`- Framework: ${project.framework}${Object.keys(project.frameworkVersions).length ? ` (${Object.entries(project.frameworkVersions).map(([n, v]) => `${n} ${versions(v)}`).join(', ')})` : ''}`);
|
|
58
|
+
if (project.typescript) {
|
|
59
|
+
lines.push(`- TypeScript: ${versions(project.typescript)}`);
|
|
60
|
+
}
|
|
61
|
+
if (project.packageManager) {
|
|
62
|
+
lines.push(`- Package manager: ${project.packageManager}`);
|
|
63
|
+
}
|
|
64
|
+
lines.push(`- Licence key in sources: ${project.licensePresent ? 'yes' : 'no'}`);
|
|
65
|
+
if (project.rowModelHints.length) {
|
|
66
|
+
lines.push(`- Row models: ${project.rowModelHints.join(', ')}`);
|
|
67
|
+
}
|
|
68
|
+
const files = (label, list) => {
|
|
69
|
+
if (list.length) {
|
|
70
|
+
lines.push(`- ${label}: ${list.map((f) => `\`${f}\``).join(', ')}`);
|
|
71
|
+
}
|
|
72
|
+
};
|
|
73
|
+
files('Entry points', project.entryPoints);
|
|
74
|
+
files('Initial State literals', project.initialStateLiterals);
|
|
75
|
+
files('columnDefs files', project.columnDefsFiles);
|
|
76
|
+
if (project.agGridModulesFile) {
|
|
77
|
+
lines.push(`- AG Grid modules: \`${project.agGridModulesFile}\``);
|
|
78
|
+
}
|
|
79
|
+
files('Plugins', project.plugins);
|
|
80
|
+
lines.push(`- Companion skills: ag-dev ${project.companionSkills.agDev ? 'installed' : 'missing'}, ag-update ${project.companionSkills.agUpdate ? 'installed' : 'missing'}`);
|
|
81
|
+
return lines.join('\n');
|
|
82
|
+
}
|
|
83
|
+
registerCapability({
|
|
84
|
+
name: 'detect',
|
|
85
|
+
description: 'Detects the AdapTable projects at or below the folder: versions, framework, AG Grid, source layout hints.',
|
|
86
|
+
cli: { command: ['detect'] },
|
|
87
|
+
mcp: { tool: 'detect_environment', stdioOnly: true },
|
|
88
|
+
input: z.object({
|
|
89
|
+
allProjects: z.boolean().optional().describe('Describe every project found instead of requiring a single one'),
|
|
90
|
+
}),
|
|
91
|
+
output: DetectOutput,
|
|
92
|
+
run: async (input, ctx) => {
|
|
93
|
+
const manifest = await getManifestInfo(ctx.manifest);
|
|
94
|
+
const { report, warnings } = detect(ctx.cwd, { allProjects: input.allProjects, manifest });
|
|
95
|
+
const context = report.projects.length === 1 ? (await ctx.resolveContext()).context : undefined;
|
|
96
|
+
return ok(report, { warnings, resolvedContext: context });
|
|
97
|
+
},
|
|
98
|
+
markdown: (data) => {
|
|
99
|
+
const parts = data.projects.map(projectMarkdown);
|
|
100
|
+
if (data.latest) {
|
|
101
|
+
parts.push(`_Latest AdapTable: ${data.latest.adaptableMajor}${data.latest.requiredAgGrid ? `, requires AG Grid ${data.latest.requiredAgGrid}` : ''} · docs ${data.latest.docsHost}_`);
|
|
102
|
+
}
|
|
103
|
+
return parts.join('\n\n');
|
|
104
|
+
},
|
|
105
|
+
});
|
|
106
|
+
//# sourceMappingURL=capabilities.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"capabilities.js","sourceRoot":"","sources":["../../../src/core/context/capabilities.ts"],"names":[],"mappings":"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"}
|