ccprofiles-core 0.7.2 → 0.7.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/apply.js +20 -2
- package/package.json +1 -1
package/dist/apply.js
CHANGED
|
@@ -11,8 +11,26 @@ function configPathFor(dir, home, agent) {
|
|
|
11
11
|
return join(dir, 'config.toml');
|
|
12
12
|
return dir === join(home, '.claude') ? join(home, '.claude.json') : join(dir, '.claude.json');
|
|
13
13
|
}
|
|
14
|
-
|
|
15
|
-
|
|
14
|
+
/**
|
|
15
|
+
* Deep, order-insensitive normalization for drift comparison. Plain-object keys are sorted
|
|
16
|
+
* recursively at every depth (array element order is preserved — arrays like `args` are
|
|
17
|
+
* order-significant). Without recursing into nested objects, two semantically identical
|
|
18
|
+
* server defs could compare unequal purely from key-insertion order — which genuinely
|
|
19
|
+
* happens: Zod's `.passthrough()` always places schema-declared keys before passthrough
|
|
20
|
+
* (unknown) keys in its output, e.g. Codex's `startup_timeout_sec` (not in McpServerSchema)
|
|
21
|
+
* ends up after `env` once a manifest round-trips through the schema, while the live
|
|
22
|
+
* TOML file has it before `env` in source order — a manifest reload would otherwise never
|
|
23
|
+
* converge to "in sync" for any Codex server combining an `env` table with a vendor field.
|
|
24
|
+
*/
|
|
25
|
+
function sortKeys(value) {
|
|
26
|
+
if (Array.isArray(value))
|
|
27
|
+
return value.map(sortKeys);
|
|
28
|
+
if (value && typeof value === 'object') {
|
|
29
|
+
return Object.fromEntries(Object.entries(value)
|
|
30
|
+
.map(([k, v]) => [k, sortKeys(v)])
|
|
31
|
+
.sort(([a], [b]) => a.localeCompare(b)));
|
|
32
|
+
}
|
|
33
|
+
return value;
|
|
16
34
|
}
|
|
17
35
|
const SECRET_PREFIX = 'secret://';
|
|
18
36
|
// exported so adopt.ts (buildManifest) can recognize pooled session-dir symlinks with the
|
package/package.json
CHANGED