aegis-runtime / runtime /tools.py
Darkweb007's picture
Build Aegis Runtime assistant demo
6df89b0
Raw
History Blame Contribute Delete
2.98 kB
from __future__ import annotations
from collections.abc import Callable
from .models import ToolResult
from .permissions import PermissionBroker
from .store import ContextStore
class ToolRegistry:
def __init__(self, store: ContextStore, permissions: PermissionBroker) -> None:
self.store = store
self.permissions = permissions
self._tools: dict[str, tuple[str, Callable[..., ToolResult]]] = {
"search_context": ("context.read", self.search_context),
"summarize_screen": ("screen.read", self.summarize_screen),
"create_reminder": ("reminders.write", self.create_reminder),
"open_document": ("documents.open", self.open_document),
}
def execute(self, name: str, request_id: str, **kwargs) -> ToolResult:
permission, fn = self._tools[name]
allowed = self.permissions.check(permission)
self.store.audit(request_id, permission, name, "allowed" if allowed else "denied")
if not allowed:
return ToolResult(name=name, ok=False, content=f"Permission denied: {permission}")
return fn(**kwargs)
def search_context(self, query: str, limit: int = 5) -> ToolResult:
matches = self.store.search(query, limit=limit)
if not matches:
return ToolResult("search_context", True, "No matching local context found.", {"matches": []})
bullets = [
f"- {m['title']} ({m['app']}): {m['body']}"
for m in matches
]
return ToolResult("search_context", True, "\n".join(bullets), {"matches": matches})
def summarize_screen(self) -> ToolResult:
matches = self.store.search("screen current profiling performance", limit=1)
if not matches:
return ToolResult("summarize_screen", True, "No screen snapshot is available.", {"matches": []})
item = matches[0]
return ToolResult(
"summarize_screen",
True,
f"Your current screen appears to be {item['title']}. Key detail: {item['body']}",
{"matches": matches},
)
def create_reminder(self, text: str, due_hint: str = "later") -> ToolResult:
reminder = self.store.create_reminder(text, due_hint)
return ToolResult(
"create_reminder",
True,
f"Created reminder #{reminder['id']}: {reminder['text']} ({reminder['due_hint']}).",
{"reminder": reminder},
)
def open_document(self, query: str) -> ToolResult:
matches = [m for m in self.store.search(query, limit=5) if m["kind"] == "document"]
if not matches:
return ToolResult("open_document", True, "I could not find a matching local document.", {"matches": []})
doc = matches[0]
return ToolResult(
"open_document",
True,
f"Opened {doc['title']} from {doc['source']}. Summary: {doc['body']}",
{"document": doc},
)