@@ -11,6 +11,7 @@ import { beforeEach, describe, expect, it, vi } from "vitest";
|
11 | 11 | import plugin from "./index.js"; |
12 | 12 | import manifest from "./openclaw.plugin.json" with { type: "json" }; |
13 | 13 | import { buildOpencodeGoLiveProviderConfig } from "./provider-catalog.js"; |
| 14 | +import opencodeGoProviderDiscovery from "./provider-discovery.js"; |
14 | 15 | |
15 | 16 | function requireRecord(value: unknown, label: string): Record<string, unknown> { |
16 | 17 | if (value === null || typeof value !== "object" || Array.isArray(value)) { |
@@ -209,9 +210,25 @@ describe("opencode-go provider plugin", () => {
|
209 | 210 | }); |
210 | 211 | |
211 | 212 | it("loads OpenCode Go model discovery through the provider runtime", () => { |
| 213 | +expect(manifest.providerCatalogEntry).toBe("./provider-discovery.ts"); |
212 | 214 | expect(manifest.modelCatalog.discovery["opencode-go"]).toBe("runtime"); |
213 | 215 | }); |
214 | 216 | |
| 217 | +it("exposes the complete offline catalog through provider discovery", async () => { |
| 218 | +const result = await opencodeGoProviderDiscovery.staticCatalog?.run({} as never); |
| 219 | +if (!result || !("provider" in result)) { |
| 220 | +throw new Error("expected OpenCode Go static provider"); |
| 221 | +} |
| 222 | +const deepSeekPro = result.provider.models.find((model) => model.id === "deepseek-v4-pro"); |
| 223 | + |
| 224 | +expect(result.provider.models).toHaveLength(18); |
| 225 | +expect(deepSeekPro).toMatchObject({ |
| 226 | +provider: "opencode-go", |
| 227 | +contextWindow: 1_000_000, |
| 228 | +maxTokens: 384_000, |
| 229 | +}); |
| 230 | +}); |
| 231 | + |
215 | 232 | it("skips live OpenCode Go catalog discovery when no shared key is configured", async () => { |
216 | 233 | const provider = await registerSingleProviderPlugin(plugin); |
217 | 234 | |
|