[SKY-6974] Browser Profiles [2/3] Marc/backend browser session profiles (#3923)

This commit is contained in:
Marc Kelechava
2025-11-06 01:24:39 -08:00
committed by GitHub
parent f0172a22df
commit 3db5ec6cd7
24 changed files with 662 additions and 27 deletions

View File

@@ -1,6 +1,6 @@
from datetime import datetime
from pydantic import BaseModel, ConfigDict
from pydantic import BaseModel, ConfigDict, Field, model_validator
class BrowserProfile(BaseModel):
@@ -13,3 +13,20 @@ class BrowserProfile(BaseModel):
created_at: datetime
modified_at: datetime
deleted_at: datetime | None = None
class CreateBrowserProfileRequest(BaseModel):
name: str = Field(..., description="Name for the browser profile")
description: str | None = Field(None, description="Optional profile description")
browser_session_id: str | None = Field(
default=None, description="Persistent browser session to convert into a profile"
)
workflow_run_id: str | None = Field(
default=None, description="Workflow run whose persisted session should be captured"
)
@model_validator(mode="after")
def _validate_source(self) -> "CreateBrowserProfileRequest":
if bool(self.browser_session_id) == bool(self.workflow_run_id):
raise ValueError("Provide either browser_session_id or workflow_run_id")
return self