unsloth/studio/backend/utils/helper_precache_settings.py
Michael Han 6d8c18cd1a
Replace standalone Studio wording with Unsloth (#7221)
* Replace standalone Studio wording with Unsloth

Replace the single word Studio with Unsloth wherever it is used as
shorthand for Unsloth Studio in docs, CLI output, UI strings, i18n
locales, workflow display names, comments and docstrings.

Kept unchanged: the full name Unsloth Studio, third party product
names (LM Studio, Visual Studio, Mac Studio), feature names
(Recipe Studio, Fine-tuning Studio and its translations), and all
identifiers such as env vars, commands, paths and filenames.

* Address review feedback on the Studio wording rename

Use "an" before Unsloth where the rename left the article as "a".
Restore the split brand where Unsloth and Studio render as two halves
of the full product name: the onboarding sidebar subtitle and the
IPv6 localhost warning. Scope two messages to the full name Unsloth
Studio where plain Unsloth was misleading: the AMD README bullet and
the CLI studio setup error.
2026-07-19 00:47:04 -07:00

65 lines
2.2 KiB
Python

# SPDX-License-Identifier: AGPL-3.0-only
# Copyright 2026-present the Unsloth AI Inc. team. All rights reserved. See /studio/LICENSE.AGPL-3.0
"""Persisted opt-in controls for Helper LLM startup pre-cache."""
from __future__ import annotations
import os
from typing import Any
HELPER_PRECACHE_SETTING_KEY = "helper_model_preload_on_startup"
DEFAULT_HELPER_PRECACHE_ENABLED = False
def _coerce_bool(value: Any) -> bool | None:
if isinstance(value, bool):
return value
if isinstance(value, str):
normalized = value.strip().lower()
if normalized in {"1", "true", "yes", "on"}:
return True
if normalized in {"0", "false", "no", "off", ""}:
return False
return None
def helper_model_disabled_by_env() -> bool:
"""Return True when existing broad helper-disable env var is active."""
return os.environ.get("UNSLOTH_HELPER_MODEL_DISABLE", "").strip() in {"1", "true"}
def get_helper_precache_enabled() -> bool:
"""Read the persisted startup pre-cache preference.
Missing or unreadable settings default to False so Unsloth startup never
performs optional network work unless the user explicitly opted in.
"""
try:
from storage.studio_db import get_app_setting
stored = get_app_setting(HELPER_PRECACHE_SETTING_KEY, None)
except Exception:
stored = None
parsed = _coerce_bool(stored)
return parsed if parsed is not None else DEFAULT_HELPER_PRECACHE_ENABLED
def set_helper_precache_enabled(value: Any) -> bool:
"""Persist whether Unsloth should pre-cache the Helper LLM at startup."""
parsed = _coerce_bool(value)
if parsed is None:
raise ValueError("Helper LLM startup pre-cache must be true or false.")
from storage.studio_db import upsert_app_settings
upsert_app_settings({HELPER_PRECACHE_SETTING_KEY: parsed})
return parsed
def should_preload_helper_on_startup() -> bool:
"""Gate the startup pre-cache thread.
The persisted setting is opt-in and the existing broad disable env var wins.
Explicit AI Assist calls do not use this gate; they remain user-triggered.
"""
return get_helper_precache_enabled() and not helper_model_disabled_by_env()