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:
@@ -0,0 +1,42 @@
|
||||
{
|
||||
"**Enter your AgentX API Key**\n---\n### How to obtain your API key\n1. Visit [AgentX](https://www.agentx.so/) and log in.\n2. Click on your avatar (bottom-left corner).\n3. Copy your API Key from the popup window.\n4. Paste it here.\n\n": "**Gib deinen AgentX API Schlüssel ein**\n---\n### Wie du deinen API-Schlüssel\nerhältst. Besuchen Sie [AgentX](https://www.agentx.so/) und melden Sie sich an.\n2. Klicken Sie auf Ihren Avatar (linke untere Ecke).\n3. Kopieren Sie Ihren API-Schlüssel aus dem Popup-Fenster.\n4. Fügen Sie ihn hier ein.\n\n",
|
||||
"Create Conversation With Single Agent": "Konversation mit Single Agent erstellen",
|
||||
"Send Message to Existing Conversation": "Nachricht an bestehende Unterhaltung senden",
|
||||
"Find Message": "Nachricht finden",
|
||||
"Search Agents": "Agenten suchen",
|
||||
"Find Conversation": "Unterhaltung finden",
|
||||
"Create a new conversation with a specific Agent by ID.": "Erstellen Sie eine neue Konversation mit einem bestimmten Agenten per ID.",
|
||||
"Send a message to an existing conversation with an agent.": "Senden Sie eine Nachricht an eine bestehende Unterhaltung mit einem Agenten.",
|
||||
"Searches for a specific message by ID (or searches text within messages) inside a conversation.": "Sucht nach einer bestimmten Nachricht mittels ID (oder durchsucht Text innerhalb von Nachrichten) innerhalb einer Unterhaltung.",
|
||||
"Find agents by name or ID using search filters.": "Finden Sie Agenten nach Namen oder ID mit Suchfiltern.",
|
||||
"Looks up an existing conversation by Agent ID (optionally by conversation ID or Name).": "Sucht eine bestehende Konversation nach Agent-ID (optional nach Konversations-ID oder Name).",
|
||||
"Agent": "Agent",
|
||||
"Conversation Type": "Konversationstyp",
|
||||
"Conversation": "Unterhaltung",
|
||||
"Agent Mode": "Agenten-Modus",
|
||||
"Message": "Nachricht",
|
||||
"Memory Context": "Speicherkontext",
|
||||
"Search Term": "Suchbegriff",
|
||||
"Agent Name": "Agentenname",
|
||||
"Agent ID": "Agenten-ID",
|
||||
"Conversation ID": "Konversations-ID",
|
||||
"Conversation Name,tittle or ID": "Konversationsname, Titel oder ID",
|
||||
"Select an AgentX agent": "AgentX-Agent auswählen",
|
||||
"Choose the type of conversation": "Wählen Sie die Art der Unterhaltung",
|
||||
"Select a conversation for the chosen Agent": "Wählen Sie eine Unterhaltung für den ausgewählten Agenten",
|
||||
"Choose how the agent should respond": "Wählen Sie, wie der Agent antworten soll",
|
||||
"The message you want to send to the agent.": "Die Nachricht, die Sie an den Agenten senden möchten.",
|
||||
"Number of previous messages to include. 0 = as much as possible, 1 = only last message, etc.": "Anzahl früherer Nachrichten, die aufgenommen werden sollen. 0 = so viel wie möglich, 1 = nur letzte Nachricht, etc.",
|
||||
"Text to search for in message content. Leave blank if searching by Message ID.": "Text für die Suche im Nachrichteninhalt. Leer lassen, wenn nach Nachrichten-ID gesucht wird.",
|
||||
"Search by agent name (partial matches allowed).": "Suche nach Agentennamen (partielle Übereinstimmung erlaubt).",
|
||||
"Search by exact Agent ID.": "Suche nach exakter Agenten-ID.",
|
||||
"Search by exact Conversation ID.": "Suche nach exakter Konversations-ID.",
|
||||
"Search conversation by its name (derived from the first message).": "Suche die Konversation nach ihrem Namen (abgeleitet von der ersten Nachricht).",
|
||||
"Chat": "Chat",
|
||||
"Search": "Suche",
|
||||
"Ecommerce": "E-Commerce",
|
||||
"New Agent": "Neuer Agent",
|
||||
"New Conversation": "Neue Unterhaltung",
|
||||
"Triggers when a new AgentX agent is created.": "Wird ausgelöst, wenn ein neuer AgentX-Agent erstellt wird.",
|
||||
"Triggers when a new conversation begins with a specific Agent. Only detects conversations created after the trigger is enabled.": "Wird ausgelöst, wenn eine neue Unterhaltung mit einem bestimmten Agent beginnt. Erkennt nur Unterhaltungen, die erstellt wurden, nachdem der Trigger aktiviert ist."
|
||||
}
|
||||
@@ -0,0 +1,42 @@
|
||||
{
|
||||
"**Enter your AgentX API Key**\n---\n### How to obtain your API key\n1. Visit [AgentX](https://www.agentx.so/) and log in.\n2. Click on your avatar (bottom-left corner).\n3. Copy your API Key from the popup window.\n4. Paste it here.\n\n": "**Introduce tu clave API de Agente X**\n---\n### Cómo obtener tu clave API\n1. Visita [Agente X](https://www.agentx.so/) e inicia sesión.\n2. Haz clic en tu avatar (esquina inferior izquierda).\n3. Copia tu clave API desde la ventana emergente.\n4. Pégala aquí.\n\n",
|
||||
"Create Conversation With Single Agent": "Crear conversación con un agente único",
|
||||
"Send Message to Existing Conversation": "Enviar mensaje a la conversación existente",
|
||||
"Find Message": "Buscar mensaje",
|
||||
"Search Agents": "Buscar agentes",
|
||||
"Find Conversation": "Encontrar conversación",
|
||||
"Create a new conversation with a specific Agent by ID.": "Crear una nueva conversación con un agente específico por ID.",
|
||||
"Send a message to an existing conversation with an agent.": "Enviar un mensaje a una conversación existente con un agente.",
|
||||
"Searches for a specific message by ID (or searches text within messages) inside a conversation.": "Busca un mensaje específico por ID (o busca texto dentro de los mensajes) dentro de una conversación.",
|
||||
"Find agents by name or ID using search filters.": "Encuentre agentes por nombre o ID usando filtros de búsqueda.",
|
||||
"Looks up an existing conversation by Agent ID (optionally by conversation ID or Name).": "Busca una conversación existente por Agente ID (opcionalmente por ID de conversación o Nombre).",
|
||||
"Agent": "Agente",
|
||||
"Conversation Type": "Tipo de conversación",
|
||||
"Conversation": "Conversación",
|
||||
"Agent Mode": "Modo agente",
|
||||
"Message": "Mensaje",
|
||||
"Memory Context": "Contexto de memoria",
|
||||
"Search Term": "Buscar término",
|
||||
"Agent Name": "Nombre del agente",
|
||||
"Agent ID": "ID del agente",
|
||||
"Conversation ID": "ID de conversación",
|
||||
"Conversation Name,tittle or ID": "Nombre de la conversación, título o ID",
|
||||
"Select an AgentX agent": "Seleccione un agente AgentX",
|
||||
"Choose the type of conversation": "Elija el tipo de conversación",
|
||||
"Select a conversation for the chosen Agent": "Seleccione una conversación para el agente seleccionado",
|
||||
"Choose how the agent should respond": "Elija cómo debe responder el agente",
|
||||
"The message you want to send to the agent.": "El mensaje que desea enviar al agente.",
|
||||
"Number of previous messages to include. 0 = as much as possible, 1 = only last message, etc.": "Número de mensajes anteriores a incluir. 0 = en la medida de lo posible, 1 = solo el último mensaje, etc.",
|
||||
"Text to search for in message content. Leave blank if searching by Message ID.": "Texto para buscar en el contenido del mensaje. Dejar en blanco si se busca por ID del mensaje.",
|
||||
"Search by agent name (partial matches allowed).": "Buscar por nombre del agente (se permiten coincidencias parciales).",
|
||||
"Search by exact Agent ID.": "Buscar por el agente exacto ID.",
|
||||
"Search by exact Conversation ID.": "Buscar por ID de conversación exacta.",
|
||||
"Search conversation by its name (derived from the first message).": "Buscar conversación por su nombre (derivado del primer mensaje).",
|
||||
"Chat": "Chatear",
|
||||
"Search": "Buscar",
|
||||
"Ecommerce": "Comercio electrónico",
|
||||
"New Agent": "Nuevo agente",
|
||||
"New Conversation": "Nueva conversación",
|
||||
"Triggers when a new AgentX agent is created.": "Dispara cuando se crea un nuevo agente, Agente X.",
|
||||
"Triggers when a new conversation begins with a specific Agent. Only detects conversations created after the trigger is enabled.": "Dispara cuando una nueva conversación comienza con un agente específico. Sólo detecta las conversaciones creadas después de que el disparador esté activado."
|
||||
}
|
||||
@@ -0,0 +1,42 @@
|
||||
{
|
||||
"**Enter your AgentX API Key**\n---\n### How to obtain your API key\n1. Visit [AgentX](https://www.agentx.so/) and log in.\n2. Click on your avatar (bottom-left corner).\n3. Copy your API Key from the popup window.\n4. Paste it here.\n\n": "**Entrez votre clé API AgentX**\n---\n### Comment obtenir votre clé API\n1. Visitez [AgentX](https://www.agentx.so/) et connectez-vous.\n2. Cliquez sur votre avatar (en bas à gauche).\n3. Copiez votre clé API à partir de la fenêtre popup.\n4. Collez-la ici.\n\n",
|
||||
"Create Conversation With Single Agent": "Créer une conversation avec un seul agent",
|
||||
"Send Message to Existing Conversation": "Envoyer un message à une conversation existante",
|
||||
"Find Message": "Rechercher un message",
|
||||
"Search Agents": "Rechercher des agents",
|
||||
"Find Conversation": "Trouver une conversation",
|
||||
"Create a new conversation with a specific Agent by ID.": "Créer une nouvelle conversation avec un agent spécifique par ID.",
|
||||
"Send a message to an existing conversation with an agent.": "Envoyer un message à une conversation existante avec un agent.",
|
||||
"Searches for a specific message by ID (or searches text within messages) inside a conversation.": "Recherche un message spécifique par ID (ou recherche du texte dans les messages) dans une conversation.",
|
||||
"Find agents by name or ID using search filters.": "Trouver des agents par nom ou ID à l'aide de filtres de recherche.",
|
||||
"Looks up an existing conversation by Agent ID (optionally by conversation ID or Name).": "Recherche une conversation existante par ID d'agent (éventuellement par ID de conversation ou Nom).",
|
||||
"Agent": "Agent",
|
||||
"Conversation Type": "Type de conversation",
|
||||
"Conversation": "Conversation",
|
||||
"Agent Mode": "Mode Agent",
|
||||
"Message": "Message",
|
||||
"Memory Context": "Contexte de la mémoire",
|
||||
"Search Term": "Terme de recherche",
|
||||
"Agent Name": "Nom de l'agent",
|
||||
"Agent ID": "ID de l'agent",
|
||||
"Conversation ID": "ID de la conversation",
|
||||
"Conversation Name,tittle or ID": "Nom de la conversation,tittle ou ID",
|
||||
"Select an AgentX agent": "Sélectionnez un agent AgentX",
|
||||
"Choose the type of conversation": "Choisissez le type de conversation",
|
||||
"Select a conversation for the chosen Agent": "Sélectionnez une conversation pour l'agent choisi",
|
||||
"Choose how the agent should respond": "Choisissez comment l'agent doit répondre",
|
||||
"The message you want to send to the agent.": "Le message que vous voulez envoyer à l'agent.",
|
||||
"Number of previous messages to include. 0 = as much as possible, 1 = only last message, etc.": "Nombre de messages précédents à inclure. 0 = autant que possible, 1 = seulement le dernier message, etc.",
|
||||
"Text to search for in message content. Leave blank if searching by Message ID.": "Texte à rechercher dans le contenu du message. Laissez vide si vous recherchez par ID de message.",
|
||||
"Search by agent name (partial matches allowed).": "Recherche par nom d'agent (correspondances partielles autorisées).",
|
||||
"Search by exact Agent ID.": "Recherche par ID d'agent exact.",
|
||||
"Search by exact Conversation ID.": "Rechercher par ID de conversation exact.",
|
||||
"Search conversation by its name (derived from the first message).": "Rechercher la conversation par son nom (dérivé du premier message).",
|
||||
"Chat": "Discuter",
|
||||
"Search": "Rechercher",
|
||||
"Ecommerce": "E-commerce",
|
||||
"New Agent": "Nouvel Agent",
|
||||
"New Conversation": "Nouvelle conversation",
|
||||
"Triggers when a new AgentX agent is created.": "Déclenche lorsqu'un nouvel agent AgentX est créé.",
|
||||
"Triggers when a new conversation begins with a specific Agent. Only detects conversations created after the trigger is enabled.": "Déclenche quand une nouvelle conversation commence avec un agent spécifique. Ne détecte que les conversations créées après que le déclencheur soit activé."
|
||||
}
|
||||
@@ -0,0 +1,42 @@
|
||||
{
|
||||
"**Enter your AgentX API Key**\n---\n### How to obtain your API key\n1. Visit [AgentX](https://www.agentx.so/) and log in.\n2. Click on your avatar (bottom-left corner).\n3. Copy your API Key from the popup window.\n4. Paste it here.\n\n": "**Enter your AgentX API Key**\n---\n### How to obtain your API key\n1. Visit [AgentX](https://www.agentx.so/) and log in.\n2. Click on your avatar (bottom-left corner).\n3. Copy your API Key from the popup window.\n4. Paste it here.\n\n",
|
||||
"Create Conversation With Single Agent": "単一のエージェントで会話を作成",
|
||||
"Send Message to Existing Conversation": "既存の会話にメッセージを送信",
|
||||
"Find Message": "メッセージを検索",
|
||||
"Search Agents": "エージェントを検索",
|
||||
"Find Conversation": "会話を検索",
|
||||
"Create a new conversation with a specific Agent by ID.": "ID によって特定のエージェントと新しい会話を作成します。",
|
||||
"Send a message to an existing conversation with an agent.": "エージェントと既存の会話にメッセージを送信します。",
|
||||
"Searches for a specific message by ID (or searches text within messages) inside a conversation.": "会話内で、ID (またはメッセージ内のテキスト検索) で特定のメッセージを検索します。",
|
||||
"Find agents by name or ID using search filters.": "検索フィルターを使用して名前またはIDでエージェントを検索します。",
|
||||
"Looks up an existing conversation by Agent ID (optionally by conversation ID or Name).": "エージェントIDで既存の会話を検索します(会話IDまたは名前)。",
|
||||
"Agent": "エージェント",
|
||||
"Conversation Type": "会話の種類",
|
||||
"Conversation": "会話",
|
||||
"Agent Mode": "エージェントモード",
|
||||
"Message": "メッセージ",
|
||||
"Memory Context": "メモリのコンテキスト",
|
||||
"Search Term": "検索用語",
|
||||
"Agent Name": "エージェント名",
|
||||
"Agent ID": "エージェントID",
|
||||
"Conversation ID": "会話ID",
|
||||
"Conversation Name,tittle or ID": "会話名、脆弱性またはID",
|
||||
"Select an AgentX agent": "AgentX エージェントを選択",
|
||||
"Choose the type of conversation": "会話の種類を選択",
|
||||
"Select a conversation for the chosen Agent": "選択したエージェントの会話を選択します",
|
||||
"Choose how the agent should respond": "エージェントの応答方法を選択してください",
|
||||
"The message you want to send to the agent.": "エージェントに送信したいメッセージ。",
|
||||
"Number of previous messages to include. 0 = as much as possible, 1 = only last message, etc.": "含める前のメッセージ数。0 = 可能な限り、1 = 最後のメッセージのみなど。",
|
||||
"Text to search for in message content. Leave blank if searching by Message ID.": "メッセージ内の内容を検索するテキスト。メッセージIDで検索する場合は空白のままにします。",
|
||||
"Search by agent name (partial matches allowed).": "エージェント名で検索 (部分一致が許可されています)",
|
||||
"Search by exact Agent ID.": "エージェントIDで検索します。",
|
||||
"Search by exact Conversation ID.": "正確な会話IDで検索",
|
||||
"Search conversation by its name (derived from the first message).": "最初のメッセージから派生した名前で会話を検索します。",
|
||||
"Chat": "チャット",
|
||||
"Search": "検索",
|
||||
"Ecommerce": "Eコマースformat@@0",
|
||||
"New Agent": "新しいエージェント",
|
||||
"New Conversation": "新しい会話",
|
||||
"Triggers when a new AgentX agent is created.": "新しい AgentX エージェントが作成されたときにトリガーします。",
|
||||
"Triggers when a new conversation begins with a specific Agent. Only detects conversations created after the trigger is enabled.": "特定のエージェントで新しい会話が始まるとトリガーされます。トリガーが有効になってから作成された会話のみ検出されます。"
|
||||
}
|
||||
@@ -0,0 +1,42 @@
|
||||
{
|
||||
"**Enter your AgentX API Key**\n---\n### How to obtain your API key\n1. Visit [AgentX](https://www.agentx.so/) and log in.\n2. Click on your avatar (bottom-left corner).\n3. Copy your API Key from the popup window.\n4. Paste it here.\n\n": "**Voer je Agent X API Key**\n---\n### Hoe je API key\n1 te verkrijgen. Bezoek [AgentX](https://www.agentx.so/) en log in.\n2. Klik op uw avatar (linkerbeneden).\n3. Kopieer uw API-sleutel uit het pop-upvenster.\n4. Plak deze hier.\n\n",
|
||||
"Create Conversation With Single Agent": "Gesprek maken met één agent",
|
||||
"Send Message to Existing Conversation": "Bericht verzenden naar bestaande conversatie",
|
||||
"Find Message": "Zoek bericht",
|
||||
"Search Agents": "Agents zoeken",
|
||||
"Find Conversation": "Gesprek zoeken",
|
||||
"Create a new conversation with a specific Agent by ID.": "Maak een nieuw gesprek met een specifieke agent via ID.",
|
||||
"Send a message to an existing conversation with an agent.": "Stuur een bericht naar een bestaand gesprek met een agent.",
|
||||
"Searches for a specific message by ID (or searches text within messages) inside a conversation.": "Zoekt naar een specifiek bericht door ID (of zoekt tekst binnen berichten) binnen een gesprek.",
|
||||
"Find agents by name or ID using search filters.": "Zoek agents op naam of ID met behulp van zoekfilters.",
|
||||
"Looks up an existing conversation by Agent ID (optionally by conversation ID or Name).": "Ziet een bestaand gesprek op door Agent ID ((optioneel) op gespreksID of naam).",
|
||||
"Agent": "Agent",
|
||||
"Conversation Type": "Soort gesprek",
|
||||
"Conversation": "Gesprek",
|
||||
"Agent Mode": "Agent modus",
|
||||
"Message": "bericht",
|
||||
"Memory Context": "Geheugen Context",
|
||||
"Search Term": "Zoek term",
|
||||
"Agent Name": "Agent naam",
|
||||
"Agent ID": "Agent ID",
|
||||
"Conversation ID": "Conversatie ID",
|
||||
"Conversation Name,tittle or ID": "Gespreksnaam, tittle of ID",
|
||||
"Select an AgentX agent": "Selecteer een agent",
|
||||
"Choose the type of conversation": "Kies het type gesprek",
|
||||
"Select a conversation for the chosen Agent": "Selecteer een gesprek voor de gekozen agent",
|
||||
"Choose how the agent should respond": "Kies hoe de agent moet reageren",
|
||||
"The message you want to send to the agent.": "Het bericht dat u naar de agent wilt sturen.",
|
||||
"Number of previous messages to include. 0 = as much as possible, 1 = only last message, etc.": "Aantal vorige berichten om op te nemen. 0 = zo veel als mogelijk, 1 = alleen laatste bericht, etc.",
|
||||
"Text to search for in message content. Leave blank if searching by Message ID.": "Tekst om te zoeken in berichtinhoud. Laat leeg bij het zoeken op bericht-ID.",
|
||||
"Search by agent name (partial matches allowed).": "Zoeken op medewerkernaam (gedeeltelijke overeenkomsten toegestaan).",
|
||||
"Search by exact Agent ID.": "Zoek op exacte agent ID.",
|
||||
"Search by exact Conversation ID.": "Zoek op exacte conversatie-ID.",
|
||||
"Search conversation by its name (derived from the first message).": "Zoek gesprek op zijn naam (afgeleid van het eerste bericht).",
|
||||
"Chat": "Chatten",
|
||||
"Search": "Zoeken",
|
||||
"Ecommerce": "E-commerce",
|
||||
"New Agent": "Nieuwe medewerker",
|
||||
"New Conversation": "Nieuwe conversatie",
|
||||
"Triggers when a new AgentX agent is created.": "Triggert wanneer een nieuwe Agent is aangemaakt.",
|
||||
"Triggers when a new conversation begins with a specific Agent. Only detects conversations created after the trigger is enabled.": "Triggert wanneer een nieuw gesprek begint met een specifieke agent. detecteert alleen conversaties gemaakt nadat de trigger is ingeschakeld."
|
||||
}
|
||||
@@ -0,0 +1,42 @@
|
||||
{
|
||||
"**Enter your AgentX API Key**\n---\n### How to obtain your API key\n1. Visit [AgentX](https://www.agentx.so/) and log in.\n2. Click on your avatar (bottom-left corner).\n3. Copy your API Key from the popup window.\n4. Paste it here.\n\n": "**Digite sua chave de API AgentX**\n---\n### Como obter a sua chave de API\n1. Visite [AgentX](https://www.agentx.so/) e entre na sua conta.\n2. Clique em seu avatar (canto inferior esquerdo).\n3. Copie sua chave de API da janela popup.\n4. Cole aqui.\n\n",
|
||||
"Create Conversation With Single Agent": "Criar conversa com um único agente",
|
||||
"Send Message to Existing Conversation": "Enviar Mensagem para Conversa Existente",
|
||||
"Find Message": "Encontrar mensagem",
|
||||
"Search Agents": "Procurar agentes",
|
||||
"Find Conversation": "Localizar Conversa",
|
||||
"Create a new conversation with a specific Agent by ID.": "Criar uma nova conversa com um agente específico por ID.",
|
||||
"Send a message to an existing conversation with an agent.": "Enviar uma mensagem para uma conversa existente com um agente.",
|
||||
"Searches for a specific message by ID (or searches text within messages) inside a conversation.": "Procura uma mensagem específica por ID (ou busca texto dentro das mensagens) dentro de uma conversa.",
|
||||
"Find agents by name or ID using search filters.": "Encontrar agentes por nome ou ID usando filtros de pesquisa.",
|
||||
"Looks up an existing conversation by Agent ID (optionally by conversation ID or Name).": "Procura uma conversa existente por agente ID (opcionalmente por ID de conversa ou Nome).",
|
||||
"Agent": "Representante",
|
||||
"Conversation Type": "Tipo de conversa",
|
||||
"Conversation": "Conversa",
|
||||
"Agent Mode": "Modo representante",
|
||||
"Message": "mensagem",
|
||||
"Memory Context": "Contexto de memória",
|
||||
"Search Term": "Termo para pesquisa",
|
||||
"Agent Name": "Nome do Representante",
|
||||
"Agent ID": "ID representante",
|
||||
"Conversation ID": "ID da conversa",
|
||||
"Conversation Name,tittle or ID": "Nome da conversa,tittle ou ID",
|
||||
"Select an AgentX agent": "Selecione um agente AgentX",
|
||||
"Choose the type of conversation": "Escolha o tipo de conversa",
|
||||
"Select a conversation for the chosen Agent": "Selecione uma conversa para o agente escolhido",
|
||||
"Choose how the agent should respond": "Escolha como o agente deve responder",
|
||||
"The message you want to send to the agent.": "A mensagem que deseja enviar ao agente",
|
||||
"Number of previous messages to include. 0 = as much as possible, 1 = only last message, etc.": "Número de mensagens anteriores para incluir. 0 = o máximo possível, 1 = apenas a última mensagem, etc.",
|
||||
"Text to search for in message content. Leave blank if searching by Message ID.": "Texto para procurar no conteúdo da mensagem. Deixe em branco se pesquisar por ID de mensagem.",
|
||||
"Search by agent name (partial matches allowed).": "Pesquisa por nome do agente (correspondências parciais permitidas).",
|
||||
"Search by exact Agent ID.": "Pesquisar por ID exata do Agente.",
|
||||
"Search by exact Conversation ID.": "Pesquisar por ID exato de conversação.",
|
||||
"Search conversation by its name (derived from the first message).": "Buscar conversa por seu nome (derivada da primeira mensagem).",
|
||||
"Chat": "Bate-papo",
|
||||
"Search": "Pesquisar",
|
||||
"Ecommerce": "Ecommerce",
|
||||
"New Agent": "Novo Agente",
|
||||
"New Conversation": "Nova conversa",
|
||||
"Triggers when a new AgentX agent is created.": "Dispara quando um novo agente AgentX for criado.",
|
||||
"Triggers when a new conversation begins with a specific Agent. Only detects conversations created after the trigger is enabled.": "Aciona quando uma nova conversa começa com um agente específico. Detecta conversas criadas apenas após a ativação ser ativada."
|
||||
}
|
||||
@@ -0,0 +1,42 @@
|
||||
{
|
||||
"**Enter your AgentX API Key**\n---\n### How to obtain your API key\n1. Visit [AgentX](https://www.agentx.so/) and log in.\n2. Click on your avatar (bottom-left corner).\n3. Copy your API Key from the popup window.\n4. Paste it here.\n\n": "**Enter your AgentX API Key**\n---\n### How to obtain your API key\n1. Visit [AgentX](https://www.agentx.so/) and log in.\n2. Click on your avatar (bottom-left corner).\n3. Copy your API Key from the popup window.\n4. Paste it here.\n\n",
|
||||
"Create Conversation With Single Agent": "Create Conversation With Single Agent",
|
||||
"Send Message to Existing Conversation": "Send Message to Existing Conversation",
|
||||
"Find Message": "Find Message",
|
||||
"Search Agents": "Search Agents",
|
||||
"Find Conversation": "Find Conversation",
|
||||
"Create a new conversation with a specific Agent by ID.": "Create a new conversation with a specific Agent by ID.",
|
||||
"Send a message to an existing conversation with an agent.": "Send a message to an existing conversation with an agent.",
|
||||
"Searches for a specific message by ID (or searches text within messages) inside a conversation.": "Searches for a specific message by ID (or searches text within messages) inside a conversation.",
|
||||
"Find agents by name or ID using search filters.": "Find agents by name or ID using search filters.",
|
||||
"Looks up an existing conversation by Agent ID (optionally by conversation ID or Name).": "Looks up an existing conversation by Agent ID (optionally by conversation ID or Name).",
|
||||
"Agent": "Agent",
|
||||
"Conversation Type": "Conversation Type",
|
||||
"Conversation": "Conversation",
|
||||
"Agent Mode": "Agent Mode",
|
||||
"Message": "Message",
|
||||
"Memory Context": "Memory Context",
|
||||
"Search Term": "Search Term",
|
||||
"Agent Name": "Agent Name",
|
||||
"Agent ID": "Agent ID",
|
||||
"Conversation ID": "Conversation ID",
|
||||
"Conversation Name,tittle or ID": "Conversation Name,tittle or ID",
|
||||
"Select an AgentX agent": "Select an AgentX agent",
|
||||
"Choose the type of conversation": "Choose the type of conversation",
|
||||
"Select a conversation for the chosen Agent": "Select a conversation for the chosen Agent",
|
||||
"Choose how the agent should respond": "Choose how the agent should respond",
|
||||
"The message you want to send to the agent.": "The message you want to send to the agent.",
|
||||
"Number of previous messages to include. 0 = as much as possible, 1 = only last message, etc.": "Number of previous messages to include. 0 = as much as possible, 1 = only last message, etc.",
|
||||
"Text to search for in message content. Leave blank if searching by Message ID.": "Text to search for in message content. Leave blank if searching by Message ID.",
|
||||
"Search by agent name (partial matches allowed).": "Search by agent name (partial matches allowed).",
|
||||
"Search by exact Agent ID.": "Search by exact Agent ID.",
|
||||
"Search by exact Conversation ID.": "Search by exact Conversation ID.",
|
||||
"Search conversation by its name (derived from the first message).": "Search conversation by its name (derived from the first message).",
|
||||
"Chat": "Chat",
|
||||
"Search": "Search",
|
||||
"Ecommerce": "Ecommerce",
|
||||
"New Agent": "New Agent",
|
||||
"New Conversation": "New Conversation",
|
||||
"Triggers when a new AgentX agent is created.": "Triggers when a new AgentX agent is created.",
|
||||
"Triggers when a new conversation begins with a specific Agent. Only detects conversations created after the trigger is enabled.": "Triggers when a new conversation begins with a specific Agent. Only detects conversations created after the trigger is enabled."
|
||||
}
|
||||
@@ -0,0 +1,42 @@
|
||||
{
|
||||
"**Enter your AgentX API Key**\n---\n### How to obtain your API key\n1. Visit [AgentX](https://www.agentx.so/) and log in.\n2. Click on your avatar (bottom-left corner).\n3. Copy your API Key from the popup window.\n4. Paste it here.\n\n": "**Enter your AgentX API Key**\n---\n### How to obtain your API key\n1. Visit [AgentX](https://www.agentx.so/) and log in.\n2. Click on your avatar (bottom-left corner).\n3. Copy your API Key from the popup window.\n4. Paste it here.\n\n",
|
||||
"Create Conversation With Single Agent": "Create Conversation With Single Agent",
|
||||
"Send Message to Existing Conversation": "Send Message to Existing Conversation",
|
||||
"Find Message": "Find Message",
|
||||
"Search Agents": "Search Agents",
|
||||
"Find Conversation": "Find Conversation",
|
||||
"Create a new conversation with a specific Agent by ID.": "Create a new conversation with a specific Agent by ID.",
|
||||
"Send a message to an existing conversation with an agent.": "Send a message to an existing conversation with an agent.",
|
||||
"Searches for a specific message by ID (or searches text within messages) inside a conversation.": "Searches for a specific message by ID (or searches text within messages) inside a conversation.",
|
||||
"Find agents by name or ID using search filters.": "Find agents by name or ID using search filters.",
|
||||
"Looks up an existing conversation by Agent ID (optionally by conversation ID or Name).": "Looks up an existing conversation by Agent ID (optionally by conversation ID or Name).",
|
||||
"Agent": "Agent",
|
||||
"Conversation Type": "Conversation Type",
|
||||
"Conversation": "Conversation",
|
||||
"Agent Mode": "Agent Mode",
|
||||
"Message": "Message",
|
||||
"Memory Context": "Memory Context",
|
||||
"Search Term": "Search Term",
|
||||
"Agent Name": "Agent Name",
|
||||
"Agent ID": "Agent ID",
|
||||
"Conversation ID": "Conversation ID",
|
||||
"Conversation Name,tittle or ID": "Conversation Name,tittle or ID",
|
||||
"Select an AgentX agent": "Select an AgentX agent",
|
||||
"Choose the type of conversation": "Choose the type of conversation",
|
||||
"Select a conversation for the chosen Agent": "Select a conversation for the chosen Agent",
|
||||
"Choose how the agent should respond": "Choose how the agent should respond",
|
||||
"The message you want to send to the agent.": "The message you want to send to the agent.",
|
||||
"Number of previous messages to include. 0 = as much as possible, 1 = only last message, etc.": "Number of previous messages to include. 0 = as much as possible, 1 = only last message, etc.",
|
||||
"Text to search for in message content. Leave blank if searching by Message ID.": "Text to search for in message content. Leave blank if searching by Message ID.",
|
||||
"Search by agent name (partial matches allowed).": "Search by agent name (partial matches allowed).",
|
||||
"Search by exact Agent ID.": "Search by exact Agent ID.",
|
||||
"Search by exact Conversation ID.": "Search by exact Conversation ID.",
|
||||
"Search conversation by its name (derived from the first message).": "Search conversation by its name (derived from the first message).",
|
||||
"Chat": "Chat",
|
||||
"Search": "搜索",
|
||||
"Ecommerce": "Ecommerce",
|
||||
"New Agent": "New Agent",
|
||||
"New Conversation": "New Conversation",
|
||||
"Triggers when a new AgentX agent is created.": "Triggers when a new AgentX agent is created.",
|
||||
"Triggers when a new conversation begins with a specific Agent. Only detects conversations created after the trigger is enabled.": "Triggers when a new conversation begins with a specific Agent. Only detects conversations created after the trigger is enabled."
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
|
||||
import { createPiece, PieceAuth } from "@activepieces/pieces-framework";
|
||||
import { createConversationWithSingleAgent } from "./lib/actions/create-conversation-with-single-agent";
|
||||
import { sendMessageToExistingConversation } from "./lib/actions/send-message-to-existing-conversation";
|
||||
import { findMessage } from "./lib/actions/find-message";
|
||||
import { searchAgents } from "./lib/actions/search-agents";
|
||||
import { findConversation } from "./lib/actions/find-conversation";
|
||||
import { newAgent } from "./lib/triggers/new-agent";
|
||||
import { newConversation } from "./lib/triggers/new-conversation";
|
||||
import { AgentXAuth } from "./lib/common/auth";
|
||||
import { PieceCategory } from "@activepieces/shared";
|
||||
|
||||
|
||||
export const agentx = createPiece({
|
||||
displayName: "AgentX",
|
||||
auth: AgentXAuth,
|
||||
minimumSupportedRelease: '0.36.1',
|
||||
categories:[PieceCategory.ARTIFICIAL_INTELLIGENCE],
|
||||
logoUrl: "https://cdn.activepieces.com/pieces/agentx.png",
|
||||
authors: ['Niket2035','sanket-a11y'],
|
||||
actions: [createConversationWithSingleAgent, sendMessageToExistingConversation, findMessage, searchAgents,findConversation],
|
||||
triggers: [newAgent,newConversation],
|
||||
});
|
||||
@@ -0,0 +1,43 @@
|
||||
import { createAction, Property } from '@activepieces/pieces-framework';
|
||||
import { AgentXAuth } from '../common/auth';
|
||||
import { AgentIdDropdown } from '../common/dropdown';
|
||||
import { makeRequest } from '../common/client';
|
||||
import { HttpMethod } from '@activepieces/pieces-common';
|
||||
|
||||
|
||||
export const createConversationWithSingleAgent = createAction({
|
||||
auth: AgentXAuth,
|
||||
name: 'createConversationWithSingleAgent',
|
||||
displayName: 'Create Conversation With Single Agent',
|
||||
description: 'Create a new conversation with a specific Agent by ID.',
|
||||
props: {
|
||||
agentId: AgentIdDropdown,
|
||||
type: Property.StaticDropdown({
|
||||
displayName: "Conversation Type",
|
||||
description: "Choose the type of conversation",
|
||||
required: true,
|
||||
options: {
|
||||
disabled: false,
|
||||
options: [
|
||||
{ label: "Chat", value: "chat" },
|
||||
{ label: "Search", value: "search" },
|
||||
{ label: "Ecommerce", value: "ecommerce" },
|
||||
],
|
||||
},
|
||||
}),
|
||||
|
||||
},
|
||||
async run({ auth, propsValue }) {
|
||||
const { agentId, type } = propsValue;
|
||||
|
||||
const response = await makeRequest(
|
||||
auth.secret_text,
|
||||
HttpMethod.POST,
|
||||
`/agents/${agentId}/conversations/new`,
|
||||
{
|
||||
type
|
||||
}
|
||||
)
|
||||
return response;
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,66 @@
|
||||
import { createAction, Property } from "@activepieces/pieces-framework";
|
||||
import { makeRequest } from "../common/client";
|
||||
import { AgentXAuth } from "../common/auth";
|
||||
import { HttpMethod } from "@activepieces/pieces-common";
|
||||
import { AgentIdDropdown, ConversationIdDropdown } from "../common/dropdown";
|
||||
|
||||
export const findConversation = createAction({
|
||||
auth: AgentXAuth,
|
||||
name: "find_conversation",
|
||||
displayName: "Find Conversation",
|
||||
description:
|
||||
"Looks up an existing conversation by Agent ID (optionally by conversation ID or Name).",
|
||||
props: {
|
||||
agentId: AgentIdDropdown,
|
||||
conversationId: Property.ShortText({
|
||||
displayName: "Conversation ID",
|
||||
description: "Search by exact Conversation ID.",
|
||||
required: false,
|
||||
}),
|
||||
conversationName: Property.ShortText({
|
||||
displayName: "Conversation Name,tittle or ID",
|
||||
description:
|
||||
"Search conversation by its name (derived from the first message).",
|
||||
required: false,
|
||||
}),
|
||||
},
|
||||
|
||||
async run({ auth, propsValue }) {
|
||||
const { agentId, conversationId, conversationName } = propsValue;
|
||||
|
||||
const addName = (conversation: any) => ({
|
||||
...conversation,
|
||||
name:
|
||||
conversation.messages?.[0]?.text?.slice(0, 30) ||
|
||||
`Conversation ${conversation._id || conversation.id}`,
|
||||
});
|
||||
|
||||
|
||||
const conversations = await makeRequest(
|
||||
auth.secret_text,
|
||||
HttpMethod.GET,
|
||||
`/agents/${agentId}/conversations`
|
||||
);
|
||||
|
||||
if (!Array.isArray(conversations)) {
|
||||
throw new Error(
|
||||
"Unexpected response from AgentX API: expected an array of conversations."
|
||||
);
|
||||
}
|
||||
|
||||
const conversationsWithName = conversations.map(addName);
|
||||
|
||||
if (conversationName) {
|
||||
return conversationsWithName.filter((c) =>
|
||||
c.name.toLowerCase().includes(conversationName.toLowerCase())
|
||||
);
|
||||
}
|
||||
if (conversationId) {
|
||||
return conversationsWithName.filter(
|
||||
(c) => c.id === conversationId || c._id === conversationId
|
||||
);
|
||||
}
|
||||
|
||||
return conversationsWithName;
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,59 @@
|
||||
import { createAction, Property } from "@activepieces/pieces-framework";
|
||||
import { HttpMethod } from "@activepieces/pieces-common";
|
||||
import { makeRequest } from "../common/client";
|
||||
import { AgentXAuth } from "../common/auth";
|
||||
import { AgentIdDropdown, ConversationIdDropdown } from "../common/dropdown";
|
||||
|
||||
type Message = {
|
||||
id: string;
|
||||
text?: string;
|
||||
[key: string]: unknown;
|
||||
};
|
||||
|
||||
type ConversationDetail = {
|
||||
id: string;
|
||||
messages: Message[];
|
||||
[key: string]: unknown;
|
||||
};
|
||||
|
||||
export const findMessage = createAction({
|
||||
auth: AgentXAuth,
|
||||
name: "find_message",
|
||||
displayName: "Find Message",
|
||||
description:
|
||||
"Searches for a specific message by ID (or searches text within messages) inside a conversation.",
|
||||
|
||||
props: {
|
||||
agentId: AgentIdDropdown,
|
||||
conversationId: ConversationIdDropdown,
|
||||
searchTerm: Property.ShortText({
|
||||
displayName: "Search Term",
|
||||
description:
|
||||
"Text to search for in message content. Leave blank if searching by Message ID.",
|
||||
required: false,
|
||||
}),
|
||||
},
|
||||
|
||||
async run({ auth, propsValue }) {
|
||||
const { agentId, conversationId, searchTerm } = propsValue;
|
||||
|
||||
const conversation = await makeRequest(
|
||||
auth.secret_text,
|
||||
HttpMethod.GET,
|
||||
`/agents/${agentId}/conversations/${conversationId}`
|
||||
) as ConversationDetail;
|
||||
|
||||
const allMessages = conversation?.messages || [];
|
||||
|
||||
if (!searchTerm) {
|
||||
return allMessages;
|
||||
}
|
||||
|
||||
const lowerCaseSearchTerm = searchTerm.toLowerCase();
|
||||
return allMessages.filter(
|
||||
(m: any) =>
|
||||
(m.text && m.text.toLowerCase().includes(lowerCaseSearchTerm)) ||
|
||||
(m.content && m.content.toLowerCase().includes(lowerCaseSearchTerm))
|
||||
);
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,49 @@
|
||||
import { createAction, Property } from "@activepieces/pieces-framework";
|
||||
import { makeRequest } from "../common/client";
|
||||
import { AgentXAuth } from "../common/auth";
|
||||
import { HttpMethod } from "@activepieces/pieces-common";
|
||||
|
||||
export const searchAgents = createAction({
|
||||
auth: AgentXAuth,
|
||||
name: "search_agents",
|
||||
displayName: "Search Agents",
|
||||
description: "Find agents by name or ID using search filters.",
|
||||
props: {
|
||||
name: Property.ShortText({
|
||||
displayName: "Agent Name",
|
||||
description: "Search by agent name (partial matches allowed).",
|
||||
required: false,
|
||||
}),
|
||||
id: Property.ShortText({
|
||||
displayName: "Agent ID",
|
||||
description: "Search by exact Agent ID.",
|
||||
required: false,
|
||||
}),
|
||||
},
|
||||
|
||||
async run({ auth, propsValue }) {
|
||||
const { name, id } = propsValue;
|
||||
|
||||
const agents = await makeRequest(auth.secret_text, HttpMethod.GET, "/agents");
|
||||
|
||||
if (!Array.isArray(agents)) {
|
||||
throw new Error("Unexpected response from AgentX API: expected an array of agents.");
|
||||
}
|
||||
|
||||
const filtered = agents.filter((agent: any) => {
|
||||
let matches = true;
|
||||
|
||||
if (id) {
|
||||
matches = matches && agent._id === id;
|
||||
}
|
||||
|
||||
if (name && agent.name) {
|
||||
matches = matches && agent.name.toLowerCase().includes(name.toLowerCase());
|
||||
}
|
||||
|
||||
return matches;
|
||||
});
|
||||
|
||||
return filtered;
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,56 @@
|
||||
import { createAction, Property } from '@activepieces/pieces-framework';
|
||||
import { AgentXAuth } from '../common/auth';
|
||||
import { makeRequest } from '../common/client';
|
||||
import { HttpMethod } from '@activepieces/pieces-common';
|
||||
import { ConversationIdDropdown } from '../common/dropdown';
|
||||
import { AgentIdDropdown } from '../common/dropdown';
|
||||
|
||||
export const sendMessageToExistingConversation = createAction({
|
||||
auth: AgentXAuth,
|
||||
name: 'sendMessageToExistingConversation',
|
||||
displayName: 'Send Message to Existing Conversation',
|
||||
description: 'Send a message to an existing conversation with an agent.',
|
||||
props: {
|
||||
agentId: AgentIdDropdown,
|
||||
conversationId: ConversationIdDropdown,
|
||||
agentMode: Property.StaticDropdown({
|
||||
displayName: "Agent Mode",
|
||||
description: "Choose how the agent should respond",
|
||||
required: true,
|
||||
options: {
|
||||
disabled: false,
|
||||
options: [
|
||||
{ label: "Chat", value: "chat" },
|
||||
{ label: "Search", value: "search" },
|
||||
],
|
||||
},
|
||||
}),
|
||||
message: Property.LongText({
|
||||
displayName: "Message",
|
||||
description: "The message you want to send to the agent.",
|
||||
required: true,
|
||||
}),
|
||||
context: Property.Number({
|
||||
displayName: "Memory Context",
|
||||
description:
|
||||
"Number of previous messages to include. 0 = as much as possible, 1 = only last message, etc.",
|
||||
required: false,
|
||||
}),
|
||||
},
|
||||
async run({ auth, propsValue }) {
|
||||
const { conversationId, agentMode, message, context } = propsValue;
|
||||
|
||||
const response = await makeRequest(
|
||||
auth.secret_text,
|
||||
HttpMethod.POST,
|
||||
`/conversations/${conversationId}/message`,
|
||||
{
|
||||
conversationId,
|
||||
agentMode,
|
||||
message,
|
||||
context,
|
||||
}
|
||||
)
|
||||
return response;
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,36 @@
|
||||
import { PieceAuth } from "@activepieces/pieces-framework";
|
||||
import { makeRequest } from "./client";
|
||||
import { HttpMethod } from "@activepieces/pieces-common";
|
||||
|
||||
export const AgentXAuth = PieceAuth.SecretText({
|
||||
displayName: 'AgentX API Key',
|
||||
description: `**Enter your AgentX API Key**
|
||||
---
|
||||
### How to obtain your API key
|
||||
1. Visit [AgentX](https://www.agentx.so/) and log in.
|
||||
2. Click on your avatar (bottom-left corner).
|
||||
3. Copy your API Key from the popup window.
|
||||
4. Paste it here.
|
||||
|
||||
`,
|
||||
required: true,
|
||||
validate: async ({ auth }) => {
|
||||
if (auth) {
|
||||
try {
|
||||
await makeRequest(auth as string, HttpMethod.GET, "/agents");
|
||||
return {
|
||||
valid: true,
|
||||
};
|
||||
} catch (error) {
|
||||
return {
|
||||
valid: false,
|
||||
error: "Invalid API Key or authentication failed.",
|
||||
};
|
||||
}
|
||||
}
|
||||
return {
|
||||
valid: false,
|
||||
error: "API Key is required.",
|
||||
};
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,26 @@
|
||||
import { HttpMethod, httpClient } from "@activepieces/pieces-common";
|
||||
|
||||
export const BASE_URL = `https://api.agentx.so/api/v1/access`;
|
||||
|
||||
export async function makeRequest(
|
||||
apiKey: string,
|
||||
method: HttpMethod,
|
||||
path: string,
|
||||
body?: unknown
|
||||
) {
|
||||
try {
|
||||
const response = await httpClient.sendRequest({
|
||||
method,
|
||||
url: `${BASE_URL}${path}`,
|
||||
headers: {
|
||||
"x-api-key": apiKey,
|
||||
"Content-Type": "application/json",
|
||||
Accept: "application/json",
|
||||
},
|
||||
body,
|
||||
});
|
||||
return response.body;
|
||||
} catch (error: any) {
|
||||
throw new Error(`AgentX API error: ${error.message || String(error)}`);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,86 @@
|
||||
import { Property } from "@activepieces/pieces-framework";
|
||||
import { makeRequest } from "./client";
|
||||
import { HttpMethod } from "@activepieces/pieces-common";
|
||||
import { AgentXAuth } from "./auth";
|
||||
|
||||
export const AgentIdDropdown = Property.Dropdown<string,true,typeof AgentXAuth>({
|
||||
auth: AgentXAuth,
|
||||
displayName: "Agent",
|
||||
description: "Select an AgentX agent",
|
||||
required: true, // ensures the value is always a string, not undefined
|
||||
refreshers: ["auth"],
|
||||
options: async ({ auth }) => {
|
||||
if (!auth) {
|
||||
return {
|
||||
disabled: true,
|
||||
placeholder: "Please connect your AgentX account first",
|
||||
options: [],
|
||||
};
|
||||
}
|
||||
|
||||
try {
|
||||
const agents = await makeRequest(auth.secret_text, HttpMethod.GET, "/agents");
|
||||
|
||||
return {
|
||||
disabled: false,
|
||||
options: agents.map((agent: any) => ({
|
||||
label: agent.name || `Agent ${agent.id}`,
|
||||
value: agent._id, // must be string
|
||||
})),
|
||||
};
|
||||
} catch (error: any) {
|
||||
return {
|
||||
disabled: true,
|
||||
placeholder: `Failed to fetch agents: ${error.message || error}`,
|
||||
options: [],
|
||||
};
|
||||
}
|
||||
},
|
||||
});
|
||||
|
||||
export const ConversationIdDropdown = Property.Dropdown({
|
||||
auth: AgentXAuth,
|
||||
displayName: "Conversation",
|
||||
description: "Select a conversation for the chosen Agent",
|
||||
required: false,
|
||||
refreshers: ["auth", "agentId"],
|
||||
options: async ({ auth, agentId }) => {
|
||||
if (!auth) {
|
||||
return {
|
||||
disabled: true,
|
||||
placeholder: "Please connect your AgentX account first",
|
||||
options: [],
|
||||
};
|
||||
}
|
||||
|
||||
if (!agentId) {
|
||||
return {
|
||||
disabled: true,
|
||||
placeholder: "Select an Agent first",
|
||||
options: [],
|
||||
};
|
||||
}
|
||||
|
||||
try {
|
||||
const conversations = await makeRequest(
|
||||
auth.secret_text,
|
||||
HttpMethod.GET,
|
||||
`/agents/${agentId}/conversations`
|
||||
);
|
||||
|
||||
return {
|
||||
disabled: false,
|
||||
options: conversations.map((c: any) => ({
|
||||
label: c.title || `Conversation ${c._id}`,
|
||||
value: c._id,
|
||||
})),
|
||||
};
|
||||
} catch (error: any) {
|
||||
return {
|
||||
disabled: true,
|
||||
placeholder: `Failed to fetch conversations: ${error.message || error}`,
|
||||
options: [],
|
||||
};
|
||||
}
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,63 @@
|
||||
import {createTrigger,TriggerStrategy, AppConnectionValueForAuthProperty,} from "@activepieces/pieces-framework";
|
||||
import {DedupeStrategy,Polling,pollingHelper,} from "@activepieces/pieces-common";
|
||||
import dayjs from "dayjs";
|
||||
import { makeRequest } from "../common/client";
|
||||
import { HttpMethod } from "@activepieces/pieces-common";
|
||||
import { AgentXAuth } from "../common/auth";
|
||||
|
||||
type Agent = {
|
||||
id: string;
|
||||
name?: string;
|
||||
createdAt: string;
|
||||
};
|
||||
|
||||
const polling: Polling<
|
||||
AppConnectionValueForAuthProperty<typeof AgentXAuth>,
|
||||
Record<string, never>
|
||||
> = {
|
||||
strategy: DedupeStrategy.TIMEBASED,
|
||||
items: async ({ auth }) => {
|
||||
const agents = (await makeRequest(auth.secret_text, HttpMethod.GET, "/agents")) as Agent[];
|
||||
|
||||
const sortedAgents = agents.sort((a, b) =>
|
||||
dayjs(b.createdAt).valueOf() - dayjs(a.createdAt).valueOf()
|
||||
);
|
||||
|
||||
return sortedAgents.map((agent) => ({
|
||||
epochMilliSeconds: dayjs(agent.createdAt).valueOf(),
|
||||
data: agent,
|
||||
}));
|
||||
},
|
||||
};
|
||||
|
||||
export const newAgent = createTrigger({
|
||||
auth: AgentXAuth,
|
||||
name: "new_agent",
|
||||
displayName: "New Agent",
|
||||
description: "Triggers when a new AgentX agent is created.",
|
||||
props: {},
|
||||
sampleData: {
|
||||
_id: "agt_1234567890abcdef",
|
||||
name: "Customer Support Bot",
|
||||
created_at: "2025-09-08T10:00:00Z",
|
||||
},
|
||||
type: TriggerStrategy.POLLING,
|
||||
|
||||
async test(context) {
|
||||
return await pollingHelper.test(polling, context);
|
||||
},
|
||||
|
||||
async onEnable(context) {
|
||||
const { store, auth, propsValue } = context;
|
||||
await pollingHelper.onEnable(polling, { store, auth, propsValue });
|
||||
},
|
||||
|
||||
async onDisable(context) {
|
||||
const { store, auth, propsValue } = context;
|
||||
await pollingHelper.onDisable(polling, { store, auth, propsValue });
|
||||
},
|
||||
|
||||
async run(context) {
|
||||
return await pollingHelper.poll(polling, context);
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,90 @@
|
||||
import {
|
||||
createTrigger,
|
||||
TriggerStrategy,
|
||||
AppConnectionValueForAuthProperty,
|
||||
} from "@activepieces/pieces-framework";
|
||||
import {
|
||||
DedupeStrategy,
|
||||
Polling,
|
||||
pollingHelper,
|
||||
HttpMethod,
|
||||
} from "@activepieces/pieces-common";
|
||||
import dayjs from "dayjs";
|
||||
import { makeRequest } from "../common/client";
|
||||
import { AgentXAuth } from "../common/auth";
|
||||
import { AgentIdDropdown } from "../common/dropdown";
|
||||
|
||||
|
||||
type Conversation = {
|
||||
_id: string;
|
||||
type?: string;
|
||||
createdAt: string;
|
||||
};
|
||||
|
||||
const polling: Polling<
|
||||
AppConnectionValueForAuthProperty<typeof AgentXAuth>,
|
||||
{ agentId?: string }
|
||||
> = {
|
||||
strategy: DedupeStrategy.TIMEBASED,
|
||||
items: async ({ auth, propsValue }) => {
|
||||
const { agentId } = propsValue;
|
||||
|
||||
if (!agentId) {
|
||||
return [];
|
||||
}
|
||||
|
||||
try {
|
||||
const conversations = (await makeRequest(
|
||||
auth.secret_text,
|
||||
HttpMethod.GET,
|
||||
`/agents/${agentId}/conversations`
|
||||
)) as Conversation[];
|
||||
|
||||
const sortedConversations = conversations.sort((a, b) =>
|
||||
dayjs(b.createdAt).valueOf() - dayjs(a.createdAt).valueOf()
|
||||
);
|
||||
|
||||
return sortedConversations.map((conv) => ({
|
||||
epochMilliSeconds: dayjs(conv.createdAt).valueOf(),
|
||||
data: conv,
|
||||
}));
|
||||
} catch (error) {
|
||||
console.error(`Error fetching conversations for agent ${agentId}:`, error);
|
||||
throw error;
|
||||
}
|
||||
},
|
||||
};
|
||||
|
||||
export const newConversation = createTrigger({
|
||||
auth: AgentXAuth,
|
||||
name: "new_conversation",
|
||||
displayName: "New Conversation",
|
||||
description: "Triggers when a new conversation begins with a specific Agent. Only detects conversations created after the trigger is enabled.",
|
||||
type: TriggerStrategy.POLLING,
|
||||
|
||||
props: {
|
||||
agentId: AgentIdDropdown,
|
||||
},
|
||||
|
||||
sampleData: {
|
||||
id: "conv_1234567890abcdef",
|
||||
type: "chat",
|
||||
created_at: "2025-09-08T11:45:00Z",
|
||||
},
|
||||
|
||||
async test(context) {
|
||||
return await pollingHelper.test(polling, context);
|
||||
},
|
||||
|
||||
async onEnable(context) {
|
||||
await pollingHelper.onEnable(polling, context);
|
||||
},
|
||||
|
||||
async onDisable(context) {
|
||||
await pollingHelper.onDisable(polling, context);
|
||||
},
|
||||
|
||||
async run(context) {
|
||||
return await pollingHelper.poll(polling, context);
|
||||
},
|
||||
});
|
||||
Reference in New Issue
Block a user