christlurker's picture
FrontierAgent react demo
9d0fd45
Raw
History Blame Contribute Delete
1.67 kB
"""Task and research request models."""
from __future__ import annotations
from datetime import UTC, datetime
from pydantic import BaseModel, Field
from frontier_agent.core.types import TaskId, TaskStatus, new_task_id
class ResearchRequest(BaseModel):
"""User-submitted research question with optional configuration."""
question: str
mode: str = "deep" # quick | deep | heavy_duty
depth: str = "standard" # standard | deep
max_sources: int = 20
language: str = "auto" # auto | en | zh
pipeline_id: str = "auto"
class Task(BaseModel):
"""A research task — the OS 'process' abstraction."""
id: TaskId = Field(default_factory=new_task_id)
thread_id: str = "" # runtime checkpoint/resume thread id
parent_task_id: str | None = None
status: TaskStatus = TaskStatus.CREATED
current_phase: str = ""
pipeline_id: str = "auto"
request: ResearchRequest
created_at: datetime = Field(default_factory=lambda: datetime.now(UTC))
updated_at: datetime = Field(default_factory=lambda: datetime.now(UTC))
error: str | None = None
context: dict = Field(default_factory=dict)
# Result pointers
report_id: str | None = None
evidence_count: int = 0
assertion_count: int = 0
# Pin / favorite
pinned: bool = False
pinned_at: datetime | None = None
# Title (user-editable; NULL → UI falls back to input_text preview)
title: str | None = None
# Archive (soft delete)
archived: bool = False
archived_at: datetime | None = None
def set_status(self, status: TaskStatus) -> None:
self.status = status
self.updated_at = datetime.now(UTC)