( sessions: SessionMeta[], facets: Map<string, SessionFacets>, )
| 1143 | } |
| 1144 | |
| 1145 | function aggregateData( |
| 1146 | sessions: SessionMeta[], |
| 1147 | facets: Map<string, SessionFacets>, |
| 1148 | ): AggregatedData { |
| 1149 | const result: AggregatedData = { |
| 1150 | total_sessions: sessions.length, |
| 1151 | sessions_with_facets: facets.size, |
| 1152 | date_range: { start: '', end: '' }, |
| 1153 | total_messages: 0, |
| 1154 | total_duration_hours: 0, |
| 1155 | total_input_tokens: 0, |
| 1156 | total_output_tokens: 0, |
| 1157 | tool_counts: {}, |
| 1158 | languages: {}, |
| 1159 | git_commits: 0, |
| 1160 | git_pushes: 0, |
| 1161 | projects: {}, |
| 1162 | goal_categories: {}, |
| 1163 | outcomes: {}, |
| 1164 | satisfaction: {}, |
| 1165 | helpfulness: {}, |
| 1166 | session_types: {}, |
| 1167 | friction: {}, |
| 1168 | success: {}, |
| 1169 | session_summaries: [], |
| 1170 | // New stats |
| 1171 | total_interruptions: 0, |
| 1172 | total_tool_errors: 0, |
| 1173 | tool_error_categories: {}, |
| 1174 | user_response_times: [], |
| 1175 | median_response_time: 0, |
| 1176 | avg_response_time: 0, |
| 1177 | sessions_using_task_agent: 0, |
| 1178 | sessions_using_mcp: 0, |
| 1179 | sessions_using_web_search: 0, |
| 1180 | sessions_using_web_fetch: 0, |
| 1181 | // Additional stats |
| 1182 | total_lines_added: 0, |
| 1183 | total_lines_removed: 0, |
| 1184 | total_files_modified: 0, |
| 1185 | days_active: 0, |
| 1186 | messages_per_day: 0, |
| 1187 | message_hours: [], |
| 1188 | // Multi-clauding stats (matching Python reference) |
| 1189 | multi_clauding: { |
| 1190 | overlap_events: 0, |
| 1191 | sessions_involved: 0, |
| 1192 | user_messages_during: 0, |
| 1193 | }, |
| 1194 | } |
| 1195 | |
| 1196 | const dates: string[] = [] |
| 1197 | const allResponseTimes: number[] = [] |
| 1198 | const allMessageHours: number[] = [] |
| 1199 | |
| 1200 | for (const session of sessions) { |
| 1201 | dates.push(session.start_time) |
| 1202 | result.total_messages += session.user_message_count |
no test coverage detected