@agents-inc/cli 0.35.0 → 0.38.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/CHANGELOG.md +37 -0
- package/config/skills-matrix.yaml +17 -17
- package/dist/{chunk-HTTPKSL6.js → chunk-2XX4TMCI.js} +2 -2
- package/dist/{chunk-CEWNZQMH.js → chunk-3E2V5YL3.js} +8 -2
- package/dist/chunk-3E2V5YL3.js.map +1 -0
- package/dist/{chunk-IG7CUREJ.js → chunk-3NQJOJZL.js} +2 -2
- package/dist/chunk-54ZZCWN4.js +51 -0
- package/dist/chunk-54ZZCWN4.js.map +1 -0
- package/dist/{chunk-VEZ2GZEK.js → chunk-ATLRUR3B.js} +2 -2
- package/dist/{chunk-KWF6D7ZP.js → chunk-CYFU3ARY.js} +26 -16
- package/dist/chunk-CYFU3ARY.js.map +1 -0
- package/dist/{chunk-CXWPUVA7.js → chunk-DUQFF45G.js} +7 -7
- package/dist/{chunk-U36YCEBK.js → chunk-EISBUEBL.js} +32 -23
- package/dist/chunk-EISBUEBL.js.map +1 -0
- package/dist/chunk-EXFVAEPY.js +80 -0
- package/dist/chunk-EXFVAEPY.js.map +1 -0
- package/dist/{chunk-YN35L5NE.js → chunk-FWQK3HWB.js} +4 -4
- package/dist/chunk-FWQK3HWB.js.map +1 -0
- package/dist/{chunk-DC5AK3LW.js → chunk-GG4BSB6S.js} +5 -11
- package/dist/chunk-GG4BSB6S.js.map +1 -0
- package/dist/{chunk-GGHH3KR2.js → chunk-HKDE4LJW.js} +2 -2
- package/dist/{chunk-OGXSTJP2.js → chunk-HRMQ2RGY.js} +81 -26
- package/dist/chunk-HRMQ2RGY.js.map +1 -0
- package/dist/{chunk-YPJKOM42.js → chunk-HRW7BIDE.js} +2 -2
- package/dist/{chunk-LFHZBF6N.js → chunk-IVIK776Y.js} +4 -3
- package/dist/chunk-IVIK776Y.js.map +1 -0
- package/dist/{chunk-NVQEHRJY.js → chunk-IWNPFIGY.js} +38 -48
- package/dist/chunk-IWNPFIGY.js.map +1 -0
- package/dist/{chunk-YIKBNGE3.js → chunk-IZRVFC2Z.js} +7 -7
- package/dist/chunk-IZRVFC2Z.js.map +1 -0
- package/dist/{chunk-AQQVSNUX.js → chunk-K77I4XGL.js} +20 -6
- package/dist/chunk-K77I4XGL.js.map +1 -0
- package/dist/{chunk-BPD4VUAU.js → chunk-M6PGIZNS.js} +5 -5
- package/dist/{chunk-5LPPIT6H.js → chunk-NFV4SKH5.js} +4 -4
- package/dist/chunk-NI2RSNWB.js +156 -0
- package/dist/chunk-NI2RSNWB.js.map +1 -0
- package/dist/{chunk-NJ775OJ4.js → chunk-OEX5JDQD.js} +7 -7
- package/dist/chunk-OEX5JDQD.js.map +1 -0
- package/dist/{chunk-OKILA27U.js → chunk-TA6IIQI4.js} +86 -99
- package/dist/chunk-TA6IIQI4.js.map +1 -0
- package/dist/{chunk-PKUIO2Z7.js → chunk-TBDIR6LY.js} +8 -8
- package/dist/chunk-TBDIR6LY.js.map +1 -0
- package/dist/{chunk-XYCN2GCV.js → chunk-TNFACSWF.js} +3 -3
- package/dist/{chunk-ZE355C6C.js → chunk-TY5GELDB.js} +9 -4
- package/dist/chunk-TY5GELDB.js.map +1 -0
- package/dist/{chunk-WMVGRAFB.js → chunk-U5OB5ADP.js} +186 -109
- package/dist/chunk-U5OB5ADP.js.map +1 -0
- package/dist/{chunk-JXMRTHDT.js → chunk-UOMMQ5M6.js} +2 -2
- package/dist/{chunk-XNQJBQ5X.js → chunk-UV6JUGIY.js} +2 -2
- package/dist/{chunk-5YNZJ5TP.js → chunk-VAHVSQIG.js} +2 -2
- package/dist/{chunk-OGJ7DFCL.js → chunk-VAK5PX72.js} +5 -5
- package/dist/chunk-WSGGJKD5.js +113 -0
- package/dist/chunk-WSGGJKD5.js.map +1 -0
- package/dist/{chunk-BLLXNFWP.js → chunk-YHQNTBBN.js} +2 -2
- package/dist/{chunk-OI4WBRC7.js → chunk-YJIJTBSX.js} +77 -102
- package/dist/chunk-YJIJTBSX.js.map +1 -0
- package/dist/{chunk-YCS7GF6Y.js → chunk-ZBJQXDQN.js} +3 -1
- package/dist/{chunk-YCS7GF6Y.js.map → chunk-ZBJQXDQN.js.map} +1 -1
- package/dist/cli/defaults/agent-mappings.yaml +4 -4
- package/dist/commands/build/marketplace.js +3 -3
- package/dist/commands/build/plugins.js +5 -5
- package/dist/commands/build/stack.js +5 -5
- package/dist/commands/compile.js +12 -17
- package/dist/commands/compile.js.map +1 -1
- package/dist/commands/config/get.js +8 -8
- package/dist/commands/config/get.js.map +1 -1
- package/dist/commands/config/index.js +5 -5
- package/dist/commands/config/path.js +4 -4
- package/dist/commands/config/set-project.js +7 -7
- package/dist/commands/config/set-project.js.map +1 -1
- package/dist/commands/config/show.js +5 -5
- package/dist/commands/config/unset-project.js +5 -5
- package/dist/commands/config/unset-project.js.map +1 -1
- package/dist/commands/diff.js +8 -8
- package/dist/commands/diff.js.map +1 -1
- package/dist/commands/doctor.js +4 -4
- package/dist/commands/edit.js +30 -27
- package/dist/commands/edit.js.map +1 -1
- package/dist/commands/eject.js +6 -6
- package/dist/commands/eject.js.map +1 -1
- package/dist/commands/import/skill.js +16 -16
- package/dist/commands/import/skill.js.map +1 -1
- package/dist/commands/info.js +5 -5
- package/dist/commands/init.js +29 -26
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/list.js +4 -4
- package/dist/commands/new/agent.js +5 -5
- package/dist/commands/new/skill.js +8 -8
- package/dist/commands/new/skill.js.map +1 -1
- package/dist/commands/outdated.js +4 -4
- package/dist/commands/search.js +7 -7
- package/dist/commands/uninstall.js +109 -102
- package/dist/commands/uninstall.js.map +1 -1
- package/dist/commands/update.js +6 -6
- package/dist/commands/validate.js +5 -5
- package/dist/commands/version/bump.js +4 -4
- package/dist/commands/version/index.js +4 -4
- package/dist/commands/version/set.js +4 -4
- package/dist/commands/version/show.js +4 -4
- package/dist/components/skill-search/skill-search.js +3 -3
- package/dist/components/wizard/category-grid.js +3 -3
- package/dist/components/wizard/category-grid.test.js +42 -21
- package/dist/components/wizard/category-grid.test.js.map +1 -1
- package/dist/components/wizard/checkbox-grid.js +10 -0
- package/dist/components/wizard/checkbox-grid.test.js +260 -0
- package/dist/components/wizard/checkbox-grid.test.js.map +1 -0
- package/dist/components/wizard/domain-selection.js +7 -5
- package/dist/components/wizard/help-modal.js +2 -2
- package/dist/components/wizard/menu-item.js +2 -2
- package/dist/components/wizard/search-modal.js +2 -2
- package/dist/components/wizard/search-modal.test.js +2 -2
- package/dist/components/wizard/section-progress.js +2 -2
- package/dist/components/wizard/section-progress.test.js +2 -2
- package/dist/components/wizard/source-grid.js +4 -4
- package/dist/components/wizard/source-grid.test.js +4 -4
- package/dist/components/wizard/stack-selection.js +8 -7
- package/dist/components/wizard/step-agents.js +16 -0
- package/dist/components/wizard/step-agents.js.map +1 -0
- package/dist/components/wizard/step-agents.test.js +185 -0
- package/dist/components/wizard/step-agents.test.js.map +1 -0
- package/dist/components/wizard/step-build.js +9 -8
- package/dist/components/wizard/step-build.test.js +25 -23
- package/dist/components/wizard/step-build.test.js.map +1 -1
- package/dist/components/wizard/step-confirm.js +2 -2
- package/dist/components/wizard/step-confirm.test.js +6 -5
- package/dist/components/wizard/step-confirm.test.js.map +1 -1
- package/dist/components/wizard/step-refine.js +2 -2
- package/dist/components/wizard/step-refine.test.js +2 -2
- package/dist/components/wizard/step-settings.js +5 -5
- package/dist/components/wizard/step-settings.test.js +8 -8
- package/dist/components/wizard/step-sources.js +11 -10
- package/dist/components/wizard/step-sources.test.js +13 -12
- package/dist/components/wizard/step-sources.test.js.map +1 -1
- package/dist/components/wizard/step-stack.js +11 -9
- package/dist/components/wizard/step-stack.test.js +12 -10
- package/dist/components/wizard/step-stack.test.js.map +1 -1
- package/dist/components/wizard/view-title.js +2 -2
- package/dist/components/wizard/wizard-layout.js +8 -7
- package/dist/components/wizard/wizard-tabs.js +2 -2
- package/dist/components/wizard/wizard-tabs.test.js +6 -4
- package/dist/components/wizard/wizard-tabs.test.js.map +1 -1
- package/dist/components/wizard/wizard.js +26 -23
- package/dist/config/skills-matrix.yaml +17 -17
- package/dist/hooks/init.js +3 -3
- package/dist/{source-manager-PTK4P6BF.js → source-manager-FEGVYDFZ.js} +4 -4
- package/dist/source-manager-FEGVYDFZ.js.map +1 -0
- package/dist/stores/wizard-store.js +5 -4
- package/dist/stores/wizard-store.test.js +287 -15
- package/dist/stores/wizard-store.test.js.map +1 -1
- package/package.json +1 -1
- package/src/schemas/agent.schema.json +3 -3
- package/src/schemas/metadata.schema.json +14 -14
- package/src/schemas/project-config.schema.json +43 -2
- package/src/schemas/project-source-config.schema.json +5 -5
- package/src/schemas/skills-matrix.schema.json +4 -4
- package/src/schemas/stack.schema.json +1 -1
- package/src/schemas/stacks.schema.json +42 -1
- package/dist/chunk-AQQVSNUX.js.map +0 -1
- package/dist/chunk-CEWNZQMH.js.map +0 -1
- package/dist/chunk-DC5AK3LW.js.map +0 -1
- package/dist/chunk-KWF6D7ZP.js.map +0 -1
- package/dist/chunk-LFHZBF6N.js.map +0 -1
- package/dist/chunk-NJ775OJ4.js.map +0 -1
- package/dist/chunk-NVQEHRJY.js.map +0 -1
- package/dist/chunk-OGXSTJP2.js.map +0 -1
- package/dist/chunk-OI4WBRC7.js.map +0 -1
- package/dist/chunk-OKILA27U.js.map +0 -1
- package/dist/chunk-PKUIO2Z7.js.map +0 -1
- package/dist/chunk-U36YCEBK.js.map +0 -1
- package/dist/chunk-UFUQUFV6.js +0 -256
- package/dist/chunk-UFUQUFV6.js.map +0 -1
- package/dist/chunk-WMVGRAFB.js.map +0 -1
- package/dist/chunk-YIKBNGE3.js.map +0 -1
- package/dist/chunk-YN35L5NE.js.map +0 -1
- package/dist/chunk-ZE355C6C.js.map +0 -1
- /package/dist/{chunk-HTTPKSL6.js.map → chunk-2XX4TMCI.js.map} +0 -0
- /package/dist/{chunk-IG7CUREJ.js.map → chunk-3NQJOJZL.js.map} +0 -0
- /package/dist/{chunk-VEZ2GZEK.js.map → chunk-ATLRUR3B.js.map} +0 -0
- /package/dist/{chunk-CXWPUVA7.js.map → chunk-DUQFF45G.js.map} +0 -0
- /package/dist/{chunk-GGHH3KR2.js.map → chunk-HKDE4LJW.js.map} +0 -0
- /package/dist/{chunk-YPJKOM42.js.map → chunk-HRW7BIDE.js.map} +0 -0
- /package/dist/{chunk-BPD4VUAU.js.map → chunk-M6PGIZNS.js.map} +0 -0
- /package/dist/{chunk-5LPPIT6H.js.map → chunk-NFV4SKH5.js.map} +0 -0
- /package/dist/{chunk-XYCN2GCV.js.map → chunk-TNFACSWF.js.map} +0 -0
- /package/dist/{chunk-JXMRTHDT.js.map → chunk-UOMMQ5M6.js.map} +0 -0
- /package/dist/{chunk-XNQJBQ5X.js.map → chunk-UV6JUGIY.js.map} +0 -0
- /package/dist/{chunk-5YNZJ5TP.js.map → chunk-VAHVSQIG.js.map} +0 -0
- /package/dist/{chunk-OGJ7DFCL.js.map → chunk-VAK5PX72.js.map} +0 -0
- /package/dist/{chunk-BLLXNFWP.js.map → chunk-YHQNTBBN.js.map} +0 -0
- /package/dist/{source-manager-PTK4P6BF.js.map → components/wizard/checkbox-grid.js.map} +0 -0
|
@@ -110,8 +110,7 @@ var boundSkillSchema = z.object({
|
|
|
110
110
|
boundTo: z.string(),
|
|
111
111
|
description: z.string().optional()
|
|
112
112
|
});
|
|
113
|
-
var
|
|
114
|
-
// Web
|
|
113
|
+
var SUBCATEGORY_VALUES = [
|
|
115
114
|
"framework",
|
|
116
115
|
"meta-framework",
|
|
117
116
|
"styling",
|
|
@@ -131,7 +130,6 @@ var subcategorySchema = z.enum([
|
|
|
131
130
|
"pwa",
|
|
132
131
|
"accessibility",
|
|
133
132
|
"web-performance",
|
|
134
|
-
// API
|
|
135
133
|
"api",
|
|
136
134
|
"database",
|
|
137
135
|
"auth",
|
|
@@ -139,9 +137,7 @@ var subcategorySchema = z.enum([
|
|
|
139
137
|
"analytics",
|
|
140
138
|
"email",
|
|
141
139
|
"performance",
|
|
142
|
-
// Mobile
|
|
143
140
|
"mobile-framework",
|
|
144
|
-
// Shared / Infrastructure
|
|
145
141
|
"monorepo",
|
|
146
142
|
"tooling",
|
|
147
143
|
"security",
|
|
@@ -149,36 +145,29 @@ var subcategorySchema = z.enum([
|
|
|
149
145
|
"research",
|
|
150
146
|
"reviewing",
|
|
151
147
|
"ci-cd",
|
|
152
|
-
// CLI
|
|
153
148
|
"cli-framework",
|
|
154
149
|
"cli-prompts",
|
|
155
150
|
"cli-testing"
|
|
156
|
-
]
|
|
151
|
+
];
|
|
152
|
+
var subcategorySchema = z.enum(SUBCATEGORY_VALUES);
|
|
153
|
+
var stackSubcategorySchema = z.enum([...SUBCATEGORY_VALUES, "base-framework", "platform"]);
|
|
157
154
|
var agentNameSchema = z.enum([
|
|
158
|
-
// Developers
|
|
159
155
|
"web-developer",
|
|
160
156
|
"api-developer",
|
|
161
157
|
"cli-developer",
|
|
162
158
|
"web-architecture",
|
|
163
|
-
// Meta
|
|
164
159
|
"agent-summoner",
|
|
165
160
|
"documentor",
|
|
166
161
|
"skill-summoner",
|
|
167
|
-
// Migration
|
|
168
162
|
"cli-migrator",
|
|
169
|
-
// Pattern
|
|
170
163
|
"pattern-scout",
|
|
171
164
|
"web-pattern-critique",
|
|
172
|
-
// Planning
|
|
173
165
|
"web-pm",
|
|
174
|
-
// Researchers
|
|
175
166
|
"api-researcher",
|
|
176
167
|
"web-researcher",
|
|
177
|
-
// Reviewers
|
|
178
168
|
"api-reviewer",
|
|
179
169
|
"cli-reviewer",
|
|
180
170
|
"web-reviewer",
|
|
181
|
-
// Testers
|
|
182
171
|
"cli-tester",
|
|
183
172
|
"web-tester"
|
|
184
173
|
]);
|
|
@@ -197,77 +186,59 @@ var permissionModeSchema = z.enum([
|
|
|
197
186
|
"delegate"
|
|
198
187
|
]);
|
|
199
188
|
var skillDisplayNameSchema = z.enum([
|
|
200
|
-
// Frameworks
|
|
201
189
|
"react",
|
|
202
190
|
"vue",
|
|
203
191
|
"angular",
|
|
204
192
|
"solidjs",
|
|
205
|
-
// Meta-frameworks
|
|
206
193
|
"nextjs-app-router",
|
|
207
194
|
"nextjs-server-actions",
|
|
208
195
|
"remix",
|
|
209
196
|
"nuxt",
|
|
210
|
-
// Styling
|
|
211
197
|
"scss-modules",
|
|
212
198
|
"cva",
|
|
213
199
|
"tailwind",
|
|
214
|
-
// Client State
|
|
215
200
|
"zustand",
|
|
216
201
|
"redux-toolkit",
|
|
217
202
|
"pinia",
|
|
218
203
|
"ngrx-signalstore",
|
|
219
204
|
"jotai",
|
|
220
205
|
"mobx",
|
|
221
|
-
// Server State / Data Fetching
|
|
222
206
|
"react-query",
|
|
223
207
|
"swr",
|
|
224
208
|
"graphql-apollo",
|
|
225
209
|
"graphql-urql",
|
|
226
210
|
"trpc",
|
|
227
|
-
// Forms & Validation
|
|
228
211
|
"react-hook-form",
|
|
229
212
|
"vee-validate",
|
|
230
213
|
"zod-validation",
|
|
231
|
-
// Testing
|
|
232
214
|
"vitest",
|
|
233
215
|
"playwright-e2e",
|
|
234
216
|
"cypress-e2e",
|
|
235
217
|
"react-testing-library",
|
|
236
218
|
"vue-test-utils",
|
|
237
219
|
"msw",
|
|
238
|
-
// UI Components
|
|
239
220
|
"shadcn-ui",
|
|
240
221
|
"tanstack-table",
|
|
241
222
|
"radix-ui",
|
|
242
|
-
// Backend - API Framework
|
|
243
223
|
"hono",
|
|
244
224
|
"express",
|
|
245
225
|
"fastify",
|
|
246
|
-
// Backend - Database
|
|
247
226
|
"drizzle",
|
|
248
227
|
"prisma",
|
|
249
|
-
// Backend - Auth
|
|
250
228
|
"better-auth",
|
|
251
|
-
// Backend - Observability
|
|
252
229
|
"axiom-pino-sentry",
|
|
253
|
-
// Backend - Analytics
|
|
254
230
|
"posthog",
|
|
255
231
|
"posthog-flags",
|
|
256
|
-
// Backend - Email
|
|
257
232
|
"resend",
|
|
258
|
-
// Backend - CI/CD
|
|
259
233
|
"github-actions",
|
|
260
|
-
// Mobile
|
|
261
234
|
"react-native",
|
|
262
235
|
"expo",
|
|
263
|
-
// Setup / Infrastructure
|
|
264
236
|
"turborepo",
|
|
265
237
|
"tooling",
|
|
266
238
|
"posthog-setup",
|
|
267
239
|
"env",
|
|
268
240
|
"observability-setup",
|
|
269
241
|
"email-setup",
|
|
270
|
-
// Animation / PWA / Realtime / etc.
|
|
271
242
|
"framer-motion",
|
|
272
243
|
"css-animations",
|
|
273
244
|
"view-transitions",
|
|
@@ -281,21 +252,16 @@ var skillDisplayNameSchema = z.enum([
|
|
|
281
252
|
"file-upload",
|
|
282
253
|
"image-handling",
|
|
283
254
|
"date-fns",
|
|
284
|
-
// Backend-specific category skills
|
|
285
255
|
"api-testing",
|
|
286
256
|
"api-performance",
|
|
287
257
|
"web-performance",
|
|
288
|
-
// Security
|
|
289
258
|
"security",
|
|
290
|
-
// CLI
|
|
291
259
|
"commander",
|
|
292
260
|
"cli-commander",
|
|
293
261
|
"oclif",
|
|
294
|
-
// Reviewing / Meta
|
|
295
262
|
"reviewing",
|
|
296
263
|
"cli-reviewing",
|
|
297
264
|
"research-methodology",
|
|
298
|
-
// Methodology
|
|
299
265
|
"investigation-requirements",
|
|
300
266
|
"anti-over-engineering",
|
|
301
267
|
"success-criteria",
|
|
@@ -351,13 +317,13 @@ var skillFrontmatterLoaderSchema = z.object({
|
|
|
351
317
|
});
|
|
352
318
|
var skillMetadataLoaderSchema = z.object({
|
|
353
319
|
category: categoryPathSchema.optional(),
|
|
354
|
-
|
|
320
|
+
categoryExclusive: z.boolean().optional(),
|
|
355
321
|
author: z.string().optional(),
|
|
356
322
|
version: z.union([z.string(), z.number()]).transform(String).optional(),
|
|
357
323
|
tags: z.array(z.string()).optional(),
|
|
358
324
|
requires: z.array(skillIdSchema).optional(),
|
|
359
|
-
|
|
360
|
-
|
|
325
|
+
compatibleWith: z.array(skillIdSchema).optional(),
|
|
326
|
+
conflictsWith: z.array(skillIdSchema).optional()
|
|
361
327
|
}).passthrough();
|
|
362
328
|
var pluginAuthorSchema = z.object({
|
|
363
329
|
name: z.string().min(1),
|
|
@@ -391,16 +357,27 @@ var agentYamlConfigSchema = z.object({
|
|
|
391
357
|
description: z.string(),
|
|
392
358
|
model: modelNameSchema.optional(),
|
|
393
359
|
tools: z.array(z.string()),
|
|
394
|
-
|
|
395
|
-
|
|
360
|
+
disallowedTools: z.array(z.string()).optional(),
|
|
361
|
+
permissionMode: permissionModeSchema.optional(),
|
|
396
362
|
hooks: hooksRecordSchema.optional(),
|
|
397
|
-
|
|
363
|
+
outputFormat: z.string().optional()
|
|
398
364
|
});
|
|
399
365
|
var skillAssignmentElementSchema = z.union([skillIdSchema, skillAssignmentSchema]);
|
|
366
|
+
var stackSubcategoryValues = new Set(stackSubcategorySchema.options);
|
|
400
367
|
var stackAgentConfigSchema = z.record(
|
|
401
368
|
z.string(),
|
|
402
369
|
z.union([skillAssignmentElementSchema, z.array(skillAssignmentElementSchema)])
|
|
403
|
-
)
|
|
370
|
+
).superRefine((val, ctx) => {
|
|
371
|
+
for (const key of Object.keys(val)) {
|
|
372
|
+
if (!stackSubcategoryValues.has(key)) {
|
|
373
|
+
ctx.addIssue({
|
|
374
|
+
code: "custom",
|
|
375
|
+
path: [key],
|
|
376
|
+
message: `Invalid subcategory '${key}'. Must be one of: ${[...stackSubcategoryValues].join(", ")}`
|
|
377
|
+
});
|
|
378
|
+
}
|
|
379
|
+
}
|
|
380
|
+
});
|
|
404
381
|
var projectConfigLoaderSchema = z.object({
|
|
405
382
|
version: z.literal("1").optional(),
|
|
406
383
|
/** Project/plugin name in kebab-case */
|
|
@@ -423,7 +400,7 @@ var projectConfigLoaderSchema = z.object({
|
|
|
423
400
|
/** Marketplace identifier for plugin installation */
|
|
424
401
|
marketplace: z.string().optional(),
|
|
425
402
|
/** Separate source for agents when different from skills source */
|
|
426
|
-
|
|
403
|
+
agentsSource: z.string().optional()
|
|
427
404
|
}).passthrough();
|
|
428
405
|
var projectConfigValidationSchema = z.object({
|
|
429
406
|
version: z.literal("1").optional(),
|
|
@@ -447,14 +424,14 @@ var projectConfigValidationSchema = z.object({
|
|
|
447
424
|
/** Marketplace identifier for plugin installation */
|
|
448
425
|
marketplace: z.string().optional(),
|
|
449
426
|
/** Separate source for agents when different from skills source */
|
|
450
|
-
|
|
427
|
+
agentsSource: z.string().optional()
|
|
451
428
|
});
|
|
452
429
|
var categoryDefinitionSchema = z.object({
|
|
453
430
|
id: subcategorySchema,
|
|
454
431
|
displayName: z.string(),
|
|
455
432
|
description: z.string(),
|
|
456
433
|
domain: domainSchema.optional(),
|
|
457
|
-
|
|
434
|
+
parentDomain: domainSchema.optional(),
|
|
458
435
|
exclusive: z.boolean(),
|
|
459
436
|
required: z.boolean(),
|
|
460
437
|
order: z.number(),
|
|
@@ -477,7 +454,7 @@ var recommendRuleSchema = z.object({
|
|
|
477
454
|
var requireRuleSchema = z.object({
|
|
478
455
|
skill: skillRefInYaml,
|
|
479
456
|
needs: z.array(skillRefInYaml).min(1),
|
|
480
|
-
|
|
457
|
+
needsAny: z.boolean().optional(),
|
|
481
458
|
reason: z.string()
|
|
482
459
|
});
|
|
483
460
|
var alternativeGroupSchema = z.object({
|
|
@@ -495,44 +472,42 @@ var skillsMatrixConfigSchema = z.object({
|
|
|
495
472
|
version: z.string(),
|
|
496
473
|
categories: z.record(subcategorySchema, categoryDefinitionSchema),
|
|
497
474
|
relationships: relationshipDefinitionsSchema,
|
|
498
|
-
|
|
475
|
+
skillAliases: z.record(skillDisplayNameSchema, skillIdSchema)
|
|
499
476
|
});
|
|
500
477
|
var localRawMetadataSchema = z.object({
|
|
501
478
|
/** Short name shown in the wizard grid (e.g., "my-custom-react") */
|
|
502
|
-
|
|
479
|
+
cliName: z.string().optional(),
|
|
503
480
|
/** One-line description for the wizard */
|
|
504
|
-
|
|
481
|
+
cliDescription: z.string().optional(),
|
|
505
482
|
/** Subcategory to place this skill in (e.g., "web-framework") */
|
|
506
483
|
category: categoryPathSchema.optional(),
|
|
507
484
|
/** If true, only one skill from this category can be selected */
|
|
508
|
-
|
|
485
|
+
categoryExclusive: z.boolean().optional(),
|
|
509
486
|
/** When an AI agent should invoke this skill */
|
|
510
|
-
|
|
487
|
+
usageGuidance: z.string().optional(),
|
|
511
488
|
tags: z.array(z.string()).optional(),
|
|
512
489
|
/** Framework skills this is compatible with (for Build step filtering) */
|
|
513
|
-
|
|
490
|
+
compatibleWith: z.array(skillIdSchema).optional(),
|
|
514
491
|
/** Skills that cannot coexist with this one */
|
|
515
|
-
|
|
492
|
+
conflictsWith: z.array(skillIdSchema).optional(),
|
|
516
493
|
/** Skills that must be selected before this one */
|
|
517
494
|
requires: z.array(skillIdSchema).optional(),
|
|
518
495
|
/** Setup skills that must be installed first (e.g., env setup) */
|
|
519
|
-
|
|
496
|
+
requiresSetup: z.array(skillIdSchema).optional(),
|
|
520
497
|
/** Usage skills this setup skill configures (inverse relationship) */
|
|
521
|
-
|
|
522
|
-
/** If true, this skill was installed by the Agents Inc. CLI (safe to remove on uninstall) */
|
|
523
|
-
generatedByAgentsInc: z.boolean().optional()
|
|
498
|
+
providesSetupFor: z.array(skillIdSchema).optional()
|
|
524
499
|
}).passthrough();
|
|
525
500
|
var localSkillMetadataSchema = z.object({
|
|
526
|
-
|
|
501
|
+
forkedFrom: z.object({
|
|
527
502
|
/** Original skill ID before forking (e.g., "web-framework-react") */
|
|
528
|
-
|
|
503
|
+
skillId: skillIdSchema,
|
|
529
504
|
/** SHA hash of the original content at fork time (for diff detection) */
|
|
530
|
-
|
|
505
|
+
contentHash: z.string(),
|
|
531
506
|
/** ISO date when the fork was created */
|
|
532
|
-
date: z.string()
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
507
|
+
date: z.string(),
|
|
508
|
+
/** Source URL the skill was installed from (e.g., "github:agents-inc/skills") */
|
|
509
|
+
source: z.string().optional()
|
|
510
|
+
}).optional()
|
|
536
511
|
}).passthrough();
|
|
537
512
|
var stackSchema = z.object({
|
|
538
513
|
id: z.string().min(1),
|
|
@@ -584,19 +559,19 @@ var versionedMetadataSchema = z.object({
|
|
|
584
559
|
/** Content version integer (incremented on each publish) */
|
|
585
560
|
version: z.number(),
|
|
586
561
|
/** Short SHA hash of skill content for change detection */
|
|
587
|
-
|
|
562
|
+
contentHash: z.string().optional(),
|
|
588
563
|
/** ISO date of last update */
|
|
589
564
|
updated: z.string().optional()
|
|
590
565
|
}).passthrough();
|
|
591
566
|
var defaultMappingsSchema = z.object({
|
|
592
567
|
/** Maps skill IDs to the agent IDs that should receive them */
|
|
593
|
-
|
|
568
|
+
skillToAgents: z.record(z.string(), z.array(z.string())),
|
|
594
569
|
/** Maps agent IDs to skill IDs that should be preloaded (embedded) instead of dynamic */
|
|
595
|
-
|
|
570
|
+
preloadedSkills: z.record(z.string(), z.array(z.string())),
|
|
596
571
|
/** Maps agent IDs to skill ID prefixes they should receive by default */
|
|
597
|
-
|
|
572
|
+
agentSkillPrefixes: z.record(z.string(), z.array(z.string())).optional(),
|
|
598
573
|
/** Maps subcategory names to their short aliases (e.g., "framework" -> "react") */
|
|
599
|
-
|
|
574
|
+
subcategoryAliases: z.record(z.string(), z.string())
|
|
600
575
|
});
|
|
601
576
|
var permissionConfigSchema = z.object({
|
|
602
577
|
/** Tool names or patterns to explicitly allow */
|
|
@@ -608,13 +583,13 @@ var settingsFileSchema = z.object({
|
|
|
608
583
|
permissions: permissionConfigSchema.optional()
|
|
609
584
|
}).passthrough();
|
|
610
585
|
var importedSkillMetadataSchema = z.object({
|
|
611
|
-
|
|
586
|
+
forkedFrom: z.object({
|
|
612
587
|
/** Source URL or identifier where the skill was imported from */
|
|
613
588
|
source: z.string(),
|
|
614
589
|
/** Original skill name in the source */
|
|
615
|
-
|
|
590
|
+
skillName: z.string(),
|
|
616
591
|
/** SHA hash of the original content at import time */
|
|
617
|
-
|
|
592
|
+
contentHash: z.string(),
|
|
618
593
|
/** ISO date when the import was performed */
|
|
619
594
|
date: z.string()
|
|
620
595
|
}).optional()
|
|
@@ -633,7 +608,7 @@ var projectSourceConfigSchema = z.object({
|
|
|
633
608
|
/** Marketplace identifier for plugin installation */
|
|
634
609
|
marketplace: z.string().optional(),
|
|
635
610
|
/** Separate source for agent definitions (when different from skills) */
|
|
636
|
-
|
|
611
|
+
agentsSource: z.string().optional(),
|
|
637
612
|
/** Additional skill sources (private marketplaces, custom repos) */
|
|
638
613
|
sources: z.array(
|
|
639
614
|
z.object({
|
|
@@ -651,19 +626,19 @@ var projectSourceConfigSchema = z.object({
|
|
|
651
626
|
/** Branding overrides for white-labeling the CLI */
|
|
652
627
|
branding: brandingConfigSchema.optional(),
|
|
653
628
|
/** Custom skills directory override (default: "src/skills") */
|
|
654
|
-
|
|
629
|
+
skillsDir: z.string().optional(),
|
|
655
630
|
/** Custom agents directory override (default: "src/agents") */
|
|
656
|
-
|
|
631
|
+
agentsDir: z.string().optional(),
|
|
657
632
|
/** Custom stacks file path override (default: "config/stacks.yaml") */
|
|
658
|
-
|
|
633
|
+
stacksFile: z.string().optional(),
|
|
659
634
|
/** Custom matrix file path override (default: "config/skills-matrix.yaml") */
|
|
660
|
-
|
|
635
|
+
matrixFile: z.string().optional()
|
|
661
636
|
}).passthrough();
|
|
662
637
|
var projectSourceConfigValidationSchema = z.object({
|
|
663
638
|
source: z.string().optional(),
|
|
664
639
|
author: z.string().optional(),
|
|
665
640
|
marketplace: z.string().optional(),
|
|
666
|
-
|
|
641
|
+
agentsSource: z.string().optional(),
|
|
667
642
|
sources: z.array(
|
|
668
643
|
z.object({
|
|
669
644
|
name: z.string(),
|
|
@@ -674,10 +649,10 @@ var projectSourceConfigValidationSchema = z.object({
|
|
|
674
649
|
).optional(),
|
|
675
650
|
boundSkills: z.array(boundSkillSchema).optional(),
|
|
676
651
|
branding: brandingConfigSchema.optional(),
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
652
|
+
skillsDir: z.string().optional(),
|
|
653
|
+
agentsDir: z.string().optional(),
|
|
654
|
+
stacksFile: z.string().optional(),
|
|
655
|
+
matrixFile: z.string().optional()
|
|
681
656
|
});
|
|
682
657
|
var KEBAB_CASE_PATTERN = /^[a-z][a-z0-9]*(-[a-z0-9]+)*$/;
|
|
683
658
|
var agentYamlGenerationSchema = z.object({
|
|
@@ -687,10 +662,10 @@ var agentYamlGenerationSchema = z.object({
|
|
|
687
662
|
description: z.string().min(1),
|
|
688
663
|
model: modelNameSchema.optional(),
|
|
689
664
|
tools: z.array(z.string()).min(1),
|
|
690
|
-
|
|
691
|
-
|
|
665
|
+
disallowedTools: z.array(z.string()).optional(),
|
|
666
|
+
permissionMode: permissionModeSchema.optional(),
|
|
692
667
|
hooks: strictHooksRecordSchema.optional(),
|
|
693
|
-
|
|
668
|
+
outputFormat: z.string().optional()
|
|
694
669
|
}).strict();
|
|
695
670
|
var agentFrontmatterValidationSchema = z.object({
|
|
696
671
|
/** Agent name in kebab-case (becomes the Task tool identifier) */
|
|
@@ -726,36 +701,36 @@ var skillFrontmatterValidationSchema = z.object({
|
|
|
726
701
|
var metadataValidationSchema = z.object({
|
|
727
702
|
/** Subcategory path (e.g., "web/framework") */
|
|
728
703
|
category: z.string(),
|
|
729
|
-
|
|
704
|
+
categoryExclusive: z.boolean().optional(),
|
|
730
705
|
/** Author handle — must start with @ (e.g., "@vince") */
|
|
731
706
|
author: z.string().regex(/^@[a-z][a-z0-9-]*$/),
|
|
732
707
|
/** Content version integer, incremented on each publish */
|
|
733
708
|
version: z.number().int().min(1).optional(),
|
|
734
709
|
/** Short display name for the wizard grid (max 30 chars) */
|
|
735
|
-
|
|
710
|
+
cliName: z.string().min(1).max(30),
|
|
736
711
|
/** One-line description for the wizard (max 60 chars) */
|
|
737
|
-
|
|
712
|
+
cliDescription: z.string().min(1).max(60),
|
|
738
713
|
/** When an AI agent should invoke this skill (min 10 chars to ensure usefulness) */
|
|
739
|
-
|
|
714
|
+
usageGuidance: z.string().min(10),
|
|
740
715
|
requires: z.array(z.string().min(1)).optional(),
|
|
741
|
-
|
|
742
|
-
|
|
716
|
+
compatibleWith: z.array(z.string().min(1)).optional(),
|
|
717
|
+
conflictsWith: z.array(z.string().min(1)).optional(),
|
|
743
718
|
/** Searchable tags — kebab-case only */
|
|
744
719
|
tags: z.array(z.string().regex(/^[a-z][a-z0-9-]*$/)).optional(),
|
|
745
|
-
|
|
746
|
-
|
|
720
|
+
requiresSetup: z.array(z.string().min(1)).optional(),
|
|
721
|
+
providesSetupFor: z.array(z.string().min(1)).optional(),
|
|
747
722
|
/** 7-char hex SHA of skill content (for change detection) */
|
|
748
|
-
|
|
723
|
+
contentHash: z.string().regex(/^[a-f0-9]{7}$/).optional(),
|
|
749
724
|
/** ISO date of last update */
|
|
750
725
|
updated: z.string().optional(),
|
|
751
726
|
/** Provenance tracking when skill was forked from another */
|
|
752
|
-
|
|
727
|
+
forkedFrom: z.object({
|
|
753
728
|
/** Original skill ID */
|
|
754
|
-
|
|
729
|
+
skillId: z.string(),
|
|
755
730
|
/** Version of the original at fork time */
|
|
756
731
|
version: z.number().int().min(1).optional(),
|
|
757
732
|
/** Content hash of the original at fork time */
|
|
758
|
-
|
|
733
|
+
contentHash: z.string(),
|
|
759
734
|
/** Source URL or identifier */
|
|
760
735
|
source: z.string().optional(),
|
|
761
736
|
/** ISO date of the fork */
|
|
@@ -785,7 +760,7 @@ var stackConfigValidationSchema = z.object({
|
|
|
785
760
|
/** Agent IDs this stack compiles (at least one required) */
|
|
786
761
|
agents: z.array(z.string().regex(KEBAB_CASE_PATTERN)).min(1),
|
|
787
762
|
/** Per-agent skill assignments: { agentId: { subcategory: [skillAssignment] } } */
|
|
788
|
-
|
|
763
|
+
agentSkills: z.record(z.string(), z.record(z.string(), z.array(stackSkillAssignmentSchema))).optional(),
|
|
789
764
|
/** High-level philosophy guiding technology choices */
|
|
790
765
|
philosophy: z.string().optional(),
|
|
791
766
|
/** Guiding principles for agents using this stack */
|
|
@@ -888,4 +863,4 @@ export {
|
|
|
888
863
|
validateNestingDepth,
|
|
889
864
|
warnUnknownFields
|
|
890
865
|
};
|
|
891
|
-
//# sourceMappingURL=chunk-
|
|
866
|
+
//# sourceMappingURL=chunk-YJIJTBSX.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/cli/utils/errors.ts","../src/cli/utils/logger.ts","../src/cli/utils/fs.ts","../src/cli/lib/schemas.ts"],"sourcesContent":["/** Extract a human-readable message from an unknown error value. */\nexport function getErrorMessage(error: unknown): string {\n return error instanceof Error ? error.message : String(error);\n}\n","// Logging utility for lib/ modules that don't have access to oclif command context.\n// In oclif commands, prefer using this.log() instead.\n\nlet verboseMode = false;\n\nexport function setVerbose(enabled: boolean): void {\n verboseMode = enabled;\n}\n\nexport function verbose(msg: string): void {\n if (verboseMode) {\n console.log(` ${msg}`);\n }\n}\n\n// Always visible (not gated by verbose mode).\n// Used for user-facing progress output: compilation ticks, summaries, validation results.\nexport function log(msg: string): void {\n console.log(msg);\n}\n\n// Always visible (not gated by verbose mode).\n// Used for issues the user should know about, like unresolved references.\n//\n// Error/warning message style guide:\n// - Start with a capital letter (restructure if it would capitalize a function name)\n// - End with a period if it's a complete sentence\n// - End without a period if it's a fragment (e.g., \"Skipping 'foo': missing SKILL.md\")\n// - Wrap dynamic values in single quotes: 'value' (not bare or double-quoted)\n// - Do NOT prefix the message with \"Warning:\" — this function adds it automatically\n// - After a colon, use lowercase (e.g., \"Skipping 'foo': invalid frontmatter\")\n// - Use em dash for supplemental info (e.g., \"Missing category — defaulting to 'local'\")\nexport function warn(msg: string): void {\n console.warn(` Warning: ${msg}`);\n}\n","import fs from \"fs-extra\";\nimport fg from \"fast-glob\";\nimport path from \"path\";\n\nexport async function readFile(filePath: string): Promise<string> {\n return fs.readFile(filePath, \"utf-8\");\n}\n\n/**\n * Reads a file with a size limit check before reading content.\n * Throws if the file exceeds maxSizeBytes. Prevents DoS from oversized files.\n */\nexport async function readFileSafe(filePath: string, maxSizeBytes: number): Promise<string> {\n const stats = await fs.stat(filePath);\n if (stats.size > maxSizeBytes) {\n throw new Error(\n `File too large: '${filePath}' is ${stats.size} bytes (limit: ${maxSizeBytes} bytes)`,\n );\n }\n return fs.readFile(filePath, \"utf-8\");\n}\n\nexport async function readFileOptional(filePath: string, fallback = \"\"): Promise<string> {\n try {\n return await fs.readFile(filePath, \"utf-8\");\n } catch {\n return fallback;\n }\n}\n\nexport async function fileExists(filePath: string): Promise<boolean> {\n return fs.pathExists(filePath);\n}\n\nexport async function directoryExists(dirPath: string): Promise<boolean> {\n try {\n const stat = await fs.stat(dirPath);\n return stat.isDirectory();\n } catch {\n return false;\n }\n}\n\nexport async function listDirectories(dirPath: string): Promise<string[]> {\n try {\n const entries = await fs.readdir(dirPath, { withFileTypes: true });\n return entries.filter((e) => e.isDirectory()).map((e) => e.name);\n } catch {\n return [];\n }\n}\n\nexport async function glob(pattern: string, cwd: string): Promise<string[]> {\n return fg(pattern, { cwd, onlyFiles: true });\n}\n\nexport async function writeFile(filePath: string, content: string): Promise<void> {\n await fs.ensureDir(path.dirname(filePath));\n await fs.writeFile(filePath, content, \"utf-8\");\n}\n\nexport async function ensureDir(dirPath: string): Promise<void> {\n await fs.ensureDir(dirPath);\n}\n\nexport async function remove(filePath: string): Promise<void> {\n await fs.remove(filePath);\n}\n\nexport async function copy(src: string, dest: string): Promise<void> {\n await fs.copy(src, dest);\n}\n","import { z } from \"zod\";\nimport { warn } from \"../utils/logger\";\nimport type {\n AgentHookAction,\n AgentHookDefinition,\n AgentName,\n AgentYamlConfig,\n AlternativeGroup,\n BoundSkill,\n CategoryDefinition,\n CategoryPath,\n ConflictRule,\n DiscourageRule,\n Domain,\n Marketplace,\n MarketplaceMetadata,\n MarketplaceOwner,\n MarketplacePlugin,\n MarketplaceRemoteSource,\n ModelName,\n PermissionMode,\n PluginAuthor,\n PluginManifest,\n RecommendRule,\n RelationshipDefinitions,\n RequireRule,\n SkillAssignment,\n SkillDisplayName,\n SkillId,\n SkillSourceType,\n SkillsMatrixConfig,\n Subcategory,\n} from \"../types\";\n\n// Bridge pattern: z.ZodType<ExistingType> ensures Zod output matches our union types\nexport const domainSchema = z.enum([\n \"web\",\n \"web-extras\",\n \"api\",\n \"cli\",\n \"mobile\",\n \"shared\",\n]) as z.ZodType<Domain>;\n\nexport const skillSourceTypeSchema = z.enum([\n \"public\",\n \"private\",\n \"local\",\n]) as z.ZodType<SkillSourceType>;\n\nexport const boundSkillSchema: z.ZodType<BoundSkill> = z.object({\n id: z.string() as z.ZodType<SkillId>,\n sourceUrl: z.string(),\n sourceName: z.string(),\n boundTo: z.string(),\n description: z.string().optional(),\n});\n\n/** Raw subcategory values (before cast) — used to derive stackSubcategorySchema */\nconst SUBCATEGORY_VALUES = [\n \"framework\",\n \"meta-framework\",\n \"styling\",\n \"client-state\",\n \"server-state\",\n \"forms\",\n \"testing\",\n \"ui-components\",\n \"mocking\",\n \"error-handling\",\n \"i18n\",\n \"file-upload\",\n \"files\",\n \"utilities\",\n \"realtime\",\n \"animation\",\n \"pwa\",\n \"accessibility\",\n \"web-performance\",\n \"api\",\n \"database\",\n \"auth\",\n \"observability\",\n \"analytics\",\n \"email\",\n \"performance\",\n \"mobile-framework\",\n \"monorepo\",\n \"tooling\",\n \"security\",\n \"methodology\",\n \"research\",\n \"reviewing\",\n \"ci-cd\",\n \"cli-framework\",\n \"cli-prompts\",\n \"cli-testing\",\n] as const;\n\n// Bridge pattern: z.ZodType<ExistingType> ensures Zod output matches our union types\nexport const subcategorySchema = z.enum(SUBCATEGORY_VALUES) as z.ZodType<Subcategory>;\n\n/**\n * Extended subcategory enum for stack configs.\n * Includes all matrix subcategories plus stacks-only keys (base-framework, platform)\n * that are used in stacks.yaml but not defined as matrix categories.\n */\nexport const stackSubcategorySchema = z.enum([...SUBCATEGORY_VALUES, \"base-framework\", \"platform\"]);\n\nexport const agentNameSchema = z.enum([\n \"web-developer\",\n \"api-developer\",\n \"cli-developer\",\n \"web-architecture\",\n \"agent-summoner\",\n \"documentor\",\n \"skill-summoner\",\n \"cli-migrator\",\n \"pattern-scout\",\n \"web-pattern-critique\",\n \"web-pm\",\n \"api-researcher\",\n \"web-researcher\",\n \"api-reviewer\",\n \"cli-reviewer\",\n \"web-reviewer\",\n \"cli-tester\",\n \"web-tester\",\n]) as z.ZodType<AgentName>;\n\nexport const modelNameSchema = z.enum([\n \"sonnet\",\n \"opus\",\n \"haiku\",\n \"inherit\",\n]) as z.ZodType<ModelName>;\n\nexport const permissionModeSchema = z.enum([\n \"default\",\n \"acceptEdits\",\n \"dontAsk\",\n \"bypassPermissions\",\n \"plan\",\n \"delegate\",\n]) as z.ZodType<PermissionMode>;\n\nexport const skillDisplayNameSchema = z.enum([\n \"react\",\n \"vue\",\n \"angular\",\n \"solidjs\",\n \"nextjs-app-router\",\n \"nextjs-server-actions\",\n \"remix\",\n \"nuxt\",\n \"scss-modules\",\n \"cva\",\n \"tailwind\",\n \"zustand\",\n \"redux-toolkit\",\n \"pinia\",\n \"ngrx-signalstore\",\n \"jotai\",\n \"mobx\",\n \"react-query\",\n \"swr\",\n \"graphql-apollo\",\n \"graphql-urql\",\n \"trpc\",\n \"react-hook-form\",\n \"vee-validate\",\n \"zod-validation\",\n \"vitest\",\n \"playwright-e2e\",\n \"cypress-e2e\",\n \"react-testing-library\",\n \"vue-test-utils\",\n \"msw\",\n \"shadcn-ui\",\n \"tanstack-table\",\n \"radix-ui\",\n \"hono\",\n \"express\",\n \"fastify\",\n \"drizzle\",\n \"prisma\",\n \"better-auth\",\n \"axiom-pino-sentry\",\n \"posthog\",\n \"posthog-flags\",\n \"resend\",\n \"github-actions\",\n \"react-native\",\n \"expo\",\n \"turborepo\",\n \"tooling\",\n \"posthog-setup\",\n \"env\",\n \"observability-setup\",\n \"email-setup\",\n \"framer-motion\",\n \"css-animations\",\n \"view-transitions\",\n \"storybook\",\n \"error-boundaries\",\n \"accessibility\",\n \"websockets\",\n \"sse\",\n \"socket-io\",\n \"service-workers\",\n \"file-upload\",\n \"image-handling\",\n \"date-fns\",\n \"api-testing\",\n \"api-performance\",\n \"web-performance\",\n \"security\",\n \"commander\",\n \"cli-commander\",\n \"oclif\",\n \"reviewing\",\n \"cli-reviewing\",\n \"research-methodology\",\n \"investigation-requirements\",\n \"anti-over-engineering\",\n \"success-criteria\",\n \"write-verification\",\n \"improvement-protocol\",\n \"context-management\",\n]) as z.ZodType<SkillDisplayName>;\n\n/** Matches SkillId format: prefix-subcategory-name (at least 3 dash-separated segments) */\nexport const SKILL_ID_PATTERN = /^(web|api|cli|mobile|infra|meta|security)-.+-.+$/;\n\n// Regex-based since Zod cannot express template literal types natively\nexport const skillIdSchema = z\n .string()\n .regex(\n SKILL_ID_PATTERN,\n \"Must be a valid skill ID (e.g., 'web-framework-react')\",\n ) as z.ZodType<SkillId>;\n\n// Accepts: \"prefix/subcategory\", \"prefix-subcategory\", bare subcategory, or \"local\"\nexport const categoryPathSchema = z.string().refine(\n (val): val is CategoryPath => {\n if (val === \"local\") return true;\n if (/^(web|api|cli|mobile|infra|meta|security)\\/.+$/.test(val)) return true;\n if (/^(web|api|cli|mobile|infra|meta|security)-.+$/.test(val)) return true;\n return subcategorySchema.safeParse(val).success;\n },\n {\n message:\n \"Must be a valid category path (e.g., 'web/framework', 'web-framework', 'testing', or 'local')\",\n },\n) as z.ZodType<CategoryPath>;\n\nexport const agentHookActionSchema: z.ZodType<AgentHookAction> = z.object({\n type: z.enum([\"command\", \"script\", \"prompt\"]),\n command: z.string().optional(),\n script: z.string().optional(),\n prompt: z.string().optional(),\n});\n\nexport const agentHookDefinitionSchema: z.ZodType<AgentHookDefinition> = z.object({\n matcher: z.string().optional(),\n hooks: z.array(agentHookActionSchema).optional(),\n});\n\nexport const hooksRecordSchema = z.record(z.string(), z.array(agentHookDefinitionSchema));\n\n/** Strict hook definition — hooks array is required and must have at least one action */\nconst strictAgentHookDefinitionSchema = z.object({\n matcher: z.string().optional(),\n hooks: z.array(agentHookActionSchema).min(1),\n});\n\n/** Strict hooks record for validation schemas (requires at least one hook action per definition) */\nexport const strictHooksRecordSchema = z.record(\n z.string(),\n z.array(strictAgentHookDefinitionSchema),\n);\n\nexport const skillAssignmentSchema: z.ZodType<SkillAssignment> = z.object({\n id: skillIdSchema,\n preloaded: z.boolean().optional(),\n local: z.boolean().optional(),\n path: z.string().optional(),\n});\n\n// Lenient: accepts any string for `name` since local/custom skills may not follow strict SkillId pattern\nexport const skillFrontmatterLoaderSchema = z.object({\n name: z.string(),\n description: z.string(),\n model: modelNameSchema.optional(),\n});\n\n// Lenient version coercion: YAML parses bare `1` as number, not string.\n// All other fields remain strict — invalid category/skillId warnings are legitimate.\nexport const skillMetadataLoaderSchema = z\n .object({\n category: categoryPathSchema.optional(),\n categoryExclusive: z.boolean().optional(),\n author: z.string().optional(),\n version: z.union([z.string(), z.number()]).transform(String).optional(),\n tags: z.array(z.string()).optional(),\n requires: z.array(skillIdSchema).optional(),\n compatibleWith: z.array(skillIdSchema).optional(),\n conflictsWith: z.array(skillIdSchema).optional(),\n })\n .passthrough();\n\nexport const pluginAuthorSchema: z.ZodType<PluginAuthor> = z.object({\n name: z.string().min(1),\n email: z.string().optional(),\n});\n\nexport const pluginManifestSchema: z.ZodType<PluginManifest> = z.object({\n name: z.string(),\n version: z.string().optional(),\n description: z.string().optional(),\n author: pluginAuthorSchema.optional(),\n keywords: z.array(z.string()).optional(),\n commands: z.union([z.string(), z.array(z.string())]).optional(),\n agents: z.union([z.string(), z.array(z.string())]).optional(),\n skills: z.union([z.string(), z.array(z.string())]).optional(),\n hooks: z.union([z.string(), hooksRecordSchema]).optional(),\n});\n\n/** Strict schema for plugin.json validation (IDE, agentsinc validate). Rejects unknown fields. */\nexport const pluginManifestValidationSchema = z\n .object({\n name: z.string().min(1),\n version: z.string().optional(),\n description: z.string().optional(),\n author: pluginAuthorSchema.optional(),\n keywords: z.array(z.string()).optional(),\n commands: z.union([z.string(), z.array(z.string())]).optional(),\n agents: z.union([z.string(), z.array(z.string())]).optional(),\n skills: z.union([z.string(), z.array(z.string())]).optional(),\n hooks: z.union([z.string(), strictHooksRecordSchema]).optional(),\n })\n .strict();\n\nexport const agentYamlConfigSchema: z.ZodType<AgentYamlConfig> = z.object({\n id: agentNameSchema,\n title: z.string(),\n description: z.string(),\n model: modelNameSchema.optional(),\n tools: z.array(z.string()),\n disallowedTools: z.array(z.string()).optional(),\n permissionMode: permissionModeSchema.optional(),\n hooks: hooksRecordSchema.optional(),\n outputFormat: z.string().optional(),\n});\n\n// Defined before projectConfigLoaderSchema so it can reference stackAgentConfigSchema\n// Single skill assignment element: either a bare SkillId string or an object { id, preloaded? }\nconst skillAssignmentElementSchema = z.union([skillIdSchema, skillAssignmentSchema]);\n\n/**\n * Agent config within a stack: maps subcategory to skill assignment(s).\n * Keys restricted to valid Subcategory values from skills-matrix.yaml.\n * Lenient: accepts bare string, object, or array from YAML.\n * Consumers normalize all values to SkillAssignment[] after parsing.\n *\n * Uses z.record(z.string()) with superRefine for key validation because\n * z.record(z.enum()) treats all enum values as required properties.\n */\nconst stackSubcategoryValues: Set<string> = new Set(stackSubcategorySchema.options);\nexport const stackAgentConfigSchema = z\n .record(\n z.string(),\n z.union([skillAssignmentElementSchema, z.array(skillAssignmentElementSchema)]),\n )\n .superRefine((val, ctx) => {\n for (const key of Object.keys(val)) {\n if (!stackSubcategoryValues.has(key)) {\n ctx.addIssue({\n code: \"custom\",\n path: [key],\n message: `Invalid subcategory '${key}'. Must be one of: ${[...stackSubcategoryValues].join(\", \")}`,\n });\n }\n }\n });\n\n/**\n * Lenient loader for .claude/config.yaml (ProjectConfig).\n * name/agents optional since partial configs are valid at load time.\n * Full validation happens in validateProjectConfig().\n */\nexport const projectConfigLoaderSchema = z\n .object({\n version: z.literal(\"1\").optional(),\n /** Project/plugin name in kebab-case */\n name: z.string().optional(),\n description: z.string().optional(),\n /** Agent IDs to compile (e.g., [\"web-developer\", \"api-developer\"]) */\n agents: z.array(z.string()).optional(),\n /** Flat list of all skill IDs used by this project */\n skills: z.array(skillIdSchema).optional(),\n\n /** Author handle (e.g., \"@vince\") */\n author: z.string().optional(),\n /** \"local\" = .claude/agents, \"plugin\" = .claude/plugins/ (DEFAULT_PLUGIN_NAME) */\n installMode: z.enum([\"local\", \"plugin\"]).optional(),\n /** Whether expert mode (advanced/niche skills) was enabled in the wizard */\n expertMode: z.boolean().optional(),\n /** Agent-to-subcategory-to-skill mappings from selected stack (accepts same formats as stacks.yaml) */\n stack: z.record(z.string(), stackAgentConfigSchema).optional(),\n /** Skills source path or URL (e.g., \"github:my-org/skills\") */\n source: z.string().optional(),\n /** Marketplace identifier for plugin installation */\n marketplace: z.string().optional(),\n /** Separate source for agents when different from skills source */\n agentsSource: z.string().optional(),\n })\n .passthrough();\n\n/**\n * Strict schema for IDE validation of .claude-src/config.yaml (ProjectConfig).\n * Used to generate project-config.schema.json for yaml-language-server.\n * Requires name/agents (the fields validateProjectConfig checks) and\n * does NOT use .passthrough() so the IDE flags unknown properties.\n */\nexport const projectConfigValidationSchema = z.object({\n version: z.literal(\"1\").optional(),\n /** Project/plugin name in kebab-case */\n name: z.string(),\n description: z.string().optional(),\n /** Agent IDs to compile (e.g., [\"web-developer\", \"api-developer\"]) */\n agents: z.array(z.string()),\n /** Flat list of all skill IDs used by this project */\n skills: z.array(skillIdSchema),\n /** Author handle (e.g., \"@vince\") */\n author: z.string().optional(),\n /** \"local\" = .claude/agents, \"plugin\" = .claude/plugins/ (DEFAULT_PLUGIN_NAME) */\n installMode: z.enum([\"local\", \"plugin\"]),\n /** Whether expert mode (advanced/niche skills) was enabled in the wizard */\n expertMode: z.boolean().optional(),\n /** Agent-to-subcategory-to-skill mappings from selected stack */\n stack: z.record(z.string(), stackAgentConfigSchema),\n /** Skills source path or URL (e.g., \"github:my-org/skills\") */\n source: z.string(),\n /** Marketplace identifier for plugin installation */\n marketplace: z.string().optional(),\n /** Separate source for agents when different from skills source */\n agentsSource: z.string().optional(),\n});\n\nexport const categoryDefinitionSchema: z.ZodType<CategoryDefinition> = z.object({\n id: subcategorySchema,\n displayName: z.string(),\n description: z.string(),\n domain: domainSchema.optional(),\n parentDomain: domainSchema.optional(),\n exclusive: z.boolean(),\n required: z.boolean(),\n order: z.number(),\n icon: z.string().optional(),\n});\n\n// Lenient: accepts both SkillId and SkillDisplayName, resolved to canonical IDs by matrix-loader\nconst skillRefInYaml = z.string() as z.ZodType<SkillId>;\n\nexport const conflictRuleSchema: z.ZodType<ConflictRule> = z.object({\n skills: z.array(skillRefInYaml).min(2),\n reason: z.string(),\n});\n\nexport const discourageRuleSchema: z.ZodType<DiscourageRule> = z.object({\n skills: z.array(skillRefInYaml).min(2),\n reason: z.string(),\n});\n\nexport const recommendRuleSchema: z.ZodType<RecommendRule> = z.object({\n when: skillRefInYaml,\n suggest: z.array(skillRefInYaml).min(1),\n reason: z.string(),\n});\n\nexport const requireRuleSchema: z.ZodType<RequireRule> = z.object({\n skill: skillRefInYaml,\n needs: z.array(skillRefInYaml).min(1),\n needsAny: z.boolean().optional(),\n reason: z.string(),\n});\n\nexport const alternativeGroupSchema: z.ZodType<AlternativeGroup> = z.object({\n purpose: z.string(),\n skills: z.array(skillRefInYaml).min(1),\n});\n\nexport const relationshipDefinitionsSchema: z.ZodType<RelationshipDefinitions> = z.object({\n conflicts: z.array(conflictRuleSchema),\n discourages: z.array(discourageRuleSchema),\n recommends: z.array(recommendRuleSchema),\n requires: z.array(requireRuleSchema),\n alternatives: z.array(alternativeGroupSchema),\n});\n\nexport const skillsMatrixConfigSchema: z.ZodType<SkillsMatrixConfig> = z.object({\n version: z.string(),\n categories: z.record(subcategorySchema, categoryDefinitionSchema) as z.ZodType<\n SkillsMatrixConfig[\"categories\"]\n >,\n relationships: relationshipDefinitionsSchema,\n skillAliases: z.record(skillDisplayNameSchema, skillIdSchema) as z.ZodType<\n SkillsMatrixConfig[\"skillAliases\"]\n >,\n});\n\n/**\n * Raw metadata from a local skill's metadata.yaml.\n * All fields optional — the loader validates cliName after parsing.\n */\nexport const localRawMetadataSchema = z\n .object({\n /** Short name shown in the wizard grid (e.g., \"my-custom-react\") */\n cliName: z.string().optional(),\n /** One-line description for the wizard */\n cliDescription: z.string().optional(),\n /** Subcategory to place this skill in (e.g., \"web-framework\") */\n category: categoryPathSchema.optional(),\n /** If true, only one skill from this category can be selected */\n categoryExclusive: z.boolean().optional(),\n /** When an AI agent should invoke this skill */\n usageGuidance: z.string().optional(),\n tags: z.array(z.string()).optional(),\n /** Framework skills this is compatible with (for Build step filtering) */\n compatibleWith: z.array(skillIdSchema).optional(),\n /** Skills that cannot coexist with this one */\n conflictsWith: z.array(skillIdSchema).optional(),\n /** Skills that must be selected before this one */\n requires: z.array(skillIdSchema).optional(),\n /** Setup skills that must be installed first (e.g., env setup) */\n requiresSetup: z.array(skillIdSchema).optional(),\n /** Usage skills this setup skill configures (inverse relationship) */\n providesSetupFor: z.array(skillIdSchema).optional(),\n })\n .passthrough();\n\n/** Metadata for local skills that were forked/copied from a marketplace skill */\nexport const localSkillMetadataSchema = z\n .object({\n forkedFrom: z\n .object({\n /** Original skill ID before forking (e.g., \"web-framework-react\") */\n skillId: skillIdSchema,\n /** SHA hash of the original content at fork time (for diff detection) */\n contentHash: z.string(),\n /** ISO date when the fork was created */\n date: z.string(),\n /** Source URL the skill was installed from (e.g., \"github:agents-inc/skills\") */\n source: z.string().optional(),\n })\n .optional(),\n })\n .passthrough();\n\nexport const stackSchema = z.object({\n id: z.string().min(1),\n name: z.string().min(1),\n description: z.string(),\n /** Maps agent IDs to their subcategory-to-skill assignments */\n agents: z.record(z.string(), stackAgentConfigSchema),\n /** High-level philosophy guiding this stack's technology choices */\n philosophy: z.string().optional(),\n});\n\n// Pre-normalization schema: values may be string or string[].\n// loadStacks() normalizes to StacksConfig (all values SkillId[]) after parsing.\nexport const stacksConfigSchema = z.object({\n stacks: z.array(stackSchema).min(1),\n});\n\nexport const marketplaceRemoteSourceSchema: z.ZodType<MarketplaceRemoteSource> = z.object({\n source: z.enum([\"github\", \"url\"]),\n repo: z.string().optional(),\n url: z.string().optional(),\n ref: z.string().optional(),\n});\n\nexport const marketplacePluginSchema: z.ZodType<MarketplacePlugin> = z.object({\n name: z.string().min(1),\n /** Local directory path (relative to pluginRoot) or remote source config */\n source: z.union([z.string(), marketplaceRemoteSourceSchema]),\n description: z.string().optional(),\n version: z.string().optional(),\n author: pluginAuthorSchema.optional(),\n /** Marketplace category for grouping (e.g., \"framework\", \"testing\") */\n category: z.string().optional(),\n keywords: z.array(z.string()).optional(),\n});\n\nexport const marketplaceOwnerSchema: z.ZodType<MarketplaceOwner> = z.object({\n name: z.string().min(1),\n email: z.string().optional(),\n});\n\nexport const marketplaceMetadataSchema: z.ZodType<MarketplaceMetadata> = z.object({\n /** Base directory for resolving plugin source paths (e.g., \"plugins/\") */\n pluginRoot: z.string().optional(),\n});\n\nexport const marketplaceSchema: z.ZodType<Marketplace> = z.object({\n $schema: z.string().optional(),\n name: z.string().min(1),\n version: z.string().min(1),\n description: z.string().optional(),\n owner: marketplaceOwnerSchema,\n metadata: marketplaceMetadataSchema.optional(),\n plugins: z.array(marketplacePluginSchema).min(1),\n});\n\n/** Versioned metadata for tracking skill content changes (used by outdated/diff commands) */\nexport const versionedMetadataSchema = z\n .object({\n /** Content version integer (incremented on each publish) */\n version: z.number(),\n /** Short SHA hash of skill content for change detection */\n contentHash: z.string().optional(),\n /** ISO date of last update */\n updated: z.string().optional(),\n })\n .passthrough();\n\n/** Default agent-skill mappings from config/defaults.yaml (fallback when no stack is selected) */\nexport const defaultMappingsSchema = z.object({\n /** Maps skill IDs to the agent IDs that should receive them */\n skillToAgents: z.record(z.string(), z.array(z.string())),\n /** Maps agent IDs to skill IDs that should be preloaded (embedded) instead of dynamic */\n preloadedSkills: z.record(z.string(), z.array(z.string())),\n /** Maps agent IDs to skill ID prefixes they should receive by default */\n agentSkillPrefixes: z.record(z.string(), z.array(z.string())).optional(),\n /** Maps subcategory names to their short aliases (e.g., \"framework\" -> \"react\") */\n subcategoryAliases: z.record(z.string(), z.string()),\n});\n\n/** Tool permission overrides (allow/deny lists for Claude Code tool access) */\nexport const permissionConfigSchema = z.object({\n /** Tool names or patterns to explicitly allow */\n allow: z.array(z.string()).optional(),\n /** Tool names or patterns to explicitly deny */\n deny: z.array(z.string()).optional(),\n});\n\n/** Settings file schema (.claude/settings.yaml) for project-level configuration */\nexport const settingsFileSchema = z\n .object({\n permissions: permissionConfigSchema.optional(),\n })\n .passthrough();\n\n/** Metadata for skills imported via `agentsinc import skill` (tracks original source for updates) */\nexport const importedSkillMetadataSchema = z\n .object({\n forkedFrom: z\n .object({\n /** Source URL or identifier where the skill was imported from */\n source: z.string(),\n /** Original skill name in the source */\n skillName: z.string(),\n /** SHA hash of the original content at import time */\n contentHash: z.string(),\n /** ISO date when the import was performed */\n date: z.string(),\n })\n .optional(),\n })\n .passthrough();\n\n/** Branding overrides for white-labeling the CLI */\nexport const brandingConfigSchema = z.object({\n /** Custom CLI name (e.g., \"Acme Dev Tools\") */\n name: z.string().optional(),\n /** Custom tagline shown in wizard header */\n tagline: z.string().optional(),\n});\n\n/**\n * Project source configuration from .claude/config.yaml.\n * Stores multi-source settings, custom directory overrides, and bound skills.\n */\nexport const projectSourceConfigSchema = z\n .object({\n /** Primary skills source (path or URL) */\n source: z.string().optional(),\n /** Author handle for this project's config */\n author: z.string().optional(),\n /** Marketplace identifier for plugin installation */\n marketplace: z.string().optional(),\n /** Separate source for agent definitions (when different from skills) */\n agentsSource: z.string().optional(),\n /** Additional skill sources (private marketplaces, custom repos) */\n sources: z\n .array(\n z.object({\n /** Display name for the source (shown in wizard) */\n name: z.string(),\n /** Source URL (e.g., \"github:acme-corp/claude-skills\") */\n url: z.string(),\n description: z.string().optional(),\n /** Git ref (branch/tag/commit) for the source */\n ref: z.string().optional(),\n }),\n )\n .optional(),\n /** Skills explicitly bound to subcategories via search (from Step Sources) */\n boundSkills: z.array(boundSkillSchema).optional(),\n /** Branding overrides for white-labeling the CLI */\n branding: brandingConfigSchema.optional(),\n /** Custom skills directory override (default: \"src/skills\") */\n skillsDir: z.string().optional(),\n /** Custom agents directory override (default: \"src/agents\") */\n agentsDir: z.string().optional(),\n /** Custom stacks file path override (default: \"config/stacks.yaml\") */\n stacksFile: z.string().optional(),\n /** Custom matrix file path override (default: \"config/skills-matrix.yaml\") */\n matrixFile: z.string().optional(),\n })\n .passthrough();\n\n/**\n * Strict schema for IDE validation of .claude-src/config.yaml (ProjectSourceConfig).\n * Used to generate project-source-config.schema.json for yaml-language-server.\n * All fields optional (source configs may have any subset) but no unknown properties.\n */\nexport const projectSourceConfigValidationSchema = z.object({\n source: z.string().optional(),\n author: z.string().optional(),\n marketplace: z.string().optional(),\n agentsSource: z.string().optional(),\n sources: z\n .array(\n z.object({\n name: z.string(),\n url: z.string(),\n description: z.string().optional(),\n ref: z.string().optional(),\n }),\n )\n .optional(),\n boundSkills: z.array(boundSkillSchema).optional(),\n branding: brandingConfigSchema.optional(),\n skillsDir: z.string().optional(),\n agentsDir: z.string().optional(),\n stacksFile: z.string().optional(),\n matrixFile: z.string().optional(),\n});\n\n// Strict validation schemas enforce all constraints and use .strict() to reject unknown fields,\n// unlike the lenient loader schemas above which use .passthrough() for backward compatibility\nconst KEBAB_CASE_PATTERN = /^[a-z][a-z0-9]*(-[a-z0-9]+)*$/;\n\n/** Strict schema for compiled agent.yaml output. Lenient id (any string) since marketplace agents may use custom identifiers. */\nexport const agentYamlGenerationSchema = z\n .object({\n $schema: z.string().optional(),\n id: z.string().min(1),\n title: z.string().min(1),\n description: z.string().min(1),\n model: modelNameSchema.optional(),\n tools: z.array(z.string()).min(1),\n disallowedTools: z.array(z.string()).optional(),\n permissionMode: permissionModeSchema.optional(),\n hooks: strictHooksRecordSchema.optional(),\n outputFormat: z.string().optional(),\n })\n .strict();\n\n/** Strict validation for agent AGENT.md frontmatter (used by plugin-validator) */\nexport const agentFrontmatterValidationSchema = z\n .object({\n /** Agent name in kebab-case (becomes the Task tool identifier) */\n name: z.string().regex(KEBAB_CASE_PATTERN).min(1),\n description: z.string().min(1),\n /** Comma-separated list of allowed tools */\n tools: z.string().optional(),\n /** Comma-separated list of denied tools */\n disallowedTools: z.string().optional(),\n model: modelNameSchema.optional(),\n permissionMode: permissionModeSchema.optional(),\n /** Skill names to preload (embed in agent prompt) */\n skills: z.array(z.string().min(1)).optional(),\n hooks: strictHooksRecordSchema.optional(),\n })\n .strict();\n\n/** Strict validation for SKILL.md frontmatter (matches Claude Code plugin spec) */\nexport const skillFrontmatterValidationSchema = z\n .object({\n name: z.string().min(1),\n description: z.string().min(1),\n /** If true, Claude cannot invoke this skill on its own */\n \"disable-model-invocation\": z.boolean().optional(),\n /** If true, user can invoke this skill directly */\n \"user-invocable\": z.boolean().optional(),\n /** Comma-separated list of tools this skill can use */\n \"allowed-tools\": z.string().optional(),\n model: modelNameSchema.optional(),\n /** \"fork\" means skill runs in a forked context (separate conversation) */\n context: z.enum([\"fork\"]).optional(),\n /** Agent name this skill is scoped to */\n agent: z.string().optional(),\n /** Hint text shown when user invokes the skill */\n \"argument-hint\": z.string().optional(),\n })\n .strict();\n\n/** Strict validation for metadata.yaml in published skills (enforces author format, length limits) */\nexport const metadataValidationSchema = z\n .object({\n /** Subcategory path (e.g., \"web/framework\") */\n category: z.string(),\n categoryExclusive: z.boolean().optional(),\n /** Author handle — must start with @ (e.g., \"@vince\") */\n author: z.string().regex(/^@[a-z][a-z0-9-]*$/),\n /** Content version integer, incremented on each publish */\n version: z.number().int().min(1).optional(),\n /** Short display name for the wizard grid (max 30 chars) */\n cliName: z.string().min(1).max(30),\n /** One-line description for the wizard (max 60 chars) */\n cliDescription: z.string().min(1).max(60),\n /** When an AI agent should invoke this skill (min 10 chars to ensure usefulness) */\n usageGuidance: z.string().min(10),\n requires: z.array(z.string().min(1)).optional(),\n compatibleWith: z.array(z.string().min(1)).optional(),\n conflictsWith: z.array(z.string().min(1)).optional(),\n /** Searchable tags — kebab-case only */\n tags: z.array(z.string().regex(/^[a-z][a-z0-9-]*$/)).optional(),\n requiresSetup: z.array(z.string().min(1)).optional(),\n providesSetupFor: z.array(z.string().min(1)).optional(),\n /** 7-char hex SHA of skill content (for change detection) */\n contentHash: z\n .string()\n .regex(/^[a-f0-9]{7}$/)\n .optional(),\n /** ISO date of last update */\n updated: z.string().optional(),\n /** Provenance tracking when skill was forked from another */\n forkedFrom: z\n .object({\n /** Original skill ID */\n skillId: z.string(),\n /** Version of the original at fork time */\n version: z.number().int().min(1).optional(),\n /** Content hash of the original at fork time */\n contentHash: z.string(),\n /** Source URL or identifier */\n source: z.string().optional(),\n /** ISO date of the fork */\n date: z.string(),\n })\n .optional(),\n })\n .strict();\n\nconst stackSkillAssignmentSchema = z\n .object({\n id: z.string().min(1),\n /** If true, skill content is embedded in the compiled agent prompt */\n preloaded: z.boolean().optional(),\n })\n .strict();\n\n/** Strict validation for published stack config.yaml (marketplace stacks) */\nexport const stackConfigValidationSchema = z\n .object({\n /** Unique stack identifier in kebab-case */\n id: z.string().regex(KEBAB_CASE_PATTERN).optional(),\n name: z.string().min(1),\n version: z.string(),\n author: z.string().min(1),\n description: z.string().optional(),\n /** ISO date when this stack was first created */\n created: z.string().optional(),\n /** ISO date of last update */\n updated: z.string().optional(),\n /** Primary framework this stack is designed for (e.g., \"nextjs\", \"remix\") */\n framework: z.string().optional(),\n /** All skills used in this stack (flat list, at least one required) */\n skills: z.array(stackSkillAssignmentSchema).min(1),\n /** Agent IDs this stack compiles (at least one required) */\n agents: z.array(z.string().regex(KEBAB_CASE_PATTERN)).min(1),\n /** Per-agent skill assignments: { agentId: { subcategory: [skillAssignment] } } */\n agentSkills: z\n .record(z.string(), z.record(z.string(), z.array(stackSkillAssignmentSchema)))\n .optional(),\n /** High-level philosophy guiding technology choices */\n philosophy: z.string().optional(),\n /** Guiding principles for agents using this stack */\n principles: z.array(z.string().min(1)).optional(),\n tags: z.array(z.string().regex(KEBAB_CASE_PATTERN)).optional(),\n /** Per-skill overrides: alternative suggestions and lock status */\n overrides: z\n .record(\n z.string(),\n z\n .object({\n /** Suggested alternative skill IDs if this one is swapped */\n alternatives: z.array(z.string().min(1)).optional(),\n /** If true, this skill cannot be swapped by the user */\n locked: z.boolean().optional(),\n })\n .strict(),\n )\n .optional(),\n /** Community metrics for sorting/ranking */\n metrics: z\n .object({\n upvotes: z.number().int().min(0).optional(),\n downloads: z.number().int().min(0).optional(),\n })\n .strict()\n .optional(),\n /** Lifecycle hooks triggered by file changes or commands */\n hooks: z\n .record(\n z.string(),\n z.array(\n z.object({\n /** Glob pattern to match file paths (e.g., \"*.tsx\") */\n matcher: z.string().optional(),\n hooks: z.array(agentHookActionSchema).min(1),\n }),\n ),\n )\n .optional(),\n })\n .strict();\n\n/** Format Zod validation issues into a human-readable string (e.g., \"path.to.field: Expected string; other: Required\") */\nexport function formatZodErrors(issues: z.ZodIssue[]): string {\n return issues.map((i) => `${i.path.join(\".\")}: ${i.message}`).join(\"; \");\n}\n\n/**\n * Validates that a parsed JSON/YAML value does not exceed a maximum nesting depth.\n * Returns true if the structure is within limits, false if it exceeds maxDepth.\n */\nexport function validateNestingDepth(value: unknown, maxDepth: number): boolean {\n function check(val: unknown, depth: number): boolean {\n if (depth > maxDepth) return false;\n if (Array.isArray(val)) {\n return val.every((item) => check(item, depth + 1));\n }\n if (val !== null && typeof val === \"object\") {\n return Object.values(val).every((v) => check(v, depth + 1));\n }\n return true;\n }\n return check(value, 0);\n}\n\n/**\n * Logs warnings for unknown fields in a parsed object compared to a list of expected keys.\n * Used at security-critical parsing boundaries (marketplace, settings) where `.passthrough()`\n * is kept for backward compatibility but unexpected fields should be surfaced.\n */\nexport function warnUnknownFields(\n parsed: Record<string, unknown>,\n expectedKeys: readonly string[],\n context: string,\n): void {\n const expectedSet = new Set(expectedKeys);\n const unknownKeys = Object.keys(parsed).filter((k) => !expectedSet.has(k));\n if (unknownKeys.length > 0) {\n warn(`Unknown fields in ${context}: ${unknownKeys.join(\", \")}`);\n }\n}\n"],"mappings":"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","names":[]}
|
|
@@ -126,6 +126,7 @@ var DEFAULT_BRANDING = {
|
|
|
126
126
|
NAME: "Agents Inc.",
|
|
127
127
|
TAGLINE: "AI-powered development tools"
|
|
128
128
|
};
|
|
129
|
+
var DEFAULT_PUBLIC_SOURCE_NAME = "Agents Inc";
|
|
129
130
|
var CLI_COLORS = {
|
|
130
131
|
PRIMARY: "cyan",
|
|
131
132
|
SUCCESS: "green",
|
|
@@ -182,8 +183,9 @@ export {
|
|
|
182
183
|
MAX_MARKETPLACE_PLUGINS,
|
|
183
184
|
SCROLL_VIEWPORT,
|
|
184
185
|
DEFAULT_BRANDING,
|
|
186
|
+
DEFAULT_PUBLIC_SOURCE_NAME,
|
|
185
187
|
CLI_COLORS,
|
|
186
188
|
DEFAULT_SCRATCH_DOMAINS,
|
|
187
189
|
DEFAULT_PRESELECTED_SKILLS
|
|
188
190
|
};
|
|
189
|
-
//# sourceMappingURL=chunk-
|
|
191
|
+
//# sourceMappingURL=chunk-ZBJQXDQN.js.map
|