diff --git a/src/agents/bash-tools.test.ts b/src/agents/bash-tools.test.ts index 9a5c08d52..15ca2b0fc 100644 --- a/src/agents/bash-tools.test.ts +++ b/src/agents/bash-tools.test.ts @@ -20,6 +20,7 @@ const normalizeText = (value?: string) => (value ?? "") .replace(/\r\n/g, "\n") .replace(/\r/g, "\n") + .replace(/[\u0000-\u0008\u000b\u000c\u000e-\u001f\u007f]/g, "") .split("\n") .map((line) => line.replace(/\s+$/u, "")) .join("\n") diff --git a/src/auto-reply/media-note.ts b/src/auto-reply/media-note.ts index 515173a33..3460c0911 100644 --- a/src/auto-reply/media-note.ts +++ b/src/auto-reply/media-note.ts @@ -18,9 +18,13 @@ function formatMediaAttachedLine(params: { } export function buildInboundMediaNote(ctx: MsgContext): string | undefined { - const hasPathsArray = Array.isArray(ctx.MediaPaths) && ctx.MediaPaths.length > 0; - const paths = hasPathsArray + const hasPathsArray = + Array.isArray(ctx.MediaPaths) && ctx.MediaPaths.length > 0; + const pathsFromArray = Array.isArray(ctx.MediaPaths) ? ctx.MediaPaths + : undefined; + const paths = pathsFromArray && pathsFromArray.length > 0 + ? pathsFromArray : ctx.MediaPath?.trim() ? [ctx.MediaPath.trim()] : []; @@ -58,4 +62,3 @@ export function buildInboundMediaNote(ctx: MsgContext): string | undefined { } return lines.join("\n"); } - diff --git a/src/auto-reply/reply.ts b/src/auto-reply/reply.ts index af3e847fa..072b33c86 100644 --- a/src/auto-reply/reply.ts +++ b/src/auto-reply/reply.ts @@ -857,8 +857,11 @@ async function stageSandboxMedia(params: { }) { const { ctx, sessionCtx, cfg, sessionKey, workspaceDir } = params; const hasPathsArray = Array.isArray(ctx.MediaPaths) && ctx.MediaPaths.length > 0; - const rawPaths = hasPathsArray + const pathsFromArray = Array.isArray(ctx.MediaPaths) ? ctx.MediaPaths + : undefined; + const rawPaths = pathsFromArray && pathsFromArray.length > 0 + ? pathsFromArray : ctx.MediaPath?.trim() ? [ctx.MediaPath.trim()] : [];