host

package
v0.2.1 Latest Latest
Warning

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

Go to latest
Published: Jul 12, 2026 License: MIT Imports: 39 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrStreamTicketRequired          = errors.New("stream ticket is required")
	ErrPluginDataNotDeclared         = errors.New("plugin does not declare exportable data")
	ErrPluginDataArchiveRequired     = errors.New("archive_ref or settings_archive_ref is required")
	ErrPluginStorageNotDeclared      = errors.New("target plugin does not declare storage")
	ErrPluginSettingsNotDeclared     = errors.New("target plugin does not declare settings")
	ErrPluginMigrationPreflight      = errors.New("plugin migration preflight failed")
	ErrOperationCancelDispatchFailed = errors.New("operation cancel dispatch failed")
	ErrRetainedDataCleanupFailed     = errors.New("retained data cleanup failed")
	ErrRetainedDataBindFailed        = errors.New("retained data bind failed")
	ErrRetainedDataUnsafePayload     = errors.New("retained data payload is not safe to delete")
	ErrMethodRequestContract         = errors.New("plugin method request contract validation failed")
	ErrMethodResponseContract        = errors.New("plugin method response contract validation failed")
	ErrPluginStateVersionMismatch    = errors.New("plugin state version mismatch")
)
View Source
var (
	ErrSecretStoreRequired              = errors.New("secret store adapter is required")
	ErrInvalidSecretRef                 = secrets.ErrInvalidSecretRef
	ErrPackageTrustVerifierRequired     = errors.New("package trust verifier is required for requested trust state")
	ErrPackageTrustVerificationInvalid  = errors.New("package trust verifier returned invalid trust state")
	ErrReleaseMetadataVerifierRequired  = errors.New("release metadata verifier is required")
	ErrSourceRevocationVerifierRequired = errors.New("source revocation evidence verifier is required")
	ErrReleaseSourcePolicyRequired      = errors.New("release source policy resolver is required")
	ErrReleaseArtifactResolverRequired  = errors.New("release artifact resolver is required")
	ErrReleaseRefVerificationFailed     = errors.New("release ref verification failed")
	ErrReleaseRefPolicyDenied           = errors.New("release ref source policy denied")
)
View Source
var ErrConfirmationRequired = errors.New("plugin method confirmation required")

Functions

func ImportLocalPackageBytes

func ImportLocalPackageBytes(ctx context.Context, h *Host, data []byte) (registry.PluginRecord, error)

Types

type Adapters

type Adapters struct {
	SessionResolver         sessionctx.Resolver
	Policy                  PolicyAdapter
	PackageTrustVerifier    PackageTrustVerifier
	ReleaseMetadataVerifier ReleaseMetadataVerifier
	RevocationVerifier      SourceRevocationEvidenceVerifier
	ReleaseSourcePolicy     ReleaseSourcePolicyResolver
	ReleaseArtifactResolver ReleaseArtifactResolver
	Registry                registry.Store
	Audit                   AuditSink
	Diagnostics             DiagnosticsSink
	Secrets                 SecretStoreAdapter
	RuntimeArtifactResolver RuntimeArtifactResolver
	RuntimeSupervisor       runtimeclient.Supervisor
	SurfaceCatalog          SurfaceCatalogSink
	Assets                  pluginpkg.AssetStore
	InstallStages           installstage.Store
	Capabilities            *capability.Registry
	CoreActions             CoreActionAdapter
	OperationCanceler       OperationCanceler
	SurfaceTokens           *bridge.SurfaceTokenService
	Storage                 storage.Broker
	Connectivity            connectivity.Broker
	NetworkExecutor         connectivity.NetworkExecutor
	Operations              operation.Store
	Permissions             permissions.Store
	SecurityPolicy          security.PolicyStore
	ConfirmationIntents     security.ConfirmationIntentStore
	Cleanup                 cleanup.Orchestrator
	RetainedData            retaineddata.Store
	Settings                settings.Store
	Streams                 stream.Store
}

type AppendStreamEventRequest

type AppendStreamEventRequest struct {
	StreamID string    `json:"stream_id"`
	Kind     string    `json:"kind,omitempty"`
	Data     []byte    `json:"data,omitempty"`
	Error    string    `json:"error,omitempty"`
	Now      time.Time `json:"now,omitempty"`
}

type AuditEvent

type AuditEvent = observability.AuditEvent

type AuditLister

type AuditLister = observability.AuditLister

type AuditSink

type AuditSink = observability.AuditSink

type BindRetainedDataRequest

type BindRetainedDataRequest struct {
	RetainedID             string    `json:"retained_id"`
	TargetPluginInstanceID string    `json:"target_plugin_instance_id"`
	Now                    time.Time `json:"now,omitempty"`
}

type CallMethodRequest

type CallMethodRequest struct {
	PluginInstanceID     string         `json:"plugin_instance_id"`
	SurfaceInstanceID    string         `json:"surface_instance_id"`
	SessionChannelIDHash string         `json:"session_channel_id_hash,omitempty"`
	OwnerSessionHash     string         `json:"owner_session_hash,omitempty"`
	OwnerUserHash        string         `json:"owner_user_hash,omitempty"`
	BridgeChannelID      string         `json:"bridge_channel_id"`
	GatewayToken         string         `json:"plugin_gateway_token"`
	ConfirmationID       string         `json:"confirmation_id,omitempty"`
	Method               string         `json:"method"`
	Params               map[string]any `json:"params,omitempty"`
	Now                  time.Time      `json:"now,omitempty"`
}

type CallMethodResult

type CallMethodResult struct {
	Data                 any        `json:"data,omitempty"`
	OperationID          string     `json:"operation_id,omitempty"`
	StreamID             string     `json:"stream_id,omitempty"`
	StreamTicket         string     `json:"stream_ticket,omitempty"`
	StreamTicketID       string     `json:"stream_ticket_id,omitempty"`
	StreamExpiresAt      *time.Time `json:"stream_expires_at,omitempty"`
	ConfirmationRequired bool       `json:"confirmation_required,omitempty"`
	ConfirmationTokenID  string     `json:"confirmation_token_id,omitempty"`
	RequestHash          string     `json:"request_hash,omitempty"`
	PlanHash             string     `json:"plan_hash,omitempty"`
}

type CancelOperationRequest

type CancelOperationRequest struct {
	OperationID string `json:"operation_id"`
	Reason      string `json:"reason,omitempty"`
	Now         time.Time
}

type CleanupExpiredRetainedDataRequest

type CleanupExpiredRetainedDataRequest struct {
	Now         time.Time `json:"now,omitempty"`
	RetryFailed bool      `json:"retry_failed,omitempty"`
	MaxRecords  int       `json:"max_records,omitempty"`
}

type CloseStreamRequest

type CloseStreamRequest struct {
	StreamID string        `json:"stream_id"`
	Status   stream.Status `json:"status,omitempty"`
	Reason   string        `json:"reason,omitempty"`
	Now      time.Time     `json:"now,omitempty"`
}

type ConfirmMethodRequest

type ConfirmMethodRequest = CallMethodRequest

type ConfirmMethodResult

type ConfirmMethodResult struct {
	ConfirmationID      string    `json:"confirmation_id"`
	ConfirmationTokenID string    `json:"confirmation_token_id"`
	RequestHash         string    `json:"request_hash"`
	PlanHash            string    `json:"plan_hash"`
	Plan                any       `json:"plan,omitempty"`
	ExpiresAt           time.Time `json:"expires_at"`
}

type CoreActionAdapter

type CoreActionAdapter interface {
	InvokeCoreAction(ctx context.Context, req capability.Invocation) (capability.Result, error)
}

type DeleteRetainedDataRequest

type DeleteRetainedDataRequest struct {
	RetainedID string    `json:"retained_id"`
	Now        time.Time `json:"now,omitempty"`
}

type DeleteSecurityPolicyRequest

type DeleteSecurityPolicyRequest struct {
	PluginInstanceID string    `json:"plugin_instance_id"`
	Now              time.Time `json:"now,omitempty"`
}

type DiagnosticEvent

type DiagnosticEvent = observability.DiagnosticEvent

type DiagnosticLister

type DiagnosticLister = observability.DiagnosticLister

type DiagnosticsSink

type DiagnosticsSink = observability.DiagnosticsSink

type DisableRequest

type DisableRequest struct {
	PluginInstanceID   string
	PluginStateVersion uint64
	Reason             string
	Now                time.Time
}

type DisposeSurfaceRequest

type DisposeSurfaceRequest struct {
	SurfaceInstanceID    string
	BridgeNonce          string
	OwnerSessionHash     string
	OwnerUserHash        string
	SessionChannelIDHash string
	Now                  time.Time
}

type DowngradeRequest

type DowngradeRequest struct {
	PluginInstanceID   string
	PluginStateVersion uint64
	Version            string
	PackageHash        string
	Now                time.Time
}

type EnableRequest

type EnableRequest struct {
	PluginInstanceID   string
	PluginStateVersion uint64
	Now                time.Time
}

type ExchangeAssetTicketRequest

type ExchangeAssetTicketRequest struct {
	SurfaceInstanceID    string
	AssetTicket          string
	OwnerSessionHash     string
	OwnerUserHash        string
	SessionChannelIDHash string
	Now                  time.Time
}

type ExportDataRequest

type ExportDataRequest struct {
	PluginInstanceID string
	IncludeSecrets   bool
}

type ExportDataResult

type ExportDataResult struct {
	ArchiveRef         string `json:"archive_ref,omitempty"`
	SettingsArchiveRef string `json:"settings_archive_ref,omitempty"`
}

type FinishOperationRequest

type FinishOperationRequest struct {
	OperationID string           `json:"operation_id"`
	Status      operation.Status `json:"status"`
	Reason      string           `json:"reason,omitempty"`
	Now         time.Time
}

type GetSecurityPolicyRequest

type GetSecurityPolicyRequest struct {
	PluginInstanceID string `json:"plugin_instance_id"`
}

type GetSettingsRequest

type GetSettingsRequest struct {
	PluginInstanceID string `json:"plugin_instance_id"`
}

type GrantPermissionRequest

type GrantPermissionRequest struct {
	PluginInstanceID string    `json:"plugin_instance_id"`
	PermissionID     string    `json:"permission_id"`
	GrantedBy        string    `json:"granted_by,omitempty"`
	Now              time.Time `json:"now,omitempty"`
	ExpiresAt        time.Time `json:"expires_at,omitempty"`
}

type Host

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

func New

func New(adapters Adapters) (*Host, error)

func (*Host) AppendStreamEvent

func (h *Host) AppendStreamEvent(ctx context.Context, req AppendStreamEventRequest) (stream.Event, error)

func (*Host) BindRetainedData

func (h *Host) BindRetainedData(ctx context.Context, req BindRetainedDataRequest) (retaineddata.Record, error)

func (*Host) BindSecretRef

func (h *Host) BindSecretRef(ctx context.Context, req SecretBindRequest) error

func (*Host) CallPluginMethod

func (h *Host) CallPluginMethod(ctx context.Context, req CallMethodRequest) (CallMethodResult, error)

func (*Host) CancelOperation

func (h *Host) CancelOperation(ctx context.Context, req CancelOperationRequest) (operation.Record, error)

func (*Host) Capabilities

func (h *Host) Capabilities() *capability.Registry

func (*Host) CloseStream

func (h *Host) CloseStream(ctx context.Context, req CloseStreamRequest) (stream.Record, error)

func (*Host) DeleteRetainedData

func (h *Host) DeleteRetainedData(ctx context.Context, req DeleteRetainedDataRequest) (retaineddata.Record, error)

func (*Host) DeleteSecretRef

func (h *Host) DeleteSecretRef(ctx context.Context, req SecretDeleteRequest) error

func (*Host) DeleteSecurityPolicy

func (h *Host) DeleteSecurityPolicy(ctx context.Context, req DeleteSecurityPolicyRequest) error

func (*Host) DisablePlugin

func (h *Host) DisablePlugin(ctx context.Context, req DisableRequest) (registry.PluginRecord, error)

func (*Host) DisposeSurface

func (h *Host) DisposeSurface(_ context.Context, req DisposeSurfaceRequest) error

func (*Host) DowngradePlugin

func (h *Host) DowngradePlugin(ctx context.Context, req DowngradeRequest) (registry.PluginRecord, error)

func (*Host) EnablePlugin

func (h *Host) EnablePlugin(ctx context.Context, req EnableRequest) (registry.PluginRecord, error)

func (*Host) ExchangeAssetTicket

func (h *Host) ExchangeAssetTicket(ctx context.Context, req ExchangeAssetTicketRequest) (bridge.AssetSessionResult, error)

func (*Host) ExportPluginData

func (h *Host) ExportPluginData(ctx context.Context, req ExportDataRequest) (ExportDataResult, error)

func (*Host) FinishOperation

func (h *Host) FinishOperation(ctx context.Context, req FinishOperationRequest) (operation.Record, error)

func (*Host) GetOperation

func (h *Host) GetOperation(ctx context.Context, operationID string) (operation.Record, error)

func (*Host) GetPluginSettings

func (h *Host) GetPluginSettings(ctx context.Context, req GetSettingsRequest) (SettingsResult, error)

func (*Host) GetSecurityPolicy

func (h *Host) GetSecurityPolicy(ctx context.Context, req GetSecurityPolicyRequest) (security.PolicyRecord, error)

func (*Host) GetSettingsSchema

func (h *Host) GetSettingsSchema(ctx context.Context, req GetSettingsRequest) (SettingsSchemaResult, error)

func (*Host) GrantPermission

func (h *Host) GrantPermission(ctx context.Context, req GrantPermissionRequest) (permissions.Record, error)

func (*Host) ImportLocalPackage

func (h *Host) ImportLocalPackage(ctx context.Context, req ImportLocalPackageRequest) (registry.PluginRecord, error)

func (*Host) ImportPluginData

func (h *Host) ImportPluginData(ctx context.Context, req ImportDataRequest) error

func (*Host) InstallReleaseRef

func (h *Host) InstallReleaseRef(ctx context.Context, req InstallReleaseRefRequest) (registry.PluginRecord, error)

func (*Host) InvokeIntent

func (h *Host) InvokeIntent(ctx context.Context, req InvokeIntentRequest) (CallMethodResult, error)

func (*Host) ListAuditEvents

func (h *Host) ListAuditEvents(ctx context.Context, req ListAuditEventsRequest) ([]AuditEvent, error)

func (*Host) ListDiagnosticEvents

func (h *Host) ListDiagnosticEvents(ctx context.Context, req ListDiagnosticEventsRequest) ([]DiagnosticEvent, error)

func (*Host) ListIntents

func (h *Host) ListIntents(ctx context.Context, req ListIntentsRequest) ([]IntentRecord, error)

func (*Host) ListOperations

func (h *Host) ListOperations(ctx context.Context, req ListOperationsRequest) ([]operation.Record, error)

func (*Host) ListPermissionGrants

func (h *Host) ListPermissionGrants(ctx context.Context, req ListPermissionGrantsRequest) ([]permissions.Record, error)

func (*Host) ListPlugins

func (h *Host) ListPlugins(ctx context.Context) ([]registry.PluginRecord, error)

func (*Host) ListRetainedData

func (h *Host) ListRetainedData(ctx context.Context, req ListRetainedDataRequest) ([]retaineddata.Record, error)

func (*Host) ListSecurityPolicies

func (h *Host) ListSecurityPolicies(ctx context.Context) ([]security.PolicyRecord, error)

func (*Host) MintBridgeToken

func (h *Host) MintBridgeToken(ctx context.Context, req MintBridgeTokenRequest) (bridge.GatewayTokenResult, error)

func (*Host) MintConnectionGrant

func (h *Host) MintConnectionGrant(ctx context.Context, req MintConnectionGrantRequest) (connectivity.ConnectionGrant, error)

func (*Host) MintNetworkHandleGrant

func (h *Host) MintNetworkHandleGrant(ctx context.Context, req MintConnectionGrantRequest) (NetworkHandleGrantResult, error)

func (*Host) MintStorageHandleGrant

func (h *Host) MintStorageHandleGrant(ctx context.Context, req MintStorageHandleGrantRequest) (StorageHandleGrantResult, error)

func (*Host) OpenSurface

func (h *Host) OpenSurface(ctx context.Context, req OpenSurfaceRequest) (bridge.SurfaceBootstrap, error)

func (*Host) PatchPluginSettings

func (h *Host) PatchPluginSettings(ctx context.Context, req PatchSettingsRequest) (SettingsResult, error)

func (*Host) PrepareMethodConfirmation

func (h *Host) PrepareMethodConfirmation(ctx context.Context, req ConfirmMethodRequest) (ConfirmMethodResult, error)

func (*Host) PrepareSurface

func (h *Host) PrepareSurface(ctx context.Context, req ExchangeAssetTicketRequest) (result PrepareSurfaceResult, err error)

func (*Host) PutSecurityPolicy

func (h *Host) PutSecurityPolicy(ctx context.Context, req PutSecurityPolicyRequest) (security.PolicyRecord, error)

func (*Host) ReadStream

func (h *Host) ReadStream(ctx context.Context, req ReadStreamRequest) (ReadStreamResult, error)

func (*Host) ReadSurfaceAsset

func (h *Host) ReadSurfaceAsset(ctx context.Context, req ReadSurfaceAssetRequest) (ReadSurfaceAssetResult, error)

func (*Host) RefreshEnabledPlugins

func (h *Host) RefreshEnabledPlugins(ctx context.Context) ([]registry.PluginRecord, error)

func (*Host) RevokePermission

func (h *Host) RevokePermission(ctx context.Context, req RevokePermissionRequest) (permissions.Record, error)

func (*Host) RevokeSurfaceScope

func (h *Host) RevokeSurfaceScope(ctx context.Context, req RevokeSurfaceScopeRequest) (int, error)

func (*Host) RuntimeHealth

func (h *Host) RuntimeHealth(ctx context.Context) (runtimeclient.Health, error)

func (*Host) StartRuntime

func (h *Host) StartRuntime(ctx context.Context, req StartRuntimeRequest) (runtimeclient.Health, error)

func (*Host) StopRuntime

func (h *Host) StopRuntime(ctx context.Context) error

func (*Host) TestSecretRef

func (h *Host) TestSecretRef(ctx context.Context, req SecretTestRequest) error

func (*Host) UninstallPlugin

func (h *Host) UninstallPlugin(ctx context.Context, req UninstallRequest) (registry.PluginRecord, error)

func (*Host) UpdateLocalPackage

func (h *Host) UpdateLocalPackage(ctx context.Context, req UpdateLocalPackageRequest) (registry.PluginRecord, error)

func (*Host) UpdateReleaseRef

func (h *Host) UpdateReleaseRef(ctx context.Context, req UpdateReleaseRefRequest) (registry.PluginRecord, error)

type HostCapabilityContractRef

type HostCapabilityContractRef struct {
	ContractID            string `json:"contract_id"`
	ContractVersion       string `json:"contract_version"`
	ArtifactRef           string `json:"artifact_ref"`
	ArtifactSHA256        string `json:"artifact_sha256"`
	ManifestSHA256        string `json:"manifest_sha256"`
	SignatureRef          string `json:"signature_ref"`
	SignatureSHA256       string `json:"signature_sha256"`
	SignatureKeyID        string `json:"signature_key_id"`
	CompatibilitySHA256   string `json:"compatibility_sha256"`
	GeneratedClientSHA256 string `json:"generated_client_sha256"`
	NoticesSHA256         string `json:"notices_sha256"`
}

type HostCapabilityRequirement

type HostCapabilityRequirement struct {
	CapabilityID      string                    `json:"capability_id"`
	CapabilityVersion string                    `json:"capability_version"`
	Contract          HostCapabilityContractRef `json:"contract"`
}

type HostRequirement

type HostRequirement struct {
	HostID                      string                      `json:"host_id"`
	MinHostVersion              string                      `json:"min_host_version,omitempty"`
	RequiredCapabilityContracts []HostCapabilityRequirement `json:"required_capability_contracts,omitempty"`
}

type ImportDataRequest

type ImportDataRequest struct {
	PluginInstanceID   string
	ArchiveRef         string
	SettingsArchiveRef string
	DeleteExisting     bool
}

type ImportLocalPackageRequest

type ImportLocalPackageRequest struct {
	PackageReader      io.ReaderAt
	PackageSize        int64
	PluginInstanceID   string
	PluginStateVersion uint64
	Now                time.Time
}

type InstallReleaseRefRequest

type InstallReleaseRefRequest struct {
	ReleaseRef         PluginReleaseRef
	PluginInstanceID   string
	PluginStateVersion uint64
	Now                time.Time
}

type IntentRecord

type IntentRecord struct {
	PluginID          string         `json:"plugin_id"`
	PluginInstanceID  string         `json:"plugin_instance_id"`
	PublisherID       string         `json:"publisher_id"`
	DisplayName       string         `json:"display_name"`
	Version           string         `json:"version"`
	ActiveFingerprint string         `json:"active_fingerprint"`
	IntentID          string         `json:"intent_id"`
	Method            string         `json:"method"`
	Effect            string         `json:"effect"`
	Execution         string         `json:"execution"`
	PayloadSchema     map[string]any `json:"payload_schema,omitempty"`
}

type InvokeIntentRequest

type InvokeIntentRequest struct {
	PluginInstanceID     string         `json:"plugin_instance_id,omitempty"`
	IntentID             string         `json:"intent_id"`
	Params               map[string]any `json:"params,omitempty"`
	OwnerSessionHash     string         `json:"owner_session_hash,omitempty"`
	OwnerUserHash        string         `json:"owner_user_hash,omitempty"`
	SessionChannelIDHash string         `json:"session_channel_id_hash,omitempty"`
	Now                  time.Time      `json:"now,omitempty"`
}

type ListAuditEventsRequest

type ListAuditEventsRequest = observability.ListAuditRequest

type ListDiagnosticEventsRequest

type ListDiagnosticEventsRequest = observability.ListDiagnosticRequest

type ListIntentsRequest

type ListIntentsRequest struct {
	IntentID         string `json:"intent_id,omitempty"`
	PluginInstanceID string `json:"plugin_instance_id,omitempty"`
}

type ListOperationsRequest

type ListOperationsRequest struct {
	PluginInstanceID string `json:"plugin_instance_id,omitempty"`
}

type ListPermissionGrantsRequest

type ListPermissionGrantsRequest struct {
	PluginInstanceID string `json:"plugin_instance_id,omitempty"`
	ActiveOnly       bool   `json:"active_only,omitempty"`
}

type ListRetainedDataRequest

type ListRetainedDataRequest = retaineddata.ListRequest

type MintBridgeTokenRequest

type MintBridgeTokenRequest struct {
	Handshake                 bridge.Handshake
	BridgeChannelID           string
	HandshakeTranscriptSHA256 string
	PreviousGatewayToken      string
	OwnerSessionHash          string
	OwnerUserHash             string
	SessionChannelIDHash      string
	Now                       time.Time
}

type MintConnectionGrantRequest

type MintConnectionGrantRequest struct {
	PluginInstanceID    string                 `json:"plugin_instance_id"`
	ConnectorID         string                 `json:"connector_id"`
	Transport           connectivity.Transport `json:"transport"`
	Destination         string                 `json:"destination"`
	RuntimeInstanceID   string                 `json:"runtime_instance_id,omitempty"`
	RuntimeGenerationID string                 `json:"runtime_generation_id,omitempty"`
	RuntimeShardID      string                 `json:"runtime_shard_id,omitempty"`
	Now                 time.Time              `json:"now,omitempty"`
	TTL                 time.Duration          `json:"ttl,omitempty"`
}

type MintStorageHandleGrantRequest

type MintStorageHandleGrantRequest struct {
	PluginInstanceID    string        `json:"plugin_instance_id"`
	StoreID             string        `json:"store_id"`
	RuntimeInstanceID   string        `json:"runtime_instance_id,omitempty"`
	RuntimeGenerationID string        `json:"runtime_generation_id"`
	RuntimeShardID      string        `json:"runtime_shard_id,omitempty"`
	Now                 time.Time     `json:"now,omitempty"`
	TTL                 time.Duration `json:"ttl,omitempty"`
}

type NetworkHandleGrantResult

type NetworkHandleGrantResult struct {
	ConnectionGrant connectivity.ConnectionGrant `json:"connection_grant"`
	HandleGrant     bridge.HandleGrantResult     `json:"handle_grant"`
}

type OpenSurfaceRequest

type OpenSurfaceRequest struct {
	PluginInstanceID     string
	PluginStateVersion   uint64
	SurfaceID            string
	SurfaceInstanceID    string
	OwnerSessionHash     string
	OwnerUserHash        string
	SessionChannelIDHash string
	Now                  time.Time
}

type OperationCancelAdapterRequest

type OperationCancelAdapterRequest struct {
	OperationID          string    `json:"operation_id"`
	PluginID             string    `json:"plugin_id"`
	PluginInstanceID     string    `json:"plugin_instance_id"`
	Method               string    `json:"method"`
	Effect               string    `json:"effect,omitempty"`
	Execution            string    `json:"execution"`
	SurfaceInstanceID    string    `json:"surface_instance_id,omitempty"`
	SessionChannelIDHash string    `json:"session_channel_id_hash,omitempty"`
	BridgeChannelID      string    `json:"bridge_channel_id,omitempty"`
	Reason               string    `json:"reason,omitempty"`
	RequestedAt          time.Time `json:"requested_at"`
}

type OperationCanceler

type OperationCanceler interface {
	RequestOperationCancel(ctx context.Context, req OperationCancelAdapterRequest) error
}

type PackageDistribution

type PackageDistribution string
const (
	PackageDistributionRegistryRef     PackageDistribution = "registry_ref"
	PackageDistributionHostArtifactRef PackageDistribution = "host_artifact_ref"
	PackageDistributionLocalImport     PackageDistribution = "local_import"
)

type PackageDistributionRef

type PackageDistributionRef struct {
	Distribution PackageDistribution `json:"distribution"`
	ArtifactRef  string              `json:"artifact_ref,omitempty"`
	ImportID     string              `json:"import_id,omitempty"`
}

type PackageDowngradePolicy

type PackageDowngradePolicy string
const (
	PackageDowngradeBlock          PackageDowngradePolicy = "block"
	PackageDowngradeReviewRequired PackageDowngradePolicy = "review_required"
)

type PackageHashSet

type PackageHashSet struct {
	PackageSHA256  string `json:"package_sha256"`
	ManifestSHA256 string `json:"manifest_sha256"`
	EntriesSHA256  string `json:"entries_sha256"`
}

type PackageInstallPolicy

type PackageInstallPolicy string
const (
	PackageInstallAllow          PackageInstallPolicy = "allow"
	PackageInstallReviewRequired PackageInstallPolicy = "review_required"
	PackageInstallBlock          PackageInstallPolicy = "block"
)

type PackageReleaseSignature

type PackageReleaseSignature struct {
	Algorithm          string `json:"algorithm"`
	KeyID              string `json:"key_id"`
	SignatureBundleRef string `json:"signature_bundle_ref"`
	SourcePolicyEpoch  string `json:"source_policy_epoch"`
	RevocationEpoch    string `json:"revocation_epoch"`
}

type PackageSourceClass

type PackageSourceClass string
const (
	PackageSourceClassOfficial  PackageSourceClass = "official"
	PackageSourceClassCurated   PackageSourceClass = "curated"
	PackageSourceClassCommunity PackageSourceClass = "community"
	PackageSourceClassPrivate   PackageSourceClass = "private"
)

type PackageSourceType

type PackageSourceType string
const (
	PackageSourceRegistry     PackageSourceType = "registry"
	PackageSourceHostArtifact PackageSourceType = "host_artifact"
)

type PackageTrustAction

type PackageTrustAction string
const (
	PackageTrustActionInstall PackageTrustAction = "install"
	PackageTrustActionUpdate  PackageTrustAction = "update"
)

type PackageTrustVerificationRequest

type PackageTrustVerificationRequest struct {
	Action               PackageTrustAction     `json:"action"`
	Package              pluginpkg.Package      `json:"package"`
	LocalImport          bool                   `json:"local_import,omitempty"`
	ReleaseRef           *PluginReleaseRef      `json:"release_ref,omitempty"`
	Release              *PluginPackageRelease  `json:"release,omitempty"`
	SourcePolicySnapshot *SourcePolicySnapshot  `json:"source_policy_snapshot,omitempty"`
	CurrentRecord        *registry.PluginRecord `json:"current_record,omitempty"`
	PluginInstanceID     string                 `json:"plugin_instance_id,omitempty"`
	Now                  time.Time              `json:"now,omitempty"`
}

type PackageTrustVerificationResult

type PackageTrustVerificationResult = registry.TrustAssessment

type PackageTrustVerifier

type PackageTrustVerifier interface {
	VerifyPackageTrust(ctx context.Context, req PackageTrustVerificationRequest) (PackageTrustVerificationResult, error)
}

PackageTrustVerifier is the install/update trust decision boundary. Runnable trust states must come from this verifier or the release/local import provenance handled by Host core.

type PackageUnsignedPolicy

type PackageUnsignedPolicy string
const (
	PackageUnsignedDevOnly        PackageUnsignedPolicy = "dev_only"
	PackageUnsignedReviewRequired PackageUnsignedPolicy = "review_required"
	PackageUnsignedBlock          PackageUnsignedPolicy = "block"
)

type PatchSettingsRequest

type PatchSettingsRequest struct {
	PluginInstanceID string         `json:"plugin_instance_id"`
	Values           map[string]any `json:"values"`
	Now              time.Time      `json:"now,omitempty"`
}

type PluginPackageRelease

type PluginPackageRelease struct {
	SourceID                 string                    `json:"source_id"`
	PublisherID              string                    `json:"publisher_id"`
	PluginID                 string                    `json:"plugin_id"`
	Version                  string                    `json:"version"`
	DistributionRef          PackageDistributionRef    `json:"distribution_ref"`
	ReleaseMetadataSHA256    string                    `json:"release_metadata_sha256"`
	ReleaseMetadataSignature *ReleaseMetadataSignature `json:"release_metadata_signature,omitempty"`
	Hashes                   PackageHashSet            `json:"hashes"`
	PackageSignature         *PackageReleaseSignature  `json:"package_signature,omitempty"`
	Compatibility            *ReleaseCompatibility     `json:"compatibility,omitempty"`
	HostRequirements         []HostRequirement         `json:"host_requirements,omitempty"`
	ReleaseEvidence          *ReleaseEvidence          `json:"release_evidence,omitempty"`
	Metadata                 map[string]string         `json:"metadata,omitempty"`
}

type PluginRef

type PluginRef struct {
	PluginID          string `json:"plugin_id"`
	PluginInstanceID  string `json:"plugin_instance_id"`
	Version           string `json:"version"`
	ActiveFingerprint string `json:"active_fingerprint"`
}

type PluginReleaseRef

type PluginReleaseRef struct {
	SourceID              string         `json:"source_id"`
	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"`
	ExpectedHashes        PackageHashSet `json:"expected_hashes"`
}

type PolicyAdapter

type PolicyAdapter interface {
	EvaluateLocalPolicy(ctx context.Context, session sessionctx.Context, plugin PluginRef, method manifest.MethodSpec) (PolicyDecision, error)
	DeveloperModeEnabled(ctx context.Context, session sessionctx.Context) (bool, error)
	LocalGeneratedPluginsEnabled(ctx context.Context, session sessionctx.Context) (bool, error)
}

type PolicyDecision

type PolicyDecision string
const (
	PolicyAllow PolicyDecision = "allow"
	PolicyDeny  PolicyDecision = "deny"
)

type PrepareSurfaceResult

type PrepareSurfaceResult struct {
	bridge.AssetSessionResult
	Document pluginpkg.OpaqueSurfaceDocument `json:"document"`
}

type PutSecurityPolicyRequest

type PutSecurityPolicyRequest struct {
	PluginInstanceID   string    `json:"plugin_instance_id"`
	AllowedPermissions []string  `json:"allowed_permissions,omitempty"`
	DeniedMethods      []string  `json:"denied_methods,omitempty"`
	Now                time.Time `json:"now,omitempty"`
}

type ReadStreamRequest

type ReadStreamRequest struct {
	StreamID             string `json:"stream_id"`
	StreamTicket         string `json:"stream_ticket,omitempty"`
	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"`
	MaxEvents            int    `json:"max_events,omitempty"`
	MaxBytes             int64  `json:"max_bytes,omitempty"`
	Now                  time.Time
}

type ReadStreamResult

type ReadStreamResult struct {
	Record stream.Record  `json:"record"`
	Events []stream.Event `json:"events,omitempty"`
}

type ReadSurfaceAssetRequest

type ReadSurfaceAssetRequest struct {
	AssetSession         string
	AssetSessionID       string
	BindingID            string
	OwnerSessionHash     string
	OwnerUserHash        string
	SessionChannelIDHash string
	Now                  time.Time
}

type ReadSurfaceAssetResult

type ReadSurfaceAssetResult struct {
	Entry   pluginpkg.Entry
	Content []byte
	Session bridge.SurfaceSession
}

type ReleaseArtifactResolveRequest

type ReleaseArtifactResolveRequest struct {
	Action               PackageTrustAction     `json:"action"`
	ReleaseRef           PluginReleaseRef       `json:"release_ref"`
	SourcePolicySnapshot SourcePolicySnapshot   `json:"source_policy_snapshot"`
	CurrentRecord        *registry.PluginRecord `json:"current_record,omitempty"`
	PluginInstanceID     string                 `json:"plugin_instance_id,omitempty"`
	Now                  time.Time              `json:"now,omitempty"`
}

type ReleaseArtifactResolver

type ReleaseArtifactResolver interface {
	ResolveReleaseArtifact(ctx context.Context, req ReleaseArtifactResolveRequest) (ResolvedPackageArtifact, error)
}

type ReleaseCompatibility

type ReleaseCompatibility struct {
	MinReDevPluginVersion string   `json:"min_redevplugin_version,omitempty"`
	MinRuntimeVersion     string   `json:"min_runtime_version,omitempty"`
	UIProtocolVersion     string   `json:"ui_protocol_version,omitempty"`
	SupportedTargets      []string `json:"supported_targets,omitempty"`
}

type ReleaseEvidence

type ReleaseEvidence struct {
	NoticesSHA256    string `json:"notices_sha256,omitempty"`
	ProvenanceSHA256 string `json:"provenance_sha256,omitempty"`
	GeneratedAt      string `json:"generated_at,omitempty"`
}

type ReleaseMetadataSignature

type ReleaseMetadataSignature struct {
	Algorithm         string `json:"algorithm"`
	KeyID             string `json:"key_id"`
	SignatureRef      string `json:"signature_ref"`
	SourcePolicyEpoch string `json:"source_policy_epoch"`
	RevocationEpoch   string `json:"revocation_epoch"`
}

type ReleaseMetadataVerificationRequest

type ReleaseMetadataVerificationRequest struct {
	Action                   PackageTrustAction     `json:"action"`
	ReleaseRef               PluginReleaseRef       `json:"release_ref"`
	Release                  PluginPackageRelease   `json:"release"`
	SourcePolicySnapshot     SourcePolicySnapshot   `json:"source_policy_snapshot"`
	ReleaseMetadataBytes     []byte                 `json:"-"`
	ReleaseMetadataSignature []byte                 `json:"-"`
	CurrentRecord            *registry.PluginRecord `json:"current_record,omitempty"`
	PluginInstanceID         string                 `json:"plugin_instance_id,omitempty"`
	Now                      time.Time              `json:"now,omitempty"`
}

type ReleaseMetadataVerificationResult

type ReleaseMetadataVerificationResult struct {
	Metadata map[string]string `json:"metadata,omitempty"`
}

type ReleaseMetadataVerifier

type ReleaseMetadataVerifier interface {
	VerifyReleaseMetadata(ctx context.Context, req ReleaseMetadataVerificationRequest) (ReleaseMetadataVerificationResult, error)
}

type ReleaseSourcePolicyRequest

type ReleaseSourcePolicyRequest struct {
	Action           PackageTrustAction     `json:"action"`
	ReleaseRef       PluginReleaseRef       `json:"release_ref"`
	CurrentRecord    *registry.PluginRecord `json:"current_record,omitempty"`
	PluginInstanceID string                 `json:"plugin_instance_id,omitempty"`
	Now              time.Time              `json:"now,omitempty"`
}

type ReleaseSourcePolicyResolver

type ReleaseSourcePolicyResolver interface {
	ResolveReleaseSourcePolicy(ctx context.Context, req ReleaseSourcePolicyRequest) (SourcePolicySnapshot, error)
}

type ResolvedPackageArtifact

type ResolvedPackageArtifact struct {
	ReleaseMetadataBytes     []byte      `json:"-"`
	ReleaseMetadataSignature []byte      `json:"-"`
	Reader                   io.ReaderAt `json:"-"`
	Size                     int64       `json:"size"`
}

type RetainedDataCleanupResult

type RetainedDataCleanupResult struct {
	Deleted []retaineddata.Record `json:"deleted,omitempty"`
	Failed  []retaineddata.Record `json:"failed,omitempty"`
}

type RevokePermissionRequest

type RevokePermissionRequest struct {
	PluginInstanceID string    `json:"plugin_instance_id"`
	PermissionID     string    `json:"permission_id"`
	RevokedBy        string    `json:"revoked_by,omitempty"`
	Reason           string    `json:"reason,omitempty"`
	Now              time.Time `json:"now,omitempty"`
}

type RevokeSurfaceScopeRequest

type RevokeSurfaceScopeRequest struct {
	OwnerSessionHash     string
	OwnerUserHash        string
	SessionChannelIDHash string
	Now                  time.Time
}

type RuntimeArtifactResolver

type RuntimeArtifactResolver interface {
	RuntimePath(ctx context.Context, target RuntimeTarget) (string, error)
}

type RuntimeTarget

type RuntimeTarget struct {
	OS   string `json:"os"`
	Arch string `json:"arch"`
}

type SecretBindRequest

type SecretBindRequest = secrets.BindRequest

type SecretDeleteRequest

type SecretDeleteRequest = secrets.DeleteRequest

type SecretStoreAdapter

type SecretStoreAdapter = secrets.Store

type SecretTestRequest

type SecretTestRequest = secrets.TestRequest

type SettingsResult

type SettingsResult struct {
	PluginInstanceID string         `json:"plugin_instance_id"`
	SchemaVersion    int            `json:"schema_version"`
	SettingsRevision uint64         `json:"settings_revision"`
	Values           map[string]any `json:"values"`
	UpdatedAt        time.Time      `json:"updated_at"`
}

type SettingsSchemaResult

type SettingsSchemaResult struct {
	PluginInstanceID string                      `json:"plugin_instance_id"`
	SchemaVersion    int                         `json:"schema_version"`
	Migration        manifest.MigrationSpec      `json:"migration"`
	Fields           []manifest.SettingFieldSpec `json:"fields"`
	SettingsRevision uint64                      `json:"settings_revision"`
}

type SourcePolicyRevocationEvidence

type SourcePolicyRevocationEvidence struct {
	MetadataRef      string `json:"metadata_ref"`
	MetadataSHA256   string `json:"metadata_sha256"`
	SignatureRef     string `json:"signature_ref"`
	SignatureKeyID   string `json:"signature_key_id"`
	VerifiedAt       string `json:"verified_at"`
	ExpiresAt        string `json:"expires_at"`
	HighestSeenEpoch string `json:"highest_seen_epoch"`
	MetadataBytes    []byte `json:"-"`
	SignatureBytes   []byte `json:"-"`
}

type SourcePolicySnapshot

type SourcePolicySnapshot struct {
	SchemaVersion      string                          `json:"schema_version"`
	SourceID           string                          `json:"source_id"`
	SourceType         PackageSourceType               `json:"source_type"`
	SourceClass        PackageSourceClass              `json:"source_class,omitempty"`
	AllowedPublishers  []string                        `json:"allowed_publishers,omitempty"`
	TrustedKeyIDs      []string                        `json:"trusted_key_ids,omitempty"`
	TrustedKeys        []SourcePolicyTrustedKey        `json:"trusted_keys,omitempty"`
	RevocationEvidence *SourcePolicyRevocationEvidence `json:"revocation_evidence,omitempty"`
	RequireSignature   bool                            `json:"require_signature,omitempty"`
	InstallPolicy      PackageInstallPolicy            `json:"install_policy,omitempty"`
	UnsignedPolicy     PackageUnsignedPolicy           `json:"unsigned_policy,omitempty"`
	DowngradePolicy    PackageDowngradePolicy          `json:"downgrade_policy,omitempty"`
	PolicyEpoch        string                          `json:"policy_epoch,omitempty"`
	KeyRotationEpoch   string                          `json:"key_rotation_epoch,omitempty"`
	RevocationEpoch    string                          `json:"revocation_epoch,omitempty"`
	AssessedAt         string                          `json:"assessed_at,omitempty"`
	Metadata           map[string]string               `json:"metadata,omitempty"`
}

type SourcePolicyTrustedKey

type SourcePolicyTrustedKey struct {
	Algorithm       string   `json:"algorithm"`
	KeyID           string   `json:"key_id"`
	PublicKeySHA256 string   `json:"public_key_sha256"`
	Usage           []string `json:"usage"`
	ValidFrom       string   `json:"valid_from,omitempty"`
	ValidUntil      string   `json:"valid_until,omitempty"`
	RevocationEpoch string   `json:"revocation_epoch,omitempty"`
}

type SourceRevocationEvidenceVerificationRequest

type SourceRevocationEvidenceVerificationRequest struct {
	ReleaseRef                  PluginReleaseRef               `json:"release_ref"`
	SourcePolicySnapshot        SourcePolicySnapshot           `json:"source_policy_snapshot"`
	RevocationEvidence          SourcePolicyRevocationEvidence `json:"revocation_evidence"`
	RevocationMetadata          SourceRevocationMetadata       `json:"revocation_metadata"`
	RevocationMetadataBytes     []byte                         `json:"-"`
	RevocationMetadataSignature []byte                         `json:"-"`
	Now                         time.Time                      `json:"now,omitempty"`
}

type SourceRevocationEvidenceVerificationResult

type SourceRevocationEvidenceVerificationResult struct {
	Metadata map[string]string `json:"metadata,omitempty"`
}

type SourceRevocationEvidenceVerifier

type SourceRevocationEvidenceVerifier interface {
	VerifySourceRevocationEvidence(ctx context.Context, req SourceRevocationEvidenceVerificationRequest) (SourceRevocationEvidenceVerificationResult, error)
}

type SourceRevocationMetadata

type SourceRevocationMetadata struct {
	SchemaVersion    string   `json:"schema_version"`
	SourceID         string   `json:"source_id"`
	HighestSeenEpoch string   `json:"highest_seen_epoch"`
	GeneratedAt      string   `json:"generated_at"`
	ExpiresAt        string   `json:"expires_at"`
	RevokedKeyIDs    []string `json:"revoked_key_ids,omitempty"`
}

type StartRuntimeRequest

type StartRuntimeRequest struct {
	Target RuntimeTarget `json:"target,omitempty"`
}

type StorageHandleGrantResult

type StorageHandleGrantResult struct {
	Namespace   storage.Namespace        `json:"namespace"`
	HandleGrant bridge.HandleGrantResult `json:"handle_grant"`
}

type SurfaceCatalogSink

type SurfaceCatalogSink interface {
	PublishSurfaces(ctx context.Context, snapshot SurfaceSnapshot) error
}

type SurfaceSnapshot

type SurfaceSnapshot struct {
	PluginInstanceID  string                 `json:"plugin_instance_id"`
	ActiveFingerprint string                 `json:"active_fingerprint"`
	Surfaces          []manifest.SurfaceSpec `json:"surfaces"`
}

type UninstallRequest

type UninstallRequest struct {
	PluginInstanceID   string
	PluginStateVersion uint64
	DeleteData         bool
	Now                time.Time
}

type UpdateLocalPackageRequest

type UpdateLocalPackageRequest struct {
	PluginInstanceID   string
	PluginStateVersion uint64
	PackageReader      io.ReaderAt
	PackageSize        int64
	Now                time.Time
}

type UpdateReleaseRefRequest

type UpdateReleaseRefRequest struct {
	PluginInstanceID   string
	PluginStateVersion uint64
	ReleaseRef         PluginReleaseRef
	Now                time.Time
}

type WorkerInvocationPayload

type WorkerInvocationPayload struct {
	PluginID             string         `json:"plugin_id"`
	PluginInstanceID     string         `json:"plugin_instance_id"`
	ActiveFingerprint    string         `json:"active_fingerprint"`
	RuntimeInstanceID    string         `json:"runtime_instance_id"`
	RuntimeGenerationID  string         `json:"runtime_generation_id"`
	PackageHash          string         `json:"package_hash"`
	WorkerID             string         `json:"worker_id"`
	WorkerMode           string         `json:"worker_mode"`
	WorkerScope          string         `json:"worker_scope"`
	Artifact             string         `json:"artifact"`
	ArtifactSHA256       string         `json:"artifact_sha256"`
	ABI                  string         `json:"abi"`
	Method               string         `json:"method"`
	Export               string         `json:"export"`
	Effect               string         `json:"effect"`
	Execution            string         `json:"execution"`
	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"`
	Params               map[string]any `json:"params"`
}

Jump to

Keyboard shortcuts

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