72 lines
1.7 KiB
Python
72 lines
1.7 KiB
Python
from datetime import datetime
|
|
from enum import StrEnum
|
|
|
|
from pydantic import BaseModel, ConfigDict, HttpUrl, field_validator
|
|
|
|
from skyvern.forge.sdk.core.validators import validate_url
|
|
|
|
DEFAULT_WORKFLOW_TITLE = "New Workflow"
|
|
|
|
|
|
class ObserverCruiseStatus(StrEnum):
|
|
created = "created"
|
|
queued = "queued"
|
|
running = "running"
|
|
failed = "failed"
|
|
terminated = "terminated"
|
|
canceled = "canceled"
|
|
timed_out = "timed_out"
|
|
completed = "completed"
|
|
|
|
|
|
class ObserverCruise(BaseModel):
|
|
model_config = ConfigDict(from_attributes=True)
|
|
|
|
observer_cruise_id: str
|
|
status: ObserverCruiseStatus
|
|
organization_id: str | None = None
|
|
workflow_run_id: str | None = None
|
|
workflow_id: str | None = None
|
|
workflow_permanent_id: str | None = None
|
|
prompt: str | None = None
|
|
url: HttpUrl | None = None
|
|
|
|
created_at: datetime
|
|
modified_at: datetime
|
|
|
|
|
|
class ObserverThought(BaseModel):
|
|
model_config = ConfigDict(from_attributes=True)
|
|
|
|
observer_thought_id: str
|
|
observer_cruise_id: str
|
|
organization_id: str | None = None
|
|
workflow_run_id: str | None = None
|
|
workflow_run_block_id: str | None = None
|
|
workflow_id: str | None = None
|
|
workflow_permanent_id: str | None = None
|
|
user_input: str | None = None
|
|
observation: str | None = None
|
|
thought: str | None = None
|
|
answer: str | None = None
|
|
|
|
created_at: datetime
|
|
modified_at: datetime
|
|
|
|
|
|
class ObserverMetadata(BaseModel):
|
|
url: str
|
|
workflow_title: str = DEFAULT_WORKFLOW_TITLE
|
|
|
|
@field_validator("url")
|
|
@classmethod
|
|
def validate_urls(cls, v: str | None) -> str | None:
|
|
if v is None:
|
|
return None
|
|
return validate_url(v)
|
|
|
|
|
|
class CruiseRequest(BaseModel):
|
|
user_prompt: str
|
|
url: HttpUrl | None = None
|