In the case of GetCurrentState, the decides effect is used, rather than returning logic. To have your code work, you would need to update it to
if (not Switch.GetCurrentState[Agent]):
Print("meow")
else if (Switch.GetCurrentState[Agent]):
Print("meow")
GetCurrentState will fail (rather than return false) or succeed (rather than return true).
Related to use of tuple() with listenable: this is to indicate Await (a method of the superinterface awaitable) produces value () - note () is a value with type tuple() - and to indicate Subscribe of superinterface subscribable must be passed a function matching type{_():void} (a callback with a () passed as argument). For its use on IfOnWhenCheckedEvent and IfOffWhenCheckedEvent: this means these events, when signaled, provide no information short of the fact they were signaled.