operation

package
v0.6.10 Latest Latest
Warning

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

Go to latest
Published: Jul 23, 2026 License: MIT Imports: 17 Imported by: 0

Documentation

Index

Constants

View Source
const (
	DisableBehaviorCancel = "cancel"
	DisableBehaviorOrphan = "orphan"
	DisableBehaviorWait   = "wait"

	UninstallBehaviorCancelThenBlockDelete = "cancel_then_block_delete"
	UninstallBehaviorForceCleanupAllowed   = "force_cleanup_allowed"

	DefaultListLimit                   = 100
	MaxListLimit                       = 500
	DefaultPruneLimit                  = 500
	MaxPruneLimit                      = 5000
	DefaultMaxTerminalRecordsPerPlugin = 1000
	MaxTerminalRecordsPerPlugin        = 100_000

	DefaultTerminalRetention = 7 * 24 * time.Hour
	SessionRevokedReason     = "session revoked"
)

Variables

View Source
var (
	ErrNotFound         = errors.New("operation not found")
	ErrInvalidOperation = errors.New("operation is invalid")
	ErrAlreadyExists    = errors.New("operation already exists")
	ErrDeleteBlocked    = errors.New("operation blocks data deletion")
	ErrNotCancelable    = errors.New("operation is not cancelable")
)

Functions

func EncodeCursor added in v0.5.0

func EncodeCursor(cursor *Cursor) (string, error)

Types

type CancelRequest

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

type Cursor added in v0.5.0

type Cursor struct {
	CreatedAt   time.Time
	OperationID string
}

func DecodeCursor added in v0.5.0

func DecodeCursor(value string) (*Cursor, error)

type FinishRequest

type FinishRequest struct {
	OperationID string                          `json:"operation_id"`
	Status      Status                          `json:"status"`
	FailureCode capability.ExecutionFailureCode `json:"failure_code,omitempty"`
	Reason      string                          `json:"reason,omitempty"`
	Now         time.Time                       `json:"-"`
}

type ListRequest

type ListRequest struct {
	PluginInstanceID string `json:"plugin_instance_id,omitempty"`
	Cursor           *Cursor
	Limit            int        `json:"limit"`
	Owner            OwnerScope `json:"-"`
	AllOwners        bool       `json:"-"`
}

type MemoryStore

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

func NewMemoryStore

func NewMemoryStore() *MemoryStore

func (*MemoryStore) Durable added in v0.6.0

func (*MemoryStore) Durable() bool

func (*MemoryStore) Finish

func (s *MemoryStore) Finish(_ context.Context, req FinishRequest) (Record, error)

func (*MemoryStore) Get

func (s *MemoryStore) Get(_ context.Context, operationID string) (Record, error)

func (*MemoryStore) List

func (s *MemoryStore) List(_ context.Context, req ListRequest) (Page, error)

func (*MemoryStore) MarkPluginDisabled

func (s *MemoryStore) MarkPluginDisabled(_ context.Context, req PluginTransitionRequest) ([]Record, error)

func (*MemoryStore) MarkPluginUninstalled

func (s *MemoryStore) MarkPluginUninstalled(_ context.Context, req PluginTransitionRequest) ([]Record, error)

func (*MemoryStore) Prune added in v0.5.0

func (*MemoryStore) Register

func (s *MemoryStore) Register(_ context.Context, req RegisterRequest) (Record, error)

func (*MemoryStore) RequestCancel

func (s *MemoryStore) RequestCancel(_ context.Context, req CancelRequest) (Record, error)

func (*MemoryStore) RevokeSessionScope added in v0.6.0

type OwnerScope added in v0.5.0

type OwnerScope = capability.ExecutionOwnerScope

type Page added in v0.5.0

type Page struct {
	Records    []Record
	NextCursor *Cursor
}

type PluginTransitionRequest

type PluginTransitionRequest struct {
	PluginInstanceID string                   `json:"plugin_instance_id"`
	ResourceScope    sessionctx.ResourceScope `json:"-"`
	Reason           string                   `json:"reason,omitempty"`
	Now              time.Time                `json:"-"`
}

type PruneRequest added in v0.5.0

type PruneRequest struct {
	Before                      time.Time `json:"before"`
	Limit                       int       `json:"limit,omitempty"`
	MaxTerminalRecordsPerPlugin int       `json:"max_terminal_records_per_plugin,omitempty"`
}

type PruneResult added in v0.5.0

type PruneResult struct {
	Deleted int `json:"deleted"`
}

type Record

type Record struct {
	OperationID string `json:"operation_id"`
	capability.ExecutionBinding
	Status             Status                          `json:"status"`
	Cancelable         bool                            `json:"cancelable"`
	CancelAckTimeoutMS int                             `json:"cancel_ack_timeout_ms,omitempty"`
	DisableBehavior    string                          `json:"disable_behavior,omitempty"`
	UninstallBehavior  string                          `json:"uninstall_behavior,omitempty"`
	FailureCode        capability.ExecutionFailureCode `json:"failure_code,omitempty"`
	Reason             string                          `json:"reason,omitempty"`
	CreatedAt          time.Time                       `json:"created_at"`
	UpdatedAt          time.Time                       `json:"updated_at"`
	CancelRequestedAt  *time.Time                      `json:"cancel_requested_at,omitempty"`
	OrphanedAt         *time.Time                      `json:"orphaned_at,omitempty"`
	TerminalAt         *time.Time                      `json:"terminal_at,omitempty"`
}

type RegisterRequest

type RegisterRequest struct {
	OperationID        string                      `json:"operation_id"`
	ExecutionBinding   capability.ExecutionBinding `json:"execution_binding"`
	Cancelable         *bool                       `json:"cancelable,omitempty"`
	CancelAckTimeoutMS int                         `json:"cancel_ack_timeout_ms,omitempty"`
	DisableBehavior    string                      `json:"disable_behavior,omitempty"`
	UninstallBehavior  string                      `json:"uninstall_behavior,omitempty"`
	Now                time.Time                   `json:"-"`
}

type RevokeSessionScopeRequest added in v0.6.0

type RevokeSessionScopeRequest struct {
	SessionScope sessionctx.SessionScope `json:"-"`
	Now          time.Time               `json:"-"`
}

type RevokeSessionScopeResult added in v0.6.0

type RevokeSessionScopeResult struct {
	Revoked int `json:"revoked"`
}

type SQLiteStore

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

func NewSQLiteStore

func NewSQLiteStore(ctx context.Context, path string) (*SQLiteStore, error)

func (*SQLiteStore) Close

func (s *SQLiteStore) Close() error

func (*SQLiteStore) Durable added in v0.6.0

func (*SQLiteStore) Durable() bool

func (*SQLiteStore) Finish

func (s *SQLiteStore) Finish(ctx context.Context, req FinishRequest) (Record, error)

func (*SQLiteStore) Get

func (s *SQLiteStore) Get(ctx context.Context, operationID string) (Record, error)

func (*SQLiteStore) List

func (s *SQLiteStore) List(ctx context.Context, req ListRequest) (Page, error)

func (*SQLiteStore) MarkPluginDisabled

func (s *SQLiteStore) MarkPluginDisabled(ctx context.Context, req PluginTransitionRequest) ([]Record, error)

func (*SQLiteStore) MarkPluginUninstalled

func (s *SQLiteStore) MarkPluginUninstalled(ctx context.Context, req PluginTransitionRequest) ([]Record, error)

func (*SQLiteStore) Prune added in v0.5.0

func (s *SQLiteStore) Prune(ctx context.Context, req PruneRequest) (PruneResult, error)

func (*SQLiteStore) Register

func (s *SQLiteStore) Register(ctx context.Context, req RegisterRequest) (Record, error)

func (*SQLiteStore) RequestCancel

func (s *SQLiteStore) RequestCancel(ctx context.Context, req CancelRequest) (Record, error)

func (*SQLiteStore) RevokeSessionScope added in v0.6.0

type Status

type Status string
const (
	StatusRunning                Status = "running"
	StatusCancelRequested        Status = "cancel_requested"
	StatusCanceled               Status = "canceled"
	StatusCompleted              Status = "completed"
	StatusFailed                 Status = "failed"
	StatusOrphanedAfterDisable   Status = "orphaned_after_disable"
	StatusOrphanedAfterUninstall Status = "orphaned_after_uninstall"
)

type Store

type Store interface {
	Durable() bool
	Register(ctx context.Context, req RegisterRequest) (Record, error)
	List(ctx context.Context, req ListRequest) (Page, error)
	Get(ctx context.Context, operationID string) (Record, error)
	RequestCancel(ctx context.Context, req CancelRequest) (Record, error)
	Finish(ctx context.Context, req FinishRequest) (Record, error)
	MarkPluginDisabled(ctx context.Context, req PluginTransitionRequest) ([]Record, error)
	MarkPluginUninstalled(ctx context.Context, req PluginTransitionRequest) ([]Record, error)
	RevokeSessionScope(ctx context.Context, req RevokeSessionScopeRequest) (RevokeSessionScopeResult, error)
	Prune(ctx context.Context, req PruneRequest) (PruneResult, error)
}

Jump to

Keyboard shortcuts

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