@ai-plugin-marketplace/core 0.1.0 → 0.2.0
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/dist/config.d.ts +112 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +56 -0
- package/dist/config.js.map +1 -1
- package/dist/core.d.ts +136 -4
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/pipeline/build.d.ts +159 -1
- package/dist/pipeline/build.d.ts.map +1 -1
- package/dist/pipeline/build.js +413 -9
- package/dist/pipeline/build.js.map +1 -1
- package/dist/pipeline/discover.d.ts +20 -13
- package/dist/pipeline/discover.d.ts.map +1 -1
- package/dist/pipeline/discover.js +53 -32
- package/dist/pipeline/discover.js.map +1 -1
- package/dist/pipeline/load-config.d.ts +62 -2
- package/dist/pipeline/load-config.d.ts.map +1 -1
- package/dist/pipeline/load-config.js +147 -30
- package/dist/pipeline/load-config.js.map +1 -1
- package/dist/pipeline/operations.d.ts +4 -2
- package/dist/pipeline/operations.d.ts.map +1 -1
- package/dist/pipeline/operations.js +9 -4
- package/dist/pipeline/operations.js.map +1 -1
- package/dist/pipeline/scaffold.d.ts.map +1 -1
- package/dist/pipeline/scaffold.js +55 -26
- package/dist/pipeline/scaffold.js.map +1 -1
- package/dist/pipeline/types.d.ts +13 -3
- package/dist/pipeline/types.d.ts.map +1 -1
- package/dist/pipeline/types.js +1 -0
- package/dist/pipeline/types.js.map +1 -1
- package/dist/pipeline/validate.d.ts +12 -2
- package/dist/pipeline/validate.d.ts.map +1 -1
- package/dist/pipeline/validate.js +342 -38
- package/dist/pipeline/validate.js.map +1 -1
- package/dist/targets/codex/scaffold.d.ts +31 -0
- package/dist/targets/codex/scaffold.d.ts.map +1 -0
- package/dist/targets/codex/scaffold.js +47 -0
- package/dist/targets/codex/scaffold.js.map +1 -0
- package/dist/targets/codex/schemas.d.ts +70 -0
- package/dist/targets/codex/schemas.d.ts.map +1 -0
- package/dist/targets/codex/schemas.js +153 -0
- package/dist/targets/codex/schemas.js.map +1 -0
- package/dist/targets/codex/validate.d.ts +25 -0
- package/dist/targets/codex/validate.d.ts.map +1 -0
- package/dist/targets/codex/validate.js +117 -0
- package/dist/targets/codex/validate.js.map +1 -0
- package/package.json +1 -1
|
@@ -13,13 +13,14 @@ import { parse as parseYaml } from 'yaml';
|
|
|
13
13
|
import { z } from 'zod';
|
|
14
14
|
import { defineConfig } from '../config.js';
|
|
15
15
|
import { validateClaudePlugin } from '../targets/claude/validate.js';
|
|
16
|
+
import { validateCodexPlugin } from '../targets/codex/validate.js';
|
|
16
17
|
import { validateCursorPlugin } from '../targets/cursor/validate.js';
|
|
17
18
|
import { validateGeminiPlugin } from '../targets/gemini/validate.js';
|
|
18
19
|
import { validateKiroPlugin } from '../targets/kiro/validate.js';
|
|
19
20
|
import { validateVercelPlugin } from '../targets/vercel/validate.js';
|
|
20
|
-
import { collectFilesRelative, computeDistBundles, computePluginHookArtifacts, regenerateBundleToTemp, } from './build.js';
|
|
21
|
+
import { collectFilesRelative, collectRegistryPlugins, computeDistBundles, computePluginHookArtifacts, computeRegistryArtifacts, computeRootArtifacts, detectRootCollisions, managedRegistryPaths, readRootManifestPaths, regenerateBundleToTemp, rootManifestPath, serializeRootManifest, } from './build.js';
|
|
21
22
|
import { discoverPlugins } from './discover.js';
|
|
22
|
-
import { ConfigLoadError, loadPluginConfig } from './load-config.js';
|
|
23
|
+
import { ConfigLoadError, createConfigCache, loadPluginConfig, loadWorkspaceConfig, } from './load-config.js';
|
|
23
24
|
// ---------------------------------------------------------------------------
|
|
24
25
|
// Module-level artifact mappings
|
|
25
26
|
// ---------------------------------------------------------------------------
|
|
@@ -35,6 +36,7 @@ const TARGET_OWNED_ARTIFACTS = {
|
|
|
35
36
|
'hooks/claude.yaml',
|
|
36
37
|
'hooks/claude.json',
|
|
37
38
|
],
|
|
39
|
+
codex: ['.codex-plugin/plugin.json', '.codex-plugin'],
|
|
38
40
|
cursor: ['.cursor-plugin/plugin.json', '.cursor-plugin'],
|
|
39
41
|
gemini: ['gemini-extension.json', 'GEMINI.md'],
|
|
40
42
|
kiro: ['POWER.md', 'mcp.json'],
|
|
@@ -42,10 +44,10 @@ const TARGET_OWNED_ARTIFACTS = {
|
|
|
42
44
|
};
|
|
43
45
|
/**
|
|
44
46
|
* Shared artifacts that require at least one of the listed targets in the envelope.
|
|
45
|
-
* `.mcp.json` is the Claude/Cursor MCP config format, shared between those
|
|
47
|
+
* `.mcp.json` is the Claude/Cursor/Codex MCP config format, shared between those targets.
|
|
46
48
|
*/
|
|
47
49
|
const SHARED_ARTIFACTS = [
|
|
48
|
-
{ file: '.mcp.json', anyOf: ['claude', 'cursor'] },
|
|
50
|
+
{ file: '.mcp.json', anyOf: ['claude', 'codex', 'cursor'] },
|
|
49
51
|
];
|
|
50
52
|
/**
|
|
51
53
|
* Minimum required artifacts for each target. Missing any of these when the target is
|
|
@@ -54,6 +56,7 @@ const SHARED_ARTIFACTS = [
|
|
|
54
56
|
*/
|
|
55
57
|
export const TARGET_MIN_REQUIRED = {
|
|
56
58
|
claude: ['.claude-plugin/plugin.json'],
|
|
59
|
+
codex: ['.codex-plugin/plugin.json'],
|
|
57
60
|
cursor: ['.cursor-plugin/plugin.json'],
|
|
58
61
|
gemini: ['gemini-extension.json'],
|
|
59
62
|
kiro: ['POWER.md'],
|
|
@@ -62,8 +65,11 @@ export const TARGET_MIN_REQUIRED = {
|
|
|
62
65
|
// ---------------------------------------------------------------------------
|
|
63
66
|
// Internal helpers
|
|
64
67
|
// ---------------------------------------------------------------------------
|
|
65
|
-
/**
|
|
66
|
-
|
|
68
|
+
/**
|
|
69
|
+
* Minimal Zod schema for a string-source marketplace.json (Claude/Cursor). Loose to tolerate
|
|
70
|
+
* extra metadata fields. Each plugin entry's `source` is the canonical `./plugins/<name>` string.
|
|
71
|
+
*/
|
|
72
|
+
const stringSourceMarketplaceSchema = z
|
|
67
73
|
.object({
|
|
68
74
|
plugins: z.array(z
|
|
69
75
|
.object({
|
|
@@ -73,6 +79,29 @@ const marketplaceSchema = z
|
|
|
73
79
|
.loose()),
|
|
74
80
|
})
|
|
75
81
|
.loose();
|
|
82
|
+
/**
|
|
83
|
+
* Minimal Zod schema for the Codex repo marketplace at `.agents/plugins/marketplace.json`. Its
|
|
84
|
+
* entries differ from Claude/Cursor: `source` is an object `{ source, path }` (the comparable
|
|
85
|
+
* path lives at `source.path`), plus `policy`/`category` metadata that is tolerated but not
|
|
86
|
+
* checked here. Loose to tolerate extra fields.
|
|
87
|
+
*
|
|
88
|
+
* @see https://developers.openai.com/codex/plugins/build
|
|
89
|
+
*/
|
|
90
|
+
const objectSourceMarketplaceSchema = z
|
|
91
|
+
.object({
|
|
92
|
+
plugins: z.array(z
|
|
93
|
+
.object({
|
|
94
|
+
name: z.string(),
|
|
95
|
+
source: z
|
|
96
|
+
.object({
|
|
97
|
+
source: z.string(),
|
|
98
|
+
path: z.string(),
|
|
99
|
+
})
|
|
100
|
+
.loose(),
|
|
101
|
+
})
|
|
102
|
+
.loose()),
|
|
103
|
+
})
|
|
104
|
+
.loose();
|
|
76
105
|
/** Minimal schema for MCP config files (.mcp.json / mcp.json). */
|
|
77
106
|
const mcpConfigSchema = z
|
|
78
107
|
.object({
|
|
@@ -234,6 +263,19 @@ export function validateNameConsistency(pluginDir, envelope) {
|
|
|
234
263
|
}
|
|
235
264
|
break;
|
|
236
265
|
}
|
|
266
|
+
case 'codex': {
|
|
267
|
+
const manifestPath = path.join(pluginDir, '.codex-plugin/plugin.json');
|
|
268
|
+
if (!fs.existsSync(manifestPath))
|
|
269
|
+
break;
|
|
270
|
+
const manifest = tryReadJson(manifestPath);
|
|
271
|
+
const parsed = z.object({ name: z.string().optional() }).loose().safeParse(manifest);
|
|
272
|
+
if (!parsed.success || parsed.data.name === undefined)
|
|
273
|
+
break;
|
|
274
|
+
if (parsed.data.name !== expectedName) {
|
|
275
|
+
findings.push(hard('name-consistency', expectedName, `'.codex-plugin/plugin.json' has name '${parsed.data.name}' but plugin directory is '${expectedName}'.`));
|
|
276
|
+
}
|
|
277
|
+
break;
|
|
278
|
+
}
|
|
237
279
|
case 'cursor': {
|
|
238
280
|
const manifestPath = path.join(pluginDir, '.cursor-plugin/plugin.json');
|
|
239
281
|
if (!fs.existsSync(manifestPath))
|
|
@@ -330,31 +372,87 @@ export function validateMcpKeySync(pluginDir, envelope) {
|
|
|
330
372
|
// ---------------------------------------------------------------------------
|
|
331
373
|
// validateMarketplaceRegistration
|
|
332
374
|
// ---------------------------------------------------------------------------
|
|
375
|
+
/**
|
|
376
|
+
* The marketplace registries this validator knows about, one descriptor per registry-backed
|
|
377
|
+
* target. Claude/Cursor use string-source entries at `.<target>-plugin/marketplace.json`; Codex
|
|
378
|
+
* uses an object-source entry (`source: { source, path }`) at `.agents/plugins/marketplace.json`.
|
|
379
|
+
*
|
|
380
|
+
* Keeping the per-registry differences (path + source extraction) in data lets the validation
|
|
381
|
+
* loop below stay a single, shape-agnostic pass rather than duplicating it per registry.
|
|
382
|
+
*
|
|
383
|
+
* @see https://developers.openai.com/codex/plugins/build
|
|
384
|
+
*/
|
|
385
|
+
const MARKETPLACE_REGISTRY_CHECKS = [
|
|
386
|
+
{
|
|
387
|
+
target: 'claude',
|
|
388
|
+
marketplaceRel: ['.claude-plugin', 'marketplace.json'],
|
|
389
|
+
extractSource: extractStringSource,
|
|
390
|
+
},
|
|
391
|
+
{
|
|
392
|
+
target: 'cursor',
|
|
393
|
+
marketplaceRel: ['.cursor-plugin', 'marketplace.json'],
|
|
394
|
+
extractSource: extractStringSource,
|
|
395
|
+
},
|
|
396
|
+
{
|
|
397
|
+
target: 'codex',
|
|
398
|
+
marketplaceRel: ['.agents', 'plugins', 'marketplace.json'],
|
|
399
|
+
extractSource: extractCodexSource,
|
|
400
|
+
},
|
|
401
|
+
];
|
|
402
|
+
/** Extract the string `source` of the matching entry from a string-source marketplace file. */
|
|
403
|
+
function extractStringSource(raw, pluginName) {
|
|
404
|
+
const parsed = stringSourceMarketplaceSchema.safeParse(raw);
|
|
405
|
+
if (!parsed.success)
|
|
406
|
+
return { status: 'parse-error' };
|
|
407
|
+
const entry = parsed.data.plugins.find((p) => p.name === pluginName);
|
|
408
|
+
if (!entry)
|
|
409
|
+
return { status: 'not-listed' };
|
|
410
|
+
return { status: 'found', source: entry.source };
|
|
411
|
+
}
|
|
412
|
+
/** Extract the matching entry's `source.path` from the Codex object-source marketplace file. */
|
|
413
|
+
function extractCodexSource(raw, pluginName) {
|
|
414
|
+
const parsed = objectSourceMarketplaceSchema.safeParse(raw);
|
|
415
|
+
if (!parsed.success)
|
|
416
|
+
return { status: 'parse-error' };
|
|
417
|
+
const entry = parsed.data.plugins.find((p) => p.name === pluginName);
|
|
418
|
+
if (!entry)
|
|
419
|
+
return { status: 'not-listed' };
|
|
420
|
+
return { status: 'found', source: entry.source.path };
|
|
421
|
+
}
|
|
333
422
|
/**
|
|
334
423
|
* Verify the plugin is listed in the appropriate template-level marketplace.json files.
|
|
335
424
|
*
|
|
336
|
-
* - If `claude` is in the envelope, the plugin MUST appear in
|
|
337
|
-
* plugins array with
|
|
425
|
+
* - If `claude` is in the envelope, the plugin MUST appear in
|
|
426
|
+
* `<repoRoot>/.claude-plugin/marketplace.json`'s plugins array with a string `source` pointing
|
|
427
|
+
* at the plugin directory relative to the repo root (`./plugins/<name>` by default, or the
|
|
428
|
+
* relocated `pluginsRoot` for an embedded marketplace).
|
|
338
429
|
* - If `cursor` is in the envelope, same check against `<repoRoot>/.cursor-plugin/marketplace.json`.
|
|
430
|
+
* - If `codex` is in the envelope, the plugin MUST appear in
|
|
431
|
+
* `<repoRoot>/.agents/plugins/marketplace.json` with an object `source` whose `path` is
|
|
432
|
+
* `./plugins/<name>`.
|
|
339
433
|
* - If a target is NOT in the envelope, the plugin MUST NOT be listed in that marketplace.
|
|
340
434
|
*
|
|
435
|
+
* The per-registry path and source extraction are data-driven (see
|
|
436
|
+
* {@link MARKETPLACE_REGISTRY_CHECKS}); the loop body is identical across registries so the same
|
|
437
|
+
* `not-listed` / wrong-path / present-but-not-in-envelope findings are emitted regardless of
|
|
438
|
+
* source shape.
|
|
439
|
+
*
|
|
341
440
|
* Emits `marketplace-registration` findings.
|
|
342
441
|
*/
|
|
343
442
|
export function validateMarketplaceRegistration(pluginDir, repoRoot, envelope) {
|
|
344
443
|
const findings = [];
|
|
345
444
|
const pluginName = path.basename(pluginDir);
|
|
346
445
|
const envelopeSet = new Set(envelope);
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
for (const { target, marketplacePath } of checks) {
|
|
446
|
+
// The expected source is the plugin directory's path relative to the repo root (the location
|
|
447
|
+
// hosts resolve `source` against). Default topology → `plugins/<name>`; an embedded marketplace
|
|
448
|
+
// with a relocated `pluginsRoot` → e.g. `agent-plugins/<name>`. POSIX separators are forced so
|
|
449
|
+
// the comparison is stable on Windows. Both `./<rel>` and `<rel>` are accepted; the canonical
|
|
450
|
+
// form carries the `./` prefix (§4.4).
|
|
451
|
+
const relFromRepo = path.relative(repoRoot, pluginDir).split(path.sep).join('/');
|
|
452
|
+
const expectedSource = `./${relFromRepo}`;
|
|
453
|
+
const normalizedExpected = relFromRepo;
|
|
454
|
+
for (const { target, marketplaceRel, extractSource } of MARKETPLACE_REGISTRY_CHECKS) {
|
|
455
|
+
const marketplacePath = path.join(repoRoot, ...marketplaceRel);
|
|
358
456
|
const inEnvelope = envelopeSet.has(target);
|
|
359
457
|
if (!fs.existsSync(marketplacePath)) {
|
|
360
458
|
if (inEnvelope) {
|
|
@@ -364,36 +462,29 @@ export function validateMarketplaceRegistration(pluginDir, repoRoot, envelope) {
|
|
|
364
462
|
continue;
|
|
365
463
|
}
|
|
366
464
|
const raw = tryReadJson(marketplacePath);
|
|
367
|
-
const
|
|
368
|
-
if (
|
|
465
|
+
const extraction = extractSource(raw, pluginName);
|
|
466
|
+
if (extraction.status === 'parse-error') {
|
|
369
467
|
if (inEnvelope) {
|
|
370
468
|
findings.push(hard('marketplace-registration', pluginName, `Failed to parse marketplace file '${marketplacePath}'.`));
|
|
371
469
|
}
|
|
372
470
|
continue;
|
|
373
471
|
}
|
|
374
|
-
const { plugins } = parsed.data;
|
|
375
|
-
// Normalize: both `./plugins/<name>` and `plugins/<name>` are accepted
|
|
376
|
-
// The canonical expected form is `./plugins/<name>` per §4.4
|
|
377
|
-
const expectedSource = `./plugins/${pluginName}`;
|
|
378
|
-
const normalizedExpected = `plugins/${pluginName}`;
|
|
379
|
-
const matchingEntry = plugins.find((p) => p.name === pluginName);
|
|
380
472
|
if (inEnvelope) {
|
|
381
|
-
if (
|
|
473
|
+
if (extraction.status === 'not-listed') {
|
|
382
474
|
findings.push(hard('marketplace-registration', pluginName, `Plugin '${pluginName}' is not listed in '${marketplacePath}'.`, `Add an entry with name '${pluginName}' and source '${expectedSource}' to the plugins array.`));
|
|
383
475
|
}
|
|
384
476
|
else {
|
|
385
|
-
// Entry exists — verify source
|
|
386
|
-
const
|
|
387
|
-
|
|
388
|
-
: matchingEntry.source;
|
|
477
|
+
// Entry exists — verify source (normalise a leading `./`).
|
|
478
|
+
const { source } = extraction;
|
|
479
|
+
const normalizedActual = source.startsWith('./') ? source.slice(2) : source;
|
|
389
480
|
if (normalizedActual !== normalizedExpected) {
|
|
390
|
-
findings.push(hard('marketplace-registration', pluginName, `Plugin '${pluginName}' in '${marketplacePath}' has source '${
|
|
481
|
+
findings.push(hard('marketplace-registration', pluginName, `Plugin '${pluginName}' in '${marketplacePath}' has source '${source}' but expected '${expectedSource}'.`, `Update the source to '${expectedSource}'.`));
|
|
391
482
|
}
|
|
392
483
|
}
|
|
393
484
|
}
|
|
394
485
|
else {
|
|
395
486
|
// NOT in envelope — must not appear in marketplace
|
|
396
|
-
if (
|
|
487
|
+
if (extraction.status === 'found') {
|
|
397
488
|
findings.push(hard('marketplace-registration', pluginName, `Plugin '${pluginName}' appears in '${marketplacePath}' but target '${target}' is not in the support envelope.`, `Remove '${pluginName}' from the marketplace or add '${target}' to the targets array in aipm.config.ts.`));
|
|
398
489
|
}
|
|
399
490
|
}
|
|
@@ -429,6 +520,7 @@ export function validateCrossTarget(pluginDir, repoRoot, envelope) {
|
|
|
429
520
|
*/
|
|
430
521
|
const TARGET_VALIDATORS = {
|
|
431
522
|
claude: validateClaudePlugin,
|
|
523
|
+
codex: validateCodexPlugin,
|
|
432
524
|
cursor: validateCursorPlugin,
|
|
433
525
|
gemini: validateGeminiPlugin,
|
|
434
526
|
kiro: validateKiroPlugin,
|
|
@@ -456,7 +548,8 @@ function freshnessFinding(ci, pluginName, message, hint) {
|
|
|
456
548
|
return {
|
|
457
549
|
severity: ci ? 'hard' : 'soft',
|
|
458
550
|
code: 'freshness',
|
|
459
|
-
plugin
|
|
551
|
+
// Repo-level freshness (e.g. registries) has no owning plugin — omit the key entirely.
|
|
552
|
+
...(pluginName !== undefined ? { plugin: pluginName } : {}),
|
|
460
553
|
message,
|
|
461
554
|
...(hint !== undefined ? { hint } : {}),
|
|
462
555
|
};
|
|
@@ -519,6 +612,153 @@ function checkFreshness(pluginDir, distDir, envelope, ci) {
|
|
|
519
612
|
}
|
|
520
613
|
return findings;
|
|
521
614
|
}
|
|
615
|
+
/**
|
|
616
|
+
* Repo-level freshness check for the generated marketplace registries (design spec §"Marketplace
|
|
617
|
+
* registries"). Runs ONLY when an `aipm.workspace.ts` is present (registry generation opted in).
|
|
618
|
+
*
|
|
619
|
+
* Registries are sentinel-less, so freshness is a whole-file regenerate-and-byte-compare: recompute
|
|
620
|
+
* the expected bytes for every registry-backed target that some plugin declares, then compare to
|
|
621
|
+
* the committed file. A missing file or any byte difference (drift, hand-edit, stale entry) is a
|
|
622
|
+
* `freshness` finding — this is what subsumes the source-correctness half of
|
|
623
|
+
* `validateMarketplaceRegistration` (a wrong `source` is now stale, not a separate finding).
|
|
624
|
+
*
|
|
625
|
+
* Generation logic is shared with `runBuild` via `collectRegistryPlugins`/`computeRegistryArtifacts`
|
|
626
|
+
* so the build output and the freshness oracle cannot drift. Findings are repo-scoped (no `plugin`).
|
|
627
|
+
*/
|
|
628
|
+
async function checkRegistryFreshness(repoRoot, pluginDirs, workspace, ci, cache) {
|
|
629
|
+
let expected;
|
|
630
|
+
try {
|
|
631
|
+
const registryPlugins = await collectRegistryPlugins(repoRoot, pluginDirs, cache);
|
|
632
|
+
expected = computeRegistryArtifacts(repoRoot, registryPlugins, workspace);
|
|
633
|
+
}
|
|
634
|
+
catch (err) {
|
|
635
|
+
// A plugin config that won't load is reported per-plugin as envelope-invalid elsewhere; here
|
|
636
|
+
// we surface the inability to compute the registry oracle as repo-scoped freshness drift.
|
|
637
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
638
|
+
return [
|
|
639
|
+
freshnessFinding(ci, undefined, `Unable to compute expected marketplace registries: ${message}`, 'fix the offending aipm.config.ts and run `aipm build`.'),
|
|
640
|
+
];
|
|
641
|
+
}
|
|
642
|
+
const findings = [];
|
|
643
|
+
for (const registry of expected) {
|
|
644
|
+
const rel = path.relative(repoRoot, registry.absPath);
|
|
645
|
+
if (!fs.existsSync(registry.absPath)) {
|
|
646
|
+
findings.push(freshnessFinding(ci, undefined, `Generated registry '${rel}' is missing.`, 'run `aipm build` to generate it.'));
|
|
647
|
+
continue;
|
|
648
|
+
}
|
|
649
|
+
const onDisk = fs.readFileSync(registry.absPath, 'utf-8');
|
|
650
|
+
if (onDisk !== registry.expectedContent) {
|
|
651
|
+
findings.push(freshnessFinding(ci, undefined, `Generated registry '${rel}' is stale — it differs from what \`aipm build\` would produce (hand-edited or out of date).`, "run `aipm build` to regenerate it; edit `aipm.workspace.ts` / each plugin's `aipm.config.ts`, not the generated registry."));
|
|
652
|
+
}
|
|
653
|
+
}
|
|
654
|
+
// Orphan check: a managed registry committed for a target NO plugin declares anymore is not in
|
|
655
|
+
// `expected`, so the loop above can't see it. Flag any managed registry path that exists on disk
|
|
656
|
+
// but isn't expected — `aipm build` removes these, so its presence means the tree is stale.
|
|
657
|
+
const expectedPaths = new Set(expected.map((r) => r.absPath));
|
|
658
|
+
for (const orphan of managedRegistryPaths(repoRoot)) {
|
|
659
|
+
if (!expectedPaths.has(orphan) && fs.existsSync(orphan)) {
|
|
660
|
+
const rel = path.relative(repoRoot, orphan);
|
|
661
|
+
findings.push(freshnessFinding(ci, undefined, `Generated registry '${rel}' is stale — no plugin declares its target, so \`aipm build\` would remove it.`, 'run `aipm build` to remove the orphaned registry, or add a plugin that declares its target.'));
|
|
662
|
+
}
|
|
663
|
+
}
|
|
664
|
+
return findings;
|
|
665
|
+
}
|
|
666
|
+
/**
|
|
667
|
+
* Repo-level check for the single-artifact-host repo-root native artifacts (gemini / kiro), design
|
|
668
|
+
* spec "Phase 1". Runs ONLY when an `aipm.workspace.ts` is present (the same opt-in gate as
|
|
669
|
+
* registries). Surfaces three independent finding kinds:
|
|
670
|
+
*
|
|
671
|
+
* 1. **`single-artifact-host`** (always hard) — a host declared by more than one plugin. Comes
|
|
672
|
+
* straight from {@link computeRootArtifacts}'s N=1 gate, so build and validate agree exactly on
|
|
673
|
+
* which hosts are emittable.
|
|
674
|
+
* 2. **`root-artifact-collision`** (always hard) — a generated root path is occupied by a file the
|
|
675
|
+
* toolkit does not track as previously-generated. Detected against the committed sidecar's
|
|
676
|
+
* tracked set, mirroring build's collision guard. (A collision detected at validate time is a
|
|
677
|
+
* finding even though build would have refused to write it.)
|
|
678
|
+
* 3. **`freshness`** (hard in CI, soft locally) — for every emittable root file: missing or stale
|
|
679
|
+
* (byte-compare against `computeRootArtifacts`' bytes); for every path in the committed sidecar
|
|
680
|
+
* no longer expected but still on disk: orphaned/stale; and the sidecar manifest itself must
|
|
681
|
+
* match what `aipm build` would write.
|
|
682
|
+
*
|
|
683
|
+
* Generation logic is shared with `runBuild` via `computeRootArtifacts`/`detectRootCollisions`/
|
|
684
|
+
* `serializeRootManifest`, so the build output and the freshness oracle cannot drift. Findings are
|
|
685
|
+
* repo-scoped (no `plugin`).
|
|
686
|
+
*/
|
|
687
|
+
async function checkRootArtifactFreshness(repoRoot, pluginDirs, workspace, ci, skipFreshness, cache) {
|
|
688
|
+
let root;
|
|
689
|
+
try {
|
|
690
|
+
const plugins = await collectRegistryPlugins(repoRoot, pluginDirs, cache);
|
|
691
|
+
root = computeRootArtifacts(repoRoot, plugins, workspace);
|
|
692
|
+
}
|
|
693
|
+
catch (err) {
|
|
694
|
+
// A plugin config that won't load is reported per-plugin as envelope-invalid elsewhere; only
|
|
695
|
+
// surface the inability to compute the root oracle as freshness drift when freshness is checked.
|
|
696
|
+
if (skipFreshness)
|
|
697
|
+
return [];
|
|
698
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
699
|
+
return [
|
|
700
|
+
freshnessFinding(ci, undefined, `Unable to compute expected repo-root artifacts: ${message}`, 'fix the offending aipm.config.ts and run `aipm build`.'),
|
|
701
|
+
];
|
|
702
|
+
}
|
|
703
|
+
const findings = [];
|
|
704
|
+
// 1. N=1 gate findings (always hard, own code). Surfaced regardless of `skipFreshness` so the
|
|
705
|
+
// post-build validate (which skips freshness) still fails fast on an ambiguous host declaration.
|
|
706
|
+
findings.push(...root.findings);
|
|
707
|
+
// 2. Collision findings against the committed sidecar's tracked set (build's safety guard 3).
|
|
708
|
+
// Also surfaced regardless of `skipFreshness` — a collision is a structural refusal, not drift.
|
|
709
|
+
const priorTracked = readRootManifestPaths(repoRoot);
|
|
710
|
+
const collisions = detectRootCollisions(repoRoot, root, priorTracked);
|
|
711
|
+
const { collidedHosts } = collisions;
|
|
712
|
+
findings.push(...collisions.findings);
|
|
713
|
+
// The freshness-coded checks (missing/stale/orphan/sidecar) are skipped after a fresh build.
|
|
714
|
+
if (skipFreshness)
|
|
715
|
+
return findings;
|
|
716
|
+
// 3a. The set of paths build WOULD write this run (excluding suppressed/collided hosts) — this is
|
|
717
|
+
// the canonical expected tracked set the sidecar must match.
|
|
718
|
+
const expectedTracked = [];
|
|
719
|
+
for (const file of root.files) {
|
|
720
|
+
if (collidedHosts.has(file.host))
|
|
721
|
+
continue;
|
|
722
|
+
const rel = file.relPath;
|
|
723
|
+
expectedTracked.push(rel);
|
|
724
|
+
const abs = path.join(repoRoot, ...rel.split('/'));
|
|
725
|
+
if (!fs.existsSync(abs)) {
|
|
726
|
+
findings.push(freshnessFinding(ci, undefined, `Generated repo-root artifact '${rel}' is missing.`, 'run `aipm build` to generate it.'));
|
|
727
|
+
continue;
|
|
728
|
+
}
|
|
729
|
+
const onDisk = fs.readFileSync(abs);
|
|
730
|
+
if (!onDisk.equals(file.content)) {
|
|
731
|
+
findings.push(freshnessFinding(ci, undefined, `Generated repo-root artifact '${rel}' is stale — it differs from what \`aipm build\` would produce (hand-edited or out of date).`, "run `aipm build` to regenerate it; edit the owning plugin's source, not the generated repo-root file."));
|
|
732
|
+
}
|
|
733
|
+
}
|
|
734
|
+
// 3b. Orphans: any path the committed sidecar recorded that build would no longer write but which
|
|
735
|
+
// still sits on disk. `aipm build` removes these, so their presence means the tree is stale.
|
|
736
|
+
const expectedSet = new Set(expectedTracked);
|
|
737
|
+
for (const rel of priorTracked) {
|
|
738
|
+
if (expectedSet.has(rel))
|
|
739
|
+
continue;
|
|
740
|
+
const abs = path.join(repoRoot, ...rel.split('/'));
|
|
741
|
+
if (fs.existsSync(abs)) {
|
|
742
|
+
findings.push(freshnessFinding(ci, undefined, `Generated repo-root artifact '${rel}' is stale — it is no longer produced, so \`aipm build\` would remove it.`, 'run `aipm build` to remove the orphaned artifact.'));
|
|
743
|
+
}
|
|
744
|
+
}
|
|
745
|
+
// 3c. The sidecar manifest itself is a generated, freshness-checked artifact: its bytes must
|
|
746
|
+
// match what build would write for the expected tracked set. When build would write no artifacts
|
|
747
|
+
// AND no sidecar exists, the expected state is "no sidecar" — only flag a stale/missing sidecar
|
|
748
|
+
// when one is expected (non-empty tracked set) or one already exists on disk.
|
|
749
|
+
const manifestAbs = rootManifestPath(repoRoot);
|
|
750
|
+
const manifestExists = fs.existsSync(manifestAbs);
|
|
751
|
+
if (expectedTracked.length > 0 || manifestExists) {
|
|
752
|
+
const expectedManifest = serializeRootManifest(expectedTracked);
|
|
753
|
+
if (!manifestExists) {
|
|
754
|
+
findings.push(freshnessFinding(ci, undefined, `Generated root manifest '${path.relative(repoRoot, manifestAbs)}' is missing.`, 'run `aipm build` to generate it.'));
|
|
755
|
+
}
|
|
756
|
+
else if (fs.readFileSync(manifestAbs, 'utf-8') !== expectedManifest) {
|
|
757
|
+
findings.push(freshnessFinding(ci, undefined, `Generated root manifest '${path.relative(repoRoot, manifestAbs)}' is stale — it differs from what \`aipm build\` would produce.`, 'run `aipm build` to regenerate it.'));
|
|
758
|
+
}
|
|
759
|
+
}
|
|
760
|
+
return findings;
|
|
761
|
+
}
|
|
522
762
|
/**
|
|
523
763
|
* Compare two directory trees and return the relative paths that differ (present in only one
|
|
524
764
|
* side, or present in both with differing bytes). An empty result means the trees are identical.
|
|
@@ -568,14 +808,53 @@ function compareTrees(actualDir, expectedDir) {
|
|
|
568
808
|
export async function runValidate(targetPath, opts) {
|
|
569
809
|
const ci = opts?.ci ?? false;
|
|
570
810
|
const skipFreshness = opts?.skipFreshness ?? false;
|
|
571
|
-
|
|
811
|
+
// Discovery loads the optional `aipm.repo.ts`. An invalid repo config makes the whole repo's
|
|
812
|
+
// topology unresolvable, so surface it as a single repo-scoped `repo-config-invalid` finding
|
|
813
|
+
// (parallel to how an unloadable plugin envelope becomes `envelope-invalid`) rather than letting
|
|
814
|
+
// the thrown error escape the validator.
|
|
815
|
+
let discovery;
|
|
816
|
+
try {
|
|
817
|
+
discovery = await discoverPlugins(targetPath);
|
|
818
|
+
}
|
|
819
|
+
catch (err) {
|
|
820
|
+
if (err instanceof ConfigLoadError) {
|
|
821
|
+
return {
|
|
822
|
+
findings: [{ severity: 'hard', code: 'repo-config-invalid', message: err.message }],
|
|
823
|
+
passed: false,
|
|
824
|
+
};
|
|
825
|
+
}
|
|
826
|
+
throw err;
|
|
827
|
+
}
|
|
828
|
+
const { repoRoot, distDir, pluginDirs } = discovery;
|
|
572
829
|
const findings = [];
|
|
830
|
+
// One per-invocation config memo so each plugin's aipm.config.ts is transpiled once — reused by
|
|
831
|
+
// the main loop below and the repo-level registry freshness step (see ConfigCache).
|
|
832
|
+
const configCache = createConfigCache();
|
|
833
|
+
// Registry generation is opt-in via `aipm.workspace.ts`. When present, the marketplace registries
|
|
834
|
+
// are GENERATED, so their correctness is enforced by the repo-level freshness check below and the
|
|
835
|
+
// per-plugin `validateMarketplaceRegistration` is SKIPPED (it would otherwise double-report). When
|
|
836
|
+
// absent, the historical hand-authored-registry path runs unchanged. An invalid workspace config
|
|
837
|
+
// surfaces as a single repo-scoped finding (parallel to `repo-config-invalid`).
|
|
838
|
+
let workspace;
|
|
839
|
+
try {
|
|
840
|
+
workspace = await loadWorkspaceConfig(repoRoot);
|
|
841
|
+
}
|
|
842
|
+
catch (err) {
|
|
843
|
+
if (err instanceof ConfigLoadError) {
|
|
844
|
+
return {
|
|
845
|
+
findings: [{ severity: 'hard', code: 'repo-config-invalid', message: err.message }],
|
|
846
|
+
passed: false,
|
|
847
|
+
};
|
|
848
|
+
}
|
|
849
|
+
throw err;
|
|
850
|
+
}
|
|
851
|
+
const generatesRegistries = workspace !== undefined;
|
|
573
852
|
for (const pluginDir of pluginDirs) {
|
|
574
853
|
const pluginName = path.basename(pluginDir);
|
|
575
854
|
// ── 1. Envelope load + shape validation ─────────────────────────────────
|
|
576
855
|
let envelope;
|
|
577
856
|
try {
|
|
578
|
-
const config = await loadPluginConfig(pluginDir);
|
|
857
|
+
const config = await loadPluginConfig(pluginDir, configCache);
|
|
579
858
|
envelope = config.targets;
|
|
580
859
|
}
|
|
581
860
|
catch (err) {
|
|
@@ -604,13 +883,38 @@ export async function runValidate(targetPath, opts) {
|
|
|
604
883
|
if (envelope.length > 1 && !hasBlockingSchemaError) {
|
|
605
884
|
findings.push(...validateNameConsistency(pluginDir, envelope));
|
|
606
885
|
findings.push(...validateMcpKeySync(pluginDir, envelope));
|
|
607
|
-
|
|
886
|
+
// When registries are generated, their correctness is enforced by freshness below — skip the
|
|
887
|
+
// hand-authored-registry check to avoid double findings (design spec, locked decision 2).
|
|
888
|
+
if (!generatesRegistries) {
|
|
889
|
+
findings.push(...validateMarketplaceRegistration(pluginDir, repoRoot, envelope));
|
|
890
|
+
}
|
|
608
891
|
}
|
|
609
892
|
// ── 5. Freshness ─────────────────────────────────────────────────────────
|
|
610
893
|
if (!skipFreshness) {
|
|
611
894
|
findings.push(...checkFreshness(pluginDir, distDir, envelope, ci));
|
|
612
895
|
}
|
|
613
896
|
}
|
|
897
|
+
// ── 6. Repo-level generation checks (only when generation is opted in) ──────
|
|
898
|
+
// Registries AND single-artifact-host root artifacts are repo-scoped, so these run once per repo
|
|
899
|
+
// against EVERY plugin under the repo root — not just the plugins in `pluginDirs` (length-1 for
|
|
900
|
+
// single-plugin input). That mirrors how `runBuild` regenerates the repo-complete output, so a
|
|
901
|
+
// single-plugin validate of a repo with sibling plugins compares against the same expected bytes.
|
|
902
|
+
//
|
|
903
|
+
// The registry block is freshness-only (gated on `!skipFreshness`). The root-artifact block runs
|
|
904
|
+
// whenever a workspace is present — even under `skipFreshness` — because its `single-artifact-host`
|
|
905
|
+
// / `root-artifact-collision` findings are structural gates (not drift), and `runBuild`'s
|
|
906
|
+
// post-build validate (which skips freshness) must still fail fast on them.
|
|
907
|
+
if (workspace !== undefined) {
|
|
908
|
+
// For repo-root input, pluginDirs already covers the whole repo — reuse it (and the warm
|
|
909
|
+
// config cache) rather than re-discovering and reloading. Single-plugin input needs a
|
|
910
|
+
// repo-wide re-scan so the oracle stays repo-complete.
|
|
911
|
+
const isRepoRoot = path.resolve(targetPath) === repoRoot;
|
|
912
|
+
const allPluginDirs = isRepoRoot ? pluginDirs : (await discoverPlugins(repoRoot)).pluginDirs;
|
|
913
|
+
if (!skipFreshness) {
|
|
914
|
+
findings.push(...(await checkRegistryFreshness(repoRoot, allPluginDirs, workspace, ci, configCache)));
|
|
915
|
+
}
|
|
916
|
+
findings.push(...(await checkRootArtifactFreshness(repoRoot, allPluginDirs, workspace, ci, skipFreshness, configCache)));
|
|
917
|
+
}
|
|
614
918
|
const passed = !findings.some((f) => f.severity === 'hard');
|
|
615
919
|
return { findings, passed };
|
|
616
920
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/pipeline/validate.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/pipeline/validate.ts"],"names":[],"mappings":"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"}
|