feat: backend servis iskeletini ve yönetim uçlarını ekle
This commit is contained in:
46
backend/app/orchestrator.py
Normal file
46
backend/app/orchestrator.py
Normal file
@@ -0,0 +1,46 @@
|
||||
from sqlalchemy import select
|
||||
from sqlalchemy.orm import Session
|
||||
|
||||
from app.db import AuditLogORM, SettingORM, ToolStateORM
|
||||
from app.llm.planner import build_prompt_context
|
||||
from app.memory.store import MemoryService
|
||||
from app.models import RuntimeSettings
|
||||
from app.telegram.auth import is_authorized
|
||||
|
||||
|
||||
class WiseClawOrchestrator:
|
||||
def __init__(self, session: Session) -> None:
|
||||
self.session = session
|
||||
self.memory = MemoryService(session)
|
||||
|
||||
def get_runtime_settings(self) -> RuntimeSettings:
|
||||
settings = {
|
||||
item.key: item.value for item in self.session.scalars(select(SettingORM))
|
||||
}
|
||||
tools = list(self.session.scalars(select(ToolStateORM).order_by(ToolStateORM.name.asc())))
|
||||
return RuntimeSettings(
|
||||
terminal_mode=int(settings["terminal_mode"]),
|
||||
search_provider=settings["search_provider"],
|
||||
ollama_base_url=settings["ollama_base_url"],
|
||||
default_model=settings["default_model"],
|
||||
tools=[{"name": tool.name, "enabled": tool.enabled} for tool in tools],
|
||||
)
|
||||
|
||||
def handle_text_message(self, telegram_user_id: int, text: str) -> str:
|
||||
if not is_authorized(self.session, telegram_user_id):
|
||||
return "This Telegram user is not authorized for WiseClaw."
|
||||
|
||||
self.memory.add_item(f"user:{telegram_user_id}:{text}")
|
||||
context = build_prompt_context(
|
||||
message=text,
|
||||
runtime=self.get_runtime_settings(),
|
||||
memory=self.memory.latest_items(limit=5),
|
||||
)
|
||||
response = (
|
||||
"WiseClaw scaffold received your message.\n\n"
|
||||
f"Prompt context prepared for model `{context['model']}` with "
|
||||
f"{len(context['memory'])} memory items."
|
||||
)
|
||||
self.session.add(AuditLogORM(category="telegram", message=f"telegram:{telegram_user_id}:{text}"))
|
||||
self.session.commit()
|
||||
return response
|
||||
Reference in New Issue
Block a user