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,33 @@
{
"extends": [
"../../../../.eslintrc.base.json"
],
"ignorePatterns": [
"!**/*"
],
"overrides": [
{
"files": [
"*.ts",
"*.tsx",
"*.js",
"*.jsx"
],
"rules": {}
},
{
"files": [
"*.ts",
"*.tsx"
],
"rules": {}
},
{
"files": [
"*.js",
"*.jsx"
],
"rules": {}
}
]
}

View File

@@ -0,0 +1,25 @@
# Tavily
## Description
Tavily is an AI-powered search engine designed for accurate and real-time information retrieval. This piece enables integration with Tavily's API to perform searches and extract information.
## Actions
1. **Search**: Perform a search query using Tavily's AI search engine
- Supports both basic and advanced search depths
- Optional AI-generated answer
- Configurable result limits
- Raw content inclusion option
2. **Extract**: Extract structured data from a webpage using Tavily's extraction API
- Clean and formatted content extraction
- Supports various content types
- Removes ads and irrelevant content
## Authentication
This piece requires an API key from Tavily. To obtain your API key:
1. Visit https://tavily.com/ and sign up for an account
2. Navigate to your dashboard
3. Copy your API key from the dashboard
## Requirements
- Tavily API Key

View File

@@ -0,0 +1,4 @@
{
"name": "@activepieces/piece-tavily",
"version": "0.0.7"
}

View File

@@ -0,0 +1,65 @@
{
"name": "pieces-tavily",
"$schema": "../../../../node_modules/nx/schemas/project-schema.json",
"sourceRoot": "packages/pieces/community/tavily/src",
"projectType": "library",
"release": {
"version": {
"currentVersionResolver": "git-tag",
"preserveLocalDependencyProtocols": false,
"manifestRootsToUpdate": [
"dist/{projectRoot}"
]
}
},
"tags": [],
"targets": {
"build": {
"executor": "@nx/js:tsc",
"outputs": [
"{options.outputPath}"
],
"options": {
"outputPath": "dist/packages/pieces/community/tavily",
"tsConfig": "packages/pieces/community/tavily/tsconfig.lib.json",
"packageJson": "packages/pieces/community/tavily/package.json",
"main": "packages/pieces/community/tavily/src/index.ts",
"assets": [
"packages/pieces/community/tavily/*.md",
{
"input": "packages/pieces/community/tavily/src/i18n",
"output": "./src/i18n",
"glob": "**/!(i18n.json)"
}
],
"buildableProjectDepsInPackageJsonType": "dependencies",
"updateBuildableProjectDepsInPackageJson": true
},
"dependsOn": [
"^build",
"prebuild"
]
},
"nx-release-publish": {
"options": {
"packageRoot": "dist/{projectRoot}"
}
},
"lint": {
"executor": "@nx/eslint:lint",
"outputs": [
"{options.outputFile}"
]
},
"prebuild": {
"executor": "nx:run-commands",
"options": {
"cwd": "packages/pieces/community/tavily",
"command": "bun install --no-save --silent"
},
"dependsOn": [
"^build"
]
}
}
}

View File

@@ -0,0 +1,47 @@
{
"Search engine tailored for AI agents.": "Suchmaschine, zugeschnitten auf KI-Agenten.",
"\nFollow these steps to obtain your Tavily API Key:\n\n1. Visit [tavily](https://tavily.com/) and create an account.\n2. Log in and navigate to your dashboard.\n3. Locate and copy your API key from the dashboard.\n": "\nFolge diesen Schritten, um deinen Tavily API Schlüssel zu erhalten:\n\n1. Besuche [tavily](https://tavily.com/) und erstelle ein Konto.\n2. Melden Sie sich an und navigieren Sie zu Ihrem Dashboard.\n3. Suchen und kopieren Sie Ihren API-Schlüssel aus dem Dashboard.\n",
"Search": "Suche",
"Extract Content": "Inhalt extrahieren",
"Search for data based on a query.": "Suche nach Daten basierend auf einer Abfrage.",
"Retrieve raw web content from specified URLs.": "Rohweb-Inhalte von angegebenen URLs abrufen.",
"Search Query": "Suchanfrage",
"Search Depth": "Suchtiefe",
"Topic": "Thema",
"Days": "Tage",
"Time Range": "Zeitbereich",
"Maximum Results": "Maximale Ergebnisse",
"Include Images": "Bilder einbeziehen",
"Include Image Descriptions": "Bildbeschreibungen einbeziehen",
"Include Answer": "Antwort einbeziehen",
"Include Raw Content": "Roh-Inhalt einbeziehen",
"Include Domains": "Domains einschließen",
"Exclude Domains": "Domains ausschließen",
"URLs": "URLs",
"The search query you want to execute with Tavily.": "Die Suchabfrage, die Sie mit Tavily.",
"The depth of the search. It can be \"basic\" or \"advanced\".": "Die Tiefe der Suche. Es kann \"Basic\" oder \"fortgeschritten\" sein.",
"The category of the search. This will determine which of our agents will be used for the search.": "Die Kategorie der Suche, die bestimmt, welche unserer Agenten für die Suche verwendet werden.",
"The number of days back from the current date to include in the search results. Only available when using the \"news\" search topic. Default is 3.": "Die Anzahl der Tage zurück vom aktuellen Datum, die in den Suchergebnissen enthalten sind. Nur verfügbar, wenn das Suchthema \"News\" verwendet wird. Standard ist 3.",
"The time range back from the current date to include in the search results.": "Der Zeitbereich vom aktuellen Datum, der in die Suchergebnisse aufgenommen werden soll.",
"The maximum number of search results to return.": "Gibt die maximale Anzahl an Suchergebnissen zurück.",
"Include a list of query-related images in the response.": "Fügen Sie eine Liste der abfragebezogenen Bilder in die Antwort ein.",
"When include_images is set to True, this option adds descriptive text for each image.": "Wenn include_images auf True gesetzt ist, fügt diese Option beschreibenden Text für jedes Bild hinzu.",
"Include a short answer to original query, generated by an LLM based on Tavily's search results.": "Fügen Sie eine kurze Antwort auf die ursprüngliche Anfrage hinzu, die von einer LLM basierend auf Tavilys Suchergebnissen generiert wurde.",
"Include the cleaned and parsed HTML content of each search result.": "Fügen Sie den gesäuberten und analysierten HTML-Inhalt jedes Suchergebnisses ein.",
"A list of domains to specifically include in the search results.": "Eine Liste von Domains, die speziell in die Suchergebnisse aufgenommen werden sollen.",
"A list of domains to specifically exclude from the search results.": "Eine Liste von Domains, die von den Suchergebnissen ausgenommen werden sollen.",
"The URLs you want to extract with Tavily.": "Die URLs, die Sie mit Tavily extrahieren möchten.",
"Include a list of images extracted from the URLs in the response.": "Fügen Sie eine Liste von Bildern hinzu, die aus den URLs extrahiert wurden.",
"Basic": "Einfache",
"Advanced": "Erweitert",
"General": "Allgemein",
"News": "Nachrichten",
"Day": "Tag",
"Week": "Woche",
"Month": "Monat",
"Year": "Jahr",
"Day (Short)": "Tag (kurz)",
"Week (Short)": "Woche (Kurz)",
"Month (Short)": "Monat (Kurz)",
"Year (Short)": "Jahr (Kurz)"
}

View File

@@ -0,0 +1,47 @@
{
"Search engine tailored for AI agents.": "Motor de búsqueda adaptado a los agentes de IA.",
"\nFollow these steps to obtain your Tavily API Key:\n\n1. Visit [tavily](https://tavily.com/) and create an account.\n2. Log in and navigate to your dashboard.\n3. Locate and copy your API key from the dashboard.\n": "\nSigue estos pasos para obtener tu clave API de Tavily:\n\n1. Visita [tavily](https://tavily.com/) y crea una cuenta.\n2. Inicie sesión y vaya a su panel de control.\n3. Localice y copie su clave API del panel de control.\n",
"Search": "Buscar",
"Extract Content": "Extraer contenido",
"Search for data based on a query.": "Buscar datos basados en una consulta.",
"Retrieve raw web content from specified URLs.": "Recuperar contenido web en bruto de URLs especificadas.",
"Search Query": "Buscar consulta",
"Search Depth": "Profundidad de búsqueda",
"Topic": "Tema",
"Days": "Días",
"Time Range": "Rango de Tiempo",
"Maximum Results": "Resultados máximos",
"Include Images": "Incluye imágenes",
"Include Image Descriptions": "Incluye descripciones de imagen",
"Include Answer": "Incluye respuesta",
"Include Raw Content": "Incluye contenido sin procesar",
"Include Domains": "Incluye Dominios",
"Exclude Domains": "Excluir dominios",
"URLs": "URLs",
"The search query you want to execute with Tavily.": "La consulta de búsqueda que desea ejecutar con Tavily.",
"The depth of the search. It can be \"basic\" or \"advanced\".": "La profundidad de la búsqueda. Puede ser \"básica\" o \"avanzada\".",
"The category of the search. This will determine which of our agents will be used for the search.": "La categoría de la búsqueda. Esto determinará cuál de nuestros agentes será utilizado para la búsqueda.",
"The number of days back from the current date to include in the search results. Only available when using the \"news\" search topic. Default is 3.": "El número de días atrás desde la fecha actual para incluir en los resultados de búsqueda. Sólo disponible cuando se utiliza el tema de búsqueda \"Noticias\". Por defecto es 3.",
"The time range back from the current date to include in the search results.": "El intervalo de tiempo desde la fecha actual para incluir en los resultados de búsqueda.",
"The maximum number of search results to return.": "El número máximo de resultados de búsqueda a regresar.",
"Include a list of query-related images in the response.": "Incluye una lista de imágenes relacionadas con la consulta en la respuesta.",
"When include_images is set to True, this option adds descriptive text for each image.": "Cuando include_images se establece en True, esta opción añade texto descriptivo para cada imagen.",
"Include a short answer to original query, generated by an LLM based on Tavily's search results.": "Incluye una respuesta corta a la consulta original, generada por un LLM basado en los resultados de búsqueda de Tavily.",
"Include the cleaned and parsed HTML content of each search result.": "Incluye el contenido HTML limpiado y analizado de cada resultado de búsqueda.",
"A list of domains to specifically include in the search results.": "Una lista de dominios para incluir específicamente en los resultados de búsqueda.",
"A list of domains to specifically exclude from the search results.": "Una lista de dominios a excluir específicamente de los resultados de búsqueda.",
"The URLs you want to extract with Tavily.": "Las URL que desea extraer con Tavily.",
"Include a list of images extracted from the URLs in the response.": "Incluye una lista de imágenes extraídas de las URLs en la respuesta.",
"Basic": "Básico",
"Advanced": "Avanzado",
"General": "General",
"News": "Noticias",
"Day": "Día",
"Week": "Semana",
"Month": "Mes",
"Year": "Año",
"Day (Short)": "Día (corto)",
"Week (Short)": "Semana (corta)",
"Month (Short)": "Mes (corto)",
"Year (Short)": "Año (corto)"
}

View File

@@ -0,0 +1,47 @@
{
"Search engine tailored for AI agents.": "Moteur de recherche adapté aux agents IA.",
"\nFollow these steps to obtain your Tavily API Key:\n\n1. Visit [tavily](https://tavily.com/) and create an account.\n2. Log in and navigate to your dashboard.\n3. Locate and copy your API key from the dashboard.\n": "\nFollow these steps to obtain your Tavily API Key:\n\n1. Visit [tavily](https://tavily.com/) and create an account.\n2. Log in and navigate to your dashboard.\n3. Locate and copy your API key from the dashboard.\n",
"Search": "Rechercher",
"Extract Content": "Extraire le contenu",
"Search for data based on a query.": "Recherche de données basées sur une requête.",
"Retrieve raw web content from specified URLs.": "Récupérer le contenu web brut à partir d'URL spécifiées.",
"Search Query": "Requête de recherche",
"Search Depth": "Profondeur de recherche",
"Topic": "Sujet",
"Days": "Jours",
"Time Range": "Intervalle de temps",
"Maximum Results": "Nombre maximum de résultats",
"Include Images": "Inclure les images",
"Include Image Descriptions": "Inclure les descriptions des images",
"Include Answer": "Inclure la réponse",
"Include Raw Content": "Inclure le contenu brut",
"Include Domains": "Inclure les domaines",
"Exclude Domains": "Exclure les domaines",
"URLs": "URLs",
"The search query you want to execute with Tavily.": "La requête de recherche que vous voulez exécuter avec Tavily.",
"The depth of the search. It can be \"basic\" or \"advanced\".": "La profondeur de la recherche. Elle peut être « basique » ou « avancée ».",
"The category of the search. This will determine which of our agents will be used for the search.": "La catégorie de la recherche. Cela déterminera lequel de nos agents sera utilisé pour la recherche.",
"The number of days back from the current date to include in the search results. Only available when using the \"news\" search topic. Default is 3.": "Le nombre de jours de la date courante à inclure dans les résultats de la recherche. Uniquement disponible lorsque vous utilisez le sujet de recherche \"news\". La valeur par défaut est 3.",
"The time range back from the current date to include in the search results.": "La plage de temps de la date courante à inclure dans les résultats de recherche.",
"The maximum number of search results to return.": "Le nombre maximum de résultats de recherche à retourner.",
"Include a list of query-related images in the response.": "Inclure une liste d'images liées à la requête dans la réponse.",
"When include_images is set to True, this option adds descriptive text for each image.": "Lorsque include_images est défini à True, cette option ajoute du texte descriptif pour chaque image.",
"Include a short answer to original query, generated by an LLM based on Tavily's search results.": "Inclure une réponse courte à la requête originale, générée par un LLM basé sur les résultats de recherche de Tavily.",
"Include the cleaned and parsed HTML content of each search result.": "Inclure le contenu HTML nettoyé et analysé de chaque résultat de recherche.",
"A list of domains to specifically include in the search results.": "Une liste de domaines à inclure spécifiquement dans les résultats de recherche.",
"A list of domains to specifically exclude from the search results.": "Une liste de domaines à exclure spécifiquement des résultats de recherche.",
"The URLs you want to extract with Tavily.": "Les URLs que vous voulez extraire avec Tavily.",
"Include a list of images extracted from the URLs in the response.": "Inclure dans la réponse une liste d'images extraites des URLs.",
"Basic": "Basique",
"Advanced": "Avancé",
"General": "Général",
"News": "Actualités",
"Day": "Jour",
"Week": "Semaine",
"Month": "Mois",
"Year": "Année",
"Day (Short)": "Jour (court)",
"Week (Short)": "Semaine (courte)",
"Month (Short)": "Mois (court)",
"Year (Short)": "Année (courte)"
}

View File

@@ -0,0 +1,47 @@
{
"Search engine tailored for AI agents.": "AIエージェントに合わせた検索エンジン。",
"\nFollow these steps to obtain your Tavily API Key:\n\n1. Visit [tavily](https://tavily.com/) and create an account.\n2. Log in and navigate to your dashboard.\n3. Locate and copy your API key from the dashboard.\n": "\nFollow these steps to obtain your Tavily API Key:\n\n1. Visit [tavily](https://tavily.com/) and create an account.\n2. Log in and navigate to your dashboard.\n3. Locate and copy your API key from the dashboard.\n",
"Search": "検索",
"Extract Content": "コンテンツを抽出",
"Search for data based on a query.": "クエリに基づいてデータを検索します。",
"Retrieve raw web content from specified URLs.": "指定された URL から生のウェブコンテンツを取得します。",
"Search Query": "検索クエリ",
"Search Depth": "深さを検索",
"Topic": "トピック",
"Days": "日数",
"Time Range": "時間範囲",
"Maximum Results": "最大結果",
"Include Images": "画像を含める",
"Include Image Descriptions": "画像の説明を含める",
"Include Answer": "回答を含める",
"Include Raw Content": "未加工コンテンツを含める",
"Include Domains": "ドメインを含める",
"Exclude Domains": "除外ドメイン",
"URLs": "URL",
"The search query you want to execute with Tavily.": "Tavilyで実行したい検索クエリ。",
"The depth of the search. It can be \"basic\" or \"advanced\".": "検索の深さ。\"basic\"または\"advanced\"にすることができます。",
"The category of the search. This will determine which of our agents will be used for the search.": "検索カテゴリ。これは、検索に使用されるエージェントを決定します。",
"The number of days back from the current date to include in the search results. Only available when using the \"news\" search topic. Default is 3.": "検索結果に含める現在の日付からの日数。 「ニュース」検索トピックを使用している場合のみ利用できます。デフォルトは3です。",
"The time range back from the current date to include in the search results.": "検索結果に含める現在の日付から戻る時間範囲。",
"The maximum number of search results to return.": "検索結果の最大数です。",
"Include a list of query-related images in the response.": "レスポンスにクエリ関連画像のリストを含めます。",
"When include_images is set to True, this option adds descriptive text for each image.": "include_imagesがTrueに設定されている場合、このオプションは各イメージに説明的なテキストを追加します。",
"Include a short answer to original query, generated by an LLM based on Tavily's search results.": "Tavilyの検索結果に基づいてLLMによって生成された元のクエリへの短い答えを含めます。",
"Include the cleaned and parsed HTML content of each search result.": "各検索結果の清掃済みおよび解析済みの HTML コンテンツを含めます。",
"A list of domains to specifically include in the search results.": "検索結果に具体的に含めるドメインのリスト。",
"A list of domains to specifically exclude from the search results.": "検索結果から特に除外するドメインのリスト。",
"The URLs you want to extract with Tavily.": "Tavilyで抽出したいURL。",
"Include a list of images extracted from the URLs in the response.": "レスポンス内の URL から抽出された画像のリストを含めます。",
"Basic": "基本",
"Advanced": "高度な設定",
"General": "全般",
"News": "ニュース",
"Day": "日",
"Week": "週",
"Month": "月",
"Year": "年",
"Day (Short)": "日 (短縮)",
"Week (Short)": "週 (短縮)",
"Month (Short)": "月 (短縮)",
"Year (Short)": "年 (短く)"
}

View File

@@ -0,0 +1,47 @@
{
"Search engine tailored for AI agents.": "Zoekmachine op maat gemaakt voor AI-agents.",
"\nFollow these steps to obtain your Tavily API Key:\n\n1. Visit [tavily](https://tavily.com/) and create an account.\n2. Log in and navigate to your dashboard.\n3. Locate and copy your API key from the dashboard.\n": "\nVolg deze stappen om je Tavily API Key te verkrijgen:\n\n1. Bezoek [tavily](https://tavily.com/) en maak een account aan.\n2. Log in en navigeer naar uw dashboard.\n3. Zoek en kopieer uw API-sleutel vanuit het dashboard.\n",
"Search": "Zoeken",
"Extract Content": "Uitpakken van inhoud",
"Search for data based on a query.": "Zoeken naar gegevens gebaseerd op een zoekopdracht.",
"Retrieve raw web content from specified URLs.": "Haal ruwe webinhoud op van de opgegeven URL's.",
"Search Query": "Zoek query",
"Search Depth": "Zoek diepte",
"Topic": "Onderwerp",
"Days": "dagen",
"Time Range": "Tijd bereik",
"Maximum Results": "Maximaal aantal resultaten",
"Include Images": "Afbeeldingen opnemen",
"Include Image Descriptions": "Omschrijvingen van afbeeldingen toevoegen",
"Include Answer": "Antwoord opnemen",
"Include Raw Content": "Onbewerkte inhoud insluiten",
"Include Domains": "Domeinen opnemen",
"Exclude Domains": "Domeinen uitsluiten",
"URLs": "URL's",
"The search query you want to execute with Tavily.": "De zoekopdracht die u wilt uitvoeren met Tavily.",
"The depth of the search. It can be \"basic\" or \"advanced\".": "De diepte van de zoekopdracht. Het kan worden \"basic\" of \"geavanceerd\".",
"The category of the search. This will determine which of our agents will be used for the search.": "De categorie van de zoekopdracht. Dit bepaalt welke van onze medewerkers gebruikt wordt voor de zoekopdracht.",
"The number of days back from the current date to include in the search results. Only available when using the \"news\" search topic. Default is 3.": "Het aantal dagen terug vanaf de huidige datum om op te nemen in de zoekresultaten. Alleen beschikbaar wanneer het zoekonderwerp \"nieuws\" wordt gebruikt. Standaard is 3.",
"The time range back from the current date to include in the search results.": "De tijd van terug vanaf de huidige datum om op te nemen in de zoekresultaten.",
"The maximum number of search results to return.": "Het maximale aantal zoekresultaten om weer te geven.",
"Include a list of query-related images in the response.": "Voeg een lijst met query-gerelateerde afbeeldingen toe in het antwoord.",
"When include_images is set to True, this option adds descriptive text for each image.": "Wanneer include_images is ingesteld op True, voegt deze optie beschrijvende tekst toe voor elke afbeelding.",
"Include a short answer to original query, generated by an LLM based on Tavily's search results.": "Voeg een kort antwoord toe op de originele zoekopdracht, gegenereerd door een LLM gebaseerd op Tavily's zoekresultaten.",
"Include the cleaned and parsed HTML content of each search result.": "Voeg de schoongemaakte en afgeleide HTML-inhoud toe van elke zoekresultaat.",
"A list of domains to specifically include in the search results.": "Een lijst van domeinen om specifiek op te nemen in de zoekresultaten.",
"A list of domains to specifically exclude from the search results.": "Een lijst van domeinen om specifiek uit te sluiten van de zoekresultaten.",
"The URLs you want to extract with Tavily.": "De URL's die u met Tavily wilt extraheren.",
"Include a list of images extracted from the URLs in the response.": "Voeg een lijst van afbeeldingen toe uit de URL's in het antwoord.",
"Basic": "Eenvoudig",
"Advanced": "Geavanceerd",
"General": "Algemeen",
"News": "Nieuws",
"Day": "dag",
"Week": "week",
"Month": "maand",
"Year": "jaar",
"Day (Short)": "Dag (Snel)",
"Week (Short)": "Week (Snel)",
"Month (Short)": "Maand (Snel)",
"Year (Short)": "Jaar (sorteren)"
}

View File

@@ -0,0 +1,47 @@
{
"Search engine tailored for AI agents.": "Mecanismo de busca sob medida para agentes de IA.",
"\nFollow these steps to obtain your Tavily API Key:\n\n1. Visit [tavily](https://tavily.com/) and create an account.\n2. Log in and navigate to your dashboard.\n3. Locate and copy your API key from the dashboard.\n": "\nSiga estes passos para obter sua chave de API de Tavily\n\n1. Visite [tavily](https://tavily.com/) e crie uma conta.\n2. Inicie sessão e navegue para o seu painel.\n3. Localize e copie sua chave de API a partir do painel de controle.\n",
"Search": "Pesquisar",
"Extract Content": "Extrair conteúdo",
"Search for data based on a query.": "Pesquisar dados com base em uma consulta.",
"Retrieve raw web content from specified URLs.": "Recuperar conteúdo web bruto de URLs especificadas.",
"Search Query": "Consulta de Pesquisa",
"Search Depth": "Profundidade da Busca",
"Topic": "Tópico",
"Days": "dias",
"Time Range": "Intervalo de tempo",
"Maximum Results": "Resultados máximos",
"Include Images": "Incluir imagens",
"Include Image Descriptions": "Incluir descrições da imagem",
"Include Answer": "Incluir Resposta",
"Include Raw Content": "Incluir Conteúdo Raw",
"Include Domains": "Incluir domínios",
"Exclude Domains": "Excluir domínios",
"URLs": "Links",
"The search query you want to execute with Tavily.": "A consulta de pesquisa que você deseja executar com Tavily.",
"The depth of the search. It can be \"basic\" or \"advanced\".": "A profundidade da pesquisa. Pode ser \"básico\" ou \"avançado\".",
"The category of the search. This will determine which of our agents will be used for the search.": "A categoria da pesquisa. Isso determinará qual de nossos agentes será usado para a pesquisa.",
"The number of days back from the current date to include in the search results. Only available when using the \"news\" search topic. Default is 3.": "O número de dias a partir da data atual para incluir nos resultados da pesquisa. Apenas disponível ao usar o tópico de pesquisa de \"notícias\". O padrão é 3.",
"The time range back from the current date to include in the search results.": "O intervalo de tempo volta da data atual para incluir nos resultados da pesquisa.",
"The maximum number of search results to return.": "O número máximo de resultados de pesquisa para retornar.",
"Include a list of query-related images in the response.": "Incluir uma lista de imagens relacionadas à consulta na resposta.",
"When include_images is set to True, this option adds descriptive text for each image.": "Quando include_imagens é definida como verdadeira, esta opção adiciona um texto descritivo para cada imagem.",
"Include a short answer to original query, generated by an LLM based on Tavily's search results.": "Incluir uma breve resposta à consulta original, gerada por uma LLM com base nos resultados de busca da Tavily.",
"Include the cleaned and parsed HTML content of each search result.": "Incluir o conteúdo HTML limpo e analisado de cada resultado da pesquisa.",
"A list of domains to specifically include in the search results.": "Uma lista de domínios a incluir especificamente nos resultados da pesquisa.",
"A list of domains to specifically exclude from the search results.": "Uma lista de domínios para especificamente excluir dos resultados da pesquisa.",
"The URLs you want to extract with Tavily.": "As URLs que você deseja extrair com Tavily.",
"Include a list of images extracted from the URLs in the response.": "Inclua uma lista de imagens extraídas das URLs na resposta.",
"Basic": "Básico",
"Advanced": "Avançado",
"General": "Geral",
"News": "Notícias",
"Day": "dia",
"Week": "semana",
"Month": "Mês",
"Year": "ano",
"Day (Short)": "Dia (Curto)",
"Week (Short)": "Semana (Curto)",
"Month (Short)": "Mês (Curto)",
"Year (Short)": "Ano (Curto)"
}

View File

@@ -0,0 +1,48 @@
{
"Tavily": "Tavily",
"Search engine tailored for AI agents.": "Поисковая система предназначена для ИИ агентов.",
"\nFollow these steps to obtain your Tavily API Key:\n\n1. Visit [tavily](https://tavily.com/) and create an account.\n2. Log in and navigate to your dashboard.\n3. Locate and copy your API key from the dashboard.\n": "\nFollow these steps to obtain your Tavily API Key:\n\n1. Visit [tavily](https://tavily.com/) and create an account.\n2. Log in and navigate to your dashboard.\n3. Locate and copy your API key from the dashboard.\n",
"Search": "Search",
"Extract Content": "Извлечь содержимое",
"Search for data based on a query.": "Поиск данных по запросу.",
"Retrieve raw web content from specified URLs.": "Получение необработанного сетевого контента с указанных URL.",
"Search Query": "Поисковый запрос",
"Search Depth": "Глубина поиска",
"Topic": "Тема",
"Days": "Дней",
"Time Range": "Диапазон времени",
"Maximum Results": "Максимальное количество результатов",
"Include Images": "Включить изображения",
"Include Image Descriptions": "Включить описание изображений",
"Include Answer": "Включить ответ",
"Include Raw Content": "Включать сырое содержимое",
"Include Domains": "Включить домены",
"Exclude Domains": "Исключить домены",
"URLs": "Адреса",
"The search query you want to execute with Tavily.": "Поисковый запрос, который вы хотите выполнить с помощью Tavily.",
"The depth of the search. It can be \"basic\" or \"advanced\".": "Глубина поиска может быть \"основным\" или \"продвинутым\".",
"The category of the search. This will determine which of our agents will be used for the search.": "Категория поиска. Определяет, какие из наших агентов будут использоваться для поиска.",
"The number of days back from the current date to include in the search results. Only available when using the \"news\" search topic. Default is 3.": "Количество дней назад с текущей даты для включения в результаты поиска. Доступно только при использовании \"новостей\" темы поиска. По умолчанию 3.",
"The time range back from the current date to include in the search results.": "Период времени назад с текущей даты для включения в результаты поиска.",
"The maximum number of search results to return.": "Максимальное количество результатов поиска.",
"Include a list of query-related images in the response.": "Включить в ответ список изображений, связанных с запросом.",
"When include_images is set to True, this option adds descriptive text for each image.": "Когда include_images установлен в True, эта опция добавляет описательный текст для каждого изображения.",
"Include a short answer to original query, generated by an LLM based on Tavily's search results.": "Включить короткий ответ на оригинальный запрос, созданный LLM на основе результатов поиска Tavily.",
"Include the cleaned and parsed HTML content of each search result.": "Включает очищенное и обработанное HTML содержимое каждого результата поиска.",
"A list of domains to specifically include in the search results.": "Список доменов для включения в результаты поиска.",
"A list of domains to specifically exclude from the search results.": "Список доменов, которые специально исключают из результатов поиска.",
"The URLs you want to extract with Tavily.": "URL, которые вы хотите извлечь с помощью Tavily.",
"Include a list of images extracted from the URLs in the response.": "Включить в ответ список изображений, извлеченных из URL.",
"Basic": "Базовый",
"Advanced": "Расширенные",
"General": "Общие положения",
"News": "Новости",
"Day": "День",
"Week": "Неделя",
"Month": "Месяц",
"Year": "Год",
"Day (Short)": "День (короткий)",
"Week (Short)": "Неделя (короткая)",
"Month (Short)": "Месяц (короткий)",
"Year (Short)": "Год (короткий)"
}

View File

@@ -0,0 +1,47 @@
{
"Search engine tailored for AI agents.": "Search engine tailored for AI agents.",
"\nFollow these steps to obtain your Tavily API Key:\n\n1. Visit [tavily](https://tavily.com/) and create an account.\n2. Log in and navigate to your dashboard.\n3. Locate and copy your API key from the dashboard.\n": "\nFollow these steps to obtain your Tavily API Key:\n\n1. Visit [tavily](https://tavily.com/) and create an account.\n2. Log in and navigate to your dashboard.\n3. Locate and copy your API key from the dashboard.\n",
"Search": "Search",
"Extract Content": "Extract Content",
"Search for data based on a query.": "Search for data based on a query.",
"Retrieve raw web content from specified URLs.": "Retrieve raw web content from specified URLs.",
"Search Query": "Search Query",
"Search Depth": "Search Depth",
"Topic": "Topic",
"Days": "Days",
"Time Range": "Time Range",
"Maximum Results": "Maximum Results",
"Include Images": "Include Images",
"Include Image Descriptions": "Include Image Descriptions",
"Include Answer": "Include Answer",
"Include Raw Content": "Include Raw Content",
"Include Domains": "Include Domains",
"Exclude Domains": "Exclude Domains",
"URLs": "URLs",
"The search query you want to execute with Tavily.": "The search query you want to execute with Tavily.",
"The depth of the search. It can be \"basic\" or \"advanced\".": "The depth of the search. It can be \"basic\" or \"advanced\".",
"The category of the search. This will determine which of our agents will be used for the search.": "The category of the search. This will determine which of our agents will be used for the search.",
"The number of days back from the current date to include in the search results. Only available when using the \"news\" search topic. Default is 3.": "The number of days back from the current date to include in the search results. Only available when using the \"news\" search topic. Default is 3.",
"The time range back from the current date to include in the search results.": "The time range back from the current date to include in the search results.",
"The maximum number of search results to return.": "The maximum number of search results to return.",
"Include a list of query-related images in the response.": "Include a list of query-related images in the response.",
"When include_images is set to True, this option adds descriptive text for each image.": "When include_images is set to True, this option adds descriptive text for each image.",
"Include a short answer to original query, generated by an LLM based on Tavily's search results.": "Include a short answer to original query, generated by an LLM based on Tavily's search results.",
"Include the cleaned and parsed HTML content of each search result.": "Include the cleaned and parsed HTML content of each search result.",
"A list of domains to specifically include in the search results.": "A list of domains to specifically include in the search results.",
"A list of domains to specifically exclude from the search results.": "A list of domains to specifically exclude from the search results.",
"The URLs you want to extract with Tavily.": "The URLs you want to extract with Tavily.",
"Include a list of images extracted from the URLs in the response.": "Include a list of images extracted from the URLs in the response.",
"Basic": "Basic",
"Advanced": "Advanced",
"General": "General",
"News": "News",
"Day": "Day",
"Week": "Week",
"Month": "Month",
"Year": "Year",
"Day (Short)": "Day (Short)",
"Week (Short)": "Week (Short)",
"Month (Short)": "Month (Short)",
"Year (Short)": "Year (Short)"
}

View File

@@ -0,0 +1,48 @@
{
"Tavily": "Tavily",
"Search engine tailored for AI agents.": "Search engine tailored for AI agents.",
"\nFollow these steps to obtain your Tavily API Key:\n\n1. Visit [tavily](https://tavily.com/) and create an account.\n2. Log in and navigate to your dashboard.\n3. Locate and copy your API key from the dashboard.\n": "\nFollow these steps to obtain your Tavily API Key:\n\n1. Visit [tavily](https://tavily.com/) and create an account.\n2. Log in and navigate to your dashboard.\n3. Locate and copy your API key from the dashboard.\n",
"Search": "Search",
"Extract Content": "Extract Content",
"Search for data based on a query.": "Search for data based on a query.",
"Retrieve raw web content from specified URLs.": "Retrieve raw web content from specified URLs.",
"Search Query": "Search Query",
"Search Depth": "Search Depth",
"Topic": "Topic",
"Days": "Days",
"Time Range": "Time Range",
"Maximum Results": "Maximum Results",
"Include Images": "Include Images",
"Include Image Descriptions": "Include Image Descriptions",
"Include Answer": "Include Answer",
"Include Raw Content": "Include Raw Content",
"Include Domains": "Include Domains",
"Exclude Domains": "Exclude Domains",
"URLs": "URLs",
"The search query you want to execute with Tavily.": "The search query you want to execute with Tavily.",
"The depth of the search. It can be \"basic\" or \"advanced\".": "The depth of the search. It can be \"basic\" or \"advanced\".",
"The category of the search. This will determine which of our agents will be used for the search.": "The category of the search. This will determine which of our agents will be used for the search.",
"The number of days back from the current date to include in the search results. Only available when using the \"news\" search topic. Default is 3.": "The number of days back from the current date to include in the search results. Only available when using the \"news\" search topic. Default is 3.",
"The time range back from the current date to include in the search results.": "The time range back from the current date to include in the search results.",
"The maximum number of search results to return.": "The maximum number of search results to return.",
"Include a list of query-related images in the response.": "Include a list of query-related images in the response.",
"When include_images is set to True, this option adds descriptive text for each image.": "When include_images is set to True, this option adds descriptive text for each image.",
"Include a short answer to original query, generated by an LLM based on Tavily's search results.": "Include a short answer to original query, generated by an LLM based on Tavily's search results.",
"Include the cleaned and parsed HTML content of each search result.": "Include the cleaned and parsed HTML content of each search result.",
"A list of domains to specifically include in the search results.": "A list of domains to specifically include in the search results.",
"A list of domains to specifically exclude from the search results.": "A list of domains to specifically exclude from the search results.",
"The URLs you want to extract with Tavily.": "The URLs you want to extract with Tavily.",
"Include a list of images extracted from the URLs in the response.": "Include a list of images extracted from the URLs in the response.",
"Basic": "Basic",
"Advanced": "Advanced",
"General": "General",
"News": "News",
"Day": "Day",
"Week": "Week",
"Month": "Month",
"Year": "Year",
"Day (Short)": "Day (Short)",
"Week (Short)": "Week (Short)",
"Month (Short)": "Month (Short)",
"Year (Short)": "Year (Short)"
}

View File

@@ -0,0 +1,47 @@
{
"Search engine tailored for AI agents.": "Search engine tailored for AI agents.",
"\nFollow these steps to obtain your Tavily API Key:\n\n1. Visit [tavily](https://tavily.com/) and create an account.\n2. Log in and navigate to your dashboard.\n3. Locate and copy your API key from the dashboard.\n": "\nFollow these steps to obtain your Tavily API Key:\n\n1. Visit [tavily](https://tavily.com/) and create an account.\n2. Log in and navigate to your dashboard.\n3. Locate and copy your API key from the dashboard.\n",
"Search": "搜索",
"Extract Content": "Extract Content",
"Search for data based on a query.": "Search for data based on a query.",
"Retrieve raw web content from specified URLs.": "Retrieve raw web content from specified URLs.",
"Search Query": "Search Query",
"Search Depth": "Search Depth",
"Topic": "Topic",
"Days": "Days",
"Time Range": "Time Range",
"Maximum Results": "Maximum Results",
"Include Images": "Include Images",
"Include Image Descriptions": "Include Image Descriptions",
"Include Answer": "Include Answer",
"Include Raw Content": "Include Raw Content",
"Include Domains": "Include Domains",
"Exclude Domains": "Exclude Domains",
"URLs": "URLs",
"The search query you want to execute with Tavily.": "The search query you want to execute with Tavily.",
"The depth of the search. It can be \"basic\" or \"advanced\".": "The depth of the search. It can be \"basic\" or \"advanced\".",
"The category of the search. This will determine which of our agents will be used for the search.": "The category of the search. This will determine which of our agents will be used for the search.",
"The number of days back from the current date to include in the search results. Only available when using the \"news\" search topic. Default is 3.": "The number of days back from the current date to include in the search results. Only available when using the \"news\" search topic. Default is 3.",
"The time range back from the current date to include in the search results.": "The time range back from the current date to include in the search results.",
"The maximum number of search results to return.": "The maximum number of search results to return.",
"Include a list of query-related images in the response.": "Include a list of query-related images in the response.",
"When include_images is set to True, this option adds descriptive text for each image.": "When include_images is set to True, this option adds descriptive text for each image.",
"Include a short answer to original query, generated by an LLM based on Tavily's search results.": "Include a short answer to original query, generated by an LLM based on Tavily's search results.",
"Include the cleaned and parsed HTML content of each search result.": "Include the cleaned and parsed HTML content of each search result.",
"A list of domains to specifically include in the search results.": "A list of domains to specifically include in the search results.",
"A list of domains to specifically exclude from the search results.": "A list of domains to specifically exclude from the search results.",
"The URLs you want to extract with Tavily.": "The URLs you want to extract with Tavily.",
"Include a list of images extracted from the URLs in the response.": "Include a list of images extracted from the URLs in the response.",
"Basic": "Basic",
"Advanced": "Advanced",
"General": "A. 概况",
"News": "News",
"Day": "Day",
"Week": "Week",
"Month": "Month",
"Year": "Year",
"Day (Short)": "Day (Short)",
"Week (Short)": "Week (Short)",
"Month (Short)": "Month (Short)",
"Year (Short)": "Year (Short)"
}

View File

@@ -0,0 +1,55 @@
import { httpClient, HttpMethod } from '@activepieces/pieces-common';
import { createPiece, PieceAuth } from '@activepieces/pieces-framework';
import { PieceCategory } from '@activepieces/shared';
import { searchAction } from './lib/actions/search';
import { extractAction } from './lib/actions/extract';
const markdownDescription = `
Follow these steps to obtain your Tavily API Key:
1. Visit [tavily](https://tavily.com/) and create an account.
2. Log in and navigate to your dashboard.
3. Locate and copy your API key from the dashboard.
`;
export const tavilyAuth = PieceAuth.SecretText({
description: markdownDescription,
displayName: 'API Key',
required: true,
validate: async ({ auth }) => {
try {
await httpClient.sendRequest({
method: HttpMethod.POST,
url: 'https://api.tavily.com/search',
headers: {
'Content-Type': 'application/json',
},
body: {
api_key: auth,
query: 'test',
search_depth: 'basic',
},
});
return {
valid: true,
};
} catch (e) {
return {
valid: false,
error: 'Invalid API Key',
};
}
},
});
export const tavily = createPiece({
displayName: 'Tavily',
description: 'Search engine tailored for AI agents.',
minimumSupportedRelease: '0.30.0',
logoUrl: 'https://cdn.activepieces.com/pieces/tavily.jpg',
categories: [PieceCategory.ARTIFICIAL_INTELLIGENCE],
authors: ['OsamaHaikal'],
auth: tavilyAuth,
actions: [searchAction, extractAction],
triggers: [],
});

View File

@@ -0,0 +1,39 @@
import { createAction, Property } from '@activepieces/pieces-framework';
import { httpClient, HttpMethod } from '@activepieces/pieces-common';
import { tavilyAuth } from '../../index';
export const extractAction = createAction({
name: 'extract',
displayName: 'Extract Content',
description: 'Retrieve raw web content from specified URLs.',
auth: tavilyAuth,
props: {
urls: Property.Array({
displayName: 'URLs',
description: 'The URLs you want to extract with Tavily.',
required: true,
}),
include_images: Property.Checkbox({
displayName: 'Include Images',
description: 'Include a list of images extracted from the URLs in the response.',
required: false,
defaultValue: false,
}),
},
async run({ auth, propsValue }) {
const response = await httpClient.sendRequest({
method: HttpMethod.POST,
url: 'https://api.tavily.com/extract',
headers: {
'Content-Type': 'application/json',
},
body: {
api_key: auth,
urls: propsValue.urls,
include_images: propsValue.include_images,
},
});
return response.body;
},
});

View File

@@ -0,0 +1,130 @@
import { createAction, Property } from '@activepieces/pieces-framework';
import { httpClient, HttpMethod } from '@activepieces/pieces-common';
import { tavilyAuth } from '../../index';
export const searchAction = createAction({
name: 'search',
displayName: 'Search',
description: 'Search for data based on a query.',
auth: tavilyAuth,
props: {
query: Property.LongText({
displayName: 'Search Query',
description: 'The search query you want to execute with Tavily.',
required: true,
}),
search_depth: Property.StaticDropdown({
displayName: 'Search Depth',
description: 'The depth of the search. It can be "basic" or "advanced".',
required: false,
defaultValue: 'basic',
options: {
options: [
{ label: 'Basic', value: 'basic' },
{ label: 'Advanced', value: 'advanced' },
],
},
}),
topic: Property.StaticDropdown({
displayName: 'Topic',
description: 'The category of the search. This will determine which of our agents will be used for the search.',
required: false,
defaultValue: 'general',
options: {
options: [
{ label: 'General', value: 'general' },
{ label: 'News', value: 'news' },
],
},
}),
days: Property.Number({
displayName: 'Days',
description: 'The number of days back from the current date to include in the search results. Only available when using the "news" search topic. Default is 3.',
required: false,
defaultValue: 3,
}),
time_range: Property.StaticDropdown({
displayName: 'Time Range',
description: 'The time range back from the current date to include in the search results.',
required: false,
options: {
options: [
{ label: 'Day', value: 'day' },
{ label: 'Week', value: 'week' },
{ label: 'Month', value: 'month' },
{ label: 'Year', value: 'year' },
{ label: 'Day (Short)', value: 'd' },
{ label: 'Week (Short)', value: 'w' },
{ label: 'Month (Short)', value: 'm' },
{ label: 'Year (Short)', value: 'y' },
],
},
}),
max_results: Property.Number({
displayName: 'Maximum Results',
description: 'The maximum number of search results to return.',
required: false,
defaultValue: 5,
}),
include_images: Property.Checkbox({
displayName: 'Include Images',
description: 'Include a list of query-related images in the response.',
required: false,
defaultValue: false,
}),
include_image_descriptions: Property.Checkbox({
displayName: 'Include Image Descriptions',
description: 'When include_images is set to True, this option adds descriptive text for each image.',
required: false,
defaultValue: false,
}),
include_answer: Property.Checkbox({
displayName: 'Include Answer',
description: 'Include a short answer to original query, generated by an LLM based on Tavily\'s search results.',
required: false,
defaultValue: false,
}),
include_raw_content: Property.Checkbox({
displayName: 'Include Raw Content',
description: 'Include the cleaned and parsed HTML content of each search result.',
required: false,
defaultValue: false,
}),
include_domains: Property.Array({
displayName: 'Include Domains',
description: 'A list of domains to specifically include in the search results.',
required: false,
}),
exclude_domains: Property.Array({
displayName: 'Exclude Domains',
description: 'A list of domains to specifically exclude from the search results.',
required: false,
}),
},
async run({ auth, propsValue }) {
const response = await httpClient.sendRequest({
method: HttpMethod.POST,
url: 'https://api.tavily.com/search',
headers: {
'Content-Type': 'application/json',
},
body: {
api_key: auth,
query: propsValue.query,
search_depth: propsValue.search_depth,
topic: propsValue.topic,
days: propsValue.days,
time_range: propsValue.time_range,
max_results: propsValue.max_results,
include_images: propsValue.include_images,
include_image_descriptions: propsValue.include_image_descriptions,
include_answer: propsValue.include_answer,
include_raw_content: propsValue.include_raw_content,
include_domains: propsValue.include_domains,
exclude_domains: propsValue.exclude_domains,
},
});
return response.body;
},
});

View File

@@ -0,0 +1,19 @@
{
"extends": "../../../../tsconfig.base.json",
"compilerOptions": {
"module": "commonjs",
"forceConsistentCasingInFileNames": true,
"strict": true,
"noImplicitOverride": true,
"noImplicitReturns": true,
"noFallthroughCasesInSwitch": true,
"noPropertyAccessFromIndexSignature": true
},
"files": [],
"include": [],
"references": [
{
"path": "./tsconfig.lib.json"
}
]
}

View File

@@ -0,0 +1,11 @@
{
"extends": "./tsconfig.json",
"compilerOptions": {
"module": "commonjs",
"outDir": "../../../../dist/out-tsc",
"declaration": true,
"types": ["node"]
},
"exclude": ["jest.config.ts", "src/**/*.spec.ts", "src/**/*.test.ts"],
"include": ["src/**/*.ts"]
}