Files
XCClaw/app/models/session.py

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