41 lines
1.2 KiB
JavaScript
41 lines
1.2 KiB
JavaScript
const { buildVisibilityDiagnostics } = require("./assistant_visibility");
|
|
|
|
function evaluateAssistantAvailability({
|
|
user,
|
|
config,
|
|
model,
|
|
runtimeHealth,
|
|
providerAvailable = true,
|
|
origin = "webui",
|
|
platform = origin,
|
|
requestedSurface = "webui_panel",
|
|
roleHint = null
|
|
}) {
|
|
const result = buildVisibilityDiagnostics({
|
|
user,
|
|
config,
|
|
model,
|
|
runtimeHealth,
|
|
providerAvailable,
|
|
origin,
|
|
platform,
|
|
requestedSurface,
|
|
roleHint
|
|
});
|
|
const legacyReasons = {
|
|
user_logged_in: "anonymous",
|
|
assistant_enabled: config?.enabled ? "assistant_disabled" : "feature_disabled",
|
|
role_allowed: "role_forbidden",
|
|
model_installed: model ? "model_missing" : "model_not_selected",
|
|
runtime_installed: "runtime_missing",
|
|
runtime_running: `runtime_${runtimeHealth?.state || "stopped"}`,
|
|
runtime_healthy: runtimeHealth?.runtime_usable === false || runtimeHealth?.last_self_test?.success === false
|
|
? "runtime_unusable"
|
|
: "runtime_unhealthy",
|
|
plugin_enabled: "provider_unavailable"
|
|
};
|
|
return { ...result, reason_code: result.reason_code ? legacyReasons[result.reason_code] || result.reason_code : null };
|
|
}
|
|
|
|
module.exports = { evaluateAssistantAvailability };
|