diff --git a/assets/functions/scripts/run-agent.ts b/assets/functions/scripts/run-agent.ts index 425b5df..a8e02a3 100644 --- a/assets/functions/scripts/run-agent.ts +++ b/assets/functions/scripts/run-agent.ts @@ -92,6 +92,29 @@ function loadEnv(filePath: string): void { } } +function extractParamNames(fn: Function): string[] { + const src = fn.toString(); + const match = src.match(/^(?:async\s+)?function\s*\w*\s*\(([^)]*)\)/); + if (!match) { + return []; + } + return match[1] + .split(",") + .map((p) => p.trim().replace(/[:=?].*/s, "").trim()) + .filter(Boolean); +} + +function spreadArgs( + fn: Function, + data: Record, +): unknown[] { + const names = extractParamNames(fn); + if (names.length === 0) { + return []; + } + return names.map((name) => data[name]); +} + async function run( agentPath: string, agentFunc: string, @@ -103,7 +126,9 @@ async function run( throw new Error(`No module function '${agentFunc}' at '${agentPath}'`); } - const value = await mod[agentFunc](agentData); + const fn = mod[agentFunc] as Function; + const args = spreadArgs(fn, agentData); + const value = await fn(...args); returnToLlm(value); dumpResult(`{agent_name}:${agentFunc}`); } diff --git a/assets/functions/scripts/run-tool.ts b/assets/functions/scripts/run-tool.ts index f3d2887..5ffd32b 100644 --- a/assets/functions/scripts/run-tool.ts +++ b/assets/functions/scripts/run-tool.ts @@ -87,6 +87,29 @@ function loadEnv(filePath: string): void { } } +function extractParamNames(fn: Function): string[] { + const src = fn.toString(); + const match = src.match(/^(?:async\s+)?function\s*\w*\s*\(([^)]*)\)/); + if (!match) { + return []; + } + return match[1] + .split(",") + .map((p) => p.trim().replace(/[:=?].*/s, "").trim()) + .filter(Boolean); +} + +function spreadArgs( + fn: Function, + data: Record, +): unknown[] { + const names = extractParamNames(fn); + if (names.length === 0) { + return []; + } + return names.map((name) => data[name]); +} + async function run( toolPath: string, toolFunc: string, @@ -98,7 +121,9 @@ async function run( throw new Error(`No module function '${toolFunc}' at '${toolPath}'`); } - const value = await mod[toolFunc](toolData); + const fn = mod[toolFunc] as Function; + const args = spreadArgs(fn, toolData); + const value = await fn(...args); returnToLlm(value); dumpResult("{function_name}"); }