(sess *session.Session)
| 90 | } |
| 91 | |
| 92 | func sessionToData(sess *session.Session) SessionData { |
| 93 | messages := sess.GetAllMessages() |
| 94 | exportMessages := make([]Message, len(messages)) |
| 95 | for i, msg := range messages { |
| 96 | toolCalls := make([]ToolCall, len(msg.Message.ToolCalls)) |
| 97 | for j, tc := range msg.Message.ToolCalls { |
| 98 | toolCalls[j] = ToolCall{ |
| 99 | ID: tc.ID, |
| 100 | Name: tc.Function.Name, |
| 101 | Arguments: tc.Function.Arguments, |
| 102 | } |
| 103 | } |
| 104 | exportMessages[i] = Message{ |
| 105 | Role: msg.Message.Role, |
| 106 | Content: msg.Message.Content, |
| 107 | ReasoningContent: msg.Message.ReasoningContent, |
| 108 | ToolCallID: msg.Message.ToolCallID, |
| 109 | ToolCalls: toolCalls, |
| 110 | AgentName: msg.AgentName, |
| 111 | Implicit: msg.Implicit, |
| 112 | } |
| 113 | } |
| 114 | return SessionData{ |
| 115 | Title: sess.Title, |
| 116 | CreatedAt: sess.CreatedAt, |
| 117 | InputTokens: sess.InputTokens, |
| 118 | OutputTokens: sess.OutputTokens, |
| 119 | Cost: sess.TotalCost(), |
| 120 | Messages: exportMessages, |
| 121 | } |
| 122 | } |
| 123 | |
| 124 | // ToFile exports session data to an HTML file. |
| 125 | // If filename is empty, a default name based on the title and timestamp is used. |
no test coverage detected