When the orchestrator imports `block/core/internal/api/orchestrator/v1` transitively through other core packages and also generates its own bindings for the same files (accounts.proto etc.), proto registration panics at startup: "file ... is already registered". Tests in the orchestrator confirmed this. Fix: - buf generate now uses --path to limit core's output to proto/orchestrator/v1/plugin_registry.proto (see new `make proto`). - Adds a minimal MyAccount message and PluginAuthService.ListMyAccounts RPC to plugin_registry.proto (already pushed to block/proto) so the CLI's account picker no longer needs accounts.proto generated. - CLI switches back to cli.Auth.ListMyAccounts; orchclient.Client drops the Account field. Side effect: every previously-generated orchestrator/v1 binding besides plugin_registry is removed from this module. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
BlockNinja Plugin SDK
Types, interfaces, and utilities for building BlockNinja plugins.
Package Structure
| Package | Purpose |
|---|---|
plugin/ |
PluginRegistration, ServiceDeps, RegisterFunc |
blocks/ |
BlockMeta, BlockFunc, BlockRegistry interface, BlockContext |
blocks/builtin/ |
Reusable block implementations (HTMLBlock) |
templates/ |
TemplateRegistry interface |
templates/bn/ |
Shared templ components (head, engagement, toolbar) |
auth/ |
Claims types, context extractors |
content/ |
Content access interface |
settings/ |
Settings access interface |
gating/ |
Access gating evaluation |
crypto/ |
Encrypt/Decrypt interface |
render/ |
Rich text rendering utilities |
video/ |
Video embed URL parsing |
ai/ |
AI tool registry interface and types |
rbac/ |
Role type definition |
Usage
import "git.dev.alexdunmow.com/ninja/core/plugin"
Description
Languages
Go
74.9%
templ
23.4%
Makefile
1.6%