Scripting function takes a dict however the received datatype is DotReferenceJythonMap

The JythonMap behaves the same as a dict for most purposes.

https://files.inductiveautomation.com/sdk/javadoc/ignition81/8.1.32/com/inductiveautomation/perspective/gateway/script/DotReferenceJythonMap.html

If you look at the reference above, you'll see it supports all the usual methods of a python dict, including keys(), items(), etc.

On closer inspection, there is also a toDict() method that presumably will explicitly return the dict inside the wrapper. However, you should never really need it in everyday usage.

See also the discussion here:

EDIT: updated javadocs reference to latest version (as of this posting)