toJson method
JSON envelope for the app store + CLI/app interchange:
{"tools": {"<id>": bool}}. Corrupt input throws ConfigException;
the caller decides the fallback.
Implementation
Map<String, dynamic> toJson() => {'tools': Map<String, dynamic>.of(tools)};