Files
openswarm/backend/apps/templates/models.py
T
2026-03-13 12:09:25 -07:00

33 lines
1.0 KiB
Python

from pydantic import BaseModel, Field
from typing import Optional, Literal, Any
from uuid import uuid4
class TemplateField(BaseModel):
name: str
type: Literal["str", "int", "float", "select", "multi-select", "literal"]
options: Optional[list[str]] = None
default: Optional[Any] = None
required: bool = True
class PromptTemplate(BaseModel):
id: str = Field(default_factory=lambda: uuid4().hex)
name: str
description: str = ""
template: str # with {{field_name}} placeholders
fields: list[TemplateField] = Field(default_factory=list)
tags: list[str] = Field(default_factory=list)
class PromptTemplateCreate(BaseModel):
name: str
description: str = ""
template: str
fields: list[TemplateField] = Field(default_factory=list)
tags: list[str] = Field(default_factory=list)
class PromptTemplateUpdate(BaseModel):
name: Optional[str] = None
description: Optional[str] = None
template: Optional[str] = None
fields: Optional[list[TemplateField]] = None
tags: Optional[list[str]] = None