idea70-narrativeweave-real-.../idea70_narrativeweave_real_.../models.py

38 lines
919 B
Python

from typing import List, Optional
from pydantic import BaseModel, Field
from datetime import datetime
class Source(BaseModel):
type: str
uri: str
confidence: Optional[float] = None
class Signal(BaseModel):
name: str
value: float
provenance: Optional[dict] = None
class Provenance(BaseModel):
trace_id: str
signer: Optional[str] = None
ledger_anchor: Optional[str] = None
class NarrativeBlock(BaseModel):
id: str
topic: str
timestamp: datetime
sources: List[Source] = Field(default_factory=list)
signals: List[Signal] = Field(default_factory=list)
sentiment: Optional[float] = None
risk_factors: List[str] = Field(default_factory=list)
scenario_flags: List[str] = Field(default_factory=list)
provenance: Optional[Provenance] = None
class Config:
# make JSON serialization deterministic for replay
json_sort_keys = True