capability

package
v0.3.2 Latest Latest
Warning

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

Go to latest
Published: Jul 14, 2026 License: MIT Imports: 9 Imported by: 0

Documentation

Index

Constants

View Source
const DefaultRedactedValue = "[REDACTED]"
View Source
const RiskPlanSchemaVersion = "redevplugin.capability.risk_plan.v1"

Variables

View Source
var (
	ErrInvalidRegistration = errors.New("capability registration is invalid")
	ErrRegistrationMissing = errors.New("capability registration is missing")
	ErrExecutionRevoked    = errors.New("capability execution is revoked")
	ErrQuotaExceeded       = errors.New("capability execution quota exceeded")
)
View Source
var DefaultResponseRedactionPolicy = ResponseRedactionPolicy{
	Replacement: DefaultRedactedValue,
	MaxDepth:    64,
}
View Source
var ErrInvalidRiskPlan = errors.New("invalid capability risk plan")

Functions

func NormalizeRiskPlanData

func NormalizeRiskPlanData(data any) (any, error)

func RedactResponseData

func RedactResponseData(data any) any

Types

type Adapter

type Adapter interface {
	Invoke(ctx context.Context, req Invocation) (Result, error)
}

type BusinessError added in v0.3.0

type BusinessError struct {
	CapabilityID       string         `json:"capability_id,omitempty"`
	CapabilityVersion  string         `json:"capability_version,omitempty"`
	DetailSchemaSHA256 string         `json:"detail_schema_sha256,omitempty"`
	Code               string         `json:"code"`
	Message            string         `json:"message"`
	Details            map[string]any `json:"details,omitempty"`
}

func NewBusinessError added in v0.3.0

func NewBusinessError(code, message string, details map[string]any) *BusinessError

func (*BusinessError) Error added in v0.3.0

func (e *BusinessError) Error() string

type ConfirmationEvidence added in v0.3.0

type ConfirmationEvidence struct {
	Required       bool   `json:"required"`
	Confirmed      bool   `json:"confirmed"`
	ConfirmationID string `json:"confirmation_id,omitempty"`
	RequestSHA256  string `json:"request_sha256,omitempty"`
	PlanSHA256     string `json:"plan_sha256,omitempty"`
	TargetSHA256   string `json:"target_sha256,omitempty"`
}

type Effect

type Effect string
const (
	EffectRead    Effect = "read"
	EffectWrite   Effect = "write"
	EffectExecute Effect = "execute"
	EffectDelete  Effect = "delete"
	EffectAdmin   Effect = "admin"
)

type ExecutionBinding added in v0.3.0

type ExecutionBinding struct {
	InvocationID            string                  `json:"invocation_id"`
	AuditCorrelationID      string                  `json:"audit_correlation_id"`
	OperationID             string                  `json:"operation_id,omitempty"`
	StreamID                string                  `json:"stream_id,omitempty"`
	PublisherID             string                  `json:"publisher_id"`
	PluginID                string                  `json:"plugin_id"`
	PluginInstanceID        string                  `json:"plugin_instance_id"`
	PluginVersion           string                  `json:"plugin_version"`
	ActiveFingerprint       string                  `json:"active_fingerprint"`
	SurfaceInstanceID       string                  `json:"surface_instance_id,omitempty"`
	OwnerSessionHash        string                  `json:"owner_session_hash,omitempty"`
	OwnerUserHash           string                  `json:"owner_user_hash,omitempty"`
	SessionChannelIDHash    string                  `json:"session_channel_id_hash,omitempty"`
	BridgeChannelID         string                  `json:"bridge_channel_id,omitempty"`
	RouteKind               RouteKind               `json:"route_kind"`
	CapabilityID            string                  `json:"capability_id"`
	CapabilityVersion       string                  `json:"capability_version"`
	BindingID               string                  `json:"binding_id"`
	Contract                *capabilitycontract.Pin `json:"contract,omitempty"`
	Method                  string                  `json:"method"`
	TargetMethod            string                  `json:"target_method"`
	Effect                  Effect                  `json:"effect"`
	Execution               string                  `json:"execution"`
	Permissions             PermissionEvidence      `json:"permissions"`
	Confirmation            ConfirmationEvidence    `json:"confirmation"`
	Revision                RevisionEvidence        `json:"revision"`
	Quota                   QuotaGrant              `json:"quota"`
	Target                  TargetDescriptor        `json:"target"`
	TargetDescriptorSHA256  string                  `json:"target_descriptor_sha256"`
	StreamEventTypeName     string                  `json:"stream_event_type_name,omitempty"`
	StreamEventSchemaSHA256 string                  `json:"stream_event_schema_sha256,omitempty"`
}

func CloneExecutionBinding added in v0.3.0

func CloneExecutionBinding(binding ExecutionBinding) ExecutionBinding

func (ExecutionBinding) Identity added in v0.3.0

func (b ExecutionBinding) Identity() PluginIdentity

func (ExecutionBinding) Surface added in v0.3.0

func (b ExecutionBinding) Surface() SurfaceScope

type ExecutionContext added in v0.3.0

type ExecutionContext struct {
	ExecutionBinding
	Operation OperationSink `json:"-"`
	Stream    StreamSink    `json:"-"`
}

type Invocation

type Invocation struct {
	Execution ExecutionContext `json:"execution"`
	Arguments map[string]any   `json:"arguments,omitempty"`
}

type OperationCanceler added in v0.3.0

type OperationCanceler interface {
	CancelOperation(ctx context.Context, req OperationCancellation) error
}

type OperationCancellation added in v0.3.0

type OperationCancellation struct {
	Execution   ExecutionContext `json:"execution"`
	OperationID string           `json:"operation_id"`
	Reason      string           `json:"reason,omitempty"`
	RequestedAt time.Time        `json:"requested_at"`
}

type OperationSink added in v0.3.0

type OperationSink interface {
	ID() string
	Complete(ctx context.Context) error
	Cancel(ctx context.Context, reason string) error
	Fail(ctx context.Context, reason string) error
	CancelRequested() <-chan struct{}
}

type PermissionEvidence added in v0.3.0

type PermissionEvidence struct {
	Required []string `json:"required"`
	Granted  []string `json:"granted"`
}

type PluginIdentity added in v0.3.0

type PluginIdentity struct {
	PublisherID       string `json:"publisher_id"`
	PluginID          string `json:"plugin_id"`
	PluginInstanceID  string `json:"plugin_instance_id"`
	PluginVersion     string `json:"plugin_version"`
	ActiveFingerprint string `json:"active_fingerprint"`
}

type QuotaGrant added in v0.3.0

type QuotaGrant struct {
	MaxConcurrent  int       `json:"max_concurrent,omitempty"`
	MaxDurationMS  int       `json:"max_duration_ms,omitempty"`
	MaxStreamBytes int64     `json:"max_stream_bytes,omitempty"`
	ExpiresAt      time.Time `json:"expires_at,omitempty"`
}

type Registration added in v0.3.0

type Registration struct {
	Contract        capabilitycontract.VerifiedContract
	TargetProjector TargetProjector
	Adapter         Adapter
}

type Registry

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

func NewRegistry

func NewRegistry() *Registry

func (*Registry) AddContract added in v0.3.0

func (r *Registry) AddContract(contract capabilitycontract.VerifiedContract) error

func (*Registry) Register

func (r *Registry) Register(registration Registration) error

func (*Registry) RequireContract added in v0.3.0

func (*Registry) Resolve added in v0.3.0

func (r *Registry) Resolve(pin capabilitycontract.Pin) (Registration, error)

func (*Registry) Versions added in v0.3.0

func (r *Registry) Versions(capabilityID string) []string

type ResponseRedactionPolicy

type ResponseRedactionPolicy struct {
	Replacement string
	MaxDepth    int
}

func (ResponseRedactionPolicy) Redact

func (p ResponseRedactionPolicy) Redact(data any) any

type Result

type Result struct {
	Data any `json:"data,omitempty"`
}

type RevisionEvidence added in v0.3.0

type RevisionEvidence struct {
	PolicyRevision     uint64 `json:"policy_revision"`
	ManagementRevision uint64 `json:"management_revision"`
	RevokeEpoch        uint64 `json:"revoke_epoch"`
}

type RiskFlag

type RiskFlag struct {
	ID                   string       `json:"id"`
	Severity             RiskSeverity `json:"severity"`
	Summary              string       `json:"summary"`
	Description          string       `json:"description,omitempty"`
	RequiresConfirmation bool         `json:"requires_confirmation,omitempty"`
	RequiresAdmin        bool         `json:"requires_admin,omitempty"`
	DataLossRisk         bool         `json:"data_loss_risk,omitempty"`
	Destructive          bool         `json:"destructive,omitempty"`
}

type RiskPlan

type RiskPlan struct {
	SchemaVersion        string         `json:"schema_version"`
	CapabilityID         string         `json:"capability_id,omitempty"`
	BindingID            string         `json:"binding_id,omitempty"`
	Method               string         `json:"method,omitempty"`
	TargetMethod         string         `json:"target_method,omitempty"`
	Action               string         `json:"action,omitempty"`
	Effect               Effect         `json:"effect,omitempty"`
	ResourceRef          string         `json:"resource_ref,omitempty"`
	ResourceDisplayName  string         `json:"resource_display_name,omitempty"`
	Summary              string         `json:"summary"`
	RiskFlags            []RiskFlag     `json:"risk_flags"`
	RequiresConfirmation bool           `json:"requires_confirmation,omitempty"`
	RequiresAdmin        bool           `json:"requires_admin,omitempty"`
	DataLossRisk         bool           `json:"data_loss_risk,omitempty"`
	Destructive          bool           `json:"destructive,omitempty"`
	DenyReason           string         `json:"deny_reason,omitempty"`
	Details              map[string]any `json:"details,omitempty"`
}

func NewRiskPlan

func NewRiskPlan(inv Invocation, summary string) RiskPlan

func NormalizeRiskPlan

func NormalizeRiskPlan(plan RiskPlan) (RiskPlan, error)

type RiskSeverity

type RiskSeverity string
const (
	RiskSeverityInfo     RiskSeverity = "info"
	RiskSeverityLow      RiskSeverity = "low"
	RiskSeverityMedium   RiskSeverity = "medium"
	RiskSeverityHigh     RiskSeverity = "high"
	RiskSeverityCritical RiskSeverity = "critical"
)

type RouteKind added in v0.3.0

type RouteKind string
const (
	RouteCapability RouteKind = "capability"
	RouteWorker     RouteKind = "worker"
	RouteCoreAction RouteKind = "core_action"
)

type StreamContract added in v0.3.0

type StreamContract struct {
	EventTypeName string
	EventSchema   map[string]any
}

type StreamSink added in v0.3.0

type StreamSink interface {
	ID() string
	Append(ctx context.Context, event any) error
	Close(ctx context.Context) error
	Fail(ctx context.Context, reason string) error
}

type SurfaceScope added in v0.3.0

type SurfaceScope struct {
	SurfaceInstanceID    string `json:"surface_instance_id,omitempty"`
	OwnerSessionHash     string `json:"owner_session_hash,omitempty"`
	OwnerUserHash        string `json:"owner_user_hash,omitempty"`
	SessionChannelIDHash string `json:"session_channel_id_hash,omitempty"`
	BridgeChannelID      string `json:"bridge_channel_id,omitempty"`
}

type TargetDescriptor added in v0.3.0

type TargetDescriptor struct {
	Kind   string         `json:"kind"`
	Fields map[string]any `json:"fields"`
}

type TargetProjector added in v0.3.0

type TargetProjector interface {
	ProjectTarget(ctx context.Context, req TargetResolutionRequest) (TargetDescriptor, error)
}

type TargetResolutionRequest added in v0.3.0

type TargetResolutionRequest struct {
	Identity          PluginIdentity         `json:"identity"`
	Surface           SurfaceScope           `json:"surface"`
	CapabilityID      string                 `json:"capability_id"`
	CapabilityVersion string                 `json:"capability_version"`
	BindingID         string                 `json:"binding_id"`
	Contract          capabilitycontract.Pin `json:"contract"`
	Method            string                 `json:"method"`
	TargetMethod      string                 `json:"target_method"`
	TargetInput       map[string]any         `json:"target_input"`
}

Jump to

Keyboard shortcuts

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