agents-inc 0.166.0 → 0.168.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 +18 -0
- package/dist/{chunk-TZ2YJJKK.js → chunk-23DNVNFP.js} +5 -5
- package/dist/{chunk-ZXKBERQU.js → chunk-27AVGFXH.js} +2 -2
- package/dist/{chunk-SXVHSOTH.js → chunk-3DIDV6H3.js} +4 -4
- package/dist/{chunk-GE3WKJ6Q.js → chunk-3LZNY46H.js} +4 -4
- package/dist/{chunk-Y47EV74W.js → chunk-4DRFEYCE.js} +10 -13
- package/dist/chunk-4DRFEYCE.js.map +1 -0
- package/dist/{chunk-MPTNC32T.js → chunk-4HWOYYY7.js} +3 -3
- package/dist/{chunk-MAWNVT2C.js → chunk-4UKMQUAU.js} +4 -4
- package/dist/{chunk-G6UREQ4V.js → chunk-5JUQKGCP.js} +9 -9
- package/dist/{chunk-T6UWJAB3.js → chunk-6WGXTB2L.js} +2 -2
- package/dist/{chunk-SAYZWCH6.js → chunk-7PYXS2QU.js} +2 -2
- package/dist/{chunk-ENGYJCTF.js → chunk-AG3ZVM3B.js} +35 -45
- package/dist/{chunk-ENGYJCTF.js.map → chunk-AG3ZVM3B.js.map} +1 -1
- package/dist/{chunk-A4KDXNOT.js → chunk-C2UISKIM.js} +66 -104
- package/dist/chunk-C2UISKIM.js.map +1 -0
- package/dist/{chunk-RZDXDMT6.js → chunk-CMJBKQUH.js} +2 -2
- package/dist/{chunk-XZEVWPX6.js → chunk-DJEO3F2H.js} +7 -7
- package/dist/{chunk-V3I7VQ7N.js → chunk-EH2PGPLP.js} +5 -5
- package/dist/chunk-EH2PGPLP.js.map +1 -0
- package/dist/{chunk-PMJWD27C.js → chunk-GE7NUPMI.js} +3 -3
- package/dist/{chunk-PNB3524H.js → chunk-GRL73YPF.js} +5 -5
- package/dist/{chunk-Y3VIRVVE.js → chunk-H4ZKGGTE.js} +6 -6
- package/dist/{chunk-LFWLEDUG.js → chunk-HI6YB7XP.js} +6 -6
- package/dist/{chunk-SCOQ34YM.js → chunk-HL3GYRMR.js} +2 -2
- package/dist/{chunk-NBXXFIIW.js → chunk-HR7TK2XW.js} +3 -3
- package/dist/{chunk-ZR4YPKXQ.js → chunk-JIBCVXXL.js} +4 -4
- package/dist/{chunk-JQRJQ4SS.js → chunk-JPMV4E4E.js} +3 -3
- package/dist/{chunk-4NDBUJHK.js → chunk-JVUN6AOO.js} +8 -8
- package/dist/{chunk-RAHSOJQ2.js → chunk-KQ3PDARZ.js} +2 -2
- package/dist/{chunk-PXWG7KFO.js → chunk-KTLKR4YY.js} +2 -2
- package/dist/{chunk-6L75SQZU.js → chunk-L3W2JWBA.js} +2 -2
- package/dist/{chunk-TTY6DPJN.js → chunk-LFUJCRCT.js} +3 -3
- package/dist/{chunk-V5WXIM2F.js → chunk-NU2K5G54.js} +2 -2
- package/dist/{chunk-G4JK7WVO.js → chunk-P6I72PR3.js} +15 -15
- package/dist/{chunk-WWIFNPJG.js → chunk-PCFUXQJA.js} +12 -12
- package/dist/{chunk-DAIEQJIF.js → chunk-PLX2FLEQ.js} +3 -3
- package/dist/{chunk-2VUYFTUB.js → chunk-QWFG7Y3R.js} +6 -6
- package/dist/{chunk-WVUDLKIO.js → chunk-SLBL3WIP.js} +2 -2
- package/dist/{chunk-HWEKHVLE.js → chunk-TW35AEB4.js} +6 -6
- package/dist/{chunk-VAPTVR3J.js → chunk-VVRI35SK.js} +3 -3
- package/dist/{chunk-6LF4CQBY.js → chunk-W5KEYSOL.js} +2 -2
- package/dist/{chunk-TODCQFRB.js → chunk-W6GO2CYX.js} +2 -2
- package/dist/{chunk-7JNJ52CD.js → chunk-WNLF5EDZ.js} +7 -16
- package/dist/chunk-WNLF5EDZ.js.map +1 -0
- package/dist/{chunk-HHIYT3PI.js → chunk-X6ZZEYO3.js} +4 -4
- package/dist/{chunk-QHDPLLK6.js → chunk-YN3SWF53.js} +3 -3
- package/dist/{chunk-25MPBIK3.js → chunk-ZUGH4MQG.js} +3 -3
- package/dist/commands/build/marketplace.js +6 -6
- package/dist/commands/build/plugins.js +8 -8
- package/dist/commands/compile.js +14 -14
- package/dist/commands/doctor.js +13 -13
- package/dist/commands/edit.js +71 -242
- package/dist/commands/edit.js.map +1 -1
- package/dist/commands/eject.js +12 -12
- package/dist/commands/init.js +39 -39
- package/dist/commands/list.js +9 -9
- package/dist/commands/new/marketplace.js +6 -6
- package/dist/commands/search.js +11 -11
- package/dist/commands/share.js +11 -11
- package/dist/commands/uninstall.js +13 -13
- package/dist/commands/update.js +8 -8
- package/dist/components/common/removal-plan-confirm.js +2 -2
- package/dist/components/common/select-list.js +2 -2
- package/dist/components/wizard/category-grid.js +4 -4
- package/dist/components/wizard/checkbox-grid.js +4 -4
- package/dist/components/wizard/domain-selection.js +9 -9
- package/dist/components/wizard/run-wizard-session.js +26 -26
- package/dist/components/wizard/scroll-affordance.js +2 -2
- package/dist/components/wizard/skill-agent-summary.js +5 -5
- package/dist/components/wizard/source-grid.js +5 -5
- package/dist/components/wizard/stack-selection.js +7 -7
- package/dist/components/wizard/step-agents.js +8 -8
- package/dist/components/wizard/step-build.js +7 -7
- package/dist/components/wizard/step-confirm.js +9 -9
- package/dist/components/wizard/step-sources.js +8 -8
- package/dist/components/wizard/step-stack.js +8 -8
- package/dist/components/wizard/summary-panel.js +8 -8
- package/dist/components/wizard/toast.js +2 -2
- package/dist/components/wizard/wizard-layout.js +12 -12
- package/dist/components/wizard/wizard-tabs.js +2 -2
- package/dist/components/wizard/wizard.js +25 -25
- package/dist/hooks/init.js +39 -39
- package/dist/load-agent-defs-5XMVB3MU.js +14 -0
- package/dist/recompile-project-agents-7PQWYQ6B.js +18 -0
- package/dist/{source-loader-7KZ3MD5O.js → source-loader-FRJTCSDL.js} +4 -4
- package/dist/stores/wizard-store.js +4 -4
- package/package.json +5 -2
- package/dist/chunk-7JNJ52CD.js.map +0 -1
- package/dist/chunk-A4KDXNOT.js.map +0 -1
- package/dist/chunk-V3I7VQ7N.js.map +0 -1
- package/dist/chunk-Y47EV74W.js.map +0 -1
- package/dist/load-agent-defs-3C27ENC7.js +0 -14
- package/dist/recompile-project-agents-DGNBCU3N.js +0 -18
- /package/dist/{chunk-TZ2YJJKK.js.map → chunk-23DNVNFP.js.map} +0 -0
- /package/dist/{chunk-ZXKBERQU.js.map → chunk-27AVGFXH.js.map} +0 -0
- /package/dist/{chunk-SXVHSOTH.js.map → chunk-3DIDV6H3.js.map} +0 -0
- /package/dist/{chunk-GE3WKJ6Q.js.map → chunk-3LZNY46H.js.map} +0 -0
- /package/dist/{chunk-MPTNC32T.js.map → chunk-4HWOYYY7.js.map} +0 -0
- /package/dist/{chunk-MAWNVT2C.js.map → chunk-4UKMQUAU.js.map} +0 -0
- /package/dist/{chunk-G6UREQ4V.js.map → chunk-5JUQKGCP.js.map} +0 -0
- /package/dist/{chunk-T6UWJAB3.js.map → chunk-6WGXTB2L.js.map} +0 -0
- /package/dist/{chunk-SAYZWCH6.js.map → chunk-7PYXS2QU.js.map} +0 -0
- /package/dist/{chunk-RZDXDMT6.js.map → chunk-CMJBKQUH.js.map} +0 -0
- /package/dist/{chunk-XZEVWPX6.js.map → chunk-DJEO3F2H.js.map} +0 -0
- /package/dist/{chunk-PMJWD27C.js.map → chunk-GE7NUPMI.js.map} +0 -0
- /package/dist/{chunk-PNB3524H.js.map → chunk-GRL73YPF.js.map} +0 -0
- /package/dist/{chunk-Y3VIRVVE.js.map → chunk-H4ZKGGTE.js.map} +0 -0
- /package/dist/{chunk-LFWLEDUG.js.map → chunk-HI6YB7XP.js.map} +0 -0
- /package/dist/{chunk-SCOQ34YM.js.map → chunk-HL3GYRMR.js.map} +0 -0
- /package/dist/{chunk-NBXXFIIW.js.map → chunk-HR7TK2XW.js.map} +0 -0
- /package/dist/{chunk-ZR4YPKXQ.js.map → chunk-JIBCVXXL.js.map} +0 -0
- /package/dist/{chunk-JQRJQ4SS.js.map → chunk-JPMV4E4E.js.map} +0 -0
- /package/dist/{chunk-4NDBUJHK.js.map → chunk-JVUN6AOO.js.map} +0 -0
- /package/dist/{chunk-RAHSOJQ2.js.map → chunk-KQ3PDARZ.js.map} +0 -0
- /package/dist/{chunk-PXWG7KFO.js.map → chunk-KTLKR4YY.js.map} +0 -0
- /package/dist/{chunk-6L75SQZU.js.map → chunk-L3W2JWBA.js.map} +0 -0
- /package/dist/{chunk-TTY6DPJN.js.map → chunk-LFUJCRCT.js.map} +0 -0
- /package/dist/{chunk-V5WXIM2F.js.map → chunk-NU2K5G54.js.map} +0 -0
- /package/dist/{chunk-G4JK7WVO.js.map → chunk-P6I72PR3.js.map} +0 -0
- /package/dist/{chunk-WWIFNPJG.js.map → chunk-PCFUXQJA.js.map} +0 -0
- /package/dist/{chunk-DAIEQJIF.js.map → chunk-PLX2FLEQ.js.map} +0 -0
- /package/dist/{chunk-2VUYFTUB.js.map → chunk-QWFG7Y3R.js.map} +0 -0
- /package/dist/{chunk-WVUDLKIO.js.map → chunk-SLBL3WIP.js.map} +0 -0
- /package/dist/{chunk-HWEKHVLE.js.map → chunk-TW35AEB4.js.map} +0 -0
- /package/dist/{chunk-VAPTVR3J.js.map → chunk-VVRI35SK.js.map} +0 -0
- /package/dist/{chunk-6LF4CQBY.js.map → chunk-W5KEYSOL.js.map} +0 -0
- /package/dist/{chunk-TODCQFRB.js.map → chunk-W6GO2CYX.js.map} +0 -0
- /package/dist/{chunk-HHIYT3PI.js.map → chunk-X6ZZEYO3.js.map} +0 -0
- /package/dist/{chunk-QHDPLLK6.js.map → chunk-YN3SWF53.js.map} +0 -0
- /package/dist/{chunk-25MPBIK3.js.map → chunk-ZUGH4MQG.js.map} +0 -0
- /package/dist/{load-agent-defs-3C27ENC7.js.map → load-agent-defs-5XMVB3MU.js.map} +0 -0
- /package/dist/{recompile-project-agents-DGNBCU3N.js.map → recompile-project-agents-7PQWYQ6B.js.map} +0 -0
- /package/dist/{source-loader-7KZ3MD5O.js.map → source-loader-FRJTCSDL.js.map} +0 -0
|
@@ -9,7 +9,7 @@ import {
|
|
|
9
9
|
typedFromEntries,
|
|
10
10
|
typedKeys,
|
|
11
11
|
typedValues
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-NU2K5G54.js";
|
|
13
13
|
import {
|
|
14
14
|
AGENT_NAMES,
|
|
15
15
|
AUTHOR_HANDLE_PATTERN,
|
|
@@ -17,6 +17,7 @@ import {
|
|
|
17
17
|
CACHE_READABLE_PREFIX_LENGTH,
|
|
18
18
|
CLAUDE_DIR,
|
|
19
19
|
CLI_INVOKE_COMMAND,
|
|
20
|
+
CODEX_MODEL_NAMES,
|
|
20
21
|
DEFAULT_BRANDING,
|
|
21
22
|
DEFAULT_PLUGIN_NAME,
|
|
22
23
|
DEFAULT_PUBLIC_SOURCE_NAME,
|
|
@@ -69,6 +70,7 @@ import {
|
|
|
69
70
|
editorConfigUrl,
|
|
70
71
|
effectivelyExcludedSkillIds,
|
|
71
72
|
globalInstallRoot,
|
|
73
|
+
inAnEnglishList,
|
|
72
74
|
isActiveAt,
|
|
73
75
|
isExclusiveCategory,
|
|
74
76
|
isGlobalTombstone,
|
|
@@ -78,11 +80,12 @@ import {
|
|
|
78
80
|
orderDomains,
|
|
79
81
|
resolveAssignment,
|
|
80
82
|
resolveLoadState,
|
|
83
|
+
seatDiagnostics,
|
|
81
84
|
seatedCatalog,
|
|
82
85
|
seedAgentScope,
|
|
83
86
|
sourceDirName,
|
|
84
87
|
validateSelection
|
|
85
|
-
} from "./chunk-
|
|
88
|
+
} from "./chunk-AG3ZVM3B.js";
|
|
86
89
|
import {
|
|
87
90
|
defaultCategories,
|
|
88
91
|
defaultRules,
|
|
@@ -168,21 +171,33 @@ function renderAgentRoleToml(agent, body) {
|
|
|
168
171
|
refuseBlankInstructions(agent.name, body);
|
|
169
172
|
return [
|
|
170
173
|
...scalarLines(agent, body),
|
|
171
|
-
// Last
|
|
172
|
-
// emitted below `[features]` would become `features.model` and take the file with it.
|
|
174
|
+
// Last: every bare key after a table header belongs to that table.
|
|
173
175
|
...shellToolTable(agent)
|
|
174
176
|
].join("\n");
|
|
175
177
|
}
|
|
176
178
|
var CODEX_DEVELOPER_INSTRUCTIONS_OPENER = `developer_instructions = """`;
|
|
177
179
|
var CODEX_EFFORT_KEY = "model_reasoning_effort";
|
|
180
|
+
var PINNED_MODEL_RESTING_EFFORT = "medium";
|
|
178
181
|
function scalarLines(agent, body) {
|
|
179
182
|
return [
|
|
180
183
|
`name = ${basicString(agent.name)}`,
|
|
181
184
|
`description = ${basicString(agent.description)}`,
|
|
182
|
-
...
|
|
185
|
+
...modelLines(agent),
|
|
183
186
|
developerInstructions(body)
|
|
184
187
|
];
|
|
185
188
|
}
|
|
189
|
+
function modelLines(agent) {
|
|
190
|
+
if (agent.codexModel === void 0) {
|
|
191
|
+
return agent.effort === void 0 ? [] : [effortLine(agent.effort)];
|
|
192
|
+
}
|
|
193
|
+
return [
|
|
194
|
+
`model = ${basicString(agent.codexModel)}`,
|
|
195
|
+
effortLine(agent.effort ?? PINNED_MODEL_RESTING_EFFORT)
|
|
196
|
+
];
|
|
197
|
+
}
|
|
198
|
+
function effortLine(effort) {
|
|
199
|
+
return `${CODEX_EFFORT_KEY} = ${basicString(effort)}`;
|
|
200
|
+
}
|
|
186
201
|
function developerInstructions(body) {
|
|
187
202
|
return `${CODEX_DEVELOPER_INSTRUCTIONS_OPENER}
|
|
188
203
|
${asMultilineString(body)}
|
|
@@ -259,12 +274,6 @@ function agentsLeftOutOfCodexMessage() {
|
|
|
259
274
|
function unexpressibleOnCodexMessage() {
|
|
260
275
|
return `Codex cannot express ${inAnEnglishList(UNEXPRESSIBLE_ON_CODEX)}, so the agent role files it wrote carry none of them.`;
|
|
261
276
|
}
|
|
262
|
-
function inAnEnglishList(items) {
|
|
263
|
-
const last = items.at(-1);
|
|
264
|
-
if (last === void 0) return "";
|
|
265
|
-
if (items.length === 1) return last;
|
|
266
|
-
return `${items.slice(0, -1).join(", ")} and ${last}`;
|
|
267
|
-
}
|
|
268
277
|
|
|
269
278
|
// ../compile/src/agent-source.ts
|
|
270
279
|
var LIQUID_SYNTAX_PATTERN = /\{\{|\}\}|\{%|%\}/g;
|
|
@@ -1992,6 +2001,12 @@ function formatZodErrors(error) {
|
|
|
1992
2001
|
|
|
1993
2002
|
// src/cli/types/matrix.ts
|
|
1994
2003
|
var MODEL_NAMES2 = ["sonnet", "opus", "haiku", "fable", "inherit"];
|
|
2004
|
+
var CODEX_MODEL_NAMES2 = [
|
|
2005
|
+
"gpt-6-astra",
|
|
2006
|
+
"gpt-5.6-sol",
|
|
2007
|
+
"gpt-5.6-terra",
|
|
2008
|
+
"gpt-5.6-luna"
|
|
2009
|
+
];
|
|
1995
2010
|
var EFFORT_NAMES2 = ["low", "medium", "high", "xhigh", "max"];
|
|
1996
2011
|
var PERMISSION_MODES = [
|
|
1997
2012
|
"default",
|
|
@@ -2006,6 +2021,7 @@ var CACHE_TTLS = ["5m", "1h"];
|
|
|
2006
2021
|
|
|
2007
2022
|
// src/cli/lib/schemas.ts
|
|
2008
2023
|
var modelNameSchema = z2.enum(MODEL_NAMES2);
|
|
2024
|
+
var codexModelNameSchema = z2.enum(CODEX_MODEL_NAMES2);
|
|
2009
2025
|
var effortLevelSchema = z2.enum(EFFORT_NAMES2);
|
|
2010
2026
|
var permissionModeSchema = z2.enum(PERMISSION_MODES);
|
|
2011
2027
|
var skillSlugSchema = z2.enum(SKILL_SLUGS);
|
|
@@ -2049,7 +2065,7 @@ var skillAssignmentSchema = z2.object({
|
|
|
2049
2065
|
path: z2.string().exactOptional()
|
|
2050
2066
|
});
|
|
2051
2067
|
var skillFrontmatterLoaderSchema = z2.object({
|
|
2052
|
-
/** Lenient
|
|
2068
|
+
/** Lenient: local/custom skills have non-builtin IDs. */
|
|
2053
2069
|
name: z2.string(),
|
|
2054
2070
|
description: z2.string(),
|
|
2055
2071
|
model: modelNameSchema.exactOptional()
|
|
@@ -2080,7 +2096,7 @@ var pluginManifestObjectSchema = z2.object({
|
|
|
2080
2096
|
version: z2.string().exactOptional(),
|
|
2081
2097
|
description: z2.string().exactOptional(),
|
|
2082
2098
|
author: pluginAuthorSchema.exactOptional(),
|
|
2083
|
-
/**
|
|
2099
|
+
/** A plugin authored elsewhere may carry any category, or none. */
|
|
2084
2100
|
category: z2.string().exactOptional(),
|
|
2085
2101
|
keywords: z2.array(z2.string()).exactOptional(),
|
|
2086
2102
|
commands: z2.union([z2.string(), z2.array(z2.string())]).exactOptional(),
|
|
@@ -2100,14 +2116,7 @@ var agentYamlConfigSchema = z2.object({
|
|
|
2100
2116
|
disallowedTools: z2.array(z2.string()).exactOptional(),
|
|
2101
2117
|
permissionMode: permissionModeSchema.exactOptional(),
|
|
2102
2118
|
isolation: agentIsolationSchema.exactOptional(),
|
|
2103
|
-
/**
|
|
2104
|
-
* The same contract `agentFrontmatterValidationSchema` reads the compiled agent back through.
|
|
2105
|
-
* The lenient {@link hooksRecordSchema} used to sit here, and every key its definition declares
|
|
2106
|
-
* is optional — so a block written with its actions one level flat was stripped to `{}` with no
|
|
2107
|
-
* error, `agent.liquid` emitted the empty definition, and the refusal arrived from the
|
|
2108
|
-
* frontmatter reader against a compiled `.md` the user never wrote. This is the last boundary
|
|
2109
|
-
* that still knows which `metadata.yaml` the value came from.
|
|
2110
|
-
*/
|
|
2119
|
+
/** Strict, like the frontmatter reader: a lenient read silently emptied malformed hooks. */
|
|
2111
2120
|
hooks: strictHooksRecordSchema.exactOptional(),
|
|
2112
2121
|
experimental: agentExperimentalSchema.exactOptional(),
|
|
2113
2122
|
outputFormat: z2.string().exactOptional(),
|
|
@@ -2149,21 +2158,18 @@ function refuseRenamedFields(config, ctx) {
|
|
|
2149
2158
|
}
|
|
2150
2159
|
var renamedFieldGuard = z2.unknown().superRefine(refuseRenamedFields);
|
|
2151
2160
|
var projectConfigFields = z2.object({
|
|
2152
|
-
/** Project/plugin name in kebab-case */
|
|
2153
2161
|
name: z2.string().exactOptional(),
|
|
2154
2162
|
description: z2.string().exactOptional(),
|
|
2155
|
-
/** Per-agent configuration with scope (e.g., [{ name: "web-developer", scope: "project" }]) */
|
|
2156
2163
|
agents: z2.array(
|
|
2157
2164
|
z2.object({
|
|
2158
2165
|
name: z2.string(),
|
|
2159
2166
|
scope: z2.enum(["project", "global"]),
|
|
2160
|
-
/** Per-agent overrides of the agent's own metadata defaults */
|
|
2161
2167
|
model: modelNameSchema.exactOptional(),
|
|
2168
|
+
codexModel: codexModelNameSchema.exactOptional(),
|
|
2162
2169
|
effort: effortLevelSchema.exactOptional(),
|
|
2163
2170
|
excluded: z2.boolean().exactOptional()
|
|
2164
2171
|
})
|
|
2165
2172
|
).exactOptional(),
|
|
2166
|
-
/** Per-skill configuration with scope and provenance */
|
|
2167
2173
|
skills: z2.array(
|
|
2168
2174
|
z2.object({
|
|
2169
2175
|
id: z2.string(),
|
|
@@ -2172,19 +2178,15 @@ var projectConfigFields = z2.object({
|
|
|
2172
2178
|
excluded: z2.boolean().exactOptional()
|
|
2173
2179
|
})
|
|
2174
2180
|
).exactOptional(),
|
|
2175
|
-
/** Author handle (e.g., "@vince") */
|
|
2176
2181
|
author: z2.string().exactOptional(),
|
|
2177
|
-
/** Selected domains from the wizard (persisted for edit mode restoration) */
|
|
2178
2182
|
selectedDomains: z2.array(z2.string()).exactOptional(),
|
|
2179
|
-
/** Agent-to-category-to-skill mappings from selected stack (accepts same formats as stacks.ts) */
|
|
2180
2183
|
stack: z2.record(z2.string(), stackAgentConfigSchema).exactOptional(),
|
|
2181
|
-
/**
|
|
2184
|
+
/** A path or URL (e.g., "github:my-org/skills") */
|
|
2182
2185
|
marketplace: z2.string().exactOptional(),
|
|
2183
|
-
/** The name
|
|
2186
|
+
/** The name the marketplace's manifest gives it, which plugins are registered under */
|
|
2184
2187
|
marketplaceName: z2.string().exactOptional(),
|
|
2185
|
-
/** Separate source for agents when different from skills source */
|
|
2186
2188
|
agentsSource: z2.string().exactOptional(),
|
|
2187
|
-
/**
|
|
2189
|
+
/** Global config only */
|
|
2188
2190
|
projects: z2.array(z2.string()).exactOptional()
|
|
2189
2191
|
}).passthrough();
|
|
2190
2192
|
var projectConfigLoaderSchema = renamedFieldGuard.pipe(projectConfigFields);
|
|
@@ -2235,30 +2237,22 @@ var skillRulesFileSchema = z2.object({
|
|
|
2235
2237
|
relationships: relationshipDefinitionsSchema.exactOptional()
|
|
2236
2238
|
});
|
|
2237
2239
|
var localRawMetadataSchema = z2.object({
|
|
2238
|
-
/** Short name shown in the wizard grid (e.g., "my-custom-react") */
|
|
2239
2240
|
displayName: z2.string(),
|
|
2240
|
-
/** Kebab-case short key for alias resolution (e.g., "react") */
|
|
2241
2241
|
slug: z2.string(),
|
|
2242
|
-
/** One-line description for the wizard */
|
|
2243
2242
|
cliDescription: z2.string().exactOptional(),
|
|
2244
|
-
/** Category to place this skill in (e.g., "web-framework") */
|
|
2245
2243
|
category: categoryPathSchema,
|
|
2246
|
-
/** When an AI agent should invoke this skill */
|
|
2247
2244
|
usageGuidance: z2.string().exactOptional(),
|
|
2248
|
-
/** Domain this skill belongs to (e.g., "web", "api", "cli") */
|
|
2249
2245
|
domain: z2.string(),
|
|
2250
2246
|
/** True if this skill was created outside the CLI's built-in vocabulary */
|
|
2251
2247
|
custom: z2.boolean().exactOptional()
|
|
2252
2248
|
}).passthrough();
|
|
2253
2249
|
var localSkillMetadataSchema = z2.object({
|
|
2254
2250
|
forkedFrom: z2.object({
|
|
2255
|
-
/**
|
|
2251
|
+
/** Lenient: custom and extra-source skills have non-builtin IDs */
|
|
2256
2252
|
skillId: z2.string(),
|
|
2257
2253
|
/** SHA hash of the original content at fork time (for diff detection) */
|
|
2258
2254
|
contentHash: z2.string(),
|
|
2259
|
-
/** ISO date when the fork was created */
|
|
2260
2255
|
date: z2.string(),
|
|
2261
|
-
/** Source URL the skill was installed from (e.g., "github:agents-inc/skills") */
|
|
2262
2256
|
source: z2.string().exactOptional(),
|
|
2263
2257
|
/** Directory inside that repository, for a skill only its own bytes can install again */
|
|
2264
2258
|
path: z2.string().exactOptional()
|
|
@@ -2268,9 +2262,7 @@ var stackSchema = z2.object({
|
|
|
2268
2262
|
id: z2.string().min(1),
|
|
2269
2263
|
name: z2.string().min(1),
|
|
2270
2264
|
description: z2.string(),
|
|
2271
|
-
/** Maps agent IDs to their category-to-skill assignments */
|
|
2272
2265
|
agents: z2.record(z2.string(), stackAgentConfigSchema),
|
|
2273
|
-
/** High-level philosophy guiding this stack's technology choices */
|
|
2274
2266
|
philosophy: z2.string().exactOptional()
|
|
2275
2267
|
});
|
|
2276
2268
|
var stacksConfigSchema = z2.object({
|
|
@@ -2301,11 +2293,7 @@ var marketplaceMetadataSchema = z2.object({
|
|
|
2301
2293
|
var MARKETPLACE_NAME_REFUSAL = "A marketplace name is kebab-case: lowercase letters, numbers and hyphens, starting with a letter (e.g. 'acme-skills'). Rename it in this manifest \u2014 Claude Code registers every plugin under it and accepts no other shape.";
|
|
2302
2294
|
var marketplaceSchema = z2.object({
|
|
2303
2295
|
$schema: z2.string().exactOptional(),
|
|
2304
|
-
/**
|
|
2305
|
-
* Kebab-case, because this name is the namespace Claude Code registers plugins under and the
|
|
2306
|
-
* CLI piggybacks on what Claude Code accepts (owner ruling 2026-08-20). Held to the same rule
|
|
2307
|
-
* `build marketplace` refuses to publish under, so what this CLI emits is what it can read back.
|
|
2308
|
-
*/
|
|
2296
|
+
/** Kebab-case: the namespace Claude Code registers plugins under (owner ruling 2026-08-20). */
|
|
2309
2297
|
name: z2.string().min(1).regex(KEBAB_CASE_PATTERN, { message: MARKETPLACE_NAME_REFUSAL }),
|
|
2310
2298
|
version: z2.string().min(1),
|
|
2311
2299
|
description: z2.string().exactOptional(),
|
|
@@ -2319,28 +2307,22 @@ var sourceRevalidationSchema = z2.object({
|
|
|
2319
2307
|
etag: z2.string().min(1).exactOptional()
|
|
2320
2308
|
});
|
|
2321
2309
|
var permissionConfigSchema = z2.object({
|
|
2322
|
-
/** Tool names or patterns to explicitly allow */
|
|
2323
2310
|
allow: z2.array(z2.string()).exactOptional(),
|
|
2324
|
-
/** Tool names or patterns to explicitly deny */
|
|
2325
2311
|
deny: z2.array(z2.string()).exactOptional()
|
|
2326
2312
|
});
|
|
2327
2313
|
var settingsFileSchema = z2.object({
|
|
2328
2314
|
permissions: permissionConfigSchema.exactOptional()
|
|
2329
2315
|
}).passthrough();
|
|
2330
2316
|
var brandingConfigSchema = z2.object({
|
|
2331
|
-
/** Custom CLI name (e.g., "Acme Dev Tools") */
|
|
2332
2317
|
name: z2.string().exactOptional()
|
|
2333
2318
|
});
|
|
2334
2319
|
var projectSourceConfigFields = z2.object({
|
|
2335
|
-
/**
|
|
2320
|
+
/** A path or URL */
|
|
2336
2321
|
marketplace: z2.string().exactOptional(),
|
|
2337
|
-
/** Author handle for this project's config */
|
|
2338
2322
|
author: z2.string().exactOptional(),
|
|
2339
|
-
/** The name
|
|
2323
|
+
/** The name the marketplace's manifest gives it, which plugins are registered under */
|
|
2340
2324
|
marketplaceName: z2.string().exactOptional(),
|
|
2341
|
-
/** Separate source for agent definitions (when different from skills) */
|
|
2342
2325
|
agentsSource: z2.string().exactOptional(),
|
|
2343
|
-
/** Branding overrides for white-labeling the CLI */
|
|
2344
2326
|
branding: brandingConfigSchema.exactOptional(),
|
|
2345
2327
|
/** Custom skills directory override (default: "src/skills") */
|
|
2346
2328
|
skillsDir: z2.string().exactOptional(),
|
|
@@ -2406,36 +2388,23 @@ var skillFrontmatterValidationSchema = z2.object({
|
|
|
2406
2388
|
"argument-hint": z2.string().exactOptional()
|
|
2407
2389
|
}).strict();
|
|
2408
2390
|
var forkedFromSchema = z2.object({
|
|
2409
|
-
/** Original skill ID */
|
|
2410
2391
|
skillId: z2.string(),
|
|
2411
|
-
/** Version of the original at fork time */
|
|
2412
2392
|
version: z2.number().int().min(1).exactOptional(),
|
|
2413
|
-
/** Content hash of the original at fork time */
|
|
2414
2393
|
contentHash: z2.string(),
|
|
2415
|
-
/** Source URL or identifier */
|
|
2416
2394
|
source: z2.string().exactOptional(),
|
|
2417
2395
|
/** Directory inside that source, for a skill only its own bytes can install again */
|
|
2418
2396
|
path: z2.string().exactOptional(),
|
|
2419
|
-
/** ISO date of the fork */
|
|
2420
2397
|
date: z2.string()
|
|
2421
2398
|
});
|
|
2422
2399
|
var CLI_DESCRIPTION_MAX_LENGTH = 60;
|
|
2423
2400
|
var skillMetadataBaseSchema = z2.object({
|
|
2424
|
-
/** Author handle — must start with @ (e.g., "@vince") */
|
|
2425
2401
|
author: z2.string().regex(AUTHOR_HANDLE_PATTERN),
|
|
2426
|
-
/** Short display name for the wizard grid (max 30 chars) */
|
|
2427
2402
|
displayName: z2.string().min(1).max(30),
|
|
2428
|
-
/** One-line description for the wizard (max 60 chars recommended; over-length is a validation warning) */
|
|
2429
2403
|
cliDescription: z2.string().min(1).max(CLI_DESCRIPTION_MAX_LENGTH),
|
|
2430
|
-
/** When an AI agent should invoke this skill (min 10 chars to ensure usefulness) */
|
|
2431
2404
|
usageGuidance: z2.string().min(10),
|
|
2432
|
-
/** 7-char hex SHA of skill content (for change detection) */
|
|
2433
2405
|
contentHash: z2.string().regex(/^[a-f0-9]{7}$/).exactOptional(),
|
|
2434
|
-
/** ISO date of last update */
|
|
2435
2406
|
updated: z2.string().exactOptional(),
|
|
2436
|
-
/** Provenance tracking when skill was forked from another */
|
|
2437
2407
|
forkedFrom: forkedFromSchema.exactOptional(),
|
|
2438
|
-
/** Domain assignment from metadata */
|
|
2439
2408
|
domain: z2.string().exactOptional(),
|
|
2440
2409
|
/** True if this skill was created outside the CLI's built-in vocabulary */
|
|
2441
2410
|
custom: z2.boolean().exactOptional()
|
|
@@ -2445,7 +2414,6 @@ function unknownMetadataSlugRefusal(input) {
|
|
|
2445
2414
|
return `${named} is not a slug the public catalogue carries. A published skill's slug is held to that catalogue unless the skill declares it is not from it \u2014 add '${METADATA_KEYS.CUSTOM}: true' beside it in this ${STANDARD_FILES.METADATA_YAML} and the slug is read as your marketplace's own, any kebab-case name. That declaration is how a skill outside the catalogue's vocabulary is carried; a skill the catalogue does carry names its catalogue slug and leaves it off.`;
|
|
2446
2415
|
}
|
|
2447
2416
|
var metadataValidationSchema = skillMetadataBaseSchema.extend({
|
|
2448
|
-
/** Domain-prefixed category — must be a known built-in category */
|
|
2449
2417
|
category: z2.enum(CATEGORIES),
|
|
2450
2418
|
/**
|
|
2451
2419
|
* Kebab-case short key — must be a known built-in slug, unless the file declares
|
|
@@ -2456,9 +2424,7 @@ var metadataValidationSchema = skillMetadataBaseSchema.extend({
|
|
|
2456
2424
|
})
|
|
2457
2425
|
}).strict();
|
|
2458
2426
|
var customMetadataValidationSchema = skillMetadataBaseSchema.extend({
|
|
2459
|
-
/** Any string category — custom skills may define their own categories */
|
|
2460
2427
|
category: z2.string(),
|
|
2461
|
-
/** Kebab-case short key for alias resolution, search, and relationship rules */
|
|
2462
2428
|
slug: z2.string().regex(KEBAB_CASE_PATTERN).min(1).max(50)
|
|
2463
2429
|
});
|
|
2464
2430
|
var stackSkillAssignmentSchema = z2.object({
|
|
@@ -2467,45 +2433,31 @@ var stackSkillAssignmentSchema = z2.object({
|
|
|
2467
2433
|
preloaded: z2.boolean().exactOptional()
|
|
2468
2434
|
}).strict();
|
|
2469
2435
|
var stackConfigValidationSchema = z2.object({
|
|
2470
|
-
/** Unique stack identifier in kebab-case */
|
|
2471
2436
|
id: z2.string().regex(KEBAB_CASE_PATTERN).exactOptional(),
|
|
2472
2437
|
name: z2.string().min(1),
|
|
2473
2438
|
version: z2.string(),
|
|
2474
2439
|
author: z2.string().min(1),
|
|
2475
2440
|
description: z2.string().exactOptional(),
|
|
2476
|
-
/** ISO date when this stack was first created */
|
|
2477
2441
|
created: z2.string().exactOptional(),
|
|
2478
|
-
/** ISO date of last update */
|
|
2479
2442
|
updated: z2.string().exactOptional(),
|
|
2480
|
-
/** Primary framework this stack is designed for (e.g., "nextjs", "remix") */
|
|
2481
2443
|
framework: z2.string().exactOptional(),
|
|
2482
|
-
/** All skills used in this stack (flat list, at least one required) */
|
|
2483
2444
|
skills: z2.array(stackSkillAssignmentSchema).min(1),
|
|
2484
|
-
/** Agent IDs this stack compiles (at least one required) */
|
|
2485
2445
|
agents: z2.array(z2.string().regex(KEBAB_CASE_PATTERN)).min(1),
|
|
2486
|
-
/** Per-agent skill assignments: { agentId: { category: [skillAssignment] } } */
|
|
2487
2446
|
agentSkills: z2.record(z2.string(), z2.record(z2.string(), z2.array(stackSkillAssignmentSchema))).exactOptional(),
|
|
2488
|
-
/** High-level philosophy guiding technology choices */
|
|
2489
2447
|
philosophy: z2.string().exactOptional(),
|
|
2490
|
-
/** Guiding principles for agents using this stack */
|
|
2491
2448
|
principles: z2.array(z2.string().min(1)).exactOptional(),
|
|
2492
2449
|
tags: z2.array(z2.string().regex(KEBAB_CASE_PATTERN)).exactOptional(),
|
|
2493
|
-
/** Per-skill overrides: alternative suggestions and lock status */
|
|
2494
2450
|
overrides: z2.record(
|
|
2495
2451
|
z2.string(),
|
|
2496
2452
|
z2.object({
|
|
2497
|
-
/** Suggested alternative skill IDs if this one is swapped */
|
|
2498
2453
|
alternatives: z2.array(z2.string().min(1)).exactOptional(),
|
|
2499
|
-
/** If true, this skill cannot be swapped by the user */
|
|
2500
2454
|
locked: z2.boolean().exactOptional()
|
|
2501
2455
|
}).strict()
|
|
2502
2456
|
).exactOptional(),
|
|
2503
|
-
/** Community metrics for sorting/ranking */
|
|
2504
2457
|
metrics: z2.object({
|
|
2505
2458
|
upvotes: z2.number().int().min(0).exactOptional(),
|
|
2506
2459
|
downloads: z2.number().int().min(0).exactOptional()
|
|
2507
2460
|
}).strict().exactOptional(),
|
|
2508
|
-
/** Lifecycle hooks triggered by file changes or commands */
|
|
2509
2461
|
hooks: strictHooksRecordSchema.exactOptional()
|
|
2510
2462
|
}).strict();
|
|
2511
2463
|
function formatZodIssues(issues) {
|
|
@@ -2999,6 +2951,9 @@ function isSameMarketplace(a, b, fromDir) {
|
|
|
2999
2951
|
return a === b;
|
|
3000
2952
|
}
|
|
3001
2953
|
|
|
2954
|
+
// src/cli/lib/compile-seat.ts
|
|
2955
|
+
seatDiagnostics({ warn, verbose });
|
|
2956
|
+
|
|
3002
2957
|
// ../compile/src/seed-to-config.ts
|
|
3003
2958
|
import { groupBy, indexBy, omit as omit2, partition as partition2 } from "remeda";
|
|
3004
2959
|
|
|
@@ -3196,6 +3151,7 @@ var CANONICAL_AGENT_ENTRY_ORDER = [
|
|
|
3196
3151
|
"name",
|
|
3197
3152
|
"scope",
|
|
3198
3153
|
"model",
|
|
3154
|
+
"codexModel",
|
|
3199
3155
|
"effort",
|
|
3200
3156
|
"excluded"
|
|
3201
3157
|
];
|
|
@@ -3329,7 +3285,6 @@ function generateProjectConfigWithGlobalImport(cleaned, globalImportPath) {
|
|
|
3329
3285
|
const hasProjectDomains = selectedDomains.length > 0;
|
|
3330
3286
|
const hasStack = stack != null && Object.keys(stack).length > 0;
|
|
3331
3287
|
const typeImports = buildTypeImports({
|
|
3332
|
-
// Always present, spread from global.
|
|
3333
3288
|
hasSkills: true,
|
|
3334
3289
|
hasAgents: true,
|
|
3335
3290
|
hasStack,
|
|
@@ -3989,9 +3944,23 @@ function agentScopeConfig(name, entry) {
|
|
|
3989
3944
|
name,
|
|
3990
3945
|
scope: seedAgentScope(entry),
|
|
3991
3946
|
...entry?.model !== void 0 && { model: entry.model },
|
|
3947
|
+
...offeredCodexModel(name, entry?.codexModel),
|
|
3992
3948
|
...entry?.effort !== void 0 && { effort: entry.effort }
|
|
3993
3949
|
};
|
|
3994
3950
|
}
|
|
3951
|
+
var OFFERED_CODEX_MODELS = new Set(CODEX_MODEL_NAMES);
|
|
3952
|
+
function isOfferedCodexModel(id) {
|
|
3953
|
+
return OFFERED_CODEX_MODELS.has(id);
|
|
3954
|
+
}
|
|
3955
|
+
function offeredCodexModel(agent, id) {
|
|
3956
|
+
if (id === void 0) return {};
|
|
3957
|
+
if (isOfferedCodexModel(id)) return { codexModel: id };
|
|
3958
|
+
diagnostics().warn(codexModelNotOfferedWarning(agent, id));
|
|
3959
|
+
return {};
|
|
3960
|
+
}
|
|
3961
|
+
function codexModelNotOfferedWarning(agent, id) {
|
|
3962
|
+
return `Sub-agent '${agent}' asks for Codex model '${id}', which this version of the CLI does not offer, so it runs on the session's model. Offered: ${inAnEnglishList(CODEX_MODEL_NAMES)}.`;
|
|
3963
|
+
}
|
|
3995
3964
|
function unwritableAssignmentsError(assignments) {
|
|
3996
3965
|
return [
|
|
3997
3966
|
"This configuration cannot be installed: a project-scoped skill never reaches a sub-agent that rests at global scope, so these assignments have nowhere to be written:",
|
|
@@ -4021,7 +3990,6 @@ function seedToWizardResult(payload, catalog) {
|
|
|
4021
3990
|
skills.push({
|
|
4022
3991
|
id,
|
|
4023
3992
|
scope: entry.scope,
|
|
4024
|
-
// "eject" is an origin in its own right; anything else names the marketplace it came from.
|
|
4025
3993
|
origin: entry.install === "eject" ? EJECT_SOURCE : sourceForSkill(skill)
|
|
4026
3994
|
});
|
|
4027
3995
|
for (const [agentName, load] of Object.entries(entry.assignments)) {
|
|
@@ -4062,22 +4030,16 @@ function seedToWizardResult(payload, catalog) {
|
|
|
4062
4030
|
),
|
|
4063
4031
|
assignedStack,
|
|
4064
4032
|
selectedStackId: payload.stackId,
|
|
4065
|
-
//
|
|
4066
|
-
// are different files on disk: a config describing itself with no key is not one describing
|
|
4067
|
-
// itself with an empty sentence, and the writer emits whichever key it is handed.
|
|
4033
|
+
// Absent and empty are different files on disk.
|
|
4068
4034
|
...payload.description !== void 0 && {
|
|
4069
4035
|
description: payload.description
|
|
4070
4036
|
},
|
|
4071
4037
|
domainSelections,
|
|
4072
4038
|
selectedDomains: orderDomains(typedKeys2(domainSelections)),
|
|
4073
|
-
//
|
|
4074
|
-
// reported to the user directly, so there is no config removal to explain.
|
|
4039
|
+
// The skipped ids came off the wire and are reported directly; no saved entry was removed.
|
|
4075
4040
|
unresolvableSkillIds: [],
|
|
4076
4041
|
cancelled: false,
|
|
4077
|
-
// Revalidated
|
|
4078
|
-
// validated against ITS catalog; this one skips ids it does not know and carries its own
|
|
4079
|
-
// relationship rules, so a configuration that was consistent where it was authored can
|
|
4080
|
-
// arrive with a requirement genuinely unmet.
|
|
4042
|
+
// Revalidated: the payload was consistent against the authoring app's catalog, not this one.
|
|
4081
4043
|
validation: validateSelection(
|
|
4082
4044
|
skills.map((skill) => skill.id),
|
|
4083
4045
|
catalog
|
|
@@ -4461,6 +4423,7 @@ export type AgentScopeConfig = {
|
|
|
4461
4423
|
name: AgentName
|
|
4462
4424
|
scope: 'project' | 'global'
|
|
4463
4425
|
model?: ${formatLiteralUnion(MODEL_NAMES)}
|
|
4426
|
+
codexModel?: ${formatLiteralUnion(CODEX_MODEL_NAMES)}
|
|
4464
4427
|
effort?: ${formatLiteralUnion(EFFORT_NAMES)}
|
|
4465
4428
|
excluded?: boolean
|
|
4466
4429
|
}
|
|
@@ -4612,9 +4575,8 @@ function renderStackProperty(category, skills, catalog) {
|
|
|
4612
4575
|
function buildSkillsByCategory(skillIds, categories, catalog) {
|
|
4613
4576
|
const categorySet = new Set(categories);
|
|
4614
4577
|
const eligible = [...new Set(skillIds)].map((id) => ({ id, category: catalog.skills[id]?.category })).filter(
|
|
4615
|
-
(entry) => entry.category !== void 0 && entry.category !== LOCAL_PSEUDO_CATEGORY && // Boundary cast:
|
|
4616
|
-
//
|
|
4617
|
-
// runtime check the predicate rests on, so the cast only lets the probe be written.
|
|
4578
|
+
(entry) => entry.category !== void 0 && entry.category !== LOCAL_PSEUDO_CATEGORY && // Boundary cast: typed `string` on the narrow catalogue shape; the `has` is the runtime
|
|
4579
|
+
// check.
|
|
4618
4580
|
categorySet.has(entry.category)
|
|
4619
4581
|
);
|
|
4620
4582
|
return new Map(
|
|
@@ -6123,11 +6085,10 @@ function assembleAgentConfig(agentName, definition, agentConfig, resolvedSkills)
|
|
|
6123
6085
|
title: definition.title,
|
|
6124
6086
|
description: definition.description,
|
|
6125
6087
|
...model !== void 0 && { model },
|
|
6088
|
+
...agentConfig.codexModel !== void 0 && { codexModel: agentConfig.codexModel },
|
|
6126
6089
|
...effort !== void 0 && { effort },
|
|
6127
6090
|
tools: definition.tools,
|
|
6128
|
-
//
|
|
6129
|
-
// than unconditionally, because the template branches on presence — an explicit
|
|
6130
|
-
// `undefined` renders as an empty key.
|
|
6091
|
+
// Spread conditionally: the template branches on presence, and `undefined` renders a key.
|
|
6131
6092
|
...definition.disallowedTools !== void 0 && {
|
|
6132
6093
|
disallowedTools: definition.disallowedTools
|
|
6133
6094
|
},
|
|
@@ -6292,6 +6253,7 @@ function buildCompileAgents(config, agents) {
|
|
|
6292
6253
|
const buildAgentCompileEntry = (agentConfig) => {
|
|
6293
6254
|
const tuning = {
|
|
6294
6255
|
...agentConfig.model !== void 0 && { model: agentConfig.model },
|
|
6256
|
+
...agentConfig.codexModel !== void 0 && { codexModel: agentConfig.codexModel },
|
|
6295
6257
|
...agentConfig.effort !== void 0 && { effort: agentConfig.effort }
|
|
6296
6258
|
};
|
|
6297
6259
|
const agentStack = config.stack?.[agentConfig.name];
|
|
@@ -10762,4 +10724,4 @@ export {
|
|
|
10762
10724
|
detectMigrations,
|
|
10763
10725
|
executeMigration
|
|
10764
10726
|
};
|
|
10765
|
-
//# sourceMappingURL=chunk-
|
|
10727
|
+
//# sourceMappingURL=chunk-C2UISKIM.js.map
|