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,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.',
};
},
});