david / execution /models.py
SNAPKITTYWEST's picture
October 2026 main drop: mirror from GitHub
f109bf8 verified
Raw History Blame Contribute Delete
1.82 kB
"""WorkItem / AgentResult / EvidenceBundle contracts for sparse execution."""
from __future__ import annotations
from dataclasses import asdict, dataclass, field
from typing import Any
@dataclass(frozen=True)
class Evidence:
evidence_id: str
source_id: str
source_type: str
document_id: str
location: str
content_hash: str
embedding_id: str | None = None
retrieved_by: str | None = None
retrieval_score: float | None = None
source_authority: str | None = None
timestamp: str | None = None
parent_evidence: tuple[str, ...] = ()
content: str | None = None # never delivered without the fields above
@dataclass(frozen=True)
class EvidenceBundle:
facts: tuple[dict[str, Any], ...] = ()
sources: tuple[Evidence, ...] = ()
provenance: tuple[dict[str, Any], ...] = ()
retrieval_metadata: tuple[dict[str, Any], ...] = ()
@dataclass(frozen=True)
class WorkItem:
request_id: str
work_id: str
agent_id: str
task: str
evidence_bundle: EvidenceBundle
required_outputs: tuple[str, ...]
permissions: frozenset[str]
deadline: str | None
risk_policy: str
def to_dict(self) -> dict[str, Any]:
d = asdict(self)
d["permissions"] = sorted(self.permissions)
return d
@dataclass(frozen=True)
class AgentResult:
agent_id: str
facts: tuple[dict[str, Any], ...] = ()
conclusions: tuple[dict[str, Any], ...] = ()
assumptions: tuple[str, ...] = ()
uncertainty: tuple[str, ...] = ()
evidence_refs: tuple[str, ...] = ()
transformations: tuple[dict[str, Any], ...] = ()
risk_signals: tuple[str, ...] = ()
provenance_root: str | None = None
status: str = "ok" # ok | failed | escalated | skipped
def to_dict(self) -> dict[str, Any]:
return asdict(self)