from __future__ import annotations

from pydantic import BaseModel, Field

from app.models.chunk import ChunkPayload


class ChunkUploadRequest(BaseModel):
    repo_id: str = Field(
        min_length=1,
        max_length=256,
        description="Lucos workspace repo id — see docs/LUCOS-INDEXING-API.md",
    )
    commit_sha: str | None = Field(
        default=None,
        max_length=64,
        description="Optional workspace git HEAD at upload time",
    )
    workspace_id: str | None = Field(
        default=None,
        max_length=128,
        description="Daemon workspace identifier for status UX",
    )
    chunks: list[ChunkPayload] = Field(default_factory=list)
    deleted_chunk_ids: list[str] = Field(default_factory=list)


class ChunkUploadCounts(BaseModel):
    indexed: int = 0
    skipped: int = 0
    failed: int = 0


class ChunkUploadResponse(BaseModel):
    repo_id: str
    counts: ChunkUploadCounts
    request_id: str | None = None
