from __future__ import annotations from datetime import datetime from enum import Enum from typing import Any from pydantic import BaseModel, Field class QueryType(str, Enum): search = "search" vsearch = "vsearch" query = "query" deep_search = "deep_search" class QueryRequest(BaseModel): branch: str | None = None memory_profile: str | None = None query_type: QueryType = QueryType.query query: str = Field(min_length=1) require_latest: bool = True n: int = Field(default=5, ge=1, le=50) debug: bool = False class SyncRequest(BaseModel): branch: str | None = None memory_profile: str | None = None require_latest: bool = True class QueryResponse(BaseModel): ok: bool branch: str resolved_workspace: str commit_hash: str synced_at: datetime query_type: QueryType results: Any qmd_collection: str debug: dict[str, Any] | None = None class SyncResponse(BaseModel): ok: bool branch: str resolved_workspace: str commit_hash: str synced_at: datetime qmd_collection: str debug: dict[str, Any] | None = None class HealthResponse(BaseModel): ok: bool service: str timestamp: datetime class WorkspaceStatusItem(BaseModel): branch: str workspace: str commit_hash: str synced_at: datetime qmd_collection: str class StatusResponse(BaseModel): ok: bool default_branch: str mirror_path: str workspaces: list[WorkspaceStatusItem]