( ctx context.Context, httpClient *http.Client, method string, url string, headers map[string]string, body map[string]any, )
| 932 | func collectCompletionStream(stream <-chan EventResult) (Response, error) { |
| 933 | response := Response{} |
| 934 | var text strings.Builder |
| 935 | for item := range stream { |
| 936 | if item.Err != nil { |
| 937 | return Response{}, item.Err |
| 938 | } |
| 939 | event := item.Event |
| 940 | switch getString(event, "type") { |
| 941 | case "text", "text_delta": |
| 942 | text.WriteString(getString(event, "text")) |
| 943 | case "tool_use": |
| 944 | input, _ := event["input"].(map[string]any) |
| 945 | response.ToolCalls = append(response.ToolCalls, map[string]any{ |
| 946 | "id": getString(event, "id"), "name": getString(event, "name"), "input": input, |
| 947 | }) |
| 948 | case "usage": |
| 949 | response.InputTokens = getInt(event, "input_tokens") |
| 950 | response.CacheReadInputTokens = getInt(event, "cache_read_input_tokens") |
| 951 | response.CacheCreationInputTokens = getInt(event, "cache_creation_input_tokens") |
no test coverage detected