UNPKG

openclaw

Version:

Multi-channel AI gateway with extensible messaging integrations

91 lines (90 loc) 2.6 kB
import { t as openNodeSqliteDatabase } from "../../node-sqlite-BpQX3W0e.js"; import { t as loadSqliteVecExtension } from "../../sqlite-vec-C8wbuI1F.js"; import "../../memory-core-host-engine-schema-B39K09CU.js"; import "../../sqlite-runtime-BpLlraG0.js"; import { n as runVectorKnnQuery } from "../../manager-search-knn-DivxqjzE.js"; //#region extensions/memory-core/src/memory/manager-search-knn.child.ts const MAX_STDIN_BYTES = 1048576; const MAX_STDOUT_BYTES = 2097152; function isChildInput(value) { if (!value || typeof value !== "object") return false; const input = value; return typeof input.databasePath === "string" && input.databasePath.length > 0 && Boolean(input.request) && typeof input.request === "object"; } async function run(input) { if (!isChildInput(input)) return { status: "failed", error: "invalid memory vector KNN child input" }; const db = openNodeSqliteDatabase(input.databasePath, { allowExtension: true, readOnly: true }); try { db.exec("PRAGMA query_only = ON; PRAGMA busy_timeout = 5000"); const loaded = await loadSqliteVecExtension({ db, extensionPath: input.extensionPath }); if (!loaded.ok) throw new Error(loaded.error ?? "sqlite-vec unavailable in memory search child"); return { status: "ok", value: runVectorKnnQuery(db, input.request) }; } catch (error) { return { status: "failed", error: error instanceof Error ? error.message : String(error) }; } finally { db.close(); } } function writeResult(result) { let payload = Buffer.from(JSON.stringify(result), "utf8"); if (payload.byteLength > MAX_STDOUT_BYTES) payload = Buffer.from(JSON.stringify({ status: "failed", error: "memory vector KNN child result is too large" }), "utf8"); process.stdout.write(payload); } const chunks = []; let inputBytes = 0; let inputTooLarge = false; process.stdin.on("data", (chunk) => { inputBytes += chunk.byteLength; if (inputBytes > MAX_STDIN_BYTES) { inputTooLarge = true; chunks.length = 0; return; } chunks.push(chunk); }); process.stdin.once("end", () => { if (inputTooLarge) { writeResult({ status: "failed", error: "memory vector KNN child input is too large" }); return; } let input; try { input = JSON.parse(Buffer.concat(chunks).toString("utf8")); } catch { writeResult({ status: "failed", error: "invalid memory vector KNN child JSON" }); return; } run(input).then(writeResult, (error) => { writeResult({ status: "failed", error: error instanceof Error ? error.message : String(error) }); }); }); process.stdin.resume(); //#endregion export {};