mirror of
https://github.com/HKUDS/nanobot.git
synced 2026-06-15 07:14:08 +00:00
* feat(settings): expand settings api payload * feat(webui): build app-style settings center * feat(webui): add centered chat search dialog * fix(webui): shorten chat search label * fix(webui): center dialog entrance animation * fix(webui): simplify chat search results * fix(webui): tighten mobile settings navigation * feat(webui): persist sidebar state * feat(webui): add sidebar organization controls * refactor(webui): organize backend helpers * refactor(webui): remove utils compatibility shims * refactor(session): move shared webui helpers out of webui package * feat(webui): add image generation settings * style(webui): refine settings overview layout * fix(webui): localize settings zh-CN copy * style(webui): add settings status indicators * feat(webui): show sidebar run indicators * fix(webui): persist sidebar run indicators * fix(webui): highlight settings pending status * fix(webui): align settings test with provider update * fix(utils): preserve legacy webui helper imports
43 lines
1.2 KiB
Python
43 lines
1.2 KiB
Python
"""Utility functions for nanobot."""
|
|
|
|
from __future__ import annotations
|
|
|
|
import sys
|
|
from importlib import import_module
|
|
from types import ModuleType
|
|
|
|
from nanobot.utils.helpers import ensure_dir
|
|
from nanobot.utils.path import abbreviate_path
|
|
|
|
__all__ = ["ensure_dir", "abbreviate_path"]
|
|
|
|
|
|
class _LazyModuleAlias(ModuleType):
|
|
def __init__(self, name: str, target: str) -> None:
|
|
super().__init__(name)
|
|
self.__dict__["_target"] = target
|
|
|
|
def _load(self) -> ModuleType:
|
|
module = import_module(self.__dict__["_target"])
|
|
sys.modules[self.__name__] = module
|
|
return module
|
|
|
|
def __getattr__(self, name: str) -> object:
|
|
return getattr(self._load(), name)
|
|
|
|
def __dir__(self) -> list[str]:
|
|
return sorted(set(super().__dir__()) | set(dir(self._load())))
|
|
|
|
|
|
_LEGACY_MODULE_ALIASES = {
|
|
"webui_thread_disk": "nanobot.webui.thread_disk",
|
|
"webui_transcript": "nanobot.webui.transcript",
|
|
"webui_turn_helpers": "nanobot.session.webui_turns",
|
|
}
|
|
|
|
for _legacy_name, _target_name in _LEGACY_MODULE_ALIASES.items():
|
|
sys.modules.setdefault(
|
|
f"{__name__}.{_legacy_name}",
|
|
_LazyModuleAlias(f"{__name__}.{_legacy_name}", _target_name),
|
|
)
|