feat(session): add optional end-of-session summarization
This commit is contained in:
@@ -244,6 +244,52 @@ describe('configSchema — backup', () => {
|
||||
});
|
||||
});
|
||||
|
||||
describe('configSchema — sessions', () => {
|
||||
const minimalConfig = {
|
||||
telegram: { bot_token: 'test', allowed_chat_ids: [1] },
|
||||
models: { default: { provider: 'anthropic', model: 'claude-3' } },
|
||||
};
|
||||
|
||||
it('defaults end_summary settings', () => {
|
||||
const result = configSchema.parse(minimalConfig);
|
||||
expect(result.sessions.ttl).toBe('30d');
|
||||
expect(result.sessions.end_summary.enabled).toBe(false);
|
||||
expect(result.sessions.end_summary.tier).toBe('fast');
|
||||
expect(result.sessions.end_summary.max_messages).toBe(50);
|
||||
expect(result.sessions.end_summary.max_input_chars).toBe(20000);
|
||||
expect(result.sessions.end_summary.max_tokens).toBe(512);
|
||||
expect(result.sessions.end_summary.write_to_memory).toBe(true);
|
||||
expect(result.sessions.end_summary.memory_namespace).toBe('session/summaries');
|
||||
});
|
||||
|
||||
it('accepts custom end_summary settings', () => {
|
||||
const result = configSchema.parse({
|
||||
...minimalConfig,
|
||||
sessions: {
|
||||
ttl: '7d',
|
||||
end_summary: {
|
||||
enabled: true,
|
||||
tier: 'complex',
|
||||
max_messages: 100,
|
||||
max_input_chars: 50000,
|
||||
max_tokens: 1024,
|
||||
write_to_memory: false,
|
||||
memory_namespace: 'notes/session',
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
expect(result.sessions.ttl).toBe('7d');
|
||||
expect(result.sessions.end_summary.enabled).toBe(true);
|
||||
expect(result.sessions.end_summary.tier).toBe('complex');
|
||||
expect(result.sessions.end_summary.max_messages).toBe(100);
|
||||
expect(result.sessions.end_summary.max_input_chars).toBe(50000);
|
||||
expect(result.sessions.end_summary.max_tokens).toBe(1024);
|
||||
expect(result.sessions.end_summary.write_to_memory).toBe(false);
|
||||
expect(result.sessions.end_summary.memory_namespace).toBe('notes/session');
|
||||
});
|
||||
});
|
||||
|
||||
describe('configSchema — agent_configs', () => {
|
||||
const minimalConfig = {
|
||||
telegram: { bot_token: 'test', allowed_chat_ids: [1] },
|
||||
|
||||
@@ -670,6 +670,15 @@ const promptSchema = z.object({
|
||||
|
||||
const sessionsSchema = z.object({
|
||||
ttl: z.string().default('30d'),
|
||||
end_summary: z.object({
|
||||
enabled: z.boolean().default(false),
|
||||
tier: modelTierEnum.default('fast'),
|
||||
max_messages: z.number().min(2).max(500).default(50),
|
||||
max_input_chars: z.number().min(500).max(200000).default(20000),
|
||||
max_tokens: z.number().min(64).max(4096).default(512),
|
||||
write_to_memory: z.boolean().default(true),
|
||||
memory_namespace: z.string().default('session/summaries'),
|
||||
}).default({}),
|
||||
}).default({});
|
||||
|
||||
const backupSchema = z.object({
|
||||
|
||||
Reference in New Issue
Block a user