mirror of
https://github.com/openswarm-ai/openswarm.git
synced 2026-08-21 12:12:22 +02:00
55 lines
1.4 KiB
Python
55 lines
1.4 KiB
Python
"""Typed shapes for the onboarding v3 endpoints (identity, local scan, prep)."""
|
|
|
|
from typing import List, Optional
|
|
|
|
from pydantic import BaseModel, ConfigDict, Field
|
|
|
|
from backend.apps.settings.models import PersonalizedStarter
|
|
|
|
|
|
class ProviderIdentity(BaseModel):
|
|
model_config = ConfigDict(validate_assignment=True)
|
|
|
|
provider: str
|
|
label: str
|
|
email: Optional[str] = None
|
|
plan: Optional[str] = None
|
|
|
|
|
|
class IdentityResponse(BaseModel):
|
|
model_config = ConfigDict(validate_assignment=True)
|
|
|
|
providers: List[ProviderIdentity] = Field(default_factory=list)
|
|
|
|
|
|
class FolderSummary(BaseModel):
|
|
model_config = ConfigDict(validate_assignment=True)
|
|
|
|
name: str
|
|
entry_count: int = 0
|
|
screenshot_count: int = 0
|
|
top_extensions: List[str] = Field(default_factory=list)
|
|
|
|
|
|
class ScanResult(BaseModel):
|
|
model_config = ConfigDict(validate_assignment=True)
|
|
|
|
apps: List[str] = Field(default_factory=list)
|
|
folders: List[FolderSummary] = Field(default_factory=list)
|
|
git_repo_count: int = 0
|
|
has_gitconfig: bool = False
|
|
|
|
|
|
class PrepRequest(BaseModel):
|
|
model_config = ConfigDict(validate_assignment=True)
|
|
|
|
scan: Optional[ScanResult] = None
|
|
picked_apps: List[str] = Field(default_factory=list)
|
|
|
|
|
|
class PrepResponse(BaseModel):
|
|
model_config = ConfigDict(validate_assignment=True)
|
|
|
|
greeting: str = ""
|
|
starters: List[PersonalizedStarter] = Field(default_factory=list)
|