char-slop/berry

multipurpose self-modifiable agentic harness

git clone https://git.t4t.associates/char-slop/berry

Charlotte Somadd openrouter routing parameters extension911705e

main
4.7 KiB129 linesraw
1import { assertEquals, assertRejects, assertStrictEquals } from "@std/assert";
2import type { PayloadHook } from "@berry/api";
3import { testExtension } from "@berry/api/testing.ts";
4import extension from "./mod.ts";
5
6type Model = Parameters<PayloadHook>[1];
7const openrouter = { provider: "openrouter" } as Model;
8const direct = { provider: "lithosai" } as Model;
9
10Deno.test("default routing requirements leave the request alone", async () => {
11  const ext = testExtension(extension);
12  const payload = { model: "deepseek/deepseek-v4.1-flash:nitro", messages: [] };
13  assertStrictEquals(await ext.payload(payload, openrouter), payload);
14  await ext.configure({ allowFallbacks: "default" });
15  assertStrictEquals(await ext.payload(payload, openrouter), payload);
16  assertEquals(await ext.payload(null, openrouter), null);
17  assertEquals(await ext.payload([], openrouter), []);
18});
19
20Deno.test("any non-default field applies routing, to OpenRouter object payloads only", async () => {
21  const ext = testExtension(extension);
22  await ext.configure({ sort: "throughput", maxCompletionPrice: "1.00" });
23  const payload = { model: "deepseek/deepseek-v4.1-flash:nitro", messages: [] };
24  assertEquals(await ext.payload(payload, openrouter), {
25    ...payload,
26    provider: { sort: "throughput", max_price: { completion: 1 } },
27  });
28  assertStrictEquals(await ext.payload(payload, direct), payload);
29  await ext.configure({ sort: "default", maxCompletionPrice: "" });
30  assertStrictEquals(await ext.payload(payload, openrouter), payload);
31});
32
33Deno.test("requirements override their fields without losing other routing or mutating the request", async () => {
34  const ext = testExtension(extension);
35  await ext.configure({
36    only: " baseten/fast, together, baseten/fast ",
37    ignore: " deepinfra, ,novita ",
38    maxCompletionPrice: ".75",
39    allowFallbacks: "no",
40  });
41  const payload = {
42    model: "deepseek/deepseek-v4.1-flash",
43    provider: {
44      sort: "latency",
45      only: ["fireworks"],
46      allow_fallbacks: true,
47      data_collection: "deny",
48      max_price: { prompt: 0.2, completion: 5, request: 0.01 },
49    },
50    tools: [{ type: "function" }],
51  };
52  const before = structuredClone(payload);
53  assertEquals(await ext.payload(payload, openrouter), {
54    ...payload,
55    provider: {
56      sort: "latency",
57      only: ["baseten/fast", "together"],
58      ignore: ["deepinfra", "novita"],
59      allow_fallbacks: false,
60      data_collection: "deny",
61      max_price: { prompt: 0.2, completion: 0.75, request: 0.01 },
62    },
63  });
64  assertEquals(payload, before);
65});
66
67Deno.test("zero is a price cap and clearing caps removes the conversation override", async () => {
68  const ext = testExtension(extension);
69  await ext.configure({ maxPromptPrice: " 0 ", maxCompletionPrice: "0.5" });
70  assertEquals(await ext.payload({}, openrouter), {
71    provider: { max_price: { prompt: 0, completion: 0.5 } },
72  });
73  await ext.configure({ maxPromptPrice: "", maxCompletionPrice: " " });
74  const payload = { provider: { max_price: { prompt: 2 } } };
75  assertStrictEquals(await ext.payload(payload, openrouter), payload);
76});
77
78Deno.test("invalid prices refuse configuration without discarding the current requirements", async () => {
79  const ext = testExtension(extension);
80  await ext.configure({ maxCompletionPrice: "1" });
81  await assertRejects(
82    () => ext.configure({ maxCompletionPrice: "-0.5" }),
83    Error,
84  );
85  await assertRejects(
86    () => ext.configure({ maxPromptPrice: "9".repeat(400) }),
87    Error,
88  );
89  assertEquals(await ext.payload({}, openrouter), {
90    provider: { max_price: { completion: 1 } },
91  });
92});
93
94Deno.test("settings replay independently, and one recorded before a field was dropped no longer routes", async () => {
95  const ext = testExtension(extension);
96  const events = await ext.seed({
97    sort: "throughput",
98    only: "parasail/fast",
99    allowFallbacks: "yes",
100  });
101  const restored = testExtension(extension, { events });
102  const expected = {
103    provider: {
104      sort: "throughput",
105      only: ["parasail/fast"],
106      allow_fallbacks: true,
107    },
108  };
109  assertEquals(await restored.payload({}, openrouter), expected);
110  const untouched = {};
111  assertStrictEquals(await ext.payload(untouched, openrouter), untouched);
112
113  // a conversation that recorded the dropped fields folds to the defaults, without routing
114  const older = testExtension(extension, {
115    events: [{
116      type: "configured",
117      values: { enabled: true, order: "together", requireParameters: true },
118    }] as never,
119  });
120  assertEquals(older.state, {
121    sort: "default",
122    only: "",
123    ignore: "",
124    maxPromptPrice: "",
125    maxCompletionPrice: "",
126    allowFallbacks: "default",
127  });
128  assertStrictEquals(await older.payload(untouched, openrouter), untouched);
129});