Source code for kittycad.models.kcl_migration_server_message

from typing import List, Literal, Union

from pydantic import Field, RootModel
from typing_extensions import Annotated

from ..models.kcl_migration_application import KclMigrationApplication
from ..models.kcl_migration_history_entry import KclMigrationHistoryEntry
from ..models.kcl_migration_operation import KclMigrationOperation
from ..models.ml_copilot_server_message import MlCopilotServerMessage
from ..models.uuid import Uuid
from .base import KittyCadBaseModel


[docs] class OptionOperation(KittyCadBaseModel): """Current durable state, including a reviewable candidate when successful.""" operation: KclMigrationOperation type: Literal["operation"] = "operation"
[docs] class OptionProgress(KittyCadBaseModel): """Best-effort, display-only progress on the execution connection. Only text, informational and supported reasoning messages are forwarded; candidate edits are returned solely in a validated terminal operation.""" message: MlCopilotServerMessage operation_id: Uuid type: Literal["progress"] = "progress"
[docs] class OptionHistory(KittyCadBaseModel): """Read-only history; never route these entries through file-edit handlers.""" conversation_id: Uuid entries: List[KclMigrationHistoryEntry] type: Literal["history"] = "history"
[docs] class OptionApplication(KittyCadBaseModel): """Current durable application acknowledgement.""" application: KclMigrationApplication operation_id: Uuid type: Literal["application"] = "application"
[docs] class OptionError(KittyCadBaseModel): """A rejected request, without starting or charging for work.""" detail: str type: Literal["error"] = "error"
[docs] class OptionPong(KittyCadBaseModel): """Heartbeat response.""" type: Literal["pong"] = "pong"
KclMigrationServerMessage = RootModel[ Annotated[ Union[ OptionOperation, OptionProgress, OptionHistory, OptionApplication, OptionError, OptionPong, ], Field(discriminator="type"), ] ]