Files
elizaos--eliza/plugins/plugin-registry/README.md
T
wehub-resource-sync 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
chore: import upstream snapshot with attribution
2026-07-13 12:43:05 +08:00

91 lines
4.6 KiB
Markdown

# @elizaos/plugin-registry
Plugin discovery, manifest reading, install/uninstall lifecycle, and HTTP route handlers for plugin management in elizaOS.
## What it does
`@elizaos/plugin-registry` consolidates the plugin-management HTTP API that was previously split across `@elizaos/agent` and `@elizaos/app-core`. It provides:
- **Plugin list API** — merges bundled plugins (from the static registry), runtime-loaded plugins, and store-installed plugins into a single list with enabled/active status, validation errors, and registry metadata (version, release stream, icon, links).
- **Plugin toggle and config** — `PUT /api/plugins/:id` enables/disables a plugin and writes config env vars; changes are applied to the live runtime when possible, or a restart is scheduled.
- **Install / update / uninstall** — `POST /api/plugins/install|update|uninstall` download or remove plugins from the npm registry, update `eliza.json`, and attempt a live runtime reload.
- **Advanced lifecycle operations** — eject a plugin to a local source checkout (`/eject`), sync it with upstream (`/sync`), or restore it to the registry version (`/reinject`).
- **Secrets surface** — `GET /api/secrets` aggregates all sensitive plugin parameters across the full plugin list; `PUT /api/secrets` bulk-writes secrets to `process.env`.
- **Plugin health probes** — `POST /api/plugins/:id/test` calls a plugin's `health`/`testConnection` method or performs a live connectivity check (e.g. Telegram bot token validation).
- **Core plugin management** — `GET /api/plugins/core` and `POST /api/plugins/core/toggle` manage optional core plugins via the `plugins.allow` list in `eliza.json`.
- **Drift diagnostics** — `GET /api/plugins/diagnostics` detects mismatches between the Settings UI model and the raw config.
## Exported API
```ts
import {
// Agent-tier route handler
handlePluginRoutes,
// App-core compat-tier route handler + list builder
handlePluginsCompatRoutes,
buildPluginListResponse,
// Install lifecycle forwarders (lazy-load; break app-core ↔ agent cycle)
installPlugin,
installAndRestart,
uninstallPlugin,
uninstallAndRestart,
listInstalledPlugins,
// Types
type InstallPhase,
type InstallProgress,
type InstallResult,
type ProgressCallback,
type UninstallResult,
} from "@elizaos/plugin-registry";
```
## Route surface
### Agent-tier (`handlePluginRoutes`)
| Method | Path | Description |
|--------|------|-------------|
| GET | `/api/plugins` | Full plugin list |
| PUT | `/api/plugins/:id` | Toggle enabled / write config |
| GET | `/api/secrets` | Aggregate sensitive params |
| PUT | `/api/secrets` | Bulk-write secrets to env |
| POST | `/api/plugins/:id/test` | Plugin health probe |
| POST | `/api/plugins/install` | Install from npm registry |
| POST | `/api/plugins/update` | Update installed plugin |
| POST | `/api/plugins/uninstall` | Uninstall plugin |
| POST | `/api/plugins/:id/eject` | Eject to local source |
| POST | `/api/plugins/:id/sync` | Sync ejected plugin |
| POST | `/api/plugins/:id/reinject` | Restore to registry version |
| GET | `/api/plugins/installed` | List runtime-installed plugins |
| GET | `/api/plugins/ejected` | List ejected plugins |
| GET | `/api/core/status` | `@elizaos/core` eject status |
| GET | `/api/plugins/core` | Core + optional-core list |
| POST | `/api/plugins/core/toggle` | Toggle optional-core plugin |
### App-core compat-tier (`handlePluginsCompatRoutes`)
| Method | Path | Description |
|--------|------|-------------|
| GET | `/api/plugins` | Plugin list (registry + manifest + runtime) |
| GET | `/api/plugins/diagnostics` | Drift diagnostics |
| PUT | `/api/plugins/:id` | Toggle / config + vault mirror |
| POST | `/api/plugins/:id/test` | Connectivity test |
| POST | `/api/plugins/:id/reveal` | Reveal raw env value from vault |
## Required config / env
This package reads no env vars of its own. Plugin-specific env vars (e.g. `OPENAI_API_KEY`, `TELEGRAM_BOT_TOKEN`) are declared by each plugin's `pluginParameters` manifest entry and are read from `process.env` when building the plugin list or handling config writes.
The optional `ELIZA_SETTINGS_DEBUG` env var enables verbose before/after logging on PUT operations.
## Dependencies
- `@elizaos/core``AgentRuntime`, `logger`
- `@elizaos/shared` — shared request/response schemas, plugin constants
- `@elizaos/vault` — encrypted secret storage (via `@elizaos/app-core` vault-mirror service)
The canonical plugin install implementation lives in `@elizaos/agent`. The forwarders in `src/services/plugin-installer.ts` lazy-load it at call time to avoid a static circular dependency.