Darkweb007's picture
Build Aegis Runtime assistant demo
6df89b0
Raw
History Blame Contribute Delete
1.91 kB
from __future__ import annotations
from pathlib import Path
from .models import RequestTrace
from .permissions import PermissionBroker
from .planner import IntentPlanner
from .seed import SEED_CONTEXT
from .store import ContextStore
from .tools import ToolRegistry
class AssistantRuntime:
def __init__(self, db_path: str | Path = ":memory:", seed: bool = True) -> None:
self.store = ContextStore(db_path)
self.permissions = PermissionBroker()
self.planner = IntentPlanner()
self.tools = ToolRegistry(self.store, self.permissions)
if seed and self.store.count_context() == 0:
for item in SEED_CONTEXT:
self.store.add_context(item)
def handle(self, query: str) -> dict:
trace = RequestTrace()
plan = self.planner.plan(query)
trace.mark("intent_planning")
result = self.tools.execute(plan["tool"], trace.request_id, **plan["args"])
trace.mark("tool_execution")
answer = self._compose_answer(query, plan["intent"], result.content)
trace.mark("response_composition")
return {
"request_id": trace.request_id,
"intent": plan["intent"],
"tool": result.name,
"ok": result.ok,
"answer": answer,
"tool_output": result.content,
"data": result.data,
"timings_ms": trace.timings_ms(),
"audit": self.store.recent_audit(),
}
def _compose_answer(self, query: str, intent: str, content: str) -> str:
if intent == "context_question":
return f"Based on your local context, I found:\n{content}"
if intent == "screen_awareness":
return content
if intent == "create_reminder":
return content
if intent == "open_document":
return content
return f"{content}\n\nRequest: {query}"