Files
MyManagingTools/src/components/admin/admin_db_manager.py

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")