execute method
Execute the tool with the given input.
Implementation
@override
Future<ToolResult> execute(Map<String, dynamic> input) async {
final validation = validateInput(input);
if (!validation.isValid) return ToolResult.error(validation.error!);
final parsed = ConfigToolInput.fromJson(input);
if (provider != null) return provider!(parsed);
final store = _stores[parsed.scope] ?? _stores['user']!;
switch (parsed.action) {
case 'get':
final val = store[parsed.key];
return val != null
? ToolResult.success(val.toString())
: ToolResult.error('Key not found: ${parsed.key}');
case 'set':
store[parsed.key!] = parsed.value;
return ToolResult.success('Set ${parsed.key} = ${parsed.value}');
case 'list':
final out = ConfigToolOutput(allValues: store, success: true);
return ToolResult.success(out.toString());
case 'reset':
final existed = store.containsKey(parsed.key);
store.remove(parsed.key);
return existed
? ToolResult.success('Reset ${parsed.key}')
: ToolResult.error('Key not found: ${parsed.key}');
default:
return ToolResult.error('Unknown action: ${parsed.action}');
}
}