/** * `memory_get` — safe snippet read. * * Port of upstream `createMemoryGetTool` at * `upstream reference`. */ import { tool } from '@langchain/core/tools'; import { MEMORY_GET_DESCRIPTION, MEMORY_GET_TOOL_NAME, } from '@/memory/constants'; import { MemoryGetSchema, type MemoryGetToolResult, type MemoryToolBinding, } from './shared'; // eslint-disable-next-line @typescript-eslint/explicit-function-return-type export function createMemoryGetTool(binding: MemoryToolBinding) { return tool( async (args): Promise => { try { const result = await binding.backend.get(binding.scope, { path: args.path, from: args.from, lines: args.lines, }); if (!result) { const payload: MemoryGetToolResult = { path: args.path, text: '' }; return JSON.stringify(payload); } const payload: MemoryGetToolResult = { path: result.path, text: result.text, }; return JSON.stringify(payload); } catch (err) { const payload: MemoryGetToolResult = { path: args.path, text: '', disabled: true, error: err instanceof Error ? err.message : String(err), }; return JSON.stringify(payload); } }, { name: MEMORY_GET_TOOL_NAME, description: MEMORY_GET_DESCRIPTION, schema: MemoryGetSchema, } ); }