52 lines
1.7 KiB
Python
52 lines
1.7 KiB
Python
from dataclasses import dataclass, field
|
|
|
|
from ai.mcp_client import InProcessMCPClientCustomTools
|
|
from ai.mcp_tools import MCPServerTools
|
|
from auth.auth_manager import AuthManager
|
|
from components.admin.constants import ADMIN_SETTINGS_ENTRY
|
|
from config import OLLAMA_HOST
|
|
from core.settings_management import SettingsManager, NestedSettingsManager
|
|
from core.utils import split_host_port
|
|
|
|
|
|
@dataclass
|
|
class AiBuddySettingsEntry:
|
|
ollama_ip: str = ""
|
|
ollama_port: int = 11434
|
|
ollama_model: str = "mistral"
|
|
llm_mode: str = InProcessMCPClientCustomTools.ID
|
|
available_tools: list = field(default_factory=MCPServerTools.list_tools)
|
|
|
|
def __post_init__(self):
|
|
host, port = split_host_port(OLLAMA_HOST)
|
|
self.ollama_ip = host
|
|
self.ollama_port = port
|
|
|
|
|
|
@dataclass()
|
|
class JiraSettingsEntry:
|
|
user_name: str = ""
|
|
api_token: str = ""
|
|
|
|
|
|
@dataclass
|
|
class AdminSettings:
|
|
ai_buddy: AiBuddySettingsEntry = field(default_factory=AiBuddySettingsEntry)
|
|
jira: JiraSettingsEntry = field(default_factory=JiraSettingsEntry)
|
|
|
|
|
|
class AdminDbManager:
|
|
def __init__(self, session: dict, settings_manager: SettingsManager):
|
|
self._session = session
|
|
self._settings_manager = settings_manager
|
|
self.ai_buddy = NestedSettingsManager(AuthManager.admin_session(),
|
|
settings_manager,
|
|
ADMIN_SETTINGS_ENTRY,
|
|
AdminSettings,
|
|
"ai_buddy")
|
|
self.jira = NestedSettingsManager(session,
|
|
settings_manager,
|
|
ADMIN_SETTINGS_ENTRY,
|
|
AdminSettings,
|
|
"jira")
|