aegis-runtime / runtime /models.py
Darkweb007's picture
Build Aegis Runtime assistant demo
6df89b0
Raw
History Blame Contribute Delete
1.19 kB
from __future__ import annotations
from dataclasses import dataclass, field
from time import perf_counter
from typing import Any
from uuid import uuid4
@dataclass(frozen=True)
class ContextItem:
source: str
title: str
body: str
kind: str = "note"
people: tuple[str, ...] = ()
tags: tuple[str, ...] = ()
created_at: str = ""
app: str = "local"
@dataclass(frozen=True)
class ToolResult:
name: str
ok: bool
content: str
data: dict[str, Any] = field(default_factory=dict)
@dataclass
class RequestTrace:
request_id: str = field(default_factory=lambda: str(uuid4()))
marks: list[tuple[str, float]] = field(default_factory=list)
started: float = field(default_factory=perf_counter)
def mark(self, label: str) -> None:
self.marks.append((label, perf_counter()))
def timings_ms(self) -> dict[str, float]:
previous = self.started
timings: dict[str, float] = {}
for label, timestamp in self.marks:
timings[label] = round((timestamp - previous) * 1000, 2)
previous = timestamp
timings["total"] = round((previous - self.started) * 1000, 2)
return timings