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:
@@ -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);
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user