Files
diegosouzapw--omniroute/tests/unit/cc-bridge-transforms.test.ts
2026-07-13 13:39:12 +08:00

433 lines
17 KiB
TypeScript

import test from "node:test";
import assert from "node:assert/strict";
const {
DEFAULT_CC_BRIDGE_PIPELINE,
DEFAULT_CC_BRIDGE_TRANSFORMS_CONFIG,
DEFAULT_CLAUDE_CODE_VERSION,
CLAUDE_AGENT_SDK_IDENTITY,
DEFAULT_PARAGRAPH_REMOVAL_ANCHORS,
DEFAULT_IDENTITY_PREFIXES,
DEFAULT_TEXT_REPLACEMENTS,
applyCcBridgeTransformPipeline,
buildBillingHeaderValue,
computeCchSha256FirstUser,
computeExMachinaVersionSuffix,
computeDaystampVersionSuffix,
extractFirstUserMessageText,
setCcBridgeTransformsConfig,
getCcBridgeTransformsConfig,
resetCcBridgeTransformsConfig,
} = await import("../../open-sse/services/ccBridgeTransforms.ts");
type TransformOp = Parameters<typeof applyCcBridgeTransformPipeline>[1] extends infer C
? C extends { pipeline: infer P }
? P extends Array<infer T>
? T
: never
: never
: never;
function bodyWithSystem(systemBlocks: Array<{ type: string; text: string }>, userText = "hi") {
return {
model: "claude-opus-4-7",
messages: [{ role: "user", content: [{ type: "text", text: userText }] }],
system: systemBlocks,
};
}
function runPipeline(body: any, ops: any[]) {
return applyCcBridgeTransformPipeline(body, { enabled: true, pipeline: ops });
}
test.beforeEach(() => {
resetCcBridgeTransformsConfig();
});
// ── Defaults sanity ─────────────────────────────────────────────────────────
test("DEFAULT_CC_BRIDGE_PIPELINE places billing header at [0] and identity at [1] in output", () => {
const result = runPipeline(
bodyWithSystem([{ type: "text", text: "body" }], "user prompt"),
DEFAULT_CC_BRIDGE_PIPELINE
);
const blocks = result.body.system as any[];
assert.ok(blocks[0].text.startsWith("x-anthropic-billing-header:"));
assert.equal(blocks[1].text, CLAUDE_AGENT_SDK_IDENTITY);
});
test("DEFAULT_CC_BRIDGE_TRANSFORMS_CONFIG is enabled", () => {
assert.equal(DEFAULT_CC_BRIDGE_TRANSFORMS_CONFIG.enabled, true);
});
test("DEFAULT_PARAGRAPH_REMOVAL_ANCHORS includes ex-machina v1.7.5 anchors", () => {
assert.ok(DEFAULT_PARAGRAPH_REMOVAL_ANCHORS.includes("github.com/anomalyco/opencode"));
assert.ok(DEFAULT_PARAGRAPH_REMOVAL_ANCHORS.includes("opencode.ai/docs"));
});
test("DEFAULT_IDENTITY_PREFIXES strips OpenCode identity", () => {
assert.ok(DEFAULT_IDENTITY_PREFIXES.includes("You are OpenCode"));
});
test("DEFAULT_TEXT_REPLACEMENTS includes v1.7.5 phrase fix", () => {
const phrase = "Here is some useful information about the environment you are running in:";
const rule = DEFAULT_TEXT_REPLACEMENTS.find((r) => r.match === phrase);
assert.ok(rule, "expected phrase replacement");
assert.equal(rule!.replacement, "Environment context you are running in:");
});
// ── Op: drop_paragraph_if_contains ─────────────────────────────────────────
test("drop_paragraph_if_contains removes matching paragraphs only", () => {
const text = [
"Intro paragraph here.",
"See github.com/anomalyco/opencode for details.",
"Final paragraph survives.",
].join("\n\n");
const result = runPipeline(bodyWithSystem([{ type: "text", text }]), [
{ kind: "drop_paragraph_if_contains", needles: ["github.com/anomalyco/opencode"] },
]);
const out = (result.body.system as any[])[0].text as string;
assert.ok(out.includes("Intro paragraph"));
assert.ok(out.includes("Final paragraph"));
assert.ok(!out.includes("anomalyco"));
});
test("drop_paragraph_if_contains with empty needles is a no-op", () => {
const text = "Stays put.";
const result = runPipeline(bodyWithSystem([{ type: "text", text }]), [
{ kind: "drop_paragraph_if_contains", needles: [] },
]);
assert.equal((result.body.system as any[])[0].text, text);
});
// ── Op: drop_paragraph_if_starts_with ──────────────────────────────────────
test("drop_paragraph_if_starts_with drops identity-prefixed paragraphs", () => {
const text = ["You are OpenCode, a helper.", "Real content."].join("\n\n");
const result = runPipeline(bodyWithSystem([{ type: "text", text }]), [
{ kind: "drop_paragraph_if_starts_with", prefixes: ["You are OpenCode"] },
]);
const out = (result.body.system as any[])[0].text as string;
assert.ok(!out.includes("You are OpenCode"));
assert.ok(out.includes("Real content"));
});
// ── Op: replace_text ───────────────────────────────────────────────────────
test("replace_text replaces v1.7.5 phrase exactly once by default", () => {
const phrase = "Here is some useful information about the environment you are running in:";
const text = `Prefix. ${phrase} body.`;
const result = runPipeline(bodyWithSystem([{ type: "text", text }]), [
{
kind: "replace_text",
match: phrase,
replacement: "Environment context you are running in:",
},
]);
const out = (result.body.system as any[])[0].text as string;
assert.ok(out.includes("Environment context you are running in:"));
assert.ok(!out.includes("Here is some useful information"));
});
test("replace_text allOccurrences=true replaces every hit", () => {
const text = "X X X";
const result = runPipeline(bodyWithSystem([{ type: "text", text }]), [
{ kind: "replace_text", match: "X", replacement: "Y", allOccurrences: true },
]);
assert.equal((result.body.system as any[])[0].text, "Y Y Y");
});
// ── Op: replace_regex ──────────────────────────────────────────────────────
test("replace_regex handles flags and patterns", () => {
const text = "foo bar foo BAR";
const result = runPipeline(bodyWithSystem([{ type: "text", text }]), [
{ kind: "replace_regex", pattern: "foo", flags: "gi", replacement: "baz" },
]);
assert.equal((result.body.system as any[])[0].text, "baz bar baz BAR");
});
test("replace_regex invalid pattern is a no-op", () => {
const text = "stays.";
const result = runPipeline(bodyWithSystem([{ type: "text", text }]), [
{ kind: "replace_regex", pattern: "[invalid(", replacement: "X" },
]);
assert.equal((result.body.system as any[])[0].text, text);
});
// ── Op: drop_block_if_contains ─────────────────────────────────────────────
test("drop_block_if_contains drops entire matching blocks", () => {
const body = bodyWithSystem([
{ type: "text", text: "block A keep" },
{ type: "text", text: "block B drop github.com/anomalyco/opencode" },
{ type: "text", text: "block C keep" },
]);
const result = runPipeline(body, [
{ kind: "drop_block_if_contains", needles: ["github.com/anomalyco/opencode"] },
]);
const blocks = result.body.system as any[];
assert.equal(blocks.length, 2);
assert.equal(blocks[0].text, "block A keep");
assert.equal(blocks[1].text, "block C keep");
});
// ── Op: prepend_system_block ───────────────────────────────────────────────
test("prepend_system_block adds identity at position [0]", () => {
const result = runPipeline(bodyWithSystem([{ type: "text", text: "body" }]), [
{ kind: "prepend_system_block", text: CLAUDE_AGENT_SDK_IDENTITY },
]);
const blocks = result.body.system as any[];
assert.equal(blocks[0].text, CLAUDE_AGENT_SDK_IDENTITY);
assert.equal(blocks[1].text, "body");
});
test("prepend_system_block is idempotent when first block already matches", () => {
const body = bodyWithSystem([
{ type: "text", text: CLAUDE_AGENT_SDK_IDENTITY },
{ type: "text", text: "body" },
]);
const result = runPipeline(body, [
{ kind: "prepend_system_block", text: CLAUDE_AGENT_SDK_IDENTITY },
]);
const blocks = result.body.system as any[];
assert.equal(blocks.length, 2);
assert.equal(blocks[0].text, CLAUDE_AGENT_SDK_IDENTITY);
});
// ── Op: append_system_block ────────────────────────────────────────────────
test("append_system_block adds to end and stays idempotent", () => {
const body = bodyWithSystem([{ type: "text", text: "body" }]);
const op = { kind: "append_system_block", text: "trailer" } as const;
let result = runPipeline(body, [op]);
result = runPipeline(result.body, [op]);
const blocks = result.body.system as any[];
assert.equal(blocks.length, 2);
assert.equal(blocks[1].text, "trailer");
});
// ── Op: inject_billing_header ──────────────────────────────────────────────
test("inject_billing_header builds ex-machina sdk-cli header at [0]", () => {
const body = bodyWithSystem([{ type: "text", text: "body" }], "user prompt here");
const result = runPipeline(body, [
{
kind: "inject_billing_header",
entrypoint: "sdk-cli",
versionFormat: "ex-machina",
cchAlgo: "sha256-first-user",
},
]);
const blocks = result.body.system as any[];
assert.equal(blocks[0].type, "text");
assert.match(
blocks[0].text,
/^x-anthropic-billing-header: cc_version=\d+\.\d+\.\d+\.[0-9a-f]{3}; cc_entrypoint=sdk-cli; cch=[0-9a-f]{5};$/
);
});
test("inject_billing_header is idempotent — replaces existing header in place", () => {
const body = bodyWithSystem([{ type: "text", text: "body" }], "p1");
const op = {
kind: "inject_billing_header",
entrypoint: "sdk-cli",
versionFormat: "ex-machina",
cchAlgo: "sha256-first-user",
} as const;
const first = runPipeline(body, [op]);
const second = runPipeline(first.body, [op]);
const blocks = second.body.system as any[];
const headerCount = blocks.filter(
(b: any) => typeof b.text === "string" && b.text.startsWith("x-anthropic-billing-header:")
).length;
assert.equal(headerCount, 1);
});
test("inject_billing_header skips when no user message present", () => {
const result = applyCcBridgeTransformPipeline(
{ messages: [], system: [{ type: "text", text: "body" }] } as any,
{
enabled: true,
pipeline: [
{
kind: "inject_billing_header",
entrypoint: "sdk-cli",
versionFormat: "ex-machina",
cchAlgo: "sha256-first-user",
},
],
}
);
const blocks = result.body.system as any[];
assert.equal(blocks[0].text, "body");
});
test("inject_billing_header xxhash64-body uses 00000 placeholder", () => {
const result = runPipeline(bodyWithSystem([{ type: "text", text: "body" }], "user"), [
{
kind: "inject_billing_header",
entrypoint: "cli",
versionFormat: "omniroute-daystamp",
cchAlgo: "xxhash64-body",
},
]);
const blocks = result.body.system as any[];
assert.match(blocks[0].text, /cch=00000;$/);
assert.match(blocks[0].text, /cc_entrypoint=cli;/);
});
// ── Algorithm primitives ───────────────────────────────────────────────────
test("extractFirstUserMessageText handles string and block content", () => {
assert.equal(extractFirstUserMessageText([{ role: "user", content: "hello" }] as any), "hello");
assert.equal(
extractFirstUserMessageText([
{ role: "system", content: "ignore" } as any,
{ role: "user", content: [{ type: "text", text: "world" }] as any },
]),
"world"
);
assert.equal(extractFirstUserMessageText([] as any), "");
});
test("computeCchSha256FirstUser yields 5-hex digest", () => {
const hex = computeCchSha256FirstUser("hello");
assert.match(hex, /^[0-9a-f]{5}$/);
});
test("computeExMachinaVersionSuffix yields 3-hex digest", () => {
const hex = computeExMachinaVersionSuffix(
"the quick brown fox jumps",
DEFAULT_CLAUDE_CODE_VERSION
);
assert.match(hex, /^[0-9a-f]{3}$/);
});
test("computeDaystampVersionSuffix yields 3-hex digest", () => {
const hex = computeDaystampVersionSuffix(
DEFAULT_CLAUDE_CODE_VERSION,
new Date("2026-05-15T00:00:00Z")
);
assert.match(hex, /^[0-9a-f]{3}$/);
});
test("buildBillingHeaderValue produces the expected ex-machina format", () => {
const value = buildBillingHeaderValue([{ role: "user", content: "hello" }] as any, {
entrypoint: "sdk-cli",
versionFormat: "ex-machina",
cchAlgo: "sha256-first-user",
});
assert.match(
value,
/^x-anthropic-billing-header: cc_version=\d+\.\d+\.\d+\.[0-9a-f]{3}; cc_entrypoint=sdk-cli; cch=[0-9a-f]{5};$/
);
});
// ── Disabled config short-circuits ─────────────────────────────────────────
test("applyCcBridgeTransformPipeline does nothing when config.enabled=false", () => {
const body = bodyWithSystem([{ type: "text", text: "body" }]);
const result = applyCcBridgeTransformPipeline(body, {
enabled: false,
pipeline: DEFAULT_CC_BRIDGE_PIPELINE,
});
assert.equal(result.appliedOpKinds.length, 0);
assert.equal((result.body.system as any[])[0].text, "body");
});
// ── Singleton config getters/setters ───────────────────────────────────────
test("setCcBridgeTransformsConfig swaps the runtime config; reset restores defaults", () => {
setCcBridgeTransformsConfig({ enabled: false, pipeline: [] });
assert.equal(getCcBridgeTransformsConfig().enabled, false);
resetCcBridgeTransformsConfig();
assert.equal(getCcBridgeTransformsConfig().enabled, true);
});
// ── Pipeline ordering ──────────────────────────────────────────────────────
test("pipeline ordering is preserved — replace runs before drop", () => {
const body = bodyWithSystem([{ type: "text", text: "X" }]);
const result = runPipeline(body, [
{ kind: "replace_text", match: "X", replacement: "github.com/anomalyco/opencode" },
{ kind: "drop_paragraph_if_contains", needles: ["github.com/anomalyco/opencode"] },
]);
const blocks = result.body.system as any[];
assert.equal(blocks.length, 0);
});
// ── End-to-end: T4-200 fixture layout ──────────────────────────────────────
test("DEFAULT_CC_BRIDGE_PIPELINE produces T4-200 fixture shape on verbatim OpenCode prompt", () => {
// Verbatim phrase from issue #2260 — the v1.7.5 trigger.
const fingerprintPhrase =
"Here is some useful information about the environment you are running in:";
const openCodePrompt = [
"You are OpenCode, a coding assistant.",
"See github.com/anomalyco/opencode for details.",
fingerprintPhrase,
"Working directory: /home/dev",
"If OpenCode honestly cannot find the answer, say so.",
].join("\n\n");
const body = {
model: "claude-opus-4-7",
messages: [{ role: "user", content: [{ type: "text", text: "Say OK." }] }],
system: [
{ type: "text", text: openCodePrompt },
{ type: "text", text: "Memory protocol block." },
{ type: "text", text: "Browser MCP block." },
],
};
const result = applyCcBridgeTransformPipeline(body as any, {
enabled: true,
pipeline: DEFAULT_CC_BRIDGE_PIPELINE,
});
const blocks = result.body.system as any[];
// Layout: [billing][identity][sanitized][memory][browser]
assert.equal(blocks.length, 5, "expected 5 system blocks");
assert.ok(blocks[0].text.startsWith("x-anthropic-billing-header:"));
assert.equal(blocks[1].text, CLAUDE_AGENT_SDK_IDENTITY);
const sanitized = blocks[2].text as string;
assert.ok(!sanitized.includes("You are OpenCode"), "identity paragraph should be dropped");
assert.ok(
!sanitized.includes("github.com/anomalyco/opencode"),
"anchor paragraph should be dropped"
);
assert.ok(!sanitized.includes(fingerprintPhrase), "v1.7.5 phrase should be replaced");
assert.ok(
sanitized.includes("Environment context you are running in:"),
"replacement phrase should be present"
);
assert.ok(
sanitized.includes("Working directory: /home/dev"),
"non-fingerprint content preserved"
);
assert.equal(blocks[3].text, "Memory protocol block.");
assert.equal(blocks[4].text, "Browser MCP block.");
// Pipeline reports every op ran.
assert.equal(result.appliedOpKinds.length, DEFAULT_CC_BRIDGE_PIPELINE.length);
});
// ── String system field normalization ──────────────────────────────────────
test("string system field is normalized to a single text block before transforms", () => {
const body = {
model: "claude-opus-4-7",
messages: [{ role: "user", content: "hi" }],
system: "raw string system",
};
const result = runPipeline(body as any, [{ kind: "prepend_system_block", text: "PREFIX" }]);
const blocks = result.body.system as any[];
assert.equal(blocks[0].text, "PREFIX");
assert.equal(blocks[1].text, "raw string system");
});