1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
//! Foundation for Bamboo's local plugin system.
//!
//! A **plugin** is a locally-installed bundle that can provide any of:
//! skills, MCP servers, prompt presets, and (future) workflows. It is
//! installed to `~/.bamboo/plugins/<id>/` (see
//! `bamboo_config::paths::plugin_dir`), keeping the plugin's own files
//! together (manifest, skills, prompts, workflows, optional per-platform
//! binaries), then REGISTERED into Bamboo's existing capability locations:
//!
//! | Capability | Registered into | Discovery model |
//! |---|---|---|
//! | MCP servers | `config.json` (`Config.mcp`) + `mcp_manager.start_server` | copied into shared config |
//! | Skills | N/A — discovered **in place** | `~/.bamboo/plugins/*/skills` is an additional `SkillDiscoveryDir` (see `bamboo-skills`) |
//! | Prompt presets | `prompt-presets.json` | copied into shared store |
//! | Workflows | `~/.bamboo/workflows/*.md` | copied into shared dir (no discovery-dir mechanism exists yet) |
//!
//! This crate defines the shared skeleton three things build on:
//!
//! 1. [`manifest::PluginManifest`] — the `plugin.json` schema, with
//! validation and the `${plugin_dir}`/`${platform_bin}` token-substitution
//! contract for MCP stdio commands (see the `manifest` module docs for the
//! full contract).
//! 2. [`registry::InstalledPlugins`] — the `~/.bamboo/plugins/installed.json`
//! provenance registry (load/save/add/remove), recording exactly what each
//! plugin registered so uninstall/upgrade is precise.
//! 3. [`installer::PluginInstaller`] — the trait later agents implement to
//! actually wire capability registration (that wiring needs `AppState`,
//! which this `infra`-layer crate intentionally does not depend on).
//!
//! See the repo-root `PLUGIN_PLAN.md` (temporary, deleted before final merge)
//! for how the remaining work is split across parallel agents, and
//! `examples/hello-plugin/` for a minimal end-to-end reference plugin
//! (one skill + one prompt preset, no binary, no MCP server).
pub use ;
pub use ;
pub use ;
pub use ;