From 626813b616a940a051e99a7080a89f3954d0d9b5 Mon Sep 17 00:00:00 2001 From: Mikael Hugo Date: Sat, 2 May 2026 18:42:25 +0200 Subject: [PATCH] fix(vectordrive): silence optional dependency warning --- src/resources/extensions/vectordrive/index.ts | 13 ++----- .../vectordrive/tests/manager.test.ts | 38 ++++++++++++++++++- 2 files changed, 40 insertions(+), 11 deletions(-) diff --git a/src/resources/extensions/vectordrive/index.ts b/src/resources/extensions/vectordrive/index.ts index 84aa2ba99..0dc34b5a3 100644 --- a/src/resources/extensions/vectordrive/index.ts +++ b/src/resources/extensions/vectordrive/index.ts @@ -8,8 +8,8 @@ import type { ExtensionAPI } from "@singularity-forge/pi-coding-agent"; import { VectordriveManager } from "./manager.js"; import { registerVectordriveInfoTool } from "./tool-info.js"; -import { registerVectordriveStoreTool } from "./tool-store.js"; import { registerVectordriveSearchTool } from "./tool-search.js"; +import { registerVectordriveStoreTool } from "./tool-store.js"; export default function (pi: ExtensionAPI) { registerVectordriveInfoTool(pi); @@ -17,16 +17,9 @@ export default function (pi: ExtensionAPI) { registerVectordriveSearchTool(pi); // Pre-warm the connection on session start - pi.on("session_start", async (_event, ctx) => { + pi.on("session_start", async () => { const manager = VectordriveManager.getInstance(); - const status = await manager.getStatus(); - - if (ctx.hasUI && status.backend === "none" && status.error) { - ctx.ui.notify( - `VectorDrive unavailable: ${status.error}`, - "warning", - ); - } + await manager.getStatus(); }); pi.on("session_shutdown", async () => { diff --git a/src/resources/extensions/vectordrive/tests/manager.test.ts b/src/resources/extensions/vectordrive/tests/manager.test.ts index 691167810..915f8ddba 100644 --- a/src/resources/extensions/vectordrive/tests/manager.test.ts +++ b/src/resources/extensions/vectordrive/tests/manager.test.ts @@ -1,5 +1,6 @@ import { describe, expect, it } from "vitest"; -import { VectordriveManager, textToVector } from "../manager.js"; +import extension from "../index.js"; +import { textToVector, VectordriveManager } from "../manager.js"; describe("VectordriveManager", () => { it("should return singleton instance", () => { @@ -17,6 +18,41 @@ describe("VectordriveManager", () => { expect(status.backend).toBe("none"); expect(status.error).toBeTruthy(); }); + + it("should not warn on session start when optional vectordrive package is absent", async () => { + type SessionStartHandler = ( + event: unknown, + ctx: { + hasUI: boolean; + ui: { notify: (message: string, level: string) => void }; + }, + ) => Promise; + const handlers = new Map(); + const notifications: Array<{ message: string; level: string }> = []; + const pi = { + registerTool: () => {}, + on: (event: string, handler: SessionStartHandler) => + handlers.set(event, handler), + }; + + const manager = VectordriveManager.getInstance(); + await manager.close(); + extension(pi as any); + + await handlers.get("session_start")?.( + {}, + { + hasUI: true, + ui: { + notify: (message: string, level: string) => { + notifications.push({ message, level }); + }, + }, + }, + ); + + expect(notifications).toEqual([]); + }); }); describe("textToVector", () => {