feat: add OpenAI batch memory indexing

This commit is contained in:
Peter Steinberger
2026-01-17 22:31:12 +00:00
parent acc3eb11d0
commit a31a79396b
11 changed files with 587 additions and 38 deletions

View File

@@ -366,6 +366,14 @@ const FIELD_HELP: Record<string, string> = {
"agents.defaults.memorySearch.remote.apiKey": "Custom API key for the remote embedding provider.",
"agents.defaults.memorySearch.remote.headers":
"Extra headers for remote embeddings (merged; remote overrides OpenAI headers).",
"agents.defaults.memorySearch.remote.batch.enabled":
"Enable OpenAI Batch API for memory embeddings (default: false).",
"agents.defaults.memorySearch.remote.batch.wait":
"Wait for OpenAI batch completion when indexing (default: true).",
"agents.defaults.memorySearch.remote.batch.pollIntervalMs":
"Polling interval in ms for OpenAI batch status (default: 5000).",
"agents.defaults.memorySearch.remote.batch.timeoutMinutes":
"Timeout in minutes for OpenAI batch indexing (default: 60).",
"agents.defaults.memorySearch.local.modelPath":
"Local GGUF model path or hf: URI (node-llama-cpp).",
"agents.defaults.memorySearch.fallback":

View File

@@ -158,6 +158,16 @@ export type MemorySearchConfig = {
baseUrl?: string;
apiKey?: string;
headers?: Record<string, string>;
batch?: {
/** Enable OpenAI Batch API for embedding indexing (default: false). */
enabled?: boolean;
/** Wait for batch completion (default: true). */
wait?: boolean;
/** Poll interval in ms (default: 5000). */
pollIntervalMs?: number;
/** Timeout in minutes (default: 60). */
timeoutMinutes?: number;
};
};
/** Fallback behavior when local embeddings fail. */
fallback?: "openai" | "none";

View File

@@ -206,6 +206,14 @@ export const MemorySearchSchema = z
baseUrl: z.string().optional(),
apiKey: z.string().optional(),
headers: z.record(z.string(), z.string()).optional(),
batch: z
.object({
enabled: z.boolean().optional(),
wait: z.boolean().optional(),
pollIntervalMs: z.number().int().nonnegative().optional(),
timeoutMinutes: z.number().int().positive().optional(),
})
.optional(),
})
.optional(),
fallback: z.union([z.literal("openai"), z.literal("none")]).optional(),