feat: model taxonomy gains gpt-5.6-sol + per-host generation defaults

Adds 'gpt-5.6-sol' to the model taxonomy with exact-match-only resolution
(Terra/Luna/suffixed IDs deliberately fall back to generic gpt) and replaces
the hardcoded 'claude' generation default with a validated
HostConfig.defaultModel: codex renders the gpt profile when --model is
absent, every other host keeps claude. Codex ship golden regenerated
accordingly; ADDING_A_HOST documents the new field.
This commit is contained in:
Garry Tan
2026-08-18 13:10:27 -07:00
parent c86e6472eb
commit 819414eda7
8 changed files with 87 additions and 21 deletions
+14
View File
@@ -112,6 +112,7 @@ describe('validateHostConfig', () => {
name: 'test-host',
displayName: 'Test Host',
cliCommand: 'testcli',
defaultModel: 'claude',
globalRoot: '.test/skills/gstack',
localSkillRoot: '.test/skills/gstack',
hostSubdir: '.test',
@@ -165,6 +166,12 @@ describe('validateHostConfig', () => {
expect(validateHostConfig(c)).toEqual([]);
});
test('invalid defaultModel is caught', () => {
const c = makeValid();
(c as any).defaultModel = 'llama-local';
expect(validateHostConfig(c).some(e => e.includes('defaultModel'))).toBe(true);
});
test('invalid globalRoot is caught', () => {
const c = makeValid();
c.globalRoot = 'path with spaces';
@@ -470,6 +477,13 @@ describe('golden-file regression', () => {
// ─── Individual host config correctness ─────────────────────
describe('host config correctness', () => {
test('Codex defaults to generic GPT while all existing hosts retain Claude', () => {
expect(codex.defaultModel).toBe('gpt');
for (const host of ALL_HOST_CONFIGS.filter(h => h.name !== 'codex')) {
expect(host.defaultModel).toBe('claude');
}
});
test('claude is the only host with real-dir-symlink strategy', () => {
for (const config of ALL_HOST_CONFIGS) {
if (config.name === 'claude') {