


























@@ -58,6 +58,16 @@ afterEach(() => {
5858resetGlobalHookRunner();
5959});
606061+function requireToolPolicyParams(mock: ReturnType<typeof vi.fn>) {
62+const params = mock.mock.calls[0]?.[0] as
63+| { toolAllowlist?: string[]; toolDenylist?: string[] }
64+| undefined;
65+if (!params) {
66+throw new Error("expected plugin tool policy params");
67+}
68+return params;
69+}
70+6171describe("plugin tools MCP server", () => {
6272it("routes logs to stderr before resolving tools for stdio", async () => {
6373const { servePluginToolsMcp } = await import("./plugin-tools-serve.js");
@@ -99,18 +109,12 @@ describe("plugin tools MCP server", () => {
99109100110await servePluginToolsMcp();
101111102-expect(ensureStandalonePluginToolRegistryLoadedMock).toHaveBeenCalledWith(
103-expect.objectContaining({
104-toolAllowlist: expect.arrayContaining(["memory_search"]),
105-toolDenylist: ["memory_forget"],
106-}),
107-);
108-expect(resolvePluginToolsMock).toHaveBeenCalledWith(
109-expect.objectContaining({
110-toolAllowlist: expect.arrayContaining(["memory_search"]),
111-toolDenylist: ["memory_forget"],
112-}),
113-);
112+const loadPolicy = requireToolPolicyParams(ensureStandalonePluginToolRegistryLoadedMock);
113+expect(loadPolicy.toolAllowlist).toContain("memory_search");
114+expect(loadPolicy.toolDenylist).toEqual(["memory_forget"]);
115+const resolvePolicy = requireToolPolicyParams(resolvePluginToolsMock);
116+expect(resolvePolicy.toolAllowlist).toContain("memory_search");
117+expect(resolvePolicy.toolDenylist).toEqual(["memory_forget"]);
114118});
115119116120it("lists registered plugin tools and serializes non-array tool content", async () => {
@@ -132,16 +136,14 @@ describe("plugin tools MCP server", () => {
132136133137const handlers = createPluginToolsMcpHandlers([tool]);
134138const listed = await handlers.listTools();
135-expect(listed.tools).toEqual([
136-expect.objectContaining({
137-name: "memory_recall",
138-description: "Recall stored memory",
139-inputSchema: expect.objectContaining({
140-type: "object",
141-required: ["query"],
142-}),
143-}),
144-]);
139+expect(listed.tools).toHaveLength(1);
140+expect(listed.tools[0]?.name).toBe("memory_recall");
141+expect(listed.tools[0]?.description).toBe("Recall stored memory");
142+const inputSchema = listed.tools[0]?.inputSchema as
143+| { type?: unknown; required?: unknown }
144+| undefined;
145+expect(inputSchema?.type).toBe("object");
146+expect(inputSchema?.required).toEqual(["query"]);
145147146148const result = await handlers.callTool({
147149name: "memory_recall",
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。