plugin

package
v1.10.0 Latest Latest
Warning

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

Go to latest
Published: Oct 25, 2026 License: MIT Imports: 4 Imported by: 0

Documentation

Overview

Package plugin defines the plugin system for Sentinel.

Plugins are notified of lifecycle events (eval run started, case completed, regression detected, etc.) and can react to them — logging, metrics, tracing, auditing, etc.

Each lifecycle hook is a separate interface so plugins opt in only to the events they care about.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type BaselineSaved

type BaselineSaved interface {
	OnBaselineSaved(ctx context.Context, suiteID id.SuiteID, baselineID id.BaselineID) error
}

BaselineSaved is called when a baseline is saved.

type CaseCompleted

type CaseCompleted interface {
	OnCaseCompleted(ctx context.Context, runID id.EvalRunID, caseID id.CaseID, score float64, elapsed time.Duration) error
}

CaseCompleted is called when evaluation of a single case finishes.

type CaseFailed

type CaseFailed interface {
	OnCaseFailed(ctx context.Context, runID id.EvalRunID, caseID id.CaseID, err error) error
}

CaseFailed is called when evaluation of a single case fails.

type CaseStarted

type CaseStarted interface {
	OnCaseStarted(ctx context.Context, runID id.EvalRunID, caseID id.CaseID) error
}

CaseStarted is called when evaluation of a single case begins.

type ComparisonCompleted

type ComparisonCompleted interface {
	OnComparisonCompleted(ctx context.Context, suiteID id.SuiteID, models []string, elapsed time.Duration) error
}

ComparisonCompleted is called when a multi-model comparison finishes.

type EvalRunCompleted

type EvalRunCompleted interface {
	OnEvalRunCompleted(ctx context.Context, suiteID id.SuiteID, runID id.EvalRunID, passRate float64, elapsed time.Duration) error
}

EvalRunCompleted is called when an evaluation run finishes successfully.

type EvalRunFailed

type EvalRunFailed interface {
	OnEvalRunFailed(ctx context.Context, suiteID id.SuiteID, runID id.EvalRunID, err error) error
}

EvalRunFailed is called when an evaluation run fails.

type EvalRunStarted

type EvalRunStarted interface {
	OnEvalRunStarted(ctx context.Context, suiteID id.SuiteID, runID id.EvalRunID, model string) error
}

EvalRunStarted is called when an evaluation run begins.

type Extension

type Extension interface {
	// Name returns a unique human-readable name for the plugin.
	Name() string
}

Extension is the base interface all Sentinel plugins must implement.

type PersonaEvalCompleted

type PersonaEvalCompleted interface {
	OnPersonaEvalCompleted(ctx context.Context, runID id.EvalRunID, personaName string, dimensions map[string]float64) error
}

PersonaEvalCompleted is called when a persona-aware evaluation finishes.

type PersonaEvalStarted

type PersonaEvalStarted interface {
	OnPersonaEvalStarted(ctx context.Context, runID id.EvalRunID, personaName string) error
}

PersonaEvalStarted is called when a persona-aware evaluation begins.

type PromptVersionCreated

type PromptVersionCreated interface {
	OnPromptVersionCreated(ctx context.Context, suiteID id.SuiteID, pvID id.PromptVersionID, version int) error
}

PromptVersionCreated is called when a prompt version is created.

type RedTeamCompleted

type RedTeamCompleted interface {
	OnRedTeamCompleted(ctx context.Context, suiteID id.SuiteID, bypassCount int, elapsed time.Duration) error
}

RedTeamCompleted is called when a red team evaluation finishes.

type RedTeamStarted

type RedTeamStarted interface {
	OnRedTeamStarted(ctx context.Context, suiteID id.SuiteID, attackCount int) error
}

RedTeamStarted is called when a red team evaluation begins.

type Registry

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

Registry holds registered plugins and dispatches lifecycle events to them. It type-caches plugins at registration time so emit calls iterate only over plugins that implement the relevant hook.

func NewRegistry

func NewRegistry(logger log.Logger) *Registry

NewRegistry creates a plugin registry with the given logger.

func (*Registry) EmitBaselineSaved

func (r *Registry) EmitBaselineSaved(ctx context.Context, suiteID id.SuiteID, baselineID id.BaselineID)

EmitBaselineSaved notifies all plugins that implement BaselineSaved.

func (*Registry) EmitCaseCompleted

func (r *Registry) EmitCaseCompleted(ctx context.Context, runID id.EvalRunID, caseID id.CaseID, score float64, elapsed time.Duration)

EmitCaseCompleted notifies all plugins that implement CaseCompleted.

func (*Registry) EmitCaseFailed

func (r *Registry) EmitCaseFailed(ctx context.Context, runID id.EvalRunID, caseID id.CaseID, caseErr error)

EmitCaseFailed notifies all plugins that implement CaseFailed.

func (*Registry) EmitCaseStarted

func (r *Registry) EmitCaseStarted(ctx context.Context, runID id.EvalRunID, caseID id.CaseID)

EmitCaseStarted notifies all plugins that implement CaseStarted.

func (*Registry) EmitComparisonCompleted

func (r *Registry) EmitComparisonCompleted(ctx context.Context, suiteID id.SuiteID, models []string, elapsed time.Duration)

EmitComparisonCompleted notifies all plugins that implement ComparisonCompleted.

func (*Registry) EmitEvalRunCompleted

func (r *Registry) EmitEvalRunCompleted(ctx context.Context, suiteID id.SuiteID, runID id.EvalRunID, passRate float64, elapsed time.Duration)

EmitEvalRunCompleted notifies all plugins that implement EvalRunCompleted.

func (*Registry) EmitEvalRunFailed

func (r *Registry) EmitEvalRunFailed(ctx context.Context, suiteID id.SuiteID, runID id.EvalRunID, runErr error)

EmitEvalRunFailed notifies all plugins that implement EvalRunFailed.

func (*Registry) EmitEvalRunStarted

func (r *Registry) EmitEvalRunStarted(ctx context.Context, suiteID id.SuiteID, runID id.EvalRunID, model string)

EmitEvalRunStarted notifies all plugins that implement EvalRunStarted.

func (*Registry) EmitPersonaEvalCompleted

func (r *Registry) EmitPersonaEvalCompleted(ctx context.Context, runID id.EvalRunID, personaName string, dimensions map[string]float64)

EmitPersonaEvalCompleted notifies all plugins that implement PersonaEvalCompleted.

func (*Registry) EmitPersonaEvalStarted

func (r *Registry) EmitPersonaEvalStarted(ctx context.Context, runID id.EvalRunID, personaName string)

EmitPersonaEvalStarted notifies all plugins that implement PersonaEvalStarted.

func (*Registry) EmitPromptVersionCreated

func (r *Registry) EmitPromptVersionCreated(ctx context.Context, suiteID id.SuiteID, pvID id.PromptVersionID, version int)

EmitPromptVersionCreated notifies all plugins that implement PromptVersionCreated.

func (*Registry) EmitRedTeamCompleted

func (r *Registry) EmitRedTeamCompleted(ctx context.Context, suiteID id.SuiteID, bypassCount int, elapsed time.Duration)

EmitRedTeamCompleted notifies all plugins that implement RedTeamCompleted.

func (*Registry) EmitRedTeamStarted

func (r *Registry) EmitRedTeamStarted(ctx context.Context, suiteID id.SuiteID, attackCount int)

EmitRedTeamStarted notifies all plugins that implement RedTeamStarted.

func (*Registry) EmitRegressionDetected

func (r *Registry) EmitRegressionDetected(ctx context.Context, suiteID id.SuiteID, baselineID id.BaselineID, delta float64)

EmitRegressionDetected notifies all plugins that implement RegressionDetected.

func (*Registry) EmitShutdown

func (r *Registry) EmitShutdown(ctx context.Context)

EmitShutdown notifies all plugins that implement Shutdown.

func (*Registry) Extensions

func (r *Registry) Extensions() []Extension

Extensions returns all registered plugins.

func (*Registry) Register

func (r *Registry) Register(e Extension)

Register adds a plugin and type-asserts it into all applicable hook caches. Plugins are notified in registration order.

type RegressionDetected

type RegressionDetected interface {
	OnRegressionDetected(ctx context.Context, suiteID id.SuiteID, baselineID id.BaselineID, delta float64) error
}

RegressionDetected is called when a regression is found against a baseline.

type Shutdown

type Shutdown interface {
	OnShutdown(ctx context.Context) error
}

Shutdown is called during graceful shutdown.

Jump to

Keyboard shortcuts

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