diff --git a/src/agents/tools/message-tool.ts b/src/agents/tools/message-tool.ts index 657284b52..19cdb122d 100644 --- a/src/agents/tools/message-tool.ts +++ b/src/agents/tools/message-tool.ts @@ -340,6 +340,16 @@ export function createMessageTool(options?: MessageToolOptions): AnyAgentTool { const action = readStringParam(params, "action", { required: true, }) as ChannelMessageActionName; + + // Handle path and filePath parameters: convert to media with file:// URL + if (action === "send" && !params.media) { + const filePath = + (params.path as string | undefined) || (params.filePath as string | undefined); + if (filePath) { + params.media = filePath.startsWith("file://") ? filePath : `file://${filePath}`; + } + } + const accountId = readStringParam(params, "accountId") ?? agentAccountId; const gateway = { diff --git a/src/infra/outbound/message-action-runner.ts b/src/infra/outbound/message-action-runner.ts index dc8aeddf3..aef11c09c 100644 --- a/src/infra/outbound/message-action-runner.ts +++ b/src/infra/outbound/message-action-runner.ts @@ -343,7 +343,7 @@ async function hydrateSendAttachmentParams(params: { action: ChannelMessageActionName; dryRun?: boolean; }): Promise { - if (params.action !== "sendAttachment") return; + if (params.action !== "sendAttachment" && params.action !== "send") return; const mediaHint = readStringParam(params.args, "media", { trim: false }); const fileHint =