nexrall-code 0.5.39 → 0.5.41

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 -140
  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);
@@ -53227,20 +53390,49 @@ function center(s2, w) {
53227
53390
  const left = Math.floor((w - len) / 2);
53228
53391
  return " ".repeat(left) + s2;
53229
53392
  }
53393
+ var graphemesOf = (s2) => [...s2];
53394
+ function truncateEnd(s2, w) {
53395
+ if (visibleLen(s2) <= w)
53396
+ return s2;
53397
+ let out = "";
53398
+ for (const g of graphemesOf(s2)) {
53399
+ if (visibleLen(out + g) > w - 1)
53400
+ break;
53401
+ out += g;
53402
+ }
53403
+ return out + "\u2026";
53404
+ }
53405
+ function truncateStart(s2, w) {
53406
+ if (visibleLen(s2) <= w)
53407
+ return s2;
53408
+ const gs = graphemesOf(s2);
53409
+ let out = "";
53410
+ for (let i2 = gs.length - 1; i2 >= 0; i2--) {
53411
+ if (visibleLen(gs[i2] + out) > w - 1)
53412
+ break;
53413
+ out = gs[i2] + out;
53414
+ }
53415
+ return "\u2026" + out;
53416
+ }
53230
53417
  function renderBanner(info) {
53231
- const LEFT_W = 38;
53232
- const RIGHT_W = 44;
53233
- const GAP = 2;
53418
+ const PAD = 1;
53419
+ const CHROME = 3 + 4 * PAD;
53420
+ const LOGO_W = Math.max(...NEX_LOGO.map(visibleLen));
53421
+ const termW = process.stdout.columns || 100;
53422
+ const totalW = Math.max(LOGO_W + CHROME + 24, termW);
53423
+ const headerText = `Nexrall Code v${info.version}`;
53424
+ const LEFT_W = Math.max(LOGO_W, visibleLen(headerText));
53425
+ const RIGHT_W = totalW - CHROME - LEFT_W;
53234
53426
  const leftLines = [];
53235
- leftLines.push(source_default.bold.hex("#3b82f6")(`Nexrall Code `) + source_default.dim(`v${info.version}`));
53427
+ leftLines.push(source_default.bold.hex("#3b82f6")("Nexrall Code ") + source_default.dim(`v${info.version}`));
53236
53428
  leftLines.push("");
53237
53429
  leftLines.push(center(source_default.bold(`Welcome back ${info.userLabel}!`), LEFT_W));
53238
53430
  leftLines.push("");
53239
53431
  for (const l of NEX_LOGO)
53240
53432
  leftLines.push(center(source_default.hex("#3b82f6")(l), LEFT_W));
53241
53433
  leftLines.push("");
53242
- leftLines.push(source_default.dim(info.modelLabel));
53243
- leftLines.push(source_default.dim(info.workDir));
53434
+ leftLines.push(source_default.dim(truncateEnd(info.modelLabel, LEFT_W)));
53435
+ leftLines.push(source_default.dim(truncateStart(info.workDir, LEFT_W)));
53244
53436
  if (info.nexrallMdLoaded)
53245
53437
  leftLines.push(source_default.dim("nexrall.md loaded"));
53246
53438
  const rightLines = [];
@@ -53261,14 +53453,18 @@ function renderBanner(info) {
53261
53453
  }
53262
53454
  const rowCount = Math.max(leftLines.length, rightLines.length);
53263
53455
  const border = source_default.hex("#3b82f6");
53456
+ const leftSpan = LEFT_W + PAD * 2;
53457
+ const rightSpan = RIGHT_W + PAD * 2;
53458
+ const pad = " ".repeat(PAD);
53459
+ const rule = (l, mid, r2) => border(l + "\u2500".repeat(leftSpan) + mid + "\u2500".repeat(rightSpan) + r2);
53264
53460
  const lines = [];
53265
- lines.push(border("\u256D" + "\u2500".repeat(LEFT_W + GAP + RIGHT_W + 4) + "\u256E"));
53461
+ lines.push(rule("\u256D", "\u252C", "\u256E"));
53266
53462
  for (let i2 = 0; i2 < rowCount; i2++) {
53267
53463
  const l = padVis(leftLines[i2] ?? "", LEFT_W);
53268
53464
  const r2 = padVis(rightLines[i2] ?? "", RIGHT_W);
53269
- lines.push(border("\u2502 ") + l + " ".repeat(GAP) + r2 + border(" \u2502"));
53465
+ lines.push(border("\u2502") + pad + l + pad + border("\u2502") + pad + r2 + pad + border("\u2502"));
53270
53466
  }
53271
- lines.push(border("\u2570" + "\u2500".repeat(LEFT_W + GAP + RIGHT_W + 4) + "\u256F"));
53467
+ lines.push(rule("\u2570", "\u2534", "\u256F"));
53272
53468
  return lines.join("\n");
53273
53469
  }
53274
53470
  function wrapText(text, width) {
@@ -53286,7 +53482,24 @@ function wrapText(text, width) {
53286
53482
  }
53287
53483
  if (cur)
53288
53484
  out.push(cur);
53289
- return out;
53485
+ const fitted = [];
53486
+ for (const line of out) {
53487
+ if (visibleLen(line) <= width) {
53488
+ fitted.push(line);
53489
+ continue;
53490
+ }
53491
+ let chunk = "";
53492
+ for (const g of graphemesOf(line)) {
53493
+ if (visibleLen(chunk + g) > width) {
53494
+ fitted.push(chunk);
53495
+ chunk = "";
53496
+ }
53497
+ chunk += g;
53498
+ }
53499
+ if (chunk)
53500
+ fitted.push(chunk);
53501
+ }
53502
+ return fitted;
53290
53503
  }
53291
53504
 
53292
53505
  // src/ui/inkTerminal.tsx
@@ -55336,113 +55549,8 @@ function wrapAssembly(lib) {
55336
55549
  var Yoga = wrapAssembly(await yoga_wasm_base64_esm_default());
55337
55550
  var src_default = Yoga;
55338
55551
 
55339
- // ../../node_modules/.pnpm/ansi-regex@6.2.2/node_modules/ansi-regex/index.js
55340
- function ansiRegex({ onlyFirst = false } = {}) {
55341
- const ST = "(?:\\u0007|\\u001B\\u005C|\\u009C)";
55342
- const osc = `(?:\\u001B\\][\\s\\S]*?${ST})`;
55343
- const csi = "[\\u001B\\u009B][[\\]()#;?]*(?:\\d{1,4}(?:[;:]\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~]";
55344
- const pattern = `${osc}|${csi}`;
55345
- return new RegExp(pattern, onlyFirst ? void 0 : "g");
55346
- }
55347
-
55348
- // ../../node_modules/.pnpm/strip-ansi@7.2.0/node_modules/strip-ansi/index.js
55349
- var regex = ansiRegex();
55350
- function stripAnsi(string) {
55351
- if (typeof string !== "string") {
55352
- throw new TypeError(`Expected a \`string\`, got \`${typeof string}\``);
55353
- }
55354
- if (!string.includes("\x1B") && !string.includes("\x9B")) {
55355
- return string;
55356
- }
55357
- return string.replace(regex, "");
55358
- }
55359
-
55360
- // ../../node_modules/.pnpm/get-east-asian-width@1.6.0/node_modules/get-east-asian-width/lookup-data.js
55361
- var ambiguousMinimalCodePoint = 161;
55362
- var ambiguousMaximumCodePoint = 1114109;
55363
- 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];
55364
- var fullwidthMinimalCodePoint = 12288;
55365
- var fullwidthMaximumCodePoint = 65510;
55366
- var fullwidthRanges = [12288, 12288, 65281, 65376, 65504, 65510];
55367
- var wideMinimalCodePoint = 4352;
55368
- var wideMaximumCodePoint = 262141;
55369
- 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];
55370
-
55371
- // ../../node_modules/.pnpm/get-east-asian-width@1.6.0/node_modules/get-east-asian-width/utilities.js
55372
- var isInRange = (ranges, codePoint) => {
55373
- let low = 0;
55374
- let high = Math.floor(ranges.length / 2) - 1;
55375
- while (low <= high) {
55376
- const mid = Math.floor((low + high) / 2);
55377
- const i2 = mid * 2;
55378
- if (codePoint < ranges[i2]) {
55379
- high = mid - 1;
55380
- } else if (codePoint > ranges[i2 + 1]) {
55381
- low = mid + 1;
55382
- } else {
55383
- return true;
55384
- }
55385
- }
55386
- return false;
55387
- };
55388
-
55389
- // ../../node_modules/.pnpm/get-east-asian-width@1.6.0/node_modules/get-east-asian-width/lookup.js
55390
- var commonCjkCodePoint = 19968;
55391
- var [wideFastPathStart, wideFastPathEnd] = /* @__PURE__ */ findWideFastPathRange(wideRanges);
55392
- function findWideFastPathRange(ranges) {
55393
- let fastPathStart = ranges[0];
55394
- let fastPathEnd = ranges[1];
55395
- for (let index = 0; index < ranges.length; index += 2) {
55396
- const start = ranges[index];
55397
- const end = ranges[index + 1];
55398
- if (commonCjkCodePoint >= start && commonCjkCodePoint <= end) {
55399
- return [start, end];
55400
- }
55401
- if (end - start > fastPathEnd - fastPathStart) {
55402
- fastPathStart = start;
55403
- fastPathEnd = end;
55404
- }
55405
- }
55406
- return [fastPathStart, fastPathEnd];
55407
- }
55408
- var isAmbiguous = (codePoint) => {
55409
- if (codePoint < ambiguousMinimalCodePoint || codePoint > ambiguousMaximumCodePoint) {
55410
- return false;
55411
- }
55412
- return isInRange(ambiguousRanges, codePoint);
55413
- };
55414
- var isFullWidth = (codePoint) => {
55415
- if (codePoint < fullwidthMinimalCodePoint || codePoint > fullwidthMaximumCodePoint) {
55416
- return false;
55417
- }
55418
- return isInRange(fullwidthRanges, codePoint);
55419
- };
55420
- var isWide = (codePoint) => {
55421
- if (codePoint >= wideFastPathStart && codePoint <= wideFastPathEnd) {
55422
- return true;
55423
- }
55424
- if (codePoint < wideMinimalCodePoint || codePoint > wideMaximumCodePoint) {
55425
- return false;
55426
- }
55427
- return isInRange(wideRanges, codePoint);
55428
- };
55429
-
55430
- // ../../node_modules/.pnpm/get-east-asian-width@1.6.0/node_modules/get-east-asian-width/index.js
55431
- function validate(codePoint) {
55432
- if (!Number.isSafeInteger(codePoint)) {
55433
- throw new TypeError(`Expected a code point, got \`${typeof codePoint}\`.`);
55434
- }
55435
- }
55436
- function eastAsianWidth(codePoint, { ambiguousAsWide = false } = {}) {
55437
- validate(codePoint);
55438
- if (isFullWidth(codePoint) || isWide(codePoint) || ambiguousAsWide && isAmbiguous(codePoint)) {
55439
- return 2;
55440
- }
55441
- return 1;
55442
- }
55443
-
55444
55552
  // ../../node_modules/.pnpm/string-width@8.2.2/node_modules/string-width/index.js
55445
- var segmenter = new Intl.Segmenter();
55553
+ var segmenter2 = new Intl.Segmenter();
55446
55554
  var zeroWidthClusterRegex = new RegExp("^(?:\\p{Default_Ignorable_Code_Point}|\\p{Control}|\\p{Format}|\\p{Nonspacing_Mark}|\\p{Enclosing_Mark}|\\p{Surrogate})+$", "v");
55447
55555
  var leadingNonPrintingRegex = new RegExp("^[\\p{Default_Ignorable_Code_Point}\\p{Control}\\p{Format}\\p{Nonspacing_Mark}\\p{Enclosing_Mark}\\p{Surrogate}]+", "v");
55448
55556
  var spacingMarkRegex = new RegExp("\\p{Spacing_Mark}", "v");
@@ -55526,7 +55634,7 @@ function trailingWidth(visibleSegment, eastAsianWidthOptions) {
55526
55634
  }
55527
55635
  return extra;
55528
55636
  }
55529
- function stringWidth(input, options = {}) {
55637
+ function stringWidth2(input, options = {}) {
55530
55638
  if (typeof input !== "string" || input.length === 0) {
55531
55639
  return 0;
55532
55640
  }
@@ -55546,7 +55654,7 @@ function stringWidth(input, options = {}) {
55546
55654
  }
55547
55655
  let width = 0;
55548
55656
  const eastAsianWidthOptions = { ambiguousAsWide: !ambiguousIsNarrow };
55549
- for (const { segment } of segmenter.segment(string)) {
55657
+ for (const { segment } of segmenter2.segment(string)) {
55550
55658
  if (isZeroWidthCluster(segment)) {
55551
55659
  continue;
55552
55660
  }
@@ -55778,8 +55886,8 @@ var ANSI_ESCAPE_REGEX = new RegExp(`^\\u001B(?:\\${ANSI_CSI}(?<sgr>[0-9;]*)${ANS
55778
55886
  var ANSI_ESCAPE_CSI_REGEX = new RegExp(`^\\u009B(?<sgr>[0-9;]*)${ANSI_SGR_TERMINATOR}`);
55779
55887
  var ANSI_SGR_MODIFIER_CLOSE_CODES = new Set(ansi_styles_default2.codes.values());
55780
55888
  ANSI_SGR_MODIFIER_CLOSE_CODES.delete(ANSI_SGR_RESET);
55781
- var segmenter2 = new Intl.Segmenter();
55782
- var getGraphemes = (string) => Array.from(segmenter2.segment(string), ({ segment }) => segment);
55889
+ var segmenter3 = new Intl.Segmenter();
55890
+ var getGraphemes = (string) => Array.from(segmenter3.segment(string), ({ segment }) => segment);
55783
55891
  var TAB_SIZE = 8;
55784
55892
  var wrapAnsiCode = (code) => `${ANSI_ESCAPE}${ANSI_CSI}${code}${ANSI_SGR_TERMINATOR}`;
55785
55893
  var wrapAnsiHyperlink = (url) => `${ANSI_ESCAPE}${ANSI_ESCAPE_LINK}${url}${ANSI_ESCAPE_BELL}`;
@@ -55937,14 +56045,14 @@ var applyLeadingSgrResets = (string, activeStyles) => {
55937
56045
  };
55938
56046
  var getClosingSgrSequence = (activeStyles) => [...activeStyles].reverse().map((activeStyle) => wrapAnsiCode(activeStyle.close)).join("");
55939
56047
  var getOpeningSgrSequence = (activeStyles) => activeStyles.map((activeStyle) => wrapAnsiCode(activeStyle.open)).join("");
55940
- var wordLengths = (string) => string.split(" ").map((word) => stringWidth(word));
56048
+ var wordLengths = (string) => string.split(" ").map((word) => stringWidth2(word));
55941
56049
  var wrapWord = (rows, word, columns) => {
55942
56050
  const characters = getGraphemes(word);
55943
56051
  let isInsideEscape = false;
55944
56052
  let isInsideLinkEscape = false;
55945
- let visible = stringWidth(stripAnsi(rows.at(-1)));
56053
+ let visible = stringWidth2(stripAnsi(rows.at(-1)));
55946
56054
  for (const [index, character] of characters.entries()) {
55947
- const characterLength = stringWidth(character);
56055
+ const characterLength = stringWidth2(character);
55948
56056
  if (visible + characterLength <= columns) {
55949
56057
  rows[rows.length - 1] += character;
55950
56058
  } else {
@@ -55981,7 +56089,7 @@ var stringVisibleTrimSpacesRight = (string) => {
55981
56089
  const words = string.split(" ");
55982
56090
  let last = words.length;
55983
56091
  while (last > 0) {
55984
- if (stringWidth(words[last - 1]) > 0) {
56092
+ if (stringWidth2(words[last - 1]) > 0) {
55985
56093
  break;
55986
56094
  }
55987
56095
  last--;
@@ -56000,7 +56108,7 @@ var expandTabs = (line) => {
56000
56108
  let expandedLine = "";
56001
56109
  for (const [index, segment] of segments.entries()) {
56002
56110
  expandedLine += segment;
56003
- visible += stringWidth(segment);
56111
+ visible += stringWidth2(segment);
56004
56112
  if (index < segments.length - 1) {
56005
56113
  const spaces = TAB_SIZE - visible % TAB_SIZE;
56006
56114
  expandedLine += " ".repeat(spaces);
@@ -56022,7 +56130,7 @@ var exec = (string, columns, options = {}) => {
56022
56130
  if (options.trim !== false) {
56023
56131
  rows[rows.length - 1] = rows.at(-1).trimStart();
56024
56132
  }
56025
- let rowLength = stringWidth(rows.at(-1));
56133
+ let rowLength = stringWidth2(rows.at(-1));
56026
56134
  if (index !== 0) {
56027
56135
  if (rowLength >= columns && (options.wordWrap === false || options.trim === false)) {
56028
56136
  rows.push("");
@@ -56228,7 +56336,7 @@ var import_react = __toESM(require_react(), 1);
56228
56336
  function widestLine(string) {
56229
56337
  let lineWidth = 0;
56230
56338
  for (const line of string.split("\n")) {
56231
- lineWidth = Math.max(lineWidth, stringWidth(line));
56339
+ lineWidth = Math.max(lineWidth, stringWidth2(line));
56232
56340
  }
56233
56341
  return lineWidth;
56234
56342
  }
@@ -57141,7 +57249,7 @@ function cliTruncate(text, columns, options = {}) {
57141
57249
  if (columns < 1) {
57142
57250
  return "";
57143
57251
  }
57144
- const length = stringWidth(text);
57252
+ const length = stringWidth2(text);
57145
57253
  if (length <= columns) {
57146
57254
  return text;
57147
57255
  }
@@ -57200,24 +57308,24 @@ function cliTruncate(text, columns, options = {}) {
57200
57308
  }
57201
57309
  if (position === "start") {
57202
57310
  if (preferTruncationOnSpace) {
57203
- const nearestSpace = getIndexOfNearestSpace(text, length - columns + stringWidth(truncationCharacter), true);
57311
+ const nearestSpace = getIndexOfNearestSpace(text, length - columns + stringWidth2(truncationCharacter), true);
57204
57312
  const right2 = sliceAnsi(text, nearestSpace, length).trim();
57205
57313
  return prependWithInheritedStyleFromStart(truncationCharacter, right2);
57206
57314
  }
57207
57315
  if (space) {
57208
57316
  truncationCharacter += " ";
57209
57317
  }
57210
- const right = sliceAnsi(text, length - columns + stringWidth(truncationCharacter), length);
57318
+ const right = sliceAnsi(text, length - columns + stringWidth2(truncationCharacter), length);
57211
57319
  return prependWithInheritedStyleFromStart(truncationCharacter, right);
57212
57320
  }
57213
57321
  if (position === "middle") {
57214
57322
  if (space) {
57215
57323
  truncationCharacter = ` ${truncationCharacter} `;
57216
- if (stringWidth(truncationCharacter) >= columns) {
57324
+ if (stringWidth2(truncationCharacter) >= columns) {
57217
57325
  truncationCharacter = truncationCharacter.trim();
57218
57326
  }
57219
57327
  }
57220
- const truncationWidth = stringWidth(truncationCharacter);
57328
+ const truncationWidth = stringWidth2(truncationCharacter);
57221
57329
  const half = Math.min(Math.floor(columns / 2), Math.max(0, columns - truncationWidth));
57222
57330
  if (preferTruncationOnSpace) {
57223
57331
  const spaceNearFirstBreakPoint = getIndexOfNearestSpace(text, half);
@@ -57228,14 +57336,14 @@ function cliTruncate(text, columns, options = {}) {
57228
57336
  }
57229
57337
  if (position === "end") {
57230
57338
  if (preferTruncationOnSpace) {
57231
- const nearestSpace = getIndexOfNearestSpace(text, columns - stringWidth(truncationCharacter));
57339
+ const nearestSpace = getIndexOfNearestSpace(text, columns - stringWidth2(truncationCharacter));
57232
57340
  const left2 = sliceAnsi(text, 0, nearestSpace);
57233
57341
  return appendWithInheritedStyleFromEnd(left2, truncationCharacter);
57234
57342
  }
57235
57343
  if (space) {
57236
57344
  truncationCharacter = ` ${truncationCharacter}`;
57237
57345
  }
57238
- const left = sliceAnsi(text, 0, columns - stringWidth(truncationCharacter));
57346
+ const left = sliceAnsi(text, 0, columns - stringWidth2(truncationCharacter));
57239
57347
  return appendWithInheritedStyleFromEnd(left, truncationCharacter);
57240
57348
  }
57241
57349
  }
@@ -58847,7 +58955,7 @@ function styledCharsToString(chars) {
58847
58955
  }
58848
58956
 
58849
58957
  // ../../node_modules/.pnpm/@alcalzone+ansi-tokenize@0.3.0/node_modules/@alcalzone/ansi-tokenize/build/tokenize.js
58850
- var segmenter3 = new Intl.Segmenter(void 0, { granularity: "grapheme" });
58958
+ var segmenter4 = new Intl.Segmenter(void 0, { granularity: "grapheme" });
58851
58959
  function isFullwidthGrapheme(grapheme, baseCodePoint) {
58852
58960
  if (isFullwidthCodePoint(baseCodePoint))
58853
58961
  return true;
@@ -58939,7 +59047,7 @@ function tokenize2(str, endChar = Number.POSITIVE_INFINITY) {
58939
59047
  const ret = [];
58940
59048
  let visible = 0;
58941
59049
  let codeEndIndex = 0;
58942
- for (const { segment, index } of segmenter3.segment(str)) {
59050
+ for (const { segment, index } of segmenter4.segment(str)) {
58943
59051
  if (index < codeEndIndex)
58944
59052
  continue;
58945
59053
  const codePoint = segment.codePointAt(0);
@@ -59011,7 +59119,7 @@ var OutputCaches = class {
59011
59119
  getStringWidth(text) {
59012
59120
  let cached = this.widths.get(text);
59013
59121
  if (cached === void 0) {
59014
- cached = stringWidth(text);
59122
+ cached = stringWidth2(text);
59015
59123
  this.widths.set(text, cached);
59016
59124
  }
59017
59125
  return cached;
@@ -62262,7 +62370,7 @@ var InkReadlineAdapter = class extends EventEmitter3 {
62262
62370
  };
62263
62371
 
62264
62372
  // src/commands/chat.ts
62265
- var CLI_VERSION = "0.5.39";
62373
+ var CLI_VERSION = "0.5.41";
62266
62374
  var MODEL_LABELS = {
62267
62375
  turbo: "Nexrall Turbo",
62268
62376
  pro: "Nexrall Pro",
@@ -63668,7 +63776,7 @@ function pluginListCommand() {
63668
63776
 
63669
63777
  // src/index.ts
63670
63778
  var program2 = new Command();
63671
- program2.name("nex").description("Nexrall Code \u2014 AI coding assistant (powered by Nexrall)").version("0.5.39");
63779
+ program2.name("nex").description("Nexrall Code \u2014 AI coding assistant (powered by Nexrall)").version("0.5.41");
63672
63780
  program2.command("auth").description("Login to your Nexrall account").action(authCommand);
63673
63781
  program2.command("logout").description("Log out of your Nexrall account").action(logoutCommand);
63674
63782
  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.39",
3
+ "version": "0.5.41",
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": {