Documentation
¶
Index ¶
- Constants
- Variables
- func EnabledCount(registry Registry) int
- func FormatBool(value bool) string
- func HasAnyPermission(plugin RegistryPlugin, permission string) bool
- func HasPermission(plugin RegistryPlugin, permission, capability string) bool
- func RegistryAssetPaths() []string
- func RunnerErrorCode(err error) string
- func ScopeOrDefault(scope string) string
- func StoreError(code, message string) error
- func ValidateActionPlanBoundary(plugin RegistryPlugin, result ResultEnvelope) error
- func ValidateApproval(yes bool) error
- func ValidateInstalled(ok bool) error
- func ValidatePermissionName(permission string) error
- func ValidateRunPermission(plugin RegistryPlugin, capability string) error
- type AuditEvent
- type Budgets
- type CallEnvelope
- type Capability
- type ExternalRunRequest
- type ExternalRunner
- type Hook
- type HookRegistration
- type HookRegistry
- type LockEntry
- type LockFile
- type Manifest
- type PermissionGrant
- type Permissions
- type Registry
- type RegistryPlugin
- type ResultEnvelope
- type RunRequest
- type RunnerBudgets
- type RunnerError
- type Runtime
- type RuntimeKind
- type RuntimePermission
- type Store
- func (s Store) AppendAudit(event AuditEvent) error
- func (s Store) GrantPermission(id, permission, capability string) (RegistryPlugin, error)
- func (s Store) Install(path, scope string) (RegistryPlugin, error)
- func (s Store) LoadRegistry() (Registry, error)
- func (s Store) RevokePermission(id, permission, capability string) (RegistryPlugin, error)
- func (s Store) SetEnabled(id string, enabled bool) (RegistryPlugin, error)
- func (s Store) Uninstall(id string) (RegistryPlugin, Registry, error)
- type ValidationError
- type ValidationIssue
- type ValidationResult
- type WASMRunner
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 ¶
Functions ¶
func EnabledCount ¶
func FormatBool ¶
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 ScopeOrDefault ¶
func StoreError ¶
func ValidateActionPlanBoundary ¶
func ValidateActionPlanBoundary(plugin RegistryPlugin, result ResultEnvelope) error
func ValidateApproval ¶
func ValidateInstalled ¶
func ValidatePermissionName ¶
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 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 ExternalRunRequest ¶
type ExternalRunRequest struct {
Manifest Manifest
PluginRoot string
Capability string
Input any
Budgets RunnerBudgets
}
type ExternalRunner ¶
type ExternalRunner struct{}
func (ExternalRunner) Run ¶
func (r ExternalRunner) Run(ctx context.Context, req ExternalRunRequest) (ResultEnvelope, error)
type HookRegistration ¶
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 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 Permissions ¶
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 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 ¶
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 Store ¶
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) LoadRegistry ¶
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)
type ValidationError ¶
type ValidationError struct {
Code string
Issues []ValidationIssue
}
func (*ValidationError) Error ¶
func (e *ValidationError) Error() string
type ValidationIssue ¶
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 ¶
func (r WASMRunner) Run(ctx context.Context, req RunRequest) (ResultEnvelope, error)
Click to show internal directories.
Click to hide internal directories.