Config/MemorySearch: add post-compaction force reindex toggle

This commit is contained in:
Rodrigo Uroz
2026-02-24 16:32:41 +00:00
parent ed09e51807
commit be698b8bca
6 changed files with 15 additions and 0 deletions

View File

@@ -170,6 +170,7 @@ describe("memory search config", () => {
expect(resolved?.sync.sessions).toEqual({
deltaBytes: 100000,
deltaMessages: 50,
postCompactionForce: true,
});
});

View File

@@ -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: {

View File

@@ -842,6 +842,8 @@ export const FIELD_HELP: Record<string, string> = {
"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":

View File

@@ -311,6 +311,8 @@ export const FIELD_LABELS: Record<string, string> = {
"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",

View File

@@ -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. */

View File

@@ -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(),