mirror of
https://github.com/Ed1s0nZ/CyberStrikeAI.git
synced 2026-10-01 13:40:36 +02:00
Let audit_agent approve or reject with one System One call instead of chat JSON, while keeping the OpenAI-compatible backend as an option. Co-authored-by: Cursor <cursoragent@cursor.com>
75 lines
1.9 KiB
Go
75 lines
1.9 KiB
Go
package handler
|
|
|
|
import (
|
|
"encoding/json"
|
|
"strings"
|
|
|
|
"cyberstrike-ai/internal/config"
|
|
)
|
|
|
|
func (h *AgentHandler) hitlAuditEngineInfo() (backend, model string) {
|
|
backend = config.HitlAuditBackendOpenAI
|
|
if h == nil || h.config == nil {
|
|
return backend, ""
|
|
}
|
|
backend = h.config.Hitl.EffectiveAuditBackend()
|
|
if backend == config.HitlAuditBackendTypeSafe {
|
|
_, _, model = h.config.Hitl.TypeSafeConfigEffective()
|
|
return backend, model
|
|
}
|
|
return backend, strings.TrimSpace(h.config.Hitl.AuditModelEffective(h.config.OpenAI).Model)
|
|
}
|
|
|
|
func stringifyHitlJSON(v any) string {
|
|
if v == nil {
|
|
return ""
|
|
}
|
|
if s, ok := v.(string); ok {
|
|
return strings.TrimSpace(s)
|
|
}
|
|
b, err := json.Marshal(v)
|
|
if err != nil {
|
|
return ""
|
|
}
|
|
var s string
|
|
if json.Unmarshal(b, &s) == nil {
|
|
return strings.TrimSpace(s)
|
|
}
|
|
return strings.TrimSpace(string(b))
|
|
}
|
|
|
|
func inferHitlAuditBackendFromComment(comment string) string {
|
|
c := strings.ToLower(comment)
|
|
if strings.Contains(comment, "TypeSafe") || strings.Contains(comment, "破坏分") ||
|
|
strings.Contains(c, "choice=") || strings.Contains(comment, "Jev") {
|
|
return config.HitlAuditBackendTypeSafe
|
|
}
|
|
if strings.TrimSpace(comment) == "" {
|
|
return ""
|
|
}
|
|
return config.HitlAuditBackendOpenAI
|
|
}
|
|
|
|
func hitlAuditBackendFromRecord(decidedBy, comment, payloadJSON string) (backend, model string) {
|
|
if normalizeHitlDecidedBy(decidedBy) != "audit_agent" {
|
|
return "", ""
|
|
}
|
|
var root map[string]any
|
|
if err := json.Unmarshal([]byte(payloadJSON), &root); err == nil {
|
|
if appr, ok := root["hitlApproval"].(map[string]any); ok {
|
|
raw := stringifyHitlJSON(appr["auditBackend"])
|
|
if raw != "" {
|
|
backend = (config.HitlConfig{AuditBackend: raw}).EffectiveAuditBackend()
|
|
}
|
|
model = stringifyHitlJSON(appr["auditModel"])
|
|
}
|
|
}
|
|
if backend == "" {
|
|
backend = inferHitlAuditBackendFromComment(comment)
|
|
}
|
|
if backend == "" {
|
|
backend = config.HitlAuditBackendOpenAI
|
|
}
|
|
return backend, model
|
|
}
|