From a09b32e86fac8510f714a48a9f225e5c47baddd4 Mon Sep 17 00:00:00 2001 From: Marc J Saint-jour <82672745+Junebugg1214@users.noreply.github.com> Date: Thu, 12 Mar 2026 20:04:13 -0400 Subject: [PATCH] fix: restore memory search output dimensionality --- src/agents/memory-search.ts | 43 +++++-------------------------------- 1 file changed, 5 insertions(+), 38 deletions(-) diff --git a/src/agents/memory-search.ts b/src/agents/memory-search.ts index 1cbc83b7781..07045e2b550 100644 --- a/src/agents/memory-search.ts +++ b/src/agents/memory-search.ts @@ -3,12 +3,6 @@ import path from "node:path"; import type { OpenClawConfig, MemorySearchConfig } from "../config/config.js"; import { resolveStateDir } from "../config/paths.js"; import type { SecretInput } from "../config/types.secrets.js"; -import { - isMemoryMultimodalEnabled, - normalizeMemoryMultimodalSettings, - supportsMemoryMultimodalEmbeddings, - type MemoryMultimodalSettings, -} from "../memory/multimodal.js"; import { clampInt, clampNumber, resolveUserPath } from "../utils.js"; import { resolveAgentConfig } from "./agent-scope.js"; @@ -16,7 +10,6 @@ export type ResolvedMemorySearchConfig = { enabled: boolean; sources: Array<"memory" | "sessions">; extraPaths: string[]; - multimodal: MemoryMultimodalSettings; provider: "openai" | "local" | "gemini" | "voyage" | "mistral" | "ollama" | "auto"; remote?: { baseUrl?: string; @@ -61,7 +54,6 @@ export type ResolvedMemorySearchConfig = { sessions: { deltaBytes: number; deltaMessages: number; - postCompactionForce: boolean; }; }; query: { @@ -202,7 +194,11 @@ function mergeConfig( ? DEFAULT_OLLAMA_MODEL : undefined; const model = overrides?.model ?? defaults?.model ?? modelDefault ?? ""; - const outputDimensionality = overrides?.outputDimensionality ?? defaults?.outputDimensionality; + const rawOutputDimensionality = overrides?.outputDimensionality ?? defaults?.outputDimensionality; + const outputDimensionality = + typeof rawOutputDimensionality === "number" && Number.isFinite(rawOutputDimensionality) + ? clampInt(rawOutputDimensionality, 1, Number.MAX_SAFE_INTEGER) + : undefined; const local = { modelPath: overrides?.local?.modelPath ?? defaults?.local?.modelPath, modelCacheDir: overrides?.local?.modelCacheDir ?? defaults?.local?.modelCacheDir, @@ -212,11 +208,6 @@ function mergeConfig( .map((value) => value.trim()) .filter(Boolean); const extraPaths = Array.from(new Set(rawPaths)); - const multimodal = normalizeMemoryMultimodalSettings({ - enabled: overrides?.multimodal?.enabled ?? defaults?.multimodal?.enabled, - modalities: overrides?.multimodal?.modalities ?? defaults?.multimodal?.modalities, - maxFileBytes: overrides?.multimodal?.maxFileBytes ?? defaults?.multimodal?.maxFileBytes, - }); const vector = { enabled: overrides?.store?.vector?.enabled ?? defaults?.store?.vector?.enabled ?? true, extensionPath: @@ -249,10 +240,6 @@ 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 = { @@ -320,12 +307,10 @@ 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; return { enabled, sources, extraPaths, - multimodal, provider, remote, experimental: { @@ -342,7 +327,6 @@ function mergeConfig( sessions: { deltaBytes, deltaMessages, - postCompactionForce, }, }, query: { @@ -385,22 +369,5 @@ export function resolveMemorySearchConfig( if (!resolved.enabled) { return null; } - const multimodalActive = isMemoryMultimodalEnabled(resolved.multimodal); - if ( - multimodalActive && - !supportsMemoryMultimodalEmbeddings({ - provider: resolved.provider, - model: resolved.model, - }) - ) { - throw new Error( - 'agents.*.memorySearch.multimodal requires memorySearch.provider = "gemini" and model = "gemini-embedding-2-preview".', - ); - } - if (multimodalActive && resolved.fallback !== "none") { - throw new Error( - 'agents.*.memorySearch.multimodal does not support memorySearch.fallback. Set fallback to "none".', - ); - } return resolved; }