@ai-outfitter/outfitter 1.5.0 → 1.7.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 (83) hide show
  1. package/README.md +11 -2
  2. package/code/pi-extension/src/outfitter-extension.js +9 -1
  3. package/dist/agents/AgentLaunch.d.ts +2 -2
  4. package/dist/agents/AgentLaunch.js +4 -3
  5. package/dist/agents/AgentLaunch.js.map +1 -1
  6. package/dist/agents/ClaudeStatePersistence.d.ts +18 -0
  7. package/dist/agents/ClaudeStatePersistence.js +225 -0
  8. package/dist/agents/ClaudeStatePersistence.js.map +1 -0
  9. package/dist/cli/OutfitterCli.js +1 -1
  10. package/dist/cli/OutfitterCli.js.map +1 -1
  11. package/dist/cli/commands/DumpCommand.d.ts +1 -0
  12. package/dist/cli/commands/DumpCommand.js +11 -1
  13. package/dist/cli/commands/DumpCommand.js.map +1 -1
  14. package/dist/cli/commands/ListCommand.d.ts +2 -0
  15. package/dist/cli/commands/ListCommand.js +15 -4
  16. package/dist/cli/commands/ListCommand.js.map +1 -1
  17. package/dist/cli/commands/RunAgentCommand.js +85 -17
  18. package/dist/cli/commands/RunAgentCommand.js.map +1 -1
  19. package/dist/cli/commands/SyncCommand.d.ts +8 -3
  20. package/dist/cli/commands/SyncCommand.js +126 -21
  21. package/dist/cli/commands/SyncCommand.js.map +1 -1
  22. package/dist/cli/commands/ValidateCommand.js +1 -1
  23. package/dist/cli/commands/ValidateCommand.js.map +1 -1
  24. package/dist/projection/CodexMcp.d.ts +11 -0
  25. package/dist/projection/CodexMcp.js +143 -0
  26. package/dist/projection/CodexMcp.js.map +1 -0
  27. package/dist/projection/Materialize.d.ts +3 -1
  28. package/dist/projection/Materialize.js +7 -3
  29. package/dist/projection/Materialize.js.map +1 -1
  30. package/dist/projection/ProjectHarness.js +66 -29
  31. package/dist/projection/ProjectHarness.js.map +1 -1
  32. package/dist/projection/Projection.d.ts +2 -0
  33. package/dist/resolver/AmbiguityWarnings.d.ts +7 -0
  34. package/dist/resolver/AmbiguityWarnings.js +86 -0
  35. package/dist/resolver/AmbiguityWarnings.js.map +1 -0
  36. package/dist/resolver/Layer.d.ts +8 -2
  37. package/dist/resolver/Layer.js +48 -8
  38. package/dist/resolver/Layer.js.map +1 -1
  39. package/dist/resolver/ResolverContext.d.ts +3 -1
  40. package/dist/resolver/ResolverContext.js +11 -2
  41. package/dist/resolver/ResolverContext.js.map +1 -1
  42. package/dist/resolver/ResolverValidation.d.ts +12 -1
  43. package/dist/resolver/ResolverValidation.js +30 -20
  44. package/dist/resolver/ResolverValidation.js.map +1 -1
  45. package/dist/schemas/settings.schema.json +1 -1
  46. package/dist/schemas/system-extension-hook.schema.json +38 -0
  47. package/dist/settings/Settings.d.ts +1 -1
  48. package/dist/settings/Settings.js +1 -1
  49. package/dist/settings/Settings.js.map +1 -1
  50. package/dist/settings/SettingsLoader.js.map +1 -1
  51. package/dist/setup/DefaultCatalog.d.ts +18 -0
  52. package/dist/setup/DefaultCatalog.js +74 -13
  53. package/dist/setup/DefaultCatalog.js.map +1 -1
  54. package/dist/sources/SourceCache.d.ts +20 -0
  55. package/dist/sources/SourceCache.js +31 -1
  56. package/dist/sources/SourceCache.js.map +1 -1
  57. package/dist/sources/TransitiveSources.d.ts +45 -0
  58. package/dist/sources/TransitiveSources.js +179 -0
  59. package/dist/sources/TransitiveSources.js.map +1 -0
  60. package/dist/system/SystemExtensionHook.d.ts +34 -0
  61. package/dist/system/SystemExtensionHook.js +190 -0
  62. package/dist/system/SystemExtensionHook.js.map +1 -0
  63. package/dist/validation/SchemaValidator.d.ts +1 -1
  64. package/dist/validation/SchemaValidator.js +2 -0
  65. package/dist/validation/SchemaValidator.js.map +1 -1
  66. package/docs/architecture/state_writeback_strategy.md +15 -3
  67. package/docs/documentation/README.md +14 -1
  68. package/docs/documentation/catalogs.md +61 -2
  69. package/docs/documentation/cli.md +2 -1
  70. package/docs/documentation/concepts.md +2 -2
  71. package/docs/documentation/hooks.md +33 -0
  72. package/docs/documentation/in-cluster.md +2 -0
  73. package/docs/documentation/migration.md +1 -1
  74. package/docs/documentation/personas.md +1 -1
  75. package/docs/documentation/settings.md +1 -1
  76. package/docs/documentation/state.md +27 -0
  77. package/docs/documentation/support-matrix.md +34 -23
  78. package/docs/documentation/usecases/org-onboarding-sdlc-report.md +143 -0
  79. package/docs/documentation/usecases/persona-reviews.md +1 -1
  80. package/docs/philosophy.md +20 -0
  81. package/package.json +1 -1
  82. package/src/schemas/settings.schema.json +1 -1
  83. package/src/schemas/system-extension-hook.schema.json +38 -0
@@ -0,0 +1,143 @@
1
+ // Translates selected protocol MCP server definitions into Codex CLI TOML overrides.
2
+ const asRecord = (value) => value !== null && typeof value === 'object' && !Array.isArray(value)
3
+ ? value
4
+ : {};
5
+ const tomlString = (value) => JSON.stringify(value.replace(/[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?<![\uD800-\uDBFF])[\uDC00-\uDFFF]/gu, '\uFFFD')).replace(/\u007F/gu, '\\u007F');
6
+ const CODEX_MCP_ID = /^[A-Za-z0-9_-]+$/u;
7
+ const ENVIRONMENT_REFERENCE = /\$\{[A-Za-z_][A-Za-z0-9_]*\}/u;
8
+ const tomlInlineTable = (value) => `{ ${Object.entries(value)
9
+ .sort(([left], [right]) => left.localeCompare(right))
10
+ .map(([key, item]) => `${tomlString(key)} = ${tomlString(item)}`)
11
+ .join(', ')} }`;
12
+ const environmentReference = (value) => /^\$\{([A-Za-z_][A-Za-z0-9_]*)\}$/u.exec(value)?.[1];
13
+ const bearerTokenReference = (header, value) => header.toLowerCase() === 'authorization' ? /^Bearer \$\{([A-Za-z_][A-Za-z0-9_]*)\}$/iu.exec(value)?.[1] : undefined;
14
+ const supportedTransport = (value) => value === undefined || value === 'stdio' || value === 'http' || value === 'streamable-http';
15
+ const override = (key, value) => ['-c', `${key}=${value}`];
16
+ const warnUnexpandedReferences = (id, field, value, warnings) => {
17
+ if (ENVIRONMENT_REFERENCE.test(value)) {
18
+ warnings.push(`codex MCP server '${id}' field '${field}' contains environment references that Codex does not expand.`);
19
+ }
20
+ };
21
+ const projectStdioEnvironmentEntry = (id, name, value, literalEnvironment, environmentVariables, warnings) => {
22
+ if (typeof value !== 'string') {
23
+ warnings.push(`codex adapter dropped non-string MCP env entry '${name}' from server '${id}'.`);
24
+ return;
25
+ }
26
+ const environment = environmentReference(value);
27
+ if (environment === undefined) {
28
+ literalEnvironment[name] = value;
29
+ warnings.push(`codex MCP server '${id}' env entry '${name}' is literal and will be visible in process arguments.`);
30
+ return;
31
+ }
32
+ if (name === environment) {
33
+ environmentVariables.push(environment);
34
+ return;
35
+ }
36
+ warnings.push(`codex adapter cannot project MCP server '${id}' env entry '${name}': environment reference '${value}' would rename '${environment}'.`);
37
+ };
38
+ const projectHttpServer = (id, prefix, url, server, warnings) => {
39
+ warnUnexpandedReferences(id, 'url', url, warnings);
40
+ const args = [...override(`${prefix}.url`, tomlString(url))];
41
+ const literalHeaders = {};
42
+ const environmentHeaders = {};
43
+ let bearerTokenEnvironment;
44
+ for (const [header, value] of Object.entries(asRecord(server.headers))) {
45
+ if (typeof value !== 'string') {
46
+ warnings.push(`codex adapter dropped non-string MCP header '${header}' from server '${id}'.`);
47
+ continue;
48
+ }
49
+ const bearerToken = bearerTokenReference(header, value);
50
+ const environment = environmentReference(value);
51
+ if (bearerToken !== undefined)
52
+ bearerTokenEnvironment = bearerToken;
53
+ else if (environment === undefined) {
54
+ literalHeaders[header] = value;
55
+ warnings.push(`codex MCP server '${id}' header '${header}' is literal and will be visible in process arguments.`);
56
+ }
57
+ else
58
+ environmentHeaders[header] = environment;
59
+ }
60
+ if (Object.keys(literalHeaders).length > 0) {
61
+ args.push(...override(`${prefix}.http_headers`, tomlInlineTable(literalHeaders)));
62
+ }
63
+ if (Object.keys(environmentHeaders).length > 0) {
64
+ args.push(...override(`${prefix}.env_http_headers`, tomlInlineTable(environmentHeaders)));
65
+ }
66
+ if (bearerTokenEnvironment !== undefined) {
67
+ args.push(...override(`${prefix}.bearer_token_env_var`, tomlString(bearerTokenEnvironment)));
68
+ }
69
+ return args;
70
+ };
71
+ const projectStdioServer = (id, prefix, command, server, warnings) => {
72
+ warnUnexpandedReferences(id, 'command', command, warnings);
73
+ const args = [...override(`${prefix}.command`, tomlString(command))];
74
+ if (Array.isArray(server.args)) {
75
+ const commandArgs = [];
76
+ for (const [index, value] of server.args.entries()) {
77
+ if (typeof value === 'string') {
78
+ warnUnexpandedReferences(id, `args[${index}]`, value, warnings);
79
+ commandArgs.push(value);
80
+ }
81
+ else
82
+ warnings.push(`codex adapter dropped non-string MCP arg at index ${index} from server '${id}'.`);
83
+ }
84
+ args.push(...override(`${prefix}.args`, `[${commandArgs.map(tomlString).join(', ')}]`));
85
+ }
86
+ const literalEnvironment = {};
87
+ const environmentVariables = [];
88
+ for (const [name, value] of Object.entries(asRecord(server.env))) {
89
+ projectStdioEnvironmentEntry(id, name, value, literalEnvironment, environmentVariables, warnings);
90
+ }
91
+ if (Object.keys(literalEnvironment).length > 0) {
92
+ args.push(...override(`${prefix}.env`, tomlInlineTable(literalEnvironment)));
93
+ }
94
+ if (environmentVariables.length > 0) {
95
+ args.push(...override(`${prefix}.env_vars`, `[${environmentVariables
96
+ .sort((left, right) => left.localeCompare(right))
97
+ .map(tomlString)
98
+ .join(', ')}]`));
99
+ }
100
+ if (typeof server.cwd === 'string') {
101
+ warnUnexpandedReferences(id, 'cwd', server.cwd, warnings);
102
+ args.push(...override(`${prefix}.cwd`, tomlString(server.cwd)));
103
+ }
104
+ return args;
105
+ };
106
+ // Codex merges `-c` overrides with user and project `config.toml` and has no exclusive MCP mode, so
107
+ // selecting any server leaves lower-layer servers active. Reported as an adapter warning, which
108
+ // `--strict` makes fatal.
109
+ const ADDITIVE_PROJECTION_WARNING = 'codex MCP projection is additive: user and project MCP servers remain active because Codex has no strict isolation mode.';
110
+ /**
111
+ * Codex CLI `-c` values are TOML, not JSON. HTTP header values written as `${ENV_NAME}` are
112
+ * translated to `env_http_headers`, and `Authorization: Bearer ${ENV_NAME}` becomes
113
+ * `bearer_token_env_var`, so the secret itself stays out of argv. Other values must use Codex's
114
+ * literal `http_headers` because the protocol definition contains no environment reference.
115
+ */
116
+ export const projectCodexMcpServers = (selectedIds, servers) => {
117
+ const args = [];
118
+ const warnings = [ADDITIVE_PROJECTION_WARNING];
119
+ for (const id of selectedIds) {
120
+ if (!CODEX_MCP_ID.test(id)) {
121
+ warnings.push(`codex adapter cannot project MCP server '${id}': id contains characters Codex -c key paths cannot express.`);
122
+ continue;
123
+ }
124
+ const server = asRecord(servers[id]);
125
+ const prefix = `mcp_servers.${id}`;
126
+ if (!supportedTransport(server.type)) {
127
+ const transport = typeof server.type === 'string' ? server.type : (JSON.stringify(server.type) ?? typeof server.type);
128
+ warnings.push(`codex adapter cannot project MCP server '${id}': transport '${transport}' is unsupported.`);
129
+ continue;
130
+ }
131
+ if (typeof server.url === 'string') {
132
+ args.push(...projectHttpServer(id, prefix, server.url, server, warnings));
133
+ continue;
134
+ }
135
+ if (typeof server.command === 'string') {
136
+ args.push(...projectStdioServer(id, prefix, server.command, server, warnings));
137
+ continue;
138
+ }
139
+ warnings.push(`codex adapter cannot project MCP server '${id}': expected a URL or command.`);
140
+ }
141
+ return { args, warnings };
142
+ };
143
+ //# sourceMappingURL=CodexMcp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CodexMcp.js","sourceRoot":"","sources":["../../src/projection/CodexMcp.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import type { CompositionPlan } from '../composer/Composition.js';
2
+ import type { Harness } from '../settings/Settings.js';
2
3
  export interface MaterializedComposition {
3
4
  readonly rootDirectory: string;
4
5
  /** Absolute path to the composed system prompt written for the run. */
@@ -12,6 +13,7 @@ export interface MaterializedComposition {
12
13
  /** Subagents whose merged agent definition could not be materialized. */
13
14
  readonly skippedSubagents: readonly string[];
14
15
  }
16
+ export declare const writeMcpConfig: (path: string, mcpServers: Readonly<Record<string, unknown>>) => void;
15
17
  /**
16
18
  * Overlays native harness configuration into the runtime root. Inputs arrive highest precedence
17
19
  * first, so copying in reverse order lets higher layers replace matching files. Symlinked overlay
@@ -19,4 +21,4 @@ export interface MaterializedComposition {
19
21
  */
20
22
  export declare const materializeConfigurationOverlays: (sourceDirectories: readonly string[], rootDirectory: string) => void;
21
23
  /** Writes composed identity, skills, subagents, and selected MCP servers into the runtime root. */
22
- export declare const materializeComposition: (composition: CompositionPlan, rootDirectory: string) => MaterializedComposition;
24
+ export declare const materializeComposition: (composition: CompositionPlan, rootDirectory: string, harness: Harness) => MaterializedComposition;
@@ -28,6 +28,10 @@ const writeGeneratedFile = (path, content) => {
28
28
  removeTargetTypeConflict(path, 'file');
29
29
  writeFileSync(path, content);
30
30
  };
31
+ const serializeMcpConfig = (mcpServers) => `${JSON.stringify({ mcpServers }, null, 2)}\n`;
32
+ export const writeMcpConfig = (path, mcpServers) => {
33
+ writeGeneratedFile(path, serializeMcpConfig(mcpServers));
34
+ };
31
35
  const safeName = (value) => value.replace(/[^a-zA-Z0-9._-]+/g, '-');
32
36
  /**
33
37
  * Overlays native harness configuration into the runtime root. Inputs arrive highest precedence
@@ -162,7 +166,7 @@ const materializeIdentity = (composition, rootDirectory) => {
162
166
  return { systemPromptPath, appendPromptPaths };
163
167
  };
164
168
  /** Writes composed identity, skills, subagents, and selected MCP servers into the runtime root. */
165
- export const materializeComposition = (composition, rootDirectory) => {
169
+ export const materializeComposition = (composition, rootDirectory, harness) => {
166
170
  mkdirSync(rootDirectory, { recursive: true });
167
171
  const { systemPromptPath, appendPromptPaths } = materializeIdentity(composition, rootDirectory);
168
172
  const skillDirectories = [];
@@ -177,8 +181,8 @@ export const materializeComposition = (composition, rootDirectory) => {
177
181
  }
178
182
  }
179
183
  const skippedSubagents = materializeSubagents(composition.loadout.subagents, composition.loadout.composedSubagents, rootDirectory);
180
- if (composition.loadout.mcp.length > 0) {
181
- writeGeneratedFile(join(rootDirectory, 'mcp.json'), `${JSON.stringify({ mcpServers: composition.loadout.mcpServers }, null, 2)}\n`);
184
+ if (harness === 'claude' || (harness === 'pi' && composition.loadout.mcp.length > 0)) {
185
+ writeMcpConfig(join(rootDirectory, 'mcp.json'), composition.loadout.mcpServers);
182
186
  }
183
187
  return {
184
188
  rootDirectory,
@@ -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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"}
@@ -1,26 +1,36 @@
1
- // Projects a harness-neutral CompositionPlan to a native pi or Claude Code launch.
1
+ // Projects a harness-neutral CompositionPlan to a native pi, Claude Code, or Codex CLI launch.
2
2
  import { readFileSync, writeFileSync } from 'node:fs';
3
3
  import { join } from 'node:path';
4
4
  import { PI_SESSION_DIRECTORY_ENV } from '../agents/PiSessionDirectory.js';
5
+ import { projectCodexMcpServers } from './CodexMcp.js';
5
6
  import { materializeComposition, materializeConfigurationOverlays } from './Materialize.js';
6
7
  import { toolArgs } from './Tools.js';
7
8
  // Loadout elements a projection actually maps to native config. Anything else is reported
8
- // unsupported so `--strict` catches silently-dropped selections. Baseline for both harnesses is
9
+ // unsupported so `--strict` catches silently-dropped selections. Baseline for pi and Claude is
9
10
  // identity + skills + model + thinking + tools. Both harnesses express an allowlist and a denylist
10
11
  // natively, so `tools` is unconditionally supported; a name projection cannot carry is a hard error
11
12
  // from `toolArgs`, not an unsupported element. Pi also projects selected subagents and MCP servers
12
13
  // into its runtime config directory, and projects `extensions` once the run path has resolved their
13
- // install dirs (`extensionLoadDirs`). plugins remain unsupported pending incremental parity (#183).
14
+ // install dirs (`extensionLoadDirs`). Claude projects selected MCP servers through an explicit,
15
+ // isolated `--mcp-config`; plugins remain unsupported pending incremental parity (#183).
16
+ // Switched rather than chained so a harness added to `Harness` fails to compile here instead of
17
+ // silently inheriting another harness's element set — the exact silent drop this function prevents.
14
18
  const supportedElements = (input) => {
15
- const baseline = ['skills', 'model', 'thinking', 'tools'];
16
- if (input.harness !== 'pi')
17
- return baseline;
18
- const pi = [...baseline, 'subagents', 'mcp', 'prompt_template'];
19
- return input.extensionLoadDirs === undefined ? pi : [...pi, 'extensions'];
19
+ const baseline = ['identity', 'skills', 'model', 'thinking', 'tools'];
20
+ switch (input.harness) {
21
+ case 'claude':
22
+ return [...baseline, 'mcp'];
23
+ case 'codex':
24
+ return ['model', 'mcp'];
25
+ case 'pi': {
26
+ const pi = [...baseline, 'subagents', 'mcp', 'prompt_template'];
27
+ return input.extensionLoadDirs === undefined ? pi : [...pi, 'extensions'];
28
+ }
29
+ }
20
30
  };
21
31
  const loadoutElementsInUse = (composition) => {
22
32
  const { loadout } = composition;
23
- const present = [];
33
+ const present = ['identity'];
24
34
  if (loadout.skills.length > 0)
25
35
  present.push('skills');
26
36
  if (loadout.subagents.length > 0)
@@ -81,17 +91,28 @@ const promptArgs = (composition, input, systemPromptPath, appendPromptPaths) =>
81
91
  ? ['--prompt-template', `${input.rootDirectory}/prompt-template.md`]
82
92
  : []),
83
93
  ];
84
- const modelArgs = (composition, harness) => {
85
- const args = [];
86
- if (composition.loadout.model !== undefined) {
87
- args.push('--model', composition.loadout.model);
88
- }
89
- if (composition.loadout.thinking !== undefined) {
90
- args.push(harness === 'pi' ? '--thinking' : '--effort', composition.loadout.thinking);
91
- }
92
- return args;
93
- };
94
- const buildLaunchPlan = (composition, input, systemPromptPath, appendPromptPaths) => {
94
+ // Split from the thinking flag so each builder states positively what it emits: codex reports
95
+ // `thinking` unsupported, and reporting an element unsupported does not by itself suppress it.
96
+ const modelArg = (composition, flag) => composition.loadout.model === undefined ? [] : [flag, composition.loadout.model];
97
+ const thinkingArg = (composition, harness) => composition.loadout.thinking === undefined
98
+ ? []
99
+ : [harness === 'pi' ? '--thinking' : '--effort', composition.loadout.thinking];
100
+ // MCP overrides lead and pass-through args trail so a pass-through positional (`exec "<prompt>"`)
101
+ // stays last, where codex expects its subcommand and prompt.
102
+ const buildCodexLaunchPlan = (composition, input, codexMcpArgs) => ({
103
+ command: 'codex',
104
+ // Root `-m` propagation through `exec` was verified empirically on codex-cli 0.145.0.
105
+ args: [...codexMcpArgs, ...modelArg(composition, '-m'), ...(input.passThroughArgs ?? [])],
106
+ env: {},
107
+ });
108
+ // Claude's user, project, and plugin MCP sources would otherwise merge into the composition, so the
109
+ // generated config is named explicitly and `--strict-mcp-config` suppresses every other layer.
110
+ const claudeMcpArgs = (mcpConfigPath) => [
111
+ '--mcp-config',
112
+ mcpConfigPath,
113
+ '--strict-mcp-config',
114
+ ];
115
+ const buildPiOrClaudeLaunchPlan = (composition, input, materialized, appendPromptPaths) => {
95
116
  const isPi = input.harness === 'pi';
96
117
  const skillArgs = isPi ? composition.loadout.skills.flatMap((skill) => ['--skill', skill.slug]) : [];
97
118
  const extensionArgs = isPi ? (input.extensionLoadDirs ?? []).flatMap((dir) => ['--extension', dir]) : [];
@@ -102,10 +123,12 @@ const buildLaunchPlan = (composition, input, systemPromptPath, appendPromptPaths
102
123
  // variadic and stop only at the next `--flag`, and the prompt args that follow always start
103
124
  // with one. Placed later they could swallow a pass-through positional. See Tools.ts.
104
125
  ...(composition.loadout.tools === undefined ? [] : toolArgs(input.harness, composition.loadout.tools)),
105
- ...promptArgs(composition, input, systemPromptPath, appendPromptPaths),
126
+ ...promptArgs(composition, input, materialized.systemPromptPath, appendPromptPaths),
106
127
  ...skillArgs,
107
128
  ...extensionArgs,
108
- ...modelArgs(composition, input.harness),
129
+ ...modelArg(composition, '--model'),
130
+ ...thinkingArg(composition, input.harness),
131
+ ...(isPi ? [] : claudeMcpArgs(join(input.rootDirectory, 'mcp.json'))),
109
132
  ...(input.passThroughArgs ?? []),
110
133
  ],
111
134
  // The projection root is deleted after the run, so pi's default session store (a subdirectory
@@ -124,17 +147,31 @@ export const projectComposition = (composition, input) => {
124
147
  if (input.harness === 'pi') {
125
148
  materializeConfigurationOverlays(input.configurationOverlayDirectories ?? [], input.rootDirectory);
126
149
  }
127
- const materialized = materializeComposition(composition, input.rootDirectory);
128
- // Caller documents follow the composition's own, so a persona is read against the agent it adopts.
129
- const launch = buildLaunchPlan(composition, input, materialized.systemPromptPath, [
130
- ...materialized.appendPromptPaths,
131
- ...(input.appendPromptPaths ?? []),
132
- ]);
150
+ // Materialization runs for every harness so containment and definition diagnostics are reported
151
+ // uniformly. Codex reads none of the generated files it takes its MCP config in argv and has no
152
+ // config-directory projection yet — but the root is temporary, so the unused writes do not persist.
153
+ const materialized = materializeComposition(composition, input.rootDirectory, input.harness);
133
154
  const unsupported = [
134
155
  ...unsupportedElements(composition, input),
135
156
  ...materialized.skippedSkills.map((slug) => `skill:${slug} (escaping symlink)`),
136
157
  ...materialized.skippedSubagents.map((slug) => `subagent:${slug} (invalid definition)`),
137
158
  ];
138
- return { rootDirectory: input.rootDirectory, launch, unsupported };
159
+ if (input.harness === 'codex') {
160
+ const codexMcp = projectCodexMcpServers(composition.loadout.mcp, composition.loadout.mcpServers);
161
+ const launch = buildCodexLaunchPlan(composition, input, codexMcp.args);
162
+ const warnings = [
163
+ ...(input.appendPromptPaths?.length
164
+ ? ['codex adapter does not project supplied append-prompt documents; they will be dropped.']
165
+ : []),
166
+ ...codexMcp.warnings,
167
+ ];
168
+ return { rootDirectory: input.rootDirectory, launch, unsupported, warnings };
169
+ }
170
+ // Caller documents follow the composition's own, so a persona is read against the agent it adopts.
171
+ const launch = buildPiOrClaudeLaunchPlan(composition, input, materialized, [
172
+ ...materialized.appendPromptPaths,
173
+ ...(input.appendPromptPaths ?? []),
174
+ ]);
175
+ return { rootDirectory: input.rootDirectory, launch, unsupported, warnings: [] };
139
176
  };
140
177
  //# sourceMappingURL=ProjectHarness.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ProjectHarness.js","sourceRoot":"","sources":["../../src/projection/ProjectHarness.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ProjectHarness.js","sourceRoot":"","sources":["../../src/projection/ProjectHarness.ts"],"names":[],"mappings":"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"}
@@ -10,6 +10,8 @@ export interface AgentProjectionPlan {
10
10
  readonly launch: AgentLaunchPlan;
11
11
  /** Composition elements the selected harness cannot project. */
12
12
  readonly unsupported: readonly string[];
13
+ /** Adapter limitations or malformed native configuration discovered during projection. */
14
+ readonly warnings: readonly string[];
13
15
  }
14
16
  export interface ProjectionInput {
15
17
  readonly harness: Harness;
@@ -0,0 +1,7 @@
1
+ import type { LoadedSettingsFile } from '../settings/SettingsLoader.js';
2
+ import type { SourceReference } from '../settings/Settings.js';
3
+ import type { DeclaredRemoteSource } from '../sources/TransitiveSources.js';
4
+ import type { EffectiveResourceSet } from './Resource.js';
5
+ export declare const strictAmbiguityFailureMessage = "Strict mode: ambiguous resolution is fatal.";
6
+ export declare const sourceRefAmbiguityWarnings: (files: readonly LoadedSettingsFile[], effectiveSources: readonly SourceReference[], transitiveDeclarations: readonly DeclaredRemoteSource[]) => readonly string[];
7
+ export declare const slugAmbiguityWarnings: (set: EffectiveResourceSet) => readonly string[];
@@ -0,0 +1,86 @@
1
+ import { encodeRemoteSourceSelection, isRemoteSource, normalizeGitUri, normalizeRemoteSourceUri, redactSourceUriCredentials, } from '../sources/SourceCache.js';
2
+ export const strictAmbiguityFailureMessage = 'Strict mode: ambiguous resolution is fatal.';
3
+ const repositoryKey = (source) => redactSourceUriCredentials(normalizeGitUri(normalizeRemoteSourceUri(source)));
4
+ const repositoryDisplay = (source) => {
5
+ if (source.github !== undefined)
6
+ return `github:${source.github}`;
7
+ return redactSourceUriCredentials(normalizeGitUri(source.uri));
8
+ };
9
+ const refDisplay = (source) => source.ref ?? '(default)';
10
+ const directDeclarations = (files) => [...files]
11
+ .reverse()
12
+ .flatMap((file) => (file.settings.sources ?? [])
13
+ .filter(isRemoteSource)
14
+ .map((source) => ({ source, declaredBy: file.location.path })));
15
+ const replacedSourceListWarnings = (files, effectiveSources) => {
16
+ const replacingIndex = files.findLastIndex((file) => file.settings.sources !== undefined);
17
+ if (replacingIndex < 1)
18
+ return [];
19
+ const replacingFile = files[replacingIndex];
20
+ const effectiveRepositories = new Set(effectiveSources.filter(isRemoteSource).map(repositoryKey));
21
+ const reportedRepositories = new Set();
22
+ const warnings = [];
23
+ for (const file of files.slice(0, replacingIndex).reverse()) {
24
+ for (const source of (file.settings.sources ?? []).filter(isRemoteSource)) {
25
+ const key = repositoryKey(source);
26
+ if (effectiveRepositories.has(key) || reportedRepositories.has(key))
27
+ continue;
28
+ reportedRepositories.add(key);
29
+ warnings.push(`source '${repositoryDisplay(source)}' declared by '${file.location.path}' was replaced by '${replacingFile.location.path}' and is not in the effective configuration`);
30
+ }
31
+ }
32
+ return warnings;
33
+ };
34
+ const selectedDeclarations = (effectiveSources, direct, transitive) => {
35
+ const selectedDirect = effectiveSources.filter(isRemoteSource).map((source) => {
36
+ const selection = encodeRemoteSourceSelection(source);
37
+ // Every effective direct source came from one of the loaded files used to produce settings.
38
+ return direct.find((entry) => encodeRemoteSourceSelection(entry.source) === selection);
39
+ });
40
+ return [...selectedDirect, ...transitive];
41
+ };
42
+ export const sourceRefAmbiguityWarnings = (files, effectiveSources, transitiveDeclarations) => {
43
+ const direct = directDeclarations(files);
44
+ const declarations = [...direct, ...transitiveDeclarations];
45
+ const selected = selectedDeclarations(effectiveSources, direct, transitiveDeclarations);
46
+ const byRepository = new Map();
47
+ for (const declaration of declarations) {
48
+ const key = repositoryKey(declaration.source);
49
+ const entries = byRepository.get(key) ?? [];
50
+ entries.push(declaration);
51
+ byRepository.set(key, entries);
52
+ }
53
+ const warnings = [...replacedSourceListWarnings(files, effectiveSources)];
54
+ for (const entries of byRepository.values()) {
55
+ if (new Set(entries.map((entry) => entry.source.ref)).size < 2)
56
+ continue;
57
+ const key = repositoryKey(entries[0].source);
58
+ const winner = selected.find((entry) => repositoryKey(entry.source) === key);
59
+ if (winner === undefined)
60
+ continue;
61
+ const declarationsText = entries
62
+ .map((entry) => `'${entry.declaredBy}' declares ref '${refDisplay(entry.source)}'`)
63
+ .join('; ');
64
+ warnings.push(`Ambiguous source repository '${repositoryDisplay(entries[0].source)}': ${declarationsText}; declaration from '${winner.declaredBy}' at ref '${refDisplay(winner.source)}' won.`);
65
+ }
66
+ return warnings;
67
+ };
68
+ const slugWarning = (kind, resource, context) => {
69
+ const definitions = [resource.winner, ...resource.shadowed];
70
+ const labels = [...new Set(definitions.map((definition) => definition.layer.label))];
71
+ if (labels.length < 2)
72
+ return undefined;
73
+ return `Ambiguous ${kind} slug '${resource.slug}'${context ?? ''} is supplied by ${labels.map((label) => `'${label}'`).join(', ')}; '${resource.winner.layer.label}' won.`;
74
+ };
75
+ const resourceWarnings = (kind, resources, context) => resources === undefined
76
+ ? []
77
+ : [...resources].flatMap((resource) => {
78
+ const warning = slugWarning(kind, resource, context);
79
+ return warning === undefined ? [] : [warning];
80
+ });
81
+ export const slugAmbiguityWarnings = (set) => [
82
+ ...resourceWarnings('agent', set.resources.get('agent')?.values()),
83
+ ...resourceWarnings('skill', set.resources.get('skill')?.values()),
84
+ ...[...set.agentResources].flatMap(([agent, kinds]) => resourceWarnings('skill', kinds.get('skill')?.values(), ` for agent '${agent}'`)),
85
+ ];
86
+ //# sourceMappingURL=AmbiguityWarnings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AmbiguityWarnings.js","sourceRoot":"","sources":["../../src/resolver/AmbiguityWarnings.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import type { RemoteSourceReference } from '../sources/SourceCache.js';
2
+ import type { DeclaredRemoteSource } from '../sources/TransitiveSources.js';
2
3
  import type { Settings } from '../settings/Settings.js';
3
4
  import type { Layer } from './Resource.js';
4
5
  export interface LayerDiscoveryInput {
@@ -13,6 +14,8 @@ export interface LayerDiscoveryInput {
13
14
  export declare const remoteSourceLayer: (repositoryPath: string, source: RemoteSourceReference) => Layer;
14
15
  export interface LayerDiscoveryResult {
15
16
  readonly layers: readonly Layer[];
17
+ /** Accepted transitive declarations, including duplicates, retained for ambiguity diagnostics. */
18
+ readonly transitiveDeclarations: readonly DeclaredRemoteSource[];
16
19
  /**
17
20
  * Configured remote sources whose cache is absent, reported with `outfitter sync` guidance rather
18
21
  * than silently dropped (OFTR-004.2.18). Reported, never fatal: a private catalog the enterprise
@@ -20,9 +23,12 @@ export interface LayerDiscoveryResult {
20
23
  * would deadlock every other command behind advice the user cannot act on (OFTR-004.2.15).
21
24
  */
22
25
  readonly unsynchronized: readonly string[];
26
+ /** Non-fatal transitive-source skip warnings (unpinned refs, path sources, invalid settings). */
27
+ readonly warnings: readonly string[];
23
28
  }
24
29
  /**
25
- * Orders layers highest precedence first: workspace `.agents`, then global `~/.agents`,
26
- * then configured sources in order. Only layers whose root exists on disk are included.
30
+ * Orders layers highest precedence first: workspace `.agents`, then global `~/.agents`, then
31
+ * configured sources in order, then transitive sources those catalogs declare, breadth-first
32
+ * (OFTR-004.6.1, OFTR-004.6.3). Only layers whose root exists on disk are included.
27
33
  */
28
34
  export declare const discoverLayers: (input: LayerDiscoveryInput) => LayerDiscoveryResult;