Files
pikasTech-unidesk/scripts/platform-infra-sub2api-codex-local-config-contract-test.ts
T
2026-06-10 04:02:28 +00:00

69 lines
3.2 KiB
TypeScript

import { renderCodexLocalConsumerToml } from "./src/platform-infra-sub2api-codex";
function assertCondition(condition: unknown, message: string, detail: unknown = {}): void {
if (!condition) throw new Error(`${message}: ${JSON.stringify(detail)}`);
}
const baseOptions = {
providerName: "OpenAI",
baseUrl: "https://sub2api.74-48-78-17.nip.io/",
wireApi: "responses",
supportsWebSockets: true,
responsesWebSocketsV2: true,
};
const existing = [
'model_provider = "Legacy"',
"",
"[model_providers.OpenAI]",
'name = "OpenAI"',
'base_url = "https://old.example"',
'wire_api = "responses"',
"requires_openai_auth = false",
"supports_websockets = false",
'env_key = "OLD_OPENAI_API_KEY"',
'extra_setting = "kept"',
"",
"[features]",
"goals = true",
"responses_websockets_v2 = false",
"",
].join("\n");
const updated = renderCodexLocalConsumerToml(existing, baseOptions);
assertCondition(updated.includes('model_provider = "OpenAI"'), "model_provider must point at the configured provider", updated);
assertCondition(updated.includes('base_url = "https://sub2api.74-48-78-17.nip.io/"'), "provider base_url must use the fixed public Sub2API consumer endpoint", updated);
assertCondition(updated.includes("requires_openai_auth = true"), "provider must require OpenAI auth", updated);
assertCondition(updated.includes("supports_websockets = true"), "provider must enable WebSocket transport", updated);
assertCondition(updated.includes("responses_websockets_v2 = true"), "features must enable Responses WebSocket v2", updated);
assertCondition(updated.includes("goals = true"), "existing feature flags must be preserved", updated);
assertCondition(updated.includes('extra_setting = "kept"'), "unknown provider settings must be preserved", updated);
assertCondition(!updated.includes("env_key"), "stale provider env_key must be removed", updated);
assertCondition(updated.endsWith("\n"), "rendered TOML must end with newline", updated);
const fresh = renderCodexLocalConsumerToml("", baseOptions);
assertCondition(fresh.includes("[model_providers.OpenAI]"), "fresh TOML must create the provider section", fresh);
assertCondition(fresh.includes("[features]"), "fresh TOML must create the features section", fresh);
assertCondition(fresh.includes("supports_websockets = true"), "fresh TOML must enable WebSocket transport", fresh);
assertCondition(fresh.includes("responses_websockets_v2 = true"), "fresh TOML must enable Responses WebSocket v2", fresh);
const disabled = renderCodexLocalConsumerToml(existing, {
...baseOptions,
supportsWebSockets: false,
responsesWebSocketsV2: false,
});
assertCondition(disabled.includes("supports_websockets = false"), "disabled localCodex policy must render provider WebSocket transport off", disabled);
assertCondition(disabled.includes("responses_websockets_v2 = false"), "disabled localCodex policy must render Responses WebSocket v2 off", disabled);
console.log(JSON.stringify({
ok: true,
checks: [
"existing Codex TOML is upgraded to the Sub2API WSv2 consumer settings",
"fresh Codex TOML creates provider and feature sections with WSv2 enabled",
"disabled localCodex WebSocket policy renders both consumer flags off",
],
}));