Documentation
¶
Index ¶
- Variables
- func ReleaseInstallIdentitySHA256(identity ReleaseInstallIdentity) (string, error)
- func RunnableAuthorizationState(state AuthorizationState) bool
- func RunnablePluginRecord(record PluginRecord) bool
- func ValidateEnableState(state EnableState) error
- 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) 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, error)
- 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 ReleaseInstallFailure
- type ReleaseInstallIdentity
- type ReleaseInstallOperation
- type ReleaseInstallPhaseDiagnostic
- type ReleaseInstallProgress
- type ReleaseInstallProgressEvent
- type ReleaseInstallProgressKind
- type ReleaseInstallStage
- type ReleaseInstallStageStatus
- type ReleaseTrustBinding
- type SecurityCapabilitySummary
- type SignatureAssessment
- type SignatureAssessmentStatus
- type StartReleaseInstallOperationRequest
- type Store
- type TrustAssessment
- type TrustHashSet
- type TrustState
- type UpdateEligibility
- type UpdateReleaseInstallOperationRequest
- type VerifiedSignature
Constants ¶
This section is empty.
Variables ¶
var ( ErrInvalidAuthorizationRevisions = errors.New("authorization revisions are invalid") ErrAuthorizationRevisionConflict = errors.New("authorization revision conflict") ErrAuthorizationSchemaIncomplete = errors.New("authorization schema is incomplete") )
var ( ErrNotFound = errors.New("plugin record not found") ErrInvalidEnableState = errors.New("invalid plugin enable state") )
var ( ErrReleaseInstallOperationNotFound = errors.New("release install operation not found") ErrReleaseInstallOperationConflict = errors.New("release install operation conflict") ErrInvalidReleaseInstallOperation = errors.New("invalid release install operation") )
var ErrInvalidExternalPackageInstall = errors.New("invalid external package install")
var ErrManagementRevisionConflict = errors.New("management revision conflict")
var ErrOwnerScopeMismatch = errors.New("plugin registry owner scope mismatch")
Functions ¶
func ReleaseInstallIdentitySHA256 ¶ added in v3.0.12
func ReleaseInstallIdentitySHA256(identity ReleaseInstallIdentity) (string, error)
ReleaseInstallIdentitySHA256 returns the canonical digest of the exact publisher release reference consumed by an official install.
func RunnableAuthorizationState ¶
func RunnableAuthorizationState(state AuthorizationState) bool
func RunnablePluginRecord ¶
func RunnablePluginRecord(record PluginRecord) bool
func ValidateEnableState ¶
func ValidateEnableState(state EnableState) error
Types ¶
type AuthorizationDecision ¶
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 ¶
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 ¶
type AuthorizationRevisionConflictError struct {
PluginInstanceID string
Expected AuthorizationRevisions
Actual AuthorizationRevisions
}
func (*AuthorizationRevisionConflictError) Error ¶
func (e *AuthorizationRevisionConflictError) Error() string
func (*AuthorizationRevisionConflictError) Unwrap ¶
func (e *AuthorizationRevisionConflictError) Unwrap() error
type AuthorizationRevisions ¶
type AuthorizationRevisions struct {
PolicyRevision uint64 `json:"policy_revision"`
ManagementRevision uint64 `json:"management_revision"`
RevokeEpoch uint64 `json:"revoke_epoch"`
}
func AuthorizationRevisionsFromRecord ¶
func AuthorizationRevisionsFromRecord(record PluginRecord) AuthorizationRevisions
type AuthorizationSnapshot ¶
type AuthorizationSnapshot struct {
Plugin PluginRecord `json:"plugin"`
Grants []permissions.Record `json:"grants"`
Policy *security.PolicyRecord `json:"policy,omitempty"`
}
func PrepareDeleteSecurityPolicy ¶
func PrepareDeleteSecurityPolicy(snapshot AuthorizationSnapshot, pluginInstanceID string, now time.Time, expected AuthorizationRevisions) (AuthorizationSnapshot, error)
func PrepareGrantPermission ¶
func PrepareGrantPermission(snapshot AuthorizationSnapshot, req permissions.GrantRequest, expected AuthorizationRevisions) (AuthorizationSnapshot, error)
func PrepareRevokePermission ¶
func PrepareRevokePermission(snapshot AuthorizationSnapshot, req permissions.RevokeRequest, expected AuthorizationRevisions) (AuthorizationSnapshot, error)
func PrepareSecurityPolicy ¶
func PrepareSecurityPolicy(snapshot AuthorizationSnapshot, req security.PutPolicyRequest, expected AuthorizationRevisions) (AuthorizationSnapshot, error)
type AuthorizationState ¶
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 ¶
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 ¶
type EnableState ¶
type EnableState string
const ( EnableEnabled EnableState = "enabled" EnableDisabledByUser EnableState = "disabled_by_user" )
type ExecutionApproval ¶
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 ¶
type ExecutionApprovalStatus string
const ( ExecutionApprovalPending ExecutionApprovalStatus = "pending" ExecutionApprovalUserApproved ExecutionApprovalStatus = "user_approved" ExecutionApprovalPolicyApproved ExecutionApprovalStatus = "policy_approved" ExecutionApprovalPolicyBlocked ExecutionApprovalStatus = "policy_blocked" )
type ExternalPackageInstallIntent ¶
type ExternalPackageInstallIntent string
const ( ExternalPackageInstall ExternalPackageInstallIntent = "install" ExternalPackageUpdate ExternalPackageInstallIntent = "update" )
type InstallExternalPackageRequest ¶
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 ¶
type ManagementRevisionConflictError struct {
PluginInstanceID string
Expected uint64
Actual uint64
}
func (*ManagementRevisionConflictError) Error ¶
func (e *ManagementRevisionConflictError) Error() string
func (*ManagementRevisionConflictError) Unwrap ¶
func (e *ManagementRevisionConflictError) Unwrap() error
type MemoryStore ¶
type MemoryStore struct {
// contains filtered or unexported fields
}
func NewMemoryStore ¶
func NewMemoryStore() *MemoryStore
func (*MemoryStore) AbortInstall ¶
func (s *MemoryStore) AbortInstall(ctx context.Context, pluginInstanceID string) error
func (*MemoryStore) Authorize ¶
func (s *MemoryStore) Authorize(ctx context.Context, req AuthorizeRequest) (AuthorizationDecision, error)
func (*MemoryStore) BindRetained ¶
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 ¶
func (s *MemoryStore) CleanupExpired(ctx context.Context, now time.Time, expected []plugindata.Binding) ([]plugindata.Binding, error)
func (*MemoryStore) CommitUninstall ¶
func (s *MemoryStore) CommitUninstall(ctx context.Context, req plugindata.CommitUninstallRequest) (plugindata.CommitUninstallResult, error)
func (*MemoryStore) CreateObject ¶
func (s *MemoryStore) CreateObject(ctx context.Context, scope sessionctx.ScopeKind, object plugindata.Object) error
func (*MemoryStore) DeleteObject ¶
func (s *MemoryStore) DeleteObject(ctx context.Context, scope sessionctx.ScopeKind, pluginInstanceID, objectID string) error
func (*MemoryStore) DeleteRetained ¶
func (s *MemoryStore) DeleteRetained(ctx context.Context, expected plugindata.Binding) error
func (*MemoryStore) DeleteSecurityPolicy ¶
func (s *MemoryStore) DeleteSecurityPolicy(ctx context.Context, pluginInstanceID string, now time.Time, expected AuthorizationRevisions) (AuthorizationSnapshot, error)
func (*MemoryStore) Durable ¶
func (*MemoryStore) Durable() bool
func (*MemoryStore) GetAuthorization ¶
func (s *MemoryStore) GetAuthorization(ctx context.Context, pluginInstanceID string) (AuthorizationSnapshot, error)
func (*MemoryStore) GetBinding ¶
func (s *MemoryStore) GetBinding(ctx context.Context, pluginInstanceID string) (plugindata.Binding, bool, error)
func (*MemoryStore) GetObject ¶
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 ¶
func (s *MemoryStore) GrantPermission(ctx context.Context, req permissions.GrantRequest, expected AuthorizationRevisions) (AuthorizationSnapshot, error)
func (*MemoryStore) ListAllBindingsForMaintenance ¶
func (s *MemoryStore) ListAllBindingsForMaintenance(_ context.Context, cursor string, limit int) ([]plugindata.MaintenanceBinding, string, error)
func (*MemoryStore) ListAllObjectsForMaintenance ¶
func (s *MemoryStore) ListAllObjectsForMaintenance(_ context.Context, cursor string, limit int) ([]plugindata.MaintenanceObject, string, error)
func (*MemoryStore) ListAuthorization ¶
func (s *MemoryStore) ListAuthorization(ctx context.Context) ([]AuthorizationSnapshot, error)
func (*MemoryStore) ListBindings ¶
func (s *MemoryStore) ListBindings(ctx context.Context, cursor string, limit int) ([]plugindata.Binding, string, error)
func (*MemoryStore) ListObjects ¶
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 ¶
func (s *MemoryStore) PutSecurityPolicy(ctx context.Context, req security.PutPolicyRequest, expected AuthorizationRevisions) (AuthorizationSnapshot, error)
func (*MemoryStore) RevokePermission ¶
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 ¶
func (s *MemoryStore) SwapImport(ctx context.Context, expectedManagementRevision uint64, expected *plugindata.Binding, next plugindata.Binding, shape plugindata.Shape, now time.Time) error
type PackageSourceKind ¶
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" )
type PackageSourceProvenance ¶
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 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"`
CanonicalManifest string `json:"-"`
PackageEntries []pluginpkg.Entry `json:"package_entries"`
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 ¶
func PrepareEnableState(record PluginRecord, state EnableState, reason string, now time.Time) (PluginRecord, error)
func PrepareExternalPackageInstall ¶
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 ¶
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"`
CanonicalManifest string `json:"-"`
PackageEntries []pluginpkg.Entry `json:"package_entries"`
ActivatedAt time.Time `json:"activated_at"`
Metadata map[string]string `json:"metadata,omitempty"`
}
type PutOptions ¶
type ReleaseInstallFailure ¶
type ReleaseInstallIdentity ¶
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 ¶
type ReleaseInstallOperation struct {
Execution execution.Execution `json:"-"`
RequestID string `json:"request_id"`
PluginInstanceID string `json:"plugin_instance_id"`
ReleaseIdentityDigest string `json:"release_identity_digest,omitempty"`
ManifestSHA256 string `json:"manifest_sha256,omitempty"`
ContractSetSHA256 string `json:"contract_set_sha256,omitempty"`
SummarySHA256 string `json:"summary_sha256,omitempty"`
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"`
PhaseDiagnostics []ReleaseInstallPhaseDiagnostic `json:"phase_diagnostics"`
Release ReleaseInstallIdentity `json:"-"`
}
func ApplyReleaseInstallOperationUpdate ¶
func ApplyReleaseInstallOperationUpdate(current ReleaseInstallOperation, req UpdateReleaseInstallOperationRequest) (ReleaseInstallOperation, error)
ApplyReleaseInstallOperationUpdate is the canonical transition helper used by Host-owned durable execution stores.
func PrepareReleaseInstallOperation ¶
func PrepareReleaseInstallOperation(req StartReleaseInstallOperationRequest) (ReleaseInstallOperation, error)
PrepareReleaseInstallOperation validates one request and constructs the canonical initial payload for a Host-owned Execution.
type ReleaseInstallPhaseDiagnostic ¶
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 ¶
type ReleaseInstallProgress struct {
Kind ReleaseInstallProgressKind `json:"kind"`
Completed int64 `json:"completed,omitempty"`
Total int64 `json:"total,omitempty"`
}
type ReleaseInstallProgressEvent ¶ added in v3.0.10
type ReleaseInstallProgressEvent struct {
TaskID string `json:"task_id"`
RequestID string `json:"request_id"`
Stage ReleaseInstallStage `json:"stage"`
Status ReleaseInstallStageStatus `json:"status"`
Completed *int64 `json:"completed,omitempty"`
Total *int64 `json:"total,omitempty"`
FailureCode string `json:"failure_code,omitempty"`
FailureStage ReleaseInstallStage `json:"failure_stage,omitempty"`
Retryable *bool `json:"retryable,omitempty"`
}
ReleaseInstallProgressEvent is the stable user-facing projection of a release-install task. PhaseDiagnostics intentionally remain more detailed.
type ReleaseInstallProgressKind ¶
type ReleaseInstallProgressKind string
const ( ReleaseInstallProgressIndeterminate ReleaseInstallProgressKind = "indeterminate" ReleaseInstallProgressItems ReleaseInstallProgressKind = "items" ReleaseInstallProgressBytes ReleaseInstallProgressKind = "bytes" )
type ReleaseInstallStage ¶ added in v3.0.10
type ReleaseInstallStage string
const ( ReleaseInstallStageDownload ReleaseInstallStage = "download" ReleaseInstallStageVerify ReleaseInstallStage = "verify" ReleaseInstallStageInstall ReleaseInstallStage = "install" ReleaseInstallStageEnable ReleaseInstallStage = "enable" )
func ReleaseInstallStageForPhase ¶ added in v3.0.10
func ReleaseInstallStageForPhase(phase string) ReleaseInstallStage
ReleaseInstallStageForPhase maps internal diagnostics to the stable four steps rendered by host products.
type ReleaseInstallStageStatus ¶ added in v3.0.10
type ReleaseInstallStageStatus string
const ( ReleaseInstallStagePending ReleaseInstallStageStatus = "pending" ReleaseInstallStageRunning ReleaseInstallStageStatus = "running" ReleaseInstallStageCompleted ReleaseInstallStageStatus = "completed" ReleaseInstallStageFailed ReleaseInstallStageStatus = "failed" )
type ReleaseTrustBinding ¶
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 SecurityCapabilitySummary ¶
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 ¶
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 ¶
type SignatureAssessmentStatus string
const ( SignatureVerified SignatureAssessmentStatus = "verified" SignatureAbsent SignatureAssessmentStatus = "absent" SignatureUnknownSigner SignatureAssessmentStatus = "unknown_signer" SignatureInvalid SignatureAssessmentStatus = "invalid" SignatureRevoked SignatureAssessmentStatus = "revoked" )
type StartReleaseInstallOperationRequest ¶
type StartReleaseInstallOperationRequest struct {
RequestID string `json:"request_id"`
ExecutionID string `json:"execution_id"`
PluginInstanceID string `json:"plugin_instance_id"`
ReleaseIdentityDigest string `json:"release_identity_digest,omitempty"`
ManifestSHA256 string `json:"manifest_sha256,omitempty"`
ContractSetSHA256 string `json:"contract_set_sha256,omitempty"`
SummarySHA256 string `json:"summary_sha256,omitempty"`
Release ReleaseInstallIdentity `json:"release"`
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 ¶
type UpdateEligibility string
const ( UpdateManualOnly UpdateEligibility = "manual_only" UpdateAutomaticEligible UpdateEligibility = "automatic_eligible" )
type UpdateReleaseInstallOperationRequest ¶
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
Now time.Time
}