1
0
opencode-agent[bot] 2 сар өмнө
parent
commit
472b33113e

+ 1 - 3
packages/app/src/components/directory-picker.tsx

@@ -17,9 +17,7 @@ export function useDirectoryPicker() {
 
   return (input: DirectoryPickerInput) => {
     if (directoryPickerKind(platform.platform, input.server) === "native" && platform.platform === "desktop") {
-      void platform
-        .openDirectoryPickerDialog({ title: input.title, multiple: input.multiple })
-        .then(input.onSelect)
+      void platform.openDirectoryPickerDialog({ title: input.title, multiple: input.multiple }).then(input.onSelect)
       return
     }
 

+ 8 - 5
packages/app/src/components/prompt-input/files.ts

@@ -2,11 +2,14 @@ import { ACCEPTED_FILE_TYPES, ACCEPTED_IMAGE_TYPES } from "@/constants/file-pick
 
 export { ACCEPTED_FILE_TYPES }
 
-type AttachmentPicker = (options: {
-  defaultPath?: string
-  multiple?: boolean
-  accept?: string[]
-}, onFile: (file: File) => Promise<unknown>) => Promise<void>
+type AttachmentPicker = (
+  options: {
+    defaultPath?: string
+    multiple?: boolean
+    accept?: string[]
+  },
+  onFile: (file: File) => Promise<unknown>,
+) => Promise<void>
 
 export function pickAttachmentFiles(input: {
   picker?: AttachmentPicker

+ 4 - 1
packages/app/src/context/platform.tsx

@@ -50,7 +50,10 @@ type PlatformBase = {
   notify(title: string, description?: string, href?: string): Promise<void>
 
   /** Open a native attachment picker and read selected files sequentially (desktop only) */
-  openAttachmentPickerDialog?(opts: OpenAttachmentPickerOptions, onFile: (file: File) => Promise<unknown>): Promise<void>
+  openAttachmentPickerDialog?(
+    opts: OpenAttachmentPickerOptions,
+    onFile: (file: File) => Promise<unknown>,
+  ): Promise<void>
 
   /** Open a native save file picker dialog (desktop only) */
   saveFilePickerDialog?(opts?: SaveFilePickerOptions): Promise<string | null>

+ 3 - 1
packages/desktop/src/main/attachment-picker.test.ts

@@ -11,7 +11,9 @@ import {
 
 describe("assertAttachmentBudget", () => {
   test("accepts selections within the media ingest limit", () => {
-    expect(() => assertAttachmentBudget([{ size: MAX_ATTACHMENT_BYTES / 2 }, { size: MAX_ATTACHMENT_BYTES / 2 }])).not.toThrow()
+    expect(() =>
+      assertAttachmentBudget([{ size: MAX_ATTACHMENT_BYTES / 2 }, { size: MAX_ATTACHMENT_BYTES / 2 }]),
+    ).not.toThrow()
   })
 
   test("rejects the selection before files are read when its total exceeds the limit", () => {

+ 4 - 2
packages/desktop/src/main/attachment-picker.ts

@@ -17,7 +17,8 @@ export function createPickedFileAuthorizations(
     },
     async read(sender: number, token: string, path: string) {
       const selection = selections.get(token)
-      if (selection?.sender !== sender || !selection.paths.delete(path)) throw new Error("File was not selected by the picker")
+      if (selection?.sender !== sender || !selection.paths.delete(path))
+        throw new Error("File was not selected by the picker")
       const bytes = await read(path, selection.remaining)
       selection.remaining -= bytes.byteLength
       if (selection.paths.size === 0) selections.delete(token)
@@ -39,7 +40,8 @@ export async function readAttachment(filePath: string, maxBytes = MAX_ATTACHMENT
   const file = await open(filePath, "r")
   try {
     const info = await file.stat()
-    if (info.size > maxBytes) throw new Error(`Selected attachments exceed the ${MAX_ATTACHMENT_BYTES / 1024 / 1024} MB limit`)
+    if (info.size > maxBytes)
+      throw new Error(`Selected attachments exceed the ${MAX_ATTACHMENT_BYTES / 1024 / 1024} MB limit`)
     const bytes = Buffer.allocUnsafe(info.size)
     let offset = 0
     while (offset < info.size) {

+ 5 - 1
packages/desktop/src/main/ipc.ts

@@ -131,7 +131,11 @@ export function registerIpcHandlers(deps: Deps) {
       })
       if (result.canceled) return null
       const files = await Promise.all(
-        result.filePaths.map(async (filePath) => ({ path: filePath, name: basename(filePath), size: (await stat(filePath)).size })),
+        result.filePaths.map(async (filePath) => ({
+          path: filePath,
+          name: basename(filePath),
+          size: (await stat(filePath)).size,
+        })),
       )
       assertAttachmentBudget(files)
       const token = pickedFiles.add(event.sender.id, result.filePaths)