prompted workflows: use (nav block, [extract block],) for v1 prompts (#3658)

This commit is contained in:
Jonathan Dobson
2025-10-09 08:52:31 -04:00
committed by GitHub
parent 5e7e346c74
commit 6d89b53ae3
4 changed files with 137 additions and 29 deletions

View File

@@ -53,6 +53,7 @@ from skyvern.forge.sdk.schemas.organizations import (
OrganizationUpdate,
)
from skyvern.forge.sdk.schemas.persistent_browser_sessions import PersistentBrowserSession
from skyvern.forge.sdk.schemas.prompts import CreateFromPromptRequest
from skyvern.forge.sdk.schemas.task_generations import GenerateTaskRequest, TaskGeneration
from skyvern.forge.sdk.schemas.task_v2 import TaskV2Request
from skyvern.forge.sdk.schemas.tasks import (
@@ -535,18 +536,21 @@ async def create_workflow(
include_in_schema=False,
)
async def create_workflow_from_prompt(
data: TaskV2Request,
data: CreateFromPromptRequest,
organization: Organization = Depends(org_auth_service.get_current_org),
x_max_iterations_override: Annotated[int | str | None, Header()] = None,
x_max_steps_override: Annotated[int | str | None, Header()] = None,
) -> dict[str, Any]:
task_version = data.task_version or "v2"
request = data.request
if x_max_iterations_override or x_max_steps_override:
LOG.info(
"Overriding max steps for workflow-from-prompt",
max_iterations_override=x_max_iterations_override,
max_steps_override=x_max_steps_override,
)
await PermissionCheckerFactory.get_instance().check(organization, browser_session_id=data.browser_session_id)
await PermissionCheckerFactory.get_instance().check(organization, browser_session_id=request.browser_session_id)
if isinstance(x_max_iterations_override, str):
try:
@@ -559,21 +563,23 @@ async def create_workflow_from_prompt(
x_max_steps_override = int(x_max_steps_override)
except ValueError:
x_max_steps_override = None
try:
workflow = await app.WORKFLOW_SERVICE.create_workflow_from_prompt(
organization=organization,
user_prompt=data.user_prompt,
totp_identifier=data.totp_identifier,
totp_verification_url=data.totp_verification_url,
webhook_callback_url=data.webhook_callback_url,
proxy_location=data.proxy_location,
max_screenshot_scrolling_times=data.max_screenshot_scrolls,
extra_http_headers=data.extra_http_headers,
user_prompt=request.user_prompt,
totp_identifier=request.totp_identifier,
totp_verification_url=request.totp_verification_url,
webhook_callback_url=request.webhook_callback_url,
proxy_location=request.proxy_location,
max_screenshot_scrolling_times=request.max_screenshot_scrolls,
extra_http_headers=request.extra_http_headers,
max_iterations=x_max_iterations_override,
max_steps=x_max_steps_override,
status=WorkflowStatus.published if data.publish_workflow else WorkflowStatus.auto_generated,
run_with=data.run_with,
ai_fallback=data.ai_fallback,
status=WorkflowStatus.published if request.publish_workflow else WorkflowStatus.auto_generated,
run_with=request.run_with,
ai_fallback=request.ai_fallback if request.ai_fallback is not None else True,
task_version=task_version,
)
except Exception as e:
LOG.error("Failed to create workflow from prompt", exc_info=True, organization_id=organization.organization_id)