2026-03-29 20:31:13 +08:00
|
|
|
from datetime import datetime
|
2026-03-21 11:27:36 +08:00
|
|
|
from pydantic import BaseModel
|
|
|
|
|
from typing import Optional
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class SkillCreate(BaseModel):
|
|
|
|
|
name: str
|
|
|
|
|
description: Optional[str] = None
|
|
|
|
|
instructions: str
|
2026-03-29 20:31:13 +08:00
|
|
|
agent_type: str # master/schedule_planner/executor/librarian/analyst
|
2026-03-21 11:27:36 +08:00
|
|
|
tools: list[str] = []
|
|
|
|
|
required_context: list[str] = []
|
|
|
|
|
output_format: Optional[str] = None
|
|
|
|
|
visibility: str = "private"
|
|
|
|
|
team_id: Optional[str] = None
|
|
|
|
|
is_active: bool = True
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class SkillUpdate(BaseModel):
|
|
|
|
|
# All fields Optional
|
|
|
|
|
name: Optional[str] = None
|
|
|
|
|
description: Optional[str] = None
|
|
|
|
|
instructions: Optional[str] = None
|
|
|
|
|
agent_type: Optional[str] = None
|
|
|
|
|
tools: Optional[list[str]] = None
|
|
|
|
|
required_context: Optional[list[str]] = None
|
|
|
|
|
output_format: Optional[str] = None
|
|
|
|
|
visibility: Optional[str] = None
|
|
|
|
|
team_id: Optional[str] = None
|
|
|
|
|
is_active: Optional[bool] = None
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class SkillOut(BaseModel):
|
|
|
|
|
id: str
|
|
|
|
|
name: str
|
|
|
|
|
description: Optional[str]
|
|
|
|
|
instructions: str
|
|
|
|
|
agent_type: str
|
|
|
|
|
tools: list[str]
|
|
|
|
|
required_context: list[str]
|
|
|
|
|
output_format: Optional[str]
|
|
|
|
|
visibility: str
|
2026-03-29 20:31:13 +08:00
|
|
|
is_builtin: bool
|
2026-03-21 11:27:36 +08:00
|
|
|
team_id: Optional[str]
|
|
|
|
|
is_active: bool
|
|
|
|
|
owner_id: str
|
2026-03-29 20:31:13 +08:00
|
|
|
created_at: datetime
|
|
|
|
|
updated_at: datetime
|
2026-03-21 11:27:36 +08:00
|
|
|
|
|
|
|
|
model_config = {"from_attributes": True}
|