waniwani eject writes the plumbing into the repo itself and leaves. What comes out is the same tree a build was producing all along, with your source moved under src/app/:
@waniwani/kit import gets rewritten to ./_runtime/…, and the dependency drops out of package.json. From then on the repo runs on Skybridge’s own CLI (dev, build, start) with no Waniwani in the loop.
--out <dir> leaves the source repo untouched. Either way the CLI prints what moved. Eject refuses to overwrite existing plumbing unless you pass --force, and it runs one way, with nothing to turn an ejected repo back.
Why the source moves under src/
Your source has to move undersrc/ for the compiled server to land where Skybridge’s entry wrapper looks for it. tsc derives rootDir from the widest common ancestor of the files it compiles, so source sitting beside src/ rather than inside it pushes every emitted path down a level and the wrapper’s import misses.
The trade eject makes
What an ejected repo gives up is the generator, and with it:- the build check, so
showWidget("typo")becomes a runtime failure again - name-from-filesystem, so adding a widget means editing
src/waniwani.tsand adding an entry undersrc/views/ - runtime fixes, since
src/_runtime/is a fork from the moment it lands