@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.
Files changed (49) hide show
  1. package/dist/config.d.ts +112 -0
  2. package/dist/config.d.ts.map +1 -1
  3. package/dist/config.js +56 -0
  4. package/dist/config.js.map +1 -1
  5. package/dist/core.d.ts +136 -4
  6. package/dist/index.d.ts +2 -2
  7. package/dist/index.d.ts.map +1 -1
  8. package/dist/index.js +1 -1
  9. package/dist/index.js.map +1 -1
  10. package/dist/pipeline/build.d.ts +159 -1
  11. package/dist/pipeline/build.d.ts.map +1 -1
  12. package/dist/pipeline/build.js +413 -9
  13. package/dist/pipeline/build.js.map +1 -1
  14. package/dist/pipeline/discover.d.ts +20 -13
  15. package/dist/pipeline/discover.d.ts.map +1 -1
  16. package/dist/pipeline/discover.js +53 -32
  17. package/dist/pipeline/discover.js.map +1 -1
  18. package/dist/pipeline/load-config.d.ts +62 -2
  19. package/dist/pipeline/load-config.d.ts.map +1 -1
  20. package/dist/pipeline/load-config.js +147 -30
  21. package/dist/pipeline/load-config.js.map +1 -1
  22. package/dist/pipeline/operations.d.ts +4 -2
  23. package/dist/pipeline/operations.d.ts.map +1 -1
  24. package/dist/pipeline/operations.js +9 -4
  25. package/dist/pipeline/operations.js.map +1 -1
  26. package/dist/pipeline/scaffold.d.ts.map +1 -1
  27. package/dist/pipeline/scaffold.js +55 -26
  28. package/dist/pipeline/scaffold.js.map +1 -1
  29. package/dist/pipeline/types.d.ts +13 -3
  30. package/dist/pipeline/types.d.ts.map +1 -1
  31. package/dist/pipeline/types.js +1 -0
  32. package/dist/pipeline/types.js.map +1 -1
  33. package/dist/pipeline/validate.d.ts +12 -2
  34. package/dist/pipeline/validate.d.ts.map +1 -1
  35. package/dist/pipeline/validate.js +342 -38
  36. package/dist/pipeline/validate.js.map +1 -1
  37. package/dist/targets/codex/scaffold.d.ts +31 -0
  38. package/dist/targets/codex/scaffold.d.ts.map +1 -0
  39. package/dist/targets/codex/scaffold.js +47 -0
  40. package/dist/targets/codex/scaffold.js.map +1 -0
  41. package/dist/targets/codex/schemas.d.ts +70 -0
  42. package/dist/targets/codex/schemas.d.ts.map +1 -0
  43. package/dist/targets/codex/schemas.js +153 -0
  44. package/dist/targets/codex/schemas.js.map +1 -0
  45. package/dist/targets/codex/validate.d.ts +25 -0
  46. package/dist/targets/codex/validate.d.ts.map +1 -0
  47. package/dist/targets/codex/validate.js +117 -0
  48. package/dist/targets/codex/validate.js.map +1 -0
  49. 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 two targets.
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
- /** Minimal Zod schema for marketplace.json. Loose to tolerate extra metadata fields. */
66
- const marketplaceSchema = z
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 `<repoRoot>/.claude-plugin/marketplace.json`'s
337
- * plugins array with name matching directory basename and source pointing at `./plugins/<name>`.
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
- const checks = [
348
- {
349
- target: 'claude',
350
- marketplacePath: path.join(repoRoot, '.claude-plugin', 'marketplace.json'),
351
- },
352
- {
353
- target: 'cursor',
354
- marketplacePath: path.join(repoRoot, '.cursor-plugin', 'marketplace.json'),
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 parsed = marketplaceSchema.safeParse(raw);
368
- if (!parsed.success) {
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 (!matchingEntry) {
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 normalizedActual = matchingEntry.source.startsWith('./')
387
- ? matchingEntry.source.slice(2)
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 '${matchingEntry.source}' but expected '${expectedSource}'.`, `Update the source to '${expectedSource}'.`));
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 (matchingEntry) {
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: pluginName,
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
- const { repoRoot, distDir, pluginDirs } = discoverPlugins(targetPath);
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
- findings.push(...validateMarketplaceRegistration(pluginDir, repoRoot, envelope));
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":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,MAAM,CAAC;AAC1C,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE5C,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,EACL,oBAAoB,EACpB,kBAAkB,EAClB,0BAA0B,EAC1B,sBAAsB,GACvB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAGrE,8EAA8E;AAC9E,iCAAiC;AACjC,8EAA8E;AAE9E;;;;GAIG;AACH,MAAM,sBAAsB,GAA+B;IACzD,MAAM,EAAE;QACN,4BAA4B;QAC5B,gBAAgB;QAChB,mBAAmB;QACnB,mBAAmB;KACpB;IACD,MAAM,EAAE,CAAC,4BAA4B,EAAE,gBAAgB,CAAC;IACxD,MAAM,EAAE,CAAC,uBAAuB,EAAE,WAAW,CAAC;IAC9C,IAAI,EAAE,CAAC,UAAU,EAAE,UAAU,CAAC;IAC9B,MAAM,EAAE,EAAE;CACX,CAAC;AAEF;;;GAGG;AACH,MAAM,gBAAgB,GAA0C;IAC9D,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE;CACnD,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAA+B;IAC7D,MAAM,EAAE,CAAC,4BAA4B,CAAC;IACtC,MAAM,EAAE,CAAC,4BAA4B,CAAC;IACtC,MAAM,EAAE,CAAC,uBAAuB,CAAC;IACjC,IAAI,EAAE,CAAC,UAAU,CAAC;IAClB,MAAM,EAAE,EAAE;CACX,CAAC;AAEF,8EAA8E;AAC9E,mBAAmB;AACnB,8EAA8E;AAE9E,wFAAwF;AACxF,MAAM,iBAAiB,GAAG,CAAC;KACxB,MAAM,CAAC;IACN,OAAO,EAAE,CAAC,CAAC,KAAK,CACd,CAAC;SACE,MAAM,CAAC;QACN,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;QAChB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;KACnB,CAAC;SACD,KAAK,EAAE,CACX;CACF,CAAC;KACD,KAAK,EAAE,CAAC;AAEX,kEAAkE;AAClE,MAAM,eAAe,GAAG,CAAC;KACtB,MAAM,CAAC;IACN,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE;CACzD,CAAC;KACD,KAAK,EAAE,CAAC;AAEX,oEAAoE;AACpE,SAAS,WAAW,CAAC,QAAgB;IACnC,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAY,CAAC;IACnE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,SAAS,mBAAmB,CAAC,QAAgB;IAC3C,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACnD,MAAM,KAAK,GAAG,2BAA2B,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACxD,IAAI,CAAC,KAAK;YAAE,OAAO,SAAS,CAAC;QAC7B,OAAO,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAY,CAAC;IAC9C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,4BAA4B;AAC5B,SAAS,IAAI,CAAC,IAAqB,EAAE,MAAc,EAAE,OAAe,EAAE,IAAa;IACjF,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;AAC9F,CAAC;AAED,8EAA8E;AAC9E,wBAAwB;AACxB,8EAA8E;AAE9E;;;;;;GAMG;AACH,MAAM,UAAU,qBAAqB,CAAC,SAAkB,EAAE,UAAkB;IAC1E,IAAI,CAAC;QACH,0FAA0F;QAC1F,wEAAwE;QACxE,YAAY,CAAC,SAA4B,CAAC,CAAC;QAC3C,OAAO,EAAE,CAAC;IACZ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,sDAAsD;QACtD,IAAI,GAAG,YAAY,CAAC,CAAC,QAAQ,EAAE,CAAC;YAC9B,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;gBAC9B,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;gBAC1E,OAAO,IAAI,CACT,kBAAkB,EAClB,UAAU,EACV,yBAAyB,SAAS,KAAK,KAAK,CAAC,OAAO,EAAE,CACvD,CAAC;YACJ,CAAC,CAAC,CAAC;QACL,CAAC;QACD,yDAAyD;QACzD,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjE,OAAO,CAAC,IAAI,CAAC,kBAAkB,EAAE,UAAU,EAAE,wBAAwB,OAAO,EAAE,CAAC,CAAC,CAAC;IACnF,CAAC;AACH,CAAC;AAED,8EAA8E;AAC9E,4BAA4B;AAC5B,8EAA8E;AAE9E;;;;;GAKG;AACH,MAAM,UAAU,yBAAyB,CACvC,SAAiB,EACjB,QAA6B;IAE7B,MAAM,QAAQ,GAAc,EAAE,CAAC;IAC/B,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;IACtC,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IAE5C,wDAAwD;IACxD,KAAK,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,sBAAsB,CAGpE,EAAE,CAAC;QACJ,IAAI,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC;YAAE,SAAS;QACtC,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YACjC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;YAC5C,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;gBACxB,QAAQ,CAAC,IAAI,CACX,IAAI,CACF,oBAAoB,EACpB,UAAU,EACV,aAAa,QAAQ,wBAAwB,MAAM,mCAAmC,EACtF,WAAW,QAAQ,aAAa,MAAM,2CAA2C,CAClF,CACF,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAED,yEAAyE;IACzE,KAAK,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,gBAAgB,EAAE,CAAC;QAC/C,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QACxC,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAClE,QAAQ,CAAC,IAAI,CACX,IAAI,CACF,oBAAoB,EACpB,UAAU,EACV,aAAa,IAAI,yBAAyB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,+BAA+B,EACzF,WAAW,IAAI,6BAA6B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,2CAA2C,CACxG,CACF,CAAC;QACJ,CAAC;IACH,CAAC;IAED,+DAA+D;IAC/D,KAAK,MAAM,MAAM,IAAI,QAAQ,EAAE,CAAC;QAC9B,MAAM,QAAQ,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC;QAC7C,KAAK,MAAM,QAAQ,IAAI,QAAQ,EAAE,CAAC;YAChC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;YAC5C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;gBACzB,QAAQ,CAAC,IAAI,CACX,IAAI,CACF,oBAAoB,EACpB,UAAU,EACV,WAAW,MAAM,uDAAuD,QAAQ,eAAe,EAC/F,WAAW,QAAQ,qBAAqB,MAAM,WAAW,CAC1D,CACF,CAAC;YACJ,CAAC;QACH,CAAC;QAED,+EAA+E;QAC/E,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;YACxB,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;YACjD,IAAI,QAAQ,GAAG,KAAK,CAAC;YACrB,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC7B,IAAI,CAAC;oBACH,MAAM,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,SAAS,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;oBACnE,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;wBAC7B,IAAI,MAAM,CAAC,WAAW,EAAE,EAAE,CAAC;4BACzB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;4BAC9D,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;gCAC3B,QAAQ,GAAG,IAAI,CAAC;gCAChB,MAAM;4BACR,CAAC;wBACH,CAAC;oBACH,CAAC;gBACH,CAAC;gBAAC,MAAM,CAAC;oBACP,4CAA4C;gBAC9C,CAAC;YACH,CAAC;YACD,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,QAAQ,CAAC,IAAI,CACX,IAAI,CACF,oBAAoB,EACpB,UAAU,EACV,uFAAuF,EACvF,iEAAiE,CAClE,CACF,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,8EAA8E;AAC9E,0BAA0B;AAC1B,8EAA8E;AAE9E;;;;;;GAMG;AACH,MAAM,UAAU,uBAAuB,CACrC,SAAiB,EACjB,QAA6B;IAE7B,MAAM,QAAQ,GAAc,EAAE,CAAC;IAC/B,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IAE9C,KAAK,MAAM,MAAM,IAAI,QAAQ,EAAE,CAAC;QAC9B,QAAQ,MAAM,EAAE,CAAC;YACf,KAAK,QAAQ,CAAC,CAAC,CAAC;gBACd,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,4BAA4B,CAAC,CAAC;gBACxE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC;oBAAE,MAAM;gBACxC,MAAM,QAAQ,GAAG,WAAW,CAAC,YAAY,CAAC,CAAC;gBAC3C,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;gBACrF,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS;oBAAE,MAAM;gBAC7D,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;oBACtC,QAAQ,CAAC,IAAI,CACX,IAAI,CACF,kBAAkB,EAClB,YAAY,EACZ,0CAA0C,MAAM,CAAC,IAAI,CAAC,IAAI,8BAA8B,YAAY,IAAI,CACzG,CACF,CAAC;gBACJ,CAAC;gBACD,MAAM;YACR,CAAC;YACD,KAAK,QAAQ,CAAC,CAAC,CAAC;gBACd,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,4BAA4B,CAAC,CAAC;gBACxE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC;oBAAE,MAAM;gBACxC,MAAM,QAAQ,GAAG,WAAW,CAAC,YAAY,CAAC,CAAC;gBAC3C,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;gBACrF,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS;oBAAE,MAAM;gBAC7D,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;oBACtC,QAAQ,CAAC,IAAI,CACX,IAAI,CACF,kBAAkB,EAClB,YAAY,EACZ,0CAA0C,MAAM,CAAC,IAAI,CAAC,IAAI,8BAA8B,YAAY,IAAI,CACzG,CACF,CAAC;gBACJ,CAAC;gBACD,MAAM;YACR,CAAC;YACD,KAAK,QAAQ,CAAC,CAAC,CAAC;gBACd,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,uBAAuB,CAAC,CAAC;gBACnE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC;oBAAE,MAAM;gBACxC,MAAM,QAAQ,GAAG,WAAW,CAAC,YAAY,CAAC,CAAC;gBAC3C,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;gBAC1E,IAAI,CAAC,MAAM,CAAC,OAAO;oBAAE,MAAM;gBAC3B,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;oBACtC,QAAQ,CAAC,IAAI,CACX,IAAI,CACF,kBAAkB,EAClB,YAAY,EACZ,qCAAqC,MAAM,CAAC,IAAI,CAAC,IAAI,8BAA8B,YAAY,IAAI,CACpG,CACF,CAAC;gBACJ,CAAC;gBACD,MAAM;YACR,CAAC;YACD,KAAK,MAAM,CAAC,CAAC,CAAC;gBACZ,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;gBACrD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC;oBAAE,MAAM;gBACvC,MAAM,EAAE,GAAG,mBAAmB,CAAC,WAAW,CAAC,CAAC;gBAC5C,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;gBACpE,IAAI,CAAC,MAAM,CAAC,OAAO;oBAAE,MAAM;gBAC3B,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;oBACtC,QAAQ,CAAC,IAAI,CACX,IAAI,CACF,kBAAkB,EAClB,YAAY,EACZ,oCAAoC,MAAM,CAAC,IAAI,CAAC,IAAI,8BAA8B,YAAY,IAAI,CACnG,CACF,CAAC;gBACJ,CAAC;gBACD,MAAM;YACR,CAAC;YACD,KAAK,QAAQ,CAAC,CAAC,CAAC;gBACd,mDAAmD;gBACnD,MAAM;YACR,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,8EAA8E;AAC9E,qBAAqB;AACrB,8EAA8E;AAE9E;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB,CAAC,SAAiB,EAAE,QAA6B;IACjF,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IAC5C,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;IAEtC,MAAM,iBAAiB,GAAG,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACjF,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAExC,2EAA2E;IAC3E,IAAI,CAAC,iBAAiB,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,CAAC;IAE9C,MAAM,mBAAmB,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;IAC9D,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;IAErD,yFAAyF;IACzF,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC;QAAE,OAAO,EAAE,CAAC;IAElF,MAAM,eAAe,GAAG,WAAW,CAAC,mBAAmB,CAAC,CAAC;IACzD,MAAM,OAAO,GAAG,WAAW,CAAC,WAAW,CAAC,CAAC;IAEzC,MAAM,kBAAkB,GAAG,eAAe,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;IACtE,MAAM,UAAU,GAAG,eAAe,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IAEtD,IAAI,CAAC,kBAAkB,CAAC,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO;QAAE,OAAO,EAAE,CAAC;IAElE,MAAM,gBAAgB,GAAG,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACtF,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAEtE,IAAI,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;QAAE,OAAO,EAAE,CAAC;IAE7E,MAAM,kBAAkB,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IACjF,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IAEzE,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,IAAI,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAClC,OAAO,CAAC,IAAI,CAAC,oBAAoB,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACrE,CAAC;IACD,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1B,OAAO,CAAC,IAAI,CAAC,mBAAmB,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC5D,CAAC;IAED,OAAO;QACL,IAAI,CACF,cAAc,EACd,UAAU,EACV,+DAA+D,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EACpF,wDAAwD,CACzD;KACF,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,kCAAkC;AAClC,8EAA8E;AAE9E;;;;;;;;;GASG;AACH,MAAM,UAAU,+BAA+B,CAC7C,SAAiB,EACjB,QAAgB,EAChB,QAA6B;IAE7B,MAAM,QAAQ,GAAc,EAAE,CAAC;IAC/B,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IAC5C,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;IAEtC,MAAM,MAAM,GAAG;QACb;YACE,MAAM,EAAE,QAAoB;YAC5B,eAAe,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,gBAAgB,EAAE,kBAAkB,CAAC;SAC3E;QACD;YACE,MAAM,EAAE,QAAoB;YAC5B,eAAe,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,gBAAgB,EAAE,kBAAkB,CAAC;SAC3E;KACF,CAAC;IAEF,KAAK,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,IAAI,MAAM,EAAE,CAAC;QACjD,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAE3C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;YACpC,IAAI,UAAU,EAAE,CAAC;gBACf,QAAQ,CAAC,IAAI,CACX,IAAI,CACF,0BAA0B,EAC1B,UAAU,EACV,WAAW,MAAM,sDAAsD,eAAe,mBAAmB,EACzG,wCAAwC,eAAe,IAAI,CAC5D,CACF,CAAC;YACJ,CAAC;YACD,+DAA+D;YAC/D,SAAS;QACX,CAAC;QAED,MAAM,GAAG,GAAG,WAAW,CAAC,eAAe,CAAC,CAAC;QACzC,MAAM,MAAM,GAAG,iBAAiB,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QAEhD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,IAAI,UAAU,EAAE,CAAC;gBACf,QAAQ,CAAC,IAAI,CACX,IAAI,CACF,0BAA0B,EAC1B,UAAU,EACV,qCAAqC,eAAe,IAAI,CACzD,CACF,CAAC;YACJ,CAAC;YACD,SAAS;QACX,CAAC;QAED,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC;QAEhC,uEAAuE;QACvE,6DAA6D;QAC7D,MAAM,cAAc,GAAG,aAAa,UAAU,EAAE,CAAC;QACjD,MAAM,kBAAkB,GAAG,WAAW,UAAU,EAAE,CAAC;QAEnD,MAAM,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC;QAEjE,IAAI,UAAU,EAAE,CAAC;YACf,IAAI,CAAC,aAAa,EAAE,CAAC;gBACnB,QAAQ,CAAC,IAAI,CACX,IAAI,CACF,0BAA0B,EAC1B,UAAU,EACV,WAAW,UAAU,uBAAuB,eAAe,IAAI,EAC/D,2BAA2B,UAAU,iBAAiB,cAAc,yBAAyB,CAC9F,CACF,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,+BAA+B;gBAC/B,MAAM,gBAAgB,GAAG,aAAa,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC;oBAC5D,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;oBAC/B,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC;gBACzB,IAAI,gBAAgB,KAAK,kBAAkB,EAAE,CAAC;oBAC5C,QAAQ,CAAC,IAAI,CACX,IAAI,CACF,0BAA0B,EAC1B,UAAU,EACV,WAAW,UAAU,SAAS,eAAe,iBAAiB,aAAa,CAAC,MAAM,mBAAmB,cAAc,IAAI,EACvH,yBAAyB,cAAc,IAAI,CAC5C,CACF,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC;aAAM,CAAC;YACN,mDAAmD;YACnD,IAAI,aAAa,EAAE,CAAC;gBAClB,QAAQ,CAAC,IAAI,CACX,IAAI,CACF,0BAA0B,EAC1B,UAAU,EACV,WAAW,UAAU,iBAAiB,eAAe,iBAAiB,MAAM,mCAAmC,EAC/G,WAAW,UAAU,kCAAkC,MAAM,2CAA2C,CACzG,CACF,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,8EAA8E;AAC9E,sBAAsB;AACtB,8EAA8E;AAE9E;;;;;;;GAOG;AACH,MAAM,UAAU,mBAAmB,CACjC,SAAiB,EACjB,QAAgB,EAChB,QAA6B;IAE7B,OAAO;QACL,GAAG,yBAAyB,CAAC,SAAS,EAAE,QAAQ,CAAC;QACjD,GAAG,uBAAuB,CAAC,SAAS,EAAE,QAAQ,CAAC;QAC/C,GAAG,kBAAkB,CAAC,SAAS,EAAE,QAAQ,CAAC;QAC1C,GAAG,+BAA+B,CAAC,SAAS,EAAE,QAAQ,EAAE,QAAQ,CAAC;KAClE,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,uDAAuD;AACvD,8EAA8E;AAE9E;;;;GAIG;AACH,MAAM,iBAAiB,GAAuD;IAC5E,MAAM,EAAE,oBAAoB;IAC5B,MAAM,EAAE,oBAAoB;IAC5B,MAAM,EAAE,oBAAoB;IAC5B,IAAI,EAAE,kBAAkB;IACxB,MAAM,EAAE,oBAAoB;CAC7B,CAAC;AAEF;;;GAGG;AACH,SAAS,wBAAwB,CAAC,SAAiB,EAAE,QAA6B;IAChF,MAAM,QAAQ,GAAc,EAAE,CAAC;IAC/B,KAAK,MAAM,MAAM,IAAI,QAAQ,EAAE,CAAC;QAC9B,QAAQ,CAAC,IAAI,CAAC,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;IACzD,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,8EAA8E;AAC9E,0BAA0B;AAC1B,8EAA8E;AAE9E;;;GAGG;AACH,SAAS,gBAAgB,CACvB,EAAW,EACX,UAAkB,EAClB,OAAe,EACf,IAAa;IAEb,OAAO;QACL,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM;QAC9B,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,UAAU;QAClB,OAAO;QACP,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACxC,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,SAAS,cAAc,CACrB,SAAiB,EACjB,OAAe,EACf,QAA6B,EAC7B,EAAW;IAEX,MAAM,QAAQ,GAAc,EAAE,CAAC;IAC/B,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IAE5C,6EAA6E;IAC7E,IAAI,aAA4D,CAAC;IACjE,IAAI,CAAC;QACH,aAAa,GAAG,0BAA0B,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IAClE,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,uFAAuF;QACvF,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjE,OAAO;YACL,gBAAgB,CACd,EAAE,EACF,UAAU,EACV,2CAA2C,OAAO,EAAE,EACpD,8CAA8C,CAC/C;SACF,CAAC;IACJ,CAAC;IAED,KAAK,MAAM,QAAQ,IAAI,aAAa,EAAE,CAAC;QACrC,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;QACvD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YACrC,QAAQ,CAAC,IAAI,CACX,gBAAgB,CACd,EAAE,EACF,UAAU,EACV,mBAAmB,GAAG,eAAe,EACrC,oCAAoC,CACrC,CACF,CAAC;YACF,SAAS;QACX,CAAC;QACD,MAAM,MAAM,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC1D,IAAI,MAAM,KAAK,QAAQ,CAAC,eAAe,EAAE,CAAC;YACxC,QAAQ,CAAC,IAAI,CACX,gBAAgB,CACd,EAAE,EACF,UAAU,EACV,mBAAmB,GAAG,8FAA8F,EACpH,yDAAyD,QAAQ,CAAC,MAAM,4BAA4B,CACrG,CACF,CAAC;QACJ,CAAC;IACH,CAAC;IAED,6EAA6E;IAC7E,KAAK,MAAM,MAAM,IAAI,kBAAkB,CAAC,SAAS,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,CAAC;QACtE,IAAI,OAA2B,CAAC;QAChC,IAAI,CAAC;YACH,OAAO,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAAC;YACzC,MAAM,KAAK,GAAG,YAAY,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YACpD,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;gBACxB,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;gBACvE,QAAQ,CAAC,IAAI,CACX,gBAAgB,CACd,EAAE,EACF,UAAU,EACV,+BAA+B,OAAO,iEAAiE,EACvG,wCAAwC,MAAM,CAAC,MAAM,UAAU,CAChE,CACF,CAAC;YACJ,CAAC;QACH,CAAC;gBAAS,CAAC;YACT,IAAI,OAAO,KAAK,SAAS,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;gBACpD,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAC1C,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;GAGG;AACH,SAAS,YAAY,CAAC,SAAiB,EAAE,WAAmB;IAC1D,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC,CAAC;IACxD,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,oBAAoB,CAAC,WAAW,CAAC,CAAC,CAAC;IAC5D,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;IAEhC,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;QACzB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACvB,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACf,SAAS;QACX,CAAC;QACD,MAAM,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC;QACrD,MAAM,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC;QACvD,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;YAAE,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACnC,CAAC;IACD,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC3B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACvC,CAAC;IAED,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;AAC3B,CAAC;AAED,8EAA8E;AAC9E,+DAA+D;AAC/D,8EAA8E;AAE9E;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,UAAkB,EAClB,IAAyC;IAEzC,MAAM,EAAE,GAAG,IAAI,EAAE,EAAE,IAAI,KAAK,CAAC;IAC7B,MAAM,aAAa,GAAG,IAAI,EAAE,aAAa,IAAI,KAAK,CAAC;IAEnD,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,eAAe,CAAC,UAAU,CAAC,CAAC;IACtE,MAAM,QAAQ,GAAc,EAAE,CAAC;IAE/B,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QAE5C,2EAA2E;QAC3E,IAAI,QAA6B,CAAC;QAClC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,SAAS,CAAC,CAAC;YACjD,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC;QAC5B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,yFAAyF;YACzF,+EAA+E;YAC/E,MAAM,OAAO,GACX,GAAG,YAAY,eAAe;gBAC5B,CAAC,CAAC,GAAG,CAAC,OAAO;gBACb,CAAC,CAAC,GAAG,YAAY,KAAK;oBACpB,CAAC,CAAC,GAAG,CAAC,OAAO;oBACb,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACpB,QAAQ,CAAC,IAAI,CAAC;gBACZ,QAAQ,EAAE,MAAM;gBAChB,IAAI,EAAE,kBAAkB;gBACxB,MAAM,EAAE,UAAU;gBAClB,OAAO;aACR,CAAC,CAAC;YACH,SAAS;QACX,CAAC;QAED,2EAA2E;QAC3E,MAAM,cAAc,GAAG,wBAAwB,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QACrE,QAAQ,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,CAAC;QACjC,MAAM,sBAAsB,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC;QAEjF,2EAA2E;QAC3E,QAAQ,CAAC,IAAI,CAAC,GAAG,yBAAyB,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC;QAEjE,4FAA4F;QAC5F,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,sBAAsB,EAAE,CAAC;YACnD,QAAQ,CAAC,IAAI,CAAC,GAAG,uBAAuB,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC;YAC/D,QAAQ,CAAC,IAAI,CAAC,GAAG,kBAAkB,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC;YAC1D,QAAQ,CAAC,IAAI,CAAC,GAAG,+BAA+B,CAAC,SAAS,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;QACnF,CAAC;QAED,4EAA4E;QAC5E,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,QAAQ,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC;QACrE,CAAC;IACH,CAAC;IAED,MAAM,MAAM,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC;IAC5D,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;AAC9B,CAAC"}
1
+ {"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/pipeline/validate.ts"],"names":[],"mappings":"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"}