( ctx context.Context, method string, path string, query url.Values, requestBody any, )
| 5427 | } |
| 5428 | |
| 5429 | func (c *unixSocketClient) doSessionPrompt( |
| 5430 | ctx context.Context, |
| 5431 | method string, |
| 5432 | path string, |
| 5433 | query url.Values, |
| 5434 | requestBody any, |
| 5435 | ) (SessionPromptRecord, error) { |
| 5436 | response, err := c.doRequestWithCredentialsAndClient( |
| 5437 | ctx, |
| 5438 | method, |
| 5439 | path, |
| 5440 | query, |
| 5441 | requestBody, |
| 5442 | "", |
| 5443 | agentidentity.Credentials{}, |
| 5444 | c.streamHTTPClient(), |
| 5445 | ) |
| 5446 | if err != nil { |
| 5447 | return SessionPromptRecord{}, err |
| 5448 | } |
| 5449 | defer func() { |
| 5450 | _ = response.Body.Close() |
| 5451 | }() |
| 5452 | |
| 5453 | if response.StatusCode < 200 || response.StatusCode >= 300 { |
| 5454 | return SessionPromptRecord{}, readAPIError(response) |
| 5455 | } |
| 5456 | |
| 5457 | if strings.Contains(strings.ToLower(response.Header.Get("Content-Type")), "text/event-stream") { |
| 5458 | var events []AgentEventRecord |
| 5459 | if err := decodeSSE(ctx, response.Body, func(event SSEEvent) error { |
| 5460 | var payload AgentEventRecord |
| 5461 | if len(event.Data) > 0 { |
| 5462 | if err := json.Unmarshal(event.Data, &payload); err != nil { |
| 5463 | return fmt.Errorf("cli: decode prompt event: %w", err) |
| 5464 | } |
| 5465 | } |
| 5466 | if payload.Type == "" { |
| 5467 | payload.Type = event.Event |
| 5468 | } |
| 5469 | events = append(events, payload) |
| 5470 | return nil |
| 5471 | }); err != nil { |
| 5472 | return SessionPromptRecord{}, err |
| 5473 | } |
| 5474 | return SessionPromptRecord{Events: events}, nil |
| 5475 | } |
| 5476 | |
| 5477 | var responseBody contract.SendPromptResultResponse |
| 5478 | if err := json.NewDecoder(response.Body).Decode(&responseBody); err != nil { |
| 5479 | return SessionPromptRecord{}, fmt.Errorf("cli: decode %s %s response: %w", method, path, err) |
| 5480 | } |
| 5481 | return SessionPromptRecord{Prompt: responseBody.Prompt}, nil |
| 5482 | } |
| 5483 | |
| 5484 | func (c *unixSocketClient) doRequest( |
| 5485 | ctx context.Context, |
no test coverage detected