Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion config/quality/file-size-baseline.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
{
"_comment": "Catraca de tamanho (check-file-size.mjs). frozen so pode encolher; arquivos novos <= cap. --update ratcheta.",
"_rebaseline_2026_06_17_4098_wafer": "PR #4098 own growth: providers.ts 3159->3169 (+10 = Wafer AI catalog entry, a single Zod-validated provider record in the providers map — pure data, standard per-provider addition; bumps catalog 227->228). Cohesive catalog growth; not extractable.",
"_rebaseline_2026_06_17_4096_field_downgrade": "PR #4096 own growth: base.ts 1292->1334 (+42 = generic 400 field-downgrade retry at the executor fetch loop — on an upstream 400 that names an unsupported field, strip it via providerFieldStrips and retry once, plus Groq field stripping wiring). The strip table lives in the new open-sse/config/providerFieldStrips.ts (<cap). Cohesive resilience logic at the existing fetch chokepoint; not extractable.",
"_rebaseline_2026_06_17_4071_vision_routing": "PR #4071 own growth: combo.ts 5283->5289 (+6 = vision-aware routing fix in getTargetCompatibilityFailures — image requests now require supportsVision===true, treating null/unknown as incompatible, with an explanatory comment block; plus exporting filterTargetsByRequestCompatibility for the regression test). The accompanying capability heuristic lives in src/lib/modelCapabilities.ts (419 LOC, <cap). Cohesive bug fix at the existing compatibility-filter chokepoint; not extractable.",
"_rebaseline_2026_06_17_4070_orcarouter": "PR #4070 own growth: providers.ts 3147->3159 (+12 = the OrcaRouter catalog entry, a single Zod-validated provider record { id/alias/name/icon/color/textIcon/passthroughModels/website/apiHint } in the providers map — pure data, the standard per-provider addition; bumps the catalog 226->227). Cohesive catalog growth, not extractable.",
Expand Down Expand Up @@ -129,7 +130,7 @@
"src/shared/components/analytics/charts.tsx": 1558,
"src/shared/constants/cliTools.ts": 875,
"src/shared/constants/pricing.ts": 1581,
"src/shared/constants/providers.ts": 3159,
"src/shared/constants/providers.ts": 3169,
"src/shared/constants/sidebarVisibility.ts": 1100,
"src/shared/services/cliRuntime.ts": 1090,
"src/shared/validation/schemas.ts": 2523,
Expand Down
2 changes: 2 additions & 0 deletions open-sse/config/providers/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -125,6 +125,7 @@ import { nanogptProvider } from "./registry/nanogpt/index.ts";
import { scalewayProvider } from "./registry/scaleway/index.ts";
import { agentrouterProvider } from "./registry/agentrouter/index.ts";
import { zaiProvider } from "./registry/zai/index.ts";
import { waferProvider } from "./registry/wafer/index.ts";
import { huggingchatProvider } from "./registry/huggingchat/index.ts";
import { galadrielProvider } from "./registry/galadriel/index.ts";
import { qianfanProvider } from "./registry/qianfan/index.ts";
Expand Down Expand Up @@ -326,4 +327,5 @@ export const REGISTRY: Record<string, RegistryEntry> = {
kiro: kiroProvider,
byteplus: byteplusProvider,
mimocode: mimocodeProvider,
wafer: waferProvider,
};
19 changes: 19 additions & 0 deletions open-sse/config/providers/registry/wafer/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
import type { RegistryEntry } from "../../shared.ts";
import { getAnthropicCompatHeaders } from "../../shared.ts";

export const waferProvider: RegistryEntry = {
id: "wafer",
alias: "wafer",
format: "claude",
executor: "default",
baseUrl: "https://pass.wafer.ai/v1/messages",
authType: "apikey",
authHeader: "bearer",
headers: getAnthropicCompatHeaders(),
models: [
{ id: "DeepSeek-V4-Pro", name: "DeepSeek V4 Pro" },
{ id: "MiniMax-M2.7", name: "MiniMax M2.7" },
{ id: "Qwen3.5-397B-A17B", name: "Qwen3.5 397B A17B" },
{ id: "GLM-5.1", name: "GLM 5.1" },
],
};
10 changes: 10 additions & 0 deletions src/shared/constants/providers.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1198,6 +1198,16 @@ export const APIKEY_PROVIDERS = {
website: "https://open.bigmodel.cn",
apiHint: "API key from https://open.bigmodel.cn/usercenter/apikeys",
},
wafer: {
id: "wafer",
alias: "wafer",
name: "Wafer AI",
icon: "layers",
color: "#6366F1",
textIcon: "WF",
website: "https://wafer.ai",
apiHint: "API key from https://wafer.ai",
},
"opencode-zen": {
id: "opencode-zen",
alias: "opencode-zen",
Expand Down
11 changes: 11 additions & 0 deletions tests/unit/provider-wafer.test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
import { test } from "node:test";
import assert from "node:assert/strict";
import { waferProvider } from "../../open-sse/config/providers/registry/wafer/index.ts";

test("wafer provider is Anthropic-compatible with Bearer auth", () => {
assert.equal(waferProvider.id, "wafer");
assert.equal(waferProvider.format, "claude");
assert.equal(waferProvider.baseUrl, "https://pass.wafer.ai/v1/messages");
assert.equal(waferProvider.authHeader, "bearer"); // NOT x-api-key → executor sends Authorization: Bearer
assert.ok(Array.isArray(waferProvider.models) && waferProvider.models.length > 0);
});
Loading