Documentation
¶
Index ¶
- Constants
- type AdapterV1
- func (a *AdapterV1) CheckConnection(ctx context.Context, connectionID string) (types.ConnectionStatus, error)
- func (a *AdapterV1) Create(ctx context.Context, key string, input resource.CreateInput) (*resource.CreateResult, error)
- func (a *AdapterV1) Delete(ctx context.Context, key string, input resource.DeleteInput) (*resource.DeleteResult, error)
- func (a *AdapterV1) DeleteConnection(ctx context.Context, id string) error
- func (a *AdapterV1) EnsureResourceWatch(ctx context.Context, connectionID, resourceKey string) error
- func (a *AdapterV1) ExecuteAction(ctx context.Context, key, actionID string, input resource.ActionInput) (*resource.ActionResult, error)
- func (a *AdapterV1) Find(ctx context.Context, key string, input resource.FindInput) (*resource.FindResult, error)
- func (a *AdapterV1) Get(ctx context.Context, key string, input resource.GetInput) (*resource.GetResult, error)
- func (a *AdapterV1) GetActions(ctx context.Context, key string) ([]resource.ActionDescriptor, error)
- func (a *AdapterV1) GetConnection(ctx context.Context, id string) (types.Connection, error)
- func (a *AdapterV1) GetConnectionNamespaces(ctx context.Context, id string) ([]string, error)
- func (a *AdapterV1) GetEditorSchemas(ctx context.Context, connectionID string) ([]resource.EditorSchema, error)
- func (a *AdapterV1) GetFilterFields(ctx context.Context, connectionID, resourceKey string) ([]resource.FilterField, error)
- func (a *AdapterV1) GetHealth(ctx context.Context, connectionID, resourceKey string, data json.RawMessage) (*resource.ResourceHealth, error)
- func (a *AdapterV1) GetRelationships(ctx context.Context, resourceKey string) ([]resource.RelationshipDescriptor, error)
- func (a *AdapterV1) GetResourceCapabilities(ctx context.Context, resourceKey string) (*resource.ResourceCapabilities, error)
- func (a *AdapterV1) GetResourceDefinition(ctx context.Context, id string) (resource.ResourceDefinition, error)
- func (a *AdapterV1) GetResourceEvents(ctx context.Context, connectionID, resourceKey, id, namespace string, ...) ([]resource.ResourceEvent, error)
- func (a *AdapterV1) GetResourceGroup(ctx context.Context, id string) (resource.ResourceGroup, error)
- func (a *AdapterV1) GetResourceGroups(ctx context.Context, connectionID string) map[string]resource.ResourceGroup
- func (a *AdapterV1) GetResourceSchema(ctx context.Context, connectionID, resourceKey string) (json.RawMessage, error)
- func (a *AdapterV1) GetResourceType(ctx context.Context, id string) (*resource.ResourceMeta, error)
- func (a *AdapterV1) GetResourceTypes(ctx context.Context, connectionID string) map[string]resource.ResourceMeta
- func (a *AdapterV1) GetWatchState(ctx context.Context, connectionID string) (*resource.WatchConnectionSummary, error)
- func (a *AdapterV1) HasResourceType(ctx context.Context, id string) bool
- func (a *AdapterV1) HasWatch(ctx context.Context, connectionID string) bool
- func (a *AdapterV1) IsResourceWatchRunning(ctx context.Context, connectionID, resourceKey string) (bool, error)
- func (a *AdapterV1) List(ctx context.Context, key string, input resource.ListInput) (*resource.ListResult, error)
- func (a *AdapterV1) ListConnections(ctx context.Context) ([]types.Connection, error)
- func (a *AdapterV1) ListenForEvents(ctx context.Context, sink resource.WatchEventSink) error
- func (a *AdapterV1) LoadConnections(ctx context.Context) ([]types.Connection, error)
- func (a *AdapterV1) ResolveRelationships(ctx context.Context, connectionID, resourceKey, id, namespace string) ([]resource.ResolvedRelationship, error)
- func (a *AdapterV1) RestartResourceWatch(ctx context.Context, connectionID, resourceKey string) error
- func (a *AdapterV1) StartConnection(ctx context.Context, connectionID string) (types.ConnectionStatus, error)
- func (a *AdapterV1) StartConnectionWatch(ctx context.Context, connectionID string) error
- func (a *AdapterV1) StopConnection(ctx context.Context, connectionID string) (types.Connection, error)
- func (a *AdapterV1) StopConnectionWatch(ctx context.Context, connectionID string) error
- func (a *AdapterV1) StopResourceWatch(ctx context.Context, connectionID, resourceKey string) error
- func (a *AdapterV1) StreamAction(ctx context.Context, key, actionID string, input resource.ActionInput, ...) error
- func (a *AdapterV1) Update(ctx context.Context, key string, input resource.UpdateInput) (*resource.UpdateResult, error)
- func (a *AdapterV1) UpdateConnection(ctx context.Context, connection types.Connection) (types.Connection, error)
- func (a *AdapterV1) WatchConnections(ctx context.Context, stream chan<- []types.Connection) error
- type Client
- func (c *Client) AddConnection(pluginID string, connection types.Connection) error
- func (c *Client) CheckConnection(pluginID, connectionID string) (types.ConnectionStatus, error)
- func (c *Client) Create(pluginID, connectionID, key string, input ClientCreateInput) (*ClientResult, error)
- func (c *Client) Delete(pluginID, connectionID, key string, input resource.DeleteInput) (*ClientResult, error)
- func (c *Client) EnsureResourceWatch(pluginID, connectionID, resourceKey string) error
- func (c *Client) ExecuteAction(pluginID, connectionID, key, actionID string, input resource.ActionInput) (*resource.ActionResult, error)
- func (c *Client) Find(pluginID, connectionID, key string, input resource.FindInput) (*ClientListResult, error)
- func (c *Client) Get(pluginID, connectionID, key string, input resource.GetInput) (*ClientResult, error)
- func (c *Client) GetActions(pluginID, connectionID, key string) ([]resource.ActionDescriptor, error)
- func (c *Client) GetAllConnectionStates() (map[string][]ConnectionState, error)
- func (c *Client) GetConnection(pluginID, connectionID string) (types.Connection, error)
- func (c *Client) GetConnectionNamespaces(pluginID, connectionID string) ([]string, error)
- func (c *Client) GetEditorSchemas(pluginID, connectionID string) ([]resource.EditorSchema, error)
- func (c *Client) GetFilterFields(pluginID, connectionID, key string) ([]resource.FilterField, error)
- func (c *Client) GetHealth(pluginID, connectionID, key string, data interface{}) (*resource.ResourceHealth, error)
- func (c *Client) GetRelationships(pluginID, key string) ([]resource.RelationshipDescriptor, error)
- func (c *Client) GetResourceCapabilities(pluginID, key string) (*resource.ResourceCapabilities, error)
- func (c *Client) GetResourceDefinition(pluginID, typeID string) (resource.ResourceDefinition, error)
- func (c *Client) GetResourceEvents(pluginID, connectionID, key, id, namespace string, limit int32) ([]resource.ResourceEvent, error)
- func (c *Client) GetResourceGroup(pluginID, groupID string) (resource.ResourceGroup, error)
- func (c *Client) GetResourceGroups(pluginID, connectionID string) map[string]resource.ResourceGroup
- func (c *Client) GetResourceSchema(pluginID, connectionID, key string) (interface{}, error)
- func (c *Client) GetResourceType(pluginID, typeID string) (*resource.ResourceMeta, error)
- func (c *Client) GetResourceTypes(pluginID, connectionID string) map[string]resource.ResourceMeta
- func (c *Client) GetWatchState(pluginID, connectionID string) (*resource.WatchConnectionSummary, error)
- func (c *Client) HasResourceType(pluginID, typeID string) bool
- func (c *Client) IsResourceWatchRunning(pluginID, connectionID, resourceKey string) (bool, error)
- func (c *Client) List(pluginID, connectionID, key string, input resource.ListInput) (*ClientListResult, error)
- func (c *Client) ListAllConnections() (map[string][]types.Connection, error)
- func (c *Client) ListConnections(pluginID string) ([]types.Connection, error)
- func (c *Client) ListPlugins() ([]string, error)
- func (c *Client) LoadConnections(pluginID string) ([]types.Connection, error)
- func (c *Client) RemoveConnection(pluginID, connectionID string) error
- func (c *Client) ResolveRelationships(pluginID, connectionID, key, id, namespace string) ([]resource.ResolvedRelationship, error)
- func (c *Client) RestartResourceWatch(pluginID, connectionID, resourceKey string) error
- func (c *Client) StartConnection(pluginID, connectionID string) (types.ConnectionStatus, error)
- func (c *Client) StartConnectionWatch(pluginID, connectionID string) error
- func (c *Client) StopConnection(pluginID, connectionID string) (types.Connection, error)
- func (c *Client) StopConnectionWatch(pluginID, connectionID string) error
- func (c *Client) StopResourceWatch(pluginID, connectionID, resourceKey string) error
- func (c *Client) StreamAction(pluginID, connectionID, key, actionID string, input resource.ActionInput) (string, error)
- func (c *Client) SubscribeResource(pluginID, connectionID, resourceKey string) error
- func (c *Client) UnsubscribeResource(pluginID, connectionID, resourceKey string) error
- func (c *Client) Update(pluginID, connectionID, key string, input ClientUpdateInput) (*ClientResult, error)
- func (c *Client) UpdateConnection(pluginID string, connection types.Connection) (types.Connection, error)
- type ClientCreateInput
- type ClientListResult
- type ClientResult
- type ClientUpdateInput
- type ConnectionState
- type Controller
- type EventEmitter
- type GraphService
- func (s *GraphService) GetDependencyTree(pluginID, connectionID, resourceKey, namespace, id string, maxDepth int) (*graph.DependencyTree, error)
- func (s *GraphService) GetRelated(pluginID, connectionID, resourceKey, namespace, id string, direction string, ...) ([]graph.GraphEdge, error)
- func (s *GraphService) GetRelationshipChain(pluginID, connectionID, resourceKey, namespace, id string, relType string, ...) ([][]graph.GraphEdge, error)
- type ResourceProvider
- type Service
Constants ¶
const PluginName = "resource"
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type AdapterV1 ¶ added in v0.2.0
type AdapterV1 struct {
// contains filtered or unexported fields
}
AdapterV1 wraps SDK v1 resource.Provider as the engine canonical ResourceProvider. For v1, this is a direct pass-through (types are identical). When v2 ships and canonical types diverge, AdapterV1 translates v1 → canonical.
func NewAdapterV1 ¶ added in v0.2.0
NewAdapterV1 creates a new AdapterV1.
func (*AdapterV1) CheckConnection ¶ added in v0.2.3
func (*AdapterV1) Create ¶ added in v0.2.0
func (a *AdapterV1) Create(ctx context.Context, key string, input resource.CreateInput) (*resource.CreateResult, error)
func (*AdapterV1) Delete ¶ added in v0.2.0
func (a *AdapterV1) Delete(ctx context.Context, key string, input resource.DeleteInput) (*resource.DeleteResult, error)
func (*AdapterV1) DeleteConnection ¶ added in v0.2.0
func (*AdapterV1) EnsureResourceWatch ¶ added in v0.2.0
func (*AdapterV1) ExecuteAction ¶ added in v0.2.0
func (a *AdapterV1) ExecuteAction(ctx context.Context, key, actionID string, input resource.ActionInput) (*resource.ActionResult, error)
func (*AdapterV1) GetActions ¶ added in v0.2.0
func (*AdapterV1) GetConnection ¶ added in v0.2.0
func (*AdapterV1) GetConnectionNamespaces ¶ added in v0.2.0
func (*AdapterV1) GetEditorSchemas ¶ added in v0.2.0
func (*AdapterV1) GetFilterFields ¶ added in v0.2.0
func (*AdapterV1) GetHealth ¶ added in v0.2.0
func (a *AdapterV1) GetHealth(ctx context.Context, connectionID, resourceKey string, data json.RawMessage) (*resource.ResourceHealth, error)
func (*AdapterV1) GetRelationships ¶ added in v0.2.0
func (*AdapterV1) GetResourceCapabilities ¶ added in v0.2.0
func (*AdapterV1) GetResourceDefinition ¶ added in v0.2.0
func (*AdapterV1) GetResourceEvents ¶ added in v0.2.0
func (*AdapterV1) GetResourceGroup ¶ added in v0.2.0
func (*AdapterV1) GetResourceGroups ¶ added in v0.2.0
func (*AdapterV1) GetResourceSchema ¶ added in v0.2.0
func (*AdapterV1) GetResourceType ¶ added in v0.2.0
func (*AdapterV1) GetResourceTypes ¶ added in v0.2.0
func (*AdapterV1) GetWatchState ¶ added in v0.2.0
func (*AdapterV1) HasResourceType ¶ added in v0.2.0
func (*AdapterV1) IsResourceWatchRunning ¶ added in v0.2.0
func (*AdapterV1) ListConnections ¶ added in v0.2.0
func (*AdapterV1) ListenForEvents ¶ added in v0.2.0
func (*AdapterV1) LoadConnections ¶ added in v0.2.0
func (*AdapterV1) ResolveRelationships ¶ added in v0.2.0
func (*AdapterV1) RestartResourceWatch ¶ added in v0.2.0
func (*AdapterV1) StartConnection ¶ added in v0.2.0
func (*AdapterV1) StartConnectionWatch ¶ added in v0.2.0
func (*AdapterV1) StopConnection ¶ added in v0.2.0
func (*AdapterV1) StopConnectionWatch ¶ added in v0.2.0
func (*AdapterV1) StopResourceWatch ¶ added in v0.2.0
func (*AdapterV1) StreamAction ¶ added in v0.2.0
func (a *AdapterV1) StreamAction(ctx context.Context, key, actionID string, input resource.ActionInput, stream chan<- resource.ActionEvent) error
func (*AdapterV1) Update ¶ added in v0.2.0
func (a *AdapterV1) Update(ctx context.Context, key string, input resource.UpdateInput) (*resource.UpdateResult, error)
func (*AdapterV1) UpdateConnection ¶ added in v0.2.0
func (a *AdapterV1) UpdateConnection(ctx context.Context, connection types.Connection) (types.Connection, error)
func (*AdapterV1) WatchConnections ¶ added in v0.2.0
type Client ¶
type Client struct {
// contains filtered or unexported fields
}
Client is a thin Wails-bound wrapper around the Controller. It converts SDK types (json.RawMessage) to frontend-friendly types (interface{}) so that Wails generates "any" in TypeScript instead of "number[]".
func NewClient ¶
func NewClient(controller Controller) *Client
func (*Client) AddConnection ¶
func (c *Client) AddConnection(pluginID string, connection types.Connection) error
func (*Client) CheckConnection ¶ added in v0.2.3
func (c *Client) CheckConnection(pluginID, connectionID string) (types.ConnectionStatus, error)
func (*Client) Create ¶
func (c *Client) Create(pluginID, connectionID, key string, input ClientCreateInput) (*ClientResult, error)
func (*Client) Delete ¶
func (c *Client) Delete(pluginID, connectionID, key string, input resource.DeleteInput) (*ClientResult, error)
func (*Client) EnsureResourceWatch ¶ added in v0.2.0
func (*Client) ExecuteAction ¶
func (c *Client) ExecuteAction(pluginID, connectionID, key, actionID string, input resource.ActionInput) (*resource.ActionResult, error)
func (*Client) GetActions ¶
func (c *Client) GetActions(pluginID, connectionID, key string) ([]resource.ActionDescriptor, error)
func (*Client) GetAllConnectionStates ¶ added in v0.2.0
func (c *Client) GetAllConnectionStates() (map[string][]ConnectionState, error)
func (*Client) GetConnection ¶
func (c *Client) GetConnection(pluginID, connectionID string) (types.Connection, error)
func (*Client) GetConnectionNamespaces ¶
func (*Client) GetEditorSchemas ¶
func (c *Client) GetEditorSchemas(pluginID, connectionID string) ([]resource.EditorSchema, error)
func (*Client) GetFilterFields ¶ added in v0.2.0
func (c *Client) GetFilterFields(pluginID, connectionID, key string) ([]resource.FilterField, error)
func (*Client) GetHealth ¶ added in v0.2.0
func (c *Client) GetHealth(pluginID, connectionID, key string, data interface{}) (*resource.ResourceHealth, error)
func (*Client) GetRelationships ¶ added in v0.2.0
func (c *Client) GetRelationships(pluginID, key string) ([]resource.RelationshipDescriptor, error)
func (*Client) GetResourceCapabilities ¶ added in v0.2.0
func (c *Client) GetResourceCapabilities(pluginID, key string) (*resource.ResourceCapabilities, error)
func (*Client) GetResourceDefinition ¶
func (c *Client) GetResourceDefinition(pluginID, typeID string) (resource.ResourceDefinition, error)
func (*Client) GetResourceEvents ¶ added in v0.2.0
func (*Client) GetResourceGroup ¶
func (c *Client) GetResourceGroup(pluginID, groupID string) (resource.ResourceGroup, error)
func (*Client) GetResourceGroups ¶
func (c *Client) GetResourceGroups(pluginID, connectionID string) map[string]resource.ResourceGroup
func (*Client) GetResourceSchema ¶ added in v0.2.0
func (*Client) GetResourceType ¶
func (c *Client) GetResourceType(pluginID, typeID string) (*resource.ResourceMeta, error)
func (*Client) GetResourceTypes ¶
func (c *Client) GetResourceTypes(pluginID, connectionID string) map[string]resource.ResourceMeta
func (*Client) GetWatchState ¶ added in v0.2.0
func (c *Client) GetWatchState(pluginID, connectionID string) (*resource.WatchConnectionSummary, error)
func (*Client) HasResourceType ¶
func (*Client) IsResourceWatchRunning ¶ added in v0.2.0
func (*Client) ListAllConnections ¶
func (c *Client) ListAllConnections() (map[string][]types.Connection, error)
func (*Client) ListConnections ¶
func (c *Client) ListConnections(pluginID string) ([]types.Connection, error)
func (*Client) ListPlugins ¶
func (*Client) LoadConnections ¶
func (c *Client) LoadConnections(pluginID string) ([]types.Connection, error)
func (*Client) RemoveConnection ¶
func (*Client) ResolveRelationships ¶ added in v0.2.0
func (c *Client) ResolveRelationships(pluginID, connectionID, key, id, namespace string) ([]resource.ResolvedRelationship, error)
func (*Client) RestartResourceWatch ¶ added in v0.2.0
func (*Client) StartConnection ¶
func (c *Client) StartConnection(pluginID, connectionID string) (types.ConnectionStatus, error)
func (*Client) StartConnectionWatch ¶ added in v0.2.0
func (*Client) StopConnection ¶
func (c *Client) StopConnection(pluginID, connectionID string) (types.Connection, error)
func (*Client) StopConnectionWatch ¶ added in v0.2.0
func (*Client) StopResourceWatch ¶ added in v0.2.0
func (*Client) StreamAction ¶
func (*Client) SubscribeResource ¶ added in v0.1.9
func (*Client) UnsubscribeResource ¶ added in v0.1.9
func (*Client) Update ¶
func (c *Client) Update(pluginID, connectionID, key string, input ClientUpdateInput) (*ClientResult, error)
func (*Client) UpdateConnection ¶
func (c *Client) UpdateConnection(pluginID string, connection types.Connection) (types.Connection, error)
type ClientCreateInput ¶ added in v0.2.1
type ClientCreateInput struct {
Input interface{} `json:"input"`
Namespace string `json:"namespace"`
}
ClientCreateInput accepts interface{} from the frontend instead of json.RawMessage.
type ClientListResult ¶ added in v0.2.1
type ClientListResult struct {
Result []interface{} `json:"result"`
Success bool `json:"success"`
TotalCount int `json:"totalCount"`
NextCursor string `json:"nextCursor,omitempty"`
}
ClientListResult wraps a multi-resource SDK result for the frontend.
type ClientResult ¶ added in v0.2.1
type ClientResult struct {
Result interface{} `json:"result"`
Success bool `json:"success"`
}
ClientResult wraps a single-resource SDK result for the frontend.
type ClientUpdateInput ¶ added in v0.2.1
type ClientUpdateInput struct {
Input interface{} `json:"input"`
ID string `json:"id"`
Namespace string `json:"namespace"`
}
ClientUpdateInput accepts interface{} from the frontend instead of json.RawMessage.
type ConnectionState ¶ added in v0.2.0
type ConnectionState struct {
// Connection metadata (name, avatar, labels, etc.)
Connection types.Connection `json:"connection"`
// Whether this connection is actively started/connected.
Started bool `json:"started"`
// Per-resource watch states (resource key → WatchState enum).
Resources map[string]sdkresource.WatchState `json:"resources"`
// Per-resource object counts (resource key → count of cached objects).
ResourceCounts map[string]int `json:"resourceCounts"`
// Aggregate counts computed server-side.
TotalResources int `json:"totalResources"`
SyncedCount int `json:"syncedCount"`
ErrorCount int `json:"errorCount"`
// ISO 8601 timestamp of the last successful sync, or empty if never synced.
// String instead of time.Time for Wails serialization compatibility.
LastSyncTime string `json:"lastSyncTime,omitempty"`
}
ConnectionState is the full state snapshot for a single connection, combining metadata, lifecycle, and watch state. Returned by GetAllConnectionStates so the frontend can hydrate everything in a single call.
type Controller ¶
type Controller interface {
plugintypes.ConnectedController
Service
SetCrashCallback(cb func(pluginID string))
Graph() *graph.RelationshipGraph
}
Controller is the lifecycle + service interface for the resource capability.
func NewController ¶
func NewController(logger logging.Logger, sp pkgsettings.Provider) Controller
NewController creates a new resource Controller.
type EventEmitter ¶ added in v0.2.0
type EventEmitter interface {
Emit(eventKey string, data interface{})
}
EventEmitter abstracts event emission for testability. Production uses wailsEmitter; tests use recordingEmitter.
type GraphService ¶ added in v0.3.0
type GraphService struct {
// contains filtered or unexported fields
}
GraphService exposes graph query methods to the frontend via Wails binding.
func NewGraphService ¶ added in v0.3.0
func NewGraphService(g *graph.RelationshipGraph) *GraphService
NewGraphService creates a new GraphService.
func (*GraphService) GetDependencyTree ¶ added in v0.3.0
func (s *GraphService) GetDependencyTree( pluginID, connectionID, resourceKey, namespace, id string, maxDepth int, ) (*graph.DependencyTree, error)
GetDependencyTree follows all outgoing edges recursively.
func (*GraphService) GetRelated ¶ added in v0.3.0
func (s *GraphService) GetRelated( pluginID, connectionID, resourceKey, namespace, id string, direction string, relType *string, ) ([]graph.GraphEdge, error)
GetRelated returns edges connected to the given node.
func (*GraphService) GetRelationshipChain ¶ added in v0.3.0
func (s *GraphService) GetRelationshipChain( pluginID, connectionID, resourceKey, namespace, id string, relType string, maxDepth int, ) ([][]graph.GraphEdge, error)
GetRelationshipChain follows edges of a specific type up to maxDepth hops.
type ResourceProvider ¶ added in v0.2.0
type ResourceProvider interface {
// CRUD
Get(ctx context.Context, key string, input resource.GetInput) (*resource.GetResult, error)
List(ctx context.Context, key string, input resource.ListInput) (*resource.ListResult, error)
Find(ctx context.Context, key string, input resource.FindInput) (*resource.FindResult, error)
Create(ctx context.Context, key string, input resource.CreateInput) (*resource.CreateResult, error)
Update(ctx context.Context, key string, input resource.UpdateInput) (*resource.UpdateResult, error)
Delete(ctx context.Context, key string, input resource.DeleteInput) (*resource.DeleteResult, error)
// Connection lifecycle
StartConnection(ctx context.Context, connectionID string) (types.ConnectionStatus, error)
StopConnection(ctx context.Context, connectionID string) (types.Connection, error)
CheckConnection(ctx context.Context, connectionID string) (types.ConnectionStatus, error)
LoadConnections(ctx context.Context) ([]types.Connection, error)
ListConnections(ctx context.Context) ([]types.Connection, error)
GetConnection(ctx context.Context, id string) (types.Connection, error)
GetConnectionNamespaces(ctx context.Context, id string) ([]string, error)
UpdateConnection(ctx context.Context, connection types.Connection) (types.Connection, error)
DeleteConnection(ctx context.Context, id string) error
WatchConnections(ctx context.Context, stream chan<- []types.Connection) error
// Watch
StartConnectionWatch(ctx context.Context, connectionID string) error
StopConnectionWatch(ctx context.Context, connectionID string) error
HasWatch(ctx context.Context, connectionID string) bool
GetWatchState(ctx context.Context, connectionID string) (*resource.WatchConnectionSummary, error)
ListenForEvents(ctx context.Context, sink resource.WatchEventSink) error
EnsureResourceWatch(ctx context.Context, connectionID, resourceKey string) error
StopResourceWatch(ctx context.Context, connectionID, resourceKey string) error
RestartResourceWatch(ctx context.Context, connectionID, resourceKey string) error
IsResourceWatchRunning(ctx context.Context, connectionID, resourceKey string) (bool, error)
// Type metadata
GetResourceGroups(ctx context.Context, connectionID string) map[string]resource.ResourceGroup
GetResourceGroup(ctx context.Context, id string) (resource.ResourceGroup, error)
GetResourceTypes(ctx context.Context, connectionID string) map[string]resource.ResourceMeta
GetResourceType(ctx context.Context, id string) (*resource.ResourceMeta, error)
HasResourceType(ctx context.Context, id string) bool
GetResourceDefinition(ctx context.Context, id string) (resource.ResourceDefinition, error)
GetResourceCapabilities(ctx context.Context, resourceKey string) (*resource.ResourceCapabilities, error)
GetResourceSchema(ctx context.Context, connectionID, resourceKey string) (json.RawMessage, error)
GetFilterFields(ctx context.Context, connectionID, resourceKey string) ([]resource.FilterField, error)
// Actions
GetActions(ctx context.Context, key string) ([]resource.ActionDescriptor, error)
ExecuteAction(ctx context.Context, key, actionID string, input resource.ActionInput) (*resource.ActionResult, error)
StreamAction(ctx context.Context, key, actionID string, input resource.ActionInput, stream chan<- resource.ActionEvent) error
// Editor schemas
GetEditorSchemas(ctx context.Context, connectionID string) ([]resource.EditorSchema, error)
// Relationships
GetRelationships(ctx context.Context, resourceKey string) ([]resource.RelationshipDescriptor, error)
ResolveRelationships(ctx context.Context, connectionID, resourceKey, id, namespace string) ([]resource.ResolvedRelationship, error)
// Health
GetHealth(ctx context.Context, connectionID, resourceKey string, data json.RawMessage) (*resource.ResourceHealth, error)
GetResourceEvents(ctx context.Context, connectionID, resourceKey, id, namespace string, limit int32) ([]resource.ResourceEvent, error)
}
ResourceProvider is the engine's version-independent interface for resource plugins. The controller and frontend bindings use this interface exclusively. Adapters translate between versioned SDK types and this interface.
For v1, method signatures use SDK v1 types directly (they're identical). When v2 introduces breaking type changes, canonical types diverge here.
type Service ¶ added in v0.2.0
type Service interface {
ListPlugins() ([]string, error)
// CRUD
Get(pluginID, connectionID, key string, input resource.GetInput) (*resource.GetResult, error)
List(pluginID, connectionID, key string, input resource.ListInput) (*resource.ListResult, error)
Find(pluginID, connectionID, key string, input resource.FindInput) (*resource.FindResult, error)
Create(pluginID, connectionID, key string, input resource.CreateInput) (*resource.CreateResult, error)
Update(pluginID, connectionID, key string, input resource.UpdateInput) (*resource.UpdateResult, error)
Delete(pluginID, connectionID, key string, input resource.DeleteInput) (*resource.DeleteResult, error)
// Connection lifecycle
StartConnection(pluginID, connectionID string) (types.ConnectionStatus, error)
StopConnection(pluginID, connectionID string) (types.Connection, error)
CheckConnection(pluginID, connectionID string) (types.ConnectionStatus, error)
LoadConnections(pluginID string) ([]types.Connection, error)
ListConnections(pluginID string) ([]types.Connection, error)
ListAllConnections() (map[string][]types.Connection, error)
GetAllConnectionStates() (map[string][]ConnectionState, error)
GetConnection(pluginID, connectionID string) (types.Connection, error)
GetConnectionNamespaces(pluginID, connectionID string) ([]string, error)
AddConnection(pluginID string, connection types.Connection) error
UpdateConnection(pluginID string, connection types.Connection) (types.Connection, error)
RemoveConnection(pluginID, connectionID string) error
// Watch lifecycle
StartConnectionWatch(pluginID, connectionID string) error
StopConnectionWatch(pluginID, connectionID string) error
GetWatchState(pluginID, connectionID string) (*resource.WatchConnectionSummary, error)
EnsureResourceWatch(pluginID, connectionID, resourceKey string) error
StopResourceWatch(pluginID, connectionID, resourceKey string) error
RestartResourceWatch(pluginID, connectionID, resourceKey string) error
IsResourceWatchRunning(pluginID, connectionID, resourceKey string) (bool, error)
// Subscriptions (engine-side, ref-counted)
SubscribeResource(pluginID, connectionID, resourceKey string) error
UnsubscribeResource(pluginID, connectionID, resourceKey string) error
// Type metadata
GetResourceGroups(pluginID, connectionID string) map[string]resource.ResourceGroup
GetResourceGroup(pluginID, groupID string) (resource.ResourceGroup, error)
GetResourceTypes(pluginID, connectionID string) map[string]resource.ResourceMeta
GetResourceType(pluginID, typeID string) (*resource.ResourceMeta, error)
HasResourceType(pluginID, typeID string) bool
GetResourceDefinition(pluginID, typeID string) (resource.ResourceDefinition, error)
GetResourceCapabilities(pluginID, key string) (*resource.ResourceCapabilities, error)
GetFilterFields(pluginID, connectionID, key string) ([]resource.FilterField, error)
GetResourceSchema(pluginID, connectionID, key string) (json.RawMessage, error)
// Actions
GetActions(pluginID, connectionID, key string) ([]resource.ActionDescriptor, error)
ExecuteAction(pluginID, connectionID, key, actionID string, input resource.ActionInput) (*resource.ActionResult, error)
StreamAction(pluginID, connectionID, key, actionID string, input resource.ActionInput) (string, error)
// Editor schemas
GetEditorSchemas(pluginID, connectionID string) ([]resource.EditorSchema, error)
// Relationships
GetRelationships(pluginID, key string) ([]resource.RelationshipDescriptor, error)
ResolveRelationships(pluginID, connectionID, key, id, namespace string) ([]resource.ResolvedRelationship, error)
// Health
GetHealth(pluginID, connectionID, key string, data json.RawMessage) (*resource.ResourceHealth, error)
GetResourceEvents(pluginID, connectionID, key, id, namespace string, limit int32) ([]resource.ResourceEvent, error)
}
Service is the Wails-bound public API for resource operations. Every method prefixes with pluginID to route to the correct plugin's ResourceProvider.