@ai-outfitter/outfitter 1.5.0 → 1.6.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 (72) 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/RunAgentCommand.js +76 -15
  12. package/dist/cli/commands/RunAgentCommand.js.map +1 -1
  13. package/dist/cli/commands/SyncCommand.d.ts +7 -3
  14. package/dist/cli/commands/SyncCommand.js +110 -20
  15. package/dist/cli/commands/SyncCommand.js.map +1 -1
  16. package/dist/projection/CodexMcp.d.ts +11 -0
  17. package/dist/projection/CodexMcp.js +143 -0
  18. package/dist/projection/CodexMcp.js.map +1 -0
  19. package/dist/projection/Materialize.d.ts +3 -1
  20. package/dist/projection/Materialize.js +7 -3
  21. package/dist/projection/Materialize.js.map +1 -1
  22. package/dist/projection/ProjectHarness.js +66 -29
  23. package/dist/projection/ProjectHarness.js.map +1 -1
  24. package/dist/projection/Projection.d.ts +2 -0
  25. package/dist/resolver/Layer.d.ts +5 -2
  26. package/dist/resolver/Layer.js +47 -8
  27. package/dist/resolver/Layer.js.map +1 -1
  28. package/dist/resolver/ResolverContext.d.ts +1 -1
  29. package/dist/resolver/ResolverContext.js +1 -1
  30. package/dist/resolver/ResolverContext.js.map +1 -1
  31. package/dist/resolver/ResolverValidation.d.ts +12 -1
  32. package/dist/resolver/ResolverValidation.js +30 -20
  33. package/dist/resolver/ResolverValidation.js.map +1 -1
  34. package/dist/schemas/settings.schema.json +1 -1
  35. package/dist/schemas/system-extension-hook.schema.json +38 -0
  36. package/dist/settings/Settings.d.ts +1 -1
  37. package/dist/settings/Settings.js +1 -1
  38. package/dist/settings/Settings.js.map +1 -1
  39. package/dist/settings/SettingsLoader.js.map +1 -1
  40. package/dist/setup/DefaultCatalog.d.ts +18 -0
  41. package/dist/setup/DefaultCatalog.js +74 -13
  42. package/dist/setup/DefaultCatalog.js.map +1 -1
  43. package/dist/sources/SourceCache.d.ts +20 -0
  44. package/dist/sources/SourceCache.js +31 -1
  45. package/dist/sources/SourceCache.js.map +1 -1
  46. package/dist/sources/TransitiveSources.d.ts +43 -0
  47. package/dist/sources/TransitiveSources.js +177 -0
  48. package/dist/sources/TransitiveSources.js.map +1 -0
  49. package/dist/system/SystemExtensionHook.d.ts +34 -0
  50. package/dist/system/SystemExtensionHook.js +190 -0
  51. package/dist/system/SystemExtensionHook.js.map +1 -0
  52. package/dist/validation/SchemaValidator.d.ts +1 -1
  53. package/dist/validation/SchemaValidator.js +2 -0
  54. package/dist/validation/SchemaValidator.js.map +1 -1
  55. package/docs/architecture/state_writeback_strategy.md +15 -3
  56. package/docs/documentation/README.md +14 -1
  57. package/docs/documentation/catalogs.md +61 -2
  58. package/docs/documentation/cli.md +2 -1
  59. package/docs/documentation/concepts.md +2 -2
  60. package/docs/documentation/hooks.md +33 -0
  61. package/docs/documentation/in-cluster.md +2 -0
  62. package/docs/documentation/migration.md +1 -1
  63. package/docs/documentation/personas.md +1 -1
  64. package/docs/documentation/settings.md +1 -1
  65. package/docs/documentation/state.md +27 -0
  66. package/docs/documentation/support-matrix.md +34 -23
  67. package/docs/documentation/usecases/org-onboarding-sdlc-report.md +143 -0
  68. package/docs/documentation/usecases/persona-reviews.md +1 -1
  69. package/docs/philosophy.md +20 -0
  70. package/package.json +1 -1
  71. package/src/schemas/settings.schema.json +1 -1
  72. package/src/schemas/system-extension-hook.schema.json +38 -0
@@ -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;
@@ -20,9 +20,12 @@ export interface LayerDiscoveryResult {
20
20
  * would deadlock every other command behind advice the user cannot act on (OFTR-004.2.15).
21
21
  */
22
22
  readonly unsynchronized: readonly string[];
23
+ /** Non-fatal transitive-source skip warnings (unpinned refs, path sources, invalid settings). */
24
+ readonly warnings: readonly string[];
23
25
  }
24
26
  /**
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.
27
+ * Orders layers highest precedence first: workspace `.agents`, then global `~/.agents`, then
28
+ * configured sources in order, then transitive sources those catalogs declare, breadth-first
29
+ * (OFTR-004.6.1, OFTR-004.6.3). Only layers whose root exists on disk are included.
27
30
  */
28
31
  export declare const discoverLayers: (input: LayerDiscoveryInput) => LayerDiscoveryResult;
@@ -1,14 +1,15 @@
1
1
  // Builds the ordered `.agents` layer stack (workspace over global over remote sources) from settings.
2
2
  import { existsSync } from 'node:fs';
3
3
  import { join } from 'node:path';
4
- import { createRemoteRepositoryCachePath, formatRemoteSourceDisplay, isRemoteSource, resolveRemoteRepositorySubpath, } from '../sources/SourceCache.js';
4
+ import { createRemoteRepositoryCachePath, encodeRemoteSourceSelection, formatRemoteSourceDisplay, isRemoteSource, resolveSourcePayloadRoot, } from '../sources/SourceCache.js';
5
+ import { expandTransitiveSources } from '../sources/TransitiveSources.js';
5
6
  const agentsRoot = (directory) => join(directory, '.agents');
6
7
  /**
7
8
  * Maps an already-materialized repository checkout to the layer `outfitter run` would resolve from
8
9
  * it. `outfitter sync` reuses this against its temporary checkout so both agree on the payload root.
9
10
  */
10
11
  export const remoteSourceLayer = (repositoryPath, source) => ({
11
- root: source.path === undefined ? repositoryPath : resolveRemoteRepositorySubpath(repositoryPath, source.path),
12
+ root: resolveSourcePayloadRoot(repositoryPath, source),
12
13
  origin: 'source',
13
14
  label: formatRemoteSourceDisplay(source),
14
15
  });
@@ -16,8 +17,9 @@ const sourceLayer = (input, source) => isRemoteSource(source)
16
17
  ? remoteSourceLayer(createRemoteRepositoryCachePath(input.homeDirectory, source, input.settings.cacheDirectory), source)
17
18
  : { root: source.path, origin: 'source', label: source.path };
18
19
  /**
19
- * Orders layers highest precedence first: workspace `.agents`, then global `~/.agents`,
20
- * then configured sources in order. Only layers whose root exists on disk are included.
20
+ * Orders layers highest precedence first: workspace `.agents`, then global `~/.agents`, then
21
+ * configured sources in order, then transitive sources those catalogs declare, breadth-first
22
+ * (OFTR-004.6.1, OFTR-004.6.3). Only layers whose root exists on disk are included.
21
23
  */
22
24
  export const discoverLayers = (input) => {
23
25
  const candidates = [
@@ -25,14 +27,51 @@ export const discoverLayers = (input) => {
25
27
  { root: agentsRoot(input.homeDirectory), origin: 'global', label: 'global' },
26
28
  ];
27
29
  const unsynchronized = [];
28
- for (const source of input.settings.sources ?? []) {
29
- const layer = sourceLayer(input, source);
30
+ const invalid = [];
31
+ const appendSourceLayer = (source) => {
32
+ // An absolute or escaping `path:` makes payload-root resolution throw; skip the source with a
33
+ // warning rather than crash every resolve command (list/validate/run/dump).
34
+ let layer;
35
+ try {
36
+ layer = sourceLayer(input, source);
37
+ }
38
+ catch {
39
+ invalid.push(`Configured source '${isRemoteSource(source) ? formatRemoteSourceDisplay(source) : source.path}' has an invalid path and was skipped.`);
40
+ return;
41
+ }
30
42
  if (isRemoteSource(source) && !existsSync(layer.root)) {
31
43
  unsynchronized.push(`Configured remote source '${layer.label}' is not synchronized at '${layer.root}'. Run 'outfitter sync' to fetch it.`);
32
- continue;
44
+ return;
33
45
  }
34
46
  candidates.push(layer);
47
+ };
48
+ // Deduplicate exact-duplicate configured sources so an identical entry listed twice yields one
49
+ // layer, not a self-shadowing pair (OFTR-004.6.6). Distinct subpaths stay distinct (path-aware).
50
+ const seenSources = new Set();
51
+ const directSources = (input.settings.sources ?? []).filter((source) => {
52
+ const key = isRemoteSource(source) ? encodeRemoteSourceSelection(source) : `path\0${source.path}`;
53
+ if (seenSources.has(key))
54
+ return false;
55
+ seenSources.add(key);
56
+ return true;
57
+ });
58
+ for (const source of directSources) {
59
+ appendSourceLayer(source);
60
+ }
61
+ const expansion = expandTransitiveSources({
62
+ directSources,
63
+ resolveCachedCheckoutRoot: (source) => {
64
+ const checkoutRoot = createRemoteRepositoryCachePath(input.homeDirectory, source, input.settings.cacheDirectory);
65
+ return existsSync(checkoutRoot) ? checkoutRoot : undefined;
66
+ },
67
+ });
68
+ for (const transitive of expansion.sources) {
69
+ appendSourceLayer(transitive.source);
35
70
  }
36
- return { layers: candidates.filter((layer) => existsSync(layer.root)), unsynchronized };
71
+ return {
72
+ layers: candidates.filter((layer) => existsSync(layer.root)),
73
+ unsynchronized,
74
+ warnings: [...invalid, ...expansion.warnings],
75
+ };
37
76
  };
38
77
  //# sourceMappingURL=Layer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Layer.js","sourceRoot":"","sources":["../../src/resolver/Layer.ts"],"names":[],"mappings":"AAAA,sGAAsG;AACtG,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EACL,+BAA+B,EAC/B,yBAAyB,EACzB,cAAc,EACd,8BAA8B,GAC/B,MAAM,2BAA2B,CAAC;AAWnC,MAAM,UAAU,GAAG,CAAC,SAAiB,EAAU,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;AAE7E;;;GAGG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,cAAsB,EAAE,MAA6B,EAAS,EAAE,CAAC,CAAC;IAClG,IAAI,EAAE,MAAM,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,8BAA8B,CAAC,cAAc,EAAE,MAAM,CAAC,IAAI,CAAC;IAC9G,MAAM,EAAE,QAAQ;IAChB,KAAK,EAAE,yBAAyB,CAAC,MAAM,CAAC;CACzC,CAAC,CAAC;AAEH,MAAM,WAAW,GAAG,CAAC,KAA0B,EAAE,MAAuB,EAAS,EAAE,CACjF,cAAc,CAAC,MAAM,CAAC;IACpB,CAAC,CAAC,iBAAiB,CACf,+BAA+B,CAAC,KAAK,CAAC,aAAa,EAAE,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC,cAAc,CAAC,EAC3F,MAAM,CACP;IACH,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;AAalE;;;GAGG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,KAA0B,EAAwB,EAAE;IACjF,MAAM,UAAU,GAAY;QAC1B,EAAE,IAAI,EAAE,UAAU,CAAC,KAAK,CAAC,gBAAgB,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE;QACrF,EAAE,IAAI,EAAE,UAAU,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE;KAC7E,CAAC;IACF,MAAM,cAAc,GAAa,EAAE,CAAC;IAEpC,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC;QAClD,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QACzC,IAAI,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YACtD,cAAc,CAAC,IAAI,CACjB,6BAA6B,KAAK,CAAC,KAAK,6BAA6B,KAAK,CAAC,IAAI,sCAAsC,CACtH,CAAC;YACF,SAAS;QACX,CAAC;QACD,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACzB,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,cAAc,EAAE,CAAC;AAC1F,CAAC,CAAC"}
1
+ {"version":3,"file":"Layer.js","sourceRoot":"","sources":["../../src/resolver/Layer.ts"],"names":[],"mappings":"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"}
@@ -10,7 +10,7 @@ export interface ResolveResult {
10
10
  /** The merged settings loaded during resolution, so callers need not reload them. */
11
11
  readonly settings: Settings;
12
12
  readonly settingsIssues: readonly SettingsLoadIssue[];
13
- /** Non-fatal `outfitter sync` guidance for configured remote sources with no cache. */
13
+ /** Non-fatal guidance: uncached remote sources plus transitive-source skip warnings. */
14
14
  readonly warnings: readonly string[];
15
15
  }
16
16
  /** The single shared resolution path used by list, validate, run, and dump. */
@@ -10,7 +10,7 @@ export const resolveEffectiveSet = (input) => {
10
10
  set: resolveResources(discovered.layers),
11
11
  settings: loadedSettings.settings,
12
12
  settingsIssues: loadedSettings.issues,
13
- warnings: discovered.unsynchronized,
13
+ warnings: [...discovered.unsynchronized, ...discovered.warnings],
14
14
  };
15
15
  };
16
16
  //# sourceMappingURL=ResolverContext.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ResolverContext.js","sourceRoot":"","sources":["../../src/resolver/ResolverContext.ts"],"names":[],"mappings":"AAAA,yFAAyF;AACzF,OAAO,EAAE,oCAAoC,EAAE,MAAM,+BAA+B,CAAC;AAGrF,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAgBjD,+EAA+E;AAC/E,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,KAAmB,EAAiB,EAAE;IACxE,MAAM,cAAc,GAAG,oCAAoC,CAAC,KAAK,CAAC,CAAC;IACnE,MAAM,UAAU,GAAG,cAAc,CAAC,EAAE,GAAG,KAAK,EAAE,QAAQ,EAAE,cAAc,CAAC,QAAQ,EAAE,CAAC,CAAC;IAEnF,OAAO;QACL,GAAG,EAAE,gBAAgB,CAAC,UAAU,CAAC,MAAM,CAAC;QACxC,QAAQ,EAAE,cAAc,CAAC,QAAQ;QACjC,cAAc,EAAE,cAAc,CAAC,MAAM;QACrC,QAAQ,EAAE,UAAU,CAAC,cAAc;KACpC,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"ResolverContext.js","sourceRoot":"","sources":["../../src/resolver/ResolverContext.ts"],"names":[],"mappings":"AAAA,yFAAyF;AACzF,OAAO,EAAE,oCAAoC,EAAE,MAAM,+BAA+B,CAAC;AAGrF,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAgBjD,+EAA+E;AAC/E,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,KAAmB,EAAiB,EAAE;IACxE,MAAM,cAAc,GAAG,oCAAoC,CAAC,KAAK,CAAC,CAAC;IACnE,MAAM,UAAU,GAAG,cAAc,CAAC,EAAE,GAAG,KAAK,EAAE,QAAQ,EAAE,cAAc,CAAC,QAAQ,EAAE,CAAC,CAAC;IAEnF,OAAO;QACL,GAAG,EAAE,gBAAgB,CAAC,UAAU,CAAC,MAAM,CAAC;QACxC,QAAQ,EAAE,cAAc,CAAC,QAAQ;QACjC,cAAc,EAAE,cAAc,CAAC,MAAM;QACrC,QAAQ,EAAE,CAAC,GAAG,UAAU,CAAC,cAAc,EAAE,GAAG,UAAU,CAAC,QAAQ,CAAC;KACjE,CAAC;AACJ,CAAC,CAAC"}
@@ -4,8 +4,19 @@ export interface ValidationFinding {
4
4
  readonly resource: string;
5
5
  readonly message: string;
6
6
  }
7
+ /**
8
+ * Options for {@link validateEffectiveSet}. `deferLoadoutResolution` downgrades an unresolved
9
+ * loadout slug reference from an error to a warning — used when validating a single remote source
10
+ * in isolation during `outfitter sync`, where a catalog may legitimately reference a skill supplied
11
+ * by a catalog it declares as a dependency (OFTR-004.6). Loadout wholeness is then authoritatively
12
+ * enforced against the merged effective set by `outfitter validate`; the run-time composer surfaces
13
+ * an unresolved reference as a non-fatal warning (OFTR-005.3.4), fatal only under `run --strict`.
14
+ */
15
+ export interface ValidationOptions {
16
+ readonly deferLoadoutResolution?: boolean;
17
+ }
7
18
  /**
8
19
  * Collects validation findings across the effective set. `error` findings always fail validation;
9
20
  * `warning` findings (such as shadowed definitions) fail only under `--strict`.
10
21
  */
11
- export declare const validateEffectiveSet: (set: EffectiveResourceSet, projectDirectory?: string) => readonly ValidationFinding[];
22
+ export declare const validateEffectiveSet: (set: EffectiveResourceSet, projectDirectory?: string, options?: ValidationOptions) => readonly ValidationFinding[];
@@ -3,8 +3,12 @@ import { compose } from '../composer/Composer.js';
3
3
  import { isSkillDocumentIssue, readSkillDocument } from '../skills/SkillDocument.js';
4
4
  import { isAgentDefinitionIssue, readAgentDefinition } from './AgentDefinition.js';
5
5
  import { agentLocalKinds, findResource, listAgentResources, listResources } from './Resource.js';
6
- const compositionWarningSeverity = (message) => /^loadout (?:skills|subagents) references unknown (?:skill|agent) '/.test(message) ? 'error' : 'warning';
7
- const validateAgent = (set, agent, projectDirectory) => {
6
+ // Matches the composer's top-level unresolved-loadout warning wording (see `compose` in Composer.ts).
7
+ // It is deliberately coupled to that message; `resolver-validation.test.ts` drives the real composer,
8
+ // so a wording drift fails that test rather than silently disabling deferral.
9
+ const isUnresolvedLoadoutReference = (message) => /^loadout (?:skills|subagents) references unknown (?:skill|agent) '/.test(message);
10
+ const compositionWarningSeverity = (message, options) => isUnresolvedLoadoutReference(message) && !options.deferLoadoutResolution ? 'error' : 'warning';
11
+ const validateAgent = (set, agent, options, projectDirectory) => {
8
12
  const definition = readAgentDefinition(agent.winner.path, agent.configPaths);
9
13
  if (isAgentDefinitionIssue(definition)) {
10
14
  return [{ severity: 'error', resource: `agent:${agent.slug}`, message: definition.message }];
@@ -22,7 +26,7 @@ const validateAgent = (set, agent, projectDirectory) => {
22
26
  const compositionFindings = [
23
27
  ...composed.errors.map((message) => ({ severity: 'error', resource: `agent:${agent.slug}`, message })),
24
28
  ...composed.warnings.map((message) => ({
25
- severity: compositionWarningSeverity(message),
29
+ severity: compositionWarningSeverity(message, options),
26
30
  resource: `agent:${agent.slug}`,
27
31
  message,
28
32
  })),
@@ -76,34 +80,40 @@ const deduplicateFindings = (findings) => {
76
80
  }
77
81
  return [...deduplicated.values()];
78
82
  };
83
+ // Validates one agent's local resources: the owning agent must resolve, and each local skill is
84
+ // document-checked; knowledge/commands are opaque file trees today, so only shadowing is surfaced.
85
+ const validateAgentLocalResources = (set, agentSlug) => {
86
+ const findings = [];
87
+ if (findResource(set, 'agent', agentSlug) === undefined) {
88
+ findings.push({
89
+ severity: 'error',
90
+ resource: `agent:${agentSlug}`,
91
+ message: 'agent-local resources require a resolvable owning agent.',
92
+ });
93
+ }
94
+ for (const kind of agentLocalKinds) {
95
+ for (const resource of listAgentResources(set, agentSlug, kind)) {
96
+ findings.push(...shadowFindings(resource));
97
+ if (kind === 'skill')
98
+ findings.push(...validateSkill(resource));
99
+ }
100
+ }
101
+ return findings;
102
+ };
79
103
  /**
80
104
  * Collects validation findings across the effective set. `error` findings always fail validation;
81
105
  * `warning` findings (such as shadowed definitions) fail only under `--strict`.
82
106
  */
83
- export const validateEffectiveSet = (set, projectDirectory) => {
107
+ export const validateEffectiveSet = (set, projectDirectory, options = {}) => {
84
108
  const findings = [];
85
109
  for (const agent of listResources(set, 'agent')) {
86
- findings.push(...validateAgent(set, agent, projectDirectory), ...reservedNamespaceFindings(agent));
110
+ findings.push(...validateAgent(set, agent, options, projectDirectory), ...reservedNamespaceFindings(agent));
87
111
  }
88
112
  for (const skill of listResources(set, 'skill')) {
89
113
  findings.push(...validateSkill(skill));
90
114
  }
91
115
  for (const [agentSlug] of set.agentResources) {
92
- if (findResource(set, 'agent', agentSlug) === undefined) {
93
- findings.push({
94
- severity: 'error',
95
- resource: `agent:${agentSlug}`,
96
- message: 'agent-local resources require a resolvable owning agent.',
97
- });
98
- }
99
- for (const kind of agentLocalKinds) {
100
- for (const resource of listAgentResources(set, agentSlug, kind)) {
101
- findings.push(...shadowFindings(resource));
102
- // Only skills have a document reader today; knowledge/commands are opaque file trees.
103
- if (kind === 'skill')
104
- findings.push(...validateSkill(resource));
105
- }
106
- }
116
+ findings.push(...validateAgentLocalResources(set, agentSlug));
107
117
  }
108
118
  for (const kind of ['agent', 'skill', 'knowledge', 'command']) {
109
119
  for (const resource of listResources(set, kind)) {
@@ -1 +1 @@
1
- {"version":3,"file":"ResolverValidation.js","sourceRoot":"","sources":["../../src/resolver/ResolverValidation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ResolverValidation.js","sourceRoot":"","sources":["../../src/resolver/ResolverValidation.ts"],"names":[],"mappings":"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"}
@@ -5,7 +5,7 @@
5
5
  "type": "object",
6
6
  "properties": {
7
7
  "default_agent": { "type": "string", "minLength": 1 },
8
- "default_harness": { "enum": ["pi", "claude"] },
8
+ "default_harness": { "enum": ["pi", "claude", "codex"] },
9
9
  "cache_directory": { "type": "string", "minLength": 1 },
10
10
  "state_persistence": {
11
11
  "type": "object",
@@ -0,0 +1,38 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://outfitter.dev/schemas/system-extension-hook.schema.json",
4
+ "title": "Outfitter system extension hook",
5
+ "type": "object",
6
+ "required": ["name", "harnesses"],
7
+ "properties": {
8
+ "name": { "type": "string", "minLength": 1 },
9
+ "harnesses": {
10
+ "type": "object",
11
+ "minProperties": 1,
12
+ "properties": {
13
+ "pi": { "$ref": "#/$defs/harnessHook" },
14
+ "claude": { "$ref": "#/$defs/harnessHook" },
15
+ "codex": { "$ref": "#/$defs/harnessHook" }
16
+ },
17
+ "additionalProperties": false
18
+ }
19
+ },
20
+ "additionalProperties": false,
21
+ "$defs": {
22
+ "harnessHook": {
23
+ "type": "object",
24
+ "properties": {
25
+ "extensions": {
26
+ "type": "array",
27
+ "items": { "type": "string", "pattern": "^/" }
28
+ },
29
+ "env": {
30
+ "type": "object",
31
+ "propertyNames": { "pattern": "^[A-Za-z_][A-Za-z0-9_]*$" },
32
+ "additionalProperties": { "type": "string" }
33
+ }
34
+ },
35
+ "additionalProperties": false
36
+ }
37
+ }
38
+ }
@@ -7,7 +7,7 @@ export type SettingsValue = string | number | boolean | null | readonly Settings
7
7
  };
8
8
  export type CustomSettings = Readonly<Record<string, SettingsValue>>;
9
9
  /** Harnesses Outfitter can launch a composed agent in. */
10
- export declare const HARNESSES: readonly ["pi", "claude"];
10
+ export declare const HARNESSES: readonly ["pi", "claude", "codex"];
11
11
  export type Harness = (typeof HARNESSES)[number];
12
12
  /** Functional persistence strategies for adapter-declared state paths. */
13
13
  export type StatePersistenceStrategy = 'symlink' | 'discard' | 'warn' | 'error' | 'prompt';
@@ -1,5 +1,5 @@
1
1
  /** Harnesses Outfitter can launch a composed agent in. */
2
- export const HARNESSES = ['pi', 'claude'];
2
+ export const HARNESSES = ['pi', 'claude', 'codex'];
3
3
  export const emptySettings = () => ({
4
4
  sources: [],
5
5
  remoteSettings: [],
@@ -1 +1 @@
1
- {"version":3,"file":"Settings.js","sourceRoot":"","sources":["../../src/settings/Settings.ts"],"names":[],"mappings":"AAQA,0DAA0D;AAC1D,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAU,CAAC;AAuCnD,MAAM,CAAC,MAAM,aAAa,GAAG,GAAa,EAAE,CAAC,CAAC;IAC5C,OAAO,EAAE,EAAE;IACX,cAAc,EAAE,EAAE;CACnB,CAAC,CAAC"}
1
+ {"version":3,"file":"Settings.js","sourceRoot":"","sources":["../../src/settings/Settings.ts"],"names":[],"mappings":"AAQA,0DAA0D;AAC1D,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAU,CAAC;AAuC5D,MAAM,CAAC,MAAM,aAAa,GAAG,GAAa,EAAE,CAAC,CAAC;IAC5C,OAAO,EAAE,EAAE;IACX,cAAc,EAAE,EAAE;CACnB,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"SettingsLoader.js","sourceRoot":"","sources":["../../src/settings/SettingsLoader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SettingsLoader.js","sourceRoot":"","sources":["../../src/settings/SettingsLoader.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,7 @@
1
+ import { syncRemoteRepositoryAtomically } from '../sources/GitRepository.js';
1
2
  import type { RemoteSourceReference } from '../sources/SourceCache.js';
3
+ /** Fetches one repository into the cache. Injectable so tests exercise bootstrap hermetically. */
4
+ export type RepositorySync = typeof syncRemoteRepositoryAtomically;
2
5
  export declare const defaultCatalogSource: {
3
6
  readonly github: "ai-outfitter/default-profiles";
4
7
  readonly ref: "v1.1.0";
@@ -9,6 +12,13 @@ export interface PinnedCatalogBootstrapInput {
9
12
  readonly source: RemoteSourceReference & {
10
13
  readonly ref: string;
11
14
  };
15
+ readonly syncRepository?: RepositorySync;
16
+ /**
17
+ * Proves a fetched checkout is a usable catalog. Defaults to requiring `agents/` — the picker root
18
+ * must offer agents — but a dependency may legitimately ship only skills, so the closure relaxes
19
+ * this to any recognized `.agents` payload directory.
20
+ */
21
+ readonly requirePayload?: (root: string) => boolean;
12
22
  }
13
23
  export interface PinnedCatalogBootstrapResult {
14
24
  readonly root: string;
@@ -18,4 +28,12 @@ export interface PinnedCatalogBootstrapResult {
18
28
  }
19
29
  /** Fetches one immutable catalog revision into the same cache path used by normal source resolution. */
20
30
  export declare const bootstrapPinnedCatalog: (input: PinnedCatalogBootstrapInput) => PinnedCatalogBootstrapResult;
31
+ /**
32
+ * Bootstraps a pinned catalog and the pinned `github:` closure it declares, so a fresh install can
33
+ * resolve a default profile whose skills live in a depended-on catalog (the founder profile's
34
+ * persona skills, shipped by community-profiles) without a manual `outfitter sync`. The root failing
35
+ * to fetch is fatal (existing behavior); a declared dependency failing to fetch is best-effort —
36
+ * resolution reports it as unsynchronized rather than blocking setup on it.
37
+ */
38
+ export declare const bootstrapPinnedClosure: (input: PinnedCatalogBootstrapInput) => PinnedCatalogBootstrapResult;
21
39
  export declare const bootstrapDefaultCatalog: (homeDirectory: string, cacheDirectory?: string) => PinnedCatalogBootstrapResult;