mirror of
https://github.com/diegosouzapw/OmniRoute.git
synced 2026-05-06 02:07:00 +00:00
feat: Add requested model to logs, enhance background task detection, and introduce AI SDK compatibility utilities.
This commit is contained in:
parent
e003b17280
commit
c34b3f41bd
58 changed files with 2290 additions and 241 deletions
84
tests/unit/t27-github-copilot-response-format.test.mjs
Normal file
84
tests/unit/t27-github-copilot-response-format.test.mjs
Normal file
|
|
@ -0,0 +1,84 @@
|
|||
import test from "node:test";
|
||||
import assert from "node:assert/strict";
|
||||
|
||||
const { GithubExecutor } = await import("../../open-sse/executors/github.ts");
|
||||
const { BaseExecutor } = await import("../../open-sse/executors/base.ts");
|
||||
|
||||
function streamFromChunks(chunks) {
|
||||
const encoder = new TextEncoder();
|
||||
return new ReadableStream({
|
||||
start(controller) {
|
||||
for (const chunk of chunks) {
|
||||
controller.enqueue(encoder.encode(chunk));
|
||||
}
|
||||
controller.close();
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
test("T27: Claude + response_format=json_object injects system instruction and strips response_format field", () => {
|
||||
const executor = new GithubExecutor();
|
||||
const request = {
|
||||
messages: [{ role: "user", content: "return json" }],
|
||||
response_format: { type: "json_object" },
|
||||
};
|
||||
|
||||
const transformed = executor.transformRequest("claude-sonnet-4.5", request, false, {});
|
||||
|
||||
assert.equal(transformed.response_format, undefined);
|
||||
assert.equal(transformed.messages[0].role, "system");
|
||||
assert.match(
|
||||
transformed.messages[0].content,
|
||||
/Respond only with valid JSON\. Do not include any text/i
|
||||
);
|
||||
});
|
||||
|
||||
test("T27: non-Claude models keep response_format untouched", () => {
|
||||
const executor = new GithubExecutor();
|
||||
const request = {
|
||||
messages: [{ role: "user", content: "hello" }],
|
||||
response_format: { type: "json_object" },
|
||||
};
|
||||
|
||||
const transformed = executor.transformRequest("gpt-4o", request, false, {});
|
||||
assert.deepEqual(transformed.response_format, { type: "json_object" });
|
||||
});
|
||||
|
||||
test("T27: SSE [DONE] guard applies only in streaming mode", async () => {
|
||||
const executor = new GithubExecutor();
|
||||
const originalExecute = BaseExecutor.prototype.execute;
|
||||
|
||||
BaseExecutor.prototype.execute = async () => ({
|
||||
response: new Response(
|
||||
streamFromChunks(['data: {"delta":"hello"}\n\n', "data: [DONE]\n\n", "data: tail\n\n"]),
|
||||
{
|
||||
status: 200,
|
||||
headers: { "content-type": "text/event-stream" },
|
||||
}
|
||||
),
|
||||
url: "https://api.githubcopilot.com/chat/completions",
|
||||
});
|
||||
|
||||
try {
|
||||
const streamingResult = await executor.execute({
|
||||
model: "claude-sonnet-4.5",
|
||||
body: { messages: [] },
|
||||
stream: true,
|
||||
credentials: { accessToken: "token" },
|
||||
});
|
||||
const streamingText = await streamingResult.response.text();
|
||||
assert.equal(streamingText.includes("data: [DONE]"), false);
|
||||
assert.equal(streamingText.includes("data: tail"), true);
|
||||
|
||||
const nonStreamingResult = await executor.execute({
|
||||
model: "claude-sonnet-4.5",
|
||||
body: { messages: [] },
|
||||
stream: false,
|
||||
credentials: { accessToken: "token" },
|
||||
});
|
||||
const nonStreamingText = await nonStreamingResult.response.text();
|
||||
assert.equal(nonStreamingText.includes("data: [DONE]"), true);
|
||||
} finally {
|
||||
BaseExecutor.prototype.execute = originalExecute;
|
||||
}
|
||||
});
|
||||
Loading…
Add table
Add a link
Reference in a new issue