feat: add proactive memory extraction and daily logs
This commit is contained in:
@@ -1277,6 +1277,11 @@ describe('configSchema — memory injection strategy', () => {
|
||||
const result = configSchema.parse(minimalConfig);
|
||||
expect(result.memory.injection_strategy).toBe('all');
|
||||
expect(result.memory.max_injection_tokens).toBe(2000);
|
||||
expect(result.memory.proactive_extract.enabled).toBe(false);
|
||||
expect(result.memory.proactive_extract.min_tool_calls).toBe(1);
|
||||
expect(result.memory.proactive_extract.namespace).toBe('global');
|
||||
expect(result.memory.daily_log.enabled).toBe(false);
|
||||
expect(result.memory.daily_log.namespace_prefix).toBe('daily');
|
||||
expect(result.memory.qmd.enabled).toBe(false);
|
||||
expect(result.memory.qmd.top_k).toBe(8);
|
||||
expect(result.memory.qmd.min_score).toBe(0.15);
|
||||
@@ -1309,6 +1314,29 @@ describe('configSchema — memory injection strategy', () => {
|
||||
expect(result.memory.qmd.top_k).toBe(12);
|
||||
expect(result.memory.qmd.min_score).toBe(0.2);
|
||||
});
|
||||
|
||||
it('accepts proactive extraction and daily log settings', () => {
|
||||
const result = configSchema.parse({
|
||||
...minimalConfig,
|
||||
memory: {
|
||||
proactive_extract: {
|
||||
enabled: true,
|
||||
min_tool_calls: 3,
|
||||
namespace: 'global/facts',
|
||||
},
|
||||
daily_log: {
|
||||
enabled: true,
|
||||
namespace_prefix: 'memory',
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
expect(result.memory.proactive_extract.enabled).toBe(true);
|
||||
expect(result.memory.proactive_extract.min_tool_calls).toBe(3);
|
||||
expect(result.memory.proactive_extract.namespace).toBe('global/facts');
|
||||
expect(result.memory.daily_log.enabled).toBe(true);
|
||||
expect(result.memory.daily_log.namespace_prefix).toBe('memory');
|
||||
});
|
||||
});
|
||||
|
||||
describe('configSchema — compaction importance threshold', () => {
|
||||
|
||||
@@ -516,6 +516,15 @@ const memorySchema = z.object({
|
||||
enabled: z.boolean().default(true),
|
||||
dir: z.string().optional(), // Default: ~/.local/share/flynn/memory
|
||||
auto_extract: z.boolean().default(true),
|
||||
proactive_extract: z.object({
|
||||
enabled: z.boolean().default(false),
|
||||
min_tool_calls: z.number().min(0).max(50).default(1),
|
||||
namespace: z.string().default('global'),
|
||||
}).default({}),
|
||||
daily_log: z.object({
|
||||
enabled: z.boolean().default(false),
|
||||
namespace_prefix: z.string().default('daily'),
|
||||
}).default({}),
|
||||
injection_strategy: z.enum(['all', 'recent', 'adaptive']).default('all'),
|
||||
max_injection_tokens: z.number().min(100).max(10000).default(2000),
|
||||
max_context_tokens: z.number().min(100).max(10000).default(2000),
|
||||
|
||||
Reference in New Issue
Block a user