mirror of
https://github.com/Ed1s0nZ/CyberStrikeAI.git
synced 2026-08-15 15:40:38 +02:00
Add files via upload
This commit is contained in:
@@ -0,0 +1,102 @@
|
||||
package handler
|
||||
|
||||
import (
|
||||
"strings"
|
||||
)
|
||||
|
||||
const (
|
||||
hitlPayloadUserMessage = "userMessage"
|
||||
hitlPayloadThinking = "thinking"
|
||||
hitlPayloadReasoningChain = "reasoningChain"
|
||||
hitlPayloadPlanning = "planning"
|
||||
)
|
||||
|
||||
type hitlCognitionFields struct {
|
||||
UserMessage string
|
||||
Thinking string
|
||||
ReasoningChain string
|
||||
Planning string
|
||||
}
|
||||
|
||||
func (h *AgentHandler) enrichHitlApprovalPayload(conversationID, assistantMessageID string, payload map[string]interface{}) {
|
||||
if h == nil || payload == nil {
|
||||
return
|
||||
}
|
||||
cog := h.collectHitlCognition(conversationID, assistantMessageID)
|
||||
if s := strings.TrimSpace(cog.UserMessage); s != "" {
|
||||
payload[hitlPayloadUserMessage] = s
|
||||
}
|
||||
if s := strings.TrimSpace(cog.Thinking); s != "" {
|
||||
payload[hitlPayloadThinking] = s
|
||||
}
|
||||
if s := strings.TrimSpace(cog.ReasoningChain); s != "" {
|
||||
payload[hitlPayloadReasoningChain] = s
|
||||
}
|
||||
if s := strings.TrimSpace(cog.Planning); s != "" {
|
||||
payload[hitlPayloadPlanning] = s
|
||||
}
|
||||
}
|
||||
|
||||
func (h *AgentHandler) collectHitlCognition(conversationID, assistantMessageID string) hitlCognitionFields {
|
||||
var out hitlCognitionFields
|
||||
if h.tasks != nil {
|
||||
out = h.tasks.GetHitlCognition(conversationID)
|
||||
}
|
||||
if strings.TrimSpace(out.UserMessage) == "" && h.db != nil {
|
||||
if msg, err := h.db.GetTurnUserMessage(conversationID, assistantMessageID); err == nil {
|
||||
out.UserMessage = msg
|
||||
}
|
||||
}
|
||||
if h.db != nil && assistantMessageID != "" {
|
||||
dbCog, err := h.db.GetAssistantCognitionTexts(assistantMessageID)
|
||||
if err == nil {
|
||||
if strings.TrimSpace(out.Thinking) == "" {
|
||||
out.Thinking = dbCog.Thinking
|
||||
}
|
||||
if strings.TrimSpace(out.ReasoningChain) == "" {
|
||||
out.ReasoningChain = dbCog.ReasoningChain
|
||||
}
|
||||
if strings.TrimSpace(out.Planning) == "" {
|
||||
out.Planning = dbCog.Planning
|
||||
}
|
||||
}
|
||||
}
|
||||
return out
|
||||
}
|
||||
|
||||
func snapshotHitlCognitionFromStreams(thinkingStreams map[string]*thinkingBuf, respPlan *responsePlanAgg) (thinking, reasoningChain, planning string) {
|
||||
if len(thinkingStreams) > 0 {
|
||||
var thinkingParts, reasoningParts []string
|
||||
for _, tb := range thinkingStreams {
|
||||
if tb == nil {
|
||||
continue
|
||||
}
|
||||
content := strings.TrimSpace(tb.b.String())
|
||||
if content == "" {
|
||||
continue
|
||||
}
|
||||
if tb.persistAs == "reasoning_chain" {
|
||||
reasoningParts = append(reasoningParts, content)
|
||||
} else {
|
||||
thinkingParts = append(thinkingParts, content)
|
||||
}
|
||||
}
|
||||
thinking = strings.Join(thinkingParts, "\n\n")
|
||||
reasoningChain = strings.Join(reasoningParts, "\n\n")
|
||||
}
|
||||
if respPlan != nil {
|
||||
planning = strings.TrimSpace(respPlan.b.String())
|
||||
}
|
||||
return thinking, reasoningChain, planning
|
||||
}
|
||||
|
||||
func (h *AgentHandler) syncHitlCognitionFromProgress(conversationID, assistantMessageID string, thinkingStreams map[string]*thinkingBuf, respPlan *responsePlanAgg) {
|
||||
if h == nil || h.tasks == nil {
|
||||
return
|
||||
}
|
||||
thinking, reasoning, planning := snapshotHitlCognitionFromStreams(thinkingStreams, respPlan)
|
||||
if thinking == "" && reasoning == "" && planning == "" {
|
||||
return
|
||||
}
|
||||
h.tasks.UpdateHitlCognitionSnapshot(conversationID, assistantMessageID, thinking, reasoning, planning)
|
||||
}
|
||||
Reference in New Issue
Block a user