parsePermissionRule function

({String? content, String toolName}) parsePermissionRule(
  1. String rule
)

Parse a permission rule string like "Bash(npm install)" or "FileEdit(src/**)".

Implementation

({String toolName, String? content}) parsePermissionRule(String rule) {
  // Handle escaped parentheses
  final openParen = _findUnescapedChar(rule, '(');
  if (openParen == -1) {
    return (toolName: rule.trim(), content: null);
  }

  final closeParen = _findLastUnescapedChar(rule, ')');
  if (closeParen == -1 || closeParen <= openParen) {
    return (toolName: rule.trim(), content: null);
  }

  final toolName = rule.substring(0, openParen).trim();
  var content = rule.substring(openParen + 1, closeParen);

  // Unescape parentheses in content
  content = content.replaceAll(r'\(', '(').replaceAll(r'\)', ')');

  return (toolName: toolName, content: content.isEmpty ? null : content);
}