From 5760f60a1c076a3e49accae1a533cda6d7918c4d Mon Sep 17 00:00:00 2001 From: Rodrigo Uroz Date: Tue, 24 Feb 2026 16:32:41 +0000 Subject: [PATCH] Config/MemorySearch: add post-compaction force reindex toggle (cherry picked from commit be698b8bca2931709bc43d300ac82d0c10b85d34) --- src/agents/memory-search.test.ts | 1 + src/agents/memory-search.ts | 7 +++++++ src/config/schema.help.ts | 2 ++ src/config/schema.labels.ts | 2 ++ src/config/types.tools.ts | 2 ++ src/config/zod-schema.agent-runtime.ts | 1 + 6 files changed, 15 insertions(+) diff --git a/src/agents/memory-search.test.ts b/src/agents/memory-search.test.ts index 1d04b730351..8b1b4bc3494 100644 --- a/src/agents/memory-search.test.ts +++ b/src/agents/memory-search.test.ts @@ -284,6 +284,7 @@ describe("memory search config", () => { expect(resolved?.sync.sessions).toEqual({ deltaBytes: 100000, deltaMessages: 50, + postCompactionForce: true, }); }); diff --git a/src/agents/memory-search.ts b/src/agents/memory-search.ts index d00dae70639..67b07be0193 100644 --- a/src/agents/memory-search.ts +++ b/src/agents/memory-search.ts @@ -61,6 +61,7 @@ export type ResolvedMemorySearchConfig = { sessions: { deltaBytes: number; deltaMessages: number; + postCompactionForce: boolean; }; }; query: { @@ -248,6 +249,10 @@ function mergeConfig( overrides?.sync?.sessions?.deltaMessages ?? defaults?.sync?.sessions?.deltaMessages ?? DEFAULT_SESSION_DELTA_MESSAGES, + postCompactionForce: + overrides?.sync?.sessions?.postCompactionForce ?? + defaults?.sync?.sessions?.postCompactionForce ?? + true, }, }; const query = { @@ -315,6 +320,7 @@ function mergeConfig( ); const deltaBytes = clampInt(sync.sessions.deltaBytes, 0, Number.MAX_SAFE_INTEGER); const deltaMessages = clampInt(sync.sessions.deltaMessages, 0, Number.MAX_SAFE_INTEGER); + const postCompactionForce = sync.sessions.postCompactionForce ?? true; return { enabled, sources, @@ -336,6 +342,7 @@ function mergeConfig( sessions: { deltaBytes, deltaMessages, + postCompactionForce, }, }, query: { diff --git a/src/config/schema.help.ts b/src/config/schema.help.ts index 1fdaae873cb..5b5cb1fcc5c 100644 --- a/src/config/schema.help.ts +++ b/src/config/schema.help.ts @@ -930,6 +930,8 @@ export const FIELD_HELP: Record = { "Requires at least this many newly appended bytes before session transcript changes trigger reindex (default: 100000). Increase to reduce frequent small reindexes, or lower for faster transcript freshness.", "agents.defaults.memorySearch.sync.sessions.deltaMessages": "Requires at least this many appended transcript messages before reindex is triggered (default: 50). Lower this for near-real-time transcript recall, or raise it to reduce indexing churn.", + "agents.defaults.memorySearch.sync.sessions.postCompactionForce": + "Forces a session memory-search reindex after compaction-triggered transcript updates (default: true). Keep enabled when compacted summaries must be immediately searchable, or disable to reduce write-time indexing pressure.", ui: "UI presentation settings for accenting and assistant identity shown in control surfaces. Use this for branding and readability customization without changing runtime behavior.", "ui.seamColor": "Primary accent/seam color used by UI surfaces for emphasis, badges, and visual identity cues. Use high-contrast values that remain readable across light/dark themes.", diff --git a/src/config/schema.labels.ts b/src/config/schema.labels.ts index 256d3c1ddb9..4cf36d40a63 100644 --- a/src/config/schema.labels.ts +++ b/src/config/schema.labels.ts @@ -354,6 +354,8 @@ export const FIELD_LABELS: Record = { "agents.defaults.memorySearch.sync.watchDebounceMs": "Memory Watch Debounce (ms)", "agents.defaults.memorySearch.sync.sessions.deltaBytes": "Session Delta Bytes", "agents.defaults.memorySearch.sync.sessions.deltaMessages": "Session Delta Messages", + "agents.defaults.memorySearch.sync.sessions.postCompactionForce": + "Force Reindex After Compaction", "agents.defaults.memorySearch.query.maxResults": "Memory Search Max Results", "agents.defaults.memorySearch.query.minScore": "Memory Search Min Score", "agents.defaults.memorySearch.query.hybrid.enabled": "Memory Search Hybrid", diff --git a/src/config/types.tools.ts b/src/config/types.tools.ts index aaf6cb33e79..43d39285b57 100644 --- a/src/config/types.tools.ts +++ b/src/config/types.tools.ts @@ -402,6 +402,8 @@ export type MemorySearchConfig = { deltaBytes?: number; /** Minimum appended JSONL lines before session transcripts are reindexed. */ deltaMessages?: number; + /** Force session reindex after compaction-triggered transcript updates (default: true). */ + postCompactionForce?: boolean; }; }; /** Query behavior. */ diff --git a/src/config/zod-schema.agent-runtime.ts b/src/config/zod-schema.agent-runtime.ts index d5b9eeedb16..28c7cfaabed 100644 --- a/src/config/zod-schema.agent-runtime.ts +++ b/src/config/zod-schema.agent-runtime.ts @@ -649,6 +649,7 @@ export const MemorySearchSchema = z .object({ deltaBytes: z.number().int().nonnegative().optional(), deltaMessages: z.number().int().nonnegative().optional(), + postCompactionForce: z.boolean().optional(), }) .strict() .optional(),