



















@@ -176,7 +176,37 @@ describe("normalizeToolParameters", () => {
176176expect(parameters.properties).toEqual({});
177177});
178178179-it("preserves existing properties on type:object schemas", () => {
179+it("injects properties:{} when properties key exists but is undefined (MCP SDK edge case #75362)", () => {
180+const tool: AnyAgentTool = {
181+name: "get_flux_instance",
182+label: "get_flux_instance",
183+description: "Get flux instance",
184+parameters: { type: "object", properties: undefined } as unknown as Record<string, unknown>,
185+execute: vi.fn(),
186+};
187+188+const normalized = normalizeToolParameters(tool);
189+190+const parameters = normalized.parameters as Record<string, unknown>;
191+expect(parameters.type).toBe("object");
192+expect(parameters.properties).toEqual({});
193+});
194+195+it("injects properties:{} when properties key is null (MCP SDK edge case #75362)", () => {
196+const tool: AnyAgentTool = {
197+name: "get_flux_instance",
198+label: "get_flux_instance",
199+description: "Get flux instance",
200+parameters: { type: "object", properties: null } as unknown as Record<string, unknown>,
201+execute: vi.fn(),
202+};
203+204+const normalized = normalizeToolParameters(tool);
205+206+const parameters = normalized.parameters as Record<string, unknown>;
207+expect(parameters.type).toBe("object");
208+expect(parameters.properties).toEqual({});
209+});
180210const tool: AnyAgentTool = {
181211name: "query",
182212label: "query",
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。