From afebeb5e9af9c9c34f3c66558464aff80cc3ca2a Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Sat, 18 Apr 2026 19:19:02 +0100 Subject: [PATCH] fix: align active-memory timeout schema (#68480) (thanks @Bartok9) --- CHANGELOG.md | 1 + docs/concepts/active-memory.md | 2 +- extensions/active-memory/config.test.ts | 28 +++++++++++++++++++ extensions/active-memory/openclaw.plugin.json | 2 +- 4 files changed, 31 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3f8f8114e9c..f656df693eb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -80,6 +80,7 @@ Docs: https://docs.openclaw.ai - CLI/update: preserve macOS restart helper launchctl failures in the update restart log without letting log setup block the restart path. (#68492) Thanks @hclsys. - Slack/threads: keep file-only root messages as starter context so first thread replies can still hydrate starter media. (#68594) Thanks @martingarramon. - Google/Antigravity: resolve forward-compatible Gemini 3.1 Pro custom-tools and Flash variants from the bundled Google plugin templates, so `google-antigravity/gemini-3.1-pro-preview-customtools` no longer falls through to an unknown-model error. Fixes #35512. +- Active Memory: raise the blocking recall timeout ceiling to 120 seconds and reject larger config values during plugin schema validation. Fixes #68410. (#68480) Thanks @Bartok9. ## 2026.4.15 diff --git a/docs/concepts/active-memory.md b/docs/concepts/active-memory.md index 94d67f04b5b..4ebc1b61fa4 100644 --- a/docs/concepts/active-memory.md +++ b/docs/concepts/active-memory.md @@ -628,7 +628,7 @@ The most important fields are: | `config.thinking` | `"off" \| "minimal" \| "low" \| "medium" \| "high" \| "xhigh" \| "adaptive"` | Advanced thinking override for the blocking memory sub-agent; default `off` for speed | | `config.promptOverride` | `string` | Advanced full prompt replacement; not recommended for normal use | | `config.promptAppend` | `string` | Advanced extra instructions appended to the default or overridden prompt | -| `config.timeoutMs` | `number` | Hard timeout for the blocking memory sub-agent | +| `config.timeoutMs` | `number` | Hard timeout for the blocking memory sub-agent, capped at 120000 ms | | `config.maxSummaryChars` | `number` | Maximum total characters allowed in the active-memory summary | | `config.logging` | `boolean` | Emits active memory logs while tuning | | `config.persistTranscripts` | `boolean` | Keeps blocking memory sub-agent transcripts on disk instead of deleting temp files | diff --git a/extensions/active-memory/config.test.ts b/extensions/active-memory/config.test.ts index 1326ba13e68..e37aa8e0904 100644 --- a/extensions/active-memory/config.test.ts +++ b/extensions/active-memory/config.test.ts @@ -21,4 +21,32 @@ describe("active-memory manifest config schema", () => { expect(result.ok).toBe(true); }); + + it("accepts timeoutMs values at the runtime ceiling", () => { + const result = validateJsonSchemaValue({ + schema: manifest.configSchema, + cacheKey: "active-memory.manifest.timeout-ceiling", + value: { + enabled: true, + agents: ["main"], + timeoutMs: 120_000, + }, + }); + + expect(result.ok).toBe(true); + }); + + it("rejects timeoutMs values above the runtime ceiling", () => { + const result = validateJsonSchemaValue({ + schema: manifest.configSchema, + cacheKey: "active-memory.manifest.timeout-above-ceiling", + value: { + enabled: true, + agents: ["main"], + timeoutMs: 120_001, + }, + }); + + expect(result.ok).toBe(false); + }); }); diff --git a/extensions/active-memory/openclaw.plugin.json b/extensions/active-memory/openclaw.plugin.json index 993db463557..a9e605aee67 100644 --- a/extensions/active-memory/openclaw.plugin.json +++ b/extensions/active-memory/openclaw.plugin.json @@ -28,7 +28,7 @@ "type": "string", "enum": ["off", "minimal", "low", "medium", "high", "xhigh", "adaptive"] }, - "timeoutMs": { "type": "integer", "minimum": 250 }, + "timeoutMs": { "type": "integer", "minimum": 250, "maximum": 120000 }, "queryMode": { "type": "string", "enum": ["message", "recent", "full"]