Spaces:
Paused
Paused
| import test from "node:test"; | |
| import assert from "node:assert/strict"; | |
| const { | |
| isBackgroundTask, | |
| getBackgroundTaskReason, | |
| getDegradedModel, | |
| setBackgroundDegradationConfig, | |
| getBackgroundDegradationConfig, | |
| getDefaultDegradationMap, | |
| getDefaultDetectionPatterns, | |
| resetStats, | |
| } = await import("../../open-sse/services/backgroundTaskDetector.ts"); | |
| // ─── isBackgroundTask ─────────────────────────────────────────────────────── | |
| test("isBackgroundTask: returns true for title generation pattern", () => { | |
| setBackgroundDegradationConfig({ enabled: true }); | |
| const body = { | |
| model: "claude-sonnet-4", | |
| messages: [ | |
| { role: "system", content: "Generate a title for this conversation" }, | |
| { role: "user", content: "How to deploy a Next.js app" }, | |
| ], | |
| }; | |
| assert.equal(isBackgroundTask(body), true); | |
| }); | |
| test("isBackgroundTask: returns true for summarize pattern", () => { | |
| const body = { | |
| model: "claude-sonnet-4", | |
| messages: [ | |
| { role: "system", content: "Summarize this conversation briefly" }, | |
| { role: "user", content: "We discussed deployment techniques" }, | |
| ], | |
| }; | |
| assert.equal(isBackgroundTask(body), true); | |
| }); | |
| test("isBackgroundTask: returns false for normal chat", () => { | |
| const body = { | |
| model: "claude-sonnet-4", | |
| messages: [ | |
| { role: "system", content: "You are a helpful coding assistant" }, | |
| { role: "user", content: "Help me write a function" }, | |
| ], | |
| }; | |
| assert.equal(isBackgroundTask(body), false); | |
| }); | |
| test("isBackgroundTask: returns false for many-turn conversations", () => { | |
| const messages = [ | |
| { role: "system", content: "Generate a title" }, | |
| ...Array.from({ length: 10 }, (_, i) => ({ | |
| role: i % 2 === 0 ? "user" : "assistant", | |
| content: `Message ${i}`, | |
| })), | |
| ]; | |
| const body = { model: "claude-sonnet-4", messages }; | |
| assert.equal(isBackgroundTask(body), false); // Too many turns | |
| }); | |
| test("isBackgroundTask: detects X-Request-Priority header", () => { | |
| const body = { | |
| model: "claude-sonnet-4", | |
| messages: [{ role: "user", content: "hello" }], | |
| }; | |
| const headers = { "x-request-priority": "background" }; | |
| assert.equal(isBackgroundTask(body, headers), true); | |
| }); | |
| test("isBackgroundTask: detects X-Task-Type header", () => { | |
| const body = { | |
| model: "claude-sonnet-4", | |
| messages: [{ role: "user", content: "hello" }], | |
| }; | |
| const headers = { "x-task-type": "background" }; | |
| assert.equal(isBackgroundTask(body, headers), true); | |
| assert.equal(getBackgroundTaskReason(body, headers), "header_background"); | |
| }); | |
| test("isBackgroundTask: detects low max_tokens requests", () => { | |
| const body = { | |
| model: "claude-sonnet-4", | |
| max_tokens: 32, | |
| messages: [{ role: "user", content: "hello" }], | |
| }; | |
| assert.equal(isBackgroundTask(body), true); | |
| assert.equal(getBackgroundTaskReason(body), "low_max_tokens"); | |
| }); | |
| test("isBackgroundTask: returns false for null/undefined body", () => { | |
| assert.equal(isBackgroundTask(null), false); | |
| assert.equal(isBackgroundTask(undefined), false); | |
| }); | |
| test("isBackgroundTask: returns false for empty messages", () => { | |
| assert.equal(isBackgroundTask({ messages: [] }), false); | |
| }); | |
| // ─── getDegradedModel ─────────────────────────────────────────────────────── | |
| test("getDegradedModel: returns cheaper model from map", () => { | |
| resetStats(); | |
| assert.equal(getDegradedModel("claude-opus-4-6"), "gemini-3-flash"); | |
| assert.equal(getDegradedModel("gemini-2.5-pro"), "gemini-3-flash"); | |
| assert.equal(getDegradedModel("gpt-4o"), "gpt-4o-mini"); | |
| }); | |
| test("getDegradedModel: returns original if no mapping exists", () => { | |
| assert.equal(getDegradedModel("some-unknown-model"), "some-unknown-model"); | |
| }); | |
| test("getDegradedModel: handles null/empty", () => { | |
| assert.equal(getDegradedModel(""), ""); | |
| assert.equal(getDegradedModel(null), null); | |
| }); | |
| test("getDegradedModel: increments stats counter", () => { | |
| resetStats(); | |
| getDegradedModel("claude-opus-4-6"); // known mapping | |
| const config = getBackgroundDegradationConfig(); | |
| assert.equal(config.stats.detected, 1); | |
| }); | |
| // ─── Config Management ────────────────────────────────────────────────────── | |
| test("getBackgroundDegradationConfig: returns config copy", () => { | |
| const config = getBackgroundDegradationConfig(); | |
| assert.ok(typeof config.enabled === "boolean"); | |
| assert.ok(typeof config.degradationMap === "object"); | |
| assert.ok(Array.isArray(config.detectionPatterns)); | |
| }); | |
| test("setBackgroundDegradationConfig: updates config", () => { | |
| setBackgroundDegradationConfig({ enabled: true }); | |
| assert.equal(getBackgroundDegradationConfig().enabled, true); | |
| setBackgroundDegradationConfig({ enabled: false }); // reset | |
| }); | |
| test("getDefaultDegradationMap: returns non-empty map", () => { | |
| const map = getDefaultDegradationMap(); | |
| assert.ok(Object.keys(map).length > 0); | |
| assert.ok(map["claude-opus-4-6"]); | |
| }); | |
| test("getDefaultDetectionPatterns: returns non-empty array", () => { | |
| const patterns = getDefaultDetectionPatterns(); | |
| assert.ok(patterns.length > 0); | |
| assert.ok(patterns.includes("generate a title")); | |
| }); | |