From 845d97b6a50eecc1e614ee529b6246131c91f6d2 Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Mon, 2 Feb 2026 02:51:52 -0800 Subject: [PATCH] fix: handle legacy tool execute signatures --- src/agents/pi-tool-definition-adapter.ts | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/src/agents/pi-tool-definition-adapter.ts b/src/agents/pi-tool-definition-adapter.ts index 649f99f87..02dade569 100644 --- a/src/agents/pi-tool-definition-adapter.ts +++ b/src/agents/pi-tool-definition-adapter.ts @@ -13,7 +13,13 @@ import { jsonResult } from "./tools/common.js"; // oxlint-disable-next-line typescript/no-explicit-any type AnyAgentTool = AgentTool; -type ToolExecuteArgs = Parameters; +type ToolExecuteArgsCurrent = [ + string, + unknown, + AgentToolUpdateCallback | undefined, + unknown, + AbortSignal | undefined, +]; type ToolExecuteArgsLegacy = [ string, unknown, @@ -21,7 +27,10 @@ type ToolExecuteArgsLegacy = [ AgentToolUpdateCallback | undefined, unknown, ]; -type ToolExecuteArgsAny = ToolExecuteArgs | ToolExecuteArgsLegacy; +type ToolExecuteArgs = ToolDefinition["execute"] extends (...args: infer P) => unknown + ? P + : ToolExecuteArgsCurrent; +type ToolExecuteArgsAny = ToolExecuteArgs | ToolExecuteArgsLegacy | ToolExecuteArgsCurrent; function isPlainObject(value: unknown): value is Record { return typeof value === "object" && value !== null && !Array.isArray(value); @@ -63,7 +72,7 @@ function splitToolExecuteArgs(args: ToolExecuteArgsAny): { signal, }; } - const [toolCallId, params, onUpdate, _ctx, signal] = args; + const [toolCallId, params, onUpdate, _ctx, signal] = args as ToolExecuteArgsCurrent; return { toolCallId, params,