From f0c2b4133bfad10759406e3c3c528bbdd146b1e1 Mon Sep 17 00:00:00 2001 From: DmitrL-dev <84296377+DmitrL-dev@users.noreply.github.com> Date: Mon, 23 Mar 2026 20:52:28 +1000 Subject: [PATCH] feat: wire FFI to real 54-engine SentinelEngine pipeline (replaces toy regex) --- internal/domain/engines/ffi_sentinel.go | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/internal/domain/engines/ffi_sentinel.go b/internal/domain/engines/ffi_sentinel.go index a5f9a31..7074fa2 100644 --- a/internal/domain/engines/ffi_sentinel.go +++ b/internal/domain/engines/ffi_sentinel.go @@ -53,12 +53,15 @@ func NewNativeSentinelCore() (*NativeSentinelCore, error) { // sentinelAnalyzeResult matches the JSON returned by sentinel_analyze(). type sentinelAnalyzeResult struct { - Confidence float64 `json:"confidence"` - Categories []string `json:"categories"` - IsThreat bool `json:"is_threat"` - InputLength int `json:"input_length"` - AnalyzeCount uint64 `json:"analyze_count"` - Error string `json:"error,omitempty"` + Confidence float64 `json:"confidence"` + Categories []string `json:"categories"` + IsThreat bool `json:"is_threat"` + InputLength int `json:"input_length"` + AnalyzeCount uint64 `json:"analyze_count"` + EnginesTriggered int `json:"engines_triggered"` + ProcessingTimeUs uint64 `json:"processing_time_us"` + Indicators []string `json:"indicators"` + Error string `json:"error,omitempty"` } // analyze sends text through the Rust sentinel-core analysis pipeline. @@ -112,8 +115,8 @@ func (n *NativeSentinelCore) ScanPrompt(_ context.Context, prompt string) (*Scan ThreatType: threatType, Severity: severity, Confidence: res.Confidence, - Details: fmt.Sprintf("categories=%v", res.Categories), - Indicators: res.Categories, + Details: fmt.Sprintf("engines=%d categories=%v", res.EnginesTriggered, res.Categories), + Indicators: res.Indicators, Duration: time.Since(start), Timestamp: time.Now(), }, nil