from __future__ import annotations from typing import Optional from sqlmodel import SQLModel # Templates are stored as stack-shaped folders on disk (see # services/template_service.py), not in the database. These are API schemas only. class TemplateSummary(SQLModel): id: str name: str description: Optional[str] = None tags: list[str] = [] gpu: Optional[str] = None source: str = "bundled" # "bundled" | "custom" class TemplateDetail(TemplateSummary): compose: str = "" env: str = "" files: list[str] = [] # relative paths the template ships class TemplateSaveRequest(SQLModel): name: str description: Optional[str] = None tags: list[str] = [] gpu: Optional[str] = None compose: str env: str = "" class TemplateFromStackRequest(SQLModel): stack_id: str name: str description: Optional[str] = None class TemplateInstantiateRequest(SQLModel): name: str # new stack name agent_id: int | None = None # None = local host; otherwise deploy to a remote agent