@ai-outfitter/outfitter 1.1.2 → 1.2.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.
Files changed (33) hide show
  1. package/dist/cli/commands/DumpCommand.js +1 -1
  2. package/dist/cli/commands/DumpCommand.js.map +1 -1
  3. package/dist/cli/commands/RunAgentCommand.js +5 -3
  4. package/dist/cli/commands/RunAgentCommand.js.map +1 -1
  5. package/dist/cli/commands/ValidateCommand.js +1 -1
  6. package/dist/cli/commands/ValidateCommand.js.map +1 -1
  7. package/dist/composer/Composer.d.ts +7 -5
  8. package/dist/composer/Composer.js +280 -64
  9. package/dist/composer/Composer.js.map +1 -1
  10. package/dist/composer/Composition.d.ts +34 -3
  11. package/dist/composer/PromptSource.d.ts +44 -0
  12. package/dist/composer/PromptSource.js +113 -0
  13. package/dist/composer/PromptSource.js.map +1 -0
  14. package/dist/dump/Dump.d.ts +1 -1
  15. package/dist/dump/Dump.js +111 -20
  16. package/dist/dump/Dump.js.map +1 -1
  17. package/dist/projection/Materialize.d.ts +1 -5
  18. package/dist/projection/Materialize.js +57 -13
  19. package/dist/projection/Materialize.js.map +1 -1
  20. package/dist/projection/ProjectHarness.js +8 -3
  21. package/dist/projection/ProjectHarness.js.map +1 -1
  22. package/dist/resolver/AgentDefinition.d.ts +9 -0
  23. package/dist/resolver/AgentDefinition.js +17 -0
  24. package/dist/resolver/AgentDefinition.js.map +1 -1
  25. package/dist/resolver/ResolverValidation.d.ts +1 -1
  26. package/dist/resolver/ResolverValidation.js +25 -15
  27. package/dist/resolver/ResolverValidation.js.map +1 -1
  28. package/dist/schemas/agent.schema.json +32 -0
  29. package/docs/documentation/agents.md +81 -26
  30. package/docs/documentation/migration.md +18 -9
  31. package/docs/documentation/profiles.md +24 -7
  32. package/package.json +1 -1
  33. package/src/schemas/agent.schema.json +32 -0
@@ -1,22 +1,49 @@
1
1
  import type { Loadout, ResolvedResource } from '../resolver/Resource.js';
2
- /** The composed identity: base prompt, shared context, and the selected agent's body. */
2
+ import type { PromptFragment } from './PromptSource.js';
3
+ /** The composed identity: base prompt, shared context, prompt fragments, and agent bodies. */
3
4
  export interface ComposedIdentity {
4
- /** Content of the winning `system-prompt.md`, if any. */
5
+ /** Content of the effective system prompt, if any. Kept for compatibility with existing callers. */
5
6
  readonly systemPrompt?: string;
7
+ /** Provenance-rich effective system prompt fragment. */
8
+ readonly systemPromptFragment?: PromptFragment;
6
9
  /** Content of the winning `agents.md` shared operating context, if any. */
7
10
  readonly sharedContext?: string;
8
- /** The selected agent's `agent.md` markdown body. */
11
+ readonly sharedContextFragment?: PromptFragment;
12
+ /** Effective appended prompt fragments, inherited parent-first and de-duplicated. */
13
+ readonly appendSystemPrompts?: readonly PromptFragment[];
14
+ /** Effective agent body fragments, inherited parent-first and selected child last. */
15
+ readonly agentBodies?: readonly PromptFragment[];
16
+ /** Effective prompt template fragment, when declared. */
17
+ readonly promptTemplate?: PromptFragment;
18
+ /** The composed `agent.md` markdown body. Kept for compatibility with existing callers. */
9
19
  readonly agentBody: string;
10
20
  /** Human-readable profile name for interactive harness UI. */
11
21
  readonly label?: string;
12
22
  readonly description?: string;
13
23
  }
24
+ /** Identity fields guaranteed for a delegate composed from the effective resource set. */
25
+ export interface ComposedSubagentIdentity extends ComposedIdentity {
26
+ readonly appendSystemPrompts: readonly PromptFragment[];
27
+ readonly agentBodies: readonly PromptFragment[];
28
+ }
29
+ /** Effective delegated-agent controls projected into a native subagent definition. */
30
+ export interface ComposedSubagent {
31
+ readonly resource: ResolvedResource;
32
+ readonly identity: ComposedSubagentIdentity;
33
+ readonly skills: readonly ResolvedResource[];
34
+ readonly extensions: readonly string[];
35
+ readonly model?: string;
36
+ readonly thinking?: string;
37
+ readonly tools?: Loadout['tools'];
38
+ }
14
39
  /** A loadout with its slug references resolved against the effective set. */
15
40
  export interface ComposedLoadout {
16
41
  readonly skills: readonly ResolvedResource[];
17
42
  /** Skills selected by delegates, materialized for them without loading them into the leader. */
18
43
  readonly delegateSkills: readonly ResolvedResource[];
19
44
  readonly subagents: readonly ResolvedResource[];
45
+ /** Inheritance-aware definitions for each selected delegate. */
46
+ readonly composedSubagents?: readonly ComposedSubagent[];
20
47
  readonly mcp: readonly string[];
21
48
  /** Selected MCP server definitions after layer and per-agent precedence are applied. */
22
49
  readonly mcpServers: Readonly<Record<string, unknown>>;
@@ -34,6 +61,10 @@ export interface CompositionPlan {
34
61
  readonly agent: string;
35
62
  readonly identity: ComposedIdentity;
36
63
  readonly loadout: ComposedLoadout;
64
+ /** Parent-first agent resources that contributed identity, loadout, or native overlays. */
65
+ readonly contributingAgents?: readonly ResolvedResource[];
66
+ /** Parent-first chain of agent slugs that contributed to this composition, selected child last. */
67
+ readonly inheritanceChain?: readonly string[];
37
68
  /** Non-fatal issues (e.g. unknown loadout slugs) surfaced during composition. */
38
69
  readonly warnings: readonly string[];
39
70
  }
@@ -0,0 +1,44 @@
1
+ import type { Layer } from '../resolver/Resource.js';
2
+ export type PromptSourceKind = 'root' | 'file' | 'repo_file' | 'agent_body';
3
+ export interface PromptSourceReference {
4
+ readonly file?: string;
5
+ readonly repo_file?: string;
6
+ }
7
+ export interface PromptFragment {
8
+ readonly kind: PromptSourceKind;
9
+ readonly content: string;
10
+ readonly path?: string;
11
+ readonly reference?: string;
12
+ readonly declaringAgent?: string;
13
+ readonly layer?: Layer;
14
+ /** Human-readable label used for deterministic generated filenames and dump metadata. */
15
+ readonly label: string;
16
+ /** Repository prompt content is untrusted active-project content, not catalog policy. */
17
+ readonly trust: 'catalog' | 'repository' | 'generated';
18
+ }
19
+ export interface PromptResolution {
20
+ readonly fragment?: PromptFragment;
21
+ readonly warning?: string;
22
+ readonly error?: string;
23
+ }
24
+ export declare const isPromptSourceReference: (value: unknown) => value is PromptSourceReference;
25
+ export declare const promptSourceKey: (source: PromptSourceReference) => string;
26
+ export declare const resolvePromptSource: (input: {
27
+ readonly source: PromptSourceReference;
28
+ readonly declaringAgent: string;
29
+ readonly layer: Layer;
30
+ readonly projectDirectory?: string;
31
+ readonly optionalRepoFile?: boolean;
32
+ readonly label: string;
33
+ }) => PromptResolution;
34
+ export declare const rootPromptFragment: (input: {
35
+ readonly fileName: string;
36
+ readonly layer: Layer;
37
+ readonly content: string;
38
+ }) => PromptFragment;
39
+ export declare const agentBodyFragment: (input: {
40
+ readonly agent: string;
41
+ readonly layer: Layer;
42
+ readonly path: string;
43
+ readonly content: string;
44
+ }) => PromptFragment;
@@ -0,0 +1,113 @@
1
+ // Resolves prompt source references declared in agent frontmatter with containment provenance.
2
+ import { existsSync, realpathSync, statSync, readFileSync } from 'node:fs';
3
+ import { dirname, join, relative } from 'node:path';
4
+ import { escapesRoots } from '../dump/Containment.js';
5
+ export const isPromptSourceReference = (value) => value !== null &&
6
+ typeof value === 'object' &&
7
+ !Array.isArray(value) &&
8
+ ((typeof value.file === 'string' &&
9
+ value.repo_file === undefined) ||
10
+ (typeof value.repo_file === 'string' &&
11
+ value.file === undefined));
12
+ const safeRelative = (value) => value.length > 0 && !value.startsWith('/') && !value.split(/[\\/]+/).includes('..');
13
+ const containedFile = (path, root) => {
14
+ if (!existsSync(path))
15
+ return `missing file '${path}'.`;
16
+ let real;
17
+ try {
18
+ real = realpathSync(path);
19
+ /* v8 ignore next 2 -- existsSync succeeded; this only covers a concurrent filesystem race. */
20
+ }
21
+ catch (error) {
22
+ return `cannot resolve '${path}': ${String(error)}`;
23
+ }
24
+ if (escapesRoots(real, [root]))
25
+ return `'${path}' resolves outside '${root}'.`;
26
+ try {
27
+ if (!statSync(real).isFile())
28
+ return `'${path}' is not a file.`;
29
+ /* v8 ignore next 2 -- realpathSync succeeded; this only covers a concurrent filesystem race. */
30
+ }
31
+ catch (error) {
32
+ return `cannot stat '${path}': ${String(error)}`;
33
+ }
34
+ return true;
35
+ };
36
+ export const promptSourceKey = (source) => source.file !== undefined ? `file:${source.file}` : `repo_file:${source.repo_file}`;
37
+ export const resolvePromptSource = (input) => {
38
+ const { source, declaringAgent, layer, label } = input;
39
+ if (source.file !== undefined) {
40
+ if (!safeRelative(source.file)) {
41
+ return {
42
+ error: `agent '${declaringAgent}' prompt source file '${source.file}' must be a contained relative path.`,
43
+ };
44
+ }
45
+ const path = join(layer.root, source.file);
46
+ const contained = containedFile(path, layer.root);
47
+ if (contained !== true)
48
+ return { error: `agent '${declaringAgent}' prompt source file ${contained}` };
49
+ return {
50
+ fragment: {
51
+ kind: 'file',
52
+ content: readFileSync(path, 'utf8'),
53
+ path,
54
+ reference: source.file,
55
+ declaringAgent,
56
+ layer,
57
+ label,
58
+ trust: 'catalog',
59
+ },
60
+ };
61
+ }
62
+ const repoFile = source.repo_file;
63
+ if (!safeRelative(repoFile)) {
64
+ return {
65
+ error: `agent '${declaringAgent}' repo_file prompt source '${repoFile}' must be a contained relative path.`,
66
+ };
67
+ }
68
+ const projectDirectory = input.projectDirectory;
69
+ if (projectDirectory === undefined) {
70
+ return {
71
+ warning: `agent '${declaringAgent}' repo_file prompt source '${repoFile}' cannot be resolved without a project root.`,
72
+ };
73
+ }
74
+ const path = join(projectDirectory, repoFile);
75
+ if (!existsSync(path) && input.optionalRepoFile === true) {
76
+ return { warning: `agent '${declaringAgent}' optional repo_file prompt source '${repoFile}' was not found.` };
77
+ }
78
+ const contained = containedFile(path, projectDirectory);
79
+ if (contained !== true)
80
+ return { error: `agent '${declaringAgent}' repo_file prompt source ${contained}` };
81
+ return {
82
+ fragment: {
83
+ kind: 'repo_file',
84
+ content: readFileSync(path, 'utf8'),
85
+ path,
86
+ reference: repoFile,
87
+ declaringAgent,
88
+ layer,
89
+ label,
90
+ trust: 'repository',
91
+ },
92
+ };
93
+ };
94
+ export const rootPromptFragment = (input) => ({
95
+ kind: 'root',
96
+ content: input.content,
97
+ path: join(input.layer.root, input.fileName),
98
+ reference: input.fileName,
99
+ layer: input.layer,
100
+ label: input.fileName.replace(/\.md$/, ''),
101
+ trust: 'catalog',
102
+ });
103
+ export const agentBodyFragment = (input) => ({
104
+ kind: 'agent_body',
105
+ content: input.content,
106
+ path: input.path,
107
+ reference: relative(dirname(input.path), input.path),
108
+ declaringAgent: input.agent,
109
+ layer: input.layer,
110
+ label: `agent-${input.agent}`,
111
+ trust: 'catalog',
112
+ });
113
+ //# sourceMappingURL=PromptSource.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PromptSource.js","sourceRoot":"","sources":["../../src/composer/PromptSource.ts"],"names":[],"mappings":"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"}
@@ -5,4 +5,4 @@ export interface DumpResult {
5
5
  readonly errors: readonly string[];
6
6
  }
7
7
  /** Writes the composed closure of `agentSlug` into a freshly cleaned `<outDirectory>/.agents/`. */
8
- export declare const dumpAgent: (set: EffectiveResourceSet, agentSlug: string, outDirectory: string) => DumpResult;
8
+ export declare const dumpAgent: (set: EffectiveResourceSet, agentSlug: string, outDirectory: string, projectDirectory?: string) => DumpResult;
package/dist/dump/Dump.js CHANGED
@@ -61,16 +61,80 @@ const writeRootFiles = (set, outRoot, written) => {
61
61
  }
62
62
  return errors;
63
63
  };
64
- /**
65
- * BFS over the selected agent and its subagents, composing each closure member exactly once to
66
- * collect the transitive agent list, its skills, warnings, and any composition errors.
67
- */
68
- const composeClosure = (set, rootSlug) => {
64
+ const collectContributingAgents = (set, slugs, agents) => {
65
+ const existing = new Set(agents.map((agent) => agent.slug));
66
+ for (const slug of slugs) {
67
+ const agent = findResource(set, 'agent', slug);
68
+ if (agent !== undefined && !existing.has(slug)) {
69
+ agents.push(agent);
70
+ existing.add(slug);
71
+ }
72
+ }
73
+ };
74
+ const fragmentProvenance = (fragment) => ({
75
+ kind: fragment.kind,
76
+ reference: fragment.reference,
77
+ declaringAgent: fragment.declaringAgent,
78
+ layer: fragment.layer?.label,
79
+ trust: fragment.trust,
80
+ });
81
+ const compositionProvenance = (plan) => {
82
+ const ordered = [
83
+ { role: 'system_prompt', fragment: plan.identity.systemPromptFragment },
84
+ { role: 'shared_context', fragment: plan.identity.sharedContextFragment },
85
+ ...plan.identity.appendSystemPrompts.map((fragment) => ({
86
+ role: 'append_system_prompt',
87
+ fragment,
88
+ })),
89
+ ...plan.identity.agentBodies.map((fragment) => ({ role: 'agent_body', fragment })),
90
+ ];
91
+ return {
92
+ agent: plan.agent,
93
+ inheritanceChain: plan.inheritanceChain,
94
+ prompts: ordered
95
+ .filter((entry) => entry.fragment !== undefined)
96
+ .map((entry, order) => ({ order, role: entry.role, ...fragmentProvenance(entry.fragment) })),
97
+ promptTemplate: plan.identity.promptTemplate === undefined ? undefined : fragmentProvenance(plan.identity.promptTemplate),
98
+ };
99
+ };
100
+ const collectPromptFiles = (plan, promptFiles, errors) => {
101
+ const fragments = [
102
+ plan.identity.systemPromptFragment,
103
+ plan.identity.promptTemplate,
104
+ ...plan.identity.appendSystemPrompts,
105
+ ];
106
+ for (const fragment of fragments) {
107
+ if (fragment?.kind === 'file' && fragment.reference !== undefined) {
108
+ const existing = promptFiles.get(fragment.reference);
109
+ if (existing !== undefined && existing !== fragment.content) {
110
+ errors.push(`dump closure resolves conflicting contents for prompt file '${fragment.reference}' and cannot flatten both.`);
111
+ }
112
+ else {
113
+ promptFiles.set(fragment.reference, fragment.content);
114
+ }
115
+ }
116
+ }
117
+ };
118
+ const collectSkills = (selected, skills, errors) => {
119
+ for (const skill of selected) {
120
+ const existing = skills.get(skill.slug);
121
+ if (existing !== undefined && existing.winner.path !== skill.winner.path) {
122
+ errors.push(`dump closure resolves conflicting definitions for skill '${skill.slug}' and cannot flatten both.`);
123
+ }
124
+ else {
125
+ skills.set(skill.slug, skill);
126
+ }
127
+ }
128
+ };
129
+ /** BFS over the selected agent and its delegated-agent closure. */
130
+ const composeClosure = (set, rootSlug, projectDirectory) => {
69
131
  const seen = new Set();
70
132
  const agents = [];
71
133
  const skills = new Map();
72
134
  const warnings = [];
73
135
  const errors = [];
136
+ const promptFiles = new Map();
137
+ const provenance = [];
74
138
  const queue = [rootSlug];
75
139
  while (queue.length > 0) {
76
140
  const slug = queue.shift();
@@ -80,27 +144,26 @@ const composeClosure = (set, rootSlug) => {
80
144
  seen.add(slug);
81
145
  // compose surfaces an unknown/invalid root agent as an error; every queued subagent is already
82
146
  // resolved by the composer, so a plan implies findResource returns the agent.
83
- const composed = compose(set, slug);
147
+ const composed = compose(set, slug, { projectDirectory });
84
148
  if (composed.plan === undefined) {
85
149
  errors.push(...composed.errors);
150
+ warnings.push(...composed.warnings);
86
151
  continue;
87
152
  }
88
- agents.push(findResource(set, 'agent', slug));
153
+ collectContributingAgents(set, composed.plan.inheritanceChain, agents);
154
+ provenance.push(compositionProvenance(composed.plan));
89
155
  warnings.push(...composed.plan.warnings);
90
- for (const skill of composed.plan.loadout.skills) {
91
- const existing = skills.get(skill.slug);
92
- if (existing !== undefined && existing.winner.path !== skill.winner.path) {
93
- errors.push(`dump closure resolves conflicting definitions for skill '${skill.slug}' and cannot flatten both.`);
94
- }
95
- else {
96
- skills.set(skill.slug, skill);
97
- }
98
- }
156
+ collectPromptFiles(composed.plan, promptFiles, errors);
157
+ collectSkills(composed.plan.loadout.skills, skills, errors);
99
158
  queue.push(...composed.plan.loadout.subagents.map((subagent) => subagent.slug).sort(compareSlugs));
100
159
  }
101
160
  return {
102
161
  agents,
103
162
  skills: [...skills.values()].sort((left, right) => compareSlugs(left.slug, right.slug)),
163
+ promptFiles: [...promptFiles.entries()]
164
+ .map(([reference, content]) => ({ reference, content }))
165
+ .sort((left, right) => compareSlugs(left.reference, right.reference)),
166
+ provenance,
104
167
  warnings,
105
168
  errors,
106
169
  };
@@ -127,7 +190,7 @@ const overlapError = (outRoot, layers) => {
127
190
  : `dump output ${outRoot} overlaps source layer '${clash.label}'; choose an --out outside the tree.`;
128
191
  };
129
192
  const writeMergedConfig = (agent, agentTarget, written) => {
130
- const mergedConfig = mergeEffectiveConfig(agent.configPaths ?? []);
193
+ const mergedConfig = mergeEffectiveConfig(agent.configPaths);
131
194
  if (Object.keys(mergedConfig).length > 0) {
132
195
  const configTarget = join(agentTarget, 'config.json');
133
196
  mkdirSync(agentTarget, { recursive: true });
@@ -140,10 +203,23 @@ const failure = (errors, warnings = []) => ({
140
203
  warnings,
141
204
  errors,
142
205
  });
206
+ const promptTargetCollisions = (outRoot, prompts) => {
207
+ const errors = [];
208
+ for (const prompt of prompts) {
209
+ const target = join(outRoot, prompt.reference);
210
+ if (!existsSync(target))
211
+ continue;
212
+ const matches = lstatSync(target).isFile() && readFileSync(target, 'utf8') === prompt.content;
213
+ if (!matches) {
214
+ errors.push(`dump prompt file '${prompt.reference}' conflicts with another flattened file.`);
215
+ }
216
+ }
217
+ return errors;
218
+ };
143
219
  /** Writes the composed closure of `agentSlug` into a freshly cleaned `<outDirectory>/.agents/`. */
144
- export const dumpAgent = (set, agentSlug, outDirectory) => {
220
+ export const dumpAgent = (set, agentSlug, outDirectory, projectDirectory) => {
145
221
  // composeClosure composes the root once and surfaces an unknown/invalid root agent as an error.
146
- const closure = composeClosure(set, agentSlug);
222
+ const closure = composeClosure(set, agentSlug, projectDirectory);
147
223
  if (closure.errors.length > 0) {
148
224
  return failure(closure.errors, closure.warnings);
149
225
  }
@@ -164,19 +240,34 @@ export const dumpAgent = (set, agentSlug, outDirectory) => {
164
240
  if (rootErrors.length > 0) {
165
241
  return failure(rootErrors, closure.warnings);
166
242
  }
243
+ const provenanceTarget = join(outRoot, '.outfitter', 'composition.json');
244
+ mkdirSync(dirname(provenanceTarget), { recursive: true });
245
+ writeFileSync(provenanceTarget, `${JSON.stringify({ version: 1, compositions: closure.provenance }, null, 2)}\n`);
246
+ written.push(provenanceTarget);
167
247
  for (const agent of closure.agents) {
168
248
  const agentTarget = join(outRoot, 'agents', agent.slug);
169
249
  // Local resources are flattened below so the dumped tree is directly consumable by harnesses.
170
250
  copyResourceDirectory(dirname(agent.winner.path), agentTarget, written, ['config.json', 'skills', 'pi']);
171
251
  writeMergedConfig(agent, agentTarget, written);
172
252
  // Overlay each layer's pi config into a single `pi/` dir, highest precedence last so it wins.
173
- for (const piConfigDirectory of [...(agent.piConfigDirectories ?? [])].reverse()) {
253
+ for (const piConfigDirectory of [...agent.piConfigDirectories].reverse()) {
174
254
  copyResourceDirectory(piConfigDirectory, join(agentTarget, 'pi'), written);
175
255
  }
176
256
  }
177
257
  for (const skill of closure.skills) {
178
258
  copyResourceDirectory(dirname(skill.winner.path), join(outRoot, 'skills', skill.slug), written);
179
259
  }
260
+ const promptCollisions = promptTargetCollisions(outRoot, closure.promptFiles);
261
+ if (promptCollisions.length > 0) {
262
+ rmSync(outRoot, { recursive: true, force: true });
263
+ return failure(promptCollisions, closure.warnings);
264
+ }
265
+ for (const prompt of closure.promptFiles) {
266
+ const target = join(outRoot, prompt.reference);
267
+ mkdirSync(dirname(target), { recursive: true });
268
+ writeFileSync(target, prompt.content);
269
+ written.push(target);
270
+ }
180
271
  return { writtenPaths: [...new Set(written)].sort(compareSlugs), warnings: closure.warnings, errors: [] };
181
272
  };
182
273
  //# sourceMappingURL=Dump.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Dump.js","sourceRoot":"","sources":["../../src/dump/Dump.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Dump.js","sourceRoot":"","sources":["../../src/dump/Dump.ts"],"names":[],"mappings":"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"}
@@ -18,9 +18,5 @@ export interface MaterializedComposition {
18
18
  * roots and entries are skipped so a catalog cannot make projection read outside its layer.
19
19
  */
20
20
  export declare const materializeConfigurationOverlays: (sourceDirectories: readonly string[], rootDirectory: string) => void;
21
- /**
22
- * Writes the composed identity, skills, subagents, and selected MCP servers into
23
- * `rootDirectory`. The base `system-prompt.md` becomes the system prompt; shared `agents.md`
24
- * context and the agent body are appended in order.
25
- */
21
+ /** Writes composed identity, skills, subagents, and selected MCP servers into the runtime root. */
26
22
  export declare const materializeComposition: (composition: CompositionPlan, rootDirectory: string) => MaterializedComposition;
@@ -27,6 +27,7 @@ const writeGeneratedFile = (path, content) => {
27
27
  removeTargetTypeConflict(path, 'file');
28
28
  writeFileSync(path, content);
29
29
  };
30
+ const safeName = (value) => value.replace(/[^a-zA-Z0-9._-]+/g, '-');
30
31
  /**
31
32
  * Overlays native harness configuration into the runtime root. Inputs arrive highest precedence
32
33
  * first, so copying in reverse order lets higher layers replace matching files. Symlinked overlay
@@ -85,7 +86,30 @@ const serializeSubagent = (subagent) => {
85
86
  ];
86
87
  return `---\n${frontmatter.join('\n')}\n---\n\n${definition.body}`;
87
88
  };
88
- const materializeSubagents = (subagents, rootDirectory) => {
89
+ const composedSubagentBody = (subagent) => [
90
+ subagent.identity.systemPrompt,
91
+ subagent.identity.sharedContext,
92
+ ...subagent.identity.appendSystemPrompts.map((fragment) => fragment.content),
93
+ ...subagent.identity.agentBodies.map((fragment) => fragment.content),
94
+ ]
95
+ .filter((fragment) => fragment !== undefined && fragment.length > 0)
96
+ .join('\n\n');
97
+ const serializeComposedSubagent = (subagent) => {
98
+ const denied = new Set(subagent.tools?.deny ?? []);
99
+ const tools = subagent.tools?.allow?.filter((tool) => !denied.has(tool));
100
+ const description = subagent.identity.description ?? subagent.identity.label;
101
+ const frontmatter = [
102
+ `name: ${JSON.stringify(subagent.resource.slug)}`,
103
+ `description: ${JSON.stringify(description ?? `Delegated ${subagent.resource.slug} agent.`)}`,
104
+ ...optionalScalar('model', subagent.model),
105
+ ...optionalScalar('thinking', subagent.thinking),
106
+ ...optionalList('tools', tools ?? []),
107
+ ...optionalList('skills', subagent.skills.map((skill) => skill.slug)),
108
+ ...optionalList('extensions', subagent.extensions),
109
+ ];
110
+ return `---\n${frontmatter.join('\n')}\n---\n\n${composedSubagentBody(subagent)}`;
111
+ };
112
+ const materializeSubagents = (subagents, composedSubagents, rootDirectory) => {
89
113
  if (subagents.length === 0) {
90
114
  return [];
91
115
  }
@@ -93,8 +117,10 @@ const materializeSubagents = (subagents, rootDirectory) => {
93
117
  rmSync(agentsDirectory, { recursive: true, force: true });
94
118
  mkdirSync(agentsDirectory, { recursive: true });
95
119
  const skipped = [];
120
+ const composedBySlug = new Map((composedSubagents ?? []).map((subagent) => [subagent.resource.slug, subagent]));
96
121
  for (const subagent of subagents) {
97
- const content = serializeSubagent(subagent);
122
+ const composed = composedBySlug.get(subagent.slug);
123
+ const content = composed === undefined ? serializeSubagent(subagent) : serializeComposedSubagent(composed);
98
124
  if (content === undefined) {
99
125
  skipped.push(subagent.slug);
100
126
  }
@@ -104,13 +130,7 @@ const materializeSubagents = (subagents, rootDirectory) => {
104
130
  }
105
131
  return skipped;
106
132
  };
107
- /**
108
- * Writes the composed identity, skills, subagents, and selected MCP servers into
109
- * `rootDirectory`. The base `system-prompt.md` becomes the system prompt; shared `agents.md`
110
- * context and the agent body are appended in order.
111
- */
112
- export const materializeComposition = (composition, rootDirectory) => {
113
- mkdirSync(rootDirectory, { recursive: true });
133
+ const materializeIdentity = (composition, rootDirectory) => {
114
134
  const systemPromptPath = join(rootDirectory, 'system-prompt.md');
115
135
  writeGeneratedFile(systemPromptPath, composition.identity.systemPrompt ?? '');
116
136
  const appendPromptPaths = [];
@@ -119,9 +139,33 @@ export const materializeComposition = (composition, rootDirectory) => {
119
139
  writeGeneratedFile(contextPath, composition.identity.sharedContext);
120
140
  appendPromptPaths.push(contextPath);
121
141
  }
122
- const agentBodyPath = join(rootDirectory, 'agent.md');
123
- writeGeneratedFile(agentBodyPath, composition.identity.agentBody);
124
- appendPromptPaths.push(agentBodyPath);
142
+ (composition.identity.appendSystemPrompts ?? []).forEach((fragment, index) => {
143
+ const name = `append-${String(index + 1).padStart(2, '0')}-${safeName(fragment.label)}.md`;
144
+ writeGeneratedFile(join(rootDirectory, name), fragment.content);
145
+ appendPromptPaths.push(join(rootDirectory, name));
146
+ });
147
+ const bodies = composition.identity.agentBodies ?? [];
148
+ if (bodies.length <= 1) {
149
+ const path = join(rootDirectory, 'agent.md');
150
+ writeGeneratedFile(path, bodies[0]?.content ?? composition.identity.agentBody);
151
+ appendPromptPaths.push(path);
152
+ }
153
+ else {
154
+ bodies.forEach((fragment, index) => {
155
+ const name = `${String(index + 1).padStart(2, '0')}-${safeName(fragment.label)}.md`;
156
+ writeGeneratedFile(join(rootDirectory, name), fragment.content);
157
+ appendPromptPaths.push(join(rootDirectory, name));
158
+ });
159
+ }
160
+ if (composition.identity.promptTemplate !== undefined) {
161
+ writeGeneratedFile(join(rootDirectory, 'prompt-template.md'), composition.identity.promptTemplate.content);
162
+ }
163
+ return { systemPromptPath, appendPromptPaths };
164
+ };
165
+ /** Writes composed identity, skills, subagents, and selected MCP servers into the runtime root. */
166
+ export const materializeComposition = (composition, rootDirectory) => {
167
+ mkdirSync(rootDirectory, { recursive: true });
168
+ const { systemPromptPath, appendPromptPaths } = materializeIdentity(composition, rootDirectory);
125
169
  const skillDirectories = [];
126
170
  const skippedSkills = [];
127
171
  for (const skill of [...composition.loadout.skills, ...composition.loadout.delegateSkills]) {
@@ -133,7 +177,7 @@ export const materializeComposition = (composition, rootDirectory) => {
133
177
  skillDirectories.push(materialized);
134
178
  }
135
179
  }
136
- const skippedSubagents = materializeSubagents(composition.loadout.subagents, rootDirectory);
180
+ const skippedSubagents = materializeSubagents(composition.loadout.subagents, composition.loadout.composedSubagents, rootDirectory);
137
181
  if (composition.loadout.mcp.length > 0) {
138
182
  writeGeneratedFile(join(rootDirectory, 'mcp.json'), `${JSON.stringify({ mcpServers: composition.loadout.mcpServers }, null, 2)}\n`);
139
183
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Materialize.js","sourceRoot":"","sources":["../../src/projection/Materialize.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Materialize.js","sourceRoot":"","sources":["../../src/projection/Materialize.ts"],"names":[],"mappings":"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"}