mirror of
https://github.com/paperclipai/paperclip.git
synced 2026-10-29 21:07:40 +01:00
feat(ui): gate Gateways and Profiles from host bootstrap
Co-Authored-By: Paperclip <noreply@paperclip.ing>
This commit is contained in:
1 parent
89358f38bf
commit
f7f21e585e
23 files changed
+429
-52
No files matched your search
@@ -6,6 +6,8 @@ It is intentionally narrower than [PLUGIN_SPEC.md](./PLUGIN_SPEC.md). The spec i
|
||||
|
||||
> **New to plugins?** Start with the short [Local Plugin Development guide](./LOCAL_PLUGIN_DEVELOPMENT.md) — it walks the CLI happy path (`plugin init` → `pnpm dev` → `plugin install <path>`) end to end. Come back here for the full manifest surface, worker capabilities, and UI components.
|
||||
|
||||
> **Host features are reserved.** The optional versioned `hostFeatures` manifest field is not an extension point for third-party plugins. Core accepts its closed Gateways and Profiles keys only from the canonical `paperclipai.paperclip-ee` plugin, and enables them only while that plugin is ready. Other plugins must use capabilities, API routes, tools, and UI slots for their integrations.
|
||||
|
||||
## Current reality
|
||||
|
||||
- Treat plugin workers and plugin UI as trusted code.
|
||||
|
||||
@@ -346,6 +346,10 @@ export interface PaperclipPluginManifestV1 {
|
||||
routines?: PluginManagedRoutineDeclaration[];
|
||||
skills?: PluginManagedSkillDeclaration[];
|
||||
localFolders?: PluginLocalFolderDeclaration[];
|
||||
hostFeatures?: {
|
||||
schemaVersion: 1;
|
||||
features: Array<"apps.named_mcp_gateways" | "apps.access_profiles">;
|
||||
};
|
||||
/** Legacy top-level launcher declarations. Prefer `ui.launchers` for new manifests. */
|
||||
launchers?: PluginLauncherDeclaration[];
|
||||
ui?: {
|
||||
@@ -387,6 +391,12 @@ Rules:
|
||||
- `minimumHostVersion` is preferred, with `minimumPaperclipVersion` retained for
|
||||
backwards compatibility
|
||||
- `capabilities` must be static and install-time visible
|
||||
- `hostFeatures` is a closed host-product contract, not a general extension
|
||||
mechanism. Only the canonical `paperclipai.paperclip-ee` manifest may declare
|
||||
it. Unknown keys, duplicates, unsupported schema versions, and declarations
|
||||
from any other plugin are rejected. The host enables a valid declaration only
|
||||
while that plugin's stored lifecycle status is `ready`; every other state
|
||||
fails closed.
|
||||
- config schema must be JSON Schema compatible
|
||||
- `entrypoints.ui` points to the directory containing the built UI bundle
|
||||
- `ui.slots` declares which extension slots the plugin fills, so the host knows what to mount without loading the bundle eagerly; each slot references an `exportName` from the UI bundle
|
||||
|
||||
Reference in new issue
Block a user