mirror of
https://github.com/Ed1s0nZ/CyberStrikeAI.git
synced 2026-08-15 15:40:38 +02:00
70 lines
1.5 KiB
Go
70 lines
1.5 KiB
Go
package multiagent
|
|
|
|
import (
|
|
"strings"
|
|
|
|
"github.com/cloudwego/eino/adk"
|
|
"github.com/cloudwego/eino/schema"
|
|
)
|
|
|
|
type einoRunMessageAccumulator struct {
|
|
baseCount int
|
|
msgs []adk.Message
|
|
}
|
|
|
|
func newEinoRunMessageAccumulator(base []adk.Message) *einoRunMessageAccumulator {
|
|
msgs := append([]adk.Message(nil), base...)
|
|
return &einoRunMessageAccumulator{
|
|
baseCount: len(msgs),
|
|
msgs: msgs,
|
|
}
|
|
}
|
|
|
|
func (a *einoRunMessageAccumulator) Append(msg adk.Message) bool {
|
|
if a == nil || msg == nil {
|
|
return false
|
|
}
|
|
a.msgs = append(a.msgs, msg)
|
|
return true
|
|
}
|
|
|
|
func (a *einoRunMessageAccumulator) AppendToolMessage(content, toolCallID string, opts ...schema.ToolMessageOption) bool {
|
|
if strings.TrimSpace(toolCallID) == "" {
|
|
return false
|
|
}
|
|
return a.Append(schema.ToolMessage(content, toolCallID, opts...))
|
|
}
|
|
|
|
func (a *einoRunMessageAccumulator) AppendAssistantText(content string) bool {
|
|
content = strings.TrimSpace(content)
|
|
if content == "" {
|
|
return false
|
|
}
|
|
return a.Append(schema.AssistantMessage(content, nil))
|
|
}
|
|
|
|
func (a *einoRunMessageAccumulator) AppendAssistantToolCalls(toolCalls []schema.ToolCall) bool {
|
|
if len(toolCalls) == 0 {
|
|
return false
|
|
}
|
|
return a.Append(schema.AssistantMessage("", toolCalls))
|
|
}
|
|
|
|
func (a *einoRunMessageAccumulator) Messages() []adk.Message {
|
|
if a == nil {
|
|
return nil
|
|
}
|
|
return a.msgs
|
|
}
|
|
|
|
func (a *einoRunMessageAccumulator) BaseCount() int {
|
|
if a == nil {
|
|
return 0
|
|
}
|
|
return a.baseCount
|
|
}
|
|
|
|
func (a *einoRunMessageAccumulator) HasNewMessages() bool {
|
|
return a != nil && len(a.msgs) > a.baseCount
|
|
}
|