فهرست منبع

fix(tool): treat .fbs files as text instead of images (#9276)

Co-authored-by: Claude <[email protected]>
zerone0x 1 ماه پیش
والد
کامیت
38c641a2fc
2فایلهای تغییر یافته به همراه32 افزوده شده و 1 حذف شده
  1. 3 1
      packages/opencode/src/tool/read.ts
  2. 29 0
      packages/opencode/test/tool/read.test.ts

+ 3 - 1
packages/opencode/src/tool/read.ts

@@ -59,7 +59,9 @@ export const ReadTool = Tool.define("read", {
       throw new Error(`File not found: ${filepath}`)
     }
 
-    const isImage = file.type.startsWith("image/") && file.type !== "image/svg+xml"
+    // Exclude SVG (XML-based) and vnd.fastbidsheet (.fbs extension, commonly FlatBuffers schema files)
+    const isImage =
+      file.type.startsWith("image/") && file.type !== "image/svg+xml" && file.type !== "image/vnd.fastbidsheet"
     const isPdf = file.type === "application/pdf"
     if (isImage || isPdf) {
       const mime = file.type

+ 29 - 0
packages/opencode/test/tool/read.test.ts

@@ -300,4 +300,33 @@ describe("tool.read truncation", () => {
       },
     })
   })
+
+  test(".fbs files (FlatBuffers schema) are read as text, not images", async () => {
+    await using tmp = await tmpdir({
+      init: async (dir) => {
+        // FlatBuffers schema content
+        const fbsContent = `namespace MyGame;
+
+table Monster {
+  pos:Vec3;
+  name:string;
+  inventory:[ubyte];
+}
+
+root_type Monster;`
+        await Bun.write(path.join(dir, "schema.fbs"), fbsContent)
+      },
+    })
+    await Instance.provide({
+      directory: tmp.path,
+      fn: async () => {
+        const read = await ReadTool.init()
+        const result = await read.execute({ filePath: path.join(tmp.path, "schema.fbs") }, ctx)
+        // Should be read as text, not as image
+        expect(result.attachments).toBeUndefined()
+        expect(result.output).toContain("namespace MyGame")
+        expect(result.output).toContain("table Monster")
+      },
+    })
+  })
 })