nexrall-code 0.5.40 → 0.5.42

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/dist/index.js +248 -150
  2. package/package.json +2 -1
package/dist/index.js CHANGED
@@ -17482,6 +17482,15 @@ var require_dist2 = __commonJS({
17482
17482
  }
17483
17483
  });
17484
17484
 
17485
+ // ../../node_modules/.pnpm/emoji-regex@10.6.0/node_modules/emoji-regex/index.js
17486
+ var require_emoji_regex = __commonJS({
17487
+ "../../node_modules/.pnpm/emoji-regex@10.6.0/node_modules/emoji-regex/index.js"(exports, module) {
17488
+ module.exports = () => {
17489
+ return /[#*0-9]\uFE0F?\u20E3|[\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23ED-\u23EF\u23F1\u23F2\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB\u25FC\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692\u2694-\u2697\u2699\u269B\u269C\u26A0\u26A7\u26AA\u26B0\u26B1\u26BD\u26BE\u26C4\u26C8\u26CF\u26D1\u26E9\u26F0-\u26F5\u26F7\u26F8\u26FA\u2702\u2708\u2709\u270F\u2712\u2714\u2716\u271D\u2721\u2733\u2734\u2744\u2747\u2757\u2763\u27A1\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B55\u3030\u303D\u3297\u3299]\uFE0F?|[\u261D\u270C\u270D](?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?|[\u270A\u270B](?:\uD83C[\uDFFB-\uDFFF])?|[\u23E9-\u23EC\u23F0\u23F3\u25FD\u2693\u26A1\u26AB\u26C5\u26CE\u26D4\u26EA\u26FD\u2705\u2728\u274C\u274E\u2753-\u2755\u2795-\u2797\u27B0\u27BF\u2B50]|\u26D3\uFE0F?(?:\u200D\uD83D\uDCA5)?|\u26F9(?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?(?:\u200D[\u2640\u2642]\uFE0F?)?|\u2764\uFE0F?(?:\u200D(?:\uD83D\uDD25|\uD83E\uDE79))?|\uD83C(?:[\uDC04\uDD70\uDD71\uDD7E\uDD7F\uDE02\uDE37\uDF21\uDF24-\uDF2C\uDF36\uDF7D\uDF96\uDF97\uDF99-\uDF9B\uDF9E\uDF9F\uDFCD\uDFCE\uDFD4-\uDFDF\uDFF5\uDFF7]\uFE0F?|[\uDF85\uDFC2\uDFC7](?:\uD83C[\uDFFB-\uDFFF])?|[\uDFC4\uDFCA](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDFCB\uDFCC](?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDCCF\uDD8E\uDD91-\uDD9A\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF43\uDF45-\uDF4A\uDF4C-\uDF7C\uDF7E-\uDF84\uDF86-\uDF93\uDFA0-\uDFC1\uDFC5\uDFC6\uDFC8\uDFC9\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF8-\uDFFF]|\uDDE6\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF]|\uDDE7\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF]|\uDDE8\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF7\uDDFA-\uDDFF]|\uDDE9\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF]|\uDDEA\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA]|\uDDEB\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7]|\uDDEC\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE]|\uDDED\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA]|\uDDEE\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9]|\uDDEF\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5]|\uDDF0\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF]|\uDDF1\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE]|\uDDF2\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF]|\uDDF3\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF]|\uDDF4\uD83C\uDDF2|\uDDF5\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE]|\uDDF6\uD83C\uDDE6|\uDDF7\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC]|\uDDF8\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF]|\uDDF9\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF]|\uDDFA\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF]|\uDDFB\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA]|\uDDFC\uD83C[\uDDEB\uDDF8]|\uDDFD\uD83C\uDDF0|\uDDFE\uD83C[\uDDEA\uDDF9]|\uDDFF\uD83C[\uDDE6\uDDF2\uDDFC]|\uDF44(?:\u200D\uD83D\uDFEB)?|\uDF4B(?:\u200D\uD83D\uDFE9)?|\uDFC3(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?|\uDFF3\uFE0F?(?:\u200D(?:\u26A7\uFE0F?|\uD83C\uDF08))?|\uDFF4(?:\u200D\u2620\uFE0F?|\uDB40\uDC67\uDB40\uDC62\uDB40(?:\uDC65\uDB40\uDC6E\uDB40\uDC67|\uDC73\uDB40\uDC63\uDB40\uDC74|\uDC77\uDB40\uDC6C\uDB40\uDC73)\uDB40\uDC7F)?)|\uD83D(?:[\uDC3F\uDCFD\uDD49\uDD4A\uDD6F\uDD70\uDD73\uDD76-\uDD79\uDD87\uDD8A-\uDD8D\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA\uDECB\uDECD-\uDECF\uDEE0-\uDEE5\uDEE9\uDEF0\uDEF3]\uFE0F?|[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC](?:\uD83C[\uDFFB-\uDFFF])?|[\uDC6E-\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4\uDEB5](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDD74\uDD90](?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?|[\uDC00-\uDC07\uDC09-\uDC14\uDC16-\uDC25\uDC27-\uDC3A\uDC3C-\uDC3E\uDC40\uDC44\uDC45\uDC51-\uDC65\uDC6A\uDC79-\uDC7B\uDC7D-\uDC80\uDC84\uDC88-\uDC8E\uDC90\uDC92-\uDCA9\uDCAB-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDDA4\uDDFB-\uDE2D\uDE2F-\uDE34\uDE37-\uDE41\uDE43\uDE44\uDE48-\uDE4A\uDE80-\uDEA2\uDEA4-\uDEB3\uDEB7-\uDEBF\uDEC1-\uDEC5\uDED0-\uDED2\uDED5-\uDED8\uDEDC-\uDEDF\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB\uDFF0]|\uDC08(?:\u200D\u2B1B)?|\uDC15(?:\u200D\uD83E\uDDBA)?|\uDC26(?:\u200D(?:\u2B1B|\uD83D\uDD25))?|\uDC3B(?:\u200D\u2744\uFE0F?)?|\uDC41\uFE0F?(?:\u200D\uD83D\uDDE8\uFE0F?)?|\uDC68(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDC68\uDC69]\u200D\uD83D(?:\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?)|[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?)|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC68\uD83C[\uDFFC-\uDFFF])|\uD83E(?:[\uDD1D\uDEEF]\u200D\uD83D\uDC68\uD83C[\uDFFC-\uDFFF]|[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83E(?:[\uDD1D\uDEEF]\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFD-\uDFFF]|[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83E(?:[\uDD1D\uDEEF]\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF]|[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83E(?:[\uDD1D\uDEEF]\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFD\uDFFF]|[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFE])|\uD83E(?:[\uDD1D\uDEEF]\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFE]|[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3])))?))?|\uDC69(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?[\uDC68\uDC69]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?|\uDC69\u200D\uD83D(?:\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?))|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC69\uD83C[\uDFFC-\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFC-\uDFFF]|\uDEEF\u200D\uD83D\uDC69\uD83C[\uDFFC-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC69\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB\uDFFD-\uDFFF]|\uDEEF\u200D\uD83D\uDC69\uD83C[\uDFFB\uDFFD-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC69\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF]|\uDEEF\u200D\uD83D\uDC69\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC69\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB-\uDFFD\uDFFF]|\uDEEF\u200D\uD83D\uDC69\uD83C[\uDFFB-\uDFFD\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC69\uD83C[\uDFFB-\uDFFE])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB-\uDFFE]|\uDEEF\u200D\uD83D\uDC69\uD83C[\uDFFB-\uDFFE])))?))?|\uDD75(?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?(?:\u200D[\u2640\u2642]\uFE0F?)?|\uDE2E(?:\u200D\uD83D\uDCA8)?|\uDE35(?:\u200D\uD83D\uDCAB)?|\uDE36(?:\u200D\uD83C\uDF2B\uFE0F?)?|\uDE42(?:\u200D[\u2194\u2195]\uFE0F?)?|\uDEB6(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?)|\uD83E(?:[\uDD0C\uDD0F\uDD18-\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5\uDEC3-\uDEC5\uDEF0\uDEF2-\uDEF8](?:\uD83C[\uDFFB-\uDFFF])?|[\uDD26\uDD35\uDD37-\uDD39\uDD3C-\uDD3E\uDDB8\uDDB9\uDDCD\uDDCF\uDDD4\uDDD6-\uDDDD](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDDDE\uDDDF](?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDD0D\uDD0E\uDD10-\uDD17\uDD20-\uDD25\uDD27-\uDD2F\uDD3A\uDD3F-\uDD45\uDD47-\uDD76\uDD78-\uDDB4\uDDB7\uDDBA\uDDBC-\uDDCC\uDDD0\uDDE0-\uDDFF\uDE70-\uDE7C\uDE80-\uDE8A\uDE8E-\uDEC2\uDEC6\uDEC8\uDECD-\uDEDC\uDEDF-\uDEEA\uDEEF]|\uDDCE(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?|\uDDD1(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1|\uDDD1\u200D\uD83E\uDDD2(?:\u200D\uD83E\uDDD2)?|\uDDD2(?:\u200D\uD83E\uDDD2)?))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFC-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83E\uDDD1\uD83C[\uDFFC-\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF]|\uDEEF\u200D\uD83E\uDDD1\uD83C[\uDFFC-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB\uDFFD-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83E\uDDD1\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF]|\uDEEF\u200D\uD83E\uDDD1\uD83C[\uDFFB\uDFFD-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83E\uDDD1\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF]|\uDEEF\u200D\uD83E\uDDD1\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB-\uDFFD\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF]|\uDEEF\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFD\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB-\uDFFE]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFE])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF]|\uDEEF\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFE])))?))?|\uDEF1(?:\uD83C(?:\uDFFB(?:\u200D\uD83E\uDEF2\uD83C[\uDFFC-\uDFFF])?|\uDFFC(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB\uDFFD-\uDFFF])?|\uDFFD(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])?|\uDFFE(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB-\uDFFD\uDFFF])?|\uDFFF(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB-\uDFFE])?))?)/g;
17490
+ };
17491
+ }
17492
+ });
17493
+
17485
17494
  // ../../node_modules/.pnpm/react@19.2.8/node_modules/react/cjs/react.production.js
17486
17495
  var require_react_production = __commonJS({
17487
17496
  "../../node_modules/.pnpm/react@19.2.8/node_modules/react/cjs/react.production.js"(exports) {
@@ -51923,6 +51932,160 @@ import * as crypto from "crypto";
51923
51932
  import { execSync } from "child_process";
51924
51933
  var import_code_core3 = __toESM(require_dist2(), 1);
51925
51934
 
51935
+ // ../../node_modules/.pnpm/ansi-regex@6.2.2/node_modules/ansi-regex/index.js
51936
+ function ansiRegex({ onlyFirst = false } = {}) {
51937
+ const ST = "(?:\\u0007|\\u001B\\u005C|\\u009C)";
51938
+ const osc = `(?:\\u001B\\][\\s\\S]*?${ST})`;
51939
+ const csi = "[\\u001B\\u009B][[\\]()#;?]*(?:\\d{1,4}(?:[;:]\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~]";
51940
+ const pattern = `${osc}|${csi}`;
51941
+ return new RegExp(pattern, onlyFirst ? void 0 : "g");
51942
+ }
51943
+
51944
+ // ../../node_modules/.pnpm/strip-ansi@7.2.0/node_modules/strip-ansi/index.js
51945
+ var regex = ansiRegex();
51946
+ function stripAnsi(string) {
51947
+ if (typeof string !== "string") {
51948
+ throw new TypeError(`Expected a \`string\`, got \`${typeof string}\``);
51949
+ }
51950
+ if (!string.includes("\x1B") && !string.includes("\x9B")) {
51951
+ return string;
51952
+ }
51953
+ return string.replace(regex, "");
51954
+ }
51955
+
51956
+ // ../../node_modules/.pnpm/get-east-asian-width@1.6.0/node_modules/get-east-asian-width/lookup-data.js
51957
+ var ambiguousMinimalCodePoint = 161;
51958
+ var ambiguousMaximumCodePoint = 1114109;
51959
+ var ambiguousRanges = [161, 161, 164, 164, 167, 168, 170, 170, 173, 174, 176, 180, 182, 186, 188, 191, 198, 198, 208, 208, 215, 216, 222, 225, 230, 230, 232, 234, 236, 237, 240, 240, 242, 243, 247, 250, 252, 252, 254, 254, 257, 257, 273, 273, 275, 275, 283, 283, 294, 295, 299, 299, 305, 307, 312, 312, 319, 322, 324, 324, 328, 331, 333, 333, 338, 339, 358, 359, 363, 363, 462, 462, 464, 464, 466, 466, 468, 468, 470, 470, 472, 472, 474, 474, 476, 476, 593, 593, 609, 609, 708, 708, 711, 711, 713, 715, 717, 717, 720, 720, 728, 731, 733, 733, 735, 735, 768, 879, 913, 929, 931, 937, 945, 961, 963, 969, 1025, 1025, 1040, 1103, 1105, 1105, 8208, 8208, 8211, 8214, 8216, 8217, 8220, 8221, 8224, 8226, 8228, 8231, 8240, 8240, 8242, 8243, 8245, 8245, 8251, 8251, 8254, 8254, 8308, 8308, 8319, 8319, 8321, 8324, 8364, 8364, 8451, 8451, 8453, 8453, 8457, 8457, 8467, 8467, 8470, 8470, 8481, 8482, 8486, 8486, 8491, 8491, 8531, 8532, 8539, 8542, 8544, 8555, 8560, 8569, 8585, 8585, 8592, 8601, 8632, 8633, 8658, 8658, 8660, 8660, 8679, 8679, 8704, 8704, 8706, 8707, 8711, 8712, 8715, 8715, 8719, 8719, 8721, 8721, 8725, 8725, 8730, 8730, 8733, 8736, 8739, 8739, 8741, 8741, 8743, 8748, 8750, 8750, 8756, 8759, 8764, 8765, 8776, 8776, 8780, 8780, 8786, 8786, 8800, 8801, 8804, 8807, 8810, 8811, 8814, 8815, 8834, 8835, 8838, 8839, 8853, 8853, 8857, 8857, 8869, 8869, 8895, 8895, 8978, 8978, 9312, 9449, 9451, 9547, 9552, 9587, 9600, 9615, 9618, 9621, 9632, 9633, 9635, 9641, 9650, 9651, 9654, 9655, 9660, 9661, 9664, 9665, 9670, 9672, 9675, 9675, 9678, 9681, 9698, 9701, 9711, 9711, 9733, 9734, 9737, 9737, 9742, 9743, 9756, 9756, 9758, 9758, 9792, 9792, 9794, 9794, 9824, 9825, 9827, 9829, 9831, 9834, 9836, 9837, 9839, 9839, 9886, 9887, 9919, 9919, 9926, 9933, 9935, 9939, 9941, 9953, 9955, 9955, 9960, 9961, 9963, 9969, 9972, 9972, 9974, 9977, 9979, 9980, 9982, 9983, 10045, 10045, 10102, 10111, 11094, 11097, 12872, 12879, 57344, 63743, 65024, 65039, 65533, 65533, 127232, 127242, 127248, 127277, 127280, 127337, 127344, 127373, 127375, 127376, 127387, 127404, 917760, 917999, 983040, 1048573, 1048576, 1114109];
51960
+ var fullwidthMinimalCodePoint = 12288;
51961
+ var fullwidthMaximumCodePoint = 65510;
51962
+ var fullwidthRanges = [12288, 12288, 65281, 65376, 65504, 65510];
51963
+ var wideMinimalCodePoint = 4352;
51964
+ var wideMaximumCodePoint = 262141;
51965
+ var wideRanges = [4352, 4447, 8986, 8987, 9001, 9002, 9193, 9196, 9200, 9200, 9203, 9203, 9725, 9726, 9748, 9749, 9776, 9783, 9800, 9811, 9855, 9855, 9866, 9871, 9875, 9875, 9889, 9889, 9898, 9899, 9917, 9918, 9924, 9925, 9934, 9934, 9940, 9940, 9962, 9962, 9970, 9971, 9973, 9973, 9978, 9978, 9981, 9981, 9989, 9989, 9994, 9995, 10024, 10024, 10060, 10060, 10062, 10062, 10067, 10069, 10071, 10071, 10133, 10135, 10160, 10160, 10175, 10175, 11035, 11036, 11088, 11088, 11093, 11093, 11904, 11929, 11931, 12019, 12032, 12245, 12272, 12287, 12289, 12350, 12353, 12438, 12441, 12543, 12549, 12591, 12593, 12686, 12688, 12773, 12783, 12830, 12832, 12871, 12880, 42124, 42128, 42182, 43360, 43388, 44032, 55203, 63744, 64255, 65040, 65049, 65072, 65106, 65108, 65126, 65128, 65131, 94176, 94180, 94192, 94198, 94208, 101589, 101631, 101662, 101760, 101874, 110576, 110579, 110581, 110587, 110589, 110590, 110592, 110882, 110898, 110898, 110928, 110930, 110933, 110933, 110948, 110951, 110960, 111355, 119552, 119638, 119648, 119670, 126980, 126980, 127183, 127183, 127374, 127374, 127377, 127386, 127488, 127490, 127504, 127547, 127552, 127560, 127568, 127569, 127584, 127589, 127744, 127776, 127789, 127797, 127799, 127868, 127870, 127891, 127904, 127946, 127951, 127955, 127968, 127984, 127988, 127988, 127992, 128062, 128064, 128064, 128066, 128252, 128255, 128317, 128331, 128334, 128336, 128359, 128378, 128378, 128405, 128406, 128420, 128420, 128507, 128591, 128640, 128709, 128716, 128716, 128720, 128722, 128725, 128728, 128732, 128735, 128747, 128748, 128756, 128764, 128992, 129003, 129008, 129008, 129292, 129338, 129340, 129349, 129351, 129535, 129648, 129660, 129664, 129674, 129678, 129734, 129736, 129736, 129741, 129756, 129759, 129770, 129775, 129784, 131072, 196605, 196608, 262141];
51966
+
51967
+ // ../../node_modules/.pnpm/get-east-asian-width@1.6.0/node_modules/get-east-asian-width/utilities.js
51968
+ var isInRange = (ranges, codePoint) => {
51969
+ let low = 0;
51970
+ let high = Math.floor(ranges.length / 2) - 1;
51971
+ while (low <= high) {
51972
+ const mid = Math.floor((low + high) / 2);
51973
+ const i2 = mid * 2;
51974
+ if (codePoint < ranges[i2]) {
51975
+ high = mid - 1;
51976
+ } else if (codePoint > ranges[i2 + 1]) {
51977
+ low = mid + 1;
51978
+ } else {
51979
+ return true;
51980
+ }
51981
+ }
51982
+ return false;
51983
+ };
51984
+
51985
+ // ../../node_modules/.pnpm/get-east-asian-width@1.6.0/node_modules/get-east-asian-width/lookup.js
51986
+ var commonCjkCodePoint = 19968;
51987
+ var [wideFastPathStart, wideFastPathEnd] = /* @__PURE__ */ findWideFastPathRange(wideRanges);
51988
+ function findWideFastPathRange(ranges) {
51989
+ let fastPathStart = ranges[0];
51990
+ let fastPathEnd = ranges[1];
51991
+ for (let index = 0; index < ranges.length; index += 2) {
51992
+ const start = ranges[index];
51993
+ const end = ranges[index + 1];
51994
+ if (commonCjkCodePoint >= start && commonCjkCodePoint <= end) {
51995
+ return [start, end];
51996
+ }
51997
+ if (end - start > fastPathEnd - fastPathStart) {
51998
+ fastPathStart = start;
51999
+ fastPathEnd = end;
52000
+ }
52001
+ }
52002
+ return [fastPathStart, fastPathEnd];
52003
+ }
52004
+ var isAmbiguous = (codePoint) => {
52005
+ if (codePoint < ambiguousMinimalCodePoint || codePoint > ambiguousMaximumCodePoint) {
52006
+ return false;
52007
+ }
52008
+ return isInRange(ambiguousRanges, codePoint);
52009
+ };
52010
+ var isFullWidth = (codePoint) => {
52011
+ if (codePoint < fullwidthMinimalCodePoint || codePoint > fullwidthMaximumCodePoint) {
52012
+ return false;
52013
+ }
52014
+ return isInRange(fullwidthRanges, codePoint);
52015
+ };
52016
+ var isWide = (codePoint) => {
52017
+ if (codePoint >= wideFastPathStart && codePoint <= wideFastPathEnd) {
52018
+ return true;
52019
+ }
52020
+ if (codePoint < wideMinimalCodePoint || codePoint > wideMaximumCodePoint) {
52021
+ return false;
52022
+ }
52023
+ return isInRange(wideRanges, codePoint);
52024
+ };
52025
+
52026
+ // ../../node_modules/.pnpm/get-east-asian-width@1.6.0/node_modules/get-east-asian-width/index.js
52027
+ function validate(codePoint) {
52028
+ if (!Number.isSafeInteger(codePoint)) {
52029
+ throw new TypeError(`Expected a code point, got \`${typeof codePoint}\`.`);
52030
+ }
52031
+ }
52032
+ function eastAsianWidth(codePoint, { ambiguousAsWide = false } = {}) {
52033
+ validate(codePoint);
52034
+ if (isFullWidth(codePoint) || isWide(codePoint) || ambiguousAsWide && isAmbiguous(codePoint)) {
52035
+ return 2;
52036
+ }
52037
+ return 1;
52038
+ }
52039
+
52040
+ // ../../node_modules/.pnpm/string-width@7.2.0/node_modules/string-width/index.js
52041
+ var import_emoji_regex = __toESM(require_emoji_regex(), 1);
52042
+ var segmenter = new Intl.Segmenter();
52043
+ var defaultIgnorableCodePointRegex = new RegExp("^\\p{Default_Ignorable_Code_Point}$", "u");
52044
+ function stringWidth(string, options = {}) {
52045
+ if (typeof string !== "string" || string.length === 0) {
52046
+ return 0;
52047
+ }
52048
+ const {
52049
+ ambiguousIsNarrow = true,
52050
+ countAnsiEscapeCodes = false
52051
+ } = options;
52052
+ if (!countAnsiEscapeCodes) {
52053
+ string = stripAnsi(string);
52054
+ }
52055
+ if (string.length === 0) {
52056
+ return 0;
52057
+ }
52058
+ let width = 0;
52059
+ const eastAsianWidthOptions = { ambiguousAsWide: !ambiguousIsNarrow };
52060
+ for (const { segment: character } of segmenter.segment(string)) {
52061
+ const codePoint = character.codePointAt(0);
52062
+ if (codePoint <= 31 || codePoint >= 127 && codePoint <= 159) {
52063
+ continue;
52064
+ }
52065
+ if (codePoint >= 8203 && codePoint <= 8207 || codePoint === 65279) {
52066
+ continue;
52067
+ }
52068
+ if (codePoint >= 768 && codePoint <= 879 || codePoint >= 6832 && codePoint <= 6911 || codePoint >= 7616 && codePoint <= 7679 || codePoint >= 8400 && codePoint <= 8447 || codePoint >= 65056 && codePoint <= 65071) {
52069
+ continue;
52070
+ }
52071
+ if (codePoint >= 55296 && codePoint <= 57343) {
52072
+ continue;
52073
+ }
52074
+ if (codePoint >= 65024 && codePoint <= 65039) {
52075
+ continue;
52076
+ }
52077
+ if (defaultIgnorableCodePointRegex.test(character)) {
52078
+ continue;
52079
+ }
52080
+ if ((0, import_emoji_regex.default)().test(character)) {
52081
+ width += 2;
52082
+ continue;
52083
+ }
52084
+ width += eastAsianWidth(codePoint, eastAsianWidthOptions);
52085
+ }
52086
+ return width;
52087
+ }
52088
+
51926
52089
  // src/ui/theme.ts
51927
52090
  var colors = {
51928
52091
  primary: source_default.blue,
@@ -51945,7 +52108,7 @@ var icons = {
51945
52108
  code: "{}"
51946
52109
  };
51947
52110
  function visibleLen(s2) {
51948
- return s2.replace(/\x1b\[[0-9;]*m/g, "").length;
52111
+ return stringWidth(s2);
51949
52112
  }
51950
52113
  function padVis(s2, n) {
51951
52114
  const pad = n - visibleLen(s2);
@@ -53203,14 +53366,10 @@ async function updateCommand(opts) {
53203
53366
  }
53204
53367
 
53205
53368
  // src/ui/screen.ts
53206
- function enableAltScreen() {
53369
+ function prepareSessionScreen() {
53207
53370
  if (!process.stdout.isTTY)
53208
53371
  return;
53209
- process.stdout.write("\x1B[?1049h\x1B[2J\x1B[H");
53210
- }
53211
- function disableAltScreen() {
53212
- if (process.stdout.isTTY)
53213
- process.stdout.write("\x1B[?1049l");
53372
+ process.stdout.write("\x1B[2J\x1B[3J\x1B[H");
53214
53373
  }
53215
53374
  var NEX_LOGO = [
53216
53375
  "\u2588\u2588\u2588\u2557 \u2588\u2588\u2557\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557\u2588\u2588\u2557 \u2588\u2588\u2557",
@@ -53227,14 +53386,39 @@ function center(s2, w) {
53227
53386
  const left = Math.floor((w - len) / 2);
53228
53387
  return " ".repeat(left) + s2;
53229
53388
  }
53389
+ var graphemesOf = (s2) => [...s2];
53390
+ function truncateEnd(s2, w) {
53391
+ if (visibleLen(s2) <= w)
53392
+ return s2;
53393
+ let out = "";
53394
+ for (const g of graphemesOf(s2)) {
53395
+ if (visibleLen(out + g) > w - 1)
53396
+ break;
53397
+ out += g;
53398
+ }
53399
+ return out + "\u2026";
53400
+ }
53401
+ function truncateStart(s2, w) {
53402
+ if (visibleLen(s2) <= w)
53403
+ return s2;
53404
+ const gs = graphemesOf(s2);
53405
+ let out = "";
53406
+ for (let i2 = gs.length - 1; i2 >= 0; i2--) {
53407
+ if (visibleLen(gs[i2] + out) > w - 1)
53408
+ break;
53409
+ out = gs[i2] + out;
53410
+ }
53411
+ return "\u2026" + out;
53412
+ }
53230
53413
  function renderBanner(info) {
53231
- const GAP = 4;
53414
+ const PAD = 1;
53415
+ const CHROME = 3 + 4 * PAD;
53232
53416
  const LOGO_W = Math.max(...NEX_LOGO.map(visibleLen));
53233
- const headerText = `Nexrall Code v${info.version}`;
53234
- const LEFT_W = Math.max(LOGO_W, visibleLen(headerText), visibleLen(info.modelLabel), visibleLen(info.workDir));
53235
- const framing = 2 + GAP + 2;
53236
53417
  const termW = process.stdout.columns || 100;
53237
- const RIGHT_W = Math.max(32, Math.min(46, termW - framing - LEFT_W));
53418
+ const totalW = Math.max(LOGO_W + CHROME + 24, termW);
53419
+ const headerText = `Nexrall Code v${info.version}`;
53420
+ const LEFT_W = Math.max(LOGO_W, visibleLen(headerText));
53421
+ const RIGHT_W = totalW - CHROME - LEFT_W;
53238
53422
  const leftLines = [];
53239
53423
  leftLines.push(source_default.bold.hex("#3b82f6")("Nexrall Code ") + source_default.dim(`v${info.version}`));
53240
53424
  leftLines.push("");
@@ -53243,8 +53427,8 @@ function renderBanner(info) {
53243
53427
  for (const l of NEX_LOGO)
53244
53428
  leftLines.push(center(source_default.hex("#3b82f6")(l), LEFT_W));
53245
53429
  leftLines.push("");
53246
- leftLines.push(source_default.dim(info.modelLabel));
53247
- leftLines.push(source_default.dim(info.workDir));
53430
+ leftLines.push(source_default.dim(truncateEnd(info.modelLabel, LEFT_W)));
53431
+ leftLines.push(source_default.dim(truncateStart(info.workDir, LEFT_W)));
53248
53432
  if (info.nexrallMdLoaded)
53249
53433
  leftLines.push(source_default.dim("nexrall.md loaded"));
53250
53434
  const rightLines = [];
@@ -53265,15 +53449,18 @@ function renderBanner(info) {
53265
53449
  }
53266
53450
  const rowCount = Math.max(leftLines.length, rightLines.length);
53267
53451
  const border = source_default.hex("#3b82f6");
53268
- const INNER_W = LEFT_W + GAP + RIGHT_W + 2;
53452
+ const leftSpan = LEFT_W + PAD * 2;
53453
+ const rightSpan = RIGHT_W + PAD * 2;
53454
+ const pad = " ".repeat(PAD);
53455
+ const rule = (l, mid, r2) => border(l + "\u2500".repeat(leftSpan) + mid + "\u2500".repeat(rightSpan) + r2);
53269
53456
  const lines = [];
53270
- lines.push(border("\u256D" + "\u2500".repeat(INNER_W) + "\u256E"));
53457
+ lines.push(rule("\u256D", "\u252C", "\u256E"));
53271
53458
  for (let i2 = 0; i2 < rowCount; i2++) {
53272
53459
  const l = padVis(leftLines[i2] ?? "", LEFT_W);
53273
53460
  const r2 = padVis(rightLines[i2] ?? "", RIGHT_W);
53274
- lines.push(border("\u2502 ") + l + " ".repeat(GAP) + r2 + border(" \u2502"));
53461
+ lines.push(border("\u2502") + pad + l + pad + border("\u2502") + pad + r2 + pad + border("\u2502"));
53275
53462
  }
53276
- lines.push(border("\u2570" + "\u2500".repeat(INNER_W) + "\u256F"));
53463
+ lines.push(rule("\u2570", "\u2534", "\u256F"));
53277
53464
  return lines.join("\n");
53278
53465
  }
53279
53466
  function wrapText(text, width) {
@@ -53291,7 +53478,24 @@ function wrapText(text, width) {
53291
53478
  }
53292
53479
  if (cur)
53293
53480
  out.push(cur);
53294
- return out;
53481
+ const fitted = [];
53482
+ for (const line of out) {
53483
+ if (visibleLen(line) <= width) {
53484
+ fitted.push(line);
53485
+ continue;
53486
+ }
53487
+ let chunk = "";
53488
+ for (const g of graphemesOf(line)) {
53489
+ if (visibleLen(chunk + g) > width) {
53490
+ fitted.push(chunk);
53491
+ chunk = "";
53492
+ }
53493
+ chunk += g;
53494
+ }
53495
+ if (chunk)
53496
+ fitted.push(chunk);
53497
+ }
53498
+ return fitted;
53295
53499
  }
53296
53500
 
53297
53501
  // src/ui/inkTerminal.tsx
@@ -55341,113 +55545,8 @@ function wrapAssembly(lib) {
55341
55545
  var Yoga = wrapAssembly(await yoga_wasm_base64_esm_default());
55342
55546
  var src_default = Yoga;
55343
55547
 
55344
- // ../../node_modules/.pnpm/ansi-regex@6.2.2/node_modules/ansi-regex/index.js
55345
- function ansiRegex({ onlyFirst = false } = {}) {
55346
- const ST = "(?:\\u0007|\\u001B\\u005C|\\u009C)";
55347
- const osc = `(?:\\u001B\\][\\s\\S]*?${ST})`;
55348
- const csi = "[\\u001B\\u009B][[\\]()#;?]*(?:\\d{1,4}(?:[;:]\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~]";
55349
- const pattern = `${osc}|${csi}`;
55350
- return new RegExp(pattern, onlyFirst ? void 0 : "g");
55351
- }
55352
-
55353
- // ../../node_modules/.pnpm/strip-ansi@7.2.0/node_modules/strip-ansi/index.js
55354
- var regex = ansiRegex();
55355
- function stripAnsi(string) {
55356
- if (typeof string !== "string") {
55357
- throw new TypeError(`Expected a \`string\`, got \`${typeof string}\``);
55358
- }
55359
- if (!string.includes("\x1B") && !string.includes("\x9B")) {
55360
- return string;
55361
- }
55362
- return string.replace(regex, "");
55363
- }
55364
-
55365
- // ../../node_modules/.pnpm/get-east-asian-width@1.6.0/node_modules/get-east-asian-width/lookup-data.js
55366
- var ambiguousMinimalCodePoint = 161;
55367
- var ambiguousMaximumCodePoint = 1114109;
55368
- var ambiguousRanges = [161, 161, 164, 164, 167, 168, 170, 170, 173, 174, 176, 180, 182, 186, 188, 191, 198, 198, 208, 208, 215, 216, 222, 225, 230, 230, 232, 234, 236, 237, 240, 240, 242, 243, 247, 250, 252, 252, 254, 254, 257, 257, 273, 273, 275, 275, 283, 283, 294, 295, 299, 299, 305, 307, 312, 312, 319, 322, 324, 324, 328, 331, 333, 333, 338, 339, 358, 359, 363, 363, 462, 462, 464, 464, 466, 466, 468, 468, 470, 470, 472, 472, 474, 474, 476, 476, 593, 593, 609, 609, 708, 708, 711, 711, 713, 715, 717, 717, 720, 720, 728, 731, 733, 733, 735, 735, 768, 879, 913, 929, 931, 937, 945, 961, 963, 969, 1025, 1025, 1040, 1103, 1105, 1105, 8208, 8208, 8211, 8214, 8216, 8217, 8220, 8221, 8224, 8226, 8228, 8231, 8240, 8240, 8242, 8243, 8245, 8245, 8251, 8251, 8254, 8254, 8308, 8308, 8319, 8319, 8321, 8324, 8364, 8364, 8451, 8451, 8453, 8453, 8457, 8457, 8467, 8467, 8470, 8470, 8481, 8482, 8486, 8486, 8491, 8491, 8531, 8532, 8539, 8542, 8544, 8555, 8560, 8569, 8585, 8585, 8592, 8601, 8632, 8633, 8658, 8658, 8660, 8660, 8679, 8679, 8704, 8704, 8706, 8707, 8711, 8712, 8715, 8715, 8719, 8719, 8721, 8721, 8725, 8725, 8730, 8730, 8733, 8736, 8739, 8739, 8741, 8741, 8743, 8748, 8750, 8750, 8756, 8759, 8764, 8765, 8776, 8776, 8780, 8780, 8786, 8786, 8800, 8801, 8804, 8807, 8810, 8811, 8814, 8815, 8834, 8835, 8838, 8839, 8853, 8853, 8857, 8857, 8869, 8869, 8895, 8895, 8978, 8978, 9312, 9449, 9451, 9547, 9552, 9587, 9600, 9615, 9618, 9621, 9632, 9633, 9635, 9641, 9650, 9651, 9654, 9655, 9660, 9661, 9664, 9665, 9670, 9672, 9675, 9675, 9678, 9681, 9698, 9701, 9711, 9711, 9733, 9734, 9737, 9737, 9742, 9743, 9756, 9756, 9758, 9758, 9792, 9792, 9794, 9794, 9824, 9825, 9827, 9829, 9831, 9834, 9836, 9837, 9839, 9839, 9886, 9887, 9919, 9919, 9926, 9933, 9935, 9939, 9941, 9953, 9955, 9955, 9960, 9961, 9963, 9969, 9972, 9972, 9974, 9977, 9979, 9980, 9982, 9983, 10045, 10045, 10102, 10111, 11094, 11097, 12872, 12879, 57344, 63743, 65024, 65039, 65533, 65533, 127232, 127242, 127248, 127277, 127280, 127337, 127344, 127373, 127375, 127376, 127387, 127404, 917760, 917999, 983040, 1048573, 1048576, 1114109];
55369
- var fullwidthMinimalCodePoint = 12288;
55370
- var fullwidthMaximumCodePoint = 65510;
55371
- var fullwidthRanges = [12288, 12288, 65281, 65376, 65504, 65510];
55372
- var wideMinimalCodePoint = 4352;
55373
- var wideMaximumCodePoint = 262141;
55374
- var wideRanges = [4352, 4447, 8986, 8987, 9001, 9002, 9193, 9196, 9200, 9200, 9203, 9203, 9725, 9726, 9748, 9749, 9776, 9783, 9800, 9811, 9855, 9855, 9866, 9871, 9875, 9875, 9889, 9889, 9898, 9899, 9917, 9918, 9924, 9925, 9934, 9934, 9940, 9940, 9962, 9962, 9970, 9971, 9973, 9973, 9978, 9978, 9981, 9981, 9989, 9989, 9994, 9995, 10024, 10024, 10060, 10060, 10062, 10062, 10067, 10069, 10071, 10071, 10133, 10135, 10160, 10160, 10175, 10175, 11035, 11036, 11088, 11088, 11093, 11093, 11904, 11929, 11931, 12019, 12032, 12245, 12272, 12287, 12289, 12350, 12353, 12438, 12441, 12543, 12549, 12591, 12593, 12686, 12688, 12773, 12783, 12830, 12832, 12871, 12880, 42124, 42128, 42182, 43360, 43388, 44032, 55203, 63744, 64255, 65040, 65049, 65072, 65106, 65108, 65126, 65128, 65131, 94176, 94180, 94192, 94198, 94208, 101589, 101631, 101662, 101760, 101874, 110576, 110579, 110581, 110587, 110589, 110590, 110592, 110882, 110898, 110898, 110928, 110930, 110933, 110933, 110948, 110951, 110960, 111355, 119552, 119638, 119648, 119670, 126980, 126980, 127183, 127183, 127374, 127374, 127377, 127386, 127488, 127490, 127504, 127547, 127552, 127560, 127568, 127569, 127584, 127589, 127744, 127776, 127789, 127797, 127799, 127868, 127870, 127891, 127904, 127946, 127951, 127955, 127968, 127984, 127988, 127988, 127992, 128062, 128064, 128064, 128066, 128252, 128255, 128317, 128331, 128334, 128336, 128359, 128378, 128378, 128405, 128406, 128420, 128420, 128507, 128591, 128640, 128709, 128716, 128716, 128720, 128722, 128725, 128728, 128732, 128735, 128747, 128748, 128756, 128764, 128992, 129003, 129008, 129008, 129292, 129338, 129340, 129349, 129351, 129535, 129648, 129660, 129664, 129674, 129678, 129734, 129736, 129736, 129741, 129756, 129759, 129770, 129775, 129784, 131072, 196605, 196608, 262141];
55375
-
55376
- // ../../node_modules/.pnpm/get-east-asian-width@1.6.0/node_modules/get-east-asian-width/utilities.js
55377
- var isInRange = (ranges, codePoint) => {
55378
- let low = 0;
55379
- let high = Math.floor(ranges.length / 2) - 1;
55380
- while (low <= high) {
55381
- const mid = Math.floor((low + high) / 2);
55382
- const i2 = mid * 2;
55383
- if (codePoint < ranges[i2]) {
55384
- high = mid - 1;
55385
- } else if (codePoint > ranges[i2 + 1]) {
55386
- low = mid + 1;
55387
- } else {
55388
- return true;
55389
- }
55390
- }
55391
- return false;
55392
- };
55393
-
55394
- // ../../node_modules/.pnpm/get-east-asian-width@1.6.0/node_modules/get-east-asian-width/lookup.js
55395
- var commonCjkCodePoint = 19968;
55396
- var [wideFastPathStart, wideFastPathEnd] = /* @__PURE__ */ findWideFastPathRange(wideRanges);
55397
- function findWideFastPathRange(ranges) {
55398
- let fastPathStart = ranges[0];
55399
- let fastPathEnd = ranges[1];
55400
- for (let index = 0; index < ranges.length; index += 2) {
55401
- const start = ranges[index];
55402
- const end = ranges[index + 1];
55403
- if (commonCjkCodePoint >= start && commonCjkCodePoint <= end) {
55404
- return [start, end];
55405
- }
55406
- if (end - start > fastPathEnd - fastPathStart) {
55407
- fastPathStart = start;
55408
- fastPathEnd = end;
55409
- }
55410
- }
55411
- return [fastPathStart, fastPathEnd];
55412
- }
55413
- var isAmbiguous = (codePoint) => {
55414
- if (codePoint < ambiguousMinimalCodePoint || codePoint > ambiguousMaximumCodePoint) {
55415
- return false;
55416
- }
55417
- return isInRange(ambiguousRanges, codePoint);
55418
- };
55419
- var isFullWidth = (codePoint) => {
55420
- if (codePoint < fullwidthMinimalCodePoint || codePoint > fullwidthMaximumCodePoint) {
55421
- return false;
55422
- }
55423
- return isInRange(fullwidthRanges, codePoint);
55424
- };
55425
- var isWide = (codePoint) => {
55426
- if (codePoint >= wideFastPathStart && codePoint <= wideFastPathEnd) {
55427
- return true;
55428
- }
55429
- if (codePoint < wideMinimalCodePoint || codePoint > wideMaximumCodePoint) {
55430
- return false;
55431
- }
55432
- return isInRange(wideRanges, codePoint);
55433
- };
55434
-
55435
- // ../../node_modules/.pnpm/get-east-asian-width@1.6.0/node_modules/get-east-asian-width/index.js
55436
- function validate(codePoint) {
55437
- if (!Number.isSafeInteger(codePoint)) {
55438
- throw new TypeError(`Expected a code point, got \`${typeof codePoint}\`.`);
55439
- }
55440
- }
55441
- function eastAsianWidth(codePoint, { ambiguousAsWide = false } = {}) {
55442
- validate(codePoint);
55443
- if (isFullWidth(codePoint) || isWide(codePoint) || ambiguousAsWide && isAmbiguous(codePoint)) {
55444
- return 2;
55445
- }
55446
- return 1;
55447
- }
55448
-
55449
55548
  // ../../node_modules/.pnpm/string-width@8.2.2/node_modules/string-width/index.js
55450
- var segmenter = new Intl.Segmenter();
55549
+ var segmenter2 = new Intl.Segmenter();
55451
55550
  var zeroWidthClusterRegex = new RegExp("^(?:\\p{Default_Ignorable_Code_Point}|\\p{Control}|\\p{Format}|\\p{Nonspacing_Mark}|\\p{Enclosing_Mark}|\\p{Surrogate})+$", "v");
55452
55551
  var leadingNonPrintingRegex = new RegExp("^[\\p{Default_Ignorable_Code_Point}\\p{Control}\\p{Format}\\p{Nonspacing_Mark}\\p{Enclosing_Mark}\\p{Surrogate}]+", "v");
55453
55552
  var spacingMarkRegex = new RegExp("\\p{Spacing_Mark}", "v");
@@ -55531,7 +55630,7 @@ function trailingWidth(visibleSegment, eastAsianWidthOptions) {
55531
55630
  }
55532
55631
  return extra;
55533
55632
  }
55534
- function stringWidth(input, options = {}) {
55633
+ function stringWidth2(input, options = {}) {
55535
55634
  if (typeof input !== "string" || input.length === 0) {
55536
55635
  return 0;
55537
55636
  }
@@ -55551,7 +55650,7 @@ function stringWidth(input, options = {}) {
55551
55650
  }
55552
55651
  let width = 0;
55553
55652
  const eastAsianWidthOptions = { ambiguousAsWide: !ambiguousIsNarrow };
55554
- for (const { segment } of segmenter.segment(string)) {
55653
+ for (const { segment } of segmenter2.segment(string)) {
55555
55654
  if (isZeroWidthCluster(segment)) {
55556
55655
  continue;
55557
55656
  }
@@ -55783,8 +55882,8 @@ var ANSI_ESCAPE_REGEX = new RegExp(`^\\u001B(?:\\${ANSI_CSI}(?<sgr>[0-9;]*)${ANS
55783
55882
  var ANSI_ESCAPE_CSI_REGEX = new RegExp(`^\\u009B(?<sgr>[0-9;]*)${ANSI_SGR_TERMINATOR}`);
55784
55883
  var ANSI_SGR_MODIFIER_CLOSE_CODES = new Set(ansi_styles_default2.codes.values());
55785
55884
  ANSI_SGR_MODIFIER_CLOSE_CODES.delete(ANSI_SGR_RESET);
55786
- var segmenter2 = new Intl.Segmenter();
55787
- var getGraphemes = (string) => Array.from(segmenter2.segment(string), ({ segment }) => segment);
55885
+ var segmenter3 = new Intl.Segmenter();
55886
+ var getGraphemes = (string) => Array.from(segmenter3.segment(string), ({ segment }) => segment);
55788
55887
  var TAB_SIZE = 8;
55789
55888
  var wrapAnsiCode = (code) => `${ANSI_ESCAPE}${ANSI_CSI}${code}${ANSI_SGR_TERMINATOR}`;
55790
55889
  var wrapAnsiHyperlink = (url) => `${ANSI_ESCAPE}${ANSI_ESCAPE_LINK}${url}${ANSI_ESCAPE_BELL}`;
@@ -55942,14 +56041,14 @@ var applyLeadingSgrResets = (string, activeStyles) => {
55942
56041
  };
55943
56042
  var getClosingSgrSequence = (activeStyles) => [...activeStyles].reverse().map((activeStyle) => wrapAnsiCode(activeStyle.close)).join("");
55944
56043
  var getOpeningSgrSequence = (activeStyles) => activeStyles.map((activeStyle) => wrapAnsiCode(activeStyle.open)).join("");
55945
- var wordLengths = (string) => string.split(" ").map((word) => stringWidth(word));
56044
+ var wordLengths = (string) => string.split(" ").map((word) => stringWidth2(word));
55946
56045
  var wrapWord = (rows, word, columns) => {
55947
56046
  const characters = getGraphemes(word);
55948
56047
  let isInsideEscape = false;
55949
56048
  let isInsideLinkEscape = false;
55950
- let visible = stringWidth(stripAnsi(rows.at(-1)));
56049
+ let visible = stringWidth2(stripAnsi(rows.at(-1)));
55951
56050
  for (const [index, character] of characters.entries()) {
55952
- const characterLength = stringWidth(character);
56051
+ const characterLength = stringWidth2(character);
55953
56052
  if (visible + characterLength <= columns) {
55954
56053
  rows[rows.length - 1] += character;
55955
56054
  } else {
@@ -55986,7 +56085,7 @@ var stringVisibleTrimSpacesRight = (string) => {
55986
56085
  const words = string.split(" ");
55987
56086
  let last = words.length;
55988
56087
  while (last > 0) {
55989
- if (stringWidth(words[last - 1]) > 0) {
56088
+ if (stringWidth2(words[last - 1]) > 0) {
55990
56089
  break;
55991
56090
  }
55992
56091
  last--;
@@ -56005,7 +56104,7 @@ var expandTabs = (line) => {
56005
56104
  let expandedLine = "";
56006
56105
  for (const [index, segment] of segments.entries()) {
56007
56106
  expandedLine += segment;
56008
- visible += stringWidth(segment);
56107
+ visible += stringWidth2(segment);
56009
56108
  if (index < segments.length - 1) {
56010
56109
  const spaces = TAB_SIZE - visible % TAB_SIZE;
56011
56110
  expandedLine += " ".repeat(spaces);
@@ -56027,7 +56126,7 @@ var exec = (string, columns, options = {}) => {
56027
56126
  if (options.trim !== false) {
56028
56127
  rows[rows.length - 1] = rows.at(-1).trimStart();
56029
56128
  }
56030
- let rowLength = stringWidth(rows.at(-1));
56129
+ let rowLength = stringWidth2(rows.at(-1));
56031
56130
  if (index !== 0) {
56032
56131
  if (rowLength >= columns && (options.wordWrap === false || options.trim === false)) {
56033
56132
  rows.push("");
@@ -56233,7 +56332,7 @@ var import_react = __toESM(require_react(), 1);
56233
56332
  function widestLine(string) {
56234
56333
  let lineWidth = 0;
56235
56334
  for (const line of string.split("\n")) {
56236
- lineWidth = Math.max(lineWidth, stringWidth(line));
56335
+ lineWidth = Math.max(lineWidth, stringWidth2(line));
56237
56336
  }
56238
56337
  return lineWidth;
56239
56338
  }
@@ -57146,7 +57245,7 @@ function cliTruncate(text, columns, options = {}) {
57146
57245
  if (columns < 1) {
57147
57246
  return "";
57148
57247
  }
57149
- const length = stringWidth(text);
57248
+ const length = stringWidth2(text);
57150
57249
  if (length <= columns) {
57151
57250
  return text;
57152
57251
  }
@@ -57205,24 +57304,24 @@ function cliTruncate(text, columns, options = {}) {
57205
57304
  }
57206
57305
  if (position === "start") {
57207
57306
  if (preferTruncationOnSpace) {
57208
- const nearestSpace = getIndexOfNearestSpace(text, length - columns + stringWidth(truncationCharacter), true);
57307
+ const nearestSpace = getIndexOfNearestSpace(text, length - columns + stringWidth2(truncationCharacter), true);
57209
57308
  const right2 = sliceAnsi(text, nearestSpace, length).trim();
57210
57309
  return prependWithInheritedStyleFromStart(truncationCharacter, right2);
57211
57310
  }
57212
57311
  if (space) {
57213
57312
  truncationCharacter += " ";
57214
57313
  }
57215
- const right = sliceAnsi(text, length - columns + stringWidth(truncationCharacter), length);
57314
+ const right = sliceAnsi(text, length - columns + stringWidth2(truncationCharacter), length);
57216
57315
  return prependWithInheritedStyleFromStart(truncationCharacter, right);
57217
57316
  }
57218
57317
  if (position === "middle") {
57219
57318
  if (space) {
57220
57319
  truncationCharacter = ` ${truncationCharacter} `;
57221
- if (stringWidth(truncationCharacter) >= columns) {
57320
+ if (stringWidth2(truncationCharacter) >= columns) {
57222
57321
  truncationCharacter = truncationCharacter.trim();
57223
57322
  }
57224
57323
  }
57225
- const truncationWidth = stringWidth(truncationCharacter);
57324
+ const truncationWidth = stringWidth2(truncationCharacter);
57226
57325
  const half = Math.min(Math.floor(columns / 2), Math.max(0, columns - truncationWidth));
57227
57326
  if (preferTruncationOnSpace) {
57228
57327
  const spaceNearFirstBreakPoint = getIndexOfNearestSpace(text, half);
@@ -57233,14 +57332,14 @@ function cliTruncate(text, columns, options = {}) {
57233
57332
  }
57234
57333
  if (position === "end") {
57235
57334
  if (preferTruncationOnSpace) {
57236
- const nearestSpace = getIndexOfNearestSpace(text, columns - stringWidth(truncationCharacter));
57335
+ const nearestSpace = getIndexOfNearestSpace(text, columns - stringWidth2(truncationCharacter));
57237
57336
  const left2 = sliceAnsi(text, 0, nearestSpace);
57238
57337
  return appendWithInheritedStyleFromEnd(left2, truncationCharacter);
57239
57338
  }
57240
57339
  if (space) {
57241
57340
  truncationCharacter = ` ${truncationCharacter}`;
57242
57341
  }
57243
- const left = sliceAnsi(text, 0, columns - stringWidth(truncationCharacter));
57342
+ const left = sliceAnsi(text, 0, columns - stringWidth2(truncationCharacter));
57244
57343
  return appendWithInheritedStyleFromEnd(left, truncationCharacter);
57245
57344
  }
57246
57345
  }
@@ -58852,7 +58951,7 @@ function styledCharsToString(chars) {
58852
58951
  }
58853
58952
 
58854
58953
  // ../../node_modules/.pnpm/@alcalzone+ansi-tokenize@0.3.0/node_modules/@alcalzone/ansi-tokenize/build/tokenize.js
58855
- var segmenter3 = new Intl.Segmenter(void 0, { granularity: "grapheme" });
58954
+ var segmenter4 = new Intl.Segmenter(void 0, { granularity: "grapheme" });
58856
58955
  function isFullwidthGrapheme(grapheme, baseCodePoint) {
58857
58956
  if (isFullwidthCodePoint(baseCodePoint))
58858
58957
  return true;
@@ -58944,7 +59043,7 @@ function tokenize2(str, endChar = Number.POSITIVE_INFINITY) {
58944
59043
  const ret = [];
58945
59044
  let visible = 0;
58946
59045
  let codeEndIndex = 0;
58947
- for (const { segment, index } of segmenter3.segment(str)) {
59046
+ for (const { segment, index } of segmenter4.segment(str)) {
58948
59047
  if (index < codeEndIndex)
58949
59048
  continue;
58950
59049
  const codePoint = segment.codePointAt(0);
@@ -59016,7 +59115,7 @@ var OutputCaches = class {
59016
59115
  getStringWidth(text) {
59017
59116
  let cached = this.widths.get(text);
59018
59117
  if (cached === void 0) {
59019
- cached = stringWidth(text);
59118
+ cached = stringWidth2(text);
59020
59119
  this.widths.set(text, cached);
59021
59120
  }
59022
59121
  return cached;
@@ -62267,7 +62366,7 @@ var InkReadlineAdapter = class extends EventEmitter3 {
62267
62366
  };
62268
62367
 
62269
62368
  // src/commands/chat.ts
62270
- var CLI_VERSION = "0.5.40";
62369
+ var CLI_VERSION = "0.5.42";
62271
62370
  var MODEL_LABELS = {
62272
62371
  turbo: "Nexrall Turbo",
62273
62372
  pro: "Nexrall Pro",
@@ -62726,10 +62825,9 @@ async function startChatSession(options) {
62726
62825
  const nexrallMd = readNexrallMd(workDir);
62727
62826
  const interactive = !headless && !options.prompt && !options.stdinText;
62728
62827
  if (interactive) {
62729
- enableAltScreen();
62828
+ prepareSessionScreen();
62730
62829
  process.on("exit", () => {
62731
62830
  stopInkTerminal();
62732
- disableAltScreen();
62733
62831
  });
62734
62832
  await startInkTerminal();
62735
62833
  }
@@ -63673,7 +63771,7 @@ function pluginListCommand() {
63673
63771
 
63674
63772
  // src/index.ts
63675
63773
  var program2 = new Command();
63676
- program2.name("nex").description("Nexrall Code \u2014 AI coding assistant (powered by Nexrall)").version("0.5.40");
63774
+ program2.name("nex").description("Nexrall Code \u2014 AI coding assistant (powered by Nexrall)").version("0.5.42");
63677
63775
  program2.command("auth").description("Login to your Nexrall account").action(authCommand);
63678
63776
  program2.command("logout").description("Log out of your Nexrall account").action(logoutCommand);
63679
63777
  program2.command("update").description("Update nex to the latest version").option("-c, --check", "Check for updates without installing").option("-y, --yes", "Skip confirmation prompt").action(async (opts) => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nexrall-code",
3
- "version": "0.5.40",
3
+ "version": "0.5.42",
4
4
  "description": "Nexrall Code — AI coding assistant for your terminal (headless agent for scripts, CI and automation)",
5
5
  "keywords": [
6
6
  "ai",
@@ -40,6 +40,7 @@
40
40
  "prompts": "^2.4.2",
41
41
  "react": "^19.2.8",
42
42
  "readline": "^1.3.0",
43
+ "string-width": "^7.2.0",
43
44
  "@nexrall/code-core": "1.4.22"
44
45
  },
45
46
  "devDependencies": {