diff --git a/CHANGELOG.md b/CHANGELOG.md index e59485938..acc7dc28b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,9 @@ Docs: https://docs.clawd.bot ### Changes - Tools: allow `sessions_spawn` to override thinking level for sub-agent runs. +### Fixes +- Memory: apply OpenAI batch defaults even without explicit remote config. + ## 2026.1.17-3 ### Changes diff --git a/src/agents/memory-search.test.ts b/src/agents/memory-search.test.ts index 47a0c11d3..4e8a28c09 100644 --- a/src/agents/memory-search.test.ts +++ b/src/agents/memory-search.test.ts @@ -67,6 +67,39 @@ describe("memory search config", () => { expect(resolved?.store.vector.extensionPath).toBe("/opt/sqlite-vec.dylib"); }); + it("includes batch defaults for openai without remote overrides", () => { + const cfg = { + agents: { + defaults: { + memorySearch: { + provider: "openai", + }, + }, + }, + }; + const resolved = resolveMemorySearchConfig(cfg, "main"); + expect(resolved?.remote?.batch).toEqual({ + enabled: true, + wait: true, + pollIntervalMs: 5000, + timeoutMinutes: 60, + }); + }); + + it("keeps remote unset for local provider without overrides", () => { + const cfg = { + agents: { + defaults: { + memorySearch: { + provider: "local", + }, + }, + }, + }; + const resolved = resolveMemorySearchConfig(cfg, "main"); + expect(resolved?.remote).toBeUndefined(); + }); + it("merges remote defaults with agent overrides", () => { const cfg = { agents: { diff --git a/src/agents/memory-search.ts b/src/agents/memory-search.ts index 54fd41798..de8bc7ce0 100644 --- a/src/agents/memory-search.ts +++ b/src/agents/memory-search.ts @@ -95,6 +95,7 @@ function mergeConfig( overrides?.experimental?.sessionMemory ?? defaults?.experimental?.sessionMemory ?? false; const provider = overrides?.provider ?? defaults?.provider ?? "openai"; const hasRemote = Boolean(defaults?.remote || overrides?.remote); + const includeRemote = hasRemote || provider === "openai"; const batch = { enabled: overrides?.remote?.batch?.enabled ?? defaults?.remote?.batch?.enabled ?? true, wait: overrides?.remote?.batch?.wait ?? defaults?.remote?.batch?.wait ?? true, @@ -107,7 +108,7 @@ function mergeConfig( defaults?.remote?.batch?.timeoutMinutes ?? 60, }; - const remote = hasRemote + const remote = includeRemote ? { baseUrl: overrides?.remote?.baseUrl ?? defaults?.remote?.baseUrl, apiKey: overrides?.remote?.apiKey ?? defaults?.remote?.apiKey,