@teamix-evo/registry 0.1.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/LICENSE +21 -0
- package/README.md +123 -0
- package/dist/index.cjs +822 -36
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +1774 -24
- package/dist/index.d.ts +1774 -24
- package/dist/index.js +788 -35
- package/dist/index.js.map +1 -1
- package/package.json +14 -10
package/dist/index.d.cts
CHANGED
|
@@ -10,7 +10,18 @@ declare const UpdateStrategySchema: z.ZodEnum<["frozen", "regenerable", "managed
|
|
|
10
10
|
/**
|
|
11
11
|
* Resource type discriminator.
|
|
12
12
|
*/
|
|
13
|
-
declare const ResourceTypeSchema: z.ZodEnum<["doc", "tokens", "ai-rules", "config"]>;
|
|
13
|
+
declare const ResourceTypeSchema: z.ZodEnum<["doc", "tokens", "ai-rules", "config", "skill"]>;
|
|
14
|
+
/**
|
|
15
|
+
* Supported AI IDE identifiers for skill resources.
|
|
16
|
+
* Qoder and Claude Code share the same SKILL.md format; differ only by install path.
|
|
17
|
+
*/
|
|
18
|
+
declare const SkillIdeSchema: z.ZodEnum<["qoder", "claude"]>;
|
|
19
|
+
/**
|
|
20
|
+
* Skill installation scope.
|
|
21
|
+
* - project: install under project root (.qoder/skills/, .claude/skills/)
|
|
22
|
+
* - global: install under user home (~/.qoder/skills/, ~/.claude/skills/)
|
|
23
|
+
*/
|
|
24
|
+
declare const SkillScopeSchema: z.ZodEnum<["project", "global"]>;
|
|
14
25
|
/**
|
|
15
26
|
* A single resource entry within a variant manifest.
|
|
16
27
|
*/
|
|
@@ -18,10 +29,13 @@ declare const ResourceSchema: z.ZodObject<{
|
|
|
18
29
|
/** Unique identifier for the resource within the manifest */
|
|
19
30
|
id: z.ZodString;
|
|
20
31
|
/** Resource type */
|
|
21
|
-
type: z.ZodEnum<["doc", "tokens", "ai-rules", "config"]>;
|
|
32
|
+
type: z.ZodEnum<["doc", "tokens", "ai-rules", "config", "skill"]>;
|
|
22
33
|
/** Source path (relative to variant root), typically a template */
|
|
23
34
|
source: z.ZodString;
|
|
24
|
-
/**
|
|
35
|
+
/**
|
|
36
|
+
* Target path (relative to project root) where the resource is installed.
|
|
37
|
+
* For type="skill" this is ignored: the path is computed from skill name + ide + scope.
|
|
38
|
+
*/
|
|
25
39
|
target: z.ZodString;
|
|
26
40
|
/** How the resource is updated */
|
|
27
41
|
updateStrategy: z.ZodEnum<["frozen", "regenerable", "managed"]>;
|
|
@@ -31,24 +45,32 @@ declare const ResourceSchema: z.ZodObject<{
|
|
|
31
45
|
managedRegions: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
32
46
|
/** Whether to recursively process directory contents */
|
|
33
47
|
recursive: z.ZodOptional<z.ZodBoolean>;
|
|
48
|
+
/** Supported IDEs (only meaningful when type="skill"; defaults to all when omitted) */
|
|
49
|
+
ides: z.ZodOptional<z.ZodArray<z.ZodEnum<["qoder", "claude"]>, "many">>;
|
|
50
|
+
/** Default install scope (only meaningful when type="skill"; user can override at install time) */
|
|
51
|
+
scope: z.ZodOptional<z.ZodEnum<["project", "global"]>>;
|
|
34
52
|
}, "strip", z.ZodTypeAny, {
|
|
35
53
|
id: string;
|
|
36
|
-
type: "doc" | "tokens" | "ai-rules" | "config";
|
|
54
|
+
type: "doc" | "tokens" | "ai-rules" | "config" | "skill";
|
|
37
55
|
source: string;
|
|
38
56
|
target: string;
|
|
39
57
|
updateStrategy: "frozen" | "regenerable" | "managed";
|
|
40
58
|
template?: boolean | undefined;
|
|
41
59
|
managedRegions?: string[] | undefined;
|
|
42
60
|
recursive?: boolean | undefined;
|
|
61
|
+
ides?: ("qoder" | "claude")[] | undefined;
|
|
62
|
+
scope?: "project" | "global" | undefined;
|
|
43
63
|
}, {
|
|
44
64
|
id: string;
|
|
45
|
-
type: "doc" | "tokens" | "ai-rules" | "config";
|
|
65
|
+
type: "doc" | "tokens" | "ai-rules" | "config" | "skill";
|
|
46
66
|
source: string;
|
|
47
67
|
target: string;
|
|
48
68
|
updateStrategy: "frozen" | "regenerable" | "managed";
|
|
49
69
|
template?: boolean | undefined;
|
|
50
70
|
managedRegions?: string[] | undefined;
|
|
51
71
|
recursive?: boolean | undefined;
|
|
72
|
+
ides?: ("qoder" | "claude")[] | undefined;
|
|
73
|
+
scope?: "project" | "global" | undefined;
|
|
52
74
|
}>;
|
|
53
75
|
/**
|
|
54
76
|
* Variant manifest schema — describes a variant package and its resources.
|
|
@@ -68,11 +90,11 @@ declare const VariantManifestSchema: z.ZodObject<{
|
|
|
68
90
|
version: z.ZodString;
|
|
69
91
|
/** Engine compatibility */
|
|
70
92
|
engines: z.ZodObject<{
|
|
71
|
-
|
|
93
|
+
'teamix-evo': z.ZodString;
|
|
72
94
|
}, "strip", z.ZodTypeAny, {
|
|
73
|
-
|
|
95
|
+
'teamix-evo': string;
|
|
74
96
|
}, {
|
|
75
|
-
|
|
97
|
+
'teamix-evo': string;
|
|
76
98
|
}>;
|
|
77
99
|
/** Supported IDE identifiers */
|
|
78
100
|
ide: z.ZodArray<z.ZodString, "many">;
|
|
@@ -81,10 +103,13 @@ declare const VariantManifestSchema: z.ZodObject<{
|
|
|
81
103
|
/** Unique identifier for the resource within the manifest */
|
|
82
104
|
id: z.ZodString;
|
|
83
105
|
/** Resource type */
|
|
84
|
-
type: z.ZodEnum<["doc", "tokens", "ai-rules", "config"]>;
|
|
106
|
+
type: z.ZodEnum<["doc", "tokens", "ai-rules", "config", "skill"]>;
|
|
85
107
|
/** Source path (relative to variant root), typically a template */
|
|
86
108
|
source: z.ZodString;
|
|
87
|
-
/**
|
|
109
|
+
/**
|
|
110
|
+
* Target path (relative to project root) where the resource is installed.
|
|
111
|
+
* For type="skill" this is ignored: the path is computed from skill name + ide + scope.
|
|
112
|
+
*/
|
|
88
113
|
target: z.ZodString;
|
|
89
114
|
/** How the resource is updated */
|
|
90
115
|
updateStrategy: z.ZodEnum<["frozen", "regenerable", "managed"]>;
|
|
@@ -94,24 +119,32 @@ declare const VariantManifestSchema: z.ZodObject<{
|
|
|
94
119
|
managedRegions: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
95
120
|
/** Whether to recursively process directory contents */
|
|
96
121
|
recursive: z.ZodOptional<z.ZodBoolean>;
|
|
122
|
+
/** Supported IDEs (only meaningful when type="skill"; defaults to all when omitted) */
|
|
123
|
+
ides: z.ZodOptional<z.ZodArray<z.ZodEnum<["qoder", "claude"]>, "many">>;
|
|
124
|
+
/** Default install scope (only meaningful when type="skill"; user can override at install time) */
|
|
125
|
+
scope: z.ZodOptional<z.ZodEnum<["project", "global"]>>;
|
|
97
126
|
}, "strip", z.ZodTypeAny, {
|
|
98
127
|
id: string;
|
|
99
|
-
type: "doc" | "tokens" | "ai-rules" | "config";
|
|
128
|
+
type: "doc" | "tokens" | "ai-rules" | "config" | "skill";
|
|
100
129
|
source: string;
|
|
101
130
|
target: string;
|
|
102
131
|
updateStrategy: "frozen" | "regenerable" | "managed";
|
|
103
132
|
template?: boolean | undefined;
|
|
104
133
|
managedRegions?: string[] | undefined;
|
|
105
134
|
recursive?: boolean | undefined;
|
|
135
|
+
ides?: ("qoder" | "claude")[] | undefined;
|
|
136
|
+
scope?: "project" | "global" | undefined;
|
|
106
137
|
}, {
|
|
107
138
|
id: string;
|
|
108
|
-
type: "doc" | "tokens" | "ai-rules" | "config";
|
|
139
|
+
type: "doc" | "tokens" | "ai-rules" | "config" | "skill";
|
|
109
140
|
source: string;
|
|
110
141
|
target: string;
|
|
111
142
|
updateStrategy: "frozen" | "regenerable" | "managed";
|
|
112
143
|
template?: boolean | undefined;
|
|
113
144
|
managedRegions?: string[] | undefined;
|
|
114
145
|
recursive?: boolean | undefined;
|
|
146
|
+
ides?: ("qoder" | "claude")[] | undefined;
|
|
147
|
+
scope?: "project" | "global" | undefined;
|
|
115
148
|
}>, "many">;
|
|
116
149
|
}, "strip", z.ZodTypeAny, {
|
|
117
150
|
schemaVersion: 1;
|
|
@@ -121,18 +154,20 @@ declare const VariantManifestSchema: z.ZodObject<{
|
|
|
121
154
|
description: string;
|
|
122
155
|
version: string;
|
|
123
156
|
engines: {
|
|
124
|
-
|
|
157
|
+
'teamix-evo': string;
|
|
125
158
|
};
|
|
126
159
|
ide: string[];
|
|
127
160
|
resources: {
|
|
128
161
|
id: string;
|
|
129
|
-
type: "doc" | "tokens" | "ai-rules" | "config";
|
|
162
|
+
type: "doc" | "tokens" | "ai-rules" | "config" | "skill";
|
|
130
163
|
source: string;
|
|
131
164
|
target: string;
|
|
132
165
|
updateStrategy: "frozen" | "regenerable" | "managed";
|
|
133
166
|
template?: boolean | undefined;
|
|
134
167
|
managedRegions?: string[] | undefined;
|
|
135
168
|
recursive?: boolean | undefined;
|
|
169
|
+
ides?: ("qoder" | "claude")[] | undefined;
|
|
170
|
+
scope?: "project" | "global" | undefined;
|
|
136
171
|
}[];
|
|
137
172
|
$schema?: string | undefined;
|
|
138
173
|
}, {
|
|
@@ -143,36 +178,1382 @@ declare const VariantManifestSchema: z.ZodObject<{
|
|
|
143
178
|
description: string;
|
|
144
179
|
version: string;
|
|
145
180
|
engines: {
|
|
146
|
-
|
|
181
|
+
'teamix-evo': string;
|
|
147
182
|
};
|
|
148
183
|
ide: string[];
|
|
149
184
|
resources: {
|
|
150
185
|
id: string;
|
|
151
|
-
type: "doc" | "tokens" | "ai-rules" | "config";
|
|
186
|
+
type: "doc" | "tokens" | "ai-rules" | "config" | "skill";
|
|
152
187
|
source: string;
|
|
153
188
|
target: string;
|
|
154
189
|
updateStrategy: "frozen" | "regenerable" | "managed";
|
|
155
190
|
template?: boolean | undefined;
|
|
156
191
|
managedRegions?: string[] | undefined;
|
|
157
192
|
recursive?: boolean | undefined;
|
|
193
|
+
ides?: ("qoder" | "claude")[] | undefined;
|
|
194
|
+
scope?: "project" | "global" | undefined;
|
|
195
|
+
}[];
|
|
196
|
+
$schema?: string | undefined;
|
|
197
|
+
}>;
|
|
198
|
+
/**
|
|
199
|
+
* A single skill entry within a skills package manifest.
|
|
200
|
+
*/
|
|
201
|
+
declare const SkillEntrySchema: z.ZodObject<{
|
|
202
|
+
/** Skill identifier (matches name/folder) */
|
|
203
|
+
id: z.ZodString;
|
|
204
|
+
/** Skill name — must match the directory name and frontmatter `name` */
|
|
205
|
+
name: z.ZodString;
|
|
206
|
+
/** One-line description for skill discovery */
|
|
207
|
+
description: z.ZodString;
|
|
208
|
+
/** Semver version */
|
|
209
|
+
version: z.ZodString;
|
|
210
|
+
/** Source path relative to package root — file or directory */
|
|
211
|
+
source: z.ZodString;
|
|
212
|
+
/** Supported IDEs (defaults to both when omitted) */
|
|
213
|
+
ides: z.ZodDefault<z.ZodArray<z.ZodEnum<["qoder", "claude"]>, "many">>;
|
|
214
|
+
/** Update strategy (defaults to managed) */
|
|
215
|
+
updateStrategy: z.ZodDefault<z.ZodEnum<["frozen", "regenerable", "managed"]>>;
|
|
216
|
+
/** Managed region IDs to maintain on update */
|
|
217
|
+
managedRegions: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
218
|
+
/** Whether the source is a Handlebars template */
|
|
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>;
|
|
233
|
+
}, "strip", z.ZodTypeAny, {
|
|
234
|
+
id: string;
|
|
235
|
+
source: string;
|
|
236
|
+
updateStrategy: "frozen" | "regenerable" | "managed";
|
|
237
|
+
ides: ("qoder" | "claude")[];
|
|
238
|
+
description: string;
|
|
239
|
+
version: string;
|
|
240
|
+
name: string;
|
|
241
|
+
template?: boolean | undefined;
|
|
242
|
+
managedRegions?: string[] | undefined;
|
|
243
|
+
variant?: string | undefined;
|
|
244
|
+
}, {
|
|
245
|
+
id: string;
|
|
246
|
+
source: string;
|
|
247
|
+
description: string;
|
|
248
|
+
version: string;
|
|
249
|
+
name: string;
|
|
250
|
+
updateStrategy?: "frozen" | "regenerable" | "managed" | undefined;
|
|
251
|
+
template?: boolean | undefined;
|
|
252
|
+
managedRegions?: string[] | undefined;
|
|
253
|
+
ides?: ("qoder" | "claude")[] | undefined;
|
|
254
|
+
variant?: string | undefined;
|
|
255
|
+
}>;
|
|
256
|
+
/**
|
|
257
|
+
* Skills package manifest schema — top-level manifest of `@teamix-evo/skills`.
|
|
258
|
+
* Skills are stored flat in the manifest. Variant binding is expressed via
|
|
259
|
+
* the optional `variant` field on each entry (see SkillEntrySchema).
|
|
260
|
+
*/
|
|
261
|
+
declare const SkillsPackageManifestSchema: z.ZodObject<{
|
|
262
|
+
$schema: z.ZodOptional<z.ZodString>;
|
|
263
|
+
schemaVersion: z.ZodLiteral<1>;
|
|
264
|
+
/** Always "skills" for this package */
|
|
265
|
+
package: z.ZodLiteral<"skills">;
|
|
266
|
+
/** Semver version of the skills package */
|
|
267
|
+
version: z.ZodString;
|
|
268
|
+
/** Engine compatibility */
|
|
269
|
+
engines: z.ZodObject<{
|
|
270
|
+
'teamix-evo': z.ZodString;
|
|
271
|
+
}, "strip", z.ZodTypeAny, {
|
|
272
|
+
'teamix-evo': string;
|
|
273
|
+
}, {
|
|
274
|
+
'teamix-evo': string;
|
|
275
|
+
}>;
|
|
276
|
+
/** Flat list of skills shipped by this package */
|
|
277
|
+
skills: z.ZodArray<z.ZodObject<{
|
|
278
|
+
/** Skill identifier (matches name/folder) */
|
|
279
|
+
id: z.ZodString;
|
|
280
|
+
/** Skill name — must match the directory name and frontmatter `name` */
|
|
281
|
+
name: z.ZodString;
|
|
282
|
+
/** One-line description for skill discovery */
|
|
283
|
+
description: z.ZodString;
|
|
284
|
+
/** Semver version */
|
|
285
|
+
version: z.ZodString;
|
|
286
|
+
/** Source path relative to package root — file or directory */
|
|
287
|
+
source: z.ZodString;
|
|
288
|
+
/** Supported IDEs (defaults to both when omitted) */
|
|
289
|
+
ides: z.ZodDefault<z.ZodArray<z.ZodEnum<["qoder", "claude"]>, "many">>;
|
|
290
|
+
/** Update strategy (defaults to managed) */
|
|
291
|
+
updateStrategy: z.ZodDefault<z.ZodEnum<["frozen", "regenerable", "managed"]>>;
|
|
292
|
+
/** Managed region IDs to maintain on update */
|
|
293
|
+
managedRegions: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
294
|
+
/** Whether the source is a Handlebars template */
|
|
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>;
|
|
309
|
+
}, "strip", z.ZodTypeAny, {
|
|
310
|
+
id: string;
|
|
311
|
+
source: string;
|
|
312
|
+
updateStrategy: "frozen" | "regenerable" | "managed";
|
|
313
|
+
ides: ("qoder" | "claude")[];
|
|
314
|
+
description: string;
|
|
315
|
+
version: string;
|
|
316
|
+
name: string;
|
|
317
|
+
template?: boolean | undefined;
|
|
318
|
+
managedRegions?: string[] | undefined;
|
|
319
|
+
variant?: string | undefined;
|
|
320
|
+
}, {
|
|
321
|
+
id: string;
|
|
322
|
+
source: string;
|
|
323
|
+
description: string;
|
|
324
|
+
version: string;
|
|
325
|
+
name: string;
|
|
326
|
+
updateStrategy?: "frozen" | "regenerable" | "managed" | undefined;
|
|
327
|
+
template?: boolean | undefined;
|
|
328
|
+
managedRegions?: string[] | undefined;
|
|
329
|
+
ides?: ("qoder" | "claude")[] | undefined;
|
|
330
|
+
variant?: string | undefined;
|
|
331
|
+
}>, "many">;
|
|
332
|
+
}, "strip", z.ZodTypeAny, {
|
|
333
|
+
schemaVersion: 1;
|
|
334
|
+
package: "skills";
|
|
335
|
+
version: string;
|
|
336
|
+
engines: {
|
|
337
|
+
'teamix-evo': string;
|
|
338
|
+
};
|
|
339
|
+
skills: {
|
|
340
|
+
id: string;
|
|
341
|
+
source: string;
|
|
342
|
+
updateStrategy: "frozen" | "regenerable" | "managed";
|
|
343
|
+
ides: ("qoder" | "claude")[];
|
|
344
|
+
description: string;
|
|
345
|
+
version: string;
|
|
346
|
+
name: string;
|
|
347
|
+
template?: boolean | undefined;
|
|
348
|
+
managedRegions?: string[] | undefined;
|
|
349
|
+
variant?: string | undefined;
|
|
350
|
+
}[];
|
|
351
|
+
$schema?: string | undefined;
|
|
352
|
+
}, {
|
|
353
|
+
schemaVersion: 1;
|
|
354
|
+
package: "skills";
|
|
355
|
+
version: string;
|
|
356
|
+
engines: {
|
|
357
|
+
'teamix-evo': string;
|
|
358
|
+
};
|
|
359
|
+
skills: {
|
|
360
|
+
id: string;
|
|
361
|
+
source: string;
|
|
362
|
+
description: string;
|
|
363
|
+
version: string;
|
|
364
|
+
name: string;
|
|
365
|
+
updateStrategy?: "frozen" | "regenerable" | "managed" | undefined;
|
|
366
|
+
template?: boolean | undefined;
|
|
367
|
+
managedRegions?: string[] | undefined;
|
|
368
|
+
ides?: ("qoder" | "claude")[] | undefined;
|
|
369
|
+
variant?: string | undefined;
|
|
370
|
+
}[];
|
|
371
|
+
$schema?: string | undefined;
|
|
372
|
+
}>;
|
|
373
|
+
/**
|
|
374
|
+
* UI entry types.
|
|
375
|
+
* - component: a React component (e.g. button.tsx)
|
|
376
|
+
* - hook: a React hook (e.g. use-controllable.ts)
|
|
377
|
+
* - util: a utility function (e.g. cn.ts)
|
|
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).
|
|
384
|
+
*/
|
|
385
|
+
declare const UiEntryTypeSchema: z.ZodEnum<["component", "hook", "util", "block", "template"]>;
|
|
386
|
+
/**
|
|
387
|
+
* Alias keys used to resolve where an entry file lands in the user's project.
|
|
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)
|
|
393
|
+
*/
|
|
394
|
+
declare const UiAliasSchema: z.ZodEnum<["components", "hooks", "utils", "lib", "business", "templates"]>;
|
|
395
|
+
/**
|
|
396
|
+
* A single file shipped by a UI entry.
|
|
397
|
+
* Multiple files form one logical entry (rare, but supported).
|
|
398
|
+
*/
|
|
399
|
+
declare const UiEntryFileSchema: z.ZodObject<{
|
|
400
|
+
/** Source path relative to the ui package root (e.g. "src/components/button/button.tsx") */
|
|
401
|
+
source: z.ZodString;
|
|
402
|
+
/** Which alias this file resolves under in the consumer project */
|
|
403
|
+
targetAlias: z.ZodEnum<["components", "hooks", "utils", "lib", "business", "templates"]>;
|
|
404
|
+
/** Filename written under the alias directory (e.g. "button.tsx") */
|
|
405
|
+
targetName: z.ZodString;
|
|
406
|
+
}, "strip", z.ZodTypeAny, {
|
|
407
|
+
source: string;
|
|
408
|
+
targetAlias: "components" | "hooks" | "utils" | "lib" | "business" | "templates";
|
|
409
|
+
targetName: string;
|
|
410
|
+
}, {
|
|
411
|
+
source: string;
|
|
412
|
+
targetAlias: "components" | "hooks" | "utils" | "lib" | "business" | "templates";
|
|
413
|
+
targetName: string;
|
|
414
|
+
}>;
|
|
415
|
+
/**
|
|
416
|
+
* A single UI entry (component / hook / util / block).
|
|
417
|
+
*/
|
|
418
|
+
declare const UiEntrySchema: z.ZodObject<{
|
|
419
|
+
/** Unique entry identifier within the ui package (e.g. "button") */
|
|
420
|
+
id: z.ZodString;
|
|
421
|
+
/** Display name (e.g. "Button") */
|
|
422
|
+
name: z.ZodString;
|
|
423
|
+
/** Entry type */
|
|
424
|
+
type: z.ZodEnum<["component", "hook", "util", "block", "template"]>;
|
|
425
|
+
/** One-line description for entry discovery and AI guidance */
|
|
426
|
+
description: z.ZodString;
|
|
427
|
+
/** Files this entry ships (typically 1) */
|
|
428
|
+
files: z.ZodArray<z.ZodObject<{
|
|
429
|
+
/** Source path relative to the ui package root (e.g. "src/components/button/button.tsx") */
|
|
430
|
+
source: z.ZodString;
|
|
431
|
+
/** Which alias this file resolves under in the consumer project */
|
|
432
|
+
targetAlias: z.ZodEnum<["components", "hooks", "utils", "lib", "business", "templates"]>;
|
|
433
|
+
/** Filename written under the alias directory (e.g. "button.tsx") */
|
|
434
|
+
targetName: z.ZodString;
|
|
435
|
+
}, "strip", z.ZodTypeAny, {
|
|
436
|
+
source: string;
|
|
437
|
+
targetAlias: "components" | "hooks" | "utils" | "lib" | "business" | "templates";
|
|
438
|
+
targetName: string;
|
|
439
|
+
}, {
|
|
440
|
+
source: string;
|
|
441
|
+
targetAlias: "components" | "hooks" | "utils" | "lib" | "business" | "templates";
|
|
442
|
+
targetName: string;
|
|
443
|
+
}>, "many">;
|
|
444
|
+
/**
|
|
445
|
+
* Optional path to an AI-readable meta document (frontmatter + Markdown).
|
|
446
|
+
* When set, CLI install drops it at `.teamix-evo/design/components/<id>.meta.md`
|
|
447
|
+
* for design's ai-rules to consume.
|
|
448
|
+
*/
|
|
449
|
+
meta: z.ZodOptional<z.ZodString>;
|
|
450
|
+
/** Other UI entries this one depends on (e.g. "button" depends on "cn") */
|
|
451
|
+
registryDependencies: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
452
|
+
/** npm dependencies required by this entry (name → semver range) */
|
|
453
|
+
dependencies: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
454
|
+
/**
|
|
455
|
+
* How CLI handles this entry on `ui upgrade`.
|
|
456
|
+
* Defaults to `frozen` — user-owned source code, untouched after first install.
|
|
457
|
+
* Upgrade is handled by AI + skill flow (no CLI rewrite). See PLAN §10.9.
|
|
458
|
+
*/
|
|
459
|
+
updateStrategy: z.ZodDefault<z.ZodEnum<["frozen", "regenerable", "managed"]>>;
|
|
460
|
+
/**
|
|
461
|
+
* Whether the source file should be passed through Handlebars before write.
|
|
462
|
+
* Most entries don't need templating (use import-rewrite transformer instead).
|
|
463
|
+
*/
|
|
464
|
+
template: z.ZodOptional<z.ZodBoolean>;
|
|
465
|
+
/**
|
|
466
|
+
* Maturity / lifecycle status of this entry. Defaults to `stable`.
|
|
467
|
+
* See {@link UiEntryStatusSchema} for semantics.
|
|
468
|
+
*/
|
|
469
|
+
status: z.ZodDefault<z.ZodEnum<["stable", "experimental", "deprecated"]>>;
|
|
470
|
+
/**
|
|
471
|
+
* Free-text rationale shown to consumers when `status` is `deprecated`.
|
|
472
|
+
* Should explain why the entry is going away and what replaces it.
|
|
473
|
+
*/
|
|
474
|
+
deprecatedReason: z.ZodOptional<z.ZodString>;
|
|
475
|
+
/**
|
|
476
|
+
* If this entry is `deprecated`, the id of the entry that supersedes it.
|
|
477
|
+
* Consumers (and AI) should migrate to `replacedBy` rather than this entry.
|
|
478
|
+
*/
|
|
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>;
|
|
487
|
+
}, "strip", z.ZodTypeAny, {
|
|
488
|
+
id: string;
|
|
489
|
+
type: "template" | "component" | "hook" | "util" | "block";
|
|
490
|
+
updateStrategy: "frozen" | "regenerable" | "managed";
|
|
491
|
+
status: "stable" | "experimental" | "deprecated";
|
|
492
|
+
description: string;
|
|
493
|
+
name: string;
|
|
494
|
+
files: {
|
|
495
|
+
source: string;
|
|
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";
|
|
514
|
+
targetName: string;
|
|
515
|
+
}[];
|
|
516
|
+
updateStrategy?: "frozen" | "regenerable" | "managed" | undefined;
|
|
517
|
+
template?: boolean | undefined;
|
|
518
|
+
status?: "stable" | "experimental" | "deprecated" | undefined;
|
|
519
|
+
variant?: string | undefined;
|
|
520
|
+
meta?: string | undefined;
|
|
521
|
+
registryDependencies?: string[] | undefined;
|
|
522
|
+
dependencies?: Record<string, string> | undefined;
|
|
523
|
+
deprecatedReason?: string | undefined;
|
|
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
|
+
/** Flat list of entries shipped 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
|
+
* When set, CLI install drops it at `.teamix-evo/design/components/<id>.meta.md`
|
|
576
|
+
* for design's ai-rules to consume.
|
|
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
|
+
}, "strip", z.ZodTypeAny, {
|
|
656
|
+
entries: {
|
|
657
|
+
id: string;
|
|
658
|
+
type: "template" | "component" | "hook" | "util" | "block";
|
|
659
|
+
updateStrategy: "frozen" | "regenerable" | "managed";
|
|
660
|
+
status: "stable" | "experimental" | "deprecated";
|
|
661
|
+
description: string;
|
|
662
|
+
name: string;
|
|
663
|
+
files: {
|
|
664
|
+
source: string;
|
|
665
|
+
targetAlias: "components" | "hooks" | "utils" | "lib" | "business" | "templates";
|
|
666
|
+
targetName: string;
|
|
667
|
+
}[];
|
|
668
|
+
template?: boolean | undefined;
|
|
669
|
+
variant?: string | undefined;
|
|
670
|
+
meta?: string | undefined;
|
|
671
|
+
registryDependencies?: string[] | undefined;
|
|
672
|
+
dependencies?: Record<string, string> | undefined;
|
|
673
|
+
deprecatedReason?: string | undefined;
|
|
674
|
+
replacedBy?: string | undefined;
|
|
675
|
+
}[];
|
|
676
|
+
schemaVersion: 1;
|
|
677
|
+
package: "ui";
|
|
678
|
+
version: string;
|
|
679
|
+
engines: {
|
|
680
|
+
'teamix-evo': string;
|
|
681
|
+
};
|
|
682
|
+
$schema?: string | undefined;
|
|
683
|
+
}, {
|
|
684
|
+
entries: {
|
|
685
|
+
id: string;
|
|
686
|
+
type: "template" | "component" | "hook" | "util" | "block";
|
|
687
|
+
description: string;
|
|
688
|
+
name: string;
|
|
689
|
+
files: {
|
|
690
|
+
source: string;
|
|
691
|
+
targetAlias: "components" | "hooks" | "utils" | "lib" | "business" | "templates";
|
|
692
|
+
targetName: string;
|
|
693
|
+
}[];
|
|
694
|
+
updateStrategy?: "frozen" | "regenerable" | "managed" | undefined;
|
|
695
|
+
template?: boolean | undefined;
|
|
696
|
+
status?: "stable" | "experimental" | "deprecated" | undefined;
|
|
697
|
+
variant?: string | undefined;
|
|
698
|
+
meta?: string | undefined;
|
|
699
|
+
registryDependencies?: string[] | undefined;
|
|
700
|
+
dependencies?: Record<string, string> | undefined;
|
|
701
|
+
deprecatedReason?: string | undefined;
|
|
702
|
+
replacedBy?: string | undefined;
|
|
158
703
|
}[];
|
|
704
|
+
schemaVersion: 1;
|
|
705
|
+
package: "ui";
|
|
706
|
+
version: string;
|
|
707
|
+
engines: {
|
|
708
|
+
'teamix-evo': string;
|
|
709
|
+
};
|
|
159
710
|
$schema?: string | undefined;
|
|
160
711
|
}>;
|
|
161
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
|
+
|
|
1428
|
+
/**
|
|
1429
|
+
* Tailwind CSS major version that the project consumes.
|
|
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.
|
|
1436
|
+
*/
|
|
1437
|
+
declare const TailwindVersionSchema: z.ZodLiteral<"v4">;
|
|
1438
|
+
/**
|
|
1439
|
+
* Aliases for ui entry write-back paths in the consumer project.
|
|
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).
|
|
1442
|
+
*/
|
|
1443
|
+
declare const UiAliasesSchema: z.ZodObject<{
|
|
1444
|
+
components: z.ZodString;
|
|
1445
|
+
hooks: z.ZodString;
|
|
1446
|
+
utils: z.ZodString;
|
|
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>;
|
|
1452
|
+
}, "strip", z.ZodTypeAny, {
|
|
1453
|
+
components: string;
|
|
1454
|
+
hooks: string;
|
|
1455
|
+
utils: string;
|
|
1456
|
+
lib: string;
|
|
1457
|
+
business: string;
|
|
1458
|
+
templates: string;
|
|
1459
|
+
}, {
|
|
1460
|
+
components: string;
|
|
1461
|
+
hooks: string;
|
|
1462
|
+
utils: string;
|
|
1463
|
+
lib: string;
|
|
1464
|
+
business?: string | undefined;
|
|
1465
|
+
templates?: string | undefined;
|
|
1466
|
+
}>;
|
|
162
1467
|
/**
|
|
163
1468
|
* Package entry within a project config.
|
|
1469
|
+
*
|
|
1470
|
+
* Some fields only apply to specific packages:
|
|
1471
|
+
* - `tailwind` — design only
|
|
1472
|
+
* - `ides` / `scope` — skills only
|
|
1473
|
+
* - `aliases` / `iconLibrary` / `tsx` / `rsc` — ui only
|
|
1474
|
+
*
|
|
1475
|
+
* All package-specific fields are optional at the schema level so a single
|
|
1476
|
+
* `PackageEntrySchema` can describe every package family.
|
|
164
1477
|
*/
|
|
165
1478
|
declare const PackageEntrySchema: z.ZodObject<{
|
|
166
|
-
/** Variant identifier (e.g. "opentrek") */
|
|
1479
|
+
/** Variant identifier (e.g. "opentrek"; use "_flat" for skills/ui) */
|
|
167
1480
|
variant: z.ZodString;
|
|
168
1481
|
/** Semver version string */
|
|
169
1482
|
version: z.ZodString;
|
|
1483
|
+
/** Tailwind CSS version this project uses (only meaningful for design package). */
|
|
1484
|
+
tailwind: z.ZodOptional<z.ZodLiteral<"v4">>;
|
|
1485
|
+
/** IDEs this package was installed for (only meaningful for skills package). */
|
|
1486
|
+
ides: z.ZodOptional<z.ZodArray<z.ZodEnum<["qoder", "claude"]>, "many">>;
|
|
1487
|
+
/** Install scope (only meaningful for skills package). */
|
|
1488
|
+
scope: z.ZodOptional<z.ZodEnum<["project", "global"]>>;
|
|
1489
|
+
/** Path aliases for ui entry installation (only meaningful for ui package). */
|
|
1490
|
+
aliases: z.ZodOptional<z.ZodObject<{
|
|
1491
|
+
components: z.ZodString;
|
|
1492
|
+
hooks: z.ZodString;
|
|
1493
|
+
utils: z.ZodString;
|
|
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>;
|
|
1499
|
+
}, "strip", z.ZodTypeAny, {
|
|
1500
|
+
components: string;
|
|
1501
|
+
hooks: string;
|
|
1502
|
+
utils: string;
|
|
1503
|
+
lib: string;
|
|
1504
|
+
business: string;
|
|
1505
|
+
templates: string;
|
|
1506
|
+
}, {
|
|
1507
|
+
components: string;
|
|
1508
|
+
hooks: string;
|
|
1509
|
+
utils: string;
|
|
1510
|
+
lib: string;
|
|
1511
|
+
business?: string | undefined;
|
|
1512
|
+
templates?: string | undefined;
|
|
1513
|
+
}>>;
|
|
1514
|
+
/**
|
|
1515
|
+
* Default icon library declared by the project (only meaningful for ui).
|
|
1516
|
+
* Declarative only — does NOT trigger code rewrites; ui entries hardcode imports.
|
|
1517
|
+
*/
|
|
1518
|
+
iconLibrary: z.ZodOptional<z.ZodString>;
|
|
1519
|
+
/** Whether the project uses TSX (true) or JSX (false). ui-specific. */
|
|
1520
|
+
tsx: z.ZodOptional<z.ZodBoolean>;
|
|
1521
|
+
/** Whether to emit React Server Components markers (`"use client"`). ui-specific. */
|
|
1522
|
+
rsc: z.ZodOptional<z.ZodBoolean>;
|
|
170
1523
|
}, "strip", z.ZodTypeAny, {
|
|
171
1524
|
variant: string;
|
|
172
1525
|
version: string;
|
|
1526
|
+
ides?: ("qoder" | "claude")[] | undefined;
|
|
1527
|
+
scope?: "project" | "global" | undefined;
|
|
1528
|
+
tailwind?: "v4" | undefined;
|
|
1529
|
+
aliases?: {
|
|
1530
|
+
components: string;
|
|
1531
|
+
hooks: string;
|
|
1532
|
+
utils: string;
|
|
1533
|
+
lib: string;
|
|
1534
|
+
business: string;
|
|
1535
|
+
templates: string;
|
|
1536
|
+
} | undefined;
|
|
1537
|
+
iconLibrary?: string | undefined;
|
|
1538
|
+
tsx?: boolean | undefined;
|
|
1539
|
+
rsc?: boolean | undefined;
|
|
173
1540
|
}, {
|
|
174
1541
|
variant: string;
|
|
175
1542
|
version: string;
|
|
1543
|
+
ides?: ("qoder" | "claude")[] | undefined;
|
|
1544
|
+
scope?: "project" | "global" | undefined;
|
|
1545
|
+
tailwind?: "v4" | undefined;
|
|
1546
|
+
aliases?: {
|
|
1547
|
+
components: string;
|
|
1548
|
+
hooks: string;
|
|
1549
|
+
utils: string;
|
|
1550
|
+
lib: string;
|
|
1551
|
+
business?: string | undefined;
|
|
1552
|
+
templates?: string | undefined;
|
|
1553
|
+
} | undefined;
|
|
1554
|
+
iconLibrary?: string | undefined;
|
|
1555
|
+
tsx?: boolean | undefined;
|
|
1556
|
+
rsc?: boolean | undefined;
|
|
176
1557
|
}>;
|
|
177
1558
|
/**
|
|
178
1559
|
* Project configuration schema — teamix-evo config.json at project root.
|
|
@@ -184,16 +1565,84 @@ declare const ProjectConfigSchema: z.ZodObject<{
|
|
|
184
1565
|
ide: z.ZodString;
|
|
185
1566
|
/** Installed packages keyed by package name */
|
|
186
1567
|
packages: z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
187
|
-
/** Variant identifier (e.g. "opentrek") */
|
|
1568
|
+
/** Variant identifier (e.g. "opentrek"; use "_flat" for skills/ui) */
|
|
188
1569
|
variant: z.ZodString;
|
|
189
1570
|
/** Semver version string */
|
|
190
1571
|
version: z.ZodString;
|
|
1572
|
+
/** Tailwind CSS version this project uses (only meaningful for design package). */
|
|
1573
|
+
tailwind: z.ZodOptional<z.ZodLiteral<"v4">>;
|
|
1574
|
+
/** IDEs this package was installed for (only meaningful for skills package). */
|
|
1575
|
+
ides: z.ZodOptional<z.ZodArray<z.ZodEnum<["qoder", "claude"]>, "many">>;
|
|
1576
|
+
/** Install scope (only meaningful for skills package). */
|
|
1577
|
+
scope: z.ZodOptional<z.ZodEnum<["project", "global"]>>;
|
|
1578
|
+
/** Path aliases for ui entry installation (only meaningful for ui package). */
|
|
1579
|
+
aliases: z.ZodOptional<z.ZodObject<{
|
|
1580
|
+
components: z.ZodString;
|
|
1581
|
+
hooks: z.ZodString;
|
|
1582
|
+
utils: z.ZodString;
|
|
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>;
|
|
1588
|
+
}, "strip", z.ZodTypeAny, {
|
|
1589
|
+
components: string;
|
|
1590
|
+
hooks: string;
|
|
1591
|
+
utils: string;
|
|
1592
|
+
lib: string;
|
|
1593
|
+
business: string;
|
|
1594
|
+
templates: string;
|
|
1595
|
+
}, {
|
|
1596
|
+
components: string;
|
|
1597
|
+
hooks: string;
|
|
1598
|
+
utils: string;
|
|
1599
|
+
lib: string;
|
|
1600
|
+
business?: string | undefined;
|
|
1601
|
+
templates?: string | undefined;
|
|
1602
|
+
}>>;
|
|
1603
|
+
/**
|
|
1604
|
+
* Default icon library declared by the project (only meaningful for ui).
|
|
1605
|
+
* Declarative only — does NOT trigger code rewrites; ui entries hardcode imports.
|
|
1606
|
+
*/
|
|
1607
|
+
iconLibrary: z.ZodOptional<z.ZodString>;
|
|
1608
|
+
/** Whether the project uses TSX (true) or JSX (false). ui-specific. */
|
|
1609
|
+
tsx: z.ZodOptional<z.ZodBoolean>;
|
|
1610
|
+
/** Whether to emit React Server Components markers (`"use client"`). ui-specific. */
|
|
1611
|
+
rsc: z.ZodOptional<z.ZodBoolean>;
|
|
191
1612
|
}, "strip", z.ZodTypeAny, {
|
|
192
1613
|
variant: string;
|
|
193
1614
|
version: string;
|
|
1615
|
+
ides?: ("qoder" | "claude")[] | undefined;
|
|
1616
|
+
scope?: "project" | "global" | undefined;
|
|
1617
|
+
tailwind?: "v4" | undefined;
|
|
1618
|
+
aliases?: {
|
|
1619
|
+
components: string;
|
|
1620
|
+
hooks: string;
|
|
1621
|
+
utils: string;
|
|
1622
|
+
lib: string;
|
|
1623
|
+
business: string;
|
|
1624
|
+
templates: string;
|
|
1625
|
+
} | undefined;
|
|
1626
|
+
iconLibrary?: string | undefined;
|
|
1627
|
+
tsx?: boolean | undefined;
|
|
1628
|
+
rsc?: boolean | undefined;
|
|
194
1629
|
}, {
|
|
195
1630
|
variant: string;
|
|
196
1631
|
version: string;
|
|
1632
|
+
ides?: ("qoder" | "claude")[] | undefined;
|
|
1633
|
+
scope?: "project" | "global" | undefined;
|
|
1634
|
+
tailwind?: "v4" | undefined;
|
|
1635
|
+
aliases?: {
|
|
1636
|
+
components: string;
|
|
1637
|
+
hooks: string;
|
|
1638
|
+
utils: string;
|
|
1639
|
+
lib: string;
|
|
1640
|
+
business?: string | undefined;
|
|
1641
|
+
templates?: string | undefined;
|
|
1642
|
+
} | undefined;
|
|
1643
|
+
iconLibrary?: string | undefined;
|
|
1644
|
+
tsx?: boolean | undefined;
|
|
1645
|
+
rsc?: boolean | undefined;
|
|
197
1646
|
}>>;
|
|
198
1647
|
}, "strip", z.ZodTypeAny, {
|
|
199
1648
|
schemaVersion: 1;
|
|
@@ -201,6 +1650,20 @@ declare const ProjectConfigSchema: z.ZodObject<{
|
|
|
201
1650
|
packages: Record<string, {
|
|
202
1651
|
variant: string;
|
|
203
1652
|
version: string;
|
|
1653
|
+
ides?: ("qoder" | "claude")[] | undefined;
|
|
1654
|
+
scope?: "project" | "global" | undefined;
|
|
1655
|
+
tailwind?: "v4" | undefined;
|
|
1656
|
+
aliases?: {
|
|
1657
|
+
components: string;
|
|
1658
|
+
hooks: string;
|
|
1659
|
+
utils: string;
|
|
1660
|
+
lib: string;
|
|
1661
|
+
business: string;
|
|
1662
|
+
templates: string;
|
|
1663
|
+
} | undefined;
|
|
1664
|
+
iconLibrary?: string | undefined;
|
|
1665
|
+
tsx?: boolean | undefined;
|
|
1666
|
+
rsc?: boolean | undefined;
|
|
204
1667
|
}>;
|
|
205
1668
|
$schema?: string | undefined;
|
|
206
1669
|
}, {
|
|
@@ -209,32 +1672,58 @@ declare const ProjectConfigSchema: z.ZodObject<{
|
|
|
209
1672
|
packages: Record<string, {
|
|
210
1673
|
variant: string;
|
|
211
1674
|
version: string;
|
|
1675
|
+
ides?: ("qoder" | "claude")[] | undefined;
|
|
1676
|
+
scope?: "project" | "global" | undefined;
|
|
1677
|
+
tailwind?: "v4" | undefined;
|
|
1678
|
+
aliases?: {
|
|
1679
|
+
components: string;
|
|
1680
|
+
hooks: string;
|
|
1681
|
+
utils: string;
|
|
1682
|
+
lib: string;
|
|
1683
|
+
business?: string | undefined;
|
|
1684
|
+
templates?: string | undefined;
|
|
1685
|
+
} | undefined;
|
|
1686
|
+
iconLibrary?: string | undefined;
|
|
1687
|
+
tsx?: boolean | undefined;
|
|
1688
|
+
rsc?: boolean | undefined;
|
|
212
1689
|
}>;
|
|
213
1690
|
$schema?: string | undefined;
|
|
214
1691
|
}>;
|
|
215
1692
|
|
|
216
1693
|
/**
|
|
217
1694
|
* An installed resource entry — tracks individual resource installation state.
|
|
1695
|
+
*
|
|
1696
|
+
* For type="skill" resources, the same logical skill may produce multiple installed
|
|
1697
|
+
* entries (one per ide × scope combination); the optional `ide`/`scope` fields
|
|
1698
|
+
* disambiguate them.
|
|
218
1699
|
*/
|
|
219
1700
|
declare const InstalledResourceSchema: z.ZodObject<{
|
|
220
1701
|
/** Resource identifier matching the variant manifest */
|
|
221
1702
|
id: z.ZodString;
|
|
222
|
-
/** Target path where the resource was installed */
|
|
1703
|
+
/** Target path where the resource was installed (absolute or project-relative) */
|
|
223
1704
|
target: z.ZodString;
|
|
224
1705
|
/** Content hash for change detection (e.g. "sha256:...") */
|
|
225
1706
|
hash: z.ZodString;
|
|
226
1707
|
/** Update strategy that was applied */
|
|
227
1708
|
strategy: z.ZodEnum<["frozen", "regenerable", "managed"]>;
|
|
1709
|
+
/** IDE this resource was installed for (skill resources only) */
|
|
1710
|
+
ide: z.ZodOptional<z.ZodEnum<["qoder", "claude"]>>;
|
|
1711
|
+
/** Install scope (skill resources only) */
|
|
1712
|
+
scope: z.ZodOptional<z.ZodEnum<["project", "global"]>>;
|
|
228
1713
|
}, "strip", z.ZodTypeAny, {
|
|
229
1714
|
id: string;
|
|
230
1715
|
target: string;
|
|
231
1716
|
hash: string;
|
|
232
1717
|
strategy: "frozen" | "regenerable" | "managed";
|
|
1718
|
+
scope?: "project" | "global" | undefined;
|
|
1719
|
+
ide?: "qoder" | "claude" | undefined;
|
|
233
1720
|
}, {
|
|
234
1721
|
id: string;
|
|
235
1722
|
target: string;
|
|
236
1723
|
hash: string;
|
|
237
1724
|
strategy: "frozen" | "regenerable" | "managed";
|
|
1725
|
+
scope?: "project" | "global" | undefined;
|
|
1726
|
+
ide?: "qoder" | "claude" | undefined;
|
|
238
1727
|
}>;
|
|
239
1728
|
/**
|
|
240
1729
|
* An installed package entry — tracks a single package installation.
|
|
@@ -242,7 +1731,7 @@ declare const InstalledResourceSchema: z.ZodObject<{
|
|
|
242
1731
|
declare const InstalledPackageSchema: z.ZodObject<{
|
|
243
1732
|
/** Full package name (e.g. "@teamix-evo/design") */
|
|
244
1733
|
package: z.ZodString;
|
|
245
|
-
/** Variant identifier */
|
|
1734
|
+
/** Variant identifier (use "_flat" for non-variant packages such as skills) */
|
|
246
1735
|
variant: z.ZodString;
|
|
247
1736
|
/** Installed version */
|
|
248
1737
|
version: z.ZodString;
|
|
@@ -252,22 +1741,30 @@ declare const InstalledPackageSchema: z.ZodObject<{
|
|
|
252
1741
|
resources: z.ZodArray<z.ZodObject<{
|
|
253
1742
|
/** Resource identifier matching the variant manifest */
|
|
254
1743
|
id: z.ZodString;
|
|
255
|
-
/** Target path where the resource was installed */
|
|
1744
|
+
/** Target path where the resource was installed (absolute or project-relative) */
|
|
256
1745
|
target: z.ZodString;
|
|
257
1746
|
/** Content hash for change detection (e.g. "sha256:...") */
|
|
258
1747
|
hash: z.ZodString;
|
|
259
1748
|
/** Update strategy that was applied */
|
|
260
1749
|
strategy: z.ZodEnum<["frozen", "regenerable", "managed"]>;
|
|
1750
|
+
/** IDE this resource was installed for (skill resources only) */
|
|
1751
|
+
ide: z.ZodOptional<z.ZodEnum<["qoder", "claude"]>>;
|
|
1752
|
+
/** Install scope (skill resources only) */
|
|
1753
|
+
scope: z.ZodOptional<z.ZodEnum<["project", "global"]>>;
|
|
261
1754
|
}, "strip", z.ZodTypeAny, {
|
|
262
1755
|
id: string;
|
|
263
1756
|
target: string;
|
|
264
1757
|
hash: string;
|
|
265
1758
|
strategy: "frozen" | "regenerable" | "managed";
|
|
1759
|
+
scope?: "project" | "global" | undefined;
|
|
1760
|
+
ide?: "qoder" | "claude" | undefined;
|
|
266
1761
|
}, {
|
|
267
1762
|
id: string;
|
|
268
1763
|
target: string;
|
|
269
1764
|
hash: string;
|
|
270
1765
|
strategy: "frozen" | "regenerable" | "managed";
|
|
1766
|
+
scope?: "project" | "global" | undefined;
|
|
1767
|
+
ide?: "qoder" | "claude" | undefined;
|
|
271
1768
|
}>, "many">;
|
|
272
1769
|
}, "strip", z.ZodTypeAny, {
|
|
273
1770
|
package: string;
|
|
@@ -278,6 +1775,8 @@ declare const InstalledPackageSchema: z.ZodObject<{
|
|
|
278
1775
|
target: string;
|
|
279
1776
|
hash: string;
|
|
280
1777
|
strategy: "frozen" | "regenerable" | "managed";
|
|
1778
|
+
scope?: "project" | "global" | undefined;
|
|
1779
|
+
ide?: "qoder" | "claude" | undefined;
|
|
281
1780
|
}[];
|
|
282
1781
|
installedAt: string;
|
|
283
1782
|
}, {
|
|
@@ -289,6 +1788,8 @@ declare const InstalledPackageSchema: z.ZodObject<{
|
|
|
289
1788
|
target: string;
|
|
290
1789
|
hash: string;
|
|
291
1790
|
strategy: "frozen" | "regenerable" | "managed";
|
|
1791
|
+
scope?: "project" | "global" | undefined;
|
|
1792
|
+
ide?: "qoder" | "claude" | undefined;
|
|
292
1793
|
}[];
|
|
293
1794
|
installedAt: string;
|
|
294
1795
|
}>;
|
|
@@ -302,7 +1803,7 @@ declare const InstalledManifestSchema: z.ZodObject<{
|
|
|
302
1803
|
installed: z.ZodArray<z.ZodObject<{
|
|
303
1804
|
/** Full package name (e.g. "@teamix-evo/design") */
|
|
304
1805
|
package: z.ZodString;
|
|
305
|
-
/** Variant identifier */
|
|
1806
|
+
/** Variant identifier (use "_flat" for non-variant packages such as skills) */
|
|
306
1807
|
variant: z.ZodString;
|
|
307
1808
|
/** Installed version */
|
|
308
1809
|
version: z.ZodString;
|
|
@@ -312,22 +1813,30 @@ declare const InstalledManifestSchema: z.ZodObject<{
|
|
|
312
1813
|
resources: z.ZodArray<z.ZodObject<{
|
|
313
1814
|
/** Resource identifier matching the variant manifest */
|
|
314
1815
|
id: z.ZodString;
|
|
315
|
-
/** Target path where the resource was installed */
|
|
1816
|
+
/** Target path where the resource was installed (absolute or project-relative) */
|
|
316
1817
|
target: z.ZodString;
|
|
317
1818
|
/** Content hash for change detection (e.g. "sha256:...") */
|
|
318
1819
|
hash: z.ZodString;
|
|
319
1820
|
/** Update strategy that was applied */
|
|
320
1821
|
strategy: z.ZodEnum<["frozen", "regenerable", "managed"]>;
|
|
1822
|
+
/** IDE this resource was installed for (skill resources only) */
|
|
1823
|
+
ide: z.ZodOptional<z.ZodEnum<["qoder", "claude"]>>;
|
|
1824
|
+
/** Install scope (skill resources only) */
|
|
1825
|
+
scope: z.ZodOptional<z.ZodEnum<["project", "global"]>>;
|
|
321
1826
|
}, "strip", z.ZodTypeAny, {
|
|
322
1827
|
id: string;
|
|
323
1828
|
target: string;
|
|
324
1829
|
hash: string;
|
|
325
1830
|
strategy: "frozen" | "regenerable" | "managed";
|
|
1831
|
+
scope?: "project" | "global" | undefined;
|
|
1832
|
+
ide?: "qoder" | "claude" | undefined;
|
|
326
1833
|
}, {
|
|
327
1834
|
id: string;
|
|
328
1835
|
target: string;
|
|
329
1836
|
hash: string;
|
|
330
1837
|
strategy: "frozen" | "regenerable" | "managed";
|
|
1838
|
+
scope?: "project" | "global" | undefined;
|
|
1839
|
+
ide?: "qoder" | "claude" | undefined;
|
|
331
1840
|
}>, "many">;
|
|
332
1841
|
}, "strip", z.ZodTypeAny, {
|
|
333
1842
|
package: string;
|
|
@@ -338,6 +1847,8 @@ declare const InstalledManifestSchema: z.ZodObject<{
|
|
|
338
1847
|
target: string;
|
|
339
1848
|
hash: string;
|
|
340
1849
|
strategy: "frozen" | "regenerable" | "managed";
|
|
1850
|
+
scope?: "project" | "global" | undefined;
|
|
1851
|
+
ide?: "qoder" | "claude" | undefined;
|
|
341
1852
|
}[];
|
|
342
1853
|
installedAt: string;
|
|
343
1854
|
}, {
|
|
@@ -349,6 +1860,8 @@ declare const InstalledManifestSchema: z.ZodObject<{
|
|
|
349
1860
|
target: string;
|
|
350
1861
|
hash: string;
|
|
351
1862
|
strategy: "frozen" | "regenerable" | "managed";
|
|
1863
|
+
scope?: "project" | "global" | undefined;
|
|
1864
|
+
ide?: "qoder" | "claude" | undefined;
|
|
352
1865
|
}[];
|
|
353
1866
|
installedAt: string;
|
|
354
1867
|
}>, "many">;
|
|
@@ -363,6 +1876,8 @@ declare const InstalledManifestSchema: z.ZodObject<{
|
|
|
363
1876
|
target: string;
|
|
364
1877
|
hash: string;
|
|
365
1878
|
strategy: "frozen" | "regenerable" | "managed";
|
|
1879
|
+
scope?: "project" | "global" | undefined;
|
|
1880
|
+
ide?: "qoder" | "claude" | undefined;
|
|
366
1881
|
}[];
|
|
367
1882
|
installedAt: string;
|
|
368
1883
|
}[];
|
|
@@ -377,21 +1892,146 @@ declare const InstalledManifestSchema: z.ZodObject<{
|
|
|
377
1892
|
target: string;
|
|
378
1893
|
hash: string;
|
|
379
1894
|
strategy: "frozen" | "regenerable" | "managed";
|
|
1895
|
+
scope?: "project" | "global" | undefined;
|
|
1896
|
+
ide?: "qoder" | "claude" | undefined;
|
|
380
1897
|
}[];
|
|
381
1898
|
installedAt: string;
|
|
382
1899
|
}[];
|
|
383
1900
|
}>;
|
|
384
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
|
+
|
|
385
2003
|
/** Resource update strategy */
|
|
386
2004
|
type UpdateStrategy = z.infer<typeof UpdateStrategySchema>;
|
|
387
2005
|
/** Resource type discriminator */
|
|
388
2006
|
type ResourceType = z.infer<typeof ResourceTypeSchema>;
|
|
2007
|
+
/** AI IDE identifier supported by skills (qoder | claude) */
|
|
2008
|
+
type SkillIde = z.infer<typeof SkillIdeSchema>;
|
|
2009
|
+
/** Skill installation scope (project | global) */
|
|
2010
|
+
type SkillScope = z.infer<typeof SkillScopeSchema>;
|
|
2011
|
+
/** UI entry type discriminator */
|
|
2012
|
+
type UiEntryType = z.infer<typeof UiEntryTypeSchema>;
|
|
2013
|
+
/** UI write-back alias key (components | hooks | utils | lib) */
|
|
2014
|
+
type UiAlias = z.infer<typeof UiAliasSchema>;
|
|
389
2015
|
/** A single resource entry within a variant manifest */
|
|
390
2016
|
type Resource = z.infer<typeof ResourceSchema>;
|
|
391
2017
|
/** Variant manifest describing a package variant and its resources */
|
|
392
2018
|
type VariantManifest = z.infer<typeof VariantManifestSchema>;
|
|
2019
|
+
/** A single skill entry in a skills package manifest */
|
|
2020
|
+
type SkillEntry = z.infer<typeof SkillEntrySchema>;
|
|
2021
|
+
/** Skills package manifest (top-level manifest of @teamix-evo/skills) */
|
|
2022
|
+
type SkillsPackageManifest = z.infer<typeof SkillsPackageManifestSchema>;
|
|
2023
|
+
/** A single file shipped by a UI entry */
|
|
2024
|
+
type UiEntryFile = z.infer<typeof UiEntryFileSchema>;
|
|
2025
|
+
/** A single UI entry (component / hook / util / block) */
|
|
2026
|
+
type UiEntry = z.infer<typeof UiEntrySchema>;
|
|
2027
|
+
/** UI package manifest (top-level manifest of @teamix-evo/ui) */
|
|
2028
|
+
type UiPackageManifest = z.infer<typeof UiPackageManifestSchema>;
|
|
2029
|
+
/** Path aliases for UI entry installation in the consumer project */
|
|
2030
|
+
type UiAliases = z.infer<typeof UiAliasesSchema>;
|
|
393
2031
|
/** A package entry in the project config */
|
|
394
2032
|
type PackageEntry = z.infer<typeof PackageEntrySchema>;
|
|
2033
|
+
/** Tailwind CSS major version (always `"v4"` since v0.7). */
|
|
2034
|
+
type TailwindVersion = z.infer<typeof TailwindVersionSchema>;
|
|
395
2035
|
/** Project configuration (config.json) */
|
|
396
2036
|
type ProjectConfig = z.infer<typeof ProjectConfigSchema>;
|
|
397
2037
|
/** An installed resource tracking entry */
|
|
@@ -431,6 +2071,82 @@ type Result<T> = {
|
|
|
431
2071
|
* @throws Error if the file cannot be read or the manifest is invalid
|
|
432
2072
|
*/
|
|
433
2073
|
declare function loadVariantManifest(packageDir: string): Promise<VariantManifest>;
|
|
2074
|
+
/**
|
|
2075
|
+
* Load and validate the top-level manifest of a skills package.
|
|
2076
|
+
*
|
|
2077
|
+
* Reads `manifest.json` from the given directory and validates it against
|
|
2078
|
+
* the SkillsPackageManifest schema (flat list of skills, no variants).
|
|
2079
|
+
*
|
|
2080
|
+
* @param packageDir - Absolute or relative path to the skills package directory
|
|
2081
|
+
* @returns The validated SkillsPackageManifest
|
|
2082
|
+
* @throws Error if the file cannot be read or the manifest is invalid
|
|
2083
|
+
*/
|
|
2084
|
+
declare function loadSkillsPackageManifest(packageDir: string): Promise<SkillsPackageManifest>;
|
|
2085
|
+
/**
|
|
2086
|
+
* Load and validate the top-level manifest of a UI package.
|
|
2087
|
+
*
|
|
2088
|
+
* Reads `manifest.json` from the given directory and validates it against
|
|
2089
|
+
* the UiPackageManifest schema (flat list of entries, no variants).
|
|
2090
|
+
* Also performs registryDependencies graph validation (existence + no cycles).
|
|
2091
|
+
*
|
|
2092
|
+
* @param packageDir - Absolute or relative path to the ui package directory
|
|
2093
|
+
* @returns The validated UiPackageManifest
|
|
2094
|
+
* @throws Error if the file cannot be read, the manifest is invalid, or the dep graph is broken
|
|
2095
|
+
*/
|
|
2096
|
+
declare function loadUiPackageManifest(packageDir: string): Promise<UiPackageManifest>;
|
|
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>;
|
|
434
2150
|
|
|
435
2151
|
/**
|
|
436
2152
|
* Validate unknown data against the VariantManifest schema.
|
|
@@ -445,6 +2161,40 @@ declare function validateConfig(data: unknown): Result<ProjectConfig>;
|
|
|
445
2161
|
* Validate unknown data against the InstalledManifest schema.
|
|
446
2162
|
*/
|
|
447
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>;
|
|
2169
|
+
/**
|
|
2170
|
+
* Validate unknown data against the SkillsPackageManifest schema.
|
|
2171
|
+
*/
|
|
2172
|
+
declare function validateSkillsPackage(data: unknown): Result<SkillsPackageManifest>;
|
|
2173
|
+
/**
|
|
2174
|
+
* Validate unknown data against the UiPackageManifest schema, then verify the
|
|
2175
|
+
* registryDependencies graph: every reference resolves and there are no cycles.
|
|
2176
|
+
*/
|
|
2177
|
+
declare function validateUiPackage(data: unknown): Result<UiPackageManifest>;
|
|
2178
|
+
/**
|
|
2179
|
+
* Validate the registryDependencies graph among ui entries.
|
|
2180
|
+
* Returns a list of issue strings (empty when the graph is sound).
|
|
2181
|
+
*
|
|
2182
|
+
* Issues detected:
|
|
2183
|
+
* - Duplicate entry id
|
|
2184
|
+
* - Reference to an unknown entry id
|
|
2185
|
+
* - Cyclic dependency
|
|
2186
|
+
*/
|
|
2187
|
+
declare function validateUiDependencyGraph(entries: UiEntry[]): string[];
|
|
2188
|
+
/**
|
|
2189
|
+
* Topologically sort a subset of ui entries so that dependencies come before
|
|
2190
|
+
* dependents. Used by `ui add` to determine install order.
|
|
2191
|
+
*
|
|
2192
|
+
* @param entries full list of entries (the package manifest's `entries`)
|
|
2193
|
+
* @param requested ids the user explicitly asked to install
|
|
2194
|
+
* @returns ordered list of entry ids (includes transitive deps, dedup'd)
|
|
2195
|
+
* @throws Error if a requested id or transitive dep is missing or graph has cycles
|
|
2196
|
+
*/
|
|
2197
|
+
declare function resolveUiEntryOrder(entries: UiEntry[], requested: string[]): string[];
|
|
448
2198
|
|
|
449
2199
|
/**
|
|
450
2200
|
* Parse all managed regions from document content.
|
|
@@ -502,4 +2252,4 @@ interface UpdateActionOptions {
|
|
|
502
2252
|
*/
|
|
503
2253
|
declare function getUpdateAction(strategy: UpdateStrategy, options: UpdateActionOptions): UpdateAction;
|
|
504
2254
|
|
|
505
|
-
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 UpdateAction, type UpdateActionOptions, type UpdateStrategy, UpdateStrategySchema, type VariantManifest, VariantManifestSchema, getUpdateAction, hasManagedRegion, loadVariantManifest, parseManagedRegions, replaceManagedRegion, shouldUpdate, validateConfig, validateInstalled, validateManifest };
|
|
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 };
|