@teamix-evo/registry 0.2.0 → 0.5.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/index.d.cts CHANGED
@@ -217,6 +217,19 @@ declare const SkillEntrySchema: z.ZodObject<{
217
217
  managedRegions: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
218
218
  /** Whether the source is a Handlebars template */
219
219
  template: z.ZodOptional<z.ZodBoolean>;
220
+ /**
221
+ * Variant identifier when this skill is bound to a specific design variant
222
+ * (e.g. `"opentrek"`, `"uni-manager"`). Optional — neutral skills (manage,
223
+ * coding-conventions, baseline design-rules) leave it unset.
224
+ *
225
+ * When present, the CLI installs this skill ONLY if the consumer's
226
+ * `.teamix-evo/tokens-lock.json` records the same variant. MUST equal
227
+ * the variant directory name in `@teamix-evo/tokens/variants/<name>/`.
228
+ *
229
+ * Mirrors `UiEntrySchema.variant` semantics in @teamix-evo/biz-ui &
230
+ * @teamix-evo/templates per ADR 0014.
231
+ */
232
+ variant: z.ZodOptional<z.ZodString>;
220
233
  }, "strip", z.ZodTypeAny, {
221
234
  id: string;
222
235
  source: string;
@@ -227,6 +240,7 @@ declare const SkillEntrySchema: z.ZodObject<{
227
240
  name: string;
228
241
  template?: boolean | undefined;
229
242
  managedRegions?: string[] | undefined;
243
+ variant?: string | undefined;
230
244
  }, {
231
245
  id: string;
232
246
  source: string;
@@ -237,10 +251,12 @@ declare const SkillEntrySchema: z.ZodObject<{
237
251
  template?: boolean | undefined;
238
252
  managedRegions?: string[] | undefined;
239
253
  ides?: ("qoder" | "claude")[] | undefined;
254
+ variant?: string | undefined;
240
255
  }>;
241
256
  /**
242
257
  * Skills package manifest schema — top-level manifest of `@teamix-evo/skills`.
243
- * Unlike design which is variant-based, skills are flat (no variants).
258
+ * Skills are stored flat in the manifest. Variant binding is expressed via
259
+ * the optional `variant` field on each entry (see SkillEntrySchema).
244
260
  */
245
261
  declare const SkillsPackageManifestSchema: z.ZodObject<{
246
262
  $schema: z.ZodOptional<z.ZodString>;
@@ -277,6 +293,19 @@ declare const SkillsPackageManifestSchema: z.ZodObject<{
277
293
  managedRegions: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
278
294
  /** Whether the source is a Handlebars template */
279
295
  template: z.ZodOptional<z.ZodBoolean>;
296
+ /**
297
+ * Variant identifier when this skill is bound to a specific design variant
298
+ * (e.g. `"opentrek"`, `"uni-manager"`). Optional — neutral skills (manage,
299
+ * coding-conventions, baseline design-rules) leave it unset.
300
+ *
301
+ * When present, the CLI installs this skill ONLY if the consumer's
302
+ * `.teamix-evo/tokens-lock.json` records the same variant. MUST equal
303
+ * the variant directory name in `@teamix-evo/tokens/variants/<name>/`.
304
+ *
305
+ * Mirrors `UiEntrySchema.variant` semantics in @teamix-evo/biz-ui &
306
+ * @teamix-evo/templates per ADR 0014.
307
+ */
308
+ variant: z.ZodOptional<z.ZodString>;
280
309
  }, "strip", z.ZodTypeAny, {
281
310
  id: string;
282
311
  source: string;
@@ -287,6 +316,7 @@ declare const SkillsPackageManifestSchema: z.ZodObject<{
287
316
  name: string;
288
317
  template?: boolean | undefined;
289
318
  managedRegions?: string[] | undefined;
319
+ variant?: string | undefined;
290
320
  }, {
291
321
  id: string;
292
322
  source: string;
@@ -297,6 +327,7 @@ declare const SkillsPackageManifestSchema: z.ZodObject<{
297
327
  template?: boolean | undefined;
298
328
  managedRegions?: string[] | undefined;
299
329
  ides?: ("qoder" | "claude")[] | undefined;
330
+ variant?: string | undefined;
300
331
  }>, "many">;
301
332
  }, "strip", z.ZodTypeAny, {
302
333
  schemaVersion: 1;
@@ -315,6 +346,7 @@ declare const SkillsPackageManifestSchema: z.ZodObject<{
315
346
  name: string;
316
347
  template?: boolean | undefined;
317
348
  managedRegions?: string[] | undefined;
349
+ variant?: string | undefined;
318
350
  }[];
319
351
  $schema?: string | undefined;
320
352
  }, {
@@ -334,6 +366,7 @@ declare const SkillsPackageManifestSchema: z.ZodObject<{
334
366
  template?: boolean | undefined;
335
367
  managedRegions?: string[] | undefined;
336
368
  ides?: ("qoder" | "claude")[] | undefined;
369
+ variant?: string | undefined;
337
370
  }[];
338
371
  $schema?: string | undefined;
339
372
  }>;
@@ -342,14 +375,23 @@ declare const SkillsPackageManifestSchema: z.ZodObject<{
342
375
  * - component: a React component (e.g. button.tsx)
343
376
  * - hook: a React hook (e.g. use-controllable.ts)
344
377
  * - util: a utility function (e.g. cn.ts)
345
- * - block: a higher-level composition (login-form, dashboard-shell). v0.x.
378
+ * - block: a higher-level composition shipped by ui or biz-ui (FilterBar,
379
+ * EmptyState, OrgPicker, ApprovalCard). Per [ADR 0014](../../../../docs/adr/0014-ui-biz-ui-templates-tier.md),
380
+ * ui ships generic blocks, biz-ui ships variant-bound business blocks.
381
+ * - template: a page-level composition shipped by `@teamix-evo/templates`
382
+ * (DashboardLayout, ListDetailPage, ...). Per ADR 0014, templates are
383
+ * variant-aware (mirror biz-ui).
346
384
  */
347
- declare const UiEntryTypeSchema: z.ZodEnum<["component", "hook", "util", "block"]>;
385
+ declare const UiEntryTypeSchema: z.ZodEnum<["component", "hook", "util", "block", "template"]>;
348
386
  /**
349
387
  * Alias keys used to resolve where an entry file lands in the user's project.
350
388
  * Each key maps to a path configured in `config.json` `packages.ui.aliases`.
389
+ *
390
+ * - `components`: src/components/ui/ (ui & biz-ui blocks default here)
391
+ * - `business`: src/components/business/ (biz-ui only — see ADR 0014)
392
+ * - `templates`: src/templates/ or src/pages/ (templates package — ADR 0014)
351
393
  */
352
- declare const UiAliasSchema: z.ZodEnum<["components", "hooks", "utils", "lib"]>;
394
+ declare const UiAliasSchema: z.ZodEnum<["components", "hooks", "utils", "lib", "business", "templates"]>;
353
395
  /**
354
396
  * A single file shipped by a UI entry.
355
397
  * Multiple files form one logical entry (rare, but supported).
@@ -358,16 +400,16 @@ declare const UiEntryFileSchema: z.ZodObject<{
358
400
  /** Source path relative to the ui package root (e.g. "src/components/button/button.tsx") */
359
401
  source: z.ZodString;
360
402
  /** Which alias this file resolves under in the consumer project */
361
- targetAlias: z.ZodEnum<["components", "hooks", "utils", "lib"]>;
403
+ targetAlias: z.ZodEnum<["components", "hooks", "utils", "lib", "business", "templates"]>;
362
404
  /** Filename written under the alias directory (e.g. "button.tsx") */
363
405
  targetName: z.ZodString;
364
406
  }, "strip", z.ZodTypeAny, {
365
407
  source: string;
366
- targetAlias: "components" | "hooks" | "utils" | "lib";
408
+ targetAlias: "components" | "hooks" | "utils" | "lib" | "business" | "templates";
367
409
  targetName: string;
368
410
  }, {
369
411
  source: string;
370
- targetAlias: "components" | "hooks" | "utils" | "lib";
412
+ targetAlias: "components" | "hooks" | "utils" | "lib" | "business" | "templates";
371
413
  targetName: string;
372
414
  }>;
373
415
  /**
@@ -379,7 +421,7 @@ declare const UiEntrySchema: z.ZodObject<{
379
421
  /** Display name (e.g. "Button") */
380
422
  name: z.ZodString;
381
423
  /** Entry type */
382
- type: z.ZodEnum<["component", "hook", "util", "block"]>;
424
+ type: z.ZodEnum<["component", "hook", "util", "block", "template"]>;
383
425
  /** One-line description for entry discovery and AI guidance */
384
426
  description: z.ZodString;
385
427
  /** Files this entry ships (typically 1) */
@@ -387,22 +429,22 @@ declare const UiEntrySchema: z.ZodObject<{
387
429
  /** Source path relative to the ui package root (e.g. "src/components/button/button.tsx") */
388
430
  source: z.ZodString;
389
431
  /** Which alias this file resolves under in the consumer project */
390
- targetAlias: z.ZodEnum<["components", "hooks", "utils", "lib"]>;
432
+ targetAlias: z.ZodEnum<["components", "hooks", "utils", "lib", "business", "templates"]>;
391
433
  /** Filename written under the alias directory (e.g. "button.tsx") */
392
434
  targetName: z.ZodString;
393
435
  }, "strip", z.ZodTypeAny, {
394
436
  source: string;
395
- targetAlias: "components" | "hooks" | "utils" | "lib";
437
+ targetAlias: "components" | "hooks" | "utils" | "lib" | "business" | "templates";
396
438
  targetName: string;
397
439
  }, {
398
440
  source: string;
399
- targetAlias: "components" | "hooks" | "utils" | "lib";
441
+ targetAlias: "components" | "hooks" | "utils" | "lib" | "business" | "templates";
400
442
  targetName: string;
401
443
  }>, "many">;
402
444
  /**
403
445
  * Optional path to an AI-readable meta document (frontmatter + Markdown).
404
- * When set, CLI install drops it at `.teamix-evo/design/components/<id>.meta.md`
405
- * for design's ai-rules to consume.
446
+ * Read directly from `@teamix-evo/ui` by MCP at runtime — no consumer-side
447
+ * copy is written (per ADR 0020 §3).
406
448
  */
407
449
  meta: z.ZodOptional<z.ZodString>;
408
450
  /** Other UI entries this one depends on (e.g. "button" depends on "cn") */
@@ -435,56 +477,727 @@ declare const UiEntrySchema: z.ZodObject<{
435
477
  * Consumers (and AI) should migrate to `replacedBy` rather than this entry.
436
478
  */
437
479
  replacedBy: z.ZodOptional<z.ZodString>;
480
+ /**
481
+ * Variant identifier when this entry is shipped from a variant-aware
482
+ * package (`@teamix-evo/biz-ui` or `@teamix-evo/templates` per ADR 0014).
483
+ * Optional — entries from `@teamix-evo/ui` (variant-agnostic) leave it unset.
484
+ * MUST equal the variant directory name when present.
485
+ */
486
+ variant: z.ZodOptional<z.ZodString>;
438
487
  }, "strip", z.ZodTypeAny, {
439
488
  id: string;
440
- type: "component" | "hook" | "util" | "block";
489
+ type: "template" | "component" | "hook" | "util" | "block";
441
490
  updateStrategy: "frozen" | "regenerable" | "managed";
442
491
  status: "stable" | "experimental" | "deprecated";
443
492
  description: string;
444
493
  name: string;
445
494
  files: {
446
495
  source: string;
447
- targetAlias: "components" | "hooks" | "utils" | "lib";
496
+ targetAlias: "components" | "hooks" | "utils" | "lib" | "business" | "templates";
497
+ targetName: string;
498
+ }[];
499
+ template?: boolean | undefined;
500
+ variant?: string | undefined;
501
+ meta?: string | undefined;
502
+ registryDependencies?: string[] | undefined;
503
+ dependencies?: Record<string, string> | undefined;
504
+ deprecatedReason?: string | undefined;
505
+ replacedBy?: string | undefined;
506
+ }, {
507
+ id: string;
508
+ type: "template" | "component" | "hook" | "util" | "block";
509
+ description: string;
510
+ name: string;
511
+ files: {
512
+ source: string;
513
+ targetAlias: "components" | "hooks" | "utils" | "lib" | "business" | "templates";
448
514
  targetName: string;
449
515
  }[];
516
+ updateStrategy?: "frozen" | "regenerable" | "managed" | undefined;
450
517
  template?: boolean | undefined;
518
+ status?: "stable" | "experimental" | "deprecated" | undefined;
519
+ variant?: string | undefined;
451
520
  meta?: string | undefined;
452
521
  registryDependencies?: string[] | undefined;
453
522
  dependencies?: Record<string, string> | undefined;
454
523
  deprecatedReason?: string | undefined;
455
524
  replacedBy?: string | undefined;
525
+ }>;
526
+ /**
527
+ * UI package manifest schema — top-level manifest of `@teamix-evo/ui`.
528
+ * Like skills, UI is flat (no variants); brand differences are absorbed by
529
+ * design tokens at the `var(--primary)` layer.
530
+ */
531
+ declare const UiPackageManifestSchema: z.ZodObject<{
532
+ $schema: z.ZodOptional<z.ZodString>;
533
+ schemaVersion: z.ZodLiteral<1>;
534
+ /** Always "ui" for this package */
535
+ package: z.ZodLiteral<"ui">;
536
+ /** Semver version of the ui package */
537
+ version: z.ZodString;
538
+ /** Engine compatibility */
539
+ engines: z.ZodObject<{
540
+ 'teamix-evo': z.ZodString;
541
+ }, "strip", z.ZodTypeAny, {
542
+ 'teamix-evo': string;
543
+ }, {
544
+ 'teamix-evo': string;
545
+ }>;
546
+ /** Active list of entries shipped (and exposed) by this package. */
547
+ entries: z.ZodArray<z.ZodObject<{
548
+ /** Unique entry identifier within the ui package (e.g. "button") */
549
+ id: z.ZodString;
550
+ /** Display name (e.g. "Button") */
551
+ name: z.ZodString;
552
+ /** Entry type */
553
+ type: z.ZodEnum<["component", "hook", "util", "block", "template"]>;
554
+ /** One-line description for entry discovery and AI guidance */
555
+ description: z.ZodString;
556
+ /** Files this entry ships (typically 1) */
557
+ files: z.ZodArray<z.ZodObject<{
558
+ /** Source path relative to the ui package root (e.g. "src/components/button/button.tsx") */
559
+ source: z.ZodString;
560
+ /** Which alias this file resolves under in the consumer project */
561
+ targetAlias: z.ZodEnum<["components", "hooks", "utils", "lib", "business", "templates"]>;
562
+ /** Filename written under the alias directory (e.g. "button.tsx") */
563
+ targetName: z.ZodString;
564
+ }, "strip", z.ZodTypeAny, {
565
+ source: string;
566
+ targetAlias: "components" | "hooks" | "utils" | "lib" | "business" | "templates";
567
+ targetName: string;
568
+ }, {
569
+ source: string;
570
+ targetAlias: "components" | "hooks" | "utils" | "lib" | "business" | "templates";
571
+ targetName: string;
572
+ }>, "many">;
573
+ /**
574
+ * Optional path to an AI-readable meta document (frontmatter + Markdown).
575
+ * Read directly from `@teamix-evo/ui` by MCP at runtime — no consumer-side
576
+ * copy is written (per ADR 0020 §3).
577
+ */
578
+ meta: z.ZodOptional<z.ZodString>;
579
+ /** Other UI entries this one depends on (e.g. "button" depends on "cn") */
580
+ registryDependencies: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
581
+ /** npm dependencies required by this entry (name → semver range) */
582
+ dependencies: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
583
+ /**
584
+ * How CLI handles this entry on `ui upgrade`.
585
+ * Defaults to `frozen` — user-owned source code, untouched after first install.
586
+ * Upgrade is handled by AI + skill flow (no CLI rewrite). See PLAN §10.9.
587
+ */
588
+ updateStrategy: z.ZodDefault<z.ZodEnum<["frozen", "regenerable", "managed"]>>;
589
+ /**
590
+ * Whether the source file should be passed through Handlebars before write.
591
+ * Most entries don't need templating (use import-rewrite transformer instead).
592
+ */
593
+ template: z.ZodOptional<z.ZodBoolean>;
594
+ /**
595
+ * Maturity / lifecycle status of this entry. Defaults to `stable`.
596
+ * See {@link UiEntryStatusSchema} for semantics.
597
+ */
598
+ status: z.ZodDefault<z.ZodEnum<["stable", "experimental", "deprecated"]>>;
599
+ /**
600
+ * Free-text rationale shown to consumers when `status` is `deprecated`.
601
+ * Should explain why the entry is going away and what replaces it.
602
+ */
603
+ deprecatedReason: z.ZodOptional<z.ZodString>;
604
+ /**
605
+ * If this entry is `deprecated`, the id of the entry that supersedes it.
606
+ * Consumers (and AI) should migrate to `replacedBy` rather than this entry.
607
+ */
608
+ replacedBy: z.ZodOptional<z.ZodString>;
609
+ /**
610
+ * Variant identifier when this entry is shipped from a variant-aware
611
+ * package (`@teamix-evo/biz-ui` or `@teamix-evo/templates` per ADR 0014).
612
+ * Optional — entries from `@teamix-evo/ui` (variant-agnostic) leave it unset.
613
+ * MUST equal the variant directory name when present.
614
+ */
615
+ variant: z.ZodOptional<z.ZodString>;
616
+ }, "strip", z.ZodTypeAny, {
617
+ id: string;
618
+ type: "template" | "component" | "hook" | "util" | "block";
619
+ updateStrategy: "frozen" | "regenerable" | "managed";
620
+ status: "stable" | "experimental" | "deprecated";
621
+ description: string;
622
+ name: string;
623
+ files: {
624
+ source: string;
625
+ targetAlias: "components" | "hooks" | "utils" | "lib" | "business" | "templates";
626
+ targetName: string;
627
+ }[];
628
+ template?: boolean | undefined;
629
+ variant?: string | undefined;
630
+ meta?: string | undefined;
631
+ registryDependencies?: string[] | undefined;
632
+ dependencies?: Record<string, string> | undefined;
633
+ deprecatedReason?: string | undefined;
634
+ replacedBy?: string | undefined;
635
+ }, {
636
+ id: string;
637
+ type: "template" | "component" | "hook" | "util" | "block";
638
+ description: string;
639
+ name: string;
640
+ files: {
641
+ source: string;
642
+ targetAlias: "components" | "hooks" | "utils" | "lib" | "business" | "templates";
643
+ targetName: string;
644
+ }[];
645
+ updateStrategy?: "frozen" | "regenerable" | "managed" | undefined;
646
+ template?: boolean | undefined;
647
+ status?: "stable" | "experimental" | "deprecated" | undefined;
648
+ variant?: string | undefined;
649
+ meta?: string | undefined;
650
+ registryDependencies?: string[] | undefined;
651
+ dependencies?: Record<string, string> | undefined;
652
+ deprecatedReason?: string | undefined;
653
+ replacedBy?: string | undefined;
654
+ }>, "many">;
655
+ /**
656
+ * Archived entries that are kept in source for Storybook documentation only
657
+ * and are NOT exposed through the active distribution chain. Per ADR 0028:
658
+ * - `teamix-evo ui add <id>` rejects ids found here unless `--include-deprecated` is passed
659
+ * - MCP `list_components` / `find_components` exclude these by default
660
+ * - Storybook keeps the story under `废弃 · Deprecated/` with a banner
661
+ * Optional for backwards compatibility — older manifests without this field
662
+ * still validate.
663
+ */
664
+ deprecatedEntries: z.ZodOptional<z.ZodArray<z.ZodObject<{
665
+ /** Unique entry identifier within the ui package (e.g. "button") */
666
+ id: z.ZodString;
667
+ /** Display name (e.g. "Button") */
668
+ name: z.ZodString;
669
+ /** Entry type */
670
+ type: z.ZodEnum<["component", "hook", "util", "block", "template"]>;
671
+ /** One-line description for entry discovery and AI guidance */
672
+ description: z.ZodString;
673
+ /** Files this entry ships (typically 1) */
674
+ files: z.ZodArray<z.ZodObject<{
675
+ /** Source path relative to the ui package root (e.g. "src/components/button/button.tsx") */
676
+ source: z.ZodString;
677
+ /** Which alias this file resolves under in the consumer project */
678
+ targetAlias: z.ZodEnum<["components", "hooks", "utils", "lib", "business", "templates"]>;
679
+ /** Filename written under the alias directory (e.g. "button.tsx") */
680
+ targetName: z.ZodString;
681
+ }, "strip", z.ZodTypeAny, {
682
+ source: string;
683
+ targetAlias: "components" | "hooks" | "utils" | "lib" | "business" | "templates";
684
+ targetName: string;
685
+ }, {
686
+ source: string;
687
+ targetAlias: "components" | "hooks" | "utils" | "lib" | "business" | "templates";
688
+ targetName: string;
689
+ }>, "many">;
690
+ /**
691
+ * Optional path to an AI-readable meta document (frontmatter + Markdown).
692
+ * Read directly from `@teamix-evo/ui` by MCP at runtime — no consumer-side
693
+ * copy is written (per ADR 0020 §3).
694
+ */
695
+ meta: z.ZodOptional<z.ZodString>;
696
+ /** Other UI entries this one depends on (e.g. "button" depends on "cn") */
697
+ registryDependencies: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
698
+ /** npm dependencies required by this entry (name → semver range) */
699
+ dependencies: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
700
+ /**
701
+ * How CLI handles this entry on `ui upgrade`.
702
+ * Defaults to `frozen` — user-owned source code, untouched after first install.
703
+ * Upgrade is handled by AI + skill flow (no CLI rewrite). See PLAN §10.9.
704
+ */
705
+ updateStrategy: z.ZodDefault<z.ZodEnum<["frozen", "regenerable", "managed"]>>;
706
+ /**
707
+ * Whether the source file should be passed through Handlebars before write.
708
+ * Most entries don't need templating (use import-rewrite transformer instead).
709
+ */
710
+ template: z.ZodOptional<z.ZodBoolean>;
711
+ /**
712
+ * Maturity / lifecycle status of this entry. Defaults to `stable`.
713
+ * See {@link UiEntryStatusSchema} for semantics.
714
+ */
715
+ status: z.ZodDefault<z.ZodEnum<["stable", "experimental", "deprecated"]>>;
716
+ /**
717
+ * Free-text rationale shown to consumers when `status` is `deprecated`.
718
+ * Should explain why the entry is going away and what replaces it.
719
+ */
720
+ deprecatedReason: z.ZodOptional<z.ZodString>;
721
+ /**
722
+ * If this entry is `deprecated`, the id of the entry that supersedes it.
723
+ * Consumers (and AI) should migrate to `replacedBy` rather than this entry.
724
+ */
725
+ replacedBy: z.ZodOptional<z.ZodString>;
726
+ /**
727
+ * Variant identifier when this entry is shipped from a variant-aware
728
+ * package (`@teamix-evo/biz-ui` or `@teamix-evo/templates` per ADR 0014).
729
+ * Optional — entries from `@teamix-evo/ui` (variant-agnostic) leave it unset.
730
+ * MUST equal the variant directory name when present.
731
+ */
732
+ variant: z.ZodOptional<z.ZodString>;
733
+ }, "strip", z.ZodTypeAny, {
734
+ id: string;
735
+ type: "template" | "component" | "hook" | "util" | "block";
736
+ updateStrategy: "frozen" | "regenerable" | "managed";
737
+ status: "stable" | "experimental" | "deprecated";
738
+ description: string;
739
+ name: string;
740
+ files: {
741
+ source: string;
742
+ targetAlias: "components" | "hooks" | "utils" | "lib" | "business" | "templates";
743
+ targetName: string;
744
+ }[];
745
+ template?: boolean | undefined;
746
+ variant?: string | undefined;
747
+ meta?: string | undefined;
748
+ registryDependencies?: string[] | undefined;
749
+ dependencies?: Record<string, string> | undefined;
750
+ deprecatedReason?: string | undefined;
751
+ replacedBy?: string | undefined;
752
+ }, {
753
+ id: string;
754
+ type: "template" | "component" | "hook" | "util" | "block";
755
+ description: string;
756
+ name: string;
757
+ files: {
758
+ source: string;
759
+ targetAlias: "components" | "hooks" | "utils" | "lib" | "business" | "templates";
760
+ targetName: string;
761
+ }[];
762
+ updateStrategy?: "frozen" | "regenerable" | "managed" | undefined;
763
+ template?: boolean | undefined;
764
+ status?: "stable" | "experimental" | "deprecated" | undefined;
765
+ variant?: string | undefined;
766
+ meta?: string | undefined;
767
+ registryDependencies?: string[] | undefined;
768
+ dependencies?: Record<string, string> | undefined;
769
+ deprecatedReason?: string | undefined;
770
+ replacedBy?: string | undefined;
771
+ }>, "many">>;
772
+ }, "strip", z.ZodTypeAny, {
773
+ entries: {
774
+ id: string;
775
+ type: "template" | "component" | "hook" | "util" | "block";
776
+ updateStrategy: "frozen" | "regenerable" | "managed";
777
+ status: "stable" | "experimental" | "deprecated";
778
+ description: string;
779
+ name: string;
780
+ files: {
781
+ source: string;
782
+ targetAlias: "components" | "hooks" | "utils" | "lib" | "business" | "templates";
783
+ targetName: string;
784
+ }[];
785
+ template?: boolean | undefined;
786
+ variant?: string | undefined;
787
+ meta?: string | undefined;
788
+ registryDependencies?: string[] | undefined;
789
+ dependencies?: Record<string, string> | undefined;
790
+ deprecatedReason?: string | undefined;
791
+ replacedBy?: string | undefined;
792
+ }[];
793
+ schemaVersion: 1;
794
+ package: "ui";
795
+ version: string;
796
+ engines: {
797
+ 'teamix-evo': string;
798
+ };
799
+ $schema?: string | undefined;
800
+ deprecatedEntries?: {
801
+ id: string;
802
+ type: "template" | "component" | "hook" | "util" | "block";
803
+ updateStrategy: "frozen" | "regenerable" | "managed";
804
+ status: "stable" | "experimental" | "deprecated";
805
+ description: string;
806
+ name: string;
807
+ files: {
808
+ source: string;
809
+ targetAlias: "components" | "hooks" | "utils" | "lib" | "business" | "templates";
810
+ targetName: string;
811
+ }[];
812
+ template?: boolean | undefined;
813
+ variant?: string | undefined;
814
+ meta?: string | undefined;
815
+ registryDependencies?: string[] | undefined;
816
+ dependencies?: Record<string, string> | undefined;
817
+ deprecatedReason?: string | undefined;
818
+ replacedBy?: string | undefined;
819
+ }[] | undefined;
820
+ }, {
821
+ entries: {
822
+ id: string;
823
+ type: "template" | "component" | "hook" | "util" | "block";
824
+ description: string;
825
+ name: string;
826
+ files: {
827
+ source: string;
828
+ targetAlias: "components" | "hooks" | "utils" | "lib" | "business" | "templates";
829
+ targetName: string;
830
+ }[];
831
+ updateStrategy?: "frozen" | "regenerable" | "managed" | undefined;
832
+ template?: boolean | undefined;
833
+ status?: "stable" | "experimental" | "deprecated" | undefined;
834
+ variant?: string | undefined;
835
+ meta?: string | undefined;
836
+ registryDependencies?: string[] | undefined;
837
+ dependencies?: Record<string, string> | undefined;
838
+ deprecatedReason?: string | undefined;
839
+ replacedBy?: string | undefined;
840
+ }[];
841
+ schemaVersion: 1;
842
+ package: "ui";
843
+ version: string;
844
+ engines: {
845
+ 'teamix-evo': string;
846
+ };
847
+ $schema?: string | undefined;
848
+ deprecatedEntries?: {
849
+ id: string;
850
+ type: "template" | "component" | "hook" | "util" | "block";
851
+ description: string;
852
+ name: string;
853
+ files: {
854
+ source: string;
855
+ targetAlias: "components" | "hooks" | "utils" | "lib" | "business" | "templates";
856
+ targetName: string;
857
+ }[];
858
+ updateStrategy?: "frozen" | "regenerable" | "managed" | undefined;
859
+ template?: boolean | undefined;
860
+ status?: "stable" | "experimental" | "deprecated" | undefined;
861
+ variant?: string | undefined;
862
+ meta?: string | undefined;
863
+ registryDependencies?: string[] | undefined;
864
+ dependencies?: Record<string, string> | undefined;
865
+ deprecatedReason?: string | undefined;
866
+ replacedBy?: string | undefined;
867
+ }[] | undefined;
868
+ }>;
869
+
870
+ /**
871
+ * `@teamix-evo/tokens` package manifest schema.
872
+ *
873
+ * Per [ADR 0020](../../../../docs/adr/0020-design-to-tokens-skill-fusion.md)
874
+ * the package is now a pure, variant-list catalog — no `default/` baseline,
875
+ * no per-variant `pack.json`, no walk-and-merge inheritance:
876
+ *
877
+ * packages/tokens/
878
+ * ├── manifest.json <- this schema (top-level catalog)
879
+ * └── variants/
880
+ * ├── opentrek/
881
+ * │ ├── theme.css <- Tailwind v4 @theme source of truth
882
+ * │ └── base.tokens.json
883
+ * └── uni-manager/
884
+ * ├── theme.css
885
+ * └── base.tokens.json
886
+ *
887
+ * Each variant is a complete, self-contained token set (ADR 0020 §3). The
888
+ * catalog is the single source of truth for variant identity + advertised
889
+ * files; the validator (`packages/tokens/scripts/validate-variants.ts`)
890
+ * enforces parity between catalog entries and on-disk variant directories.
891
+ */
892
+
893
+ /**
894
+ * Soft cross-package links advertised by a variant.
895
+ *
896
+ * Format: `<package-spec>#<variant-name>`, e.g. `@teamix-evo/biz-ui#opentrek`.
897
+ * The link is **soft** — the linked package may not exist yet.
898
+ *
899
+ * Templates link added per [ADR 0014 amendment](../../../../docs/adr/0014-ui-biz-ui-templates-tier.md).
900
+ */
901
+ declare const TokensPackLinkedSchema: z.ZodObject<{
902
+ 'biz-ui': z.ZodOptional<z.ZodString>;
903
+ templates: z.ZodOptional<z.ZodString>;
904
+ }, "strip", z.ZodTypeAny, {
905
+ templates?: string | undefined;
906
+ 'biz-ui'?: string | undefined;
907
+ }, {
908
+ templates?: string | undefined;
909
+ 'biz-ui'?: string | undefined;
910
+ }>;
911
+ /**
912
+ * One variant entry in the top-level catalog.
913
+ */
914
+ declare const TokensVariantEntrySchema: z.ZodObject<{
915
+ /** Variant id — lowercase kebab-case. */
916
+ name: z.ZodString;
917
+ /** Human-readable display name (e.g. "OpenTrek" for variant id "opentrek"). */
918
+ displayName: z.ZodString;
919
+ /** Variant version — semver. May trail the package version when only a subset of variants change. */
920
+ version: z.ZodString;
921
+ /** Optional one-liner description; surfaced in `tokens list-variants` output. */
922
+ description: z.ZodOptional<z.ZodString>;
923
+ /**
924
+ * Files this variant advertises, paths relative to the tokens package root
925
+ * (e.g. `variants/opentrek/theme.css`). The validator walks these to
926
+ * confirm presence; the CLI consumes them at install time.
927
+ */
928
+ files: z.ZodArray<z.ZodString, "many">;
929
+ /** Soft cross-package links (biz-ui / templates with the same variant name). */
930
+ linked: z.ZodOptional<z.ZodObject<{
931
+ 'biz-ui': z.ZodOptional<z.ZodString>;
932
+ templates: z.ZodOptional<z.ZodString>;
933
+ }, "strip", z.ZodTypeAny, {
934
+ templates?: string | undefined;
935
+ 'biz-ui'?: string | undefined;
936
+ }, {
937
+ templates?: string | undefined;
938
+ 'biz-ui'?: string | undefined;
939
+ }>>;
940
+ }, "strip", z.ZodTypeAny, {
941
+ displayName: string;
942
+ version: string;
943
+ name: string;
944
+ files: string[];
945
+ description?: string | undefined;
946
+ linked?: {
947
+ templates?: string | undefined;
948
+ 'biz-ui'?: string | undefined;
949
+ } | undefined;
950
+ }, {
951
+ displayName: string;
952
+ version: string;
953
+ name: string;
954
+ files: string[];
955
+ description?: string | undefined;
956
+ linked?: {
957
+ templates?: string | undefined;
958
+ 'biz-ui'?: string | undefined;
959
+ } | undefined;
960
+ }>;
961
+ type TokensVariantEntry = z.infer<typeof TokensVariantEntrySchema>;
962
+ type TokensPackLinked = z.infer<typeof TokensPackLinkedSchema>;
963
+ /**
964
+ * Top-level catalog of all variants in `@teamix-evo/tokens`.
965
+ *
966
+ * Lives at `packages/tokens/manifest.json`. Lists every variant the package
967
+ * ships. The catalog is hand-edited (or regenerable via
968
+ * `pnpm --filter @teamix-evo/tokens validate`); variant directories on disk
969
+ * are the source of truth for file content.
970
+ */
971
+ declare const TokensPackageManifestSchema: z.ZodObject<{
972
+ $schema: z.ZodOptional<z.ZodString>;
973
+ schemaVersion: z.ZodLiteral<1>;
974
+ /** Always `"tokens"` — disambiguates from other teamix-evo package manifests. */
975
+ package: z.ZodLiteral<"tokens">;
976
+ /** Semver of the entire tokens package. */
977
+ version: z.ZodString;
978
+ /** Engine compatibility. */
979
+ engines: z.ZodObject<{
980
+ 'teamix-evo': z.ZodString;
981
+ }, "strip", z.ZodTypeAny, {
982
+ 'teamix-evo': string;
983
+ }, {
984
+ 'teamix-evo': string;
985
+ }>;
986
+ /** Optional package-level description. */
987
+ description: z.ZodOptional<z.ZodString>;
988
+ /** All shipped variants (excluding scaffold dirs that begin with `_`). */
989
+ variants: z.ZodArray<z.ZodObject<{
990
+ /** Variant id — lowercase kebab-case. */
991
+ name: z.ZodString;
992
+ /** Human-readable display name (e.g. "OpenTrek" for variant id "opentrek"). */
993
+ displayName: z.ZodString;
994
+ /** Variant version — semver. May trail the package version when only a subset of variants change. */
995
+ version: z.ZodString;
996
+ /** Optional one-liner description; surfaced in `tokens list-variants` output. */
997
+ description: z.ZodOptional<z.ZodString>;
998
+ /**
999
+ * Files this variant advertises, paths relative to the tokens package root
1000
+ * (e.g. `variants/opentrek/theme.css`). The validator walks these to
1001
+ * confirm presence; the CLI consumes them at install time.
1002
+ */
1003
+ files: z.ZodArray<z.ZodString, "many">;
1004
+ /** Soft cross-package links (biz-ui / templates with the same variant name). */
1005
+ linked: z.ZodOptional<z.ZodObject<{
1006
+ 'biz-ui': z.ZodOptional<z.ZodString>;
1007
+ templates: z.ZodOptional<z.ZodString>;
1008
+ }, "strip", z.ZodTypeAny, {
1009
+ templates?: string | undefined;
1010
+ 'biz-ui'?: string | undefined;
1011
+ }, {
1012
+ templates?: string | undefined;
1013
+ 'biz-ui'?: string | undefined;
1014
+ }>>;
1015
+ }, "strip", z.ZodTypeAny, {
1016
+ displayName: string;
1017
+ version: string;
1018
+ name: string;
1019
+ files: string[];
1020
+ description?: string | undefined;
1021
+ linked?: {
1022
+ templates?: string | undefined;
1023
+ 'biz-ui'?: string | undefined;
1024
+ } | undefined;
1025
+ }, {
1026
+ displayName: string;
1027
+ version: string;
1028
+ name: string;
1029
+ files: string[];
1030
+ description?: string | undefined;
1031
+ linked?: {
1032
+ templates?: string | undefined;
1033
+ 'biz-ui'?: string | undefined;
1034
+ } | undefined;
1035
+ }>, "many">;
1036
+ /**
1037
+ * Reserved for future shared assets that span variants (e.g. browser
1038
+ * quirks resets co-shipped at the package root). Empty array today.
1039
+ */
1040
+ shared: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
1041
+ }, "strip", z.ZodTypeAny, {
1042
+ schemaVersion: 1;
1043
+ package: "tokens";
1044
+ version: string;
1045
+ engines: {
1046
+ 'teamix-evo': string;
1047
+ };
1048
+ variants: {
1049
+ displayName: string;
1050
+ version: string;
1051
+ name: string;
1052
+ files: string[];
1053
+ description?: string | undefined;
1054
+ linked?: {
1055
+ templates?: string | undefined;
1056
+ 'biz-ui'?: string | undefined;
1057
+ } | undefined;
1058
+ }[];
1059
+ $schema?: string | undefined;
1060
+ description?: string | undefined;
1061
+ shared?: string[] | undefined;
456
1062
  }, {
457
- id: string;
458
- type: "component" | "hook" | "util" | "block";
459
- description: string;
460
- name: string;
461
- files: {
462
- source: string;
463
- targetAlias: "components" | "hooks" | "utils" | "lib";
464
- targetName: string;
1063
+ schemaVersion: 1;
1064
+ package: "tokens";
1065
+ version: string;
1066
+ engines: {
1067
+ 'teamix-evo': string;
1068
+ };
1069
+ variants: {
1070
+ displayName: string;
1071
+ version: string;
1072
+ name: string;
1073
+ files: string[];
1074
+ description?: string | undefined;
1075
+ linked?: {
1076
+ templates?: string | undefined;
1077
+ 'biz-ui'?: string | undefined;
1078
+ } | undefined;
465
1079
  }[];
466
- updateStrategy?: "frozen" | "regenerable" | "managed" | undefined;
467
- template?: boolean | undefined;
468
- status?: "stable" | "experimental" | "deprecated" | undefined;
469
- meta?: string | undefined;
470
- registryDependencies?: string[] | undefined;
471
- dependencies?: Record<string, string> | undefined;
472
- deprecatedReason?: string | undefined;
473
- replacedBy?: string | undefined;
1080
+ $schema?: string | undefined;
1081
+ description?: string | undefined;
1082
+ shared?: string[] | undefined;
474
1083
  }>;
1084
+ type TokensPackageManifest = z.infer<typeof TokensPackageManifestSchema>;
475
1085
  /**
476
- * UI package manifest schema — top-level manifest of `@teamix-evo/ui`.
477
- * Like skills, UI is flat (no variants); brand differences are absorbed by
478
- * design tokens at the `var(--primary)` layer.
1086
+ * Consumer-side lock file written to
1087
+ * `.teamix-evo/tokens-lock.json` after `tokens init`.
1088
+ *
1089
+ * Records which tokens variant + version was installed. There is no longer a
1090
+ * `default` field — every variant is self-contained per ADR 0020.
479
1091
  */
480
- declare const UiPackageManifestSchema: z.ZodObject<{
1092
+ declare const TokensPackLockSchema: z.ZodObject<{
481
1093
  $schema: z.ZodOptional<z.ZodString>;
482
1094
  schemaVersion: z.ZodLiteral<1>;
483
- /** Always "ui" for this package */
484
- package: z.ZodLiteral<"ui">;
485
- /** Semver version of the ui package */
1095
+ variant: z.ZodObject<{
1096
+ name: z.ZodString;
1097
+ displayName: z.ZodString;
1098
+ version: z.ZodString;
1099
+ from: z.ZodString;
1100
+ }, "strip", z.ZodTypeAny, {
1101
+ displayName: string;
1102
+ version: string;
1103
+ name: string;
1104
+ from: string;
1105
+ }, {
1106
+ displayName: string;
1107
+ version: string;
1108
+ name: string;
1109
+ from: string;
1110
+ }>;
1111
+ /** Tokens package version — useful when variant version trails the package. */
1112
+ packageVersion: z.ZodString;
1113
+ linked: z.ZodOptional<z.ZodObject<{
1114
+ 'biz-ui': z.ZodOptional<z.ZodString>;
1115
+ templates: z.ZodOptional<z.ZodString>;
1116
+ }, "strip", z.ZodTypeAny, {
1117
+ templates?: string | undefined;
1118
+ 'biz-ui'?: string | undefined;
1119
+ }, {
1120
+ templates?: string | undefined;
1121
+ 'biz-ui'?: string | undefined;
1122
+ }>>;
1123
+ installedAt: z.ZodString;
1124
+ }, "strip", z.ZodTypeAny, {
1125
+ schemaVersion: 1;
1126
+ variant: {
1127
+ displayName: string;
1128
+ version: string;
1129
+ name: string;
1130
+ from: string;
1131
+ };
1132
+ packageVersion: string;
1133
+ installedAt: string;
1134
+ $schema?: string | undefined;
1135
+ linked?: {
1136
+ templates?: string | undefined;
1137
+ 'biz-ui'?: string | undefined;
1138
+ } | undefined;
1139
+ }, {
1140
+ schemaVersion: 1;
1141
+ variant: {
1142
+ displayName: string;
1143
+ version: string;
1144
+ name: string;
1145
+ from: string;
1146
+ };
1147
+ packageVersion: string;
1148
+ installedAt: string;
1149
+ $schema?: string | undefined;
1150
+ linked?: {
1151
+ templates?: string | undefined;
1152
+ 'biz-ui'?: string | undefined;
1153
+ } | undefined;
1154
+ }>;
1155
+ type TokensPackLock = z.infer<typeof TokensPackLockSchema>;
1156
+
1157
+ /**
1158
+ * Schemas for variant-aware UI packages — `@teamix-evo/biz-ui` and
1159
+ * `@teamix-evo/templates`.
1160
+ *
1161
+ * Per [ADR 0014](../../../../docs/adr/0014-ui-biz-ui-templates-tier.md), these
1162
+ * two packages mirror `@teamix-evo/tokens`'s variant model: each ships a
1163
+ * top-level catalog (variants list) plus a per-variant manifest (entry list).
1164
+ *
1165
+ * packages/biz-ui/
1166
+ * ├── manifest.json <- VariantUiPackageCatalogSchema
1167
+ * └── variants/<name>/
1168
+ * └── manifest.json <- VariantUiPackageManifestSchema
1169
+ *
1170
+ * The per-variant manifest is **structurally similar to `UiPackageManifest`**
1171
+ * (flat entries list) but adds a `variant` field — the variant name that all
1172
+ * entries in this manifest belong to. Each entry's `variant` field MUST match
1173
+ * (cross-checked at validation).
1174
+ */
1175
+
1176
+ /**
1177
+ * Discriminator for which variant-aware package this manifest belongs to.
1178
+ */
1179
+ declare const VariantUiPackageNameSchema: z.ZodEnum<["biz-ui", "templates"]>;
1180
+ /**
1181
+ * Per-variant manifest — lives at `packages/<pkg>/variants/<name>/manifest.json`.
1182
+ *
1183
+ * Lists the entries this variant ships. Entries reuse `UiEntrySchema` (they
1184
+ * are technically the same shape as ui entries — only difference is they
1185
+ * declare a `variant` field tying them to a brand).
1186
+ */
1187
+ declare const VariantUiPackageManifestSchema: z.ZodEffects<z.ZodObject<{
1188
+ $schema: z.ZodOptional<z.ZodString>;
1189
+ schemaVersion: z.ZodLiteral<1>;
1190
+ /** Discriminator. */
1191
+ package: z.ZodEnum<["biz-ui", "templates"]>;
1192
+ /**
1193
+ * Variant identifier — lowercase kebab-case, MUST match the parent
1194
+ * directory name (e.g. `opentrek` for `variants/opentrek/manifest.json`).
1195
+ * `_template` is also accepted for the variant scaffold.
1196
+ */
1197
+ variant: z.ZodUnion<[z.ZodString, z.ZodLiteral<"_template">]>;
1198
+ /** Semver of this variant. */
486
1199
  version: z.ZodString;
487
- /** Engine compatibility */
1200
+ /** Engine compatibility. */
488
1201
  engines: z.ZodObject<{
489
1202
  'teamix-evo': z.ZodString;
490
1203
  }, "strip", z.ZodTypeAny, {
@@ -492,82 +1205,48 @@ declare const UiPackageManifestSchema: z.ZodObject<{
492
1205
  }, {
493
1206
  'teamix-evo': string;
494
1207
  }>;
495
- /** Flat list of entries shipped by this package */
1208
+ /** Flat list of entries shipped by this variant. */
496
1209
  entries: z.ZodArray<z.ZodObject<{
497
- /** Unique entry identifier within the ui package (e.g. "button") */
498
1210
  id: z.ZodString;
499
- /** Display name (e.g. "Button") */
500
1211
  name: z.ZodString;
501
- /** Entry type */
502
- type: z.ZodEnum<["component", "hook", "util", "block"]>;
503
- /** One-line description for entry discovery and AI guidance */
1212
+ type: z.ZodEnum<["component", "hook", "util", "block", "template"]>;
504
1213
  description: z.ZodString;
505
- /** Files this entry ships (typically 1) */
506
1214
  files: z.ZodArray<z.ZodObject<{
507
- /** Source path relative to the ui package root (e.g. "src/components/button/button.tsx") */
508
1215
  source: z.ZodString;
509
- /** Which alias this file resolves under in the consumer project */
510
- targetAlias: z.ZodEnum<["components", "hooks", "utils", "lib"]>;
511
- /** Filename written under the alias directory (e.g. "button.tsx") */
1216
+ targetAlias: z.ZodEnum<["components", "hooks", "utils", "lib", "business", "templates"]>;
512
1217
  targetName: z.ZodString;
513
1218
  }, "strip", z.ZodTypeAny, {
514
1219
  source: string;
515
- targetAlias: "components" | "hooks" | "utils" | "lib";
1220
+ targetAlias: "components" | "hooks" | "utils" | "lib" | "business" | "templates";
516
1221
  targetName: string;
517
1222
  }, {
518
1223
  source: string;
519
- targetAlias: "components" | "hooks" | "utils" | "lib";
1224
+ targetAlias: "components" | "hooks" | "utils" | "lib" | "business" | "templates";
520
1225
  targetName: string;
521
1226
  }>, "many">;
522
- /**
523
- * Optional path to an AI-readable meta document (frontmatter + Markdown).
524
- * When set, CLI install drops it at `.teamix-evo/design/components/<id>.meta.md`
525
- * for design's ai-rules to consume.
526
- */
527
1227
  meta: z.ZodOptional<z.ZodString>;
528
- /** Other UI entries this one depends on (e.g. "button" depends on "cn") */
529
1228
  registryDependencies: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
530
- /** npm dependencies required by this entry (name → semver range) */
531
1229
  dependencies: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
532
- /**
533
- * How CLI handles this entry on `ui upgrade`.
534
- * Defaults to `frozen` — user-owned source code, untouched after first install.
535
- * Upgrade is handled by AI + skill flow (no CLI rewrite). See PLAN §10.9.
536
- */
537
1230
  updateStrategy: z.ZodDefault<z.ZodEnum<["frozen", "regenerable", "managed"]>>;
538
- /**
539
- * Whether the source file should be passed through Handlebars before write.
540
- * Most entries don't need templating (use import-rewrite transformer instead).
541
- */
542
1231
  template: z.ZodOptional<z.ZodBoolean>;
543
- /**
544
- * Maturity / lifecycle status of this entry. Defaults to `stable`.
545
- * See {@link UiEntryStatusSchema} for semantics.
546
- */
547
1232
  status: z.ZodDefault<z.ZodEnum<["stable", "experimental", "deprecated"]>>;
548
- /**
549
- * Free-text rationale shown to consumers when `status` is `deprecated`.
550
- * Should explain why the entry is going away and what replaces it.
551
- */
552
1233
  deprecatedReason: z.ZodOptional<z.ZodString>;
553
- /**
554
- * If this entry is `deprecated`, the id of the entry that supersedes it.
555
- * Consumers (and AI) should migrate to `replacedBy` rather than this entry.
556
- */
557
1234
  replacedBy: z.ZodOptional<z.ZodString>;
1235
+ variant: z.ZodOptional<z.ZodString>;
558
1236
  }, "strip", z.ZodTypeAny, {
559
1237
  id: string;
560
- type: "component" | "hook" | "util" | "block";
1238
+ type: "template" | "component" | "hook" | "util" | "block";
561
1239
  updateStrategy: "frozen" | "regenerable" | "managed";
562
1240
  status: "stable" | "experimental" | "deprecated";
563
1241
  description: string;
564
1242
  name: string;
565
1243
  files: {
566
1244
  source: string;
567
- targetAlias: "components" | "hooks" | "utils" | "lib";
1245
+ targetAlias: "components" | "hooks" | "utils" | "lib" | "business" | "templates";
568
1246
  targetName: string;
569
1247
  }[];
570
1248
  template?: boolean | undefined;
1249
+ variant?: string | undefined;
571
1250
  meta?: string | undefined;
572
1251
  registryDependencies?: string[] | undefined;
573
1252
  dependencies?: Record<string, string> | undefined;
@@ -575,17 +1254,18 @@ declare const UiPackageManifestSchema: z.ZodObject<{
575
1254
  replacedBy?: string | undefined;
576
1255
  }, {
577
1256
  id: string;
578
- type: "component" | "hook" | "util" | "block";
1257
+ type: "template" | "component" | "hook" | "util" | "block";
579
1258
  description: string;
580
1259
  name: string;
581
1260
  files: {
582
1261
  source: string;
583
- targetAlias: "components" | "hooks" | "utils" | "lib";
1262
+ targetAlias: "components" | "hooks" | "utils" | "lib" | "business" | "templates";
584
1263
  targetName: string;
585
1264
  }[];
586
1265
  updateStrategy?: "frozen" | "regenerable" | "managed" | undefined;
587
1266
  template?: boolean | undefined;
588
1267
  status?: "stable" | "experimental" | "deprecated" | undefined;
1268
+ variant?: string | undefined;
589
1269
  meta?: string | undefined;
590
1270
  registryDependencies?: string[] | undefined;
591
1271
  dependencies?: Record<string, string> | undefined;
@@ -595,17 +1275,18 @@ declare const UiPackageManifestSchema: z.ZodObject<{
595
1275
  }, "strip", z.ZodTypeAny, {
596
1276
  entries: {
597
1277
  id: string;
598
- type: "component" | "hook" | "util" | "block";
1278
+ type: "template" | "component" | "hook" | "util" | "block";
599
1279
  updateStrategy: "frozen" | "regenerable" | "managed";
600
1280
  status: "stable" | "experimental" | "deprecated";
601
1281
  description: string;
602
1282
  name: string;
603
1283
  files: {
604
1284
  source: string;
605
- targetAlias: "components" | "hooks" | "utils" | "lib";
1285
+ targetAlias: "components" | "hooks" | "utils" | "lib" | "business" | "templates";
606
1286
  targetName: string;
607
1287
  }[];
608
1288
  template?: boolean | undefined;
1289
+ variant?: string | undefined;
609
1290
  meta?: string | undefined;
610
1291
  registryDependencies?: string[] | undefined;
611
1292
  dependencies?: Record<string, string> | undefined;
@@ -613,7 +1294,8 @@ declare const UiPackageManifestSchema: z.ZodObject<{
613
1294
  replacedBy?: string | undefined;
614
1295
  }[];
615
1296
  schemaVersion: 1;
616
- package: "ui";
1297
+ package: "templates" | "biz-ui";
1298
+ variant: string;
617
1299
  version: string;
618
1300
  engines: {
619
1301
  'teamix-evo': string;
@@ -622,17 +1304,18 @@ declare const UiPackageManifestSchema: z.ZodObject<{
622
1304
  }, {
623
1305
  entries: {
624
1306
  id: string;
625
- type: "component" | "hook" | "util" | "block";
1307
+ type: "template" | "component" | "hook" | "util" | "block";
626
1308
  description: string;
627
1309
  name: string;
628
1310
  files: {
629
1311
  source: string;
630
- targetAlias: "components" | "hooks" | "utils" | "lib";
1312
+ targetAlias: "components" | "hooks" | "utils" | "lib" | "business" | "templates";
631
1313
  targetName: string;
632
1314
  }[];
633
1315
  updateStrategy?: "frozen" | "regenerable" | "managed" | undefined;
634
1316
  template?: boolean | undefined;
635
1317
  status?: "stable" | "experimental" | "deprecated" | undefined;
1318
+ variant?: string | undefined;
636
1319
  meta?: string | undefined;
637
1320
  registryDependencies?: string[] | undefined;
638
1321
  dependencies?: Record<string, string> | undefined;
@@ -640,44 +1323,184 @@ declare const UiPackageManifestSchema: z.ZodObject<{
640
1323
  replacedBy?: string | undefined;
641
1324
  }[];
642
1325
  schemaVersion: 1;
643
- package: "ui";
1326
+ package: "templates" | "biz-ui";
1327
+ variant: string;
1328
+ version: string;
1329
+ engines: {
1330
+ 'teamix-evo': string;
1331
+ };
1332
+ $schema?: string | undefined;
1333
+ }>, {
1334
+ entries: {
1335
+ id: string;
1336
+ type: "template" | "component" | "hook" | "util" | "block";
1337
+ updateStrategy: "frozen" | "regenerable" | "managed";
1338
+ status: "stable" | "experimental" | "deprecated";
1339
+ description: string;
1340
+ name: string;
1341
+ files: {
1342
+ source: string;
1343
+ targetAlias: "components" | "hooks" | "utils" | "lib" | "business" | "templates";
1344
+ targetName: string;
1345
+ }[];
1346
+ template?: boolean | undefined;
1347
+ variant?: string | undefined;
1348
+ meta?: string | undefined;
1349
+ registryDependencies?: string[] | undefined;
1350
+ dependencies?: Record<string, string> | undefined;
1351
+ deprecatedReason?: string | undefined;
1352
+ replacedBy?: string | undefined;
1353
+ }[];
1354
+ schemaVersion: 1;
1355
+ package: "templates" | "biz-ui";
1356
+ variant: string;
1357
+ version: string;
1358
+ engines: {
1359
+ 'teamix-evo': string;
1360
+ };
1361
+ $schema?: string | undefined;
1362
+ }, {
1363
+ entries: {
1364
+ id: string;
1365
+ type: "template" | "component" | "hook" | "util" | "block";
1366
+ description: string;
1367
+ name: string;
1368
+ files: {
1369
+ source: string;
1370
+ targetAlias: "components" | "hooks" | "utils" | "lib" | "business" | "templates";
1371
+ targetName: string;
1372
+ }[];
1373
+ updateStrategy?: "frozen" | "regenerable" | "managed" | undefined;
1374
+ template?: boolean | undefined;
1375
+ status?: "stable" | "experimental" | "deprecated" | undefined;
1376
+ variant?: string | undefined;
1377
+ meta?: string | undefined;
1378
+ registryDependencies?: string[] | undefined;
1379
+ dependencies?: Record<string, string> | undefined;
1380
+ deprecatedReason?: string | undefined;
1381
+ replacedBy?: string | undefined;
1382
+ }[];
1383
+ schemaVersion: 1;
1384
+ package: "templates" | "biz-ui";
1385
+ variant: string;
1386
+ version: string;
1387
+ engines: {
1388
+ 'teamix-evo': string;
1389
+ };
1390
+ $schema?: string | undefined;
1391
+ }>;
1392
+ type VariantUiPackageManifest = z.infer<typeof VariantUiPackageManifestSchema>;
1393
+ type VariantUiPackageName = z.infer<typeof VariantUiPackageNameSchema>;
1394
+ /**
1395
+ * Top-level catalog summarizing the package's variants. Lives at
1396
+ * `packages/<pkg>/manifest.json`. Used by `<pkg> list-variants` and
1397
+ * cross-package variant-name sync checks.
1398
+ */
1399
+ declare const VariantUiPackageCatalogSchema: z.ZodObject<{
1400
+ $schema: z.ZodOptional<z.ZodString>;
1401
+ schemaVersion: z.ZodLiteral<1>;
1402
+ package: z.ZodEnum<["biz-ui", "templates"]>;
1403
+ /** Semver of the entire package. */
1404
+ version: z.ZodString;
1405
+ engines: z.ZodObject<{
1406
+ 'teamix-evo': z.ZodString;
1407
+ }, "strip", z.ZodTypeAny, {
1408
+ 'teamix-evo': string;
1409
+ }, {
1410
+ 'teamix-evo': string;
1411
+ }>;
1412
+ /** Variants this package ships (excluding `_template`). */
1413
+ variants: z.ZodArray<z.ZodObject<{
1414
+ name: z.ZodString;
1415
+ displayName: z.ZodString;
1416
+ version: z.ZodString;
1417
+ description: z.ZodOptional<z.ZodString>;
1418
+ }, "strip", z.ZodTypeAny, {
1419
+ displayName: string;
1420
+ version: string;
1421
+ name: string;
1422
+ description?: string | undefined;
1423
+ }, {
1424
+ displayName: string;
1425
+ version: string;
1426
+ name: string;
1427
+ description?: string | undefined;
1428
+ }>, "many">;
1429
+ }, "strip", z.ZodTypeAny, {
1430
+ schemaVersion: 1;
1431
+ package: "templates" | "biz-ui";
1432
+ version: string;
1433
+ engines: {
1434
+ 'teamix-evo': string;
1435
+ };
1436
+ variants: {
1437
+ displayName: string;
1438
+ version: string;
1439
+ name: string;
1440
+ description?: string | undefined;
1441
+ }[];
1442
+ $schema?: string | undefined;
1443
+ }, {
1444
+ schemaVersion: 1;
1445
+ package: "templates" | "biz-ui";
644
1446
  version: string;
645
1447
  engines: {
646
1448
  'teamix-evo': string;
647
1449
  };
1450
+ variants: {
1451
+ displayName: string;
1452
+ version: string;
1453
+ name: string;
1454
+ description?: string | undefined;
1455
+ }[];
648
1456
  $schema?: string | undefined;
649
1457
  }>;
1458
+ type VariantUiPackageCatalog = z.infer<typeof VariantUiPackageCatalogSchema>;
650
1459
 
651
1460
  /**
652
1461
  * Tailwind CSS major version that the project consumes.
653
- * Used by integration tooling (skills) to choose the correct token entry file.
1462
+ *
1463
+ * Only `'v4'` is accepted. v3 was retired in v0.7 — the dual-track output
1464
+ * (`tokens.generated.css`) added maintenance cost without active demand.
1465
+ * The schema keeps the field optional so existing config.json files
1466
+ * (which may carry `tailwind: 'v4'`) continue to validate; any non-v4 value
1467
+ * — including legacy `'v3'` — is rejected so users get a clear error.
654
1468
  */
655
- declare const TailwindVersionSchema: z.ZodEnum<["v3", "v4"]>;
1469
+ declare const TailwindVersionSchema: z.ZodLiteral<"v4">;
656
1470
  /**
657
1471
  * Aliases for ui entry write-back paths in the consumer project.
658
- * Keys mirror shadcn `components.json` aliases for familiarity.
1472
+ * Keys mirror shadcn `components.json` aliases for familiarity, extended for
1473
+ * biz-ui (business) and templates per [ADR 0014](../../../../docs/adr/0014-ui-biz-ui-templates-tier.md).
659
1474
  */
660
1475
  declare const UiAliasesSchema: z.ZodObject<{
661
1476
  components: z.ZodString;
662
1477
  hooks: z.ZodString;
663
1478
  utils: z.ZodString;
664
1479
  lib: z.ZodString;
1480
+ /** Biz-ui components (variant-bound). Defaults to `src/components/business/`. */
1481
+ business: z.ZodDefault<z.ZodString>;
1482
+ /** Page templates (variant-bound). Defaults to `src/templates/`. */
1483
+ templates: z.ZodDefault<z.ZodString>;
665
1484
  }, "strip", z.ZodTypeAny, {
666
1485
  components: string;
667
1486
  hooks: string;
668
1487
  utils: string;
669
1488
  lib: string;
1489
+ business: string;
1490
+ templates: string;
670
1491
  }, {
671
1492
  components: string;
672
1493
  hooks: string;
673
1494
  utils: string;
674
1495
  lib: string;
1496
+ business?: string | undefined;
1497
+ templates?: string | undefined;
675
1498
  }>;
676
1499
  /**
677
1500
  * Package entry within a project config.
678
1501
  *
679
1502
  * Some fields only apply to specific packages:
680
- * - `tailwind` — design only
1503
+ * - `tailwind` — tokens only
681
1504
  * - `ides` / `scope` — skills only
682
1505
  * - `aliases` / `iconLibrary` / `tsx` / `rsc` — ui only
683
1506
  *
@@ -690,7 +1513,7 @@ declare const PackageEntrySchema: z.ZodObject<{
690
1513
  /** Semver version string */
691
1514
  version: z.ZodString;
692
1515
  /** Tailwind CSS version this project uses (only meaningful for design package). */
693
- tailwind: z.ZodOptional<z.ZodEnum<["v3", "v4"]>>;
1516
+ tailwind: z.ZodOptional<z.ZodLiteral<"v4">>;
694
1517
  /** IDEs this package was installed for (only meaningful for skills package). */
695
1518
  ides: z.ZodOptional<z.ZodArray<z.ZodEnum<["qoder", "claude"]>, "many">>;
696
1519
  /** Install scope (only meaningful for skills package). */
@@ -701,16 +1524,24 @@ declare const PackageEntrySchema: z.ZodObject<{
701
1524
  hooks: z.ZodString;
702
1525
  utils: z.ZodString;
703
1526
  lib: z.ZodString;
1527
+ /** Biz-ui components (variant-bound). Defaults to `src/components/business/`. */
1528
+ business: z.ZodDefault<z.ZodString>;
1529
+ /** Page templates (variant-bound). Defaults to `src/templates/`. */
1530
+ templates: z.ZodDefault<z.ZodString>;
704
1531
  }, "strip", z.ZodTypeAny, {
705
1532
  components: string;
706
1533
  hooks: string;
707
1534
  utils: string;
708
1535
  lib: string;
1536
+ business: string;
1537
+ templates: string;
709
1538
  }, {
710
1539
  components: string;
711
1540
  hooks: string;
712
1541
  utils: string;
713
1542
  lib: string;
1543
+ business?: string | undefined;
1544
+ templates?: string | undefined;
714
1545
  }>>;
715
1546
  /**
716
1547
  * Default icon library declared by the project (only meaningful for ui).
@@ -726,12 +1557,14 @@ declare const PackageEntrySchema: z.ZodObject<{
726
1557
  version: string;
727
1558
  ides?: ("qoder" | "claude")[] | undefined;
728
1559
  scope?: "project" | "global" | undefined;
729
- tailwind?: "v3" | "v4" | undefined;
1560
+ tailwind?: "v4" | undefined;
730
1561
  aliases?: {
731
1562
  components: string;
732
1563
  hooks: string;
733
1564
  utils: string;
734
1565
  lib: string;
1566
+ business: string;
1567
+ templates: string;
735
1568
  } | undefined;
736
1569
  iconLibrary?: string | undefined;
737
1570
  tsx?: boolean | undefined;
@@ -741,12 +1574,14 @@ declare const PackageEntrySchema: z.ZodObject<{
741
1574
  version: string;
742
1575
  ides?: ("qoder" | "claude")[] | undefined;
743
1576
  scope?: "project" | "global" | undefined;
744
- tailwind?: "v3" | "v4" | undefined;
1577
+ tailwind?: "v4" | undefined;
745
1578
  aliases?: {
746
1579
  components: string;
747
1580
  hooks: string;
748
1581
  utils: string;
749
1582
  lib: string;
1583
+ business?: string | undefined;
1584
+ templates?: string | undefined;
750
1585
  } | undefined;
751
1586
  iconLibrary?: string | undefined;
752
1587
  tsx?: boolean | undefined;
@@ -767,7 +1602,7 @@ declare const ProjectConfigSchema: z.ZodObject<{
767
1602
  /** Semver version string */
768
1603
  version: z.ZodString;
769
1604
  /** Tailwind CSS version this project uses (only meaningful for design package). */
770
- tailwind: z.ZodOptional<z.ZodEnum<["v3", "v4"]>>;
1605
+ tailwind: z.ZodOptional<z.ZodLiteral<"v4">>;
771
1606
  /** IDEs this package was installed for (only meaningful for skills package). */
772
1607
  ides: z.ZodOptional<z.ZodArray<z.ZodEnum<["qoder", "claude"]>, "many">>;
773
1608
  /** Install scope (only meaningful for skills package). */
@@ -778,16 +1613,24 @@ declare const ProjectConfigSchema: z.ZodObject<{
778
1613
  hooks: z.ZodString;
779
1614
  utils: z.ZodString;
780
1615
  lib: z.ZodString;
1616
+ /** Biz-ui components (variant-bound). Defaults to `src/components/business/`. */
1617
+ business: z.ZodDefault<z.ZodString>;
1618
+ /** Page templates (variant-bound). Defaults to `src/templates/`. */
1619
+ templates: z.ZodDefault<z.ZodString>;
781
1620
  }, "strip", z.ZodTypeAny, {
782
1621
  components: string;
783
1622
  hooks: string;
784
1623
  utils: string;
785
1624
  lib: string;
1625
+ business: string;
1626
+ templates: string;
786
1627
  }, {
787
1628
  components: string;
788
1629
  hooks: string;
789
1630
  utils: string;
790
1631
  lib: string;
1632
+ business?: string | undefined;
1633
+ templates?: string | undefined;
791
1634
  }>>;
792
1635
  /**
793
1636
  * Default icon library declared by the project (only meaningful for ui).
@@ -803,12 +1646,14 @@ declare const ProjectConfigSchema: z.ZodObject<{
803
1646
  version: string;
804
1647
  ides?: ("qoder" | "claude")[] | undefined;
805
1648
  scope?: "project" | "global" | undefined;
806
- tailwind?: "v3" | "v4" | undefined;
1649
+ tailwind?: "v4" | undefined;
807
1650
  aliases?: {
808
1651
  components: string;
809
1652
  hooks: string;
810
1653
  utils: string;
811
1654
  lib: string;
1655
+ business: string;
1656
+ templates: string;
812
1657
  } | undefined;
813
1658
  iconLibrary?: string | undefined;
814
1659
  tsx?: boolean | undefined;
@@ -818,12 +1663,14 @@ declare const ProjectConfigSchema: z.ZodObject<{
818
1663
  version: string;
819
1664
  ides?: ("qoder" | "claude")[] | undefined;
820
1665
  scope?: "project" | "global" | undefined;
821
- tailwind?: "v3" | "v4" | undefined;
1666
+ tailwind?: "v4" | undefined;
822
1667
  aliases?: {
823
1668
  components: string;
824
1669
  hooks: string;
825
1670
  utils: string;
826
1671
  lib: string;
1672
+ business?: string | undefined;
1673
+ templates?: string | undefined;
827
1674
  } | undefined;
828
1675
  iconLibrary?: string | undefined;
829
1676
  tsx?: boolean | undefined;
@@ -837,12 +1684,14 @@ declare const ProjectConfigSchema: z.ZodObject<{
837
1684
  version: string;
838
1685
  ides?: ("qoder" | "claude")[] | undefined;
839
1686
  scope?: "project" | "global" | undefined;
840
- tailwind?: "v3" | "v4" | undefined;
1687
+ tailwind?: "v4" | undefined;
841
1688
  aliases?: {
842
1689
  components: string;
843
1690
  hooks: string;
844
1691
  utils: string;
845
1692
  lib: string;
1693
+ business: string;
1694
+ templates: string;
846
1695
  } | undefined;
847
1696
  iconLibrary?: string | undefined;
848
1697
  tsx?: boolean | undefined;
@@ -857,12 +1706,14 @@ declare const ProjectConfigSchema: z.ZodObject<{
857
1706
  version: string;
858
1707
  ides?: ("qoder" | "claude")[] | undefined;
859
1708
  scope?: "project" | "global" | undefined;
860
- tailwind?: "v3" | "v4" | undefined;
1709
+ tailwind?: "v4" | undefined;
861
1710
  aliases?: {
862
1711
  components: string;
863
1712
  hooks: string;
864
1713
  utils: string;
865
1714
  lib: string;
1715
+ business?: string | undefined;
1716
+ templates?: string | undefined;
866
1717
  } | undefined;
867
1718
  iconLibrary?: string | undefined;
868
1719
  tsx?: boolean | undefined;
@@ -910,7 +1761,7 @@ declare const InstalledResourceSchema: z.ZodObject<{
910
1761
  * An installed package entry — tracks a single package installation.
911
1762
  */
912
1763
  declare const InstalledPackageSchema: z.ZodObject<{
913
- /** Full package name (e.g. "@teamix-evo/design") */
1764
+ /** Full package name (e.g. "@teamix-evo/tokens") */
914
1765
  package: z.ZodString;
915
1766
  /** Variant identifier (use "_flat" for non-variant packages such as skills) */
916
1767
  variant: z.ZodString;
@@ -982,7 +1833,7 @@ declare const InstalledManifestSchema: z.ZodObject<{
982
1833
  schemaVersion: z.ZodLiteral<1>;
983
1834
  /** List of installed packages */
984
1835
  installed: z.ZodArray<z.ZodObject<{
985
- /** Full package name (e.g. "@teamix-evo/design") */
1836
+ /** Full package name (e.g. "@teamix-evo/tokens") */
986
1837
  package: z.ZodString;
987
1838
  /** Variant identifier (use "_flat" for non-variant packages such as skills) */
988
1839
  variant: z.ZodString;
@@ -1080,6 +1931,107 @@ declare const InstalledManifestSchema: z.ZodObject<{
1080
1931
  }[];
1081
1932
  }>;
1082
1933
 
1934
+ /**
1935
+ * Skills source-mirror lock file schema.
1936
+ *
1937
+ * Per [ADR 0013](../../../../docs/adr/0013-skills-source-mirror.md), the source
1938
+ * lives at `.teamix-evo/skills/<id>/`, and IDE paths (`.qoder/skills/<id>/`,
1939
+ * `.claude/skills/<id>/`) are regenerable mirrors. This lock file at
1940
+ * `.teamix-evo/skills/manifest.lock.json` is the authoritative ledger of:
1941
+ *
1942
+ * 1. which skills are installed,
1943
+ * 2. which version each was installed from,
1944
+ * 3. which IDE mirror paths were produced (so `remove` / `sync` know where to act).
1945
+ *
1946
+ * v0.6 supports `qoder` + `claude` mirrors. `.cursor/rules/<id>.mdc` is v0.7
1947
+ * (per ADR 0013 §Implementation note); the schema does NOT pre-allocate
1948
+ * cursor-specific fields — they will be added with the v0.7 ADR.
1949
+ */
1950
+ declare const SkillsLockEntrySchema: z.ZodObject<{
1951
+ /** Semver version installed from upstream */
1952
+ version: z.ZodString;
1953
+ /** Upstream package name (typically `@teamix-evo/skills`) */
1954
+ from: z.ZodString;
1955
+ /** ISO 8601 install / last-sync timestamp */
1956
+ installedAt: z.ZodString;
1957
+ /** Install scope at time of mirror */
1958
+ scope: z.ZodEnum<["project", "global"]>;
1959
+ /**
1960
+ * IDEs this skill was mirrored to. Each ide ↔ a mirror path under
1961
+ * `<projectRoot>/.<ide>/skills/<id>/` (project) or `~/.<ide>/skills/<id>/`
1962
+ * (global). The path itself is reconstructed from `scope` + adapter; we
1963
+ * record the ide identifier rather than the full path to keep the lock
1964
+ * portable across machines.
1965
+ */
1966
+ mirroredTo: z.ZodArray<z.ZodEnum<["qoder", "claude"]>, "many">;
1967
+ }, "strip", z.ZodTypeAny, {
1968
+ scope: "project" | "global";
1969
+ version: string;
1970
+ from: string;
1971
+ installedAt: string;
1972
+ mirroredTo: ("qoder" | "claude")[];
1973
+ }, {
1974
+ scope: "project" | "global";
1975
+ version: string;
1976
+ from: string;
1977
+ installedAt: string;
1978
+ mirroredTo: ("qoder" | "claude")[];
1979
+ }>;
1980
+ declare const SkillsLockSchema: z.ZodObject<{
1981
+ schemaVersion: z.ZodLiteral<1>;
1982
+ /** Map of skill id → lock entry */
1983
+ skills: z.ZodRecord<z.ZodString, z.ZodObject<{
1984
+ /** Semver version installed from upstream */
1985
+ version: z.ZodString;
1986
+ /** Upstream package name (typically `@teamix-evo/skills`) */
1987
+ from: z.ZodString;
1988
+ /** ISO 8601 install / last-sync timestamp */
1989
+ installedAt: z.ZodString;
1990
+ /** Install scope at time of mirror */
1991
+ scope: z.ZodEnum<["project", "global"]>;
1992
+ /**
1993
+ * IDEs this skill was mirrored to. Each ide ↔ a mirror path under
1994
+ * `<projectRoot>/.<ide>/skills/<id>/` (project) or `~/.<ide>/skills/<id>/`
1995
+ * (global). The path itself is reconstructed from `scope` + adapter; we
1996
+ * record the ide identifier rather than the full path to keep the lock
1997
+ * portable across machines.
1998
+ */
1999
+ mirroredTo: z.ZodArray<z.ZodEnum<["qoder", "claude"]>, "many">;
2000
+ }, "strip", z.ZodTypeAny, {
2001
+ scope: "project" | "global";
2002
+ version: string;
2003
+ from: string;
2004
+ installedAt: string;
2005
+ mirroredTo: ("qoder" | "claude")[];
2006
+ }, {
2007
+ scope: "project" | "global";
2008
+ version: string;
2009
+ from: string;
2010
+ installedAt: string;
2011
+ mirroredTo: ("qoder" | "claude")[];
2012
+ }>>;
2013
+ }, "strip", z.ZodTypeAny, {
2014
+ schemaVersion: 1;
2015
+ skills: Record<string, {
2016
+ scope: "project" | "global";
2017
+ version: string;
2018
+ from: string;
2019
+ installedAt: string;
2020
+ mirroredTo: ("qoder" | "claude")[];
2021
+ }>;
2022
+ }, {
2023
+ schemaVersion: 1;
2024
+ skills: Record<string, {
2025
+ scope: "project" | "global";
2026
+ version: string;
2027
+ from: string;
2028
+ installedAt: string;
2029
+ mirroredTo: ("qoder" | "claude")[];
2030
+ }>;
2031
+ }>;
2032
+ type SkillsLockEntry = z.infer<typeof SkillsLockEntrySchema>;
2033
+ type SkillsLock = z.infer<typeof SkillsLockSchema>;
2034
+
1083
2035
  /** Resource update strategy */
1084
2036
  type UpdateStrategy = z.infer<typeof UpdateStrategySchema>;
1085
2037
  /** Resource type discriminator */
@@ -1110,7 +2062,7 @@ type UiPackageManifest = z.infer<typeof UiPackageManifestSchema>;
1110
2062
  type UiAliases = z.infer<typeof UiAliasesSchema>;
1111
2063
  /** A package entry in the project config */
1112
2064
  type PackageEntry = z.infer<typeof PackageEntrySchema>;
1113
- /** Tailwind CSS major version ("v3" | "v4") */
2065
+ /** Tailwind CSS major version (always `"v4"` since v0.7). */
1114
2066
  type TailwindVersion = z.infer<typeof TailwindVersionSchema>;
1115
2067
  /** Project configuration (config.json) */
1116
2068
  type ProjectConfig = z.infer<typeof ProjectConfigSchema>;
@@ -1175,6 +2127,20 @@ declare function loadSkillsPackageManifest(packageDir: string): Promise<SkillsPa
1175
2127
  */
1176
2128
  declare function loadUiPackageManifest(packageDir: string): Promise<UiPackageManifest>;
1177
2129
 
2130
+ /**
2131
+ * Read & validate the top-level `packages/tokens/manifest.json` catalog.
2132
+ * Errors are wrapped with the file path for easy diagnosis (P8).
2133
+ */
2134
+ declare function loadTokensPackageManifest(packageDir: string): Promise<TokensPackageManifest>;
2135
+ /**
2136
+ * Lookup helper: find one variant entry in a catalog by name.
2137
+ * Returns `undefined` when the variant is not advertised.
2138
+ */
2139
+ declare function getVariantEntry(catalog: TokensPackageManifest, variantName: string): TokensVariantEntry | undefined;
2140
+
2141
+ declare function loadVariantUiPackageCatalog(packageDir: string): Promise<VariantUiPackageCatalog>;
2142
+ declare function loadVariantUiPackageManifest(variantDir: string): Promise<VariantUiPackageManifest>;
2143
+
1178
2144
  /**
1179
2145
  * Validate unknown data against the VariantManifest schema.
1180
2146
  * Returns a discriminated Result with either the parsed data or a friendly error message.
@@ -1188,6 +2154,11 @@ declare function validateConfig(data: unknown): Result<ProjectConfig>;
1188
2154
  * Validate unknown data against the InstalledManifest schema.
1189
2155
  */
1190
2156
  declare function validateInstalled(data: unknown): Result<InstalledManifest>;
2157
+ /**
2158
+ * Validate unknown data against the SkillsLock schema (skills source-mirror lock).
2159
+ * Stored at `.teamix-evo/skills/manifest.lock.json` per ADR 0013.
2160
+ */
2161
+ declare function validateSkillsLock(data: unknown): Result<SkillsLock>;
1191
2162
  /**
1192
2163
  * Validate unknown data against the SkillsPackageManifest schema.
1193
2164
  */
@@ -1274,4 +2245,4 @@ interface UpdateActionOptions {
1274
2245
  */
1275
2246
  declare function getUpdateAction(strategy: UpdateStrategy, options: UpdateActionOptions): UpdateAction;
1276
2247
 
1277
- export { type InstalledManifest, InstalledManifestSchema, type InstalledPackage, InstalledPackageSchema, type InstalledResource, InstalledResourceSchema, type ManagedRegion, type PackageEntry, PackageEntrySchema, type ProjectConfig, ProjectConfigSchema, type Resource, ResourceSchema, type ResourceType, ResourceTypeSchema, type Result, type SkillEntry, SkillEntrySchema, type SkillIde, SkillIdeSchema, type SkillScope, SkillScopeSchema, type SkillsPackageManifest, SkillsPackageManifestSchema, type TailwindVersion, TailwindVersionSchema, type UiAlias, UiAliasSchema, type UiAliases, UiAliasesSchema, type UiEntry, type UiEntryFile, UiEntryFileSchema, UiEntrySchema, type UiEntryType, UiEntryTypeSchema, type UiPackageManifest, UiPackageManifestSchema, type UpdateAction, type UpdateActionOptions, type UpdateStrategy, UpdateStrategySchema, type VariantManifest, VariantManifestSchema, getUpdateAction, hasManagedRegion, loadSkillsPackageManifest, loadUiPackageManifest, loadVariantManifest, parseManagedRegions, replaceManagedRegion, resolveUiEntryOrder, shouldUpdate, validateConfig, validateInstalled, validateManifest, validateSkillsPackage, validateUiDependencyGraph, validateUiPackage };
2248
+ export { type InstalledManifest, InstalledManifestSchema, type InstalledPackage, InstalledPackageSchema, type InstalledResource, InstalledResourceSchema, type ManagedRegion, type PackageEntry, PackageEntrySchema, type ProjectConfig, ProjectConfigSchema, type Resource, ResourceSchema, type ResourceType, ResourceTypeSchema, type Result, type SkillEntry, SkillEntrySchema, type SkillIde, SkillIdeSchema, type SkillScope, SkillScopeSchema, type SkillsLock, type SkillsLockEntry, SkillsLockEntrySchema, SkillsLockSchema, type SkillsPackageManifest, SkillsPackageManifestSchema, type TailwindVersion, TailwindVersionSchema, type TokensPackLinked, TokensPackLinkedSchema, type TokensPackLock, TokensPackLockSchema, type TokensPackageManifest, TokensPackageManifestSchema, type TokensVariantEntry, TokensVariantEntrySchema, type UiAlias, UiAliasSchema, type UiAliases, UiAliasesSchema, type UiEntry, type UiEntryFile, UiEntryFileSchema, UiEntrySchema, type UiEntryType, UiEntryTypeSchema, type UiPackageManifest, UiPackageManifestSchema, type UpdateAction, type UpdateActionOptions, type UpdateStrategy, UpdateStrategySchema, type VariantManifest, VariantManifestSchema, type VariantUiPackageCatalog, VariantUiPackageCatalogSchema, type VariantUiPackageManifest, VariantUiPackageManifestSchema, type VariantUiPackageName, VariantUiPackageNameSchema, getUpdateAction, getVariantEntry, hasManagedRegion, loadSkillsPackageManifest, loadTokensPackageManifest, loadUiPackageManifest, loadVariantManifest, loadVariantUiPackageCatalog, loadVariantUiPackageManifest, parseManagedRegions, replaceManagedRegion, resolveUiEntryOrder, shouldUpdate, validateConfig, validateInstalled, validateManifest, validateSkillsLock, validateSkillsPackage, validateUiDependencyGraph, validateUiPackage };