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:
38
activepieces-fork/docs/build-pieces/misc/build-piece.mdx
Normal file
38
activepieces-fork/docs/build-pieces/misc/build-piece.mdx
Normal file
@@ -0,0 +1,38 @@
|
||||
---
|
||||
title: 'Build Custom Pieces'
|
||||
icon: 'box'
|
||||
---
|
||||
|
||||
You can use the CLI to build custom pieces for the platform. This process compiles the pieces and exports them as a `.tgz` packed archive.
|
||||
|
||||
### How It Works
|
||||
|
||||
The CLI scans the `packages/pieces/` directory for the specified piece. It checks the **name** in the `package.json` file. If the piece is found, it builds and packages it into a `.tgz` archive.
|
||||
|
||||
### Usage
|
||||
|
||||
To build a piece, follow these steps:
|
||||
|
||||
1. Ensure you have the CLI installed by cloning the repository.
|
||||
2. Run the following command:
|
||||
|
||||
```bash
|
||||
npm run build-piece
|
||||
```
|
||||
|
||||
You will be prompted to enter the name of the piece you want to build. For example:
|
||||
|
||||
```bash
|
||||
? Enter the piece folder name : google-drive
|
||||
```
|
||||
|
||||
The CLI will build the piece and you will be given the path to the archive. For example:
|
||||
|
||||
```bash
|
||||
Piece 'google-drive' built and packed successfully at dist/packages/pieces/community/google-drive
|
||||
```
|
||||
|
||||
You may also build the piece non-interactively by passing the piece name as an argument. For example:
|
||||
```bash
|
||||
npm run build-piece google-drive
|
||||
```
|
||||
31
activepieces-fork/docs/build-pieces/misc/codespaces.mdx
Normal file
31
activepieces-fork/docs/build-pieces/misc/codespaces.mdx
Normal file
@@ -0,0 +1,31 @@
|
||||
---
|
||||
title: 'GitHub Codespaces'
|
||||
icon: 'github'
|
||||
description: ''
|
||||
---
|
||||
|
||||
GitHub Codespaces is a cloud development platform that enables developers to write, run, and debug code directly in their browsers, seamlessly integrated with GitHub.
|
||||
|
||||
### Steps to setup Codespaces
|
||||
|
||||
1. Go to [Activepieces repo](https://github.com/activepieces/activepieces).
|
||||
|
||||
2. Click Code `<>`, then under codespaces click create codespace on main.
|
||||
|
||||

|
||||
|
||||
<Note>
|
||||
By default, the development setup only builds specific pieces.Open the file
|
||||
`packages/server/api/.env` and add comma-separated list of pieces to make
|
||||
available.
|
||||
|
||||
For more details, check out the [Piece Development](/build-pieces/building-pieces/development-setup#pieces-development) section.
|
||||
|
||||
</Note>
|
||||
|
||||
3. Open the terminal and run `npm start`
|
||||
|
||||
4. Access the frontend URL by opening port 4200 and signing in with these details:
|
||||
|
||||
Email: `dev@ap.com`
|
||||
Password: `12345678`
|
||||
@@ -0,0 +1,101 @@
|
||||
---
|
||||
title: 'Create New AI Provider'
|
||||
icon: 'sparkles'
|
||||
---
|
||||
|
||||
ActivePieces currently supports the following AI providers:
|
||||
|
||||
- OpenAI
|
||||
- Anthropic
|
||||
|
||||
To create a new AI provider, you need to follow these steps:
|
||||
|
||||
## Implement the AI Interface
|
||||
|
||||
Create a new factory that returns an instance of the `AI` interface in the `packages/pieces/community/common/src/lib/ai/providers/your-ai-provider.ts` file.
|
||||
|
||||
```typescript
|
||||
export const yourAiProvider = ({
|
||||
serverUrl,
|
||||
engineToken,
|
||||
}: { serverUrl: string, engineToken: string }): AI<YourAiProviderSDK> => {
|
||||
const impl = new YourAiProviderSDK(serverUrl, engineToken);
|
||||
return {
|
||||
provider: "YOUR_AI_PROVIDER" as const,
|
||||
chat: {
|
||||
text: async (params) => {
|
||||
try {
|
||||
const response = await impl.chat.text(params);
|
||||
return response;
|
||||
} catch (e: any) {
|
||||
if (e?.error?.error) {
|
||||
throw e.error.error;
|
||||
}
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
},
|
||||
};
|
||||
};
|
||||
```
|
||||
|
||||
## Register the AI Provider
|
||||
|
||||
Add the new AI provider to the `AiProviders` enum in `packages/pieces/community/common/src/lib/ai/providers/index.ts` file.
|
||||
|
||||
```diff
|
||||
export const AiProviders = [
|
||||
+ {
|
||||
+ logoUrl: 'https://cdn.activepieces.com/pieces/openai.png',
|
||||
+ defaultBaseUrl: 'https://api.your-ai-provider.com',
|
||||
+ label: 'Your AI Provider' as const,
|
||||
+ value: 'your-ai-provider' as const,
|
||||
+ models: [
|
||||
+ { label: 'model-1', value: 'model-1' },
|
||||
+ { label: 'model-2', value: 'model-2' },
|
||||
+ { label: 'model-3', value: 'model-3' },
|
||||
+ ],
|
||||
+ factory: yourAiProvider,
|
||||
+ },
|
||||
...
|
||||
]
|
||||
```
|
||||
|
||||
## Define Authentication Header
|
||||
|
||||
Now we need to tell ActivePieces how to authenticate to your AI provider. You can do this by adding an `auth` property to the `AiProvider` object.
|
||||
|
||||
The `auth` property is an object that defines the authentication mechanism for your AI provider. It consists of two properties: `name` and `mapper`. The `name` property specifies the name of the header that will be used to authenticate with your AI provider, and the `mapper` property defines a function that maps the value of the header to the format that your AI provider expects.
|
||||
|
||||
Here's an example of how to define the authentication header for a bearer token:
|
||||
|
||||
```diff
|
||||
export const AiProviders = [
|
||||
{
|
||||
logoUrl: 'https://cdn.activepieces.com/pieces/openai.png',
|
||||
defaultBaseUrl: 'https://api.your-ai-provider.com',
|
||||
label: 'Your AI Provider' as const,
|
||||
value: 'your-ai-provider' as const,
|
||||
models: [
|
||||
{ label: 'model-1', value: 'model-1' },
|
||||
{ label: 'model-2', value: 'model-2' },
|
||||
{ label: 'model-3', value: 'model-3' },
|
||||
],
|
||||
+ auth: authHeader({ bearer: true }), // or authHeader({ name: 'x-api-key', bearer: false })
|
||||
factory: yourAiProvider,
|
||||
},
|
||||
...
|
||||
]
|
||||
```
|
||||
|
||||
## Test the AI Provider
|
||||
|
||||
To test the AI provider, you can use a **universal AI** piece in a flow. Follow these steps:
|
||||
|
||||
- Add the required headers from the admin console for the newly created AI provider. These headers will be used to authenticate the requests to the AI provider.
|
||||
|
||||

|
||||
|
||||
- Create a flow that uses our **universal AI** pieces. And select **"Your AI Provider"** as the AI provider in the **Ask AI** action settings.
|
||||
|
||||

|
||||
58
activepieces-fork/docs/build-pieces/misc/dev-container.mdx
Executable file
58
activepieces-fork/docs/build-pieces/misc/dev-container.mdx
Executable file
@@ -0,0 +1,58 @@
|
||||
---
|
||||
title: 'Dev Containers'
|
||||
icon: 'docker'
|
||||
description: ''
|
||||
---
|
||||
|
||||
## Using Dev Containers in Visual Studio Code
|
||||
|
||||
The project includes a dev container configuration that allows you to use Visual Studio Code's [Remote Development](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.vscode-remote-extensionpack) extension to develop the project in a consistent environment. This can be especially helpful if you are new to the project or if you have a different environment setup on your local machine.
|
||||
|
||||
## Prerequisites
|
||||
|
||||
Before you can use the dev container, you will need to install the following:
|
||||
|
||||
- [Visual Studio Code](https://code.visualstudio.com/).
|
||||
- The [Remote Development](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.vscode-remote-extensionpack) extension for Visual Studio Code.
|
||||
- [Docker](https://www.docker.com/).
|
||||
|
||||
## Using the Dev Container
|
||||
|
||||
To use the dev container for the Activepieces project, follow these steps:
|
||||
|
||||
1. Clone the Activepieces repository to your local machine.
|
||||
2. Open the project in Visual Studio Code.
|
||||
3. Press `Ctrl+Shift+P` and type `> Dev Containers: Reopen in Container`.
|
||||
4. Run `npm start`.
|
||||
5. The backend will run at `localhost:3000` and the frontend will run at `localhost:4200`.
|
||||
|
||||
<Note>
|
||||
By default, the development setup only builds specific pieces.Open the file
|
||||
`packages/server/api/.env` and add comma-separated list of pieces to make
|
||||
available.
|
||||
|
||||
For more details, check out the [Piece Development](/build-pieces/building-pieces/development-setup#pieces-development) section.
|
||||
|
||||
</Note>
|
||||
|
||||
The login credentials are:
|
||||
Email: `dev@ap.com`
|
||||
Password: `12345678`
|
||||
|
||||
## Exiting the Dev Container
|
||||
|
||||
To exit the dev container and return to your local environment, follow these steps:
|
||||
|
||||
1. In the bottom left corner of Visual Studio Code, click the `Remote-Containers: Reopen folder locally` button.
|
||||
2. Visual Studio Code will close the connection to the dev container and reopen the project in your local environment.
|
||||
|
||||
## Troubleshoot
|
||||
|
||||
One of the best trouble shoot after an error occur is to reset the dev container.
|
||||
|
||||
1. Exit the dev container
|
||||
2. Run the following
|
||||
```sh
|
||||
sh tools/reset-dev.sh
|
||||
```
|
||||
3. Rebuild the dev container from above steps
|
||||
82
activepieces-fork/docs/build-pieces/misc/pieces-ci-cd.mdx
Normal file
82
activepieces-fork/docs/build-pieces/misc/pieces-ci-cd.mdx
Normal file
@@ -0,0 +1,82 @@
|
||||
---
|
||||
title: 'Custom Pieces CI/CD'
|
||||
icon: 'hammer'
|
||||
---
|
||||
|
||||
You can use the CLI to sync custom pieces. There is no need to rebuild the Docker image as they are loaded directly from npm.
|
||||
|
||||
### How It Works
|
||||
|
||||
Use the CLI to sync items from `packages/pieces/custom/` to instances. In production, Activepieces acts as an npm registry, storing all piece versions.
|
||||
|
||||
The CLI scans the directory for `package.json` files, checking the **name** and **version** of each piece. If a piece isn't uploaded, it packages and uploads it via the API.
|
||||
|
||||
### Usage
|
||||
|
||||
To use the CLI, follow these steps:
|
||||
|
||||
1. Generate an API Key from the Admin Interface. Go to Settings and generate the API Key.
|
||||
2. Install the CLI by cloning the repository.
|
||||
3. Run the following command, replacing `API_KEY` with your generated API Key and `INSTANCE_URL` with your instance URL:
|
||||
|
||||
|
||||
```bash
|
||||
AP_API_KEY=your_api_key_here bun run sync-pieces -- --apiUrl https://INSTANCE_URL/api
|
||||
```
|
||||
|
||||
### Developer Workflow
|
||||
|
||||
1. Developers create and modify the pieces offline.
|
||||
2. Increment the piece version in their corresponding `package.json`. For more information, refer to the [piece versioning](../piece-reference/piece-versioning) documentation.
|
||||
3. Open a pull request towards the main branch.
|
||||
4. Once the pull request is merged to the main branch, manually run the CLI or use a GitHub/GitLab Action to trigger the synchronization process.
|
||||
|
||||
### GitHub Action
|
||||
|
||||
```yaml
|
||||
name: Sync Custom Pieces
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
sync-pieces:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
# Step 1: Check out the repository code with full history
|
||||
- name: Check out repository code
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
# Step 2: Set up Bun
|
||||
- name: Set up Bun
|
||||
uses: oven-sh/setup-bun@v1
|
||||
with:
|
||||
bun-version: latest
|
||||
|
||||
# Step 3: Cache Bun dependencies
|
||||
- name: Cache Bun dependencies
|
||||
uses: actions/cache@v3
|
||||
with:
|
||||
path: ~/.bun/install/cache
|
||||
key: bun-${{ hashFiles('bun.lockb') }}
|
||||
restore-keys: |
|
||||
bun-
|
||||
|
||||
# Step 4: Install dependencies using Bun
|
||||
- name: Install dependencies
|
||||
run: bun install --no-save
|
||||
|
||||
# Step 5: Sync Custom Pieces
|
||||
- name: Sync Custom Pieces
|
||||
env:
|
||||
AP_API_KEY: ${{ secrets.AP_API_KEY }}
|
||||
run: bun run sync-pieces -- --apiUrl ${{ secrets.INSTANCE_URL }}/api
|
||||
|
||||
```
|
||||
|
||||
84
activepieces-fork/docs/build-pieces/misc/private-fork.mdx
Normal file
84
activepieces-fork/docs/build-pieces/misc/private-fork.mdx
Normal file
@@ -0,0 +1,84 @@
|
||||
---
|
||||
title: 'Setup Private Fork'
|
||||
icon: "code-branch"
|
||||
---
|
||||
|
||||
<Tip>
|
||||
**Friendly Tip #1:** If you want to experiment, you can fork or clone the public repository.
|
||||
</Tip>
|
||||
|
||||
<Tip>
|
||||
For private piece installation, you will need the paid edition. However, you can still develop pieces, contribute them back, **OR** publish them to the public npm registry and use them in your own instance or project.
|
||||
</Tip>
|
||||
|
||||
## Create a Private Fork (Private Pieces)
|
||||
|
||||
By following these steps, you can create a private fork on GitHub, GitLab or another platform and configure the "activepieces" repository as the upstream source, allowing you to incorporate changes from the "activepieces" repository.
|
||||
|
||||
1. **Clone the Repository:**
|
||||
|
||||
Begin by creating a bare clone of the repository. Remember that this is a temporary step and will be deleted later.
|
||||
|
||||
```bash
|
||||
git clone --bare git@github.com:activepieces/activepieces.git
|
||||
```
|
||||
|
||||
2. **Create a Private Git Repository**
|
||||
|
||||
Generate a new private repository on GitHub or your chosen platform. When initializing the new repository, do not include a README, license, or gitignore files. This precaution is essential to avoid merge conflicts when synchronizing your fork with the original repository.
|
||||
|
||||
3. **Mirror-Push to the Private Repository:**
|
||||
|
||||
Mirror-push the bare clone you created earlier to your newly created "activepieces" repository. Make sure to replace `<your_username>` in the URL below with your actual GitHub username.
|
||||
|
||||
```bash
|
||||
cd activepieces.git
|
||||
git push --mirror git@github.com:<your_username>/activepieces.git
|
||||
```
|
||||
|
||||
4. **Remove the Temporary Local Repository:**
|
||||
|
||||
```bash
|
||||
cd ..
|
||||
rm -rf activepieces.git
|
||||
```
|
||||
|
||||
5. **Clone Your Private Repository:**
|
||||
|
||||
Now, you can clone your "activepieces" repository onto your local machine into your desired directory.
|
||||
|
||||
```bash
|
||||
cd ~/path/to/directory
|
||||
git clone git@github.com:<your_username>/activepieces.git
|
||||
```
|
||||
|
||||
6. **Add the Original Repository as a Remote:**
|
||||
|
||||
If desired, you can add the original repository as a remote to fetch potential future changes. However, remember to disable push operations for this remote, as you are not permitted to push changes to it.
|
||||
|
||||
```bash
|
||||
git remote add upstream git@github.com:activepieces/activepieces.git
|
||||
git remote set-url --push upstream DISABLE
|
||||
```
|
||||
|
||||
You can view a list of all your remotes using `git remote -v`. It should resemble the following:
|
||||
|
||||
```
|
||||
origin git@github.com:<your_username>/activepieces.git (fetch)
|
||||
origin git@github.com:<your_username>/activepieces.git (push)
|
||||
upstream git@github.com:activepieces/activepieces.git (fetch)
|
||||
upstream DISABLE (push)
|
||||
```
|
||||
|
||||
> When pushing changes, always use `git push origin`.
|
||||
|
||||
### Sync Your Fork
|
||||
|
||||
To retrieve changes from the "upstream" repository, fetch the remote and rebase your work on top of it.
|
||||
|
||||
```bash
|
||||
git fetch upstream
|
||||
git merge upstream/main
|
||||
```
|
||||
|
||||
Conflict resolution should not be necessary since you've only added pieces to your repository.
|
||||
57
activepieces-fork/docs/build-pieces/misc/publish-piece.mdx
Normal file
57
activepieces-fork/docs/build-pieces/misc/publish-piece.mdx
Normal file
@@ -0,0 +1,57 @@
|
||||
---
|
||||
title: 'Publish Custom Pieces'
|
||||
icon: 'upload'
|
||||
---
|
||||
|
||||
You can use the CLI to publish custom pieces to the platform. This process packages the pieces and uploads them to the specified API endpoint.
|
||||
|
||||
### How It Works
|
||||
|
||||
The CLI scans the `packages/pieces/` directory for the specified piece. It checks the **name** and **version** in the `package.json` file. If the piece is not already published, it builds, packages, and uploads it to the platform using the API.
|
||||
|
||||
### Usage
|
||||
|
||||
To publish a piece, follow these steps:
|
||||
|
||||
1. Ensure you have an API Key. Generate it from the Admin Interface by navigating to Settings.
|
||||
2. Install the CLI by cloning the repository.
|
||||
3. Run the following command:
|
||||
|
||||
```bash
|
||||
npm run publish-piece-to-api
|
||||
```
|
||||
|
||||
4. You will be asked three questions to publish your piece:
|
||||
|
||||
- `Piece Folder Name`: This is the name associated with the folder where the action resides. It helps organize and categorize actions within the piece.
|
||||
|
||||
- `API URL`: This is the URL of the API endpoint where the piece will be published (ex: https://cloud.activepieces.com/api).
|
||||
|
||||
- `API Key Source`: This is the source of the API key. It can be either `Env Variable (AP_API_KEY)` or `Manually`.
|
||||
|
||||
|
||||
In case you choose `Env Variable (AP_API_KEY)`, the CLI will use the API key from the `.env` file in the `packages/server/api` directory.
|
||||
|
||||
In case you choose `Manually`, you will be asked to enter the API key.
|
||||
|
||||
|
||||
Examples:
|
||||
|
||||
```bash
|
||||
npm run publish-piece-to-api
|
||||
|
||||
? Enter the piece folder name : google-drive
|
||||
? Enter the API URL : https://cloud.activepieces.com/api
|
||||
? Enter the API Key Source : Env Variable (AP_API_KEY)
|
||||
|
||||
```
|
||||
|
||||
```bash
|
||||
npm run publish-piece-to-api
|
||||
|
||||
? Enter the piece folder name : google-drive
|
||||
? Enter the API URL : https://cloud.activepieces.com/api
|
||||
? Enter the API Key Source : Manually
|
||||
? Enter the API Key : ap_1234567890abcdef1234567890abcdef
|
||||
|
||||
```
|
||||
Reference in New Issue
Block a user