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,7 @@
# pieces-textcortex-ai
This library was generated with [Nx](https://nx.dev).
## Building
Run `nx build pieces-thankster` to build the library.

View File

@@ -0,0 +1,10 @@
{
"name": "@activepieces/piece-textcortex-ai",
"version": "0.0.3",
"type": "commonjs",
"main": "./src/index.js",
"types": "./src/index.d.ts",
"dependencies": {
"tslib": "^2.3.0"
}
}

View File

@@ -0,0 +1,65 @@
{
"name": "pieces-textcortex-ai",
"$schema": "../../../../node_modules/nx/schemas/project-schema.json",
"sourceRoot": "packages/pieces/community/textcortex-ai/src",
"projectType": "library",
"release": {
"version": {
"manifestRootsToUpdate": [
"dist/{projectRoot}"
],
"currentVersionResolver": "git-tag",
"fallbackCurrentVersionResolver": "disk"
}
},
"tags": [],
"targets": {
"build": {
"executor": "@nx/js:tsc",
"outputs": [
"{options.outputPath}"
],
"options": {
"outputPath": "dist/packages/pieces/community/textcortex-ai",
"tsConfig": "packages/pieces/community/textcortex-ai/tsconfig.lib.json",
"packageJson": "packages/pieces/community/textcortex-ai/package.json",
"main": "packages/pieces/community/textcortex-ai/src/index.ts",
"assets": [
"packages/pieces/community/textcortex-ai/*.md",
{
"input": "packages/pieces/community/textcortex-ai/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/textcortex-ai",
"command": "bun install --no-save --silent"
},
"dependsOn": [
"^build"
]
}
}
}

View File

@@ -0,0 +1,203 @@
{
"AI-powered writing assistant for content creation, code generation, translations, and more using multiple AI models.": "KI-gestützter Schreibassistent für die Erstellung von Inhalten, Code-Generierung, Übersetzungen und mehr mit mehreren KI-Modellen.",
"To get your TextCortex API key:\n1. Sign up for free at https://textcortex.com\n2. Go to your account settings\n3. Navigate to the API Key section\n4. Generate and copy your API key\n\nYour API key should start with 'gAAAAAB...'": "Um Ihren TextCortex-API-Schlüssel zu erhalten:\n1. Melden Sie sich kostenlos unter https://textcortex.com\n2. Gehen Sie zu Ihren Kontoeinstellungen\n3. Navigieren Sie zum API-Schlüssel Abschnitt\n4. Generieren und kopieren Sie Ihren API-Schlüssel\n\nIhr API-Schlüssel sollte mit 'gAAAAAB...' beginnen",
"Send Prompt": "Anfrage senden",
"Create Paraphrase": "Paraphrase erstellen",
"Create Social Media Caption": "Social-Media-Titel erstellen",
"Create Translation": "Übersetzung erstellen",
"Create Code": "Code erstellen",
"Create Email": "E-Mail erstellen",
"Create Product Description": "Produkt-Beschreibung erstellen",
"Create Summary": "Zusammenfassung erstellen",
"Custom API Call": "Eigener API-Aufruf",
"Send a custom prompt to TextCortex AI and generate a completion.": "Senden Sie eine benutzerdefinierte Eingabeaufforderung an TextCortex KI und generieren Sie eine Fertigstellung.",
"Rewrite text while preserving its meaning.": "Text neu schreiben, ohne seine Bedeutung zu verlieren.",
"Generate a caption tailored for a specific social media channel (requires channel and keywords).": "Generieren Sie eine Beschriftung zugeschnitten auf einen bestimmten Social Media Kanal (erfordert Kanal und Schlüsselwörter).",
"Translate input text into a target language.": "Übersetze Eingabetext in eine Zielsprache.",
"Generate code in a specified programming language based on instructions.": "Generieren Sie Code in einer bestimmten Programmiersprache basierend auf Anweisungen.",
"Compose an email using context, recipient (\"To\"), and sender (\"From\") metadata.": "Erstellen Sie eine E-Mail unter Verwendung von Kontexten, Empfängern (\"An\") und Absender (\"Von\") Metadaten.",
"Create a product description using details like name, brand, category, features, keywords.": "Erstellen Sie eine Produktbeschreibung mit Details wie Name, Marke, Kategorie, Features, Schlüsselwörter.",
"Summarize input text to concise form.": "Zusammenfassung des Eingabetextes zur Zusammenfassung des Formulars.",
"Make a custom API call to a specific endpoint": "Einen benutzerdefinierten API-Aufruf an einen bestimmten Endpunkt machen",
"Text to Complete": "Vollständiger Text",
"Model": "Modell",
"Formality": "Formalität",
"Source Language": "Quellsprache",
"Target Language": "Zielsprache",
"Max Tokens": "Max. Token",
"Temperature": "Temperatur",
"Number of Outputs": "Anzahl der Ausgänge",
"Text to Paraphrase": "Text zu paraphrasieren",
"File ID": "Datei-ID",
"Mode": "Modus",
"Post Context": "Beitragskontext",
"Platform": "Plattform",
"Keywords": "Stichwörter",
"Text to Translate": "Zu übersetzender Text",
"Code Instructions": "Code-Anweisungen",
"Programming Language": "Programmiersprache",
"Context": "Kontext",
"Email Mode": "Email Mode",
"To": "An",
"From": "Von",
"Instructions": "Anleitungen",
"Received Email": "Empfangene E-Mail",
"Purpose": "Zweck",
"Company Details": "Firmendetails",
"Product Name": "Produktname",
"Product Features": "Produkteigenschaften",
"Brand": "Marke",
"Category": "Kategorie",
"Text to Summarize": "Zusammenfassender Text",
"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)",
"Enter the beginning of your text and AI will complete it (e.g., \"The benefits of renewable energy are\")": "Geben Sie den Anfang Ihres Textes ein und die KI wird ihn vervollständigen (z. B. \"Die Vorteile erneuerbarer Energien sind\")",
"The language model to use": "Das zu verwendende Sprachmodell",
"The formality of the generated text": "Die Formalität des generierten Textes",
"The language of the source text": "Die Sprache des Quelltextes",
"The language for the generated text": "Die Sprache für den generierten Text",
"Maximum length of generated text (1-4096 tokens)": "Maximale Länge des generierten Textes (1-4096 Token)",
"Controls creativity (0.0-2.0). Higher values = more creative, lower = more focused.": "Kontrolliert Kreativität (0.0-2.0). Höhere Werte = kreativer, niedriger = fokussierter.",
"How many completions to generate (1-5)": "Wie viele Vervollständigungen generiert werden sollen (1-5)",
"The text to paraphrase": "Der zu paraphrasierende Text",
"ID of the file to paraphrase": "ID der zu paraphrasierenden Datei",
"Paraphrase mode": "Paraphrase-Modus",
"The language for the paraphrased text": "Die Sprache für den paraphrasierten Text",
"Maximum length of paraphrased text (1-4096 tokens)": "Maximale Länge des paraphrasierten Textes (1-4096 Token)",
"How many paraphrases to generate (1-5)": "Wie viele Paraphrasen generiert werden sollen (1-5)",
"Describe what you want to post about (e.g., \"Announcing our new product launch with 50% discount\")": "Beschreiben Sie, worüber Sie posten möchten (z.B.: \"Ankündigung unserer neuen Produkteinführung mit 50% Rabatt\")",
"The platform to generate a post for": "Die Plattform, um einen Beitrag zu erstellen für",
"Keywords to be included in the post (comma-separated)": "Stichworte, die in den Beitrag aufgenommen werden sollen (kommagetrennt)",
"The language for the caption": "Die Sprache für die Beschriftung",
"Maximum length of caption (1-4096 tokens)": "Maximale Länge der Unterschrift (1-4096 Token)",
"How many captions to generate (1-5)": "Wie viele Bildunterschriften generiert werden sollen (1-5)",
"The text to translate": "Der zu übersetzende Text",
"The language to translate to": "Die zu übersetzende Sprache",
"The language of the text to translate": "Die Sprache des zu übersetzenden Textes",
"Describe what you want the code to do (e.g., \"Create a function to sort an array\")": "Beschreiben Sie, was der Code tun soll (z.B. \"Erstelle eine Funktion um ein Array zu sortieren\")",
"Select the programming language for code generation": "Wählen Sie die Programmiersprache für die Codegenerierung",
"Maximum length of generated code (1-4096 tokens)": "Maximale Länge des generierten Codes (1-4096 Token)",
"How many code snippets to generate (1-5)": "Wie viele Code-Snippets generiert werden sollen (1-5)",
"Context of the email. For example, a summary, or a bullet point list": "Kontext der E-Mail. Zum Beispiel eine Zusammenfassung oder eine Kugelpunktliste",
"The style or tone to be used when writing": "Der Stil oder Ton, der beim Schreiben verwendet werden soll",
"The recipient of the email": "Der Empfänger der E-Mail",
"The sender of the email": "Der Absender der E-Mail",
"Instructions for the email. Available when mode = reply": "Anleitung für die E-Mail. Verfügbar im Modus = Antwort",
"The email that is being replied to. Available when mode = reply": "Die E-Mail, auf die geantwortet wird. Verfügbar wenn Modus = Antwort",
"Purpose of the email. Available when mode = cold": "Zweck der E-Mail. Verfügbar wenn Modus = kalt",
"Details regarding the company. Available when mode = customer_support": "Details zum Unternehmen. Verfügbar wenn mode = customer_support",
"The language for the email": "Die Sprache für die E-Mail",
"Maximum length of email (1-4096 tokens)": "Maximale Länge der E-Mail (1-4096 Token)",
"How many email drafts to generate (1-5)": "Anzahl der zu generierenden E-Mail-Entwürfe (1-5)",
"Name of the product": "Name des Produkts",
"Features of the product": "Eigenschaften des Produkts",
"Brand of the product": "Marke des Produkts",
"Category of the product": "Produktkategorie",
"Keywords to include in the product description (comma-separated)": "Keywords die in die Produktbeschreibung eingefügt werden sollen (durch Komma getrennt)",
"The language for the product description": "Die Sprache für die Produktbeschreibung",
"Maximum length of product description (1-4096 tokens)": "Maximale Länge der Produktbeschreibung (1-4096 Token)",
"How many descriptions to generate (1-5)": "Wie viele Beschreibungen generiert werden sollen (1-5)",
"The text to summarize": "Der zusammenzufassende Text",
"ID of the file to summarize": "ID der zusammenzufassenden Datei",
"Summarization mode": "Zusammenfassungs-Modus",
"The language for the summary": "Die Sprache für die Zusammenfassung",
"Maximum length of summary (1-4096 tokens)": "Maximale Länge der Zusammenfassung (1-4096 Token)",
"How many summaries to generate (1-5)": "Wie viele Zusammenfassungen generiert werden sollen (1-5)",
"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..",
"GPT-4o": "GPT-4o",
"GPT-4-1": "GPT-4-1",
"GPT-5": "GPT-5",
"GPT-4o Mini": "GPT-4o Mini",
"o1-mini": "o1-mini",
"o1-preview": "o1-Vorschau",
"o1": "o1",
"o3-mini": "o3-mini",
"o3": "o3",
"o4-mini": "o4-mini",
"Claude 3 Haiku": "Claude 3 Haiku",
"Claude 3.5 Sonnet": "Claude 3.5 Sonnet",
"Claude 3.7 Sonnet": "Claude 3.7 Sonnet",
"Claude 3.7 Sonnet Thinking": "Claude 3.7 Sonnet-Denken",
"Claude 4 Sonnet": "Claude 4 Sonnet",
"Claude 4 Sonnet Thinking": "Claude 4 Sonnet-Denken",
"Claude 3.5 Haiku": "Claude 3.5 Haiku",
"Mistral Small": "Mistral Klein",
"Mistral Large": "Mistral groß",
"DeepSeek R1": "DeepSeek R1",
"Kimi K2": "Kimi K2",
"Gemini 2.0 Flash": "Gemini 2.0 Blitz",
"Gemini 2.5 Pro": "Gemini 2.5 Pro",
"Gemini 2.5 Flash": "Gemini 2.5 Blitz",
"Gemini 2.5 Flash Thinking": "Gemini 2.5 Flash Thinking",
"Grok 2": "Groke 2",
"Grok 4": "Groke 4",
"Default": "Standard",
"More Formal": "Mehr Formal",
"Less Formal": "Weniger formell",
"Prefer More Formal": "Weitere Formal bevorzugen",
"Prefer Less Formal": "Bevorzuge weniger Formal",
"English (Default)": "Englisch (Standard)",
"Auto-detect": "Auto-Erkennung",
"Spanish": "Spanisch",
"French": "Französisch",
"German": "Deutsch",
"Italian": "Italienisch",
"Portuguese": "Portugiesisch",
"Dutch": "Niederländisch",
"Romanian": "Rumänisch",
"Ukrainian": "Ukrainische",
"Russian": "Russisch",
"Polish": "Polnisch",
"Turkish": "Türkisch",
"Czech": "Tschechisch",
"Hungarian": "Ungarisch",
"Bulgarian": "Bulgarisch",
"Croatian": "Kroatisch",
"Serbian": "Serbisch",
"Slovak": "Slowakisch",
"Slovenian": "Slovenian",
"Swedish": "Schwedisch",
"Norwegian": "Norwegisch",
"Danish": "Dänisch",
"Finnish": "Finnisch",
"Greek": "Griechisch",
"Arabic": "Arabisch",
"Hebrew": "Hebräisch",
"Hindi": "Hannah",
"Chinese (Simplified)": "Chinesisch (vereinfacht)",
"Japanese": "Japanisch",
"Korean": "Koreanisch",
"Thai": "Thailändisch",
"Vietnamese": "Vietnamese",
"Indonesian": "Indonesisch",
"Malay": "Malaiisch",
"English (American)": "Englisch (Amerikanisch)",
"English (British)": "Englisch (britisch)",
"Portuguese (Brazilian)": "Portugiesisch (Brasilianisch)",
"Embeddings": "Einbetten",
"Twitter": "Twitter",
"LinkedIn": "LinkedIn",
"Python": "Python",
"Java": "Jalta",
"JavaScript": "JavaScript",
"Go": "Gehe",
"PHP": "PHP",
"JS Regex": "JS Regex",
"Reply": "Antwort",
"General": "Allgemein",
"Customer Support": "Kundensupport",
"Cold Email": "Kalte E-Mail",
"From Bullets": "Von Kugeln",
"GET": "ERHALTEN",
"POST": "POST",
"PATCH": "PATCH",
"PUT": "PUT",
"DELETE": "LÖSCHEN",
"HEAD": "HEAD"
}

View File

@@ -0,0 +1,203 @@
{
"AI-powered writing assistant for content creation, code generation, translations, and more using multiple AI models.": "Asistente para la creación de contenidos, generación de código, traducciones y más usando múltiples modelos de IA.",
"To get your TextCortex API key:\n1. Sign up for free at https://textcortex.com\n2. Go to your account settings\n3. Navigate to the API Key section\n4. Generate and copy your API key\n\nYour API key should start with 'gAAAAAB...'": "Para obtener tu clave API de TextCortex:\n1. Regístrate gratis en https://textcortex.com\n2. Ve a la configuración de tu cuenta\n3. Navegue a la sección de Clave API\n4. Genere y copie su clave API\n\nSu clave API debería comenzar con 'gAAAAB...'",
"Send Prompt": "Enviar aviso",
"Create Paraphrase": "Crear frase",
"Create Social Media Caption": "Crear leyenda de redes sociales",
"Create Translation": "Crear traducción",
"Create Code": "Crear código",
"Create Email": "Crear Email",
"Create Product Description": "Crear descripción del producto",
"Create Summary": "Crear Resumen",
"Custom API Call": "Llamada API personalizada",
"Send a custom prompt to TextCortex AI and generate a completion.": "Envía un mensaje personalizado a la IA de TextCortex y genera una terminación.",
"Rewrite text while preserving its meaning.": "Reescribir texto conservando su significado.",
"Generate a caption tailored for a specific social media channel (requires channel and keywords).": "Generar una leyenda hecha a medida para un canal específico de redes sociales (requiere canal y palabras clave).",
"Translate input text into a target language.": "Traducir texto de entrada a un idioma de destino.",
"Generate code in a specified programming language based on instructions.": "Genera código en un lenguaje de programación específico basado en instrucciones.",
"Compose an email using context, recipient (\"To\"), and sender (\"From\") metadata.": "Redactar un correo electrónico utilizando el contexto, el destinatario (\"Para\"), y el remitente (\"De\") metadata.",
"Create a product description using details like name, brand, category, features, keywords.": "Cree una descripción del producto usando detalles como nombre, marca, categoría, características, palabras clave.",
"Summarize input text to concise form.": "Resumir texto de entrada a forma concisa.",
"Make a custom API call to a specific endpoint": "Hacer una llamada API personalizada a un extremo específico",
"Text to Complete": "Texto a completar",
"Model": "Modelo",
"Formality": "Formalidad",
"Source Language": "Idioma de origen",
"Target Language": "Idioma de destino",
"Max Tokens": "Tokens máximos",
"Temperature": "Temperatura",
"Number of Outputs": "Número de salidas",
"Text to Paraphrase": "Texto a frase de texto",
"File ID": "ID de archivo",
"Mode": "Modo",
"Post Context": "Contexto del mensaje",
"Platform": "Plataforma",
"Keywords": "Palabras clave",
"Text to Translate": "Texto a traducir",
"Code Instructions": "Instrucciones de código",
"Programming Language": "Lenguaje de programación",
"Context": "Contexto",
"Email Mode": "Email Mode",
"To": "A",
"From": "De",
"Instructions": "Instrucciones",
"Received Email": "Email recibido",
"Purpose": "Propósito",
"Company Details": "Detalles de la empresa",
"Product Name": "Producto",
"Product Features": "Características del producto",
"Brand": "Marca",
"Category": "Categoría",
"Text to Summarize": "Texto a resumir",
"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)",
"Enter the beginning of your text and AI will complete it (e.g., \"The benefits of renewable energy are\")": "Introduzca el principio de su texto y la IA lo completará (por ej., \"Los beneficios de la energía renovable son\")",
"The language model to use": "El modelo de idioma a usar",
"The formality of the generated text": "La formalidad del texto generado",
"The language of the source text": "El idioma del texto de origen",
"The language for the generated text": "El idioma para el texto generado",
"Maximum length of generated text (1-4096 tokens)": "Longitud máxima del texto generado (1-4096 tokens)",
"Controls creativity (0.0-2.0). Higher values = more creative, lower = more focused.": "Controla la creatividad (0.0-2.0). Valores más altos = más creativos, más bajos = más enfocados.",
"How many completions to generate (1-5)": "Cuántas completaciones a generar (1-5)",
"The text to paraphrase": "El texto a parafrasear",
"ID of the file to paraphrase": "ID del archivo a parafrasear",
"Paraphrase mode": "Modo de parafraseo",
"The language for the paraphrased text": "El idioma para el texto parafinado",
"Maximum length of paraphrased text (1-4096 tokens)": "Longitud máxima del texto parafinado (1-4096 tokens)",
"How many paraphrases to generate (1-5)": "Cuántas parásitos generar (1-5)",
"Describe what you want to post about (e.g., \"Announcing our new product launch with 50% discount\")": "Describe sobre lo que quieres publicar (por ejemplo, \"Anunciando nuestro nuevo lanzamiento de producto con 50% de descuento\")",
"The platform to generate a post for": "La plataforma para generar un post para",
"Keywords to be included in the post (comma-separated)": "Palabras clave que se incluirán en el post (separadas por comas)",
"The language for the caption": "El idioma para el título",
"Maximum length of caption (1-4096 tokens)": "Longitud máxima de la leyenda (1-4096 tokens)",
"How many captions to generate (1-5)": "Cuántos títulos generar (1-5)",
"The text to translate": "El texto a traducir",
"The language to translate to": "El idioma al que traducir",
"The language of the text to translate": "El idioma del texto a traducir",
"Describe what you want the code to do (e.g., \"Create a function to sort an array\")": "Describe lo que quieres que haga el código (por ejemplo, \"Crear una función para ordenar una matriz\")",
"Select the programming language for code generation": "Seleccione el lenguaje de programación para la generación de código",
"Maximum length of generated code (1-4096 tokens)": "Longitud máxima del código generado (1-4096 tokens)",
"How many code snippets to generate (1-5)": "Cuántos fragmentos de código se van a generar (1-5)",
"Context of the email. For example, a summary, or a bullet point list": "Contexto del correo electrónico. Por ejemplo, un resumen o una lista de puntos de bala",
"The style or tone to be used when writing": "El estilo o tono a usar al escribir",
"The recipient of the email": "El destinatario del correo electrónico",
"The sender of the email": "El remitente del correo electrónico",
"Instructions for the email. Available when mode = reply": "Instrucciones para el correo electrónico. Disponible cuando el modo = respuesta",
"The email that is being replied to. Available when mode = reply": "El correo electrónico al que está siendo respondido. Disponible cuando el modo = respuesta",
"Purpose of the email. Available when mode = cold": "Propósito del correo electrónico. Disponible cuando el modo = frío",
"Details regarding the company. Available when mode = customer_support": "Detalles de la empresa. Disponible cuando el modo = customer_support",
"The language for the email": "El idioma para el correo electrónico",
"Maximum length of email (1-4096 tokens)": "Longitud máxima del correo electrónico (1-4096 tokens)",
"How many email drafts to generate (1-5)": "Cuántos borradores de correo electrónico generar (1-5)",
"Name of the product": "Nombre del producto",
"Features of the product": "Características del producto",
"Brand of the product": "Marca del producto",
"Category of the product": "Categoría del producto",
"Keywords to include in the product description (comma-separated)": "Palabras clave a incluir en la descripción del producto (separadas por comas)",
"The language for the product description": "El idioma para la descripción del producto",
"Maximum length of product description (1-4096 tokens)": "Longitud máxima de la descripción del producto (1-4096 tokens)",
"How many descriptions to generate (1-5)": "Cuántas descripciones generar (1-5)",
"The text to summarize": "El texto a resumir",
"ID of the file to summarize": "ID del archivo a resumir",
"Summarization mode": "Modo de resumen",
"The language for the summary": "El idioma del resumen",
"Maximum length of summary (1-4096 tokens)": "Longitud máxima del resumen (1-4096 tokens)",
"How many summaries to generate (1-5)": "Cuántos resúmenes generar (1-5)",
"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.",
"GPT-4o": "GPT-4o",
"GPT-4-1": "GPT-4-1",
"GPT-5": "GPT-5",
"GPT-4o Mini": "GPT-4o Mini",
"o1-mini": "o1-mini",
"o1-preview": "o1-vista previa",
"o1": "o1",
"o3-mini": "o3-mini",
"o3": "o3",
"o4-mini": "o4-mini",
"Claude 3 Haiku": "Claude 3 Haiku",
"Claude 3.5 Sonnet": "Claude 3.5 Sonnet",
"Claude 3.7 Sonnet": "Claude 3.7 Sonnet",
"Claude 3.7 Sonnet Thinking": "Claude 3.7 Pensamiento onnet",
"Claude 4 Sonnet": "Claude 4 Sonnet",
"Claude 4 Sonnet Thinking": "Claude 4 Pensamiento onnet",
"Claude 3.5 Haiku": "Claude 3.5 Haiku",
"Mistral Small": "Mistral pequeña",
"Mistral Large": "Mistral grande",
"DeepSeek R1": "Profundizar R1",
"Kimi K2": "Kimi K2",
"Gemini 2.0 Flash": "Flash Gemini 2.0",
"Gemini 2.5 Pro": "Gemini 2.5 Pro",
"Gemini 2.5 Flash": "Flash Gemini 2.5",
"Gemini 2.5 Flash Thinking": "Pensamiento Flash Gemini 2.5",
"Grok 2": "Grok 2",
"Grok 4": "Grok 4",
"Default": "Por defecto",
"More Formal": "Más Formal",
"Less Formal": "Menos formales",
"Prefer More Formal": "Preferir más formal",
"Prefer Less Formal": "Preferir menos formal",
"English (Default)": "Inglés (por defecto)",
"Auto-detect": "Autodetectar",
"Spanish": "Español",
"French": "Francés",
"German": "Alemán",
"Italian": "Italiano",
"Portuguese": "Portugués",
"Dutch": "Holandés",
"Romanian": "Rumano",
"Ukrainian": "Ucraniano",
"Russian": "Ruso",
"Polish": "Polaco",
"Turkish": "Turco",
"Czech": "Checo",
"Hungarian": "Húngaro",
"Bulgarian": "Búlgaro",
"Croatian": "Croata",
"Serbian": "Serbio",
"Slovak": "Eslovaco",
"Slovenian": "Slovenian",
"Swedish": "Sueco",
"Norwegian": "Noruego",
"Danish": "Danés",
"Finnish": "Finlandés",
"Greek": "Griego",
"Arabic": "Árabe",
"Hebrew": "Hebreo",
"Hindi": "Hindú",
"Chinese (Simplified)": "Chino (simplificado)",
"Japanese": "Japonés",
"Korean": "Coreano",
"Thai": "Tailandés",
"Vietnamese": "Vietnamese",
"Indonesian": "Indonesio/a",
"Malay": "Malayo",
"English (American)": "Inglés (americano)",
"English (British)": "Inglés (británico)",
"Portuguese (Brazilian)": "Portugués (Brasil)",
"Embeddings": "Incrustaciones",
"Twitter": "Twitter",
"LinkedIn": "LinkedIn",
"Python": "Python",
"Java": "Java",
"JavaScript": "JavaScript",
"Go": "Ir",
"PHP": "PHP",
"JS Regex": "JS Regex",
"Reply": "Responder",
"General": "General",
"Customer Support": "Atención al cliente",
"Cold Email": "Email en frío",
"From Bullets": "De balas",
"GET": "RECOGER",
"POST": "POST",
"PATCH": "PATCH",
"PUT": "PUT",
"DELETE": "BORRAR",
"HEAD": "LIMPIO"
}

View File

@@ -0,0 +1,203 @@
{
"AI-powered writing assistant for content creation, code generation, translations, and more using multiple AI models.": "Assistant d'écriture pour la création de contenus, la génération de code, les traductions, et plus encore à l'aide de modèles IA multiples.",
"To get your TextCortex API key:\n1. Sign up for free at https://textcortex.com\n2. Go to your account settings\n3. Navigate to the API Key section\n4. Generate and copy your API key\n\nYour API key should start with 'gAAAAAB...'": "Pour obtenir votre clé d'API TextCortex:\n1. Inscrivez-vous gratuitement sur https://textcortex.com\n2. Allez dans les paramètres de votre compte\n3. Accédez à la section de la clé API\n4. Générez et copiez votre clé API\n\nVotre clé API devrait commencer par 'gAAAAAB...'",
"Send Prompt": "Envoyer une invitation",
"Create Paraphrase": "Créer Paraphrase",
"Create Social Media Caption": "Créer une légende des médias sociaux",
"Create Translation": "Créer une traduction",
"Create Code": "Créer un code",
"Create Email": "Créer un e-mail",
"Create Product Description": "Créer une description du produit",
"Create Summary": "Créer un résumé",
"Custom API Call": "Appel d'API personnalisé",
"Send a custom prompt to TextCortex AI and generate a completion.": "Envoyez une invite personnalisée à TextCortex AI et générez une complétion.",
"Rewrite text while preserving its meaning.": "Réécrivez le texte tout en préservant sa signification.",
"Generate a caption tailored for a specific social media channel (requires channel and keywords).": "Générer une légende adaptée à un canal de médias sociaux spécifique (nécessite un canal et des mots-clés).",
"Translate input text into a target language.": "Traduire le texte d'entrée dans une langue cible.",
"Generate code in a specified programming language based on instructions.": "Générer du code dans un langage de programmation spécifié basé sur les instructions.",
"Compose an email using context, recipient (\"To\"), and sender (\"From\") metadata.": "Écrivez un courriel en utilisant les métadonnées contextuelles du destinataire (\"À\") et de l'expéditeur.",
"Create a product description using details like name, brand, category, features, keywords.": "Créez une description du produit en utilisant des détails tels que le nom, la marque, la catégorie, les caractéristiques, les mots clés.",
"Summarize input text to concise form.": "Résumer le texte d'entrée en un formulaire concis.",
"Make a custom API call to a specific endpoint": "Passer un appel API personnalisé à un endpoint spécifique",
"Text to Complete": "Texte à compléter",
"Model": "Modélisation",
"Formality": "Formalité",
"Source Language": "Langue source",
"Target Language": "Langue cible",
"Max Tokens": "Tokens max",
"Temperature": "Température",
"Number of Outputs": "Nombre de Sorties",
"Text to Paraphrase": "Texte à Paraphrase",
"File ID": "ID du fichier",
"Mode": "Mode",
"Post Context": "Contexte de publication",
"Platform": "Plateforme",
"Keywords": "Mots clés",
"Text to Translate": "Texte à traduire",
"Code Instructions": "Instructions de code",
"Programming Language": "Langue de programmation",
"Context": "Contexte",
"Email Mode": "Email Mode",
"To": "À",
"From": "A partir de",
"Instructions": "Instructions",
"Received Email": "Courriel reçu",
"Purpose": "Objectif",
"Company Details": "Détails de la société",
"Product Name": "Nom du produit",
"Product Features": "Caractéristiques du produit",
"Brand": "Marque",
"Category": "Catégorie",
"Text to Summarize": "Texte à résumer",
"Method": "Méthode",
"Headers": "Headers",
"Query Parameters": "Paramètres de requête",
"Body": "Body",
"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)",
"Enter the beginning of your text and AI will complete it (e.g., \"The benefits of renewable energy are\")": "Entrez le début de votre texte et l'IA le complétera (par exemple, \"Les avantages de l'énergie renouvelable\")",
"The language model to use": "Le modèle de langue à utiliser",
"The formality of the generated text": "La formalité du texte généré",
"The language of the source text": "La langue du texte source",
"The language for the generated text": "La langue du texte généré",
"Maximum length of generated text (1-4096 tokens)": "Longueur maximale du texte généré (1-4096 jetons)",
"Controls creativity (0.0-2.0). Higher values = more creative, lower = more focused.": "Contrôle la créativité (0.0-2.0). Valeurs plus élevées = plus créatif, plus bas = plus ciblé.",
"How many completions to generate (1-5)": "Combien de complétions générer (1-5)",
"The text to paraphrase": "Le texte à paraphraser",
"ID of the file to paraphrase": "ID du fichier à paraphraser",
"Paraphrase mode": "Mode Paraphrase",
"The language for the paraphrased text": "La langue du texte paraphrasé",
"Maximum length of paraphrased text (1-4096 tokens)": "Longueur maximale du texte paraphrasé (1-4096 jetons)",
"How many paraphrases to generate (1-5)": "Combien de paraphrases générer (1-5)",
"Describe what you want to post about (e.g., \"Announcing our new product launch with 50% discount\")": "Décrivez ce que vous voulez publier (par exemple, \"Annonce de notre nouveau lancement avec 50 % de réduction\")",
"The platform to generate a post for": "La plateforme pour générer un post pour",
"Keywords to be included in the post (comma-separated)": "Mots-clés à inclure dans le message (séparés par des virgules)",
"The language for the caption": "La langue de la légende",
"Maximum length of caption (1-4096 tokens)": "Longueur maximale de la légende (1-4096 jetons)",
"How many captions to generate (1-5)": "Combien de légendes générer (1-5)",
"The text to translate": "Le texte à traduire",
"The language to translate to": "La langue vers laquelle traduire",
"The language of the text to translate": "La langue du texte à traduire",
"Describe what you want the code to do (e.g., \"Create a function to sort an array\")": "Décrivez ce que vous voulez que le code fasse (par exemple, \"Créer une fonction pour trier un tableau\")",
"Select the programming language for code generation": "Sélectionnez le langage de programmation pour la génération de code",
"Maximum length of generated code (1-4096 tokens)": "Longueur maximale du code généré (1-4096 jetons)",
"How many code snippets to generate (1-5)": "Combien de modules de code générer (1-5)",
"Context of the email. For example, a summary, or a bullet point list": "Contexte de l'email. Par exemple, un résumé ou une liste de points à puces",
"The style or tone to be used when writing": "Le style ou la tonalité à utiliser lors de l'écriture",
"The recipient of the email": "Destinataire de l'e-mail",
"The sender of the email": "L'expéditeur de l'e-mail",
"Instructions for the email. Available when mode = reply": "Instructions pour l'email. Disponible quand mode = réponse",
"The email that is being replied to. Available when mode = reply": "L'e-mail auquel on répond. Disponible quand mode = réponse",
"Purpose of the email. Available when mode = cold": "But de l'e-mail. Disponible en mode = froid",
"Details regarding the company. Available when mode = customer_support": "Détails concernant l'entreprise. Disponible quand mode = customer_support",
"The language for the email": "La langue de l'e-mail",
"Maximum length of email (1-4096 tokens)": "Longueur maximale de l'email (1-4096 jetons)",
"How many email drafts to generate (1-5)": "Combien de brouillons d'email générer (1-5)",
"Name of the product": "Nom du produit",
"Features of the product": "Caractéristiques du produit",
"Brand of the product": "Marque du produit",
"Category of the product": "Catégorie du produit",
"Keywords to include in the product description (comma-separated)": "Mots clés à inclure dans la description du produit (séparés par des virgules)",
"The language for the product description": "La langue de la description du produit",
"Maximum length of product description (1-4096 tokens)": "Longueur maximale de la description du produit (1-4096 jetons)",
"How many descriptions to generate (1-5)": "Combien de descriptions générer (1-5)",
"The text to summarize": "Le texte à résumer",
"ID of the file to summarize": "ID du fichier à résumer",
"Summarization mode": "Mode de résumé",
"The language for the summary": "La langue du résumé",
"Maximum length of summary (1-4096 tokens)": "Longueur maximale du résumé (1-4096 jetons)",
"How many summaries to generate (1-5)": "Combien de résumés générer (1-5)",
"Authorization headers are injected automatically from your connection.": "Les headers 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.",
"GPT-4o": "GPT-4o",
"GPT-4-1": "GPT-4-1",
"GPT-5": "GPT-5",
"GPT-4o Mini": "GPT-4o Mini",
"o1-mini": "o1-mini",
"o1-preview": "o1-aperçu",
"o1": "o1",
"o3-mini": "o3-mini",
"o3": "on3",
"o4-mini": "o4-mini",
"Claude 3 Haiku": "Claude 3 Haiku",
"Claude 3.5 Sonnet": "Claude 3.5 Sonnet",
"Claude 3.7 Sonnet": "Claude 3.7 Sonnet",
"Claude 3.7 Sonnet Thinking": "Pensée de Sonnet Claude 3.7",
"Claude 4 Sonnet": "Claude 4 Sonnet",
"Claude 4 Sonnet Thinking": "Pensée Claude 4 Sonnet",
"Claude 3.5 Haiku": "Claude 3.5 Haiku",
"Mistral Small": "Mistral petit",
"Mistral Large": "Mistral Grand",
"DeepSeek R1": "DeepSeek R1",
"Kimi K2": "Kimi K2",
"Gemini 2.0 Flash": "Flash Gemini 2.0",
"Gemini 2.5 Pro": "Gemini 2.5 Pro",
"Gemini 2.5 Flash": "Flash Gemini 2.5",
"Gemini 2.5 Flash Thinking": "Pensée Flash Gemini 2.5",
"Grok 2": "Grotte 2",
"Grok 4": "Grotte 4",
"Default": "Par défaut",
"More Formal": "Plus Formale",
"Less Formal": "Moins Formal",
"Prefer More Formal": "Préférer plus de forme",
"Prefer Less Formal": "Préférer moins formelle",
"English (Default)": "Anglais (par défaut)",
"Auto-detect": "Détection automatique",
"Spanish": "Espagnol",
"French": "Français",
"German": "Allemand",
"Italian": "Italien",
"Portuguese": "Portugais",
"Dutch": "Néerlandais",
"Romanian": "Roumain",
"Ukrainian": "Ukrainien",
"Russian": "Russe",
"Polish": "Polonais",
"Turkish": "Turc",
"Czech": "Tchèque",
"Hungarian": "Hongrois",
"Bulgarian": "Bulgare",
"Croatian": "Croate",
"Serbian": "Serbe",
"Slovak": "Slovaque",
"Slovenian": "Slovenian",
"Swedish": "Suédois",
"Norwegian": "Norvégien",
"Danish": "Danois",
"Finnish": "Finlandais",
"Greek": "Grecque",
"Arabic": "Arabe",
"Hebrew": "Hébreu",
"Hindi": "Hindi",
"Chinese (Simplified)": "Chinois (simplifié)",
"Japanese": "Japonais",
"Korean": "Coréen",
"Thai": "Thaï",
"Vietnamese": "Vietnamese",
"Indonesian": "Indonésien",
"Malay": "Malais",
"English (American)": "Anglais (Américain)",
"English (British)": "Anglais (britannique)",
"Portuguese (Brazilian)": "Portugais (Brésilan)",
"Embeddings": "Intégrer",
"Twitter": "Twitter",
"LinkedIn": "LinkedIn",
"Python": "Python",
"Java": "Java",
"JavaScript": "JavaScript",
"Go": "Aller",
"PHP": "PHP",
"JS Regex": "JS Regex",
"Reply": "Répondre",
"General": "Général",
"Customer Support": "Support client",
"Cold Email": "Courriel froid",
"From Bullets": "À partir de balles",
"GET": "GET",
"POST": "POST",
"PATCH": "PATCH",
"PUT": "PUT",
"DELETE": "DELETE",
"HEAD": "HEAD"
}

View File

@@ -0,0 +1,203 @@
{
"AI-powered writing assistant for content creation, code generation, translations, and more using multiple AI models.": "複数のAIモデルを使用してコンテンツの作成、コード生成、翻訳などを行うAIによるライティングアシスタントです。",
"To get your TextCortex API key:\n1. Sign up for free at https://textcortex.com\n2. Go to your account settings\n3. Navigate to the API Key section\n4. Generate and copy your API key\n\nYour API key should start with 'gAAAAAB...'": "To get your TextCortex API key:\n1. Sign up for free at https://textcortex.com\n2. Go to your account settings\n3. Navigate to the API Key section\n4. Generate and copy your API key\n\nYour API key should start with 'gAAAAAB...'",
"Send Prompt": "Send Prompt",
"Create Paraphrase": "パラフレーズを作成",
"Create Social Media Caption": "ソーシャルメディアのキャプションを作成",
"Create Translation": "翻訳を作成",
"Create Code": "コードを作成",
"Create Email": "メールアドレスを作成",
"Create Product Description": "商品説明を作成",
"Create Summary": "サマリーを作成",
"Custom API Call": "カスタムAPI通話",
"Send a custom prompt to TextCortex AI and generate a completion.": "カスタムプロンプトを TextCortex AI に送信し、完了を生成します。",
"Rewrite text while preserving its meaning.": "意味を保ちながらテキストを書き直す。",
"Generate a caption tailored for a specific social media channel (requires channel and keywords).": "特定のソーシャルメディアチャンネルに合わせて調整されたキャプションを生成します(チャンネルとキーワードが必要)。",
"Translate input text into a target language.": "入力テキストをターゲット言語に翻訳します。",
"Generate code in a specified programming language based on instructions.": "指定されたプログラミング言語で命令に基づいてコードを生成します。",
"Compose an email using context, recipient (\"To\"), and sender (\"From\") metadata.": "コンテキスト、受信者(「宛先」)、および送信者(「送信者」)のメタデータを使用してメールを作成します。",
"Create a product description using details like name, brand, category, features, keywords.": "名前、ブランド、カテゴリ、機能、キーワードなどの詳細を使用して製品説明を作成します。",
"Summarize input text to concise form.": "入力テキストを簡潔なフォームにまとめます。",
"Make a custom API call to a specific endpoint": "特定のエンドポイントへのカスタム API コールを実行します。",
"Text to Complete": "完了するテキスト",
"Model": "モデル",
"Formality": "Formatality",
"Source Language": "ソース言語",
"Target Language": "翻訳先言語",
"Max Tokens": "最大トークン",
"Temperature": "温度",
"Number of Outputs": "出力数",
"Text to Paraphrase": "テキストをパラフレーズにする",
"File ID": "ファイルID",
"Mode": "モード",
"Post Context": "投稿の内容",
"Platform": "プラットフォーム",
"Keywords": "キーワード",
"Text to Translate": "翻訳するテキスト",
"Code Instructions": "コードの説明",
"Programming Language": "プログラミング言語",
"Context": "コンテキスト",
"Email Mode": "Email Mode",
"To": "終了日",
"From": "差出人:",
"Instructions": "説明",
"Received Email": "受信メール",
"Purpose": "目的",
"Company Details": "会社詳細",
"Product Name": "商品名",
"Product Features": "製品の特徴",
"Brand": "ブランド",
"Category": "カテゴリ",
"Text to Summarize": "要約するテキスト",
"Method": "方法",
"Headers": "ヘッダー",
"Query Parameters": "クエリパラメータ",
"Body": "本文",
"Response is Binary ?": "応答はバイナリですか?",
"No Error on Failure": "失敗時にエラーはありません",
"Timeout (in seconds)": "タイムアウト(秒)",
"Enter the beginning of your text and AI will complete it (e.g., \"The benefits of renewable energy are\")": "テキストの先頭を入力すると、AIが完了します「再生可能エネルギーの利点」",
"The language model to use": "使用する言語モデル",
"The formality of the generated text": "生成されたテキストの形式性",
"The language of the source text": "原文の言語",
"The language for the generated text": "生成されたテキストの言語",
"Maximum length of generated text (1-4096 tokens)": "生成されたテキストの最大長さ (1-4096トークン)",
"Controls creativity (0.0-2.0). Higher values = more creative, lower = more focused.": "創造性(0.0-2.0)をコントロールします。値が大きいほどクリエイティブになり、低いほうが集中します。",
"How many completions to generate (1-5)": "生成する完了数 (1-5)",
"The text to paraphrase": "言い換えるテキスト",
"ID of the file to paraphrase": "言い換えるファイルの ID",
"Paraphrase mode": "Paraphraseモード",
"The language for the paraphrased text": "言い換えテキストの言語",
"Maximum length of paraphrased text (1-4096 tokens)": "言い換えテキストの最大長さ (1-4096トークン)",
"How many paraphrases to generate (1-5)": "何個の言い換えを生成するか (1-5)",
"Describe what you want to post about (e.g., \"Announcing our new product launch with 50% discount\")": "投稿したい内容を記載してください「新製品の発売を告知して50割引」",
"The platform to generate a post for": "投稿を生成するためのプラットフォーム",
"Keywords to be included in the post (comma-separated)": "ポストに含めるキーワード (カンマ区切り)",
"The language for the caption": "キャプションの言語",
"Maximum length of caption (1-4096 tokens)": "キャプションの最大長(1-4096トークン)",
"How many captions to generate (1-5)": "生成するキャプションの数 (1-5)",
"The text to translate": "翻訳するテキスト",
"The language to translate to": "翻訳する言語",
"The language of the text to translate": "翻訳するテキストの言語",
"Describe what you want the code to do (e.g., \"Create a function to sort an array\")": "コードに何をさせたいのかを記述してください(例:「配列をソートする関数を作成する」)",
"Select the programming language for code generation": "コード生成用のプログラミング言語を選択してください",
"Maximum length of generated code (1-4096 tokens)": "生成されたコードの最大長 (1-4096 トークン)",
"How many code snippets to generate (1-5)": "生成するコードスニペットの数(1-5)",
"Context of the email. For example, a summary, or a bullet point list": "メールのコンテキスト。例えば、サマリーや箇条書きリストなど。",
"The style or tone to be used when writing": "書くときに使用するスタイルまたは音",
"The recipient of the email": "メールの受信者",
"The sender of the email": "メールの送信者",
"Instructions for the email. Available when mode = reply": "メールの指示。mode = 返信時に使用できます。",
"The email that is being replied to. Available when mode = reply": "The email that is being reply to. available when mode = reply",
"Purpose of the email. Available when mode = cold": "メールの目的: mode = cold",
"Details regarding the company. Available when mode = customer_support": "会社に関する詳細。mode = customer_support",
"The language for the email": "電子メールの言語",
"Maximum length of email (1-4096 tokens)": "メールの最大長1-4096トークン",
"How many email drafts to generate (1-5)": "作成する電子メールのドラフト数(1-5)",
"Name of the product": "製品名",
"Features of the product": "製品の特徴",
"Brand of the product": "製品のブランド",
"Category of the product": "製品のカテゴリ",
"Keywords to include in the product description (comma-separated)": "製品説明に含めるキーワード (カンマ区切り)",
"The language for the product description": "製品説明の言語",
"Maximum length of product description (1-4096 tokens)": "Maximum length of product description (1-4096 tokens)",
"How many descriptions to generate (1-5)": "いくつの説明を生成するか (1-5)",
"The text to summarize": "要約するテキスト",
"ID of the file to summarize": "要約するファイルの ID",
"Summarization mode": "概要モード",
"The language for the summary": "概要の言語",
"Maximum length of summary (1-4096 tokens)": "要約の最大長さ (1-4096 トークン)",
"How many summaries to generate (1-5)": "生成するサマリーの数 (1-5)",
"Authorization headers are injected automatically from your connection.": "認証ヘッダは接続から自動的に注入されます。",
"Enable for files like PDFs, images, etc..": "PDF、画像などのファイルを有効にします。",
"GPT-4o": "GPT-4o",
"GPT-4-1": "GPT-4-1",
"GPT-5": "GPT-5",
"GPT-4o Mini": "GPT-4o Mini",
"o1-mini": "o1-mini",
"o1-preview": "o1-preview",
"o1": "o1",
"o3-mini": "o3-mini",
"o3": "o3",
"o4-mini": "o4-mini",
"Claude 3 Haiku": "クロード3俳句format@@0",
"Claude 3.5 Sonnet": "Claude 3.5 Sonnet",
"Claude 3.7 Sonnet": "Claude 3.7 Sonnet",
"Claude 3.7 Sonnet Thinking": "Claude 3.7 Sonnet Thinking",
"Claude 4 Sonnet": "Claude 4 Sonnet",
"Claude 4 Sonnet Thinking": "クロード・ソネット・シンキング",
"Claude 3.5 Haiku": "Claude 3.5 Haiku",
"Mistral Small": "小さいミストラル",
"Mistral Large": "ミストラル大",
"DeepSeek R1": "DeepSeek R1",
"Kimi K2": "Kimi K2",
"Gemini 2.0 Flash": "ジェミニ2.0フラッシュ",
"Gemini 2.5 Pro": "Gemini 2.5 Pro",
"Gemini 2.5 Flash": "Gemini 2.5 フラッシュ",
"Gemini 2.5 Flash Thinking": "ジェミニ2.5フラッシュThinking",
"Grok 2": "Grok 2",
"Grok 4": "Grok 4",
"Default": "デフォルト",
"More Formal": "もっとフォーマルな",
"Less Formal": "フォーマル度が低い",
"Prefer More Formal": "もっとフォーマルを好みます",
"Prefer Less Formal": "よりフォーマルなものを好みます",
"English (Default)": "日本語 (Default)",
"Auto-detect": "自動検出",
"Spanish": "スペイン語",
"French": "フランス語",
"German": "ドイツ語",
"Italian": "イタリア語",
"Portuguese": "ポルトガル語",
"Dutch": "オランダ語",
"Romanian": "ルーマニア語",
"Ukrainian": "ウクライナ語",
"Russian": "ロシア語",
"Polish": "ポーランド語",
"Turkish": "トルコ語",
"Czech": "チェコ語",
"Hungarian": "ハンガリー語",
"Bulgarian": "ブルガリア語",
"Croatian": "クロアチア語",
"Serbian": "セルビア語",
"Slovak": "スロバキア語",
"Slovenian": "Slovenian",
"Swedish": "スウェーデン語",
"Norwegian": "ノルウェー語",
"Danish": "デンマーク語",
"Finnish": "フィンランド語",
"Greek": "ギリシア語",
"Arabic": "アラビア文字",
"Hebrew": "ヘブライ文字",
"Hindi": "ヒンディー語",
"Chinese (Simplified)": "中国語 (簡体字)",
"Japanese": "日本語",
"Korean": "Korean",
"Thai": "タイ語",
"Vietnamese": "Vietnamese",
"Indonesian": "インドネシア語",
"Malay": "マレー語",
"English (American)": "英語 (アメリカ)",
"English (British)": "英語 (イギリス)",
"Portuguese (Brazilian)": "ポルトガル語 (ブラジル)",
"Embeddings": "埋め込み",
"Twitter": "Twitter",
"LinkedIn": "LinkedIn",
"Python": "Python",
"Java": "Java",
"JavaScript": "JavaScript",
"Go": "移動",
"PHP": "PHP",
"JS Regex": "JS Regex",
"Reply": "返信",
"General": "全般",
"Customer Support": "カスタマーサポート",
"Cold Email": "冷たいメール",
"From Bullets": "箇条書きから",
"GET": "取得",
"POST": "POST",
"PATCH": "PATCH",
"PUT": "PUT",
"DELETE": "削除",
"HEAD": "頭"
}

View File

@@ -0,0 +1,203 @@
{
"AI-powered writing assistant for content creation, code generation, translations, and more using multiple AI models.": "AI-aangedreven schrijfassistent voor het maken van inhoud, code-generatie, vertalingen en meer met behulp van meerdere AI-modellen.",
"To get your TextCortex API key:\n1. Sign up for free at https://textcortex.com\n2. Go to your account settings\n3. Navigate to the API Key section\n4. Generate and copy your API key\n\nYour API key should start with 'gAAAAAB...'": "Om je TextCortex API-sleutel te verkrijgen:\n1. Meld je gratis aan op https://textcortex.com\n2. Ga naar je accountinstellingen\n3. Navigeer naar de API-sleutelsectie\n4. Genereer en kopieer uw API-sleutel\n\nUw API-sleutel moet beginnen met 'gAAAAAB...'",
"Send Prompt": "Stuur vraag",
"Create Paraphrase": "Maak parafrase",
"Create Social Media Caption": "Onderschrift voor social media aanmaken",
"Create Translation": "Vertaling aanmaken",
"Create Code": "Code aanmaken",
"Create Email": "E-mail aanmaken",
"Create Product Description": "Maak productbeschrijving aan",
"Create Summary": "Samenvatting maken",
"Custom API Call": "Custom API Call",
"Send a custom prompt to TextCortex AI and generate a completion.": "Stuur een aangepaste prompt naar TextCortex AI en genereer een voltooiing.",
"Rewrite text while preserving its meaning.": "Herschrijf tekst terwijl de betekenis ervan intact blijft.",
"Generate a caption tailored for a specific social media channel (requires channel and keywords).": "Genereer een bijschrift op maat voor een specifiek sociaal mediakanaal (vereist kanaal en trefwoorden).",
"Translate input text into a target language.": "Vertaal invoertekst in een doeltaal.",
"Generate code in a specified programming language based on instructions.": "Genereer code in een opgegeven programmeertaal gebaseerd op instructies.",
"Compose an email using context, recipient (\"To\"), and sender (\"From\") metadata.": "Stel een e-mail op met behulp van context, ontvanger (\"To\") en afzender (\"Van\") metadata.",
"Create a product description using details like name, brand, category, features, keywords.": "Maak een productbeschrijving met behulp van details zoals naam, merk, categorie, functies, trefwoorden.",
"Summarize input text to concise form.": "Vat invoertekst samen tot beknopt formulier.",
"Make a custom API call to a specific endpoint": "Maak een aangepaste API call naar een specifiek eindpunt",
"Text to Complete": "Tekst om te voltooien",
"Model": "Model",
"Formality": "Formaliteit",
"Source Language": "Bron taal",
"Target Language": "Doel taal",
"Max Tokens": "Max Tokens",
"Temperature": "Temperatuur",
"Number of Outputs": "Aantal uitgangen",
"Text to Paraphrase": "Tekst naar parafrase",
"File ID": "Bestand ID",
"Mode": "Modus",
"Post Context": "Plaats Context",
"Platform": "Platform",
"Keywords": "Sleutelwoorden",
"Text to Translate": "Tekst te vertalen",
"Code Instructions": "Code instructies",
"Programming Language": "Programmeer taal",
"Context": "Context",
"Email Mode": "Email Mode",
"To": "tot",
"From": "van",
"Instructions": "Instructies",
"Received Email": "Ontvangen e-mail",
"Purpose": "Doel",
"Company Details": "Bedrijf Gegevens",
"Product Name": "Product Naam",
"Product Features": "Product functies",
"Brand": "Merk",
"Category": "categorie",
"Text to Summarize": "Tekst om samen te vatten",
"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)",
"Enter the beginning of your text and AI will complete it (e.g., \"The benefits of renewable energy are\")": "Voer het begin van uw tekst in en AI zal het voltooien (b.v. \"De voordelen van hernieuwbare energie\")",
"The language model to use": "Het te gebruiken taalmodel",
"The formality of the generated text": "De formaliteit van de gegenereerde tekst",
"The language of the source text": "De taal van de brontekst",
"The language for the generated text": "De taal voor de gegenereerde tekst",
"Maximum length of generated text (1-4096 tokens)": "Maximale lengte van gegenereerde tekst (1-4096 tokens)",
"Controls creativity (0.0-2.0). Higher values = more creative, lower = more focused.": "Bepaalt creativiteit (0,0-2.0). Hogere waarden = creatiever en lager = meer focus.",
"How many completions to generate (1-5)": "Hoeveel aanvullingen te genereren (1-5)",
"The text to paraphrase": "De tekst om te parafraseren",
"ID of the file to paraphrase": "ID van het bestand om te parafraseren",
"Paraphrase mode": "Paraphrase modus",
"The language for the paraphrased text": "De taal voor de geparafraseerde tekst",
"Maximum length of paraphrased text (1-4096 tokens)": "Maximale lengte van geparafraseerde tekst (1-4096 tokens)",
"How many paraphrases to generate (1-5)": "Hoeveel parafrasen te genereren (1-5)",
"Describe what you want to post about (e.g., \"Announcing our new product launch with 50% discount\")": "Beschrijf waar je iets over wilt posten (bv. \"Ons nieuwe product lanceren met 50% korting\")",
"The platform to generate a post for": "Het platform voor het genereren van een bericht voor",
"Keywords to be included in the post (comma-separated)": "Trefwoorden die moeten worden opgenomen in de post (komma gescheiden)",
"The language for the caption": "De taal voor het onderschrift",
"Maximum length of caption (1-4096 tokens)": "Maximale lengte van onderschrift (1-4096 tokens)",
"How many captions to generate (1-5)": "Hoeveel bijschriften te genereren (1-5)",
"The text to translate": "De te vertalen tekst",
"The language to translate to": "De taal om naar te vertalen",
"The language of the text to translate": "De taal van de te vertalen tekst",
"Describe what you want the code to do (e.g., \"Create a function to sort an array\")": "Beschrijf wat je wilt doen met de code (bijv. \"Maak een functie om een array te sorteren\")",
"Select the programming language for code generation": "Selecteer de programmeertaal voor code-generatie",
"Maximum length of generated code (1-4096 tokens)": "Maximale lengte van de gegenereerde code (1-4096 tokens)",
"How many code snippets to generate (1-5)": "Hoeveel code snippets te genereren (1-5)",
"Context of the email. For example, a summary, or a bullet point list": "Context van de e-mail. Bijvoorbeeld, een samenvatting of een lijst van opsommingstekens",
"The style or tone to be used when writing": "De stijl of toon die gebruikt wordt bij het schrijven",
"The recipient of the email": "De ontvanger van de e-mail",
"The sender of the email": "De afzender van de e-mail",
"Instructions for the email. Available when mode = reply": "Instructies voor de e-mail. Beschikbaar wanneer modus = antwoord",
"The email that is being replied to. Available when mode = reply": "De e-mail waarop wordt gereageerd. Beschikbaar wanneer modus = antwoord",
"Purpose of the email. Available when mode = cold": "Doel van de e-mail. Beschikbaar in de modus = koude",
"Details regarding the company. Available when mode = customer_support": "Details over het bedrijf. Beschikbaar in de modus = klantenservice",
"The language for the email": "De taal voor de e-mail",
"Maximum length of email (1-4096 tokens)": "Maximale lengte van e-mail (1-4096 tokens)",
"How many email drafts to generate (1-5)": "Hoeveel e-mailconcepten moeten worden gegenereerd (1-5)",
"Name of the product": "Naam van het product",
"Features of the product": "Eigenschappen van het product",
"Brand of the product": "Merk van het product",
"Category of the product": "Categorie van het product",
"Keywords to include in the product description (comma-separated)": "Trefwoorden om op te nemen in de productbeschrijving (komma gescheiden)",
"The language for the product description": "De taal voor de productbeschrijving",
"Maximum length of product description (1-4096 tokens)": "Maximale lengte van productbeschrijving (1-4096 tokens)",
"How many descriptions to generate (1-5)": "Hoeveel beschrijvingen te genereren (1-5)",
"The text to summarize": "De tekst om samen te vatten",
"ID of the file to summarize": "ID van het bestand om samen te vatten",
"Summarization mode": "Samenvatting modus",
"The language for the summary": "De taal van de samenvatting",
"Maximum length of summary (1-4096 tokens)": "Maximale lengte van samenvatting (1-4096 tokens)",
"How many summaries to generate (1-5)": "Hoeveel samenvattingen te genereren (1-5)",
"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..",
"GPT-4o": "GPT-4o",
"GPT-4-1": "GPT-4-1",
"GPT-5": "GPT-5",
"GPT-4o Mini": "GPT-4o Mini",
"o1-mini": "o1-mini",
"o1-preview": "o1-voorbeeld",
"o1": "u1",
"o3-mini": "o3-min",
"o3": "u3",
"o4-mini": "o4-mini",
"Claude 3 Haiku": "Claude 3 Haiku",
"Claude 3.5 Sonnet": "Claude 3.5 Sonnet",
"Claude 3.7 Sonnet": "Claude 3.7 Sonnet",
"Claude 3.7 Sonnet Thinking": "Claude 3.7 Sonnet Denken",
"Claude 4 Sonnet": "Claude 4 Sonnet",
"Claude 4 Sonnet Thinking": "Claude 4 Sonnet Denken",
"Claude 3.5 Haiku": "Claude 3.5 Haiku",
"Mistral Small": "Mistraal Klein",
"Mistral Large": "Mistraal Groot",
"DeepSeek R1": "DieepSeek R1",
"Kimi K2": "Kimi K2",
"Gemini 2.0 Flash": "Gemini 2.0 Flash",
"Gemini 2.5 Pro": "Gemini 2.5 Pro",
"Gemini 2.5 Flash": "Gemini 2.5 Flash",
"Gemini 2.5 Flash Thinking": "Thinking Gemini 2.5 Flash",
"Grok 2": "Grok 2",
"Grok 4": "Grok 4",
"Default": "Standaard",
"More Formal": "Meer Formeel",
"Less Formal": "Minder Formaal",
"Prefer More Formal": "Bij voorkeur meer formulieren",
"Prefer Less Formal": "Liever minder Formaal",
"English (Default)": "Engels (standaard)",
"Auto-detect": "Auto-detecteren",
"Spanish": "Spaans",
"French": "Frans",
"German": "Duits",
"Italian": "Italiaans",
"Portuguese": "Portugees",
"Dutch": "Nederlands",
"Romanian": "Roemeens",
"Ukrainian": "Oekraïens",
"Russian": "Russisch",
"Polish": "Pools",
"Turkish": "Turks",
"Czech": "Tsjechisch",
"Hungarian": "Hongaars",
"Bulgarian": "Bulgaars",
"Croatian": "Kroatisch",
"Serbian": "Servisch",
"Slovak": "Slowaaks",
"Slovenian": "Slovenian",
"Swedish": "Zweeds",
"Norwegian": "Noors",
"Danish": "Deens",
"Finnish": "Fins",
"Greek": "Grieks",
"Arabic": "Arabisch",
"Hebrew": "Hebreeuws",
"Hindi": "Hindoestani",
"Chinese (Simplified)": "Chinees (vereenvoudigd)",
"Japanese": "Afrikaans",
"Korean": "Koreaans",
"Thai": "Thaise",
"Vietnamese": "Vietnamese",
"Indonesian": "Indonesisch",
"Malay": "Maleisisch",
"English (American)": "Engels (Amerikaans)",
"English (British)": "Engels (Engels)",
"Portuguese (Brazilian)": "Portugees (Braziliaans)",
"Embeddings": "Insluiten",
"Twitter": "Twitter",
"LinkedIn": "LinkedIn",
"Python": "Python",
"Java": "Java",
"JavaScript": "JavaScript",
"Go": "Gaan",
"PHP": "PHP",
"JS Regex": "JS Regex",
"Reply": "Beantwoorden",
"General": "Algemeen",
"Customer Support": "Klantenservice",
"Cold Email": "Koude e-mail",
"From Bullets": "Uit opsommingstekens",
"GET": "KRIJG",
"POST": "POSTE",
"PATCH": "BEKIJK",
"PUT": "PUT",
"DELETE": "VERWIJDEREN",
"HEAD": "HOOFD"
}

View File

@@ -0,0 +1,203 @@
{
"AI-powered writing assistant for content creation, code generation, translations, and more using multiple AI models.": "Assistente de escrita com tecnologia IA para criação de conteúdo, geração de código, traduções e muito mais, usando vários modelos IA",
"To get your TextCortex API key:\n1. Sign up for free at https://textcortex.com\n2. Go to your account settings\n3. Navigate to the API Key section\n4. Generate and copy your API key\n\nYour API key should start with 'gAAAAAB...'": "Para obter sua chave de API do TextCortex:\n1. Cadastre-se gratuitamente em https://textcortex.com\n2. Vá para as configurações da sua conta\n3. Navegue para a seção de chave de API\n4. Gerar e copiar a sua chave de API\n\nA sua chave de API deve começar com 'gAAAAAAAB...'",
"Send Prompt": "Enviar Aviso",
"Create Paraphrase": "Criar Paraperase",
"Create Social Media Caption": "Criar Legenda de Mídia Social",
"Create Translation": "Criar tradução",
"Create Code": "Criar código",
"Create Email": "Criar E-mail",
"Create Product Description": "Criar Descrição do Produto",
"Create Summary": "Criar resumo",
"Custom API Call": "Chamada de API personalizada",
"Send a custom prompt to TextCortex AI and generate a completion.": "Envie um prompt personalizado para TextCortex AI e gere uma conclusão.",
"Rewrite text while preserving its meaning.": "Reescrever o texto preservando seu significado.",
"Generate a caption tailored for a specific social media channel (requires channel and keywords).": "Gerar legenda sob medida para um canal de mídia social específico (requer canal e palavras-chave).",
"Translate input text into a target language.": "Traduzir o texto de entrada para um idioma de destino.",
"Generate code in a specified programming language based on instructions.": "Gere código em uma linguagem de programação específica com base em instruções.",
"Compose an email using context, recipient (\"To\"), and sender (\"From\") metadata.": "Compor um email usando o contexto, destinatário (\"Para\") e remetente (\"De\") metadados.",
"Create a product description using details like name, brand, category, features, keywords.": "Crie uma descrição do produto usando detalhes como nome, marca, categoria, recursos, palavras-chave.",
"Summarize input text to concise form.": "Resuma texto de entrada para forma concisa.",
"Make a custom API call to a specific endpoint": "Faça uma chamada de API personalizada para um ponto de extremidade específico",
"Text to Complete": "Texto para completar",
"Model": "Modelo",
"Formality": "Formaldade",
"Source Language": "Língua Original",
"Target Language": "Idioma de destino",
"Max Tokens": "Max Tokens",
"Temperature": "Temperatura",
"Number of Outputs": "Número de Saídas",
"Text to Paraphrase": "Texto para Paraphrase",
"File ID": "ID do arquivo",
"Mode": "Modo",
"Post Context": "Contexto da postagem",
"Platform": "Plataforma",
"Keywords": "Palavras-chave",
"Text to Translate": "Texto para traduzir",
"Code Instructions": "Instruções de Código",
"Programming Language": "Linguagem de programação",
"Context": "Contexto",
"Email Mode": "Email Mode",
"To": "Para",
"From": "De",
"Instructions": "Instruções",
"Received Email": "E-mail Recebido",
"Purpose": "Objetivo",
"Company Details": "Detalhes da Empresa",
"Product Name": "Nome do Produto",
"Product Features": "Características do Produto",
"Brand": "Bandeira",
"Category": "categoria",
"Text to Summarize": "Texto para Resumir",
"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)",
"Enter the beginning of your text and AI will complete it (e.g., \"The benefits of renewable energy are\")": "Digite o início do seu texto e AI o completará (por exemplo, \"Os benefícios da energia renovável são\")",
"The language model to use": "O modelo de idioma a ser usado",
"The formality of the generated text": "A formalidade do texto gerado",
"The language of the source text": "O idioma do texto de origem",
"The language for the generated text": "O idioma para o texto gerado",
"Maximum length of generated text (1-4096 tokens)": "Comprimento máximo do texto gerado (1-4096 tokens)",
"Controls creativity (0.0-2.0). Higher values = more creative, lower = more focused.": "Controla a criatividade (0.0-2.0). Valores maiores = mais criativo, menor = mais focado.",
"How many completions to generate (1-5)": "Quantas conclusões gerar (1-5)",
"The text to paraphrase": "O texto parafraseando",
"ID of the file to paraphrase": "ID do arquivo para parafrasear",
"Paraphrase mode": "Modo parábola",
"The language for the paraphrased text": "A linguagem para o texto parafaxado",
"Maximum length of paraphrased text (1-4096 tokens)": "Comprimento máximo do texto paraphrased (1-4096 tokens)",
"How many paraphrases to generate (1-5)": "Quantos paraphrases para gerar (1-5)",
"Describe what you want to post about (e.g., \"Announcing our new product launch with 50% discount\")": "Descreva o que você quer publicar (ex.: \"Anunciando o lançamento do nosso novo produto com 50% de desconto\")",
"The platform to generate a post for": "A plataforma para gerar uma postagem",
"Keywords to be included in the post (comma-separated)": "Palavras-chave a serem incluídas no post (separadas por vírgulas)",
"The language for the caption": "O idioma da legenda",
"Maximum length of caption (1-4096 tokens)": "Comprimento máximo da legenda (1-4096 tokens)",
"How many captions to generate (1-5)": "Quantas legendas gerar (1-5)",
"The text to translate": "O texto a traduzir",
"The language to translate to": "O idioma a traduzir para",
"The language of the text to translate": "O idioma do texto a ser traduzido",
"Describe what you want the code to do (e.g., \"Create a function to sort an array\")": "Descreva o que você quer que o código faça (por exemplo, \"Crie uma função para classificar um array\")",
"Select the programming language for code generation": "Selecione a linguagem de programação para geração de código",
"Maximum length of generated code (1-4096 tokens)": "Comprimento máximo do código gerado (1-4096 tokens)",
"How many code snippets to generate (1-5)": "Quantos snippets de código para gerar (1-5)",
"Context of the email. For example, a summary, or a bullet point list": "Contexto do e-mail. Por exemplo, um resumo ou uma lista de marcadores",
"The style or tone to be used when writing": "O estilo ou tom a ser usado durante a escrita",
"The recipient of the email": "O destinatário do e-mail",
"The sender of the email": "O remetente do email",
"Instructions for the email. Available when mode = reply": "Instruções para o e-mail. Disponível quando o modo = responder",
"The email that is being replied to. Available when mode = reply": "O e-mail que está sendo respondido. Disponível quando o modo = resposta",
"Purpose of the email. Available when mode = cold": "Objetivo do e-mail. Disponível quando o modo = frio",
"Details regarding the company. Available when mode = customer_support": "Detalhes sobre a empresa. Disponível quando o modo = customer_support",
"The language for the email": "O idioma do e-mail",
"Maximum length of email (1-4096 tokens)": "Tamanho máximo de e-mail (1-4096 tokens)",
"How many email drafts to generate (1-5)": "Quantos rascunhos de e-mail para gerar (1-5)",
"Name of the product": "Nome do produto",
"Features of the product": "Características do produto",
"Brand of the product": "Marca do produto",
"Category of the product": "Categoria do produto",
"Keywords to include in the product description (comma-separated)": "Palavras-chave a incluir na descrição do produto (separadas por vírgulas)",
"The language for the product description": "O idioma para a descrição do produto",
"Maximum length of product description (1-4096 tokens)": "Comprimento máximo da descrição do produto (1-4096 tokens)",
"How many descriptions to generate (1-5)": "Quantas descrições gerar (1-5)",
"The text to summarize": "O texto para resumir",
"ID of the file to summarize": "ID do arquivo para resumir",
"Summarization mode": "Modo de resumo",
"The language for the summary": "O idioma para o resumo",
"Maximum length of summary (1-4096 tokens)": "Comprimento máximo do resumo (1-4096 tokens)",
"How many summaries to generate (1-5)": "Quantos resumos gerar (1-5)",
"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..",
"GPT-4o": "GPT-4o",
"GPT-4-1": "GPT-4-1",
"GPT-5": "GPT-5",
"GPT-4o Mini": "GPT-4o Mini",
"o1-mini": "o1-mini",
"o1-preview": "o1-pré-visualização",
"o1": "o1",
"o3-mini": "o3-mini",
"o3": "o3",
"o4-mini": "o4-mini",
"Claude 3 Haiku": "Claude 3 Haiku",
"Claude 3.5 Sonnet": "Sonnet de Claude 3.5",
"Claude 3.7 Sonnet": "Claude 3.7 Sonnet",
"Claude 3.7 Sonnet Thinking": "Pensamento da rede Claude 3.7",
"Claude 4 Sonnet": "Claude 4 Sonnet",
"Claude 4 Sonnet Thinking": "Pensamento da rede Claude 4",
"Claude 3.5 Haiku": "Claude 3,5 Haiku",
"Mistral Small": "Mistral Pequeno",
"Mistral Large": "Grande Mistral",
"DeepSeek R1": "DeepSeek R1",
"Kimi K2": "Kimi K2",
"Gemini 2.0 Flash": "Flash Gemini 2.0",
"Gemini 2.5 Pro": "Gemini 2.5 Pro",
"Gemini 2.5 Flash": "Flash Gemini 2.5",
"Gemini 2.5 Flash Thinking": "Pensamento de Flash Gemini 2.5",
"Grok 2": "Cinza 2",
"Grok 4": "Cinza 4",
"Default": "Padrão",
"More Formal": "Mais Formal",
"Less Formal": "Menos formal",
"Prefer More Formal": "Prefere mais formais",
"Prefer Less Formal": "Preferir menos Formal",
"English (Default)": "Português Brasileiro (Padrão)",
"Auto-detect": "Auto-detectar",
"Spanish": "espanhol",
"French": "francês",
"German": "alemão",
"Italian": "italiano",
"Portuguese": "Português",
"Dutch": "Neerlandês",
"Romanian": "romeno",
"Ukrainian": "ucraniano",
"Russian": "Russo",
"Polish": "Polonês",
"Turkish": "Turco",
"Czech": "tcheco",
"Hungarian": "Húngaro",
"Bulgarian": "búlgaro",
"Croatian": "croata",
"Serbian": "Sérvio",
"Slovak": "Eslovaco",
"Slovenian": "Slovenian",
"Swedish": "sueco",
"Norwegian": "norueguês",
"Danish": "Dinamarquês",
"Finnish": "Finlandês",
"Greek": "Grego",
"Arabic": "Arábico",
"Hebrew": "Hebraico",
"Hindi": "hindi",
"Chinese (Simplified)": "Chinês (simplificado)",
"Japanese": "japonês",
"Korean": "coreano",
"Thai": "Tailandês",
"Vietnamese": "Vietnamese",
"Indonesian": "indonésio",
"Malay": "malaio",
"English (American)": "Português (Brasil)",
"English (British)": "Português (Brasil)",
"Portuguese (Brazilian)": "Português (Brasileiro)",
"Embeddings": "Embutidos",
"Twitter": "Twitter",
"LinkedIn": "LinkedIn",
"Python": "Python",
"Java": "Java",
"JavaScript": "JavaScript",
"Go": "OK",
"PHP": "PHP",
"JS Regex": "JS Regex",
"Reply": "Responder",
"General": "Geral",
"Customer Support": "Atendimento ao cliente",
"Cold Email": "E-mail Fria",
"From Bullets": "De Balas",
"GET": "OBTER",
"POST": "POSTAR",
"PATCH": "COMPRAR",
"PUT": "COLOCAR",
"DELETE": "EXCLUIR",
"HEAD": "CABEÇA"
}

View File

@@ -0,0 +1,203 @@
{
"AI-powered writing assistant for content creation, code generation, translations, and more using multiple AI models.": "AI-powered writing assistant for content creation, code generation, translations, and more using multiple AI models.",
"To get your TextCortex API key:\n1. Sign up for free at https://textcortex.com\n2. Go to your account settings\n3. Navigate to the API Key section\n4. Generate and copy your API key\n\nYour API key should start with 'gAAAAAB...'": "To get your TextCortex API key:\n1. Sign up for free at https://textcortex.com\n2. Go to your account settings\n3. Navigate to the API Key section\n4. Generate and copy your API key\n\nYour API key should start with 'gAAAAAB...'",
"Send Prompt": "Send Prompt",
"Create Paraphrase": "Create Paraphrase",
"Create Social Media Caption": "Create Social Media Caption",
"Create Translation": "Create Translation",
"Create Code": "Create Code",
"Create Email": "Create Email",
"Create Product Description": "Create Product Description",
"Create Summary": "Create Summary",
"Custom API Call": "Custom API Call",
"Send a custom prompt to TextCortex AI and generate a completion.": "Send a custom prompt to TextCortex AI and generate a completion.",
"Rewrite text while preserving its meaning.": "Rewrite text while preserving its meaning.",
"Generate a caption tailored for a specific social media channel (requires channel and keywords).": "Generate a caption tailored for a specific social media channel (requires channel and keywords).",
"Translate input text into a target language.": "Translate input text into a target language.",
"Generate code in a specified programming language based on instructions.": "Generate code in a specified programming language based on instructions.",
"Compose an email using context, recipient (\"To\"), and sender (\"From\") metadata.": "Compose an email using context, recipient (\"To\"), and sender (\"From\") metadata.",
"Create a product description using details like name, brand, category, features, keywords.": "Create a product description using details like name, brand, category, features, keywords.",
"Summarize input text to concise form.": "Summarize input text to concise form.",
"Make a custom API call to a specific endpoint": "Make a custom API call to a specific endpoint",
"Text to Complete": "Text to Complete",
"Model": "Model",
"Formality": "Formality",
"Source Language": "Source Language",
"Target Language": "Target Language",
"Max Tokens": "Max Tokens",
"Temperature": "Temperature",
"Number of Outputs": "Number of Outputs",
"Text to Paraphrase": "Text to Paraphrase",
"File ID": "File ID",
"Mode": "Mode",
"Post Context": "Post Context",
"Platform": "Platform",
"Keywords": "Keywords",
"Text to Translate": "Text to Translate",
"Code Instructions": "Code Instructions",
"Programming Language": "Programming Language",
"Context": "Context",
"Email Mode": "Email Mode",
"To": "To",
"From": "From",
"Instructions": "Instructions",
"Received Email": "Received Email",
"Purpose": "Purpose",
"Company Details": "Company Details",
"Product Name": "Product Name",
"Product Features": "Product Features",
"Brand": "Brand",
"Category": "Category",
"Text to Summarize": "Text to Summarize",
"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)",
"Enter the beginning of your text and AI will complete it (e.g., \"The benefits of renewable energy are\")": "Enter the beginning of your text and AI will complete it (e.g., \"The benefits of renewable energy are\")",
"The language model to use": "The language model to use",
"The formality of the generated text": "The formality of the generated text",
"The language of the source text": "The language of the source text",
"The language for the generated text": "The language for the generated text",
"Maximum length of generated text (1-4096 tokens)": "Maximum length of generated text (1-4096 tokens)",
"Controls creativity (0.0-2.0). Higher values = more creative, lower = more focused.": "Controls creativity (0.0-2.0). Higher values = more creative, lower = more focused.",
"How many completions to generate (1-5)": "How many completions to generate (1-5)",
"The text to paraphrase": "The text to paraphrase",
"ID of the file to paraphrase": "ID of the file to paraphrase",
"Paraphrase mode": "Paraphrase mode",
"The language for the paraphrased text": "The language for the paraphrased text",
"Maximum length of paraphrased text (1-4096 tokens)": "Maximum length of paraphrased text (1-4096 tokens)",
"How many paraphrases to generate (1-5)": "How many paraphrases to generate (1-5)",
"Describe what you want to post about (e.g., \"Announcing our new product launch with 50% discount\")": "Describe what you want to post about (e.g., \"Announcing our new product launch with 50% discount\")",
"The platform to generate a post for": "The platform to generate a post for",
"Keywords to be included in the post (comma-separated)": "Keywords to be included in the post (comma-separated)",
"The language for the caption": "The language for the caption",
"Maximum length of caption (1-4096 tokens)": "Maximum length of caption (1-4096 tokens)",
"How many captions to generate (1-5)": "How many captions to generate (1-5)",
"The text to translate": "The text to translate",
"The language to translate to": "The language to translate to",
"The language of the text to translate": "The language of the text to translate",
"Describe what you want the code to do (e.g., \"Create a function to sort an array\")": "Describe what you want the code to do (e.g., \"Create a function to sort an array\")",
"Select the programming language for code generation": "Select the programming language for code generation",
"Maximum length of generated code (1-4096 tokens)": "Maximum length of generated code (1-4096 tokens)",
"How many code snippets to generate (1-5)": "How many code snippets to generate (1-5)",
"Context of the email. For example, a summary, or a bullet point list": "Context of the email. For example, a summary, or a bullet point list",
"The style or tone to be used when writing": "The style or tone to be used when writing",
"The recipient of the email": "The recipient of the email",
"The sender of the email": "The sender of the email",
"Instructions for the email. Available when mode = reply": "Instructions for the email. Available when mode = reply",
"The email that is being replied to. Available when mode = reply": "The email that is being replied to. Available when mode = reply",
"Purpose of the email. Available when mode = cold": "Purpose of the email. Available when mode = cold",
"Details regarding the company. Available when mode = customer_support": "Details regarding the company. Available when mode = customer_support",
"The language for the email": "The language for the email",
"Maximum length of email (1-4096 tokens)": "Maximum length of email (1-4096 tokens)",
"How many email drafts to generate (1-5)": "How many email drafts to generate (1-5)",
"Name of the product": "Name of the product",
"Features of the product": "Features of the product",
"Brand of the product": "Brand of the product",
"Category of the product": "Category of the product",
"Keywords to include in the product description (comma-separated)": "Keywords to include in the product description (comma-separated)",
"The language for the product description": "The language for the product description",
"Maximum length of product description (1-4096 tokens)": "Maximum length of product description (1-4096 tokens)",
"How many descriptions to generate (1-5)": "How many descriptions to generate (1-5)",
"The text to summarize": "The text to summarize",
"ID of the file to summarize": "ID of the file to summarize",
"Summarization mode": "Summarization mode",
"The language for the summary": "The language for the summary",
"Maximum length of summary (1-4096 tokens)": "Maximum length of summary (1-4096 tokens)",
"How many summaries to generate (1-5)": "How many summaries to generate (1-5)",
"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..",
"GPT-4o": "GPT-4o",
"GPT-4-1": "GPT-4-1",
"GPT-5": "GPT-5",
"GPT-4o Mini": "GPT-4o Mini",
"o1-mini": "o1-mini",
"o1-preview": "o1-preview",
"o1": "o1",
"o3-mini": "o3-mini",
"o3": "o3",
"o4-mini": "o4-mini",
"Claude 3 Haiku": "Claude 3 Haiku",
"Claude 3.5 Sonnet": "Claude 3.5 Sonnet",
"Claude 3.7 Sonnet": "Claude 3.7 Sonnet",
"Claude 3.7 Sonnet Thinking": "Claude 3.7 Sonnet Thinking",
"Claude 4 Sonnet": "Claude 4 Sonnet",
"Claude 4 Sonnet Thinking": "Claude 4 Sonnet Thinking",
"Claude 3.5 Haiku": "Claude 3.5 Haiku",
"Mistral Small": "Mistral Small",
"Mistral Large": "Mistral Large",
"DeepSeek R1": "DeepSeek R1",
"Kimi K2": "Kimi K2",
"Gemini 2.0 Flash": "Gemini 2.0 Flash",
"Gemini 2.5 Pro": "Gemini 2.5 Pro",
"Gemini 2.5 Flash": "Gemini 2.5 Flash",
"Gemini 2.5 Flash Thinking": "Gemini 2.5 Flash Thinking",
"Grok 2": "Grok 2",
"Grok 4": "Grok 4",
"Default": "Default",
"More Formal": "More Formal",
"Less Formal": "Less Formal",
"Prefer More Formal": "Prefer More Formal",
"Prefer Less Formal": "Prefer Less Formal",
"English (Default)": "English (Default)",
"Auto-detect": "Auto-detect",
"Spanish": "Spanish",
"French": "French",
"German": "German",
"Italian": "Italian",
"Portuguese": "Portuguese",
"Dutch": "Dutch",
"Romanian": "Romanian",
"Ukrainian": "Ukrainian",
"Russian": "Russian",
"Polish": "Polish",
"Turkish": "Turkish",
"Czech": "Czech",
"Hungarian": "Hungarian",
"Bulgarian": "Bulgarian",
"Croatian": "Croatian",
"Serbian": "Serbian",
"Slovak": "Slovak",
"Slovenian": "Slovenian",
"Swedish": "Swedish",
"Norwegian": "Norwegian",
"Danish": "Danish",
"Finnish": "Finnish",
"Greek": "Greek",
"Arabic": "Arabic",
"Hebrew": "Hebrew",
"Hindi": "Hindi",
"Chinese (Simplified)": "Chinese (Simplified)",
"Japanese": "Japanese",
"Korean": "Korean",
"Thai": "Thai",
"Vietnamese": "Vietnamese",
"Indonesian": "Indonesian",
"Malay": "Malay",
"English (American)": "English (American)",
"English (British)": "English (British)",
"Portuguese (Brazilian)": "Portuguese (Brazilian)",
"Embeddings": "Embeddings",
"Twitter": "Twitter",
"LinkedIn": "LinkedIn",
"Python": "Python",
"Java": "Java",
"JavaScript": "JavaScript",
"Go": "Go",
"PHP": "PHP",
"JS Regex": "JS Regex",
"Reply": "Reply",
"General": "General",
"Customer Support": "Customer Support",
"Cold Email": "Cold Email",
"From Bullets": "From Bullets",
"GET": "GET",
"POST": "POST",
"PATCH": "PATCH",
"PUT": "PUT",
"DELETE": "DELETE",
"HEAD": "HEAD"
}

View File

@@ -0,0 +1,203 @@
{
"AI-powered writing assistant for content creation, code generation, translations, and more using multiple AI models.": "AI-powered writing assistant for content creation, code generation, translations, and more using multiple AI models.",
"To get your TextCortex API key:\n1. Sign up for free at https://textcortex.com\n2. Go to your account settings\n3. Navigate to the API Key section\n4. Generate and copy your API key\n\nYour API key should start with 'gAAAAAB...'": "To get your TextCortex API key:\n1. Sign up for free at https://textcortex.com\n2. Go to your account settings\n3. Navigate to the API Key section\n4. Generate and copy your API key\n\nYour API key should start with 'gAAAAAB...'",
"Send Prompt": "Send Prompt",
"Create Paraphrase": "Create Paraphrase",
"Create Social Media Caption": "Create Social Media Caption",
"Create Translation": "Create Translation",
"Create Code": "Create Code",
"Create Email": "Create Email",
"Create Product Description": "Create Product Description",
"Create Summary": "Create Summary",
"Custom API Call": "自定义 API 呼叫",
"Send a custom prompt to TextCortex AI and generate a completion.": "Send a custom prompt to TextCortex AI and generate a completion.",
"Rewrite text while preserving its meaning.": "Rewrite text while preserving its meaning.",
"Generate a caption tailored for a specific social media channel (requires channel and keywords).": "Generate a caption tailored for a specific social media channel (requires channel and keywords).",
"Translate input text into a target language.": "Translate input text into a target language.",
"Generate code in a specified programming language based on instructions.": "Generate code in a specified programming language based on instructions.",
"Compose an email using context, recipient (\"To\"), and sender (\"From\") metadata.": "Compose an email using context, recipient (\"To\"), and sender (\"From\") metadata.",
"Create a product description using details like name, brand, category, features, keywords.": "Create a product description using details like name, brand, category, features, keywords.",
"Summarize input text to concise form.": "Summarize input text to concise form.",
"Make a custom API call to a specific endpoint": "将一个自定义 API 调用到一个特定的终点",
"Text to Complete": "Text to Complete",
"Model": "Model",
"Formality": "Formality",
"Source Language": "Source Language",
"Target Language": "Target Language",
"Max Tokens": "Max Tokens",
"Temperature": "Temperature",
"Number of Outputs": "Number of Outputs",
"Text to Paraphrase": "Text to Paraphrase",
"File ID": "File ID",
"Mode": "Mode",
"Post Context": "Post Context",
"Platform": "平台",
"Keywords": "Keywords",
"Text to Translate": "Text to Translate",
"Code Instructions": "Code Instructions",
"Programming Language": "Programming Language",
"Context": "Context",
"Email Mode": "Email Mode",
"To": "To",
"From": "From",
"Instructions": "Instructions",
"Received Email": "Received Email",
"Purpose": "Purpose",
"Company Details": "Company Details",
"Product Name": "Product Name",
"Product Features": "Product Features",
"Brand": "Brand",
"Category": "Category",
"Text to Summarize": "Text to Summarize",
"Method": "方法",
"Headers": "信头",
"Query Parameters": "查询参数",
"Body": "正文内容",
"Response is Binary ?": "Response is Binary ?",
"No Error on Failure": "失败时没有错误",
"Timeout (in seconds)": "超时(秒)",
"Enter the beginning of your text and AI will complete it (e.g., \"The benefits of renewable energy are\")": "Enter the beginning of your text and AI will complete it (e.g., \"The benefits of renewable energy are\")",
"The language model to use": "The language model to use",
"The formality of the generated text": "The formality of the generated text",
"The language of the source text": "The language of the source text",
"The language for the generated text": "The language for the generated text",
"Maximum length of generated text (1-4096 tokens)": "Maximum length of generated text (1-4096 tokens)",
"Controls creativity (0.0-2.0). Higher values = more creative, lower = more focused.": "Controls creativity (0.0-2.0). Higher values = more creative, lower = more focused.",
"How many completions to generate (1-5)": "How many completions to generate (1-5)",
"The text to paraphrase": "The text to paraphrase",
"ID of the file to paraphrase": "ID of the file to paraphrase",
"Paraphrase mode": "Paraphrase mode",
"The language for the paraphrased text": "The language for the paraphrased text",
"Maximum length of paraphrased text (1-4096 tokens)": "Maximum length of paraphrased text (1-4096 tokens)",
"How many paraphrases to generate (1-5)": "How many paraphrases to generate (1-5)",
"Describe what you want to post about (e.g., \"Announcing our new product launch with 50% discount\")": "Describe what you want to post about (e.g., \"Announcing our new product launch with 50% discount\")",
"The platform to generate a post for": "The platform to generate a post for",
"Keywords to be included in the post (comma-separated)": "Keywords to be included in the post (comma-separated)",
"The language for the caption": "The language for the caption",
"Maximum length of caption (1-4096 tokens)": "Maximum length of caption (1-4096 tokens)",
"How many captions to generate (1-5)": "How many captions to generate (1-5)",
"The text to translate": "The text to translate",
"The language to translate to": "The language to translate to",
"The language of the text to translate": "The language of the text to translate",
"Describe what you want the code to do (e.g., \"Create a function to sort an array\")": "Describe what you want the code to do (e.g., \"Create a function to sort an array\")",
"Select the programming language for code generation": "Select the programming language for code generation",
"Maximum length of generated code (1-4096 tokens)": "Maximum length of generated code (1-4096 tokens)",
"How many code snippets to generate (1-5)": "How many code snippets to generate (1-5)",
"Context of the email. For example, a summary, or a bullet point list": "Context of the email. For example, a summary, or a bullet point list",
"The style or tone to be used when writing": "The style or tone to be used when writing",
"The recipient of the email": "The recipient of the email",
"The sender of the email": "The sender of the email",
"Instructions for the email. Available when mode = reply": "Instructions for the email. Available when mode = reply",
"The email that is being replied to. Available when mode = reply": "The email that is being replied to. Available when mode = reply",
"Purpose of the email. Available when mode = cold": "Purpose of the email. Available when mode = cold",
"Details regarding the company. Available when mode = customer_support": "Details regarding the company. Available when mode = customer_support",
"The language for the email": "The language for the email",
"Maximum length of email (1-4096 tokens)": "Maximum length of email (1-4096 tokens)",
"How many email drafts to generate (1-5)": "How many email drafts to generate (1-5)",
"Name of the product": "Name of the product",
"Features of the product": "Features of the product",
"Brand of the product": "Brand of the product",
"Category of the product": "Category of the product",
"Keywords to include in the product description (comma-separated)": "Keywords to include in the product description (comma-separated)",
"The language for the product description": "The language for the product description",
"Maximum length of product description (1-4096 tokens)": "Maximum length of product description (1-4096 tokens)",
"How many descriptions to generate (1-5)": "How many descriptions to generate (1-5)",
"The text to summarize": "The text to summarize",
"ID of the file to summarize": "ID of the file to summarize",
"Summarization mode": "Summarization mode",
"The language for the summary": "The language for the summary",
"Maximum length of summary (1-4096 tokens)": "Maximum length of summary (1-4096 tokens)",
"How many summaries to generate (1-5)": "How many summaries to generate (1-5)",
"Authorization headers are injected automatically from your connection.": "授权头自动从您的连接中注入。",
"Enable for files like PDFs, images, etc..": "Enable for files like PDFs, images, etc..",
"GPT-4o": "GPT-4o",
"GPT-4-1": "GPT-4-1",
"GPT-5": "GPT-5",
"GPT-4o Mini": "GPT-4o Mini",
"o1-mini": "o1-mini",
"o1-preview": "o1-preview",
"o1": "o1",
"o3-mini": "o3-mini",
"o3": "o3",
"o4-mini": "o4-mini",
"Claude 3 Haiku": "Claude 3 Haiku",
"Claude 3.5 Sonnet": "Claude 3.5 Sonnet",
"Claude 3.7 Sonnet": "Claude 3.7 Sonnet",
"Claude 3.7 Sonnet Thinking": "Claude 3.7 Sonnet Thinking",
"Claude 4 Sonnet": "Claude 4 Sonnet",
"Claude 4 Sonnet Thinking": "Claude 4 Sonnet Thinking",
"Claude 3.5 Haiku": "Claude 3.5 Haiku",
"Mistral Small": "Mistral Small",
"Mistral Large": "Mistral Large",
"DeepSeek R1": "DeepSeek R1",
"Kimi K2": "Kimi K2",
"Gemini 2.0 Flash": "Gemini 2.0 Flash",
"Gemini 2.5 Pro": "Gemini 2.5 Pro",
"Gemini 2.5 Flash": "Gemini 2.5 Flash",
"Gemini 2.5 Flash Thinking": "Gemini 2.5 Flash Thinking",
"Grok 2": "Grok 2",
"Grok 4": "Grok 4",
"Default": "Default",
"More Formal": "More Formal",
"Less Formal": "Less Formal",
"Prefer More Formal": "Prefer More Formal",
"Prefer Less Formal": "Prefer Less Formal",
"English (Default)": "English (Default)",
"Auto-detect": "Auto-detect",
"Spanish": "Spanish",
"French": "French",
"German": "German",
"Italian": "Italian",
"Portuguese": "Portuguese",
"Dutch": "Dutch",
"Romanian": "Romanian",
"Ukrainian": "Ukrainian",
"Russian": "Russian",
"Polish": "Polish",
"Turkish": "Turkish",
"Czech": "Czech",
"Hungarian": "Hungarian",
"Bulgarian": "Bulgarian",
"Croatian": "Croatian",
"Serbian": "Serbian",
"Slovak": "Slovak",
"Slovenian": "Slovenian",
"Swedish": "Swedish",
"Norwegian": "Norwegian",
"Danish": "Danish",
"Finnish": "Finnish",
"Greek": "Greek",
"Arabic": "Arabic",
"Hebrew": "Hebrew",
"Hindi": "Hindi",
"Chinese (Simplified)": "Chinese (Simplified)",
"Japanese": "Japanese",
"Korean": "Korean",
"Thai": "Thai",
"Vietnamese": "Vietnamese",
"Indonesian": "Indonesian",
"Malay": "Malay",
"English (American)": "English (American)",
"English (British)": "English (British)",
"Portuguese (Brazilian)": "Portuguese (Brazilian)",
"Embeddings": "Embeddings",
"Twitter": "Twitter",
"LinkedIn": "LinkedIn",
"Python": "Python",
"Java": "Java",
"JavaScript": "JavaScript",
"Go": "Go",
"PHP": "PHP",
"JS Regex": "JS Regex",
"Reply": "Reply",
"General": "A. 概况",
"Customer Support": "Customer Support",
"Cold Email": "Cold Email",
"From Bullets": "From Bullets",
"GET": "获取",
"POST": "帖子",
"PATCH": "PATCH",
"PUT": "弹出",
"DELETE": "删除",
"HEAD": "黑色"
}

View File

@@ -0,0 +1,44 @@
import { createPiece } from '@activepieces/pieces-framework';
import { PieceCategory } from '@activepieces/shared';
import { createCustomApiCallAction } from '@activepieces/pieces-common';
import { textcortexAuth } from './lib/common/auth';
import { baseUrl } from './lib/common/common';
import { sendPrompt } from './lib/actions/send-prompt';
import { createParaphrase } from './lib/actions/create-paraphrase';
import { createSocialMediaCaption } from './lib/actions/create-social-caption';
import { createTranslation } from './lib/actions/create-translation';
import { createCode } from './lib/actions/create-code';
import { createEmail } from './lib/actions/create-email';
import { createProductDescription } from './lib/actions/create-product-description';
import { createSummary } from './lib/actions/create-summary';
export const textcortexAi = createPiece({
displayName: 'TextCortex AI',
description: 'AI-powered writing assistant for content creation, code generation, translations, and more using multiple AI models.',
auth: textcortexAuth,
minimumSupportedRelease: '0.36.1',
logoUrl: 'https://cdn.activepieces.com/pieces/textcortex-ai.png',
categories: [PieceCategory.ARTIFICIAL_INTELLIGENCE],
authors: ['owuzo', 'onyedikachi-david'],
actions: [
sendPrompt,
createParaphrase,
createSocialMediaCaption,
createTranslation,
createCode,
createEmail,
createProductDescription,
createSummary,
createCustomApiCallAction({
auth: textcortexAuth,
baseUrl: () => baseUrl,
authMapping: async (auth) => {
return {
Authorization: `Bearer ${auth.secret_text}`,
};
},
}),
],
triggers: [],
});

View File

@@ -0,0 +1,120 @@
import { createAction, Property } from '@activepieces/pieces-framework';
import { HttpMethod } from '@activepieces/pieces-common';
import { textcortexAuth } from '../common/auth';
import { textcortexCommon } from '../common/client';
import { PROGRAMMING_LANGUAGES, API_ENDPOINTS, AI_MODELS } from '../common/common';
export const createCode = createAction({
auth: textcortexAuth,
name: 'create_code',
displayName: 'Create Code',
description: 'Generate code in a specified programming language based on instructions.',
props: {
text: Property.LongText({
displayName: 'Code Instructions',
description: 'Describe what you want the code to do (e.g., "Create a function to sort an array")',
required: true,
}),
mode: Property.StaticDropdown({
displayName: 'Programming Language',
description: 'Select the programming language for code generation',
required: true,
options: {
options: PROGRAMMING_LANGUAGES,
},
}),
model: Property.StaticDropdown({
displayName: 'Model',
description: 'The language model to use',
required: false,
defaultValue: 'gemini-2-0-flash',
options: {
options: AI_MODELS,
},
}),
max_tokens: Property.Number({
displayName: 'Max Tokens',
description: 'Maximum length of generated code (1-4096 tokens)',
required: false,
defaultValue: 2048,
}),
temperature: Property.Number({
displayName: 'Temperature',
description: 'Controls creativity (0.0-2.0). Higher values = more creative, lower = more focused.',
required: false,
}),
n: Property.Number({
displayName: 'Number of Outputs',
description: 'How many code snippets to generate (1-5)',
required: false,
defaultValue: 1,
}),
},
async run(context) {
try {
const requestBody: any = {
text: context.propsValue.text,
mode: context.propsValue.mode,
};
if (context.propsValue.model && context.propsValue.model !== 'gemini-2-0-flash') {
requestBody.model = context.propsValue.model;
}
if (context.propsValue.max_tokens && context.propsValue.max_tokens !== 2048) {
requestBody.max_tokens = context.propsValue.max_tokens;
}
if (context.propsValue.temperature !== undefined) {
requestBody.temperature = context.propsValue.temperature;
}
if (context.propsValue.n && context.propsValue.n !== 1) {
requestBody.n = context.propsValue.n;
}
const response = await textcortexCommon.apiCall({
auth: context.auth,
method: HttpMethod.POST,
resourceUri: API_ENDPOINTS.CODES,
body: requestBody,
});
const outputs = response.body.data?.outputs || [];
const generatedCode = outputs.length > 0 ? outputs[0].text : response.body.text || response.body;
return {
success: true,
code: generatedCode,
outputs: outputs,
remaining_credits: response.body.data?.remaining_credits,
metadata: {
instruction: context.propsValue.text,
programming_language: context.propsValue.mode,
model: context.propsValue.model || 'gemini-2-0-flash',
parameters: {
max_tokens: context.propsValue.max_tokens || 2048,
temperature: context.propsValue.temperature,
n: context.propsValue.n || 1,
},
timestamp: new Date().toISOString(),
}
};
} catch (error: any) {
if (error.response?.status === 401) {
throw new Error('Invalid API key. Please check your TextCortex API key.');
}
if (error.response?.status === 429) {
throw new Error('Rate limit exceeded. Please wait and try again or upgrade your TextCortex plan.');
}
if (error.response?.status === 400) {
throw new Error('Invalid request. Please check your input parameters.');
}
if (error.message?.includes('network') || error.message?.includes('timeout')) {
throw new Error('Network error. Please check your connection and try again.');
}
throw new Error(`Code generation failed: ${error.message || 'Unknown error'}`);
}
},
});

View File

@@ -0,0 +1,244 @@
import { createAction, Property } from '@activepieces/pieces-framework';
import { HttpMethod } from '@activepieces/pieces-common';
import { textcortexAuth } from '../common/auth';
import { textcortexCommon } from '../common/client';
import { API_ENDPOINTS, AI_MODELS, FORMALITY_LEVELS, LANGUAGES } from '../common/common';
export const createEmail = createAction({
auth: textcortexAuth,
name: 'create_email',
displayName: 'Create Email',
description: 'Compose an email using context, recipient ("To"), and sender ("From") metadata.',
props: {
context: Property.LongText({
displayName: 'Context',
description: 'Context of the email. For example, a summary, or a bullet point list',
required: true,
}),
mode: Property.StaticDropdown({
displayName: 'Email Mode',
description: 'The style or tone to be used when writing',
required: false,
defaultValue: 'general',
options: {
options: [
{ label: 'Reply', value: 'reply' },
{ label: 'General', value: 'general' },
{ label: 'Customer Support', value: 'customer_support' },
{ label: 'Cold Email', value: 'cold' },
{ label: 'From Bullets', value: 'from_bullets' },
],
},
}),
to: Property.ShortText({
displayName: 'To',
description: 'The recipient of the email',
required: false,
}),
from: Property.ShortText({
displayName: 'From',
description: 'The sender of the email',
required: false,
}),
instructions: Property.LongText({
displayName: 'Instructions',
description: 'Instructions for the email. Available when mode = reply',
required: false,
}),
received_email: Property.LongText({
displayName: 'Received Email',
description: 'The email that is being replied to. Available when mode = reply',
required: false,
}),
purpose: Property.ShortText({
displayName: 'Purpose',
description: 'Purpose of the email. Available when mode = cold',
required: false,
}),
company_details: Property.LongText({
displayName: 'Company Details',
description: 'Details regarding the company. Available when mode = customer_support',
required: false,
}),
model: Property.StaticDropdown({
displayName: 'Model',
description: 'The language model to use',
required: false,
defaultValue: 'gemini-2-0-flash',
options: {
options: AI_MODELS,
},
}),
formality: Property.StaticDropdown({
displayName: 'Formality',
description: 'The formality of the generated text',
required: false,
defaultValue: 'default',
options: {
options: FORMALITY_LEVELS,
},
}),
source_lang: Property.StaticDropdown({
displayName: 'Source Language',
description: 'The language of the source text',
required: false,
defaultValue: 'en',
options: {
options: [
{ label: 'English (Default)', value: 'en' },
{ label: 'Auto-detect', value: 'auto' },
...LANGUAGES.filter(lang => lang.value !== 'en'),
],
},
}),
target_lang: Property.StaticDropdown({
displayName: 'Target Language',
description: 'The language for the email',
required: false,
defaultValue: 'en',
options: {
options: [
{ label: 'English (American)', value: 'en' },
{ label: 'English (British)', value: 'en-gb' },
{ label: 'Spanish', value: 'es' },
{ label: 'French', value: 'fr' },
{ label: 'German', value: 'de' },
{ label: 'Portuguese (Brazilian)', value: 'pt-br' },
{ label: 'Portuguese', value: 'pt' },
...LANGUAGES.filter(lang => !['en', 'pt', 'es', 'fr', 'de'].includes(lang.value)),
],
},
}),
max_tokens: Property.Number({
displayName: 'Max Tokens',
description: 'Maximum length of email (1-4096 tokens)',
required: false,
defaultValue: 2048,
}),
temperature: Property.Number({
displayName: 'Temperature',
description: 'Controls creativity (0.0-2.0). Higher values = more creative, lower = more focused.',
required: false,
}),
n: Property.Number({
displayName: 'Number of Outputs',
description: 'How many email drafts to generate (1-5)',
required: false,
defaultValue: 1,
}),
},
async run(context) {
try {
const requestBody: any = {};
if (context.propsValue.context) {
requestBody.context = context.propsValue.context;
}
if (context.propsValue.mode && context.propsValue.mode !== 'general') {
requestBody.mode = context.propsValue.mode;
}
if (context.propsValue.to) {
requestBody.to = context.propsValue.to;
}
if (context.propsValue.from) {
requestBody.from = context.propsValue.from;
}
if (context.propsValue.instructions) {
requestBody.instructions = context.propsValue.instructions;
}
if (context.propsValue.received_email) {
requestBody.received_email = context.propsValue.received_email;
}
if (context.propsValue.purpose) {
requestBody.purpose = context.propsValue.purpose;
}
if (context.propsValue.company_details) {
requestBody.company_details = context.propsValue.company_details;
}
if (context.propsValue.model && context.propsValue.model !== 'gemini-2-0-flash') {
requestBody.model = context.propsValue.model;
}
if (context.propsValue.formality && context.propsValue.formality !== 'default') {
requestBody.formality = context.propsValue.formality;
}
if (context.propsValue.source_lang && context.propsValue.source_lang !== 'en') {
requestBody.source_lang = context.propsValue.source_lang;
}
if (context.propsValue.target_lang && context.propsValue.target_lang !== 'en') {
requestBody.target_lang = context.propsValue.target_lang;
}
if (context.propsValue.max_tokens && context.propsValue.max_tokens !== 2048) {
requestBody.max_tokens = context.propsValue.max_tokens;
}
if (context.propsValue.temperature !== undefined) {
requestBody.temperature = context.propsValue.temperature;
}
if (context.propsValue.n && context.propsValue.n !== 1) {
requestBody.n = context.propsValue.n;
}
const response = await textcortexCommon.apiCall({
auth: context.auth,
method: HttpMethod.POST,
resourceUri: API_ENDPOINTS.EMAILS,
body: requestBody,
});
const outputs = response.body.data?.outputs || [];
const generatedEmail = outputs.length > 0 ? outputs[0].text : response.body.text || response.body;
return {
success: true,
email: generatedEmail,
outputs: outputs,
remaining_credits: response.body.data?.remaining_credits,
metadata: {
context: context.propsValue.context,
mode: context.propsValue.mode || 'general',
to: context.propsValue.to,
from: context.propsValue.from,
purpose: context.propsValue.purpose,
model: context.propsValue.model || 'gemini-2-0-flash',
formality: context.propsValue.formality || 'default',
parameters: {
max_tokens: context.propsValue.max_tokens || 2048,
temperature: context.propsValue.temperature,
n: context.propsValue.n || 1,
source_lang: context.propsValue.source_lang || 'en',
target_lang: context.propsValue.target_lang || 'en',
},
timestamp: new Date().toISOString(),
}
};
} catch (error: any) {
if (error.response?.status === 401) {
throw new Error('Invalid API key. Please check your TextCortex API key.');
}
if (error.response?.status === 429) {
throw new Error('Rate limit exceeded. Please wait and try again or upgrade your TextCortex plan.');
}
if (error.response?.status === 400) {
throw new Error('Invalid request. Please check your input parameters.');
}
if (error.message?.includes('network') || error.message?.includes('timeout')) {
throw new Error('Network error. Please check your connection and try again.');
}
throw new Error(`Email generation failed: ${error.message || 'Unknown error'}`);
}
},
});

View File

@@ -0,0 +1,198 @@
import { createAction, Property } from '@activepieces/pieces-framework';
import { HttpMethod } from '@activepieces/pieces-common';
import { textcortexAuth } from '../common/auth';
import { textcortexCommon } from '../common/client';
import { API_ENDPOINTS, AI_MODELS, FORMALITY_LEVELS, LANGUAGES } from '../common/common';
export const createParaphrase = createAction({
auth: textcortexAuth,
name: 'create_paraphrase',
displayName: 'Create Paraphrase',
description: 'Rewrite text while preserving its meaning.',
props: {
text: Property.LongText({
displayName: 'Text to Paraphrase',
description: 'The text to paraphrase',
required: false,
}),
file_id: Property.ShortText({
displayName: 'File ID',
description: 'ID of the file to paraphrase',
required: false,
}),
mode: Property.StaticDropdown({
displayName: 'Mode',
description: 'Paraphrase mode',
required: false,
defaultValue: 'default',
options: {
options: [
{ label: 'Default', value: 'default' },
{ label: 'Embeddings', value: 'embeddings' },
],
},
}),
model: Property.StaticDropdown({
displayName: 'Model',
description: 'The language model to use',
required: false,
defaultValue: 'gemini-2-0-flash',
options: {
options: AI_MODELS,
},
}),
formality: Property.StaticDropdown({
displayName: 'Formality',
description: 'The formality of the generated text',
required: false,
defaultValue: 'default',
options: {
options: FORMALITY_LEVELS,
},
}),
source_lang: Property.StaticDropdown({
displayName: 'Source Language',
description: 'The language of the source text',
required: false,
defaultValue: 'en',
options: {
options: [
{ label: 'English (Default)', value: 'en' },
{ label: 'Auto-detect', value: 'auto' },
...LANGUAGES.filter(lang => lang.value !== 'en'),
],
},
}),
target_lang: Property.StaticDropdown({
displayName: 'Target Language',
description: 'The language for the paraphrased text',
required: false,
defaultValue: 'en',
options: {
options: [
{ label: 'English (American)', value: 'en' },
{ label: 'English (British)', value: 'en-gb' },
{ label: 'Spanish', value: 'es' },
{ label: 'French', value: 'fr' },
{ label: 'German', value: 'de' },
{ label: 'Portuguese (Brazilian)', value: 'pt-br' },
{ label: 'Portuguese', value: 'pt' },
...LANGUAGES.filter(lang => !['en', 'pt', 'es', 'fr', 'de'].includes(lang.value)),
],
},
}),
max_tokens: Property.Number({
displayName: 'Max Tokens',
description: 'Maximum length of paraphrased text (1-4096 tokens)',
required: false,
defaultValue: 2048,
}),
temperature: Property.Number({
displayName: 'Temperature',
description: 'Controls creativity (0.0-2.0). Higher values = more creative, lower = more focused.',
required: false,
}),
n: Property.Number({
displayName: 'Number of Outputs',
description: 'How many paraphrases to generate (1-5)',
required: false,
defaultValue: 1,
}),
},
async run(context) {
try {
if (!context.propsValue.text && !context.propsValue.file_id) {
throw new Error('Please provide either "Text to Paraphrase" or "File ID" to paraphrase.');
}
const requestBody: any = {};
if (context.propsValue.text) {
requestBody.text = context.propsValue.text;
}
if (context.propsValue.file_id) {
requestBody.file_id = context.propsValue.file_id;
}
if (context.propsValue.mode && context.propsValue.mode !== 'default') {
requestBody.mode = context.propsValue.mode;
}
if (context.propsValue.model && context.propsValue.model !== 'gemini-2-0-flash') {
requestBody.model = context.propsValue.model;
}
if (context.propsValue.formality && context.propsValue.formality !== 'default') {
requestBody.formality = context.propsValue.formality;
}
if (context.propsValue.source_lang && context.propsValue.source_lang !== 'en') {
requestBody.source_lang = context.propsValue.source_lang;
}
if (context.propsValue.target_lang && context.propsValue.target_lang !== 'en') {
requestBody.target_lang = context.propsValue.target_lang;
}
if (context.propsValue.max_tokens && context.propsValue.max_tokens !== 2048) {
requestBody.max_tokens = context.propsValue.max_tokens;
}
if (context.propsValue.temperature !== undefined) {
requestBody.temperature = context.propsValue.temperature;
}
if (context.propsValue.n && context.propsValue.n !== 1) {
requestBody.n = context.propsValue.n;
}
const response = await textcortexCommon.apiCall({
auth: context.auth,
method: HttpMethod.POST,
resourceUri: API_ENDPOINTS.PARAPHRASES,
body: requestBody,
});
const outputs = response.body.data?.outputs || [];
const paraphrasedText = outputs.length > 0 ? outputs[0].text : response.body.text || response.body;
return {
success: true,
original_text: context.propsValue.text,
paraphrased_text: paraphrasedText,
outputs: outputs,
remaining_credits: response.body.data?.remaining_credits,
metadata: {
mode: context.propsValue.mode || 'default',
model: context.propsValue.model || 'gemini-2-0-flash',
formality: context.propsValue.formality || 'default',
file_id: context.propsValue.file_id,
parameters: {
max_tokens: context.propsValue.max_tokens || 2048,
temperature: context.propsValue.temperature,
n: context.propsValue.n || 1,
source_lang: context.propsValue.source_lang || 'en',
target_lang: context.propsValue.target_lang || 'en',
},
timestamp: new Date().toISOString(),
}
};
} catch (error: any) {
if (error.response?.status === 401) {
throw new Error('Invalid API key. Please check your TextCortex API key.');
}
if (error.response?.status === 429) {
throw new Error('Rate limit exceeded. Please wait and try again or upgrade your TextCortex plan.');
}
if (error.response?.status === 400) {
throw new Error('Invalid request. Please check your input parameters.');
}
if (error.message?.includes('network') || error.message?.includes('timeout')) {
throw new Error('Network error. Please check your connection and try again.');
}
throw new Error(`Paraphrase failed: ${error.message || 'Unknown error'}`);
}
},
});

View File

@@ -0,0 +1,206 @@
import { createAction, Property } from '@activepieces/pieces-framework';
import { HttpMethod } from '@activepieces/pieces-common';
import { textcortexAuth } from '../common/auth';
import { textcortexCommon } from '../common/client';
import { API_ENDPOINTS, AI_MODELS, FORMALITY_LEVELS, LANGUAGES } from '../common/common';
export const createProductDescription = createAction({
auth: textcortexAuth,
name: 'create_product_description',
displayName: 'Create Product Description',
description: 'Create a product description using details like name, brand, category, features, keywords.',
props: {
name: Property.ShortText({
displayName: 'Product Name',
description: 'Name of the product',
required: false,
}),
description: Property.LongText({
displayName: 'Product Features',
description: 'Features of the product',
required: false,
}),
brand: Property.ShortText({
displayName: 'Brand',
description: 'Brand of the product',
required: false,
}),
category: Property.ShortText({
displayName: 'Category',
description: 'Category of the product',
required: false,
}),
keywords: Property.ShortText({
displayName: 'Keywords',
description: 'Keywords to include in the product description (comma-separated)',
required: false,
}),
model: Property.StaticDropdown({
displayName: 'Model',
description: 'The language model to use',
required: false,
defaultValue: 'gemini-2-0-flash',
options: {
options: AI_MODELS,
},
}),
formality: Property.StaticDropdown({
displayName: 'Formality',
description: 'The formality of the generated text',
required: false,
defaultValue: 'default',
options: {
options: FORMALITY_LEVELS,
},
}),
source_lang: Property.StaticDropdown({
displayName: 'Source Language',
description: 'The language of the source text',
required: false,
defaultValue: 'en',
options: {
options: [
{ label: 'English (Default)', value: 'en' },
{ label: 'Auto-detect', value: 'auto' },
...LANGUAGES.filter(lang => lang.value !== 'en'),
],
},
}),
target_lang: Property.StaticDropdown({
displayName: 'Target Language',
description: 'The language for the product description',
required: false,
defaultValue: 'en',
options: {
options: [
{ label: 'English (American)', value: 'en' },
{ label: 'English (British)', value: 'en-gb' },
{ label: 'Spanish', value: 'es' },
{ label: 'French', value: 'fr' },
{ label: 'German', value: 'de' },
{ label: 'Portuguese (Brazilian)', value: 'pt-br' },
{ label: 'Portuguese', value: 'pt' },
...LANGUAGES.filter(lang => !['en', 'pt', 'es', 'fr', 'de'].includes(lang.value)),
],
},
}),
max_tokens: Property.Number({
displayName: 'Max Tokens',
description: 'Maximum length of product description (1-4096 tokens)',
required: false,
defaultValue: 2048,
}),
temperature: Property.Number({
displayName: 'Temperature',
description: 'Controls creativity (0.0-2.0). Higher values = more creative, lower = more focused.',
required: false,
}),
n: Property.Number({
displayName: 'Number of Outputs',
description: 'How many descriptions to generate (1-5)',
required: false,
defaultValue: 1,
}),
},
async run(context) {
try {
const requestBody: any = {};
if (context.propsValue.name) {
requestBody.name = context.propsValue.name;
}
if (context.propsValue.description) {
requestBody.description = context.propsValue.description;
}
if (context.propsValue.brand) {
requestBody.brand = context.propsValue.brand;
}
if (context.propsValue.category) {
requestBody.category = context.propsValue.category;
}
if (context.propsValue.keywords) {
requestBody.keywords = context.propsValue.keywords.split(',').map(k => k.trim());
}
if (context.propsValue.model && context.propsValue.model !== 'gemini-2-0-flash') {
requestBody.model = context.propsValue.model;
}
if (context.propsValue.formality && context.propsValue.formality !== 'default') {
requestBody.formality = context.propsValue.formality;
}
if (context.propsValue.source_lang && context.propsValue.source_lang !== 'en') {
requestBody.source_lang = context.propsValue.source_lang;
}
if (context.propsValue.target_lang && context.propsValue.target_lang !== 'en') {
requestBody.target_lang = context.propsValue.target_lang;
}
if (context.propsValue.max_tokens && context.propsValue.max_tokens !== 2048) {
requestBody.max_tokens = context.propsValue.max_tokens;
}
if (context.propsValue.temperature !== undefined) {
requestBody.temperature = context.propsValue.temperature;
}
if (context.propsValue.n && context.propsValue.n !== 1) {
requestBody.n = context.propsValue.n;
}
const response = await textcortexCommon.apiCall({
auth: context.auth,
method: HttpMethod.POST,
resourceUri: API_ENDPOINTS.PRODUCT_DESCRIPTIONS,
body: requestBody,
});
const outputs = response.body.data?.outputs || [];
const generatedDescription = outputs.length > 0 ? outputs[0].text : response.body.text || response.body;
return {
success: true,
product_description: generatedDescription,
outputs: outputs,
remaining_credits: response.body.data?.remaining_credits,
metadata: {
product_name: context.propsValue.name,
brand: context.propsValue.brand,
category: context.propsValue.category,
keywords: context.propsValue.keywords,
model: context.propsValue.model || 'gemini-2-0-flash',
formality: context.propsValue.formality || 'default',
parameters: {
max_tokens: context.propsValue.max_tokens || 2048,
temperature: context.propsValue.temperature,
n: context.propsValue.n || 1,
source_lang: context.propsValue.source_lang || 'en',
target_lang: context.propsValue.target_lang || 'en',
},
timestamp: new Date().toISOString(),
}
};
} catch (error: any) {
if (error.response?.status === 401) {
throw new Error('Invalid API key. Please check your TextCortex API key.');
}
if (error.response?.status === 429) {
throw new Error('Rate limit exceeded. Please wait and try again or upgrade your TextCortex plan.');
}
if (error.response?.status === 400) {
throw new Error('Invalid request. Please check your input parameters.');
}
if (error.message?.includes('network') || error.message?.includes('timeout')) {
throw new Error('Network error. Please check your connection and try again.');
}
throw new Error(`Product description generation failed: ${error.message || 'Unknown error'}`);
}
},
});

View File

@@ -0,0 +1,188 @@
import { createAction, Property } from '@activepieces/pieces-framework';
import { HttpMethod } from '@activepieces/pieces-common';
import { textcortexAuth } from '../common/auth';
import { textcortexCommon } from '../common/client';
import { API_ENDPOINTS, AI_MODELS, FORMALITY_LEVELS, LANGUAGES } from '../common/common';
export const createSocialMediaCaption = createAction({
auth: textcortexAuth,
name: 'create_social_media_caption',
displayName: 'Create Social Media Caption',
description: 'Generate a caption tailored for a specific social media channel (requires channel and keywords).',
props: {
context: Property.LongText({
displayName: 'Post Context',
description: 'Describe what you want to post about (e.g., "Announcing our new product launch with 50% discount")',
required: true,
}),
mode: Property.StaticDropdown({
displayName: 'Platform',
description: 'The platform to generate a post for',
required: true,
options: {
options: [
{ label: 'Twitter', value: 'twitter' },
{ label: 'LinkedIn', value: 'linkedin' },
],
},
}),
keywords: Property.ShortText({
displayName: 'Keywords',
description: 'Keywords to be included in the post (comma-separated)',
required: false,
}),
model: Property.StaticDropdown({
displayName: 'Model',
description: 'The language model to use',
required: false,
defaultValue: 'gemini-2-0-flash',
options: {
options: AI_MODELS,
},
}),
formality: Property.StaticDropdown({
displayName: 'Formality',
description: 'The formality of the generated text',
required: false,
defaultValue: 'default',
options: {
options: FORMALITY_LEVELS,
},
}),
source_lang: Property.StaticDropdown({
displayName: 'Source Language',
description: 'The language of the source text',
required: false,
defaultValue: 'en',
options: {
options: [
{ label: 'English (Default)', value: 'en' },
{ label: 'Auto-detect', value: 'auto' },
...LANGUAGES.filter(lang => lang.value !== 'en'),
],
},
}),
target_lang: Property.StaticDropdown({
displayName: 'Target Language',
description: 'The language for the caption',
required: false,
defaultValue: 'en',
options: {
options: [
{ label: 'English (American)', value: 'en' },
{ label: 'English (British)', value: 'en-gb' },
{ label: 'Spanish', value: 'es' },
{ label: 'French', value: 'fr' },
{ label: 'German', value: 'de' },
{ label: 'Portuguese (Brazilian)', value: 'pt-br' },
{ label: 'Portuguese', value: 'pt' },
...LANGUAGES.filter(lang => !['en', 'pt', 'es', 'fr', 'de'].includes(lang.value)),
],
},
}),
max_tokens: Property.Number({
displayName: 'Max Tokens',
description: 'Maximum length of caption (1-4096 tokens)',
required: false,
defaultValue: 2048,
}),
temperature: Property.Number({
displayName: 'Temperature',
description: 'Controls creativity (0.0-2.0). Higher values = more creative, lower = more focused.',
required: false,
}),
n: Property.Number({
displayName: 'Number of Outputs',
description: 'How many captions to generate (1-5)',
required: false,
defaultValue: 1,
}),
},
async run(context) {
try {
const requestBody: any = {
context: context.propsValue.context,
mode: context.propsValue.mode,
};
if (context.propsValue.keywords) {
requestBody.keywords = context.propsValue.keywords.split(',').map(k => k.trim());
}
if (context.propsValue.model && context.propsValue.model !== 'gemini-2-0-flash') {
requestBody.model = context.propsValue.model;
}
if (context.propsValue.formality && context.propsValue.formality !== 'default') {
requestBody.formality = context.propsValue.formality;
}
if (context.propsValue.source_lang && context.propsValue.source_lang !== 'en') {
requestBody.source_lang = context.propsValue.source_lang;
}
if (context.propsValue.target_lang && context.propsValue.target_lang !== 'en') {
requestBody.target_lang = context.propsValue.target_lang;
}
if (context.propsValue.max_tokens && context.propsValue.max_tokens !== 2048) {
requestBody.max_tokens = context.propsValue.max_tokens;
}
if (context.propsValue.temperature !== undefined) {
requestBody.temperature = context.propsValue.temperature;
}
if (context.propsValue.n && context.propsValue.n !== 1) {
requestBody.n = context.propsValue.n;
}
const response = await textcortexCommon.apiCall({
auth: context.auth,
method: HttpMethod.POST,
resourceUri: API_ENDPOINTS.SOCIAL_MEDIA_POSTS,
body: requestBody,
});
const outputs = response.body.data?.outputs || [];
const generatedCaption = outputs.length > 0 ? outputs[0].text : response.body.text || response.body;
return {
success: true,
caption: generatedCaption,
outputs: outputs,
remaining_credits: response.body.data?.remaining_credits,
metadata: {
context: context.propsValue.context,
platform: context.propsValue.mode,
keywords: context.propsValue.keywords,
model: context.propsValue.model || 'gemini-2-0-flash',
formality: context.propsValue.formality || 'default',
parameters: {
max_tokens: context.propsValue.max_tokens || 2048,
temperature: context.propsValue.temperature,
n: context.propsValue.n || 1,
source_lang: context.propsValue.source_lang || 'en',
target_lang: context.propsValue.target_lang || 'en',
},
timestamp: new Date().toISOString(),
}
};
} catch (error: any) {
if (error.response?.status === 401) {
throw new Error('Invalid API key. Please check your TextCortex API key.');
}
if (error.response?.status === 429) {
throw new Error('Rate limit exceeded. Please wait and try again or upgrade your TextCortex plan.');
}
if (error.response?.status === 400) {
throw new Error('Invalid request. Please check your input parameters.');
}
if (error.message?.includes('network') || error.message?.includes('timeout')) {
throw new Error('Network error. Please check your connection and try again.');
}
throw new Error(`Caption generation failed: ${error.message || 'Unknown error'}`);
}
},
});

View File

@@ -0,0 +1,198 @@
import { createAction, Property } from '@activepieces/pieces-framework';
import { HttpMethod } from '@activepieces/pieces-common';
import { textcortexAuth } from '../common/auth';
import { textcortexCommon } from '../common/client';
import { API_ENDPOINTS, AI_MODELS, FORMALITY_LEVELS, LANGUAGES } from '../common/common';
export const createSummary = createAction({
auth: textcortexAuth,
name: 'create_summary',
displayName: 'Create Summary',
description: 'Summarize input text to concise form.',
props: {
text: Property.LongText({
displayName: 'Text to Summarize',
description: 'The text to summarize',
required: false,
}),
file_id: Property.ShortText({
displayName: 'File ID',
description: 'ID of the file to summarize',
required: false,
}),
mode: Property.StaticDropdown({
displayName: 'Mode',
description: 'Summarization mode',
required: false,
defaultValue: 'default',
options: {
options: [
{ label: 'Default', value: 'default' },
{ label: 'Embeddings', value: 'embeddings' },
],
},
}),
model: Property.StaticDropdown({
displayName: 'Model',
description: 'The language model to use',
required: false,
defaultValue: 'gemini-2-0-flash',
options: {
options: AI_MODELS,
},
}),
formality: Property.StaticDropdown({
displayName: 'Formality',
description: 'The formality of the generated text',
required: false,
defaultValue: 'default',
options: {
options: FORMALITY_LEVELS,
},
}),
source_lang: Property.StaticDropdown({
displayName: 'Source Language',
description: 'The language of the source text',
required: false,
defaultValue: 'en',
options: {
options: [
{ label: 'English (Default)', value: 'en' },
{ label: 'Auto-detect', value: 'auto' },
...LANGUAGES.filter(lang => lang.value !== 'en'),
],
},
}),
target_lang: Property.StaticDropdown({
displayName: 'Target Language',
description: 'The language for the summary',
required: false,
defaultValue: 'en',
options: {
options: [
{ label: 'English (American)', value: 'en' },
{ label: 'English (British)', value: 'en-gb' },
{ label: 'Spanish', value: 'es' },
{ label: 'French', value: 'fr' },
{ label: 'German', value: 'de' },
{ label: 'Portuguese (Brazilian)', value: 'pt-br' },
{ label: 'Portuguese', value: 'pt' },
...LANGUAGES.filter(lang => !['en', 'pt', 'es', 'fr', 'de'].includes(lang.value)),
],
},
}),
max_tokens: Property.Number({
displayName: 'Max Tokens',
description: 'Maximum length of summary (1-4096 tokens)',
required: false,
defaultValue: 2048,
}),
temperature: Property.Number({
displayName: 'Temperature',
description: 'Controls creativity (0.0-2.0). Higher values = more creative, lower = more focused.',
required: false,
}),
n: Property.Number({
displayName: 'Number of Outputs',
description: 'How many summaries to generate (1-5)',
required: false,
defaultValue: 1,
}),
},
async run(context) {
try {
if (!context.propsValue.text && !context.propsValue.file_id) {
throw new Error('Please provide either "Text to Summarize" or "File ID" to create a summary.');
}
const requestBody: any = {};
if (context.propsValue.text) {
requestBody.text = context.propsValue.text;
}
if (context.propsValue.file_id) {
requestBody.file_id = context.propsValue.file_id;
}
if (context.propsValue.mode && context.propsValue.mode !== 'default') {
requestBody.mode = context.propsValue.mode;
}
if (context.propsValue.model && context.propsValue.model !== 'gemini-2-0-flash') {
requestBody.model = context.propsValue.model;
}
if (context.propsValue.formality && context.propsValue.formality !== 'default') {
requestBody.formality = context.propsValue.formality;
}
if (context.propsValue.source_lang && context.propsValue.source_lang !== 'en') {
requestBody.source_lang = context.propsValue.source_lang;
}
if (context.propsValue.target_lang && context.propsValue.target_lang !== 'en') {
requestBody.target_lang = context.propsValue.target_lang;
}
if (context.propsValue.max_tokens && context.propsValue.max_tokens !== 2048) {
requestBody.max_tokens = context.propsValue.max_tokens;
}
if (context.propsValue.temperature !== undefined) {
requestBody.temperature = context.propsValue.temperature;
}
if (context.propsValue.n && context.propsValue.n !== 1) {
requestBody.n = context.propsValue.n;
}
const response = await textcortexCommon.apiCall({
auth: context.auth,
method: HttpMethod.POST,
resourceUri: API_ENDPOINTS.SUMMARIZATIONS,
body: requestBody,
});
const outputs = response.body.data?.outputs || [];
const generatedSummary = outputs.length > 0 ? outputs[0].text : response.body.text || response.body;
return {
success: true,
summary: generatedSummary,
outputs: outputs,
remaining_credits: response.body.data?.remaining_credits,
metadata: {
original_text_length: context.propsValue.text ? context.propsValue.text.length : 0,
mode: context.propsValue.mode || 'default',
model: context.propsValue.model || 'gemini-2-0-flash',
formality: context.propsValue.formality || 'default',
file_id: context.propsValue.file_id,
parameters: {
max_tokens: context.propsValue.max_tokens || 2048,
temperature: context.propsValue.temperature,
n: context.propsValue.n || 1,
source_lang: context.propsValue.source_lang || 'en',
target_lang: context.propsValue.target_lang || 'en',
},
timestamp: new Date().toISOString(),
}
};
} catch (error: any) {
if (error.response?.status === 401) {
throw new Error('Invalid API key. Please check your TextCortex API key.');
}
if (error.response?.status === 429) {
throw new Error('Rate limit exceeded. Please wait and try again or upgrade your TextCortex plan.');
}
if (error.response?.status === 400) {
throw new Error('Invalid request. Please check your input parameters.');
}
if (error.message?.includes('network') || error.message?.includes('timeout')) {
throw new Error('Network error. Please check your connection and try again.');
}
throw new Error(`Summary generation failed: ${error.message || 'Unknown error'}`);
}
},
});

View File

@@ -0,0 +1,111 @@
import { createAction, Property } from '@activepieces/pieces-framework';
import { HttpMethod } from '@activepieces/pieces-common';
import { textcortexAuth } from '../common/auth';
import { textcortexCommon } from '../common/client';
import { API_ENDPOINTS, FORMALITY_LEVELS, LANGUAGES } from '../common/common';
export const createTranslation = createAction({
auth: textcortexAuth,
name: 'create_translation',
displayName: 'Create Translation',
description: 'Translate input text into a target language.',
props: {
text: Property.LongText({
displayName: 'Text to Translate',
description: 'The text to translate',
required: true,
}),
target_lang: Property.StaticDropdown({
displayName: 'Target Language',
description: 'The language to translate to',
required: true,
options: {
options: [
{ label: 'English (American)', value: 'en' },
{ label: 'English (British)', value: 'en-gb' },
{ label: 'Spanish', value: 'es' },
{ label: 'French', value: 'fr' },
{ label: 'German', value: 'de' },
{ label: 'Portuguese (Brazilian)', value: 'pt-br' },
{ label: 'Portuguese', value: 'pt' },
...LANGUAGES.filter(lang => !['en', 'pt', 'es', 'fr', 'de'].includes(lang.value)),
],
},
}),
source_lang: Property.StaticDropdown({
displayName: 'Source Language',
description: 'The language of the text to translate',
required: false,
defaultValue: 'en',
options: {
options: [
{ label: 'English (Default)', value: 'en' },
{ label: 'Auto-detect', value: 'auto' },
...LANGUAGES.filter(lang => lang.value !== 'en'),
],
},
}),
formality: Property.StaticDropdown({
displayName: 'Formality',
description: 'The formality of the generated text',
required: false,
defaultValue: 'default',
options: {
options: FORMALITY_LEVELS,
},
}),
},
async run(context) {
try {
const requestBody: any = {
text: context.propsValue.text,
target_lang: context.propsValue.target_lang,
};
if (context.propsValue.source_lang && context.propsValue.source_lang !== 'en') {
requestBody.source_lang = context.propsValue.source_lang;
}
if (context.propsValue.formality && context.propsValue.formality !== 'default') {
requestBody.formality = context.propsValue.formality;
}
const response = await textcortexCommon.apiCall({
auth: context.auth,
method: HttpMethod.POST,
resourceUri: API_ENDPOINTS.TRANSLATIONS,
body: requestBody,
});
const translatedText = response.body.data?.text || response.body.text || response.body;
return {
success: true,
original_text: context.propsValue.text,
translated_text: translatedText,
remaining_credits: response.body.data?.remaining_credits,
metadata: {
source_language: context.propsValue.source_lang || 'en',
target_language: context.propsValue.target_lang,
formality: context.propsValue.formality || 'default',
timestamp: new Date().toISOString(),
}
};
} catch (error: any) {
if (error.response?.status === 401) {
throw new Error('Invalid API key. Please check your TextCortex API key.');
}
if (error.response?.status === 429) {
throw new Error('Rate limit exceeded. Please wait and try again or upgrade your TextCortex plan.');
}
if (error.response?.status === 400) {
throw new Error('Invalid request. Please check your input parameters.');
}
if (error.message?.includes('network') || error.message?.includes('timeout')) {
throw new Error('Network error. Please check your connection and try again.');
}
throw new Error(`Translation failed: ${error.message || 'Unknown error'}`);
}
},
});

View File

@@ -0,0 +1,165 @@
import { createAction, Property } from '@activepieces/pieces-framework';
import { HttpMethod } from '@activepieces/pieces-common';
import { textcortexAuth } from '../common/auth';
import { textcortexCommon } from '../common/client';
import { API_ENDPOINTS, AI_MODELS, FORMALITY_LEVELS, LANGUAGES } from '../common/common';
export const sendPrompt = createAction({
auth: textcortexAuth,
name: 'send_prompt',
displayName: 'Send Prompt',
description: 'Send a custom prompt to TextCortex AI and generate a completion.',
props: {
text: Property.LongText({
displayName: 'Text to Complete',
description: 'Enter the beginning of your text and AI will complete it (e.g., "The benefits of renewable energy are")',
required: true,
}),
model: Property.StaticDropdown({
displayName: 'Model',
description: 'The language model to use',
required: false,
defaultValue: 'gemini-2-0-flash',
options: {
options: AI_MODELS,
},
}),
formality: Property.StaticDropdown({
displayName: 'Formality',
description: 'The formality of the generated text',
required: false,
defaultValue: 'default',
options: {
options: FORMALITY_LEVELS,
},
}),
source_lang: Property.StaticDropdown({
displayName: 'Source Language',
description: 'The language of the source text',
required: false,
defaultValue: 'en',
options: {
options: [
{ label: 'English (Default)', value: 'en' },
{ label: 'Auto-detect', value: 'auto' },
...LANGUAGES.filter(lang => lang.value !== 'en'),
],
},
}),
target_lang: Property.StaticDropdown({
displayName: 'Target Language',
description: 'The language for the generated text',
required: false,
defaultValue: 'en',
options: {
options: [
{ label: 'English (American)', value: 'en' },
{ label: 'English (British)', value: 'en-gb' },
{ label: 'Spanish', value: 'es' },
{ label: 'French', value: 'fr' },
{ label: 'German', value: 'de' },
{ label: 'Portuguese (Brazilian)', value: 'pt-br' },
{ label: 'Portuguese', value: 'pt' },
...LANGUAGES.filter(lang => !['en', 'pt', 'es', 'fr', 'de'].includes(lang.value)),
],
},
}),
max_tokens: Property.Number({
displayName: 'Max Tokens',
description: 'Maximum length of generated text (1-4096 tokens)',
required: false,
defaultValue: 2048,
}),
temperature: Property.Number({
displayName: 'Temperature',
description: 'Controls creativity (0.0-2.0). Higher values = more creative, lower = more focused.',
required: false,
}),
n: Property.Number({
displayName: 'Number of Outputs',
description: 'How many completions to generate (1-5)',
required: false,
defaultValue: 1,
}),
},
async run(context) {
try {
const requestBody: any = {
text: context.propsValue.text,
};
if (context.propsValue.model && context.propsValue.model !== 'gemini-2-0-flash') {
requestBody.model = context.propsValue.model;
}
if (context.propsValue.formality && context.propsValue.formality !== 'default') {
requestBody.formality = context.propsValue.formality;
}
if (context.propsValue.source_lang && context.propsValue.source_lang !== 'en') {
requestBody.source_lang = context.propsValue.source_lang;
}
if (context.propsValue.target_lang && context.propsValue.target_lang !== 'en') {
requestBody.target_lang = context.propsValue.target_lang;
}
if (context.propsValue.max_tokens && context.propsValue.max_tokens !== 2048) {
requestBody.max_tokens = context.propsValue.max_tokens;
}
if (context.propsValue.temperature !== undefined) {
requestBody.temperature = context.propsValue.temperature;
}
if (context.propsValue.n && context.propsValue.n !== 1) {
requestBody.n = context.propsValue.n;
}
const response = await textcortexCommon.apiCall({
auth: context.auth,
method: HttpMethod.POST,
resourceUri: API_ENDPOINTS.COMPLETIONS,
body: requestBody,
});
const outputs = response.body.data?.outputs || [];
const generatedText = outputs.length > 0 ? outputs[0].text : response.body.text || response.body;
return {
success: true,
text: generatedText,
outputs: outputs,
remaining_credits: response.body.data?.remaining_credits,
metadata: {
prompt: context.propsValue.text,
model: context.propsValue.model || 'gemini-2-0-flash',
formality: context.propsValue.formality || 'default',
parameters: {
max_tokens: context.propsValue.max_tokens || 2048,
temperature: context.propsValue.temperature,
n: context.propsValue.n || 1,
source_lang: context.propsValue.source_lang || 'en',
target_lang: context.propsValue.target_lang || 'en',
},
timestamp: new Date().toISOString(),
}
};
} catch (error: any) {
if (error.response?.status === 401) {
throw new Error('Invalid API key. Please check your TextCortex API key.');
}
if (error.response?.status === 429) {
throw new Error('Rate limit exceeded. Please wait and try again or upgrade your TextCortex plan.');
}
if (error.response?.status === 400) {
throw new Error('Invalid request. Please check your input parameters.');
}
if (error.message?.includes('network') || error.message?.includes('timeout')) {
throw new Error('Network error. Please check your connection and try again.');
}
throw new Error(`Text generation failed: ${error.message || 'Unknown error'}`);
}
},
});

View File

@@ -0,0 +1,60 @@
import { PieceAuth } from '@activepieces/pieces-framework';
import { httpClient, HttpMethod, AuthenticationType } from '@activepieces/pieces-common';
export const textcortexAuth = PieceAuth.SecretText({
displayName: 'API Key',
description: `To get your TextCortex API key:
1. Sign up for free at https://textcortex.com
2. Go to your account settings
3. Navigate to the API Key section
4. Generate and copy your API key
Your API key should start with 'gAAAAAB...'`,
required: true,
validate: async ({ auth }) => {
try {
await httpClient.sendRequest({
method: HttpMethod.POST,
url: 'https://api.textcortex.com/v1/texts/completions',
headers: {
'Content-Type': 'application/json',
},
authentication: {
type: AuthenticationType.BEARER_TOKEN,
token: auth,
},
body: {
text: 'test',
max_tokens: 1,
},
});
return { valid: true };
} catch (e: any) {
if (e.response?.status === 401) {
return {
valid: false,
error: 'Invalid API key. Please check your TextCortex API key and try again.'
};
}
if (e.response?.status === 429) {
return {
valid: false,
error: 'Rate limit exceeded. Please wait and try again or upgrade your TextCortex plan.'
};
}
if (e.response?.status === 400) {
return { valid: true };
}
if (e.message?.toLowerCase().includes('network')) {
return {
valid: false,
error: 'Network error. Please check your internet connection and try again.'
};
}
return {
valid: false,
error: 'Authentication failed. Please verify your API key is correct.'
};
}
},
});

View File

@@ -0,0 +1,44 @@
import { HttpMethod, httpClient, AuthenticationType } from '@activepieces/pieces-common';
import { baseUrl } from './common';
import { AppConnectionValueForAuthProperty } from '@activepieces/pieces-framework';
import { textcortexAuth } from './auth';
export interface TextCortexAuth {
auth: string;
}
export const textcortexCommon = {
async apiCall({
auth,
method,
resourceUri,
body,
headers = {},
}: {
auth: AppConnectionValueForAuthProperty<typeof textcortexAuth>;
method: HttpMethod;
resourceUri: string;
body?: any;
headers?: Record<string, string>;
}) {
const url = `${baseUrl}${resourceUri}`;
const requestHeaders = {
'Content-Type': 'application/json',
...headers,
};
const requestConfig = {
method,
url,
headers: requestHeaders,
authentication: {
type: AuthenticationType.BEARER_TOKEN,
token: auth.secret_text,
} as const,
body,
};
return await httpClient.sendRequest(requestConfig);
},
};

View File

@@ -0,0 +1,249 @@
export const baseUrl = 'https://api.textcortex.com/v1';
export const unauthorizedMessage = `Error Occurred: 401
Ensure that your API key is valid. You can get your API key from:
1. Sign up at https://textcortex.com
2. Go to account settings
3. Navigate to API Key section
`;
export const billingIssueMessage = `Error Occurred: 429
1. Check your TextCortex account balance and usage limits
2. Upgrade your plan if needed
3. Wait for rate limits to reset
4. Try again
For guidance, visit: https://textcortex.com/pricing
`;
export const SOCIAL_MEDIA_PLATFORMS = [
{ label: 'Twitter', value: 'twitter' },
{ label: 'LinkedIn', value: 'linkedin' },
];
export const LANGUAGES = [
{ label: 'English', value: 'en' },
{ label: 'Spanish', value: 'es' },
{ label: 'French', value: 'fr' },
{ label: 'German', value: 'de' },
{ label: 'Italian', value: 'it' },
{ label: 'Portuguese', value: 'pt' },
{ label: 'Dutch', value: 'nl' },
{ label: 'Romanian', value: 'ro' },
{ label: 'Ukrainian', value: 'uk' },
{ label: 'Russian', value: 'ru' },
{ label: 'Polish', value: 'pl' },
{ label: 'Turkish', value: 'tr' },
{ label: 'Czech', value: 'cs' },
{ label: 'Hungarian', value: 'hu' },
{ label: 'Bulgarian', value: 'bg' },
{ label: 'Croatian', value: 'hr' },
{ label: 'Serbian', value: 'sr' },
{ label: 'Slovak', value: 'sk' },
{ label: 'Slovenian', value: 'sl' },
{ label: 'Swedish', value: 'sv' },
{ label: 'Norwegian', value: 'no' },
{ label: 'Danish', value: 'da' },
{ label: 'Finnish', value: 'fi' },
{ label: 'Greek', value: 'el' },
{ label: 'Arabic', value: 'ar' },
{ label: 'Hebrew', value: 'he' },
{ label: 'Hindi', value: 'hi' },
{ label: 'Chinese (Simplified)', value: 'zh' },
{ label: 'Japanese', value: 'ja' },
{ label: 'Korean', value: 'ko' },
{ label: 'Thai', value: 'th' },
{ label: 'Vietnamese', value: 'vi' },
{ label: 'Indonesian', value: 'id' },
{ label: 'Malay', value: 'ms' },
];
export const PROGRAMMING_LANGUAGES = [
{ label: 'Python', value: 'python' },
{ label: 'Java', value: 'java' },
{ label: 'JavaScript', value: 'javascript' },
{ label: 'Go', value: 'go' },
{ label: 'PHP', value: 'php' },
{ label: 'JS Regex', value: 'js_regex' },
];
export const AI_MODELS = [
{ label: 'GPT-4o', value: 'gpt-4o' },
{ label: 'GPT-4-1', value: 'gpt-4-1' },
{ label: 'GPT-5', value: 'gpt-5' },
{ label: 'GPT-4o Mini', value: 'gpt-4o-mini' },
{ label: 'o1-mini', value: 'o1-mini' },
{ label: 'o1-preview', value: 'o1-preview' },
{ label: 'o1', value: 'o1' },
{ label: 'o3-mini', value: 'o3-mini' },
{ label: 'o3', value: 'o3' },
{ label: 'o4-mini', value: 'o4-mini' },
{ label: 'Claude 3 Haiku', value: 'claude-3-haiku' },
{ label: 'Claude 3.5 Sonnet', value: 'claude-3-5-sonnet' },
{ label: 'Claude 3.7 Sonnet', value: 'claude-3-7-sonnet' },
{ label: 'Claude 3.7 Sonnet Thinking', value: 'claude-3-7-sonnet-thinking' },
{ label: 'Claude 4 Sonnet', value: 'claude-4-sonnet' },
{ label: 'Claude 4 Sonnet Thinking', value: 'claude-4-sonnet-thinking' },
{ label: 'Claude 3.5 Haiku', value: 'claude-3-5-haiku' },
{ label: 'Mistral Small', value: 'mistral-small' },
{ label: 'Mistral Large', value: 'mistral-large' },
{ label: 'DeepSeek R1', value: 'deepseek-r1' },
{ label: 'Kimi K2', value: 'kimi-k2' },
{ label: 'Gemini 2.0 Flash', value: 'gemini-2-0-flash' },
{ label: 'Gemini 2.5 Pro', value: 'gemini-2-5-pro' },
{ label: 'Gemini 2.5 Flash', value: 'gemini-2-5-flash' },
{ label: 'Gemini 2.5 Flash Thinking', value: 'gemini-2-5-flash-thinking' },
{ label: 'Grok 2', value: 'grok-2' },
{ label: 'Grok 4', value: 'grok-4' },
];
export const FORMALITY_LEVELS = [
{ label: 'Default', value: 'default' },
{ label: 'More Formal', value: 'more' },
{ label: 'Less Formal', value: 'less' },
{ label: 'Prefer More Formal', value: 'prefer_more' },
{ label: 'Prefer Less Formal', value: 'prefer_less' },
];
export const CREATIVITY_LEVELS = [
{ label: 'Low (Conservative)', value: 'low' },
{ label: 'Medium (Balanced)', value: 'medium' },
{ label: 'High (Creative)', value: 'high' },
];
export const TONE_OPTIONS = [
{ label: 'Professional', value: 'professional' },
{ label: 'Casual', value: 'casual' },
{ label: 'Friendly', value: 'friendly' },
{ label: 'Formal', value: 'formal' },
{ label: 'Informal', value: 'informal' },
{ label: 'Persuasive', value: 'persuasive' },
{ label: 'Engaging', value: 'engaging' },
{ label: 'Authoritative', value: 'authoritative' },
{ label: 'Conversational', value: 'conversational' },
{ label: 'Enthusiastic', value: 'enthusiastic' },
];
export const LENGTH_OPTIONS = [
{ label: 'Very Short', value: 'very_short' },
{ label: 'Short', value: 'short' },
{ label: 'Medium', value: 'medium' },
{ label: 'Long', value: 'long' },
{ label: 'Very Long', value: 'very_long' },
];
export const API_ENDPOINTS = {
CODES: '/codes',
EMAILS: '/texts/emails',
PARAPHRASES: '/texts/paraphrases',
PRODUCT_DESCRIPTIONS: '/texts/products/descriptions',
SOCIAL_MEDIA_POSTS: '/texts/social-media-posts',
SUMMARIZATIONS: '/texts/summarizations',
TRANSLATIONS: '/texts/translations',
COMPLETIONS: '/texts/completions',
};
import { Property } from '@activepieces/pieces-framework';
export const createCommonProperties = () => ({
model: Property.StaticDropdown({
displayName: 'Model',
description: 'AI model to use',
required: false,
defaultValue: 'gemini-2-0-flash',
options: {
options: AI_MODELS,
},
}),
max_tokens: Property.Number({
displayName: 'Max Tokens',
description: 'Maximum tokens to generate',
required: false,
defaultValue: 2048,
}),
temperature: Property.Number({
displayName: 'Temperature',
description: 'Controls creativity (0.0-1.0)',
required: false,
}),
n: Property.Number({
displayName: 'Number of Outputs',
description: 'Number of outputs to generate (1-5)',
required: false,
defaultValue: 1,
}),
source_lang: Property.StaticDropdown({
displayName: 'Source Language',
description: 'Language of the input text',
required: false,
defaultValue: 'auto',
options: {
options: [
{ label: 'Auto-detect', value: 'auto' },
...LANGUAGES,
],
},
}),
target_lang: Property.StaticDropdown({
displayName: 'Target Language',
description: 'Language for the output',
required: false,
defaultValue: 'en',
options: {
options: LANGUAGES,
},
}),
formality: Property.StaticDropdown({
displayName: 'Formality Level',
description: 'Desired formality of the output',
required: false,
defaultValue: 'default',
options: {
options: FORMALITY_LEVELS,
},
}),
context: Property.LongText({
displayName: 'Context',
description: 'Additional context to guide generation',
required: false,
}),
creativity: Property.StaticDropdown({
displayName: 'Creativity Level',
description: 'Controls creative approach',
required: false,
defaultValue: 'medium',
options: {
options: CREATIVITY_LEVELS,
},
}),
tone: Property.StaticDropdown({
displayName: 'Tone',
description: 'Desired tone of the output',
required: false,
defaultValue: 'professional',
options: {
options: TONE_OPTIONS,
},
}),
length: Property.StaticDropdown({
displayName: 'Length',
description: 'Desired length of the output',
required: false,
defaultValue: 'medium',
options: {
options: LENGTH_OPTIONS,
},
}),
});

View File

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

View File

@@ -0,0 +1,9 @@
{
"extends": "./tsconfig.json",
"compilerOptions": {
"outDir": "../../../../dist/out-tsc",
"declaration": true,
"types": ["node"]
},
"include": ["src/**/*.ts"]
}