Documentation
¶
Index ¶
- Variables
- func Serve(impl Plugin)
- type AssessmentConfiguration
- type AssessmentLog
- type Client
- func (c *Client) Close()
- func (c *Client) Describe(ctx context.Context, req *DescribeRequest) (*DescribeResponse, error)
- func (c *Client) Generate(ctx context.Context, req *GenerateRequest) (*GenerateResponse, error)
- func (c *Client) Scan(ctx context.Context, req *ScanRequest) (*ScanResponse, error)
- type ConfidenceLevel
- type DescribeRequest
- type DescribeResponse
- type Discovery
- type GRPCEvaluatorPlugin
- type GenerateRequest
- type GenerateResponse
- type LoadedPlugin
- type Manager
- func (m *Manager) Cleanup()
- func (m *Manager) GetPlugin(evaluatorID string) (*LoadedPlugin, error)
- func (m *Manager) ListPlugins() []*LoadedPlugin
- func (m *Manager) LoadPlugins() error
- func (m *Manager) RouteGenerate(ctx context.Context, evaluatorID string, ...) error
- func (m *Manager) RouteScan(ctx context.Context, evaluatorID string, targets []Target) ([]AssessmentLog, error)
- type Plugin
- type PluginInfo
- type Result
- type ScanRequest
- type ScanResponse
- type Step
- type Target
Constants ¶
This section is empty.
Variables ¶
var Handshake = goplugin.HandshakeConfig{
ProtocolVersion: 1,
MagicCookieKey: "COMPLYCTL_PLUGIN",
MagicCookieValue: "ddff478d-578e-4d9d-8253-35e8ebf548d2",
}
Handshake is the shared complytime that plugins must match to connect.
var SupportedPlugins = map[string]goplugin.Plugin{ "evaluator": &GRPCEvaluatorPlugin{}, }
SupportedPlugins is the plugin type map used when creating go-plugin clients.
Functions ¶
Types ¶
type AssessmentConfiguration ¶
type AssessmentConfiguration struct {
PlanID string
RequirementID string
Parameters map[string]string
// EvaluatorID is used for routing to the correct plugin. It is not
// serialized over gRPC — routing is handled by the plugin manager.
EvaluatorID string
}
AssessmentConfiguration binds a requirement ID to its plan and parameters.
type AssessmentLog ¶
type AssessmentLog struct {
RequirementID string
Steps []Step
Message string
Confidence ConfidenceLevel
}
AssessmentLog holds the evaluation result for a single requirement.
type Client ¶
type Client struct {
// contains filtered or unexported fields
}
Client provides gRPC communication with a plugin subprocess managed by hashicorp/go-plugin.
func (*Client) Describe ¶
func (c *Client) Describe(ctx context.Context, req *DescribeRequest) (*DescribeResponse, error)
func (*Client) Generate ¶
func (c *Client) Generate(ctx context.Context, req *GenerateRequest) (*GenerateResponse, error)
func (*Client) Scan ¶
func (c *Client) Scan(ctx context.Context, req *ScanRequest) (*ScanResponse, error)
type ConfidenceLevel ¶
type ConfidenceLevel int32
ConfidenceLevel indicates the evaluator's confidence in an assessment result. Mirrors go-gemara ConfidenceLevel enum values (1:1 mapping).
const ( ConfidenceLevelNotSet ConfidenceLevel = 0 ConfidenceLevelUndetermined ConfidenceLevel = 1 ConfidenceLevelLow ConfidenceLevel = 2 ConfidenceLevelMedium ConfidenceLevel = 3 ConfidenceLevelHigh ConfidenceLevel = 4 )
type DescribeRequest ¶
type DescribeRequest struct{}
DescribeRequest is sent to discover plugin identity and requirements.
type DescribeResponse ¶
type DescribeResponse struct {
Healthy bool
Version string
ErrorMessage string
RequiredGlobalVariables []string
RequiredTargetVariables []string
}
DescribeResponse reports plugin identity, health, version, and declared variable requirements used by doctor diagnostics (R51).
type Discovery ¶
type Discovery struct {
// contains filtered or unexported fields
}
Discovery scans a directory for plugin executables matching the naming convention.
func NewDiscovery ¶
func (*Discovery) DiscoverPlugins ¶
func (d *Discovery) DiscoverPlugins() ([]PluginInfo, error)
DiscoverPlugins scans the user plugin directory and the system-wide provider directory for executables matching the naming convention. User-directory providers take precedence over system-installed ones.
type GRPCEvaluatorPlugin ¶
GRPCEvaluatorPlugin implements hashicorp/go-plugin.GRPCPlugin for the evaluator service.
func (*GRPCEvaluatorPlugin) GRPCClient ¶
func (p *GRPCEvaluatorPlugin) GRPCClient(_ context.Context, _ *goplugin.GRPCBroker, c *grpc.ClientConn) (interface{}, error)
func (*GRPCEvaluatorPlugin) GRPCServer ¶
func (p *GRPCEvaluatorPlugin) GRPCServer(_ *goplugin.GRPCBroker, s *grpc.Server) error
type GenerateRequest ¶
type GenerateRequest struct {
GlobalVariables map[string]string
Configuration []AssessmentConfiguration
TargetVariables map[string]string
}
GenerateRequest carries assessment plan configuration to a plugin. See R48: three-tier variable model.
type GenerateResponse ¶
GenerateResponse confirms whether policy preparation succeeded.
type LoadedPlugin ¶
type LoadedPlugin struct {
Info PluginInfo
Client *Client
}
LoadedPlugin pairs discovery metadata with a live gRPC client.
func (*LoadedPlugin) GetClient ¶
func (p *LoadedPlugin) GetClient() Plugin
type Manager ¶
type Manager struct {
// contains filtered or unexported fields
}
Manager handles plugin discovery, lifecycle, and request routing.
func (*Manager) Cleanup ¶
func (m *Manager) Cleanup()
Cleanup kills all managed plugin subprocesses. Call via defer after LoadPlugins.
func (*Manager) ListPlugins ¶
func (m *Manager) ListPlugins() []*LoadedPlugin
func (*Manager) LoadPlugins ¶
LoadPlugins discovers plugins via executable naming convention and verifies each via Describe RPC before registering.
func (*Manager) RouteGenerate ¶
func (m *Manager) RouteGenerate(ctx context.Context, evaluatorID string, globalVars, targetVars map[string]string, configs []AssessmentConfiguration) error
RouteGenerate dispatches a GenerateRequest to the plugin matching evaluatorID. globalVars carries workspace-level variables; targetVars carries per-target variables from the three-tier model (R48).
func (*Manager) RouteScan ¶
func (m *Manager) RouteScan(ctx context.Context, evaluatorID string, targets []Target) ([]AssessmentLog, error)
RouteScan dispatches a ScanRequest to the plugin matching evaluatorID. The provider evaluates all requirements from Generate-time state — no requirement IDs are sent over the wire. See R47: specs/001-gemara-native-workflow/research.md
type Plugin ¶
type Plugin interface {
Describe(ctx context.Context, req *DescribeRequest) (*DescribeResponse, error)
Generate(ctx context.Context, req *GenerateRequest) (*GenerateResponse, error)
Scan(ctx context.Context, req *ScanRequest) (*ScanResponse, error)
}
Plugin is the interface that plugin authors implement for evaluation RPCs.
type PluginInfo ¶
PluginInfo holds the identity and filesystem path of a discovered plugin.
type ScanRequest ¶
type ScanRequest struct {
Targets []Target
}
ScanRequest carries targets to evaluate. The scanning provider evaluates all requirements from Generate-time state. See R47: specs/001-gemara-native-workflow/research.md
type ScanResponse ¶
type ScanResponse struct {
Assessments []AssessmentLog
}
ScanResponse carries assessment results from a plugin scan.