This commit is contained in:
Quanzheng Long
2026-03-13 13:21:11 -07:00
parent d50801d871
commit 708c0dff7f
4 changed files with 20 additions and 16 deletions
+1 -1
View File
@@ -57,7 +57,7 @@ func goNodeCallback(userData C.ulong, node *C.char, argJSON *C.char, stateJSON *
sends := make([]map[string]any, 0, len(cmd.Goto))
for _, send := range cmd.Goto {
sends = append(sends, map[string]any{
"node": send.Node,
"node": NodeName(send.Node),
"arg": send.NodeInput,
})
}
+1 -1
View File
@@ -54,7 +54,7 @@ type WaitEvent struct {
}
type Send struct {
Node string
Node NodeFunc
NodeInput any
}
+12 -7
View File
@@ -31,7 +31,7 @@ func (m *mockLLM) invoke() []decision {
type lunchWorkflow struct {
planner *mockLLM
names map[string]string
names map[string]ag.NodeFunc
}
func outputSlice(state map[string]any) []string {
@@ -151,7 +151,7 @@ func TestSubAgentsEquivalentFlow(t *testing.T) {
}
workflow := &lunchWorkflow{
planner: planner,
names: make(map[string]string),
names: make(map[string]ag.NodeFunc),
}
graph := ag.NewAdvancedStateGraph()
@@ -159,11 +159,16 @@ func TestSubAgentsEquivalentFlow(t *testing.T) {
graph.AddAsyncChannel("subagent_completion_channel")
graph.AddAsyncChannel("user_input_channel")
workflow.names["llm"] = graph.AddNode(workflow.llmNode)
workflow.names["wait"] = graph.AddNode(workflow.waitNode)
workflow.names["tool"] = graph.AddNode(workflow.toolNode)
workflow.names["sub"] = graph.AddNode(workflow.subAgentNode)
workflow.names["order"] = graph.AddNode(workflow.orderFoodNode)
graph.AddNode(workflow.llmNode)
graph.AddNode(workflow.waitNode)
graph.AddNode(workflow.toolNode)
graph.AddNode(workflow.subAgentNode)
graph.AddNode(workflow.orderFoodNode)
workflow.names["llm"] = workflow.llmNode
workflow.names["wait"] = workflow.waitNode
workflow.names["tool"] = workflow.toolNode
workflow.names["sub"] = workflow.subAgentNode
workflow.names["order"] = workflow.orderFoodNode
graph.SetEntryNode(workflow.llmNode)
graph.SetFinishNode(workflow.orderFoodNode)
+6 -7
View File
@@ -7,7 +7,6 @@ import (
)
type primitiveWorkflow struct {
names map[string]string
}
func logsSlice(state map[string]any) []string {
@@ -38,7 +37,7 @@ func (w *primitiveWorkflow) startNode(ctx *ag.Context, _ any, state map[string]a
return ag.Command{
Update: state,
Goto: []ag.Send{
{Node: w.names["middle"], NodeInput: "from_start"},
{Node: w.middleNode, NodeInput: "from_start"},
},
}, nil
}
@@ -50,7 +49,7 @@ func (w *primitiveWorkflow) middleNode(ctx *ag.Context, input any, state map[str
return ag.Command{
Update: state,
Goto: []ag.Send{
{Node: w.names["finish"], NodeInput: "from_middle"},
{Node: w.finishNode, NodeInput: "from_middle"},
},
}, nil
}
@@ -64,12 +63,12 @@ func (w *primitiveWorkflow) finishNode(ctx *ag.Context, input any, state map[str
}
func TestInputAndStatePrimitivesCompatible(t *testing.T) {
workflow := &primitiveWorkflow{names: make(map[string]string)}
workflow := &primitiveWorkflow{}
graph := ag.NewAdvancedStateGraph()
workflow.names["start"] = graph.AddNode(workflow.startNode)
workflow.names["middle"] = graph.AddNode(workflow.middleNode)
workflow.names["finish"] = graph.AddNode(workflow.finishNode)
graph.AddNode(workflow.startNode)
graph.AddNode(workflow.middleNode)
graph.AddNode(workflow.finishNode)
graph.SetEntryNode(workflow.startNode)
graph.SetFinishNode(workflow.finishNode)