execute method

  1. @override
Future<ToolResult> execute(
  1. Map<String, dynamic> input
)
override

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