diff --git a/src/benchmarks/agent-cli/runner.ts b/src/benchmarks/agent-cli/runner.ts index 1192513a..1fa6f624 100644 --- a/src/benchmarks/agent-cli/runner.ts +++ b/src/benchmarks/agent-cli/runner.ts @@ -13,6 +13,7 @@ import { isNone } from "effect/Option"; import { SolverError } from "../../harness/core"; import type { ModelUsage } from "../../harness/core"; +import { stripRoutingPrefix } from "../../harness/model-slug"; import { definedValues } from "../../internal/guards"; import { wLog } from "../../internal/log"; import { recordGenerationId } from "../../runtime/generation-ids"; @@ -165,14 +166,7 @@ export interface AgentCliRunResult extends OriAgentRun { readonly failureDetail: string; } -export function normalizeAgentModel(model: string): string { - const routingPrefix = "openrouter/"; - if (!model.startsWith(routingPrefix)) { - return model; - } - const rest = model.slice(routingPrefix.length); - return rest.includes("/") ? rest : model; -} +export const normalizeAgentModel = stripRoutingPrefix; export function buildAgentCliEnv(opts: AgentCliOpts): Record { const env: Record = { diff --git a/src/harness/model-slug.test.ts b/src/harness/model-slug.test.ts new file mode 100644 index 00000000..540247a7 --- /dev/null +++ b/src/harness/model-slug.test.ts @@ -0,0 +1,16 @@ +import { describe, expect, it } from "bun:test"; + +import { stripRoutingPrefix } from "./model-slug"; + +describe("stripRoutingPrefix", () => { + it("removes the openrouter/ routing prefix from a full slug", () => { + expect(stripRoutingPrefix("openrouter/sakana/fugu-ultra")).toBe( + "sakana/fugu-ultra" + ); + }); + + it("keeps openrouter-authored slugs and unprefixed slugs unchanged", () => { + expect(stripRoutingPrefix("openrouter/auto")).toBe("openrouter/auto"); + expect(stripRoutingPrefix("sakana/fugu-ultra")).toBe("sakana/fugu-ultra"); + }); +}); diff --git a/src/harness/model-slug.ts b/src/harness/model-slug.ts new file mode 100644 index 00000000..587b3338 --- /dev/null +++ b/src/harness/model-slug.ts @@ -0,0 +1,9 @@ +const ROUTING_PREFIX = "openrouter/"; + +export function stripRoutingPrefix(model: string): string { + if (!model.startsWith(ROUTING_PREFIX)) { + return model; + } + const rest = model.slice(ROUTING_PREFIX.length); + return rest.includes("/") ? rest : model; +} diff --git a/src/sandbox/modal-regions.test.ts b/src/sandbox/modal-regions.test.ts index 3e271e35..d0332560 100644 --- a/src/sandbox/modal-regions.test.ts +++ b/src/sandbox/modal-regions.test.ts @@ -11,6 +11,12 @@ describe("resolveModalRegions", () => { expect(resolveModalRegions("sakana/fugu-max", undefined)).toEqual(["us"]); }); + it("matches pins through the openrouter/ routing prefix", () => { + expect( + resolveModalRegions("openrouter/sakana/fugu-ultra", undefined) + ).toEqual(["us"]); + }); + it("leaves unpinned models to Modal's default placement", () => { expect( resolveModalRegions("anthropic/claude-opus-5", undefined) diff --git a/src/sandbox/modal-regions.ts b/src/sandbox/modal-regions.ts index 31757de4..9d559615 100644 --- a/src/sandbox/modal-regions.ts +++ b/src/sandbox/modal-regions.ts @@ -1,3 +1,5 @@ +import { stripRoutingPrefix } from "../harness/model-slug"; + export const MODAL_US_REGIONS = ["us"] as const; export interface ModalRegionPin { @@ -17,5 +19,6 @@ export function resolveModalRegions( if (configured !== undefined) { return configured; } - return pins.find((pin) => model.startsWith(pin.modelPrefix))?.regions; + const slug = stripRoutingPrefix(model); + return pins.find((pin) => slug.startsWith(pin.modelPrefix))?.regions; }