capabilitycontract

package
v0.6.23 Latest Latest
Warning

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

Go to latest
Published: Aug 1, 2026 License: MIT Imports: 25 Imported by: 0

Documentation

Index

Constants

View Source
const (
	MaxArtifactFileBytes   int64 = 4 << 20
	MaxArtifactBundleBytes int64 = 8 << 20
)
View Source
const (
	MaxSchemaDepth      = 32
	MaxSchemaNodes      = 4096
	MaxSchemaProperties = 1024
	MaxSchemaEnumValues = 1024
	MaxSchemaBranches   = 64
)
View Source
const SchemaVersion = "redevplugin.host_capability_contract.v1"

Variables

View Source
var (
	ErrInvalidContract = errors.New("host capability contract is invalid")
	ErrInvalidBundle   = errors.New("host capability artifact bundle is invalid")
	ErrPinMismatch     = errors.New("host capability artifact pin mismatch")
	ErrSignature       = errors.New("host capability artifact signature is invalid")
	ErrCompatibility   = errors.New("host capability artifact is incompatible")
)

Functions

func DetailSchemaSHA256

func DetailSchemaSHA256(schema map[string]any) (string, error)

func GenerateTypeScript

func GenerateTypeScript(contract Contract) ([]byte, error)

func SchemaSHA256

func SchemaSHA256(schema map[string]any) (string, error)

func Validate

func Validate(contract Contract) error

func ValidateArtifactRef

func ValidateArtifactRef(ref string) error

func ValidatePin

func ValidatePin(pin Pin) error

func ValidateValue

func ValidateValue(schema map[string]any, value any) error

Types

type BuildRequest

type BuildRequest struct {
	Contract                 Contract
	PublisherID              string
	ArtifactBaseRef          string
	GeneratedAt              time.Time
	SourceCommit             string
	MinReDevPluginVersion    string
	SignatureKeyID           string
	SignaturePolicyEpoch     string
	SignatureRevocationEpoch string
	PrivateKey               ed25519.PrivateKey
	Notices                  []Notice
}

type Bundle

type Bundle struct {
	Pin   Pin
	Files map[string][]byte
}

func Build

func Build(req BuildRequest) (Bundle, error)

func Finalize added in v0.6.23

func Finalize(prepared PreparedBundle, signature []byte, publicKey ed25519.PublicKey) (Bundle, error)

Finalize verifies an externally produced Ed25519 signature over the exact canonical manifest bytes and returns the immutable v1 bundle.

func ReadBundle added in v0.6.23

func ReadBundle(root string, pin Pin) (Bundle, error)

ReadBundle reads the exact file set named by a validated pin without following links or accepting files with additional hard links.

type BusinessError

type BusinessError struct {
	Code          string         `json:"code"`
	Message       string         `json:"message"`
	DetailsSchema map[string]any `json:"details_schema,omitempty"`
}

type CancelPolicy

type CancelPolicy struct {
	Cancelable        bool   `json:"cancelable"`
	DisableBehavior   string `json:"disable_behavior"`
	UninstallBehavior string `json:"uninstall_behavior"`
	AckTimeoutMS      int    `json:"ack_timeout_ms,omitempty"`
}

type Compatibility

type Compatibility struct {
	SchemaVersion         string `json:"schema_version"`
	ContractID            string `json:"contract_id"`
	ContractVersion       string `json:"contract_version"`
	CapabilityID          string `json:"capability_id"`
	CapabilityVersion     string `json:"capability_version"`
	MinReDevPluginVersion string `json:"min_redevplugin_version"`
}

type Confirmation

type Confirmation struct {
	Mode              string   `json:"mode"`
	PreflightMethod   string   `json:"preflight_method,omitempty"`
	RequestHashFields []string `json:"request_hash_fields,omitempty"`
	PlanHashRequired  bool     `json:"plan_hash_required,omitempty"`
}

type Contract

type Contract struct {
	SchemaVersion     string          `json:"schema_version"`
	ContractID        string          `json:"contract_id"`
	ContractVersion   string          `json:"contract_version"`
	PublisherID       string          `json:"publisher_id"`
	CapabilityID      string          `json:"capability_id"`
	CapabilityVersion string          `json:"capability_version"`
	ClientName        string          `json:"client_name"`
	Methods           []Method        `json:"methods"`
	Errors            []BusinessError `json:"errors,omitempty"`
}

type Manifest

type Manifest struct {
	SchemaVersion            string          `json:"schema_version"`
	PublisherID              string          `json:"publisher_id"`
	ContractID               string          `json:"contract_id"`
	ContractVersion          string          `json:"contract_version"`
	CapabilityID             string          `json:"capability_id"`
	CapabilityVersion        string          `json:"capability_version"`
	GeneratedAt              string          `json:"generated_at"`
	SourceCommit             string          `json:"source_commit"`
	SignatureAlgorithm       string          `json:"signature_algorithm"`
	SignatureKeyID           string          `json:"signature_key_id"`
	SignaturePolicyEpoch     string          `json:"signature_policy_epoch"`
	SignatureRevocationEpoch string          `json:"signature_revocation_epoch"`
	Entries                  []ManifestEntry `json:"entries"`
}

type ManifestEntry

type ManifestEntry struct {
	Role      string `json:"role"`
	Ref       string `json:"ref"`
	MediaType string `json:"media_type"`
	SHA256    string `json:"sha256"`
	Size      int64  `json:"size"`
}

type Method

type Method struct {
	Name                string         `json:"name"`
	ClientMethod        string         `json:"client_method"`
	Effect              string         `json:"effect"`
	Execution           string         `json:"execution"`
	PreflightOnly       bool           `json:"preflight_only,omitempty"`
	RequiredPermissions []string       `json:"required_permissions,omitempty"`
	TargetFields        []string       `json:"target_fields"`
	TargetSchema        map[string]any `json:"target_schema"`
	RequestTypeName     string         `json:"request_type_name"`
	ResponseTypeName    string         `json:"response_type_name"`
	RequestSchema       map[string]any `json:"request_schema"`
	ResponseSchema      map[string]any `json:"response_schema"`
	EventTypeName       string         `json:"event_type_name,omitempty"`
	EventSchema         map[string]any `json:"event_schema,omitempty"`
	Confirmation        *Confirmation  `json:"confirmation,omitempty"`
	CancelPolicy        *CancelPolicy  `json:"cancel_policy,omitempty"`
	Quota               Quota          `json:"quota"`
}

type Notice

type Notice struct {
	Name      string `json:"name"`
	Version   string `json:"version"`
	License   string `json:"license"`
	SourceURL string `json:"source_url,omitempty"`
}

type Pin

type Pin struct {
	PublisherID              string `json:"publisher_id"`
	ContractID               string `json:"contract_id"`
	ContractVersion          string `json:"contract_version"`
	ArtifactRef              string `json:"artifact_ref"`
	ArtifactSHA256           string `json:"artifact_sha256"`
	ManifestRef              string `json:"manifest_ref"`
	ManifestSHA256           string `json:"manifest_sha256"`
	SignatureRef             string `json:"signature_ref"`
	SignatureSHA256          string `json:"signature_sha256"`
	SignatureKeyID           string `json:"signature_key_id"`
	SignaturePolicyEpoch     string `json:"signature_policy_epoch"`
	SignatureRevocationEpoch string `json:"signature_revocation_epoch"`
	CompatibilityRef         string `json:"compatibility_ref"`
	CompatibilitySHA256      string `json:"compatibility_sha256"`
	GeneratedClientRef       string `json:"generated_client_ref"`
	GeneratedClientSHA256    string `json:"generated_client_sha256"`
	NoticesRef               string `json:"notices_ref"`
	NoticesSHA256            string `json:"notices_sha256"`
}

type PrepareRequest added in v0.6.23

type PrepareRequest struct {
	Contract                 Contract
	PublisherID              string
	ArtifactBaseRef          string
	GeneratedAt              time.Time
	SourceCommit             string
	MinReDevPluginVersion    string
	SignatureKeyID           string
	SignaturePolicyEpoch     string
	SignatureRevocationEpoch string
	Notices                  []Notice
}

type PreparedBundle added in v0.6.23

type PreparedBundle struct {
	Pin      Pin
	Files    map[string][]byte
	Manifest []byte
}

PreparedBundle contains the public, deterministic capability artifacts that exist before the manifest signature is supplied by an external signer.

func Prepare added in v0.6.23

func Prepare(req PrepareRequest) (PreparedBundle, error)

type Quota

type Quota struct {
	MaxConcurrent  int   `json:"max_concurrent,omitempty"`
	MaxDurationMS  int   `json:"max_duration_ms,omitempty"`
	MaxStreamBytes int64 `json:"max_stream_bytes,omitempty"`
}

type Registry

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

func NewRegistry

func NewRegistry() *Registry

func (*Registry) Add

func (r *Registry) Add(contract VerifiedContract) error

func (*Registry) Require

func (r *Registry) Require(pin Pin) (VerifiedContract, error)

type SignatureEnvelope

type SignatureEnvelope struct {
	SchemaVersion   string `json:"schema_version"`
	Algorithm       string `json:"algorithm"`
	KeyID           string `json:"key_id"`
	ManifestSHA256  string `json:"manifest_sha256"`
	SignatureBase64 string `json:"signature_base64"`
}

type TrustedKey

type TrustedKey struct {
	PublisherID     string
	KeyID           string
	PublicKey       []byte
	PolicyEpoch     string
	RevocationEpoch string
}

type VerifiedContract

type VerifiedContract struct {
	Contract        Contract
	Pin             Pin
	Manifest        Manifest
	Compatibility   Compatibility
	GeneratedClient []byte
	Notices         []Notice
	// contains filtered or unexported fields
}

func Verify

func Verify(req VerifyRequest) (VerifiedContract, error)

func (VerifiedContract) PublicKeySHA256

func (v VerifiedContract) PublicKeySHA256() string

type VerifyRequest

type VerifyRequest struct {
	Bundle                    Bundle
	ExpectedPin               Pin
	TrustedKey                TrustedKey
	CurrentReDevPluginVersion string
}

Jump to

Keyboard shortcuts

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