claude-dev-env 8.20.0 → 8.21.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.
|
@@ -258,42 +258,29 @@ test('sandbox uninstall removes only package-owned permission entries and keeps
|
|
|
258
258
|
|
|
259
259
|
test('package settings.json publishes the advisor model default', () => {
|
|
260
260
|
const packageSettings = JSON.parse(readFileSync(PACKAGE_SETTINGS_PATH, 'utf8'));
|
|
261
|
-
assert.deepEqual(settingsDefaultsFromPackageSettings(packageSettings), { advisorModel: '
|
|
261
|
+
assert.deepEqual(settingsDefaultsFromPackageSettings(packageSettings), { advisorModel: 'fable' });
|
|
262
262
|
});
|
|
263
263
|
|
|
264
264
|
test('a missing default is added and a user-set value is kept', () => {
|
|
265
265
|
const emptySettings = {};
|
|
266
|
-
assert.deepEqual(mergeMissingSettingsDefaults(emptySettings, { advisorModel: '
|
|
266
|
+
assert.deepEqual(mergeMissingSettingsDefaults(emptySettings, { advisorModel: 'fable' }), {
|
|
267
267
|
addedKeys: ['advisorModel'],
|
|
268
268
|
});
|
|
269
|
-
assert.equal(emptySettings.advisorModel, '
|
|
269
|
+
assert.equal(emptySettings.advisorModel, 'fable');
|
|
270
270
|
const userSettings = { advisorModel: 'sonnet' };
|
|
271
|
-
assert.deepEqual(mergeMissingSettingsDefaults(userSettings, { advisorModel: '
|
|
271
|
+
assert.deepEqual(mergeMissingSettingsDefaults(userSettings, { advisorModel: 'fable' }), {
|
|
272
272
|
addedKeys: [],
|
|
273
273
|
});
|
|
274
274
|
assert.equal(userSettings.advisorModel, 'sonnet');
|
|
275
275
|
});
|
|
276
276
|
|
|
277
|
-
test('a Fable main model gets no advisor default', () => {
|
|
278
|
-
for (const fableModel of ['fable', 'claude-fable-5-1']) {
|
|
279
|
-
const fableSettings = { model: fableModel };
|
|
280
|
-
assert.deepEqual(mergeMissingSettingsDefaults(fableSettings, { advisorModel: 'opus' }), {
|
|
281
|
-
addedKeys: [],
|
|
282
|
-
});
|
|
283
|
-
assert.equal(Object.hasOwn(fableSettings, 'advisorModel'), false);
|
|
284
|
-
}
|
|
285
|
-
const opusSettings = { model: 'opus' };
|
|
286
|
-
mergeMissingSettingsDefaults(opusSettings, { advisorModel: 'opus' });
|
|
287
|
-
assert.equal(opusSettings.advisorModel, 'opus');
|
|
288
|
-
});
|
|
289
|
-
|
|
290
277
|
test('install adds advisorModel when missing and keeps a user choice on rerun', () => {
|
|
291
278
|
const sandboxHome = mkdtempSync(join(tmpdir(), 'cde-settings-defaults-'));
|
|
292
279
|
try {
|
|
293
280
|
const firstRun = runInstallerInSandbox(sandboxHome);
|
|
294
281
|
assert.equal(firstRun.status, 0, firstRun.stderr);
|
|
295
282
|
const settingsPath = join(sandboxHome, '.claude', 'settings.json');
|
|
296
|
-
assert.equal(JSON.parse(readFileSync(settingsPath, 'utf8')).advisorModel, '
|
|
283
|
+
assert.equal(JSON.parse(readFileSync(settingsPath, 'utf8')).advisorModel, 'fable');
|
|
297
284
|
const userChoice = JSON.parse(readFileSync(settingsPath, 'utf8'));
|
|
298
285
|
userChoice.advisorModel = 'sonnet';
|
|
299
286
|
writeFileSync(settingsPath, JSON.stringify(userChoice, null, 4) + '\n');
|
|
@@ -4,13 +4,9 @@
|
|
|
4
4
|
* Every top-level key in the package settings.json other than the managed
|
|
5
5
|
* lists (`permissions`) is a default. Install adds a default only when the
|
|
6
6
|
* user settings lack that key, so a value the user already set stays as is.
|
|
7
|
-
* A Fable main model accepts only a Fable advisor, so a user whose settings
|
|
8
|
-
* name a Fable model gets no package advisor default.
|
|
9
7
|
*/
|
|
10
8
|
|
|
11
9
|
export const MANAGED_LIST_SETTING_KEYS = Object.freeze(['permissions']);
|
|
12
|
-
export const ADVISOR_MODEL_SETTING_KEY = 'advisorModel';
|
|
13
|
-
const FABLE_MODEL_PATTERN = /fable/i;
|
|
14
10
|
|
|
15
11
|
/**
|
|
16
12
|
* Read the setting defaults from a package settings source object.
|
|
@@ -38,11 +34,8 @@ export function settingsDefaultsFromPackageSettings(packageSettings) {
|
|
|
38
34
|
*/
|
|
39
35
|
export function mergeMissingSettingsDefaults(targetSettings, settingsDefaults) {
|
|
40
36
|
const addedKeys = [];
|
|
41
|
-
const mainModel = targetSettings.model;
|
|
42
|
-
const usesFableMainModel = typeof mainModel === 'string' && FABLE_MODEL_PATTERN.test(mainModel);
|
|
43
37
|
for (const [settingKey, defaultValue] of Object.entries(settingsDefaults)) {
|
|
44
38
|
if (Object.hasOwn(targetSettings, settingKey)) continue;
|
|
45
|
-
if (settingKey === ADVISOR_MODEL_SETTING_KEY && usesFableMainModel) continue;
|
|
46
39
|
targetSettings[settingKey] = defaultValue;
|
|
47
40
|
addedKeys.push(settingKey);
|
|
48
41
|
}
|
package/package.json
CHANGED
package/settings.json
CHANGED