Perhaps the answer is no-code with an 'eject' function, that spits out actual code that you can then build on once you have exhausted the possibility of no-code.
Or, going in the other direction - using code to build the building blocks, which you can stitch together with no-code. Some libraries already do this, such as Elsa Workflows.
The problem with some of the no-code platforms that allow you to write code, is that the code is still within their framework, and you can't use the language's package ecosystem. The platforms that solve this will make the code-in-nocode function exponentially more powerful.