● Zion Boggan
repos/Darwin/cortex/models.py
zionboggan.com ↗
64 lines · python
History for this file →
1
"""Darwin Cortex - shared Pydantic v2 models."""
2
from __future__ import annotations
3
 
4
from datetime import datetime
5
from typing import Optional
6
from pydantic import BaseModel, Field
7
 
8
 
9
class Hit(BaseModel):
10
    """Normalised result from any engine."""
11
    engine: str
12
    title: str = ""
13
    path: str = ""
14
    snippet: str = ""
15
    score: float = 0.0
16
    last_seen: Optional[datetime] = None
17
    confidence: float = 0.8
18
    authority_tier: str = "older-note"
19
 
20
 
21
class Receipt(BaseModel):
22
    id: str
23
    source: str
24
    path: str
25
    last_seen: Optional[datetime] = None
26
    confidence: float
27
    snippet: str
28
 
29
 
30
class Conflict(BaseModel):
31
    claim: str
32
    winner: str
33
    losers: list[str]
34
    reason: str
35
 
36
 
37
class EngineStatus(BaseModel):
38
    engine: str
39
    status: str
40
    ms: Optional[int] = None
41
    last_ingest: Optional[datetime] = None
42
    staleness_h: Optional[float] = None
43
 
44
 
45
class AskRequest(BaseModel):
46
    query: str
47
    mode: str = "both"
48
    scope: Optional[list[str]] = None
49
    k: int = 12
50
    synthesize: bool = True
51
 
52
 
53
class AskResponse(BaseModel):
54
    answer: Optional[str] = None
55
    receipts: list[Receipt] = Field(default_factory=list)
56
    hits: list[Hit] = Field(default_factory=list)
57
    conflicts: list[Conflict] = Field(default_factory=list)
58
    engines: list[EngineStatus] = Field(default_factory=list)
59
    took_ms: int = 0
60
 
61
 
62
class HealthResponse(BaseModel):
63
    engines: list[EngineStatus] = Field(default_factory=list)
64
    ok: bool = True