SessionMeta.fromJson constructor

SessionMeta.fromJson(
  1. Map<String, dynamic> json
)

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']),
  );
}