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,9 @@
{
"Get Run Info": "Starte Infos",
"Fail Flow": "Fehlschlag",
"Stop Flow": "Flow stoppen",
"Fails the flow execution with a custom message.": "Fehler bei der Ausführung des Workflows mit einer benutzerdefinierten Nachricht.",
"Stops the flow immediately this step is reached.": "Stoppt den Fluss sofort wird dieser Schritt erreicht.",
"Error Message": "Fehlermeldung",
"The error message to show when the flow fails.": "Die Fehlermeldung, die angezeigt wird, wenn der Fluss fehlschlägt."
}

View File

@@ -0,0 +1,9 @@
{
"Get Run Info": "Obtener información",
"Fail Flow": "Flujo fallido",
"Stop Flow": "Detener flujo",
"Fails the flow execution with a custom message.": "Falla en la ejecución del flujo con un mensaje personalizado.",
"Stops the flow immediately this step is reached.": "Detiene el flujo inmediatamente que se alcanza este paso.",
"Error Message": "Mensaje de error",
"The error message to show when the flow fails.": "El mensaje de error a mostrar cuando el flujo falla."
}

View File

@@ -0,0 +1,9 @@
{
"Get Run Info": "Obtenir les informations sur l'exécution",
"Fail Flow": "Défaut Flow",
"Stop Flow": "Arrêter le flux",
"Fails the flow execution with a custom message.": "Échoue l'exécution du flux avec un message personnalisé.",
"Stops the flow immediately this step is reached.": "Arrête le flux immédiatement cette étape est atteinte.",
"Error Message": "Message d'erreur",
"The error message to show when the flow fails.": "Le message d'erreur à afficher lorsque le flux échoue."
}

View File

@@ -0,0 +1,9 @@
{
"Get Run Info": "実行情報を取得",
"Fail Flow": "失敗の流れ",
"Stop Flow": "フローを停止",
"Fails the flow execution with a custom message.": "カスタムメッセージでフローの実行に失敗します。",
"Stops the flow immediately this step is reached.": "このステップに到達した直後にフローを停止します。",
"Error Message": "エラー メッセージ",
"The error message to show when the flow fails.": "フローが失敗したときに表示されるエラーメッセージ。"
}

View File

@@ -0,0 +1,9 @@
{
"Get Run Info": "Get Run Info",
"Fail Flow": "Flow mislukt",
"Stop Flow": "Stoppen met stroom",
"Fails the flow execution with a custom message.": "Fout bij uitvoeren van de stroom met een aangepast bericht.",
"Stops the flow immediately this step is reached.": "Stopt de stroom zodra deze stap is bereikt.",
"Error Message": "Fout bericht",
"The error message to show when the flow fails.": "Het foutbericht om te laten zien wanneer de stroom mislukt."
}

View File

@@ -0,0 +1,9 @@
{
"Get Run Info": "Obter informações de execução",
"Fail Flow": "Fluxo de falha",
"Stop Flow": "Parar fluxo",
"Fails the flow execution with a custom message.": "Falha na execução do fluxo com uma mensagem personalizada.",
"Stops the flow immediately this step is reached.": "Interrompe o fluxo imediatamente que esta etapa é atingida.",
"Error Message": "Mensagem de Erro",
"The error message to show when the flow fails.": "Mensagem de erro a ser exibida quando o fluxo falhar."
}

View File

@@ -0,0 +1,10 @@
{
"Flow Helper": "Помощник Flow",
"Get Run Info": "Получить информацию о запуске",
"Fail Flow": "Сбой потока",
"Stop Flow": "Остановить поток",
"Fails the flow execution with a custom message.": "Ошибка выполнения потока с пользовательским сообщением.",
"Stops the flow immediately this step is reached.": "Немедленно останавливает поток, который достигается на этом шаге.",
"Error Message": "Сообщение об ошибке",
"The error message to show when the flow fails.": "Сообщение об ошибке при сбое процесса."
}

View File

@@ -0,0 +1,9 @@
{
"Get Run Info": "Get Run Info",
"Fail Flow": "Fail Flow",
"Stop Flow": "Stop Flow",
"Fails the flow execution with a custom message.": "Fails the flow execution with a custom message.",
"Stops the flow immediately this step is reached.": "Stops the flow immediately this step is reached.",
"Error Message": "Error Message",
"The error message to show when the flow fails.": "The error message to show when the flow fails."
}

View File

@@ -0,0 +1,10 @@
{
"Flow Helper": "Flow Helper",
"Get Run Info": "Get Run Info",
"Fail Flow": "Fail Flow",
"Stop Flow": "Stop Flow",
"Fails the flow execution with a custom message.": "Fails the flow execution with a custom message.",
"Stops the flow immediately this step is reached.": "Stops the flow immediately this step is reached.",
"Error Message": "Error Message",
"The error message to show when the flow fails.": "The error message to show when the flow fails."
}

View File

@@ -0,0 +1,9 @@
{
"Get Run Info": "Get Run Info",
"Fail Flow": "Fail Flow",
"Stop Flow": "Stop Flow",
"Fails the flow execution with a custom message.": "Fails the flow execution with a custom message.",
"Stops the flow immediately this step is reached.": "Stops the flow immediately this step is reached.",
"Error Message": "Error Message",
"The error message to show when the flow fails.": "The error message to show when the flow fails."
}

View File

@@ -0,0 +1,14 @@
import { createPiece, PieceAuth } from "@activepieces/pieces-framework";
import { getRunId } from "./lib/actions/get-run-id";
import { failFlow } from "./lib/actions/fail-flow";
import { stopFlow } from "./lib/actions/stop-flow";
export const flowHelper = createPiece({
displayName: "Flow Helper",
auth: PieceAuth.None(),
minimumSupportedRelease: '0.36.1',
logoUrl: "https://cdn.activepieces.com/pieces/flow-helper.svg",
authors: ["AbdulTheActivePiecer","AnkitSharmaOnGithub"],
actions: [getRunId, failFlow, stopFlow],
triggers: [],
});

View File

@@ -0,0 +1,17 @@
import { createAction, Property } from '@activepieces/pieces-framework';
export const failFlow = createAction({
name: 'failFlow',
displayName: 'Fail Flow',
description: 'Fails the flow execution with a custom message.',
props: {
message: Property.LongText({
displayName: 'Error Message',
description: 'The error message to show when the flow fails.',
required: true,
}),
},
async run(context) {
throw new Error(context.propsValue.message);
},
});

View File

@@ -0,0 +1,16 @@
import { createAction } from '@activepieces/pieces-framework';
export const getRunId = createAction({
// auth: check https://www.activepieces.com/docs/developers/piece-reference/authentication,
name: 'getRunId',
displayName: 'Get Run Info',
description: '',
props: {},
async run(context) {
const publicUrlWithoutApi = context.server.publicUrl.replace('/api', '');
return {
id: context.run.id,
url: `${publicUrlWithoutApi}projects/${context.project.id}/runs/${context.run.id}`
}
},
});

View File

@@ -0,0 +1,16 @@
import { createAction} from '@activepieces/pieces-framework';
export const stopFlow = createAction({
name: 'stopFlow',
displayName: 'Stop Flow',
description: 'Stops the flow immediately this step is reached.',
props: {},
async run(context) {
context.run.stop();
return {
success: true,
message: 'Flow stopped successfully.',
};
},
});