plugin

package
v0.2.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 17, 2026 License: MIT Imports: 16 Imported by: 0

Documentation

Index

Constants

View Source
const AuditSchemaVersion = "pinax.plugin_audit.v1"
View Source
const LockSchemaVersion = "pinax.plugin_lock.v1"
View Source
const ManifestSchemaVersion = "pinax.plugin.v1"
View Source
const PluginCallSchema = "pinax.plugin.call.v1"
View Source
const PluginResultSchema = "pinax.plugin.result.v1"
View Source
const RegistrySchemaVersion = "pinax.plugin_registry.v1"

Variables

View Source
var ErrRunnerUnavailable = errors.New("plugin runner unavailable")

Functions

func EnabledCount

func EnabledCount(registry Registry) int

func FormatBool

func FormatBool(value bool) string

func HasAnyPermission

func HasAnyPermission(plugin RegistryPlugin, permission string) bool

func HasPermission

func HasPermission(plugin RegistryPlugin, permission, capability string) bool

func RegistryAssetPaths

func RegistryAssetPaths() []string

func RunnerErrorCode

func RunnerErrorCode(err error) string

func ScopeOrDefault

func ScopeOrDefault(scope string) string

func StoreError

func StoreError(code, message string) error

func ValidateActionPlanBoundary

func ValidateActionPlanBoundary(plugin RegistryPlugin, result ResultEnvelope) error

func ValidateApproval

func ValidateApproval(yes bool) error

func ValidateInstalled

func ValidateInstalled(ok bool) error

func ValidatePermissionName

func ValidatePermissionName(permission string) error

func ValidateRunPermission

func ValidateRunPermission(plugin RegistryPlugin, capability string) error

Types

type AuditEvent

type AuditEvent struct {
	SchemaVersion  string      `json:"schema_version"`
	Type           string      `json:"type"`
	PluginID       string      `json:"plugin_id"`
	Version        string      `json:"version,omitempty"`
	Runtime        RuntimeKind `json:"runtime,omitempty"`
	Capability     string      `json:"capability,omitempty"`
	Status         string      `json:"status"`
	ErrorCode      string      `json:"error_code,omitempty"`
	ManifestSHA256 string      `json:"manifest_sha256,omitempty"`
	At             string      `json:"at"`
}

type Budgets

type Budgets struct {
	TimeoutMS      int `json:"timeout_ms" yaml:"timeout_ms"`
	MaxInputBytes  int `json:"max_input_bytes" yaml:"max_input_bytes"`
	MaxOutputBytes int `json:"max_output_bytes" yaml:"max_output_bytes"`
	MaxMemoryMB    int `json:"max_memory_mb" yaml:"max_memory_mb"`
}

type CallEnvelope

type CallEnvelope struct {
	SchemaVersion string            `json:"schema_version"`
	CallID        string            `json:"call_id"`
	PluginID      string            `json:"plugin_id"`
	Capability    string            `json:"capability"`
	Input         json.RawMessage   `json:"input"`
	Permissions   RuntimePermission `json:"permissions"`
	Budgets       RunnerBudgets     `json:"budgets"`
}

type Capability

type Capability struct {
	ID           string `json:"id" yaml:"id"`
	Kind         string `json:"kind" yaml:"kind"`
	InputSchema  string `json:"input_schema,omitempty" yaml:"input_schema"`
	OutputSchema string `json:"output_schema,omitempty" yaml:"output_schema"`
}

type ExternalRunRequest

type ExternalRunRequest struct {
	Manifest   Manifest
	PluginRoot string
	Capability string
	Input      any
	Budgets    RunnerBudgets
}

type ExternalRunner

type ExternalRunner struct{}

func (ExternalRunner) Run

type Hook

type Hook struct {
	Event      string `json:"event" yaml:"event"`
	Capability string `json:"capability" yaml:"capability"`
}

type HookRegistration

type HookRegistration struct {
	PluginID     string `json:"plugin_id"`
	CapabilityID string `json:"capability_id"`
	Kind         string `json:"kind"`
	Target       string `json:"target"`
	DirectWrite  bool   `json:"direct_write,omitempty"`
}

type HookRegistry

type HookRegistry struct {
	// contains filtered or unexported fields
}

func NewHookRegistry

func NewHookRegistry() *HookRegistry

func (*HookRegistry) Diagnostics

func (r *HookRegistry) Diagnostics() []HookRegistration

func (*HookRegistry) QuerySources

func (r *HookRegistry) QuerySources() []HookRegistration

func (*HookRegistry) Register

func (r *HookRegistry) Register(plugin RegistryPlugin, hook HookRegistration) error

func (*HookRegistry) TemplateFunctions

func (r *HookRegistry) TemplateFunctions() []HookRegistration

type LockEntry

type LockEntry struct {
	ID                 string      `json:"id"`
	Version            string      `json:"version"`
	Runtime            RuntimeKind `json:"runtime"`
	RuntimeEntrypoint  string      `json:"runtime_entrypoint,omitempty"`
	RuntimeRoot        string      `json:"runtime_root,omitempty"`
	ManifestSHA256     string      `json:"manifest_sha256"`
	EntrypointSHA256   string      `json:"entrypoint_sha256,omitempty"`
	InstalledByCommand string      `json:"installed_by_command"`
	InstalledAt        string      `json:"installed_at"`
}

type LockFile

type LockFile struct {
	SchemaVersion string      `json:"schema_version"`
	Plugins       []LockEntry `json:"plugins"`
	UpdatedAt     string      `json:"updated_at"`
}

type Manifest

type Manifest struct {
	SchemaVersion string       `json:"schema_version" yaml:"schema_version"`
	ID            string       `json:"id" yaml:"id"`
	Name          string       `json:"name" yaml:"name"`
	Version       string       `json:"version" yaml:"version"`
	Runtime       Runtime      `json:"runtime" yaml:"runtime"`
	Capabilities  []Capability `json:"capabilities" yaml:"capabilities"`
	Permissions   Permissions  `json:"permissions" yaml:"permissions"`
	Budgets       Budgets      `json:"budgets" yaml:"budgets"`
	Hooks         []Hook       `json:"hooks,omitempty" yaml:"hooks"`
	Checksum      string       `json:"checksum,omitempty" yaml:"checksum"`
}

type PermissionGrant

type PermissionGrant struct {
	Permission string `json:"permission"`
	Capability string `json:"capability,omitempty"`
	GrantedAt  string `json:"granted_at"`
}

type Permissions

type Permissions struct {
	Vault      map[string]string `json:"vault,omitempty" yaml:"vault"`
	Filesystem map[string]string `json:"filesystem,omitempty" yaml:"filesystem"`
	Network    bool              `json:"network" yaml:"network"`
}

type Registry

type Registry struct {
	SchemaVersion string            `json:"schema_version"`
	Plugins       []RegistryPlugin  `json:"plugins"`
	UpdatedAt     string            `json:"updated_at"`
	Facts         map[string]string `json:"facts,omitempty"`
}

type RegistryPlugin

type RegistryPlugin struct {
	ID                string            `json:"id"`
	Name              string            `json:"name,omitempty"`
	Version           string            `json:"version"`
	Runtime           RuntimeKind       `json:"runtime"`
	RuntimeEntrypoint string            `json:"runtime_entrypoint,omitempty"`
	RuntimeRoot       string            `json:"runtime_root,omitempty"`
	Enabled           bool              `json:"enabled"`
	Scope             string            `json:"scope"`
	ManifestSHA256    string            `json:"manifest_sha256"`
	CapabilityCount   int               `json:"capability_count"`
	Capabilities      []Capability      `json:"capabilities,omitempty"`
	PermissionSummary string            `json:"permission_summary"`
	PermissionGrants  []PermissionGrant `json:"permission_grants,omitempty"`
	Budgets           Budgets           `json:"budgets,omitempty"`
	InstalledAt       string            `json:"installed_at"`
	UpdatedAt         string            `json:"updated_at"`
}

func FindPlugin

func FindPlugin(registry Registry, id string) (RegistryPlugin, bool)

type ResultEnvelope

type ResultEnvelope struct {
	SchemaVersion string            `json:"schema_version"`
	Status        string            `json:"status"`
	Facts         map[string]string `json:"facts,omitempty"`
	Data          any               `json:"data,omitempty"`
	ActionPlan    any               `json:"action_plan,omitempty"`
	Warnings      []string          `json:"warnings,omitempty"`
}

type RunRequest

type RunRequest struct {
	Plugin     RegistryPlugin
	Capability string
	Input      any
	Budgets    RunnerBudgets
}

type RunnerBudgets

type RunnerBudgets struct {
	TimeoutMS      int `json:"timeout_ms"`
	MaxInputBytes  int `json:"max_input_bytes"`
	MaxOutputBytes int `json:"max_output_bytes"`
	MaxMemoryMB    int `json:"max_memory_mb"`
}

func RunnerBudgetsFromManifest

func RunnerBudgetsFromManifest(b Budgets) RunnerBudgets

type RunnerError

type RunnerError struct {
	Code    string
	Message string
	Err     error
}

func (*RunnerError) Error

func (e *RunnerError) Error() string

func (*RunnerError) Unwrap

func (e *RunnerError) Unwrap() error

type Runtime

type Runtime struct {
	Kind       RuntimeKind `json:"kind" yaml:"kind"`
	Entrypoint string      `json:"entrypoint" yaml:"entrypoint"`
}

type RuntimeKind

type RuntimeKind string
const (
	RuntimeWASM       RuntimeKind = "wasm"
	RuntimeJavaScript RuntimeKind = "javascript"
	RuntimePython     RuntimeKind = "python"
	RuntimeProcess    RuntimeKind = "process"
)

type RuntimePermission

type RuntimePermission struct {
	Network         bool     `json:"network"`
	Env             []string `json:"env"`
	FilesystemRead  string   `json:"filesystem_read"`
	FilesystemWrite string   `json:"filesystem_write"`
}

type Store

type Store struct {
	Root string
	Now  func() time.Time
}

func (Store) AppendAudit

func (s Store) AppendAudit(event AuditEvent) error

func (Store) GrantPermission

func (s Store) GrantPermission(id, permission, capability string) (RegistryPlugin, error)

func (Store) Install

func (s Store) Install(path, scope string) (RegistryPlugin, error)

func (Store) LoadRegistry

func (s Store) LoadRegistry() (Registry, error)

func (Store) RevokePermission

func (s Store) RevokePermission(id, permission, capability string) (RegistryPlugin, error)

func (Store) SetEnabled

func (s Store) SetEnabled(id string, enabled bool) (RegistryPlugin, error)

func (Store) Uninstall

func (s Store) Uninstall(id string) (RegistryPlugin, Registry, error)

type ValidationError

type ValidationError struct {
	Code   string
	Issues []ValidationIssue
}

func (*ValidationError) Error

func (e *ValidationError) Error() string

type ValidationIssue

type ValidationIssue struct {
	Code    string
	Field   string
	Message string
}

type ValidationResult

type ValidationResult struct {
	Manifest          Manifest `json:"manifest"`
	ManifestPath      string   `json:"manifest_path,omitempty"`
	Digest            string   `json:"digest"`
	CapabilityCount   int      `json:"capability_count"`
	PermissionSummary string   `json:"permission_summary"`
	WriteStatus       bool     `json:"write_status"`
}

func ValidateManifestPath

func ValidateManifestPath(path string) (ValidationResult, error)

type WASMRunner

type WASMRunner struct {
	Invoke func(context.Context, CallEnvelope) (ResultEnvelope, error)
}

func (WASMRunner) Run

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL