60 lines
2.5 KiB
JavaScript
60 lines
2.5 KiB
JavaScript
"use strict";
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.ASSISTANT_PROVIDER_EXECUTION_CONTRACT_SCHEMA_VERSION = void 0;
|
|
exports.createAssistantProviderExecutionPolicy = createAssistantProviderExecutionPolicy;
|
|
exports.ASSISTANT_PROVIDER_EXECUTION_CONTRACT_SCHEMA_VERSION = "assistant_provider_execution_contract_v1";
|
|
function createAssistantProviderExecutionPolicy() {
|
|
function normalizeProvider(value) {
|
|
return value === "local" ? "local" : value === "openai" ? "openai" : null;
|
|
}
|
|
function detectLlmRuntimeUnavailable(reason) {
|
|
const source = String(reason ?? "").trim();
|
|
if (!source) {
|
|
return false;
|
|
}
|
|
return /(?:openai\s+api\s+key\s+is\s+missing|api\s+key\s+is\s+missing|missing\s+api\s+key|authentication|unauthoriz(?:ed|ation)|401\b)/iu.test(source);
|
|
}
|
|
function resolveProviderExecutionState(input) {
|
|
const normalizedProvider = normalizeProvider(input?.llmProvider);
|
|
const useMock = Boolean(input?.useMock);
|
|
const baseUrlConfigured = String(input?.baseUrl ?? "").trim().length > 0;
|
|
const llmRuntimeUnavailableDetected = detectLlmRuntimeUnavailable(input?.llmPreDecomposeReason);
|
|
const reasonCodes = [];
|
|
if (useMock) {
|
|
reasonCodes.push("mock_mode_enabled");
|
|
}
|
|
if (normalizedProvider === "local") {
|
|
reasonCodes.push("provider_local");
|
|
}
|
|
else if (normalizedProvider === "openai") {
|
|
reasonCodes.push("provider_openai");
|
|
}
|
|
else {
|
|
reasonCodes.push("provider_unknown");
|
|
}
|
|
if (baseUrlConfigured) {
|
|
reasonCodes.push("base_url_configured");
|
|
}
|
|
if (llmRuntimeUnavailableDetected) {
|
|
reasonCodes.push("llm_runtime_unavailable");
|
|
}
|
|
return {
|
|
schema_version: exports.ASSISTANT_PROVIDER_EXECUTION_CONTRACT_SCHEMA_VERSION,
|
|
policy_owner: "assistantProviderExecutionPolicy",
|
|
provider_mode: useMock ? "mock" : normalizedProvider ?? "unknown",
|
|
normalized_provider: normalizedProvider,
|
|
use_mock: useMock,
|
|
base_url_configured: baseUrlConfigured,
|
|
llm_runtime_unavailable_detected: llmRuntimeUnavailableDetected,
|
|
living_mode_forced_deep: useMock,
|
|
living_mode_forced_reason: useMock ? "mock_mode_keeps_deep_pipeline" : null,
|
|
reason_codes: reasonCodes
|
|
};
|
|
}
|
|
return {
|
|
normalizeProvider,
|
|
detectLlmRuntimeUnavailable,
|
|
resolveProviderExecutionState
|
|
};
|
|
}
|