From 5852e79ec6851289505c306449ba61b9520ee7c9 Mon Sep 17 00:00:00 2001 From: Aiden Cline Date: Tue, 26 May 2026 11:23:49 -0500 Subject: [PATCH] fix(opencode): suppress vertex metadata lookup warning --- packages/opencode/src/server/server.ts | 1 + packages/opencode/src/session/prompt.ts | 1 + packages/opencode/src/util/warning.ts | 10 ++++++++++ packages/opencode/test/util/warning.test.ts | 13 +++++++++++++ 4 files changed, 25 insertions(+) create mode 100644 packages/opencode/src/util/warning.ts create mode 100644 packages/opencode/test/util/warning.test.ts diff --git a/packages/opencode/src/server/server.ts b/packages/opencode/src/server/server.ts index 9a448b78d6..5414f54508 100644 --- a/packages/opencode/src/server/server.ts +++ b/packages/opencode/src/server/server.ts @@ -1,4 +1,5 @@ import "./init-projectors" +import "@/util/warning" import { NodeHttpServer } from "@effect/platform-node" import * as Log from "@opencode-ai/core/util/log" diff --git a/packages/opencode/src/session/prompt.ts b/packages/opencode/src/session/prompt.ts index 22fe4d81cd..2c039225ae 100644 --- a/packages/opencode/src/session/prompt.ts +++ b/packages/opencode/src/session/prompt.ts @@ -1,5 +1,6 @@ import path from "path" import os from "os" +import "@/util/warning" import { SessionID, MessageID, PartID } from "./schema" import { MessageV2 } from "./message-v2" import * as Log from "@opencode-ai/core/util/log" diff --git a/packages/opencode/src/util/warning.ts b/packages/opencode/src/util/warning.ts new file mode 100644 index 0000000000..2acbdcb8d3 --- /dev/null +++ b/packages/opencode/src/util/warning.ts @@ -0,0 +1,10 @@ +const emitWarning = process.emitWarning.bind(process) + +// Google ADC checks the metadata service during local Vertex authentication. +// That expected miss should not write directly over the interactive UI. +process.emitWarning = ((...args: Parameters) => { + const type = typeof args[1] === "string" ? args[1] : args[1]?.type + const name = type ?? (args[0] instanceof Error ? args[0].name : undefined) + if (name === "MetadataLookupWarning") return + emitWarning(...args) +}) as typeof process.emitWarning diff --git a/packages/opencode/test/util/warning.test.ts b/packages/opencode/test/util/warning.test.ts new file mode 100644 index 0000000000..88f258dfac --- /dev/null +++ b/packages/opencode/test/util/warning.test.ts @@ -0,0 +1,13 @@ +import { expect, test } from "bun:test" +import { Process } from "@/util/process" + +test("suppresses metadata lookup warnings without hiding other warnings", async () => { + const out = await Process.run([ + process.execPath, + "-e", + 'await import("./src/util/warning.ts"); process.emitWarning("metadata", "MetadataLookupWarning"); process.emitWarning("visible", "VisibleWarning")', + ]) + + expect(out.stderr.toString()).not.toContain("MetadataLookupWarning") + expect(out.stderr.toString()).toContain("VisibleWarning: visible") +})