@teamix-evo/registry 0.2.0 → 0.3.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.ts 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/design/pack.lock.json` records the same variant. MUST equal
227
+ * the variant directory name in `@teamix-evo/design/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/design/pack.lock.json` records the same variant. MUST equal
303
+ * the variant directory name in `@teamix-evo/design/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,16 +429,16 @@ 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
  /**
@@ -435,19 +477,27 @@ 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";
448
497
  targetName: string;
449
498
  }[];
450
499
  template?: boolean | undefined;
500
+ variant?: string | undefined;
451
501
  meta?: string | undefined;
452
502
  registryDependencies?: string[] | undefined;
453
503
  dependencies?: Record<string, string> | undefined;
@@ -455,17 +505,18 @@ declare const UiEntrySchema: z.ZodObject<{
455
505
  replacedBy?: string | undefined;
456
506
  }, {
457
507
  id: string;
458
- type: "component" | "hook" | "util" | "block";
508
+ type: "template" | "component" | "hook" | "util" | "block";
459
509
  description: string;
460
510
  name: string;
461
511
  files: {
462
512
  source: string;
463
- targetAlias: "components" | "hooks" | "utils" | "lib";
513
+ targetAlias: "components" | "hooks" | "utils" | "lib" | "business" | "templates";
464
514
  targetName: string;
465
515
  }[];
466
516
  updateStrategy?: "frozen" | "regenerable" | "managed" | undefined;
467
517
  template?: boolean | undefined;
468
518
  status?: "stable" | "experimental" | "deprecated" | undefined;
519
+ variant?: string | undefined;
469
520
  meta?: string | undefined;
470
521
  registryDependencies?: string[] | undefined;
471
522
  dependencies?: Record<string, string> | undefined;
@@ -499,7 +550,7 @@ declare const UiPackageManifestSchema: z.ZodObject<{
499
550
  /** Display name (e.g. "Button") */
500
551
  name: z.ZodString;
501
552
  /** Entry type */
502
- type: z.ZodEnum<["component", "hook", "util", "block"]>;
553
+ type: z.ZodEnum<["component", "hook", "util", "block", "template"]>;
503
554
  /** One-line description for entry discovery and AI guidance */
504
555
  description: z.ZodString;
505
556
  /** Files this entry ships (typically 1) */
@@ -507,16 +558,16 @@ declare const UiPackageManifestSchema: z.ZodObject<{
507
558
  /** Source path relative to the ui package root (e.g. "src/components/button/button.tsx") */
508
559
  source: z.ZodString;
509
560
  /** Which alias this file resolves under in the consumer project */
510
- targetAlias: z.ZodEnum<["components", "hooks", "utils", "lib"]>;
561
+ targetAlias: z.ZodEnum<["components", "hooks", "utils", "lib", "business", "templates"]>;
511
562
  /** Filename written under the alias directory (e.g. "button.tsx") */
512
563
  targetName: z.ZodString;
513
564
  }, "strip", z.ZodTypeAny, {
514
565
  source: string;
515
- targetAlias: "components" | "hooks" | "utils" | "lib";
566
+ targetAlias: "components" | "hooks" | "utils" | "lib" | "business" | "templates";
516
567
  targetName: string;
517
568
  }, {
518
569
  source: string;
519
- targetAlias: "components" | "hooks" | "utils" | "lib";
570
+ targetAlias: "components" | "hooks" | "utils" | "lib" | "business" | "templates";
520
571
  targetName: string;
521
572
  }>, "many">;
522
573
  /**
@@ -555,19 +606,27 @@ declare const UiPackageManifestSchema: z.ZodObject<{
555
606
  * Consumers (and AI) should migrate to `replacedBy` rather than this entry.
556
607
  */
557
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>;
558
616
  }, "strip", z.ZodTypeAny, {
559
617
  id: string;
560
- type: "component" | "hook" | "util" | "block";
618
+ type: "template" | "component" | "hook" | "util" | "block";
561
619
  updateStrategy: "frozen" | "regenerable" | "managed";
562
620
  status: "stable" | "experimental" | "deprecated";
563
621
  description: string;
564
622
  name: string;
565
623
  files: {
566
624
  source: string;
567
- targetAlias: "components" | "hooks" | "utils" | "lib";
625
+ targetAlias: "components" | "hooks" | "utils" | "lib" | "business" | "templates";
568
626
  targetName: string;
569
627
  }[];
570
628
  template?: boolean | undefined;
629
+ variant?: string | undefined;
571
630
  meta?: string | undefined;
572
631
  registryDependencies?: string[] | undefined;
573
632
  dependencies?: Record<string, string> | undefined;
@@ -575,17 +634,18 @@ declare const UiPackageManifestSchema: z.ZodObject<{
575
634
  replacedBy?: string | undefined;
576
635
  }, {
577
636
  id: string;
578
- type: "component" | "hook" | "util" | "block";
637
+ type: "template" | "component" | "hook" | "util" | "block";
579
638
  description: string;
580
639
  name: string;
581
640
  files: {
582
641
  source: string;
583
- targetAlias: "components" | "hooks" | "utils" | "lib";
642
+ targetAlias: "components" | "hooks" | "utils" | "lib" | "business" | "templates";
584
643
  targetName: string;
585
644
  }[];
586
645
  updateStrategy?: "frozen" | "regenerable" | "managed" | undefined;
587
646
  template?: boolean | undefined;
588
647
  status?: "stable" | "experimental" | "deprecated" | undefined;
648
+ variant?: string | undefined;
589
649
  meta?: string | undefined;
590
650
  registryDependencies?: string[] | undefined;
591
651
  dependencies?: Record<string, string> | undefined;
@@ -595,17 +655,18 @@ declare const UiPackageManifestSchema: z.ZodObject<{
595
655
  }, "strip", z.ZodTypeAny, {
596
656
  entries: {
597
657
  id: string;
598
- type: "component" | "hook" | "util" | "block";
658
+ type: "template" | "component" | "hook" | "util" | "block";
599
659
  updateStrategy: "frozen" | "regenerable" | "managed";
600
660
  status: "stable" | "experimental" | "deprecated";
601
661
  description: string;
602
662
  name: string;
603
663
  files: {
604
664
  source: string;
605
- targetAlias: "components" | "hooks" | "utils" | "lib";
665
+ targetAlias: "components" | "hooks" | "utils" | "lib" | "business" | "templates";
606
666
  targetName: string;
607
667
  }[];
608
668
  template?: boolean | undefined;
669
+ variant?: string | undefined;
609
670
  meta?: string | undefined;
610
671
  registryDependencies?: string[] | undefined;
611
672
  dependencies?: Record<string, string> | undefined;
@@ -622,17 +683,18 @@ declare const UiPackageManifestSchema: z.ZodObject<{
622
683
  }, {
623
684
  entries: {
624
685
  id: string;
625
- type: "component" | "hook" | "util" | "block";
686
+ type: "template" | "component" | "hook" | "util" | "block";
626
687
  description: string;
627
688
  name: string;
628
689
  files: {
629
690
  source: string;
630
- targetAlias: "components" | "hooks" | "utils" | "lib";
691
+ targetAlias: "components" | "hooks" | "utils" | "lib" | "business" | "templates";
631
692
  targetName: string;
632
693
  }[];
633
694
  updateStrategy?: "frozen" | "regenerable" | "managed" | undefined;
634
695
  template?: boolean | undefined;
635
696
  status?: "stable" | "experimental" | "deprecated" | undefined;
697
+ variant?: string | undefined;
636
698
  meta?: string | undefined;
637
699
  registryDependencies?: string[] | undefined;
638
700
  dependencies?: Record<string, string> | undefined;
@@ -648,30 +710,759 @@ declare const UiPackageManifestSchema: z.ZodObject<{
648
710
  $schema?: string | undefined;
649
711
  }>;
650
712
 
713
+ /**
714
+ * Design Pack manifest schema.
715
+ *
716
+ * Per [ADR 0010](../../../../docs/adr/0010-design-default-and-variants.md) the
717
+ * design system is structured as one **default** baseline + N **variants**:
718
+ *
719
+ * packages/design/
720
+ * ├── default/ <- B-end neutral baseline (always present)
721
+ * │ ├── pack.json <- this schema (no `extends`)
722
+ * │ └── ... (philosophy/, foundations/, patterns/, scenarios/)
723
+ * ├── variants/
724
+ * │ ├── _template/ <- minimal scaffold for new variants
725
+ * │ │ └── pack.json <- this schema, extends: "default"
726
+ * │ ├── opentrek/
727
+ * │ │ ├── pack.json <- this schema, extends: "default"
728
+ * │ │ └── ... (only files differing from default)
729
+ * │ └── uni-manager/
730
+ * │ └── pack.json
731
+ * └── manifest.json <- top-level catalog (lists default + variants)
732
+ *
733
+ * The `pack.json` carries **only the protocol identity** of one pack; file
734
+ * lists are NOT declared here — the loader walks the filesystem under the
735
+ * pack root and lets file-level override merge happen at install time.
736
+ *
737
+ * Rationale: variant authors who add a new file (e.g. a new Markdown pattern)
738
+ * shouldn't have to register it in `pack.json`. The filesystem is the single
739
+ * source of truth (P2). See ADR 0010 §7 for the schema-simplification
740
+ * rationale.
741
+ */
742
+
743
+ /**
744
+ * Soft cross-package links advertised by a design pack.
745
+ *
746
+ * When a consumer installs design `<variant>`, the CLI MAY check that the
747
+ * matching biz-ui / templates variant exists in the workspace / npm and
748
+ * prompt the user to install it too. The link is **soft** — packs may exist
749
+ * without their biz-ui or templates counterparts, especially in early
750
+ * development.
751
+ *
752
+ * Format: `<package-spec>#<variant-name>`, e.g. `@teamix-evo/biz-ui#opentrek`.
753
+ *
754
+ * Linked field for `templates` added per [ADR 0014 2026-05-18 amendment](../../../../docs/adr/0014-ui-biz-ui-templates-tier.md)
755
+ * (templates became variant-aware mirroring biz-ui).
756
+ */
757
+ declare const DesignPackLinkedSchema: z.ZodObject<{
758
+ 'biz-ui': z.ZodOptional<z.ZodString>;
759
+ templates: z.ZodOptional<z.ZodString>;
760
+ }, "strip", z.ZodTypeAny, {
761
+ templates?: string | undefined;
762
+ 'biz-ui'?: string | undefined;
763
+ }, {
764
+ templates?: string | undefined;
765
+ 'biz-ui'?: string | undefined;
766
+ }>;
767
+ /**
768
+ * Design pack manifest schema.
769
+ *
770
+ * Describes ONE pack (either the default baseline or one variant). Files are
771
+ * not declared — the loader walks the pack root.
772
+ */
773
+ declare const DesignPackManifestSchema: z.ZodObject<{
774
+ $schema: z.ZodOptional<z.ZodString>;
775
+ schemaVersion: z.ZodLiteral<1>;
776
+ /**
777
+ * Pack identifier.
778
+ * - `"default"` for the built-in baseline (only valid name when `extends` is absent)
779
+ * - lowercase kebab-case for variants (`opentrek`, `uni-manager`, `acme-erp`, `_template`)
780
+ */
781
+ name: z.ZodUnion<[z.ZodUnion<[z.ZodString, z.ZodLiteral<"_template">]>, z.ZodLiteral<"default">]>;
782
+ /** Human-readable display name (e.g. "OpenTrek" for variant id "opentrek"). */
783
+ displayName: z.ZodString;
784
+ /** Semver. */
785
+ version: z.ZodString;
786
+ /**
787
+ * Parent pack name. Required for variants, must be omitted for `default`.
788
+ * Currently only `"default"` is a valid parent.
789
+ */
790
+ extends: z.ZodOptional<z.ZodString>;
791
+ /** Optional one-liner; useful for `design list-variants` output. */
792
+ description: z.ZodOptional<z.ZodString>;
793
+ /** Soft cross-package links (biz-ui / templates with same variant name). */
794
+ linked: z.ZodOptional<z.ZodObject<{
795
+ 'biz-ui': z.ZodOptional<z.ZodString>;
796
+ templates: z.ZodOptional<z.ZodString>;
797
+ }, "strip", z.ZodTypeAny, {
798
+ templates?: string | undefined;
799
+ 'biz-ui'?: string | undefined;
800
+ }, {
801
+ templates?: string | undefined;
802
+ 'biz-ui'?: string | undefined;
803
+ }>>;
804
+ }, "strip", z.ZodTypeAny, {
805
+ schemaVersion: 1;
806
+ displayName: string;
807
+ version: string;
808
+ name: string;
809
+ $schema?: string | undefined;
810
+ description?: string | undefined;
811
+ extends?: string | undefined;
812
+ linked?: {
813
+ templates?: string | undefined;
814
+ 'biz-ui'?: string | undefined;
815
+ } | undefined;
816
+ }, {
817
+ schemaVersion: 1;
818
+ displayName: string;
819
+ version: string;
820
+ name: string;
821
+ $schema?: string | undefined;
822
+ description?: string | undefined;
823
+ extends?: string | undefined;
824
+ linked?: {
825
+ templates?: string | undefined;
826
+ 'biz-ui'?: string | undefined;
827
+ } | undefined;
828
+ }>;
829
+ type DesignPackManifest = z.infer<typeof DesignPackManifestSchema>;
830
+ type DesignPackLinked = z.infer<typeof DesignPackLinkedSchema>;
831
+ /**
832
+ * Top-level catalog of all packs in `@teamix-evo/design`.
833
+ *
834
+ * Lives at `packages/design/manifest.json`. Lists the default baseline + all
835
+ * variants the package ships. The catalog is regenerable via
836
+ * `pnpm --filter @teamix-evo/design validate` — variant directories are the
837
+ * source of truth.
838
+ */
839
+ declare const DesignPackageManifestSchema: z.ZodObject<{
840
+ $schema: z.ZodOptional<z.ZodString>;
841
+ schemaVersion: z.ZodLiteral<1>;
842
+ /** Always `"design"` for this package. */
843
+ package: z.ZodLiteral<"design">;
844
+ /** Semver of the entire design package. */
845
+ version: z.ZodString;
846
+ /** Engine compatibility. */
847
+ engines: z.ZodObject<{
848
+ 'teamix-evo': z.ZodString;
849
+ }, "strip", z.ZodTypeAny, {
850
+ 'teamix-evo': string;
851
+ }, {
852
+ 'teamix-evo': string;
853
+ }>;
854
+ /** The default baseline pack — always present. */
855
+ default: z.ZodObject<{
856
+ $schema: z.ZodOptional<z.ZodString>;
857
+ schemaVersion: z.ZodLiteral<1>;
858
+ /**
859
+ * Pack identifier.
860
+ * - `"default"` for the built-in baseline (only valid name when `extends` is absent)
861
+ * - lowercase kebab-case for variants (`opentrek`, `uni-manager`, `acme-erp`, `_template`)
862
+ */
863
+ name: z.ZodUnion<[z.ZodUnion<[z.ZodString, z.ZodLiteral<"_template">]>, z.ZodLiteral<"default">]>;
864
+ /** Human-readable display name (e.g. "OpenTrek" for variant id "opentrek"). */
865
+ displayName: z.ZodString;
866
+ /** Semver. */
867
+ version: z.ZodString;
868
+ /**
869
+ * Parent pack name. Required for variants, must be omitted for `default`.
870
+ * Currently only `"default"` is a valid parent.
871
+ */
872
+ extends: z.ZodOptional<z.ZodString>;
873
+ /** Optional one-liner; useful for `design list-variants` output. */
874
+ description: z.ZodOptional<z.ZodString>;
875
+ /** Soft cross-package links (biz-ui / templates with same variant name). */
876
+ linked: z.ZodOptional<z.ZodObject<{
877
+ 'biz-ui': z.ZodOptional<z.ZodString>;
878
+ templates: z.ZodOptional<z.ZodString>;
879
+ }, "strip", z.ZodTypeAny, {
880
+ templates?: string | undefined;
881
+ 'biz-ui'?: string | undefined;
882
+ }, {
883
+ templates?: string | undefined;
884
+ 'biz-ui'?: string | undefined;
885
+ }>>;
886
+ }, "strip", z.ZodTypeAny, {
887
+ schemaVersion: 1;
888
+ displayName: string;
889
+ version: string;
890
+ name: string;
891
+ $schema?: string | undefined;
892
+ description?: string | undefined;
893
+ extends?: string | undefined;
894
+ linked?: {
895
+ templates?: string | undefined;
896
+ 'biz-ui'?: string | undefined;
897
+ } | undefined;
898
+ }, {
899
+ schemaVersion: 1;
900
+ displayName: string;
901
+ version: string;
902
+ name: string;
903
+ $schema?: string | undefined;
904
+ description?: string | undefined;
905
+ extends?: string | undefined;
906
+ linked?: {
907
+ templates?: string | undefined;
908
+ 'biz-ui'?: string | undefined;
909
+ } | undefined;
910
+ }>;
911
+ /** All shipped variants (excluding `_template/`). */
912
+ variants: z.ZodArray<z.ZodObject<{
913
+ $schema: z.ZodOptional<z.ZodString>;
914
+ schemaVersion: z.ZodLiteral<1>;
915
+ /**
916
+ * Pack identifier.
917
+ * - `"default"` for the built-in baseline (only valid name when `extends` is absent)
918
+ * - lowercase kebab-case for variants (`opentrek`, `uni-manager`, `acme-erp`, `_template`)
919
+ */
920
+ name: z.ZodUnion<[z.ZodUnion<[z.ZodString, z.ZodLiteral<"_template">]>, z.ZodLiteral<"default">]>;
921
+ /** Human-readable display name (e.g. "OpenTrek" for variant id "opentrek"). */
922
+ displayName: z.ZodString;
923
+ /** Semver. */
924
+ version: z.ZodString;
925
+ /**
926
+ * Parent pack name. Required for variants, must be omitted for `default`.
927
+ * Currently only `"default"` is a valid parent.
928
+ */
929
+ extends: z.ZodOptional<z.ZodString>;
930
+ /** Optional one-liner; useful for `design list-variants` output. */
931
+ description: z.ZodOptional<z.ZodString>;
932
+ /** Soft cross-package links (biz-ui / templates with same variant name). */
933
+ linked: z.ZodOptional<z.ZodObject<{
934
+ 'biz-ui': z.ZodOptional<z.ZodString>;
935
+ templates: z.ZodOptional<z.ZodString>;
936
+ }, "strip", z.ZodTypeAny, {
937
+ templates?: string | undefined;
938
+ 'biz-ui'?: string | undefined;
939
+ }, {
940
+ templates?: string | undefined;
941
+ 'biz-ui'?: string | undefined;
942
+ }>>;
943
+ }, "strip", z.ZodTypeAny, {
944
+ schemaVersion: 1;
945
+ displayName: string;
946
+ version: string;
947
+ name: string;
948
+ $schema?: string | undefined;
949
+ description?: string | undefined;
950
+ extends?: string | undefined;
951
+ linked?: {
952
+ templates?: string | undefined;
953
+ 'biz-ui'?: string | undefined;
954
+ } | undefined;
955
+ }, {
956
+ schemaVersion: 1;
957
+ displayName: string;
958
+ version: string;
959
+ name: string;
960
+ $schema?: string | undefined;
961
+ description?: string | undefined;
962
+ extends?: string | undefined;
963
+ linked?: {
964
+ templates?: string | undefined;
965
+ 'biz-ui'?: string | undefined;
966
+ } | undefined;
967
+ }>, "many">;
968
+ }, "strip", z.ZodTypeAny, {
969
+ schemaVersion: 1;
970
+ package: "design";
971
+ version: string;
972
+ engines: {
973
+ 'teamix-evo': string;
974
+ };
975
+ default: {
976
+ schemaVersion: 1;
977
+ displayName: string;
978
+ version: string;
979
+ name: string;
980
+ $schema?: string | undefined;
981
+ description?: string | undefined;
982
+ extends?: string | undefined;
983
+ linked?: {
984
+ templates?: string | undefined;
985
+ 'biz-ui'?: string | undefined;
986
+ } | undefined;
987
+ };
988
+ variants: {
989
+ schemaVersion: 1;
990
+ displayName: string;
991
+ version: string;
992
+ name: string;
993
+ $schema?: string | undefined;
994
+ description?: string | undefined;
995
+ extends?: string | undefined;
996
+ linked?: {
997
+ templates?: string | undefined;
998
+ 'biz-ui'?: string | undefined;
999
+ } | undefined;
1000
+ }[];
1001
+ $schema?: string | undefined;
1002
+ }, {
1003
+ schemaVersion: 1;
1004
+ package: "design";
1005
+ version: string;
1006
+ engines: {
1007
+ 'teamix-evo': string;
1008
+ };
1009
+ default: {
1010
+ schemaVersion: 1;
1011
+ displayName: string;
1012
+ version: string;
1013
+ name: string;
1014
+ $schema?: string | undefined;
1015
+ description?: string | undefined;
1016
+ extends?: string | undefined;
1017
+ linked?: {
1018
+ templates?: string | undefined;
1019
+ 'biz-ui'?: string | undefined;
1020
+ } | undefined;
1021
+ };
1022
+ variants: {
1023
+ schemaVersion: 1;
1024
+ displayName: string;
1025
+ version: string;
1026
+ name: string;
1027
+ $schema?: string | undefined;
1028
+ description?: string | undefined;
1029
+ extends?: string | undefined;
1030
+ linked?: {
1031
+ templates?: string | undefined;
1032
+ 'biz-ui'?: string | undefined;
1033
+ } | undefined;
1034
+ }[];
1035
+ $schema?: string | undefined;
1036
+ }>;
1037
+ type DesignPackageManifest = z.infer<typeof DesignPackageManifestSchema>;
1038
+ /**
1039
+ * Consumer-side lock file written to
1040
+ * `.teamix-evo/design/pack.lock.json` after `design init`.
1041
+ *
1042
+ * Records which default + variant version was installed so future
1043
+ * `design upgrade` / `doctor` / AI tooling can reason about install state
1044
+ * without re-walking the source.
1045
+ */
1046
+ declare const DesignPackLockSchema: z.ZodObject<{
1047
+ $schema: z.ZodOptional<z.ZodString>;
1048
+ schemaVersion: z.ZodLiteral<1>;
1049
+ default: z.ZodObject<{
1050
+ version: z.ZodString;
1051
+ from: z.ZodString;
1052
+ }, "strip", z.ZodTypeAny, {
1053
+ version: string;
1054
+ from: string;
1055
+ }, {
1056
+ version: string;
1057
+ from: string;
1058
+ }>;
1059
+ variant: z.ZodObject<{
1060
+ name: z.ZodString;
1061
+ displayName: z.ZodString;
1062
+ version: z.ZodString;
1063
+ from: z.ZodString;
1064
+ }, "strip", z.ZodTypeAny, {
1065
+ displayName: string;
1066
+ version: string;
1067
+ name: string;
1068
+ from: string;
1069
+ }, {
1070
+ displayName: string;
1071
+ version: string;
1072
+ name: string;
1073
+ from: string;
1074
+ }>;
1075
+ linked: z.ZodOptional<z.ZodObject<{
1076
+ 'biz-ui': z.ZodOptional<z.ZodString>;
1077
+ templates: z.ZodOptional<z.ZodString>;
1078
+ }, "strip", z.ZodTypeAny, {
1079
+ templates?: string | undefined;
1080
+ 'biz-ui'?: string | undefined;
1081
+ }, {
1082
+ templates?: string | undefined;
1083
+ 'biz-ui'?: string | undefined;
1084
+ }>>;
1085
+ installedAt: z.ZodString;
1086
+ }, "strip", z.ZodTypeAny, {
1087
+ schemaVersion: 1;
1088
+ variant: {
1089
+ displayName: string;
1090
+ version: string;
1091
+ name: string;
1092
+ from: string;
1093
+ };
1094
+ default: {
1095
+ version: string;
1096
+ from: string;
1097
+ };
1098
+ installedAt: string;
1099
+ $schema?: string | undefined;
1100
+ linked?: {
1101
+ templates?: string | undefined;
1102
+ 'biz-ui'?: string | undefined;
1103
+ } | undefined;
1104
+ }, {
1105
+ schemaVersion: 1;
1106
+ variant: {
1107
+ displayName: string;
1108
+ version: string;
1109
+ name: string;
1110
+ from: string;
1111
+ };
1112
+ default: {
1113
+ version: string;
1114
+ from: string;
1115
+ };
1116
+ installedAt: string;
1117
+ $schema?: string | undefined;
1118
+ linked?: {
1119
+ templates?: string | undefined;
1120
+ 'biz-ui'?: string | undefined;
1121
+ } | undefined;
1122
+ }>;
1123
+ type DesignPackLock = z.infer<typeof DesignPackLockSchema>;
1124
+
1125
+ /**
1126
+ * Schemas for variant-aware UI packages — `@teamix-evo/biz-ui` and
1127
+ * `@teamix-evo/templates`.
1128
+ *
1129
+ * Per [ADR 0014](../../../../docs/adr/0014-ui-biz-ui-templates-tier.md), these
1130
+ * two packages mirror `@teamix-evo/design`'s variant model: each ships a
1131
+ * top-level catalog (variants list) plus a per-variant manifest (entry list).
1132
+ *
1133
+ * packages/biz-ui/
1134
+ * ├── manifest.json <- VariantUiPackageCatalogSchema
1135
+ * └── variants/<name>/
1136
+ * └── manifest.json <- VariantUiPackageManifestSchema
1137
+ *
1138
+ * The per-variant manifest is **structurally similar to `UiPackageManifest`**
1139
+ * (flat entries list) but adds a `variant` field — the variant name that all
1140
+ * entries in this manifest belong to. Each entry's `variant` field MUST match
1141
+ * (cross-checked at validation).
1142
+ */
1143
+
1144
+ /**
1145
+ * Discriminator for which variant-aware package this manifest belongs to.
1146
+ */
1147
+ declare const VariantUiPackageNameSchema: z.ZodEnum<["biz-ui", "templates"]>;
1148
+ /**
1149
+ * Per-variant manifest — lives at `packages/<pkg>/variants/<name>/manifest.json`.
1150
+ *
1151
+ * Lists the entries this variant ships. Entries reuse `UiEntrySchema` (they
1152
+ * are technically the same shape as ui entries — only difference is they
1153
+ * declare a `variant` field tying them to a brand).
1154
+ */
1155
+ declare const VariantUiPackageManifestSchema: z.ZodEffects<z.ZodObject<{
1156
+ $schema: z.ZodOptional<z.ZodString>;
1157
+ schemaVersion: z.ZodLiteral<1>;
1158
+ /** Discriminator. */
1159
+ package: z.ZodEnum<["biz-ui", "templates"]>;
1160
+ /**
1161
+ * Variant identifier — lowercase kebab-case, MUST match the parent
1162
+ * directory name (e.g. `opentrek` for `variants/opentrek/manifest.json`).
1163
+ * `_template` is also accepted for the variant scaffold.
1164
+ */
1165
+ variant: z.ZodUnion<[z.ZodString, z.ZodLiteral<"_template">]>;
1166
+ /** Semver of this variant. */
1167
+ version: z.ZodString;
1168
+ /** Engine compatibility. */
1169
+ engines: z.ZodObject<{
1170
+ 'teamix-evo': z.ZodString;
1171
+ }, "strip", z.ZodTypeAny, {
1172
+ 'teamix-evo': string;
1173
+ }, {
1174
+ 'teamix-evo': string;
1175
+ }>;
1176
+ /** Flat list of entries shipped by this variant. */
1177
+ entries: z.ZodArray<z.ZodObject<{
1178
+ id: z.ZodString;
1179
+ name: z.ZodString;
1180
+ type: z.ZodEnum<["component", "hook", "util", "block", "template"]>;
1181
+ description: z.ZodString;
1182
+ files: z.ZodArray<z.ZodObject<{
1183
+ source: z.ZodString;
1184
+ targetAlias: z.ZodEnum<["components", "hooks", "utils", "lib", "business", "templates"]>;
1185
+ targetName: z.ZodString;
1186
+ }, "strip", z.ZodTypeAny, {
1187
+ source: string;
1188
+ targetAlias: "components" | "hooks" | "utils" | "lib" | "business" | "templates";
1189
+ targetName: string;
1190
+ }, {
1191
+ source: string;
1192
+ targetAlias: "components" | "hooks" | "utils" | "lib" | "business" | "templates";
1193
+ targetName: string;
1194
+ }>, "many">;
1195
+ meta: z.ZodOptional<z.ZodString>;
1196
+ registryDependencies: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
1197
+ dependencies: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
1198
+ updateStrategy: z.ZodDefault<z.ZodEnum<["frozen", "regenerable", "managed"]>>;
1199
+ template: z.ZodOptional<z.ZodBoolean>;
1200
+ status: z.ZodDefault<z.ZodEnum<["stable", "experimental", "deprecated"]>>;
1201
+ deprecatedReason: z.ZodOptional<z.ZodString>;
1202
+ replacedBy: z.ZodOptional<z.ZodString>;
1203
+ variant: z.ZodOptional<z.ZodString>;
1204
+ }, "strip", z.ZodTypeAny, {
1205
+ id: string;
1206
+ type: "template" | "component" | "hook" | "util" | "block";
1207
+ updateStrategy: "frozen" | "regenerable" | "managed";
1208
+ status: "stable" | "experimental" | "deprecated";
1209
+ description: string;
1210
+ name: string;
1211
+ files: {
1212
+ source: string;
1213
+ targetAlias: "components" | "hooks" | "utils" | "lib" | "business" | "templates";
1214
+ targetName: string;
1215
+ }[];
1216
+ template?: boolean | undefined;
1217
+ variant?: string | undefined;
1218
+ meta?: string | undefined;
1219
+ registryDependencies?: string[] | undefined;
1220
+ dependencies?: Record<string, string> | undefined;
1221
+ deprecatedReason?: string | undefined;
1222
+ replacedBy?: string | undefined;
1223
+ }, {
1224
+ id: string;
1225
+ type: "template" | "component" | "hook" | "util" | "block";
1226
+ description: string;
1227
+ name: string;
1228
+ files: {
1229
+ source: string;
1230
+ targetAlias: "components" | "hooks" | "utils" | "lib" | "business" | "templates";
1231
+ targetName: string;
1232
+ }[];
1233
+ updateStrategy?: "frozen" | "regenerable" | "managed" | undefined;
1234
+ template?: boolean | undefined;
1235
+ status?: "stable" | "experimental" | "deprecated" | undefined;
1236
+ variant?: string | undefined;
1237
+ meta?: string | undefined;
1238
+ registryDependencies?: string[] | undefined;
1239
+ dependencies?: Record<string, string> | undefined;
1240
+ deprecatedReason?: string | undefined;
1241
+ replacedBy?: string | undefined;
1242
+ }>, "many">;
1243
+ }, "strip", z.ZodTypeAny, {
1244
+ entries: {
1245
+ id: string;
1246
+ type: "template" | "component" | "hook" | "util" | "block";
1247
+ updateStrategy: "frozen" | "regenerable" | "managed";
1248
+ status: "stable" | "experimental" | "deprecated";
1249
+ description: string;
1250
+ name: string;
1251
+ files: {
1252
+ source: string;
1253
+ targetAlias: "components" | "hooks" | "utils" | "lib" | "business" | "templates";
1254
+ targetName: string;
1255
+ }[];
1256
+ template?: boolean | undefined;
1257
+ variant?: string | undefined;
1258
+ meta?: string | undefined;
1259
+ registryDependencies?: string[] | undefined;
1260
+ dependencies?: Record<string, string> | undefined;
1261
+ deprecatedReason?: string | undefined;
1262
+ replacedBy?: string | undefined;
1263
+ }[];
1264
+ schemaVersion: 1;
1265
+ package: "templates" | "biz-ui";
1266
+ variant: string;
1267
+ version: string;
1268
+ engines: {
1269
+ 'teamix-evo': string;
1270
+ };
1271
+ $schema?: string | undefined;
1272
+ }, {
1273
+ entries: {
1274
+ id: string;
1275
+ type: "template" | "component" | "hook" | "util" | "block";
1276
+ description: string;
1277
+ name: string;
1278
+ files: {
1279
+ source: string;
1280
+ targetAlias: "components" | "hooks" | "utils" | "lib" | "business" | "templates";
1281
+ targetName: string;
1282
+ }[];
1283
+ updateStrategy?: "frozen" | "regenerable" | "managed" | undefined;
1284
+ template?: boolean | undefined;
1285
+ status?: "stable" | "experimental" | "deprecated" | undefined;
1286
+ variant?: string | undefined;
1287
+ meta?: string | undefined;
1288
+ registryDependencies?: string[] | undefined;
1289
+ dependencies?: Record<string, string> | undefined;
1290
+ deprecatedReason?: string | undefined;
1291
+ replacedBy?: string | undefined;
1292
+ }[];
1293
+ schemaVersion: 1;
1294
+ package: "templates" | "biz-ui";
1295
+ variant: string;
1296
+ version: string;
1297
+ engines: {
1298
+ 'teamix-evo': string;
1299
+ };
1300
+ $schema?: string | undefined;
1301
+ }>, {
1302
+ entries: {
1303
+ id: string;
1304
+ type: "template" | "component" | "hook" | "util" | "block";
1305
+ updateStrategy: "frozen" | "regenerable" | "managed";
1306
+ status: "stable" | "experimental" | "deprecated";
1307
+ description: string;
1308
+ name: string;
1309
+ files: {
1310
+ source: string;
1311
+ targetAlias: "components" | "hooks" | "utils" | "lib" | "business" | "templates";
1312
+ targetName: string;
1313
+ }[];
1314
+ template?: boolean | undefined;
1315
+ variant?: string | undefined;
1316
+ meta?: string | undefined;
1317
+ registryDependencies?: string[] | undefined;
1318
+ dependencies?: Record<string, string> | undefined;
1319
+ deprecatedReason?: string | undefined;
1320
+ replacedBy?: string | undefined;
1321
+ }[];
1322
+ schemaVersion: 1;
1323
+ package: "templates" | "biz-ui";
1324
+ variant: string;
1325
+ version: string;
1326
+ engines: {
1327
+ 'teamix-evo': string;
1328
+ };
1329
+ $schema?: string | undefined;
1330
+ }, {
1331
+ entries: {
1332
+ id: string;
1333
+ type: "template" | "component" | "hook" | "util" | "block";
1334
+ description: string;
1335
+ name: string;
1336
+ files: {
1337
+ source: string;
1338
+ targetAlias: "components" | "hooks" | "utils" | "lib" | "business" | "templates";
1339
+ targetName: string;
1340
+ }[];
1341
+ updateStrategy?: "frozen" | "regenerable" | "managed" | undefined;
1342
+ template?: boolean | undefined;
1343
+ status?: "stable" | "experimental" | "deprecated" | undefined;
1344
+ variant?: string | undefined;
1345
+ meta?: string | undefined;
1346
+ registryDependencies?: string[] | undefined;
1347
+ dependencies?: Record<string, string> | undefined;
1348
+ deprecatedReason?: string | undefined;
1349
+ replacedBy?: string | undefined;
1350
+ }[];
1351
+ schemaVersion: 1;
1352
+ package: "templates" | "biz-ui";
1353
+ variant: string;
1354
+ version: string;
1355
+ engines: {
1356
+ 'teamix-evo': string;
1357
+ };
1358
+ $schema?: string | undefined;
1359
+ }>;
1360
+ type VariantUiPackageManifest = z.infer<typeof VariantUiPackageManifestSchema>;
1361
+ type VariantUiPackageName = z.infer<typeof VariantUiPackageNameSchema>;
1362
+ /**
1363
+ * Top-level catalog summarizing the package's variants. Lives at
1364
+ * `packages/<pkg>/manifest.json`. Used by `<pkg> list-variants` and
1365
+ * cross-package variant-name sync checks.
1366
+ */
1367
+ declare const VariantUiPackageCatalogSchema: z.ZodObject<{
1368
+ $schema: z.ZodOptional<z.ZodString>;
1369
+ schemaVersion: z.ZodLiteral<1>;
1370
+ package: z.ZodEnum<["biz-ui", "templates"]>;
1371
+ /** Semver of the entire package. */
1372
+ version: z.ZodString;
1373
+ engines: z.ZodObject<{
1374
+ 'teamix-evo': z.ZodString;
1375
+ }, "strip", z.ZodTypeAny, {
1376
+ 'teamix-evo': string;
1377
+ }, {
1378
+ 'teamix-evo': string;
1379
+ }>;
1380
+ /** Variants this package ships (excluding `_template`). */
1381
+ variants: z.ZodArray<z.ZodObject<{
1382
+ name: z.ZodString;
1383
+ displayName: z.ZodString;
1384
+ version: z.ZodString;
1385
+ description: z.ZodOptional<z.ZodString>;
1386
+ }, "strip", z.ZodTypeAny, {
1387
+ displayName: string;
1388
+ version: string;
1389
+ name: string;
1390
+ description?: string | undefined;
1391
+ }, {
1392
+ displayName: string;
1393
+ version: string;
1394
+ name: string;
1395
+ description?: string | undefined;
1396
+ }>, "many">;
1397
+ }, "strip", z.ZodTypeAny, {
1398
+ schemaVersion: 1;
1399
+ package: "templates" | "biz-ui";
1400
+ version: string;
1401
+ engines: {
1402
+ 'teamix-evo': string;
1403
+ };
1404
+ variants: {
1405
+ displayName: string;
1406
+ version: string;
1407
+ name: string;
1408
+ description?: string | undefined;
1409
+ }[];
1410
+ $schema?: string | undefined;
1411
+ }, {
1412
+ schemaVersion: 1;
1413
+ package: "templates" | "biz-ui";
1414
+ version: string;
1415
+ engines: {
1416
+ 'teamix-evo': string;
1417
+ };
1418
+ variants: {
1419
+ displayName: string;
1420
+ version: string;
1421
+ name: string;
1422
+ description?: string | undefined;
1423
+ }[];
1424
+ $schema?: string | undefined;
1425
+ }>;
1426
+ type VariantUiPackageCatalog = z.infer<typeof VariantUiPackageCatalogSchema>;
1427
+
651
1428
  /**
652
1429
  * Tailwind CSS major version that the project consumes.
653
- * Used by integration tooling (skills) to choose the correct token entry file.
1430
+ *
1431
+ * Only `'v4'` is accepted. v3 was retired in v0.7 — the dual-track output
1432
+ * (`tokens.generated.css`) added maintenance cost without active demand.
1433
+ * The schema keeps the field optional so existing config.json files
1434
+ * (which may carry `tailwind: 'v4'`) continue to validate; any non-v4 value
1435
+ * — including legacy `'v3'` — is rejected so users get a clear error.
654
1436
  */
655
- declare const TailwindVersionSchema: z.ZodEnum<["v3", "v4"]>;
1437
+ declare const TailwindVersionSchema: z.ZodLiteral<"v4">;
656
1438
  /**
657
1439
  * Aliases for ui entry write-back paths in the consumer project.
658
- * Keys mirror shadcn `components.json` aliases for familiarity.
1440
+ * Keys mirror shadcn `components.json` aliases for familiarity, extended for
1441
+ * biz-ui (business) and templates per [ADR 0014](../../../../docs/adr/0014-ui-biz-ui-templates-tier.md).
659
1442
  */
660
1443
  declare const UiAliasesSchema: z.ZodObject<{
661
1444
  components: z.ZodString;
662
1445
  hooks: z.ZodString;
663
1446
  utils: z.ZodString;
664
1447
  lib: z.ZodString;
1448
+ /** Biz-ui components (variant-bound). Defaults to `src/components/business/`. */
1449
+ business: z.ZodDefault<z.ZodString>;
1450
+ /** Page templates (variant-bound). Defaults to `src/templates/`. */
1451
+ templates: z.ZodDefault<z.ZodString>;
665
1452
  }, "strip", z.ZodTypeAny, {
666
1453
  components: string;
667
1454
  hooks: string;
668
1455
  utils: string;
669
1456
  lib: string;
1457
+ business: string;
1458
+ templates: string;
670
1459
  }, {
671
1460
  components: string;
672
1461
  hooks: string;
673
1462
  utils: string;
674
1463
  lib: string;
1464
+ business?: string | undefined;
1465
+ templates?: string | undefined;
675
1466
  }>;
676
1467
  /**
677
1468
  * Package entry within a project config.
@@ -690,7 +1481,7 @@ declare const PackageEntrySchema: z.ZodObject<{
690
1481
  /** Semver version string */
691
1482
  version: z.ZodString;
692
1483
  /** Tailwind CSS version this project uses (only meaningful for design package). */
693
- tailwind: z.ZodOptional<z.ZodEnum<["v3", "v4"]>>;
1484
+ tailwind: z.ZodOptional<z.ZodLiteral<"v4">>;
694
1485
  /** IDEs this package was installed for (only meaningful for skills package). */
695
1486
  ides: z.ZodOptional<z.ZodArray<z.ZodEnum<["qoder", "claude"]>, "many">>;
696
1487
  /** Install scope (only meaningful for skills package). */
@@ -701,16 +1492,24 @@ declare const PackageEntrySchema: z.ZodObject<{
701
1492
  hooks: z.ZodString;
702
1493
  utils: z.ZodString;
703
1494
  lib: z.ZodString;
1495
+ /** Biz-ui components (variant-bound). Defaults to `src/components/business/`. */
1496
+ business: z.ZodDefault<z.ZodString>;
1497
+ /** Page templates (variant-bound). Defaults to `src/templates/`. */
1498
+ templates: z.ZodDefault<z.ZodString>;
704
1499
  }, "strip", z.ZodTypeAny, {
705
1500
  components: string;
706
1501
  hooks: string;
707
1502
  utils: string;
708
1503
  lib: string;
1504
+ business: string;
1505
+ templates: string;
709
1506
  }, {
710
1507
  components: string;
711
1508
  hooks: string;
712
1509
  utils: string;
713
1510
  lib: string;
1511
+ business?: string | undefined;
1512
+ templates?: string | undefined;
714
1513
  }>>;
715
1514
  /**
716
1515
  * Default icon library declared by the project (only meaningful for ui).
@@ -726,12 +1525,14 @@ declare const PackageEntrySchema: z.ZodObject<{
726
1525
  version: string;
727
1526
  ides?: ("qoder" | "claude")[] | undefined;
728
1527
  scope?: "project" | "global" | undefined;
729
- tailwind?: "v3" | "v4" | undefined;
1528
+ tailwind?: "v4" | undefined;
730
1529
  aliases?: {
731
1530
  components: string;
732
1531
  hooks: string;
733
1532
  utils: string;
734
1533
  lib: string;
1534
+ business: string;
1535
+ templates: string;
735
1536
  } | undefined;
736
1537
  iconLibrary?: string | undefined;
737
1538
  tsx?: boolean | undefined;
@@ -741,12 +1542,14 @@ declare const PackageEntrySchema: z.ZodObject<{
741
1542
  version: string;
742
1543
  ides?: ("qoder" | "claude")[] | undefined;
743
1544
  scope?: "project" | "global" | undefined;
744
- tailwind?: "v3" | "v4" | undefined;
1545
+ tailwind?: "v4" | undefined;
745
1546
  aliases?: {
746
1547
  components: string;
747
1548
  hooks: string;
748
1549
  utils: string;
749
1550
  lib: string;
1551
+ business?: string | undefined;
1552
+ templates?: string | undefined;
750
1553
  } | undefined;
751
1554
  iconLibrary?: string | undefined;
752
1555
  tsx?: boolean | undefined;
@@ -767,7 +1570,7 @@ declare const ProjectConfigSchema: z.ZodObject<{
767
1570
  /** Semver version string */
768
1571
  version: z.ZodString;
769
1572
  /** Tailwind CSS version this project uses (only meaningful for design package). */
770
- tailwind: z.ZodOptional<z.ZodEnum<["v3", "v4"]>>;
1573
+ tailwind: z.ZodOptional<z.ZodLiteral<"v4">>;
771
1574
  /** IDEs this package was installed for (only meaningful for skills package). */
772
1575
  ides: z.ZodOptional<z.ZodArray<z.ZodEnum<["qoder", "claude"]>, "many">>;
773
1576
  /** Install scope (only meaningful for skills package). */
@@ -778,16 +1581,24 @@ declare const ProjectConfigSchema: z.ZodObject<{
778
1581
  hooks: z.ZodString;
779
1582
  utils: z.ZodString;
780
1583
  lib: z.ZodString;
1584
+ /** Biz-ui components (variant-bound). Defaults to `src/components/business/`. */
1585
+ business: z.ZodDefault<z.ZodString>;
1586
+ /** Page templates (variant-bound). Defaults to `src/templates/`. */
1587
+ templates: z.ZodDefault<z.ZodString>;
781
1588
  }, "strip", z.ZodTypeAny, {
782
1589
  components: string;
783
1590
  hooks: string;
784
1591
  utils: string;
785
1592
  lib: string;
1593
+ business: string;
1594
+ templates: string;
786
1595
  }, {
787
1596
  components: string;
788
1597
  hooks: string;
789
1598
  utils: string;
790
1599
  lib: string;
1600
+ business?: string | undefined;
1601
+ templates?: string | undefined;
791
1602
  }>>;
792
1603
  /**
793
1604
  * Default icon library declared by the project (only meaningful for ui).
@@ -803,12 +1614,14 @@ declare const ProjectConfigSchema: z.ZodObject<{
803
1614
  version: string;
804
1615
  ides?: ("qoder" | "claude")[] | undefined;
805
1616
  scope?: "project" | "global" | undefined;
806
- tailwind?: "v3" | "v4" | undefined;
1617
+ tailwind?: "v4" | undefined;
807
1618
  aliases?: {
808
1619
  components: string;
809
1620
  hooks: string;
810
1621
  utils: string;
811
1622
  lib: string;
1623
+ business: string;
1624
+ templates: string;
812
1625
  } | undefined;
813
1626
  iconLibrary?: string | undefined;
814
1627
  tsx?: boolean | undefined;
@@ -818,12 +1631,14 @@ declare const ProjectConfigSchema: z.ZodObject<{
818
1631
  version: string;
819
1632
  ides?: ("qoder" | "claude")[] | undefined;
820
1633
  scope?: "project" | "global" | undefined;
821
- tailwind?: "v3" | "v4" | undefined;
1634
+ tailwind?: "v4" | undefined;
822
1635
  aliases?: {
823
1636
  components: string;
824
1637
  hooks: string;
825
1638
  utils: string;
826
1639
  lib: string;
1640
+ business?: string | undefined;
1641
+ templates?: string | undefined;
827
1642
  } | undefined;
828
1643
  iconLibrary?: string | undefined;
829
1644
  tsx?: boolean | undefined;
@@ -837,12 +1652,14 @@ declare const ProjectConfigSchema: z.ZodObject<{
837
1652
  version: string;
838
1653
  ides?: ("qoder" | "claude")[] | undefined;
839
1654
  scope?: "project" | "global" | undefined;
840
- tailwind?: "v3" | "v4" | undefined;
1655
+ tailwind?: "v4" | undefined;
841
1656
  aliases?: {
842
1657
  components: string;
843
1658
  hooks: string;
844
1659
  utils: string;
845
1660
  lib: string;
1661
+ business: string;
1662
+ templates: string;
846
1663
  } | undefined;
847
1664
  iconLibrary?: string | undefined;
848
1665
  tsx?: boolean | undefined;
@@ -857,12 +1674,14 @@ declare const ProjectConfigSchema: z.ZodObject<{
857
1674
  version: string;
858
1675
  ides?: ("qoder" | "claude")[] | undefined;
859
1676
  scope?: "project" | "global" | undefined;
860
- tailwind?: "v3" | "v4" | undefined;
1677
+ tailwind?: "v4" | undefined;
861
1678
  aliases?: {
862
1679
  components: string;
863
1680
  hooks: string;
864
1681
  utils: string;
865
1682
  lib: string;
1683
+ business?: string | undefined;
1684
+ templates?: string | undefined;
866
1685
  } | undefined;
867
1686
  iconLibrary?: string | undefined;
868
1687
  tsx?: boolean | undefined;
@@ -1080,6 +1899,107 @@ declare const InstalledManifestSchema: z.ZodObject<{
1080
1899
  }[];
1081
1900
  }>;
1082
1901
 
1902
+ /**
1903
+ * Skills source-mirror lock file schema.
1904
+ *
1905
+ * Per [ADR 0013](../../../../docs/adr/0013-skills-source-mirror.md), the source
1906
+ * lives at `.teamix-evo/skills/<id>/`, and IDE paths (`.qoder/skills/<id>/`,
1907
+ * `.claude/skills/<id>/`) are regenerable mirrors. This lock file at
1908
+ * `.teamix-evo/skills/manifest.lock.json` is the authoritative ledger of:
1909
+ *
1910
+ * 1. which skills are installed,
1911
+ * 2. which version each was installed from,
1912
+ * 3. which IDE mirror paths were produced (so `remove` / `sync` know where to act).
1913
+ *
1914
+ * v0.6 supports `qoder` + `claude` mirrors. `.cursor/rules/<id>.mdc` is v0.7
1915
+ * (per ADR 0013 §Implementation note); the schema does NOT pre-allocate
1916
+ * cursor-specific fields — they will be added with the v0.7 ADR.
1917
+ */
1918
+ declare const SkillsLockEntrySchema: z.ZodObject<{
1919
+ /** Semver version installed from upstream */
1920
+ version: z.ZodString;
1921
+ /** Upstream package name (typically `@teamix-evo/skills`) */
1922
+ from: z.ZodString;
1923
+ /** ISO 8601 install / last-sync timestamp */
1924
+ installedAt: z.ZodString;
1925
+ /** Install scope at time of mirror */
1926
+ scope: z.ZodEnum<["project", "global"]>;
1927
+ /**
1928
+ * IDEs this skill was mirrored to. Each ide ↔ a mirror path under
1929
+ * `<projectRoot>/.<ide>/skills/<id>/` (project) or `~/.<ide>/skills/<id>/`
1930
+ * (global). The path itself is reconstructed from `scope` + adapter; we
1931
+ * record the ide identifier rather than the full path to keep the lock
1932
+ * portable across machines.
1933
+ */
1934
+ mirroredTo: z.ZodArray<z.ZodEnum<["qoder", "claude"]>, "many">;
1935
+ }, "strip", z.ZodTypeAny, {
1936
+ scope: "project" | "global";
1937
+ version: string;
1938
+ from: string;
1939
+ installedAt: string;
1940
+ mirroredTo: ("qoder" | "claude")[];
1941
+ }, {
1942
+ scope: "project" | "global";
1943
+ version: string;
1944
+ from: string;
1945
+ installedAt: string;
1946
+ mirroredTo: ("qoder" | "claude")[];
1947
+ }>;
1948
+ declare const SkillsLockSchema: z.ZodObject<{
1949
+ schemaVersion: z.ZodLiteral<1>;
1950
+ /** Map of skill id → lock entry */
1951
+ skills: z.ZodRecord<z.ZodString, z.ZodObject<{
1952
+ /** Semver version installed from upstream */
1953
+ version: z.ZodString;
1954
+ /** Upstream package name (typically `@teamix-evo/skills`) */
1955
+ from: z.ZodString;
1956
+ /** ISO 8601 install / last-sync timestamp */
1957
+ installedAt: z.ZodString;
1958
+ /** Install scope at time of mirror */
1959
+ scope: z.ZodEnum<["project", "global"]>;
1960
+ /**
1961
+ * IDEs this skill was mirrored to. Each ide ↔ a mirror path under
1962
+ * `<projectRoot>/.<ide>/skills/<id>/` (project) or `~/.<ide>/skills/<id>/`
1963
+ * (global). The path itself is reconstructed from `scope` + adapter; we
1964
+ * record the ide identifier rather than the full path to keep the lock
1965
+ * portable across machines.
1966
+ */
1967
+ mirroredTo: z.ZodArray<z.ZodEnum<["qoder", "claude"]>, "many">;
1968
+ }, "strip", z.ZodTypeAny, {
1969
+ scope: "project" | "global";
1970
+ version: string;
1971
+ from: string;
1972
+ installedAt: string;
1973
+ mirroredTo: ("qoder" | "claude")[];
1974
+ }, {
1975
+ scope: "project" | "global";
1976
+ version: string;
1977
+ from: string;
1978
+ installedAt: string;
1979
+ mirroredTo: ("qoder" | "claude")[];
1980
+ }>>;
1981
+ }, "strip", z.ZodTypeAny, {
1982
+ schemaVersion: 1;
1983
+ skills: Record<string, {
1984
+ scope: "project" | "global";
1985
+ version: string;
1986
+ from: string;
1987
+ installedAt: string;
1988
+ mirroredTo: ("qoder" | "claude")[];
1989
+ }>;
1990
+ }, {
1991
+ schemaVersion: 1;
1992
+ skills: Record<string, {
1993
+ scope: "project" | "global";
1994
+ version: string;
1995
+ from: string;
1996
+ installedAt: string;
1997
+ mirroredTo: ("qoder" | "claude")[];
1998
+ }>;
1999
+ }>;
2000
+ type SkillsLockEntry = z.infer<typeof SkillsLockEntrySchema>;
2001
+ type SkillsLock = z.infer<typeof SkillsLockSchema>;
2002
+
1083
2003
  /** Resource update strategy */
1084
2004
  type UpdateStrategy = z.infer<typeof UpdateStrategySchema>;
1085
2005
  /** Resource type discriminator */
@@ -1110,7 +2030,7 @@ type UiPackageManifest = z.infer<typeof UiPackageManifestSchema>;
1110
2030
  type UiAliases = z.infer<typeof UiAliasesSchema>;
1111
2031
  /** A package entry in the project config */
1112
2032
  type PackageEntry = z.infer<typeof PackageEntrySchema>;
1113
- /** Tailwind CSS major version ("v3" | "v4") */
2033
+ /** Tailwind CSS major version (always `"v4"` since v0.7). */
1114
2034
  type TailwindVersion = z.infer<typeof TailwindVersionSchema>;
1115
2035
  /** Project configuration (config.json) */
1116
2036
  type ProjectConfig = z.infer<typeof ProjectConfigSchema>;
@@ -1175,6 +2095,59 @@ declare function loadSkillsPackageManifest(packageDir: string): Promise<SkillsPa
1175
2095
  */
1176
2096
  declare function loadUiPackageManifest(packageDir: string): Promise<UiPackageManifest>;
1177
2097
 
2098
+ /**
2099
+ * Read & validate a single pack's `pack.json`.
2100
+ * Errors are wrapped with the file path for easy diagnosis (P8).
2101
+ */
2102
+ declare function loadDesignPack(packDir: string): Promise<DesignPackManifest>;
2103
+ /**
2104
+ * Read & validate the top-level `packages/design/manifest.json` catalog.
2105
+ */
2106
+ declare function loadDesignPackageManifest(packageDir: string): Promise<DesignPackageManifest>;
2107
+ /**
2108
+ * Walk all files under a pack root and return their paths **relative to
2109
+ * `packDir`**, excluding pack metadata files (`pack.json`).
2110
+ *
2111
+ * Returns a sorted list (deterministic for tests + diff-friendly).
2112
+ */
2113
+ declare function walkPackTree(packDir: string): Promise<string[]>;
2114
+ /**
2115
+ * Result of merging default + variant: each entry is a file the CLI should
2116
+ * install, paired with which on-disk file to read.
2117
+ */
2118
+ interface MergedFileEntry {
2119
+ /** Path relative to the pack root (e.g. `philosophy/principles.md`). */
2120
+ relPath: string;
2121
+ /** Absolute filesystem path the CLI should read. */
2122
+ sourcePath: string;
2123
+ /** Which pack provided this file (for diagnostics + UI listing). */
2124
+ origin: 'default' | 'variant';
2125
+ }
2126
+ interface MergeResult {
2127
+ files: MergedFileEntry[];
2128
+ /** Files where variant overrode default. Useful for diagnostics. */
2129
+ overrides: string[];
2130
+ /** Files only in variant (no default counterpart). */
2131
+ variantAdds: string[];
2132
+ /** Files only in default (variant didn't override). */
2133
+ defaultPassThrough: string[];
2134
+ }
2135
+ /**
2136
+ * File-level merge per ADR 0010 §4.
2137
+ *
2138
+ * For each file path P:
2139
+ * - If `<variantDir>/P` exists: use the variant's file (override).
2140
+ * - Else: use the default's file (pass-through).
2141
+ * Plus: every file in variant tree NOT present in default tree is appended
2142
+ * (variant-add).
2143
+ *
2144
+ * No content parsing happens here — files are read as-is by the caller.
2145
+ */
2146
+ declare function mergeDefaultAndVariant(defaultDir: string, variantDir: string): Promise<MergeResult>;
2147
+
2148
+ declare function loadVariantUiPackageCatalog(packageDir: string): Promise<VariantUiPackageCatalog>;
2149
+ declare function loadVariantUiPackageManifest(variantDir: string): Promise<VariantUiPackageManifest>;
2150
+
1178
2151
  /**
1179
2152
  * Validate unknown data against the VariantManifest schema.
1180
2153
  * Returns a discriminated Result with either the parsed data or a friendly error message.
@@ -1188,6 +2161,11 @@ declare function validateConfig(data: unknown): Result<ProjectConfig>;
1188
2161
  * Validate unknown data against the InstalledManifest schema.
1189
2162
  */
1190
2163
  declare function validateInstalled(data: unknown): Result<InstalledManifest>;
2164
+ /**
2165
+ * Validate unknown data against the SkillsLock schema (skills source-mirror lock).
2166
+ * Stored at `.teamix-evo/skills/manifest.lock.json` per ADR 0013.
2167
+ */
2168
+ declare function validateSkillsLock(data: unknown): Result<SkillsLock>;
1191
2169
  /**
1192
2170
  * Validate unknown data against the SkillsPackageManifest schema.
1193
2171
  */
@@ -1274,4 +2252,4 @@ interface UpdateActionOptions {
1274
2252
  */
1275
2253
  declare function getUpdateAction(strategy: UpdateStrategy, options: UpdateActionOptions): UpdateAction;
1276
2254
 
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 };
2255
+ export { type DesignPackLinked, DesignPackLinkedSchema, type DesignPackLock, DesignPackLockSchema, type DesignPackManifest, DesignPackManifestSchema, type DesignPackageManifest, DesignPackageManifestSchema, type InstalledManifest, InstalledManifestSchema, type InstalledPackage, InstalledPackageSchema, type InstalledResource, InstalledResourceSchema, type ManagedRegion, type MergeResult, type MergedFileEntry, 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 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, hasManagedRegion, loadDesignPack, loadDesignPackageManifest, loadSkillsPackageManifest, loadUiPackageManifest, loadVariantManifest, loadVariantUiPackageCatalog, loadVariantUiPackageManifest, mergeDefaultAndVariant, parseManagedRegions, replaceManagedRegion, resolveUiEntryOrder, shouldUpdate, validateConfig, validateInstalled, validateManifest, validateSkillsLock, validateSkillsPackage, validateUiDependencyGraph, validateUiPackage, walkPackTree };