SDK: file uploading (public url only) (#3867)

This commit is contained in:
Stanislav Novosad
2025-11-07 15:21:40 -07:00
committed by GitHub
parent 581d6e5332
commit d1d0c9414b
14 changed files with 379 additions and 12 deletions

View File

@@ -6,6 +6,7 @@ from fastapi import Depends, HTTPException, status
from skyvern.core.script_generations.real_skyvern_page_ai import RealSkyvernPageAi
from skyvern.core.script_generations.script_skyvern_page import ScriptSkyvernPage
from skyvern.forge import app
from skyvern.forge.sdk.api.files import validate_download_url
from skyvern.forge.sdk.core import skyvern_context
from skyvern.forge.sdk.core.skyvern_context import SkyvernContext
from skyvern.forge.sdk.routes.routers import base_router
@@ -95,8 +96,8 @@ async def run_sdk_action(
task = await app.DATABASE.create_task(
organization_id=organization_id,
url=action_request.url,
navigation_goal=action.intention,
navigation_payload=action.data,
navigation_goal=action.get_navigation_goal(),
navigation_payload=action.get_navigation_payload(),
data_extraction_goal=None,
title=f"SDK Action Task: {action_request.action.type}",
workflow_run_id=workflow_run.workflow_run_id,
@@ -174,6 +175,16 @@ async def run_sdk_action(
data=action.data,
timeout=action.timeout,
)
elif action.type == "ai_upload_file":
if action.file_url and not validate_download_url(action.file_url):
raise HTTPException(status_code=400, detail="Unsupported file url")
result = await page_ai.ai_upload_file(
selector=action.selector,
files=action.file_url,
intention=action.intention,
data=action.data,
timeout=action.timeout,
)
elif action.type == "ai_act":
await page_ai.ai_act(
prompt=action.intention,