Versions in this module Expand all Collapse all v0 v0.1.2 Feb 26, 2026 v0.1.1 Feb 25, 2026 v0.1.0 Feb 25, 2026 Changes in this version + const DefaultOutputBufferSize + const DefaultStreamBufferSize + const InitialCols + const InitialRows + const ResizeTimeout + func RegisterPlugin(p *sdk.Plugin, opts PluginOpts) error + type ClientFactory interface + CreateClient func(ctx *types.PluginContext) (*ClientT, error) + RefreshClient func(ctx *types.PluginContext, client *ClientT) error + StartClient func(ctx *types.PluginContext, client *ClientT) error + StopClient func(ctx *types.PluginContext, client *ClientT) error + type CommandHandler func(ctx *types.PluginContext, opts SessionOptions) (stdout io.Reader, stderr io.Reader, err error) + type ExecError struct + Err error + Message string + RetryCommands []string + Retryable bool + Suggestion string + Title string + func (e *ExecError) Error() string + func (e *ExecError) Unwrap() error + type Handler struct + CommandHandler CommandHandler + DefaultCommand []string + HandlesResize bool + Plugin string + Resource string + TTYHandler TTYHandler + TargetBuilder sdkresource.ActionTargetBuilder + func HandlerFromProto(p *proto.ExecHandler) Handler + func (h Handler) ID() string + func (h Handler) String() string + func (h Handler) ToProto() *proto.ExecHandler + type Manager struct + func NewManager(log hclog.Logger, sp settings.Provider, handlers map[string]Handler) *Manager + func (m *Manager) AttachSession(_ *types.PluginContext, sessionID string) (*Session, []byte, error) + func (m *Manager) CloseSession(_ *types.PluginContext, sessionID string) error + func (m *Manager) CreateSession(pluginctx *types.PluginContext, opts SessionOptions) (*Session, error) + func (m *Manager) DetachSession(_ *types.PluginContext, sessionID string) (*Session, error) + func (m *Manager) GetSession(_ *types.PluginContext, sessionID string) (*Session, error) + func (m *Manager) GetSupportedResources(_ *types.PluginContext) []Handler + func (m *Manager) ListSessions(_ *types.PluginContext) ([]*Session, error) + func (m *Manager) ResizeSession(_ *types.PluginContext, sessionID string, rows, cols int32) error + func (m *Manager) Stream(ctx context.Context, in chan StreamInput) (chan StreamOutput, error) + type OutputBuffer struct + func NewDefaultOutputBuffer() *OutputBuffer + func NewOutputBuffer(capacity int) *OutputBuffer + func (b *OutputBuffer) Append(data []byte) + func (b *OutputBuffer) GetAll() []byte + type Plugin struct + Impl Provider + func (p *Plugin) GRPCClient(_ context.Context, _ *plugin.GRPCBroker, c *grpc.ClientConn) (interface{}, error) + func (p *Plugin) GRPCServer(_ *plugin.GRPCBroker, s *grpc.Server) error + type PluginClient struct + func (c *PluginClient) AttachSession(ctx *types.PluginContext, sessionID string) (*Session, []byte, error) + func (c *PluginClient) CloseSession(ctx *types.PluginContext, sessionID string) error + func (c *PluginClient) CreateSession(ctx *types.PluginContext, opts SessionOptions) (*Session, error) + func (c *PluginClient) DetachSession(ctx *types.PluginContext, sessionID string) (*Session, error) + func (c *PluginClient) GetSession(ctx *types.PluginContext, sessionID string) (*Session, error) + func (c *PluginClient) GetSupportedResources(ctx *types.PluginContext) []Handler + func (c *PluginClient) ListSessions(ctx *types.PluginContext) ([]*Session, error) + func (c *PluginClient) ResizeSession(ctx *types.PluginContext, sessionID string, cols, rows int32) error + func (c *PluginClient) Stream(ctx context.Context, in chan StreamInput) (chan StreamOutput, error) + type PluginOpts struct + Handlers []Handler + type PluginServer struct + Impl Provider + func (s *PluginServer) AttachSession(ctx context.Context, in *proto.AttachSessionRequest) (*proto.AttachSessionResponse, error) + func (s *PluginServer) CloseSession(ctx context.Context, in *proto.CloseSessionRequest) (*proto.CloseSessionResponse, error) + func (s *PluginServer) CreateSession(ctx context.Context, in *proto.SessionOptions) (*proto.CreateSessionResponse, error) + func (s *PluginServer) DetachSession(ctx context.Context, in *proto.AttachSessionRequest) (*proto.AttachSessionResponse, error) + func (s *PluginServer) GetSession(ctx context.Context, in *proto.GetSessionRequest) (*proto.GetSessionResponse, error) + func (s *PluginServer) GetSupportedResources(ctx context.Context, _ *emptypb.Empty) (*proto.GetSupportedResourcesResponse, error) + func (s *PluginServer) ListSessions(ctx context.Context, in *emptypb.Empty) (*proto.ListSessionsResponse, error) + func (s *PluginServer) ResizeSession(ctx context.Context, in *proto.ResizeSessionRequest) (*proto.ResizeSessionResponse, error) + func (s *PluginServer) Stream(stream proto.ExecPlugin_StreamServer) error + type Provider interface + AttachSession func(ctx *types.PluginContext, sessionID string) (*Session, []byte, error) + CloseSession func(ctx *types.PluginContext, sessionID string) error + CreateSession func(ctx *types.PluginContext, opts SessionOptions) (*Session, error) + DetachSession func(ctx *types.PluginContext, sessionID string) (*Session, error) + GetSession func(ctx *types.PluginContext, sessionID string) (*Session, error) + GetSupportedResources func(ctx *types.PluginContext) []Handler + ListSessions func(ctx *types.PluginContext) ([]*Session, error) + ResizeSession func(ctx *types.PluginContext, sessionID string, cols, rows int32) error + Stream func(context.Context, chan StreamInput) (chan StreamOutput, error) + type Session struct + Attached bool + Command []string + CreatedAt time.Time + ID string + Labels map[string]string + Params map[string]string + func NewSessionFromOpts(ctx context.Context, canceller context.CancelFunc, opts SessionOptions) *Session + func NewSessionFromProto(s *proto.Session) *Session + func (s *Session) Close() + func (s *Session) GetBufferData() []byte + func (s *Session) GetCanceller() context.CancelFunc + func (s *Session) GetPty() *os.File + func (s *Session) GetTty() *os.File + func (s *Session) RecordToBuffer(data []byte) + func (s *Session) SetPty(pty *os.File) + func (s *Session) SetTty(tty *os.File) + func (s *Session) ToProto() *proto.Session + func (s *Session) Write(data []byte) (int, error) + type SessionHandler func(ctx *types.PluginContext, opts SessionOptions) (stdin io.Writer, stdout io.Reader, stderr io.Reader, err error) + type SessionOptions struct + Command []string + ID string + Labels map[string]string + Params map[string]string + ResourceData map[string]interface{} + ResourceKey string + ResourcePlugin string + TTY bool + func NewSessionOptionsFromProto(opts *proto.SessionOptions) *SessionOptions + func (o *SessionOptions) ToProto() *proto.SessionOptions + type SessionResizeInput struct + Cols int32 + Rows int32 + type StreamError struct + Message string + RetryCommands []string + Retryable bool + Suggestion string + Title string + func NewStreamErrorFromProto(p *proto.StreamError) *StreamError + func (e *StreamError) ToProto() *proto.StreamError + type StreamInput struct + Data []byte + SessionID string + func NewStreamInputFromProto(p *proto.StreamInput) StreamInput + func (i *StreamInput) ToProto() *proto.StreamInput + type StreamOutput struct + Data []byte + Error *StreamError + SessionID string + Signal StreamSignal + Target StreamTarget + func NewStreamOutputFromProto(p *proto.StreamOutput) StreamOutput + func (o *StreamOutput) ToProto() *proto.StreamOutput + type StreamResize struct + Cols uint16 + Rows uint16 + SessionID string + func NewStreamResizeFromProto(p *proto.ResizeSessionRequest) StreamResize + func (r *StreamResize) ToProto() *proto.ResizeSessionRequest + type StreamSignal int + const StreamSignalClose + const StreamSignalError + const StreamSignalNone + const StreamSignalSighup + const StreamSignalSigint + const StreamSignalSigkill + const StreamSignalSigquit + const StreamSignalSigterm + const StreamSignalSigusr1 + const StreamSignalSigusr2 + const StreamSignalSigwinch + func NewStreamSignalFromProto(p proto.StreamSignal) StreamSignal + func (s StreamSignal) String() string + func (s StreamSignal) ToProto() proto.StreamSignal + type StreamTarget int + const StreamTargetStdErr + const StreamTargetStdOut + func (t StreamTarget) String() string + type TTYHandler func(ctx *types.PluginContext, opts SessionOptions, tty *os.File, stopCh chan error, ...) error