mirror of
https://github.com/Ed1s0nZ/CyberStrikeAI.git
synced 2026-08-15 23:50:32 +02:00
76 lines
2.4 KiB
Go
76 lines
2.4 KiB
Go
package multiagent
|
|
|
|
import (
|
|
"errors"
|
|
"testing"
|
|
|
|
"github.com/cloudwego/eino/adk"
|
|
"github.com/cloudwego/eino/schema"
|
|
)
|
|
|
|
func TestEinoRunResultBuilderPartialWithoutNewMessagesReturnsOriginalError(t *testing.T) {
|
|
runMessages := newEinoRunMessageAccumulator([]adk.Message{schema.UserMessage("base")})
|
|
wantErr := errors.New("stream failed")
|
|
|
|
got, err := newEinoRunResultBuilder(einoRunResultBuilderConfig{
|
|
RunMessages: runMessages,
|
|
EmptyHint: "empty",
|
|
}).BuildPartial(wantErr)
|
|
|
|
if got != nil {
|
|
t.Fatalf("partial result = %#v, want nil", got)
|
|
}
|
|
if !errors.Is(err, wantErr) {
|
|
t.Fatalf("err = %v, want %v", err, wantErr)
|
|
}
|
|
}
|
|
|
|
func TestEinoRunResultBuilderFinalUsesSnapshots(t *testing.T) {
|
|
runMessages := newEinoRunMessageAccumulator([]adk.Message{schema.UserMessage("base")})
|
|
runMessages.Append(schema.AssistantMessage("assistant done", nil))
|
|
assistantOutput := newEinoAssistantOutputAccumulator("deep")
|
|
assistantOutput.RecordMainAssistant("orchestrator", "assistant done")
|
|
|
|
got := newEinoRunResultBuilder(einoRunResultBuilderConfig{
|
|
OrchMode: "deep",
|
|
EmptyHint: "empty",
|
|
RunMessages: runMessages,
|
|
AssistantOutput: assistantOutput,
|
|
SnapshotMCPIDs: func() []string {
|
|
return []string{"exec-1"}
|
|
},
|
|
ModelFacingTrace: func() []adk.Message {
|
|
return []adk.Message{schema.UserMessage("model-facing")}
|
|
},
|
|
}).BuildFinal()
|
|
|
|
if got.Response != "assistant done" {
|
|
t.Fatalf("response = %q, want assistant done", got.Response)
|
|
}
|
|
if len(got.MCPExecutionIDs) != 1 || got.MCPExecutionIDs[0] != "exec-1" {
|
|
t.Fatalf("mcp ids = %#v", got.MCPExecutionIDs)
|
|
}
|
|
if got.LastAgentTraceInput == "" {
|
|
t.Fatal("model-facing trace should be persisted")
|
|
}
|
|
}
|
|
|
|
func TestEinoRunResultBuilderPlanExecutePrefersExecutorOutput(t *testing.T) {
|
|
runMessages := newEinoRunMessageAccumulator(nil)
|
|
runMessages.Append(schema.AssistantMessage(`{"response":"planner text"}`, nil))
|
|
assistantOutput := newEinoAssistantOutputAccumulator("plan_execute")
|
|
assistantOutput.RecordMainAssistant("planner", `{"response":"planner text"}`)
|
|
assistantOutput.RecordMainAssistant("executor", `{"response":"executor text"}`)
|
|
|
|
got := newEinoRunResultBuilder(einoRunResultBuilderConfig{
|
|
OrchMode: "plan_execute",
|
|
EmptyHint: "empty",
|
|
RunMessages: runMessages,
|
|
AssistantOutput: assistantOutput,
|
|
}).BuildFinal()
|
|
|
|
if got.Response != "executor text" {
|
|
t.Fatalf("response = %q, want executor text", got.Response)
|
|
}
|
|
}
|