fix: expose deepseek model source contract
This commit is contained in:
@@ -1,3 +1,4 @@
|
||||
import { codeModelProviderSourceContract } from "../src/components/microservices/code-queue/src/code-agent/common";
|
||||
import { codexSubmitModelRegistryForTest, codexSubmitRoutingRecommendationForTest } from "./src/code-queue";
|
||||
|
||||
type JsonRecord = Record<string, unknown>;
|
||||
@@ -77,6 +78,31 @@ export function runCodeQueueSubmitRoutingContract(): JsonRecord {
|
||||
assertCondition(registry.opencodeModels.includes("deepseek-chat"), "opencodeModels should include deepseek-chat", registry);
|
||||
assertCondition(registry.opencodeModels.includes("minimax-m2.7"), "opencodeModels should include MiniMax", registry);
|
||||
assertCondition(registry.codexModels.includes("gpt-5.5"), "codexModels should include default GPT", registry);
|
||||
const providerSource = codeModelProviderSourceContract({
|
||||
codeModels: ["gpt-5.5", "deepseek", "minimax-m2.7"],
|
||||
deepseekApiBase: "https://api.deepseek.example",
|
||||
deepseekApiKey: "ds-secret-must-not-print",
|
||||
deepseekModel: "deepseek-chat",
|
||||
minimaxApiBase: "https://api.minimax.example",
|
||||
minimaxApiKey: "",
|
||||
minimaxModel: "MiniMax-M2.7",
|
||||
}, {
|
||||
DEEPSEEK_API_KEY: "ds-secret-must-not-print",
|
||||
DEEPSEEK_API_BASE: "https://api.deepseek.example",
|
||||
DEEPSEEK_MODEL: "deepseek-chat",
|
||||
});
|
||||
const providerSourceJson = JSON.stringify(providerSource);
|
||||
assertCondition(!providerSourceJson.includes("ds-secret-must-not-print"), "provider source contract must not print API key values", providerSource);
|
||||
assertCondition(!providerSourceJson.includes("https://api.deepseek.example"), "provider source contract must not print baseURL values", providerSource);
|
||||
assertCondition(asRecord(providerSource).valuesPrinted === false, "provider source contract must declare valuesPrinted=false", providerSource);
|
||||
const providers = asRecord(providerSource.providers);
|
||||
const deepseekProvider = asRecord(providers.deepseek);
|
||||
const deepseekCredentialSource = asRecord(deepseekProvider.credentialSource);
|
||||
assertCondition(deepseekProvider.runner === "opencode", "DeepSeek provider source should use OpenCode", providerSource);
|
||||
assertCondition(deepseekProvider.publicModel === "deepseek-chat", "DeepSeek provider source should expose public model alias", providerSource);
|
||||
assertCondition(asRecord(deepseekCredentialSource.apiKey).ref === "env:DEEPSEEK_API_KEY", "DeepSeek apiKey source should expose env ref only", providerSource);
|
||||
assertCondition(asRecord(deepseekCredentialSource.apiKey).present === true, "DeepSeek apiKey presence should be true when configured", providerSource);
|
||||
assertCondition(asRecord(deepseekCredentialSource.baseURL).ref === "env:DEEPSEEK_API_BASE", "DeepSeek baseURL source should expose env ref only", providerSource);
|
||||
|
||||
const commanderOnly = codexSubmitRoutingRecommendationForTest(commanderOnlyPrompt);
|
||||
assertCondition(commanderOnly.route === "commander-human-only", "prod restart/secrets/DB work should be commander-only", commanderOnly);
|
||||
@@ -96,6 +122,7 @@ export function runCodeQueueSubmitRoutingContract(): JsonRecord {
|
||||
"runtime/core work recommends GPT-5.5/Codex",
|
||||
"medium bounded frontend work recommends deepseek-chat/OpenCode",
|
||||
"model registry maps deepseek-chat and minimax-m2.7 to OpenCode and GPT-5.5 to Codex",
|
||||
"model provider source contract exposes DeepSeek refs/presence without secret values",
|
||||
"dry-run policy contract exposes model-tier concurrency",
|
||||
"prod/restart/secret/DB work is commander-only",
|
||||
"explicit --model mismatch is visible and payload is unchanged",
|
||||
|
||||
Reference in New Issue
Block a user