Major - Switch device functions yielding the wrong types

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.

3 Likes