Documentation
¶
Index ¶
- Constants
- Variables
- func NormalizeRiskPlanData(data any) (any, error)
- func RedactResponseData(data any) any
- type Adapter
- type BusinessError
- type ConfirmationEvidence
- type Effect
- type ExecutionBinding
- type ExecutionContext
- type Invocation
- type OperationCanceler
- type OperationCancellation
- type OperationSink
- type PermissionEvidence
- type PluginIdentity
- type QuotaGrant
- type Registration
- type Registry
- func (r *Registry) AddContract(contract capabilitycontract.VerifiedContract) error
- func (r *Registry) Register(registration Registration) error
- func (r *Registry) RequireContract(pin capabilitycontract.Pin) (capabilitycontract.VerifiedContract, error)
- func (r *Registry) Resolve(pin capabilitycontract.Pin) (Registration, error)
- func (r *Registry) Versions(capabilityID string) []string
- type ResponseRedactionPolicy
- type Result
- type RevisionEvidence
- type RiskFlag
- type RiskPlan
- type RiskSeverity
- type RouteKind
- type StreamContract
- type StreamSink
- type SurfaceScope
- type TargetDescriptor
- type TargetProjector
- type TargetResolutionRequest
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 RedactResponseData ¶
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 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 PermissionEvidence ¶ added in v0.3.0
type PluginIdentity ¶ added in v0.3.0
type QuotaGrant ¶ added in v0.3.0
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 (r *Registry) RequireContract(pin capabilitycontract.Pin) (capabilitycontract.VerifiedContract, error)
func (*Registry) Resolve ¶ added in v0.3.0
func (r *Registry) Resolve(pin capabilitycontract.Pin) (Registration, error)
type ResponseRedactionPolicy ¶
func (ResponseRedactionPolicy) Redact ¶
func (p ResponseRedactionPolicy) Redact(data any) any
type RevisionEvidence ¶ added in v0.3.0
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 ¶
type RiskSeverity ¶
type RiskSeverity string
const ( RiskSeverityInfo RiskSeverity = "info" RiskSeverityLow RiskSeverity = "low" RiskSeverityMedium RiskSeverity = "medium" RiskSeverityHigh RiskSeverity = "high" RiskSeverityCritical RiskSeverity = "critical" )
type StreamContract ¶ added in v0.3.0
type StreamSink ¶ added in v0.3.0
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 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"`
}
Click to show internal directories.
Click to hide internal directories.