Files
resolutionflow/backend/app/schemas/script_builder.py
Michael Chihlas 35c0c67da3 feat: add ScriptBuilderSession model, migration, and schemas
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-21 16:55:08 -04:00

70 lines
1.9 KiB
Python

"""Pydantic schemas for the AI Script Builder."""
from datetime import datetime
from typing import Any, Optional
from uuid import UUID
from pydantic import BaseModel, Field
class ScriptBuilderCreateRequest(BaseModel):
"""Request to start a new builder session."""
language: str = Field(
default="powershell",
pattern=r"^(powershell|bash|python)$",
description="Script language",
)
class ScriptBuilderMessageRequest(BaseModel):
"""User message in a builder session."""
content: str = Field(min_length=1, max_length=5000)
class ScriptBuilderMessageResponse(BaseModel):
"""AI response to a builder message."""
role: str = "assistant"
content: str
script: str | None = None
script_filename: str | None = None
line_count: int | None = None
timestamp: datetime
model_config = {"from_attributes": True}
class ScriptBuilderSessionSummary(BaseModel):
"""Lightweight session for list views (no messages)."""
id: UUID
language: str
title: str | None = None
message_count: int
latest_script_filename: str | None = None
created_at: datetime
updated_at: datetime
model_config = {"from_attributes": True}
class ScriptBuilderSessionDetail(BaseModel):
"""Full session with message history."""
id: UUID
language: str
title: str | None = None
messages: list[dict[str, Any]]
latest_script: str | None = None
latest_script_filename: str | None = None
message_count: int
ai_session_id: UUID | None = None
created_at: datetime
updated_at: datetime
model_config = {"from_attributes": True}
class SaveToLibraryRequest(BaseModel):
"""Request to save a generated script to the Script Library."""
name: str = Field(min_length=1, max_length=200)
description: str | None = None
category_id: UUID | None = None
share_with_team: bool = False