From 7f39ae9ecbd8eeafcd8f58a68ac0a98090ddcd06 Mon Sep 17 00:00:00 2001 From: "opencode-agent[bot]" <219766164+opencode-agent[bot]@users.noreply.github.com> Date: Thu, 24 Sep 2026 00:56:42 +0800 Subject: [PATCH] fix(stats): attribute Hy4 preview traffic to Tencent (#50935) Co-authored-by: MrMushrooooom <19261047+MrMushrooooom@users.noreply.github.com> --- packages/stats/core/src/domain/geo.ts | 6 +++++- packages/stats/core/src/domain/inference.test.ts | 11 +++++++++++ packages/stats/core/src/domain/model-normalization.ts | 1 + packages/stats/core/src/domain/model.ts | 1 + 4 files changed, 18 insertions(+), 1 deletion(-) diff --git a/packages/stats/core/src/domain/geo.ts b/packages/stats/core/src/domain/geo.ts index 4b184469998..f7b8f635429 100644 --- a/packages/stats/core/src/domain/geo.ts +++ b/packages/stats/core/src/domain/geo.ts @@ -199,7 +199,11 @@ export class GeoStatRepo extends Context.Service DatabaseError.make({ cause }), diff --git a/packages/stats/core/src/domain/inference.test.ts b/packages/stats/core/src/domain/inference.test.ts index 2dfd16a1cf5..021acc8b72b 100644 --- a/packages/stats/core/src/domain/inference.test.ts +++ b/packages/stats/core/src/domain/inference.test.ts @@ -38,6 +38,17 @@ describe("inference stat normalization", () => { expect(statProvider("unknown", "", "custom-provider")).toBe("custom-provider") }) + test("attributes hy4 preview traffic to Tencent instead of the unknown provider", () => { + expect(modelAuthor("hy4-preview")).toBe("tencent") + expect(toModelAggregate(aggregate("hy4-preview", "opencode"))).toMatchObject([ + { model: "hy4-preview", provider: "tencent" }, + ]) + expect(toProviderAggregate(aggregate("hy4-preview", "opencode"))).toMatchObject([{ provider: "tencent" }]) + expect(toGeoAggregate({ ...aggregate("hy4-preview", "opencode"), country: "US" })).toMatchObject([ + { model: "hy4-preview", provider: "tencent" }, + ]) + }) + test("merges union alpha routes without exposing the provider", () => { ;["opencode-go/union-alpha", "opencode/union-alpha"].forEach((model) => { expect(statModel(model, "")).toBe("union-alpha") diff --git a/packages/stats/core/src/domain/model-normalization.ts b/packages/stats/core/src/domain/model-normalization.ts index 0895187ada1..af3d8423fa9 100644 --- a/packages/stats/core/src/domain/model-normalization.ts +++ b/packages/stats/core/src/domain/model-normalization.ts @@ -6,6 +6,7 @@ export const MODEL_AUTHOR_RULES = [ { match: "gpt", author: "openai" }, { match: "grok", author: "xai" }, { match: "hy3", author: "tencent" }, + { match: "hy4", author: "tencent" }, { match: "kimi", author: "moonshot" }, { match: "mimo", author: "xiaomi" }, { match: "minimax", author: "minimax" }, diff --git a/packages/stats/core/src/domain/model.ts b/packages/stats/core/src/domain/model.ts index 2ad266eab84..d58e25d0bbe 100644 --- a/packages/stats/core/src/domain/model.ts +++ b/packages/stats/core/src/domain/model.ts @@ -186,6 +186,7 @@ export class ModelStatRepo extends Context.Service