Writing the interpreter rather than embedding one
Using JavaScript as the cart language would have been a weekend instead of a project. A hand-written lexer, parser and evaluator means the console controls its own semantics, its own error messages, and its own sandbox — and it is the part of this that is genuinely an exercise in language implementation rather than in gluing libraries together.