From 421e44ec8c31c404dc041fb17bd17486ef2ced08 Mon Sep 17 00:00:00 2001 From: Aiden Cline <63023139+rekram1-node@users.noreply.github.com> Date: Mon, 26 Oct 2026 00:04:20 -0500 Subject: [PATCH] fix(ai): map avif, heic, heif and mov extensions to media types (#58886) --- packages/ai/src/utils/media-type.ts | 4 ++++ packages/ai/test/media.test.ts | 10 ++++++++++ 2 files changed, 14 insertions(+) diff --git a/packages/ai/src/utils/media-type.ts b/packages/ai/src/utils/media-type.ts index 0bde232d772..1f3c9bda2d7 100644 --- a/packages/ai/src/utils/media-type.ts +++ b/packages/ai/src/utils/media-type.ts @@ -53,8 +53,12 @@ const EXTENSIONS: Readonly> = { jpeg: "image/jpeg", gif: "image/gif", webp: "image/webp", + avif: "image/avif", + heic: "image/heic", + heif: "image/heif", pdf: "application/pdf", mp4: "video/mp4", + mov: "video/quicktime", webm: "video/webm", mp3: "audio/mpeg", m4a: "audio/mp4", diff --git a/packages/ai/test/media.test.ts b/packages/ai/test/media.test.ts index c6cb3beefd5..5bd2891817f 100644 --- a/packages/ai/test/media.test.ts +++ b/packages/ai/test/media.test.ts @@ -291,6 +291,16 @@ describe("Media", () => { yield* fs.writeFile(plain, new TextEncoder().encode("# hi")) expect((yield* Media.file(plain)).mediaType).toBe("text/markdown") + for (const [name, mediaType] of [ + ["photo.avif", "image/avif"], + ["photo.HEIC", "image/heic"], + ["photo.heif", "image/heif"], + ["clip.mov", "video/quicktime"], + ]) { + yield* fs.writeFile(`${dir}/${name}`, Uint8Array.from([1, 2, 3])) + expect((yield* Media.file(`${dir}/${name}`)).mediaType).toBe(mediaType) + } + const target = `${dir}/copy.png` yield* Media.write(Media.base64("AQID", "image/png"), target) expect(yield* fs.readFile(target)).toEqual(Uint8Array.from([1, 2, 3]))