mirror of
https://github.com/diegosouzapw/OmniRoute.git
synced 2026-07-31 04:12:10 +03:00
154 lines
4.5 KiB
TypeScript
154 lines
4.5 KiB
TypeScript
import assert from "node:assert/strict";
|
|
import { describe, it } from "node:test";
|
|
|
|
import {
|
|
transformOpenAiTools,
|
|
transformToClaude,
|
|
} from "../../open-sse/executors/claude-web/payload.ts";
|
|
|
|
const PARENT_UUID = "00000000-0000-4000-8000-000000000001";
|
|
const HUMAN_UUID = "00000000-0000-4000-8000-000000000002";
|
|
const ASSISTANT_UUID = "00000000-0000-4000-8000-000000000003";
|
|
|
|
describe("Claude Web runtime payloads", () => {
|
|
it("builds a new conversation with creation parameters and both turn UUIDs", () => {
|
|
const payload = transformToClaude(
|
|
{ messages: [{ role: "user", content: "start" }] },
|
|
"claude-sonnet-5",
|
|
{
|
|
operation: "completion",
|
|
prompt: "start",
|
|
timezone: "Asia/Seoul",
|
|
locale: "ko-KR",
|
|
humanMessageUuid: HUMAN_UUID,
|
|
assistantMessageUuid: ASSISTANT_UUID,
|
|
isNewConversation: true,
|
|
}
|
|
);
|
|
|
|
assert.equal(payload.prompt, "start");
|
|
assert.equal(payload.timezone, "Asia/Seoul");
|
|
assert.equal(payload.locale, "ko-KR");
|
|
assert.deepEqual(payload.turn_message_uuids, {
|
|
human_message_uuid: HUMAN_UUID,
|
|
assistant_message_uuid: ASSISTANT_UUID,
|
|
});
|
|
assert.equal(payload.create_conversation_params?.model, "claude-sonnet-5");
|
|
assert.equal("parent_message_uuid" in payload, false);
|
|
});
|
|
|
|
it("builds a follow-up with a parent and no conversation creation parameters", () => {
|
|
const payload = transformToClaude(
|
|
{ messages: [{ role: "user", content: "next" }] },
|
|
"claude-opus-4-8",
|
|
{
|
|
operation: "completion",
|
|
prompt: "next",
|
|
timezone: "Asia/Seoul",
|
|
locale: "ko-KR",
|
|
parentMessageUuid: PARENT_UUID,
|
|
humanMessageUuid: HUMAN_UUID,
|
|
assistantMessageUuid: ASSISTANT_UUID,
|
|
isNewConversation: false,
|
|
toolStates: [],
|
|
}
|
|
);
|
|
|
|
assert.equal(payload.parent_message_uuid, PARENT_UUID);
|
|
assert.equal("create_conversation_params" in payload, false);
|
|
assert.equal(payload.timezone, "Asia/Seoul");
|
|
assert.deepEqual(payload.tool_states, []);
|
|
});
|
|
|
|
it("builds a retry with an empty prompt, parent, and assistant UUID only", () => {
|
|
const payload = transformToClaude(
|
|
{ messages: [{ role: "user", content: "ignored for retry" }] },
|
|
"claude-opus-4-8",
|
|
{
|
|
operation: "retry_completion",
|
|
prompt: "",
|
|
timezone: "UTC",
|
|
locale: "en-US",
|
|
parentMessageUuid: PARENT_UUID,
|
|
assistantMessageUuid: ASSISTANT_UUID,
|
|
isNewConversation: false,
|
|
}
|
|
);
|
|
|
|
assert.equal(payload.prompt, "");
|
|
assert.equal(payload.parent_message_uuid, PARENT_UUID);
|
|
assert.deepEqual(payload.turn_message_uuids, {
|
|
assistant_message_uuid: ASSISTANT_UUID,
|
|
});
|
|
assert.equal("create_conversation_params" in payload, false);
|
|
});
|
|
|
|
it("converts only valid OpenAI function tools", () => {
|
|
assert.deepEqual(
|
|
transformOpenAiTools([
|
|
{
|
|
type: "function",
|
|
function: {
|
|
name: "get_weather",
|
|
description: "Read the weather",
|
|
parameters: {
|
|
type: "object",
|
|
properties: { city: { type: "string" } },
|
|
required: ["city"],
|
|
},
|
|
},
|
|
},
|
|
{ type: "function", function: { description: "missing name" } },
|
|
{ type: "web_search_preview" },
|
|
null,
|
|
]),
|
|
[
|
|
{
|
|
name: "get_weather",
|
|
description: "Read the weather",
|
|
input_schema: {
|
|
type: "object",
|
|
properties: { city: { type: "string" } },
|
|
required: ["city"],
|
|
},
|
|
},
|
|
]
|
|
);
|
|
});
|
|
|
|
it("does not invent Claude UI tools when the caller supplied none", () => {
|
|
const payload = transformToClaude(
|
|
{ messages: [{ role: "user", content: "hello" }] },
|
|
"claude-sonnet-5"
|
|
);
|
|
|
|
assert.deepEqual(payload.tools, []);
|
|
assert.equal(
|
|
payload.tools.some((tool) => tool.name === "show_widget" || tool.name === "web_search"),
|
|
false
|
|
);
|
|
});
|
|
|
|
it("preserves explicit reasoning effort for prepared turns", () => {
|
|
const payload = transformToClaude(
|
|
{
|
|
messages: [{ role: "user", content: "think" }],
|
|
reasoning_effort: "high",
|
|
},
|
|
"claude-opus-4-8",
|
|
{
|
|
operation: "completion",
|
|
prompt: "think",
|
|
timezone: "UTC",
|
|
locale: "en-US",
|
|
humanMessageUuid: HUMAN_UUID,
|
|
assistantMessageUuid: ASSISTANT_UUID,
|
|
isNewConversation: true,
|
|
}
|
|
);
|
|
|
|
assert.equal(payload.effort, "high");
|
|
assert.equal(payload.thinking_mode, "extended");
|
|
});
|
|
});
|