generated from coulomb/repo-seed
Extract the first reusable slice (models, schemas, routers, MCP, migrations) from state-hub with INTENT/SCOPE, agent instructions, workplan, and aligned inter_hub capability registry index.
28 lines
1.1 KiB
Python
28 lines
1.1 KiB
Python
import uuid
|
|
from datetime import datetime
|
|
|
|
from sqlalchemy import DateTime, String, Text, func
|
|
from sqlalchemy.dialects.postgresql import JSONB, UUID
|
|
from sqlalchemy.orm import Mapped, mapped_column
|
|
|
|
from hub_core.models.base import Base, new_uuid
|
|
|
|
|
|
class ProgressEvent(Base):
|
|
"""Generic append-only event log for hub activity."""
|
|
|
|
__tablename__ = "progress_events"
|
|
|
|
id: Mapped[uuid.UUID] = mapped_column(
|
|
UUID(as_uuid=True), primary_key=True, default=new_uuid
|
|
)
|
|
event_type: Mapped[str] = mapped_column(String(50), nullable=False, index=True)
|
|
summary: Mapped[str] = mapped_column(Text, nullable=False)
|
|
detail: Mapped[dict | None] = mapped_column(JSONB, nullable=True)
|
|
subject_refs: Mapped[dict | None] = mapped_column(JSONB, nullable=True)
|
|
author: Mapped[str | None] = mapped_column(String(100), nullable=True)
|
|
session_id: Mapped[str | None] = mapped_column(String(100), nullable=True)
|
|
created_at: Mapped[datetime] = mapped_column(
|
|
DateTime(timezone=True), server_default=func.now(), nullable=False, index=True
|
|
)
|