Documentation
¶
Index ¶
- Constants
- Variables
- func LoadPluginMarkdown(path string) (string, error)
- func LoadPluginMetadata(path string) (config.PluginMeta, error)
- func SerializePluginContext(pc *PluginContext) (string, error)
- func WithConnection(ctx context.Context, c *Connection) context.Context
- func WithPluginContext(ctx context.Context, pluginContext *PluginContext) context.Context
- type Capability
- type Connection
- func (c *Connection) GetData() map[string]any
- func (c *Connection) GetDataKey(key string) (any, bool)
- func (c *Connection) GetSensitiveData() map[string]any
- func (c *Connection) GetSensitiveDataKey(key string) (any, bool)
- func (c *Connection) IsAuthed() bool
- func (c *Connection) SetData(data map[string]any)
- func (c *Connection) SetDataKey(key string, value any)
- func (c *Connection) SetSensitiveData(data map[string]any)
- func (c *Connection) SetSensitiveDataKey(key string, value any)
- type ConnectionContext
- type ConnectionOpts
- type ConnectionStatus
- type ConnectionStatusCode
- type Plugin
- type PluginContext
- func DeserializePluginContext(data string) (*PluginContext, error)
- func NewPluginContext(ctx context.Context, requester string, pluginConfig settings.Provider, ...) *PluginContext
- func NewPluginContextFromCtx(ctx context.Context) *PluginContext
- func NewPluginContextWithConnection(ctx context.Context, requester string, pluginConfig settings.Provider, ...) *PluginContext
- func PluginContextFromContext(ctx context.Context) *PluginContext
- type PluginInfo
- type PluginType
- type RequestOptions
- type ResourceContext
- type VisualComponentList
- type VisualResourceComponent
Constants ¶
const ( DefaultTimeout = 10 * time.Second DefaultMaxRetries = 3 DefaultBackoffInterval = 1 * time.Second )
const (
ConnectionDefaultExpiryTime = time.Hour * 24
)
Variables ¶
var AllConnectionStatusCodes = []struct { Value ConnectionStatusCode TSName string }{ {ConnectionStatusUnknown, "UNKNOWN"}, {ConnectionStatusConnected, "CONNECTED"}, {ConnectionStatusDisconnected, "DISCONNECTED"}, {ConnectionStatusPending, "PENDING"}, {ConnectionStatusFailed, "FAILED"}, {ConnectionStatusError, "ERROR"}, {ConnectionStatusUnauthorized, "UNAUTHORIZED"}, {ConnectionStatusForbidden, "FORBIDDEN"}, {ConnectionStatusBadRequest, "BAD_REQUEST"}, {ConnectionStatusNotFound, "NOT_FOUND"}, {ConnectionStatusTimeout, "TIMEOUT"}, {ConnectionStatusUnavailable, "UNAVAILABLE"}, {ConnectionStatusRequestEntityTooLarge, "REQUEST_ENTITY_TOO_LARGE"}, }
AllConnectionStatusCodes is a list of all setting types. Necessary for Wails to bind the enums.
Functions ¶
func LoadPluginMarkdown ¶
LoadPluginMarkdown loads the plugin markdown from the filesystem.
func LoadPluginMetadata ¶
func LoadPluginMetadata(path string) (config.PluginMeta, error)
LoadPluginMetadata loads the metadata for a plugin from the given path.
func SerializePluginContext ¶
func SerializePluginContext(pc *PluginContext) (string, error)
SerializePluginContext serializes the PluginContext into a JSON string. Used to pass the context between the IDE and the plugin.
func WithConnection ¶
func WithConnection(ctx context.Context, c *Connection) context.Context
func WithPluginContext ¶
func WithPluginContext(ctx context.Context, pluginContext *PluginContext) context.Context
Types ¶
type Capability ¶ added in v0.1.1
type Capability string
Capability represents a plugin capability as a string type. Using strings allows direct matching with YAML/JSON config values and makes adding new capabilities non-breaking.
const ( CapabilityResource Capability = "resource" CapabilityExec Capability = "exec" CapabilityNetworker Capability = "networker" CapabilityLog Capability = "log" CapabilityMetric Capability = "metric" CapabilitySettings Capability = "settings" CapabilityUI Capability = "ui" )
func AllCapabilities ¶ added in v0.1.1
func AllCapabilities() []Capability
AllCapabilities returns all known capabilities.
func ParseCapability ¶ added in v0.1.1
func ParseCapability(s string) (Capability, bool)
ParseCapability converts a string to a Capability. Returns the Capability and true if valid, or empty and false if unknown.
func (Capability) IsBackend ¶ added in v0.1.1
func (c Capability) IsBackend() bool
IsBackend returns true if this capability requires a backend plugin process.
func (Capability) String ¶ added in v0.1.1
func (c Capability) String() string
String implements the Stringer interface.
type Connection ¶
type Connection struct {
// LastRefresh is the time when the auth context was last refreshed
// +optional
LastRefresh time.Time `json:"last_refresh"`
// Data is an optional map of arbitrary data that can be used to store additional information about the connection,
// such as credential file locations, etc.
//
// This data is exposed to the user in the UI under the settings panel for the namespace. If the data is sensitive,
// it should be stored in the SensitiveData field.
// +optional
Data map[string]any `json:"data"`
// Labels is a map of arbitrary key-value pairs that can be used to store additional information about the connection.
// Users will likely use and modify these labels to help organize and categorize their connections.
Labels map[string]any `json:"labels"`
// ID is the unique identifier for the connection that makes sense to the plugin implementation.
// +required
ID string `json:"id"`
// UID is an autogenerated unique identifier for the connection that the IDE will use to identify and track.
UID string `json:"uid"`
// Name is the readable name of the connection. Editable by the user.
// +required
Name string `json:"name"`
// Description is an optional description of the connection. This is primarily for the user to customize
// the visual representation of the connection.
// +optional
Description string `json:"description"`
// Avatar is an optional image that can be used to represent the connection. This is primarily for the user to customize
// the visual representation of the connection in the UI.
// +optional
Avatar string `json:"avatar"`
// ExpiryTime is the amount of time before the connection expires.
// +optional
ExpiryTime time.Duration `json:"expiry_time"`
// Client is a client structure that should be populated when the connection is created and used for connections
Client any
// contains filtered or unexported fields
}
Connection holds the current state (and configuration data) for an connection target for a plugin (e.g. a Kubernetes cluster, a cloud role, etc)
This will be passed within the PluginContext so that it may be used across all requests, and data here not within the sensitiveStore will be exposed to the user in the UI for the plugin.
func ConnectionFromContext ¶
func ConnectionFromContext(ctx context.Context) *Connection
func NewConnection ¶
func NewConnection(opts ConnectionOpts) (*Connection, error)
func (*Connection) GetData ¶
func (c *Connection) GetData() map[string]any
func (*Connection) GetDataKey ¶
func (c *Connection) GetDataKey(key string) (any, bool)
func (*Connection) GetSensitiveData ¶
func (c *Connection) GetSensitiveData() map[string]any
func (*Connection) GetSensitiveDataKey ¶
func (c *Connection) GetSensitiveDataKey(key string) (any, bool)
func (*Connection) IsAuthed ¶
func (c *Connection) IsAuthed() bool
IsAuthed returns whether the auth context is authenticated or not.
func (*Connection) SetData ¶
func (c *Connection) SetData(data map[string]any)
func (*Connection) SetDataKey ¶
func (c *Connection) SetDataKey(key string, value any)
func (*Connection) SetSensitiveData ¶
func (c *Connection) SetSensitiveData(data map[string]any)
func (*Connection) SetSensitiveDataKey ¶
func (c *Connection) SetSensitiveDataKey(key string, value any)
type ConnectionContext ¶
type ConnectionContext Connection
type ConnectionOpts ¶
type ConnectionOpts struct {
// Data is an optional map of arbitrary data that can be used to store additional information about the namespace.
Data map[string]any
// SensitiveData is an optional map of arbitrary data that can be used to store additional information about the
SensitiveData map[string]any
// Labels is a map of arbitrary key-value pairs that can be used to store additional information about the namespace.
Labels map[string]any
// ID is the unique identifier for the authorization context that makes sense to the
ID string
// UID is an autogenerated unique identifier for the authorization context that the IDE.
// will use to identify the authorization context.
UID string
// Name is the readable name of the namespace.
Name string
// Description is an optional description of the namespace. This is primarily for the user to customize
Description string
// Avatar is an optional image that can be used to represent the namespace. This is primarily for the user to customize
Avatar string
// ExpiryTime is the amount of time before the auth context expires
ExpiryTime time.Duration
}
type ConnectionStatus ¶
type ConnectionStatus struct {
// Connection is the connection that the status is for.
Connection *Connection `json:"connection"`
// StatusCode is the status code of the connection status.
Status ConnectionStatusCode `json:"status"`
// Error is the error that occurred when checking the connection status.
Error string `json:"error"`
// Message is a human readable message that describes the status.
Details string `json:"details"`
}
type ConnectionStatusCode ¶
type ConnectionStatusCode string
const ( ConnectionStatusUnknown ConnectionStatusCode = "UNKNOWN" ConnectionStatusConnected ConnectionStatusCode = "CONNECTED" ConnectionStatusDisconnected ConnectionStatusCode = "DISCONNECTED" ConnectionStatusPending ConnectionStatusCode = "PENDING" ConnectionStatusFailed ConnectionStatusCode = "FAILED" ConnectionStatusError ConnectionStatusCode = "ERROR" ConnectionStatusForbidden ConnectionStatusCode = "FORBIDDEN" ConnectionStatusBadRequest ConnectionStatusCode = "BAD_REQUEST" ConnectionStatusNotFound ConnectionStatusCode = "NOT_FOUND" ConnectionStatusTimeout ConnectionStatusCode = "TIMEOUT" ConnectionStatusRequestEntityTooLarge ConnectionStatusCode = "REQUEST_ENTITY_TOO_LARGE" )
type Plugin ¶
type Plugin struct {
ID string `json:"id"`
Metadata config.PluginMeta `json:"metadata"`
Config config.PluginConfig `json:"-"`
Enabled bool `json:"enabled"`
Running bool `json:"running"`
DevMode bool `json:"devMode"`
DevPath string `json:"devPath"`
Loading bool `json:"loading"`
LoadError string `json:"loadError"`
Phase string `json:"phase,omitempty"`
Capabilities []PluginType `json:"capabilities"`
LastError string `json:"lastError,omitempty"`
// Runtime fields — not serialized.
RPCClient interface{} `json:"-"`
PluginClient interface{} `json:"-"`
}
Plugin is the legacy type that combines display + runtime state. Deprecated: New code should use PluginInfo for display and host-side PluginRecord for runtime state.
func (*Plugin) GetRPCClient ¶
func (p *Plugin) GetRPCClient() interface{}
func (*Plugin) HasCapability ¶
func (p *Plugin) HasCapability(capability PluginType) bool
func (*Plugin) SetDisabled ¶
func (p *Plugin) SetDisabled()
func (*Plugin) SetEnabled ¶
func (p *Plugin) SetEnabled()
func (*Plugin) ToInfo ¶ added in v0.1.1
func (p *Plugin) ToInfo() PluginInfo
ToInfo converts a legacy Plugin to a PluginInfo for API responses.
type PluginContext ¶
type PluginContext struct {
// Current context
Context context.Context `json:"-"`
// RequestOptions are the options that were set for the request.
RequestOptions *RequestOptions `json:"request_options"`
// Connection holds the identifier of the auth context for the plugin.
Connection *Connection `json:"connection"`
// The resource context for the request, if available
ResourceContext *ResourceContext `json:"resource_context"`
// The plugin settings for the request
PluginConfig settings.Provider `json:"-"`
// GlobalSettings are settings that are accessible to all plugins, taken
// from the global settings in the IDE section
GlobalConfig *config.GlobalConfig `json:"global_config"`
// Unique ID for the request
RequestID string `json:"request_id"`
// The ID of the requester
RequesterID string `json:"requester_id"`
}
PluginContext holds contextual data for requests made to a plugin.
func DeserializePluginContext ¶
func DeserializePluginContext(data string) (*PluginContext, error)
DeserializePluginContext deserializes the JSON string back into a PluginContext. Used to pass the context between the IDE and the plugin.
func NewPluginContext ¶
func NewPluginContext( ctx context.Context, requester string, pluginConfig settings.Provider, globalConfig *config.GlobalConfig, resourceContext *ResourceContext, ) *PluginContext
Construct a new plugin context with the given requester, resource key, and resource context.
func NewPluginContextFromCtx ¶
func NewPluginContextFromCtx(ctx context.Context) *PluginContext
func NewPluginContextWithConnection ¶
func NewPluginContextWithConnection( ctx context.Context, requester string, pluginConfig settings.Provider, globalConfig *config.GlobalConfig, connection *Connection, ) *PluginContext
Construct a new plugin context with a valid connection.
func PluginContextFromContext ¶
func PluginContextFromContext(ctx context.Context) *PluginContext
func (*PluginContext) IsAuthenticated ¶
func (c *PluginContext) IsAuthenticated() bool
func (*PluginContext) SetConnection ¶
func (c *PluginContext) SetConnection(authContext *Connection)
func (*PluginContext) SetResourceContext ¶
func (c *PluginContext) SetResourceContext(resourceContext *ResourceContext)
func (*PluginContext) SetSettingsProvider ¶
func (c *PluginContext) SetSettingsProvider(provider settings.Provider)
type PluginInfo ¶ added in v0.1.1
type PluginInfo struct {
ID string `json:"id"`
Metadata config.PluginMeta `json:"metadata"`
Phase string `json:"phase"`
Enabled bool `json:"enabled"`
DevMode bool `json:"devMode"`
DevPath string `json:"devPath,omitempty"`
Capabilities []Capability `json:"capabilities"`
LastError string `json:"lastError,omitempty"`
}
PluginInfo represents the display/API-facing view of a plugin. This type is safe to serialize to JSON for the frontend. Runtime fields (RPCClient, PluginClient) live in the host-only PluginRecord.
type PluginType ¶
type PluginType int
PluginType is the legacy integer enum for plugin capabilities. Deprecated: Use Capability instead.
const ( ExecutorPlugin PluginType = iota FilesystemPlugin LogPlugin MetricPlugin ReporterPlugin ResourcePlugin SettingsPlugin NetworkerPlugin UIPlugin )
func (PluginType) MarshalText ¶
func (pt PluginType) MarshalText() ([]byte, error)
func (PluginType) String ¶
func (pt PluginType) String() string
func (PluginType) ToCapability ¶ added in v0.1.1
func (pt PluginType) ToCapability() Capability
ToCapability converts a legacy PluginType to the new Capability type.
type RequestOptions ¶
type RequestOptions struct {
// The timeout for the request
Timeout time.Duration `json:"timeout"`
// The maximum number of retries for the request, if set
MaxRetries int `json:"max_retries"`
// The backoff interval for the request
BackoffInterval time.Duration `json:"backoff_interval"`
}
RequestOptions are the options that were set for the request.
func NewDefaultRequestOptions ¶
func NewDefaultRequestOptions() *RequestOptions
type ResourceContext ¶
type ResourceContext struct {
// Key identifies the resource type being requested
Key string `json:"key"`
}
ResourceContext holds the context of the resource that the request is for, if the request is for a resource.
type VisualComponentList ¶
type VisualComponentList struct {
Resource []VisualResourceComponent `json:"resource"`
}
VisualComponentList is a list of visual components that can be used to visualize resources in the IDE.
type VisualResourceComponent ¶
type VisualResourceComponent struct {
ID string `json:"id"`
Plugin string `json:"plugin"`
Type string `json:"type"`
Resources []string `json:"resources"`
}
VisualResourceComponent is a component that can be used to visualize a resource in one of the injectable areas in the IDE.