Add FastAPI-based monitoring dashboard with support for Codex CLI and Devin API v3 Enterprise consumption tracking. Includes Docker deployment, systemd service configuration, kiosk mode launcher, comprehensive documentation, and demo mode for testing without credentials.
36 lines
1017 B
Python
36 lines
1017 B
Python
from datetime import datetime
|
|
from typing import Literal
|
|
|
|
from pydantic import BaseModel, Field
|
|
|
|
|
|
class UsageLimit(BaseModel):
|
|
id: str
|
|
name: str
|
|
used_percent: float | None = Field(default=None, ge=0, le=100)
|
|
remaining_percent: float | None = Field(default=None, ge=0, le=100)
|
|
used: float | None = Field(default=None, ge=0)
|
|
remaining: float | None = Field(default=None, ge=0)
|
|
limit: float | None = Field(default=None, ge=0)
|
|
unit: str | None = None
|
|
reset_at: datetime | None = None
|
|
window: str | None = None
|
|
updated_at: datetime
|
|
|
|
|
|
class ProviderUsage(BaseModel):
|
|
provider: Literal['codex', 'devin']
|
|
status: Literal['ok', 'error', 'disabled']
|
|
limits: list[UsageLimit] = Field(default_factory=list)
|
|
error: str | None = None
|
|
last_successful_update: datetime | None = None
|
|
source: str | None = None
|
|
|
|
|
|
class UsageResponse(BaseModel):
|
|
codex: ProviderUsage
|
|
devin: ProviderUsage
|
|
server_time: datetime
|
|
demo_mode: bool
|
|
refresh_interval: int
|