Implement AI orchestration wedding demo

This commit is contained in:
pelpanagiotis
2026-06-27 13:50:11 +03:00
commit 55d4fe95b4
67 changed files with 4736 additions and 0 deletions

View File

@@ -0,0 +1,178 @@
from datetime import datetime
from enum import StrEnum
from typing import Any, Literal
from uuid import UUID, uuid4
from pydantic import BaseModel, ConfigDict, Field
class ActionStatus(StrEnum):
CREATED = "created"
PENDING_REVIEW = "pending_review"
APPROVED = "approved"
REJECTED = "rejected"
EXECUTED = "executed"
EXECUTION_FAILED = "execution_failed"
class EventType(StrEnum):
CONVERSATION_EVENT = "ConversationEvent"
ACTION_CREATED = "ActionCreated"
ACTION_REJECTED = "ActionRejected"
ACTION_EXECUTED = "ActionExecuted"
API_CALL_GENERATED = "ApiCallGenerated"
MEMORY_UPDATED = "MemoryUpdated"
CONVERSATION_SUMMARIZED = "ConversationSummarized"
class TranscriptChunk(BaseModel):
speaker: str
timestamp: datetime
text: str = Field(min_length=1)
class ConversationEvent(BaseModel):
id: UUID = Field(default_factory=uuid4)
request_id: str
meeting_id: str = "demo-meeting"
chunk: TranscriptChunk
class ToolDefinition(BaseModel):
name: str
description: str
method: Literal["GET", "POST", "PATCH", "PUT", "DELETE"]
path: str
schema: dict[str, Any]
required: list[str] = Field(default_factory=list)
path_params: list[str] = Field(default_factory=list)
class PlannerDecision(BaseModel):
intent: str
confidence: float = Field(ge=0, le=1)
reasoning: str
tool: str | None = None
arguments: dict[str, Any] = Field(default_factory=dict)
extracted_entities: dict[str, Any] = Field(default_factory=dict)
class ValidationResult(BaseModel):
valid: bool
errors: list[str] = Field(default_factory=list)
class PolicyResult(BaseModel):
allowed: bool
reasons: list[str] = Field(default_factory=list)
class PendingActionCreate(BaseModel):
meeting_id: str
tool: str
intent: str
reasoning: str
confidence: float
payload: dict[str, Any]
extracted_entities: dict[str, Any] = Field(default_factory=dict)
validation: ValidationResult
policy: PolicyResult
class PendingActionRead(PendingActionCreate):
model_config = ConfigDict(from_attributes=True)
id: int
status: ActionStatus
created_at: datetime
updated_at: datetime
execution_result: dict[str, Any] | None = None
class PendingActionUpdate(BaseModel):
payload: dict[str, Any] | None = None
class TaskCreate(BaseModel):
title: str
assignee: str | None = None
due_date: datetime | None = None
status: Literal["pending", "in_progress", "done"] = "pending"
class TaskPatch(BaseModel):
title: str | None = None
assignee: str | None = None
due_date: datetime | None = None
status: Literal["pending", "in_progress", "done"] | None = None
class TaskRead(TaskCreate):
model_config = ConfigDict(from_attributes=True)
id: int
created_at: datetime
class NoteCreate(BaseModel):
content: str
category: Literal["general", "preference", "vendor", "budget"] = "general"
class NoteRead(NoteCreate):
model_config = ConfigDict(from_attributes=True)
id: int
created_at: datetime
class ReservationCreate(BaseModel):
vendor: str
reservation_date: datetime
status: Literal["pending", "reserved", "cancelled"] = "pending"
class ReservationPatch(BaseModel):
vendor: str | None = None
reservation_date: datetime | None = None
status: Literal["pending", "reserved", "cancelled"] | None = None
class ReservationRead(BaseModel):
model_config = ConfigDict(from_attributes=True)
id: int
vendor: str
reservation_date: datetime
status: str
created_at: datetime
class DashboardRead(BaseModel):
transcript: list[TranscriptChunk]
context: dict[str, Any]
memories: list[dict[str, Any]]
pending_actions: list[PendingActionRead]
tasks: list[TaskRead]
notes: list[NoteRead]
reservations: list[ReservationRead]
events: list[dict[str, Any]]
class TranscriptSegment(BaseModel):
id: str
speaker: str
original_text: str
edited_text: str
start_ms: int
end_ms: int
class TranscriptionJobRead(BaseModel):
job_id: str
status: Literal["uploading", "queued", "processing", "completed", "error"]
transcription_id: str | None = None
segments: list[TranscriptSegment] = Field(default_factory=list)
generated_action_ids: list[int] = Field(default_factory=list)
error: str | None = None
created_at: datetime