mirror of
https://github.com/diegosouzapw/OmniRoute.git
synced 2026-08-11 01:32:22 +03:00
fix(types): validate default executor pool config (#9849)
Co-authored-by: backryun <bakryun0718@proton.me>
This commit is contained in:
committed by
GitHub
parent
a2eab58dde
commit
97a1355037
@@ -61,12 +61,11 @@ import {
|
||||
} from "@/lib/providers/validation/urlHelpers";
|
||||
import { forwardOpencodeClientHeaders } from "../utils/opencodeHeaders.ts";
|
||||
import { resolveZaiUrl } from "./default/zaiFormatOverride.ts";
|
||||
import { normalizePoolConfig } from "./default/poolConfig.ts";
|
||||
import { acquireNvidiaConcurrencySlot } from "./default/nvidiaConcurrencyGate.ts";
|
||||
import { resolveAlibabaProviderBaseUrl } from "@/shared/constants/alibabaProviderRegions";
|
||||
import { usesCcWireImage } from "../services/ccWireImageBuiltins.ts";
|
||||
|
||||
import type { PoolConfig } from "../services/sessionPool/types.ts";
|
||||
|
||||
const NVIDIA_TOOL_CALL_ID_PATTERN = /^[A-Za-z0-9]{9}$/;
|
||||
|
||||
function normalizeNvidiaToolCallId(id: unknown): unknown {
|
||||
@@ -146,7 +145,7 @@ export class DefaultExecutor extends BaseExecutor {
|
||||
super(provider, PROVIDERS[provider] || PROVIDERS.openai);
|
||||
const registryEntry = getRegistryEntry(provider);
|
||||
if (registryEntry?.poolConfig) {
|
||||
this.poolConfig = registryEntry.poolConfig as PoolConfig;
|
||||
this.poolConfig = normalizePoolConfig(registryEntry.poolConfig) ?? undefined;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
33
open-sse/executors/default/poolConfig.ts
Normal file
33
open-sse/executors/default/poolConfig.ts
Normal file
@@ -0,0 +1,33 @@
|
||||
import type { PoolConfig } from "../../services/sessionPool/types.ts";
|
||||
|
||||
export function normalizePoolConfig(value: Record<string, unknown>): PoolConfig | null {
|
||||
const {
|
||||
minSessions,
|
||||
maxSessions,
|
||||
cooldownBase,
|
||||
cooldownMax,
|
||||
cooldownJitter,
|
||||
requestTimeout,
|
||||
requestJitter,
|
||||
} = value;
|
||||
if (
|
||||
typeof minSessions !== "number" ||
|
||||
typeof maxSessions !== "number" ||
|
||||
typeof cooldownBase !== "number" ||
|
||||
typeof cooldownMax !== "number" ||
|
||||
typeof cooldownJitter !== "number" ||
|
||||
typeof requestTimeout !== "number" ||
|
||||
typeof requestJitter !== "number"
|
||||
) {
|
||||
return null;
|
||||
}
|
||||
return {
|
||||
minSessions,
|
||||
maxSessions,
|
||||
cooldownBase,
|
||||
cooldownMax,
|
||||
cooldownJitter,
|
||||
requestTimeout,
|
||||
requestJitter,
|
||||
};
|
||||
}
|
||||
31
tests/unit/default-pool-config-contract.test.ts
Normal file
31
tests/unit/default-pool-config-contract.test.ts
Normal file
@@ -0,0 +1,31 @@
|
||||
import test from "node:test";
|
||||
import assert from "node:assert/strict";
|
||||
|
||||
import { normalizePoolConfig } from "../../open-sse/executors/default/poolConfig.ts";
|
||||
|
||||
test("normalizePoolConfig preserves a complete registry pool contract", () => {
|
||||
assert.deepEqual(
|
||||
normalizePoolConfig({
|
||||
minSessions: 1,
|
||||
maxSessions: 3,
|
||||
cooldownBase: 2000,
|
||||
cooldownMax: 5000,
|
||||
cooldownJitter: 100,
|
||||
requestTimeout: 30000,
|
||||
requestJitter: 50,
|
||||
}),
|
||||
{
|
||||
minSessions: 1,
|
||||
maxSessions: 3,
|
||||
cooldownBase: 2000,
|
||||
cooldownMax: 5000,
|
||||
cooldownJitter: 100,
|
||||
requestTimeout: 30000,
|
||||
requestJitter: 50,
|
||||
}
|
||||
);
|
||||
});
|
||||
|
||||
test("normalizePoolConfig rejects incomplete registry values", () => {
|
||||
assert.equal(normalizePoolConfig({ minSessions: 1, maxSessions: 3 }), null);
|
||||
});
|
||||
Reference in New Issue
Block a user