Smalltalk. And yes, mapping code components to filesystem objects is a kind of an impedance mismatch.
I wonder if there is already a modern tool/suite for Node/Python inspired by Smalltalk...
There is LivelyKernel [2] but some versions are more file-oriented (like Lively 4 [3])
[2] https://lively-kernel.org/
[3] https://lively-kernel.org/lively4/lively4-jens/start.html