Documentation
¶
Index ¶
- Constants
- Variables
- func RunnableAuthorizationState(state AuthorizationState) bool
- func RunnablePluginRecord(record PluginRecord) bool
- func RunnableTrustState(state TrustState) bool
- type AuthorizationDecision
- type AuthorizationRevisionConflictError
- type AuthorizationRevisions
- type AuthorizationSnapshot
- func PrepareDeleteSecurityPolicy(snapshot AuthorizationSnapshot, pluginInstanceID string, now time.Time, ...) (AuthorizationSnapshot, error)
- func PrepareGrantPermission(snapshot AuthorizationSnapshot, req permissions.GrantRequest, ...) (AuthorizationSnapshot, error)
- func PrepareRevokePermission(snapshot AuthorizationSnapshot, req permissions.RevokeRequest, ...) (AuthorizationSnapshot, error)
- func PrepareSecurityPolicy(snapshot AuthorizationSnapshot, req security.PutPolicyRequest, ...) (AuthorizationSnapshot, error)
- type AuthorizationState
- type AuthorizationStore
- type AuthorizeRequest
- type EnableState
- type ExecutionApproval
- type ExecutionApprovalStatus
- type ExternalPackageInstallIntent
- type InstallExternalPackageRequest
- type LocalImportProvenance
- type ManagementRevisionConflictError
- type MemoryStore
- func (s *MemoryStore) AbortInstall(ctx context.Context, pluginInstanceID string) error
- func (s *MemoryStore) Authorize(ctx context.Context, req AuthorizeRequest) (AuthorizationDecision, error)
- func (s *MemoryStore) BindRetained(ctx context.Context, expected plugindata.Binding, ...) (plugindata.Binding, error)
- func (s *MemoryStore) CleanupExpired(ctx context.Context, now time.Time, expected []plugindata.Binding) ([]plugindata.Binding, error)
- func (s *MemoryStore) CommitEnable(ctx context.Context, expectedManagementRevision uint64, ...) error
- func (s *MemoryStore) CommitUninstall(ctx context.Context, req plugindata.CommitUninstallRequest) (plugindata.CommitUninstallResult, error)
- func (s *MemoryStore) CreateObject(ctx context.Context, scope sessionctx.ScopeKind, object plugindata.Object) error
- func (s *MemoryStore) DeleteObject(ctx context.Context, scope sessionctx.ScopeKind, ...) error
- func (s *MemoryStore) DeleteRetained(ctx context.Context, expected plugindata.Binding) error
- func (s *MemoryStore) DeleteSecurityPolicy(ctx context.Context, pluginInstanceID string, now time.Time, ...) (AuthorizationSnapshot, error)
- func (*MemoryStore) Durable() bool
- func (s *MemoryStore) GetAuthorization(ctx context.Context, pluginInstanceID string) (AuthorizationSnapshot, error)
- func (s *MemoryStore) GetBinding(ctx context.Context, pluginInstanceID string) (plugindata.Binding, bool, error)
- func (s *MemoryStore) GetObject(ctx context.Context, scope sessionctx.ScopeKind, ...) (plugindata.Object, bool, error)
- func (s *MemoryStore) GetPlugin(ctx context.Context, pluginInstanceID string) (PluginRecord, error)
- func (s *MemoryStore) GrantPermission(ctx context.Context, req permissions.GrantRequest, ...) (AuthorizationSnapshot, error)
- func (s *MemoryStore) ListAllBindingsForMaintenance(_ context.Context, cursor string, limit int) ([]plugindata.MaintenanceBinding, string, error)
- func (s *MemoryStore) ListAllObjectsForMaintenance(_ context.Context, cursor string, limit int) ([]plugindata.MaintenanceObject, string, error)
- func (s *MemoryStore) ListAuthorization(ctx context.Context) ([]AuthorizationSnapshot, error)
- func (s *MemoryStore) ListBindings(ctx context.Context, cursor string, limit int) ([]plugindata.Binding, string, error)
- func (s *MemoryStore) ListObjects(ctx context.Context, scope sessionctx.ScopeKind, ...) ([]plugindata.Object, string, error)
- func (s *MemoryStore) ListPlugins(ctx context.Context) ([]PluginRecord, error)
- func (s *MemoryStore) PutPlugin(ctx context.Context, record PluginRecord, opts PutOptions) (PluginRecord, error)
- func (s *MemoryStore) PutSecurityPolicy(ctx context.Context, req security.PutPolicyRequest, ...) (AuthorizationSnapshot, error)
- func (s *MemoryStore) RevokePermission(ctx context.Context, req permissions.RevokeRequest, ...) (AuthorizationSnapshot, error)
- func (s *MemoryStore) SetEnableState(ctx context.Context, pluginInstanceID string, state EnableState, reason string, ...) (PluginRecord, error)
- func (s *MemoryStore) SwapImport(ctx context.Context, expectedManagementRevision uint64, ...) error
- type PackageSourceKind
- type PackageSourceProvenance
- type PackageSourceRedirectHop
- type PluginRecord
- func PrepareEnableState(record PluginRecord, state EnableState, reason string, now time.Time) PluginRecord
- func PrepareExternalPackageInstall(ownerEnvHash string, req InstallExternalPackageRequest, existing *PluginRecord) (PluginRecord, error)
- func PreparePluginPut(ownerEnvHash string, record PluginRecord, existing *PluginRecord, ...) (PluginRecord, error)
- type PluginVersion
- type PutOptions
- type ReleaseInstallActivation
- type ReleaseInstallActivationMode
- type ReleaseInstallActivationRequest
- type ReleaseInstallActivationStatus
- type ReleaseInstallFailure
- type ReleaseInstallIdentity
- type ReleaseInstallOperation
- type ReleaseInstallPhaseDiagnostic
- type ReleaseInstallProgress
- type ReleaseInstallProgressKind
- type ReleaseTrustBinding
- type RuntimeRequirement
- type SQLiteStore
- func (s *SQLiteStore) AbortInstall(ctx context.Context, pluginInstanceID string) error
- func (s *SQLiteStore) Authorize(ctx context.Context, req AuthorizeRequest) (AuthorizationDecision, error)
- func (s *SQLiteStore) BindRetained(ctx context.Context, expected plugindata.Binding, ...) (plugindata.Binding, error)
- func (s *SQLiteStore) CleanupExpired(ctx context.Context, now time.Time, expected []plugindata.Binding) ([]plugindata.Binding, error)
- func (s *SQLiteStore) Close() error
- func (s *SQLiteStore) CommitEnable(ctx context.Context, expectedManagementRevision uint64, ...) error
- func (s *SQLiteStore) CommitUninstall(ctx context.Context, req plugindata.CommitUninstallRequest) (plugindata.CommitUninstallResult, error)
- func (s *SQLiteStore) CreateObject(ctx context.Context, scope sessionctx.ScopeKind, object plugindata.Object) error
- func (s *SQLiteStore) DeleteObject(ctx context.Context, scope sessionctx.ScopeKind, ...) error
- func (s *SQLiteStore) DeleteRetained(ctx context.Context, expected plugindata.Binding) error
- func (s *SQLiteStore) DeleteSecurityPolicy(ctx context.Context, pluginInstanceID string, now time.Time, ...) (AuthorizationSnapshot, error)
- func (*SQLiteStore) Durable() bool
- func (s *SQLiteStore) GetAuthorization(ctx context.Context, pluginInstanceID string) (AuthorizationSnapshot, error)
- func (s *SQLiteStore) GetBinding(ctx context.Context, pluginInstanceID string) (plugindata.Binding, bool, error)
- func (s *SQLiteStore) GetObject(ctx context.Context, scope sessionctx.ScopeKind, ...) (plugindata.Object, bool, error)
- func (s *SQLiteStore) GetPlugin(ctx context.Context, pluginInstanceID string) (PluginRecord, error)
- func (s *SQLiteStore) GrantPermission(ctx context.Context, req permissions.GrantRequest, ...) (AuthorizationSnapshot, error)
- func (s *SQLiteStore) ListAllBindingsForMaintenance(ctx context.Context, cursor string, limit int) ([]plugindata.MaintenanceBinding, string, error)
- func (s *SQLiteStore) ListAllObjectsForMaintenance(ctx context.Context, cursor string, limit int) ([]plugindata.MaintenanceObject, string, error)
- func (s *SQLiteStore) ListAuthorization(ctx context.Context) ([]AuthorizationSnapshot, error)
- func (s *SQLiteStore) ListBindings(ctx context.Context, cursor string, limit int) ([]plugindata.Binding, string, error)
- func (s *SQLiteStore) ListObjects(ctx context.Context, scope sessionctx.ScopeKind, ...) ([]plugindata.Object, string, error)
- func (s *SQLiteStore) ListPlugins(ctx context.Context) ([]PluginRecord, error)
- func (s *SQLiteStore) PutPlugin(ctx context.Context, record PluginRecord, opts PutOptions) (PluginRecord, error)
- func (s *SQLiteStore) PutSecurityPolicy(ctx context.Context, req security.PutPolicyRequest, ...) (AuthorizationSnapshot, error)
- func (s *SQLiteStore) RevokePermission(ctx context.Context, req permissions.RevokeRequest, ...) (AuthorizationSnapshot, error)
- func (s *SQLiteStore) SetEnableState(ctx context.Context, pluginInstanceID string, state EnableState, reason string, ...) (PluginRecord, error)
- func (s *SQLiteStore) SwapImport(ctx context.Context, expectedManagementRevision uint64, ...) error
- type SecurityCapabilitySummary
- type SignatureAssessment
- type SignatureAssessmentStatus
- type StartReleaseInstallOperationRequest
- type Store
- type TrustAssessment
- type TrustHashSet
- type TrustState
- type UpdateEligibility
- type UpdateReleaseInstallOperationRequest
- type VerifiedSignature
Constants ¶
const ( ReleaseInstallNextActionApprovePermissions = "approve_permissions" ReleaseInstallNextActionRetryActivation = "retry_activation" )
const ReleaseActivationEvidenceSchemaVersionV1 = "redevplugin.release_activation_evidence.v1"
Variables ¶
var ( ErrInvalidAuthorizationRevisions = errors.New("authorization revisions are invalid") ErrAuthorizationRevisionConflict = errors.New("authorization revision conflict") ErrAuthorizationSchemaIncomplete = errors.New("authorization schema is incomplete") )
var ( ErrReleaseInstallOperationNotFound = errors.New("release install operation not found") ErrReleaseInstallOperationConflict = errors.New("release install operation conflict") ErrInvalidReleaseInstallOperation = errors.New("invalid release install operation") )
var ErrIncompatiblePersistedManifest = errors.New("persisted plugin manifest is incompatible")
var ErrInvalidExternalPackageInstall = errors.New("invalid external package install")
var ErrManagementRevisionConflict = errors.New("management revision conflict")
var ErrNotFound = errors.New("plugin record not found")
var ErrOwnerScopeMismatch = errors.New("plugin registry owner scope mismatch")
Functions ¶
func RunnableAuthorizationState ¶ added in v0.6.8
func RunnableAuthorizationState(state AuthorizationState) bool
func RunnablePluginRecord ¶ added in v0.6.8
func RunnablePluginRecord(record PluginRecord) bool
RunnablePluginRecord preserves the legacy trust projection for records that predate external-package facts. External packages are governed by their environment-and-package-bound execution approval instead of signature state.
func RunnableTrustState ¶
func RunnableTrustState(state TrustState) bool
Types ¶
type AuthorizationDecision ¶ added in v0.5.0
type AuthorizationDecision struct {
State AuthorizationState `json:"state"`
Allowed bool `json:"allowed"`
MissingPermissions []string `json:"missing_permissions,omitempty"`
PolicyEvaluation security.PolicyEvaluation `json:"policy_evaluation"`
}
func EvaluateAuthorizationSnapshot ¶ added in v1.0.0
func EvaluateAuthorizationSnapshot(snapshot AuthorizationSnapshot, req AuthorizeRequest) (AuthorizationDecision, error)
EvaluateAuthorizationSnapshot applies the canonical permission, policy, and revision checks to an authorization snapshot owned by another durable store.
type AuthorizationRevisionConflictError ¶ added in v0.5.0
type AuthorizationRevisionConflictError struct {
PluginInstanceID string
Expected AuthorizationRevisions
Actual AuthorizationRevisions
}
func (*AuthorizationRevisionConflictError) Error ¶ added in v0.5.0
func (e *AuthorizationRevisionConflictError) Error() string
func (*AuthorizationRevisionConflictError) Unwrap ¶ added in v0.5.0
func (e *AuthorizationRevisionConflictError) Unwrap() error
type AuthorizationRevisions ¶ added in v0.5.0
type AuthorizationRevisions struct {
PolicyRevision uint64 `json:"policy_revision"`
ManagementRevision uint64 `json:"management_revision"`
RevokeEpoch uint64 `json:"revoke_epoch"`
}
func AuthorizationRevisionsFromRecord ¶ added in v0.5.0
func AuthorizationRevisionsFromRecord(record PluginRecord) AuthorizationRevisions
type AuthorizationSnapshot ¶ added in v0.5.0
type AuthorizationSnapshot struct {
Plugin PluginRecord `json:"plugin"`
Grants []permissions.Record `json:"grants"`
Policy *security.PolicyRecord `json:"policy,omitempty"`
}
func PrepareDeleteSecurityPolicy ¶ added in v1.0.0
func PrepareDeleteSecurityPolicy(snapshot AuthorizationSnapshot, pluginInstanceID string, now time.Time, expected AuthorizationRevisions) (AuthorizationSnapshot, error)
func PrepareGrantPermission ¶ added in v1.0.0
func PrepareGrantPermission(snapshot AuthorizationSnapshot, req permissions.GrantRequest, expected AuthorizationRevisions) (AuthorizationSnapshot, error)
func PrepareRevokePermission ¶ added in v1.0.0
func PrepareRevokePermission(snapshot AuthorizationSnapshot, req permissions.RevokeRequest, expected AuthorizationRevisions) (AuthorizationSnapshot, error)
func PrepareSecurityPolicy ¶ added in v1.0.0
func PrepareSecurityPolicy(snapshot AuthorizationSnapshot, req security.PutPolicyRequest, expected AuthorizationRevisions) (AuthorizationSnapshot, error)
type AuthorizationState ¶ added in v0.5.0
type AuthorizationState struct {
PluginInstanceID string `json:"plugin_instance_id"`
PluginVersion string `json:"plugin_version"`
ActiveFingerprint string `json:"active_fingerprint"`
TrustState TrustState `json:"trust_state"`
SignatureAssessment SignatureAssessment `json:"signature_assessment"`
PackageSourceKind PackageSourceKind `json:"package_source_kind"`
ExecutionApproval ExecutionApproval `json:"execution_approval"`
EnableState EnableState `json:"enable_state"`
Revisions AuthorizationRevisions `json:"revisions"`
}
type AuthorizationStore ¶ added in v0.5.0
type AuthorizationStore interface {
GrantPermission(ctx context.Context, req permissions.GrantRequest, expected AuthorizationRevisions) (AuthorizationSnapshot, error)
RevokePermission(ctx context.Context, req permissions.RevokeRequest, expected AuthorizationRevisions) (AuthorizationSnapshot, error)
PutSecurityPolicy(ctx context.Context, req security.PutPolicyRequest, expected AuthorizationRevisions) (AuthorizationSnapshot, error)
DeleteSecurityPolicy(ctx context.Context, pluginInstanceID string, now time.Time, expected AuthorizationRevisions) (AuthorizationSnapshot, error)
GetAuthorization(ctx context.Context, pluginInstanceID string) (AuthorizationSnapshot, error)
ListAuthorization(ctx context.Context) ([]AuthorizationSnapshot, error)
Authorize(ctx context.Context, req AuthorizeRequest) (AuthorizationDecision, error)
}
type AuthorizeRequest ¶ added in v0.5.0
type EnableState ¶
type EnableState string
const ( EnableDisabled EnableState = "disabled" EnableEnabled EnableState = "enabled" EnableDisabledByPolicy EnableState = "disabled_by_policy" EnableDisabledIncompatible EnableState = "disabled_incompatible" )
type ExecutionApproval ¶ added in v0.6.8
type ExecutionApproval struct {
Status ExecutionApprovalStatus `json:"state"`
OwnerEnvHash string `json:"owner_env_hash,omitempty"`
PackageSHA256 string `json:"package_sha256,omitempty"`
ReasonCodes []string `json:"reason_codes,omitempty"`
EvidenceReference string `json:"evidence_reference,omitempty"`
PolicyEpoch string `json:"policy_epoch,omitempty"`
AssessedAt time.Time `json:"assessed_at,omitempty"`
ApprovedAt time.Time `json:"approved_at,omitempty"`
}
ExecutionApproval is durable package authorization. Its audience is exactly one environment and one immutable package digest; session audiences must not be persisted here.
type ExecutionApprovalStatus ¶ added in v0.6.8
type ExecutionApprovalStatus string
const ( ExecutionApprovalPending ExecutionApprovalStatus = "pending" ExecutionApprovalUserApproved ExecutionApprovalStatus = "user_approved" ExecutionApprovalPolicyApproved ExecutionApprovalStatus = "policy_approved" ExecutionApprovalPolicyBlocked ExecutionApprovalStatus = "policy_blocked" )
type ExternalPackageInstallIntent ¶ added in v1.0.0
type ExternalPackageInstallIntent string
const ( ExternalPackageInstall ExternalPackageInstallIntent = "install" ExternalPackageUpdate ExternalPackageInstallIntent = "update" )
type InstallExternalPackageRequest ¶ added in v1.0.0
type InstallExternalPackageRequest struct {
Intent ExternalPackageInstallIntent `json:"intent"`
ExpectedManagementRevision uint64 `json:"expected_management_revision"`
Record PluginRecord `json:"record"`
Now time.Time `json:"-"`
}
type LocalImportProvenance ¶
type ManagementRevisionConflictError ¶ added in v0.5.0
type ManagementRevisionConflictError struct {
PluginInstanceID string
Expected uint64
Actual uint64
}
func (*ManagementRevisionConflictError) Error ¶ added in v0.5.0
func (e *ManagementRevisionConflictError) Error() string
func (*ManagementRevisionConflictError) Unwrap ¶ added in v0.5.0
func (e *ManagementRevisionConflictError) Unwrap() error
type MemoryStore ¶
type MemoryStore struct {
// contains filtered or unexported fields
}
func NewMemoryStore ¶
func NewMemoryStore() *MemoryStore
func (*MemoryStore) AbortInstall ¶ added in v0.5.0
func (s *MemoryStore) AbortInstall(ctx context.Context, pluginInstanceID string) error
func (*MemoryStore) Authorize ¶ added in v0.5.0
func (s *MemoryStore) Authorize(ctx context.Context, req AuthorizeRequest) (AuthorizationDecision, error)
func (*MemoryStore) BindRetained ¶ added in v0.5.0
func (s *MemoryStore) BindRetained(ctx context.Context, expected plugindata.Binding, targetPluginInstanceID string, targetExpectedManagementRevision uint64, targetShape plugindata.Shape, now time.Time) (plugindata.Binding, error)
func (*MemoryStore) CleanupExpired ¶ added in v0.5.0
func (s *MemoryStore) CleanupExpired(ctx context.Context, now time.Time, expected []plugindata.Binding) ([]plugindata.Binding, error)
func (*MemoryStore) CommitEnable ¶ added in v0.5.0
func (s *MemoryStore) CommitEnable(ctx context.Context, expectedManagementRevision uint64, expected *plugindata.Binding, next plugindata.Binding, shape plugindata.Shape, now time.Time) error
func (*MemoryStore) CommitUninstall ¶ added in v0.5.0
func (s *MemoryStore) CommitUninstall(ctx context.Context, req plugindata.CommitUninstallRequest) (plugindata.CommitUninstallResult, error)
func (*MemoryStore) CreateObject ¶ added in v0.5.0
func (s *MemoryStore) CreateObject(ctx context.Context, scope sessionctx.ScopeKind, object plugindata.Object) error
func (*MemoryStore) DeleteObject ¶ added in v0.5.0
func (s *MemoryStore) DeleteObject(ctx context.Context, scope sessionctx.ScopeKind, pluginInstanceID, objectID string) error
func (*MemoryStore) DeleteRetained ¶ added in v0.5.0
func (s *MemoryStore) DeleteRetained(ctx context.Context, expected plugindata.Binding) error
func (*MemoryStore) DeleteSecurityPolicy ¶ added in v0.5.0
func (s *MemoryStore) DeleteSecurityPolicy(ctx context.Context, pluginInstanceID string, now time.Time, expected AuthorizationRevisions) (AuthorizationSnapshot, error)
func (*MemoryStore) Durable ¶ added in v0.6.0
func (*MemoryStore) Durable() bool
func (*MemoryStore) GetAuthorization ¶ added in v0.5.0
func (s *MemoryStore) GetAuthorization(ctx context.Context, pluginInstanceID string) (AuthorizationSnapshot, error)
func (*MemoryStore) GetBinding ¶ added in v0.5.0
func (s *MemoryStore) GetBinding(ctx context.Context, pluginInstanceID string) (plugindata.Binding, bool, error)
func (*MemoryStore) GetObject ¶ added in v0.5.0
func (s *MemoryStore) GetObject(ctx context.Context, scope sessionctx.ScopeKind, pluginInstanceID, objectID string) (plugindata.Object, bool, error)
func (*MemoryStore) GetPlugin ¶
func (s *MemoryStore) GetPlugin(ctx context.Context, pluginInstanceID string) (PluginRecord, error)
func (*MemoryStore) GrantPermission ¶ added in v0.5.0
func (s *MemoryStore) GrantPermission(ctx context.Context, req permissions.GrantRequest, expected AuthorizationRevisions) (AuthorizationSnapshot, error)
func (*MemoryStore) ListAllBindingsForMaintenance ¶ added in v0.5.0
func (s *MemoryStore) ListAllBindingsForMaintenance(_ context.Context, cursor string, limit int) ([]plugindata.MaintenanceBinding, string, error)
func (*MemoryStore) ListAllObjectsForMaintenance ¶ added in v0.5.0
func (s *MemoryStore) ListAllObjectsForMaintenance(_ context.Context, cursor string, limit int) ([]plugindata.MaintenanceObject, string, error)
func (*MemoryStore) ListAuthorization ¶ added in v0.5.0
func (s *MemoryStore) ListAuthorization(ctx context.Context) ([]AuthorizationSnapshot, error)
func (*MemoryStore) ListBindings ¶ added in v0.5.0
func (s *MemoryStore) ListBindings(ctx context.Context, cursor string, limit int) ([]plugindata.Binding, string, error)
func (*MemoryStore) ListObjects ¶ added in v0.5.0
func (s *MemoryStore) ListObjects(ctx context.Context, scope sessionctx.ScopeKind, pluginInstanceID, cursor string, limit int) ([]plugindata.Object, string, error)
func (*MemoryStore) ListPlugins ¶
func (s *MemoryStore) ListPlugins(ctx context.Context) ([]PluginRecord, error)
func (*MemoryStore) PutPlugin ¶
func (s *MemoryStore) PutPlugin(ctx context.Context, record PluginRecord, opts PutOptions) (PluginRecord, error)
func (*MemoryStore) PutSecurityPolicy ¶ added in v0.5.0
func (s *MemoryStore) PutSecurityPolicy(ctx context.Context, req security.PutPolicyRequest, expected AuthorizationRevisions) (AuthorizationSnapshot, error)
func (*MemoryStore) RevokePermission ¶ added in v0.5.0
func (s *MemoryStore) RevokePermission(ctx context.Context, req permissions.RevokeRequest, expected AuthorizationRevisions) (AuthorizationSnapshot, error)
func (*MemoryStore) SetEnableState ¶
func (s *MemoryStore) SetEnableState(ctx context.Context, pluginInstanceID string, state EnableState, reason string, now time.Time) (PluginRecord, error)
func (*MemoryStore) SwapImport ¶ added in v0.5.0
func (s *MemoryStore) SwapImport(ctx context.Context, expectedManagementRevision uint64, expected *plugindata.Binding, next plugindata.Binding, shape plugindata.Shape, now time.Time) error
type PackageSourceKind ¶ added in v0.6.8
type PackageSourceKind string
const ( PackageSourceGitHubRepository PackageSourceKind = "github_repository" PackageSourcePackageURL PackageSourceKind = "package_url" PackageSourcePackageUpload PackageSourceKind = "package_upload" PackageSourceOfficialCatalog PackageSourceKind = "official_catalog" PackageSourceApprovedCatalog PackageSourceKind = "approved_catalog" PackageSourceLocalGenerated PackageSourceKind = "local_generated" PackageSourceLegacyRegistry PackageSourceKind = "legacy_registry" )
type PackageSourceProvenance ¶ added in v0.6.8
type PackageSourceProvenance struct {
Kind PackageSourceKind `json:"kind"`
UploadID string `json:"upload_id,omitempty"`
SourceOrigin string `json:"source_origin,omitempty"`
SourceURL string `json:"source_url,omitempty"`
FinalURL string `json:"final_url,omitempty"`
RedirectChain []PackageSourceRedirectHop `json:"redirect_chain,omitempty"`
RepositoryURL string `json:"repository_url,omitempty"`
GitHubRepositoryID string `json:"repository_id,omitempty"`
GitHubReleaseID string `json:"release_id,omitempty"`
GitHubAssetID string `json:"asset_id,omitempty"`
GitHubOwner string `json:"owner,omitempty"`
GitHubRepository string `json:"repository,omitempty"`
ReleaseTag string `json:"release_tag,omitempty"`
AssetName string `json:"asset_name,omitempty"`
PackageSHA256 string `json:"package_sha256,omitempty"`
SourceReference string `json:"source_reference,omitempty"`
SourcePath string `json:"source_path,omitempty"`
ResolvedRevision string `json:"resolved_commit_sha,omitempty"`
CatalogEntryID string `json:"catalog_entry_id,omitempty"`
RetrievedAt time.Time `json:"resolved_at,omitempty"`
}
type PackageSourceRedirectHop ¶ added in v0.6.8
type PluginRecord ¶
type PluginRecord struct {
OwnerEnvHash string `json:"-"`
PluginInstanceID string `json:"plugin_instance_id"`
PublisherID string `json:"publisher_id"`
PluginID string `json:"plugin_id"`
Version string `json:"version"`
ActiveFingerprint string `json:"active_fingerprint"`
PackageHash string `json:"package_hash"`
ManifestHash string `json:"manifest_hash"`
EntriesHash string `json:"entries_hash"`
TrustState TrustState `json:"trust_state"`
TrustAssessment TrustAssessment `json:"trust_assessment"`
SignatureAssessment SignatureAssessment `json:"signature_assessment"`
PackageSourceProvenance PackageSourceProvenance `json:"source_provenance"`
ExecutionApproval ExecutionApproval `json:"execution_approval"`
UpdateEligibility UpdateEligibility `json:"update_eligibility"`
SecurityCapabilitySummary SecurityCapabilitySummary `json:"security_summary"`
ReleaseTrustBinding *ReleaseTrustBinding `json:"release_trust_binding,omitempty"`
LocalImportProvenance *LocalImportProvenance `json:"local_import_provenance,omitempty"`
CapabilityContracts []capabilitycontract.Pin `json:"capability_contracts,omitempty"`
EnableState EnableState `json:"enable_state"`
DisabledReason string `json:"disabled_reason,omitempty"`
PolicyRevision uint64 `json:"policy_revision"`
ManagementRevision uint64 `json:"management_revision"`
RevokeEpoch uint64 `json:"revoke_epoch"`
Manifest manifest.Manifest `json:"manifest"`
PackageEntries []pluginpkg.Entry `json:"package_entries"`
RuntimeRequirement *RuntimeRequirement `json:"runtime_requirement,omitempty"`
VersionHistory []PluginVersion `json:"version_history,omitempty"`
InstalledAt time.Time `json:"installed_at"`
EnabledAt *time.Time `json:"enabled_at,omitempty"`
UpdatedAt time.Time `json:"updated_at"`
DeletedAt *time.Time `json:"deleted_at,omitempty"`
Metadata map[string]string `json:"metadata,omitempty"`
}
func PrepareEnableState ¶ added in v1.0.0
func PrepareEnableState(record PluginRecord, state EnableState, reason string, now time.Time) PluginRecord
func PrepareExternalPackageInstall ¶ added in v1.0.0
func PrepareExternalPackageInstall(ownerEnvHash string, req InstallExternalPackageRequest, existing *PluginRecord) (PluginRecord, error)
PrepareExternalPackageInstall applies the canonical external-package validation, owner binding, revision transition, and security normalization without persisting state. Persistent authorities use this function inside their own atomic transaction so Host has one installation state machine.
func PreparePluginPut ¶ added in v1.0.0
func PreparePluginPut(ownerEnvHash string, record PluginRecord, existing *PluginRecord, now time.Time) (PluginRecord, error)
type PluginVersion ¶
type PluginVersion struct {
Version string `json:"version"`
ActiveFingerprint string `json:"active_fingerprint"`
PackageHash string `json:"package_hash"`
ManifestHash string `json:"manifest_hash"`
EntriesHash string `json:"entries_hash"`
TrustState TrustState `json:"trust_state"`
TrustAssessment TrustAssessment `json:"trust_assessment"`
SignatureAssessment SignatureAssessment `json:"signature_assessment"`
PackageSourceProvenance PackageSourceProvenance `json:"source_provenance"`
ExecutionApproval ExecutionApproval `json:"execution_approval"`
UpdateEligibility UpdateEligibility `json:"update_eligibility"`
SecurityCapabilitySummary SecurityCapabilitySummary `json:"security_summary"`
ReleaseTrustBinding *ReleaseTrustBinding `json:"release_trust_binding,omitempty"`
LocalImportProvenance *LocalImportProvenance `json:"local_import_provenance,omitempty"`
CapabilityContracts []capabilitycontract.Pin `json:"capability_contracts,omitempty"`
Manifest manifest.Manifest `json:"manifest"`
PackageEntries []pluginpkg.Entry `json:"package_entries"`
RuntimeRequirement *RuntimeRequirement `json:"runtime_requirement,omitempty"`
ActivatedAt time.Time `json:"activated_at"`
Metadata map[string]string `json:"metadata,omitempty"`
}
type PutOptions ¶
type ReleaseInstallActivation ¶ added in v0.7.17
type ReleaseInstallActivation struct {
Status ReleaseInstallActivationStatus `json:"status"`
MissingPermissionIDs []string `json:"missing_permission_ids,omitempty"`
NextAction string `json:"next_action,omitempty"`
}
type ReleaseInstallActivationMode ¶ added in v0.7.17
type ReleaseInstallActivationMode string
const ( ReleaseInstallActivationAutomatic ReleaseInstallActivationMode = "automatic" ReleaseInstallActivationRequested ReleaseInstallActivationMode = "requested" ReleaseInstallActivationDisabled ReleaseInstallActivationMode = "disabled" )
type ReleaseInstallActivationRequest ¶ added in v0.7.17
type ReleaseInstallActivationRequest struct {
Mode ReleaseInstallActivationMode `json:"mode"`
ApprovedPermissionIDs []string `json:"approved_permission_ids,omitempty"`
}
type ReleaseInstallActivationStatus ¶ added in v0.7.17
type ReleaseInstallActivationStatus string
const ( ReleaseInstallActivationPending ReleaseInstallActivationStatus = "pending" ReleaseInstallActivationEnabled ReleaseInstallActivationStatus = "enabled" ReleaseInstallActivationNeedsAttention ReleaseInstallActivationStatus = "needs_attention" ReleaseInstallActivationNotRequested ReleaseInstallActivationStatus = "not_requested" )
type ReleaseInstallFailure ¶ added in v0.7.2
type ReleaseInstallIdentity ¶ added in v0.7.2
type ReleaseInstallIdentity struct {
SourceID string `json:"source_id"`
Channel string `json:"channel"`
ReleaseMetadataRef string `json:"release_metadata_ref"`
ReleaseMetadataSHA256 string `json:"release_metadata_sha256"`
PublisherID string `json:"publisher_id"`
PluginID string `json:"plugin_id"`
Version string `json:"version"`
PackageSHA256 string `json:"package_sha256"`
ManifestSHA256 string `json:"manifest_sha256"`
EntriesSHA256 string `json:"entries_sha256"`
}
ReleaseInstallIdentity is the immutable signed-release coordinate required to reconcile an interrupted installation without retaining a source URL.
type ReleaseInstallOperation ¶ added in v0.7.2
type ReleaseInstallOperation struct {
Execution execution.Execution `json:"-"`
RequestID string `json:"request_id"`
PluginInstanceID string `json:"plugin_instance_id"`
RequestSHA256 string `json:"request_sha256"`
Phase string `json:"phase"`
Progress ReleaseInstallProgress `json:"progress"`
Attempt int `json:"attempt"`
RetryAfterMS int64 `json:"retry_after_ms"`
MutationOutcome mutation.Outcome `json:"mutation_outcome"`
Failure *ReleaseInstallFailure `json:"failure,omitempty"`
PluginRecord *PluginRecord `json:"plugin_record,omitempty"`
Activation ReleaseInstallActivation `json:"activation"`
PhaseDiagnostics []ReleaseInstallPhaseDiagnostic `json:"phase_diagnostics"`
Release ReleaseInstallIdentity `json:"-"`
ActivationRequest ReleaseInstallActivationRequest `json:"-"`
}
func ApplyReleaseInstallOperationUpdate ¶ added in v1.0.0
func ApplyReleaseInstallOperationUpdate(current ReleaseInstallOperation, req UpdateReleaseInstallOperationRequest) (ReleaseInstallOperation, error)
ApplyReleaseInstallOperationUpdate is the canonical transition helper used by Host-owned durable execution stores.
func PrepareReleaseInstallOperation ¶ added in v1.0.0
func PrepareReleaseInstallOperation(req StartReleaseInstallOperationRequest) (ReleaseInstallOperation, error)
PrepareReleaseInstallOperation validates one request and constructs the canonical initial payload for a Host-owned Execution.
type ReleaseInstallPhaseDiagnostic ¶ added in v0.7.17
type ReleaseInstallPhaseDiagnostic struct {
Phase string `json:"phase"`
ArtifactRole string `json:"artifact_role,omitempty"`
Attempt int `json:"attempt"`
Progress ReleaseInstallProgress `json:"progress"`
CacheHit bool `json:"cache_hit"`
StartedAt time.Time `json:"started_at"`
CompletedAt *time.Time `json:"completed_at,omitempty"`
DurationMS int64 `json:"duration_ms,omitempty"`
}
type ReleaseInstallProgress ¶ added in v0.7.2
type ReleaseInstallProgress struct {
Kind ReleaseInstallProgressKind `json:"kind"`
Completed int64 `json:"completed,omitempty"`
Total int64 `json:"total,omitempty"`
}
type ReleaseInstallProgressKind ¶ added in v0.7.2
type ReleaseInstallProgressKind string
const ( ReleaseInstallProgressIndeterminate ReleaseInstallProgressKind = "indeterminate" ReleaseInstallProgressItems ReleaseInstallProgressKind = "items" ReleaseInstallProgressBytes ReleaseInstallProgressKind = "bytes" )
type ReleaseTrustBinding ¶ added in v0.6.0
type ReleaseTrustBinding struct {
SourceID string `json:"source_id"`
Channel string `json:"channel"`
ReleaseMetadataRef string `json:"release_metadata_ref"`
ReleaseMetadataSHA256 string `json:"release_metadata_sha256"`
PublisherID string `json:"publisher_id"`
PluginID string `json:"plugin_id"`
Version string `json:"version"`
PackageSigningKeyID string `json:"package_signing_key_id"`
RootEpoch string `json:"root_epoch"`
PolicyEpoch string `json:"policy_epoch"`
RevocationEpoch string `json:"revocation_epoch"`
}
type RuntimeRequirement ¶ added in v0.5.0
type RuntimeRequirement struct {
MinVersion string `json:"min_version"`
SupportedTargets []runtimetarget.Target `json:"supported_targets,omitempty"`
}
RuntimeRequirement is the exact worker-runtime compatibility contract that was verified for an installed package version. UI-only packages leave it nil.
type SQLiteStore ¶
type SQLiteStore struct {
// contains filtered or unexported fields
}
func NewSQLiteStore ¶
func NewSQLiteStore(ctx context.Context, path string) (*SQLiteStore, error)
func (*SQLiteStore) AbortInstall ¶ added in v0.5.0
func (s *SQLiteStore) AbortInstall(ctx context.Context, pluginInstanceID string) error
func (*SQLiteStore) Authorize ¶ added in v0.5.0
func (s *SQLiteStore) Authorize(ctx context.Context, req AuthorizeRequest) (AuthorizationDecision, error)
func (*SQLiteStore) BindRetained ¶ added in v0.5.0
func (s *SQLiteStore) BindRetained(ctx context.Context, expected plugindata.Binding, targetPluginInstanceID string, targetExpectedManagementRevision uint64, targetShape plugindata.Shape, now time.Time) (plugindata.Binding, error)
func (*SQLiteStore) CleanupExpired ¶ added in v0.5.0
func (s *SQLiteStore) CleanupExpired(ctx context.Context, now time.Time, expected []plugindata.Binding) ([]plugindata.Binding, error)
func (*SQLiteStore) Close ¶
func (s *SQLiteStore) Close() error
func (*SQLiteStore) CommitEnable ¶ added in v0.5.0
func (s *SQLiteStore) CommitEnable(ctx context.Context, expectedManagementRevision uint64, expected *plugindata.Binding, next plugindata.Binding, shape plugindata.Shape, now time.Time) error
func (*SQLiteStore) CommitUninstall ¶ added in v0.5.0
func (s *SQLiteStore) CommitUninstall(ctx context.Context, req plugindata.CommitUninstallRequest) (plugindata.CommitUninstallResult, error)
func (*SQLiteStore) CreateObject ¶ added in v0.5.0
func (s *SQLiteStore) CreateObject(ctx context.Context, scope sessionctx.ScopeKind, object plugindata.Object) error
func (*SQLiteStore) DeleteObject ¶ added in v0.5.0
func (s *SQLiteStore) DeleteObject(ctx context.Context, scope sessionctx.ScopeKind, pluginInstanceID, objectID string) error
func (*SQLiteStore) DeleteRetained ¶ added in v0.5.0
func (s *SQLiteStore) DeleteRetained(ctx context.Context, expected plugindata.Binding) error
func (*SQLiteStore) DeleteSecurityPolicy ¶ added in v0.5.0
func (s *SQLiteStore) DeleteSecurityPolicy(ctx context.Context, pluginInstanceID string, now time.Time, expected AuthorizationRevisions) (AuthorizationSnapshot, error)
func (*SQLiteStore) Durable ¶ added in v0.6.0
func (*SQLiteStore) Durable() bool
func (*SQLiteStore) GetAuthorization ¶ added in v0.5.0
func (s *SQLiteStore) GetAuthorization(ctx context.Context, pluginInstanceID string) (AuthorizationSnapshot, error)
func (*SQLiteStore) GetBinding ¶ added in v0.5.0
func (s *SQLiteStore) GetBinding(ctx context.Context, pluginInstanceID string) (plugindata.Binding, bool, error)
func (*SQLiteStore) GetObject ¶ added in v0.5.0
func (s *SQLiteStore) GetObject(ctx context.Context, scope sessionctx.ScopeKind, pluginInstanceID, objectID string) (plugindata.Object, bool, error)
func (*SQLiteStore) GetPlugin ¶
func (s *SQLiteStore) GetPlugin(ctx context.Context, pluginInstanceID string) (PluginRecord, error)
func (*SQLiteStore) GrantPermission ¶ added in v0.5.0
func (s *SQLiteStore) GrantPermission(ctx context.Context, req permissions.GrantRequest, expected AuthorizationRevisions) (AuthorizationSnapshot, error)
func (*SQLiteStore) ListAllBindingsForMaintenance ¶ added in v0.5.0
func (s *SQLiteStore) ListAllBindingsForMaintenance(ctx context.Context, cursor string, limit int) ([]plugindata.MaintenanceBinding, string, error)
func (*SQLiteStore) ListAllObjectsForMaintenance ¶ added in v0.5.0
func (s *SQLiteStore) ListAllObjectsForMaintenance(ctx context.Context, cursor string, limit int) ([]plugindata.MaintenanceObject, string, error)
func (*SQLiteStore) ListAuthorization ¶ added in v0.5.0
func (s *SQLiteStore) ListAuthorization(ctx context.Context) ([]AuthorizationSnapshot, error)
func (*SQLiteStore) ListBindings ¶ added in v0.5.0
func (s *SQLiteStore) ListBindings(ctx context.Context, cursor string, limit int) ([]plugindata.Binding, string, error)
func (*SQLiteStore) ListObjects ¶ added in v0.5.0
func (s *SQLiteStore) ListObjects(ctx context.Context, scope sessionctx.ScopeKind, pluginInstanceID, cursor string, limit int) ([]plugindata.Object, string, error)
func (*SQLiteStore) ListPlugins ¶
func (s *SQLiteStore) ListPlugins(ctx context.Context) ([]PluginRecord, error)
func (*SQLiteStore) PutPlugin ¶
func (s *SQLiteStore) PutPlugin(ctx context.Context, record PluginRecord, opts PutOptions) (PluginRecord, error)
func (*SQLiteStore) PutSecurityPolicy ¶ added in v0.5.0
func (s *SQLiteStore) PutSecurityPolicy(ctx context.Context, req security.PutPolicyRequest, expected AuthorizationRevisions) (AuthorizationSnapshot, error)
func (*SQLiteStore) RevokePermission ¶ added in v0.5.0
func (s *SQLiteStore) RevokePermission(ctx context.Context, req permissions.RevokeRequest, expected AuthorizationRevisions) (AuthorizationSnapshot, error)
func (*SQLiteStore) SetEnableState ¶
func (s *SQLiteStore) SetEnableState(ctx context.Context, pluginInstanceID string, state EnableState, reason string, now time.Time) (PluginRecord, error)
func (*SQLiteStore) SwapImport ¶ added in v0.5.0
func (s *SQLiteStore) SwapImport(ctx context.Context, expectedManagementRevision uint64, expected *plugindata.Binding, next plugindata.Binding, shape plugindata.Shape, now time.Time) error
type SecurityCapabilitySummary ¶ added in v0.6.8
type SecurityCapabilitySummary struct {
SchemaVersion string `json:"schema_version,omitempty"`
CapabilityIDs []string `json:"capability_ids,omitempty"`
Summary string `json:"summary,omitempty"`
CanonicalJSON string `json:"canonical_json,omitempty"`
Reference string `json:"reference,omitempty"`
SHA256 string `json:"sha256,omitempty"`
}
type SignatureAssessment ¶ added in v0.6.8
type SignatureAssessment struct {
Status SignatureAssessmentStatus `json:"state"`
Algorithm string `json:"algorithm,omitempty"`
KeyID string `json:"key_id,omitempty"`
AssessedHashes TrustHashSet `json:"assessed_hashes"`
PackageSHA256 string `json:"package_sha256,omitempty"`
ManifestSHA256 string `json:"manifest_sha256,omitempty"`
EntriesSHA256 string `json:"entries_sha256,omitempty"`
KeyringGeneration string `json:"keyring_generation,omitempty"`
RevocationGeneration string `json:"revocation_generation,omitempty"`
AssessmentEpoch string `json:"assessment_epoch,omitempty"`
TrustRootEpoch string `json:"trust_root_epoch,omitempty"`
PolicyEpoch string `json:"policy_epoch,omitempty"`
RevocationEpoch string `json:"revocation_epoch,omitempty"`
ReasonCodes []string `json:"reason_codes,omitempty"`
EvidenceReference string `json:"evidence_reference,omitempty"`
AssessedAt time.Time `json:"assessed_at,omitempty"`
}
type SignatureAssessmentStatus ¶ added in v0.6.8
type SignatureAssessmentStatus string
const ( SignatureVerified SignatureAssessmentStatus = "verified" SignatureAbsent SignatureAssessmentStatus = "absent" SignatureUnknownSigner SignatureAssessmentStatus = "unknown_signer" SignatureInvalid SignatureAssessmentStatus = "invalid" SignatureRevoked SignatureAssessmentStatus = "revoked" )
type StartReleaseInstallOperationRequest ¶ added in v0.7.2
type StartReleaseInstallOperationRequest struct {
RequestID string `json:"request_id"`
ExecutionID string `json:"execution_id"`
PluginInstanceID string `json:"plugin_instance_id"`
Release ReleaseInstallIdentity `json:"release"`
Activation ReleaseInstallActivationRequest `json:"activation"`
Now time.Time `json:"-"`
}
type Store ¶
type Store interface {
Durable() bool
AuthorizationStore
plugindata.Catalog
PutPlugin(ctx context.Context, record PluginRecord, opts PutOptions) (PluginRecord, error)
GetPlugin(ctx context.Context, pluginInstanceID string) (PluginRecord, error)
ListPlugins(ctx context.Context) ([]PluginRecord, error)
SetEnableState(ctx context.Context, pluginInstanceID string, state EnableState, reason string, now time.Time) (PluginRecord, error)
CommitUninstall(ctx context.Context, req plugindata.CommitUninstallRequest) (plugindata.CommitUninstallResult, error)
AbortInstall(ctx context.Context, pluginInstanceID string) error
}
type TrustAssessment ¶
type TrustAssessment struct {
TrustState TrustState `json:"trust_state"`
ReasonCodes []string `json:"reason_codes,omitempty"`
VerifiedHashes TrustHashSet `json:"verified_hashes"`
VerifiedSignature *VerifiedSignature `json:"verified_signature,omitempty"`
TrustAssessmentEpoch string `json:"trust_assessment_epoch,omitempty"`
PolicyEpoch string `json:"policy_epoch,omitempty"`
RevocationEpoch string `json:"revocation_epoch,omitempty"`
Metadata map[string]string `json:"metadata,omitempty"`
}
type TrustHashSet ¶
type TrustState ¶
type TrustState string
const ( TrustVerified TrustState = "verified" TrustUnsignedLocal TrustState = "unsigned_local" TrustUntrusted TrustState = "untrusted" TrustNeedsReview TrustState = "needs_review" TrustBlockedSecurity TrustState = "blocked_security" )
type UpdateEligibility ¶ added in v0.6.8
type UpdateEligibility string
const ( UpdateManualOnly UpdateEligibility = "manual_only" UpdateAutomaticEligible UpdateEligibility = "automatic_eligible" )
type UpdateReleaseInstallOperationRequest ¶ added in v0.7.2
type UpdateReleaseInstallOperationRequest struct {
ExecutionID string
ExpectedCursor uint64
Status string
Phase string
Progress ReleaseInstallProgress
ArtifactRole string
CacheHit bool
Attempt int
RetryAfterMS int64
MutationOutcome mutation.Outcome
Failure *ReleaseInstallFailure
PluginRecord *PluginRecord
Activation ReleaseInstallActivation
Now time.Time
}