ocmm 0.5.4 → 0.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 (195) hide show
  1. package/.codex/agents/dw-builder.toml +1 -1
  2. package/.codex/agents/dw-clarifier.toml +1 -1
  3. package/.codex/agents/dw-code-search.toml +1 -1
  4. package/.codex/agents/dw-coding.toml +1 -1
  5. package/.codex/agents/dw-complex.toml +1 -1
  6. package/.codex/agents/dw-creative.toml +1 -1
  7. package/.codex/agents/dw-deep.toml +1 -1
  8. package/.codex/agents/dw-doc-search.toml +1 -1
  9. package/.codex/agents/dw-documenting.toml +1 -1
  10. package/.codex/agents/dw-explore.toml +1 -1
  11. package/.codex/agents/dw-frontend.toml +1 -1
  12. package/.codex/agents/dw-hard-reasoning.toml +1 -1
  13. package/.codex/agents/dw-media-reader.toml +1 -1
  14. package/.codex/agents/dw-normal-task.toml +1 -1
  15. package/.codex/agents/dw-oracle-2nd.toml +8 -0
  16. package/.codex/agents/dw-oracle.toml +1 -1
  17. package/.codex/agents/dw-orchestrator.toml +1 -1
  18. package/.codex/agents/dw-plan-critic.toml +1 -1
  19. package/.codex/agents/dw-planner.toml +1 -1
  20. package/.codex/agents/dw-quick.toml +1 -1
  21. package/.codex/agents/dw-research.toml +1 -1
  22. package/.codex/agents/dw-reviewer.toml +1 -1
  23. package/README.md +158 -13
  24. package/dist/cli/shim.d.ts +4 -2
  25. package/dist/cli/shim.js +26 -11
  26. package/dist/cli/shim.js.map +1 -1
  27. package/dist/codex/plugin-generator.js +82 -56
  28. package/dist/codex/plugin-generator.js.map +1 -1
  29. package/dist/config/load.d.ts +32 -23
  30. package/dist/config/load.js +384 -90
  31. package/dist/config/load.js.map +1 -1
  32. package/dist/config/merge.d.ts +18 -0
  33. package/dist/config/merge.js +46 -0
  34. package/dist/config/merge.js.map +1 -0
  35. package/dist/config/normalize.d.ts +1 -0
  36. package/dist/config/normalize.js +22 -16
  37. package/dist/config/normalize.js.map +1 -1
  38. package/dist/config/profile-aliases.d.ts +12 -0
  39. package/dist/config/profile-aliases.js +127 -0
  40. package/dist/config/profile-aliases.js.map +1 -0
  41. package/dist/config/profile-types.d.ts +13 -0
  42. package/dist/config/profile-types.js +2 -0
  43. package/dist/config/profile-types.js.map +1 -0
  44. package/dist/config/review-agent-migration.d.ts +89 -0
  45. package/dist/config/review-agent-migration.js +237 -0
  46. package/dist/config/review-agent-migration.js.map +1 -0
  47. package/dist/config/schema.d.ts +1364 -222
  48. package/dist/config/schema.js +169 -37
  49. package/dist/config/schema.js.map +1 -1
  50. package/dist/config/tolerant-parse.d.ts +41 -0
  51. package/dist/config/tolerant-parse.js +164 -0
  52. package/dist/config/tolerant-parse.js.map +1 -0
  53. package/dist/data/agents.d.ts +1 -1
  54. package/dist/data/agents.js +7 -7
  55. package/dist/data/agents.js.map +1 -1
  56. package/dist/hooks/chat-params.d.ts +2 -0
  57. package/dist/hooks/chat-params.js +113 -4
  58. package/dist/hooks/chat-params.js.map +1 -1
  59. package/dist/hooks/config.d.ts +14 -2
  60. package/dist/hooks/config.js +538 -60
  61. package/dist/hooks/config.js.map +1 -1
  62. package/dist/hooks/event.d.ts +3 -11
  63. package/dist/hooks/event.js +5 -9
  64. package/dist/hooks/event.js.map +1 -1
  65. package/dist/index.js +21 -14
  66. package/dist/index.js.map +1 -1
  67. package/dist/permissions/index.d.ts +3 -0
  68. package/dist/permissions/index.js +43 -28
  69. package/dist/permissions/index.js.map +1 -1
  70. package/dist/review-agents/expand.d.ts +36 -0
  71. package/dist/review-agents/expand.js +157 -0
  72. package/dist/review-agents/expand.js.map +1 -0
  73. package/dist/review-agents/names.d.ts +16 -0
  74. package/dist/review-agents/names.js +55 -0
  75. package/dist/review-agents/names.js.map +1 -0
  76. package/dist/routing/effective-route.d.ts +19 -0
  77. package/dist/routing/effective-route.js +133 -0
  78. package/dist/routing/effective-route.js.map +1 -0
  79. package/dist/routing/model-upgrades.d.ts +5 -0
  80. package/dist/routing/model-upgrades.js +59 -12
  81. package/dist/routing/model-upgrades.js.map +1 -1
  82. package/dist/routing/resolver.d.ts +8 -1
  83. package/dist/routing/resolver.js +29 -9
  84. package/dist/routing/resolver.js.map +1 -1
  85. package/dist/routing/route-registry.d.ts +13 -0
  86. package/dist/routing/route-registry.js +84 -0
  87. package/dist/routing/route-registry.js.map +1 -0
  88. package/dist/runtime-fallback/dispatcher.d.ts +1 -0
  89. package/dist/runtime-fallback/dispatcher.js +7 -5
  90. package/dist/runtime-fallback/dispatcher.js.map +1 -1
  91. package/dist/runtime-fallback/error-classifier.d.ts +3 -1
  92. package/dist/runtime-fallback/error-classifier.js +135 -1
  93. package/dist/runtime-fallback/error-classifier.js.map +1 -1
  94. package/dist/runtime-fallback/event-handler-generic-fallback.d.ts +26 -0
  95. package/dist/runtime-fallback/event-handler-generic-fallback.js +54 -0
  96. package/dist/runtime-fallback/event-handler-generic-fallback.js.map +1 -0
  97. package/dist/runtime-fallback/event-handler-idle-continuation.d.ts +9 -0
  98. package/dist/runtime-fallback/event-handler-idle-continuation.js +48 -0
  99. package/dist/runtime-fallback/event-handler-idle-continuation.js.map +1 -0
  100. package/dist/runtime-fallback/event-handler-support.d.ts +39 -0
  101. package/dist/runtime-fallback/event-handler-support.js +194 -0
  102. package/dist/runtime-fallback/event-handler-support.js.map +1 -0
  103. package/dist/runtime-fallback/event-handler-test-fixtures.d.ts +874 -0
  104. package/dist/runtime-fallback/event-handler-test-fixtures.js +150 -0
  105. package/dist/runtime-fallback/event-handler-test-fixtures.js.map +1 -0
  106. package/dist/runtime-fallback/event-handler.d.ts +13 -1
  107. package/dist/runtime-fallback/event-handler.js +334 -192
  108. package/dist/runtime-fallback/event-handler.js.map +1 -1
  109. package/dist/runtime-fallback/fallback-state.d.ts +8 -5
  110. package/dist/runtime-fallback/fallback-state.js +9 -6
  111. package/dist/runtime-fallback/fallback-state.js.map +1 -1
  112. package/dist/runtime-fallback/index.d.ts +21 -1
  113. package/dist/runtime-fallback/index.js +7 -1
  114. package/dist/runtime-fallback/index.js.map +1 -1
  115. package/dist/runtime-fallback/interruption-output-adapter.d.ts +7 -0
  116. package/dist/runtime-fallback/interruption-output-adapter.js +91 -0
  117. package/dist/runtime-fallback/interruption-output-adapter.js.map +1 -0
  118. package/dist/runtime-fallback/subagent-429-controller-fixture.d.ts +105 -0
  119. package/dist/runtime-fallback/subagent-429-controller-fixture.js +116 -0
  120. package/dist/runtime-fallback/subagent-429-controller-fixture.js.map +1 -0
  121. package/dist/runtime-fallback/subagent-429-controller.d.ts +167 -0
  122. package/dist/runtime-fallback/subagent-429-controller.js +334 -0
  123. package/dist/runtime-fallback/subagent-429-controller.js.map +1 -0
  124. package/dist/runtime-fallback/subagent-429-policy.d.ts +13 -0
  125. package/dist/runtime-fallback/subagent-429-policy.js +37 -0
  126. package/dist/runtime-fallback/subagent-429-policy.js.map +1 -0
  127. package/dist/runtime-fallback/subagent-429-session.d.ts +48 -0
  128. package/dist/runtime-fallback/subagent-429-session.js +316 -0
  129. package/dist/runtime-fallback/subagent-429-session.js.map +1 -0
  130. package/dist/shared/opencode-events.d.ts +22 -0
  131. package/dist/shared/opencode-events.js +75 -0
  132. package/dist/shared/opencode-events.js.map +1 -0
  133. package/dist/shared/types.d.ts +12 -1
  134. package/package.json +1 -1
  135. package/plugins/deepwork/.codex-plugin/plugin.json +1 -1
  136. package/plugins/deepwork/README.md +2 -1
  137. package/plugins/deepwork/agents/dw-builder.toml +1 -1
  138. package/plugins/deepwork/agents/dw-clarifier.toml +1 -1
  139. package/plugins/deepwork/agents/dw-code-search.toml +1 -1
  140. package/plugins/deepwork/agents/dw-coding.toml +1 -1
  141. package/plugins/deepwork/agents/dw-complex.toml +1 -1
  142. package/plugins/deepwork/agents/dw-creative.toml +1 -1
  143. package/plugins/deepwork/agents/dw-deep.toml +1 -1
  144. package/plugins/deepwork/agents/dw-doc-search.toml +1 -1
  145. package/plugins/deepwork/agents/dw-documenting.toml +1 -1
  146. package/plugins/deepwork/agents/dw-explore.toml +1 -1
  147. package/plugins/deepwork/agents/dw-frontend.toml +1 -1
  148. package/plugins/deepwork/agents/dw-hard-reasoning.toml +1 -1
  149. package/plugins/deepwork/agents/dw-media-reader.toml +1 -1
  150. package/plugins/deepwork/agents/dw-normal-task.toml +1 -1
  151. package/plugins/deepwork/agents/dw-oracle-2nd.toml +8 -0
  152. package/plugins/deepwork/agents/dw-oracle.toml +1 -1
  153. package/plugins/deepwork/agents/dw-orchestrator.toml +1 -1
  154. package/plugins/deepwork/agents/dw-plan-critic.toml +1 -1
  155. package/plugins/deepwork/agents/dw-planner.toml +1 -1
  156. package/plugins/deepwork/agents/dw-quick.toml +1 -1
  157. package/plugins/deepwork/agents/dw-research.toml +1 -1
  158. package/plugins/deepwork/agents/dw-reviewer.toml +1 -1
  159. package/plugins/deepwork/dist/cli/shim.d.ts +4 -2
  160. package/plugins/deepwork/dist/cli/shim.js +26 -11
  161. package/plugins/deepwork/dist/cli/shim.js.map +1 -1
  162. package/plugins/deepwork/dist/shared/opencode-events.d.ts +22 -0
  163. package/plugins/deepwork/dist/shared/opencode-events.js +75 -0
  164. package/plugins/deepwork/dist/shared/opencode-events.js.map +1 -0
  165. package/plugins/deepwork/dist/shared/types.d.ts +12 -1
  166. package/plugins/deepwork/package.json +1 -1
  167. package/plugins/deepwork/skills/deepwork/SKILL.md +30 -14
  168. package/plugins/deepwork/skills/deepwork-requesting-code-review/SKILL.md +53 -31
  169. package/plugins/deepwork/skills/deepwork-requesting-code-review/code-reviewer.md +11 -7
  170. package/plugins/deepwork/skills/deepwork-subagent-driven-development/SKILL.md +28 -19
  171. package/plugins/deepwork/skills/deepwork-subagent-driven-development/implementer-prompt.md +10 -3
  172. package/prompts/codex/agents/clarifier.md +4 -0
  173. package/prompts/codex/agents/orchestrator.md +12 -2
  174. package/prompts/codex/agents/plan-critic.md +4 -0
  175. package/prompts/codex/agents/planner.md +15 -10
  176. package/prompts/codex/agents/reviewer.md +8 -2
  177. package/prompts/codex/deepwork/gpt-5.6.md +20 -37
  178. package/prompts/omo/agents/clarifier.md +4 -0
  179. package/prompts/omo/agents/orchestrator.md +11 -0
  180. package/prompts/omo/agents/plan-critic.md +4 -0
  181. package/prompts/omo/agents/planner.md +15 -3
  182. package/prompts/omo/agents/reviewer.md +8 -2
  183. package/prompts/omo/deepwork/gpt-5.6.md +20 -37
  184. package/prompts/v1/agents/clarifier.md +4 -0
  185. package/prompts/v1/agents/orchestrator.md +12 -2
  186. package/prompts/v1/agents/plan-critic.md +4 -0
  187. package/prompts/v1/agents/planner.md +15 -10
  188. package/prompts/v1/agents/reviewer.md +8 -2
  189. package/prompts/v1/deepwork/gpt-5.6.md +20 -37
  190. package/skills/v1/requesting-code-review/SKILL.md +53 -31
  191. package/skills/v1/requesting-code-review/code-reviewer.md +11 -7
  192. package/skills/v1/subagent-driven-development/SKILL.md +28 -19
  193. package/skills/v1/subagent-driven-development/implementer-prompt.md +10 -3
  194. package/.codex/agents/dw-oracle-high.toml +0 -8
  195. package/plugins/deepwork/agents/dw-oracle-high.toml +0 -8
@@ -2,15 +2,34 @@
2
2
  * Config file loader.
3
3
  *
4
4
  * Reads ocmm.json / ocmm.jsonc from project + user locations, parses (with
5
- * minimal JSONC support strip comments & trailing commas), validates with
5
+ * minimal JSONC support - strip comments & trailing commas), validates with
6
6
  * Zod, then deep-merges (project wins). Missing files are silently tolerated.
7
+ *
8
+ * Before schema validation, every base layer's `agents` map and every
9
+ * inline/directory profile's `agents` map is canonicalized through the
10
+ * review-agent migration phase (`./review-agent-migration.ts`). Legacy
11
+ * `agents.oracle-high` migrates to `agents.oracle-2nd` with a source-aware
12
+ * deprecation warning; the `oracle-second` alias migrates silently. Different
13
+ * spellings targeting `oracle-2nd` across active layers are conflicts: the pure
14
+ * preparation APIs throw `ReviewConfigConflictError`, and `loadConfig()`
15
+ * catches that and returns defaults.
7
16
  */
8
17
  import { existsSync, readdirSync, readFileSync } from "node:fs";
9
18
  import { homedir } from "node:os";
10
19
  import { join, resolve } from "node:path";
11
- import { defaultConfig, OcmmConfigSchema } from "./schema.js";
20
+ import { z } from "zod";
21
+ import { AgentEntrySchema, defaultConfig, OcmmConfigSchema, ProfileEntrySchema } from "./schema.js";
22
+ import { tolerantParse, tolerantParseLayers } from "./tolerant-parse.js";
12
23
  import { log } from "../shared/logger.js";
24
+ import { deepMerge, isPlainObject } from "./merge.js";
25
+ import { materializeQualifiedAgentAliases } from "./profile-aliases.js";
26
+ import { assertSelectedReviewProfileCompatible, prepareConfigLayers, prepareReviewProfile, ReviewConfigConflictError, } from "./review-agent-migration.js";
27
+ export { deepMerge } from "./merge.js";
13
28
  const FILE_BASENAMES = ["ocmm.jsonc", "ocmm.json"];
29
+ const rawDirectoryProfileValues = new WeakMap();
30
+ const ProfileSelectionSchema = z.object({
31
+ activeProfile: z.string().optional(),
32
+ });
14
33
  function userConfigDir(host) {
15
34
  if (host === "codex")
16
35
  return process.env.CODEX_HOME ?? join(homedir(), ".codex");
@@ -82,22 +101,7 @@ function locateFile(dir) {
82
101
  }
83
102
  return null;
84
103
  }
85
- function isPlainObject(v) {
86
- return typeof v === "object" && v !== null && !Array.isArray(v);
87
- }
88
- /**
89
- * Load profile entries from a directory of `<name>.jsonc` / `<name>.json` files.
90
- *
91
- * Each file is parsed (JSONC) and returned under its basename (extension
92
- * stripped). Parse failures are warned and skipped. `profiles` and
93
- * `activeProfile` keys are defensively stripped from each entry to prevent
94
- * nested-profile leakage (ProfileEntrySchema forbids them, but this function
95
- * does not run schema validation — the merge step would otherwise leak them).
96
- *
97
- * `.jsonc` is preferred when both `<name>.jsonc` and `<name>.json` exist.
98
- * Returns `{}` if the directory does not exist or is empty.
99
- */
100
- export function loadProfilesFromDir(dir) {
104
+ export function loadProfileEntriesFromDir(dir) {
101
105
  let entries;
102
106
  try {
103
107
  entries = readdirSync(dir);
@@ -115,7 +119,7 @@ export function loadProfilesFromDir(dir) {
115
119
  // If we already have a .jsonc version, skip .json.
116
120
  if (ext === "json" && seen.has(baseName + ":jsonc"))
117
121
  continue;
118
- const path = join(dir, name);
122
+ const path = resolve(join(dir, name));
119
123
  const raw = readFileSync(path, "utf8");
120
124
  let parsed;
121
125
  try {
@@ -143,114 +147,352 @@ export function loadProfilesFromDir(dir) {
143
147
  if (stripped) {
144
148
  log.warn(`profile ${path} contained profiles/activeProfile; stripped`);
145
149
  }
146
- out[baseName] = cleaned;
150
+ out[baseName] = { source: path, value: cleaned };
147
151
  seen.add(baseName + ":" + ext);
148
152
  }
149
153
  return out;
150
154
  }
151
155
  /**
152
- * Deep-merge two plain-object trees.
153
- *
154
- * Default array policy: REPLACE (override wins) for predictable override
155
- * semantics. Model fallback and feature-disable arrays are UNIONED de-duped
156
- * instead — these accumulate across user+project layers so global/project
157
- * gates compose predictably.
158
- *
159
- * Pass `{ profileOverlay: true }` to force ALL arrays to replace (use when
160
- * overlaying a profile that should fully own a field rather than accumulate).
156
+ * Backward-compatible wrapper returning the profile value only.
161
157
  */
162
- export function deepMerge(base, override, parentKey, opts) {
163
- if (override === undefined)
164
- return base;
165
- if (Array.isArray(base) && Array.isArray(override)) {
166
- if (opts?.profileOverlay)
167
- return override;
168
- if (parentKey && ACCUMULATING_ARRAY_KEYS.has(parentKey)) {
169
- const set = new Set([...base, ...override].map((x) => String(x)));
170
- return Array.from(set);
171
- }
172
- return override;
158
+ export function loadProfilesFromDir(dir) {
159
+ const entries = loadProfileEntriesFromDir(dir);
160
+ const out = {};
161
+ for (const [name, entry] of Object.entries(entries)) {
162
+ out[name] = entry.value;
173
163
  }
174
- if (isPlainObject(base) && isPlainObject(override)) {
175
- const out = { ...base };
176
- for (const [k, v] of Object.entries(override)) {
177
- out[k] = deepMerge(base[k], v, k, opts);
164
+ return out;
165
+ }
166
+ export function loadProfileDescriptorsFromDir(dir, source) {
167
+ let entries;
168
+ try {
169
+ entries = readdirSync(dir);
170
+ }
171
+ catch {
172
+ return new Map();
173
+ }
174
+ const grouped = new Map();
175
+ for (const fileName of entries) {
176
+ if (!fileName.endsWith(".jsonc") && !fileName.endsWith(".json"))
177
+ continue;
178
+ const baseName = fileName.replace(/\.(jsonc|json)$/, "");
179
+ const files = grouped.get(baseName) ?? {};
180
+ if (fileName.endsWith(".jsonc"))
181
+ files.jsonc = fileName;
182
+ else
183
+ files.json = fileName;
184
+ grouped.set(baseName, files);
185
+ }
186
+ const descriptors = new Map();
187
+ for (const [name, files] of [...grouped.entries()].sort(([left], [right]) => left.localeCompare(right))) {
188
+ const fileName = files.jsonc ?? files.json;
189
+ if (!fileName)
190
+ continue;
191
+ const path = resolve(join(dir, fileName));
192
+ const descriptor = { name, source, path };
193
+ let parsed;
194
+ try {
195
+ parsed = JSON.parse(stripJsoncCommentsAndTrailingCommas(readFileSync(path, "utf8")));
196
+ descriptor.value = parsed;
178
197
  }
179
- return out;
198
+ catch (err) {
199
+ descriptor.error = { kind: "parse", message: err.message };
200
+ descriptors.set(name, descriptor);
201
+ continue;
202
+ }
203
+ const prepared = prepareProfileDescriptorValue(name, path, parsed);
204
+ descriptor.value = prepared.value;
205
+ if (prepared.error)
206
+ descriptor.error = prepared.error;
207
+ else
208
+ rawDirectoryProfileValues.set(descriptor, parsed);
209
+ descriptors.set(name, descriptor);
180
210
  }
181
- return override;
211
+ return descriptors;
182
212
  }
183
- const ACCUMULATING_ARRAY_KEYS = new Set([
184
- "fallbackModels",
185
- "disabledAgents",
186
- "disabledHooks",
187
- "disabledTools",
188
- "disabledSkills",
189
- "disabledCommands",
190
- "disabledMcps",
191
- ]);
192
- export function loadConfig(opts = {}) {
213
+ function prepareProfileDescriptorValue(name, source, value) {
214
+ const structuralError = profileDescriptorStructuralError(name, source, value);
215
+ if (structuralError)
216
+ return { value, error: structuralError };
217
+ let prepared;
218
+ try {
219
+ prepared = prepareReviewProfile({ name, source, value }, () => { });
220
+ }
221
+ catch (err) {
222
+ return { value, error: { kind: "shape", message: err.message } };
223
+ }
224
+ return sanitizeProfileDescriptorLayers(name, source, selectedProfileLayers([prepared]));
225
+ }
226
+ function profileDescriptorStructuralError(name, source, value) {
227
+ if (!isPlainObject(value)) {
228
+ return { kind: "shape", message: `profile ${name} in ${source} is not a JSON object` };
229
+ }
230
+ if ("profiles" in value || "activeProfile" in value) {
231
+ return { kind: "shape", message: `profile ${name} in ${source} cannot contain profiles or activeProfile` };
232
+ }
233
+ return undefined;
234
+ }
235
+ function sanitizeProfileDescriptorLayers(name, source, layers) {
236
+ const result = tolerantParseLayers(ProfileEntrySchema, layers, mergeConfigLayers);
237
+ if (result.success)
238
+ return { value: mergeConfigLayers(result.layers) };
239
+ return {
240
+ value: mergeConfigLayers(layers),
241
+ error: { kind: "shape", message: `profile ${name} in ${source} failed schema validation` },
242
+ };
243
+ }
244
+ function reviewWarn(message) {
245
+ log.warn(message);
246
+ }
247
+ function locateConfigLayers(opts = {}) {
193
248
  const cwd = resolve(opts.cwd ?? process.cwd());
194
249
  const host = opts.host ?? "opencode";
195
250
  const sources = {};
196
251
  const userPath = opts.includeUser === false ? null : locateFile(userConfigDir(host));
197
252
  const projectPath = locateFile(projectConfigDir(cwd, host));
198
- let merged = {};
253
+ // Build the raw layer list. Apply stripProjectOnlyFields to project first.
254
+ const rawLayers = [];
199
255
  if (userPath) {
200
256
  const data = readJsoncFile(userPath);
201
257
  if (data !== null) {
202
- merged = deepMerge(merged, data);
258
+ rawLayers.push({ source: userPath, value: data });
203
259
  sources.user = userPath;
204
260
  }
205
261
  }
206
262
  if (projectPath) {
207
263
  const data = readJsoncFile(projectPath);
208
264
  if (data !== null) {
209
- merged = deepMerge(merged, stripProjectOnlyFields(data));
265
+ rawLayers.push({ source: projectPath, value: stripProjectOnlyFields(data) });
210
266
  sources.project = projectPath;
211
267
  }
212
268
  }
213
- // Profile selection: OCMM_PROFILE env var wins over config's activeProfile.
214
- // Empty string is treated as unset so `OCMM_PROFILE= opencode ...` falls
215
- // back to the config's activeProfile rather than selecting a "" profile.
216
- // OCMM_NO_PROFILE=1 disables profile loading entirely (overrides everything).
269
+ return { cwd, host, includeUser: opts.includeUser !== false, sources, rawLayers };
270
+ }
271
+ function selectActiveProfile(selection) {
217
272
  const noProfile = process.env.OCMM_NO_PROFILE === "1" || process.env.OCMM_NO_PROFILE === "true";
218
273
  const envProfile = noProfile ? undefined : (process.env.OCMM_PROFILE || undefined);
219
- const mergedRecord = isPlainObject(merged) ? merged : {};
220
- const activeProfileRaw = noProfile ? undefined : (envProfile ?? mergedRecord.activeProfile);
221
- const activeProfile = typeof activeProfileRaw === "string" && activeProfileRaw.length > 0
274
+ const activeProfileRaw = noProfile ? undefined : (envProfile ?? selection.activeProfile);
275
+ return typeof activeProfileRaw === "string" && activeProfileRaw.length > 0
222
276
  ? activeProfileRaw
223
277
  : undefined;
224
- // Collect profiles from inline + user dir + project dir.
225
- // Directory shadows inline; project shadows user.
226
- const inlineProfiles = isPlainObject(mergedRecord.profiles) ? mergedRecord.profiles : {};
227
- const userDirProfiles = loadProfilesFromDir(join(userConfigDir(host), "ocmm-profiles"));
228
- const projectDirProfiles = host === "opencode"
229
- ? loadProfilesFromDir(join(projectConfigDir(cwd, host), "ocmm-profiles"))
230
- : {};
231
- const allProfiles = {
232
- ...inlineProfiles,
233
- ...userDirProfiles,
234
- ...projectDirProfiles,
278
+ }
279
+ function deriveActiveProfileFromRawLayers(rawLayers) {
280
+ let mergedRaw = {};
281
+ for (const layer of rawLayers) {
282
+ if (isPlainObject(layer.value)) {
283
+ mergedRaw = deepMerge(mergedRaw, layer.value);
284
+ }
285
+ }
286
+ return selectActiveProfile(mergedRaw);
287
+ }
288
+ export function loadConfig(opts = {}) {
289
+ const { cwd, host, sources, rawLayers } = locateConfigLayers(opts);
290
+ try {
291
+ const emittedReviewWarnings = new Set();
292
+ const warnReviewOnce = (message) => {
293
+ if (emittedReviewWarnings.has(message))
294
+ return;
295
+ emittedReviewWarnings.add(message);
296
+ reviewWarn(message);
297
+ };
298
+ const prepared = prepareConfigLayers(rawLayers, warnReviewOnce);
299
+ const baseLayers = prepared.layers.map((layer) => ({
300
+ value: cleanAgentEntries(layer.value),
301
+ }));
302
+ const profileSelection = tolerantParseLayers(ProfileSelectionSchema, baseLayers, mergeConfigLayers);
303
+ const selectedBaseLayers = profileSelection.success ? profileSelection.layers : baseLayers;
304
+ const selection = profileSelection.success ? profileSelection.data : {};
305
+ const activeProfile = selectActiveProfile(selection);
306
+ const userDirEntries = loadProfileEntriesFromDir(join(userConfigDir(host), "ocmm-profiles"));
307
+ const projectDirEntries = host === "opencode"
308
+ ? loadProfileEntriesFromDir(join(projectConfigDir(cwd, host), "ocmm-profiles"))
309
+ : {};
310
+ let selectedContributions = [];
311
+ if (activeProfile) {
312
+ const projectDirWinner = projectDirEntries[activeProfile];
313
+ if (projectDirWinner) {
314
+ selectedContributions = [prepareReviewProfile({
315
+ name: activeProfile,
316
+ source: projectDirWinner.source,
317
+ value: projectDirWinner.value,
318
+ }, warnReviewOnce)];
319
+ }
320
+ else {
321
+ const userDirWinner = userDirEntries[activeProfile];
322
+ if (userDirWinner) {
323
+ selectedContributions = [prepareReviewProfile({
324
+ name: activeProfile,
325
+ source: userDirWinner.source,
326
+ value: userDirWinner.value,
327
+ }, warnReviewOnce)];
328
+ }
329
+ else {
330
+ const activeSources = new Set(prepared.layers
331
+ .filter((_, index) => selectedBaseLayers[index]?.value !== undefined)
332
+ .map((layer) => layer.source));
333
+ selectedContributions = (prepared.inlineProfiles.get(activeProfile) ?? [])
334
+ .filter((profile) => activeSources.has(profile.source));
335
+ }
336
+ }
337
+ }
338
+ assertSelectedReviewProfileCompatible(prepared.baseOrigins, selectedContributions);
339
+ const profileLayers = selectedProfileLayers(selectedContributions);
340
+ if (activeProfile && profileLayers.length === 0) {
341
+ log.warn(`active profile "${activeProfile}" not found in profiles; ignored`);
342
+ }
343
+ const parsed = tolerantParseLayers(OcmmConfigSchema, [...selectedBaseLayers, ...profileLayers], mergeConfigLayers);
344
+ if (!parsed.success) {
345
+ log.warn(`ocmm config validation failed; using defaults. issues:`, parsed.issues.slice(0, 5));
346
+ return { config: defaultConfig(), sources, ...(activeProfile ? { activeProfile } : {}) };
347
+ }
348
+ return { config: parsed.data, sources, ...(activeProfile ? { activeProfile } : {}) };
349
+ }
350
+ catch (err) {
351
+ if (err instanceof ReviewConfigConflictError) {
352
+ log.warn(`ocmm review-agent config conflict; using defaults: ${err.message}`);
353
+ // Re-derive activeProfile from the raw layers without re-running migration,
354
+ // so callers see what would have been selected.
355
+ const activeProfile = deriveActiveProfileFromRawLayers(rawLayers);
356
+ return { config: defaultConfig(), sources, ...(activeProfile ? { activeProfile } : {}) };
357
+ }
358
+ throw err;
359
+ }
360
+ }
361
+ class PluginProfilePipelineError extends Error {
362
+ constructor(message) {
363
+ super(message);
364
+ this.name = "PluginProfilePipelineError";
365
+ }
366
+ }
367
+ export function loadOpenCodePluginConfig(options = {}) {
368
+ const located = locateConfigLayers({ ...options, host: "opencode" });
369
+ try {
370
+ return loadOpenCodePluginConfigStrict(located);
371
+ }
372
+ catch (err) {
373
+ if (!(err instanceof PluginProfilePipelineError) && !(err instanceof ReviewConfigConflictError)) {
374
+ throw err;
375
+ }
376
+ const activeProfile = deriveActiveProfileFromRawLayers(located.rawLayers);
377
+ log.warn(`ocmm opencode plugin config validation failed; using defaults: ${err.message}`);
378
+ return { config: defaultConfig(), sources: located.sources, ...(activeProfile ? { activeProfile } : {}) };
379
+ }
380
+ }
381
+ function loadOpenCodePluginConfigStrict(located) {
382
+ const emittedReviewWarnings = new Set();
383
+ const warnReviewOnce = (message) => {
384
+ if (emittedReviewWarnings.has(message))
385
+ return;
386
+ emittedReviewWarnings.add(message);
387
+ reviewWarn(message);
235
388
  };
236
- // If an active profile is named, deep-merge it over the base. A missing
237
- // profile is silently ignored so a stale activeProfile/OCMM_PROFILE value
238
- // never breaks the plugin base config loads unchanged.
239
- if (activeProfile && isPlainObject(allProfiles)) {
240
- const profile = allProfiles[activeProfile];
241
- if (isPlainObject(profile)) {
242
- merged = deepMerge(merged, profile, undefined, { profileOverlay: true });
389
+ const prepared = prepareConfigLayers(located.rawLayers, warnReviewOnce);
390
+ const baseLayers = prepared.layers.map((layer) => ({ value: layer.value }));
391
+ // Runtime loading is intentionally tolerant even though OcmmConfigSchema/schema.json are strict.
392
+ // Do not replace this with safeParse: one invalid field must be discarded without erasing valid
393
+ // siblings or lower layers. Only structural/semantic plugin-pipeline failures below are atomic.
394
+ const baseParsed = tolerantParseLayers(OcmmConfigSchema, baseLayers, mergeConfigLayers);
395
+ if (!baseParsed.success) {
396
+ throw new PluginProfilePipelineError("base config validation could not be recovered");
397
+ }
398
+ const descriptors = composeProfileDescriptors(inlineProfileDescriptorsFromPreparedProfiles(prepared.inlineProfiles), located.includeUser
399
+ ? loadProfileDescriptorsFromDir(join(userConfigDir("opencode"), "ocmm-profiles"), "user-directory")
400
+ : new Map(), loadProfileDescriptorsFromDir(join(projectConfigDir(located.cwd, "opencode"), "ocmm-profiles"), "project-directory"));
401
+ const activeProfile = selectActiveProfile({ activeProfile: baseParsed.data.activeProfile });
402
+ let config = baseParsed.data;
403
+ if (activeProfile) {
404
+ const descriptor = descriptors.get(activeProfile);
405
+ if (!descriptor) {
406
+ log.warn(`active profile "${activeProfile}" not found in profiles; ignored`);
407
+ }
408
+ else if (descriptor.error) {
409
+ throw new PluginProfilePipelineError(`active profile "${activeProfile}" from ${profileDescriptorLocation(descriptor)} is invalid (${descriptor.error.kind}): ${descriptor.error.message}`);
410
+ }
411
+ else if (descriptor.value === undefined) {
412
+ throw new PluginProfilePipelineError(`active profile "${activeProfile}" from ${profileDescriptorLocation(descriptor)} has no materialized value`);
243
413
  }
244
414
  else {
245
- log.warn(`active profile "${activeProfile}" not found in profiles; ignored`);
415
+ const selectedContributions = selectedPluginProfileContributions(activeProfile, descriptor, prepared, warnReviewOnce);
416
+ assertSelectedReviewProfileCompatible(prepared.baseOrigins, selectedContributions);
417
+ const selectedProfile = tolerantParseLayers(ProfileEntrySchema, selectedProfileLayers(selectedContributions), mergeConfigLayers);
418
+ if (!selectedProfile.success) {
419
+ throw new PluginProfilePipelineError("selected profile validation could not be recovered");
420
+ }
421
+ const finalRaw = mergeConfigLayers([
422
+ { value: baseParsed.data },
423
+ { value: mergeConfigLayers(selectedProfile.layers), profileOverlay: true },
424
+ ]);
425
+ const finalParsed = OcmmConfigSchema.safeParse(finalRaw);
426
+ if (!finalParsed.success) {
427
+ throw new PluginProfilePipelineError(`profiled config validation failed: ${formatZodIssues(finalParsed.error.issues)}`);
428
+ }
429
+ config = finalParsed.data;
246
430
  }
247
431
  }
248
- const parsed = OcmmConfigSchema.safeParse(merged);
249
- if (!parsed.success) {
250
- log.warn(`ocmm config validation failed; using defaults. issues:`, parsed.error.issues.slice(0, 5));
251
- return { config: defaultConfig(), sources, ...(activeProfile ? { activeProfile } : {}) };
432
+ let materialized;
433
+ try {
434
+ materialized = materializeQualifiedAgentAliases({
435
+ config,
436
+ baseAgents: baseParsed.data.agents ?? {},
437
+ profiles: descriptors,
438
+ });
252
439
  }
253
- return { config: parsed.data, sources, ...(activeProfile ? { activeProfile } : {}) };
440
+ catch (err) {
441
+ throw new PluginProfilePipelineError(`qualified alias materialization failed: ${err.message}`);
442
+ }
443
+ const materializedParsed = OcmmConfigSchema.safeParse(materialized);
444
+ if (!materializedParsed.success) {
445
+ throw new PluginProfilePipelineError(`materialized config validation failed: ${formatZodIssues(materializedParsed.error.issues)}`);
446
+ }
447
+ return { config: materializedParsed.data, sources: located.sources, ...(activeProfile ? { activeProfile } : {}) };
448
+ }
449
+ function composeProfileDescriptors(inlineDescriptors, userDescriptors, projectDescriptors) {
450
+ const out = new Map();
451
+ for (const descriptors of [inlineDescriptors, userDescriptors, projectDescriptors]) {
452
+ for (const [name, descriptor] of descriptors)
453
+ out.set(name, descriptor);
454
+ }
455
+ return out;
456
+ }
457
+ function inlineProfileDescriptorsFromPreparedProfiles(profiles) {
458
+ const descriptors = new Map();
459
+ for (const [name, contributions] of profiles) {
460
+ const layers = selectedProfileLayers(contributions);
461
+ const rawValue = mergeConfigLayers(layers);
462
+ const structuralError = profileDescriptorStructuralError(name, "inline profile", rawValue);
463
+ const prepared = structuralError
464
+ ? { value: rawValue, error: structuralError }
465
+ : sanitizeProfileDescriptorLayers(name, "inline profile", layers);
466
+ const descriptor = { name, source: "inline", value: prepared.value };
467
+ if (prepared.error)
468
+ descriptor.error = prepared.error;
469
+ descriptors.set(name, descriptor);
470
+ }
471
+ return descriptors;
472
+ }
473
+ function selectedPluginProfileContributions(name, descriptor, prepared, warn) {
474
+ if (descriptor.source === "inline")
475
+ return prepared.inlineProfiles.get(name) ?? [];
476
+ if (rawDirectoryProfileValues.has(descriptor)) {
477
+ return [prepareReviewProfile({
478
+ name,
479
+ source: descriptor.path ?? descriptor.source,
480
+ value: rawDirectoryProfileValues.get(descriptor),
481
+ }, warn)];
482
+ }
483
+ return [prepareReviewProfile({ name, source: descriptor.path ?? descriptor.source, value: descriptor.value }, warn)];
484
+ }
485
+ function profileDescriptorLocation(descriptor) {
486
+ return descriptor.path ?? descriptor.source;
487
+ }
488
+ function formatZodIssues(issues) {
489
+ return issues
490
+ .slice(0, 5)
491
+ .map((issue) => {
492
+ const path = issue.path.length > 0 ? issue.path.map(String).join(".") : "<root>";
493
+ return `${path}: ${issue.message}`;
494
+ })
495
+ .join("; ");
254
496
  }
255
497
  function stripProjectOnlyFields(value) {
256
498
  if (!isPlainObject(value))
@@ -261,4 +503,56 @@ function stripProjectOnlyFields(value) {
261
503
  delete mcp.envAllowlist;
262
504
  return { ...value, mcp };
263
505
  }
506
+ function mergeConfigLayers(layers) {
507
+ let base = {};
508
+ let profile = {};
509
+ let hasProfile = false;
510
+ for (const layer of layers) {
511
+ if (layer.profileOverlay) {
512
+ profile = deepMerge(profile, layer.value, undefined, { profileOverlay: true });
513
+ hasProfile = true;
514
+ }
515
+ else {
516
+ base = deepMerge(base, layer.value);
517
+ }
518
+ }
519
+ return hasProfile ? deepMerge(base, profile, undefined, { profileOverlay: true }) : base;
520
+ }
521
+ function selectedProfileLayers(selectedProfiles) {
522
+ return selectedProfiles.map((profile) => ({
523
+ value: cleanAgentEntries(profile.value),
524
+ profileOverlay: true,
525
+ }));
526
+ }
527
+ function cleanAgentEntries(value) {
528
+ if (!isPlainObject(value))
529
+ return value;
530
+ const cleaned = { ...value };
531
+ cleanAgentMap(cleaned);
532
+ if (!isPlainObject(cleaned.profiles))
533
+ return cleaned;
534
+ const profiles = { ...cleaned.profiles };
535
+ for (const [name, profile] of Object.entries(profiles)) {
536
+ if (!isPlainObject(profile))
537
+ continue;
538
+ const profileCopy = { ...profile };
539
+ cleanAgentMap(profileCopy);
540
+ profiles[name] = profileCopy;
541
+ }
542
+ cleaned.profiles = profiles;
543
+ return cleaned;
544
+ }
545
+ function cleanAgentMap(value) {
546
+ if (!isPlainObject(value.agents))
547
+ return;
548
+ const agents = { ...value.agents };
549
+ for (const [name, entry] of Object.entries(agents)) {
550
+ const parsed = tolerantParse(AgentEntrySchema, entry);
551
+ if (parsed.success)
552
+ agents[name] = parsed.data;
553
+ else
554
+ delete agents[name];
555
+ }
556
+ value.agents = agents;
557
+ }
264
558
  //# sourceMappingURL=load.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"load.js","sourceRoot":"","sources":["../../src/config/load.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAC/D,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACjC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACzC,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAmB,MAAM,aAAa,CAAA;AAC9E,OAAO,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAA;AAEzC,MAAM,cAAc,GAAG,CAAC,YAAY,EAAE,WAAW,CAAC,CAAA;AAIlD,SAAS,aAAa,CAAC,IAAgB;IACrC,IAAI,IAAI,KAAK,OAAO;QAAE,OAAO,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC,CAAA;IAChF,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,CAAA;IACvC,IAAI,GAAG;QAAE,OAAO,IAAI,CAAC,GAAG,EAAE,UAAU,CAAC,CAAA;IACrC,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,UAAU,CAAC,CAAA;AAC/C,CAAC;AAED,SAAS,gBAAgB,CAAC,GAAW,EAAE,IAAgB;IACrD,OAAO,IAAI,CAAC,GAAG,EAAE,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAA;AAC7D,CAAC;AAED,+FAA+F;AAC/F,MAAM,UAAU,mCAAmC,CAAC,KAAa;IAC/D,IAAI,GAAG,GAAG,EAAE,CAAA;IACZ,IAAI,CAAC,GAAG,CAAC,CAAA;IACT,IAAI,KAAK,GAAqB,IAAI,CAAA;IAClC,OAAO,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;QACxB,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;QAClB,IAAI,KAAK,EAAE,CAAC;YACV,GAAG,IAAI,CAAC,CAAA;YACR,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;gBACvC,GAAG,IAAI,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;gBACnB,CAAC,IAAI,CAAC,CAAA;gBACN,SAAQ;YACV,CAAC;YACD,IAAI,CAAC,KAAK,KAAK;gBAAE,KAAK,GAAG,IAAI,CAAA;YAC7B,CAAC,EAAE,CAAA;YACH,SAAQ;QACV,CAAC;QACD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;YAC3B,KAAK,GAAG,CAAc,CAAA;YACtB,GAAG,IAAI,CAAC,CAAA;YACR,CAAC,EAAE,CAAA;YACH,SAAQ;QACV,CAAC;QACD,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;YACtC,MAAM,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAA;YACrC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAA;YAC9B,SAAQ;QACV,CAAC;QACD,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;YACtC,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAA;YACtC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAA;YACpC,SAAQ;QACV,CAAC;QACD,GAAG,IAAI,CAAC,CAAA;QACR,CAAC,EAAE,CAAA;IACL,CAAC;IACD,sCAAsC;IACtC,OAAO,GAAG,CAAC,OAAO,CAAC,cAAc,EAAE,IAAI,CAAC,CAAA;AAC1C,CAAC;AAED,SAAS,aAAa,CAAC,IAAY;IACjC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;QACtC,MAAM,QAAQ,GAAG,mCAAmC,CAAC,GAAG,CAAC,CAAA;QACzD,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;IAC7B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,GAAG,CAAC,IAAI,CAAC,wBAAwB,IAAI,KAAM,GAAa,CAAC,OAAO,EAAE,CAAC,CAAA;QACnE,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC;AAED,SAAS,UAAU,CAAC,GAAW;IAC7B,KAAK,MAAM,IAAI,IAAI,cAAc,EAAE,CAAC;QAClC,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;QACzB,IAAI,UAAU,CAAC,CAAC,CAAC;YAAE,OAAO,CAAC,CAAA;IAC7B,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAED,SAAS,aAAa,CAAC,CAAU;IAC/B,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;AACjE,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,mBAAmB,CAAC,GAAW;IAC7C,IAAI,OAAiB,CAAA;IACrB,IAAI,CAAC;QACH,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,CAAA;IAC5B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAA;IACX,CAAC;IACD,MAAM,GAAG,GAA4B,EAAE,CAAA;IACvC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAA;IAC9B,0EAA0E;IAC1E,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;IACvF,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAA;QACpD,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAA;QACtD,mDAAmD;QACnD,IAAI,GAAG,KAAK,MAAM,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,GAAG,QAAQ,CAAC;YAAE,SAAQ;QAC7D,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;QAC5B,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;QACtC,IAAI,MAAe,CAAA;QACnB,IAAI,CAAC;YACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,mCAAmC,CAAC,GAAG,CAAC,CAAC,CAAA;QAC/D,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,GAAG,CAAC,IAAI,CAAC,2BAA2B,IAAI,KAAM,GAAa,CAAC,OAAO,EAAE,CAAC,CAAA;YACtE,SAAQ;QACV,CAAC;QACD,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3B,GAAG,CAAC,IAAI,CAAC,WAAW,IAAI,gCAAgC,CAAC,CAAA;YACzD,SAAQ;QACV,CAAC;QACD,mCAAmC;QACnC,MAAM,OAAO,GAA4B,EAAE,GAAG,MAAM,EAAE,CAAA;QACtD,IAAI,QAAQ,GAAG,KAAK,CAAA;QACpB,IAAI,UAAU,IAAI,OAAO,EAAE,CAAC;YAC1B,OAAO,OAAO,CAAC,QAAQ,CAAA;YACvB,QAAQ,GAAG,IAAI,CAAA;QACjB,CAAC;QACD,IAAI,eAAe,IAAI,OAAO,EAAE,CAAC;YAC/B,OAAO,OAAO,CAAC,aAAa,CAAA;YAC5B,QAAQ,GAAG,IAAI,CAAA;QACjB,CAAC;QACD,IAAI,QAAQ,EAAE,CAAC;YACb,GAAG,CAAC,IAAI,CAAC,WAAW,IAAI,6CAA6C,CAAC,CAAA;QACxE,CAAC;QACD,GAAG,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAA;QACvB,IAAI,CAAC,GAAG,CAAC,QAAQ,GAAG,GAAG,GAAG,GAAG,CAAC,CAAA;IAChC,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,SAAS,CACvB,IAAa,EACb,QAAiB,EACjB,SAAkB,EAClB,IAAmC;IAEnC,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,IAAI,CAAA;IACvC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QACnD,IAAI,IAAI,EAAE,cAAc;YAAE,OAAO,QAAQ,CAAA;QACzC,IAAI,SAAS,IAAI,uBAAuB,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;YACxD,MAAM,GAAG,GAAG,IAAI,GAAG,CAAS,CAAC,GAAG,IAAI,EAAE,GAAG,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;YACzE,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QACxB,CAAC;QACD,OAAO,QAAQ,CAAA;IACjB,CAAC;IACD,IAAI,aAAa,CAAC,IAAI,CAAC,IAAI,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC;QACnD,MAAM,GAAG,GAA4B,EAAE,GAAG,IAAI,EAAE,CAAA;QAChD,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC9C,GAAG,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAA;QACzC,CAAC;QACD,OAAO,GAAG,CAAA;IACZ,CAAC;IACD,OAAO,QAAQ,CAAA;AACjB,CAAC;AAED,MAAM,uBAAuB,GAAG,IAAI,GAAG,CAAC;IACtC,gBAAgB;IAChB,gBAAgB;IAChB,eAAe;IACf,eAAe;IACf,gBAAgB;IAChB,kBAAkB;IAClB,cAAc;CACf,CAAC,CAAA;AASF,MAAM,UAAU,UAAU,CAAC,OAAmE,EAAE;IAC9F,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAA;IAC9C,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,UAAU,CAAA;IACpC,MAAM,OAAO,GAAwC,EAAE,CAAA;IAEvD,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,KAAK,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAA;IACpF,MAAM,WAAW,GAAG,UAAU,CAAC,gBAAgB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAA;IAE3D,IAAI,MAAM,GAAY,EAAE,CAAA;IACxB,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,IAAI,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAA;QACpC,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YAClB,MAAM,GAAG,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;YAChC,OAAO,CAAC,IAAI,GAAG,QAAQ,CAAA;QACzB,CAAC;IACH,CAAC;IACD,IAAI,WAAW,EAAE,CAAC;QAChB,MAAM,IAAI,GAAG,aAAa,CAAC,WAAW,CAAC,CAAA;QACvC,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YAClB,MAAM,GAAG,SAAS,CAAC,MAAM,EAAE,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAA;YACxD,OAAO,CAAC,OAAO,GAAG,WAAW,CAAA;QAC/B,CAAC;IACH,CAAC;IAED,4EAA4E;IAC5E,yEAAyE;IACzE,yEAAyE;IACzE,8EAA8E;IAC9E,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,KAAK,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC,eAAe,KAAK,MAAM,CAAA;IAC/F,MAAM,UAAU,GAAG,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,SAAS,CAAC,CAAA;IAClF,MAAM,YAAY,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAE,MAAkC,CAAC,CAAC,CAAC,EAAE,CAAA;IACrF,MAAM,gBAAgB,GAAG,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,UAAU,IAAI,YAAY,CAAC,aAAa,CAAC,CAAA;IAC3F,MAAM,aAAa,GACjB,OAAO,gBAAgB,KAAK,QAAQ,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC;QACjE,CAAC,CAAC,gBAAgB;QAClB,CAAC,CAAC,SAAS,CAAA;IAEf,yDAAyD;IACzD,kDAAkD;IAClD,MAAM,cAAc,GAAG,aAAa,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAA;IACxF,MAAM,eAAe,GAAG,mBAAmB,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,eAAe,CAAC,CAAC,CAAA;IACvF,MAAM,kBAAkB,GAAG,IAAI,KAAK,UAAU;QAC5C,CAAC,CAAC,mBAAmB,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,eAAe,CAAC,CAAC;QACzE,CAAC,CAAC,EAAE,CAAA;IACN,MAAM,WAAW,GAA4B;QAC3C,GAAG,cAAc;QACjB,GAAG,eAAe;QAClB,GAAG,kBAAkB;KACtB,CAAA;IAED,wEAAwE;IACxE,0EAA0E;IAC1E,yDAAyD;IACzD,IAAI,aAAa,IAAI,aAAa,CAAC,WAAW,CAAC,EAAE,CAAC;QAChD,MAAM,OAAO,GAAG,WAAW,CAAC,aAAa,CAAC,CAAA;QAC1C,IAAI,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3B,MAAM,GAAG,SAAS,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC,CAAA;QAC1E,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,IAAI,CAAC,mBAAmB,aAAa,kCAAkC,CAAC,CAAA;QAC9E,CAAC;IACH,CAAC;IAED,MAAM,MAAM,GAAG,gBAAgB,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;IACjD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,GAAG,CAAC,IAAI,CACN,wDAAwD,EACxD,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAChC,CAAA;QACD,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,EAAE,OAAO,EAAE,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAA;IAC1F,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAA;AACtF,CAAC;AAED,SAAS,sBAAsB,CAAC,KAAc;IAC5C,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAA;IACvC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,cAAc,IAAI,KAAK,CAAC,GAAG,CAAC;QAAE,OAAO,KAAK,CAAA;IAC7E,MAAM,GAAG,GAAG,EAAE,GAAG,KAAK,CAAC,GAAG,EAAE,CAAA;IAC5B,OAAO,GAAG,CAAC,YAAY,CAAA;IACvB,OAAO,EAAE,GAAG,KAAK,EAAE,GAAG,EAAE,CAAA;AAC1B,CAAC"}
1
+ {"version":3,"file":"load.js","sourceRoot":"","sources":["../../src/config/load.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ declare function isPlainObjectValue(v: unknown): v is Record<string, unknown>;
2
+ export declare const isPlainObject: typeof isPlainObjectValue;
3
+ export declare const ACCUMULATING_ARRAY_KEYS: Set<string>;
4
+ /**
5
+ * Deep-merge two plain-object trees.
6
+ *
7
+ * Default array policy: REPLACE (override wins) for predictable override
8
+ * semantics. Model fallback and feature-disable arrays are UNIONED de-duped
9
+ * instead - these accumulate across user+project layers so global/project
10
+ * gates compose predictably.
11
+ *
12
+ * Pass `{ profileOverlay: true }` to force ALL arrays to replace (use when
13
+ * overlaying a profile that should fully own a field rather than accumulate).
14
+ */
15
+ export declare function deepMerge(base: unknown, override: unknown, parentKey?: string, opts?: {
16
+ profileOverlay?: boolean;
17
+ }): unknown;
18
+ export {};