package main import ( "fmt" "go.wit.com/lib/protobuf/chatpb" "google.golang.org/genai" ) func convertToPB(resp *genai.GenerateContentResponse) *chatpb.ChatEntry { entry := &chatpb.ChatEntry{} if resp == nil || len(resp.Candidates) == 0 || resp.Candidates[0].Content == nil { return entry } content := resp.Candidates[0].Content for _, part := range content.Parts { if part.Text != "" { entry.Parts = append(entry.Parts, &chatpb.Part{ PartType: &chatpb.Part_Text{Text: part.Text}, }) } if fc := part.FunctionCall; fc != nil { fmt.Printf("Gemini API requested to execute command: %s\n", fc.Name) entry.Parts = append(entry.Parts, &chatpb.Part{ PartType: &chatpb.Part_FunctionCall{ FunctionCall: &chatpb.FunctionCall{ Name: fc.Name, Args: &chatpb.ArgsInfo{}, // TODO: Properly map args from fc.Args map[string]any }, }, }) } if fr := part.FunctionResponse; fr != nil { // Convert the FunctionResponse to the protobuf equivalent entry.Parts = append(entry.Parts, &chatpb.Part{ PartType: &chatpb.Part_FunctionResponse{ FunctionResponse: &chatpb.FunctionResponse{ Name: fr.Name, // TODO: Properly map the response content }, }, }) } } return entry }