From f2021a85d61b2a1de2188af2da604102d16731b0 Mon Sep 17 00:00:00 2001 From: adamdotdevin <2363879+adamdottv@users.noreply.github.com> Date: Wed, 13 Aug 2025 10:36:50 -0500 Subject: [PATCH] fix: allow attachments outside cwd, and support svg --- packages/opencode/src/session/index.ts | 1 + packages/opencode/src/tool/read.ts | 4 +--- packages/opencode/src/tool/tool.ts | 1 + 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/opencode/src/session/index.ts b/packages/opencode/src/session/index.ts index 85b067ef..c0ab7c7d 100644 --- a/packages/opencode/src/session/index.ts +++ b/packages/opencode/src/session/index.ts @@ -525,6 +525,7 @@ export namespace Session { abort: new AbortController().signal, agent: input.agent!, messageID: userMsg.id, + extra: { bypassCwdCheck: true }, metadata: async () => {}, }), ) diff --git a/packages/opencode/src/tool/read.ts b/packages/opencode/src/tool/read.ts index 79357930..8b3cd97b 100644 --- a/packages/opencode/src/tool/read.ts +++ b/packages/opencode/src/tool/read.ts @@ -24,7 +24,7 @@ export const ReadTool = Tool.define("read", { filepath = path.join(process.cwd(), filepath) } const app = App.info() - if (!Filesystem.contains(app.path.cwd, filepath)) { + if (!ctx.extra?.["bypassCwdCheck"] && !Filesystem.contains(app.path.cwd, filepath)) { throw new Error(`File ${filepath} is not in the current working directory`) } @@ -98,8 +98,6 @@ function isImageFile(filePath: string): string | false { return "GIF" case ".bmp": return "BMP" - case ".svg": - return "SVG" case ".webp": return "WebP" default: diff --git a/packages/opencode/src/tool/tool.ts b/packages/opencode/src/tool/tool.ts index 8be3d0cd..871a10c8 100644 --- a/packages/opencode/src/tool/tool.ts +++ b/packages/opencode/src/tool/tool.ts @@ -10,6 +10,7 @@ export namespace Tool { agent: string callID?: string abort: AbortSignal + extra?: { [key: string]: any } metadata(input: { title?: string; metadata?: M }): void } export interface Info {