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
+33
View File
@@ -58,4 +58,37 @@ describe('SessionManager', () => {
expect(sessions).toContain('telegram:user-123');
expect(sessions).toContain('tui:local');
});
it('indexes and searches history when enabled', () => {
manager = new SessionManager(store, {
enabled: true,
maxKeywords: 8,
searchLimit: 10,
minScore: 0.1,
});
const session = manager.getSession('telegram', 'user-123');
session.addMessage({ role: 'user', content: 'deploy backend api' });
const results = manager.searchHistory('deploy backend');
expect(results.length).toBeGreaterThan(0);
expect(results[0].sessionId).toBe('telegram:user-123');
});
it('reindexHistory is safe and idempotent', () => {
manager = new SessionManager(store, {
enabled: true,
maxKeywords: 8,
searchLimit: 10,
minScore: 0.1,
});
const session = manager.getSession('telegram', 'user-abc');
session.addMessage({ role: 'user', content: 'history indexing test' });
const first = manager.reindexHistory();
const second = manager.reindexHistory();
expect(first).toBeGreaterThan(0);
expect(second).toBe(first);
});
});