diff --git a/skyvern/forge/sdk/routes/agent_protocol.py b/skyvern/forge/sdk/routes/agent_protocol.py index 8760dc8f..abc57184 100644 --- a/skyvern/forge/sdk/routes/agent_protocol.py +++ b/skyvern/forge/sdk/routes/agent_protocol.py @@ -264,6 +264,7 @@ async def run_task( extra_http_headers=run_request.extra_http_headers, browser_session_id=run_request.browser_session_id, browser_address=run_request.browser_address, + run_with=run_request.run_with, ) except MissingBrowserAddressError as e: raise HTTPException(status_code=400, detail=str(e)) from e diff --git a/skyvern/schemas/runs.py b/skyvern/schemas/runs.py index 86f39d13..dca18094 100644 --- a/skyvern/schemas/runs.py +++ b/skyvern/schemas/runs.py @@ -437,6 +437,11 @@ class TaskRunRequest(BaseModel): description="The CDP address for the task.", examples=["http://127.0.0.1:9222", "ws://127.0.0.1:9222/devtools/browser/1234567890"], ) + run_with: str | None = Field( + default=None, + description="Whether to run the task with agent or code.", + examples=["agent", "code"], + ) @field_validator("url", "webhook_url", "totp_url") @classmethod diff --git a/skyvern/services/task_v2_service.py b/skyvern/services/task_v2_service.py index 4759d341..f7cf226b 100644 --- a/skyvern/services/task_v2_service.py +++ b/skyvern/services/task_v2_service.py @@ -209,6 +209,7 @@ async def initialize_task_v2( browser_session_id=browser_session_id, extra_http_headers=extra_http_headers, browser_address=browser_address, + run_with=run_with, ), workflow_permanent_id=new_workflow.workflow_permanent_id, organization=organization, @@ -755,10 +756,11 @@ async def run_task_v2_helper( context=context, screenshots=scraped_page.screenshots, ) - await app.WORKFLOW_SERVICE.generate_script_if_needed( - workflow=workflow, - workflow_run=workflow_run, - ) + if task_v2.run_with == "code": + await app.WORKFLOW_SERVICE.generate_script_if_needed( + workflow=workflow, + workflow_run=workflow_run, + ) break if not plan: