Defines the host<->guest wire contract for the .so -> wazero migration as a repo-local buf module (abi/proto/v1, generated Go in abi/v1): - manifest.proto: PluginManifest mirroring every static field of plugin.PluginRegistration (abi_version, deps, block/template registrations, admin pages, settings schema, theme presets, fonts, master pages, AI actions, RBAC method roles, CSS manifest, icon packs, directory extensions, job types, RAG fetcher types, settings panel, hook flags, core service bindings) - invoke.proto: bn_invoke envelope, Hook catalog (RENDER_BLOCK, RENDER_TEMPLATE, HANDLE_HTTP, JOB, LOAD, UNLOAD, RAG_FETCH, MEDIA_HOOK, DESCRIBE), AbiError, and job/lifecycle/rag/media/describe payloads - render.proto: RenderBlock/RenderTemplate payloads + RenderContext enumerating every ctx value from blocks/context.go (incl. BlockContext 1:1) - http.proto: buffered HttpRequest/HttpResponse for HANDLE_HTTP - db.proto: guest sql-driver messages (DbValue oneof over pgx-mappable types, query/exec/tx with host-side tx handles, SQLSTATE-carrying DbError) - capability.proto: HostCall envelope + one request/response pair per CoreServices interface method (content, settings+update, gating, crypto, menus, datasources, users, subscriptions, media.deposit, email.send, ai.text_call, ai.tools.register, bridge, jobs.submit, embeddings, rag, reviews, badges.refresh) The abi/ buf module is deliberately separate from the repo-root config: proto/ is the shared block/proto submodule (service API contracts); the ABI is SDK-internal and versions in lockstep with the guest shim. New `make abi` target runs buf lint + generate. docs/wasm-abi.md documents the ptr+len calling convention (bn_alloc, bn_invoke, packed u64), hook catalog, error semantics, abi_version evolution rules, and the full registration/ CoreServices coverage tables. Verified: `cd abi && buf lint` exit 0; `go build ./...` exit 0. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
22 lines
707 B
YAML
22 lines
707 B
YAML
# Buf module for the wasm plugin ABI (WO-WZ-001).
|
|
#
|
|
# Deliberately separate from the repo-root buf.yaml: that one wraps the
|
|
# proto/ git submodule (shared block/proto service contracts), while this
|
|
# ABI is SDK-internal and versions in lockstep with the guest shim, so it
|
|
# lives repo-local under abi/proto. Run buf from this directory (`make abi`
|
|
# at the repo root).
|
|
version: v2
|
|
modules:
|
|
- path: proto
|
|
lint:
|
|
use:
|
|
- STANDARD
|
|
except:
|
|
# The WO/spec fix the schema path at abi/proto/v1/ (module-relative v1/)
|
|
# while the proto package is abi.v1, so the package↔directory rule
|
|
# cannot hold without an abi/proto/abi/v1 stutter.
|
|
- PACKAGE_DIRECTORY_MATCH
|
|
breaking:
|
|
use:
|
|
- FILE
|