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,54 @@
|
||||
package multiagent
|
||||
|
||||
import "github.com/cloudwego/eino/adk"
|
||||
|
||||
type einoAgentEventIteratorStarter func([]adk.Message) *adk.AsyncIterator[*adk.AgentEvent]
|
||||
|
||||
type einoInitialIteratorStartHandlerConfig struct {
|
||||
ConversationID string
|
||||
OrchMode string
|
||||
Progress func(eventType, message string, data interface{})
|
||||
UseTurnLoop bool
|
||||
StartRunner einoAgentEventIteratorStarter
|
||||
StartTurnLoop einoAgentEventIteratorStarter
|
||||
}
|
||||
|
||||
type einoInitialIteratorStartHandler struct {
|
||||
cfg einoInitialIteratorStartHandlerConfig
|
||||
}
|
||||
|
||||
func newEinoInitialIteratorStartHandler(cfg einoInitialIteratorStartHandlerConfig) *einoInitialIteratorStartHandler {
|
||||
return &einoInitialIteratorStartHandler{cfg: cfg}
|
||||
}
|
||||
|
||||
func (h *einoInitialIteratorStartHandler) StartIfNeeded(existing *adk.AsyncIterator[*adk.AgentEvent], msgs []adk.Message) *adk.AsyncIterator[*adk.AgentEvent] {
|
||||
if existing != nil {
|
||||
return existing
|
||||
}
|
||||
if h == nil {
|
||||
return nil
|
||||
}
|
||||
if h.cfg.UseTurnLoop {
|
||||
h.emitTurnLoopTakeover()
|
||||
if h.cfg.StartTurnLoop == nil {
|
||||
return nil
|
||||
}
|
||||
return h.cfg.StartTurnLoop(msgs)
|
||||
}
|
||||
if h.cfg.StartRunner == nil {
|
||||
return nil
|
||||
}
|
||||
return h.cfg.StartRunner(msgs)
|
||||
}
|
||||
|
||||
func (h *einoInitialIteratorStartHandler) emitTurnLoopTakeover() {
|
||||
if h == nil || h.cfg.Progress == nil {
|
||||
return
|
||||
}
|
||||
h.cfg.Progress("progress", "Eino TurnLoop 常驻多轮 runtime 已接管本轮会话。", map[string]interface{}{
|
||||
"conversationId": h.cfg.ConversationID,
|
||||
"source": "eino",
|
||||
"orchestration": h.cfg.OrchMode,
|
||||
"kind": "turn_loop_takeover",
|
||||
})
|
||||
}
|
||||
Reference in New Issue
Block a user