A step debugger with no inspector to talk to, and the second SharedArrayBuffer that makes it pause
A breakpoint is not a feature you write. It is a favour the engine does you. When you set one in VS Code, nothing in your program changes: V8's inspector holds the isolate, walks the real call stack, and hands back scopes it already had. Every step debugger you have used is a thin client in front of that.
A Web Worker has no inspector. There is no --inspect port to open, no
inspector binding to require, no way to ask the engine to stop. So the first
question here was not how to build a debug UI. It was where a pause could
possibly come from.