426e9eeabd
Voice Workbench / headless workbench (mocked backends) (push) Has been cancelled
Voice Workbench / real acoustic lane (nightly, provisioned only) (push) Has been cancelled
ci / test (push) Has been cancelled
ci / lint-and-format (push) Has been cancelled
ci / build (push) Has been cancelled
ci / dev-startup (push) Has been cancelled
gitleaks / gitleaks (push) Has been cancelled
Markdown Links / Relative Markdown Links (push) Has been cancelled
Quality (Extended) / Homepage Build (PR smoke) (push) Has been cancelled
Quality (Extended) / Comment-only diff guard (push) Has been cancelled
Quality (Extended) / Format + Type Safety Ratchet (push) Has been cancelled
Quality (Extended) / Develop Gate (secret scan + UI determinism) (push) Has been cancelled
Quality (Extended) / Develop Gate (lint) (push) Has been cancelled
Chat shell gestures / Chat shell gesture + parity e2e (push) Has been cancelled
Cloud Gateway Discord / Test (push) Has been cancelled
Benchmark Bridge Tests / benchmark (bunx @biomejs/biome check packages/lifeops-bench/src, benchmark-lint) (push) Has been cancelled
Benchmark Bridge Tests / benchmark (bunx vitest run --config packages/lifeops-bench/vitest.config.ts --root packages/lifeops-bench --passWithNoTests, benchmark-tests) (push) Has been cancelled
Build Agent Image / build-and-push (push) Has been cancelled
Dev Smoke / bun run dev onboarding chat (push) Has been cancelled
Dev Smoke / Vite HMR dependency-level smoke (push) Has been cancelled
Electrobun Submodule Guard / electrobun gitlink is fetchable (push) Has been cancelled
Publish @elizaos/example-code / check_npm (push) Has been cancelled
Publish @elizaos/example-code / publish_npm (push) Has been cancelled
Publish @elizaos/plugin-elizacloud / verify_version (push) Has been cancelled
Publish @elizaos/plugin-elizacloud / publish_npm (push) Has been cancelled
Sandbox Live Smoke / Sandbox live smoke (push) Has been cancelled
Snap Build & Test / Build Snap (amd64) (push) Has been cancelled
Snap Build & Test / Build Snap (arm64) (push) Has been cancelled
Test Packaging / elizaos CLI global-install smoke (node + bun) (push) Has been cancelled
Cloud Gateway Webhook / Test (push) Has been cancelled
Cloud Tests / lint-and-types (push) Has been cancelled
Cloud Tests / unit-tests (push) Has been cancelled
Cloud Tests / integration-tests (push) Has been cancelled
Cloud Tests / e2e-tests (push) Has been cancelled
CodeQL Advanced / Analyze (javascript-typescript) (push) Has been cancelled
Deploy Apps Worker (Product 2) / Determine environment (push) Has been cancelled
Deploy Apps Worker (Product 2) / Deploy apps worker to apps-control host (${{ needs.determine-env.outputs.environment }}) (push) Has been cancelled
Deploy Eliza Provisioning Worker / Determine environment (push) Has been cancelled
Deploy Eliza Provisioning Worker / Deploy worker to Hetzner host (${{ needs.determine-env.outputs.environment }} @ ${{ needs.determine-env.outputs.deployment_sha }}) (push) Has been cancelled
Dev Smoke / Classify changed paths (push) Has been cancelled
supply-chain / sbom (push) Has been cancelled
supply-chain / vulnerability-scan (push) Has been cancelled
Build, Push & Deploy to Phala Cloud / build-and-push (push) Has been cancelled
Test Packaging / Validate Packaging Configs (push) Has been cancelled
Test Packaging / Build & Test PyPI Package (push) Has been cancelled
Test Packaging / PyPI on Python ${{ matrix.python }} (push) Has been cancelled
Test Packaging / Pack & Test JS Tarballs (push) Has been cancelled
UI Fixture E2E / ui-fixture-e2e (push) Has been cancelled
UI Fixture E2E / fixture-e2e (push) Has been cancelled
UI Story Gate / story-gate (push) Has been cancelled
vault-ci / test (macos-latest) (push) Has been cancelled
vault-ci / test (ubuntu-latest) (push) Has been cancelled
vault-ci / test (windows-latest) (push) Has been cancelled
vault-ci / app-core wiring tests (push) Has been cancelled
verify-patches / verify patches/CHECKSUMS.sha256 (push) Has been cancelled
Voice Benchmark Smoke / voice-emotion fixture smoke (push) Has been cancelled
Voice Benchmark Smoke / voiceagentbench fixture smoke (push) Has been cancelled
Voice Benchmark Smoke / voicebench-quality unit smoke (push) Has been cancelled
Voice Benchmark Smoke / voicebench TypeScript unit (no audio) (push) Has been cancelled
Voice Benchmark Smoke / voice bench smoke summary (push) Has been cancelled
Windows CI / windows ([bun run --cwd packages/app-core test bun run --cwd packages/elizaos test bun run --cwd packages/cloud/shared test], app-and-cli) (push) Has been cancelled
Windows CI / windows ([bun run --cwd packages/scenario-runner test bun run --cwd packages/vault test bun run --cwd packages/security test bun run --cwd plugins/plugin-coding-tools test], framework-packages) (push) Has been cancelled
Windows CI / windows ([bun run --cwd plugins/plugin-elizacloud test bun run --cwd plugins/plugin-discord test bun run --cwd plugins/plugin-anthropic test bun run --cwd plugins/plugin-openai test bun run --cwd plugins/plugin-app-control test bun run --cwd plugins/pl… (push) Has been cancelled
Windows CI / windows ([node packages/scripts/run-turbo.mjs run build --filter=@elizaos/core --filter=@elizaos/shared --filter=@elizaos/agent --concurrency=4 node packages/scripts/run-bash-linux-only.mjs scripts/verify-riscv64-buildpaths.sh node packages/scripts/run… (push) Has been cancelled
Windows CI / windows ([node packages/scripts/run-turbo.mjs run typecheck --filter=@elizaos/core --filter=@elizaos/shared --filter=@elizaos/cloud-shared --concurrency=4 bun run --cwd packages/core test bun run --cwd packages/shared test], core-runtime, 75) (push) Has been cancelled
76 lines
4.2 KiB
Markdown
76 lines
4.2 KiB
Markdown
# @elizaos/plugin-workflow
|
|
|
|
In-process workflow engine for elizaOS agents. Generate and deploy automation workflows from natural language using a RAG pipeline. The plugin embeds its own execution engine — workflows run in the agent process, no separate sidecar.
|
|
|
|
> **Vocabulary:** a **workflow** is a stored node-graph definition; one execution is a **run**; the attachable start condition is a **trigger** (`schedule` or `event`). See [`docs/automation-glossary.md`](../../docs/automation-glossary.md) for how workflows, triggers, tasks, scheduled items, and automations differ and what fires each.
|
|
|
|
## Configuration
|
|
|
|
No workflow-specific env vars are required. The plugin's `EmbeddedWorkflowService` runs CRUD + execution + scheduler + webhook handling locally inside the agent, persisted to the agent's Postgres schema.
|
|
|
|
## Plugin Components
|
|
|
|
| Component | Purpose |
|
|
|---|---|
|
|
| `EmbeddedWorkflowService` | In-process workflow execution engine (CRUD + node runtime + scheduler + webhooks). |
|
|
| `WorkflowService` | Public service surface used by the agent's `WORKFLOW` umbrella action. Routes to the embedded workflows engine. |
|
|
| `WorkflowCredentialStore` | DB-backed `(userId, credType) → credential ID` mappings (service type `workflow_credential_store`). |
|
|
| `workflowStatusProvider` | `workflow_status` provider — per-user workflows with last execution status. |
|
|
| `activeWorkflowsProvider` | `ACTIVE_WORKFLOWS` provider — active/inactive workflows for LLM context. |
|
|
| `pendingDraftProvider` | `PENDING_WORKFLOW_DRAFT` provider — surfaces an in-flight draft so the agent can clarify before persisting. |
|
|
| Routes | `/api/workflow/*` (rawPath) plus plugin-name-prefixed `/workflow/*` (see Routes below). |
|
|
|
|
The `WORKFLOW` umbrella action is defined in this plugin (`src/actions/workflow.ts`) and dispatches op-based commands (`create`, `modify`, `activate`, `deactivate`, `toggle_active`, `delete`, `executions`) to this plugin's services.
|
|
|
|
## RAG Pipeline (workflow generation from natural language)
|
|
|
|
1. **Extract keywords** from the user request.
|
|
2. **Match** against existing workflows (RAG over the workflow store) — return a match if one exists.
|
|
3. **Generate** a new workflow definition if no match — LLM produces a node graph against the catalog from `src/data/`.
|
|
4. **Validate & repair** node parameters / credentials / connections.
|
|
5. **Synthesize output schemas** for downstream nodes.
|
|
6. **Position** nodes for the visual editor.
|
|
|
|
## Credential Resolution
|
|
|
|
Credentials are resolved per credential type at deploy/execution time. The chain (first match wins, see `src/utils/credentialResolver.ts`):
|
|
1. Credential store DB — cached `(userId, credType) → credentialId` mappings via `WorkflowCredentialStore`.
|
|
2. Static config — `character.settings.workflows.credentials`.
|
|
3. External provider — a registered `CredentialProvider` service (e.g. cloud OAuth); newly resolved IDs are written back to the store.
|
|
4. Otherwise the credType is reported as a missing connection for manual configuration.
|
|
|
|
## Routes
|
|
|
|
Two registration paths produce two URL shapes.
|
|
|
|
The `rawPath` route plugin (`src/plugin-routes.ts`, registered via `registerAppRoutePluginLoader`) mounts at `/api/workflow/*`:
|
|
|
|
- `GET /api/workflow/status` — engine + plugin status
|
|
- `GET/POST /api/workflow/workflows` — list / create
|
|
- `POST /api/workflow/workflows/generate` — generate a draft from a prompt
|
|
- `POST /api/workflow/workflows/resolve-clarification`
|
|
- `GET/PUT/DELETE /api/workflow/workflows/:id`
|
|
- `POST /api/workflow/workflows/:id/activate` · `/deactivate`
|
|
- `GET /api/workflow/workflows/:id/executions`
|
|
- `GET /api/automations` — combined workflows + triggers + tasks + draft conversations
|
|
|
|
The standard plugin `routes` (`src/routes/index.ts`) are mounted under the plugin-name prefix `/workflow/*` by the runtime:
|
|
|
|
- `GET /workflow/executions` · `/workflow/executions/:id` — list (workflowId/status/limit/cursor) + detail
|
|
- `GET /workflow/nodes` · `/workflow/nodes/available` · `/workflow/nodes/:type`
|
|
- `POST /workflow/workflows/validate`
|
|
- `GET/POST/PUT/PATCH/DELETE /workflow/webhooks/:path` — trigger-node webhooks
|
|
|
|
## Development
|
|
|
|
```bash
|
|
bun install
|
|
bun run build
|
|
bun run typecheck
|
|
bun run test
|
|
bun run lint
|
|
```
|
|
|
|
Lint/format is [Biome 2.x](https://biomejs.dev). TypeScript 6+. ESM only.
|
|
|