Under the hood
Permission rule string parsing now returns explicit kinds instead of a loose fallback.
The parser for permission rule strings like Tool(args) now returns a discriminated result of kind bare, malformed, or call instead of always falling back to a bare tool name, and explicitly rejects rule content containing stray parentheses.