@ai-outfitter/outfitter 1.13.0 → 1.15.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/README.md +4 -1
- package/code/pi-extension/src/outfitter-extension.js +2 -2
- package/dist/cli/OutfitterCli.js +2 -0
- package/dist/cli/OutfitterCli.js.map +1 -1
- package/dist/cli/commands/DumpCommand.js +17 -4
- package/dist/cli/commands/DumpCommand.js.map +1 -1
- package/dist/cli/commands/LinkCommand.d.ts +27 -0
- package/dist/cli/commands/LinkCommand.js +137 -0
- package/dist/cli/commands/LinkCommand.js.map +1 -0
- package/dist/cli/commands/ListCommand.js +8 -2
- package/dist/cli/commands/ListCommand.js.map +1 -1
- package/dist/cli/commands/RunAgentCommand.js +6 -1
- package/dist/cli/commands/RunAgentCommand.js.map +1 -1
- package/dist/cli/commands/ValidateCommand.js +5 -2
- package/dist/cli/commands/ValidateCommand.js.map +1 -1
- package/dist/cli.js +14 -6
- package/dist/cli.js.map +1 -1
- package/dist/composer/Chain.d.ts +10 -0
- package/dist/composer/Chain.js +47 -0
- package/dist/composer/Chain.js.map +1 -0
- package/dist/composer/Composer.d.ts +6 -0
- package/dist/composer/Composer.js +42 -141
- package/dist/composer/Composer.js.map +1 -1
- package/dist/composer/Composition.d.ts +16 -0
- package/dist/composer/Defaults.d.ts +33 -0
- package/dist/composer/Defaults.js +103 -0
- package/dist/composer/Defaults.js.map +1 -0
- package/dist/composer/Mcp.d.ts +3 -0
- package/dist/composer/Mcp.js +68 -0
- package/dist/composer/Mcp.js.map +1 -0
- package/dist/dump/Dump.d.ts +2 -1
- package/dist/dump/Dump.js +67 -4
- package/dist/dump/Dump.js.map +1 -1
- package/dist/dump/WorkflowDump.d.ts +9 -1
- package/dist/dump/WorkflowDump.js +4 -3
- package/dist/dump/WorkflowDump.js.map +1 -1
- package/dist/links/HarnessHome.d.ts +15 -0
- package/dist/links/HarnessHome.js +23 -0
- package/dist/links/HarnessHome.js.map +1 -0
- package/dist/links/HarnessLinkApply.d.ts +26 -0
- package/dist/links/HarnessLinkApply.js +356 -0
- package/dist/links/HarnessLinkApply.js.map +1 -0
- package/dist/links/HarnessLinkPlan.d.ts +70 -0
- package/dist/links/HarnessLinkPlan.js +224 -0
- package/dist/links/HarnessLinkPlan.js.map +1 -0
- package/dist/links/HarnessMcp.d.ts +9 -0
- package/dist/links/HarnessMcp.js +67 -0
- package/dist/links/HarnessMcp.js.map +1 -0
- package/dist/projection/CodexSettings.d.ts +3 -0
- package/dist/projection/CodexSettings.js +17 -0
- package/dist/projection/CodexSettings.js.map +1 -0
- package/dist/projection/Materialize.d.ts +20 -2
- package/dist/projection/Materialize.js +66 -33
- package/dist/projection/Materialize.js.map +1 -1
- package/dist/projection/ProjectHarness.js +58 -14
- package/dist/projection/ProjectHarness.js.map +1 -1
- package/dist/projection/Projection.d.ts +3 -1
- package/dist/resolver/ResolverValidation.d.ts +7 -0
- package/dist/resolver/ResolverValidation.js +46 -14
- package/dist/resolver/ResolverValidation.js.map +1 -1
- package/dist/schemas/settings.schema.json +54 -1
- package/dist/settings/Settings.d.ts +24 -0
- package/dist/settings/Settings.js +15 -0
- package/dist/settings/Settings.js.map +1 -1
- package/dist/settings/SettingsLoader.js +18 -0
- package/dist/settings/SettingsLoader.js.map +1 -1
- package/dist/settings/SettingsMerger.js +43 -0
- package/dist/settings/SettingsMerger.js.map +1 -1
- package/dist/setup/DefaultCatalog.d.ts +4 -2
- package/dist/setup/DefaultCatalog.js +5 -3
- package/dist/setup/DefaultCatalog.js.map +1 -1
- package/dist/setup/Setup.js +34 -12
- package/dist/setup/Setup.js.map +1 -1
- package/dist/version/NodeVersionGuard.d.ts +13 -0
- package/dist/version/NodeVersionGuard.js +50 -0
- package/dist/version/NodeVersionGuard.js.map +1 -0
- package/docs/architecture/state_writeback_strategy.md +1 -1
- package/docs/documentation/README.md +1 -1
- package/docs/documentation/cli.md +35 -1
- package/docs/documentation/conventions.md +1 -1
- package/docs/documentation/getting-started.md +4 -2
- package/docs/documentation/linking-harnesses.md +88 -0
- package/docs/documentation/local-development.md +5 -7
- package/docs/documentation/migration.md +1 -1
- package/docs/documentation/settings.md +75 -4
- package/docs/documentation/state.md +1 -1
- package/docs/documentation/support-matrix.md +3 -1
- package/docs/documentation/switching-to-outfitter.md +1 -1
- package/docs/documentation/usecases/shared-conventions.md +1 -1
- package/package.json +2 -1
- package/src/schemas/settings.schema.json +54 -1
- package/docs/documentation/porting-claude.md +0 -58
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Chain.js","sourceRoot":"","sources":["../../src/composer/Chain.ts"],"names":[],"mappings":"AAAA,oGAAoG;AACpG,OAAO,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAG7F,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAOvD,MAAM,cAAc,GAAG,CAAC,KAAuB,EAA4B,EAAE;IAC3E,MAAM,UAAU,GAAG,mBAAmB,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;IAC7E,IAAI,sBAAsB,CAAC,UAAU,CAAC;QAAE,OAAO,UAAU,CAAC,OAAO,CAAC;IAClE,IAAI,UAAU,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI;QAAE,OAAO,kBAAkB,UAAU,CAAC,IAAI,6BAA6B,CAAC;IAC1G,OAAO,UAAU,CAAC;AACpB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,uBAAuB,GAAG,CACrC,GAAyB,EACzB,SAAiB,EAC+C,EAAE;IAClE,MAAM,OAAO,GAAiB,EAAE,CAAC;IACjC,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;IACnC,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,MAAM,KAAK,GAAG,CAAC,IAAY,EAAQ,EAAE;QACnC,IAAI,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,OAAO;QAC/B,MAAM,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC1C,IAAI,UAAU,KAAK,CAAC,CAAC,EAAE,CAAC;YACtB,MAAM,CAAC,IAAI,CAAC,qCAAqC,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACxG,OAAO;QACT,CAAC;QAED,MAAM,QAAQ,GAAG,YAAY,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;QAClD,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,MAAM,CAAC,IAAI,CACT,gDAAgD,IAAI,cAAc,CAAC,GAAG,QAAQ,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CACtG,CAAC;YACF,OAAO;QACT,CAAC;QAED,MAAM,UAAU,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;QAC5C,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE,CAAC;YACnC,MAAM,CAAC,IAAI,CAAC,UAAU,IAAI,iBAAiB,UAAU,EAAE,CAAC,CAAC;YACzD,OAAO;QACT,CAAC;QAED,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpB,KAAK,MAAM,MAAM,IAAI,UAAU,CAAC,QAAQ;YAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QACxD,QAAQ,CAAC,GAAG,EAAE,CAAC;QAEf,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YACxB,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACnB,OAAO,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC,CAAC;QACzC,CAAC;IACH,CAAC,CAAC;IAEF,KAAK,CAAC,SAAS,CAAC,CAAC;IACjB,OAAO,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;AAClE,CAAC,CAAC"}
|
|
@@ -1,8 +1,14 @@
|
|
|
1
1
|
import type { EffectiveResourceSet } from '../resolver/Resource.js';
|
|
2
|
+
import type { AgentDefaults } from '../settings/Settings.js';
|
|
2
3
|
import type { CompositionPlan } from './Composition.js';
|
|
3
4
|
export interface ComposeOptions {
|
|
4
5
|
/** Active repository root for `repo_file` prompt references. */
|
|
5
6
|
readonly projectDirectory?: string;
|
|
7
|
+
/**
|
|
8
|
+
* Settings-layer (`agent_defaults`) loadout entries composed into the agent ahead of its own
|
|
9
|
+
* inheritance chain. Absent or empty defaults leave composition byte-identical to no settings.
|
|
10
|
+
*/
|
|
11
|
+
readonly agentDefaults?: AgentDefaults;
|
|
6
12
|
}
|
|
7
13
|
export interface ComposeResult {
|
|
8
14
|
readonly plan?: CompositionPlan;
|
|
@@ -2,8 +2,10 @@
|
|
|
2
2
|
import { existsSync, readFileSync } from 'node:fs';
|
|
3
3
|
import { join } from 'node:path';
|
|
4
4
|
import { escapesRoots } from '../dump/Containment.js';
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
5
|
+
import { findResource } from '../resolver/Resource.js';
|
|
6
|
+
import { resolveInheritanceChain } from './Chain.js';
|
|
7
|
+
import { SETTINGS_DEFAULTS_DECLARER, mergePromptSelections, mergeSelections, planAgentDefaults, resolveDeclaredSlugs, resolveSettingsPromptSelection, settingsPromptSelections, settingsSelections, } from './Defaults.js';
|
|
8
|
+
import { composeMcpServers } from './Mcp.js';
|
|
7
9
|
import { resolveModelRegistry } from './Models.js';
|
|
8
10
|
import { agentBodyFragment, promptSourceKey, resolvePromptSource, rootPromptFragment } from './PromptSource.js';
|
|
9
11
|
/** Reads the highest-precedence tree-root file (e.g. system-prompt.md) across layers, or undefined. */
|
|
@@ -16,49 +18,6 @@ const readRootFile = (set, fileName) => {
|
|
|
16
18
|
}
|
|
17
19
|
return undefined;
|
|
18
20
|
};
|
|
19
|
-
const readValidAgent = (agent) => {
|
|
20
|
-
const definition = readAgentDefinition(agent.winner.path, agent.configPaths);
|
|
21
|
-
if (isAgentDefinitionIssue(definition))
|
|
22
|
-
return definition.message;
|
|
23
|
-
if (definition.name !== agent.slug)
|
|
24
|
-
return `agent.md name '${definition.name}' must match its directory.`;
|
|
25
|
-
return definition;
|
|
26
|
-
};
|
|
27
|
-
const resolveInheritanceChain = (set, agentSlug) => {
|
|
28
|
-
const entries = [];
|
|
29
|
-
const composed = new Set();
|
|
30
|
-
const visiting = [];
|
|
31
|
-
const errors = [];
|
|
32
|
-
const visit = (slug) => {
|
|
33
|
-
if (composed.has(slug))
|
|
34
|
-
return;
|
|
35
|
-
const cycleIndex = visiting.indexOf(slug);
|
|
36
|
-
if (cycleIndex !== -1) {
|
|
37
|
-
errors.push(`Agent inheritance cycle detected: ${[...visiting.slice(cycleIndex), slug].join(' -> ')}.`);
|
|
38
|
-
return;
|
|
39
|
-
}
|
|
40
|
-
const resource = findResource(set, 'agent', slug);
|
|
41
|
-
if (resource === undefined) {
|
|
42
|
-
errors.push(`Agent inheritance references unknown parent '${slug}' in chain ${[...visiting, slug].join(' -> ')}.`);
|
|
43
|
-
return;
|
|
44
|
-
}
|
|
45
|
-
const definition = readValidAgent(resource);
|
|
46
|
-
if (typeof definition === 'string') {
|
|
47
|
-
errors.push(`Agent '${slug}' is invalid: ${definition}`);
|
|
48
|
-
return;
|
|
49
|
-
}
|
|
50
|
-
visiting.push(slug);
|
|
51
|
-
for (const parent of definition.inherits)
|
|
52
|
-
visit(parent);
|
|
53
|
-
visiting.pop();
|
|
54
|
-
if (!composed.has(slug)) {
|
|
55
|
-
composed.add(slug);
|
|
56
|
-
entries.push({ resource, definition });
|
|
57
|
-
}
|
|
58
|
-
};
|
|
59
|
-
visit(agentSlug);
|
|
60
|
-
return errors.length > 0 ? { errors } : { entries, errors: [] };
|
|
61
|
-
};
|
|
62
21
|
const stablePush = (items, keySet, key, value) => {
|
|
63
22
|
if (!keySet.has(key)) {
|
|
64
23
|
keySet.add(key);
|
|
@@ -114,17 +73,18 @@ const nearestPrompt = (chain, select) => {
|
|
|
114
73
|
}
|
|
115
74
|
return undefined;
|
|
116
75
|
};
|
|
117
|
-
const composeEffectiveControls = (chain) => {
|
|
118
|
-
|
|
119
|
-
const
|
|
120
|
-
const
|
|
76
|
+
const composeEffectiveControls = (chain, defaults) => {
|
|
77
|
+
// Settings defaults compose ahead of the whole chain, parent-first, like a root-most ancestor.
|
|
78
|
+
const skills = mergeSelections(settingsSelections(defaults?.skills), declaredSelections(chain, (definition) => definition.loadout.skills));
|
|
79
|
+
const subagents = mergeSelections(settingsSelections(defaults?.subagents), declaredSelections(chain, (definition) => definition.loadout.subagents));
|
|
80
|
+
const mcp = mergeSelections(settingsSelections(defaults?.mcp), declaredSelections(chain, (definition) => definition.loadout.mcp));
|
|
121
81
|
const model = nearest(chain, (definition) => definition.loadout.model);
|
|
122
82
|
const thinking = nearest(chain, (definition) => definition.loadout.thinking);
|
|
123
83
|
return {
|
|
124
84
|
skillSelections: skills,
|
|
125
85
|
subagentSelections: subagents,
|
|
126
86
|
mcpSelections: mcp,
|
|
127
|
-
appendPromptSelections: appendPromptSelections(chain),
|
|
87
|
+
appendPromptSelections: mergePromptSelections(settingsPromptSelections(defaults?.appendSystemPrompt), appendPromptSelections(chain)),
|
|
128
88
|
systemPrompt: nearestPrompt(chain, (definition) => definition.promptControls.systemPrompt),
|
|
129
89
|
promptTemplate: nearestPrompt(chain, (definition) => definition.promptControls.promptTemplate),
|
|
130
90
|
label: nearest(chain, (definition) => definition.label),
|
|
@@ -133,90 +93,21 @@ const composeEffectiveControls = (chain) => {
|
|
|
133
93
|
skills: skills.map((selection) => selection.slug),
|
|
134
94
|
subagents: subagents.map((selection) => selection.slug),
|
|
135
95
|
mcp: mcp.map((selection) => selection.slug),
|
|
136
|
-
extensions: uniqueStrings(
|
|
137
|
-
|
|
96
|
+
extensions: uniqueStrings([
|
|
97
|
+
...(defaults?.extensions ?? []),
|
|
98
|
+
...chain.flatMap((entry) => entry.definition.loadout.extensions),
|
|
99
|
+
]),
|
|
100
|
+
plugins: uniqueStrings([
|
|
101
|
+
...(defaults?.plugins ?? []),
|
|
102
|
+
...chain.flatMap((entry) => entry.definition.loadout.plugins),
|
|
103
|
+
]),
|
|
138
104
|
model,
|
|
139
105
|
thinking,
|
|
140
106
|
tools: composeTools(chain),
|
|
141
107
|
},
|
|
142
108
|
};
|
|
143
109
|
};
|
|
144
|
-
const
|
|
145
|
-
const resolved = [];
|
|
146
|
-
for (const selection of selections) {
|
|
147
|
-
const resource = findLoadoutResource(set, selection.owner, kind, selection.slug);
|
|
148
|
-
if (resource === undefined) {
|
|
149
|
-
warnings.push(`${reference} references unknown ${kind} '${selection.slug}'.`);
|
|
150
|
-
}
|
|
151
|
-
else {
|
|
152
|
-
resolved.push(resource);
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
|
-
return resolved;
|
|
156
|
-
};
|
|
157
|
-
const asRecord = (value) => value !== null && typeof value === 'object' && !Array.isArray(value) ? value : undefined;
|
|
158
|
-
const readMcpServers = (path, warnings) => {
|
|
159
|
-
let parsed;
|
|
160
|
-
try {
|
|
161
|
-
parsed = JSON.parse(readFileSync(path, 'utf8'));
|
|
162
|
-
}
|
|
163
|
-
catch (error) {
|
|
164
|
-
warnings.push(`MCP configuration '${path}' is not readable JSON: ${String(error)}`);
|
|
165
|
-
return {};
|
|
166
|
-
}
|
|
167
|
-
const document = asRecord(parsed);
|
|
168
|
-
const servers = document === undefined ? undefined : asRecord(document.mcpServers);
|
|
169
|
-
if (servers === undefined) {
|
|
170
|
-
warnings.push(`MCP configuration '${path}' must contain an object-valued 'mcpServers' map.`);
|
|
171
|
-
return {};
|
|
172
|
-
}
|
|
173
|
-
return servers;
|
|
174
|
-
};
|
|
175
|
-
const composeMcpServers = (set, selections, warnings) => {
|
|
176
|
-
if (selections.length === 0)
|
|
177
|
-
return {};
|
|
178
|
-
const rootPaths = set.layers.map((layer) => join(layer.root, 'mcp.json')).filter((path) => existsSync(path));
|
|
179
|
-
const roots = set.layers.map((layer) => layer.root);
|
|
180
|
-
const cache = new Map();
|
|
181
|
-
const serversAt = (path) => {
|
|
182
|
-
const cached = cache.get(path);
|
|
183
|
-
if (cached !== undefined)
|
|
184
|
-
return cached;
|
|
185
|
-
let servers;
|
|
186
|
-
if (escapesRoots(path, roots)) {
|
|
187
|
-
warnings.push(`MCP configuration '${path}' resolves outside the resource layers and was skipped.`);
|
|
188
|
-
servers = {};
|
|
189
|
-
}
|
|
190
|
-
else {
|
|
191
|
-
servers = readMcpServers(path, warnings);
|
|
192
|
-
}
|
|
193
|
-
cache.set(path, servers);
|
|
194
|
-
return servers;
|
|
195
|
-
};
|
|
196
|
-
const selected = {};
|
|
197
|
-
for (const selection of selections) {
|
|
198
|
-
// MCP selections are created only from entries in the resolved inheritance chain.
|
|
199
|
-
const owner = findResource(set, 'agent', selection.owner);
|
|
200
|
-
// Root definitions are shared; only the declaring agent's overlays may override its selection.
|
|
201
|
-
const ownerPaths = [...owner.mcpPaths].reverse();
|
|
202
|
-
const pathsByPrecedence = [...rootPaths].reverse().concat(ownerPaths);
|
|
203
|
-
let definition;
|
|
204
|
-
let found = false;
|
|
205
|
-
for (const path of pathsByPrecedence) {
|
|
206
|
-
const servers = serversAt(path);
|
|
207
|
-
if (Object.hasOwn(servers, selection.slug)) {
|
|
208
|
-
definition = servers[selection.slug];
|
|
209
|
-
found = true;
|
|
210
|
-
}
|
|
211
|
-
}
|
|
212
|
-
if (found)
|
|
213
|
-
selected[selection.slug] = definition;
|
|
214
|
-
else
|
|
215
|
-
warnings.push(`loadout mcp references unknown server '${selection.slug}'.`);
|
|
216
|
-
}
|
|
217
|
-
return selected;
|
|
218
|
-
};
|
|
219
|
-
const resolveDelegateSkills = (set, subagents, leaderSkills, warnings) => {
|
|
110
|
+
const resolveDelegateSkills = (set, subagents, leaderSkills, defaults, warnings) => {
|
|
220
111
|
const skills = new Map(leaderSkills.map((skill) => [skill.slug, skill]));
|
|
221
112
|
const delegateSkills = [];
|
|
222
113
|
const roots = set.layers.map((layer) => layer.root);
|
|
@@ -228,8 +119,8 @@ const resolveDelegateSkills = (set, subagents, leaderSkills, warnings) => {
|
|
|
228
119
|
const chain = resolveInheritanceChain(set, subagent.slug);
|
|
229
120
|
if (chain.entries === undefined)
|
|
230
121
|
continue;
|
|
231
|
-
const controls = composeEffectiveControls(chain.entries);
|
|
232
|
-
for (const skill of resolveDeclaredSlugs(set, 'skill', `subagent '${subagent.slug}'
|
|
122
|
+
const controls = composeEffectiveControls(chain.entries, defaults);
|
|
123
|
+
for (const skill of resolveDeclaredSlugs(set, 'skill', controls.skillSelections, warnings, `subagent '${subagent.slug}' `)) {
|
|
233
124
|
const selected = skills.get(skill.slug);
|
|
234
125
|
if (selected === undefined) {
|
|
235
126
|
skills.set(skill.slug, skill);
|
|
@@ -242,12 +133,12 @@ const resolveDelegateSkills = (set, subagents, leaderSkills, warnings) => {
|
|
|
242
133
|
}
|
|
243
134
|
return delegateSkills;
|
|
244
135
|
};
|
|
245
|
-
const composeLoadout = (set, controls, warnings) => {
|
|
246
|
-
const subagents = resolveDeclaredSlugs(set, 'agent',
|
|
247
|
-
const skills = resolveDeclaredSlugs(set, 'skill',
|
|
136
|
+
const composeLoadout = (set, controls, defaults, warnings) => {
|
|
137
|
+
const subagents = resolveDeclaredSlugs(set, 'agent', controls.subagentSelections, warnings);
|
|
138
|
+
const skills = resolveDeclaredSlugs(set, 'skill', controls.skillSelections, warnings);
|
|
248
139
|
return {
|
|
249
140
|
skills,
|
|
250
|
-
delegateSkills: resolveDelegateSkills(set, subagents, skills, warnings),
|
|
141
|
+
delegateSkills: resolveDelegateSkills(set, subagents, skills, defaults, warnings),
|
|
251
142
|
subagents,
|
|
252
143
|
mcp: controls.loadout.mcp,
|
|
253
144
|
mcpServers: composeMcpServers(set, controls.mcpSelections, warnings),
|
|
@@ -259,7 +150,10 @@ const composeLoadout = (set, controls, warnings) => {
|
|
|
259
150
|
};
|
|
260
151
|
};
|
|
261
152
|
const resolvePromptSelection = (set, selection, options, label, warnings, errors) => {
|
|
262
|
-
|
|
153
|
+
if (selection.owner === undefined) {
|
|
154
|
+
return resolveSettingsPromptSelection(set, selection, options.projectDirectory, label, warnings, errors);
|
|
155
|
+
}
|
|
156
|
+
// Prompt selections from the chain resolve in their declaring agent's namespace.
|
|
263
157
|
const owner = findResource(set, 'agent', selection.owner);
|
|
264
158
|
const resolved = resolvePromptSource({
|
|
265
159
|
source: selection.source,
|
|
@@ -275,7 +169,11 @@ const resolvePromptSelection = (set, selection, options, label, warnings, errors
|
|
|
275
169
|
errors.push(resolved.error);
|
|
276
170
|
return resolved.fragment;
|
|
277
171
|
};
|
|
278
|
-
const resolveOptionalPrompt = (set, selection, options, label, warnings, errors) =>
|
|
172
|
+
const resolveOptionalPrompt = (set, selection, options, label, warnings, errors) =>
|
|
173
|
+
// The fixed role label carries the provenance here; the index is never part of it.
|
|
174
|
+
selection === undefined
|
|
175
|
+
? undefined
|
|
176
|
+
: resolvePromptSelection(set, { ...selection, index: 0 }, options, label, warnings, errors);
|
|
279
177
|
const composeIdentity = (set, chain, controls, options, warnings, errors) => {
|
|
280
178
|
const declaredSystemPrompt = resolveOptionalPrompt(set, controls.systemPrompt, options, 'system-prompt', warnings, errors);
|
|
281
179
|
if (declaredSystemPrompt?.kind === 'repo_file') {
|
|
@@ -284,7 +182,7 @@ const composeIdentity = (set, chain, controls, options, warnings, errors) => {
|
|
|
284
182
|
const systemPrompt = declaredSystemPrompt ?? readRootFile(set, 'system-prompt.md');
|
|
285
183
|
const sharedContext = readRootFile(set, 'agents.md');
|
|
286
184
|
const appendSystemPrompts = controls.appendPromptSelections
|
|
287
|
-
.map((selection) => resolvePromptSelection(set, selection, options, `append-${selection.owner}-${selection.index + 1}`, warnings, errors))
|
|
185
|
+
.map((selection) => resolvePromptSelection(set, selection, options, `append-${selection.owner ?? SETTINGS_DEFAULTS_DECLARER}-${selection.index + 1}`, warnings, errors))
|
|
288
186
|
.filter((fragment) => fragment !== undefined);
|
|
289
187
|
const promptTemplate = resolveOptionalPrompt(set, controls.promptTemplate, options, 'prompt-template', warnings, errors);
|
|
290
188
|
const agentBodies = chain.map((entry) => agentBodyFragment({
|
|
@@ -318,9 +216,10 @@ const composeSubagents = (set, subagents, options, warnings, errors) => {
|
|
|
318
216
|
errors.push(...chainResult.errors.map((error) => `Subagent '${resource.slug}' is invalid: ${error}`));
|
|
319
217
|
continue;
|
|
320
218
|
}
|
|
321
|
-
|
|
219
|
+
// Delegates are agents too, so settings defaults compose into them ahead of their own chain.
|
|
220
|
+
const controls = composeEffectiveControls(chainResult.entries, options.agentDefaults);
|
|
322
221
|
const identity = composeIdentity(set, chainResult.entries, controls, options, warnings, errors);
|
|
323
|
-
const skills = resolveDeclaredSlugs(set, 'skill', `subagent '${resource.slug}'
|
|
222
|
+
const skills = resolveDeclaredSlugs(set, 'skill', controls.skillSelections, warnings, `subagent '${resource.slug}' `);
|
|
324
223
|
composed.push({
|
|
325
224
|
resource,
|
|
326
225
|
identity,
|
|
@@ -347,14 +246,15 @@ export const compose = (set, agentSlug, options = {}) => {
|
|
|
347
246
|
const chain = chainResult.entries;
|
|
348
247
|
const warnings = [];
|
|
349
248
|
const errors = [];
|
|
350
|
-
const controls = composeEffectiveControls(chain);
|
|
249
|
+
const controls = composeEffectiveControls(chain, options.agentDefaults);
|
|
351
250
|
const identity = composeIdentity(set, chain, controls, options, warnings, errors);
|
|
352
|
-
const loadout = composeLoadout(set, controls, warnings);
|
|
251
|
+
const loadout = composeLoadout(set, controls, options.agentDefaults, warnings);
|
|
353
252
|
const models = resolveModelRegistry(set, loadout.model, warnings, errors);
|
|
354
253
|
const composedSubagents = composeSubagents(set, loadout.subagents, options, warnings, errors);
|
|
355
254
|
const uniqueWarnings = uniqueStrings(warnings);
|
|
356
255
|
if (errors.length > 0)
|
|
357
256
|
return { errors, warnings: uniqueWarnings };
|
|
257
|
+
const agentDefaults = planAgentDefaults(options.agentDefaults);
|
|
358
258
|
return {
|
|
359
259
|
plan: {
|
|
360
260
|
agent: agentSlug,
|
|
@@ -363,6 +263,7 @@ export const compose = (set, agentSlug, options = {}) => {
|
|
|
363
263
|
loadout: { ...loadout, composedSubagents },
|
|
364
264
|
contributingAgents: chain.map((entry) => entry.resource),
|
|
365
265
|
inheritanceChain: chain.map((entry) => entry.resource.slug),
|
|
266
|
+
...(agentDefaults === undefined ? {} : { agentDefaults }),
|
|
366
267
|
warnings: uniqueWarnings,
|
|
367
268
|
},
|
|
368
269
|
errors: [],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Composer.js","sourceRoot":"","sources":["../../src/composer/Composer.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Composer.js","sourceRoot":"","sources":["../../src/composer/Composer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { PromptSourceReference } from './PromptSource.js';
|
|
1
2
|
import type { Loadout, ResolvedResource } from '../resolver/Resource.js';
|
|
2
3
|
import type { EffectiveModelRegistry } from './Models.js';
|
|
3
4
|
import type { PromptFragment } from './PromptSource.js';
|
|
@@ -37,6 +38,19 @@ export interface ComposedSubagent {
|
|
|
37
38
|
readonly thinking?: string;
|
|
38
39
|
readonly tools?: Loadout['tools'];
|
|
39
40
|
}
|
|
41
|
+
/**
|
|
42
|
+
* Settings-layer (`settings.yml:agent_defaults`) entries composed into one agent, as declared.
|
|
43
|
+
* Present on a plan only when the settings layer actually declares defaults, so catalogs without
|
|
44
|
+
* `agent_defaults` compose byte-identical plans.
|
|
45
|
+
*/
|
|
46
|
+
export interface CompositionAgentDefaults {
|
|
47
|
+
readonly extensions?: readonly string[];
|
|
48
|
+
readonly skills?: readonly string[];
|
|
49
|
+
readonly mcp?: readonly string[];
|
|
50
|
+
readonly plugins?: readonly string[];
|
|
51
|
+
readonly subagents?: readonly string[];
|
|
52
|
+
readonly appendSystemPrompt?: readonly PromptSourceReference[];
|
|
53
|
+
}
|
|
40
54
|
/** A loadout with its slug references resolved against the effective set. */
|
|
41
55
|
export interface ComposedLoadout {
|
|
42
56
|
readonly skills: readonly ResolvedResource[];
|
|
@@ -68,6 +82,8 @@ export interface CompositionPlan {
|
|
|
68
82
|
readonly contributingAgents?: readonly ResolvedResource[];
|
|
69
83
|
/** Parent-first chain of agent slugs that contributed to this composition, selected child last. */
|
|
70
84
|
readonly inheritanceChain?: readonly string[];
|
|
85
|
+
/** Settings-layer defaults composed ahead of the inheritance chain, when declared. */
|
|
86
|
+
readonly agentDefaults?: CompositionAgentDefaults;
|
|
71
87
|
/** Non-fatal issues (e.g. unknown loadout slugs) surfaced during composition. */
|
|
72
88
|
readonly warnings: readonly string[];
|
|
73
89
|
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { CompositionAgentDefaults } from './Composition.js';
|
|
2
|
+
import type { PromptFragment, PromptSourceReference } from './PromptSource.js';
|
|
3
|
+
import type { EffectiveResourceSet, ResolvedResource } from '../resolver/Resource.js';
|
|
4
|
+
import type { AgentDefaults } from '../settings/Settings.js';
|
|
5
|
+
/** One declared loadout slug and where it was declared; `owner` is unset for settings defaults. */
|
|
6
|
+
export interface DeclaredSlug {
|
|
7
|
+
readonly slug: string;
|
|
8
|
+
readonly owner?: string;
|
|
9
|
+
}
|
|
10
|
+
export interface PromptSelection {
|
|
11
|
+
readonly source: PromptSourceReference;
|
|
12
|
+
readonly owner?: string;
|
|
13
|
+
/** Position within the declaring surface; append selections number fragments for their labels. */
|
|
14
|
+
readonly index: number;
|
|
15
|
+
}
|
|
16
|
+
/** Provenance label for settings-layer declarations; the colon is unreachable by agent slugs. */
|
|
17
|
+
export declare const SETTINGS_DEFAULTS_DECLARER = "settings:agent_defaults";
|
|
18
|
+
/** Settings-layer selections resolve catalog-wide; chain entries resolve owner-first. */
|
|
19
|
+
export declare const settingsSelections: (slugs: readonly string[] | undefined) => readonly DeclaredSlug[];
|
|
20
|
+
/** Composes selection groups parent-first, collapsing duplicate slugs to their first occurrence. */
|
|
21
|
+
export declare const mergeSelections: (...groups: readonly (readonly DeclaredSlug[])[]) => readonly DeclaredSlug[];
|
|
22
|
+
export declare const settingsPromptSelections: (sources: readonly PromptSourceReference[] | undefined) => readonly PromptSelection[];
|
|
23
|
+
/** Composes prompt-selection groups parent-first, collapsing duplicate sources to their first occurrence. */
|
|
24
|
+
export declare const mergePromptSelections: (...groups: readonly (readonly PromptSelection[])[]) => readonly PromptSelection[];
|
|
25
|
+
/** Resolves a selection where it was declared: settings defaults catalog-wide, chain entries owner-first. */
|
|
26
|
+
export declare const resolveSelectionResource: (set: EffectiveResourceSet, kind: "skill" | "agent", selection: DeclaredSlug) => ResolvedResource | undefined;
|
|
27
|
+
/** Names the declaring layer of a selection so unresolved references point at the right surface. */
|
|
28
|
+
export declare const selectionReference: (kind: "skill" | "agent", selection: DeclaredSlug) => string;
|
|
29
|
+
export declare const resolveDeclaredSlugs: (set: EffectiveResourceSet, kind: "skill" | "agent", selections: readonly DeclaredSlug[], warnings: string[], prefix?: string) => readonly ResolvedResource[];
|
|
30
|
+
/** Resolves one settings-layer prompt source; catalog `file` sources use the first layer that has the file. */
|
|
31
|
+
export declare const resolveSettingsPromptSelection: (set: EffectiveResourceSet, selection: PromptSelection, projectDirectory: string | undefined, label: string, warnings: string[], errors: string[]) => PromptFragment | undefined;
|
|
32
|
+
/** The settings-layer defaults a plan records, present only when the layer actually declares some. */
|
|
33
|
+
export declare const planAgentDefaults: (defaults: AgentDefaults | undefined) => CompositionAgentDefaults | undefined;
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
// Composes settings-layer (`settings.yml:agent_defaults`) entries into an agent's effective loadout.
|
|
2
|
+
// Defaults ride the same deterministic parent-first ordering and stable de-duplication as inherited
|
|
3
|
+
// agent loadouts, resolving catalog-wide ahead of the whole inheritance chain — like a root-most
|
|
4
|
+
// ancestor — while agent-declared entries keep owner-first resolution.
|
|
5
|
+
import { existsSync } from 'node:fs';
|
|
6
|
+
import { join } from 'node:path';
|
|
7
|
+
import { promptSourceKey, resolvePromptSource } from './PromptSource.js';
|
|
8
|
+
import { findLoadoutResource, findResource } from '../resolver/Resource.js';
|
|
9
|
+
import { isEmptyAgentDefaults } from '../settings/Settings.js';
|
|
10
|
+
/** Provenance label for settings-layer declarations; the colon is unreachable by agent slugs. */
|
|
11
|
+
export const SETTINGS_DEFAULTS_DECLARER = 'settings:agent_defaults';
|
|
12
|
+
/** Settings-layer selections resolve catalog-wide; chain entries resolve owner-first. */
|
|
13
|
+
export const settingsSelections = (slugs) => (slugs ?? []).map((slug) => ({ slug, owner: undefined }));
|
|
14
|
+
/** Composes selection groups parent-first, collapsing duplicate slugs to their first occurrence. */
|
|
15
|
+
export const mergeSelections = (...groups) => {
|
|
16
|
+
const selections = [];
|
|
17
|
+
const seen = new Set();
|
|
18
|
+
for (const group of groups) {
|
|
19
|
+
for (const selection of group) {
|
|
20
|
+
if (!seen.has(selection.slug)) {
|
|
21
|
+
seen.add(selection.slug);
|
|
22
|
+
selections.push(selection);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
return selections;
|
|
27
|
+
};
|
|
28
|
+
export const settingsPromptSelections = (sources) => (sources ?? []).map((source, index) => ({ source, owner: undefined, index }));
|
|
29
|
+
/** Composes prompt-selection groups parent-first, collapsing duplicate sources to their first occurrence. */
|
|
30
|
+
export const mergePromptSelections = (...groups) => {
|
|
31
|
+
const selections = [];
|
|
32
|
+
const seen = new Set();
|
|
33
|
+
for (const group of groups) {
|
|
34
|
+
for (const selection of group) {
|
|
35
|
+
const key = promptSourceKey(selection.source);
|
|
36
|
+
if (!seen.has(key)) {
|
|
37
|
+
seen.add(key);
|
|
38
|
+
selections.push(selection);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
return selections;
|
|
43
|
+
};
|
|
44
|
+
/** Resolves a selection where it was declared: settings defaults catalog-wide, chain entries owner-first. */
|
|
45
|
+
export const resolveSelectionResource = (set, kind, selection) => selection.owner === undefined
|
|
46
|
+
? findResource(set, kind, selection.slug)
|
|
47
|
+
: findLoadoutResource(set, selection.owner, kind, selection.slug);
|
|
48
|
+
/** Names the declaring layer of a selection so unresolved references point at the right surface. */
|
|
49
|
+
export const selectionReference = (kind, selection) => {
|
|
50
|
+
const noun = kind === 'agent' ? 'subagents' : `${kind}s`;
|
|
51
|
+
return selection.owner === undefined ? `agent_defaults ${noun}` : `loadout ${noun}`;
|
|
52
|
+
};
|
|
53
|
+
export const resolveDeclaredSlugs = (set, kind, selections, warnings, prefix = '') => {
|
|
54
|
+
const resolved = [];
|
|
55
|
+
for (const selection of selections) {
|
|
56
|
+
const resource = resolveSelectionResource(set, kind, selection);
|
|
57
|
+
if (resource === undefined) {
|
|
58
|
+
warnings.push(`${prefix}${selectionReference(kind, selection)} references unknown ${kind} '${selection.slug}'.`);
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
resolved.push(resource);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
return resolved;
|
|
65
|
+
};
|
|
66
|
+
/** Resolves one settings-layer prompt source; catalog `file` sources use the first layer that has the file. */
|
|
67
|
+
export const resolveSettingsPromptSelection = (set, selection, projectDirectory, label, warnings, errors) => {
|
|
68
|
+
const file = selection.source.file;
|
|
69
|
+
// Highest-precedence layer wins; a file no layer contains falls through to the workspace layer so
|
|
70
|
+
// resolvePromptSource reports the standard missing-file error. Prompt resolution only runs for a
|
|
71
|
+
// resolvable agent, and agents live inside layers, so a layer always exists here.
|
|
72
|
+
const layer = file !== undefined
|
|
73
|
+
? (set.layers.find((candidate) => existsSync(join(candidate.root, file))) ?? set.layers[0])
|
|
74
|
+
: set.layers[0];
|
|
75
|
+
const resolved = resolvePromptSource({
|
|
76
|
+
source: selection.source,
|
|
77
|
+
declaringAgent: SETTINGS_DEFAULTS_DECLARER,
|
|
78
|
+
layer,
|
|
79
|
+
projectDirectory,
|
|
80
|
+
optionalRepoFile: true,
|
|
81
|
+
label,
|
|
82
|
+
});
|
|
83
|
+
if (resolved.warning !== undefined)
|
|
84
|
+
warnings.push(resolved.warning);
|
|
85
|
+
if (resolved.error !== undefined)
|
|
86
|
+
errors.push(resolved.error);
|
|
87
|
+
return resolved.fragment;
|
|
88
|
+
};
|
|
89
|
+
/** The settings-layer defaults a plan records, present only when the layer actually declares some. */
|
|
90
|
+
export const planAgentDefaults = (defaults) => {
|
|
91
|
+
if (defaults === undefined || isEmptyAgentDefaults(defaults))
|
|
92
|
+
return undefined;
|
|
93
|
+
const nonEmpty = (values) => values !== undefined && values.length > 0 ? values : undefined;
|
|
94
|
+
return {
|
|
95
|
+
extensions: nonEmpty(defaults.extensions),
|
|
96
|
+
skills: nonEmpty(defaults.skills),
|
|
97
|
+
mcp: nonEmpty(defaults.mcp),
|
|
98
|
+
plugins: nonEmpty(defaults.plugins),
|
|
99
|
+
subagents: nonEmpty(defaults.subagents),
|
|
100
|
+
appendSystemPrompt: nonEmpty(defaults.appendSystemPrompt),
|
|
101
|
+
};
|
|
102
|
+
};
|
|
103
|
+
//# sourceMappingURL=Defaults.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Defaults.js","sourceRoot":"","sources":["../../src/composer/Defaults.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import type { EffectiveResourceSet } from '../resolver/Resource.js';
|
|
2
|
+
import type { DeclaredSlug } from './Defaults.js';
|
|
3
|
+
export declare const composeMcpServers: (set: EffectiveResourceSet, selections: readonly DeclaredSlug[], warnings: string[]) => Readonly<Record<string, unknown>>;
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
// Resolves selected MCP server ids into their effective definitions, layer- and owner-aware.
|
|
2
|
+
import { existsSync, readFileSync } from 'node:fs';
|
|
3
|
+
import { join } from 'node:path';
|
|
4
|
+
import { escapesRoots } from '../dump/Containment.js';
|
|
5
|
+
import { findResource } from '../resolver/Resource.js';
|
|
6
|
+
const asRecord = (value) => value !== null && typeof value === 'object' && !Array.isArray(value) ? value : undefined;
|
|
7
|
+
const readMcpServers = (path, warnings) => {
|
|
8
|
+
let parsed;
|
|
9
|
+
try {
|
|
10
|
+
parsed = JSON.parse(readFileSync(path, 'utf8'));
|
|
11
|
+
}
|
|
12
|
+
catch (error) {
|
|
13
|
+
warnings.push(`MCP configuration '${path}' is not readable JSON: ${String(error)}`);
|
|
14
|
+
return {};
|
|
15
|
+
}
|
|
16
|
+
const document = asRecord(parsed);
|
|
17
|
+
const servers = document === undefined ? undefined : asRecord(document.mcpServers);
|
|
18
|
+
if (servers === undefined) {
|
|
19
|
+
warnings.push(`MCP configuration '${path}' must contain an object-valued 'mcpServers' map.`);
|
|
20
|
+
return {};
|
|
21
|
+
}
|
|
22
|
+
return servers;
|
|
23
|
+
};
|
|
24
|
+
export const composeMcpServers = (set, selections, warnings) => {
|
|
25
|
+
if (selections.length === 0)
|
|
26
|
+
return {};
|
|
27
|
+
const rootPaths = set.layers.map((layer) => join(layer.root, 'mcp.json')).filter((path) => existsSync(path));
|
|
28
|
+
const roots = set.layers.map((layer) => layer.root);
|
|
29
|
+
const cache = new Map();
|
|
30
|
+
const serversAt = (path) => {
|
|
31
|
+
const cached = cache.get(path);
|
|
32
|
+
if (cached !== undefined)
|
|
33
|
+
return cached;
|
|
34
|
+
let servers;
|
|
35
|
+
if (escapesRoots(path, roots)) {
|
|
36
|
+
warnings.push(`MCP configuration '${path}' resolves outside the resource layers and was skipped.`);
|
|
37
|
+
servers = {};
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
servers = readMcpServers(path, warnings);
|
|
41
|
+
}
|
|
42
|
+
cache.set(path, servers);
|
|
43
|
+
return servers;
|
|
44
|
+
};
|
|
45
|
+
const selected = {};
|
|
46
|
+
for (const selection of selections) {
|
|
47
|
+
// Settings defaults resolve against tree-root mcp.json only; chain entries also consult the
|
|
48
|
+
// declaring agent's overlays. Resolver annotates every agent resource with mcpPaths.
|
|
49
|
+
const ownerPaths = selection.owner === undefined ? [] : [...findResource(set, 'agent', selection.owner).mcpPaths].reverse();
|
|
50
|
+
// Root definitions are shared; only the declaring agent's overlays may override its selection.
|
|
51
|
+
const pathsByPrecedence = [...rootPaths].reverse().concat(ownerPaths);
|
|
52
|
+
let definition;
|
|
53
|
+
let found = false;
|
|
54
|
+
for (const path of pathsByPrecedence) {
|
|
55
|
+
const servers = serversAt(path);
|
|
56
|
+
if (Object.hasOwn(servers, selection.slug)) {
|
|
57
|
+
definition = servers[selection.slug];
|
|
58
|
+
found = true;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
if (found)
|
|
62
|
+
selected[selection.slug] = definition;
|
|
63
|
+
else
|
|
64
|
+
warnings.push(`${selection.owner === undefined ? 'agent_defaults mcp' : 'loadout mcp'} references unknown server '${selection.slug}'.`);
|
|
65
|
+
}
|
|
66
|
+
return selected;
|
|
67
|
+
};
|
|
68
|
+
//# sourceMappingURL=Mcp.js.map
|