@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,123 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Loads a library entry (`aql`, `upgrade`) from a resolved package. The
|
|
3
|
+
* published package is bundler-only ESM (extensionless relative imports), so
|
|
4
|
+
* each entry is bundled once per version with esbuild into
|
|
5
|
+
* `entries/<version>/<entry>.mjs` and imported from there (plan §7.3).
|
|
6
|
+
*
|
|
7
|
+
* `ADAPTABLE_MCP_ADAPTABLE_SRC` points at an AdapTable source folder instead
|
|
8
|
+
* (e.g. `packages/adaptable` in the AdapTable repo); source bundles are never
|
|
9
|
+
* cached because they change with every edit.
|
|
10
|
+
*/
|
|
11
|
+
import { createHash } from 'node:crypto';
|
|
12
|
+
import { existsSync, mkdirSync, readFileSync, statSync } from 'node:fs';
|
|
13
|
+
import { tmpdir } from 'node:os';
|
|
14
|
+
import { join } from 'node:path';
|
|
15
|
+
import { pathToFileURL } from 'node:url';
|
|
16
|
+
import { build } from 'esbuild';
|
|
17
|
+
import { entriesCacheDir } from './cache.js';
|
|
18
|
+
import { entryNodePaths } from './prepare.js';
|
|
19
|
+
export const SOURCE_ENV = 'ADAPTABLE_MCP_ADAPTABLE_SRC';
|
|
20
|
+
/** The source override, when `ADAPTABLE_MCP_ADAPTABLE_SRC` is set */
|
|
21
|
+
export function sourceOverride() {
|
|
22
|
+
const dir = process.env[SOURCE_ENV];
|
|
23
|
+
return dir ? { kind: 'source', dir } : undefined;
|
|
24
|
+
}
|
|
25
|
+
export const packageLocation = (pkg) => ({
|
|
26
|
+
kind: 'package',
|
|
27
|
+
version: pkg.version,
|
|
28
|
+
dir: pkg.dir,
|
|
29
|
+
});
|
|
30
|
+
function entryFile(location, name) {
|
|
31
|
+
if (location.kind === 'source') {
|
|
32
|
+
const entry = join(location.dir, `${name}.ts`);
|
|
33
|
+
const tsconfig = join(location.dir, 'tsconfig.cjs.json');
|
|
34
|
+
return existsSync(entry) ? { entry, tsconfig: existsSync(tsconfig) ? tsconfig : undefined } : undefined;
|
|
35
|
+
}
|
|
36
|
+
const entry = join(location.dir, `${name}.js`);
|
|
37
|
+
return existsSync(entry) ? { entry } : undefined;
|
|
38
|
+
}
|
|
39
|
+
function sourceStamp(dir) {
|
|
40
|
+
// a source entry changes with every edit to the files it imports: never reuse a bundle
|
|
41
|
+
return createHash('sha256').update(dir).update(`${process.pid}-${Date.now()}`).digest('hex').slice(0, 16);
|
|
42
|
+
}
|
|
43
|
+
function packageVersionAt(dir) {
|
|
44
|
+
try {
|
|
45
|
+
return JSON.parse(readFileSync(join(dir, 'package.json'), 'utf8')).version;
|
|
46
|
+
}
|
|
47
|
+
catch {
|
|
48
|
+
return undefined;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
async function bundle(entry, outfile, tsconfig, nodePaths) {
|
|
52
|
+
mkdirSync(join(outfile, '..'), { recursive: true });
|
|
53
|
+
await build({
|
|
54
|
+
entryPoints: [entry],
|
|
55
|
+
bundle: true,
|
|
56
|
+
platform: 'node',
|
|
57
|
+
format: 'esm',
|
|
58
|
+
outfile,
|
|
59
|
+
tsconfig,
|
|
60
|
+
nodePaths,
|
|
61
|
+
logLevel: 'silent',
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
const loaded = new Map();
|
|
65
|
+
async function loadUncached(location, name) {
|
|
66
|
+
const found = entryFile(location, name);
|
|
67
|
+
if (!found) {
|
|
68
|
+
const where = location.kind === 'source' ? location.dir : `${location.dir} (version ${location.version})`;
|
|
69
|
+
return {
|
|
70
|
+
ok: false,
|
|
71
|
+
reason: `${where} has no ${name} entry point; it ships with @adaptabletools/adaptable 24 and later.`,
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
let outfile;
|
|
75
|
+
let cacheable;
|
|
76
|
+
if (location.kind === 'source') {
|
|
77
|
+
outfile = join(tmpdir(), `adaptable-${name}-${sourceStamp(location.dir)}.mjs`);
|
|
78
|
+
cacheable = false;
|
|
79
|
+
}
|
|
80
|
+
else {
|
|
81
|
+
// the folder is keyed by the declared version; the file name also carries the
|
|
82
|
+
// entry's mtime so a re-fetched or edited package of the same version is rebundled
|
|
83
|
+
const version = packageVersionAt(location.dir) ?? location.version;
|
|
84
|
+
const stamp = createHash('sha256')
|
|
85
|
+
.update(found.entry)
|
|
86
|
+
.update(String(statSync(found.entry).mtimeMs))
|
|
87
|
+
.digest('hex')
|
|
88
|
+
.slice(0, 8);
|
|
89
|
+
outfile = join(entriesCacheDir(version), `${name}-${stamp}.mjs`);
|
|
90
|
+
cacheable = true;
|
|
91
|
+
}
|
|
92
|
+
try {
|
|
93
|
+
if (!cacheable || !existsSync(outfile)) {
|
|
94
|
+
await bundle(found.entry, outfile, found.tsconfig, location.kind === 'package' ? entryNodePaths(location.dir) : undefined);
|
|
95
|
+
}
|
|
96
|
+
const module = await import(pathToFileURL(outfile).href);
|
|
97
|
+
return { ok: true, module, source: found.entry, bundle: outfile };
|
|
98
|
+
}
|
|
99
|
+
catch (error) {
|
|
100
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
101
|
+
const unresolved = [...message.matchAll(/Could not resolve "([^"]+)"/g)].map((m) => m[1]);
|
|
102
|
+
const hint = unresolved.length && location.kind === 'package'
|
|
103
|
+
? ` The package folder lacks ${[...new Set(unresolved)].join(', ')}; re-run \`adaptable cache add ${location.version}\` on a connected machine to install the entry dependencies.`
|
|
104
|
+
: '';
|
|
105
|
+
return { ok: false, reason: `Could not load ${found.entry}: ${message}${hint}` };
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
/** Loads `name` from `location`, bundling it first when needed; memoised per process */
|
|
109
|
+
export function loadEntry(location, name) {
|
|
110
|
+
const key = `${location.kind}:${location.dir}:${name}`;
|
|
111
|
+
let result = loaded.get(key);
|
|
112
|
+
if (!result) {
|
|
113
|
+
result = loadUncached(location, name);
|
|
114
|
+
result.then((r) => {
|
|
115
|
+
if (!r.ok) {
|
|
116
|
+
loaded.delete(key);
|
|
117
|
+
}
|
|
118
|
+
});
|
|
119
|
+
loaded.set(key, result);
|
|
120
|
+
}
|
|
121
|
+
return result;
|
|
122
|
+
}
|
|
123
|
+
//# sourceMappingURL=load-entry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"load-entry.js","sourceRoot":"","sources":["../../../src/core/packages/load-entry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Makes an extracted library package usable on its own. A tarball has no
|
|
3
|
+
* `node_modules`, but the `aql` and `upgrade` entries import a few runtime
|
|
4
|
+
* dependencies (`date-fns`, `uuid`, `react`, …) that esbuild must resolve when
|
|
5
|
+
* it bundles them. Rather than installing the library's ~30 dependencies, the
|
|
6
|
+
* bundle itself is the oracle: try it, install exactly the packages it could
|
|
7
|
+
* not resolve into a private `.deps/` folder (pinned to the ranges the library
|
|
8
|
+
* declares), and try again until it builds. Transitive peers (`react` for
|
|
9
|
+
* `react-toastify`) surface in the second round.
|
|
10
|
+
*/
|
|
11
|
+
import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
|
|
12
|
+
import { join } from 'node:path';
|
|
13
|
+
import { build } from 'esbuild';
|
|
14
|
+
import { exec, NPM } from './exec.js';
|
|
15
|
+
export const ENTRY_FILES = ['aql.js', 'upgrade.js'];
|
|
16
|
+
/**
|
|
17
|
+
* Folder, inside a cached package, holding only the dependencies its entries need.
|
|
18
|
+
* It has its own `package.json`, so npm installs exactly that set instead of
|
|
19
|
+
* reconciling the library's full dependency tree; esbuild reaches it through
|
|
20
|
+
* `nodePaths` (`entryNodePaths`).
|
|
21
|
+
*/
|
|
22
|
+
export const DEPS_DIR = '.deps';
|
|
23
|
+
export const entryNodePaths = (packageDir) => [join(packageDir, DEPS_DIR, 'node_modules')];
|
|
24
|
+
/** `@scope/name` or `name` from an import specifier */
|
|
25
|
+
export function packageNameOf(specifier) {
|
|
26
|
+
const parts = specifier.split('/');
|
|
27
|
+
return specifier.startsWith('@') ? parts.slice(0, 2).join('/') : parts[0];
|
|
28
|
+
}
|
|
29
|
+
/** Package names an esbuild failure message could not resolve */
|
|
30
|
+
export function unresolvedPackages(message) {
|
|
31
|
+
const names = new Set();
|
|
32
|
+
for (const match of message.matchAll(/Could not resolve "([^"]+)"/g)) {
|
|
33
|
+
const specifier = match[1];
|
|
34
|
+
if (!specifier.startsWith('.') && !specifier.startsWith('/') && !specifier.startsWith('node:')) {
|
|
35
|
+
names.add(packageNameOf(specifier));
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
return [...names].sort();
|
|
39
|
+
}
|
|
40
|
+
/** Packages a bundle of `entryFile` cannot resolve; empty when it builds */
|
|
41
|
+
export async function probeUnresolved(entryFile, nodePaths) {
|
|
42
|
+
try {
|
|
43
|
+
await build({
|
|
44
|
+
entryPoints: [entryFile],
|
|
45
|
+
bundle: true,
|
|
46
|
+
write: false,
|
|
47
|
+
platform: 'node',
|
|
48
|
+
format: 'esm',
|
|
49
|
+
nodePaths,
|
|
50
|
+
logLevel: 'silent',
|
|
51
|
+
});
|
|
52
|
+
return [];
|
|
53
|
+
}
|
|
54
|
+
catch (error) {
|
|
55
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
56
|
+
const names = unresolvedPackages(message);
|
|
57
|
+
if (!names.length) {
|
|
58
|
+
throw error;
|
|
59
|
+
}
|
|
60
|
+
return names;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
function declaredRanges(dir) {
|
|
64
|
+
try {
|
|
65
|
+
const pkg = JSON.parse(readFileSync(join(dir, 'package.json'), 'utf8'));
|
|
66
|
+
return { ...(pkg.peerDependencies ?? {}), ...(pkg.dependencies ?? {}) };
|
|
67
|
+
}
|
|
68
|
+
catch {
|
|
69
|
+
return {};
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
function depsManifest(depsDir) {
|
|
73
|
+
try {
|
|
74
|
+
return JSON.parse(readFileSync(join(depsDir, 'package.json'), 'utf8'))
|
|
75
|
+
.dependencies ?? {};
|
|
76
|
+
}
|
|
77
|
+
catch {
|
|
78
|
+
return {};
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
/** Adds `names` to `<packageDir>/.deps` and installs it, pinned to the ranges the package declares */
|
|
82
|
+
export async function installEntryDependencies(packageDir, names, timeoutMs = 300_000) {
|
|
83
|
+
if (!names.length) {
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
const ranges = declaredRanges(packageDir);
|
|
87
|
+
const depsDir = join(packageDir, DEPS_DIR);
|
|
88
|
+
mkdirSync(depsDir, { recursive: true });
|
|
89
|
+
const dependencies = { ...depsManifest(depsDir) };
|
|
90
|
+
for (const name of names) {
|
|
91
|
+
dependencies[name] = ranges[name] ?? '*';
|
|
92
|
+
}
|
|
93
|
+
writeFileSync(join(depsDir, 'package.json'), JSON.stringify({
|
|
94
|
+
name: 'adaptable-mcp-entry-deps',
|
|
95
|
+
private: true,
|
|
96
|
+
description: 'Runtime dependencies of the aql and upgrade entries, installed by @adaptabletools/adaptable-mcp',
|
|
97
|
+
dependencies: Object.fromEntries(Object.entries(dependencies).sort(([a], [b]) => a.localeCompare(b))),
|
|
98
|
+
}, null, 2));
|
|
99
|
+
await exec(NPM, ['install', '--prefix', depsDir, '--no-package-lock', '--ignore-scripts', '--omit=dev', '--omit=peer', '--no-audit', '--no-fund', '--silent'], { cwd: depsDir, timeoutMs });
|
|
100
|
+
}
|
|
101
|
+
const MAX_ROUNDS = 5;
|
|
102
|
+
/** Installs whatever the package's entries need to bundle; no-op for packages without entries */
|
|
103
|
+
export async function prepareEntries(packageDir) {
|
|
104
|
+
const entries = ENTRY_FILES.filter((file) => existsSync(join(packageDir, file)));
|
|
105
|
+
const installed = [];
|
|
106
|
+
const nodePaths = entryNodePaths(packageDir);
|
|
107
|
+
for (const entry of entries) {
|
|
108
|
+
for (let round = 0;; round++) {
|
|
109
|
+
const missing = await probeUnresolved(join(packageDir, entry), nodePaths);
|
|
110
|
+
if (!missing.length) {
|
|
111
|
+
break;
|
|
112
|
+
}
|
|
113
|
+
if (round >= MAX_ROUNDS) {
|
|
114
|
+
throw new Error(`${entry} still cannot resolve ${missing.join(', ')} after ${MAX_ROUNDS} install rounds.`);
|
|
115
|
+
}
|
|
116
|
+
await installEntryDependencies(packageDir, missing);
|
|
117
|
+
installed.push(...missing);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
return { entries: [...entries], installed };
|
|
121
|
+
}
|
|
122
|
+
//# sourceMappingURL=prepare.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prepare.js","sourceRoot":"","sources":["../../../src/core/packages/prepare.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The npm registry as the resolver sees it (plan §7.3, step 3): list the
|
|
3
|
+
* library's versions, `npm pack` one into the cache and make its entries
|
|
4
|
+
* bundle-able (`prepare.ts`). Goes through the `npm` CLI so `HTTPS_PROXY` and
|
|
5
|
+
* `.npmrc` (registry, auth) are honoured without reimplementing them; `tar`
|
|
6
|
+
* extracts the tarball.
|
|
7
|
+
*/
|
|
8
|
+
import { mkdirSync, mkdtempSync, renameSync, rmSync } from 'node:fs';
|
|
9
|
+
import { tmpdir } from 'node:os';
|
|
10
|
+
import { dirname, join } from 'node:path';
|
|
11
|
+
import { LIBRARY_PACKAGE } from '../constants.js';
|
|
12
|
+
import { CapabilityError } from '../envelope.js';
|
|
13
|
+
import { packageCacheDir } from './cache.js';
|
|
14
|
+
import { exec, NPM } from './exec.js';
|
|
15
|
+
import { prepareEntries } from './prepare.js';
|
|
16
|
+
function networkError(action, error) {
|
|
17
|
+
const detail = error instanceof Error ? error.message : String(error);
|
|
18
|
+
return new CapabilityError('NETWORK_REQUIRED', `Could not ${action} from the npm registry: ${detail}`, 'Check registry access (HTTPS_PROXY, .npmrc), or run `adaptable cache add <major>` on a connected machine and copy the cache.');
|
|
19
|
+
}
|
|
20
|
+
/** The real registry, through the npm CLI */
|
|
21
|
+
export function npmRegistry(options = {}) {
|
|
22
|
+
const execOptions = { cwd: options.cwd, timeoutMs: options.timeoutMs ?? 120_000 };
|
|
23
|
+
return {
|
|
24
|
+
async view() {
|
|
25
|
+
let raw;
|
|
26
|
+
try {
|
|
27
|
+
raw = await exec(NPM, ['view', LIBRARY_PACKAGE, 'versions', 'dist-tags', '--json'], execOptions);
|
|
28
|
+
}
|
|
29
|
+
catch (error) {
|
|
30
|
+
throw networkError(`read the versions of ${LIBRARY_PACKAGE}`, error);
|
|
31
|
+
}
|
|
32
|
+
const parsed = JSON.parse(raw);
|
|
33
|
+
const versions = Array.isArray(parsed.versions) ? parsed.versions : parsed.versions ? [parsed.versions] : [];
|
|
34
|
+
return { versions, distTags: parsed['dist-tags'] ?? {} };
|
|
35
|
+
},
|
|
36
|
+
async fetch(version) {
|
|
37
|
+
const target = packageCacheDir(version);
|
|
38
|
+
const staging = mkdtempSync(join(tmpdir(), 'adaptable-pack-'));
|
|
39
|
+
try {
|
|
40
|
+
let raw;
|
|
41
|
+
try {
|
|
42
|
+
raw = await exec(NPM, ['pack', `${LIBRARY_PACKAGE}@${version}`, '--pack-destination', staging, '--json', '--silent'], execOptions);
|
|
43
|
+
}
|
|
44
|
+
catch (error) {
|
|
45
|
+
throw networkError(`download ${LIBRARY_PACKAGE}@${version}`, error);
|
|
46
|
+
}
|
|
47
|
+
const [{ filename }] = JSON.parse(raw);
|
|
48
|
+
const extracted = join(staging, 'pkg');
|
|
49
|
+
mkdirSync(extracted);
|
|
50
|
+
try {
|
|
51
|
+
await exec('tar', ['-xzf', join(staging, filename), '-C', extracted, '--strip-components=1'], execOptions);
|
|
52
|
+
}
|
|
53
|
+
catch (error) {
|
|
54
|
+
throw new CapabilityError('PACKAGE_REQUIRED', `Downloaded ${LIBRARY_PACKAGE}@${version} but could not extract it: ${error instanceof Error ? error.message : String(error)}`, 'A `tar` executable is needed on PATH; alternatively run `npm i -D @adaptabletools/adaptable@<major>` in the project.');
|
|
55
|
+
}
|
|
56
|
+
// install the entries' runtime dependencies while still in staging, so a
|
|
57
|
+
// half-prepared package never lands in the cache
|
|
58
|
+
try {
|
|
59
|
+
await prepareEntries(extracted);
|
|
60
|
+
}
|
|
61
|
+
catch (error) {
|
|
62
|
+
throw networkError(`install the dependencies of ${LIBRARY_PACKAGE}@${version}'s entries`, error);
|
|
63
|
+
}
|
|
64
|
+
mkdirSync(dirname(target), { recursive: true });
|
|
65
|
+
rmSync(target, { recursive: true, force: true });
|
|
66
|
+
renameSync(extracted, target);
|
|
67
|
+
return target;
|
|
68
|
+
}
|
|
69
|
+
finally {
|
|
70
|
+
rmSync(staging, { recursive: true, force: true });
|
|
71
|
+
}
|
|
72
|
+
},
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/core/packages/registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Code truth (plan §7.3): which `@adaptabletools/adaptable` a call uses.
|
|
3
|
+
*
|
|
4
|
+
* Two requirements exist. The *types* package is the major being checked (its
|
|
5
|
+
* `types.d.ts` describes that version). The *engine* package is any major ≥ 24,
|
|
6
|
+
* because the `aql` and `upgrade` entries exist only there — a 23 project never
|
|
7
|
+
* uses its own package as the engine. Resolution for either, in order:
|
|
8
|
+
* 1. the project's installed package when it satisfies the requirement (codeSource: installed)
|
|
9
|
+
* 2. the newest satisfying version in the cache (codeSource: cached)
|
|
10
|
+
* 3. unless --offline, the newest satisfying version from the registry (codeSource: cached)
|
|
11
|
+
* 4. PACKAGE_REQUIRED
|
|
12
|
+
*/
|
|
13
|
+
import { existsSync, readFileSync } from 'node:fs';
|
|
14
|
+
import { dirname, join, resolve } from 'node:path';
|
|
15
|
+
import { ENGINE_FLOOR, LIBRARY_PACKAGE } from '../constants.js';
|
|
16
|
+
import { CapabilityError } from '../envelope.js';
|
|
17
|
+
import { listCachedPackages } from './cache.js';
|
|
18
|
+
import { npmRegistry } from './registry.js';
|
|
19
|
+
import { majorOfVersion, newestSatisfying } from './versions.js';
|
|
20
|
+
export function requirementSatisfied(requirement, major) {
|
|
21
|
+
return requirement.kind === 'types' ? major === requirement.major : major >= ENGINE_FLOOR;
|
|
22
|
+
}
|
|
23
|
+
export function describeRequirement(requirement) {
|
|
24
|
+
return requirement.kind === 'types'
|
|
25
|
+
? `${LIBRARY_PACKAGE} ${requirement.major}.x (the types of the checked major)`
|
|
26
|
+
: `${LIBRARY_PACKAGE} ${ENGINE_FLOOR} or later (the engine with the aql and upgrade entries)`;
|
|
27
|
+
}
|
|
28
|
+
/** The library installed for a project: the nearest `node_modules/@adaptabletools/adaptable` at or above it */
|
|
29
|
+
export function findInstalledLibrary(projectDir) {
|
|
30
|
+
let dir = resolve(projectDir);
|
|
31
|
+
for (;;) {
|
|
32
|
+
const candidate = join(dir, 'node_modules', LIBRARY_PACKAGE);
|
|
33
|
+
if (existsSync(join(candidate, 'package.json'))) {
|
|
34
|
+
try {
|
|
35
|
+
const { version } = JSON.parse(readFileSync(join(candidate, 'package.json'), 'utf8'));
|
|
36
|
+
if (version) {
|
|
37
|
+
return { version, dir: candidate };
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
catch {
|
|
41
|
+
// unreadable package.json: keep walking
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
const parent = dirname(dir);
|
|
45
|
+
if (parent === dir) {
|
|
46
|
+
return undefined;
|
|
47
|
+
}
|
|
48
|
+
dir = parent;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
export async function resolvePackage(requirement, options = {}) {
|
|
52
|
+
const installed = options.installed !== undefined
|
|
53
|
+
? options.installed ?? undefined
|
|
54
|
+
: options.projectDir
|
|
55
|
+
? findInstalledLibrary(options.projectDir)
|
|
56
|
+
: undefined;
|
|
57
|
+
const installedMajor = installed ? majorOfVersion(installed.version) : undefined;
|
|
58
|
+
if (installed && installedMajor !== undefined && requirementSatisfied(requirement, installedMajor)) {
|
|
59
|
+
return { name: LIBRARY_PACKAGE, ...installed, source: 'installed' };
|
|
60
|
+
}
|
|
61
|
+
const cached = listCachedPackages();
|
|
62
|
+
const cachedVersion = newestSatisfying(cached.map((p) => p.version), (major) => requirementSatisfied(requirement, major));
|
|
63
|
+
if (cachedVersion) {
|
|
64
|
+
const hit = cached.find((p) => p.version === cachedVersion);
|
|
65
|
+
return { name: LIBRARY_PACKAGE, version: hit.version, dir: hit.dir, source: 'cached' };
|
|
66
|
+
}
|
|
67
|
+
const hint = requirement.kind === 'types'
|
|
68
|
+
? `Run \`adaptable cache add ${requirement.major}\` (needs registry access) or \`npm i -D ${LIBRARY_PACKAGE}@${requirement.major}\`.`
|
|
69
|
+
: `Run \`adaptable cache add ${ENGINE_FLOOR}\` (needs registry access) or \`npm i -D ${LIBRARY_PACKAGE}@${ENGINE_FLOOR}\`.`;
|
|
70
|
+
const have = installed ? `the installed ${installed.version} does not satisfy it` : 'nothing is installed';
|
|
71
|
+
if (options.offline) {
|
|
72
|
+
throw new CapabilityError('PACKAGE_REQUIRED', `No ${describeRequirement(requirement)} is installed or cached (${have}), and --offline prevents fetching one.`, hint);
|
|
73
|
+
}
|
|
74
|
+
const registry = options.registry ?? npmRegistry({ cwd: options.projectDir });
|
|
75
|
+
const view = await registry.view();
|
|
76
|
+
const version = newestSatisfying(view.versions, (major) => requirementSatisfied(requirement, major));
|
|
77
|
+
if (!version) {
|
|
78
|
+
throw new CapabilityError('PACKAGE_REQUIRED', `The npm registry has no ${describeRequirement(requirement)} (${have}).`, hint);
|
|
79
|
+
}
|
|
80
|
+
const dir = await registry.fetch(version);
|
|
81
|
+
return { name: LIBRARY_PACKAGE, version, dir, source: 'cached' };
|
|
82
|
+
}
|
|
83
|
+
/** `cache add <major|version|dist-tag>`: the version to download for a user-supplied spec */
|
|
84
|
+
export function pickVersion(spec, view) {
|
|
85
|
+
if (/^\d+$/.test(spec)) {
|
|
86
|
+
const major = Number(spec);
|
|
87
|
+
return newestSatisfying(view.versions, (m) => m === major);
|
|
88
|
+
}
|
|
89
|
+
if (view.versions.includes(spec)) {
|
|
90
|
+
return spec;
|
|
91
|
+
}
|
|
92
|
+
return view.distTags[spec];
|
|
93
|
+
}
|
|
94
|
+
//# sourceMappingURL=resolve.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve.js","sourceRoot":"","sources":["../../../src/core/packages/resolve.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/** Just enough semver for choosing between library versions (prereleases sort below their release). */
|
|
2
|
+
export function parseSemver(version) {
|
|
3
|
+
const match = version.trim().match(/^v?(\d+)\.(\d+)\.(\d+)(?:-([0-9A-Za-z.-]+))?(?:\+[0-9A-Za-z.-]+)?$/);
|
|
4
|
+
if (!match) {
|
|
5
|
+
return undefined;
|
|
6
|
+
}
|
|
7
|
+
return {
|
|
8
|
+
major: Number(match[1]),
|
|
9
|
+
minor: Number(match[2]),
|
|
10
|
+
patch: Number(match[3]),
|
|
11
|
+
prerelease: match[4] ? match[4].split('.').map((p) => (/^\d+$/.test(p) ? Number(p) : p)) : [],
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
function comparePrerelease(a, b) {
|
|
15
|
+
if (!a.length && !b.length) {
|
|
16
|
+
return 0;
|
|
17
|
+
}
|
|
18
|
+
if (!a.length) {
|
|
19
|
+
return 1; // a release is newer than any of its prereleases
|
|
20
|
+
}
|
|
21
|
+
if (!b.length) {
|
|
22
|
+
return -1;
|
|
23
|
+
}
|
|
24
|
+
for (let i = 0; i < Math.max(a.length, b.length); i++) {
|
|
25
|
+
if (a[i] === undefined) {
|
|
26
|
+
return -1;
|
|
27
|
+
}
|
|
28
|
+
if (b[i] === undefined) {
|
|
29
|
+
return 1;
|
|
30
|
+
}
|
|
31
|
+
if (a[i] === b[i]) {
|
|
32
|
+
continue;
|
|
33
|
+
}
|
|
34
|
+
if (typeof a[i] === 'number' && typeof b[i] === 'number') {
|
|
35
|
+
return a[i] - b[i];
|
|
36
|
+
}
|
|
37
|
+
if (typeof a[i] === 'number') {
|
|
38
|
+
return -1;
|
|
39
|
+
}
|
|
40
|
+
if (typeof b[i] === 'number') {
|
|
41
|
+
return 1;
|
|
42
|
+
}
|
|
43
|
+
return String(a[i]) < String(b[i]) ? -1 : 1;
|
|
44
|
+
}
|
|
45
|
+
return 0;
|
|
46
|
+
}
|
|
47
|
+
/** Negative when `a` is older than `b`; unparsable versions sort first */
|
|
48
|
+
export function compareSemver(a, b) {
|
|
49
|
+
const pa = parseSemver(a);
|
|
50
|
+
const pb = parseSemver(b);
|
|
51
|
+
if (!pa || !pb) {
|
|
52
|
+
return Number(!!pa) - Number(!!pb);
|
|
53
|
+
}
|
|
54
|
+
return pa.major - pb.major || pa.minor - pb.minor || pa.patch - pb.patch || comparePrerelease(pa.prerelease, pb.prerelease);
|
|
55
|
+
}
|
|
56
|
+
export const isPrerelease = (version) => (parseSemver(version)?.prerelease.length ?? 0) > 0;
|
|
57
|
+
export const majorOfVersion = (version) => parseSemver(version)?.major;
|
|
58
|
+
/**
|
|
59
|
+
* The newest version satisfying `predicate`: the newest stable one, else the
|
|
60
|
+
* newest prerelease (so a major that only has canaries so far is still usable).
|
|
61
|
+
*/
|
|
62
|
+
export function newestSatisfying(versions, predicate) {
|
|
63
|
+
const candidates = versions.filter((v) => {
|
|
64
|
+
const major = majorOfVersion(v);
|
|
65
|
+
return major !== undefined && predicate(major);
|
|
66
|
+
});
|
|
67
|
+
const sorted = [...candidates].sort(compareSemver);
|
|
68
|
+
const stable = sorted.filter((v) => !isPrerelease(v));
|
|
69
|
+
return (stable.length ? stable : sorted).at(-1);
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=versions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"versions.js","sourceRoot":"","sources":["../../../src/core/packages/versions.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hidden capability used by the registry, binding and parity tests: echoes its
|
|
3
|
+
* input together with the resolved context, so every transport can be checked
|
|
4
|
+
* end to end without a real capability.
|
|
5
|
+
*/
|
|
6
|
+
import { z } from 'zod';
|
|
7
|
+
import { registerCapability } from './capabilities.js';
|
|
8
|
+
import { ok } from './envelope.js';
|
|
9
|
+
registerCapability({
|
|
10
|
+
name: 'ping',
|
|
11
|
+
description: 'Echoes a message with the resolved context. Test-only.',
|
|
12
|
+
cli: { command: ['ping'], positionals: ['message'] },
|
|
13
|
+
mcp: null,
|
|
14
|
+
hidden: true,
|
|
15
|
+
input: z.object({ message: z.string().default('pong') }),
|
|
16
|
+
output: z.object({ message: z.string(), cwd: z.string() }),
|
|
17
|
+
run: async (input, ctx) => {
|
|
18
|
+
const { context, warnings } = await ctx.resolveContext();
|
|
19
|
+
return ok({ message: input.message, cwd: ctx.cwd }, { resolvedContext: context, warnings });
|
|
20
|
+
},
|
|
21
|
+
});
|
|
22
|
+
//# sourceMappingURL=ping.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ping.js","sourceRoot":"","sources":["../../src/core/ping.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,EAAE,EAAE,MAAM,eAAe,CAAC;AAEnC,kBAAkB,CAAC;IACjB,IAAI,EAAE,MAAM;IACZ,WAAW,EAAE,wDAAwD;IACrE,GAAG,EAAE,EAAE,OAAO,EAAE,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,CAAC,SAAS,CAAC,EAAE;IACpD,GAAG,EAAE,IAAI;IACT,MAAM,EAAE,IAAI;IACZ,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;IACxD,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;IAC1D,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;QACxB,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,MAAM,GAAG,CAAC,cAAc,EAAE,CAAC;QACzD,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,EAAE,EAAE,eAAe,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC9F,CAAC;CACF,CAAC,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Side-effect imports that populate the registry. Every capability module
|
|
3
|
+
* registers itself on import; add new ones here so `src/core/index.ts` sees them.
|
|
4
|
+
*/
|
|
5
|
+
import './anonymise/capabilities.js';
|
|
6
|
+
import './aql/capabilities.js';
|
|
7
|
+
import './changes/capabilities.js';
|
|
8
|
+
import './compat/capabilities.js';
|
|
9
|
+
import './context/capabilities.js';
|
|
10
|
+
import './convert/capabilities.js';
|
|
11
|
+
import './docs/capabilities.js';
|
|
12
|
+
import './migrate/capabilities.js';
|
|
13
|
+
import './packages/capabilities.js';
|
|
14
|
+
import './ping.js';
|
|
15
|
+
import './scaffold/capabilities.js';
|
|
16
|
+
import './setup/capabilities.js';
|
|
17
|
+
import './state/capabilities.js';
|
|
18
|
+
//# sourceMappingURL=register.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"register.js","sourceRoot":"","sources":["../../src/core/register.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,6BAA6B,CAAC;AACrC,OAAO,uBAAuB,CAAC;AAC/B,OAAO,2BAA2B,CAAC;AACnC,OAAO,0BAA0B,CAAC;AAClC,OAAO,2BAA2B,CAAC;AACnC,OAAO,2BAA2B,CAAC;AACnC,OAAO,wBAAwB,CAAC;AAChC,OAAO,2BAA2B,CAAC;AACnC,OAAO,4BAA4B,CAAC;AACpC,OAAO,WAAW,CAAC;AACnB,OAAO,4BAA4B,CAAC;AACpC,OAAO,yBAAyB,CAAC;AACjC,OAAO,yBAAyB,CAAC"}
|