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,67 @@
import { Property, createAction } from '@activepieces/pieces-framework';
import { retuneAuth } from '../../index';
import { HttpMethod, httpClient } from '@activepieces/pieces-common';
export const askChatbot = createAction({
auth: retuneAuth,
name: 'ask_chatbot',
displayName: 'Ask Chatbot',
description: 'Sends a message to an existing thread with a chatbot.',
props: {
thread: Property.Dropdown({
auth: retuneAuth,
displayName: 'Thread',
description: 'The thread you want to send the message to.',
required: true,
refreshers: [],
options: async ({ auth }) => {
if (!auth) {
return {
disabled: true,
options: [],
placeholder: 'Please connect your account first',
};
}
const options = await httpClient.sendRequest({
url: `https://retune.so/api/chat/${(auth).props.chatId}/threads`,
method: HttpMethod.POST,
headers: {
'X-Workspace-API-Key': (auth).props.apiKey,
},
body: {},
});
return {
options: options.body['threads'].map((item: any) => {
return {
label: item.name ?? item.id,
value: item.id,
};
}),
};
},
}),
message: Property.ShortText({
displayName: 'Message',
description: 'The message you want to send.',
required: true,
}),
},
async run({ auth, propsValue }) {
const { thread, message } = propsValue;
const response = await httpClient.sendRequest({
url: `https://retune.so/api/chat/${auth.props.chatId}/response`,
method: HttpMethod.POST,
headers: {
'X-Workspace-API-Key': auth.props.apiKey,
},
body: {
threadId: thread,
input: message,
},
});
return (response.body as any).response.value;
},
});