Skip to content

Commit 90154d6

Browse files
MarcelSSouzastanislaw89wintonzhengLawyZhengjomido
authored
Updating (#6)
* Reapply: Separate cloud dependencies in pyproject.toml (Skyvern-AI#3779) (Skyvern-AI#3781) * update skyvern client (Skyvern-AI#3733) * Make PostHog async (Skyvern-AI#3786) * prepend scheme to login endpoint url (Skyvern-AI#3787) * do not use critical log unless it's really critical (Skyvern-AI#3778) * BE portion of seamless clipboard transfer in browser stream (Skyvern-AI#3788) * Fix broken SkyvernEnvironment in SDK (Skyvern-AI#3789) * TaskV2: Ask AI if relocation is needed based on current url as the first step (Skyvern-AI#3761) * Webhook Replay Test URL (Skyvern-AI#3769) Co-authored-by: Shuchang Zheng <wintonzheng0325@gmail.com> * Store user_url in initialize_task_v2 (Skyvern-AI#3791) * Store empty user_url as None in initialize_task_v2 (Skyvern-AI#3793) * upgrade precommit configurations (Skyvern-AI#3794) * handle NONE type in http response (Skyvern-AI#3795) * prepend url schema in skyvern page goto (Skyvern-AI#3796) * support new tab magic link logic (Skyvern-AI#3797) * Browser streaming: add org token to CDP connection header (Skyvern-AI#3792) * FE portion of seamless clipboard transfer in browser stream (Skyvern-AI#3799) * backend - add 'paused' as a workflow run status (Skyvern-AI#3800) * Skyvern 0.2.18 (Skyvern-AI#3784) * Refactoring: merge WorkflowParameterEditPanel and WorkflowParameterAddPanel (Skyvern-AI#3750) * Update custom domain URL format in docs.yml (Skyvern-AI#3801) * Wait time optimization xp (Skyvern-AI#3802) * set context.step_id and context.task_id at the beginning of execute_step and unset at the end + auto log step_id & task_id (Skyvern-AI#3803) * Generate Fern TypeSscript SDK (Skyvern-AI#3785) * chore: remove `x-api-key` auth scheme (Skyvern-AI#3805) Co-authored-by: Stanislav Novosad <stas@skyvern.com> * Release 0.2.19: Update Fern TS SDK (Skyvern-AI#3807) * fix script gen asyncio create_task bug (Skyvern-AI#3798) * Backend: implement InteractionBlock (Skyvern-AI#3810) * fix SelectItem value for Run With in start node workflow settings (Skyvern-AI#3774) * fix reload action (Skyvern-AI#3811) * add log attrs for failed emails (Skyvern-AI#3812) * ensure disable_cache saves for v2 task block (Skyvern-AI#3813) * fix settings in email api (Skyvern-AI#3814) * get task v2 block disable_cache value back (Skyvern-AI#3815) * point flash and flash lite to stable (Skyvern-AI#3816) * fix send email api (Skyvern-AI#3818) * FE implementation of InteractionNode (Skyvern-AI#3821) * TypeScript SDK: building automatically via workflow (Skyvern-AI#3820) * Update API specifications with fern api update (Skyvern-AI#3819) Co-authored-by: github-actions <github-actions@github.com> * get workflow runs by ids (Skyvern-AI#3824) * Jon/backend hitl buffs (Skyvern-AI#3826) * Extract SkyvernPageAi from SkyvernPage (Skyvern-AI#3825) * make jinja rendering in blocks more strict (Skyvern-AI#3827) * various hitl buffs (Skyvern-AI#3828) * Fern: regenerated Python SDK (Skyvern-AI#3829) * BE: allow workflow run UI to show browser stream if workflow run has one (Skyvern-AI#3834) * make templating strictness easy to switch between (Skyvern-AI#3835) * FE: allow workflow run UI to show browser stream if workflow run has one (Skyvern-AI#3838) * Cleanup ENABLE_TASKV2_METADATA_CURRENT_URL_VALIDATION experiment (Skyvern-AI#3836) * Fern: add TypeScript code examples (Skyvern-AI#3839) * Fern: generated SDK post processing (Skyvern-AI#3840) * not try selectable input for otp or secret input (Skyvern-AI#3843) * skip msedge download hub page (Skyvern-AI#3844) * mark readonly element as interactable (Skyvern-AI#3845) * label workflow failure reason by status (Skyvern-AI#3830) * Update API specifications with fern api update (Skyvern-AI#3842) Co-authored-by: github-actions <github-actions@github.com> * make templating lax again (Skyvern-AI#3846) * making gpt5 models have temp 1 (Skyvern-AI#3849) * Release v0.2.21 (Skyvern-AI#3848) * Log response status in request_logging (Skyvern-AI#3747) * SDK: support actions skeleton (Skyvern-AI#3817) Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * automatically parse content from totp url (Skyvern-AI#3852) * set up xp for using cheaper model for verication result (Skyvern-AI#3853) * Fix z-indexing issue for timeline/browser stream in debugger view (Skyvern-AI#3854) * set workflow status to 'published' when a user saves a workflow (Skyvern-AI#3855) * Use lazy imports in __init__.py (Skyvern-AI#3847) * Add GET /v1/credentials/totp to list recent 2FA codes per org (Skyvern-AI#3770) * removing laminar (Skyvern-AI#3858) * revert Skyvern-AI#2154 - fix complete action bug (Skyvern-AI#3859) * Update `Copy to cURL` buttons to reference the new Runs API spec (Skyvern-AI#3765) Co-authored-by: Shuchang Zheng <wintonzheng0325@gmail.com> * OS-level workflow run alert (w sound) on status change (Skyvern-AI#3862) * add notification sound for workflow runs (Skyvern-AI#3863) * SDK: support select_option and extract (Skyvern-AI#3850) * ensure recordings show after browser session ends (Skyvern-AI#3864) * ensure stream continues when switching between stream and recordings (Skyvern-AI#3865) * connect prompt to ai click, ai input and ai select (Skyvern-AI#3868) * SDK: support more playwright features (Skyvern-AI#3866) * Cleanup unused dependencies (Skyvern-AI#3872) * update uv lock (Skyvern-AI#3860) * SDK: rename SkyvernEnvironment (Skyvern-AI#3870) * Improve LLM error message when LLM is down (Skyvern-AI#3874) * parallel check user goal xp (Skyvern-AI#3873) * increase wait time to load auto completion options (Skyvern-AI#3876) * add workflow_run_id & workflow_run_block_id to script_blocks table (Skyvern-AI#3879) * fix pbs download file bug (Skyvern-AI#3880) * Coalesce the Validation Block and the new Human Interaction Block (Skyvern-AI#3882) * Support None/Invalid selector in ai_input_text (Skyvern-AI#3883) * SDK: auto-start server in local mode (Skyvern-AI#3869) * Support None/Invalid selector in ai_upload_file (Skyvern-AI#3884) * refactor webhook signature (Skyvern-AI#3889) * Add JSON to code block (Skyvern-AI#3885) Co-authored-by: Suchintan Singh <suchintan@skyvern.com> * Add marc GH Info to sync-skyvern-cloud yml (Skyvern-AI#3886) Co-authored-by: Suchintan <suchintan@users.noreply.github.com> * add ClickContext to support click action ai="fallback" in generated code (Skyvern-AI#3892) * fix task v1 rerun shell command (Skyvern-AI#3893) * Clean up Azure migration (Skyvern-AI#3895) Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com> * add run_with & ai_fallback to workflow run status update logs (Skyvern-AI#3896) * SDK: Support AI act feature (Skyvern-AI#3888) * Code gen: Rename 'intention' -> 'prompt' (Skyvern-AI#3900) Co-authored-by: Shuchang Zheng <wintonzheng0325@gmail.com> * Backend: unified /runs URL (Skyvern-AI#3898) * add workflow_run_id and workflow_run_block_id in create/update script_blocks code (Skyvern-AI#3904) * [SKY-6973] [1/3] Browser Profiles - database and s3 storage layer (Skyvern-AI#3899) * Update API specifications with fern api update (Skyvern-AI#3903) Co-authored-by: github-actions <github-actions@github.com> * fix totp call sign (Skyvern-AI#3907) * cache invalidation update - only delete cached code for impacted block and blocks after the impacted (Skyvern-AI#3908) * clear workflow_run_failure_reason in reset workflow run logic (Skyvern-AI#3909) * Refactor script gen with block level code cache (Skyvern-AI#3910) * Frontend: unified /runs URL (Skyvern-AI#3912) * Folders, Persistent Import Progress Tracking & UX Enhancements (Skyvern-AI#3841) Co-authored-by: Jonathan Dobson <jon.m.dobson@gmail.com> * revert back to old run URL for workflows (Skyvern-AI#3913) * Log page urls near MissingBrowserStatePage (Skyvern-AI#3901) * Add 'value' to data (navigation payload) in AI prompts (Skyvern-AI#3902) * various Validation Block buffs (Skyvern-AI#3919) * [SKY-6974] Browser Profiles [2/3] Marc/backend browser session profiles (Skyvern-AI#3923) * Update API specifications with fern api update (Skyvern-AI#3922) Co-authored-by: github-actions <github-actions@github.com> * fix diagnostics button clicks (Skyvern-AI#3926) * always log ip and arn in the pbs logs (Skyvern-AI#3927) * Various small SDK improvements (Skyvern-AI#3916) * improvements for folders and parameters (Skyvern-AI#3918) Co-authored-by: Jonathan Dobson <jon.m.dobson@gmail.com> * Extract ScriptSkyvernPage from SkyvernPage (Skyvern-AI#3920) * Regenerate Fern Python SDK (Skyvern-AI#3928) * Make Status404 page inline (Skyvern-AI#3929) * Jon/use new runs urls (Skyvern-AI#3930) * turn off new run urls (Skyvern-AI#3931) * Add feature flag to skip screenshot annotations (Skyvern-AI#3932) * Pedro/fix explicit caching vertex api (Skyvern-AI#3933) * Speed optimizations: Economy element tree and TOTP context parsing skip (Skyvern-AI#3936) * pass context to multi select agent (Skyvern-AI#3937) * use new run URLs, attempt iii (Skyvern-AI#3938) * Two Human Interaction Block Fixes (Skyvern-AI#3940) * Credentials page UX improvement (Skyvern-AI#3941) * SkyvernBrowserPage extends SkyvernPage (Skyvern-AI#3921) * Release TS/Python SDK 2.22 (Skyvern-AI#3942) * Fix ts-sdk-release.yml (Skyvern-AI#3943) * SDK: file uploading (public url only) (Skyvern-AI#3867) * Flatten timeline so forloops and taskv2 blocks play nice (Skyvern-AI#3946) * Add termination-aware complete verification experiment (SKY-6884) (Skyvern-AI#3948) * Update API specifications with fern api update (Skyvern-AI#3950) Co-authored-by: github-actions <github-actions@github.com> * add date_format context for input and select action context, which will be used as context for caching (Skyvern-AI#3951) * improve scrolling into view (Skyvern-AI#3952) * Make SkyvernPage extend Playwright (Skyvern-AI#3934) * Update API specifications with fern api update (Skyvern-AI#3954) Co-authored-by: github-actions <github-actions@github.com> * Publish npm package using Trusted Publisher (Skyvern-AI#3953) * SDK: more logs & small fixes (Skyvern-AI#3945) * SDK: embedded server mode (Skyvern-AI#3949) * Support Google Cloud Workload Identity for vertex models (Skyvern-AI#3956) * support angular click event (Skyvern-AI#3960) * fix empty totp generated (Skyvern-AI#3961) * fix upload file issue (Skyvern-AI#3962) * SDK: Disable browser logs (Skyvern-AI#3958) * Expose 'from skyvern import SkyvernSdk' import (Skyvern-AI#3957) * Simplify SkyvernPage _decorate_call (Skyvern-AI#3959) * fix get_workflow_for_workflow_run query; filter on wr org, not wf org (Skyvern-AI#3963) * add remove all unique ids (Skyvern-AI#3964) * allow user-based generic prompt improval [sic] (Skyvern-AI#3965) * Fix 'multiple values for keyword argument 'prompt'' (Skyvern-AI#3966) * SDK: improve IDE highlighting/type support (Skyvern-AI#3967) * Release v0.2.23 (Skyvern-AI#3969) * Code generation improvement for select_option action - use label if value is not present (Skyvern-AI#3973) * fern should point to the staging openapi.json schema (Skyvern-AI#3972) * add some UI for prompt improval [sic] (Skyvern-AI#3974) * click context bug: clicking dropdown menu should be considered as a multi option click (Skyvern-AI#3975) * add log context for No browser state found when creating workflow_run_block (Skyvern-AI#3977) * Show active workflow title in parameters ui (Skyvern-AI#3978) * Pedro/vertex cache minimal fix (Skyvern-AI#3981) * Merge SkyvernSdk and Skyvern extending Fern client (Skyvern-AI#3987) Co-authored-by: Shuchang Zheng <wintonzheng0325@gmail.com> * Browser Profile CDP Fix (Skyvern-AI#3990) * support non url task block (Skyvern-AI#3983) * SDK: fixing 422 error for empty requests (Skyvern-AI#3968) * Parameter search & inline display for Past Runs and Run History pages (Skyvern-AI#3985) * parallelize goal check within task (Skyvern-AI#3997) * fix error reason when page is no data (Skyvern-AI#3998) * Release 1.0.0 (Skyvern-AI#4003) * Update API specifications with fern api update (Skyvern-AI#4002) Co-authored-by: github-actions <github-actions@github.com> * validate task_id, workflow_id, workflow_run_id for send_totp_code endpoint before llm prompt to parse totp prompt to fail early (Skyvern-AI#4004) * fix complete status update issue (Skyvern-AI#4006) * execute_task_webhook uses the latest non canceled step (Skyvern-AI#4007) * delete devsy (Skyvern-AI#4008) * support download by select action (Skyvern-AI#4009) * cleaned up fallback router (Skyvern-AI#4010) * get_workflows_depending_on db client code (Skyvern-AI#4011) * [Webeye] Fix JS loader encoding for domUtils.js (Skyvern-AI#3991) Co-authored-by: Shuchang Zheng <wintonzheng0325@gmail.com> * respect workflow and block model overrides (Skyvern-AI#4013) * remove cache actions (Skyvern-AI#4015) * fix log typo (Skyvern-AI#4016) * parse file extension from url query (Skyvern-AI#4017) * support to scrape on the chrome error page (Skyvern-AI#4018) * add improve prompt button to task block and action block (Skyvern-AI#4020) * fix: ensure parallel verification runs data extraction (Skyvern-AI#4014) * Expand Proxy locations to current list of all Massive supported countries (Skyvern-AI#4022) * Create a carousel to move Cookbook Templates onto Discover Page (Skyvern-AI#4023) * use Kaitlyn's prompt for user prompt improvement (Skyvern-AI#4026) * add vertex gemini 3 pro config (Skyvern-AI#4025) * Initialize app at runtime instead of import time (Skyvern-AI#4024) * fix the ai click context missing problem (Skyvern-AI#4029) * Bill 2.5 cents (50%) for cached steps (Skyvern-AI#4030) * Browser streaming: reorganize & rename (Skyvern-AI#4033) * use value of the optiona when the content is empty (Skyvern-AI#4035) * fix cua engine (Skyvern-AI#4036) * db: add depends_on_workflow_run_id index (Skyvern-AI#4037) * changed naming cred params when added to login block (Skyvern-AI#4034) * allow webhook-generated 2fa to display on 2fa creds - for customers with many creds (Skyvern-AI#4040) * Fix missing app initialization in `skyvern init` (Skyvern-AI#4038) * use explicit vertex credentials for cache manager (Skyvern-AI#4039) * scope termination-aware verification to file download fallback (Skyvern-AI#4043) * Enhance Windows Compatibility with Event Loop Policy and Path Resolution (Skyvern-AI#3986) Co-authored-by: Suchintan <suchintan@users.noreply.github.com> Co-authored-by: Shuchang Zheng <wintonzheng0325@gmail.com> Co-authored-by: Stanislav Novosad <stas@skyvern.com> * fix schema validation (Skyvern-AI#4044) * optimize bool type value parsing in domutils (Skyvern-AI#4046) * Revert "allow webhook-generated 2fa to display on 2fa creds - for customers with many creds" (Skyvern-AI#4047) * improve validations on parameter run ui (Skyvern-AI#4000) Co-authored-by: Jonathan Dobson <jon.m.dobson@gmail.com> * use different prompt name for click completion check (Skyvern-AI#4048) * Remove ddtrace dependency from OSS (Skyvern-AI#4049) * restore vertex cache credentials (Skyvern-AI#4050) * update browser profile setting (Skyvern-AI#4054) * fix schema validate (Skyvern-AI#4055) * handle list-wrapped llm responses (Skyvern-AI#4056) * raise exception when non dict response (Skyvern-AI#4057) * improve caching reliability by add retries for scrape_page (Skyvern-AI#4058) * always use refreshed scrap page in cache (Skyvern-AI#4059) * Update API specifications with fern api update (Skyvern-AI#4052) Co-authored-by: github-actions <github-actions@github.com> * backend changes for magic wand button (Skyvern-AI#4051) * Magic Wand Button to improve prompts in all blocks (Skyvern-AI#4060) * Allow running Skyvern on newer DB version when explicitly requested (Skyvern-AI#3955) * Browser streaming refactor (Skyvern-AI#4064) * Respect disable goal check in parallel flow (Skyvern-AI#4021) * allow Show Code controls to render on OSS builds without auth (Skyvern-AI#4065) * Add workflow definition version (Skyvern-AI#4066) * workflow definition version transition for skip if and future DAG support (Skyvern-AI#4012) * SDK: Prompt-based locator (Skyvern-AI#4027) * allow extract result to be non dict (Skyvern-AI#4069) * Browser Stream Refactor Fast Follow (Skyvern-AI#4070) * avoid unnecessary code regeneration when the workflow has non task based blocks (Skyvern-AI#4071) * Pedro/thinking budget tests (Skyvern-AI#4072) * cache task run uses block level model override when ai fallback happens (Skyvern-AI#4073) * lower default page loading time from 90 seconds to 60 seconds (Skyvern-AI#4076) * cache replay bug - if click locator is not found, fallback to us llm to find the locator (Skyvern-AI#4079) * do not keep regenerating scripts if already cached (Skyvern-AI#4080) * v1.0.1 (Skyvern-AI#4081) * Fix TOTP Code Sort (Skyvern-AI#4082) * Revert "scope termination-aware verification to file download fallback" (Skyvern-AI#4083) * rollout termination aware exp for everything (Skyvern-AI#4084) * Update API specifications with fern api update (Skyvern-AI#4085) Co-authored-by: github-actions <github-actions@github.com> * fix(llm): prevent cached_content from being passed to non-Gemini models (Skyvern-AI#4086) * clear key when run sequnetial run is off (Skyvern-AI#4088) * prevent cached_content leak to non-extract prompts (Skyvern-AI#4089) * skip stderr parsing when list bitwarden items (Skyvern-AI#4090) * fix the script deletion problem when the workflow runs with agent and already has a cached script (Skyvern-AI#4092) * Browser Exfiltration (Skyvern-AI#4093) * Optimize get_workflow_scripts_by_cache_key_value SQL (Skyvern-AI#4095) * Browser streaming: add more verification checks for browser session (Skyvern-AI#4094) * Add a RadialMenu component (Skyvern-AI#4096) --------- Co-authored-by: Stanislav Novosad <stas@skyvern.com> Co-authored-by: Shuchang Zheng <wintonzheng0325@gmail.com> Co-authored-by: LawyZheng <lawyzheng1106@gmail.com> Co-authored-by: Jonathan Dobson <jon.m.dobson@gmail.com> Co-authored-by: Marc Kelechava <marc.kelechava@gmail.com> Co-authored-by: Suchintan <suchintan@users.noreply.github.com> Co-authored-by: pedrohsdb <pedro@skyvern.com> Co-authored-by: Deep Singhvi <deep@buildwithfern.com> Co-authored-by: github-actions <github-actions@github.com> Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> Co-authored-by: Suchintan Singh <suchintan@skyvern.com> Co-authored-by: Marc Kelechava <marc@skyvern.com> Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com> Co-authored-by: Celal Zamanoglu <95054566+celalzamanoglu@users.noreply.github.com> Co-authored-by: kerry <66009926+gimseonjin@users.noreply.github.com> Co-authored-by: Mohamed Khalil <69445107+mohamedmamdouh22@users.noreply.github.com>
1 parent f9814bd commit 90154d6

File tree

1,116 files changed

+127032
-57520
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

1,116 files changed

+127032
-57520
lines changed

.env.example

Lines changed: 57 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ OPENAI_API_KEY=""
1313

1414
# ENABLE_ANTHROPIC: Set to true to enable Anthropic as a language model provider.
1515
ENABLE_ANTHROPIC=false
16-
# ANTHROPIC_API_KEY: Your Anthropic API key for accessing models like Claude-3.
16+
# ANTHROPIC_API_KEY: Your Anthropic API key for accessing models like Claude-3, Claude-4, and Claude-4.5.
1717
ANTHROPIC_API_KEY=""
1818

1919
# ENABLE_AZURE: Set to true to enable Azure as a language model provider.
@@ -33,9 +33,28 @@ AZURE_GPT4O_MINI_API_KEY=""
3333
AZURE_GPT4O_MINI_API_BASE=""
3434
AZURE_GPT4O_MINI_API_VERSION=""
3535

36+
# Azure GPT-5 Model Configurations
37+
ENABLE_AZURE_GPT5=false
38+
AZURE_GPT5_DEPLOYMENT="gpt-5"
39+
AZURE_GPT5_API_KEY=""
40+
AZURE_GPT5_API_BASE=""
41+
AZURE_GPT5_API_VERSION="2025-01-01-preview"
42+
43+
ENABLE_AZURE_GPT5_MINI=false
44+
AZURE_GPT5_MINI_DEPLOYMENT="gpt-5-mini"
45+
AZURE_GPT5_MINI_API_KEY=""
46+
AZURE_GPT5_MINI_API_BASE=""
47+
AZURE_GPT5_MINI_API_VERSION="2025-01-01-preview"
48+
49+
ENABLE_AZURE_GPT5_NANO=false
50+
AZURE_GPT5_NANO_DEPLOYMENT="gpt-5-nano"
51+
AZURE_GPT5_NANO_API_KEY=""
52+
AZURE_GPT5_NANO_API_BASE=""
53+
AZURE_GPT5_NANO_API_VERSION="2025-01-01-preview"
54+
3655
# ENABLE_GEMINI: Set to true to enable Gemini as a language model provider.
3756
ENABLE_GEMINI=false
38-
# GEMINI_API_KEY: Your Gemini API key for accessing models like GPT-4.
57+
# GEMINI_API_KEY: Your Gemini API key for accessing models like Gemini 2.5 Pro.
3958
GEMINI_API_KEY=""
4059

4160
# ENABLE_NOVITA: Set to true to enable Novita AI as a language model provider.
@@ -51,7 +70,10 @@ VOLCENGINE_API_KEY=""
5170
VOLCENGINE_API_BASE="https://ark.cn-beijing.volces.com/api/v3"
5271

5372
# LLM_KEY: The chosen language model to use. This should be one of the models
54-
# provided by the enabled LLM providers (e.g., OPENAI_GPT4_TURBO, OPENAI_GPT4V, ANTHROPIC_CLAUDE3, AZURE_OPENAI_GPT4V).
73+
# provided by the enabled LLM providers (e.g., OPENAI_GPT5, OPENAI_GPT5_MINI, OPENAI_GPT5_NANO,
74+
# AZURE_OPENAI_GPT5, AZURE_OPENAI_GPT5_MINI, AZURE_OPENAI_GPT5_NANO, ANTHROPIC_CLAUDE4.5_SONNET,
75+
# ANTHROPIC_CLAUDE4_SONNET, ANTHROPIC_CLAUDE3.7_SONNET, OPENAI_GPT4_TURBO,
76+
# OPENAI_GPT4V, ANTHROPIC_CLAUDE3, AZURE_OPENAI_GPT4V).
5577
LLM_KEY=""
5678
# a cheaper LLM providers to help finishing some small tasks, like custom selection or svg conversion. If empty, it will be the same as LLM_KEY
5779
SECONDARY_LLM_KEY=""
@@ -75,6 +97,9 @@ MAX_STEPS_PER_RUN=50
7597
LOG_LEVEL=INFO
7698
# DATABASE_STRING: Database connection string.
7799
DATABASE_STRING="postgresql+psycopg://skyvern@localhost/skyvern"
100+
# If you are using Windows use this DATABASE_STRING.
101+
# DATABASE_STRING="postgresql+asyncpg://skyvern@localhost/skyvern"
102+
78103
# PORT: Port to run the agent on.
79104
PORT=8000
80105

@@ -87,4 +112,32 @@ ANALYTICS_ID="anonymous"
87112
OP_SERVICE_ACCOUNT_TOKEN=""
88113

89114
# Enable recording skyvern logs as artifacts
90-
ENABLE_LOG_ARTIFACTS=false
115+
ENABLE_LOG_ARTIFACTS=false
116+
117+
# =============================================================================
118+
# SKYVERN BITWARDEN CONFIGURATION
119+
# =============================================================================
120+
# Your organization ID in official Bitwarden server or vaultwarden (if using organizations)
121+
SKYVERN_AUTH_BITWARDEN_ORGANIZATION_ID=your-org-id-here
122+
123+
# These should match the values for bitwarden cli server for consistency
124+
SKYVERN_AUTH_BITWARDEN_MASTER_PASSWORD=your-master-password-here
125+
SKYVERN_AUTH_BITWARDEN_CLIENT_ID=user.your-client-id-here
126+
SKYVERN_AUTH_BITWARDEN_CLIENT_SECRET=your-client-secret-here
127+
128+
# The CLI server will run on localhost:8002 by default
129+
# Optional, because by default Bitwarden is used directly
130+
# BITWARDEN_SERVER=http://localhost
131+
# BITWARDEN_SERVER_PORT=8002
132+
133+
# =============================================================================
134+
# OPTIONAL: ADDITIONAL SKYVERN CONFIGURATION
135+
# =============================================================================
136+
# If you need to override the default Bitwarden server settings in Skyvern
137+
# These will be automatically set by the Docker Compose, but you can override them here
138+
139+
# Maximum number of retries for Bitwarden operations
140+
# BITWARDEN_MAX_RETRIES=3
141+
142+
# Timeout in seconds for Bitwarden operations
143+
# BITWARDEN_TIMEOUT_SECONDS=60

.gitattributes

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
# Set default behavior to automatically normalize line endings
2+
* text=auto
3+
4+
# Force Unix LF line endings for shell scripts
5+
*.sh text eol=lf
6+
bitwarden-cli-server/entrypoint.sh text eol=lf
7+
8+
# Force Unix LF line endings for Python files
9+
*.py text eol=lf
10+
11+
# Force Unix LF line endings for Docker files
12+
Dockerfile text eol=lf
13+
*.dockerfile text eol=lf
14+
15+
# Force Unix LF line endings for YAML and config files
16+
*.yml text eol=lf
17+
*.yaml text eol=lf
18+
*.json text eol=lf
19+
*.md text eol=lf
20+
21+
# Binary files
22+
*.png binary
23+
*.jpg binary
24+
*.jpeg binary
25+
*.gif binary
26+
*.ico binary
27+
*.pdf binary

.github/sync.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@ Skyvern-AI/skyvern-cloud:
44
deleteOrphaned: true
55
- source: pyproject.toml
66
dest: pyproject.toml
7-
- source: poetry.lock
8-
dest: poetry.lock
7+
- source: uv.lock
8+
dest: uv.lock
99
- source: setup.sh
1010
dest: setup.sh
1111
- source: .env.example

.github/workflows/ci.yml

Lines changed: 39 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -32,55 +32,50 @@ jobs:
3232
- uses: actions/checkout@v3
3333
# If you wanted to use multiple Python versions, you'd have specify a matrix in the job and
3434
# reference the matrixe python version here.
35-
- uses: actions/setup-python@v4
35+
- uses: actions/setup-python@v6
3636
with:
3737
python-version: "3.11"
38-
# Cache the installation of Poetry itself, e.g. the next step. This prevents the workflow
39-
# from installing Poetry every time, which can be slow. Note the use of the Poetry version
40-
# number in the cache key, and the "-0" suffix: this allows you to invalidate the cache
41-
# manually if/when you want to upgrade Poetry, or if something goes wrong. This could be
42-
# mildly cleaner by using an environment variable, but I don't really care.
43-
- name: cache poetry install
44-
uses: actions/cache@v3
38+
# Install uv (fast, single-file binary)
39+
- name: Install uv
40+
run: |
41+
curl -LsSf https://astral.sh/uv/install.sh | sh
42+
echo "$HOME/.local/bin" >> $GITHUB_PATH
43+
# Cache uv's download/resolve cache to speed up CI (optional but nice)
44+
- name: Cache uv global cache
45+
uses: actions/cache@v4
4546
with:
46-
path: ~/.local
47-
key: poetry-1.7.1
48-
# Install Poetry. You could do this manually, or there are several actions that do this.
49-
# `snok/install-poetry` seems to be minimal yet complete, and really just calls out to
50-
# Poetry's default install script, which feels correct. I pin the Poetry version here
51-
# because Poetry does occasionally change APIs between versions and I don't want my
52-
# actions to break if it does.
53-
#
54-
# The key configuration value here is `virtualenvs-in-project: true`: this creates the
55-
# venv as a `.venv` in your testing directory, which allows the next step to easily
56-
# cache it.
57-
- uses: snok/install-poetry@v1
58-
with:
59-
version: 1.7.1
60-
virtualenvs-create: true
61-
virtualenvs-in-project: true
62-
# Cache your dependencies (i.e. all the stuff in your `pyproject.toml`). Note the cache
63-
# key: if you're using multiple Python versions, or multiple OSes, you'd need to include
64-
# them in the cache key. I'm not, so it can be simple and just depend on the poetry.lock.
65-
- name: cache deps
66-
id: cache-deps
67-
uses: actions/cache@v3
47+
path: ~/.cache/uv
48+
key: uv-cache-${{ runner.os }}-${{ hashFiles('**/pyproject.toml', '**/uv.lock') }}
49+
# Cache the project virtualenv (keyed by Python version + lockfile)
50+
- name: Cache venv
51+
id: cache-venv
52+
uses: actions/cache@v4
6853
with:
6954
path: .venv
70-
key: pydeps-${{ hashFiles('**/poetry.lock') }}
71-
# Install dependencies. `--no-root` means "install all dependencies but not the project
72-
# itself", which is what you want to avoid caching _your_ code. The `if` statement
73-
# ensures this only runs on a cache miss.
74-
- run: poetry install --no-interaction --no-root
75-
if: steps.cache-deps.outputs.cache-hit != 'true'
76-
# Now install _your_ project. This isn't necessary for many types of projects -- particularly
77-
# things like Django apps don't need this. But it's a good idea since it fully-exercises the
78-
# pyproject.toml and makes that if you add things like console-scripts at some point that
79-
# they'll be installed and working.
80-
- run: poetry install --no-interaction
55+
key: venv-${{ runner.os }}-py${{ steps.setup-python.outputs.python-version || '3.11' }}-${{ hashFiles('**/uv.lock') }}
56+
# Create/refresh the environment (installs main + dev groups)
57+
- name: Sync deps with uv
58+
if: steps.cache-venv.outputs.cache-hit != 'true'
59+
run: |
60+
uv lock
61+
uv sync --group dev
62+
# Ensure venv is current even on cache hit (cheap no-op if up to date)
63+
- name: Ensure environment is up to date
64+
if: steps.cache-venv.outputs.cache-hit == 'true'
65+
run: |
66+
uv sync --group dev
67+
- name: Set up Node.js
68+
uses: actions/setup-node@v4
69+
with:
70+
node-version-file: .nvmrc
71+
cache: npm
72+
cache-dependency-path: skyvern-frontend/package-lock.json
73+
- name: Install frontend dependencies
74+
working-directory: skyvern-frontend
75+
run: npm ci
8176
# Finally, run pre-commit.
8277
- name: Run all pre-commit hooks
83-
uses: pre-commit/action@v3.0.0
78+
run: uv run pre-commit run --all-files
8479
env:
8580
ENABLE_OPENAI: "true"
8681
OPENAI_API_KEY: "sk-dummy"
@@ -102,14 +97,14 @@ jobs:
10297
AZURE_GPT4O_MINI_API_VERSION: "dummy"
10398
AWS_REGION: "us-east-1"
10499
ENABLE_BEDROCK: "true"
105-
run: poetry run ./run_alembic_check.sh
100+
run: uv run ./run_alembic_check.sh
106101
- name: trigger tests
107102
env:
108103
ENABLE_OPENAI: "true"
109104
OPENAI_API_KEY: "sk-dummy"
110105
AWS_ACCESS_KEY_ID: "dummy"
111106
AWS_SECRET_ACCESS_KEY: "dummy"
112-
run: poetry run pytest
107+
run: uv run pytest
113108
fe-lint-build:
114109
name: Frontend Lint and Build
115110
runs-on: ubuntu-latest

.github/workflows/codeflash.yaml

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -22,22 +22,23 @@ jobs:
2222
with:
2323
fetch-depth: 0
2424
- name: Set up Python
25-
uses: actions/setup-python@v5
25+
uses: actions/setup-python@v6
2626
with:
2727
python-version: "3.11"
28-
- name: Install Project Dependencies
28+
- name: Install uv
2929
run: |
30-
python -m pip install --upgrade pip
31-
pip install poetry
32-
poetry install --all-extras
33-
poetry add codeflash
34-
- name: create test dir
30+
curl -LsSf https://astral.sh/uv/install.sh | sh
31+
echo "$HOME/.local/bin" >> $GITHUB_PATH
32+
- name: Sync project dependencies
3533
run: |
36-
mkdir -p codeflash-tests
37-
- name: Run Codeflash to optimize code
34+
uv sync --group dev
35+
- name: Install Codeflash into venv
3836
run: |
39-
poetry env use python
40-
poetry run codeflash
37+
uv pip install codeflash
38+
- name: Create test dir
39+
run: mkdir -p codeflash-tests
40+
- name: Run Codeflash to optimize code
41+
run: uv run codeflash
4142
- name: remove test dir
4243
run: |-
4344
rm -rf codeflash-tests

.github/workflows/n8n-ci.yml

Lines changed: 0 additions & 30 deletions
This file was deleted.

.github/workflows/sdk-release.yml

Lines changed: 29 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -45,58 +45,44 @@ jobs:
4545
uses: actions/checkout@v4
4646
# If you wanted to use multiple Python versions, you'd have specify a matrix in the job and
4747
# reference the matrixe python version here.
48-
- uses: actions/setup-python@v4
48+
- name: Setup Python
49+
id: setup-python
50+
uses: actions/setup-python@v6
4951
with:
5052
python-version: "3.11"
51-
# Cache the installation of Poetry itself, e.g. the next step. This prevents the workflow
52-
# from installing Poetry every time, which can be slow. Note the use of the Poetry version
53-
# number in the cache key, and the "-0" suffix: this allows you to invalidate the cache
54-
# manually if/when you want to upgrade Poetry, or if something goes wrong. This could be
55-
# mildly cleaner by using an environment variable, but I don't really care.
56-
- name: cache poetry install
57-
uses: actions/cache@v3
58-
with:
59-
path: ~/.local
60-
key: poetry-1.7.1
61-
# Install Poetry. You could do this manually, or there are several actions that do this.
62-
# `snok/install-poetry` seems to be minimal yet complete, and really just calls out to
63-
# Poetry's default install script, which feels correct. I pin the Poetry version here
64-
# because Poetry does occasionally change APIs between versions and I don't want my
65-
# actions to break if it does.
66-
#
67-
# The key configuration value here is `virtualenvs-in-project: true`: this creates the
68-
# venv as a `.venv` in your testing directory, which allows the next step to easily
69-
# cache it.
70-
- uses: snok/install-poetry@v1
53+
# Cache the installation of `uv` itself, e.g. the next step. This prevents the workflow
54+
# from installing `uv` every time, which can be slow.
55+
- name: Install uv
56+
run: |
57+
curl -LsSf https://astral.sh/uv/install.sh | sh
58+
echo "$HOME/.local/bin" >> $GITHUB_PATH
59+
# Cache uv's global cache (resolver/downloads) for speed
60+
- name: Cache uv cache
61+
uses: actions/cache@v4
7162
with:
72-
version: 1.7.1
73-
virtualenvs-create: true
74-
virtualenvs-in-project: true
75-
# Cache your dependencies (i.e. all the stuff in your `pyproject.toml`). Note the cache
76-
# key: if you're using multiple Python versions, or multiple OSes, you'd need to include
77-
# them in the cache key. I'm not, so it can be simple and just depend on the poetry.lock.
78-
- name: cache deps
79-
id: cache-deps
80-
uses: actions/cache@v3
63+
path: ~/.cache/uv
64+
key: uv-cache-${{ runner.os }}-${{ hashFiles('**/pyproject.toml', '**/uv.lock') }}
65+
# Cache the project venv (keyed by lockfile + Python)
66+
- name: Cache venv
67+
id: cache-venv
68+
uses: actions/cache@v4
8169
with:
8270
path: .venv
83-
key: pydeps-${{ hashFiles('**/poetry.lock') }}
84-
# Install dependencies. `--no-root` means "install all dependencies but not the project
85-
# itself", which is what you want to avoid caching _your_ code. The `if` statement
86-
# ensures this only runs on a cache miss.
87-
- run: poetry install --no-interaction --no-root
88-
if: steps.cache-deps.outputs.cache-hit != 'true'
89-
# Now install _your_ project. This isn't necessary for many types of projects -- particularly
90-
# things like Django apps don't need this. But it's a good idea since it fully-exercises the
91-
# pyproject.toml and makes that if you add things like console-scripts at some point that
92-
# they'll be installed and working.
93-
- run: poetry install --no-interaction
71+
key: venv-${{ runner.os }}-py${{ steps.setup-python.outputs.python-version || '3.11' }}-${{ hashFiles('**/uv.lock') }}
72+
# Create/refresh environment. We install dev deps to get twine/build.
73+
- name: Sync dependencies
74+
if: steps.cache-venv.outputs.cache-hit != 'true'
75+
run: |
76+
uv sync --group dev
77+
- name: Ensure environment is up to date (on cache hit)
78+
if: steps.cache-venv.outputs.cache-hit == 'true'
79+
run: uv sync --group dev
9480
- name: Clean dist directory
9581
run: rm -rf dist
9682
- name: Build Package
97-
run: poetry build
83+
run: uv build
9884
- name: Publish to PyPI
9985
env:
10086
TWINE_USERNAME: __token__
10187
TWINE_PASSWORD: ${{ secrets.PYPI_TOKEN }}
102-
run: poetry run twine upload --repository pypi dist/*
88+
run: uv run twine upload --repository pypi dist/*

0 commit comments

Comments
 (0)