@adaptabletools/adaptable-mcp 0.1.0-canary.0 → 0.1.0-canary.1
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 +56 -61
- package/data/manifest.snapshot.json +184 -0
- package/dist/bin.js +16 -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 +86 -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/capabilities.js +99 -0
- package/dist/core/capabilities.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/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 +381 -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/index.js +13 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/packages/cache.js +138 -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 +10 -0
- package/dist/core/register.js.map +1 -0
- package/dist/{checks/stateRules.js → core/state/rules.js} +29 -1
- package/dist/core/state/rules.js.map +1 -0
- package/dist/{checks/stateTypes.js → core/state/type-check.js} +1 -1
- package/dist/core/state/type-check.js.map +1 -0
- package/dist/mcp/index.js +21 -0
- package/dist/mcp/index.js.map +1 -0
- package/package.json +27 -12
- 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.map +0 -1
- 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 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
const cell = (value) => value === undefined || value === null ? '' : String(value).replace(/\|/g, '\\|').replace(/\n/g, ' ');
|
|
2
|
+
function issueLocation(issue) {
|
|
3
|
+
if (issue.file) {
|
|
4
|
+
return `${issue.file}${issue.line !== undefined ? `:${issue.line}${issue.column !== undefined ? `:${issue.column}` : ''}` : ''}`;
|
|
5
|
+
}
|
|
6
|
+
return issue.path ?? '';
|
|
7
|
+
}
|
|
8
|
+
export function renderIssues(issues) {
|
|
9
|
+
if (!issues.length) {
|
|
10
|
+
return '';
|
|
11
|
+
}
|
|
12
|
+
const rows = issues.map((issue) => `| ${issue.severity} | \`${cell(issue.code)}\` | ${cell(issueLocation(issue))} | ${cell(issue.message)}${issue.fix ? ` — ${cell(issue.fix)}` : ''} |`);
|
|
13
|
+
return ['| Severity | Rule | Where | Message |', '| --- | --- | --- | --- |', ...rows].join('\n');
|
|
14
|
+
}
|
|
15
|
+
export function renderContext(context) {
|
|
16
|
+
const version = context.adaptableVersion ?? (context.adaptableMajor !== undefined ? `${context.adaptableMajor}.x` : 'unknown');
|
|
17
|
+
const parts = [`AdapTable ${version} (${context.source})`];
|
|
18
|
+
if (context.framework) {
|
|
19
|
+
parts.push(context.framework);
|
|
20
|
+
}
|
|
21
|
+
if (context.agGridVersion) {
|
|
22
|
+
parts.push(`AG Grid ${context.agGridVersion}`);
|
|
23
|
+
}
|
|
24
|
+
parts.push(`code: ${context.codeSource}${context.engine ? `, engine ${context.engine.version} (${context.engine.source})` : ''}`);
|
|
25
|
+
parts.push(`docs: ${context.docsHost}`);
|
|
26
|
+
return parts.join(' · ');
|
|
27
|
+
}
|
|
28
|
+
function renderOk(envelope, options) {
|
|
29
|
+
const blocks = [];
|
|
30
|
+
if (envelope.resolvedContext) {
|
|
31
|
+
blocks.push(`_${renderContext(envelope.resolvedContext)}_`);
|
|
32
|
+
}
|
|
33
|
+
if (!options.quiet && envelope.warnings.length) {
|
|
34
|
+
blocks.push(envelope.warnings.map((warning) => `> **Warning:** ${warning}`).join('\n>\n'));
|
|
35
|
+
}
|
|
36
|
+
const issues = options.quiet ? envelope.issues.filter((issue) => issue.severity !== 'info') : envelope.issues;
|
|
37
|
+
if (issues.length) {
|
|
38
|
+
blocks.push(`## Issues (${issues.length})\n\n${renderIssues(issues)}`);
|
|
39
|
+
}
|
|
40
|
+
const body = options.capability?.markdown
|
|
41
|
+
? options.capability.markdown(envelope.data, envelope)
|
|
42
|
+
: `\`\`\`json\n${JSON.stringify(envelope.data, null, 2)}\n\`\`\``;
|
|
43
|
+
if (body.trim()) {
|
|
44
|
+
blocks.push(body.trim());
|
|
45
|
+
}
|
|
46
|
+
return `${blocks.join('\n\n')}\n`;
|
|
47
|
+
}
|
|
48
|
+
export function renderEnvelope(envelope, options = {}) {
|
|
49
|
+
if (options.json) {
|
|
50
|
+
return `${JSON.stringify(envelope, null, 2)}\n`;
|
|
51
|
+
}
|
|
52
|
+
if (!envelope.ok) {
|
|
53
|
+
return `**Error ${envelope.error.code}:** ${envelope.error.message}\n\n${envelope.error.hint}\n`;
|
|
54
|
+
}
|
|
55
|
+
return renderOk(envelope, options);
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=render.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"render.js","sourceRoot":"","sources":["../../src/cli/render.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The capability registry (plan §6.1). One entry per capability; the CLI tree,
|
|
3
|
+
* the MCP tool list, `--help --json`, `skills/_shared/capabilities.md` and the
|
|
4
|
+
* parity tests are all generated from it.
|
|
5
|
+
*/
|
|
6
|
+
import { resolve as resolvePath } from 'node:path';
|
|
7
|
+
import { z } from 'zod';
|
|
8
|
+
import { getManifestInfo } from './compat/manifest.js';
|
|
9
|
+
import { resolveContext, } from './context/resolve.js';
|
|
10
|
+
import { FRAMEWORKS } from './docs/corpus.js';
|
|
11
|
+
import { CapabilityError, fail, SCHEMA_VERSION } from './envelope.js';
|
|
12
|
+
export { CLI_PACKAGE, CLI_RANGE, CURRENT_DOCS_HOST, MIGRATION_FLOOR, PACKAGE_VERSION, RECORDS_FLOOR, } from './constants.js';
|
|
13
|
+
export { SCHEMA_VERSION };
|
|
14
|
+
/** Global flags shared by every command (plan §7.1); `--json` and `--quiet` are rendering flags the bindings own. */
|
|
15
|
+
export const GlobalOptionsSchema = z.object({
|
|
16
|
+
cwd: z.string().optional().describe('Project folder; defaults to the current directory'),
|
|
17
|
+
major: z.number().int().optional().describe('AdapTable major to assume instead of detecting it'),
|
|
18
|
+
framework: z.enum(FRAMEWORKS).optional().describe('Framework to assume instead of detecting it'),
|
|
19
|
+
offline: z.boolean().optional().describe('Never touch the network; use caches and bundled snapshots'),
|
|
20
|
+
docsHost: z.string().optional().describe('Docs host to read instead of the default one'),
|
|
21
|
+
});
|
|
22
|
+
const registry = new Map();
|
|
23
|
+
export function registerCapability(capability) {
|
|
24
|
+
if (registry.has(capability.name)) {
|
|
25
|
+
throw new Error(`Capability "${capability.name}" is already registered.`);
|
|
26
|
+
}
|
|
27
|
+
const command = capability.cli.command.join(' ');
|
|
28
|
+
for (const existing of registry.values()) {
|
|
29
|
+
if (existing.cli.command.join(' ') === command) {
|
|
30
|
+
throw new Error(`CLI command "${command}" is already bound to capability "${existing.name}".`);
|
|
31
|
+
}
|
|
32
|
+
if (capability.mcp && existing.mcp?.tool === capability.mcp.tool) {
|
|
33
|
+
throw new Error(`MCP tool "${capability.mcp.tool}" is already bound to capability "${existing.name}".`);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
registry.set(capability.name, capability);
|
|
37
|
+
}
|
|
38
|
+
export function listCapabilities(options = {}) {
|
|
39
|
+
return [...registry.values()].filter((c) => options.includeHidden || !c.hidden);
|
|
40
|
+
}
|
|
41
|
+
export function getCapability(name) {
|
|
42
|
+
return registry.get(name);
|
|
43
|
+
}
|
|
44
|
+
/** Step 4 of §7.2 and the docs host map, from the manifest (hosted, cached or snapshot) */
|
|
45
|
+
async function latestFromManifest(globals) {
|
|
46
|
+
const info = await getManifestInfo({ offline: globals.offline, docsHost: globals.docsHost });
|
|
47
|
+
return info
|
|
48
|
+
? {
|
|
49
|
+
adaptableMajor: info.latest.adaptableMajor,
|
|
50
|
+
adaptableVersion: info.latest.adaptableVersion,
|
|
51
|
+
...(info.docsHosts ? { docsHosts: info.docsHosts } : {}),
|
|
52
|
+
}
|
|
53
|
+
: undefined;
|
|
54
|
+
}
|
|
55
|
+
function usageMessage(error) {
|
|
56
|
+
return error.issues
|
|
57
|
+
.map((issue) => (issue.path.length ? `${issue.path.map(String).join('.')}: ${issue.message}` : issue.message))
|
|
58
|
+
.join('; ');
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Validates `input` against the capability's schema, runs it and returns the
|
|
62
|
+
* envelope. `CapabilityError`s become failure envelopes; any other throw is a bug
|
|
63
|
+
* and propagates to the binding.
|
|
64
|
+
*/
|
|
65
|
+
export async function runCapability(name, input, globals = {}, options = {}) {
|
|
66
|
+
const capability = registry.get(name);
|
|
67
|
+
if (!capability) {
|
|
68
|
+
return fail('NOT_FOUND', `Unknown capability "${name}".`, 'Run `adaptable --help` for the commands this version supports; a skill that names a missing capability should fall back to the docs.');
|
|
69
|
+
}
|
|
70
|
+
const parsedGlobals = GlobalOptionsSchema.safeParse(globals);
|
|
71
|
+
if (!parsedGlobals.success) {
|
|
72
|
+
return fail('USAGE', `Invalid global options: ${usageMessage(parsedGlobals.error)}`, 'Run `adaptable --help`.');
|
|
73
|
+
}
|
|
74
|
+
const parsed = capability.input.safeParse(input ?? {});
|
|
75
|
+
if (!parsed.success) {
|
|
76
|
+
return fail('USAGE', `Invalid input for ${capability.cli.command.join(' ')}: ${usageMessage(parsed.error)}`, `Run \`adaptable ${capability.cli.command.join(' ')} --help\`.`);
|
|
77
|
+
}
|
|
78
|
+
const cwd = resolvePath(parsedGlobals.data.cwd ?? process.cwd());
|
|
79
|
+
const globalsWithCwd = { ...parsedGlobals.data, cwd };
|
|
80
|
+
let resolution;
|
|
81
|
+
const ctx = {
|
|
82
|
+
globals: parsedGlobals.data,
|
|
83
|
+
cwd,
|
|
84
|
+
resolveContext: () => (resolution ??= resolveContext(globalsWithCwd, {
|
|
85
|
+
...options.resolve,
|
|
86
|
+
latest: options.resolve?.latest ?? (() => latestFromManifest(globalsWithCwd)),
|
|
87
|
+
})),
|
|
88
|
+
};
|
|
89
|
+
try {
|
|
90
|
+
return await capability.run(parsed.data, ctx);
|
|
91
|
+
}
|
|
92
|
+
catch (error) {
|
|
93
|
+
if (error instanceof CapabilityError) {
|
|
94
|
+
return error.toEnvelope();
|
|
95
|
+
}
|
|
96
|
+
throw error;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
//# sourceMappingURL=capabilities.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"capabilities.js","sourceRoot":"","sources":["../../src/core/capabilities.ts"],"names":[],"mappings":"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"}
|
|
@@ -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({ offline: ctx.globals.offline, docsHost: ctx.globals.docsHost });
|
|
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"}
|