Documentation
¶
Overview ¶
Package plugin defines the transport-neutral admission contract for Sahara extensions. It does not load or execute code; WASM and MCP runtimes consume an admitted Manifest only after operator policy has bounded its capabilities.
Index ¶
Constants ¶
const ( ManifestSchemaVersion = 1 MaxManifestBytes = 256 << 10 CompatibilityWindow = 2 // supported minor releases after deprecation )
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Admission ¶
type Admission struct {
Manifest Manifest
GrantedCapabilities []Capability
}
Admission is the immutable result passed to a concrete extension runtime.
type Capability ¶
type Capability string
Capability is an operator-grantable execution capability. Values are deliberately strings so additive capability names do not require a manifest schema bump; an unknown capability remains denied unless policy grants it.
const ( CapabilityFilesystemRead Capability = "filesystem.read" CapabilityFilesystemWrite Capability = "filesystem.write" CapabilityNetwork Capability = "network" CapabilityToolCall Capability = "tool.call" )
type Manifest ¶
type Manifest struct {
SchemaVersion int `json:"schema_version"`
ID string `json:"id"`
Revision string `json:"revision"`
ArtifactDigest string `json:"artifact_digest"`
RequestedCapabilities []Capability `json:"requested_capabilities,omitempty"`
Tools []Tool `json:"tools,omitempty"`
OverrideCoreTools bool `json:"override_core_tools,omitempty"`
}
Manifest is side-effect-free discovery metadata. Unknown JSON fields are ignored for additive compatibility. Privileged flags are represented only so admission can explicitly reject a plugin attempting to self-elevate.
func DecodeManifest ¶
DecodeManifest performs lazy, side-effect-free discovery. Unknown fields are intentionally ignored; required fields and security invariants are validated by Admit against operator policy.
type Policy ¶
type Policy struct {
ArtifactDigest string
GrantedCapabilities map[Capability]struct{}
CoreToolNames map[string]struct{}
}
Policy is the deployment/Aether ceiling. It is external to the plugin artifact, so embedded metadata cannot broaden it.
type Registry ¶
type Registry struct {
// contains filtered or unexported fields
}
Registry rejects plugin identity and tool collisions across an activated set. It stores only already-admitted manifests and never instantiates code.
func NewRegistry ¶
func NewRegistry() *Registry