from __future__ import annotations from typing import Any, Dict from pydantic import BaseModel class Object(BaseModel): id: str name: str description: str | None = None fields: Dict[str, Any] = {} class Morphism(BaseModel): id: str name: str source_object_id: str target_object_id: str schema: Dict[str, Any] = {} class Functor(BaseModel): id: str name: str map_function: str # serialized function body or reference class Limit(BaseModel): id: str name: str constraints: Dict[str, Any] = {} class Colimit(BaseModel): id: str name: str constraints: Dict[str, Any] = {} class TimeMonoid(BaseModel): id: str rounds: int = 1 mode: str = "sync" # or async, delta-sync, etc.