From 858286aecb82da6d6bb8f23ceb098e0700889fea Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Thu, 19 Feb 2026 06:43:26 +0000 Subject: [PATCH] refactor(cli): centralize memory manager setup wiring --- src/cli/memory-cli.ts | 60 ++++++++++++++++++++++++++----------------- 1 file changed, 36 insertions(+), 24 deletions(-) diff --git a/src/cli/memory-cli.ts b/src/cli/memory-cli.ts index 82dbb50e70..6449653f8a 100644 --- a/src/cli/memory-cli.ts +++ b/src/cli/memory-cli.ts @@ -28,6 +28,7 @@ type MemoryCommandOptions = { }; type MemoryManager = NonNullable; +type MemoryManagerPurpose = Parameters[0]["purpose"]; type MemorySourceName = "memory" | "sessions"; @@ -82,6 +83,31 @@ function formatExtraPaths(workspaceDir: string, extraPaths: string[]): string[] return normalizeExtraMemoryPaths(workspaceDir, extraPaths).map((entry) => shortenHomePath(entry)); } +async function withMemoryManagerForAgent(params: { + cfg: ReturnType; + agentId: string; + purpose?: MemoryManagerPurpose; + run: (manager: MemoryManager) => Promise; +}): Promise { + const managerParams: Parameters[0] = { + cfg: params.cfg, + agentId: params.agentId, + }; + if (params.purpose) { + managerParams.purpose = params.purpose; + } + await withManager({ + getManager: () => getMemorySearchManager(managerParams), + onMissing: (error) => defaultRuntime.log(error ?? "Memory search disabled."), + onCloseError: (err) => + defaultRuntime.error(`Memory manager close failed: ${formatErrorMessage(err)}`), + close: async (manager) => { + await manager.close?.(); + }, + run: params.run, + }); +} + async function checkReadableFile(pathname: string): Promise<{ exists: boolean; issue?: string }> { try { await fs.access(pathname, fsSync.constants.R_OK); @@ -283,14 +309,10 @@ export async function runMemoryStatus(opts: MemoryCommandOptions) { for (const agentId of agentIds) { const managerPurpose = opts.index ? "default" : "status"; - await withManager({ - getManager: () => getMemorySearchManager({ cfg, agentId, purpose: managerPurpose }), - onMissing: (error) => defaultRuntime.log(error ?? "Memory search disabled."), - onCloseError: (err) => - defaultRuntime.error(`Memory manager close failed: ${formatErrorMessage(err)}`), - close: async (manager) => { - await manager.close?.(); - }, + await withMemoryManagerForAgent({ + cfg, + agentId, + purpose: managerPurpose, run: async (manager) => { const deep = Boolean(opts.deep || opts.index); let embeddingProbe: @@ -551,14 +573,9 @@ export function registerMemoryCli(program: Command) { const cfg = loadConfig(); const agentIds = resolveAgentIds(cfg, opts.agent); for (const agentId of agentIds) { - await withManager({ - getManager: () => getMemorySearchManager({ cfg, agentId }), - onMissing: (error) => defaultRuntime.log(error ?? "Memory search disabled."), - onCloseError: (err) => - defaultRuntime.error(`Memory manager close failed: ${formatErrorMessage(err)}`), - close: async (manager) => { - await manager.close?.(); - }, + await withMemoryManagerForAgent({ + cfg, + agentId, run: async (manager) => { try { const syncFn = manager.sync ? manager.sync.bind(manager) : undefined; @@ -700,14 +717,9 @@ export function registerMemoryCli(program: Command) { ) => { const cfg = loadConfig(); const agentId = resolveAgent(cfg, opts.agent); - await withManager({ - getManager: () => getMemorySearchManager({ cfg, agentId }), - onMissing: (error) => defaultRuntime.log(error ?? "Memory search disabled."), - onCloseError: (err) => - defaultRuntime.error(`Memory manager close failed: ${formatErrorMessage(err)}`), - close: async (manager) => { - await manager.close?.(); - }, + await withMemoryManagerForAgent({ + cfg, + agentId, run: async (manager) => { let results: Awaited>; try {