Skip to content

Latest commit

 

History

History
125 lines (103 loc) · 5.82 KB

File metadata and controls

125 lines (103 loc) · 5.82 KB

Spanda Plugin System

Spanda plugins extend the platform without modifying core. They complement the existing package and provider systems — packages supply Spanda language modules and official providers; plugins add Control Center UI, CLI commands, and lifecycle hooks for readiness, assurance, diagnosis, recovery, trust, health, and telemetry.

Architecture

┌─────────────────────────────────────────────────────────────┐
│                        Spanda CLI / API                      │
├─────────────────────────────────────────────────────────────┤
│  spanda plugin search | install | enable | inspect | trust   │
├─────────────────────────────────────────────────────────────┤
│                     spanda-plugin crate                      │
│  manifest · registry · security · loader · runtime · hooks   │
├──────────────┬──────────────────────────────┬───────────────┤
│ Plugin API   │ Capability enforcement       │ Audit log     │
│ (stable)     │ (deny undeclared access)     │               │
├──────────────┴──────────────────────────────┴───────────────┤
│ Packages & providers (unchanged)                             │
└─────────────────────────────────────────────────────────────┘

Plugin types

Type Purpose
provider Extend provider integrations (complements spanda-providers)
control-center-ui Dashboard panels, entity tabs, routes
cli Namespaced CLI commands
readiness Mission/readiness hooks
assurance Assurance workflow hooks
diagnosis Diagnosis completion hooks
recovery Recovery workflow hooks
trust Trust evaluation extensions
health Health change hooks
telemetry Telemetry stream extensions
device-discovery Device discovery integrations
report-generator Report generation
solution-blueprint Solution template bundles

Loading model (priority)

Priority Format Use case
P0 (default) Sandboxed WASM (plugin.wasm) Production plugins
P1 Native Rust dynamic library Trusted local development only
P2 TypeScript/JS (index.js) Control Center UI plugins only

Default execution path: sandboxed WASM. Manifest-only plugins (metadata + hooks, no artifact) are supported for development and tests.

Registry trust tiers

Tier Meaning
official Spanda-published; signature required when signed = true
verified Third-party verified publisher
community Community registry entry
experimental Early access
deprecated Still listed; install discouraged
blocked Install rejected

CLI

spanda plugin search readiness
spanda plugin install --path examples/plugins/readiness-plugin
spanda plugin enable spanda-plugin-readiness-example
spanda plugin inspect spanda-plugin-readiness-example --json
spanda plugin trust spanda-plugin-readiness-example verified
spanda plugin disable spanda-plugin-readiness-example
spanda plugin uninstall spanda-plugin-readiness-example
spanda plugin install spanda-plugin-healthcare   # registry name (tarball or local example fallback)
spanda healthcare readiness                      # namespaced command from enabled plugin manifest

Control Center API:

curl -s http://127.0.0.1:8787/v1/plugins
curl -s 'http://127.0.0.1:8787/v1/plugins/search?q=readiness'
curl -s -X POST http://127.0.0.1:8787/v1/plugins/install \
  -H "Authorization: Bearer $SPANDA_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"path":"examples/plugins/control-center-panel"}'
curl -s -X POST http://127.0.0.1:8787/v1/plugins/spanda-plugin-control-center-panel/enable \
  -H "Authorization: Bearer $SPANDA_API_KEY"
curl -s http://127.0.0.1:8787/v1/plugins/control-center
curl -s http://127.0.0.1:8787/v1/plugins/control-center/spanda-plugin-control-center-panel/bundle

GET /v1/plugins returns inspect-style entries including control_center_panels for the Marketplace UI. Install requires Provision; enable/disable require Operate.

Stable — promotion gate: ./scripts/plugin_stable_promotion_gate.sh · plugin-stable-promotion.md. Remote curated marketplace growth remains Next.

Examples

Example Path
Readiness examples/plugins/readiness-plugin/
Report generator examples/plugins/report-plugin/
Device discovery examples/plugins/device-discovery-plugin/
Control Center panel examples/plugins/control-center-panel/
Healthcare solution examples/plugins/healthcare-plugin/
ADAS solution examples/plugins/adas-plugin/
Recovery orchestrator examples/plugins/recovery-plugin/

Related docs

Crate layout

Implementation lives in crates/spanda-plugin/. Installed plugins are stored under .spanda/plugins/ in the project tree.