Add Activepieces integration for workflow automation

- Add Activepieces fork with SmoothSchedule custom piece
- Create integrations app with Activepieces service layer
- Add embed token endpoint for iframe integration
- Create Automations page with embedded workflow builder
- Add sidebar visibility fix for embed mode
- Add list inactive customers endpoint to Public API
- Include SmoothSchedule triggers: event created/updated/cancelled
- Include SmoothSchedule actions: create/update/cancel events, list resources/services/customers

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
poduck
2025-12-18 22:59:37 -05:00
parent 9848268d34
commit 3aa7199503
16292 changed files with 1284892 additions and 4708 deletions

View File

@@ -0,0 +1,70 @@
{
"You can obtain your API key by navigating to [Settings](https://app.skyvern.com/settings).": "Du kannst deinen API-Schlüssel erhalten, indem du auf [Settings]navigierst (https://app.skyvern.com/settings).",
"Run Agent Task": "Agent-Aufgabe ausführen",
"Run Workflow": "Workflow ausführen",
"Cancel Run": "Ausführung abbrechen",
"Get Workflow/Task Run": "Workflow/Task Run abrufen",
"Find Workflow": "Workflow suchen",
"Custom API Call": "Eigener API-Aufruf",
"Runs task with specified prompt.": "Führt die Aufgabe mit der angegebenen Abfrage aus.",
"Runs the workflow.": "Führt den Workflow aus.",
"Cancels a workflow or or task run by ID.": "Kündigt einen Workflow oder eine Aufgabe ab, die mit ID ausgeführt wird.",
"Retrieves a workflow or task run by ID.": "Ruft einen Workflow oder eine Aufgabe ab, die von ID ausgeführt wird.",
"Finds workflow based on title.": "Findet Workflow basierend auf Titel.",
"Make a custom API call to a specific endpoint": "Einen benutzerdefinierten API-Aufruf an einen bestimmten Endpunkt machen",
"Prompt": "Prompt",
"URL": "URL",
"Engine": "Motor",
"Webhook Callback URL": "Webhook Callback URL",
"Proxy Location": "Proxy-Standort",
"Max Steps": "Max. Schritte",
"Data Extraction Schema": "Datenextraktions-Schema",
"Workflow": "Workflow",
"Workflow Run Title": "Workflowausführung-Titel",
"Workflow Params": "Workflow-Parameter",
"Workflow/Task Run ID": "Workflow/Task Run ID",
"Workflow Title": "Workflow-Titel",
"Method": "Methode",
"Headers": "Kopfzeilen",
"Query Parameters": "Abfrageparameter",
"Body": "Körper",
"Response is Binary ?": "Antwort ist binär?",
"No Error on Failure": "Kein Fehler bei Fehler",
"Timeout (in seconds)": "Timeout (in Sekunden)",
"The goal or task description for Skyvern to accomplish.": "Die Ziel- oder Aufgabenbeschreibung für Skyvern zu erreichen.",
"The starting URL for the task.": "Die Startadresse für die Aufgabe.",
"URL to send task status updates to after a run is finished.": "URL zum Senden von Aktualisierungen des Aufgaben-Status nach dem Ausführen eines Ablaufs.",
"Maximum number of steps the task can take. Task will fail if it exceeds this number.": "Maximale Anzahl von Schritten, die die Aufgabe durchführen kann. Aufgabe wird fehlschlagen, wenn sie diese Zahl übersteigt.",
"The schema for data to be extracted from the webpage.": "Das Schema, das Daten von der Webseite extrahiert werden sollen.",
"The title for this workflow run.": "Der Titel für diesen Workflow.",
"Authorization headers are injected automatically from your connection.": "Autorisierungs-Header werden automatisch von Ihrer Verbindung injiziert.",
"Enable for files like PDFs, images, etc..": "Aktivieren für Dateien wie PDFs, Bilder, etc..",
"Skyvern 1.0": "Skyvern 1.0",
"Skyvern 2.0": "Skyvern 2.0",
"OpenAI CUA": "OpenAI CUA",
"Anthropic CUA": "Anthropische CUA",
"Residential": "Wohngebiet",
"Spain": "Spanien",
"Ireland": "Irland",
"United Kingdom": "Großbritannien",
"India": "Indien",
"Japan": "Japan",
"France": "Frankreich",
"Germany": "Deutschland",
"New Zealand": "Neuseeland",
"South Africa": "Südafrika",
"Argentina": "Argentinien",
"ISP Proxy": "ISP-Proxy",
"California (US)": "Kalifornien (USA)",
"New York (US)": "New York (USA)",
"Texas (US)": "Texas (USA)",
"Florida (US)": "Florida (USA)",
"Washington (US)": "Washington (USA)",
"No Proxy": "Kein Proxy",
"GET": "ERHALTEN",
"POST": "POST",
"PATCH": "PATCH",
"PUT": "PUT",
"DELETE": "LÖSCHEN",
"HEAD": "HEAD"
}

View File

@@ -0,0 +1,70 @@
{
"You can obtain your API key by navigating to [Settings](https://app.skyvern.com/settings).": "Puedes obtener tu clave API navegando a [Settings](https://app.skyvern.com/settings).",
"Run Agent Task": "Ejecutar tarea de agente",
"Run Workflow": "Ejecutar workkflow",
"Cancel Run": "Cancelar Run",
"Get Workflow/Task Run": "Obtener workflow/Task Run",
"Find Workflow": "Buscar flujo de trabajo",
"Custom API Call": "Llamada API personalizada",
"Runs task with specified prompt.": "Ejecuta la tarea con la petición especificada.",
"Runs the workflow.": "Ejecuta el flujo de trabajo.",
"Cancels a workflow or or task run by ID.": "Cancela un flujo de trabajo o una tarea ejecutada por el ID.",
"Retrieves a workflow or task run by ID.": "Recuperar un flujo de trabajo o una tarea ejecutada por el ID.",
"Finds workflow based on title.": "Encuentra el flujo de trabajo basado en el título.",
"Make a custom API call to a specific endpoint": "Hacer una llamada API personalizada a un extremo específico",
"Prompt": "Petición",
"URL": "URL",
"Engine": "Motor",
"Webhook Callback URL": "Webhook Callback URL",
"Proxy Location": "Ubicación del proxy",
"Max Steps": "Pasos máximos",
"Data Extraction Schema": "Esquema de extracción de datos",
"Workflow": "Flujo trabajo",
"Workflow Run Title": "Título de ejecución de flujo de trabajo",
"Workflow Params": "Parámetros de flujo de trabajo",
"Workflow/Task Run ID": "Flujo de trabajo/Tarea Ejecutar ID",
"Workflow Title": "Título de flujo de trabajo",
"Method": "Método",
"Headers": "Encabezados",
"Query Parameters": "Parámetros de consulta",
"Body": "Cuerpo",
"Response is Binary ?": "¿Respuesta es binaria?",
"No Error on Failure": "No hay ningún error en fallo",
"Timeout (in seconds)": "Tiempo de espera (en segundos)",
"The goal or task description for Skyvern to accomplish.": "La meta o descripción de la tarea para que Skyvern cumpla.",
"The starting URL for the task.": "La URL inicial para la tarea.",
"URL to send task status updates to after a run is finished.": "URL a la que enviar actualizaciones de estado de tareas una vez finalizada la ejecución.",
"Maximum number of steps the task can take. Task will fail if it exceeds this number.": "Número máximo de pasos que la tarea puede realizar. La tarea fallará si excede este número.",
"The schema for data to be extracted from the webpage.": "El esquema de datos que se extraerán de la página web.",
"The title for this workflow run.": "El título para este flujo de trabajo se ejecuta.",
"Authorization headers are injected automatically from your connection.": "Las cabeceras de autorización se inyectan automáticamente desde tu conexión.",
"Enable for files like PDFs, images, etc..": "Activar para archivos como PDFs, imágenes, etc.",
"Skyvern 1.0": "Skyvern 1.0",
"Skyvern 2.0": "Skyvern 2.0",
"OpenAI CUA": "OpenAI CUA",
"Anthropic CUA": "CUA Antrópica",
"Residential": "Residencial",
"Spain": "España",
"Ireland": "Irlanda",
"United Kingdom": "Reino Unido",
"India": "India",
"Japan": "Japón",
"France": "Francia",
"Germany": "Alemania",
"New Zealand": "Nueva Zelanda",
"South Africa": "Sudáfrica",
"Argentina": "Argentina",
"ISP Proxy": "Proxy ISP",
"California (US)": "California (EE.UU.)",
"New York (US)": "Nueva York (EE.UU.)",
"Texas (US)": "Texas (EE.UU.)",
"Florida (US)": "Florida (EE.UU.)",
"Washington (US)": "Washington (EE.UU.)",
"No Proxy": "Sin proxy",
"GET": "RECOGER",
"POST": "POST",
"PATCH": "PATCH",
"PUT": "PUT",
"DELETE": "BORRAR",
"HEAD": "LIMPIO"
}

View File

@@ -0,0 +1,70 @@
{
"You can obtain your API key by navigating to [Settings](https://app.skyvern.com/settings).": "Vous pouvez obtenir votre clé API en accédant à [Settings](https://app.skyvern.com/settings).",
"Run Agent Task": "Exécuter la tâche de l'agent",
"Run Workflow": "Exécuter le flux de travail",
"Cancel Run": "Annuler l'exécution",
"Get Workflow/Task Run": "Obtenir le flux de travail/tâche",
"Find Workflow": "Trouver un Workflow",
"Custom API Call": "Appel d'API personnalisé",
"Runs task with specified prompt.": "Exécute une tâche avec l'invite spécifiée.",
"Runs the workflow.": "Exécute le workflow.",
"Cancels a workflow or or task run by ID.": "Annule un workflow ou une tâche exécutée par ID.",
"Retrieves a workflow or task run by ID.": "Récupère un workflow ou une tâche exécutée par ID.",
"Finds workflow based on title.": "Trouve un workflow basé sur le titre.",
"Make a custom API call to a specific endpoint": "Passer un appel API personnalisé à un endpoint spécifique",
"Prompt": "Prompt",
"URL": "URL",
"Engine": "Moteur",
"Webhook Callback URL": "Webhook Callback URL",
"Proxy Location": "Emplacement du proxy",
"Max Steps": "Étapes Max",
"Data Extraction Schema": "Schéma d'extraction de données",
"Workflow": "Flux de travail",
"Workflow Run Title": "Titre de l'exécution du workflow",
"Workflow Params": "Paramètres du flux de travail",
"Workflow/Task Run ID": "ID du flux de travail/tâche",
"Workflow Title": "Titre du workflow",
"Method": "Méthode",
"Headers": "En-têtes",
"Query Parameters": "Paramètres de requête",
"Body": "Corps",
"Response is Binary ?": "La réponse est Binaire ?",
"No Error on Failure": "Aucune erreur en cas d'échec",
"Timeout (in seconds)": "Délai d'expiration (en secondes)",
"The goal or task description for Skyvern to accomplish.": "La description du but ou de la tâche à accomplir par Skyvern.",
"The starting URL for the task.": "L'URL de départ de la tâche.",
"URL to send task status updates to after a run is finished.": "URL pour envoyer les mises à jour du statut de la tâche après la fin d'une exécution.",
"Maximum number of steps the task can take. Task will fail if it exceeds this number.": "Nombre maximum d'étapes que la tâche peut prendre. La tâche échouera si elle dépasse ce nombre.",
"The schema for data to be extracted from the webpage.": "Le schéma pour les données à extraire de la page Web.",
"The title for this workflow run.": "Le titre de ce workflow s'exécute.",
"Authorization headers are injected automatically from your connection.": "Les en-têtes d'autorisation sont injectés automatiquement à partir de votre connexion.",
"Enable for files like PDFs, images, etc..": "Activer pour les fichiers comme les PDFs, les images, etc.",
"Skyvern 1.0": "Skyvern 1.0",
"Skyvern 2.0": "Skyvern 2.0",
"OpenAI CUA": "OpenAI CUA",
"Anthropic CUA": "CUA anthropique",
"Residential": "Résidentiel",
"Spain": "L'Espagne",
"Ireland": "L'Irlande",
"United Kingdom": "Royaume-Uni",
"India": "L'Inde",
"Japan": "Japon",
"France": "France",
"Germany": "L'Allemagne",
"New Zealand": "Nouvelle-Zélande",
"South Africa": "Afrique du Sud",
"Argentina": "Argentine",
"ISP Proxy": "Proxy ISP",
"California (US)": "Californie (États-Unis)",
"New York (US)": "New York (États-Unis)",
"Texas (US)": "Texas (États-Unis)",
"Florida (US)": "Floride (États-Unis)",
"Washington (US)": "Washington (États-Unis)",
"No Proxy": "Pas de proxy",
"GET": "GET",
"POST": "POST",
"PATCH": "PATCH",
"PUT": "PUT",
"DELETE": "DELETE",
"HEAD": "HEAD"
}

View File

@@ -0,0 +1,70 @@
{
"You can obtain your API key by navigating to [Settings](https://app.skyvern.com/settings).": "API キーは [Settings](https://app.skyvern.com/settings ) に移動して取得できます。",
"Run Agent Task": "エージェントタスクを実行",
"Run Workflow": "ワークフローを実行",
"Cancel Run": "実行をキャンセル",
"Get Workflow/Task Run": "ワークフロー/タスク実行を取得",
"Find Workflow": "ワークフローを検索",
"Custom API Call": "カスタムAPI通話",
"Runs task with specified prompt.": "指定したプロンプトでタスクを実行します。",
"Runs the workflow.": "ワークフローを実行する。",
"Cancels a workflow or or task run by ID.": "IDで実行されるワークフローまたはタスクをキャンセルします。",
"Retrieves a workflow or task run by ID.": "ID で実行されるワークフローまたはタスクを取得します。",
"Finds workflow based on title.": "タイトルに基づいてワークフローを検索します。",
"Make a custom API call to a specific endpoint": "特定のエンドポイントへのカスタム API コールを実行します。",
"Prompt": "Prompt",
"URL": "URL",
"Engine": "エンジン",
"Webhook Callback URL": "Webhook Callback URL",
"Proxy Location": "プロキシの場所",
"Max Steps": "最大ステップ",
"Data Extraction Schema": "データ抽出スキーマ",
"Workflow": "ワークフロー",
"Workflow Run Title": "ワークフロー実行タイトル",
"Workflow Params": "ワークフローパラメータ",
"Workflow/Task Run ID": "ワークフロー/タスク実行ID",
"Workflow Title": "ワークフローのタイトル",
"Method": "方法",
"Headers": "ヘッダー",
"Query Parameters": "クエリパラメータ",
"Body": "本文",
"Response is Binary ?": "応答はバイナリですか?",
"No Error on Failure": "失敗時にエラーはありません",
"Timeout (in seconds)": "タイムアウト(秒)",
"The goal or task description for Skyvern to accomplish.": "Skyvernが達成するための目標またはタスクの説明。",
"The starting URL for the task.": "タスクの開始URL。",
"URL to send task status updates to after a run is finished.": "実行が完了した後にタスクのステータス更新を送信するURL。",
"Maximum number of steps the task can take. Task will fail if it exceeds this number.": "タスクが取ることができるステップの最大数。この数を超えるとタスクは失敗します。",
"The schema for data to be extracted from the webpage.": "ウェブページから抽出されるデータのスキーマ。",
"The title for this workflow run.": "このワークフローのタイトルが実行されます。",
"Authorization headers are injected automatically from your connection.": "認証ヘッダは接続から自動的に注入されます。",
"Enable for files like PDFs, images, etc..": "PDF、画像などのファイルを有効にします。",
"Skyvern 1.0": "Skyvern 1.0",
"Skyvern 2.0": "Skyvern 2.0",
"OpenAI CUA": "OpenAI CUA",
"Anthropic CUA": "Anthropic CUA",
"Residential": "<unk>",
"Spain": "スペイン",
"Ireland": "アイルランド",
"United Kingdom": "イギリス",
"India": "インド",
"Japan": "日本",
"France": "フランス",
"Germany": "ドイツ",
"New Zealand": "ニュージーランド",
"South Africa": "南アフリカ",
"Argentina": "アルゼンチン",
"ISP Proxy": "ISPプロキシ",
"California (US)": "カリフォルニア州 (米国)",
"New York (US)": "ニューヨーク",
"Texas (US)": "テキサス(米国)",
"Florida (US)": "Florida (US)",
"Washington (US)": "Washington (US)",
"No Proxy": "プロキシなし",
"GET": "取得",
"POST": "POST",
"PATCH": "PATCH",
"PUT": "PUT",
"DELETE": "削除",
"HEAD": "頭"
}

View File

@@ -0,0 +1,70 @@
{
"You can obtain your API key by navigating to [Settings](https://app.skyvern.com/settings).": "U kunt uw API-sleutel verkrijgen door naar [Settings](https://app.skyvern.com/settings ) te navigeren.",
"Run Agent Task": "Voer Agent Taak uit",
"Run Workflow": "Workflow uitvoeren",
"Cancel Run": "Uitvoeren annuleren",
"Get Workflow/Task Run": "Verkrijg Workflow/Task Run",
"Find Workflow": "Zoek Workflow",
"Custom API Call": "Custom API Call",
"Runs task with specified prompt.": "Voert taak uit met opgegeven prompt.",
"Runs the workflow.": "Voert de workflow uit.",
"Cancels a workflow or or task run by ID.": "Annuleert een workflow of taak uitgevoerd door ID.",
"Retrieves a workflow or task run by ID.": "Ophalen van een workflow of taak uitgevoerd door ID.",
"Finds workflow based on title.": "Vondst workflow op basis van titel.",
"Make a custom API call to a specific endpoint": "Maak een aangepaste API call naar een specifiek eindpunt",
"Prompt": "Prompt",
"URL": "URL",
"Engine": "Motor",
"Webhook Callback URL": "Webhook Callback URL",
"Proxy Location": "Proxy Locatie",
"Max Steps": "Max. aantal stappen",
"Data Extraction Schema": "Data Extraction Schema",
"Workflow": "Werkstroom",
"Workflow Run Title": "Titel Workflow Run",
"Workflow Params": "Workflow-parameters",
"Workflow/Task Run ID": "Workflow/Task Run ID",
"Workflow Title": "Workflow titel",
"Method": "Methode",
"Headers": "Kopteksten",
"Query Parameters": "Query parameters",
"Body": "Lichaam",
"Response is Binary ?": "Antwoord is binair?",
"No Error on Failure": "Geen fout bij fout",
"Timeout (in seconds)": "Time-out (in seconden)",
"The goal or task description for Skyvern to accomplish.": "Het doel of taakbeschrijving voor Skyvern om te voltooien.",
"The starting URL for the task.": "De start-URL voor de taak.",
"URL to send task status updates to after a run is finished.": "URL om status updates te versturen naar nadat een opdracht is uitgevoerd.",
"Maximum number of steps the task can take. Task will fail if it exceeds this number.": "Maximum aantal stappen dat de taak kan nemen. De taak zal mislukken als deze dit aantal overschrijdt.",
"The schema for data to be extracted from the webpage.": "Het schema voor data uitpakken vanaf de webpagina.",
"The title for this workflow run.": "De titel voor deze workflow wordt uitgevoerd.",
"Authorization headers are injected automatically from your connection.": "Autorisatie headers worden automatisch geïnjecteerd vanuit uw verbinding.",
"Enable for files like PDFs, images, etc..": "Inschakelen voor bestanden zoals PDF's, afbeeldingen etc..",
"Skyvern 1.0": "Skyvern 1.0",
"Skyvern 2.0": "Skyvern 2.0",
"OpenAI CUA": "OpenAI CUA",
"Anthropic CUA": "Anthropische CUA",
"Residential": "Particulier",
"Spain": "Spanje",
"Ireland": "Ierland",
"United Kingdom": "Verenigd Koninkrijk",
"India": "Indië",
"Japan": "Japans",
"France": "Frankrijk",
"Germany": "Duitsland",
"New Zealand": "Nieuw Zeeland",
"South Africa": "Zuid-Afrika",
"Argentina": "Argentinië",
"ISP Proxy": "ISP Proxy",
"California (US)": "Californië (VS)",
"New York (US)": "New York (VS)",
"Texas (US)": "Teksten (VS)",
"Florida (US)": "Florida (VS)",
"Washington (US)": "Washington (VS)",
"No Proxy": "Geen proxy",
"GET": "KRIJG",
"POST": "POSTE",
"PATCH": "BEKIJK",
"PUT": "PUT",
"DELETE": "VERWIJDEREN",
"HEAD": "HOOFD"
}

View File

@@ -0,0 +1,70 @@
{
"You can obtain your API key by navigating to [Settings](https://app.skyvern.com/settings).": "Você pode obter sua chave de API navegando para [Settings](https://app.skyvern.com/settings).",
"Run Agent Task": "Executar tarefa de agente",
"Run Workflow": "Executar Workflow",
"Cancel Run": "Execução de Cancelamento",
"Get Workflow/Task Run": "Obter Workflow/Task Run",
"Find Workflow": "Encontrar workflow",
"Custom API Call": "Chamada de API personalizada",
"Runs task with specified prompt.": "Executa a tarefa com um prompt específico.",
"Runs the workflow.": "Executa o workflow.",
"Cancels a workflow or or task run by ID.": "Cancela um fluxo de trabalho ou tarefa executada com ID.",
"Retrieves a workflow or task run by ID.": "Obtém um fluxo de trabalho ou tarefa executada por ID.",
"Finds workflow based on title.": "Localiza um fluxo de trabalho baseado no título.",
"Make a custom API call to a specific endpoint": "Faça uma chamada de API personalizada para um ponto de extremidade específico",
"Prompt": "Aviso",
"URL": "URL:",
"Engine": "Mecanismo",
"Webhook Callback URL": "Webhook Callback URL",
"Proxy Location": "Local do Proxy",
"Max Steps": "Máximo de passos",
"Data Extraction Schema": "Esquema de extração de dados",
"Workflow": "Workflow",
"Workflow Run Title": "Workflow Run Title",
"Workflow Params": "Workflow Params",
"Workflow/Task Run ID": "ID Executar Workflow/Tarefa",
"Workflow Title": "Título do workflow",
"Method": "Método",
"Headers": "Cabeçalhos",
"Query Parameters": "Parâmetros da consulta",
"Body": "Conteúdo",
"Response is Binary ?": "A resposta é binária ?",
"No Error on Failure": "Nenhum erro no Failure",
"Timeout (in seconds)": "Tempo limite (em segundos)",
"The goal or task description for Skyvern to accomplish.": "O objetivo ou a descrição da tarefa para o Skyvern cumprir.",
"The starting URL for the task.": "A URL inicial para a tarefa.",
"URL to send task status updates to after a run is finished.": "URL para onde enviar as atualizações de status da tarefa após a execução terminar.",
"Maximum number of steps the task can take. Task will fail if it exceeds this number.": "Número máximo de passos que a tarefa pode tomar. A tarefa falhará se exceder este número.",
"The schema for data to be extracted from the webpage.": "O esquema para que os dados sejam extraídos da página da web.",
"The title for this workflow run.": "O título para esta execução do fluxo de trabalho.",
"Authorization headers are injected automatically from your connection.": "Os cabeçalhos de autorização são inseridos automaticamente a partir da sua conexão.",
"Enable for files like PDFs, images, etc..": "Habilitar para arquivos como PDFs, imagens, etc..",
"Skyvern 1.0": "Skyvern 1.0",
"Skyvern 2.0": "Skyvern 2.0",
"OpenAI CUA": "OpenAI CUA",
"Anthropic CUA": "CUA Antrópica",
"Residential": "Residencial",
"Spain": "Espanha",
"Ireland": "Irlanda",
"United Kingdom": "Reino Unido",
"India": "Índia",
"Japan": "Japão",
"France": "França",
"Germany": "Alemanha",
"New Zealand": "Nova Zelândia",
"South Africa": "África do Sul",
"Argentina": "Argentina",
"ISP Proxy": "Proxy ISP",
"California (US)": "Califórnia (EUA)",
"New York (US)": "Nova Iorque (EUA)",
"Texas (US)": "Texas (EUA)",
"Florida (US)": "Flórida (EUA)",
"Washington (US)": "Washington (EUA)",
"No Proxy": "Sem proxy",
"GET": "OBTER",
"POST": "POSTAR",
"PATCH": "COMPRAR",
"PUT": "COLOCAR",
"DELETE": "EXCLUIR",
"HEAD": "CABEÇA"
}

View File

@@ -0,0 +1,69 @@
{
"Skyvern": "Skyvern",
"You can obtain your API key by navigating to [Settings](https://app.skyvern.com/settings).": "Вы можете получить ключ API, перейдя к [Settings](https://app.skyvern.com/settings).",
"Run Agent Task": "Запуск Агента Задачи",
"Run Workflow": "Запуск рабочего процесса",
"Cancel Run": "Отменить запуск",
"Get Workflow/Task Run": "Получить рабочий процесс/Запуск задачи",
"Find Workflow": "Найти рабочий процесс",
"Custom API Call": "Пользовательский вызов API",
"Runs task with specified prompt.": "Выполняет задачу с указанной подсказкой.",
"Runs the workflow.": "Запускает рабочий процесс.",
"Cancels a workflow or or task run by ID.": "Отменяет рабочий процесс или задачу, запускаемую по ID.",
"Retrieves a workflow or task run by ID.": "Получает рабочий процесс или задачу, запускаемую по ID.",
"Finds workflow based on title.": "Ищет рабочий процесс по названию.",
"Make a custom API call to a specific endpoint": "Сделать пользовательский API вызов к определенной конечной точке",
"Prompt": "Prompt",
"URL": "URL",
"Engine": "Двигатель",
"Webhook Callback URL": "Webhook Callback URL",
"Proxy Location": "Расположение прокси",
"Max Steps": "Макс. шагов",
"Data Extraction Schema": "Схема извлечения данных",
"Workflow": "Рабочий процесс",
"Workflow Run Title": "Заголовок запуска рабочего процесса",
"Workflow Params": "Параметры рабочего процесса",
"Workflow/Task Run ID": "Идентификатор запуска процесса/задачи",
"Workflow Title": "Название рабочего процесса",
"Method": "Метод",
"Headers": "Заголовки",
"Query Parameters": "Параметры запроса",
"Body": "Тело",
"No Error on Failure": "Нет ошибок при ошибке",
"Timeout (in seconds)": "Таймаут (в секундах)",
"The goal or task description for Skyvern to accomplish.": "Цель или описание задачи для достижения Skyvern.",
"The starting URL for the task.": "Начальный URL задачи.",
"URL to send task status updates to after a run is finished.": "URL-адрес для отправки статуса задачи обновления после завершения запуска.",
"Maximum number of steps the task can take. Task will fail if it exceeds this number.": "Максимальное количество шагов, которое может выполнить задача. Задача не будет выполнена, если она превышает это число.",
"The schema for data to be extracted from the webpage.": "Схема извлечения данных с веб-страницы.",
"The title for this workflow run.": "Название для этого рабочего процесса.",
"Authorization headers are injected automatically from your connection.": "Заголовки авторизации включаются автоматически из вашего соединения.",
"Skyvern 1.0": "Небесная 1.0",
"Skyvern 2.0": "Skyvern 2.0",
"OpenAI CUA": "OpenAI CUA",
"Anthropic CUA": "Антропия CUA",
"Residential": "Жилой дом",
"Spain": "Испания",
"Ireland": "Ирландия",
"United Kingdom": "Соединенное Королевство",
"India": "Индия",
"Japan": "Япония",
"France": "Франция",
"Germany": "Германия",
"New Zealand": "Новая Зеландия",
"South Africa": "Южная Африка",
"Argentina": "Аргентина",
"ISP Proxy": "ISP прокси",
"California (US)": "Калифорния (США)",
"New York (US)": "Нью-Йорк (США)",
"Texas (US)": "Техас (США)",
"Florida (US)": "Флорида (США)",
"Washington (US)": "Вашингтон (США)",
"No Proxy": "Нет прокси",
"GET": "ПОЛУЧИТЬ",
"POST": "ПОСТ",
"PATCH": "ПАТЧ",
"PUT": "ПОКУПИТЬ",
"DELETE": "УДАЛИТЬ",
"HEAD": "HEAD"
}

View File

@@ -0,0 +1,70 @@
{
"You can obtain your API key by navigating to [Settings](https://app.skyvern.com/settings).": "You can obtain your API key by navigating to [Settings](https://app.skyvern.com/settings).",
"Run Agent Task": "Run Agent Task",
"Run Workflow": "Run Workflow",
"Cancel Run": "Cancel Run",
"Get Workflow/Task Run": "Get Workflow/Task Run",
"Find Workflow": "Find Workflow",
"Custom API Call": "Custom API Call",
"Runs task with specified prompt.": "Runs task with specified prompt.",
"Runs the workflow.": "Runs the workflow.",
"Cancels a workflow or or task run by ID.": "Cancels a workflow or or task run by ID.",
"Retrieves a workflow or task run by ID.": "Retrieves a workflow or task run by ID.",
"Finds workflow based on title.": "Finds workflow based on title.",
"Make a custom API call to a specific endpoint": "Make a custom API call to a specific endpoint",
"Prompt": "Prompt",
"URL": "URL",
"Engine": "Engine",
"Webhook Callback URL": "Webhook Callback URL",
"Proxy Location": "Proxy Location",
"Max Steps": "Max Steps",
"Data Extraction Schema": "Data Extraction Schema",
"Workflow": "Workflow",
"Workflow Run Title": "Workflow Run Title",
"Workflow Params": "Workflow Params",
"Workflow/Task Run ID": "Workflow/Task Run ID",
"Workflow Title": "Workflow Title",
"Method": "Method",
"Headers": "Headers",
"Query Parameters": "Query Parameters",
"Body": "Body",
"Response is Binary ?": "Response is Binary ?",
"No Error on Failure": "No Error on Failure",
"Timeout (in seconds)": "Timeout (in seconds)",
"The goal or task description for Skyvern to accomplish.": "The goal or task description for Skyvern to accomplish.",
"The starting URL for the task.": "The starting URL for the task.",
"URL to send task status updates to after a run is finished.": "URL to send task status updates to after a run is finished.",
"Maximum number of steps the task can take. Task will fail if it exceeds this number.": "Maximum number of steps the task can take. Task will fail if it exceeds this number.",
"The schema for data to be extracted from the webpage.": "The schema for data to be extracted from the webpage.",
"The title for this workflow run.": "The title for this workflow run.",
"Authorization headers are injected automatically from your connection.": "Authorization headers are injected automatically from your connection.",
"Enable for files like PDFs, images, etc..": "Enable for files like PDFs, images, etc..",
"Skyvern 1.0": "Skyvern 1.0",
"Skyvern 2.0": "Skyvern 2.0",
"OpenAI CUA": "OpenAI CUA",
"Anthropic CUA": "Anthropic CUA",
"Residential": "Residential",
"Spain": "Spain",
"Ireland": "Ireland",
"United Kingdom": "United Kingdom",
"India": "India",
"Japan": "Japan",
"France": "France",
"Germany": "Germany",
"New Zealand": "New Zealand",
"South Africa": "South Africa",
"Argentina": "Argentina",
"ISP Proxy": "ISP Proxy",
"California (US)": "California (US)",
"New York (US)": "New York (US)",
"Texas (US)": "Texas (US)",
"Florida (US)": "Florida (US)",
"Washington (US)": "Washington (US)",
"No Proxy": "No Proxy",
"GET": "GET",
"POST": "POST",
"PATCH": "PATCH",
"PUT": "PUT",
"DELETE": "DELETE",
"HEAD": "HEAD"
}

View File

@@ -0,0 +1,69 @@
{
"Skyvern": "Skyvern",
"You can obtain your API key by navigating to [Settings](https://app.skyvern.com/settings).": "You can obtain your API key by navigating to [Settings](https://app.skyvern.com/settings).",
"Run Agent Task": "Run Agent Task",
"Run Workflow": "Run Workflow",
"Cancel Run": "Cancel Run",
"Get Workflow/Task Run": "Get Workflow/Task Run",
"Find Workflow": "Find Workflow",
"Custom API Call": "Custom API Call",
"Runs task with specified prompt.": "Runs task with specified prompt.",
"Runs the workflow.": "Runs the workflow.",
"Cancels a workflow or or task run by ID.": "Cancels a workflow or or task run by ID.",
"Retrieves a workflow or task run by ID.": "Retrieves a workflow or task run by ID.",
"Finds workflow based on title.": "Finds workflow based on title.",
"Make a custom API call to a specific endpoint": "Make a custom API call to a specific endpoint",
"Prompt": "Prompt",
"URL": "URL",
"Engine": "Engine",
"Webhook Callback URL": "Webhook Callback URL",
"Proxy Location": "Proxy Location",
"Max Steps": "Max Steps",
"Data Extraction Schema": "Data Extraction Schema",
"Workflow": "Workflow",
"Workflow Run Title": "Workflow Run Title",
"Workflow Params": "Workflow Params",
"Workflow/Task Run ID": "Workflow/Task Run ID",
"Workflow Title": "Workflow Title",
"Method": "Method",
"Headers": "Headers",
"Query Parameters": "Query Parameters",
"Body": "Body",
"No Error on Failure": "No Error on Failure",
"Timeout (in seconds)": "Timeout (in seconds)",
"The goal or task description for Skyvern to accomplish.": "The goal or task description for Skyvern to accomplish.",
"The starting URL for the task.": "The starting URL for the task.",
"URL to send task status updates to after a run is finished.": "URL to send task status updates to after a run is finished.",
"Maximum number of steps the task can take. Task will fail if it exceeds this number.": "Maximum number of steps the task can take. Task will fail if it exceeds this number.",
"The schema for data to be extracted from the webpage.": "The schema for data to be extracted from the webpage.",
"The title for this workflow run.": "The title for this workflow run.",
"Authorization headers are injected automatically from your connection.": "Authorization headers are injected automatically from your connection.",
"Skyvern 1.0": "Skyvern 1.0",
"Skyvern 2.0": "Skyvern 2.0",
"OpenAI CUA": "OpenAI CUA",
"Anthropic CUA": "Anthropic CUA",
"Residential": "Residential",
"Spain": "Spain",
"Ireland": "Ireland",
"United Kingdom": "United Kingdom",
"India": "India",
"Japan": "Japan",
"France": "France",
"Germany": "Germany",
"New Zealand": "New Zealand",
"South Africa": "South Africa",
"Argentina": "Argentina",
"ISP Proxy": "ISP Proxy",
"California (US)": "California (US)",
"New York (US)": "New York (US)",
"Texas (US)": "Texas (US)",
"Florida (US)": "Florida (US)",
"Washington (US)": "Washington (US)",
"No Proxy": "No Proxy",
"GET": "GET",
"POST": "POST",
"PATCH": "PATCH",
"PUT": "PUT",
"DELETE": "DELETE",
"HEAD": "HEAD"
}

View File

@@ -0,0 +1,70 @@
{
"You can obtain your API key by navigating to [Settings](https://app.skyvern.com/settings).": "You can obtain your API key by navigating to [Settings](https://app.skyvern.com/settings).",
"Run Agent Task": "Run Agent Task",
"Run Workflow": "Run Workflow",
"Cancel Run": "Cancel Run",
"Get Workflow/Task Run": "Get Workflow/Task Run",
"Find Workflow": "Find Workflow",
"Custom API Call": "自定义 API 呼叫",
"Runs task with specified prompt.": "Runs task with specified prompt.",
"Runs the workflow.": "Runs the workflow.",
"Cancels a workflow or or task run by ID.": "Cancels a workflow or or task run by ID.",
"Retrieves a workflow or task run by ID.": "Retrieves a workflow or task run by ID.",
"Finds workflow based on title.": "Finds workflow based on title.",
"Make a custom API call to a specific endpoint": "将一个自定义 API 调用到一个特定的终点",
"Prompt": "Prompt",
"URL": "URL",
"Engine": "Engine",
"Webhook Callback URL": "Webhook Callback URL",
"Proxy Location": "Proxy Location",
"Max Steps": "Max Steps",
"Data Extraction Schema": "Data Extraction Schema",
"Workflow": "Workflow",
"Workflow Run Title": "Workflow Run Title",
"Workflow Params": "Workflow Params",
"Workflow/Task Run ID": "Workflow/Task Run ID",
"Workflow Title": "Workflow Title",
"Method": "方法",
"Headers": "信头",
"Query Parameters": "查询参数",
"Body": "正文内容",
"Response is Binary ?": "Response is Binary ?",
"No Error on Failure": "失败时没有错误",
"Timeout (in seconds)": "超时(秒)",
"The goal or task description for Skyvern to accomplish.": "The goal or task description for Skyvern to accomplish.",
"The starting URL for the task.": "The starting URL for the task.",
"URL to send task status updates to after a run is finished.": "URL to send task status updates to after a run is finished.",
"Maximum number of steps the task can take. Task will fail if it exceeds this number.": "Maximum number of steps the task can take. Task will fail if it exceeds this number.",
"The schema for data to be extracted from the webpage.": "The schema for data to be extracted from the webpage.",
"The title for this workflow run.": "The title for this workflow run.",
"Authorization headers are injected automatically from your connection.": "授权头自动从您的连接中注入。",
"Enable for files like PDFs, images, etc..": "Enable for files like PDFs, images, etc..",
"Skyvern 1.0": "Skyvern 1.0",
"Skyvern 2.0": "Skyvern 2.0",
"OpenAI CUA": "OpenAI CUA",
"Anthropic CUA": "Anthropic CUA",
"Residential": "Residential",
"Spain": "Spain",
"Ireland": "Ireland",
"United Kingdom": "United Kingdom",
"India": "India",
"Japan": "Japan",
"France": "France",
"Germany": "Germany",
"New Zealand": "New Zealand",
"South Africa": "South Africa",
"Argentina": "Argentina",
"ISP Proxy": "ISP Proxy",
"California (US)": "California (US)",
"New York (US)": "New York (US)",
"Texas (US)": "Texas (US)",
"Florida (US)": "Florida (US)",
"Washington (US)": "Washington (US)",
"No Proxy": "No Proxy",
"GET": "获取",
"POST": "帖子",
"PATCH": "PATCH",
"PUT": "弹出",
"DELETE": "删除",
"HEAD": "黑色"
}

View File

@@ -0,0 +1,34 @@
import { createCustomApiCallAction } from '@activepieces/pieces-common';
import { createPiece } from '@activepieces/pieces-framework';
import { cancelRunAction } from './lib/actions/cancel-run';
import { findWorkflowAction } from './lib/actions/find-workflow';
import { getRunAction } from './lib/actions/get-run';
import { runAgentTaskAction } from './lib/actions/run-agent-task';
import { runWorkflowAction } from './lib/actions/run-workflow';
import { skyvernAuth } from './lib/common/auth';
import { BASE_URL } from './lib/common/client';
export const skyvern = createPiece({
displayName: 'Skyvern',
auth: skyvernAuth,
minimumSupportedRelease: '0.36.1',
logoUrl: 'https://cdn.activepieces.com/pieces/skyvern.jpg',
authors: ['rimjhimyadav','kishanprmr'],
actions: [
runAgentTaskAction,
runWorkflowAction,
cancelRunAction,
getRunAction,
findWorkflowAction,
createCustomApiCallAction({
auth: skyvernAuth,
baseUrl: () => BASE_URL,
authMapping: async (auth) => {
return {
'x-api-key': auth.secret_text,
};
},
}),
],
triggers: [],
});

View File

@@ -0,0 +1,28 @@
import { HttpMethod } from '@activepieces/pieces-common';
import { createAction, Property } from '@activepieces/pieces-framework';
import { skyvernAuth } from '../common/auth';
import { skyvernApiCall } from '../common/client';
export const cancelRunAction = createAction({
auth: skyvernAuth,
name: 'cancel-run',
displayName: 'Cancel Run',
description: 'Cancels a workflow or or task run by ID.',
props: {
runId: Property.ShortText({
displayName: 'Workflow/Task Run ID',
required: true,
}),
},
async run(context) {
const { runId } = context.propsValue;
const response = await skyvernApiCall({
apiKey: context.auth.secret_text,
method: HttpMethod.POST,
resourceUri: `/runs/${runId}/cancel`,
});
return response;
},
});

View File

@@ -0,0 +1,50 @@
import { HttpMethod } from '@activepieces/pieces-common';
import { createAction, Property } from '@activepieces/pieces-framework';
import { isNil } from '@activepieces/shared';
import { skyvernAuth } from '../common/auth';
import { skyvernApiCall } from '../common/client';
import { ListWorkflowResponse } from '../common/props';
export const findWorkflowAction = createAction({
auth: skyvernAuth,
name: 'find-workflow',
displayName: 'Find Workflow',
description: 'Finds workflow based on title.',
props: {
title: Property.ShortText({
displayName: 'Workflow Title',
required: true,
}),
},
async run(context) {
const { title } = context.propsValue;
let hasMore = true;
let page = 1;
const workflows = [];
do {
const response = await skyvernApiCall<ListWorkflowResponse[]>({
apiKey: context.auth.secret_text,
method: HttpMethod.GET,
resourceUri: '/workflows',
query: {
page_size: 100,
page,
title,
},
});
if (isNil(response) || !Array.isArray(response)) break;
workflows.push(...response);
hasMore = response.length > 0;
page++;
} while (hasMore);
return {
found: workflows.length > 0,
result: workflows,
};
},
});

View File

@@ -0,0 +1,28 @@
import { HttpMethod } from '@activepieces/pieces-common';
import { createAction, Property } from '@activepieces/pieces-framework';
import { skyvernAuth } from '../common/auth';
import { skyvernApiCall } from '../common/client';
export const getRunAction = createAction({
auth: skyvernAuth,
name: 'get-run',
displayName: 'Get Workflow/Task Run',
description: 'Retrieves a workflow or task run by ID.',
props: {
runId: Property.ShortText({
displayName: 'Workflow/Task Run ID',
required: true,
}),
},
async run(context) {
const { runId } = context.propsValue;
const response = await skyvernApiCall({
apiKey: context.auth.secret_text,
method: HttpMethod.GET,
resourceUri: `/runs/${runId}`,
});
return response;
},
});

View File

@@ -0,0 +1,100 @@
import { HttpMethod } from '@activepieces/pieces-common';
import { createAction, Property } from '@activepieces/pieces-framework';
import { skyvernAuth } from '../common/auth';
import { skyvernApiCall } from '../common/client';
export const runAgentTaskAction = createAction({
auth: skyvernAuth,
name: 'run-agent-task',
displayName: 'Run Agent Task',
description: 'Runs task with specified prompt.',
props: {
prompt: Property.ShortText({
displayName: 'Prompt',
description: 'The goal or task description for Skyvern to accomplish.',
required: true,
}),
url: Property.ShortText({
displayName: 'URL',
description: 'The starting URL for the task.',
required: false,
}),
engine: Property.StaticDropdown({
displayName: 'Engine',
required: false,
options: {
disabled: false,
options: [
{ label: 'Skyvern 1.0', value: 'skyvern-1.0' },
{ label: 'Skyvern 2.0', value: 'skyvern-2.0' },
{ label: 'OpenAI CUA', value: 'openai-cua' },
{ label: 'Anthropic CUA', value: 'anthropic-cua' },
],
},
}),
webhookUrl: Property.ShortText({
displayName: 'Webhook Callback URL',
description: 'URL to send task status updates to after a run is finished.',
required: false,
}),
proxyLocation: Property.StaticDropdown({
displayName: 'Proxy Location',
required: false,
options: {
disabled: false,
options: [
{ label: 'Residential', value: 'RESIDENTIAL' },
{ label: 'Spain', value: 'RESIDENTIAL_ES' },
{ label: 'Ireland', value: 'RESIDENTIAL_IE' },
{ label: 'United Kingdom', value: 'RESIDENTIAL_GB' },
{ label: 'India', value: 'RESIDENTIAL_IN' },
{ label: 'Japan', value: 'RESIDENTIAL_JP' },
{ label: 'France', value: 'RESIDENTIAL_FR' },
{ label: 'Germany', value: 'RESIDENTIAL_DE' },
{ label: 'New Zealand', value: 'RESIDENTIAL_NZ' },
{ label: 'South Africa', value: 'RESIDENTIAL_ZA' },
{ label: 'Argentina', value: 'RESIDENTIAL_AR' },
{ label: 'ISP Proxy', value: 'RESIDENTIAL_ISP' },
{ label: 'California (US)', value: 'US-CA' },
{ label: 'New York (US)', value: 'US-NY' },
{ label: 'Texas (US)', value: 'US-TX' },
{ label: 'Florida (US)', value: 'US-FL' },
{ label: 'Washington (US)', value: 'US-WA' },
{ label: 'No Proxy', value: 'NONE' },
],
},
}),
maxSteps: Property.Number({
displayName: 'Max Steps',
required: false,
description:
'Maximum number of steps the task can take. Task will fail if it exceeds this number.',
}),
dataExtractionSchema: Property.Json({
displayName: 'Data Extraction Schema',
required: false,
description: 'The schema for data to be extracted from the webpage.',
}),
},
async run(context) {
const { prompt, proxyLocation, url, webhookUrl, dataExtractionSchema, maxSteps, engine } =
context.propsValue;
const response = await skyvernApiCall({
apiKey: context.auth.secret_text,
method: HttpMethod.POST,
resourceUri: '/run/tasks',
body: {
prompt,
url,
engine,
proxy_location: proxyLocation,
data_extraction_schema: dataExtractionSchema,
max_steps: maxSteps,
webhook_url: webhookUrl,
},
});
return response;
},
});

View File

@@ -0,0 +1,69 @@
import { HttpMethod } from '@activepieces/pieces-common';
import { createAction, Property } from '@activepieces/pieces-framework';
import { skyvernAuth } from '../common/auth';
import { skyvernApiCall } from '../common/client';
import { workflowId, workflowParams } from '../common/props';
export const runWorkflowAction = createAction({
auth: skyvernAuth,
name: 'run-workflow',
displayName: 'Run Workflow',
description: 'Runs the workflow.',
props: {
workflowId: workflowId,
title: Property.ShortText({
displayName: 'Workflow Run Title',
required: false,
description: 'The title for this workflow run.',
}),
proxyLocation: Property.StaticDropdown({
displayName: 'Proxy Location',
required: false,
options: {
disabled: false,
options: [
{ label: 'Residential', value: 'RESIDENTIAL' },
{ label: 'Spain', value: 'RESIDENTIAL_ES' },
{ label: 'Ireland', value: 'RESIDENTIAL_IE' },
{ label: 'United Kingdom', value: 'RESIDENTIAL_GB' },
{ label: 'India', value: 'RESIDENTIAL_IN' },
{ label: 'Japan', value: 'RESIDENTIAL_JP' },
{ label: 'France', value: 'RESIDENTIAL_FR' },
{ label: 'Germany', value: 'RESIDENTIAL_DE' },
{ label: 'New Zealand', value: 'RESIDENTIAL_NZ' },
{ label: 'South Africa', value: 'RESIDENTIAL_ZA' },
{ label: 'Argentina', value: 'RESIDENTIAL_AR' },
{ label: 'ISP Proxy', value: 'RESIDENTIAL_ISP' },
{ label: 'California (US)', value: 'US-CA' },
{ label: 'New York (US)', value: 'US-NY' },
{ label: 'Texas (US)', value: 'US-TX' },
{ label: 'Florida (US)', value: 'US-FL' },
{ label: 'Washington (US)', value: 'US-WA' },
{ label: 'No Proxy', value: 'NONE' },
],
},
}),
webhookUrl: Property.ShortText({
displayName: 'Webhook Callback URL',
required: false,
}),
parameters: workflowParams,
},
async run(context) {
const { workflowId, webhookUrl, proxyLocation, parameters } = context.propsValue;
const response = await skyvernApiCall({
apiKey: context.auth.secret_text,
method: HttpMethod.POST,
resourceUri: `/run/workflows`,
body: {
workflow_id: workflowId,
proxy_location: proxyLocation,
parameters,
webhook_url: webhookUrl,
},
});
return response;
},
});

View File

@@ -0,0 +1,24 @@
import { HttpMethod } from '@activepieces/pieces-common';
import { PieceAuth } from '@activepieces/pieces-framework';
import { skyvernApiCall } from './client';
export const skyvernAuth = PieceAuth.SecretText({
displayName: 'API Key',
description: `You can obtain your API key by navigating to [Settings](https://app.skyvern.com/settings).`,
required: true,
validate: async ({ auth }) => {
try {
await skyvernApiCall({
apiKey: auth as string,
method: HttpMethod.GET,
resourceUri: '/workflows',
});
return { valid: true };
} catch {
return {
valid: false,
error: 'Invalid API Key.',
};
}
},
});

View File

@@ -0,0 +1,48 @@
import {
httpClient,
HttpMessageBody,
HttpMethod,
HttpRequest,
QueryParams,
} from '@activepieces/pieces-common';
export type SkyvernApiCallParams = {
apiKey: string;
method: HttpMethod;
resourceUri: string;
query?: Record<string, string | number | string[] | undefined>;
body?: any;
};
export const BASE_URL = 'https://api.skyvern.com/v1';
export async function skyvernApiCall<T extends HttpMessageBody>({
apiKey,
method,
resourceUri,
query,
body,
}: SkyvernApiCallParams): Promise<T> {
const qs: QueryParams = {};
if (query) {
for (const [key, value] of Object.entries(query)) {
if (value !== null && value !== undefined) {
qs[key] = String(value);
}
}
}
const request: HttpRequest = {
method,
url: BASE_URL + resourceUri,
headers: {
'x-api-key': apiKey,
},
queryParams: qs,
body,
};
const response = await httpClient.sendRequest<T>(request);
return response.body;
}

View File

@@ -0,0 +1,175 @@
import { HttpMethod } from '@activepieces/pieces-common';
import { DynamicPropsValue, Property } from '@activepieces/pieces-framework';
import { isNil } from '@activepieces/shared';
import { skyvernApiCall } from './client';
import { skyvernAuth } from './auth';
export interface ListWorkflowResponse {
workflow_permanent_id: string;
title: string;
workflow_definition: {
parameters: {
parameter_type: string;
key: string;
workflow_parameter_type: string;
default_value: any;
}[];
};
}
export const workflowId = Property.Dropdown({
auth: skyvernAuth,
displayName: 'Workflow',
refreshers: [],
required: true,
options: async ({ auth }) => {
if (!auth) {
return {
disabled: true,
options: [],
placeholder: 'Please connect your account first.',
};
}
let hasMore = true;
let page = 1;
const workflows = [];
do {
const response = await skyvernApiCall<ListWorkflowResponse[]>({
apiKey: auth.secret_text,
method: HttpMethod.GET,
resourceUri: '/workflows',
query: {
page_size: 100,
page,
},
});
if (isNil(response) || !Array.isArray(response)) break;
workflows.push(...response);
hasMore = response.length > 0;
page++;
} while (hasMore);
return {
disabled: false,
options: workflows.map((workflow) => ({
label: workflow.title,
value: workflow.workflow_permanent_id,
})),
};
},
});
export const workflowParams = Property.DynamicProperties({
auth: skyvernAuth,
displayName: 'Workflow Params',
refreshers: ['workflowId'],
required: false,
props: async ({ auth, workflowId }) => {
if (!auth || !workflowId) return {};
let hasMore = true;
let page = 1;
let matchedWorkflow: ListWorkflowResponse | undefined = undefined;
do {
const response = await skyvernApiCall<ListWorkflowResponse[]>({
apiKey: auth.secret_text,
method: HttpMethod.GET,
resourceUri: '/workflows',
query: {
page_size: 100,
page,
},
});
if (isNil(response) || !Array.isArray(response)) break;
matchedWorkflow = response.find(
(workflow) => workflow.workflow_permanent_id === (workflowId as unknown as string),
);
if (matchedWorkflow) break;
hasMore = response.length > 0;
page++;
} while (hasMore);
if (isNil(matchedWorkflow)) return {};
const fields: DynamicPropsValue = {};
for (const field of matchedWorkflow.workflow_definition.parameters) {
if (field.parameter_type !== 'workflow') continue;
const { key, workflow_parameter_type, default_value: defaultValue } = field;
const required = isNil(defaultValue);
const displayName = key;
if (workflow_parameter_type === 'credential_id') {
const response = await skyvernApiCall<{ credential_id: string; name: string }[]>({
apiKey: auth.secret_text,
method: HttpMethod.GET,
resourceUri: '/credentials',
query: {
page_size: 100,
},
});
const credentials = response || [];
fields[field.key] = Property.StaticDropdown({
displayName,
required,
defaultValue,
options: {
disabled: false,
options: credentials.map((cred) => ({
label: cred.name,
value: cred.credential_id,
})),
},
});
continue;
}
switch (workflow_parameter_type) {
case 'string':
case 'file_url':
fields[field.key] = Property.ShortText({
displayName,
required,
defaultValue,
});
break;
case 'float':
case 'integer':
fields[field.key] = Property.Number({
displayName,
required,
defaultValue,
});
break;
case 'boolean':
fields[field.key] = Property.Checkbox({
displayName,
required,
defaultValue,
});
break;
case 'json':
fields[field.key] = Property.Json({
displayName,
required,
defaultValue,
});
break;
default:
break;
}
}
return fields;
},
});