mirror of
https://github.com/Ed1s0nZ/CyberStrikeAI.git
synced 2026-08-15 15:40:38 +02:00
50 lines
1.3 KiB
Go
50 lines
1.3 KiB
Go
package multiagent
|
|
|
|
import "strings"
|
|
|
|
type einoMainAssistantCompleteHandler struct {
|
|
agentName string
|
|
emitter *einoMainResponseStreamEmitter
|
|
stdoutSuppressor *einoExecuteStdoutSuppressor
|
|
assistantOutput *einoAssistantOutputAccumulator
|
|
}
|
|
|
|
type einoMainAssistantCompleteHandlerConfig struct {
|
|
AgentName string
|
|
Emitter *einoMainResponseStreamEmitter
|
|
StdoutSuppressor *einoExecuteStdoutSuppressor
|
|
AssistantOutput *einoAssistantOutputAccumulator
|
|
}
|
|
|
|
func newEinoMainAssistantCompleteHandler(cfg einoMainAssistantCompleteHandlerConfig) *einoMainAssistantCompleteHandler {
|
|
return &einoMainAssistantCompleteHandler{
|
|
agentName: cfg.AgentName,
|
|
emitter: cfg.Emitter,
|
|
stdoutSuppressor: cfg.StdoutSuppressor,
|
|
assistantOutput: cfg.AssistantOutput,
|
|
}
|
|
}
|
|
|
|
func (h *einoMainAssistantCompleteHandler) EmitComplete(content string) bool {
|
|
if h == nil {
|
|
return false
|
|
}
|
|
body := strings.TrimSpace(content)
|
|
if body == "" {
|
|
return false
|
|
}
|
|
if h.stdoutSuppressor != nil {
|
|
if dup := h.stdoutSuppressor.Consume(); dup != "" && body == dup {
|
|
if h.assistantOutput != nil {
|
|
h.assistantOutput.RecordMainAssistant(h.agentName, body)
|
|
}
|
|
return false
|
|
}
|
|
}
|
|
emitted := h.emitter.EmitDelta(body, body)
|
|
if h.assistantOutput != nil {
|
|
h.assistantOutput.RecordMainAssistant(h.agentName, body)
|
|
}
|
|
return emitted
|
|
}
|