package agents import ( "testing" "g.fc.run/misc/byre/internal/api" ) func TestForkPoint(t *testing.T) { s1, s2 := "s1", "s2" ev := func(seq int64, sess *string, kind string, payload map[string]any) api.Event { return api.Event{Seq: seq, AgentSessionId: sess, Kind: kind, Payload: payload} } events := []api.Event{ ev(1, &s1, "user.message", map[string]any{"text": "go"}), ev(2, &s1, "agent.message", map[string]any{"text": "on it", "vendor_uuid": "u-msg"}), ev(3, &s1, "agent.tool_call", map[string]any{"id": "a", "vendor_uuid": "u-call-a"}), ev(4, &s1, "agent.tool_call", map[string]any{"id": "b", "vendor_uuid": "u-call-b"}), ev(5, &s1, "agent.tool_call", map[string]any{"id": "x", "parent_tool_use_id": "b"}), ev(6, nil, "snapshot.created", map[string]any{"n": 1}), ev(7, &s1, "agent.tool_result", map[string]any{"tool_use_id": "a", "vendor_uuid": "u-res-a"}), ev(8, &s2, "agent.tool_result", map[string]any{"tool_use_id": "b", "vendor_uuid": "u-other"}), ev(9, &s1, "agent.tool_result", map[string]any{"tool_use_id": "b", "vendor_uuid": "u-res-b"}), ev(10, &s1, "agent.message", map[string]any{"text": "done", "vendor_uuid": "u-done"}), ev(11, &s1, "turn.ended", map[string]any{}), ev(12, &s1, "user.message", map[string]any{"text": "more"}), ev(13, &s1, "agent.tool_call", map[string]any{"id": "c", "vendor_uuid": "u-call-c"}), ev(14, &s1, "agent.tool_result", map[string]any{"tool_use_id": "c", "vendor_uuid": "u-res-c"}), } for _, c := range []struct { seq int64 want string }{ {1, ""}, {2, "u-msg"}, {3, "u-res-b"}, {5, "u-res-b"}, {9, "u-res-b"}, {11, "u-done"}, {12, "u-done"}, {13, "u-res-c"}, } { got := forkPoint(events, s1, c.seq) if got != c.want { t.Errorf("forkPoint at seq %d = %q, want %q", c.seq, got, c.want) } } }