-
Notifications
You must be signed in to change notification settings - Fork 0
feat: add Apify integration for running Actors #2
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
Adds a new "Run Actor" action that allows workflows to execute Apify Actors. Features: - Integration setup with API token configuration - Actor selection by ID (e.g., apify/rag-web-browser) - JSON input support for Actor parameters - Sync/async execution modes - Full input/output display in Runs panel - Connection testing Files added: - plugins/apify/ - Complete plugin implementation Files modified: - action-grid.tsx, action-config.tsx - UI for Run Actor action - workflow-executor.workflow.ts - Runtime execution handler - credential-fetcher.ts - API key mapping - integration-form-dialog.tsx - Settings form - test/route.ts - Connection test endpoint Limitations: - Icon is a placeholder, not the official Apify logo
|
@drobnikj is the |
It runs Actor and get dataset, but "Run Apify Actor and Get dataset" will not look nice in UI as it is too long. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Not sure where this file is imported, if it is not used we may want to remove it.
|
|
||
| // Run synchronously and wait for completion (waits indefinitely if waitSecs not specified) | ||
| const runData = await actorClient.call(actorInput); | ||
| console.log("[Scrape Single URL] Actor call completed:", { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Not sure if it is left intentionally or not, so I am just pointing it.
| runId: runData.id || "unknown", | ||
| status: runData.status || "SUCCEEDED", | ||
| datasetId: runData.defaultDatasetId, | ||
| datasetItems, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Shouldn't it be data: datasetItems ?
protoss70
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
JanHranicky
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Overall looks good 😎 Found an UI bug and had some problems settings it up locally.
| if (!value || typeof value !== "string") { | ||
| setJsonError(null); | ||
| return; | ||
| } |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| runId: runData.id || "unknown", | ||
| status: runData.status || "SUCCEEDED", | ||
| datasetId: runData.defaultDatasetId, | ||
| datasetItems, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Also think it should be data: datasetItems 🤔
| - Database Event | ||
|
|
||
| ### Action Nodes | ||
|
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
When setting up the repo locally, I also had to generate an encyption key INTEGRATION_ENCRYPTION_KEY in the .env.local file to store the API keys in the db. Without it I got following error:
Failed to decrypt integration config: Error: INTEGRATION_ENCRYPTION_KEY environment variable is required for encrypting integration credentials
at getEncryptionKey (lib/db/integrations.ts:22:11)
at decrypt (lib/db/integrations.ts:58:15)
at decryptConfig (lib/db/integrations.ts:90:23)
at <unknown> (lib/db/integrations.ts:128:13)
at Array.map (<anonymous>)
at getIntegrations (lib/db/integrations.ts:126:18)
at async GET (app/api/integrations/route.ts:50:26)
20 |
21 | if (!keyHex) {
> 22 | throw new Error(
| ^
23 | `${ENCRYPTION_KEY_ENV} environment variable is required for encrypting integration credentials`
24 | );
I generated it using openssl rand -hex 32. We may want to add this to README
@drobnikj agree - I just wanted to make sure this is the logic behind 💃 |


Adding Apify plugin with two new actions