(cmd *cobra.Command, client DaemonClient, id string, query SessionEventQuery)
| 686 | } |
| 687 | |
| 688 | func streamSessionEvents(cmd *cobra.Command, client DaemonClient, id string, query SessionEventQuery) error { |
| 689 | mode, err := resolveOutputFormat(cmd) |
| 690 | if err != nil { |
| 691 | return err |
| 692 | } |
| 693 | |
| 694 | encoder := json.NewEncoder(cmd.OutOrStdout()) |
| 695 | encoder.SetEscapeHTML(false) |
| 696 | |
| 697 | err = client.StreamSessionEvents(cmd.Context(), id, query, "", func(event SSEEvent) error { |
| 698 | var payload SessionEventRecord |
| 699 | if len(event.Data) > 0 { |
| 700 | if err := json.Unmarshal(event.Data, &payload); err != nil { |
| 701 | return fmt.Errorf("cli: decode session stream event: %w", err) |
| 702 | } |
| 703 | } |
| 704 | if payload.Type == "" { |
| 705 | payload.Type = event.Event |
| 706 | } |
| 707 | |
| 708 | switch mode { |
| 709 | case OutputJSON, OutputJSONL: |
| 710 | if err := encoder.Encode(payload); err != nil { |
| 711 | return err |
| 712 | } |
| 713 | case OutputToon: |
| 714 | if err := writeRawCommandOutput(cmd, renderToonObject("event", []string{ |
| 715 | sessionSequenceKey, |
| 716 | extensionTypeKey, |
| 717 | sessionAgentNameKey, |
| 718 | sessionTurnIDKey, |
| 719 | networkTimestampKey, |
| 720 | memoryContentKey, |
| 721 | }, []string{ |
| 722 | strconv.FormatInt(payload.Sequence, 10), |
| 723 | payload.Type, |
| 724 | payload.AgentName, |
| 725 | payload.TurnID, |
| 726 | formatTime(payload.Timestamp), |
| 727 | compactJSON(payload.Content), |
| 728 | })); err != nil { |
| 729 | return err |
| 730 | } |
| 731 | default: |
| 732 | if err := writeRawCommandOutput(cmd, strings.Join([]string{ |
| 733 | stringOrDash(formatTime(payload.Timestamp)), |
| 734 | stringOrDash(payload.Type), |
| 735 | stringOrDash(payload.AgentName), |
| 736 | stringOrDash(compactJSON(payload.Content)), |
| 737 | }, " ")); err != nil { |
| 738 | return err |
| 739 | } |
| 740 | } |
| 741 | |
| 742 | if payload.Type == session.EventTypeSessionStopped { |
| 743 | return errStopSSE |
| 744 | } |
| 745 | return nil |
no test coverage detected