diff --git a/src/agents/memory-search.test.ts b/src/agents/memory-search.test.ts index a49aefa4634..4d960aad6e9 100644 --- a/src/agents/memory-search.test.ts +++ b/src/agents/memory-search.test.ts @@ -170,6 +170,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 a8aadc15b2c..51de5d72863 100644 --- a/src/agents/memory-search.ts +++ b/src/agents/memory-search.ts @@ -52,6 +52,7 @@ export type ResolvedMemorySearchConfig = { sessions: { deltaBytes: number; deltaMessages: number; + postCompactionForce: boolean; }; }; query: { @@ -229,6 +230,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 = { @@ -296,6 +301,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, @@ -315,6 +321,7 @@ function mergeConfig( sessions: { deltaBytes, deltaMessages, + postCompactionForce, }, }, query: { diff --git a/src/config/schema.help.ts b/src/config/schema.help.ts index 529911d6e9e..e703c42aec6 100644 --- a/src/config/schema.help.ts +++ b/src/config/schema.help.ts @@ -842,6 +842,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.", "agents.defaults.compaction.recentTurnsPreserve": "Number of most recent user/assistant turns kept verbatim outside safeguard summarization (default: 3). Raise this to preserve exact recent dialogue context, or lower it to maximize compaction savings.", "agents.defaults.compaction.postIndexSync": diff --git a/src/config/schema.labels.ts b/src/config/schema.labels.ts index 05a4f3401a5..405a204d8cf 100644 --- a/src/config/schema.labels.ts +++ b/src/config/schema.labels.ts @@ -311,6 +311,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.compaction.recentTurnsPreserve": "Compaction Preserve Recent Turns", "agents.defaults.compaction.postIndexSync": "Compaction Post-Index Sync", "agents.defaults.compaction.qualityGuard.enabled": "Compaction Quality Guard", diff --git a/src/config/types.tools.ts b/src/config/types.tools.ts index 492282f2397..23554558510 100644 --- a/src/config/types.tools.ts +++ b/src/config/types.tools.ts @@ -377,6 +377,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 9df0776b956..69b0ca89135 100644 --- a/src/config/zod-schema.agent-runtime.ts +++ b/src/config/zod-schema.agent-runtime.ts @@ -623,6 +623,7 @@ export const MemorySearchSchema = z .object({ deltaBytes: z.number().int().nonnegative().optional(), deltaMessages: z.number().int().nonnegative().optional(), + postCompactionForce: z.boolean().optional(), }) .strict() .optional(),