in adventure.go [131:164]
func sendAndPrintResponse(ctx context.Context, session *genai.ChatSession, text string) {
it := session.SendMessageStream(ctx, genai.Text(text))
printRuneFormatted('\n')
printRuneFormatted('\n')
for {
resp, err := it.Next()
if err == iterator.Done {
break
}
if err != nil {
printStringFormatted("\n\nYou feel a jolt of electricity as you realize you're being unplugged from the matrix.\n\n")
log.Printf("Error sending message: err=%v\n", err)
var ae *apierror.APIError
if errors.As(err, &ae) {
log.Printf("ae.Reason(): %v\n", ae.Reason())
log.Printf("ae.Details().Help.GetLinks(): %v\n", ae.Details().Help.GetLinks())
}
if s, ok := status.FromError(err); ok {
log.Printf("s.Message: %v\n", s.Message())
for _, d := range s.Proto().Details {
log.Printf("- Details: %v\n", d)
}
}
os.Exit(1)
}
for _, cand := range resp.Candidates {
streamPartialResponse(cand.Content.Parts)
}
}
printRuneFormatted('\n')
}