SessionMeta.fromJson constructor
Deserialize from JSON.
Implementation
factory SessionMeta.fromJson(Map<String, dynamic> json) {
return SessionMeta(
sessionId: json['session_id'] as String? ?? 'unknown',
projectPath: json['project_path'] as String? ?? '',
startTime: json['start_time'] as String? ?? '',
durationMinutes: json['duration_minutes'] as int? ?? 0,
userMessageCount: json['user_message_count'] as int? ?? 0,
assistantMessageCount: json['assistant_message_count'] as int? ?? 0,
toolCounts: _castMapInt(json['tool_counts']),
languages: _castMapInt(json['languages']),
gitCommits: json['git_commits'] as int? ?? 0,
gitPushes: json['git_pushes'] as int? ?? 0,
inputTokens: json['input_tokens'] as int? ?? 0,
outputTokens: json['output_tokens'] as int? ?? 0,
firstPrompt: json['first_prompt'] as String? ?? '',
summary: json['summary'] as String?,
userInterruptions: json['user_interruptions'] as int? ?? 0,
userResponseTimes: _castListDouble(json['user_response_times']),
toolErrors: json['tool_errors'] as int? ?? 0,
toolErrorCategories: _castMapInt(json['tool_error_categories']),
usesTaskAgent: json['uses_task_agent'] as bool? ?? false,
usesMcp: json['uses_mcp'] as bool? ?? false,
usesWebSearch: json['uses_web_search'] as bool? ?? false,
usesWebFetch: json['uses_web_fetch'] as bool? ?? false,
linesAdded: json['lines_added'] as int? ?? 0,
linesRemoved: json['lines_removed'] as int? ?? 0,
filesModified: json['files_modified'] as int? ?? 0,
messageHours: _castListInt(json['message_hours']),
userMessageTimestamps: _castListString(json['user_message_timestamps']),
);
}