55 lines
1.8 KiB
TypeScript
55 lines
1.8 KiB
TypeScript
import type { ResolvedMemorySearchConfig } from "../agents/memory-search.js";
|
|
|
|
import { hashText } from "./internal.js";
|
|
import { fingerprintHeaderNames } from "./headers-fingerprint.js";
|
|
|
|
export function computeMemoryManagerCacheKey(params: {
|
|
agentId: string;
|
|
workspaceDir: string;
|
|
settings: ResolvedMemorySearchConfig;
|
|
}): string {
|
|
const settings = params.settings;
|
|
const fingerprint = hashText(
|
|
JSON.stringify({
|
|
enabled: settings.enabled,
|
|
sources: [...settings.sources].sort((a, b) => a.localeCompare(b)),
|
|
provider: settings.provider,
|
|
model: settings.model,
|
|
fallback: settings.fallback,
|
|
local: {
|
|
modelPath: settings.local.modelPath,
|
|
modelCacheDir: settings.local.modelCacheDir,
|
|
},
|
|
remote: settings.remote
|
|
? {
|
|
baseUrl: settings.remote.baseUrl,
|
|
headerNames: fingerprintHeaderNames(settings.remote.headers),
|
|
batch: settings.remote.batch
|
|
? {
|
|
enabled: settings.remote.batch.enabled,
|
|
wait: settings.remote.batch.wait,
|
|
concurrency: settings.remote.batch.concurrency,
|
|
pollIntervalMs: settings.remote.batch.pollIntervalMs,
|
|
timeoutMinutes: settings.remote.batch.timeoutMinutes,
|
|
}
|
|
: undefined,
|
|
}
|
|
: undefined,
|
|
experimental: settings.experimental,
|
|
store: {
|
|
driver: settings.store.driver,
|
|
path: settings.store.path,
|
|
vector: {
|
|
enabled: settings.store.vector.enabled,
|
|
extensionPath: settings.store.vector.extensionPath,
|
|
},
|
|
},
|
|
chunking: settings.chunking,
|
|
sync: settings.sync,
|
|
query: settings.query,
|
|
cache: settings.cache,
|
|
}),
|
|
);
|
|
return `${params.agentId}:${params.workspaceDir}:${fingerprint}`;
|
|
}
|