From fb9dc874d5069d0572df15377a46dc37bdb9a5e6 Mon Sep 17 00:00:00 2001 From: Kit Langton Date: Tue, 28 Apr 2026 10:50:32 +0300 Subject: [PATCH 1/2] test(provider): avoid plugin dependency install timeout (cherry picked from commit 179e540ccb556fc48934a5a34bbd0920c8af87b4) --- packages/opencode/test/provider/provider.test.ts | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/packages/opencode/test/provider/provider.test.ts b/packages/opencode/test/provider/provider.test.ts index 060943f9bf3..32349c7be8e 100644 --- a/packages/opencode/test/provider/provider.test.ts +++ b/packages/opencode/test/provider/provider.test.ts @@ -56,6 +56,14 @@ async function defaultModel() { return run((provider) => provider.defaultModel()) } +async function markPluginDependenciesReady(dir: string) { + await mkdir(path.join(dir, "node_modules"), { recursive: true }) + await Bun.write( + path.join(dir, "package-lock.json"), + JSON.stringify({ packages: { "": { dependencies: { "@opencode-ai/plugin": "0.0.0" } } } }), + ) +} + function paid(providers: Awaited>) { const item = providers[ProviderID.make("opencode")] if (!item) return 0 // kilocode_change - Kilo drops opencode provider without apiKey/auth @@ -2484,8 +2492,11 @@ test("cloudflare-ai-gateway forwards config metadata options", async () => { test("plugin config providers persist after instance dispose", async () => { await using tmp = await tmpdir({ init: async (dir) => { - const root = path.join(dir, ".opencode", "plugin") + const configDir = path.join(dir, ".opencode") + const root = path.join(configDir, "plugin") await mkdir(root, { recursive: true }) + await markPluginDependenciesReady(configDir) + await markPluginDependenciesReady(Global.Path.config) await Bun.write( path.join(root, "demo-provider.ts"), [ From 7d9a4f3316aeadcc1bb21ab6ea743776daad70b4 Mon Sep 17 00:00:00 2001 From: Alex Alecu Date: Tue, 28 Apr 2026 10:50:36 +0300 Subject: [PATCH 2/2] test(cli): adapt upstream plugin fixture for Kilo --- packages/opencode/test/provider/provider.test.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/opencode/test/provider/provider.test.ts b/packages/opencode/test/provider/provider.test.ts index 32349c7be8e..2a26fbf2d98 100644 --- a/packages/opencode/test/provider/provider.test.ts +++ b/packages/opencode/test/provider/provider.test.ts @@ -56,13 +56,15 @@ async function defaultModel() { return run((provider) => provider.defaultModel()) } +// kilocode_change start - upstream #24416 fixture adapted for @kilocode/plugin async function markPluginDependenciesReady(dir: string) { await mkdir(path.join(dir, "node_modules"), { recursive: true }) await Bun.write( path.join(dir, "package-lock.json"), - JSON.stringify({ packages: { "": { dependencies: { "@opencode-ai/plugin": "0.0.0" } } } }), + JSON.stringify({ packages: { "": { dependencies: { "@kilocode/plugin": "0.0.0" } } } }), ) } +// kilocode_change end function paid(providers: Awaited>) { const item = providers[ProviderID.make("opencode")] @@ -2492,11 +2494,13 @@ test("cloudflare-ai-gateway forwards config metadata options", async () => { test("plugin config providers persist after instance dispose", async () => { await using tmp = await tmpdir({ init: async (dir) => { + // kilocode_change start - upstream #24416 avoids real plugin dependency installs const configDir = path.join(dir, ".opencode") const root = path.join(configDir, "plugin") await mkdir(root, { recursive: true }) await markPluginDependenciesReady(configDir) await markPluginDependenciesReady(Global.Path.config) + // kilocode_change end await Bun.write( path.join(root, "demo-provider.ts"), [