Files
stackpilot/backend/models/template.py
T
menzeljandClaude Fable 5 1609b8bcc3 Phase 25: templates as stack folders (0.31.0)
Templates are now stack-shaped folders (compose.yaml + .env.example +
template.json) instead of DB rows + manifest.json + {{VAR}} rendering.
Pull copies the folder into a new stack; custom templates persist under
DATA_DIR/templates. Adds POST /api/templates/from-stack and a one-time
startup migration for pre-0.31 DB templates (drops the template table).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-12 07:29:54 +00:00

44 lines
1.0 KiB
Python

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