parseManifest function

PluginManifest parseManifest(
  1. Map<String, dynamic> json
)

Parse a plugin manifest from a JSON map.

Returns a PluginManifest with sensible defaults for missing fields.

Implementation

PluginManifest parseManifest(Map<String, dynamic> json) {
  final authorRaw = json['author'];
  PluginAuthor? author;
  if (authorRaw is String) {
    author = PluginAuthor(name: authorRaw);
  } else if (authorRaw is Map<String, dynamic>) {
    author = PluginAuthor(
      name: authorRaw['name'] as String? ?? 'unknown',
      email: authorRaw['email'] as String?,
      url: authorRaw['url'] as String?,
    );
  }

  return PluginManifest(
    name: json['name'] as String? ?? 'unknown',
    version: json['version'] as String? ?? '0.0.0',
    description: json['description'] as String?,
    author: author,
    commands:
        (json['commands'] as List?)?.cast<String>() ?? const [],
    skills: (json['skills'] as List?)?.cast<String>() ?? const [],
    hooks: (json['hooks'] as List?)?.cast<String>() ?? const [],
    mcpServers:
        (json['mcpServers'] as List?)?.cast<String>() ?? const [],
    outputStyles:
        (json['outputStyles'] as List?)?.cast<String>() ?? const [],
  );
}