from datetime import datetime from typing import Any from ninja import Schema class SkillCreateIn(Schema): code: str name: str description: str = "" prompt_template: str = "" input_schema: dict[str, Any] = {"type": "object"} output_schema: dict[str, Any] = {"type": "object"} output_enforcement: str = "validated_json" example_input: dict[str, Any] = {} class SkillDefinitionUpdateIn(Schema): name: str | None = None description: str | None = None class SkillDraftUpdateIn(Schema): prompt_template: str | None = None input_schema: dict[str, Any] | None = None output_schema: dict[str, Any] | None = None output_enforcement: str | None = None example_input: dict[str, Any] | None = None class SkillVersionOut(Schema): id: int version: int status: str prompt_template: str input_schema: dict[str, Any] output_schema: dict[str, Any] output_enforcement: str structured_output_metrics: dict[str, Any] example_input: dict[str, Any] created_at: datetime updated_at: datetime published_at: datetime | None class SkillDefinitionOut(Schema): id: int code: str name: str description: str active_version: int | None draft_version: int | None updated_at: datetime class SkillDetailOut(SkillDefinitionOut): versions: list[SkillVersionOut]