58 lines
1.3 KiB
Python
58 lines
1.3 KiB
Python
from enum import Enum
|
|
from datetime import datetime
|
|
from pydantic import BaseModel
|
|
|
|
|
|
class SessionType(str, Enum):
|
|
EPHEMERAL = "ephemeral"
|
|
PERSISTENT = "persistent"
|
|
SCHEDULED = "scheduled"
|
|
|
|
|
|
class TaskStatus(str, Enum):
|
|
PENDING = "pending"
|
|
RUNNING = "running"
|
|
COMPLETED = "completed"
|
|
FAILED = "failed"
|
|
ABORTED = "aborted"
|
|
|
|
|
|
class CreateSessionRequest(BaseModel):
|
|
type: SessionType = SessionType.EPHEMERAL
|
|
title: str | None = None
|
|
prompt: str | None = None
|
|
|
|
|
|
class Task(BaseModel):
|
|
id: str
|
|
type: SessionType
|
|
prompt: str
|
|
status: TaskStatus = TaskStatus.PENDING
|
|
session_id: str | None = None
|
|
schedule: str | None = None
|
|
created_at: datetime | None = None
|
|
started_at: datetime | None = None
|
|
finished_at: datetime | None = None
|
|
error: str | None = None
|
|
|
|
|
|
class PersistentSession(BaseModel):
|
|
id: str
|
|
session_id: str
|
|
name: str
|
|
created_at: datetime | None = None
|
|
last_used_at: datetime | None = None
|
|
|
|
|
|
class TaskHistory(BaseModel):
|
|
id: str
|
|
type: SessionType
|
|
prompt: str
|
|
status: TaskStatus
|
|
session_id: str | None = None
|
|
schedule: str | None = None
|
|
created_at: str
|
|
started_at: str | None = None
|
|
finished_at: str | None = None
|
|
error: str | None = None
|