# Plugin Orchestration Smoke Example This first-party example validates the orchestration-grade plugin host surface. It is intentionally small and exists as an acceptance fixture rather than a product plugin. ## What it exercises - `apiRoutes` under `/api/plugins/:pluginId/api/*` - restricted database migrations and runtime `ctx.db` - plugin-owned rows joined to `public.issues` - plugin-created child issues with namespaced origin metadata - billing codes, workspace inheritance, blocker relations, documents, wakeups, and orchestration summaries - issue detail and settings UI slots that surface route, capability, namespace, and smoke status ## Development ```bash pnpm install pnpm typecheck pnpm test pnpm build ``` ## Install Into Paperclip Use an absolute local path during development: ```bash curl -X POST http://127.0.0.1:3100/api/plugins/install \ -H "Content-Type: application/json" \ -d '{"packageName":"/absolute/path/to/paperclip/packages/plugins/examples/plugin-orchestration-smoke-example","isLocalPath":true}' ``` ## Scoped Route Smoke After the plugin is ready, run the scoped route against an existing issue: ```bash curl -X POST http://127.0.0.1:3100/api/plugins/paperclipai.plugin-orchestration-smoke-example/api/issues//smoke \ -H "Content-Type: application/json" \ -d '{"assigneeAgentId":""}' ``` The route returns the generated child issue, resolved blocker, billing code, subtree ids, and wakeup result.