feat(memory): add experimental qmd search backend

This commit is contained in:
William Valentin
2026-02-15 19:33:43 -08:00
parent c6e3d09ecc
commit 81c97a9df1
14 changed files with 340 additions and 29 deletions
+11
View File
@@ -313,6 +313,15 @@ const embeddingSchema = z.object({
hybrid_weight: z.number().min(0).max(1).default(0.7),
}).default({});
const qmdSchema = z.object({
/** Enable experimental QMD (query markdown database) memory search backend. */
enabled: z.boolean().default(false),
/** Maximum number of QMD results returned by memory.search. */
top_k: z.number().min(1).max(50).default(8),
/** Minimum relevance score (0-1) for QMD matches. */
min_score: z.number().min(0).max(1).default(0.15),
}).default({});
const memorySchema = z.object({
enabled: z.boolean().default(true),
dir: z.string().optional(), // Default: ~/.local/share/flynn/memory
@@ -321,6 +330,7 @@ const memorySchema = z.object({
max_injection_tokens: z.number().min(100).max(10000).default(2000),
max_context_tokens: z.number().min(100).max(10000).default(2000),
embedding: embeddingSchema,
qmd: qmdSchema,
}).default({});
const compactionSchema = z.object({
@@ -593,6 +603,7 @@ export type HeartbeatConfig = z.infer<typeof heartbeatSchema>;
export type HeartbeatCheck = z.infer<typeof heartbeatCheckSchema>;
export type EmbeddingConfig = z.infer<typeof embeddingSchema>;
export type EmbeddingProvider = z.infer<typeof embeddingProviderSchema>;
export type QmdConfig = z.infer<typeof qmdSchema>;
export type GcalConfig = z.infer<typeof gcalSchema>;
export type GdocsConfig = z.infer<typeof gdocsSchema>;
export type GdriveConfig = z.infer<typeof gdriveSchema>;