ProjectConfig.fromJson constructor

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

Implementation

factory ProjectConfig.fromJson(Map<String, dynamic> json) {
  Map<String, ModelUsageMetrics>? modelUsage;
  final raw = json['lastModelUsage'] as Map<String, dynamic>?;
  if (raw != null) {
    modelUsage = raw.map(
      (k, v) =>
          MapEntry(k, ModelUsageMetrics.fromJson(v as Map<String, dynamic>)),
    );
  }

  return ProjectConfig(
    allowedTools: (json['allowedTools'] as List?)?.cast<String>() ?? [],
    mcpContextUris: (json['mcpContextUris'] as List?)?.cast<String>() ?? [],
    mcpServers: json['mcpServers'] as Map<String, dynamic>?,
    lastAPIDuration: (json['lastAPIDuration'] as num?)?.toDouble(),
    lastAPIDurationWithoutRetries:
        (json['lastAPIDurationWithoutRetries'] as num?)?.toDouble(),
    lastToolDuration: (json['lastToolDuration'] as num?)?.toDouble(),
    lastCost: (json['lastCost'] as num?)?.toDouble(),
    lastDuration: (json['lastDuration'] as num?)?.toDouble(),
    lastLinesAdded: json['lastLinesAdded'] as int?,
    lastLinesRemoved: json['lastLinesRemoved'] as int?,
    lastTotalInputTokens: json['lastTotalInputTokens'] as int?,
    lastTotalOutputTokens: json['lastTotalOutputTokens'] as int?,
    lastTotalCacheCreationInputTokens:
        json['lastTotalCacheCreationInputTokens'] as int?,
    lastTotalCacheReadInputTokens:
        json['lastTotalCacheReadInputTokens'] as int?,
    lastTotalWebSearchRequests: json['lastTotalWebSearchRequests'] as int?,
    lastFpsAverage: (json['lastFpsAverage'] as num?)?.toDouble(),
    lastFpsLow1Pct: (json['lastFpsLow1Pct'] as num?)?.toDouble(),
    lastSessionId: json['lastSessionId'] as String?,
    lastModelUsage: modelUsage,
    lastSessionMetrics: (json['lastSessionMetrics'] as Map<String, dynamic>?)
        ?.map((k, v) => MapEntry(k, (v as num).toInt())),
    exampleFiles: (json['exampleFiles'] as List?)?.cast<String>(),
    exampleFilesGeneratedAt: json['exampleFilesGeneratedAt'] as int?,
    hasTrustDialogAccepted: json['hasTrustDialogAccepted'] as bool? ?? false,
    hasCompletedProjectOnboarding:
        json['hasCompletedProjectOnboarding'] as bool? ?? false,
    projectOnboardingSeenCount:
        json['projectOnboardingSeenCount'] as int? ?? 0,
    hasNeomageMdExternalIncludesApproved:
        json['hasNeomageMdExternalIncludesApproved'] as bool? ?? false,
    hasNeomageMdExternalIncludesWarningShown:
        json['hasNeomageMdExternalIncludesWarningShown'] as bool? ?? false,
    enabledMcpjsonServers: (json['enabledMcpjsonServers'] as List?)
        ?.cast<String>(),
    disabledMcpjsonServers: (json['disabledMcpjsonServers'] as List?)
        ?.cast<String>(),
    enableAllProjectMcpServers: json['enableAllProjectMcpServers'] as bool?,
    disabledMcpServers: (json['disabledMcpServers'] as List?)?.cast<String>(),
    enabledMcpServers: (json['enabledMcpServers'] as List?)?.cast<String>(),
    activeWorktreeSession:
        json['activeWorktreeSession'] as Map<String, dynamic>?,
    remoteControlSpawnMode: json['remoteControlSpawnMode'] as String?,
  );
}