import { describe, expect, it, vi } from "vitest"; vi.mock("../../memory/index.js", () => { return { getMemorySearchManager: async () => { return { manager: { search: async () => { throw new Error("openai embeddings failed: 429 insufficient_quota"); }, readFile: async () => { throw new Error("path required"); }, status: () => ({ files: 0, chunks: 0, dirty: true, workspaceDir: "/tmp", dbPath: "/tmp/index.sqlite", provider: "openai", model: "text-embedding-3-small", requestedProvider: "openai", }), }, }; }, }; }); import { createMemoryGetTool, createMemorySearchTool } from "./memory-tool.js"; describe("memory tools", () => { it("does not throw when memory_search fails (e.g. embeddings 429)", async () => { const cfg = { agents: { list: [{ id: "main", default: true }] } }; const tool = createMemorySearchTool({ config: cfg }); expect(tool).not.toBeNull(); if (!tool) throw new Error("tool missing"); const result = await tool.execute("call_1", { query: "hello" }); expect(result.details).toEqual({ results: [], disabled: true, error: "openai embeddings failed: 429 insufficient_quota", }); }); it("does not throw when memory_get fails", async () => { const cfg = { agents: { list: [{ id: "main", default: true }] } }; const tool = createMemoryGetTool({ config: cfg }); expect(tool).not.toBeNull(); if (!tool) throw new Error("tool missing"); const result = await tool.execute("call_2", { path: "memory/NOPE.md" }); expect(result.details).toEqual({ path: "memory/NOPE.md", text: "", disabled: true, error: "path required", }); }); });