feat(session): persist model tier overrides per session

Store per-session config in SQLite and route /model and /reset through command fast-paths so channel sessions keep independent model selection across reconnects and restarts.
This commit is contained in:
William Valentin
2026-02-13 01:04:26 -08:00
parent 3472a0b926
commit 9f81c01603
35 changed files with 1438 additions and 144 deletions
+29
View File
@@ -150,6 +150,35 @@ describe('configSchema — skills watcher', () => {
const result = configSchema.parse(minimalConfig);
expect(result.skills.load.watch).toBe(false);
expect(result.skills.load.watch_debounce_ms).toBe(250);
expect(result.skills.installation_execution).toBe('disabled');
expect(result.skills.allow_shell_runner).toBe(false);
expect(result.skills.shell_runner_allowlist).toEqual([]);
expect(result.skills.shell_runner_governance.owner).toBeUndefined();
expect(result.skills.shell_runner_governance.review_cadence_days).toBe(7);
expect(result.skills.shell_runner_governance.promotion_min_success_rate).toBe(0.9);
});
it('accepts explicit installation execution policy', () => {
const enabled = configSchema.parse({
...minimalConfig,
skills: {
installation_execution: 'enabled',
allow_shell_runner: true,
shell_runner_allowlist: ['npm install*'],
shell_runner_governance: {
owner: 'skills-team',
review_cadence_days: 14,
promotion_min_success_rate: 0.95,
},
},
});
expect(enabled.skills.installation_execution).toBe('enabled');
expect(enabled.skills.allow_shell_runner).toBe(true);
expect(enabled.skills.shell_runner_allowlist).toEqual(['npm install*']);
expect(enabled.skills.shell_runner_governance.owner).toBe('skills-team');
expect(enabled.skills.shell_runner_governance.review_cadence_days).toBe(14);
expect(enabled.skills.shell_runner_governance.promotion_min_success_rate).toBe(0.95);
});
it('accepts explicit watcher settings', () => {