diff --git a/src/agents/tools/canvas-tool.ts b/src/agents/tools/canvas-tool.ts index 2d98654fe3..77ddb56db4 100644 --- a/src/agents/tools/canvas-tool.ts +++ b/src/agents/tools/canvas-tool.ts @@ -6,7 +6,7 @@ import { canvasSnapshotTempPath, parseCanvasSnapshotPayload } from "../../cli/no import { imageMimeFromFormat } from "../../media/mime.js"; import { optionalStringEnum, stringEnum } from "../schema/typebox.js"; import { type AnyAgentTool, imageResult, jsonResult, readStringParam } from "./common.js"; -import { callGatewayTool, type GatewayCallOptions } from "./gateway.js"; +import { callGatewayTool, readGatewayCallOptions } from "./gateway.js"; import { resolveNodeId } from "./nodes-utils.js"; const CANVAS_ACTIONS = [ @@ -58,11 +58,7 @@ export function createCanvasTool(): AnyAgentTool { execute: async (_toolCallId, args) => { const params = args as Record; const action = readStringParam(params, "action", { required: true }); - const gatewayOpts: GatewayCallOptions = { - gatewayUrl: readStringParam(params, "gatewayUrl", { trim: false }), - gatewayToken: readStringParam(params, "gatewayToken", { trim: false }), - timeoutMs: typeof params.timeoutMs === "number" ? params.timeoutMs : undefined, - }; + const gatewayOpts = readGatewayCallOptions(params); const nodeId = await resolveNodeId( gatewayOpts, diff --git a/src/agents/tools/gateway.ts b/src/agents/tools/gateway.ts index 8c658d67b2..b987db3b8e 100644 --- a/src/agents/tools/gateway.ts +++ b/src/agents/tools/gateway.ts @@ -1,6 +1,7 @@ import { loadConfig, resolveGatewayPort } from "../../config/config.js"; import { callGateway } from "../../gateway/call.js"; import { GATEWAY_CLIENT_MODES, GATEWAY_CLIENT_NAMES } from "../../utils/message-channel.js"; +import { readStringParam } from "./common.js"; export const DEFAULT_GATEWAY_URL = "ws://127.0.0.1:18789"; @@ -10,6 +11,14 @@ export type GatewayCallOptions = { timeoutMs?: number; }; +export function readGatewayCallOptions(params: Record): GatewayCallOptions { + return { + gatewayUrl: readStringParam(params, "gatewayUrl", { trim: false }), + gatewayToken: readStringParam(params, "gatewayToken", { trim: false }), + timeoutMs: typeof params.timeoutMs === "number" ? params.timeoutMs : undefined, + }; +} + function canonicalizeToolGatewayWsUrl(raw: string): { origin: string; key: string } { const input = raw.trim(); let url: URL; diff --git a/src/agents/tools/nodes-tool.ts b/src/agents/tools/nodes-tool.ts index a937354e5c..7add129efa 100644 --- a/src/agents/tools/nodes-tool.ts +++ b/src/agents/tools/nodes-tool.ts @@ -22,7 +22,7 @@ import { resolveSessionAgentId } from "../agent-scope.js"; import { optionalStringEnum, stringEnum } from "../schema/typebox.js"; import { sanitizeToolResultImages } from "../tool-images.js"; import { type AnyAgentTool, jsonResult, readStringParam } from "./common.js"; -import { callGatewayTool, type GatewayCallOptions } from "./gateway.js"; +import { callGatewayTool, readGatewayCallOptions } from "./gateway.js"; import { listNodes, resolveNodeIdFromList, resolveNodeId } from "./nodes-utils.js"; const NODES_TOOL_ACTIONS = [ @@ -109,11 +109,7 @@ export function createNodesTool(options?: { execute: async (_toolCallId, args) => { const params = args as Record; const action = readStringParam(params, "action", { required: true }); - const gatewayOpts: GatewayCallOptions = { - gatewayUrl: readStringParam(params, "gatewayUrl", { trim: false }), - gatewayToken: readStringParam(params, "gatewayToken", { trim: false }), - timeoutMs: typeof params.timeoutMs === "number" ? params.timeoutMs : undefined, - }; + const gatewayOpts = readGatewayCallOptions(params); try { switch (action) {