slack-term 1.34.0 → 1.35.0

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.
package/dist/cli.js CHANGED
@@ -1,21 +1,21 @@
1
1
  #!/usr/bin/env bun
2
2
  // @bun
3
- import{createRequire as _u}from"node:module";var bu=Object.create;var{getPrototypeOf:wu,defineProperty:fo,getOwnPropertyNames:Fu}=Object;var ho=Object.prototype.hasOwnProperty;function Cu(e){return this[e]}var Eu,xu,po=(e,t,n)=>{var r=e!=null&&typeof e==="object";if(r){var s=t?Eu??=new WeakMap:xu??=new WeakMap,o=s.get(e);if(o)return o}n=e!=null?bu(wu(e)):{};let i=t||!e||!e.__esModule||!ho.call(e,"default")?fo(n,"default",{value:e,enumerable:!0}):n;if(e&&typeof e==="object"||typeof e==="function"){for(let a of Fu(e))if(!ho.call(i,a))fo(i,a,{get:Cu.bind(e,a),enumerable:!0})}if(r)s.set(e,i);return i};var go=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var Bs=_u(import.meta.url);var Po=go(function(xh,To){To.exports=()=>/[#*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});var oi=go(function(dp,ri){ri.exports=function(t){if(t===void 0)t=2;if(t>=Error.stackTraceLimit)throw TypeError("getCallerFile(position) requires position be less then Error.stackTraceLimit but position was: `"+t+"` and Error.stackTraceLimit was: `"+Error.stackTraceLimit+"`");var n=Error.prepareStackTrace;Error.prepareStackTrace=function(s,o){return o};var r=Error().stack;if(Error.prepareStackTrace=n,r!==null&&typeof r==="object")return r[t]?r[t].getFileName():void 0}});import{createHash as nd}from"crypto";import{existsSync as lu,readFileSync as sd,mkdirSync as rd,writeFileSync as fu}from"fs";import{homedir as tu}from"os";import{join as ht}from"path";import{notStrictEqual as ll,strictEqual as fl}from"assert";var ku={right:$u,center:Ou};class Do{constructor(e){var t;this.width=e.width,this.wrap=(t=e.wrap)!==null&&t!==void 0?t:!0,this.rows=[]}span(...e){let t=this.div(...e);t.span=!0}resetOutput(){this.rows=[]}div(...e){if(e.length===0)this.div("");if(this.wrap&&this.shouldApplyLayoutDSL(...e)&&typeof e[0]==="string")return this.applyLayoutDSL(e[0]);let t=e.map((n)=>{if(typeof n==="string")return this.colFromString(n);return n});return this.rows.push(t),t}shouldApplyLayoutDSL(...e){return e.length===1&&typeof e[0]==="string"&&/[\t\n]/.test(e[0])}applyLayoutDSL(e){let t=e.split(`
3
+ import{createRequire as Mu}from"node:module";var $u=Object.create;var{getPrototypeOf:Ou,defineProperty:Do,getOwnPropertyNames:Iu}=Object;var yo=Object.prototype.hasOwnProperty;function Tu(e){return this[e]}var Pu,Ru,bo=(e,t,n)=>{var r=e!=null&&typeof e==="object";if(r){var s=t?Pu??=new WeakMap:Ru??=new WeakMap,o=s.get(e);if(o)return o}n=e!=null?$u(Ou(e)):{};let i=t||!e||!e.__esModule||!yo.call(e,"default")?Do(n,"default",{value:e,enumerable:!0}):n;if(e&&typeof e==="object"||typeof e==="function"){for(let a of Iu(e))if(!yo.call(i,a))Do(i,a,{get:Tu.bind(e,a),enumerable:!0})}if(r)s.set(e,i);return i};var wo=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var Ns=Mu(import.meta.url);var No=wo(function(vp,vo){vo.exports=()=>/[#*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});var li=wo(function(_h,ui){ui.exports=function(t){if(t===void 0)t=2;if(t>=Error.stackTraceLimit)throw TypeError("getCallerFile(position) requires position be less then Error.stackTraceLimit but position was: `"+t+"` and Error.stackTraceLimit was: `"+Error.stackTraceLimit+"`");var n=Error.prepareStackTrace;Error.prepareStackTrace=function(s,o){return o};var r=Error().stack;if(Error.prepareStackTrace=n,r!==null&&typeof r==="object")return r[t]?r[t].getFileName():void 0}});import{createHash as gd}from"crypto";import{existsSync as wu,readFileSync as md,mkdirSync as Dd,writeFileSync as Fu}from"fs";import{homedir as fu}from"os";import{join as pt}from"path";import{notStrictEqual as wl,strictEqual as Fl}from"assert";var Bu={right:ju,center:Lu};class Co{constructor(e){var t;this.width=e.width,this.wrap=(t=e.wrap)!==null&&t!==void 0?t:!0,this.rows=[]}span(...e){let t=this.div(...e);t.span=!0}resetOutput(){this.rows=[]}div(...e){if(e.length===0)this.div("");if(this.wrap&&this.shouldApplyLayoutDSL(...e)&&typeof e[0]==="string")return this.applyLayoutDSL(e[0]);let t=e.map((n)=>{if(typeof n==="string")return this.colFromString(n);return n});return this.rows.push(t),t}shouldApplyLayoutDSL(...e){return e.length===1&&typeof e[0]==="string"&&/[\t\n]/.test(e[0])}applyLayoutDSL(e){let t=e.split(`
4
4
  `).map((r)=>r.split("\t")),n=0;return t.forEach((r)=>{if(r.length>1&&Se.stringWidth(r[0])>n)n=Math.min(Math.floor(this.width*0.5),Se.stringWidth(r[0]))}),t.forEach((r)=>{this.div(...r.map((s,o)=>({text:s.trim(),padding:this.measurePadding(s),width:o===0&&r.length>1?n:void 0})))}),this.rows[this.rows.length-1]}colFromString(e){return{text:e,padding:this.measurePadding(e)}}measurePadding(e){let t=Se.stripAnsi(e);return[0,t.match(/\s*$/)[0].length,0,t.match(/^\s*/)[0].length]}toString(){let e=[];return this.rows.forEach((t)=>{this.rowToString(t,e)}),e.filter((t)=>!t.hidden).map((t)=>t.text).join(`
5
- `)}rowToString(e,t){return this.rasterize(e).forEach((n,r)=>{let s="";n.forEach((o,i)=>{let{width:a}=e[i],c=this.negatePadding(e[i]),u=o;if(c>Se.stringWidth(o))u+=" ".repeat(c-Se.stringWidth(o));if(e[i].align&&e[i].align!=="left"&&this.wrap){let l=ku[e[i].align];if(u=l(u,c),Se.stringWidth(u)<c)u+=" ".repeat((a||0)-Se.stringWidth(u)-1)}let f=e[i].padding||[0,0,0,0];if(f[3])s+=" ".repeat(f[3]);if(s+=mo(e[i],u,"| "),s+=u,s+=mo(e[i],u," |"),f[1])s+=" ".repeat(f[1]);if(r===0&&t.length>0)s=this.renderInline(s,t[t.length-1])}),t.push({text:s.replace(/ +$/,""),span:e.span})}),t}renderInline(e,t){let n=e.match(/^ */),r=n?n[0].length:0,s=t.text,o=Se.stringWidth(s.trimRight());if(!t.span)return e;if(!this.wrap)return t.hidden=!0,s+e;if(r<o)return e;return t.hidden=!0,s.trimRight()+" ".repeat(r-o)+e.trimLeft()}rasterize(e){let t=[],n=this.columnWidths(e),r;return e.forEach((s,o)=>{if(s.width=n[o],this.wrap)r=Se.wrap(s.text,this.negatePadding(s),{hard:!0}).split(`
5
+ `)}rowToString(e,t){return this.rasterize(e).forEach((n,r)=>{let s="";n.forEach((o,i)=>{let{width:a}=e[i],c=this.negatePadding(e[i]),u=o;if(c>Se.stringWidth(o))u+=" ".repeat(c-Se.stringWidth(o));if(e[i].align&&e[i].align!=="left"&&this.wrap){let l=Bu[e[i].align];if(u=l(u,c),Se.stringWidth(u)<c)u+=" ".repeat((a||0)-Se.stringWidth(u)-1)}let f=e[i].padding||[0,0,0,0];if(f[3])s+=" ".repeat(f[3]);if(s+=Fo(e[i],u,"| "),s+=u,s+=Fo(e[i],u," |"),f[1])s+=" ".repeat(f[1]);if(r===0&&t.length>0)s=this.renderInline(s,t[t.length-1])}),t.push({text:s.replace(/ +$/,""),span:e.span})}),t}renderInline(e,t){let n=e.match(/^ */),r=n?n[0].length:0,s=t.text,o=Se.stringWidth(s.trimRight());if(!t.span)return e;if(!this.wrap)return t.hidden=!0,s+e;if(r<o)return e;return t.hidden=!0,s.trimRight()+" ".repeat(r-o)+e.trimLeft()}rasterize(e){let t=[],n=this.columnWidths(e),r;return e.forEach((s,o)=>{if(s.width=n[o],this.wrap)r=Se.wrap(s.text,this.negatePadding(s),{hard:!0}).split(`
6
6
  `);else r=s.text.split(`
7
- `);if(s.border)r.unshift("."+"-".repeat(this.negatePadding(s)+2)+"."),r.push("'"+"-".repeat(this.negatePadding(s)+2)+"'");if(s.padding)r.unshift(...Array(s.padding[0]||0).fill("")),r.push(...Array(s.padding[2]||0).fill(""));r.forEach((i,a)=>{if(!t[a])t.push([]);let c=t[a];for(let u=0;u<o;u++)if(c[u]===void 0)c.push("");c.push(i)})}),t}negatePadding(e){let t=e.width||0;if(e.padding)t-=(e.padding[3]||0)+(e.padding[1]||0);if(e.border)t-=4;return t}columnWidths(e){if(!this.wrap)return e.map((o)=>o.width||Se.stringWidth(o.text));let t=e.length,n=this.width,r=e.map((o)=>{if(o.width)return t--,n-=o.width,o.width;return}),s=t?Math.floor(n/t):0;return r.map((o,i)=>{if(o===void 0)return Math.max(s,Su(e[i]));return o})}}function mo(e,t,n){if(e.border){if(/[.']-+[.']/.test(t))return"";if(t.trim().length!==0)return n;return" "}return""}function Su(e){let t=e.padding||[],n=1+(t[3]||0)+(t[1]||0);if(e.border)return n+4;return n}function Au(){if(typeof process==="object"&&process.stdout&&process.stdout.columns)return process.stdout.columns;return 80}function $u(e,t){e=e.trim();let n=Se.stringWidth(e);if(n<t)return" ".repeat(t-n)+e;return e}function Ou(e,t){e=e.trim();let n=Se.stringWidth(e);if(n>=t)return e;return" ".repeat(t-n>>1)+e}var Se;function yo(e,t){return Se=t,new Do({width:(e===null||e===void 0?void 0:e.width)||Au(),wrap:e===null||e===void 0?void 0:e.wrap})}function Ns({onlyFirst:e=!1}={}){return new RegExp("(?:\\u001B\\][\\s\\S]*?(?:\\u0007|\\u001B\\u005C|\\u009C))|[\\u001B\\u009B][[\\]()#;?]*(?:\\d{1,4}(?:[;:]\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~]",e?void 0:"g")}var Iu=Ns();function pt(e){if(typeof e!=="string")throw TypeError(`Expected a \`string\`, got \`${typeof e}\``);if(!e.includes("\x1B")&&!e.includes("›"))return e;return e.replace(Iu,"")}var bo=161,wo=1114109,Fo=[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],Co=12288,Eo=65510,xo=[12288,12288,65281,65376,65504,65510];var _o=4352,ko=262141,vs=[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];var On=(e,t)=>{let n=0,r=Math.floor(e.length/2)-1;while(n<=r){let s=Math.floor((n+r)/2),o=s*2;if(t<e[o])r=s-1;else if(t>e[o+1])n=s+1;else return!0}return!1};var So=19968,[Tu,Pu]=Ru(vs);function Ru(e){let t=e[0],n=e[1];for(let r=0;r<e.length;r+=2){let s=e[r],o=e[r+1];if(So>=s&&So<=o)return[s,o];if(o-s>n-t)t=s,n=o}return[t,n]}var Ao=(e)=>{if(e<bo||e>wo)return!1;return On(Fo,e)},$o=(e)=>{if(e<Co||e>Eo)return!1;return On(xo,e)};var Oo=(e)=>{if(e>=Tu&&e<=Pu)return!0;if(e<_o||e>ko)return!1;return On(vs,e)};function Mu(e){if(!Number.isSafeInteger(e))throw TypeError(`Expected a code point, got \`${typeof e}\`.`)}function Io(e,{ambiguousAsWide:t=!1}={}){if(Mu(e),$o(e)||Oo(e)||t&&Ao(e))return 2;return 1}var Ro=po(Po(),1),Bu=new Intl.Segmenter,Nu=/^\p{Default_Ignorable_Code_Point}$/u;function We(e,t={}){if(typeof e!=="string"||e.length===0)return 0;let{ambiguousIsNarrow:n=!0,countAnsiEscapeCodes:r=!1}=t;if(!r)e=pt(e);if(e.length===0)return 0;let s=0,o={ambiguousAsWide:!n};for(let{segment:i}of Bu.segment(e)){let a=i.codePointAt(0);if(a<=31||a>=127&&a<=159)continue;if(a>=8203&&a<=8207||a===65279)continue;if(a>=768&&a<=879||a>=6832&&a<=6911||a>=7616&&a<=7679||a>=8400&&a<=8447||a>=65056&&a<=65071)continue;if(a>=55296&&a<=57343)continue;if(a>=65024&&a<=65039)continue;if(Nu.test(i))continue;if(Ro.default().test(i)){s+=2;continue}s+=Io(a,o)}return s}var Mo=(e=0)=>(t)=>`\x1B[${t+e}m`,Bo=(e=0)=>(t)=>`\x1B[${38+e};5;${t}m`,No=(e=0)=>(t,n,r)=>`\x1B[${38+e};2;${t};${n};${r}m`,oe={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],overline:[53,55],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],gray:[90,39],grey:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgGray:[100,49],bgGrey:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}},Ah=Object.keys(oe.modifier),vu=Object.keys(oe.color),ju=Object.keys(oe.bgColor),$h=[...vu,...ju];function Lu(){let e=new Map;for(let[t,n]of Object.entries(oe)){for(let[r,s]of Object.entries(n))oe[r]={open:`\x1B[${s[0]}m`,close:`\x1B[${s[1]}m`},n[r]=oe[r],e.set(s[0],s[1]);Object.defineProperty(oe,t,{value:n,enumerable:!1})}return Object.defineProperty(oe,"codes",{value:e,enumerable:!1}),oe.color.close="\x1B[39m",oe.bgColor.close="\x1B[49m",oe.color.ansi=Mo(),oe.color.ansi256=Bo(),oe.color.ansi16m=No(),oe.bgColor.ansi=Mo(10),oe.bgColor.ansi256=Bo(10),oe.bgColor.ansi16m=No(10),Object.defineProperties(oe,{rgbToAnsi256:{value(t,n,r){if(t===n&&n===r){if(t<8)return 16;if(t>248)return 231;return Math.round((t-8)/247*24)+232}return 16+36*Math.round(t/255*5)+6*Math.round(n/255*5)+Math.round(r/255*5)},enumerable:!1},hexToRgb:{value(t){let n=/[a-f\d]{6}|[a-f\d]{3}/i.exec(t.toString(16));if(!n)return[0,0,0];let[r]=n;if(r.length===3)r=[...r].map((o)=>o+o).join("");let s=Number.parseInt(r,16);return[s>>16&255,s>>8&255,s&255]},enumerable:!1},hexToAnsi256:{value:(t)=>oe.rgbToAnsi256(...oe.hexToRgb(t)),enumerable:!1},ansi256ToAnsi:{value(t){if(t<8)return 30+t;if(t<16)return 90+(t-8);let n,r,s;if(t>=232)n=((t-232)*10+8)/255,r=n,s=n;else{t-=16;let a=t%36;n=Math.floor(t/36)/5,r=Math.floor(a/6)/5,s=a%6/5}let o=Math.max(n,r,s)*2;if(o===0)return 30;let i=30+(Math.round(s)<<2|Math.round(r)<<1|Math.round(n));if(o===2)i+=60;return i},enumerable:!1},rgbToAnsi:{value:(t,n,r)=>oe.ansi256ToAnsi(oe.rgbToAnsi256(t,n,r)),enumerable:!1},hexToAnsi:{value:(t)=>oe.ansi256ToAnsi(oe.hexToAnsi256(t)),enumerable:!1}}),oe}var Wu=Lu(),vo=Wu;var Tn=new Set(["\x1B","›"]),Uu=39,Ls="\x07",Wo="[",Ku="]",Uo="m",In=`${Ku}8;;`,jo=(e)=>`${Tn.values().next().value}${Wo}${e}${Uo}`,Lo=(e)=>`${Tn.values().next().value}${In}${e}${Ls}`,Ju=(e)=>e.split(" ").map((t)=>We(t)),js=(e,t,n)=>{let r=[...t],s=!1,o=!1,i=We(pt(e.at(-1)));for(let[a,c]of r.entries()){let u=We(c);if(i+u<=n)e[e.length-1]+=c;else e.push(c),i=0;if(Tn.has(c))s=!0,o=r.slice(a+1,a+1+In.length).join("")===In;if(s){if(o){if(c===Ls)s=!1,o=!1}else if(c===Uo)s=!1;continue}if(i+=u,i===n&&a<r.length-1)e.push(""),i=0}if(!i&&e.at(-1).length>0&&e.length>1)e[e.length-2]+=e.pop()},zu=(e)=>{let t=e.split(" "),n=t.length;while(n>0){if(We(t[n-1])>0)break;n--}if(n===t.length)return e;return t.slice(0,n).join(" ")+t.slice(n).join("")},Hu=(e,t,n={})=>{if(n.trim!==!1&&e.trim()==="")return"";let r="",s,o,i=Ju(e),a=[""];for(let[l,d]of e.split(" ").entries()){if(n.trim!==!1)a[a.length-1]=a.at(-1).trimStart();let p=We(a.at(-1));if(l!==0){if(p>=t&&(n.wordWrap===!1||n.trim===!1))a.push(""),p=0;if(p>0||n.trim===!1)a[a.length-1]+=" ",p++}if(n.hard&&i[l]>t){let m=t-p,h=1+Math.floor((i[l]-m-1)/t);if(Math.floor((i[l]-1)/t)<h)a.push("");js(a,d,t);continue}if(p+i[l]>t&&p>0&&i[l]>0){if(n.wordWrap===!1&&p<t){js(a,d,t);continue}a.push("")}if(p+i[l]>t&&n.wordWrap===!1){js(a,d,t);continue}a[a.length-1]+=d}if(n.trim!==!1)a=a.map((l)=>zu(l));let c=a.join(`
8
- `),u=[...c],f=0;for(let[l,d]of u.entries()){if(r+=d,Tn.has(d)){let{groups:m}=new RegExp(`(?:\\${Wo}(?<code>\\d+)m|\\${In}(?<uri>.*)${Ls})`).exec(c.slice(f))||{groups:{}};if(m.code!==void 0){let h=Number.parseFloat(m.code);s=h===Uu?void 0:h}else if(m.uri!==void 0)o=m.uri.length===0?void 0:m.uri}let p=vo.codes.get(Number(s));if(u[l+1]===`
9
- `){if(o)r+=Lo("");if(s&&p)r+=jo(p)}else if(d===`
10
- `){if(s&&p)r+=jo(s);if(o)r+=Lo(o)}f+=d.length}return r};function Ws(e,t,n){return String(e).normalize().replaceAll(`\r
7
+ `);if(s.border)r.unshift("."+"-".repeat(this.negatePadding(s)+2)+"."),r.push("'"+"-".repeat(this.negatePadding(s)+2)+"'");if(s.padding)r.unshift(...Array(s.padding[0]||0).fill("")),r.push(...Array(s.padding[2]||0).fill(""));r.forEach((i,a)=>{if(!t[a])t.push([]);let c=t[a];for(let u=0;u<o;u++)if(c[u]===void 0)c.push("");c.push(i)})}),t}negatePadding(e){let t=e.width||0;if(e.padding)t-=(e.padding[3]||0)+(e.padding[1]||0);if(e.border)t-=4;return t}columnWidths(e){if(!this.wrap)return e.map((o)=>o.width||Se.stringWidth(o.text));let t=e.length,n=this.width,r=e.map((o)=>{if(o.width)return t--,n-=o.width,o.width;return}),s=t?Math.floor(n/t):0;return r.map((o,i)=>{if(o===void 0)return Math.max(s,vu(e[i]));return o})}}function Fo(e,t,n){if(e.border){if(/[.']-+[.']/.test(t))return"";if(t.trim().length!==0)return n;return" "}return""}function vu(e){let t=e.padding||[],n=1+(t[3]||0)+(t[1]||0);if(e.border)return n+4;return n}function Nu(){if(typeof process==="object"&&process.stdout&&process.stdout.columns)return process.stdout.columns;return 80}function ju(e,t){e=e.trim();let n=Se.stringWidth(e);if(n<t)return" ".repeat(t-n)+e;return e}function Lu(e,t){e=e.trim();let n=Se.stringWidth(e);if(n>=t)return e;return" ".repeat(t-n>>1)+e}var Se;function Eo(e,t){return Se=t,new Co({width:(e===null||e===void 0?void 0:e.width)||Nu(),wrap:e===null||e===void 0?void 0:e.wrap})}function js({onlyFirst:e=!1}={}){return new RegExp("(?:\\u001B\\][\\s\\S]*?(?:\\u0007|\\u001B\\u005C|\\u009C))|[\\u001B\\u009B][[\\]()#;?]*(?:\\d{1,4}(?:[;:]\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~]",e?void 0:"g")}var Wu=js();function ht(e){if(typeof e!=="string")throw TypeError(`Expected a \`string\`, got \`${typeof e}\``);if(!e.includes("\x1B")&&!e.includes("›"))return e;return e.replace(Wu,"")}var xo=161,_o=1114109,ko=[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],So=12288,Ao=65510,$o=[12288,12288,65281,65376,65504,65510];var Oo=4352,Io=262141,Ls=[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];var In=(e,t)=>{let n=0,r=Math.floor(e.length/2)-1;while(n<=r){let s=Math.floor((n+r)/2),o=s*2;if(t<e[o])r=s-1;else if(t>e[o+1])n=s+1;else return!0}return!1};var To=19968,[Uu,Ku]=Ju(Ls);function Ju(e){let t=e[0],n=e[1];for(let r=0;r<e.length;r+=2){let s=e[r],o=e[r+1];if(To>=s&&To<=o)return[s,o];if(o-s>n-t)t=s,n=o}return[t,n]}var Po=(e)=>{if(e<xo||e>_o)return!1;return In(ko,e)},Ro=(e)=>{if(e<So||e>Ao)return!1;return In($o,e)};var Mo=(e)=>{if(e>=Uu&&e<=Ku)return!0;if(e<Oo||e>Io)return!1;return In(Ls,e)};function zu(e){if(!Number.isSafeInteger(e))throw TypeError(`Expected a code point, got \`${typeof e}\`.`)}function Bo(e,{ambiguousAsWide:t=!1}={}){if(zu(e),Ro(e)||Mo(e)||t&&Po(e))return 2;return 1}var jo=bo(No(),1),Hu=new Intl.Segmenter,qu=/^\p{Default_Ignorable_Code_Point}$/u;function We(e,t={}){if(typeof e!=="string"||e.length===0)return 0;let{ambiguousIsNarrow:n=!0,countAnsiEscapeCodes:r=!1}=t;if(!r)e=ht(e);if(e.length===0)return 0;let s=0,o={ambiguousAsWide:!n};for(let{segment:i}of Hu.segment(e)){let a=i.codePointAt(0);if(a<=31||a>=127&&a<=159)continue;if(a>=8203&&a<=8207||a===65279)continue;if(a>=768&&a<=879||a>=6832&&a<=6911||a>=7616&&a<=7679||a>=8400&&a<=8447||a>=65056&&a<=65071)continue;if(a>=55296&&a<=57343)continue;if(a>=65024&&a<=65039)continue;if(qu.test(i))continue;if(jo.default().test(i)){s+=2;continue}s+=Bo(a,o)}return s}var Lo=(e=0)=>(t)=>`\x1B[${t+e}m`,Wo=(e=0)=>(t)=>`\x1B[${38+e};5;${t}m`,Uo=(e=0)=>(t,n,r)=>`\x1B[${38+e};2;${t};${n};${r}m`,oe={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],overline:[53,55],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],gray:[90,39],grey:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgGray:[100,49],bgGrey:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}},Wp=Object.keys(oe.modifier),Gu=Object.keys(oe.color),Yu=Object.keys(oe.bgColor),Up=[...Gu,...Yu];function Xu(){let e=new Map;for(let[t,n]of Object.entries(oe)){for(let[r,s]of Object.entries(n))oe[r]={open:`\x1B[${s[0]}m`,close:`\x1B[${s[1]}m`},n[r]=oe[r],e.set(s[0],s[1]);Object.defineProperty(oe,t,{value:n,enumerable:!1})}return Object.defineProperty(oe,"codes",{value:e,enumerable:!1}),oe.color.close="\x1B[39m",oe.bgColor.close="\x1B[49m",oe.color.ansi=Lo(),oe.color.ansi256=Wo(),oe.color.ansi16m=Uo(),oe.bgColor.ansi=Lo(10),oe.bgColor.ansi256=Wo(10),oe.bgColor.ansi16m=Uo(10),Object.defineProperties(oe,{rgbToAnsi256:{value(t,n,r){if(t===n&&n===r){if(t<8)return 16;if(t>248)return 231;return Math.round((t-8)/247*24)+232}return 16+36*Math.round(t/255*5)+6*Math.round(n/255*5)+Math.round(r/255*5)},enumerable:!1},hexToRgb:{value(t){let n=/[a-f\d]{6}|[a-f\d]{3}/i.exec(t.toString(16));if(!n)return[0,0,0];let[r]=n;if(r.length===3)r=[...r].map((o)=>o+o).join("");let s=Number.parseInt(r,16);return[s>>16&255,s>>8&255,s&255]},enumerable:!1},hexToAnsi256:{value:(t)=>oe.rgbToAnsi256(...oe.hexToRgb(t)),enumerable:!1},ansi256ToAnsi:{value(t){if(t<8)return 30+t;if(t<16)return 90+(t-8);let n,r,s;if(t>=232)n=((t-232)*10+8)/255,r=n,s=n;else{t-=16;let a=t%36;n=Math.floor(t/36)/5,r=Math.floor(a/6)/5,s=a%6/5}let o=Math.max(n,r,s)*2;if(o===0)return 30;let i=30+(Math.round(s)<<2|Math.round(r)<<1|Math.round(n));if(o===2)i+=60;return i},enumerable:!1},rgbToAnsi:{value:(t,n,r)=>oe.ansi256ToAnsi(oe.rgbToAnsi256(t,n,r)),enumerable:!1},hexToAnsi:{value:(t)=>oe.ansi256ToAnsi(oe.hexToAnsi256(t)),enumerable:!1}}),oe}var Vu=Xu(),Ko=Vu;var Pn=new Set(["\x1B","›"]),Zu=39,Us="\x07",Ho="[",Qu="]",qo="m",Tn=`${Qu}8;;`,Jo=(e)=>`${Pn.values().next().value}${Ho}${e}${qo}`,zo=(e)=>`${Pn.values().next().value}${Tn}${e}${Us}`,el=(e)=>e.split(" ").map((t)=>We(t)),Ws=(e,t,n)=>{let r=[...t],s=!1,o=!1,i=We(ht(e.at(-1)));for(let[a,c]of r.entries()){let u=We(c);if(i+u<=n)e[e.length-1]+=c;else e.push(c),i=0;if(Pn.has(c))s=!0,o=r.slice(a+1,a+1+Tn.length).join("")===Tn;if(s){if(o){if(c===Us)s=!1,o=!1}else if(c===qo)s=!1;continue}if(i+=u,i===n&&a<r.length-1)e.push(""),i=0}if(!i&&e.at(-1).length>0&&e.length>1)e[e.length-2]+=e.pop()},tl=(e)=>{let t=e.split(" "),n=t.length;while(n>0){if(We(t[n-1])>0)break;n--}if(n===t.length)return e;return t.slice(0,n).join(" ")+t.slice(n).join("")},nl=(e,t,n={})=>{if(n.trim!==!1&&e.trim()==="")return"";let r="",s,o,i=el(e),a=[""];for(let[l,d]of e.split(" ").entries()){if(n.trim!==!1)a[a.length-1]=a.at(-1).trimStart();let h=We(a.at(-1));if(l!==0){if(h>=t&&(n.wordWrap===!1||n.trim===!1))a.push(""),h=0;if(h>0||n.trim===!1)a[a.length-1]+=" ",h++}if(n.hard&&i[l]>t){let m=t-h,p=1+Math.floor((i[l]-m-1)/t);if(Math.floor((i[l]-1)/t)<p)a.push("");Ws(a,d,t);continue}if(h+i[l]>t&&h>0&&i[l]>0){if(n.wordWrap===!1&&h<t){Ws(a,d,t);continue}a.push("")}if(h+i[l]>t&&n.wordWrap===!1){Ws(a,d,t);continue}a[a.length-1]+=d}if(n.trim!==!1)a=a.map((l)=>tl(l));let c=a.join(`
8
+ `),u=[...c],f=0;for(let[l,d]of u.entries()){if(r+=d,Pn.has(d)){let{groups:m}=new RegExp(`(?:\\${Ho}(?<code>\\d+)m|\\${Tn}(?<uri>.*)${Us})`).exec(c.slice(f))||{groups:{}};if(m.code!==void 0){let p=Number.parseFloat(m.code);s=p===Zu?void 0:p}else if(m.uri!==void 0)o=m.uri.length===0?void 0:m.uri}let h=Ko.codes.get(Number(s));if(u[l+1]===`
9
+ `){if(o)r+=zo("");if(s&&h)r+=Jo(h)}else if(d===`
10
+ `){if(s&&h)r+=Jo(s);if(o)r+=zo(o)}f+=d.length}return r};function Ks(e,t,n){return String(e).normalize().replaceAll(`\r
11
11
  `,`
12
12
  `).split(`
13
- `).map((r)=>Hu(r,t,n)).join(`
14
- `)}function Us(e){return yo(e,{stringWidth:We,stripAnsi:pt,wrap:Ws})}import{dirname as Ko,resolve as Jo}from"path";import{readdirSync as qu,statSync as Yu}from"fs";function Ks(e,t){let n=Jo(".",e),r;if(!Yu(n).isDirectory())n=Ko(n);while(!0){if(r=t(n,qu(n)),r)return Jo(n,r);if(n=Ko(r=n),r===n)break}}import{inspect as dl}from"util";import{fileURLToPath as ai}from"url";import{format as Vu}from"util";import{normalize as Zu,resolve as Qu}from"path";function gt(e){if(!(e!==e.toLowerCase()&&e!==e.toUpperCase()))e=e.toLowerCase();if(e.indexOf("-")===-1&&e.indexOf("_")===-1)return e;else{let n="",r=!1,s=e.match(/^-+/);for(let o=s?s[0].length:0;o<e.length;o++){let i=e.charAt(o);if(r)r=!1,i=i.toUpperCase();if(o!==0&&(i==="-"||i==="_"))r=!0;else if(i!=="-"&&i!=="_")n+=i}return n}}function Pn(e,t){let n=e.toLowerCase();t=t||"-";let r="";for(let s=0;s<e.length;s++){let o=n.charAt(s),i=e.charAt(s);if(o!==i&&s>0)r+=`${t}${n.charAt(s)}`;else r+=i}return r}function Rn(e){if(e===null||e===void 0)return!1;if(typeof e==="number")return!0;if(/^0x[0-9a-f]+$/i.test(e))return!0;if(/^0[^.]/.test(e))return!1;return/^[-]?(?:\d+(?:\.\d*)?|\.\d+)(e[-+]?\d+)?$/.test(e)}function zo(e){if(Array.isArray(e))return e.map((i)=>typeof i!=="string"?i+"":i);e=e.trim();let t=0,n=null,r=null,s=null,o=[];for(let i=0;i<e.length;i++){if(n=r,r=e.charAt(i),r===" "&&!s){if(n!==" ")t++;continue}if(r===s)s=null;else if((r==="'"||r==='"')&&!s)s=r;if(!o[t])o[t]="";o[t]+=r}return o}var Te;(function(e){e.BOOLEAN="boolean",e.STRING="string",e.NUMBER="number",e.ARRAY="array"})(Te||(Te={}));var Ze;class zs{constructor(e){Ze=e}parse(e,t){let n=Object.assign({alias:void 0,array:void 0,boolean:void 0,config:void 0,configObjects:void 0,configuration:void 0,coerce:void 0,count:void 0,default:void 0,envPrefix:void 0,narg:void 0,normalize:void 0,string:void 0,number:void 0,__:void 0,key:void 0},t),r=zo(e),s=typeof e==="string",o=Xu(Object.assign(Object.create(null),n.alias)),i=Object.assign({"boolean-negation":!0,"camel-case-expansion":!0,"combine-arrays":!1,"dot-notation":!0,"duplicate-arguments-array":!0,"flatten-duplicate-arrays":!0,"greedy-arrays":!0,"halt-at-non-option":!1,"nargs-eats-options":!1,"negation-prefix":"no-","parse-numbers":!0,"parse-positional-numbers":!0,"populate--":!1,"set-placeholder-key":!1,"short-option-groups":!0,"strip-aliased":!1,"strip-dashed":!1,"unknown-options-as-args":!1},n.configuration),a=Object.assign(Object.create(null),n.default),c=n.configObjects||[],u=n.envPrefix,f=i["populate--"],l=f?"--":"_",d=Object.create(null),p=Object.create(null),m=n.__||Ze.format,h={aliases:Object.create(null),arrays:Object.create(null),bools:Object.create(null),strings:Object.create(null),numbers:Object.create(null),counts:Object.create(null),normalize:Object.create(null),configs:Object.create(null),nargs:Object.create(null),coercions:Object.create(null),keys:[]},y=/^-([0-9]+(\.[0-9]+)?|\.[0-9]+)$/,E=new RegExp("^--"+i["negation-prefix"]+"(.+)");if([].concat(n.array||[]).filter(Boolean).forEach(function(D){let w=typeof D==="object"?D.key:D,T=Object.keys(D).map(function(x){return{boolean:"bools",string:"strings",number:"numbers"}[x]}).filter(Boolean).pop();if(T)h[T][w]=!0;h.arrays[w]=!0,h.keys.push(w)}),[].concat(n.boolean||[]).filter(Boolean).forEach(function(D){h.bools[D]=!0,h.keys.push(D)}),[].concat(n.string||[]).filter(Boolean).forEach(function(D){h.strings[D]=!0,h.keys.push(D)}),[].concat(n.number||[]).filter(Boolean).forEach(function(D){h.numbers[D]=!0,h.keys.push(D)}),[].concat(n.count||[]).filter(Boolean).forEach(function(D){h.counts[D]=!0,h.keys.push(D)}),[].concat(n.normalize||[]).filter(Boolean).forEach(function(D){h.normalize[D]=!0,h.keys.push(D)}),typeof n.narg==="object")Object.entries(n.narg).forEach(([D,w])=>{if(typeof w==="number")h.nargs[D]=w,h.keys.push(D)});if(typeof n.coerce==="object")Object.entries(n.coerce).forEach(([D,w])=>{if(typeof w==="function")h.coercions[D]=w,h.keys.push(D)});if(typeof n.config<"u"){if(Array.isArray(n.config)||typeof n.config==="string")[].concat(n.config).filter(Boolean).forEach(function(D){h.configs[D]=!0});else if(typeof n.config==="object")Object.entries(n.config).forEach(([D,w])=>{if(typeof w==="boolean"||typeof w==="function")h.configs[D]=w})}ee(n.key,o,n.default,h.arrays),Object.keys(a).forEach(function(D){(h.aliases[D]||[]).forEach(function(w){a[w]=a[D]})});let F=null;Ms();let A=[],k=Object.assign(Object.create(null),{_:[]}),B={};for(let D=0;D<r.length;D++){let w=r[D],T=w.replace(/^-{3,}/,"---"),x,b,U,M,J,ge;if(w!=="--"&&/^-/.test(w)&&se(w))I(w);else if(T.match(/^---+(=|$)/)){I(w);continue}else if(w.match(/^--.+=/)||!i["short-option-groups"]&&w.match(/^-.+=/)){if(M=w.match(/^--?([^=]+)=([\s\S]*)$/),M!==null&&Array.isArray(M)&&M.length>=3)if(N(M[1],h.arrays))D=V(D,M[1],r,M[2]);else if(N(M[1],h.nargs)!==!1)D=R(D,M[1],r,M[2]);else L(M[1],M[2],!0)}else if(w.match(E)&&i["boolean-negation"]){if(M=w.match(E),M!==null&&Array.isArray(M)&&M.length>=2)b=M[1],L(b,N(b,h.arrays)?[!1]:!1)}else if(w.match(/^--.+/)||!i["short-option-groups"]&&w.match(/^-[^-]+/)){if(M=w.match(/^--?(.+)/),M!==null&&Array.isArray(M)&&M.length>=2)if(b=M[1],N(b,h.arrays))D=V(D,b,r);else if(N(b,h.nargs)!==!1)D=R(D,b,r);else if(J=r[D+1],J!==void 0&&(!J.match(/^-/)||J.match(y))&&!N(b,h.bools)&&!N(b,h.counts))L(b,J),D++;else if(/^(true|false)$/.test(J))L(b,J),D++;else L(b,Z(b))}else if(w.match(/^-.\..+=/)){if(M=w.match(/^-([^=]+)=([\s\S]*)$/),M!==null&&Array.isArray(M)&&M.length>=3)L(M[1],M[2])}else if(w.match(/^-.\..+/)&&!w.match(y)){if(J=r[D+1],M=w.match(/^-(.\..+)/),M!==null&&Array.isArray(M)&&M.length>=2)if(b=M[1],J!==void 0&&!J.match(/^-/)&&!N(b,h.bools)&&!N(b,h.counts))L(b,J),D++;else L(b,Z(b))}else if(w.match(/^-[^-]+/)&&!w.match(y)){U=w.slice(1,-1).split(""),x=!1;for(let Fe=0;Fe<U.length;Fe++){if(J=w.slice(Fe+2),U[Fe+1]&&U[Fe+1]==="="){if(ge=w.slice(Fe+3),b=U[Fe],N(b,h.arrays))D=V(D,b,r,ge);else if(N(b,h.nargs)!==!1)D=R(D,b,r,ge);else L(b,ge);x=!0;break}if(J==="-"){L(U[Fe],J);continue}if(/[A-Za-z]/.test(U[Fe])&&/^-?\d+(\.\d*)?(e-?\d+)?$/.test(J)&&N(J,h.bools)===!1){L(U[Fe],J),x=!0;break}if(U[Fe+1]&&U[Fe+1].match(/\W/)){L(U[Fe],J),x=!0;break}else L(U[Fe],Z(U[Fe]))}if(b=w.slice(-1)[0],!x&&b!=="-")if(N(b,h.arrays))D=V(D,b,r);else if(N(b,h.nargs)!==!1)D=R(D,b,r);else if(J=r[D+1],J!==void 0&&(!/^(-|--)[^-]/.test(J)||J.match(y))&&!N(b,h.bools)&&!N(b,h.counts))L(b,J),D++;else if(/^(true|false)$/.test(J))L(b,J),D++;else L(b,Z(b))}else if(w.match(/^-[0-9]$/)&&w.match(y)&&N(w.slice(1),h.bools))b=w.slice(1),L(b,Z(b));else if(w==="--"){A=r.slice(D+1);break}else if(i["halt-at-non-option"]){A=r.slice(D);break}else I(w)}if(G(k,!0),G(k,!1),S(k),W(),Ie(k,h.aliases,a,!0),q(k),i["set-placeholder-key"])ae(k);if(Object.keys(h.counts).forEach(function(D){if(!te(k,D.split(".")))L(D,0)}),f&&A.length)k[l]=[];if(A.forEach(function(D){k[l].push(D)}),i["camel-case-expansion"]&&i["strip-dashed"])Object.keys(k).filter((D)=>D!=="--"&&D.includes("-")).forEach((D)=>{delete k[D]});if(i["strip-aliased"])[].concat(...Object.keys(o).map((D)=>o[D])).forEach((D)=>{if(i["camel-case-expansion"]&&D.includes("-"))delete k[D.split(".").map((w)=>gt(w)).join(".")];delete k[D]});function I(D){let w=C("_",D);if(typeof w==="string"||typeof w==="number")k._.push(w)}function R(D,w,T,x){let b,U=N(w,h.nargs);if(U=typeof U!=="number"||isNaN(U)?1:U,U===0){if(!he(x))F=Error(m("Argument unexpected for: %s",w));return L(w,Z(w)),D}let M=he(x)?0:1;if(i["nargs-eats-options"]){if(T.length-(D+1)+M<U)F=Error(m("Not enough arguments following: %s",w));M=U}else{for(b=D+1;b<T.length;b++)if(!T[b].match(/^-[^0-9]/)||T[b].match(y)||se(T[b]))M++;else break;if(M<U)F=Error(m("Not enough arguments following: %s",w))}let J=Math.min(M,U);if(!he(x)&&J>0)L(w,x),J--;for(b=D+1;b<J+D+1;b++)L(w,T[b]);return D+J}function V(D,w,T,x){let b=[],U=x||T[D+1],M=N(w,h.nargs);if(N(w,h.bools)&&!/^(true|false)$/.test(U))b.push(!0);else if(he(U)||he(x)&&/^-/.test(U)&&!y.test(U)&&!se(U)){if(a[w]!==void 0){let J=a[w];b=Array.isArray(J)?J:[J]}}else{if(!he(x))b.push(_(w,x,!0));for(let J=D+1;J<T.length;J++){if(!i["greedy-arrays"]&&b.length>0||M&&typeof M==="number"&&b.length>=M)break;if(U=T[J],/^-/.test(U)&&!y.test(U)&&!se(U))break;D=J,b.push(_(w,U,s))}}if(typeof M==="number"&&(M&&b.length<M||isNaN(M)&&b.length===0))F=Error(m("Not enough arguments following: %s",w));return L(w,b),D}function L(D,w,T=s){if(/-/.test(D)&&i["camel-case-expansion"]){let U=D.split(".").map(function(M){return gt(M)}).join(".");ne(D,U)}let x=_(D,w,T),b=D.split(".");if(ke(k,b,x),h.aliases[D])h.aliases[D].forEach(function(U){let M=U.split(".");ke(k,M,x)});if(b.length>1&&i["dot-notation"])(h.aliases[b[0]]||[]).forEach(function(U){let M=U.split("."),J=[].concat(b);if(J.shift(),M=M.concat(J),!(h.aliases[D]||[]).includes(M.join(".")))ke(k,M,x)});if(N(D,h.normalize)&&!N(D,h.arrays))[D].concat(h.aliases[D]||[]).forEach(function(M){Object.defineProperty(B,M,{enumerable:!0,get(){return w},set(J){w=typeof J==="string"?Ze.normalize(J):J}})})}function ne(D,w){if(!(h.aliases[D]&&h.aliases[D].length))h.aliases[D]=[w],d[w]=!0;if(!(h.aliases[w]&&h.aliases[w].length))ne(w,D)}function _(D,w,T){if(T)w=Gu(w);if(N(D,h.bools)||N(D,h.counts)){if(typeof w==="string")w=w==="true"}let x=Array.isArray(w)?w.map(function(b){return C(D,b)}):C(D,w);if(N(D,h.counts)&&(he(x)||typeof x==="boolean"))x=Js();if(N(D,h.normalize)&&N(D,h.arrays))if(Array.isArray(w))x=w.map((b)=>Ze.normalize(b));else x=Ze.normalize(w);return x}function C(D,w){if(!i["parse-positional-numbers"]&&D==="_")return w;if(!N(D,h.strings)&&!N(D,h.bools)&&!Array.isArray(w)){if(Rn(w)&&i["parse-numbers"]&&Number.isSafeInteger(Math.floor(parseFloat(`${w}`)))||!he(w)&&N(D,h.numbers))w=Number(w)}return w}function S(D){let w=Object.create(null);Ie(w,h.aliases,a),Object.keys(h.configs).forEach(function(T){let x=D[T]||w[T];if(x)try{let b=null,U=Ze.resolve(Ze.cwd(),x),M=h.configs[T];if(typeof M==="function"){try{b=M(U)}catch(J){b=J}if(b instanceof Error){F=b;return}}else b=Ze.require(U);O(b)}catch(b){if(b.name==="PermissionDenied")F=b;else if(D[T])F=Error(m("Invalid JSON config file: %s",x))}})}function O(D,w){Object.keys(D).forEach(function(T){let x=D[T],b=w?w+"."+T:T;if(typeof x==="object"&&x!==null&&!Array.isArray(x)&&i["dot-notation"])O(x,b);else if(!te(k,b.split("."))||N(b,h.arrays)&&i["combine-arrays"])L(b,x)})}function W(){if(typeof c<"u")c.forEach(function(D){O(D)})}function G(D,w){if(typeof u>"u")return;let T=typeof u==="string"?u:"",x=Ze.env();Object.keys(x).forEach(function(b){if(T===""||b.lastIndexOf(T,0)===0){let U=b.split("__").map(function(M,J){if(J===0)M=M.substring(T.length);return gt(M)});if((w&&h.configs[U.join(".")]||!w)&&!te(D,U))L(U.join("."),x[b])}})}function q(D){let w,T=new Set;Object.keys(D).forEach(function(x){if(!T.has(x)){if(w=N(x,h.coercions),typeof w==="function")try{let b=C(x,w(D[x]));[].concat(h.aliases[x]||[],x).forEach((U)=>{T.add(U),D[U]=b})}catch(b){F=b}}})}function ae(D){return h.keys.forEach((w)=>{if(~w.indexOf("."))return;if(typeof D[w]>"u")D[w]=void 0}),D}function Ie(D,w,T,x=!1){Object.keys(T).forEach(function(b){if(!te(D,b.split("."))){if(ke(D,b.split("."),T[b]),x)p[b]=!0;(w[b]||[]).forEach(function(U){if(te(D,U.split(".")))return;ke(D,U.split("."),T[b])})}})}function te(D,w){let T=D;if(!i["dot-notation"])w=[w.join(".")];w.slice(0,-1).forEach(function(b){T=T[b]||{}});let x=w[w.length-1];if(typeof T!=="object")return!1;else return x in T}function ke(D,w,T){let x=D;if(!i["dot-notation"])w=[w.join(".")];w.slice(0,-1).forEach(function(ge){if(ge=Ho(ge),typeof x==="object"&&x[ge]===void 0)x[ge]={};if(typeof x[ge]!=="object"||Array.isArray(x[ge])){if(Array.isArray(x[ge]))x[ge].push({});else x[ge]=[x[ge],{}];x=x[ge][x[ge].length-1]}else x=x[ge]});let b=Ho(w[w.length-1]),U=N(w.join("."),h.arrays),M=Array.isArray(T),J=i["duplicate-arguments-array"];if(!J&&N(b,h.nargs)){if(J=!0,!he(x[b])&&h.nargs[b]===1||Array.isArray(x[b])&&x[b].length===h.nargs[b])x[b]=void 0}if(T===Js())x[b]=Js(x[b]);else if(Array.isArray(x[b]))if(J&&U&&M)x[b]=i["flatten-duplicate-arrays"]?x[b].concat(T):(Array.isArray(x[b][0])?x[b]:[x[b]]).concat([T]);else if(!J&&Boolean(U)===Boolean(M))x[b]=T;else x[b]=x[b].concat([T]);else if(x[b]===void 0&&U)x[b]=M?T:[T];else if(J&&!(x[b]===void 0||N(b,h.counts)||N(b,h.bools)))x[b]=[x[b],T];else x[b]=T}function ee(...D){D.forEach(function(w){Object.keys(w||{}).forEach(function(T){if(h.aliases[T])return;h.aliases[T]=[].concat(o[T]||[]),h.aliases[T].concat(T).forEach(function(x){if(/-/.test(x)&&i["camel-case-expansion"]){let b=gt(x);if(b!==T&&h.aliases[T].indexOf(b)===-1)h.aliases[T].push(b),d[b]=!0}}),h.aliases[T].concat(T).forEach(function(x){if(x.length>1&&/[A-Z]/.test(x)&&i["camel-case-expansion"]){let b=Pn(x,"-");if(b!==T&&h.aliases[T].indexOf(b)===-1)h.aliases[T].push(b),d[b]=!0}}),h.aliases[T].forEach(function(x){h.aliases[x]=[T].concat(h.aliases[T].filter(function(b){return x!==b}))})})})}function N(D,w){let T=[].concat(h.aliases[D]||[],D),x=Object.keys(w),b=T.find((U)=>x.includes(U));return b?w[b]:!1}function we(D){let w=Object.keys(h);return[].concat(w.map((x)=>h[x])).some(function(x){return Array.isArray(x)?x.includes(D):x[D]})}function Wt(D,...w){return[].concat(...w).some(function(x){let b=D.match(x);return b&&we(b[1])})}function z(D){if(D.match(y)||!D.match(/^-[^-]+/))return!1;let w=!0,T,x=D.slice(1).split("");for(let b=0;b<x.length;b++){if(T=D.slice(b+2),!we(x[b])){w=!1;break}if(x[b+1]&&x[b+1]==="="||T==="-"||/[A-Za-z]/.test(x[b])&&/^-?\d+(\.\d*)?(e-?\d+)?$/.test(T)||x[b+1]&&x[b+1].match(/\W/))break}return w}function se(D){return i["unknown-options-as-args"]&&de(D)}function de(D){if(D=D.replace(/^-{3,}/,"--"),D.match(y))return!1;if(z(D))return!1;return!Wt(D,/^-+([^=]+?)=[\s\S]*$/,E,/^-+([^=]+?)$/,/^-+([^=]+?)-$/,/^-+([^=]+?\d+)$/,/^-+([^=]+?)\W+.*$/)}function Z(D){if(!N(D,h.bools)&&!N(D,h.counts)&&`${D}`in a)return a[D];else return ye(ue(D))}function ye(D){return{[Te.BOOLEAN]:!0,[Te.STRING]:"",[Te.NUMBER]:void 0,[Te.ARRAY]:[]}[D]}function ue(D){let w=Te.BOOLEAN;if(N(D,h.strings))w=Te.STRING;else if(N(D,h.numbers))w=Te.NUMBER;else if(N(D,h.bools))w=Te.BOOLEAN;else if(N(D,h.arrays))w=Te.ARRAY;return w}function he(D){return D===void 0}function Ms(){Object.keys(h.counts).find((D)=>{if(N(D,h.arrays))return F=Error(m("Invalid configuration: %s, opts.count excludes opts.array.",D)),!0;else if(N(D,h.nargs))return F=Error(m("Invalid configuration: %s, opts.count excludes opts.narg.",D)),!0;return!1})}return{aliases:Object.assign({},h.aliases),argv:Object.assign(B,k),configuration:i,defaulted:Object.assign({},p),error:F,newAliases:Object.assign({},d)}}}function Xu(e){let t=[],n=Object.create(null),r=!0;Object.keys(e).forEach(function(s){t.push([].concat(e[s],s))});while(r){r=!1;for(let s=0;s<t.length;s++)for(let o=s+1;o<t.length;o++)if(t[s].filter(function(a){return t[o].indexOf(a)!==-1}).length){t[s]=t[s].concat(t[o]),t.splice(o,1),r=!0;break}}return t.forEach(function(s){s=s.filter(function(i,a,c){return c.indexOf(i)===a});let o=s.pop();if(o!==void 0&&typeof o==="string")n[o]=s}),n}function Js(e){return e!==void 0?e+1:1}function Ho(e){if(e==="__proto__")return"___proto___";return e}function Gu(e){return typeof e==="string"&&(e[0]==="'"||e[0]==='"')&&e[e.length-1]===e[0]?e.substring(1,e.length-1):e}import{readFileSync as el}from"fs";import{createRequire as qo}from"node:module";var Hs,qs,Ys,Yo=process&&process.env&&process.env.YARGS_MIN_NODE_VERSION?Number(process.env.YARGS_MIN_NODE_VERSION):20,Xo=(qs=(Hs=process===null||process===void 0?void 0:process.versions)===null||Hs===void 0?void 0:Hs.node)!==null&&qs!==void 0?qs:(Ys=process===null||process===void 0?void 0:process.version)===null||Ys===void 0?void 0:Ys.slice(1);if(Xo){if(Number(Xo.match(/^([^.]+)/)[1])<Yo)throw Error(`yargs parser supports a minimum Node.js version of ${Yo}. Read our version support policy: https://github.com/yargs/yargs-parser#supported-nodejs-versions`)}var tl=process?process.env:{},Go=qo?qo(import.meta.url):void 0,Vo=new zs({cwd:process.cwd,env:()=>tl,format:Vu,normalize:Zu,resolve:Qu,require:(e)=>{if(typeof Go<"u")return Go(e);else if(e.match(/\.json$/))return JSON.parse(el(e,"utf8"));else throw Error("only .json config files are supported in ESM")}}),sn=function(t,n){return Vo.parse(t.slice(),n).argv};sn.detailed=function(e,t){return Vo.parse(e.slice(),t)};sn.camelCase=gt;sn.decamelize=Pn;sn.looksLikeNumber=Rn;var Xs=sn;import{basename as hl,dirname as pl,extname as gl,relative as ml,resolve as ii,join as Dl}from"path";function Zo(){if(nl())return 0;return 1}function nl(){return sl()&&!process.defaultApp}function sl(){return!!process.versions.electron}function Gs(e){return e.slice(Zo()+1)}function Qo(){return process.argv[Zo()]}import{readFileSync as rl,statSync as ol,writeFile as il}from"fs";import{format as al}from"util";import{resolve as cl}from"path";var ei={fs:{readFileSync:rl,writeFile:il},format:al,resolve:cl,exists:(e)=>{try{return ol(e).isFile()}catch(t){return!1}}};var Ue;class ti{constructor(e){e=e||{},this.directory=e.directory||"./locales",this.updateFiles=typeof e.updateFiles==="boolean"?e.updateFiles:!0,this.locale=e.locale||"en",this.fallbackToLanguage=typeof e.fallbackToLanguage==="boolean"?e.fallbackToLanguage:!0,this.cache=Object.create(null),this.writeQueue=[]}__(...e){if(typeof arguments[0]!=="string")return this._taggedLiteral(arguments[0],...arguments);let t=e.shift(),n=function(){};if(typeof e[e.length-1]==="function")n=e.pop();if(n=n||function(){},!this.cache[this.locale])this._readLocaleFile();if(!this.cache[this.locale][t]&&this.updateFiles)this.cache[this.locale][t]=t,this._enqueueWrite({directory:this.directory,locale:this.locale,cb:n});else n();return Ue.format.apply(Ue.format,[this.cache[this.locale][t]||t].concat(e))}__n(){let e=Array.prototype.slice.call(arguments),t=e.shift(),n=e.shift(),r=e.shift(),s=function(){};if(typeof e[e.length-1]==="function")s=e.pop();if(!this.cache[this.locale])this._readLocaleFile();let o=r===1?t:n;if(this.cache[this.locale][t])o=this.cache[this.locale][t][r===1?"one":"other"];if(!this.cache[this.locale][t]&&this.updateFiles)this.cache[this.locale][t]={one:t,other:n},this._enqueueWrite({directory:this.directory,locale:this.locale,cb:s});else s();let i=[o];if(~o.indexOf("%d"))i.push(r);return Ue.format.apply(Ue.format,i.concat(e))}setLocale(e){this.locale=e}getLocale(){return this.locale}updateLocale(e){if(!this.cache[this.locale])this._readLocaleFile();for(let t in e)if(Object.prototype.hasOwnProperty.call(e,t))this.cache[this.locale][t]=e[t]}_taggedLiteral(e,...t){let n="";return e.forEach(function(r,s){let o=t[s+1];if(n+=r,typeof o<"u")n+="%s"}),this.__.apply(this,[n].concat([].slice.call(t,1)))}_enqueueWrite(e){if(this.writeQueue.push(e),this.writeQueue.length===1)this._processWriteQueue()}_processWriteQueue(){let e=this,t=this.writeQueue[0],{directory:n,locale:r,cb:s}=t,o=this._resolveLocaleFile(n,r),i=JSON.stringify(this.cache[r],null,2);Ue.fs.writeFile(o,i,"utf-8",function(a){if(e.writeQueue.shift(),e.writeQueue.length>0)e._processWriteQueue();s(a)})}_readLocaleFile(){let e={},t=this._resolveLocaleFile(this.directory,this.locale);try{if(Ue.fs.readFileSync)e=JSON.parse(Ue.fs.readFileSync(t,"utf-8"))}catch(n){if(n instanceof SyntaxError)n.message="syntax error in "+t;if(n.code==="ENOENT")e={};else throw n}this.cache[this.locale]=e}_resolveLocaleFile(e,t){let n=Ue.resolve(e,"./",t+".json");if(this.fallbackToLanguage&&!this._fileExistsSync(n)&&~t.lastIndexOf("_")){let r=Ue.resolve(e,"./",t.split("_")[0]+".json");if(this._fileExistsSync(r))n=r}return n}_fileExistsSync(e){return Ue.exists(e)}}function ni(e,t){Ue=t;let n=new ti(e);return{__:n.__.bind(n),__n:n.__n.bind(n),setLocale:n.setLocale.bind(n),getLocale:n.getLocale.bind(n),updateLocale:n.updateLocale.bind(n),locale:n.locale}}var ul=(e)=>ni(e,ei),si=ul;var ci=po(oi(),1);import{createRequire as yl}from"node:module";import{readFileSync as bl,readdirSync as wl}from"node:fs";var Vs=ai(import.meta.url),Fl=Vs.substring(0,Vs.lastIndexOf("node_modules")),Cl=yl(import.meta.url),Zs={assert:{notStrictEqual:ll,strictEqual:fl},cliui:Us,findUp:Ks,getEnv:(e)=>process.env[e],inspect:dl,getProcessArgvBin:Qo,mainFilename:Fl||process.cwd(),Parser:Xs,path:{basename:hl,dirname:pl,extname:gl,relative:ml,resolve:ii,join:Dl},process:{argv:()=>process.argv,cwd:process.cwd,emitWarning:(e,t)=>process.emitWarning(e,t),execPath:()=>process.execPath,exit:(e)=>{process.exit(e)},nextTick:process.nextTick,stdColumns:typeof process.stdout.columns<"u"?process.stdout.columns:null},readFileSync:bl,readdirSync:wl,require:Cl,getCallerFile:()=>{let e=ci.default(3);return e.match(/^file:\/\//)?ai(e):e},stringWidth:We,y18n:si({directory:ii(Vs,"../../../locales"),updateFiles:!1})};function Ce(e,t,n,r){n.assert.notStrictEqual(e,t,r)}function Qs(e,t){t.assert.strictEqual(typeof e,"string")}function Ut(e){return Object.keys(e)}function re(e){return!!e&&!!e.then&&typeof e.then==="function"}class le extends Error{constructor(e){super(e||"yargs error");if(this.name="YError",Error.captureStackTrace)Error.captureStackTrace(this,le)}}function st(e){let n=e.replace(/\s{2,}/g," ").split(/\s+(?![^[]*]|[^<]*>)/),r=/\.*[\][<>]/g,s=n.shift();if(!s)throw Error(`No command found in: ${e}`);let o={cmd:s.replace(r,""),demanded:[],optional:[]};return n.forEach((i,a)=>{let c=!1;if(i=i.replace(/\s/g,""),/\.+[\]>]/.test(i)&&a===n.length-1)c=!0;if(/^\[/.test(i))o.optional.push({cmd:i.replace(r,"").split("|"),variadic:c});else o.demanded.push({cmd:i.replace(r,"").split("|"),variadic:c})}),o}var El=["first","second","third","fourth","fifth","sixth"];function v(e,t,n){function r(){return typeof e==="object"?[{demanded:[],optional:[]},e,t]:[st(`cmd ${e}`),t,n]}try{let s=0,[o,i,a]=r(),c=[].slice.call(i);while(c.length&&c[c.length-1]===void 0)c.pop();let u=a||c.length;if(u<o.demanded.length)throw new le(`Not enough arguments provided. Expected ${o.demanded.length} but received ${c.length}.`);let f=o.demanded.length+o.optional.length;if(u>f)throw new le(`Too many arguments provided. Expected max ${f} but received ${u}.`);o.demanded.forEach((l)=>{let d=c.shift(),p=ui(d);if(l.cmd.filter((h)=>h===p||h==="*").length===0)li(p,l.cmd,s);s+=1}),o.optional.forEach((l)=>{if(c.length===0)return;let d=c.shift(),p=ui(d);if(l.cmd.filter((h)=>h===p||h==="*").length===0)li(p,l.cmd,s);s+=1})}catch(s){console.warn(s.stack)}}function ui(e){if(Array.isArray(e))return"array";else if(e===null)return"null";return typeof e}function li(e,t,n){throw new le(`Invalid ${El[n]||"manyith"} argument. Expected ${t.join(" or ")} but received ${e}.`)}class er{constructor(e){this.globalMiddleware=[],this.frozens=[],this.yargs=e}addMiddleware(e,t,n=!0,r=!1){if(v("<array|function> [boolean] [boolean] [boolean]",[e,t,n],arguments.length),Array.isArray(e)){for(let s=0;s<e.length;s++){if(typeof e[s]!=="function")throw Error("middleware must be a function");let o=e[s];o.applyBeforeValidation=t,o.global=n}Array.prototype.push.apply(this.globalMiddleware,e)}else if(typeof e==="function"){let s=e;s.applyBeforeValidation=t,s.global=n,s.mutates=r,this.globalMiddleware.push(e)}return this.yargs}addCoerceMiddleware(e,t){let n=this.yargs.getAliases();return this.globalMiddleware=this.globalMiddleware.filter((r)=>{let s=[...n[t]||[],t];if(!r.option)return!0;else return!s.includes(r.option)}),e.option=t,this.addMiddleware(e,!0,!0,!0)}getMiddleware(){return this.globalMiddleware}freeze(){this.frozens.push([...this.globalMiddleware])}unfreeze(){let e=this.frozens.pop();if(e!==void 0)this.globalMiddleware=e}reset(){this.globalMiddleware=this.globalMiddleware.filter((e)=>e.global)}}function fi(e){if(!e)return[];return e.map((t)=>(t.applyBeforeValidation=!1,t))}function mt(e,t,n,r){return n.reduce((s,o)=>{if(o.applyBeforeValidation!==r)return s;if(o.mutates){if(o.applied)return s;o.applied=!0}if(re(s))return s.then((i)=>Promise.all([i,o(i,t)])).then(([i,a])=>Object.assign(i,a));else{let i=o(s,t);return re(i)?i.then((a)=>Object.assign(s,a)):Object.assign(s,i)}},e)}function Dt(e,t,n=(r)=>{throw r}){try{let r=xl(e)?e():e;return re(r)?r.then((s)=>t(s)):t(r)}catch(r){return n(r)}}function xl(e){return typeof e==="function"}var Kt=/(^\*)|(^\$0)/;class hi{constructor(e,t,n,r){this.requireCache=new Set,this.handlers={},this.aliasMap={},this.frozens=[],this.shim=r,this.usage=e,this.globalMiddleware=n,this.validation=t}addDirectory(e,t,n,r){r=r||{},this.requireCache.add(n);let s=this.shim.path.resolve(this.shim.path.dirname(n),e),o=this.shim.readdirSync(s,{recursive:r.recurse?!0:!1});if(!Array.isArray(r.extensions))r.extensions=["js"];let i=typeof r.visit==="function"?r.visit:(a)=>a;for(let a of o){let c=a.toString();if(r.exclude){let f=!1;if(typeof r.exclude==="function")f=r.exclude(c);else f=r.exclude.test(c);if(f)continue}if(r.include){let f=!1;if(typeof r.include==="function")f=r.include(c);else f=r.include.test(c);if(!f)continue}let u=!1;for(let f of r.extensions)if(c.endsWith(f))u=!0;if(u){let f=this.shim.path.join(s,c),l=t(f),d=Object.create(null,Object.getOwnPropertyDescriptors({...l}));if(i(d,f,c)){if(this.requireCache.has(f))continue;else this.requireCache.add(f);if(!d.command)d.command=this.shim.path.basename(f,this.shim.path.extname(f));this.addHandler(d)}}}}addHandler(e,t,n,r,s,o){let i=[],a=fi(s);if(r=r||(()=>{}),Array.isArray(e))if(_l(e))[e,...i]=e;else for(let c of e)this.addHandler(c);else if(Sl(e)){let c=Array.isArray(e.command)||typeof e.command==="string"?e.command:null;if(c===null)throw Error(`No command name given for module: ${this.shim.inspect(e)}`);if(e.aliases)c=[].concat(c).concat(e.aliases);this.addHandler(c,this.extractDesc(e),e.builder,e.handler,e.middlewares,e.deprecated);return}else if(di(n)){this.addHandler([e].concat(i),t,n.builder,n.handler,n.middlewares,n.deprecated);return}if(typeof e==="string"){let c=st(e);i=i.map((l)=>st(l).cmd);let u=!1,f=[c.cmd].concat(i).filter((l)=>{if(Kt.test(l))return u=!0,!1;return!0});if(f.length===0&&u)f.push("$0");if(u)c.cmd=f[0],i=f.slice(1),e=e.replace(Kt,c.cmd);if(i.forEach((l)=>{this.aliasMap[l]=c.cmd}),t!==!1)this.usage.command(e,t,u,i,o);if(this.handlers[c.cmd]={original:e,description:t,handler:r,builder:n||{},middlewares:a,deprecated:o,demanded:c.demanded,optional:c.optional},u)this.defaultCommand=this.handlers[c.cmd]}}getCommandHandlers(){return this.handlers}getCommands(){return Object.keys(this.handlers).concat(Object.keys(this.aliasMap))}hasDefaultCommand(){return!!this.defaultCommand}runCommand(e,t,n,r,s,o){let i=this.handlers[e]||this.handlers[this.aliasMap[e]]||this.defaultCommand,a=t.getInternalMethods().getContext(),c=a.commands.slice(),u=!e;if(e)a.commands.push(e),a.fullCommands.push(i.original);let f=this.applyBuilderUpdateUsageAndParse(u,i,t,n.aliases,c,r,s,o);return re(f)?f.then((l)=>this.applyMiddlewareAndGetResult(u,i,l.innerArgv,a,s,l.aliases,t)):this.applyMiddlewareAndGetResult(u,i,f.innerArgv,a,s,f.aliases,t)}applyBuilderUpdateUsageAndParse(e,t,n,r,s,o,i,a){let c=t.builder,u=n;if(Mn(c)){n.getInternalMethods().getUsageInstance().freeze();let f=c(n.getInternalMethods().reset(r),a);if(re(f))return f.then((l)=>(u=gi(l)?l:n,this.parseAndUpdateUsage(e,t,u,s,o,i)))}else if(kl(c))n.getInternalMethods().getUsageInstance().freeze(),u=n.getInternalMethods().reset(r),Object.keys(t.builder).forEach((f)=>{u.option(f,c[f])});return this.parseAndUpdateUsage(e,t,u,s,o,i)}parseAndUpdateUsage(e,t,n,r,s,o){if(e)n.getInternalMethods().getUsageInstance().unfreeze(!0);if(this.shouldUpdateUsage(n))n.getInternalMethods().getUsageInstance().usage(this.usageFromParentCommandsCommandHandler(r,t),t.description);let i=n.getInternalMethods().runYargsParserAndExecuteCommands(null,void 0,!0,s,o);return re(i)?i.then((a)=>({aliases:n.parsed.aliases,innerArgv:a})):{aliases:n.parsed.aliases,innerArgv:i}}shouldUpdateUsage(e){return!e.getInternalMethods().getUsageInstance().getUsageDisabled()&&e.getInternalMethods().getUsageInstance().getUsage().length===0}usageFromParentCommandsCommandHandler(e,t){let n=Kt.test(t.original)?t.original.replace(Kt,"").trim():t.original,r=e.filter((s)=>!Kt.test(s));return r.push(n),`$0 ${r.join(" ")}`}handleValidationAndGetResult(e,t,n,r,s,o,i,a){if(!o.getInternalMethods().getHasOutput()){let c=o.getInternalMethods().runValidation(s,a,o.parsed.error,e);n=Dt(n,(u)=>(c(u),u))}if(t.handler&&!o.getInternalMethods().getHasOutput()){o.getInternalMethods().setHasOutput();let c=!!o.getOptions().configuration["populate--"];if(o.getInternalMethods().postProcess(n,c,!1,!1),n=mt(n,o,i,!1),n=Dt(n,(u)=>{let f=t.handler(u);return re(f)?f.then(()=>u):u}),!e)o.getInternalMethods().getUsageInstance().cacheHelpMessage();if(re(n)&&!o.getInternalMethods().hasParseCallback())n.catch((u)=>{try{o.getInternalMethods().getUsageInstance().fail(null,u)}catch(f){}})}if(!e)r.commands.pop(),r.fullCommands.pop();return n}applyMiddlewareAndGetResult(e,t,n,r,s,o,i){let a={};if(s)return n;if(!i.getInternalMethods().getHasOutput())a=this.populatePositionals(t,n,r,i);let c=this.globalMiddleware.getMiddleware().slice(0).concat(t.middlewares),u=mt(n,i,c,!0);return re(u)?u.then((f)=>this.handleValidationAndGetResult(e,t,f,r,o,i,c,a)):this.handleValidationAndGetResult(e,t,u,r,o,i,c,a)}populatePositionals(e,t,n,r){t._=t._.slice(n.commands.length);let s=e.demanded.slice(0),o=e.optional.slice(0),i={};this.validation.positionalCount(s.length,t._.length);while(s.length){let a=s.shift();this.populatePositional(a,t,i)}while(o.length){let a=o.shift();this.populatePositional(a,t,i)}return t._=n.commands.concat(t._.map((a)=>""+a)),this.postProcessPositionals(t,i,this.cmdToParseOptions(e.original),r),i}populatePositional(e,t,n){let r=e.cmd[0];if(e.variadic)n[r]=t._.splice(0).map(String);else if(t._.length)n[r]=[String(t._.shift())]}cmdToParseOptions(e){let t={array:[],default:{},alias:{},demand:{}},n=st(e);return n.demanded.forEach((r)=>{let[s,...o]=r.cmd;if(r.variadic)t.array.push(s),t.default[s]=[];t.alias[s]=o,t.demand[s]=!0}),n.optional.forEach((r)=>{let[s,...o]=r.cmd;if(r.variadic)t.array.push(s),t.default[s]=[];t.alias[s]=o}),t}postProcessPositionals(e,t,n,r){let s=Object.assign({},r.getOptions());s.default=Object.assign(n.default,s.default);for(let c of Object.keys(n.alias))s.alias[c]=(s.alias[c]||[]).concat(n.alias[c]);s.array=s.array.concat(n.array),s.config={};let o=[];if(Object.keys(t).forEach((c)=>{t[c].map((u)=>{if(s.configuration["unknown-options-as-args"])s.key[c]=!0;o.push(`--${c}`),o.push(u)})}),!o.length)return;let i=Object.assign({},s.configuration,{"populate--":!1}),a=this.shim.Parser.detailed(o,Object.assign({},s,{configuration:i}));if(a.error)r.getInternalMethods().getUsageInstance().fail(a.error.message,a.error);else{let c=Object.keys(t);Object.keys(t).forEach((u)=>{c.push(...a.aliases[u])}),Object.keys(a.argv).forEach((u)=>{if(c.includes(u)){if(!t[u])t[u]=a.argv[u];if(!this.isInConfigs(r,u)&&!this.isDefaulted(r,u)&&Object.prototype.hasOwnProperty.call(e,u)&&Object.prototype.hasOwnProperty.call(a.argv,u)&&(Array.isArray(e[u])||Array.isArray(a.argv[u])))e[u]=[].concat(e[u],a.argv[u]);else e[u]=a.argv[u]}})}}isDefaulted(e,t){let{default:n}=e.getOptions();return Object.prototype.hasOwnProperty.call(n,t)||Object.prototype.hasOwnProperty.call(n,this.shim.Parser.camelCase(t))}isInConfigs(e,t){let{configObjects:n}=e.getOptions();return n.some((r)=>Object.prototype.hasOwnProperty.call(r,t))||n.some((r)=>Object.prototype.hasOwnProperty.call(r,this.shim.Parser.camelCase(t)))}runDefaultBuilderOn(e){if(!this.defaultCommand)return;if(this.shouldUpdateUsage(e)){let n=Kt.test(this.defaultCommand.original)?this.defaultCommand.original:this.defaultCommand.original.replace(/^[^[\]<>]*/,"$0 ");e.getInternalMethods().getUsageInstance().usage(n,this.defaultCommand.description)}let t=this.defaultCommand.builder;if(Mn(t))return t(e,!0);else if(!di(t))Object.keys(t).forEach((n)=>{e.option(n,t[n])});return}extractDesc({describe:e,description:t,desc:n}){for(let r of[e,t,n]){if(typeof r==="string"||r===!1)return r;Ce(r,!0,this.shim)}return!1}freeze(){this.frozens.push({handlers:this.handlers,aliasMap:this.aliasMap,defaultCommand:this.defaultCommand})}unfreeze(){let e=this.frozens.pop();Ce(e,void 0,this.shim),{handlers:this.handlers,aliasMap:this.aliasMap,defaultCommand:this.defaultCommand}=e}reset(){return this.handlers={},this.aliasMap={},this.defaultCommand=void 0,this.requireCache=new Set,this}}function pi(e,t,n,r){return new hi(e,t,n,r)}function di(e){return typeof e==="object"&&!!e.builder&&typeof e.handler==="function"}function _l(e){return e.every((t)=>typeof t==="string")}function Mn(e){return typeof e==="function"}function kl(e){return typeof e==="object"}function Sl(e){return typeof e==="object"&&!Array.isArray(e)}function rt(e={},t=()=>!0){let n={};return Ut(e).forEach((r)=>{if(t(r,e[r]))n[r]=e[r]}),n}function ot(e){if(typeof process>"u")return;[process.stdout,process.stderr].forEach((t)=>{let n=t;if(n._handle&&n.isTTY&&typeof n._handle.setBlocking==="function")n._handle.setBlocking(e)})}function Al(e){return typeof e==="boolean"}function Di(e,t){let n=t.y18n.__,r={},s=[];r.failFn=function(C){s.push(C)};let o=null,i=null,a=!0;r.showHelpOnFail=function(C=!0,S){let[O,W]=typeof C==="string"?[!0,C]:[C,S];if(e.getInternalMethods().isGlobalContext())i=W;return o=W,a=O,r};let c=!1;r.fail=function(C,S){let O=e.getInternalMethods().getLoggerInstance();if(s.length)for(let W=s.length-1;W>=0;--W){let G=s[W];if(Al(G)){if(S)throw S;else if(C)throw Error(C)}else G(C,S,r)}else{if(e.getExitProcess())ot(!0);if(!c){if(c=!0,a)e.showHelp("error"),O.error();if(C||S)O.error(C||S);let W=o||i;if(W){if(C||S)O.error("");O.error(W)}}if(S=S||new le(C),e.getExitProcess())return e.exit(1);else if(e.getInternalMethods().hasParseCallback())return e.exit(1,S);else throw S}};let u=[],f=!1;r.usage=(_,C)=>{if(_===null)return f=!0,u=[],r;return f=!1,u.push([_,C||""]),r},r.getUsage=()=>u,r.getUsageDisabled=()=>f,r.getPositionalGroupName=()=>n("Positionals:");let l=[];r.example=(_,C)=>{l.push([_,C||""])};let d=[];r.command=function(C,S,O,W,G=!1){if(O)d=d.map((q)=>(q[2]=!1,q));d.push([C,S||"",O,W,G])},r.getCommands=()=>d;let p={};r.describe=function(C,S){if(Array.isArray(C))C.forEach((O)=>{r.describe(O,S)});else if(typeof C==="object")Object.keys(C).forEach((O)=>{r.describe(O,C[O])});else p[C]=S},r.getDescriptions=()=>p;let m=[];r.epilog=(_)=>{m.push(_)};let h=!1,y;r.wrap=(_)=>{h=!0,y=_},r.getWrap=()=>{if(t.getEnv("YARGS_DISABLE_WRAP"))return null;if(!h)y=V(),h=!0;return y};let E="__yargsString__:";r.deferY18nLookup=(_)=>E+_,r.help=function(){if(k)return k;A();let C=e.customScriptName?e.$0:t.path.basename(e.$0),S=e.getDemandedOptions(),O=e.getDemandedCommands(),W=e.getDeprecatedOptions(),G=e.getGroups(),q=e.getOptions(),ae=[];ae=ae.concat(Object.keys(p)),ae=ae.concat(Object.keys(S)),ae=ae.concat(Object.keys(O)),ae=ae.concat(Object.keys(q.default)),ae=ae.filter(I),ae=Object.keys(ae.reduce((z,se)=>{if(se!=="_")z[se]=!0;return z},{}));let Ie=r.getWrap(),te=t.cliui({width:Ie,wrap:!!Ie});if(!f){if(u.length)u.forEach((z)=>{if(te.div({text:`${z[0].replace(/\$0/g,C)}`}),z[1])te.div({text:`${z[1]}`,padding:[1,0,0,0]})}),te.div();else if(d.length){let z=null;if(O._)z=`${C} <${n("command")}>
13
+ `).map((r)=>nl(r,t,n)).join(`
14
+ `)}function Js(e){return Eo(e,{stringWidth:We,stripAnsi:ht,wrap:Ks})}import{dirname as Go,resolve as Yo}from"path";import{readdirSync as sl,statSync as rl}from"fs";function zs(e,t){let n=Yo(".",e),r;if(!rl(n).isDirectory())n=Go(n);while(!0){if(r=t(n,sl(n)),r)return Yo(n,r);if(n=Go(r=n),r===n)break}}import{inspect as Cl}from"util";import{fileURLToPath as di}from"url";import{format as al}from"util";import{normalize as cl,resolve as ul}from"path";function gt(e){if(!(e!==e.toLowerCase()&&e!==e.toUpperCase()))e=e.toLowerCase();if(e.indexOf("-")===-1&&e.indexOf("_")===-1)return e;else{let n="",r=!1,s=e.match(/^-+/);for(let o=s?s[0].length:0;o<e.length;o++){let i=e.charAt(o);if(r)r=!1,i=i.toUpperCase();if(o!==0&&(i==="-"||i==="_"))r=!0;else if(i!=="-"&&i!=="_")n+=i}return n}}function Rn(e,t){let n=e.toLowerCase();t=t||"-";let r="";for(let s=0;s<e.length;s++){let o=n.charAt(s),i=e.charAt(s);if(o!==i&&s>0)r+=`${t}${n.charAt(s)}`;else r+=i}return r}function Mn(e){if(e===null||e===void 0)return!1;if(typeof e==="number")return!0;if(/^0x[0-9a-f]+$/i.test(e))return!0;if(/^0[^.]/.test(e))return!1;return/^[-]?(?:\d+(?:\.\d*)?|\.\d+)(e[-+]?\d+)?$/.test(e)}function Xo(e){if(Array.isArray(e))return e.map((i)=>typeof i!=="string"?i+"":i);e=e.trim();let t=0,n=null,r=null,s=null,o=[];for(let i=0;i<e.length;i++){if(n=r,r=e.charAt(i),r===" "&&!s){if(n!==" ")t++;continue}if(r===s)s=null;else if((r==="'"||r==='"')&&!s)s=r;if(!o[t])o[t]="";o[t]+=r}return o}var Te;(function(e){e.BOOLEAN="boolean",e.STRING="string",e.NUMBER="number",e.ARRAY="array"})(Te||(Te={}));var Ze;class qs{constructor(e){Ze=e}parse(e,t){let n=Object.assign({alias:void 0,array:void 0,boolean:void 0,config:void 0,configObjects:void 0,configuration:void 0,coerce:void 0,count:void 0,default:void 0,envPrefix:void 0,narg:void 0,normalize:void 0,string:void 0,number:void 0,__:void 0,key:void 0},t),r=Xo(e),s=typeof e==="string",o=ol(Object.assign(Object.create(null),n.alias)),i=Object.assign({"boolean-negation":!0,"camel-case-expansion":!0,"combine-arrays":!1,"dot-notation":!0,"duplicate-arguments-array":!0,"flatten-duplicate-arrays":!0,"greedy-arrays":!0,"halt-at-non-option":!1,"nargs-eats-options":!1,"negation-prefix":"no-","parse-numbers":!0,"parse-positional-numbers":!0,"populate--":!1,"set-placeholder-key":!1,"short-option-groups":!0,"strip-aliased":!1,"strip-dashed":!1,"unknown-options-as-args":!1},n.configuration),a=Object.assign(Object.create(null),n.default),c=n.configObjects||[],u=n.envPrefix,f=i["populate--"],l=f?"--":"_",d=Object.create(null),h=Object.create(null),m=n.__||Ze.format,p={aliases:Object.create(null),arrays:Object.create(null),bools:Object.create(null),strings:Object.create(null),numbers:Object.create(null),counts:Object.create(null),normalize:Object.create(null),configs:Object.create(null),nargs:Object.create(null),coercions:Object.create(null),keys:[]},y=/^-([0-9]+(\.[0-9]+)?|\.[0-9]+)$/,E=new RegExp("^--"+i["negation-prefix"]+"(.+)");if([].concat(n.array||[]).filter(Boolean).forEach(function(D){let w=typeof D==="object"?D.key:D,T=Object.keys(D).map(function(x){return{boolean:"bools",string:"strings",number:"numbers"}[x]}).filter(Boolean).pop();if(T)p[T][w]=!0;p.arrays[w]=!0,p.keys.push(w)}),[].concat(n.boolean||[]).filter(Boolean).forEach(function(D){p.bools[D]=!0,p.keys.push(D)}),[].concat(n.string||[]).filter(Boolean).forEach(function(D){p.strings[D]=!0,p.keys.push(D)}),[].concat(n.number||[]).filter(Boolean).forEach(function(D){p.numbers[D]=!0,p.keys.push(D)}),[].concat(n.count||[]).filter(Boolean).forEach(function(D){p.counts[D]=!0,p.keys.push(D)}),[].concat(n.normalize||[]).filter(Boolean).forEach(function(D){p.normalize[D]=!0,p.keys.push(D)}),typeof n.narg==="object")Object.entries(n.narg).forEach(([D,w])=>{if(typeof w==="number")p.nargs[D]=w,p.keys.push(D)});if(typeof n.coerce==="object")Object.entries(n.coerce).forEach(([D,w])=>{if(typeof w==="function")p.coercions[D]=w,p.keys.push(D)});if(typeof n.config<"u"){if(Array.isArray(n.config)||typeof n.config==="string")[].concat(n.config).filter(Boolean).forEach(function(D){p.configs[D]=!0});else if(typeof n.config==="object")Object.entries(n.config).forEach(([D,w])=>{if(typeof w==="boolean"||typeof w==="function")p.configs[D]=w})}ee(n.key,o,n.default,p.arrays),Object.keys(a).forEach(function(D){(p.aliases[D]||[]).forEach(function(w){a[w]=a[D]})});let F=null;vs();let A=[],k=Object.assign(Object.create(null),{_:[]}),B={};for(let D=0;D<r.length;D++){let w=r[D],T=w.replace(/^-{3,}/,"---"),x,b,U,M,J,ge;if(w!=="--"&&/^-/.test(w)&&se(w))I(w);else if(T.match(/^---+(=|$)/)){I(w);continue}else if(w.match(/^--.+=/)||!i["short-option-groups"]&&w.match(/^-.+=/)){if(M=w.match(/^--?([^=]+)=([\s\S]*)$/),M!==null&&Array.isArray(M)&&M.length>=3)if(v(M[1],p.arrays))D=V(D,M[1],r,M[2]);else if(v(M[1],p.nargs)!==!1)D=R(D,M[1],r,M[2]);else L(M[1],M[2],!0)}else if(w.match(E)&&i["boolean-negation"]){if(M=w.match(E),M!==null&&Array.isArray(M)&&M.length>=2)b=M[1],L(b,v(b,p.arrays)?[!1]:!1)}else if(w.match(/^--.+/)||!i["short-option-groups"]&&w.match(/^-[^-]+/)){if(M=w.match(/^--?(.+)/),M!==null&&Array.isArray(M)&&M.length>=2)if(b=M[1],v(b,p.arrays))D=V(D,b,r);else if(v(b,p.nargs)!==!1)D=R(D,b,r);else if(J=r[D+1],J!==void 0&&(!J.match(/^-/)||J.match(y))&&!v(b,p.bools)&&!v(b,p.counts))L(b,J),D++;else if(/^(true|false)$/.test(J))L(b,J),D++;else L(b,Z(b))}else if(w.match(/^-.\..+=/)){if(M=w.match(/^-([^=]+)=([\s\S]*)$/),M!==null&&Array.isArray(M)&&M.length>=3)L(M[1],M[2])}else if(w.match(/^-.\..+/)&&!w.match(y)){if(J=r[D+1],M=w.match(/^-(.\..+)/),M!==null&&Array.isArray(M)&&M.length>=2)if(b=M[1],J!==void 0&&!J.match(/^-/)&&!v(b,p.bools)&&!v(b,p.counts))L(b,J),D++;else L(b,Z(b))}else if(w.match(/^-[^-]+/)&&!w.match(y)){U=w.slice(1,-1).split(""),x=!1;for(let Fe=0;Fe<U.length;Fe++){if(J=w.slice(Fe+2),U[Fe+1]&&U[Fe+1]==="="){if(ge=w.slice(Fe+3),b=U[Fe],v(b,p.arrays))D=V(D,b,r,ge);else if(v(b,p.nargs)!==!1)D=R(D,b,r,ge);else L(b,ge);x=!0;break}if(J==="-"){L(U[Fe],J);continue}if(/[A-Za-z]/.test(U[Fe])&&/^-?\d+(\.\d*)?(e-?\d+)?$/.test(J)&&v(J,p.bools)===!1){L(U[Fe],J),x=!0;break}if(U[Fe+1]&&U[Fe+1].match(/\W/)){L(U[Fe],J),x=!0;break}else L(U[Fe],Z(U[Fe]))}if(b=w.slice(-1)[0],!x&&b!=="-")if(v(b,p.arrays))D=V(D,b,r);else if(v(b,p.nargs)!==!1)D=R(D,b,r);else if(J=r[D+1],J!==void 0&&(!/^(-|--)[^-]/.test(J)||J.match(y))&&!v(b,p.bools)&&!v(b,p.counts))L(b,J),D++;else if(/^(true|false)$/.test(J))L(b,J),D++;else L(b,Z(b))}else if(w.match(/^-[0-9]$/)&&w.match(y)&&v(w.slice(1),p.bools))b=w.slice(1),L(b,Z(b));else if(w==="--"){A=r.slice(D+1);break}else if(i["halt-at-non-option"]){A=r.slice(D);break}else I(w)}if(X(k,!0),X(k,!1),S(k),W(),Ie(k,p.aliases,a,!0),q(k),i["set-placeholder-key"])ae(k);if(Object.keys(p.counts).forEach(function(D){if(!te(k,D.split(".")))L(D,0)}),f&&A.length)k[l]=[];if(A.forEach(function(D){k[l].push(D)}),i["camel-case-expansion"]&&i["strip-dashed"])Object.keys(k).filter((D)=>D!=="--"&&D.includes("-")).forEach((D)=>{delete k[D]});if(i["strip-aliased"])[].concat(...Object.keys(o).map((D)=>o[D])).forEach((D)=>{if(i["camel-case-expansion"]&&D.includes("-"))delete k[D.split(".").map((w)=>gt(w)).join(".")];delete k[D]});function I(D){let w=C("_",D);if(typeof w==="string"||typeof w==="number")k._.push(w)}function R(D,w,T,x){let b,U=v(w,p.nargs);if(U=typeof U!=="number"||isNaN(U)?1:U,U===0){if(!pe(x))F=Error(m("Argument unexpected for: %s",w));return L(w,Z(w)),D}let M=pe(x)?0:1;if(i["nargs-eats-options"]){if(T.length-(D+1)+M<U)F=Error(m("Not enough arguments following: %s",w));M=U}else{for(b=D+1;b<T.length;b++)if(!T[b].match(/^-[^0-9]/)||T[b].match(y)||se(T[b]))M++;else break;if(M<U)F=Error(m("Not enough arguments following: %s",w))}let J=Math.min(M,U);if(!pe(x)&&J>0)L(w,x),J--;for(b=D+1;b<J+D+1;b++)L(w,T[b]);return D+J}function V(D,w,T,x){let b=[],U=x||T[D+1],M=v(w,p.nargs);if(v(w,p.bools)&&!/^(true|false)$/.test(U))b.push(!0);else if(pe(U)||pe(x)&&/^-/.test(U)&&!y.test(U)&&!se(U)){if(a[w]!==void 0){let J=a[w];b=Array.isArray(J)?J:[J]}}else{if(!pe(x))b.push(_(w,x,!0));for(let J=D+1;J<T.length;J++){if(!i["greedy-arrays"]&&b.length>0||M&&typeof M==="number"&&b.length>=M)break;if(U=T[J],/^-/.test(U)&&!y.test(U)&&!se(U))break;D=J,b.push(_(w,U,s))}}if(typeof M==="number"&&(M&&b.length<M||isNaN(M)&&b.length===0))F=Error(m("Not enough arguments following: %s",w));return L(w,b),D}function L(D,w,T=s){if(/-/.test(D)&&i["camel-case-expansion"]){let U=D.split(".").map(function(M){return gt(M)}).join(".");ne(D,U)}let x=_(D,w,T),b=D.split(".");if(ke(k,b,x),p.aliases[D])p.aliases[D].forEach(function(U){let M=U.split(".");ke(k,M,x)});if(b.length>1&&i["dot-notation"])(p.aliases[b[0]]||[]).forEach(function(U){let M=U.split("."),J=[].concat(b);if(J.shift(),M=M.concat(J),!(p.aliases[D]||[]).includes(M.join(".")))ke(k,M,x)});if(v(D,p.normalize)&&!v(D,p.arrays))[D].concat(p.aliases[D]||[]).forEach(function(M){Object.defineProperty(B,M,{enumerable:!0,get(){return w},set(J){w=typeof J==="string"?Ze.normalize(J):J}})})}function ne(D,w){if(!(p.aliases[D]&&p.aliases[D].length))p.aliases[D]=[w],d[w]=!0;if(!(p.aliases[w]&&p.aliases[w].length))ne(w,D)}function _(D,w,T){if(T)w=il(w);if(v(D,p.bools)||v(D,p.counts)){if(typeof w==="string")w=w==="true"}let x=Array.isArray(w)?w.map(function(b){return C(D,b)}):C(D,w);if(v(D,p.counts)&&(pe(x)||typeof x==="boolean"))x=Hs();if(v(D,p.normalize)&&v(D,p.arrays))if(Array.isArray(w))x=w.map((b)=>Ze.normalize(b));else x=Ze.normalize(w);return x}function C(D,w){if(!i["parse-positional-numbers"]&&D==="_")return w;if(!v(D,p.strings)&&!v(D,p.bools)&&!Array.isArray(w)){if(Mn(w)&&i["parse-numbers"]&&Number.isSafeInteger(Math.floor(parseFloat(`${w}`)))||!pe(w)&&v(D,p.numbers))w=Number(w)}return w}function S(D){let w=Object.create(null);Ie(w,p.aliases,a),Object.keys(p.configs).forEach(function(T){let x=D[T]||w[T];if(x)try{let b=null,U=Ze.resolve(Ze.cwd(),x),M=p.configs[T];if(typeof M==="function"){try{b=M(U)}catch(J){b=J}if(b instanceof Error){F=b;return}}else b=Ze.require(U);O(b)}catch(b){if(b.name==="PermissionDenied")F=b;else if(D[T])F=Error(m("Invalid JSON config file: %s",x))}})}function O(D,w){Object.keys(D).forEach(function(T){let x=D[T],b=w?w+"."+T:T;if(typeof x==="object"&&x!==null&&!Array.isArray(x)&&i["dot-notation"])O(x,b);else if(!te(k,b.split("."))||v(b,p.arrays)&&i["combine-arrays"])L(b,x)})}function W(){if(typeof c<"u")c.forEach(function(D){O(D)})}function X(D,w){if(typeof u>"u")return;let T=typeof u==="string"?u:"",x=Ze.env();Object.keys(x).forEach(function(b){if(T===""||b.lastIndexOf(T,0)===0){let U=b.split("__").map(function(M,J){if(J===0)M=M.substring(T.length);return gt(M)});if((w&&p.configs[U.join(".")]||!w)&&!te(D,U))L(U.join("."),x[b])}})}function q(D){let w,T=new Set;Object.keys(D).forEach(function(x){if(!T.has(x)){if(w=v(x,p.coercions),typeof w==="function")try{let b=C(x,w(D[x]));[].concat(p.aliases[x]||[],x).forEach((U)=>{T.add(U),D[U]=b})}catch(b){F=b}}})}function ae(D){return p.keys.forEach((w)=>{if(~w.indexOf("."))return;if(typeof D[w]>"u")D[w]=void 0}),D}function Ie(D,w,T,x=!1){Object.keys(T).forEach(function(b){if(!te(D,b.split("."))){if(ke(D,b.split("."),T[b]),x)h[b]=!0;(w[b]||[]).forEach(function(U){if(te(D,U.split(".")))return;ke(D,U.split("."),T[b])})}})}function te(D,w){let T=D;if(!i["dot-notation"])w=[w.join(".")];w.slice(0,-1).forEach(function(b){T=T[b]||{}});let x=w[w.length-1];if(typeof T!=="object")return!1;else return x in T}function ke(D,w,T){let x=D;if(!i["dot-notation"])w=[w.join(".")];w.slice(0,-1).forEach(function(ge){if(ge=Vo(ge),typeof x==="object"&&x[ge]===void 0)x[ge]={};if(typeof x[ge]!=="object"||Array.isArray(x[ge])){if(Array.isArray(x[ge]))x[ge].push({});else x[ge]=[x[ge],{}];x=x[ge][x[ge].length-1]}else x=x[ge]});let b=Vo(w[w.length-1]),U=v(w.join("."),p.arrays),M=Array.isArray(T),J=i["duplicate-arguments-array"];if(!J&&v(b,p.nargs)){if(J=!0,!pe(x[b])&&p.nargs[b]===1||Array.isArray(x[b])&&x[b].length===p.nargs[b])x[b]=void 0}if(T===Hs())x[b]=Hs(x[b]);else if(Array.isArray(x[b]))if(J&&U&&M)x[b]=i["flatten-duplicate-arrays"]?x[b].concat(T):(Array.isArray(x[b][0])?x[b]:[x[b]]).concat([T]);else if(!J&&Boolean(U)===Boolean(M))x[b]=T;else x[b]=x[b].concat([T]);else if(x[b]===void 0&&U)x[b]=M?T:[T];else if(J&&!(x[b]===void 0||v(b,p.counts)||v(b,p.bools)))x[b]=[x[b],T];else x[b]=T}function ee(...D){D.forEach(function(w){Object.keys(w||{}).forEach(function(T){if(p.aliases[T])return;p.aliases[T]=[].concat(o[T]||[]),p.aliases[T].concat(T).forEach(function(x){if(/-/.test(x)&&i["camel-case-expansion"]){let b=gt(x);if(b!==T&&p.aliases[T].indexOf(b)===-1)p.aliases[T].push(b),d[b]=!0}}),p.aliases[T].concat(T).forEach(function(x){if(x.length>1&&/[A-Z]/.test(x)&&i["camel-case-expansion"]){let b=Rn(x,"-");if(b!==T&&p.aliases[T].indexOf(b)===-1)p.aliases[T].push(b),d[b]=!0}}),p.aliases[T].forEach(function(x){p.aliases[x]=[T].concat(p.aliases[T].filter(function(b){return x!==b}))})})})}function v(D,w){let T=[].concat(p.aliases[D]||[],D),x=Object.keys(w),b=T.find((U)=>x.includes(U));return b?w[b]:!1}function we(D){let w=Object.keys(p);return[].concat(w.map((x)=>p[x])).some(function(x){return Array.isArray(x)?x.includes(D):x[D]})}function Wt(D,...w){return[].concat(...w).some(function(x){let b=D.match(x);return b&&we(b[1])})}function z(D){if(D.match(y)||!D.match(/^-[^-]+/))return!1;let w=!0,T,x=D.slice(1).split("");for(let b=0;b<x.length;b++){if(T=D.slice(b+2),!we(x[b])){w=!1;break}if(x[b+1]&&x[b+1]==="="||T==="-"||/[A-Za-z]/.test(x[b])&&/^-?\d+(\.\d*)?(e-?\d+)?$/.test(T)||x[b+1]&&x[b+1].match(/\W/))break}return w}function se(D){return i["unknown-options-as-args"]&&de(D)}function de(D){if(D=D.replace(/^-{3,}/,"--"),D.match(y))return!1;if(z(D))return!1;return!Wt(D,/^-+([^=]+?)=[\s\S]*$/,E,/^-+([^=]+?)$/,/^-+([^=]+?)-$/,/^-+([^=]+?\d+)$/,/^-+([^=]+?)\W+.*$/)}function Z(D){if(!v(D,p.bools)&&!v(D,p.counts)&&`${D}`in a)return a[D];else return ye(ue(D))}function ye(D){return{[Te.BOOLEAN]:!0,[Te.STRING]:"",[Te.NUMBER]:void 0,[Te.ARRAY]:[]}[D]}function ue(D){let w=Te.BOOLEAN;if(v(D,p.strings))w=Te.STRING;else if(v(D,p.numbers))w=Te.NUMBER;else if(v(D,p.bools))w=Te.BOOLEAN;else if(v(D,p.arrays))w=Te.ARRAY;return w}function pe(D){return D===void 0}function vs(){Object.keys(p.counts).find((D)=>{if(v(D,p.arrays))return F=Error(m("Invalid configuration: %s, opts.count excludes opts.array.",D)),!0;else if(v(D,p.nargs))return F=Error(m("Invalid configuration: %s, opts.count excludes opts.narg.",D)),!0;return!1})}return{aliases:Object.assign({},p.aliases),argv:Object.assign(B,k),configuration:i,defaulted:Object.assign({},h),error:F,newAliases:Object.assign({},d)}}}function ol(e){let t=[],n=Object.create(null),r=!0;Object.keys(e).forEach(function(s){t.push([].concat(e[s],s))});while(r){r=!1;for(let s=0;s<t.length;s++)for(let o=s+1;o<t.length;o++)if(t[s].filter(function(a){return t[o].indexOf(a)!==-1}).length){t[s]=t[s].concat(t[o]),t.splice(o,1),r=!0;break}}return t.forEach(function(s){s=s.filter(function(i,a,c){return c.indexOf(i)===a});let o=s.pop();if(o!==void 0&&typeof o==="string")n[o]=s}),n}function Hs(e){return e!==void 0?e+1:1}function Vo(e){if(e==="__proto__")return"___proto___";return e}function il(e){return typeof e==="string"&&(e[0]==="'"||e[0]==='"')&&e[e.length-1]===e[0]?e.substring(1,e.length-1):e}import{readFileSync as ll}from"fs";import{createRequire as Zo}from"node:module";var Gs,Ys,Xs,Qo=process&&process.env&&process.env.YARGS_MIN_NODE_VERSION?Number(process.env.YARGS_MIN_NODE_VERSION):20,ei=(Ys=(Gs=process===null||process===void 0?void 0:process.versions)===null||Gs===void 0?void 0:Gs.node)!==null&&Ys!==void 0?Ys:(Xs=process===null||process===void 0?void 0:process.version)===null||Xs===void 0?void 0:Xs.slice(1);if(ei){if(Number(ei.match(/^([^.]+)/)[1])<Qo)throw Error(`yargs parser supports a minimum Node.js version of ${Qo}. Read our version support policy: https://github.com/yargs/yargs-parser#supported-nodejs-versions`)}var fl=process?process.env:{},ti=Zo?Zo(import.meta.url):void 0,ni=new qs({cwd:process.cwd,env:()=>fl,format:al,normalize:cl,resolve:ul,require:(e)=>{if(typeof ti<"u")return ti(e);else if(e.match(/\.json$/))return JSON.parse(ll(e,"utf8"));else throw Error("only .json config files are supported in ESM")}}),rn=function(t,n){return ni.parse(t.slice(),n).argv};rn.detailed=function(e,t){return ni.parse(e.slice(),t)};rn.camelCase=gt;rn.decamelize=Rn;rn.looksLikeNumber=Mn;var Vs=rn;import{basename as El,dirname as xl,extname as _l,relative as kl,resolve as fi,join as Sl}from"path";function si(){if(dl())return 0;return 1}function dl(){return pl()&&!process.defaultApp}function pl(){return!!process.versions.electron}function Zs(e){return e.slice(si()+1)}function ri(){return process.argv[si()]}import{readFileSync as hl,statSync as gl,writeFile as ml}from"fs";import{format as Dl}from"util";import{resolve as yl}from"path";var oi={fs:{readFileSync:hl,writeFile:ml},format:Dl,resolve:yl,exists:(e)=>{try{return gl(e).isFile()}catch(t){return!1}}};var Ue;class ii{constructor(e){e=e||{},this.directory=e.directory||"./locales",this.updateFiles=typeof e.updateFiles==="boolean"?e.updateFiles:!0,this.locale=e.locale||"en",this.fallbackToLanguage=typeof e.fallbackToLanguage==="boolean"?e.fallbackToLanguage:!0,this.cache=Object.create(null),this.writeQueue=[]}__(...e){if(typeof arguments[0]!=="string")return this._taggedLiteral(arguments[0],...arguments);let t=e.shift(),n=function(){};if(typeof e[e.length-1]==="function")n=e.pop();if(n=n||function(){},!this.cache[this.locale])this._readLocaleFile();if(!this.cache[this.locale][t]&&this.updateFiles)this.cache[this.locale][t]=t,this._enqueueWrite({directory:this.directory,locale:this.locale,cb:n});else n();return Ue.format.apply(Ue.format,[this.cache[this.locale][t]||t].concat(e))}__n(){let e=Array.prototype.slice.call(arguments),t=e.shift(),n=e.shift(),r=e.shift(),s=function(){};if(typeof e[e.length-1]==="function")s=e.pop();if(!this.cache[this.locale])this._readLocaleFile();let o=r===1?t:n;if(this.cache[this.locale][t])o=this.cache[this.locale][t][r===1?"one":"other"];if(!this.cache[this.locale][t]&&this.updateFiles)this.cache[this.locale][t]={one:t,other:n},this._enqueueWrite({directory:this.directory,locale:this.locale,cb:s});else s();let i=[o];if(~o.indexOf("%d"))i.push(r);return Ue.format.apply(Ue.format,i.concat(e))}setLocale(e){this.locale=e}getLocale(){return this.locale}updateLocale(e){if(!this.cache[this.locale])this._readLocaleFile();for(let t in e)if(Object.prototype.hasOwnProperty.call(e,t))this.cache[this.locale][t]=e[t]}_taggedLiteral(e,...t){let n="";return e.forEach(function(r,s){let o=t[s+1];if(n+=r,typeof o<"u")n+="%s"}),this.__.apply(this,[n].concat([].slice.call(t,1)))}_enqueueWrite(e){if(this.writeQueue.push(e),this.writeQueue.length===1)this._processWriteQueue()}_processWriteQueue(){let e=this,t=this.writeQueue[0],{directory:n,locale:r,cb:s}=t,o=this._resolveLocaleFile(n,r),i=JSON.stringify(this.cache[r],null,2);Ue.fs.writeFile(o,i,"utf-8",function(a){if(e.writeQueue.shift(),e.writeQueue.length>0)e._processWriteQueue();s(a)})}_readLocaleFile(){let e={},t=this._resolveLocaleFile(this.directory,this.locale);try{if(Ue.fs.readFileSync)e=JSON.parse(Ue.fs.readFileSync(t,"utf-8"))}catch(n){if(n instanceof SyntaxError)n.message="syntax error in "+t;if(n.code==="ENOENT")e={};else throw n}this.cache[this.locale]=e}_resolveLocaleFile(e,t){let n=Ue.resolve(e,"./",t+".json");if(this.fallbackToLanguage&&!this._fileExistsSync(n)&&~t.lastIndexOf("_")){let r=Ue.resolve(e,"./",t.split("_")[0]+".json");if(this._fileExistsSync(r))n=r}return n}_fileExistsSync(e){return Ue.exists(e)}}function ai(e,t){Ue=t;let n=new ii(e);return{__:n.__.bind(n),__n:n.__n.bind(n),setLocale:n.setLocale.bind(n),getLocale:n.getLocale.bind(n),updateLocale:n.updateLocale.bind(n),locale:n.locale}}var bl=(e)=>ai(e,oi),ci=bl;var pi=bo(li(),1);import{createRequire as Al}from"node:module";import{readFileSync as $l,readdirSync as Ol}from"node:fs";var Qs=di(import.meta.url),Il=Qs.substring(0,Qs.lastIndexOf("node_modules")),Tl=Al(import.meta.url),er={assert:{notStrictEqual:wl,strictEqual:Fl},cliui:Js,findUp:zs,getEnv:(e)=>process.env[e],inspect:Cl,getProcessArgvBin:ri,mainFilename:Il||process.cwd(),Parser:Vs,path:{basename:El,dirname:xl,extname:_l,relative:kl,resolve:fi,join:Sl},process:{argv:()=>process.argv,cwd:process.cwd,emitWarning:(e,t)=>process.emitWarning(e,t),execPath:()=>process.execPath,exit:(e)=>{process.exit(e)},nextTick:process.nextTick,stdColumns:typeof process.stdout.columns<"u"?process.stdout.columns:null},readFileSync:$l,readdirSync:Ol,require:Tl,getCallerFile:()=>{let e=pi.default(3);return e.match(/^file:\/\//)?di(e):e},stringWidth:We,y18n:ci({directory:fi(Qs,"../../../locales"),updateFiles:!1})};function Ce(e,t,n,r){n.assert.notStrictEqual(e,t,r)}function tr(e,t){t.assert.strictEqual(typeof e,"string")}function Ut(e){return Object.keys(e)}function re(e){return!!e&&!!e.then&&typeof e.then==="function"}class le extends Error{constructor(e){super(e||"yargs error");if(this.name="YError",Error.captureStackTrace)Error.captureStackTrace(this,le)}}function st(e){let n=e.replace(/\s{2,}/g," ").split(/\s+(?![^[]*]|[^<]*>)/),r=/\.*[\][<>]/g,s=n.shift();if(!s)throw Error(`No command found in: ${e}`);let o={cmd:s.replace(r,""),demanded:[],optional:[]};return n.forEach((i,a)=>{let c=!1;if(i=i.replace(/\s/g,""),/\.+[\]>]/.test(i)&&a===n.length-1)c=!0;if(/^\[/.test(i))o.optional.push({cmd:i.replace(r,"").split("|"),variadic:c});else o.demanded.push({cmd:i.replace(r,"").split("|"),variadic:c})}),o}var Pl=["first","second","third","fourth","fifth","sixth"];function N(e,t,n){function r(){return typeof e==="object"?[{demanded:[],optional:[]},e,t]:[st(`cmd ${e}`),t,n]}try{let s=0,[o,i,a]=r(),c=[].slice.call(i);while(c.length&&c[c.length-1]===void 0)c.pop();let u=a||c.length;if(u<o.demanded.length)throw new le(`Not enough arguments provided. Expected ${o.demanded.length} but received ${c.length}.`);let f=o.demanded.length+o.optional.length;if(u>f)throw new le(`Too many arguments provided. Expected max ${f} but received ${u}.`);o.demanded.forEach((l)=>{let d=c.shift(),h=hi(d);if(l.cmd.filter((p)=>p===h||p==="*").length===0)gi(h,l.cmd,s);s+=1}),o.optional.forEach((l)=>{if(c.length===0)return;let d=c.shift(),h=hi(d);if(l.cmd.filter((p)=>p===h||p==="*").length===0)gi(h,l.cmd,s);s+=1})}catch(s){console.warn(s.stack)}}function hi(e){if(Array.isArray(e))return"array";else if(e===null)return"null";return typeof e}function gi(e,t,n){throw new le(`Invalid ${Pl[n]||"manyith"} argument. Expected ${t.join(" or ")} but received ${e}.`)}class nr{constructor(e){this.globalMiddleware=[],this.frozens=[],this.yargs=e}addMiddleware(e,t,n=!0,r=!1){if(N("<array|function> [boolean] [boolean] [boolean]",[e,t,n],arguments.length),Array.isArray(e)){for(let s=0;s<e.length;s++){if(typeof e[s]!=="function")throw Error("middleware must be a function");let o=e[s];o.applyBeforeValidation=t,o.global=n}Array.prototype.push.apply(this.globalMiddleware,e)}else if(typeof e==="function"){let s=e;s.applyBeforeValidation=t,s.global=n,s.mutates=r,this.globalMiddleware.push(e)}return this.yargs}addCoerceMiddleware(e,t){let n=this.yargs.getAliases();return this.globalMiddleware=this.globalMiddleware.filter((r)=>{let s=[...n[t]||[],t];if(!r.option)return!0;else return!s.includes(r.option)}),e.option=t,this.addMiddleware(e,!0,!0,!0)}getMiddleware(){return this.globalMiddleware}freeze(){this.frozens.push([...this.globalMiddleware])}unfreeze(){let e=this.frozens.pop();if(e!==void 0)this.globalMiddleware=e}reset(){this.globalMiddleware=this.globalMiddleware.filter((e)=>e.global)}}function mi(e){if(!e)return[];return e.map((t)=>(t.applyBeforeValidation=!1,t))}function mt(e,t,n,r){return n.reduce((s,o)=>{if(o.applyBeforeValidation!==r)return s;if(o.mutates){if(o.applied)return s;o.applied=!0}if(re(s))return s.then((i)=>Promise.all([i,o(i,t)])).then(([i,a])=>Object.assign(i,a));else{let i=o(s,t);return re(i)?i.then((a)=>Object.assign(s,a)):Object.assign(s,i)}},e)}function Dt(e,t,n=(r)=>{throw r}){try{let r=Rl(e)?e():e;return re(r)?r.then((s)=>t(s)):t(r)}catch(r){return n(r)}}function Rl(e){return typeof e==="function"}var Kt=/(^\*)|(^\$0)/;class yi{constructor(e,t,n,r){this.requireCache=new Set,this.handlers={},this.aliasMap={},this.frozens=[],this.shim=r,this.usage=e,this.globalMiddleware=n,this.validation=t}addDirectory(e,t,n,r){r=r||{},this.requireCache.add(n);let s=this.shim.path.resolve(this.shim.path.dirname(n),e),o=this.shim.readdirSync(s,{recursive:r.recurse?!0:!1});if(!Array.isArray(r.extensions))r.extensions=["js"];let i=typeof r.visit==="function"?r.visit:(a)=>a;for(let a of o){let c=a.toString();if(r.exclude){let f=!1;if(typeof r.exclude==="function")f=r.exclude(c);else f=r.exclude.test(c);if(f)continue}if(r.include){let f=!1;if(typeof r.include==="function")f=r.include(c);else f=r.include.test(c);if(!f)continue}let u=!1;for(let f of r.extensions)if(c.endsWith(f))u=!0;if(u){let f=this.shim.path.join(s,c),l=t(f),d=Object.create(null,Object.getOwnPropertyDescriptors({...l}));if(i(d,f,c)){if(this.requireCache.has(f))continue;else this.requireCache.add(f);if(!d.command)d.command=this.shim.path.basename(f,this.shim.path.extname(f));this.addHandler(d)}}}}addHandler(e,t,n,r,s,o){let i=[],a=mi(s);if(r=r||(()=>{}),Array.isArray(e))if(Ml(e))[e,...i]=e;else for(let c of e)this.addHandler(c);else if(vl(e)){let c=Array.isArray(e.command)||typeof e.command==="string"?e.command:null;if(c===null)throw Error(`No command name given for module: ${this.shim.inspect(e)}`);if(e.aliases)c=[].concat(c).concat(e.aliases);this.addHandler(c,this.extractDesc(e),e.builder,e.handler,e.middlewares,e.deprecated);return}else if(Di(n)){this.addHandler([e].concat(i),t,n.builder,n.handler,n.middlewares,n.deprecated);return}if(typeof e==="string"){let c=st(e);i=i.map((l)=>st(l).cmd);let u=!1,f=[c.cmd].concat(i).filter((l)=>{if(Kt.test(l))return u=!0,!1;return!0});if(f.length===0&&u)f.push("$0");if(u)c.cmd=f[0],i=f.slice(1),e=e.replace(Kt,c.cmd);if(i.forEach((l)=>{this.aliasMap[l]=c.cmd}),t!==!1)this.usage.command(e,t,u,i,o);if(this.handlers[c.cmd]={original:e,description:t,handler:r,builder:n||{},middlewares:a,deprecated:o,demanded:c.demanded,optional:c.optional},u)this.defaultCommand=this.handlers[c.cmd]}}getCommandHandlers(){return this.handlers}getCommands(){return Object.keys(this.handlers).concat(Object.keys(this.aliasMap))}hasDefaultCommand(){return!!this.defaultCommand}runCommand(e,t,n,r,s,o){let i=this.handlers[e]||this.handlers[this.aliasMap[e]]||this.defaultCommand,a=t.getInternalMethods().getContext(),c=a.commands.slice(),u=!e;if(e)a.commands.push(e),a.fullCommands.push(i.original);let f=this.applyBuilderUpdateUsageAndParse(u,i,t,n.aliases,c,r,s,o);return re(f)?f.then((l)=>this.applyMiddlewareAndGetResult(u,i,l.innerArgv,a,s,l.aliases,t)):this.applyMiddlewareAndGetResult(u,i,f.innerArgv,a,s,f.aliases,t)}applyBuilderUpdateUsageAndParse(e,t,n,r,s,o,i,a){let c=t.builder,u=n;if(Bn(c)){n.getInternalMethods().getUsageInstance().freeze();let f=c(n.getInternalMethods().reset(r),a);if(re(f))return f.then((l)=>(u=wi(l)?l:n,this.parseAndUpdateUsage(e,t,u,s,o,i)))}else if(Bl(c))n.getInternalMethods().getUsageInstance().freeze(),u=n.getInternalMethods().reset(r),Object.keys(t.builder).forEach((f)=>{u.option(f,c[f])});return this.parseAndUpdateUsage(e,t,u,s,o,i)}parseAndUpdateUsage(e,t,n,r,s,o){if(e)n.getInternalMethods().getUsageInstance().unfreeze(!0);if(this.shouldUpdateUsage(n))n.getInternalMethods().getUsageInstance().usage(this.usageFromParentCommandsCommandHandler(r,t),t.description);let i=n.getInternalMethods().runYargsParserAndExecuteCommands(null,void 0,!0,s,o);return re(i)?i.then((a)=>({aliases:n.parsed.aliases,innerArgv:a})):{aliases:n.parsed.aliases,innerArgv:i}}shouldUpdateUsage(e){return!e.getInternalMethods().getUsageInstance().getUsageDisabled()&&e.getInternalMethods().getUsageInstance().getUsage().length===0}usageFromParentCommandsCommandHandler(e,t){let n=Kt.test(t.original)?t.original.replace(Kt,"").trim():t.original,r=e.filter((s)=>!Kt.test(s));return r.push(n),`$0 ${r.join(" ")}`}handleValidationAndGetResult(e,t,n,r,s,o,i,a){if(!o.getInternalMethods().getHasOutput()){let c=o.getInternalMethods().runValidation(s,a,o.parsed.error,e);n=Dt(n,(u)=>(c(u),u))}if(t.handler&&!o.getInternalMethods().getHasOutput()){o.getInternalMethods().setHasOutput();let c=!!o.getOptions().configuration["populate--"];if(o.getInternalMethods().postProcess(n,c,!1,!1),n=mt(n,o,i,!1),n=Dt(n,(u)=>{let f=t.handler(u);return re(f)?f.then(()=>u):u}),!e)o.getInternalMethods().getUsageInstance().cacheHelpMessage();if(re(n)&&!o.getInternalMethods().hasParseCallback())n.catch((u)=>{try{o.getInternalMethods().getUsageInstance().fail(null,u)}catch(f){}})}if(!e)r.commands.pop(),r.fullCommands.pop();return n}applyMiddlewareAndGetResult(e,t,n,r,s,o,i){let a={};if(s)return n;if(!i.getInternalMethods().getHasOutput())a=this.populatePositionals(t,n,r,i);let c=this.globalMiddleware.getMiddleware().slice(0).concat(t.middlewares),u=mt(n,i,c,!0);return re(u)?u.then((f)=>this.handleValidationAndGetResult(e,t,f,r,o,i,c,a)):this.handleValidationAndGetResult(e,t,u,r,o,i,c,a)}populatePositionals(e,t,n,r){t._=t._.slice(n.commands.length);let s=e.demanded.slice(0),o=e.optional.slice(0),i={};this.validation.positionalCount(s.length,t._.length);while(s.length){let a=s.shift();this.populatePositional(a,t,i)}while(o.length){let a=o.shift();this.populatePositional(a,t,i)}return t._=n.commands.concat(t._.map((a)=>""+a)),this.postProcessPositionals(t,i,this.cmdToParseOptions(e.original),r),i}populatePositional(e,t,n){let r=e.cmd[0];if(e.variadic)n[r]=t._.splice(0).map(String);else if(t._.length)n[r]=[String(t._.shift())]}cmdToParseOptions(e){let t={array:[],default:{},alias:{},demand:{}},n=st(e);return n.demanded.forEach((r)=>{let[s,...o]=r.cmd;if(r.variadic)t.array.push(s),t.default[s]=[];t.alias[s]=o,t.demand[s]=!0}),n.optional.forEach((r)=>{let[s,...o]=r.cmd;if(r.variadic)t.array.push(s),t.default[s]=[];t.alias[s]=o}),t}postProcessPositionals(e,t,n,r){let s=Object.assign({},r.getOptions());s.default=Object.assign(n.default,s.default);for(let c of Object.keys(n.alias))s.alias[c]=(s.alias[c]||[]).concat(n.alias[c]);s.array=s.array.concat(n.array),s.config={};let o=[];if(Object.keys(t).forEach((c)=>{t[c].map((u)=>{if(s.configuration["unknown-options-as-args"])s.key[c]=!0;o.push(`--${c}`),o.push(u)})}),!o.length)return;let i=Object.assign({},s.configuration,{"populate--":!1}),a=this.shim.Parser.detailed(o,Object.assign({},s,{configuration:i}));if(a.error)r.getInternalMethods().getUsageInstance().fail(a.error.message,a.error);else{let c=Object.keys(t);Object.keys(t).forEach((u)=>{c.push(...a.aliases[u])}),Object.keys(a.argv).forEach((u)=>{if(c.includes(u)){if(!t[u])t[u]=a.argv[u];if(!this.isInConfigs(r,u)&&!this.isDefaulted(r,u)&&Object.prototype.hasOwnProperty.call(e,u)&&Object.prototype.hasOwnProperty.call(a.argv,u)&&(Array.isArray(e[u])||Array.isArray(a.argv[u])))e[u]=[].concat(e[u],a.argv[u]);else e[u]=a.argv[u]}})}}isDefaulted(e,t){let{default:n}=e.getOptions();return Object.prototype.hasOwnProperty.call(n,t)||Object.prototype.hasOwnProperty.call(n,this.shim.Parser.camelCase(t))}isInConfigs(e,t){let{configObjects:n}=e.getOptions();return n.some((r)=>Object.prototype.hasOwnProperty.call(r,t))||n.some((r)=>Object.prototype.hasOwnProperty.call(r,this.shim.Parser.camelCase(t)))}runDefaultBuilderOn(e){if(!this.defaultCommand)return;if(this.shouldUpdateUsage(e)){let n=Kt.test(this.defaultCommand.original)?this.defaultCommand.original:this.defaultCommand.original.replace(/^[^[\]<>]*/,"$0 ");e.getInternalMethods().getUsageInstance().usage(n,this.defaultCommand.description)}let t=this.defaultCommand.builder;if(Bn(t))return t(e,!0);else if(!Di(t))Object.keys(t).forEach((n)=>{e.option(n,t[n])});return}extractDesc({describe:e,description:t,desc:n}){for(let r of[e,t,n]){if(typeof r==="string"||r===!1)return r;Ce(r,!0,this.shim)}return!1}freeze(){this.frozens.push({handlers:this.handlers,aliasMap:this.aliasMap,defaultCommand:this.defaultCommand})}unfreeze(){let e=this.frozens.pop();Ce(e,void 0,this.shim),{handlers:this.handlers,aliasMap:this.aliasMap,defaultCommand:this.defaultCommand}=e}reset(){return this.handlers={},this.aliasMap={},this.defaultCommand=void 0,this.requireCache=new Set,this}}function bi(e,t,n,r){return new yi(e,t,n,r)}function Di(e){return typeof e==="object"&&!!e.builder&&typeof e.handler==="function"}function Ml(e){return e.every((t)=>typeof t==="string")}function Bn(e){return typeof e==="function"}function Bl(e){return typeof e==="object"}function vl(e){return typeof e==="object"&&!Array.isArray(e)}function rt(e={},t=()=>!0){let n={};return Ut(e).forEach((r)=>{if(t(r,e[r]))n[r]=e[r]}),n}function ot(e){if(typeof process>"u")return;[process.stdout,process.stderr].forEach((t)=>{let n=t;if(n._handle&&n.isTTY&&typeof n._handle.setBlocking==="function")n._handle.setBlocking(e)})}function Nl(e){return typeof e==="boolean"}function Ci(e,t){let n=t.y18n.__,r={},s=[];r.failFn=function(C){s.push(C)};let o=null,i=null,a=!0;r.showHelpOnFail=function(C=!0,S){let[O,W]=typeof C==="string"?[!0,C]:[C,S];if(e.getInternalMethods().isGlobalContext())i=W;return o=W,a=O,r};let c=!1;r.fail=function(C,S){let O=e.getInternalMethods().getLoggerInstance();if(s.length)for(let W=s.length-1;W>=0;--W){let X=s[W];if(Nl(X)){if(S)throw S;else if(C)throw Error(C)}else X(C,S,r)}else{if(e.getExitProcess())ot(!0);if(!c){if(c=!0,a)e.showHelp("error"),O.error();if(C||S)O.error(C||S);let W=o||i;if(W){if(C||S)O.error("");O.error(W)}}if(S=S||new le(C),e.getExitProcess())return e.exit(1);else if(e.getInternalMethods().hasParseCallback())return e.exit(1,S);else throw S}};let u=[],f=!1;r.usage=(_,C)=>{if(_===null)return f=!0,u=[],r;return f=!1,u.push([_,C||""]),r},r.getUsage=()=>u,r.getUsageDisabled=()=>f,r.getPositionalGroupName=()=>n("Positionals:");let l=[];r.example=(_,C)=>{l.push([_,C||""])};let d=[];r.command=function(C,S,O,W,X=!1){if(O)d=d.map((q)=>(q[2]=!1,q));d.push([C,S||"",O,W,X])},r.getCommands=()=>d;let h={};r.describe=function(C,S){if(Array.isArray(C))C.forEach((O)=>{r.describe(O,S)});else if(typeof C==="object")Object.keys(C).forEach((O)=>{r.describe(O,C[O])});else h[C]=S},r.getDescriptions=()=>h;let m=[];r.epilog=(_)=>{m.push(_)};let p=!1,y;r.wrap=(_)=>{p=!0,y=_},r.getWrap=()=>{if(t.getEnv("YARGS_DISABLE_WRAP"))return null;if(!p)y=V(),p=!0;return y};let E="__yargsString__:";r.deferY18nLookup=(_)=>E+_,r.help=function(){if(k)return k;A();let C=e.customScriptName?e.$0:t.path.basename(e.$0),S=e.getDemandedOptions(),O=e.getDemandedCommands(),W=e.getDeprecatedOptions(),X=e.getGroups(),q=e.getOptions(),ae=[];ae=ae.concat(Object.keys(h)),ae=ae.concat(Object.keys(S)),ae=ae.concat(Object.keys(O)),ae=ae.concat(Object.keys(q.default)),ae=ae.filter(I),ae=Object.keys(ae.reduce((z,se)=>{if(se!=="_")z[se]=!0;return z},{}));let Ie=r.getWrap(),te=t.cliui({width:Ie,wrap:!!Ie});if(!f){if(u.length)u.forEach((z)=>{if(te.div({text:`${z[0].replace(/\$0/g,C)}`}),z[1])te.div({text:`${z[1]}`,padding:[1,0,0,0]})}),te.div();else if(d.length){let z=null;if(O._)z=`${C} <${n("command")}>
15
15
  `;else z=`${C} [${n("command")}]
16
- `;te.div(`${z}`)}}if(d.length>1||d.length===1&&!d[0][2]){te.div(n("Commands:"));let z=e.getInternalMethods().getContext(),se=z.commands.length?`${z.commands.join(" ")} `:"";if(e.getInternalMethods().getParserConfiguration()["sort-commands"]===!0)d=d.sort((Z,ye)=>Z[0].localeCompare(ye[0]));let de=C?`${C} `:"";d.forEach((Z)=>{let ye=`${de}${se}${Z[0].replace(/^\$0 ?/,"")}`;te.span({text:ye,padding:[0,2,0,2],width:F(d,Ie,`${C}${se}`)+4},{text:Z[1]});let ue=[];if(Z[2])ue.push(`[${n("default")}]`);if(Z[3]&&Z[3].length)ue.push(`[${n("aliases:")} ${Z[3].join(", ")}]`);if(Z[4])if(typeof Z[4]==="string")ue.push(`[${n("deprecated: %s",Z[4])}]`);else ue.push(`[${n("deprecated")}]`);if(ue.length)te.div({text:ue.join(" "),padding:[0,0,0,2],align:"right"});else te.div()}),te.div()}let ke=(Object.keys(q.alias)||[]).concat(Object.keys(e.parsed.newAliases)||[]);ae=ae.filter((z)=>!e.parsed.newAliases[z]&&ke.every((se)=>(q.alias[se]||[]).indexOf(z)===-1));let ee=n("Options:");if(!G[ee])G[ee]=[];B(ae,q.alias,G,ee);let N=(z)=>/^--/.test(Bn(z)),we=Object.keys(G).filter((z)=>G[z].length>0).map((z)=>{let se=G[z].filter(I).map((de)=>{if(ke.includes(de))return de;for(let Z=0,ye;(ye=ke[Z])!==void 0;Z++)if((q.alias[ye]||[]).includes(de))return ye;return de});return{groupName:z,normalizedKeys:se}}).filter(({normalizedKeys:z})=>z.length>0).map(({groupName:z,normalizedKeys:se})=>{let de=se.reduce((Z,ye)=>(Z[ye]=[ye].concat(q.alias[ye]||[]).map((ue)=>{if(z===r.getPositionalGroupName())return ue;else return(/^[0-9]$/.test(ue)?q.boolean.includes(ye)?"-":"--":ue.length>1?"--":"-")+ue}).sort((ue,he)=>N(ue)===N(he)?0:N(ue)?1:-1).join(", "),Z),{});return{groupName:z,normalizedKeys:se,switches:de}});if(we.filter(({groupName:z})=>z!==r.getPositionalGroupName()).some(({normalizedKeys:z,switches:se})=>!z.every((de)=>N(se[de]))))we.filter(({groupName:z})=>z!==r.getPositionalGroupName()).forEach(({normalizedKeys:z,switches:se})=>{z.forEach((de)=>{if(N(se[de]))se[de]=$l(se[de],4)})});if(we.forEach(({groupName:z,normalizedKeys:se,switches:de})=>{te.div(z),se.forEach((Z)=>{let ye=de[Z],ue=p[Z]||"",he=null;if(ue.includes(E))ue=n(ue.substring(E.length));if(q.boolean.includes(Z))he=`[${n("boolean")}]`;if(q.count.includes(Z))he=`[${n("count")}]`;if(q.string.includes(Z))he=`[${n("string")}]`;if(q.normalize.includes(Z))he=`[${n("string")}]`;if(q.array.includes(Z))he=`[${n("array")}]`;if(q.number.includes(Z))he=`[${n("number")}]`;let Ms=(T)=>typeof T==="string"?`[${n("deprecated: %s",T)}]`:`[${n("deprecated")}]`,D=[Z in W?Ms(W[Z]):null,he,Z in S?`[${n("required")}]`:null,q.choices&&q.choices[Z]?`[${n("choices:")} ${r.stringifiedValues(q.choices[Z])}]`:null,R(q.default[Z],q.defaultDescription[Z])].filter(Boolean).join(" ");te.span({text:Bn(ye),padding:[0,2,0,2+mi(ye)],width:F(de,Ie)+4},ue);let w=e.getInternalMethods().getUsageConfiguration()["hide-types"]===!0;if(D&&!w)te.div({text:D,padding:[0,0,0,2],align:"right"});else te.div()}),te.div()}),l.length)te.div(n("Examples:")),l.forEach((z)=>{z[0]=z[0].replace(/\$0/g,C)}),l.forEach((z)=>{if(z[1]==="")te.div({text:z[0],padding:[0,2,0,2]});else te.div({text:z[0],padding:[0,2,0,2],width:F(l,Ie)+4},{text:z[1]})}),te.div();if(m.length>0){let z=m.map((se)=>se.replace(/\$0/g,C)).join(`
16
+ `;te.div(`${z}`)}}if(d.length>1||d.length===1&&!d[0][2]){te.div(n("Commands:"));let z=e.getInternalMethods().getContext(),se=z.commands.length?`${z.commands.join(" ")} `:"";if(e.getInternalMethods().getParserConfiguration()["sort-commands"]===!0)d=d.sort((Z,ye)=>Z[0].localeCompare(ye[0]));let de=C?`${C} `:"";d.forEach((Z)=>{let ye=`${de}${se}${Z[0].replace(/^\$0 ?/,"")}`;te.span({text:ye,padding:[0,2,0,2],width:F(d,Ie,`${C}${se}`)+4},{text:Z[1]});let ue=[];if(Z[2])ue.push(`[${n("default")}]`);if(Z[3]&&Z[3].length)ue.push(`[${n("aliases:")} ${Z[3].join(", ")}]`);if(Z[4])if(typeof Z[4]==="string")ue.push(`[${n("deprecated: %s",Z[4])}]`);else ue.push(`[${n("deprecated")}]`);if(ue.length)te.div({text:ue.join(" "),padding:[0,0,0,2],align:"right"});else te.div()}),te.div()}let ke=(Object.keys(q.alias)||[]).concat(Object.keys(e.parsed.newAliases)||[]);ae=ae.filter((z)=>!e.parsed.newAliases[z]&&ke.every((se)=>(q.alias[se]||[]).indexOf(z)===-1));let ee=n("Options:");if(!X[ee])X[ee]=[];B(ae,q.alias,X,ee);let v=(z)=>/^--/.test(vn(z)),we=Object.keys(X).filter((z)=>X[z].length>0).map((z)=>{let se=X[z].filter(I).map((de)=>{if(ke.includes(de))return de;for(let Z=0,ye;(ye=ke[Z])!==void 0;Z++)if((q.alias[ye]||[]).includes(de))return ye;return de});return{groupName:z,normalizedKeys:se}}).filter(({normalizedKeys:z})=>z.length>0).map(({groupName:z,normalizedKeys:se})=>{let de=se.reduce((Z,ye)=>(Z[ye]=[ye].concat(q.alias[ye]||[]).map((ue)=>{if(z===r.getPositionalGroupName())return ue;else return(/^[0-9]$/.test(ue)?q.boolean.includes(ye)?"-":"--":ue.length>1?"--":"-")+ue}).sort((ue,pe)=>v(ue)===v(pe)?0:v(ue)?1:-1).join(", "),Z),{});return{groupName:z,normalizedKeys:se,switches:de}});if(we.filter(({groupName:z})=>z!==r.getPositionalGroupName()).some(({normalizedKeys:z,switches:se})=>!z.every((de)=>v(se[de]))))we.filter(({groupName:z})=>z!==r.getPositionalGroupName()).forEach(({normalizedKeys:z,switches:se})=>{z.forEach((de)=>{if(v(se[de]))se[de]=jl(se[de],4)})});if(we.forEach(({groupName:z,normalizedKeys:se,switches:de})=>{te.div(z),se.forEach((Z)=>{let ye=de[Z],ue=h[Z]||"",pe=null;if(ue.includes(E))ue=n(ue.substring(E.length));if(q.boolean.includes(Z))pe=`[${n("boolean")}]`;if(q.count.includes(Z))pe=`[${n("count")}]`;if(q.string.includes(Z))pe=`[${n("string")}]`;if(q.normalize.includes(Z))pe=`[${n("string")}]`;if(q.array.includes(Z))pe=`[${n("array")}]`;if(q.number.includes(Z))pe=`[${n("number")}]`;let vs=(T)=>typeof T==="string"?`[${n("deprecated: %s",T)}]`:`[${n("deprecated")}]`,D=[Z in W?vs(W[Z]):null,pe,Z in S?`[${n("required")}]`:null,q.choices&&q.choices[Z]?`[${n("choices:")} ${r.stringifiedValues(q.choices[Z])}]`:null,R(q.default[Z],q.defaultDescription[Z])].filter(Boolean).join(" ");te.span({text:vn(ye),padding:[0,2,0,2+Fi(ye)],width:F(de,Ie)+4},ue);let w=e.getInternalMethods().getUsageConfiguration()["hide-types"]===!0;if(D&&!w)te.div({text:D,padding:[0,0,0,2],align:"right"});else te.div()}),te.div()}),l.length)te.div(n("Examples:")),l.forEach((z)=>{z[0]=z[0].replace(/\$0/g,C)}),l.forEach((z)=>{if(z[1]==="")te.div({text:z[0],padding:[0,2,0,2]});else te.div({text:z[0],padding:[0,2,0,2],width:F(l,Ie)+4},{text:z[1]})}),te.div();if(m.length>0){let z=m.map((se)=>se.replace(/\$0/g,C)).join(`
17
17
  `);te.div(`${z}
18
- `)}return te.toString().replace(/\s*$/,"")};function F(_,C,S){let O=0;if(!Array.isArray(_))_=Object.values(_).map((W)=>[W]);if(_.forEach((W)=>{O=Math.max(t.stringWidth(S?`${S} ${Bn(W[0])}`:Bn(W[0]))+mi(W[0]),O)}),C)O=Math.min(O,parseInt((C*0.5).toString(),10));return O}function A(){let _=e.getDemandedOptions(),C=e.getOptions();(Object.keys(C.alias)||[]).forEach((S)=>{C.alias[S].forEach((O)=>{if(p[O])r.describe(S,p[O]);if(O in _)e.demandOption(S,_[O]);if(C.boolean.includes(O))e.boolean(S);if(C.count.includes(O))e.count(S);if(C.string.includes(O))e.string(S);if(C.normalize.includes(O))e.normalize(S);if(C.array.includes(O))e.array(S);if(C.number.includes(O))e.number(S)})})}let k;r.cacheHelpMessage=function(){k=this.help()},r.clearCachedHelpMessage=function(){k=void 0},r.hasCachedHelpMessage=function(){return!!k};function B(_,C,S,O){let W=[],G=null;return Object.keys(S).forEach((q)=>{W=W.concat(S[q])}),_.forEach((q)=>{if(G=[q].concat(C[q]),!G.some((ae)=>W.indexOf(ae)!==-1))S[O].push(q)}),W}function I(_){return e.getOptions().hiddenOptions.indexOf(_)<0||e.parsed.argv[e.getOptions().showHiddenOpt]}r.showHelp=(_)=>{let C=e.getInternalMethods().getLoggerInstance();if(!_)_="error";(typeof _==="function"?_:C[_])(r.help())},r.functionDescription=(_)=>["(",_.name?t.Parser.decamelize(_.name,"-"):n("generated-value"),")"].join(""),r.stringifiedValues=function(C,S){let O="",W=S||", ",G=[].concat(C);if(!C||!G.length)return O;return G.forEach((q)=>{if(O.length)O+=W;O+=JSON.stringify(q)}),O};function R(_,C){let S=`[${n("default:")} `;if(_===void 0&&!C)return null;if(C)S+=C;else switch(typeof _){case"string":S+=`"${_}"`;break;case"object":S+=JSON.stringify(_);break;default:S+=_}return`${S}]`}function V(){if(t.process.stdColumns)return Math.min(80,t.process.stdColumns);else return 80}let L=null;r.version=(_)=>{L=_},r.showVersion=(_)=>{let C=e.getInternalMethods().getLoggerInstance();if(!_)_="error";(typeof _==="function"?_:C[_])(L)},r.reset=function(C){return o=null,c=!1,u=[],f=!1,m=[],l=[],d=[],p=rt(p,(S)=>!C[S]),r};let ne=[];return r.freeze=function(){ne.push({failMessage:o,failureOutput:c,usages:u,usageDisabled:f,epilogs:m,examples:l,commands:d,descriptions:p})},r.unfreeze=function(C=!1){let S=ne.pop();if(!S)return;if(C)p={...S.descriptions,...p},d=[...S.commands,...d],u=[...S.usages,...u],l=[...S.examples,...l],m=[...S.epilogs,...m];else({failMessage:o,failureOutput:c,usages:u,usageDisabled:f,epilogs:m,examples:l,commands:d,descriptions:p}=S)},r}function tr(e){return typeof e==="object"}function $l(e,t){return tr(e)?{text:e.text,indentation:e.indentation+t}:{text:e,indentation:t}}function mi(e){return tr(e)?e.indentation:0}function Bn(e){return tr(e)?e.text:e}var yi=`###-begin-{{app_name}}-completions-###
18
+ `)}return te.toString().replace(/\s*$/,"")};function F(_,C,S){let O=0;if(!Array.isArray(_))_=Object.values(_).map((W)=>[W]);if(_.forEach((W)=>{O=Math.max(t.stringWidth(S?`${S} ${vn(W[0])}`:vn(W[0]))+Fi(W[0]),O)}),C)O=Math.min(O,parseInt((C*0.5).toString(),10));return O}function A(){let _=e.getDemandedOptions(),C=e.getOptions();(Object.keys(C.alias)||[]).forEach((S)=>{C.alias[S].forEach((O)=>{if(h[O])r.describe(S,h[O]);if(O in _)e.demandOption(S,_[O]);if(C.boolean.includes(O))e.boolean(S);if(C.count.includes(O))e.count(S);if(C.string.includes(O))e.string(S);if(C.normalize.includes(O))e.normalize(S);if(C.array.includes(O))e.array(S);if(C.number.includes(O))e.number(S)})})}let k;r.cacheHelpMessage=function(){k=this.help()},r.clearCachedHelpMessage=function(){k=void 0},r.hasCachedHelpMessage=function(){return!!k};function B(_,C,S,O){let W=[],X=null;return Object.keys(S).forEach((q)=>{W=W.concat(S[q])}),_.forEach((q)=>{if(X=[q].concat(C[q]),!X.some((ae)=>W.indexOf(ae)!==-1))S[O].push(q)}),W}function I(_){return e.getOptions().hiddenOptions.indexOf(_)<0||e.parsed.argv[e.getOptions().showHiddenOpt]}r.showHelp=(_)=>{let C=e.getInternalMethods().getLoggerInstance();if(!_)_="error";(typeof _==="function"?_:C[_])(r.help())},r.functionDescription=(_)=>["(",_.name?t.Parser.decamelize(_.name,"-"):n("generated-value"),")"].join(""),r.stringifiedValues=function(C,S){let O="",W=S||", ",X=[].concat(C);if(!C||!X.length)return O;return X.forEach((q)=>{if(O.length)O+=W;O+=JSON.stringify(q)}),O};function R(_,C){let S=`[${n("default:")} `;if(_===void 0&&!C)return null;if(C)S+=C;else switch(typeof _){case"string":S+=`"${_}"`;break;case"object":S+=JSON.stringify(_);break;default:S+=_}return`${S}]`}function V(){if(t.process.stdColumns)return Math.min(80,t.process.stdColumns);else return 80}let L=null;r.version=(_)=>{L=_},r.showVersion=(_)=>{let C=e.getInternalMethods().getLoggerInstance();if(!_)_="error";(typeof _==="function"?_:C[_])(L)},r.reset=function(C){return o=null,c=!1,u=[],f=!1,m=[],l=[],d=[],h=rt(h,(S)=>!C[S]),r};let ne=[];return r.freeze=function(){ne.push({failMessage:o,failureOutput:c,usages:u,usageDisabled:f,epilogs:m,examples:l,commands:d,descriptions:h})},r.unfreeze=function(C=!1){let S=ne.pop();if(!S)return;if(C)h={...S.descriptions,...h},d=[...S.commands,...d],u=[...S.usages,...u],l=[...S.examples,...l],m=[...S.epilogs,...m];else({failMessage:o,failureOutput:c,usages:u,usageDisabled:f,epilogs:m,examples:l,commands:d,descriptions:h}=S)},r}function sr(e){return typeof e==="object"}function jl(e,t){return sr(e)?{text:e.text,indentation:e.indentation+t}:{text:e,indentation:t}}function Fi(e){return sr(e)?e.indentation:0}function vn(e){return sr(e)?e.text:e}var Ei=`###-begin-{{app_name}}-completions-###
19
19
  #
20
20
  # yargs command completion script
21
21
  #
@@ -44,7 +44,7 @@ _{{app_name}}_yargs_completions()
44
44
  }
45
45
  complete -o bashdefault -o default -F _{{app_name}}_yargs_completions {{app_name}}
46
46
  ###-end-{{app_name}}-completions-###
47
- `,bi=`#compdef {{app_name}}
47
+ `,xi=`#compdef {{app_name}}
48
48
  ###-begin-{{app_name}}-completions-###
49
49
  #
50
50
  # yargs command completion script
@@ -71,167 +71,167 @@ else
71
71
  compdef _{{app_name}}_yargs_completions {{app_name}}
72
72
  fi
73
73
  ###-end-{{app_name}}-completions-###
74
- `;class wi{constructor(e,t,n,r){var s,o,i;this.yargs=e,this.usage=t,this.command=n,this.shim=r,this.completionKey="get-yargs-completions",this.aliases=null,this.customCompletionFunction=null,this.indexAfterLastReset=0,this.zshShell=(i=((s=this.shim.getEnv("SHELL"))===null||s===void 0?void 0:s.includes("zsh"))||((o=this.shim.getEnv("ZSH_NAME"))===null||o===void 0?void 0:o.includes("zsh")))!==null&&i!==void 0?i:!1}defaultCompletion(e,t,n,r){let s=this.command.getCommandHandlers();for(let i=0,a=e.length;i<a;++i)if(s[e[i]]&&s[e[i]].builder){let c=s[e[i]].builder;if(Mn(c)){this.indexAfterLastReset=i+1;let u=this.yargs.getInternalMethods().reset();return c(u,!0),u.argv}}let o=[];this.commandCompletions(o,e,n),this.optionCompletions(o,e,t,n),this.choicesFromOptionsCompletions(o,e,t,n),this.choicesFromPositionalsCompletions(o,e,t,n),r(null,o)}commandCompletions(e,t,n){let r=this.yargs.getInternalMethods().getContext().commands;if(!n.match(/^-/)&&r[r.length-1]!==n&&!this.previousArgHasChoices(t))this.usage.getCommands().forEach((s)=>{let o=st(s[0]).cmd;if(t.indexOf(o)===-1)if(!this.zshShell)e.push(o);else{let i=s[1]||"";e.push(o.replace(/:/g,"\\:")+":"+i)}})}optionCompletions(e,t,n,r){if((r.match(/^-/)||r===""&&e.length===0)&&!this.previousArgHasChoices(t)){let s=this.yargs.getOptions(),o=this.yargs.getGroups()[this.usage.getPositionalGroupName()]||[];Object.keys(s.key).forEach((i)=>{let a=!!s.configuration["boolean-negation"]&&s.boolean.includes(i);if(!o.includes(i)&&!s.hiddenOptions.includes(i)&&!this.argsContainKey(t,i,a))this.completeOptionKey(i,e,r,a&&!!s.default[i])})}}choicesFromOptionsCompletions(e,t,n,r){if(this.previousArgHasChoices(t)){let s=this.getPreviousArgChoices(t);if(s&&s.length>0)e.push(...s.map((o)=>o.replace(/:/g,"\\:")))}}choicesFromPositionalsCompletions(e,t,n,r){if(r===""&&e.length>0&&this.previousArgHasChoices(t))return;let s=this.yargs.getGroups()[this.usage.getPositionalGroupName()]||[],o=Math.max(this.indexAfterLastReset,this.yargs.getInternalMethods().getContext().commands.length+1),i=s[n._.length-o-1];if(!i)return;let a=this.yargs.getOptions().choices[i]||[];for(let c of a)if(c.startsWith(r))e.push(c.replace(/:/g,"\\:"))}getPreviousArgChoices(e){if(e.length<1)return;let t=e[e.length-1],n="";if(!t.startsWith("-")&&e.length>1)n=t,t=e[e.length-2];if(!t.startsWith("-"))return;let r=t.replace(/^-+/,""),s=this.yargs.getOptions(),o=[r,...this.yargs.getAliases()[r]||[]],i;for(let a of o)if(Object.prototype.hasOwnProperty.call(s.key,a)&&Array.isArray(s.choices[a])){i=s.choices[a];break}if(i)return i.filter((a)=>!n||a.startsWith(n))}previousArgHasChoices(e){let t=this.getPreviousArgChoices(e);return t!==void 0&&t.length>0}argsContainKey(e,t,n){let r=(s)=>e.indexOf((/^[^0-9]$/.test(s)?"-":"--")+s)!==-1;if(r(t))return!0;if(n&&r(`no-${t}`))return!0;if(this.aliases){for(let s of this.aliases[t])if(r(s))return!0}return!1}completeOptionKey(e,t,n,r){var s,o,i,a;let c=e;if(this.zshShell){let d=this.usage.getDescriptions(),p=(o=(s=this===null||this===void 0?void 0:this.aliases)===null||s===void 0?void 0:s[e])===null||o===void 0?void 0:o.find((y)=>{let E=d[y];return typeof E==="string"&&E.length>0}),m=p?d[p]:void 0,h=(a=(i=d[e])!==null&&i!==void 0?i:m)!==null&&a!==void 0?a:"";c=`${e.replace(/:/g,"\\:")}:${h.replace("__yargsString__:","").replace(/(\r\n|\n|\r)/gm," ")}`}let u=(d)=>/^--/.test(d),f=(d)=>/^[^0-9]$/.test(d),l=!u(n)&&f(e)?"-":"--";if(t.push(l+c),r)t.push(l+"no-"+c)}customCompletion(e,t,n,r){if(Ce(this.customCompletionFunction,null,this.shim),Il(this.customCompletionFunction)){let s=this.customCompletionFunction(n,t);if(re(s))return s.then((o)=>{this.shim.process.nextTick(()=>{r(null,o)})}).catch((o)=>{this.shim.process.nextTick(()=>{r(o,void 0)})});return r(null,s)}else if(Tl(this.customCompletionFunction))return this.customCompletionFunction(n,t,(s=r)=>this.defaultCompletion(e,t,n,s),(s)=>{r(null,s)});else return this.customCompletionFunction(n,t,(s)=>{r(null,s)})}getCompletion(e,t){let n=e.length?e[e.length-1]:"",r=this.yargs.parse(e,!0),s=this.customCompletionFunction?(o)=>this.customCompletion(e,o,n,t):(o)=>this.defaultCompletion(e,o,n,t);return re(r)?r.then(s):s(r)}generateCompletionScript(e,t){let n=this.zshShell?bi:yi,r=this.shim.path.basename(e);if(e.match(/\.js$/))e=`./${e}`;return n=n.replace(/{{app_name}}/g,r),n=n.replace(/{{completion_command}}/g,t),n.replace(/{{app_path}}/g,e)}registerFunction(e){this.customCompletionFunction=e}setParsed(e){this.aliases=e.aliases}}function Fi(e,t,n,r){return new wi(e,t,n,r)}function Il(e){return e.length<3}function Tl(e){return e.length>3}function Ci(e,t){if(e.length===0)return t.length;if(t.length===0)return e.length;let n=[],r;for(r=0;r<=t.length;r++)n[r]=[r];let s;for(s=0;s<=e.length;s++)n[0][s]=s;for(r=1;r<=t.length;r++)for(s=1;s<=e.length;s++)if(t.charAt(r-1)===e.charAt(s-1))n[r][s]=n[r-1][s-1];else if(r>1&&s>1&&t.charAt(r-2)===e.charAt(s-1)&&t.charAt(r-1)===e.charAt(s-2))n[r][s]=n[r-2][s-2]+1;else n[r][s]=Math.min(n[r-1][s-1]+1,Math.min(n[r][s-1]+1,n[r-1][s]+1));return n[t.length][e.length]}var Ei=["$0","--","_"];function xi(e,t,n){let r=n.y18n.__,s=n.y18n.__n,o={};o.nonOptionCount=function(l){let d=e.getDemandedCommands(),m=l._.length+(l["--"]?l["--"].length:0)-e.getInternalMethods().getContext().commands.length;if(d._&&(m<d._.min||m>d._.max)){if(m<d._.min)if(d._.minMsg!==void 0)t.fail(d._.minMsg?d._.minMsg.replace(/\$0/g,m.toString()).replace(/\$1/,d._.min.toString()):null);else t.fail(s("Not enough non-option arguments: got %s, need at least %s","Not enough non-option arguments: got %s, need at least %s",m,m.toString(),d._.min.toString()));else if(m>d._.max)if(d._.maxMsg!==void 0)t.fail(d._.maxMsg?d._.maxMsg.replace(/\$0/g,m.toString()).replace(/\$1/,d._.max.toString()):null);else t.fail(s("Too many non-option arguments: got %s, maximum of %s","Too many non-option arguments: got %s, maximum of %s",m,m.toString(),d._.max.toString()))}},o.positionalCount=function(l,d){if(d<l)t.fail(s("Not enough non-option arguments: got %s, need at least %s","Not enough non-option arguments: got %s, need at least %s",d,d+"",l+""))},o.requiredArguments=function(l,d){let p=null;for(let m of Object.keys(d))if(!Object.prototype.hasOwnProperty.call(l,m)||typeof l[m]>"u")p=p||{},p[m]=d[m];if(p){let m=[];for(let y of Object.keys(p)){let E=p[y];if(E&&m.indexOf(E)<0)m.push(E)}let h=m.length?`
74
+ `;class _i{constructor(e,t,n,r){var s,o,i;this.yargs=e,this.usage=t,this.command=n,this.shim=r,this.completionKey="get-yargs-completions",this.aliases=null,this.customCompletionFunction=null,this.indexAfterLastReset=0,this.zshShell=(i=((s=this.shim.getEnv("SHELL"))===null||s===void 0?void 0:s.includes("zsh"))||((o=this.shim.getEnv("ZSH_NAME"))===null||o===void 0?void 0:o.includes("zsh")))!==null&&i!==void 0?i:!1}defaultCompletion(e,t,n,r){let s=this.command.getCommandHandlers();for(let i=0,a=e.length;i<a;++i)if(s[e[i]]&&s[e[i]].builder){let c=s[e[i]].builder;if(Bn(c)){this.indexAfterLastReset=i+1;let u=this.yargs.getInternalMethods().reset();return c(u,!0),u.argv}}let o=[];this.commandCompletions(o,e,n),this.optionCompletions(o,e,t,n),this.choicesFromOptionsCompletions(o,e,t,n),this.choicesFromPositionalsCompletions(o,e,t,n),r(null,o)}commandCompletions(e,t,n){let r=this.yargs.getInternalMethods().getContext().commands;if(!n.match(/^-/)&&r[r.length-1]!==n&&!this.previousArgHasChoices(t))this.usage.getCommands().forEach((s)=>{let o=st(s[0]).cmd;if(t.indexOf(o)===-1)if(!this.zshShell)e.push(o);else{let i=s[1]||"";e.push(o.replace(/:/g,"\\:")+":"+i)}})}optionCompletions(e,t,n,r){if((r.match(/^-/)||r===""&&e.length===0)&&!this.previousArgHasChoices(t)){let s=this.yargs.getOptions(),o=this.yargs.getGroups()[this.usage.getPositionalGroupName()]||[];Object.keys(s.key).forEach((i)=>{let a=!!s.configuration["boolean-negation"]&&s.boolean.includes(i);if(!o.includes(i)&&!s.hiddenOptions.includes(i)&&!this.argsContainKey(t,i,a))this.completeOptionKey(i,e,r,a&&!!s.default[i])})}}choicesFromOptionsCompletions(e,t,n,r){if(this.previousArgHasChoices(t)){let s=this.getPreviousArgChoices(t);if(s&&s.length>0)e.push(...s.map((o)=>o.replace(/:/g,"\\:")))}}choicesFromPositionalsCompletions(e,t,n,r){if(r===""&&e.length>0&&this.previousArgHasChoices(t))return;let s=this.yargs.getGroups()[this.usage.getPositionalGroupName()]||[],o=Math.max(this.indexAfterLastReset,this.yargs.getInternalMethods().getContext().commands.length+1),i=s[n._.length-o-1];if(!i)return;let a=this.yargs.getOptions().choices[i]||[];for(let c of a)if(c.startsWith(r))e.push(c.replace(/:/g,"\\:"))}getPreviousArgChoices(e){if(e.length<1)return;let t=e[e.length-1],n="";if(!t.startsWith("-")&&e.length>1)n=t,t=e[e.length-2];if(!t.startsWith("-"))return;let r=t.replace(/^-+/,""),s=this.yargs.getOptions(),o=[r,...this.yargs.getAliases()[r]||[]],i;for(let a of o)if(Object.prototype.hasOwnProperty.call(s.key,a)&&Array.isArray(s.choices[a])){i=s.choices[a];break}if(i)return i.filter((a)=>!n||a.startsWith(n))}previousArgHasChoices(e){let t=this.getPreviousArgChoices(e);return t!==void 0&&t.length>0}argsContainKey(e,t,n){let r=(s)=>e.indexOf((/^[^0-9]$/.test(s)?"-":"--")+s)!==-1;if(r(t))return!0;if(n&&r(`no-${t}`))return!0;if(this.aliases){for(let s of this.aliases[t])if(r(s))return!0}return!1}completeOptionKey(e,t,n,r){var s,o,i,a;let c=e;if(this.zshShell){let d=this.usage.getDescriptions(),h=(o=(s=this===null||this===void 0?void 0:this.aliases)===null||s===void 0?void 0:s[e])===null||o===void 0?void 0:o.find((y)=>{let E=d[y];return typeof E==="string"&&E.length>0}),m=h?d[h]:void 0,p=(a=(i=d[e])!==null&&i!==void 0?i:m)!==null&&a!==void 0?a:"";c=`${e.replace(/:/g,"\\:")}:${p.replace("__yargsString__:","").replace(/(\r\n|\n|\r)/gm," ")}`}let u=(d)=>/^--/.test(d),f=(d)=>/^[^0-9]$/.test(d),l=!u(n)&&f(e)?"-":"--";if(t.push(l+c),r)t.push(l+"no-"+c)}customCompletion(e,t,n,r){if(Ce(this.customCompletionFunction,null,this.shim),Wl(this.customCompletionFunction)){let s=this.customCompletionFunction(n,t);if(re(s))return s.then((o)=>{this.shim.process.nextTick(()=>{r(null,o)})}).catch((o)=>{this.shim.process.nextTick(()=>{r(o,void 0)})});return r(null,s)}else if(Ul(this.customCompletionFunction))return this.customCompletionFunction(n,t,(s=r)=>this.defaultCompletion(e,t,n,s),(s)=>{r(null,s)});else return this.customCompletionFunction(n,t,(s)=>{r(null,s)})}getCompletion(e,t){let n=e.length?e[e.length-1]:"",r=this.yargs.parse(e,!0),s=this.customCompletionFunction?(o)=>this.customCompletion(e,o,n,t):(o)=>this.defaultCompletion(e,o,n,t);return re(r)?r.then(s):s(r)}generateCompletionScript(e,t){let n=this.zshShell?xi:Ei,r=this.shim.path.basename(e);if(e.match(/\.js$/))e=`./${e}`;return n=n.replace(/{{app_name}}/g,r),n=n.replace(/{{completion_command}}/g,t),n.replace(/{{app_path}}/g,e)}registerFunction(e){this.customCompletionFunction=e}setParsed(e){this.aliases=e.aliases}}function ki(e,t,n,r){return new _i(e,t,n,r)}function Wl(e){return e.length<3}function Ul(e){return e.length>3}function Si(e,t){if(e.length===0)return t.length;if(t.length===0)return e.length;let n=[],r;for(r=0;r<=t.length;r++)n[r]=[r];let s;for(s=0;s<=e.length;s++)n[0][s]=s;for(r=1;r<=t.length;r++)for(s=1;s<=e.length;s++)if(t.charAt(r-1)===e.charAt(s-1))n[r][s]=n[r-1][s-1];else if(r>1&&s>1&&t.charAt(r-2)===e.charAt(s-1)&&t.charAt(r-1)===e.charAt(s-2))n[r][s]=n[r-2][s-2]+1;else n[r][s]=Math.min(n[r-1][s-1]+1,Math.min(n[r][s-1]+1,n[r-1][s]+1));return n[t.length][e.length]}var Ai=["$0","--","_"];function $i(e,t,n){let r=n.y18n.__,s=n.y18n.__n,o={};o.nonOptionCount=function(l){let d=e.getDemandedCommands(),m=l._.length+(l["--"]?l["--"].length:0)-e.getInternalMethods().getContext().commands.length;if(d._&&(m<d._.min||m>d._.max)){if(m<d._.min)if(d._.minMsg!==void 0)t.fail(d._.minMsg?d._.minMsg.replace(/\$0/g,m.toString()).replace(/\$1/,d._.min.toString()):null);else t.fail(s("Not enough non-option arguments: got %s, need at least %s","Not enough non-option arguments: got %s, need at least %s",m,m.toString(),d._.min.toString()));else if(m>d._.max)if(d._.maxMsg!==void 0)t.fail(d._.maxMsg?d._.maxMsg.replace(/\$0/g,m.toString()).replace(/\$1/,d._.max.toString()):null);else t.fail(s("Too many non-option arguments: got %s, maximum of %s","Too many non-option arguments: got %s, maximum of %s",m,m.toString(),d._.max.toString()))}},o.positionalCount=function(l,d){if(d<l)t.fail(s("Not enough non-option arguments: got %s, need at least %s","Not enough non-option arguments: got %s, need at least %s",d,d+"",l+""))},o.requiredArguments=function(l,d){let h=null;for(let m of Object.keys(d))if(!Object.prototype.hasOwnProperty.call(l,m)||typeof l[m]>"u")h=h||{},h[m]=d[m];if(h){let m=[];for(let y of Object.keys(h)){let E=h[y];if(E&&m.indexOf(E)<0)m.push(E)}let p=m.length?`
75
75
  ${m.join(`
76
- `)}`:"";t.fail(s("Missing required argument: %s","Missing required arguments: %s",Object.keys(p).length,Object.keys(p).join(", ")+h))}},o.unknownArguments=function(l,d,p,m,h=!0){var y;let E=e.getInternalMethods().getCommandInstance().getCommands(),F=[],A=e.getInternalMethods().getContext();if(Object.keys(l).forEach((k)=>{if(!Ei.includes(k)&&!Object.prototype.hasOwnProperty.call(p,k)&&!Object.prototype.hasOwnProperty.call(e.getInternalMethods().getParseContext(),k)&&!o.isValidAndSomeAliasIsNotNew(k,d))F.push(k)}),h&&(A.commands.length>0||E.length>0||m))l._.slice(A.commands.length).forEach((k)=>{if(!E.includes(""+k))F.push(""+k)});if(h){let B=((y=e.getDemandedCommands()._)===null||y===void 0?void 0:y.max)||0,I=A.commands.length+B;if(I<l._.length)l._.slice(I).forEach((R)=>{if(R=String(R),!A.commands.includes(R)&&!F.includes(R))F.push(R)})}if(F.length)t.fail(s("Unknown argument: %s","Unknown arguments: %s",F.length,F.map((k)=>k.trim()?k:`"${k}"`).join(", ")))},o.unknownCommands=function(l){let d=e.getInternalMethods().getCommandInstance().getCommands(),p=[],m=e.getInternalMethods().getContext();if(m.commands.length>0||d.length>0)l._.slice(m.commands.length).forEach((h)=>{if(!d.includes(""+h))p.push(""+h)});if(p.length>0)return t.fail(s("Unknown command: %s","Unknown commands: %s",p.length,p.join(", "))),!0;else return!1},o.isValidAndSomeAliasIsNotNew=function(l,d){if(!Object.prototype.hasOwnProperty.call(d,l))return!1;let p=e.parsed.newAliases;return[l,...d[l]].some((m)=>!Object.prototype.hasOwnProperty.call(p,m)||!p[l])},o.limitedChoices=function(l){let d=e.getOptions(),p={};if(!Object.keys(d.choices).length)return;Object.keys(l).forEach((y)=>{if(Ei.indexOf(y)===-1&&Object.prototype.hasOwnProperty.call(d.choices,y))[].concat(l[y]).forEach((E)=>{if(d.choices[y].indexOf(E)===-1&&E!==void 0)p[y]=(p[y]||[]).concat(E)})});let m=Object.keys(p);if(!m.length)return;let h=r("Invalid values:");m.forEach((y)=>{h+=`
77
- ${r("Argument: %s, Given: %s, Choices: %s",y,t.stringifiedValues(p[y]),t.stringifiedValues(d.choices[y]))}`}),t.fail(h)};let i={};o.implies=function(l,d){if(v("<string|object> [array|number|string]",[l,d],arguments.length),typeof l==="object")Object.keys(l).forEach((p)=>{o.implies(p,l[p])});else{if(e.global(l),!i[l])i[l]=[];if(Array.isArray(d))d.forEach((p)=>o.implies(l,p));else Ce(d,void 0,n),i[l].push(d)}},o.getImplied=function(){return i};function a(f,l){let d=Number(l);if(l=isNaN(d)?l:d,typeof l==="number")l=f._.length>=l;else if(l.match(/^--no-.+/))l=l.match(/^--no-(.+)/)[1],l=!Object.prototype.hasOwnProperty.call(f,l);else l=Object.prototype.hasOwnProperty.call(f,l);return l}o.implications=function(l){let d=[];if(Object.keys(i).forEach((p)=>{let m=p;(i[p]||[]).forEach((h)=>{let y=m,E=h;if(y=a(l,y),h=a(l,h),y&&!h)d.push(` ${m} -> ${E}`)})}),d.length){let p=`${r("Implications failed:")}
78
- `;d.forEach((m)=>{p+=m}),t.fail(p)}};let c={};o.conflicts=function(l,d){if(v("<string|object> [array|string]",[l,d],arguments.length),typeof l==="object")Object.keys(l).forEach((p)=>{o.conflicts(p,l[p])});else{if(e.global(l),!c[l])c[l]=[];if(Array.isArray(d))d.forEach((p)=>o.conflicts(l,p));else c[l].push(d)}},o.getConflicting=()=>c,o.conflicting=function(l){if(Object.keys(l).forEach((d)=>{if(c[d])c[d].forEach((p)=>{if(p&&l[d]!==void 0&&l[p]!==void 0)t.fail(r("Arguments %s and %s are mutually exclusive",d,p))})}),e.getInternalMethods().getParserConfiguration()["strip-dashed"])Object.keys(c).forEach((d)=>{c[d].forEach((p)=>{if(p&&l[n.Parser.camelCase(d)]!==void 0&&l[n.Parser.camelCase(p)]!==void 0)t.fail(r("Arguments %s and %s are mutually exclusive",d,p))})})},o.recommendCommands=function(l,d){d=d.sort((y,E)=>E.length-y.length);let m=null,h=1/0;for(let y=0,E;(E=d[y])!==void 0;y++){let F=Ci(l,E);if(F<=3&&F<h)h=F,m=E}if(m)t.fail(r("Did you mean %s?",m))},o.reset=function(l){return i=rt(i,(d)=>!l[d]),c=rt(c,(d)=>!l[d]),o};let u=[];return o.freeze=function(){u.push({implied:i,conflicting:c})},o.unfreeze=function(){let l=u.pop();Ce(l,void 0,n),{implied:i,conflicting:c}=l},o}var nr=[],rn;function on(e,t,n,r){rn=r;let s={};if(Object.prototype.hasOwnProperty.call(e,"extends")){if(typeof e.extends!=="string")return s;let o=/\.json|\..*rc$/.test(e.extends),i=null;if(!o)try{i=import.meta.resolve(e.extends)}catch(a){return e}else i=Rl(t,e.extends);Pl(i),nr.push(i),s=o?JSON.parse(rn.readFileSync(i,"utf8")):r.require(e.extends),delete e.extends,s=on(s,rn.path.dirname(i),n,rn)}return nr=[],n?_i(s,e):Object.assign({},s,e)}function Pl(e){if(nr.indexOf(e)>-1)throw new le(`Circular extended configurations: '${e}'.`)}function Rl(e,t){return rn.path.resolve(e,t)}function _i(e,t){let n={};function r(s){return s&&typeof s==="object"&&!Array.isArray(s)}Object.assign(n,e);for(let s of Object.keys(t))if(r(t[s])&&r(n[s]))n[s]=_i(e[s],t[s]);else n[s]=t[s];return n}var j=function(e,t,n,r,s){if(r==="m")throw TypeError("Private method is not writable");if(r==="a"&&!s)throw TypeError("Private accessor was defined without a setter");if(typeof t==="function"?e!==t||!s:!t.has(e))throw TypeError("Cannot write private member to an object whose class did not declare it");return r==="a"?s.call(e,n):s?s.value=n:t.set(e,n),n},g=function(e,t,n,r){if(n==="a"&&!r)throw TypeError("Private accessor was defined without a getter");if(typeof t==="function"?e!==t||!r:!t.has(e))throw TypeError("Cannot read private member from an object whose class did not declare it");return n==="m"?r:n==="a"?r.call(e):r?r.value:t.get(e)},fe,yt,an,xe,Ae,Nn,it,bt,vn,Pe,jn,Re,Xe,$e,Me,Ln,wt,me,K,Wn,Un,Oe,Ft,Jt,Ct,at,Kn,H,Et,xt,_t,Y,Jn,Ge,ce;function zi(e){return(t=[],n=e.process.cwd(),r)=>{let s=new Hi(t,n,r,e);return Object.defineProperty(s,"argv",{get:()=>s.parse(),enumerable:!0}),s.help(),s.version(),s}}var ki=Symbol("copyDoubleDash"),Si=Symbol("copyDoubleDash"),sr=Symbol("deleteFromParserHintObject"),Ai=Symbol("emitWarning"),$i=Symbol("freeze"),Oi=Symbol("getDollarZero"),kt=Symbol("getParserConfiguration"),Ii=Symbol("getUsageConfiguration"),rr=Symbol("guessLocale"),Ti=Symbol("guessVersion"),Pi=Symbol("parsePositionalNumbers"),or=Symbol("pkgUp"),ct=Symbol("populateParserHintArray"),zt=Symbol("populateParserHintSingleValueDictionary"),ir=Symbol("populateParserHintArrayDictionary"),ar=Symbol("populateParserHintDictionary"),cr=Symbol("sanitizeKey"),ur=Symbol("setKey"),lr=Symbol("unfreeze"),Ri=Symbol("validateAsync"),Mi=Symbol("getCommandInstance"),Bi=Symbol("getContext"),Ni=Symbol("getHasOutput"),vi=Symbol("getLoggerInstance"),ji=Symbol("getParseContext"),Li=Symbol("getUsageInstance"),Wi=Symbol("getValidationInstance"),zn=Symbol("hasParseCallback"),Ui=Symbol("isGlobalContext"),St=Symbol("postProcess"),Ki=Symbol("rebase"),fr=Symbol("reset"),cn=Symbol("runYargsParserAndExecuteCommands"),dr=Symbol("runValidation"),Ji=Symbol("setHasOutput"),At=Symbol("kTrackManuallySetKeys"),Ml="en_US";class Hi{constructor(e=[],t,n,r){this.customScriptName=!1,this.parsed=!1,fe.set(this,void 0),yt.set(this,void 0),an.set(this,{commands:[],fullCommands:[]}),xe.set(this,null),Ae.set(this,null),Nn.set(this,"show-hidden"),it.set(this,null),bt.set(this,!0),vn.set(this,{}),Pe.set(this,!0),jn.set(this,[]),Re.set(this,void 0),Xe.set(this,{}),$e.set(this,!1),Me.set(this,null),Ln.set(this,!0),wt.set(this,void 0),me.set(this,""),K.set(this,void 0),Wn.set(this,void 0),Un.set(this,{}),Oe.set(this,null),Ft.set(this,null),Jt.set(this,{}),Ct.set(this,{}),at.set(this,void 0),Kn.set(this,!1),H.set(this,void 0),Et.set(this,!1),xt.set(this,!1),_t.set(this,!1),Y.set(this,void 0),Jn.set(this,{}),Ge.set(this,null),ce.set(this,void 0),j(this,H,r,"f"),j(this,at,e,"f"),j(this,yt,t,"f"),j(this,Wn,n,"f"),j(this,Re,new er(this),"f"),this.$0=this[Oi](),this[fr](),j(this,fe,g(this,fe,"f"),"f"),j(this,Y,g(this,Y,"f"),"f"),j(this,ce,g(this,ce,"f"),"f"),j(this,K,g(this,K,"f"),"f"),g(this,K,"f").showHiddenOpt=g(this,Nn,"f"),j(this,wt,this[Si](),"f"),g(this,H,"f").y18n.setLocale(Ml)}addHelpOpt(e,t){if(v("[string|boolean] [string]",[e,t],arguments.length),g(this,Me,"f"))this[sr](g(this,Me,"f")),j(this,Me,null,"f");if(e===!1&&t===void 0)return this;return j(this,Me,typeof e==="string"?e:"help","f"),this.boolean(g(this,Me,"f")),this.describe(g(this,Me,"f"),t||g(this,Y,"f").deferY18nLookup("Show help")),this}help(e,t){return this.addHelpOpt(e,t)}addShowHiddenOpt(e,t){if(v("[string|boolean] [string]",[e,t],arguments.length),e===!1&&t===void 0)return this;let n=typeof e==="string"?e:g(this,Nn,"f");return this.boolean(n),this.describe(n,t||g(this,Y,"f").deferY18nLookup("Show hidden options")),g(this,K,"f").showHiddenOpt=n,this}showHidden(e,t){return this.addShowHiddenOpt(e,t)}alias(e,t){return v("<object|string|array> [string|array]",[e,t],arguments.length),this[ir](this.alias.bind(this),"alias",e,t),this}array(e){return v("<array|string>",[e],arguments.length),this[ct]("array",e),this[At](e),this}boolean(e){return v("<array|string>",[e],arguments.length),this[ct]("boolean",e),this[At](e),this}check(e,t){return v("<function> [boolean]",[e,t],arguments.length),this.middleware((n,r)=>Dt(()=>e(n,r.getOptions()),(s)=>{if(!s)g(this,Y,"f").fail(g(this,H,"f").y18n.__("Argument check failed: %s",e.toString()));else if(typeof s==="string"||s instanceof Error)g(this,Y,"f").fail(s.toString(),s);return n},(s)=>(g(this,Y,"f").fail(s.message?s.message:s.toString(),s),n)),!1,t),this}choices(e,t){return v("<object|string|array> [string|array]",[e,t],arguments.length),this[ir](this.choices.bind(this),"choices",e,t),this}coerce(e,t){if(v("<object|string|array> [function]",[e,t],arguments.length),Array.isArray(e)){if(!t)throw new le("coerce callback must be provided");for(let r of e)this.coerce(r,t);return this}else if(typeof e==="object"){for(let r of Object.keys(e))this.coerce(r,e[r]);return this}if(!t)throw new le("coerce callback must be provided");let n=e;return g(this,K,"f").key[n]=!0,g(this,Re,"f").addCoerceMiddleware((r,s)=>{var o;let i=(o=s.getAliases()[n])!==null&&o!==void 0?o:[],a=[n,...i].filter((c)=>Object.prototype.hasOwnProperty.call(r,c));if(a.length===0)return r;return Dt(()=>t(r[a[0]]),(c)=>(a.forEach((u)=>{r[u]=c}),r),(c)=>{throw new le(c.message)})},n),this}conflicts(e,t){return v("<string|object> [string|array]",[e,t],arguments.length),g(this,ce,"f").conflicts(e,t),this}config(e="config",t,n){if(v("[object|string] [string|function] [function]",[e,t,n],arguments.length),typeof e==="object"&&!Array.isArray(e))return e=on(e,g(this,yt,"f"),this[kt]()["deep-merge-config"]||!1,g(this,H,"f")),g(this,K,"f").configObjects=(g(this,K,"f").configObjects||[]).concat(e),this;if(typeof t==="function")n=t,t=void 0;return this.describe(e,t||g(this,Y,"f").deferY18nLookup("Path to JSON config file")),(Array.isArray(e)?e:[e]).forEach((r)=>{g(this,K,"f").config[r]=n||!0}),this}completion(e,t,n){if(v("[string] [string|boolean|function] [function]",[e,t,n],arguments.length),typeof t==="function")n=t,t=void 0;if(j(this,Ae,e||g(this,Ae,"f")||"completion","f"),!t&&t!==!1)t="generate completion script";if(this.command(g(this,Ae,"f"),t),n)g(this,xe,"f").registerFunction(n);return this}command(e,t,n,r,s,o){return v("<string|array|object> [string|boolean] [function|object] [function] [array] [boolean|string]",[e,t,n,r,s,o],arguments.length),g(this,fe,"f").addHandler(e,t,n,r,s,o),this}commands(e,t,n,r,s,o){return this.command(e,t,n,r,s,o)}commandDir(e,t){v("<string> [object]",[e,t],arguments.length);let n=g(this,Wn,"f")||g(this,H,"f").require;return g(this,fe,"f").addDirectory(e,n,g(this,H,"f").getCallerFile(),t),this}count(e){return v("<array|string>",[e],arguments.length),this[ct]("count",e),this[At](e),this}default(e,t,n){if(v("<object|string|array> [*] [string]",[e,t,n],arguments.length),n)Qs(e,g(this,H,"f")),g(this,K,"f").defaultDescription[e]=n;if(typeof t==="function"){if(Qs(e,g(this,H,"f")),!g(this,K,"f").defaultDescription[e])g(this,K,"f").defaultDescription[e]=g(this,Y,"f").functionDescription(t);t=t.call()}return this[zt](this.default.bind(this),"default",e,t),this}defaults(e,t,n){return this.default(e,t,n)}demandCommand(e=1,t,n,r){if(v("[number] [number|string] [string|null|undefined] [string|null|undefined]",[e,t,n,r],arguments.length),typeof t!=="number")n=t,t=1/0;return this.global("_",!1),g(this,K,"f").demandedCommands._={min:e,max:t,minMsg:n,maxMsg:r},this}demand(e,t,n){if(Array.isArray(t))t.forEach((r)=>{Ce(n,!0,g(this,H,"f")),this.demandOption(r,n)}),t=1/0;else if(typeof t!=="number")n=t,t=1/0;if(typeof e==="number")Ce(n,!0,g(this,H,"f")),this.demandCommand(e,t,n,n);else if(Array.isArray(e))e.forEach((r)=>{Ce(n,!0,g(this,H,"f")),this.demandOption(r,n)});else if(typeof n==="string")this.demandOption(e,n);else if(n===!0||typeof n>"u")this.demandOption(e);return this}demandOption(e,t){return v("<object|string|array> [string]",[e,t],arguments.length),this[zt](this.demandOption.bind(this),"demandedOptions",e,t),this}deprecateOption(e,t){return v("<string> [string|boolean]",[e,t],arguments.length),g(this,K,"f").deprecatedOptions[e]=t,this}describe(e,t){return v("<object|string|array> [string]",[e,t],arguments.length),this[ur](e,!0),g(this,Y,"f").describe(e,t),this}detectLocale(e){return v("<boolean>",[e],arguments.length),j(this,bt,e,"f"),this}env(e){if(v("[string|boolean]",[e],arguments.length),e===!1)delete g(this,K,"f").envPrefix;else g(this,K,"f").envPrefix=e||"";return this}epilogue(e){return v("<string>",[e],arguments.length),g(this,Y,"f").epilog(e),this}epilog(e){return this.epilogue(e)}example(e,t){if(v("<string|array> [string]",[e,t],arguments.length),Array.isArray(e))e.forEach((n)=>this.example(...n));else g(this,Y,"f").example(e,t);return this}exit(e,t){if(j(this,$e,!0,"f"),j(this,it,t,"f"),g(this,Pe,"f"))g(this,H,"f").process.exit(e)}exitProcess(e=!0){return v("[boolean]",[e],arguments.length),j(this,Pe,e,"f"),this}fail(e){if(v("<function|boolean>",[e],arguments.length),typeof e==="boolean"&&e!==!1)throw new le("Invalid first argument. Expected function or boolean 'false'");return g(this,Y,"f").failFn(e),this}getAliases(){return this.parsed?this.parsed.aliases:{}}async getCompletion(e,t){if(v("<array> [function]",[e,t],arguments.length),!t)return new Promise((n,r)=>{g(this,xe,"f").getCompletion(e,(s,o)=>{if(s)r(s);else n(o)})});else return g(this,xe,"f").getCompletion(e,t)}getDemandedOptions(){return v([],0),g(this,K,"f").demandedOptions}getDemandedCommands(){return v([],0),g(this,K,"f").demandedCommands}getDeprecatedOptions(){return v([],0),g(this,K,"f").deprecatedOptions}getDetectLocale(){return g(this,bt,"f")}getExitProcess(){return g(this,Pe,"f")}getGroups(){return Object.assign({},g(this,Xe,"f"),g(this,Ct,"f"))}getHelp(){if(j(this,$e,!0,"f"),!g(this,Y,"f").hasCachedHelpMessage()){if(!this.parsed){let t=this[cn](g(this,at,"f"),void 0,void 0,0,!0);if(re(t))return t.then(()=>g(this,Y,"f").help())}let e=g(this,fe,"f").runDefaultBuilderOn(this);if(re(e))return e.then(()=>g(this,Y,"f").help())}return Promise.resolve(g(this,Y,"f").help())}getOptions(){return g(this,K,"f")}getStrict(){return g(this,Et,"f")}getStrictCommands(){return g(this,xt,"f")}getStrictOptions(){return g(this,_t,"f")}global(e,t){if(v("<string|array> [boolean]",[e,t],arguments.length),e=[].concat(e),t!==!1)g(this,K,"f").local=g(this,K,"f").local.filter((n)=>e.indexOf(n)===-1);else e.forEach((n)=>{if(!g(this,K,"f").local.includes(n))g(this,K,"f").local.push(n)});return this}group(e,t){v("<string|array> <string>",[e,t],arguments.length);let n=g(this,Ct,"f")[t]||g(this,Xe,"f")[t];if(g(this,Ct,"f")[t])delete g(this,Ct,"f")[t];let r={};return g(this,Xe,"f")[t]=(n||[]).concat(e).filter((s)=>{if(r[s])return!1;return r[s]=!0}),this}hide(e){return v("<string>",[e],arguments.length),g(this,K,"f").hiddenOptions.push(e),this}implies(e,t){return v("<string|object> [number|string|array]",[e,t],arguments.length),g(this,ce,"f").implies(e,t),this}locale(e){if(v("[string]",[e],arguments.length),e===void 0)return this[rr](),g(this,H,"f").y18n.getLocale();return j(this,bt,!1,"f"),g(this,H,"f").y18n.setLocale(e),this}middleware(e,t,n){return g(this,Re,"f").addMiddleware(e,!!t,n)}nargs(e,t){return v("<string|object|array> [number]",[e,t],arguments.length),this[zt](this.nargs.bind(this),"narg",e,t),this}normalize(e){return v("<array|string>",[e],arguments.length),this[ct]("normalize",e),this}number(e){return v("<array|string>",[e],arguments.length),this[ct]("number",e),this[At](e),this}option(e,t){if(v("<string|object> [object]",[e,t],arguments.length),typeof e==="object")Object.keys(e).forEach((n)=>{this.options(n,e[n])});else{if(typeof t!=="object")t={};if(this[At](e),g(this,Ge,"f")&&(e==="version"||(t===null||t===void 0?void 0:t.alias)==="version"))this[Ai](['"version" is a reserved word.',"Please do one of the following:",'- Disable version with `yargs.version(false)` if using "version" as an option',"- Use the built-in `yargs.version` method instead (if applicable)","- Use a different option key","https://yargs.js.org/docs/#api-reference-version"].join(`
79
- `),void 0,"versionWarning");if(g(this,K,"f").key[e]=!0,t.alias)this.alias(e,t.alias);let n=t.deprecate||t.deprecated;if(n)this.deprecateOption(e,n);let r=t.demand||t.required||t.require;if(r)this.demand(e,r);if(t.demandOption)this.demandOption(e,typeof t.demandOption==="string"?t.demandOption:void 0);if(t.conflicts)this.conflicts(e,t.conflicts);if("default"in t)this.default(e,t.default);if(t.implies!==void 0)this.implies(e,t.implies);if(t.nargs!==void 0)this.nargs(e,t.nargs);if(t.config)this.config(e,t.configParser);if(t.normalize)this.normalize(e);if(t.choices)this.choices(e,t.choices);if(t.coerce)this.coerce(e,t.coerce);if(t.group)this.group(e,t.group);if(t.boolean||t.type==="boolean"){if(this.boolean(e),t.alias)this.boolean(t.alias)}if(t.array||t.type==="array"){if(this.array(e),t.alias)this.array(t.alias)}if(t.number||t.type==="number"){if(this.number(e),t.alias)this.number(t.alias)}if(t.string||t.type==="string"){if(this.string(e),t.alias)this.string(t.alias)}if(t.count||t.type==="count")this.count(e);if(typeof t.global==="boolean")this.global(e,t.global);if(t.defaultDescription)g(this,K,"f").defaultDescription[e]=t.defaultDescription;if(t.skipValidation)this.skipValidation(e);let s=t.describe||t.description||t.desc,o=g(this,Y,"f").getDescriptions();if(!Object.prototype.hasOwnProperty.call(o,e)||typeof s==="string")this.describe(e,s);if(t.hidden)this.hide(e);if(t.requiresArg)this.requiresArg(e)}return this}options(e,t){return this.option(e,t)}parse(e,t,n){if(v("[string|array] [function|boolean|object] [function]",[e,t,n],arguments.length),this[$i](),typeof e>"u")e=g(this,at,"f");if(typeof t==="object")j(this,Ft,t,"f"),t=n;if(typeof t==="function")j(this,Oe,t,"f"),t=!1;if(!t)j(this,at,e,"f");if(g(this,Oe,"f"))j(this,Pe,!1,"f");let r=this[cn](e,!!t),s=this.parsed;if(g(this,xe,"f").setParsed(this.parsed),re(r))return r.then((o)=>{if(g(this,Oe,"f"))g(this,Oe,"f").call(this,g(this,it,"f"),o,g(this,me,"f"));return o}).catch((o)=>{if(g(this,Oe,"f"))g(this,Oe,"f")(o,this.parsed.argv,g(this,me,"f"));throw o}).finally(()=>{this[lr](),this.parsed=s});else{if(g(this,Oe,"f"))g(this,Oe,"f").call(this,g(this,it,"f"),r,g(this,me,"f"));this[lr](),this.parsed=s}return r}parseAsync(e,t,n){let r=this.parse(e,t,n);return!re(r)?Promise.resolve(r):r}parseSync(e,t,n){let r=this.parse(e,t,n);if(re(r))throw new le(".parseSync() must not be used with asynchronous builders, handlers, or middleware");return r}parserConfiguration(e){return v("<object>",[e],arguments.length),j(this,Un,e,"f"),this}pkgConf(e,t){v("<string> [string]",[e,t],arguments.length);let n=null,r=this[or](t||g(this,yt,"f"));if(r[e]&&typeof r[e]==="object")n=on(r[e],t||g(this,yt,"f"),this[kt]()["deep-merge-config"]||!1,g(this,H,"f")),g(this,K,"f").configObjects=(g(this,K,"f").configObjects||[]).concat(n);return this}positional(e,t){v("<string> <object>",[e,t],arguments.length);let n=["default","defaultDescription","implies","normalize","choices","conflicts","coerce","type","describe","desc","description","alias"];t=rt(t,(o,i)=>{if(o==="type"&&!["string","number","boolean"].includes(i))return!1;return n.includes(o)});let r=g(this,an,"f").fullCommands[g(this,an,"f").fullCommands.length-1],s=r?g(this,fe,"f").cmdToParseOptions(r):{array:[],alias:{},default:{},demand:{}};return Ut(s).forEach((o)=>{let i=s[o];if(Array.isArray(i)){if(i.indexOf(e)!==-1)t[o]=!0}else if(i[e]&&!(o in t))t[o]=i[e]}),this.group(e,g(this,Y,"f").getPositionalGroupName()),this.option(e,t)}recommendCommands(e=!0){return v("[boolean]",[e],arguments.length),j(this,Kn,e,"f"),this}required(e,t,n){return this.demand(e,t,n)}require(e,t,n){return this.demand(e,t,n)}requiresArg(e){if(v("<array|string|object> [number]",[e],arguments.length),typeof e==="string"&&g(this,K,"f").narg[e])return this;else this[zt](this.requiresArg.bind(this),"narg",e,NaN);return this}showCompletionScript(e,t){return v("[string] [string]",[e,t],arguments.length),e=e||this.$0,g(this,wt,"f").log(g(this,xe,"f").generateCompletionScript(e,t||g(this,Ae,"f")||"completion")),this}showHelp(e){if(v("[string|function]",[e],arguments.length),j(this,$e,!0,"f"),!g(this,Y,"f").hasCachedHelpMessage()){if(!this.parsed){let n=this[cn](g(this,at,"f"),void 0,void 0,0,!0);if(re(n))return n.then(()=>{g(this,Y,"f").showHelp(e)}),this}let t=g(this,fe,"f").runDefaultBuilderOn(this);if(re(t))return t.then(()=>{g(this,Y,"f").showHelp(e)}),this}return g(this,Y,"f").showHelp(e),this}scriptName(e){return this.customScriptName=!0,this.$0=e,this}showHelpOnFail(e,t){return v("[boolean|string] [string]",[e,t],arguments.length),g(this,Y,"f").showHelpOnFail(e,t),this}showVersion(e){return v("[string|function]",[e],arguments.length),g(this,Y,"f").showVersion(e),this}skipValidation(e){return v("<array|string>",[e],arguments.length),this[ct]("skipValidation",e),this}strict(e){return v("[boolean]",[e],arguments.length),j(this,Et,e!==!1,"f"),this}strictCommands(e){return v("[boolean]",[e],arguments.length),j(this,xt,e!==!1,"f"),this}strictOptions(e){return v("[boolean]",[e],arguments.length),j(this,_t,e!==!1,"f"),this}string(e){return v("<array|string>",[e],arguments.length),this[ct]("string",e),this[At](e),this}terminalWidth(){return v([],0),g(this,H,"f").process.stdColumns}updateLocale(e){return this.updateStrings(e)}updateStrings(e){return v("<object>",[e],arguments.length),j(this,bt,!1,"f"),g(this,H,"f").y18n.updateLocale(e),this}usage(e,t,n,r){if(v("<string|null|undefined> [string|boolean] [function|object] [function]",[e,t,n,r],arguments.length),t!==void 0)if(Ce(e,null,g(this,H,"f")),(e||"").match(/^\$0( |$)/))return this.command(e,t,n,r);else throw new le(".usage() description must start with $0 if being used as alias for .command()");else return g(this,Y,"f").usage(e),this}usageConfiguration(e){return v("<object>",[e],arguments.length),j(this,Jn,e,"f"),this}version(e,t,n){if(v("[boolean|string] [string] [string]",[e,t,n],arguments.length),g(this,Ge,"f"))this[sr](g(this,Ge,"f")),g(this,Y,"f").version(void 0),j(this,Ge,null,"f");if(arguments.length===0)n=this[Ti](),e="version";else if(arguments.length===1){if(e===!1)return this;n=e,e="version"}else if(arguments.length===2)n=t,t=void 0;return j(this,Ge,typeof e==="string"?e:"version","f"),t=t||g(this,Y,"f").deferY18nLookup("Show version number"),g(this,Y,"f").version(n||void 0),this.boolean(g(this,Ge,"f")),this.describe(g(this,Ge,"f"),t),this}wrap(e){return v("<number|null|undefined>",[e],arguments.length),g(this,Y,"f").wrap(e),this}[(fe=new WeakMap,yt=new WeakMap,an=new WeakMap,xe=new WeakMap,Ae=new WeakMap,Nn=new WeakMap,it=new WeakMap,bt=new WeakMap,vn=new WeakMap,Pe=new WeakMap,jn=new WeakMap,Re=new WeakMap,Xe=new WeakMap,$e=new WeakMap,Me=new WeakMap,Ln=new WeakMap,wt=new WeakMap,me=new WeakMap,K=new WeakMap,Wn=new WeakMap,Un=new WeakMap,Oe=new WeakMap,Ft=new WeakMap,Jt=new WeakMap,Ct=new WeakMap,at=new WeakMap,Kn=new WeakMap,H=new WeakMap,Et=new WeakMap,xt=new WeakMap,_t=new WeakMap,Y=new WeakMap,Jn=new WeakMap,Ge=new WeakMap,ce=new WeakMap,ki)](e){if(!e._||!e["--"])return e;e._.push.apply(e._,e["--"]);try{delete e["--"]}catch(t){}return e}[Si](){return{log:(...e)=>{if(!this[zn]())console.log(...e);if(j(this,$e,!0,"f"),g(this,me,"f").length)j(this,me,g(this,me,"f")+`
80
- `,"f");j(this,me,g(this,me,"f")+e.join(" "),"f")},error:(...e)=>{if(!this[zn]())console.error(...e);if(j(this,$e,!0,"f"),g(this,me,"f").length)j(this,me,g(this,me,"f")+`
81
- `,"f");j(this,me,g(this,me,"f")+e.join(" "),"f")}}}[sr](e){Ut(g(this,K,"f")).forEach((t)=>{if(((r)=>r==="configObjects")(t))return;let n=g(this,K,"f")[t];if(Array.isArray(n)){if(n.includes(e))n.splice(n.indexOf(e),1)}else if(typeof n==="object")delete n[e]}),delete g(this,Y,"f").getDescriptions()[e]}[Ai](e,t,n){if(!g(this,vn,"f")[n])g(this,H,"f").process.emitWarning(e,t),g(this,vn,"f")[n]=!0}[$i](){g(this,jn,"f").push({options:g(this,K,"f"),configObjects:g(this,K,"f").configObjects.slice(0),exitProcess:g(this,Pe,"f"),groups:g(this,Xe,"f"),strict:g(this,Et,"f"),strictCommands:g(this,xt,"f"),strictOptions:g(this,_t,"f"),completionCommand:g(this,Ae,"f"),output:g(this,me,"f"),exitError:g(this,it,"f"),hasOutput:g(this,$e,"f"),parsed:this.parsed,parseFn:g(this,Oe,"f"),parseContext:g(this,Ft,"f")}),g(this,Y,"f").freeze(),g(this,ce,"f").freeze(),g(this,fe,"f").freeze(),g(this,Re,"f").freeze()}[Oi](){let e="",t;if(/\b(node|iojs|electron)(\.exe)?$/.test(g(this,H,"f").process.argv()[0]))t=g(this,H,"f").process.argv().slice(1,2);else t=g(this,H,"f").process.argv().slice(0,1);if(e=t.map((n)=>{let r=this[Ki](g(this,yt,"f"),n);return n.match(/^(\/|([a-zA-Z]:)?\\)/)&&r.length<n.length?r:n}).join(" ").trim(),g(this,H,"f").getEnv("_")&&g(this,H,"f").getProcessArgvBin()===g(this,H,"f").getEnv("_"))e=g(this,H,"f").getEnv("_").replace(`${g(this,H,"f").path.dirname(g(this,H,"f").process.execPath())}/`,"");return e}[kt](){return g(this,Un,"f")}[Ii](){return g(this,Jn,"f")}[rr](){if(!g(this,bt,"f"))return;let e=g(this,H,"f").getEnv("LC_ALL")||g(this,H,"f").getEnv("LC_MESSAGES")||g(this,H,"f").getEnv("LANG")||g(this,H,"f").getEnv("LANGUAGE")||"en_US";this.locale(e.replace(/[.:].*/,""))}[Ti](){return this[or]().version||"unknown"}[Pi](e){let t=e["--"]?e["--"]:e._;for(let n=0,r;(r=t[n])!==void 0;n++)if(g(this,H,"f").Parser.looksLikeNumber(r)&&Number.isSafeInteger(Math.floor(parseFloat(`${r}`))))t[n]=Number(r);return e}[or](e){let t=e||"*";if(g(this,Jt,"f")[t])return g(this,Jt,"f")[t];let n={};try{let r=e||g(this,H,"f").mainFilename;if(g(this,H,"f").path.extname(r))r=g(this,H,"f").path.dirname(r);let s=g(this,H,"f").findUp(r,(o,i)=>{if(i.includes("package.json"))return"package.json";else return});Ce(s,void 0,g(this,H,"f")),n=JSON.parse(g(this,H,"f").readFileSync(s,"utf8"))}catch(r){}return g(this,Jt,"f")[t]=n||{},g(this,Jt,"f")[t]}[ct](e,t){t=[].concat(t),t.forEach((n)=>{n=this[cr](n),g(this,K,"f")[e].push(n)})}[zt](e,t,n,r){this[ar](e,t,n,r,(s,o,i)=>{g(this,K,"f")[s][o]=i})}[ir](e,t,n,r){this[ar](e,t,n,r,(s,o,i)=>{g(this,K,"f")[s][o]=(g(this,K,"f")[s][o]||[]).concat(i)})}[ar](e,t,n,r,s){if(Array.isArray(n))n.forEach((o)=>{e(o,r)});else if(((o)=>typeof o==="object")(n))for(let o of Ut(n))e(o,n[o]);else s(t,this[cr](n),r)}[cr](e){if(e==="__proto__")return"___proto___";return e}[ur](e,t){return this[zt](this[ur].bind(this),"key",e,t),this}[lr](){var e,t,n,r,s,o,i,a,c,u,f,l;let d=g(this,jn,"f").pop();Ce(d,void 0,g(this,H,"f"));let p;e=this,t=this,n=this,r=this,s=this,o=this,i=this,a=this,c=this,u=this,f=this,l=this,{options:{set value(m){j(e,K,m,"f")}}.value,configObjects:p,exitProcess:{set value(m){j(t,Pe,m,"f")}}.value,groups:{set value(m){j(n,Xe,m,"f")}}.value,output:{set value(m){j(r,me,m,"f")}}.value,exitError:{set value(m){j(s,it,m,"f")}}.value,hasOutput:{set value(m){j(o,$e,m,"f")}}.value,parsed:this.parsed,strict:{set value(m){j(i,Et,m,"f")}}.value,strictCommands:{set value(m){j(a,xt,m,"f")}}.value,strictOptions:{set value(m){j(c,_t,m,"f")}}.value,completionCommand:{set value(m){j(u,Ae,m,"f")}}.value,parseFn:{set value(m){j(f,Oe,m,"f")}}.value,parseContext:{set value(m){j(l,Ft,m,"f")}}.value}=d,g(this,K,"f").configObjects=p,g(this,Y,"f").unfreeze(),g(this,ce,"f").unfreeze(),g(this,fe,"f").unfreeze(),g(this,Re,"f").unfreeze()}[Ri](e,t){return Dt(t,(n)=>(e(n),n))}getInternalMethods(){return{getCommandInstance:this[Mi].bind(this),getContext:this[Bi].bind(this),getHasOutput:this[Ni].bind(this),getLoggerInstance:this[vi].bind(this),getParseContext:this[ji].bind(this),getParserConfiguration:this[kt].bind(this),getUsageConfiguration:this[Ii].bind(this),getUsageInstance:this[Li].bind(this),getValidationInstance:this[Wi].bind(this),hasParseCallback:this[zn].bind(this),isGlobalContext:this[Ui].bind(this),postProcess:this[St].bind(this),reset:this[fr].bind(this),runValidation:this[dr].bind(this),runYargsParserAndExecuteCommands:this[cn].bind(this),setHasOutput:this[Ji].bind(this)}}[Mi](){return g(this,fe,"f")}[Bi](){return g(this,an,"f")}[Ni](){return g(this,$e,"f")}[vi](){return g(this,wt,"f")}[ji](){return g(this,Ft,"f")||{}}[Li](){return g(this,Y,"f")}[Wi](){return g(this,ce,"f")}[zn](){return!!g(this,Oe,"f")}[Ui](){return g(this,Ln,"f")}[St](e,t,n,r){if(n)return e;if(re(e))return e;if(!t)e=this[ki](e);if(this[kt]()["parse-positional-numbers"]||this[kt]()["parse-positional-numbers"]===void 0)e=this[Pi](e);if(r)e=mt(e,this,g(this,Re,"f").getMiddleware(),!1);return e}[fr](e={}){j(this,K,g(this,K,"f")||{},"f");let t={};t.local=g(this,K,"f").local||[],t.configObjects=g(this,K,"f").configObjects||[];let n={};t.local.forEach((o)=>{n[o]=!0,(e[o]||[]).forEach((i)=>{n[i]=!0})}),Object.assign(g(this,Ct,"f"),Object.keys(g(this,Xe,"f")).reduce((o,i)=>{let a=g(this,Xe,"f")[i].filter((c)=>!(c in n));if(a.length>0)o[i]=a;return o},{})),j(this,Xe,{},"f");let r=["array","boolean","string","skipValidation","count","normalize","number","hiddenOptions"],s=["narg","key","alias","default","defaultDescription","config","choices","demandedOptions","demandedCommands","deprecatedOptions"];if(r.forEach((o)=>{t[o]=(g(this,K,"f")[o]||[]).filter((i)=>!n[i])}),s.forEach((o)=>{t[o]=rt(g(this,K,"f")[o],(i)=>!n[i])}),t.envPrefix=g(this,K,"f").envPrefix,j(this,K,t,"f"),j(this,Y,g(this,Y,"f")?g(this,Y,"f").reset(n):Di(this,g(this,H,"f")),"f"),j(this,ce,g(this,ce,"f")?g(this,ce,"f").reset(n):xi(this,g(this,Y,"f"),g(this,H,"f")),"f"),j(this,fe,g(this,fe,"f")?g(this,fe,"f").reset():pi(g(this,Y,"f"),g(this,ce,"f"),g(this,Re,"f"),g(this,H,"f")),"f"),!g(this,xe,"f"))j(this,xe,Fi(this,g(this,Y,"f"),g(this,fe,"f"),g(this,H,"f")),"f");return g(this,Re,"f").reset(),j(this,Ae,null,"f"),j(this,me,"","f"),j(this,it,null,"f"),j(this,$e,!1,"f"),this.parsed=!1,this}[Ki](e,t){return g(this,H,"f").path.relative(e,t)}[cn](e,t,n,r=0,s=!1){var o,i,a,c;let u=!!n||s;e=e||g(this,at,"f"),g(this,K,"f").__=g(this,H,"f").y18n.__,g(this,K,"f").configuration=this[kt]();let f=!!g(this,K,"f").configuration["populate--"],l=Object.assign({},g(this,K,"f").configuration,{"populate--":!0}),d=g(this,H,"f").Parser.detailed(e,Object.assign({},g(this,K,"f"),{configuration:{"parse-positional-numbers":!1,...l}})),p=Object.assign(d.argv,g(this,Ft,"f")),m=void 0,h=d.aliases,y=!1,E=!1;if(Object.keys(p).forEach((F)=>{if(F===g(this,Me,"f")&&p[F])y=!0;else if(F===g(this,Ge,"f")&&p[F])E=!0}),p.$0=this.$0,this.parsed=d,r===0)g(this,Y,"f").clearCachedHelpMessage();try{if(this[rr](),t)return this[St](p,f,!!n,!1);if(g(this,Me,"f")){if([g(this,Me,"f")].concat(h[g(this,Me,"f")]||[]).filter((I)=>I.length>1).includes(""+p._[p._.length-1]))p._.pop(),y=!0}j(this,Ln,!1,"f");let F=g(this,fe,"f").getCommands(),A=((o=g(this,xe,"f"))===null||o===void 0?void 0:o.completionKey)?[(i=g(this,xe,"f"))===null||i===void 0?void 0:i.completionKey,...(c=this.getAliases()[(a=g(this,xe,"f"))===null||a===void 0?void 0:a.completionKey])!==null&&c!==void 0?c:[]].some((B)=>Object.prototype.hasOwnProperty.call(p,B)):!1,k=y||A||s;if(p._.length){if(F.length){let B;for(let I=r||0,R;p._[I]!==void 0;I++)if(R=String(p._[I]),F.includes(R)&&R!==g(this,Ae,"f")){let V=g(this,fe,"f").runCommand(R,this,d,I+1,s,y||E||s);return this[St](V,f,!!n,!1)}else if(!B&&R!==g(this,Ae,"f")){B=R;break}if(!g(this,fe,"f").hasDefaultCommand()&&g(this,Kn,"f")&&B&&!k)g(this,ce,"f").recommendCommands(B,F)}if(g(this,Ae,"f")&&p._.includes(g(this,Ae,"f"))&&!A){if(g(this,Pe,"f"))ot(!0);this.showCompletionScript(),this.exit(0)}}if(g(this,fe,"f").hasDefaultCommand()&&!k){let B=g(this,fe,"f").runCommand(null,this,d,0,s,y||E||s);return this[St](B,f,!!n,!1)}if(A){if(g(this,Pe,"f"))ot(!0);e=[].concat(e);let B=e.slice(e.indexOf(`--${g(this,xe,"f").completionKey}`)+1);return g(this,xe,"f").getCompletion(B,(I,R)=>{if(I)throw new le(I.message);(R||[]).forEach((V)=>{g(this,wt,"f").log(V)}),this.exit(0)}),this[St](p,!f,!!n,!1)}if(!g(this,$e,"f")){if(y){if(g(this,Pe,"f"))ot(!0);u=!0,this.showHelp((B)=>{g(this,wt,"f").log(B),this.exit(0)})}else if(E){if(g(this,Pe,"f"))ot(!0);u=!0,g(this,Y,"f").showVersion("log"),this.exit(0)}}if(!u&&g(this,K,"f").skipValidation.length>0)u=Object.keys(p).some((B)=>g(this,K,"f").skipValidation.indexOf(B)>=0&&p[B]===!0);if(!u){if(d.error)throw new le(d.error.message);if(!A){let B=this[dr](h,{},d.error);if(!n)m=mt(p,this,g(this,Re,"f").getMiddleware(),!0);if(m=this[Ri](B,m!==null&&m!==void 0?m:p),re(m)&&!n)m=m.then(()=>mt(p,this,g(this,Re,"f").getMiddleware(),!1))}}}catch(F){if(F instanceof le)g(this,Y,"f").fail(F.message,F);else throw F}return this[St](m!==null&&m!==void 0?m:p,f,!!n,!0)}[dr](e,t,n,r){let s={...this.getDemandedOptions()};return(o)=>{if(n)throw new le(n.message);g(this,ce,"f").nonOptionCount(o),g(this,ce,"f").requiredArguments(o,s);let i=!1;if(g(this,xt,"f"))i=g(this,ce,"f").unknownCommands(o);if(g(this,Et,"f")&&!i)g(this,ce,"f").unknownArguments(o,e,t,!!r);else if(g(this,_t,"f"))g(this,ce,"f").unknownArguments(o,e,{},!1,!1);g(this,ce,"f").limitedChoices(o),g(this,ce,"f").implications(o),g(this,ce,"f").conflicting(o)}}[Ji](){j(this,$e,!0,"f")}[At](e){if(typeof e==="string")g(this,K,"f").key[e]=!0;else for(let t of e)g(this,K,"f").key[t]=!0}}function gi(e){return!!e&&typeof e.getInternalMethods==="function"}var Bl=zi(Zs),qi=Bl;function Nl(e){return[...e.matchAll(/<https?:\/\/[^\s<>|]+(?:\|[^<>\r\n]*)?>|https?:\/\/[^\t\n\v\f\r <]+/gi)].map(([n])=>n).filter((n)=>!n.startsWith("<")&&(/[^\x00-\x7f]/.test(n)||n.includes(">")))}function Hn(e,t=!1,n=console.error){let r=Nl(e);if(!r.length)return;let s=`Ambiguous URL boundary: ${r.map((o)=>JSON.stringify(o)).join(", ")}. Put the URL on its own line, or wrap it as <url> / <url|label>. Use --allow-url-adjacent to warn only.`;if(!t)throw Error(s);n(`Warning: ${s}`)}import{existsSync as qn,readFileSync as gr,writeFileSync as hr,mkdirSync as Gi}from"node:fs";import{homedir as vl}from"node:os";import{join as $t,dirname as mr}from"node:path";function Dr(){return process.env.HOME||vl()}function Vi(){return $t(Dr(),".config","slack-cli","profiles.json")}function Yn(){return $t(process.cwd(),".slack-cli","workspace")}function Xn(){return $t(Dr(),".slack-cli","workspace")}function un(){let e=Vi();if(!qn(e))return{profiles:{}};return JSON.parse(gr(e,"utf8"))}function jl(e){let t=Vi();Gi(mr(t),{recursive:!0}),hr(t,JSON.stringify(e,null,2)+`
82
- `)}function Ht(e){if(!qn(e))return;return gr(e,"utf8").trim()||void 0}function Yi(e,t){let n=mr(e);Gi(n,{recursive:!0});let r=$t(n,".gitignore");if(!qn(r))hr(r,`*
83
- `);hr(e,t+`
84
- `)}function Ll(e){let t={};for(let n of e.split(`
85
- `)){let r=n.trim();if(!r||r.startsWith("#"))continue;let s=r.indexOf("=");if(s===-1)continue;let o=r.slice(0,s).trim(),i=r.slice(s+1).trim();if(i.startsWith('"')&&i.endsWith('"')||i.startsWith("'")&&i.endsWith("'"))i=i.slice(1,-1);t[o]=i}return t}function Xi(e){if(!qn(e))return{};try{return Ll(gr(e,"utf8"))}catch{return{}}}function pr(e,t){let n=Dr(),r=e;while(!0){for(let i of[$t(r,".slack-term",".env.local"),$t(r,".env.local")]){let a=Xi(i);for(let c of t)if(a[c])return a[c]}if(r===n)break;let o=mr(r);if(o===r)break;r=o}let s=Xi($t(n,".slack-term",".env.local"));for(let o of t)if(s[o])return s[o];return}function yr(){let e=un(),t=Ht(Yn()),n=Ht(Xn()),r=t??n;return Object.entries(e.profiles).map(([s,o])=>({name:s,profile:o,current:s===r}))}function Zi(e){let t=un();if(!(e in t.profiles))throw Error(`Profile not found: ${e}`);delete t.profiles[e],jl(t)}function Qi(e,t=!1){let n=un();if(!(e in n.profiles))throw Error(`Profile not found: ${e}`);if(t)Yi(Xn(),e);else Yi(Yn(),e)}function ln(e){let n=un().profiles,r=Object.keys(n);if(e){let u=n[e];if(!u)throw Error(`Workspace "${e}" not found. Available: ${r.join(", ")||"(none)"}`);return u.token}if(process.env.SLACK_TOKEN)return process.env.SLACK_TOKEN;let s=process.env.SLACK_BOT_TOKEN??process.env.SLACK_MCP_XOXP_TOKEN;if(s&&r.length===0)return s;if(s&&r.length>0){let u=pr(process.cwd(),["SLACK_BOT_TOKEN","SLACK_MCP_XOXP_TOKEN"]);if(s!==u){if(!globalThis.__slackEnvWarnShown)globalThis.__slackEnvWarnShown=!0,console.error(`Warning: SLACK_MCP_XOXP_TOKEN / SLACK_BOT_TOKEN is set but workspace profiles exist — using profiles.
86
- `+" Migrate to SLACK_TOKEN=... or remove from your shell config.")}}let o=pr(process.cwd(),["SLACK_TOKEN"]);if(o)return o;let i=process.env.SLACK_WORKSPACE;if(i){let u=n[i];if(!u)throw Error(`Workspace "${i}" not found. Available: ${r.join(", ")||"(none)"}`);return u.token}let a=Ht(Yn());if(a){let u=n[a];if(!u)throw Error(`Workspace "${a}" (from .slack-cli/workspace) not found in profiles.`);return u.token}let c=Ht(Xn());if(c){let u=n[c];if(!u)throw Error(`Workspace "${c}" (from ~/.slack-cli/workspace) not found in profiles.`);return u.token}if(r.length>0)throw Error(`Workspace not selected (${r.join(", ")} available).
76
+ `)}`:"";t.fail(s("Missing required argument: %s","Missing required arguments: %s",Object.keys(h).length,Object.keys(h).join(", ")+p))}},o.unknownArguments=function(l,d,h,m,p=!0){var y;let E=e.getInternalMethods().getCommandInstance().getCommands(),F=[],A=e.getInternalMethods().getContext();if(Object.keys(l).forEach((k)=>{if(!Ai.includes(k)&&!Object.prototype.hasOwnProperty.call(h,k)&&!Object.prototype.hasOwnProperty.call(e.getInternalMethods().getParseContext(),k)&&!o.isValidAndSomeAliasIsNotNew(k,d))F.push(k)}),p&&(A.commands.length>0||E.length>0||m))l._.slice(A.commands.length).forEach((k)=>{if(!E.includes(""+k))F.push(""+k)});if(p){let B=((y=e.getDemandedCommands()._)===null||y===void 0?void 0:y.max)||0,I=A.commands.length+B;if(I<l._.length)l._.slice(I).forEach((R)=>{if(R=String(R),!A.commands.includes(R)&&!F.includes(R))F.push(R)})}if(F.length)t.fail(s("Unknown argument: %s","Unknown arguments: %s",F.length,F.map((k)=>k.trim()?k:`"${k}"`).join(", ")))},o.unknownCommands=function(l){let d=e.getInternalMethods().getCommandInstance().getCommands(),h=[],m=e.getInternalMethods().getContext();if(m.commands.length>0||d.length>0)l._.slice(m.commands.length).forEach((p)=>{if(!d.includes(""+p))h.push(""+p)});if(h.length>0)return t.fail(s("Unknown command: %s","Unknown commands: %s",h.length,h.join(", "))),!0;else return!1},o.isValidAndSomeAliasIsNotNew=function(l,d){if(!Object.prototype.hasOwnProperty.call(d,l))return!1;let h=e.parsed.newAliases;return[l,...d[l]].some((m)=>!Object.prototype.hasOwnProperty.call(h,m)||!h[l])},o.limitedChoices=function(l){let d=e.getOptions(),h={};if(!Object.keys(d.choices).length)return;Object.keys(l).forEach((y)=>{if(Ai.indexOf(y)===-1&&Object.prototype.hasOwnProperty.call(d.choices,y))[].concat(l[y]).forEach((E)=>{if(d.choices[y].indexOf(E)===-1&&E!==void 0)h[y]=(h[y]||[]).concat(E)})});let m=Object.keys(h);if(!m.length)return;let p=r("Invalid values:");m.forEach((y)=>{p+=`
77
+ ${r("Argument: %s, Given: %s, Choices: %s",y,t.stringifiedValues(h[y]),t.stringifiedValues(d.choices[y]))}`}),t.fail(p)};let i={};o.implies=function(l,d){if(N("<string|object> [array|number|string]",[l,d],arguments.length),typeof l==="object")Object.keys(l).forEach((h)=>{o.implies(h,l[h])});else{if(e.global(l),!i[l])i[l]=[];if(Array.isArray(d))d.forEach((h)=>o.implies(l,h));else Ce(d,void 0,n),i[l].push(d)}},o.getImplied=function(){return i};function a(f,l){let d=Number(l);if(l=isNaN(d)?l:d,typeof l==="number")l=f._.length>=l;else if(l.match(/^--no-.+/))l=l.match(/^--no-(.+)/)[1],l=!Object.prototype.hasOwnProperty.call(f,l);else l=Object.prototype.hasOwnProperty.call(f,l);return l}o.implications=function(l){let d=[];if(Object.keys(i).forEach((h)=>{let m=h;(i[h]||[]).forEach((p)=>{let y=m,E=p;if(y=a(l,y),p=a(l,p),y&&!p)d.push(` ${m} -> ${E}`)})}),d.length){let h=`${r("Implications failed:")}
78
+ `;d.forEach((m)=>{h+=m}),t.fail(h)}};let c={};o.conflicts=function(l,d){if(N("<string|object> [array|string]",[l,d],arguments.length),typeof l==="object")Object.keys(l).forEach((h)=>{o.conflicts(h,l[h])});else{if(e.global(l),!c[l])c[l]=[];if(Array.isArray(d))d.forEach((h)=>o.conflicts(l,h));else c[l].push(d)}},o.getConflicting=()=>c,o.conflicting=function(l){if(Object.keys(l).forEach((d)=>{if(c[d])c[d].forEach((h)=>{if(h&&l[d]!==void 0&&l[h]!==void 0)t.fail(r("Arguments %s and %s are mutually exclusive",d,h))})}),e.getInternalMethods().getParserConfiguration()["strip-dashed"])Object.keys(c).forEach((d)=>{c[d].forEach((h)=>{if(h&&l[n.Parser.camelCase(d)]!==void 0&&l[n.Parser.camelCase(h)]!==void 0)t.fail(r("Arguments %s and %s are mutually exclusive",d,h))})})},o.recommendCommands=function(l,d){d=d.sort((y,E)=>E.length-y.length);let m=null,p=1/0;for(let y=0,E;(E=d[y])!==void 0;y++){let F=Si(l,E);if(F<=3&&F<p)p=F,m=E}if(m)t.fail(r("Did you mean %s?",m))},o.reset=function(l){return i=rt(i,(d)=>!l[d]),c=rt(c,(d)=>!l[d]),o};let u=[];return o.freeze=function(){u.push({implied:i,conflicting:c})},o.unfreeze=function(){let l=u.pop();Ce(l,void 0,n),{implied:i,conflicting:c}=l},o}var rr=[],on;function an(e,t,n,r){on=r;let s={};if(Object.prototype.hasOwnProperty.call(e,"extends")){if(typeof e.extends!=="string")return s;let o=/\.json|\..*rc$/.test(e.extends),i=null;if(!o)try{i=import.meta.resolve(e.extends)}catch(a){return e}else i=Jl(t,e.extends);Kl(i),rr.push(i),s=o?JSON.parse(on.readFileSync(i,"utf8")):r.require(e.extends),delete e.extends,s=an(s,on.path.dirname(i),n,on)}return rr=[],n?Oi(s,e):Object.assign({},s,e)}function Kl(e){if(rr.indexOf(e)>-1)throw new le(`Circular extended configurations: '${e}'.`)}function Jl(e,t){return on.path.resolve(e,t)}function Oi(e,t){let n={};function r(s){return s&&typeof s==="object"&&!Array.isArray(s)}Object.assign(n,e);for(let s of Object.keys(t))if(r(t[s])&&r(n[s]))n[s]=Oi(e[s],t[s]);else n[s]=t[s];return n}var j=function(e,t,n,r,s){if(r==="m")throw TypeError("Private method is not writable");if(r==="a"&&!s)throw TypeError("Private accessor was defined without a setter");if(typeof t==="function"?e!==t||!s:!t.has(e))throw TypeError("Cannot write private member to an object whose class did not declare it");return r==="a"?s.call(e,n):s?s.value=n:t.set(e,n),n},g=function(e,t,n,r){if(n==="a"&&!r)throw TypeError("Private accessor was defined without a getter");if(typeof t==="function"?e!==t||!r:!t.has(e))throw TypeError("Cannot read private member from an object whose class did not declare it");return n==="m"?r:n==="a"?r.call(e):r?r.value:t.get(e)},fe,yt,cn,xe,Ae,Nn,it,bt,jn,Pe,Ln,Re,Ye,$e,Me,Wn,wt,me,K,Un,Kn,Oe,Ft,Jt,Ct,at,Jn,H,Et,xt,_t,G,zn,Xe,ce;function Xi(e){return(t=[],n=e.process.cwd(),r)=>{let s=new Vi(t,n,r,e);return Object.defineProperty(s,"argv",{get:()=>s.parse(),enumerable:!0}),s.help(),s.version(),s}}var Ii=Symbol("copyDoubleDash"),Ti=Symbol("copyDoubleDash"),or=Symbol("deleteFromParserHintObject"),Pi=Symbol("emitWarning"),Ri=Symbol("freeze"),Mi=Symbol("getDollarZero"),kt=Symbol("getParserConfiguration"),Bi=Symbol("getUsageConfiguration"),ir=Symbol("guessLocale"),vi=Symbol("guessVersion"),Ni=Symbol("parsePositionalNumbers"),ar=Symbol("pkgUp"),ct=Symbol("populateParserHintArray"),zt=Symbol("populateParserHintSingleValueDictionary"),cr=Symbol("populateParserHintArrayDictionary"),ur=Symbol("populateParserHintDictionary"),lr=Symbol("sanitizeKey"),fr=Symbol("setKey"),dr=Symbol("unfreeze"),ji=Symbol("validateAsync"),Li=Symbol("getCommandInstance"),Wi=Symbol("getContext"),Ui=Symbol("getHasOutput"),Ki=Symbol("getLoggerInstance"),Ji=Symbol("getParseContext"),zi=Symbol("getUsageInstance"),Hi=Symbol("getValidationInstance"),Hn=Symbol("hasParseCallback"),qi=Symbol("isGlobalContext"),St=Symbol("postProcess"),Gi=Symbol("rebase"),pr=Symbol("reset"),un=Symbol("runYargsParserAndExecuteCommands"),hr=Symbol("runValidation"),Yi=Symbol("setHasOutput"),At=Symbol("kTrackManuallySetKeys"),zl="en_US";class Vi{constructor(e=[],t,n,r){this.customScriptName=!1,this.parsed=!1,fe.set(this,void 0),yt.set(this,void 0),cn.set(this,{commands:[],fullCommands:[]}),xe.set(this,null),Ae.set(this,null),Nn.set(this,"show-hidden"),it.set(this,null),bt.set(this,!0),jn.set(this,{}),Pe.set(this,!0),Ln.set(this,[]),Re.set(this,void 0),Ye.set(this,{}),$e.set(this,!1),Me.set(this,null),Wn.set(this,!0),wt.set(this,void 0),me.set(this,""),K.set(this,void 0),Un.set(this,void 0),Kn.set(this,{}),Oe.set(this,null),Ft.set(this,null),Jt.set(this,{}),Ct.set(this,{}),at.set(this,void 0),Jn.set(this,!1),H.set(this,void 0),Et.set(this,!1),xt.set(this,!1),_t.set(this,!1),G.set(this,void 0),zn.set(this,{}),Xe.set(this,null),ce.set(this,void 0),j(this,H,r,"f"),j(this,at,e,"f"),j(this,yt,t,"f"),j(this,Un,n,"f"),j(this,Re,new nr(this),"f"),this.$0=this[Mi](),this[pr](),j(this,fe,g(this,fe,"f"),"f"),j(this,G,g(this,G,"f"),"f"),j(this,ce,g(this,ce,"f"),"f"),j(this,K,g(this,K,"f"),"f"),g(this,K,"f").showHiddenOpt=g(this,Nn,"f"),j(this,wt,this[Ti](),"f"),g(this,H,"f").y18n.setLocale(zl)}addHelpOpt(e,t){if(N("[string|boolean] [string]",[e,t],arguments.length),g(this,Me,"f"))this[or](g(this,Me,"f")),j(this,Me,null,"f");if(e===!1&&t===void 0)return this;return j(this,Me,typeof e==="string"?e:"help","f"),this.boolean(g(this,Me,"f")),this.describe(g(this,Me,"f"),t||g(this,G,"f").deferY18nLookup("Show help")),this}help(e,t){return this.addHelpOpt(e,t)}addShowHiddenOpt(e,t){if(N("[string|boolean] [string]",[e,t],arguments.length),e===!1&&t===void 0)return this;let n=typeof e==="string"?e:g(this,Nn,"f");return this.boolean(n),this.describe(n,t||g(this,G,"f").deferY18nLookup("Show hidden options")),g(this,K,"f").showHiddenOpt=n,this}showHidden(e,t){return this.addShowHiddenOpt(e,t)}alias(e,t){return N("<object|string|array> [string|array]",[e,t],arguments.length),this[cr](this.alias.bind(this),"alias",e,t),this}array(e){return N("<array|string>",[e],arguments.length),this[ct]("array",e),this[At](e),this}boolean(e){return N("<array|string>",[e],arguments.length),this[ct]("boolean",e),this[At](e),this}check(e,t){return N("<function> [boolean]",[e,t],arguments.length),this.middleware((n,r)=>Dt(()=>e(n,r.getOptions()),(s)=>{if(!s)g(this,G,"f").fail(g(this,H,"f").y18n.__("Argument check failed: %s",e.toString()));else if(typeof s==="string"||s instanceof Error)g(this,G,"f").fail(s.toString(),s);return n},(s)=>(g(this,G,"f").fail(s.message?s.message:s.toString(),s),n)),!1,t),this}choices(e,t){return N("<object|string|array> [string|array]",[e,t],arguments.length),this[cr](this.choices.bind(this),"choices",e,t),this}coerce(e,t){if(N("<object|string|array> [function]",[e,t],arguments.length),Array.isArray(e)){if(!t)throw new le("coerce callback must be provided");for(let r of e)this.coerce(r,t);return this}else if(typeof e==="object"){for(let r of Object.keys(e))this.coerce(r,e[r]);return this}if(!t)throw new le("coerce callback must be provided");let n=e;return g(this,K,"f").key[n]=!0,g(this,Re,"f").addCoerceMiddleware((r,s)=>{var o;let i=(o=s.getAliases()[n])!==null&&o!==void 0?o:[],a=[n,...i].filter((c)=>Object.prototype.hasOwnProperty.call(r,c));if(a.length===0)return r;return Dt(()=>t(r[a[0]]),(c)=>(a.forEach((u)=>{r[u]=c}),r),(c)=>{throw new le(c.message)})},n),this}conflicts(e,t){return N("<string|object> [string|array]",[e,t],arguments.length),g(this,ce,"f").conflicts(e,t),this}config(e="config",t,n){if(N("[object|string] [string|function] [function]",[e,t,n],arguments.length),typeof e==="object"&&!Array.isArray(e))return e=an(e,g(this,yt,"f"),this[kt]()["deep-merge-config"]||!1,g(this,H,"f")),g(this,K,"f").configObjects=(g(this,K,"f").configObjects||[]).concat(e),this;if(typeof t==="function")n=t,t=void 0;return this.describe(e,t||g(this,G,"f").deferY18nLookup("Path to JSON config file")),(Array.isArray(e)?e:[e]).forEach((r)=>{g(this,K,"f").config[r]=n||!0}),this}completion(e,t,n){if(N("[string] [string|boolean|function] [function]",[e,t,n],arguments.length),typeof t==="function")n=t,t=void 0;if(j(this,Ae,e||g(this,Ae,"f")||"completion","f"),!t&&t!==!1)t="generate completion script";if(this.command(g(this,Ae,"f"),t),n)g(this,xe,"f").registerFunction(n);return this}command(e,t,n,r,s,o){return N("<string|array|object> [string|boolean] [function|object] [function] [array] [boolean|string]",[e,t,n,r,s,o],arguments.length),g(this,fe,"f").addHandler(e,t,n,r,s,o),this}commands(e,t,n,r,s,o){return this.command(e,t,n,r,s,o)}commandDir(e,t){N("<string> [object]",[e,t],arguments.length);let n=g(this,Un,"f")||g(this,H,"f").require;return g(this,fe,"f").addDirectory(e,n,g(this,H,"f").getCallerFile(),t),this}count(e){return N("<array|string>",[e],arguments.length),this[ct]("count",e),this[At](e),this}default(e,t,n){if(N("<object|string|array> [*] [string]",[e,t,n],arguments.length),n)tr(e,g(this,H,"f")),g(this,K,"f").defaultDescription[e]=n;if(typeof t==="function"){if(tr(e,g(this,H,"f")),!g(this,K,"f").defaultDescription[e])g(this,K,"f").defaultDescription[e]=g(this,G,"f").functionDescription(t);t=t.call()}return this[zt](this.default.bind(this),"default",e,t),this}defaults(e,t,n){return this.default(e,t,n)}demandCommand(e=1,t,n,r){if(N("[number] [number|string] [string|null|undefined] [string|null|undefined]",[e,t,n,r],arguments.length),typeof t!=="number")n=t,t=1/0;return this.global("_",!1),g(this,K,"f").demandedCommands._={min:e,max:t,minMsg:n,maxMsg:r},this}demand(e,t,n){if(Array.isArray(t))t.forEach((r)=>{Ce(n,!0,g(this,H,"f")),this.demandOption(r,n)}),t=1/0;else if(typeof t!=="number")n=t,t=1/0;if(typeof e==="number")Ce(n,!0,g(this,H,"f")),this.demandCommand(e,t,n,n);else if(Array.isArray(e))e.forEach((r)=>{Ce(n,!0,g(this,H,"f")),this.demandOption(r,n)});else if(typeof n==="string")this.demandOption(e,n);else if(n===!0||typeof n>"u")this.demandOption(e);return this}demandOption(e,t){return N("<object|string|array> [string]",[e,t],arguments.length),this[zt](this.demandOption.bind(this),"demandedOptions",e,t),this}deprecateOption(e,t){return N("<string> [string|boolean]",[e,t],arguments.length),g(this,K,"f").deprecatedOptions[e]=t,this}describe(e,t){return N("<object|string|array> [string]",[e,t],arguments.length),this[fr](e,!0),g(this,G,"f").describe(e,t),this}detectLocale(e){return N("<boolean>",[e],arguments.length),j(this,bt,e,"f"),this}env(e){if(N("[string|boolean]",[e],arguments.length),e===!1)delete g(this,K,"f").envPrefix;else g(this,K,"f").envPrefix=e||"";return this}epilogue(e){return N("<string>",[e],arguments.length),g(this,G,"f").epilog(e),this}epilog(e){return this.epilogue(e)}example(e,t){if(N("<string|array> [string]",[e,t],arguments.length),Array.isArray(e))e.forEach((n)=>this.example(...n));else g(this,G,"f").example(e,t);return this}exit(e,t){if(j(this,$e,!0,"f"),j(this,it,t,"f"),g(this,Pe,"f"))g(this,H,"f").process.exit(e)}exitProcess(e=!0){return N("[boolean]",[e],arguments.length),j(this,Pe,e,"f"),this}fail(e){if(N("<function|boolean>",[e],arguments.length),typeof e==="boolean"&&e!==!1)throw new le("Invalid first argument. Expected function or boolean 'false'");return g(this,G,"f").failFn(e),this}getAliases(){return this.parsed?this.parsed.aliases:{}}async getCompletion(e,t){if(N("<array> [function]",[e,t],arguments.length),!t)return new Promise((n,r)=>{g(this,xe,"f").getCompletion(e,(s,o)=>{if(s)r(s);else n(o)})});else return g(this,xe,"f").getCompletion(e,t)}getDemandedOptions(){return N([],0),g(this,K,"f").demandedOptions}getDemandedCommands(){return N([],0),g(this,K,"f").demandedCommands}getDeprecatedOptions(){return N([],0),g(this,K,"f").deprecatedOptions}getDetectLocale(){return g(this,bt,"f")}getExitProcess(){return g(this,Pe,"f")}getGroups(){return Object.assign({},g(this,Ye,"f"),g(this,Ct,"f"))}getHelp(){if(j(this,$e,!0,"f"),!g(this,G,"f").hasCachedHelpMessage()){if(!this.parsed){let t=this[un](g(this,at,"f"),void 0,void 0,0,!0);if(re(t))return t.then(()=>g(this,G,"f").help())}let e=g(this,fe,"f").runDefaultBuilderOn(this);if(re(e))return e.then(()=>g(this,G,"f").help())}return Promise.resolve(g(this,G,"f").help())}getOptions(){return g(this,K,"f")}getStrict(){return g(this,Et,"f")}getStrictCommands(){return g(this,xt,"f")}getStrictOptions(){return g(this,_t,"f")}global(e,t){if(N("<string|array> [boolean]",[e,t],arguments.length),e=[].concat(e),t!==!1)g(this,K,"f").local=g(this,K,"f").local.filter((n)=>e.indexOf(n)===-1);else e.forEach((n)=>{if(!g(this,K,"f").local.includes(n))g(this,K,"f").local.push(n)});return this}group(e,t){N("<string|array> <string>",[e,t],arguments.length);let n=g(this,Ct,"f")[t]||g(this,Ye,"f")[t];if(g(this,Ct,"f")[t])delete g(this,Ct,"f")[t];let r={};return g(this,Ye,"f")[t]=(n||[]).concat(e).filter((s)=>{if(r[s])return!1;return r[s]=!0}),this}hide(e){return N("<string>",[e],arguments.length),g(this,K,"f").hiddenOptions.push(e),this}implies(e,t){return N("<string|object> [number|string|array]",[e,t],arguments.length),g(this,ce,"f").implies(e,t),this}locale(e){if(N("[string]",[e],arguments.length),e===void 0)return this[ir](),g(this,H,"f").y18n.getLocale();return j(this,bt,!1,"f"),g(this,H,"f").y18n.setLocale(e),this}middleware(e,t,n){return g(this,Re,"f").addMiddleware(e,!!t,n)}nargs(e,t){return N("<string|object|array> [number]",[e,t],arguments.length),this[zt](this.nargs.bind(this),"narg",e,t),this}normalize(e){return N("<array|string>",[e],arguments.length),this[ct]("normalize",e),this}number(e){return N("<array|string>",[e],arguments.length),this[ct]("number",e),this[At](e),this}option(e,t){if(N("<string|object> [object]",[e,t],arguments.length),typeof e==="object")Object.keys(e).forEach((n)=>{this.options(n,e[n])});else{if(typeof t!=="object")t={};if(this[At](e),g(this,Xe,"f")&&(e==="version"||(t===null||t===void 0?void 0:t.alias)==="version"))this[Pi](['"version" is a reserved word.',"Please do one of the following:",'- Disable version with `yargs.version(false)` if using "version" as an option',"- Use the built-in `yargs.version` method instead (if applicable)","- Use a different option key","https://yargs.js.org/docs/#api-reference-version"].join(`
79
+ `),void 0,"versionWarning");if(g(this,K,"f").key[e]=!0,t.alias)this.alias(e,t.alias);let n=t.deprecate||t.deprecated;if(n)this.deprecateOption(e,n);let r=t.demand||t.required||t.require;if(r)this.demand(e,r);if(t.demandOption)this.demandOption(e,typeof t.demandOption==="string"?t.demandOption:void 0);if(t.conflicts)this.conflicts(e,t.conflicts);if("default"in t)this.default(e,t.default);if(t.implies!==void 0)this.implies(e,t.implies);if(t.nargs!==void 0)this.nargs(e,t.nargs);if(t.config)this.config(e,t.configParser);if(t.normalize)this.normalize(e);if(t.choices)this.choices(e,t.choices);if(t.coerce)this.coerce(e,t.coerce);if(t.group)this.group(e,t.group);if(t.boolean||t.type==="boolean"){if(this.boolean(e),t.alias)this.boolean(t.alias)}if(t.array||t.type==="array"){if(this.array(e),t.alias)this.array(t.alias)}if(t.number||t.type==="number"){if(this.number(e),t.alias)this.number(t.alias)}if(t.string||t.type==="string"){if(this.string(e),t.alias)this.string(t.alias)}if(t.count||t.type==="count")this.count(e);if(typeof t.global==="boolean")this.global(e,t.global);if(t.defaultDescription)g(this,K,"f").defaultDescription[e]=t.defaultDescription;if(t.skipValidation)this.skipValidation(e);let s=t.describe||t.description||t.desc,o=g(this,G,"f").getDescriptions();if(!Object.prototype.hasOwnProperty.call(o,e)||typeof s==="string")this.describe(e,s);if(t.hidden)this.hide(e);if(t.requiresArg)this.requiresArg(e)}return this}options(e,t){return this.option(e,t)}parse(e,t,n){if(N("[string|array] [function|boolean|object] [function]",[e,t,n],arguments.length),this[Ri](),typeof e>"u")e=g(this,at,"f");if(typeof t==="object")j(this,Ft,t,"f"),t=n;if(typeof t==="function")j(this,Oe,t,"f"),t=!1;if(!t)j(this,at,e,"f");if(g(this,Oe,"f"))j(this,Pe,!1,"f");let r=this[un](e,!!t),s=this.parsed;if(g(this,xe,"f").setParsed(this.parsed),re(r))return r.then((o)=>{if(g(this,Oe,"f"))g(this,Oe,"f").call(this,g(this,it,"f"),o,g(this,me,"f"));return o}).catch((o)=>{if(g(this,Oe,"f"))g(this,Oe,"f")(o,this.parsed.argv,g(this,me,"f"));throw o}).finally(()=>{this[dr](),this.parsed=s});else{if(g(this,Oe,"f"))g(this,Oe,"f").call(this,g(this,it,"f"),r,g(this,me,"f"));this[dr](),this.parsed=s}return r}parseAsync(e,t,n){let r=this.parse(e,t,n);return!re(r)?Promise.resolve(r):r}parseSync(e,t,n){let r=this.parse(e,t,n);if(re(r))throw new le(".parseSync() must not be used with asynchronous builders, handlers, or middleware");return r}parserConfiguration(e){return N("<object>",[e],arguments.length),j(this,Kn,e,"f"),this}pkgConf(e,t){N("<string> [string]",[e,t],arguments.length);let n=null,r=this[ar](t||g(this,yt,"f"));if(r[e]&&typeof r[e]==="object")n=an(r[e],t||g(this,yt,"f"),this[kt]()["deep-merge-config"]||!1,g(this,H,"f")),g(this,K,"f").configObjects=(g(this,K,"f").configObjects||[]).concat(n);return this}positional(e,t){N("<string> <object>",[e,t],arguments.length);let n=["default","defaultDescription","implies","normalize","choices","conflicts","coerce","type","describe","desc","description","alias"];t=rt(t,(o,i)=>{if(o==="type"&&!["string","number","boolean"].includes(i))return!1;return n.includes(o)});let r=g(this,cn,"f").fullCommands[g(this,cn,"f").fullCommands.length-1],s=r?g(this,fe,"f").cmdToParseOptions(r):{array:[],alias:{},default:{},demand:{}};return Ut(s).forEach((o)=>{let i=s[o];if(Array.isArray(i)){if(i.indexOf(e)!==-1)t[o]=!0}else if(i[e]&&!(o in t))t[o]=i[e]}),this.group(e,g(this,G,"f").getPositionalGroupName()),this.option(e,t)}recommendCommands(e=!0){return N("[boolean]",[e],arguments.length),j(this,Jn,e,"f"),this}required(e,t,n){return this.demand(e,t,n)}require(e,t,n){return this.demand(e,t,n)}requiresArg(e){if(N("<array|string|object> [number]",[e],arguments.length),typeof e==="string"&&g(this,K,"f").narg[e])return this;else this[zt](this.requiresArg.bind(this),"narg",e,NaN);return this}showCompletionScript(e,t){return N("[string] [string]",[e,t],arguments.length),e=e||this.$0,g(this,wt,"f").log(g(this,xe,"f").generateCompletionScript(e,t||g(this,Ae,"f")||"completion")),this}showHelp(e){if(N("[string|function]",[e],arguments.length),j(this,$e,!0,"f"),!g(this,G,"f").hasCachedHelpMessage()){if(!this.parsed){let n=this[un](g(this,at,"f"),void 0,void 0,0,!0);if(re(n))return n.then(()=>{g(this,G,"f").showHelp(e)}),this}let t=g(this,fe,"f").runDefaultBuilderOn(this);if(re(t))return t.then(()=>{g(this,G,"f").showHelp(e)}),this}return g(this,G,"f").showHelp(e),this}scriptName(e){return this.customScriptName=!0,this.$0=e,this}showHelpOnFail(e,t){return N("[boolean|string] [string]",[e,t],arguments.length),g(this,G,"f").showHelpOnFail(e,t),this}showVersion(e){return N("[string|function]",[e],arguments.length),g(this,G,"f").showVersion(e),this}skipValidation(e){return N("<array|string>",[e],arguments.length),this[ct]("skipValidation",e),this}strict(e){return N("[boolean]",[e],arguments.length),j(this,Et,e!==!1,"f"),this}strictCommands(e){return N("[boolean]",[e],arguments.length),j(this,xt,e!==!1,"f"),this}strictOptions(e){return N("[boolean]",[e],arguments.length),j(this,_t,e!==!1,"f"),this}string(e){return N("<array|string>",[e],arguments.length),this[ct]("string",e),this[At](e),this}terminalWidth(){return N([],0),g(this,H,"f").process.stdColumns}updateLocale(e){return this.updateStrings(e)}updateStrings(e){return N("<object>",[e],arguments.length),j(this,bt,!1,"f"),g(this,H,"f").y18n.updateLocale(e),this}usage(e,t,n,r){if(N("<string|null|undefined> [string|boolean] [function|object] [function]",[e,t,n,r],arguments.length),t!==void 0)if(Ce(e,null,g(this,H,"f")),(e||"").match(/^\$0( |$)/))return this.command(e,t,n,r);else throw new le(".usage() description must start with $0 if being used as alias for .command()");else return g(this,G,"f").usage(e),this}usageConfiguration(e){return N("<object>",[e],arguments.length),j(this,zn,e,"f"),this}version(e,t,n){if(N("[boolean|string] [string] [string]",[e,t,n],arguments.length),g(this,Xe,"f"))this[or](g(this,Xe,"f")),g(this,G,"f").version(void 0),j(this,Xe,null,"f");if(arguments.length===0)n=this[vi](),e="version";else if(arguments.length===1){if(e===!1)return this;n=e,e="version"}else if(arguments.length===2)n=t,t=void 0;return j(this,Xe,typeof e==="string"?e:"version","f"),t=t||g(this,G,"f").deferY18nLookup("Show version number"),g(this,G,"f").version(n||void 0),this.boolean(g(this,Xe,"f")),this.describe(g(this,Xe,"f"),t),this}wrap(e){return N("<number|null|undefined>",[e],arguments.length),g(this,G,"f").wrap(e),this}[(fe=new WeakMap,yt=new WeakMap,cn=new WeakMap,xe=new WeakMap,Ae=new WeakMap,Nn=new WeakMap,it=new WeakMap,bt=new WeakMap,jn=new WeakMap,Pe=new WeakMap,Ln=new WeakMap,Re=new WeakMap,Ye=new WeakMap,$e=new WeakMap,Me=new WeakMap,Wn=new WeakMap,wt=new WeakMap,me=new WeakMap,K=new WeakMap,Un=new WeakMap,Kn=new WeakMap,Oe=new WeakMap,Ft=new WeakMap,Jt=new WeakMap,Ct=new WeakMap,at=new WeakMap,Jn=new WeakMap,H=new WeakMap,Et=new WeakMap,xt=new WeakMap,_t=new WeakMap,G=new WeakMap,zn=new WeakMap,Xe=new WeakMap,ce=new WeakMap,Ii)](e){if(!e._||!e["--"])return e;e._.push.apply(e._,e["--"]);try{delete e["--"]}catch(t){}return e}[Ti](){return{log:(...e)=>{if(!this[Hn]())console.log(...e);if(j(this,$e,!0,"f"),g(this,me,"f").length)j(this,me,g(this,me,"f")+`
80
+ `,"f");j(this,me,g(this,me,"f")+e.join(" "),"f")},error:(...e)=>{if(!this[Hn]())console.error(...e);if(j(this,$e,!0,"f"),g(this,me,"f").length)j(this,me,g(this,me,"f")+`
81
+ `,"f");j(this,me,g(this,me,"f")+e.join(" "),"f")}}}[or](e){Ut(g(this,K,"f")).forEach((t)=>{if(((r)=>r==="configObjects")(t))return;let n=g(this,K,"f")[t];if(Array.isArray(n)){if(n.includes(e))n.splice(n.indexOf(e),1)}else if(typeof n==="object")delete n[e]}),delete g(this,G,"f").getDescriptions()[e]}[Pi](e,t,n){if(!g(this,jn,"f")[n])g(this,H,"f").process.emitWarning(e,t),g(this,jn,"f")[n]=!0}[Ri](){g(this,Ln,"f").push({options:g(this,K,"f"),configObjects:g(this,K,"f").configObjects.slice(0),exitProcess:g(this,Pe,"f"),groups:g(this,Ye,"f"),strict:g(this,Et,"f"),strictCommands:g(this,xt,"f"),strictOptions:g(this,_t,"f"),completionCommand:g(this,Ae,"f"),output:g(this,me,"f"),exitError:g(this,it,"f"),hasOutput:g(this,$e,"f"),parsed:this.parsed,parseFn:g(this,Oe,"f"),parseContext:g(this,Ft,"f")}),g(this,G,"f").freeze(),g(this,ce,"f").freeze(),g(this,fe,"f").freeze(),g(this,Re,"f").freeze()}[Mi](){let e="",t;if(/\b(node|iojs|electron)(\.exe)?$/.test(g(this,H,"f").process.argv()[0]))t=g(this,H,"f").process.argv().slice(1,2);else t=g(this,H,"f").process.argv().slice(0,1);if(e=t.map((n)=>{let r=this[Gi](g(this,yt,"f"),n);return n.match(/^(\/|([a-zA-Z]:)?\\)/)&&r.length<n.length?r:n}).join(" ").trim(),g(this,H,"f").getEnv("_")&&g(this,H,"f").getProcessArgvBin()===g(this,H,"f").getEnv("_"))e=g(this,H,"f").getEnv("_").replace(`${g(this,H,"f").path.dirname(g(this,H,"f").process.execPath())}/`,"");return e}[kt](){return g(this,Kn,"f")}[Bi](){return g(this,zn,"f")}[ir](){if(!g(this,bt,"f"))return;let e=g(this,H,"f").getEnv("LC_ALL")||g(this,H,"f").getEnv("LC_MESSAGES")||g(this,H,"f").getEnv("LANG")||g(this,H,"f").getEnv("LANGUAGE")||"en_US";this.locale(e.replace(/[.:].*/,""))}[vi](){return this[ar]().version||"unknown"}[Ni](e){let t=e["--"]?e["--"]:e._;for(let n=0,r;(r=t[n])!==void 0;n++)if(g(this,H,"f").Parser.looksLikeNumber(r)&&Number.isSafeInteger(Math.floor(parseFloat(`${r}`))))t[n]=Number(r);return e}[ar](e){let t=e||"*";if(g(this,Jt,"f")[t])return g(this,Jt,"f")[t];let n={};try{let r=e||g(this,H,"f").mainFilename;if(g(this,H,"f").path.extname(r))r=g(this,H,"f").path.dirname(r);let s=g(this,H,"f").findUp(r,(o,i)=>{if(i.includes("package.json"))return"package.json";else return});Ce(s,void 0,g(this,H,"f")),n=JSON.parse(g(this,H,"f").readFileSync(s,"utf8"))}catch(r){}return g(this,Jt,"f")[t]=n||{},g(this,Jt,"f")[t]}[ct](e,t){t=[].concat(t),t.forEach((n)=>{n=this[lr](n),g(this,K,"f")[e].push(n)})}[zt](e,t,n,r){this[ur](e,t,n,r,(s,o,i)=>{g(this,K,"f")[s][o]=i})}[cr](e,t,n,r){this[ur](e,t,n,r,(s,o,i)=>{g(this,K,"f")[s][o]=(g(this,K,"f")[s][o]||[]).concat(i)})}[ur](e,t,n,r,s){if(Array.isArray(n))n.forEach((o)=>{e(o,r)});else if(((o)=>typeof o==="object")(n))for(let o of Ut(n))e(o,n[o]);else s(t,this[lr](n),r)}[lr](e){if(e==="__proto__")return"___proto___";return e}[fr](e,t){return this[zt](this[fr].bind(this),"key",e,t),this}[dr](){var e,t,n,r,s,o,i,a,c,u,f,l;let d=g(this,Ln,"f").pop();Ce(d,void 0,g(this,H,"f"));let h;e=this,t=this,n=this,r=this,s=this,o=this,i=this,a=this,c=this,u=this,f=this,l=this,{options:{set value(m){j(e,K,m,"f")}}.value,configObjects:h,exitProcess:{set value(m){j(t,Pe,m,"f")}}.value,groups:{set value(m){j(n,Ye,m,"f")}}.value,output:{set value(m){j(r,me,m,"f")}}.value,exitError:{set value(m){j(s,it,m,"f")}}.value,hasOutput:{set value(m){j(o,$e,m,"f")}}.value,parsed:this.parsed,strict:{set value(m){j(i,Et,m,"f")}}.value,strictCommands:{set value(m){j(a,xt,m,"f")}}.value,strictOptions:{set value(m){j(c,_t,m,"f")}}.value,completionCommand:{set value(m){j(u,Ae,m,"f")}}.value,parseFn:{set value(m){j(f,Oe,m,"f")}}.value,parseContext:{set value(m){j(l,Ft,m,"f")}}.value}=d,g(this,K,"f").configObjects=h,g(this,G,"f").unfreeze(),g(this,ce,"f").unfreeze(),g(this,fe,"f").unfreeze(),g(this,Re,"f").unfreeze()}[ji](e,t){return Dt(t,(n)=>(e(n),n))}getInternalMethods(){return{getCommandInstance:this[Li].bind(this),getContext:this[Wi].bind(this),getHasOutput:this[Ui].bind(this),getLoggerInstance:this[Ki].bind(this),getParseContext:this[Ji].bind(this),getParserConfiguration:this[kt].bind(this),getUsageConfiguration:this[Bi].bind(this),getUsageInstance:this[zi].bind(this),getValidationInstance:this[Hi].bind(this),hasParseCallback:this[Hn].bind(this),isGlobalContext:this[qi].bind(this),postProcess:this[St].bind(this),reset:this[pr].bind(this),runValidation:this[hr].bind(this),runYargsParserAndExecuteCommands:this[un].bind(this),setHasOutput:this[Yi].bind(this)}}[Li](){return g(this,fe,"f")}[Wi](){return g(this,cn,"f")}[Ui](){return g(this,$e,"f")}[Ki](){return g(this,wt,"f")}[Ji](){return g(this,Ft,"f")||{}}[zi](){return g(this,G,"f")}[Hi](){return g(this,ce,"f")}[Hn](){return!!g(this,Oe,"f")}[qi](){return g(this,Wn,"f")}[St](e,t,n,r){if(n)return e;if(re(e))return e;if(!t)e=this[Ii](e);if(this[kt]()["parse-positional-numbers"]||this[kt]()["parse-positional-numbers"]===void 0)e=this[Ni](e);if(r)e=mt(e,this,g(this,Re,"f").getMiddleware(),!1);return e}[pr](e={}){j(this,K,g(this,K,"f")||{},"f");let t={};t.local=g(this,K,"f").local||[],t.configObjects=g(this,K,"f").configObjects||[];let n={};t.local.forEach((o)=>{n[o]=!0,(e[o]||[]).forEach((i)=>{n[i]=!0})}),Object.assign(g(this,Ct,"f"),Object.keys(g(this,Ye,"f")).reduce((o,i)=>{let a=g(this,Ye,"f")[i].filter((c)=>!(c in n));if(a.length>0)o[i]=a;return o},{})),j(this,Ye,{},"f");let r=["array","boolean","string","skipValidation","count","normalize","number","hiddenOptions"],s=["narg","key","alias","default","defaultDescription","config","choices","demandedOptions","demandedCommands","deprecatedOptions"];if(r.forEach((o)=>{t[o]=(g(this,K,"f")[o]||[]).filter((i)=>!n[i])}),s.forEach((o)=>{t[o]=rt(g(this,K,"f")[o],(i)=>!n[i])}),t.envPrefix=g(this,K,"f").envPrefix,j(this,K,t,"f"),j(this,G,g(this,G,"f")?g(this,G,"f").reset(n):Ci(this,g(this,H,"f")),"f"),j(this,ce,g(this,ce,"f")?g(this,ce,"f").reset(n):$i(this,g(this,G,"f"),g(this,H,"f")),"f"),j(this,fe,g(this,fe,"f")?g(this,fe,"f").reset():bi(g(this,G,"f"),g(this,ce,"f"),g(this,Re,"f"),g(this,H,"f")),"f"),!g(this,xe,"f"))j(this,xe,ki(this,g(this,G,"f"),g(this,fe,"f"),g(this,H,"f")),"f");return g(this,Re,"f").reset(),j(this,Ae,null,"f"),j(this,me,"","f"),j(this,it,null,"f"),j(this,$e,!1,"f"),this.parsed=!1,this}[Gi](e,t){return g(this,H,"f").path.relative(e,t)}[un](e,t,n,r=0,s=!1){var o,i,a,c;let u=!!n||s;e=e||g(this,at,"f"),g(this,K,"f").__=g(this,H,"f").y18n.__,g(this,K,"f").configuration=this[kt]();let f=!!g(this,K,"f").configuration["populate--"],l=Object.assign({},g(this,K,"f").configuration,{"populate--":!0}),d=g(this,H,"f").Parser.detailed(e,Object.assign({},g(this,K,"f"),{configuration:{"parse-positional-numbers":!1,...l}})),h=Object.assign(d.argv,g(this,Ft,"f")),m=void 0,p=d.aliases,y=!1,E=!1;if(Object.keys(h).forEach((F)=>{if(F===g(this,Me,"f")&&h[F])y=!0;else if(F===g(this,Xe,"f")&&h[F])E=!0}),h.$0=this.$0,this.parsed=d,r===0)g(this,G,"f").clearCachedHelpMessage();try{if(this[ir](),t)return this[St](h,f,!!n,!1);if(g(this,Me,"f")){if([g(this,Me,"f")].concat(p[g(this,Me,"f")]||[]).filter((I)=>I.length>1).includes(""+h._[h._.length-1]))h._.pop(),y=!0}j(this,Wn,!1,"f");let F=g(this,fe,"f").getCommands(),A=((o=g(this,xe,"f"))===null||o===void 0?void 0:o.completionKey)?[(i=g(this,xe,"f"))===null||i===void 0?void 0:i.completionKey,...(c=this.getAliases()[(a=g(this,xe,"f"))===null||a===void 0?void 0:a.completionKey])!==null&&c!==void 0?c:[]].some((B)=>Object.prototype.hasOwnProperty.call(h,B)):!1,k=y||A||s;if(h._.length){if(F.length){let B;for(let I=r||0,R;h._[I]!==void 0;I++)if(R=String(h._[I]),F.includes(R)&&R!==g(this,Ae,"f")){let V=g(this,fe,"f").runCommand(R,this,d,I+1,s,y||E||s);return this[St](V,f,!!n,!1)}else if(!B&&R!==g(this,Ae,"f")){B=R;break}if(!g(this,fe,"f").hasDefaultCommand()&&g(this,Jn,"f")&&B&&!k)g(this,ce,"f").recommendCommands(B,F)}if(g(this,Ae,"f")&&h._.includes(g(this,Ae,"f"))&&!A){if(g(this,Pe,"f"))ot(!0);this.showCompletionScript(),this.exit(0)}}if(g(this,fe,"f").hasDefaultCommand()&&!k){let B=g(this,fe,"f").runCommand(null,this,d,0,s,y||E||s);return this[St](B,f,!!n,!1)}if(A){if(g(this,Pe,"f"))ot(!0);e=[].concat(e);let B=e.slice(e.indexOf(`--${g(this,xe,"f").completionKey}`)+1);return g(this,xe,"f").getCompletion(B,(I,R)=>{if(I)throw new le(I.message);(R||[]).forEach((V)=>{g(this,wt,"f").log(V)}),this.exit(0)}),this[St](h,!f,!!n,!1)}if(!g(this,$e,"f")){if(y){if(g(this,Pe,"f"))ot(!0);u=!0,this.showHelp((B)=>{g(this,wt,"f").log(B),this.exit(0)})}else if(E){if(g(this,Pe,"f"))ot(!0);u=!0,g(this,G,"f").showVersion("log"),this.exit(0)}}if(!u&&g(this,K,"f").skipValidation.length>0)u=Object.keys(h).some((B)=>g(this,K,"f").skipValidation.indexOf(B)>=0&&h[B]===!0);if(!u){if(d.error)throw new le(d.error.message);if(!A){let B=this[hr](p,{},d.error);if(!n)m=mt(h,this,g(this,Re,"f").getMiddleware(),!0);if(m=this[ji](B,m!==null&&m!==void 0?m:h),re(m)&&!n)m=m.then(()=>mt(h,this,g(this,Re,"f").getMiddleware(),!1))}}}catch(F){if(F instanceof le)g(this,G,"f").fail(F.message,F);else throw F}return this[St](m!==null&&m!==void 0?m:h,f,!!n,!0)}[hr](e,t,n,r){let s={...this.getDemandedOptions()};return(o)=>{if(n)throw new le(n.message);g(this,ce,"f").nonOptionCount(o),g(this,ce,"f").requiredArguments(o,s);let i=!1;if(g(this,xt,"f"))i=g(this,ce,"f").unknownCommands(o);if(g(this,Et,"f")&&!i)g(this,ce,"f").unknownArguments(o,e,t,!!r);else if(g(this,_t,"f"))g(this,ce,"f").unknownArguments(o,e,{},!1,!1);g(this,ce,"f").limitedChoices(o),g(this,ce,"f").implications(o),g(this,ce,"f").conflicting(o)}}[Yi](){j(this,$e,!0,"f")}[At](e){if(typeof e==="string")g(this,K,"f").key[e]=!0;else for(let t of e)g(this,K,"f").key[t]=!0}}function wi(e){return!!e&&typeof e.getInternalMethods==="function"}var Hl=Xi(er),Zi=Hl;function ql(e){return[...e.matchAll(/<https?:\/\/[^\s<>|]+(?:\|[^<>\r\n]*)?>|https?:\/\/[^\t\n\v\f\r <]+/gi)].map(([n])=>n).filter((n)=>!n.startsWith("<")&&(/[^\x00-\x7f]/.test(n)||n.includes(">")))}function qn(e,t=!1,n=console.error){let r=ql(e);if(!r.length)return;let s=`Ambiguous URL boundary: ${r.map((o)=>JSON.stringify(o)).join(", ")}. Put the URL on its own line, or wrap it as <url> / <url|label>. Use --allow-url-adjacent to warn only.`;if(!t)throw Error(s);n(`Warning: ${s}`)}import{existsSync as Gn,readFileSync as Dr,writeFileSync as gr,mkdirSync as ta}from"node:fs";import{homedir as Gl}from"node:os";import{join as $t,dirname as yr}from"node:path";function br(){return process.env.HOME||Gl()}function na(){return $t(br(),".config","slack-cli","profiles.json")}function Yn(){return $t(process.cwd(),".slack-cli","workspace")}function Xn(){return $t(br(),".slack-cli","workspace")}function ln(){let e=na();if(!Gn(e))return{profiles:{}};return JSON.parse(Dr(e,"utf8"))}function Yl(e){let t=na();ta(yr(t),{recursive:!0}),gr(t,JSON.stringify(e,null,2)+`
82
+ `)}function Ht(e){if(!Gn(e))return;return Dr(e,"utf8").trim()||void 0}function Qi(e,t){let n=yr(e);ta(n,{recursive:!0});let r=$t(n,".gitignore");if(!Gn(r))gr(r,`*
83
+ `);gr(e,t+`
84
+ `)}function Xl(e){let t={};for(let n of e.split(`
85
+ `)){let r=n.trim();if(!r||r.startsWith("#"))continue;let s=r.indexOf("=");if(s===-1)continue;let o=r.slice(0,s).trim(),i=r.slice(s+1).trim();if(i.startsWith('"')&&i.endsWith('"')||i.startsWith("'")&&i.endsWith("'"))i=i.slice(1,-1);t[o]=i}return t}function ea(e){if(!Gn(e))return{};try{return Xl(Dr(e,"utf8"))}catch{return{}}}function mr(e,t){let n=br(),r=e;while(!0){for(let i of[$t(r,".slack-term",".env.local"),$t(r,".env.local")]){let a=ea(i);for(let c of t)if(a[c])return a[c]}if(r===n)break;let o=yr(r);if(o===r)break;r=o}let s=ea($t(n,".slack-term",".env.local"));for(let o of t)if(s[o])return s[o];return}function wr(){let e=ln(),t=Ht(Yn()),n=Ht(Xn()),r=t??n;return Object.entries(e.profiles).map(([s,o])=>({name:s,profile:o,current:s===r}))}function sa(e){let t=ln();if(!(e in t.profiles))throw Error(`Profile not found: ${e}`);delete t.profiles[e],Yl(t)}function ra(e,t=!1){let n=ln();if(!(e in n.profiles))throw Error(`Profile not found: ${e}`);if(t)Qi(Xn(),e);else Qi(Yn(),e)}function fn(e){let n=ln().profiles,r=Object.keys(n);if(e){let u=n[e];if(!u)throw Error(`Workspace "${e}" not found. Available: ${r.join(", ")||"(none)"}`);return u.token}if(process.env.SLACK_TOKEN)return process.env.SLACK_TOKEN;let s=process.env.SLACK_BOT_TOKEN??process.env.SLACK_MCP_XOXP_TOKEN;if(s&&r.length===0)return s;if(s&&r.length>0){let u=mr(process.cwd(),["SLACK_BOT_TOKEN","SLACK_MCP_XOXP_TOKEN"]);if(s!==u){if(!globalThis.__slackEnvWarnShown)globalThis.__slackEnvWarnShown=!0,console.error(`Warning: SLACK_MCP_XOXP_TOKEN / SLACK_BOT_TOKEN is set but workspace profiles exist — using profiles.
86
+ `+" Migrate to SLACK_TOKEN=... or remove from your shell config.")}}let o=mr(process.cwd(),["SLACK_TOKEN"]);if(o)return o;let i=process.env.SLACK_WORKSPACE;if(i){let u=n[i];if(!u)throw Error(`Workspace "${i}" not found. Available: ${r.join(", ")||"(none)"}`);return u.token}let a=Ht(Yn());if(a){let u=n[a];if(!u)throw Error(`Workspace "${a}" (from .slack-cli/workspace) not found in profiles.`);return u.token}let c=Ht(Xn());if(c){let u=n[c];if(!u)throw Error(`Workspace "${c}" (from ~/.slack-cli/workspace) not found in profiles.`);return u.token}if(r.length>0)throw Error(`Workspace not selected (${r.join(", ")} available).
87
87
  Select locally: slack auth use <name> (writes .slack-cli/workspace)
88
88
  Select globally: slack auth use -g <name> (writes ~/.slack-cli/workspace)`);throw Error(`No Slack token found.
89
89
  Run one of:
90
90
  `+` slack auth login — paste an existing xoxp-/xoxb- token
91
91
  `+` slack auth chrome — import from Chrome browser (macOS)
92
92
  `+` slack auth app — guided Slack app creation
93
- `+" Or set SLACK_TOKEN=xoxp-... in .slack-term/.env.local")}function ut(){let e=process.env.SLACK_BOT_TOKEN;return e&&e.startsWith("xoxb-")?e:void 0}function br(e){let n=un().profiles;if(e)return n[e]?.cookie;if(process.env.SLACK_COOKIE)return process.env.SLACK_COOKIE;if(process.env.SLACK_MCP_XOXD_COOKIE)return process.env.SLACK_MCP_XOXD_COOKIE;if(process.env.SLACK_MCP_XOXP_TOKEN&&Object.keys(n).length===0)return process.env.SLACK_MCP_XOXD_COOKIE;let s=pr(process.cwd(),["SLACK_COOKIE"]);if(s)return s;let o=process.env.SLACK_WORKSPACE;if(o)return n[o]?.cookie;let i=Ht(Yn());if(i)return n[i]?.cookie;let a=Ht(Xn());if(a)return n[a]?.cookie;return}import{existsSync as Vn,readFileSync as Zn,writeFileSync as ta,mkdirSync as na}from"node:fs";import{homedir as Wl}from"node:os";import{join as qt,dirname as wr}from"node:path";function Fr(){return process.env.HOME||Wl()}function sa(){return qt(Fr(),".config","slack-cli","profiles.json")}function ra(){return qt(process.cwd(),".slack-cli","workspace")}function oa(){return qt(Fr(),".slack-cli","workspace")}function Qn(){let e=sa();if(!Vn(e))return{profiles:{}};return JSON.parse(Zn(e,"utf8"))}function ia(e){let t=sa();na(wr(t),{recursive:!0}),ta(t,JSON.stringify(e,null,2)+`
94
- `)}function Gn(e){if(!Vn(e))return;return Zn(e,"utf8").trim()||void 0}function Ul(e){let t={};for(let n of e.split(`
95
- `)){let r=n.trim();if(!r||r.startsWith("#"))continue;let s=r.indexOf("=");if(s===-1)continue;let o=r.slice(0,s).trim(),i=r.slice(s+1).trim();if(i.startsWith('"')&&i.endsWith('"')||i.startsWith("'")&&i.endsWith("'"))i=i.slice(1,-1);t[o]=i}return t}function ea(e){if(!Vn(e))return{};try{return Ul(Zn(e,"utf8"))}catch{return{}}}function Kl(e,t){let n=Fr(),r=e;while(!0){for(let i of[qt(r,".slack-term",".env.local"),qt(r,".env.local")]){let a=ea(i);for(let c of t)if(a[c])return a[c]}if(r===n)break;let o=wr(r);if(o===r)break;r=o}let s=ea(qt(n,".slack-term",".env.local"));for(let o of t)if(s[o])return s[o];return}function aa(e,t){na(wr(e),{recursive:!0});let n=Vn(e)?Zn(e,"utf8"):"",r=n?n.split(`
96
- `):[];for(let[s,o]of Object.entries(t)){let i=r.findIndex((c)=>{let u=c.trim();return u.startsWith(s+"=")||u.startsWith(s+" =")}),a=`${s}=${o}`;if(i!==-1)r[i]=a;else r.push(a)}ta(e,r.join(`
93
+ `+" Or set SLACK_TOKEN=xoxp-... in .slack-term/.env.local")}function ut(){let e=process.env.SLACK_BOT_TOKEN;return e&&e.startsWith("xoxb-")?e:void 0}function Fr(e){let n=ln().profiles;if(e)return n[e]?.cookie;if(process.env.SLACK_COOKIE)return process.env.SLACK_COOKIE;if(process.env.SLACK_MCP_XOXD_COOKIE)return process.env.SLACK_MCP_XOXD_COOKIE;if(process.env.SLACK_MCP_XOXP_TOKEN&&Object.keys(n).length===0)return process.env.SLACK_MCP_XOXD_COOKIE;let s=mr(process.cwd(),["SLACK_COOKIE"]);if(s)return s;let o=process.env.SLACK_WORKSPACE;if(o)return n[o]?.cookie;let i=Ht(Yn());if(i)return n[i]?.cookie;let a=Ht(Xn());if(a)return n[a]?.cookie;return}import{existsSync as Zn,readFileSync as Qn,writeFileSync as ia,mkdirSync as aa}from"node:fs";import{homedir as Vl}from"node:os";import{join as qt,dirname as Cr}from"node:path";function Er(){return process.env.HOME||Vl()}function ca(){return qt(Er(),".config","slack-cli","profiles.json")}function ua(){return qt(process.cwd(),".slack-cli","workspace")}function la(){return qt(Er(),".slack-cli","workspace")}function es(){let e=ca();if(!Zn(e))return{profiles:{}};return JSON.parse(Qn(e,"utf8"))}function fa(e){let t=ca();aa(Cr(t),{recursive:!0}),ia(t,JSON.stringify(e,null,2)+`
94
+ `)}function Vn(e){if(!Zn(e))return;return Qn(e,"utf8").trim()||void 0}function Zl(e){let t={};for(let n of e.split(`
95
+ `)){let r=n.trim();if(!r||r.startsWith("#"))continue;let s=r.indexOf("=");if(s===-1)continue;let o=r.slice(0,s).trim(),i=r.slice(s+1).trim();if(i.startsWith('"')&&i.endsWith('"')||i.startsWith("'")&&i.endsWith("'"))i=i.slice(1,-1);t[o]=i}return t}function oa(e){if(!Zn(e))return{};try{return Zl(Qn(e,"utf8"))}catch{return{}}}function Ql(e,t){let n=Er(),r=e;while(!0){for(let i of[qt(r,".slack-term",".env.local"),qt(r,".env.local")]){let a=oa(i);for(let c of t)if(a[c])return a[c]}if(r===n)break;let o=Cr(r);if(o===r)break;r=o}let s=oa(qt(n,".slack-term",".env.local"));for(let o of t)if(s[o])return s[o];return}function da(e,t){aa(Cr(e),{recursive:!0});let n=Zn(e)?Qn(e,"utf8"):"",r=n?n.split(`
96
+ `):[];for(let[s,o]of Object.entries(t)){let i=r.findIndex((c)=>{let u=c.trim();return u.startsWith(s+"=")||u.startsWith(s+" =")}),a=`${s}=${o}`;if(i!==-1)r[i]=a;else r.push(a)}ia(e,r.join(`
97
97
  `).trimEnd()+`
98
- `)}function es(){let e=Qn(),t=Gn(ra()),n=Gn(oa()),r=t??n;return Object.entries(e.profiles).map(([s,o])=>({name:s,profile:o,current:s===r}))}function Cr(e,t){let n=Qn();n.profiles[e]=t,ia(n)}function Er(e,t){let n=Qn();if(!(e in n.profiles))throw Error(`Profile not found: ${e}`);n.profiles[e].cookie=t,ia(n)}function Yt(e){let n=Qn().profiles;if(e)return n[e]?.cookie;if(process.env.SLACK_COOKIE)return process.env.SLACK_COOKIE;if(process.env.SLACK_MCP_XOXD_COOKIE)return process.env.SLACK_MCP_XOXD_COOKIE;if(process.env.SLACK_MCP_XOXP_TOKEN&&Object.keys(n).length===0)return process.env.SLACK_MCP_XOXD_COOKIE;let s=Kl(process.cwd(),["SLACK_COOKIE"]);if(s)return s;let o=process.env.SLACK_WORKSPACE;if(o)return n[o]?.cookie;let i=Gn(ra());if(i)return n[i]?.cookie;let a=Gn(oa());if(a)return n[a]?.cookie;return}class Ke extends Error{retryAfter;constructor(e){super(`Slack rate limited — retry after ${e}s`);this.name="RateLimitError",this.retryAfter=e}}function _r(){return(process.env.SLACK_API_BASE??"https://slack.com/api").replace(/\/$/,"")}async function fa(e,t,n,r){r=e.startsWith("xoxc-")?r??Yt():void 0;let s={};if(r)s.Cookie=`d=${r}`;let o=await fetch(`${_r()}/${t}`,{...n,headers:{...n.headers??{},Authorization:`Bearer ${e}`,...s}});if(o.status===429){let a=parseInt(o.headers.get("retry-after")??"60",10);throw new Ke(isNaN(a)?60:a)}let i=await o.json();if(i.ok!==!0){let a=i.error??"unknown";if(a==="ratelimited")throw new Ke(60);if(a==="invalid_auth"&&e.startsWith("xoxc-")&&!r)throw Error(`Desktop app token (xoxc-) needs its session cookie to be accepted by the public Slack API.
98
+ `)}function ts(){let e=es(),t=Vn(ua()),n=Vn(la()),r=t??n;return Object.entries(e.profiles).map(([s,o])=>({name:s,profile:o,current:s===r}))}function xr(e,t){let n=es();n.profiles[e]=t,fa(n)}function _r(e,t){let n=es();if(!(e in n.profiles))throw Error(`Profile not found: ${e}`);n.profiles[e].cookie=t,fa(n)}function pa(){let e=process.env.SLACK_BOT_TOKEN;return e&&e.startsWith("xoxb-")?e:void 0}function Gt(e){let n=es().profiles;if(e)return n[e]?.cookie;if(process.env.SLACK_COOKIE)return process.env.SLACK_COOKIE;if(process.env.SLACK_MCP_XOXD_COOKIE)return process.env.SLACK_MCP_XOXD_COOKIE;if(process.env.SLACK_MCP_XOXP_TOKEN&&Object.keys(n).length===0)return process.env.SLACK_MCP_XOXD_COOKIE;let s=Ql(process.cwd(),["SLACK_COOKIE"]);if(s)return s;let o=process.env.SLACK_WORKSPACE;if(o)return n[o]?.cookie;let i=Vn(ua());if(i)return n[i]?.cookie;let a=Vn(la());if(a)return n[a]?.cookie;return}class Ke extends Error{retryAfter;constructor(e){super(`Slack rate limited — retry after ${e}s`);this.name="RateLimitError",this.retryAfter=e}}function Sr(){return(process.env.SLACK_API_BASE??"https://slack.com/api").replace(/\/$/,"")}async function Ar(e,t,n,r){r=e.startsWith("xoxc-")?r??Gt():void 0;let s={};if(r)s.Cookie=`d=${r}`;let o=await fetch(`${Sr()}/${t}`,{...n,headers:{...n.headers??{},Authorization:`Bearer ${e}`,...s}});if(o.status===429){let a=parseInt(o.headers.get("retry-after")??"60",10);throw new Ke(isNaN(a)?60:a)}let i=await o.json();if(i.ok!==!0){let a=i.error??"unknown";if(a==="ratelimited")throw new Ke(60);if(a==="invalid_auth"&&e.startsWith("xoxc-")&&!r)throw Error(`Desktop app token (xoxc-) needs its session cookie to be accepted by the public Slack API.
99
99
  Attach it: slack auth chrome (macOS) or slack auth firefox
100
100
  Or replace the token with an xoxp- user token:
101
- slack auth login`);if((a==="missing_scope"||a==="cannot_dm_bot")&&e.startsWith("xoxb-"))throw Error(`Slack error on ${t}: ${a} — ${a==="cannot_dm_bot"?`you're authenticated as a bot, so "@you" is the bot itself and it can't DM itself`:"this bot token lacks the user scope this action needs"}.
101
+ slack auth login`);if((a==="missing_scope"||a==="cannot_dm_bot")&&e.startsWith("xoxb-")){if(t.startsWith("agents.sessions."))throw Error(`Slack error on ${t}: ${a}. Agent sessions need a granular bot token with chat:write and app membership in the channel.`);throw Error(`Slack error on ${t}: ${a} — ${a==="cannot_dm_bot"?`you're authenticated as a bot, so "@you" is the bot itself and it can't DM itself`:"this bot token lacks the user scope this action needs"}.
102
102
  Tailing/DMing people and listing users need a user session, not a bot token.
103
103
  Switch workspace: slack auth ls then slack auth use <name>
104
- Or import your Slack desktop session: slack auth login`);throw Error(`Slack error on ${t}: ${a}`)}return i}async function Jl(e,t,n,r){let s={};if(r)s.Cookie=`d=${r}`;let o=await fetch(`${_r()}/${t}`,{...n,headers:{...n.headers??{},Authorization:`Bearer ${e}`,...s}});if(o.status===429){let a=parseInt(o.headers.get("retry-after")??"60",10);throw new Ke(isNaN(a)?60:a)}let i=await o.json();if(i.ok!==!0){let a=i.error??"unknown";if(a==="ratelimited")throw new Ke(60);if((a==="invalid_auth"||a==="not_authed")&&!e.startsWith("xoxc-"))throw Error(`The draft API requires a desktop app session token (xoxc-).
104
+ Or import your Slack desktop session: slack auth login`)}throw Error(`Slack error on ${t}: ${a}`)}return i}async function ef(e,t,n,r){let s={};if(r)s.Cookie=`d=${r}`;let o=await fetch(`${Sr()}/${t}`,{...n,headers:{...n.headers??{},Authorization:`Bearer ${e}`,...s}});if(o.status===429){let a=parseInt(o.headers.get("retry-after")??"60",10);throw new Ke(isNaN(a)?60:a)}let i=await o.json();if(i.ok!==!0){let a=i.error??"unknown";if(a==="ratelimited")throw new Ke(60);if((a==="invalid_auth"||a==="not_authed")&&!e.startsWith("xoxc-"))throw Error(`The draft API requires a desktop app session token (xoxc-).
105
105
  Import from Slack desktop: slack auth login`);if((a==="invalid_auth"||a==="not_authed")&&!r)throw Error(`drafts.list also requires the xoxd session cookie.
106
- Attach it with: slack auth chrome (macOS) or slack auth firefox`);throw Error(`Slack error on ${t}: ${a}`)}return i}function zl(e,t,n={},r){let s=new URLSearchParams({token:e,...n});return Jl(e,t,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:s.toString()},r)}function be(e,t,n,r){let s=new URLSearchParams(n).toString();return fa(e,`${t}?${s}`,{method:"GET"},r)}function kr(e,t,n,r){return fa(e,t,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(n)},r)}async function Xt(e,t){let n=await be(e,"auth.test",{},t);return{team:n.team??"",teamId:n.team_id??"",url:n.url??"",user:n.user??"",userId:n.user_id??""}}async function da(e,t){t=e.startsWith("xoxc-")?t??Yt():void 0;let n={Authorization:`Bearer ${e}`};if(t)n.Cookie=`d=${t}`;let r=await fetch(`${_r()}/auth.test`,{method:"GET",headers:n});if(r.status===429){let i=parseInt(r.headers.get("retry-after")??"60",10);throw new Ke(isNaN(i)?60:i)}let s=r.headers.get("x-oauth-scopes")??"",o=await r.json();if(o.ok!==!0)throw Error(`Slack error on auth.test: ${o.error??"unknown"}`);return{userId:o.user_id??"",user:o.user??"",botId:o.bot_id??"",team:o.team??"",url:o.url??"",scopes:s.split(",").map((i)=>i.trim()).filter(Boolean)}}async function ha(e,t,n){let r=await be(e,"bots.info",{bot:t},n);return{appId:r.bot?.app_id??"",userId:r.bot?.user_id??""}}async function dn(e,t,n=20,r,s,o,i){let a={channel:t,limit:String(n)};if(r!==void 0)a.oldest=r;if(s!==void 0)a.cursor=s;if(i)a.inclusive="true";return be(e,"conversations.history",a,o)}async function pa(e,t,n,r=50,s){return be(e,"conversations.replies",{channel:t,ts:n,limit:String(r)},s)}async function ts(e,t,n,r,s){await kr(e,"reactions.add",{channel:t,timestamp:n,name:r},s)}async function ga(e,t,n,r){return((await be(e,"reactions.get",{channel:t,timestamp:n,full:"true"},r)).message?.reactions??[]).map((o)=>({name:String(o.name??""),users:Array.isArray(o.users)?o.users.map(String):[]}))}async function ns(e,t,n,r,s){await kr(e,"reactions.remove",{channel:t,timestamp:n,name:r},s)}async function Hl(e,t,n){let s=(await kr(e,"conversations.open",{users:t},n)).channel?.id;if(!s)throw Error(`Failed to open DM with user ${t}`);return s}async function ma(e,t,n){let r="";while(!0){let s={types:"im",limit:"200"};if(r)s.cursor=r;let o=await be(e,"conversations.list",s,n);for(let i of o.channels??[])if(i.user===t)return String(i.id??"");if(r=o.response_metadata?.next_cursor??"",!r)break}return""}async function xr(e,t,n,r){let s=await ma(e,t,n);if(s)return s;let o=r?`${r} (${t})`:t;throw Error(`No existing DM with ${o}. Open it once in Slack first.`)}function fn(e){return e.toLowerCase().replace(/[-_\s]/g,"")}function ca(e,t){let n=fn(e.name??""),r=fn(e.real_name??e.profile?.real_name??""),s=fn(e.profile?.display_name??"");return n===t||r===t||!!s&&s===t}var Da=200;async function ql(e,t,n){let r=0,s=new Set,o="";while(!0){let f={limit:"200"};if(o)f.cursor=o;let l=await be(e,"users.list",f,n);for(let d of l.members??[]){if(r++,d.id)s.add(d.id);if(ca(d,t))return{id:d.id??"",workspaceCount:r,connectCount:0,skipped:0,capped:!1}}if(o=l.response_metadata?.next_cursor??"",!o)break}let i=0,a=0,c=!1,u="";while(!0){let f={types:"im",limit:"200"};if(u)f.cursor=u;let l=await be(e,"conversations.list",f,n);for(let d of l.channels??[]){let p=d.user;if(!p||s.has(p))continue;if(i>=Da){c=!0;break}s.add(p),i++;let m;try{m=(await be(e,"users.info",{user:p},n)).user}catch(h){if(h instanceof Ke)throw h;a++;continue}if(m&&ca(m,t))return{id:p,dm:String(d.id??""),workspaceCount:r,connectCount:i,skipped:a,capped:c}}if(c)break;if(u=l.response_metadata?.next_cursor??"",!u)break}return{id:"",workspaceCount:r,connectCount:i,skipped:a,capped:c}}function Yl(e,t){if(t.workspaceCount===0)return Error(`Cannot resolve ${e}: users.list returned no members at all, so nothing could have matched.
106
+ Attach it with: slack auth chrome (macOS) or slack auth firefox`);throw Error(`Slack error on ${t}: ${a}`)}return i}function tf(e,t,n={},r){let s=new URLSearchParams({token:e,...n});return ef(e,t,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:s.toString()},r)}function be(e,t,n,r){let s=new URLSearchParams(n).toString();return Ar(e,`${t}?${s}`,{method:"GET"},r)}function $r(e,t,n,r){return Ar(e,t,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(n)},r)}async function Da(e,t,n){if(!e.startsWith("xoxb-"))throw Error("Agent sessions require a bot token (xoxb); user tokens are refused.");return Ar(e,t,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(n),signal:AbortSignal.timeout(1e4)})}function pn(e,t,n){return Da(e,"agents.sessions.setStatus",{...t,status:n})}function Or(e,t,n){return Da(e,"agents.sessions.rename",{...t,title:n})}async function Yt(e,t){let n=await be(e,"auth.test",{},t);return{team:n.team??"",teamId:n.team_id??"",url:n.url??"",user:n.user??"",userId:n.user_id??""}}async function ya(e,t){t=e.startsWith("xoxc-")?t??Gt():void 0;let n={Authorization:`Bearer ${e}`};if(t)n.Cookie=`d=${t}`;let r=await fetch(`${Sr()}/auth.test`,{method:"GET",headers:n});if(r.status===429){let i=parseInt(r.headers.get("retry-after")??"60",10);throw new Ke(isNaN(i)?60:i)}let s=r.headers.get("x-oauth-scopes")??"",o=await r.json();if(o.ok!==!0)throw Error(`Slack error on auth.test: ${o.error??"unknown"}`);return{userId:o.user_id??"",user:o.user??"",botId:o.bot_id??"",team:o.team??"",url:o.url??"",scopes:s.split(",").map((i)=>i.trim()).filter(Boolean)}}async function ba(e,t,n){let r=await be(e,"bots.info",{bot:t},n);return{appId:r.bot?.app_id??"",userId:r.bot?.user_id??""}}async function hn(e,t,n=20,r,s,o,i){let a={channel:t,limit:String(n)};if(r!==void 0)a.oldest=r;if(s!==void 0)a.cursor=s;if(i)a.inclusive="true";return be(e,"conversations.history",a,o)}async function wa(e,t,n,r=50,s){return be(e,"conversations.replies",{channel:t,ts:n,limit:String(r)},s)}async function ns(e,t,n,r,s){await $r(e,"reactions.add",{channel:t,timestamp:n,name:r},s)}async function Fa(e,t,n,r){return((await be(e,"reactions.get",{channel:t,timestamp:n,full:"true"},r)).message?.reactions??[]).map((o)=>({name:String(o.name??""),users:Array.isArray(o.users)?o.users.map(String):[]}))}async function ss(e,t,n,r,s){await $r(e,"reactions.remove",{channel:t,timestamp:n,name:r},s)}async function nf(e,t,n){let s=(await $r(e,"conversations.open",{users:t},n)).channel?.id;if(!s)throw Error(`Failed to open DM with user ${t}`);return s}async function Ca(e,t,n){let r="";while(!0){let s={types:"im",limit:"200"};if(r)s.cursor=r;let o=await be(e,"conversations.list",s,n);for(let i of o.channels??[])if(i.user===t)return String(i.id??"");if(r=o.response_metadata?.next_cursor??"",!r)break}return""}async function kr(e,t,n,r){let s=await Ca(e,t,n);if(s)return s;let o=r?`${r} (${t})`:t;throw Error(`No existing DM with ${o}. Open it once in Slack first.`)}function dn(e){return e.toLowerCase().replace(/[-_\s]/g,"")}function ha(e,t){let n=dn(e.name??""),r=dn(e.real_name??e.profile?.real_name??""),s=dn(e.profile?.display_name??"");return n===t||r===t||!!s&&s===t}var Ea=200;async function sf(e,t,n){let r=0,s=new Set,o="";while(!0){let f={limit:"200"};if(o)f.cursor=o;let l=await be(e,"users.list",f,n);for(let d of l.members??[]){if(r++,d.id)s.add(d.id);if(ha(d,t))return{id:d.id??"",workspaceCount:r,connectCount:0,skipped:0,capped:!1}}if(o=l.response_metadata?.next_cursor??"",!o)break}let i=0,a=0,c=!1,u="";while(!0){let f={types:"im",limit:"200"};if(u)f.cursor=u;let l=await be(e,"conversations.list",f,n);for(let d of l.channels??[]){let h=d.user;if(!h||s.has(h))continue;if(i>=Ea){c=!0;break}s.add(h),i++;let m;try{m=(await be(e,"users.info",{user:h},n)).user}catch(p){if(p instanceof Ke)throw p;a++;continue}if(m&&ha(m,t))return{id:h,dm:String(d.id??""),workspaceCount:r,connectCount:i,skipped:a,capped:c}}if(c)break;if(u=l.response_metadata?.next_cursor??"",!u)break}return{id:"",workspaceCount:r,connectCount:i,skipped:a,capped:c}}function rf(e,t){if(t.workspaceCount===0)return Error(`Cannot resolve ${e}: users.list returned no members at all, so nothing could have matched.
107
107
  `+`That is a token or scope fault, not a wrong handle — this says nothing about whether ${e} exists.
108
- Check who you are: slack auth ls`);let n=t.connectCount?`${t.workspaceCount} workspace account(s) and ${t.connectCount} Slack Connect DM partner(s)`:`${t.workspaceCount} workspace account(s)`,r=[];if(t.capped)r.push(`stopped after ${Da} Slack Connect DM partners, so there may be more`);if(t.skipped)r.push(`${t.skipped} DM partner profile(s) could not be read and were never compared`);return Error(`User not found: ${e} — searched ${n}, none matched.
108
+ Check who you are: slack auth ls`);let n=t.connectCount?`${t.workspaceCount} workspace account(s) and ${t.connectCount} Slack Connect DM partner(s)`:`${t.workspaceCount} workspace account(s)`,r=[];if(t.capped)r.push(`stopped after ${Ea} Slack Connect DM partners, so there may be more`);if(t.skipped)r.push(`${t.skipped} DM partner profile(s) could not be read and were never compared`);return Error(`User not found: ${e} — searched ${n}, none matched.
109
109
  `+(r.length?`This search was incomplete: ${r.join("; ")}.
110
110
  `:"")+`Slack Connect people from another workspace are not in users.list, so if they never
111
111
  DMed you they cannot be found by name at all. Look them up and use their ID:
112
- slack user ls --external`)}function Sr(e){let t=e.match(/(?:app\.slack\.com\/client\/T[A-Za-z0-9]+|[A-Za-z0-9-]+\.slack\.com\/archives)\/([A-Za-z0-9]+)(?:\/p(\d{10})(\d{6}))?/);if(!t)return;let n=t[1],r=t[2]&&t[3]?`${t[2]}.${t[3]}`:void 0,s=e.indexOf("?"),o=s>=0?new URLSearchParams(e.slice(s)):void 0,i=o?.get("thread_ts")??void 0,u={channel:o?.get("cid")??void 0??n};if(r)u.ts=r;if(i)u.threadTs=i;return u}function Xl(e){return Sr(e)?.channel}function ua(e){return/^[CDG][A-Z0-9]{8,}$/.test(e)}function la(e){return/^[UW][A-Z0-9]{6,}$/.test(e)}async function ya(e,t,n){let r=Xl(t);if(r)return r;if(!t.startsWith("@")&&!t.startsWith("#")){if(ua(t))return t;if(la(t))return xr(e,t,n);throw Error(`Target must start with # or @ (or be a Slack URL/ID), got: ${t}`)}if(t.startsWith("#")&&ua(t.slice(1)))return t.slice(1);let s=t.startsWith("@"),o=t.slice(1),i=fn(o);if(s){if(la(o))return xr(e,o,n);let u=await be(e,"auth.test",{},n);if(i==="you"||i==="me"||fn(u.user??"")===i){let d=u.user_id;if(!d)throw Error("auth.test did not return user_id");return await ma(e,d,n)||Hl(e,d,n)}let l=await ql(e,i,n);if(!l.id)throw Yl(t,l);if(l.dm)return l.dm;return xr(e,l.id,n,t)}let a=o.toLowerCase(),c="";while(!0){let u={limit:"200",types:"public_channel,private_channel",exclude_archived:"true"};if(c)u.cursor=c;let f=await be(e,"conversations.list",u,n);for(let l of f.channels??[])if(String(l.name??"").toLowerCase()===a)return String(l.id??"");if(c=f.response_metadata?.next_cursor??"",!c)break}throw Error(`channel not found: ${t}`)}async function ss(e,t,n){try{let r=await be(e,"users.info",{user:t},n),s=r.user?.profile?.display_name,o=s&&s.length>0?s:r.user?.real_name??r.user?.name??t,i=r.user?.name??t;return[o,i]}catch{return[t,t]}}async function rs(e,t,n){try{let r=await be(e,"users.info",{user:t},n),s=r.user?.profile?.display_name;if(s&&s.length>0)return s;return r.user?.real_name??r.user?.name??t}catch{return t}}async function os(e,t){let n=[],r="";while(!0){let s={limit:"200"};if(r)s.cursor=r;let o=await be(e,"users.list",s,t);if(n.push(...o.members??[]),r=o.response_metadata?.next_cursor??"",!r)break}return{members:n}}async function Ar(e,t,n){let r=[],s="";while(!0){let o={channel:t,limit:"200"};if(s)o.cursor=s;let i=await be(e,"conversations.members",o,n);if(r.push(...i.members??[]),s=i.response_metadata?.next_cursor??"",!s)break}return r}async function $r(e,t,n){return be(e,"users.info",{user:t},n)}async function ba(e,t,n){return be(e,"conversations.info",{channel:t},n)}async function wa(e,t){let n=await zl(e,"client.boot",{},t),r=typeof n.url==="string"?n.url:void 0;if(!r){let o=Object.keys(n).join(", ");throw Error(`client.boot did not return a WebSocket URL. Keys: ${o}`)}let s=n.self&&typeof n.self==="object"&&!Array.isArray(n.self)?n.self:{};return{wsUrl:r,selfId:typeof s.id==="string"?s.id:""}}var Gl=["chat:write","im:write"],Vl=["im:history","im:read"];async function is(e){let{userId:t,botId:n,team:r,scopes:s}=await da(e),o="";if(n)try{o=(await ha(e,n)).appId}catch{o=""}let i=(u)=>s.includes(u),a=Gl.filter((u)=>!i(u)),c=Vl.filter((u)=>!i(u));return{canSend:a.length===0,canReceiveReplies:c.length===0,ok:a.length===0&&c.length===0,botUserId:t,appId:o,team:r,grantedScopes:s,missingSendScopes:a,missingReplyScopes:c}}function Fa(e){return["",` Bot user: ${e.botUserId||"(unknown)"}`,` App ID: ${e.appId||"(unknown — bots.info unavailable)"}`,` Granted scopes: ${e.grantedScopes.join(", ")||"(none reported)"}`]}function as(e,t=!1){let n=e.appId?`https://api.slack.com/apps/${e.appId}`:"https://api.slack.com/apps";if(e.ok){let s=["✓ Bot DM scopes are complete (send + read replies)."," Two-way replies also require the Messages Tab, which is not API-detectable.",' If recipients see "Sending messages to this app is turned off", enable it:',` ${n} → App Home → "Messages Tab" ON + "Allow users to send messages".`];return t?s:[...s,...Fa(e)]}let r=[];if(!e.canSend)r.push(`⚠ This bot CANNOT send DMs — missing scope(s): ${e.missingSendScopes.join(", ")}.`);else r.push("⚠ This bot can send DMs, but the user's replies will NOT be readable.");return r.push(" Make escalation DMs two-way:"),r.push(` 1. ${n} → App Home → enable "Messages Tab" and check`),r.push(' "Allow users to send Slash commands and messages".'),r.push(` 2. OAuth & Permissions → add Bot Token Scopes: ${[...e.missingSendScopes,...e.missingReplyScopes].join(", ")}`),r.push(" 3. Reinstall the app to apply the new scopes."),t?r:[...r,...Fa(e)]}import{createInterface as It}from"node:readline/promises";import{join as Or}from"node:path";import{homedir as cf}from"node:os";import{readdirSync as cs,readFileSync as hn,existsSync as Ot,copyFileSync as Ca,unlinkSync as Ea}from"node:fs";import{homedir as us,tmpdir as xa}from"node:os";import{join as pe,dirname as Zl}from"node:path";import{pbkdf2Sync as _a,createDecipheriv as ka}from"node:crypto";import{execSync as Sa}from"node:child_process";function Ql(){let e=us();if(process.platform==="darwin")return pe(e,"Library","Application Support","Slack","Local Storage","leveldb");if(process.platform==="linux")return pe(e,".config","Slack","Local Storage","leveldb");if(process.platform==="win32"){let t=process.env.APPDATA??pe(e,"AppData","Roaming");return pe(t,"Slack","Local Storage","leveldb")}throw Error(`Unsupported platform: ${process.platform}`)}function ef(){let e=us();if(process.platform==="darwin")return pe(e,"Library","Application Support","Slack","Cookies");return""}function tf(e,t){if(e.length<35||e.slice(0,3).toString()!=="v10")throw Error("Not a v10 encrypted cookie");let n=e.slice(19,35),r=e.slice(35),s=ka("aes-128-cbc",t,n);return s.setAutoPadding(!0),Buffer.concat([s.update(r),s.final()]).toString("utf8")}function nf(){if(process.platform!=="darwin")return;let e=ef();if(!Ot(e))return;let t;try{t=Sa('security find-generic-password -w -s "Slack Safe Storage" -a "Slack Key"',{encoding:"utf8",stdio:["ignore","pipe","ignore"]}).trimEnd()}catch{return}let n=_a(t,"saltysalt",1003,16,"sha1");try{let{default:r}=Bs("bun:sqlite"),s=new r(e,{readonly:!0}),o=s.prepare("SELECT encrypted_value FROM cookies WHERE name='d' AND host_key LIKE '%slack%'").get();if(s.close(),!o)return;return tf(Buffer.from(o.encrypted_value),n)}catch{return}}async function Aa(){let e=Ql();if(!Ot(e))throw Error(`Slack desktop app LevelDB not found at:
112
+ slack user ls --external`)}function Ir(e){let t=e.match(/(?:app\.slack\.com\/client\/T[A-Za-z0-9]+|[A-Za-z0-9-]+\.slack\.com\/archives)\/([A-Za-z0-9]+)(?:\/p(\d{10})(\d{6}))?/);if(!t)return;let n=t[1],r=t[2]&&t[3]?`${t[2]}.${t[3]}`:void 0,s=e.indexOf("?"),o=s>=0?new URLSearchParams(e.slice(s)):void 0,i=o?.get("thread_ts")??void 0,u={channel:o?.get("cid")??void 0??n};if(r)u.ts=r;if(i)u.threadTs=i;return u}function of(e){return Ir(e)?.channel}function ga(e){return/^[CDG][A-Z0-9]{8,}$/.test(e)}function ma(e){return/^[UW][A-Z0-9]{6,}$/.test(e)}async function rs(e,t,n){let r=of(t);if(r)return r;if(!t.startsWith("@")&&!t.startsWith("#")){if(ga(t))return t;if(ma(t))return kr(e,t,n);throw Error(`Target must start with # or @ (or be a Slack URL/ID), got: ${t}`)}if(t.startsWith("#")&&ga(t.slice(1)))return t.slice(1);let s=t.startsWith("@"),o=t.slice(1),i=dn(o);if(s){if(ma(o))return kr(e,o,n);let u=await be(e,"auth.test",{},n);if(i==="you"||i==="me"||dn(u.user??"")===i){let d=u.user_id;if(!d)throw Error("auth.test did not return user_id");return await Ca(e,d,n)||nf(e,d,n)}let l=await sf(e,i,n);if(!l.id)throw rf(t,l);if(l.dm)return l.dm;return kr(e,l.id,n,t)}let a=o.toLowerCase(),c="";while(!0){let u={limit:"200",types:"public_channel,private_channel",exclude_archived:"true"};if(c)u.cursor=c;let f=await be(e,"conversations.list",u,n);for(let l of f.channels??[])if(String(l.name??"").toLowerCase()===a)return String(l.id??"");if(c=f.response_metadata?.next_cursor??"",!c)break}throw Error(`channel not found: ${t}`)}async function os(e,t,n){try{let r=await be(e,"users.info",{user:t},n),s=r.user?.profile?.display_name,o=s&&s.length>0?s:r.user?.real_name??r.user?.name??t,i=r.user?.name??t;return[o,i]}catch{return[t,t]}}async function is(e,t,n){try{let r=await be(e,"users.info",{user:t},n),s=r.user?.profile?.display_name;if(s&&s.length>0)return s;return r.user?.real_name??r.user?.name??t}catch{return t}}async function as(e,t){let n=[],r="";while(!0){let s={limit:"200"};if(r)s.cursor=r;let o=await be(e,"users.list",s,t);if(n.push(...o.members??[]),r=o.response_metadata?.next_cursor??"",!r)break}return{members:n}}async function Tr(e,t,n){let r=[],s="";while(!0){let o={channel:t,limit:"200"};if(s)o.cursor=s;let i=await be(e,"conversations.members",o,n);if(r.push(...i.members??[]),s=i.response_metadata?.next_cursor??"",!s)break}return r}async function Pr(e,t,n){return be(e,"users.info",{user:t},n)}async function xa(e,t,n){return be(e,"conversations.info",{channel:t},n)}async function _a(e,t){let n=await tf(e,"client.boot",{},t),r=typeof n.url==="string"?n.url:void 0;if(!r){let o=Object.keys(n).join(", ");throw Error(`client.boot did not return a WebSocket URL. Keys: ${o}`)}let s=n.self&&typeof n.self==="object"&&!Array.isArray(n.self)?n.self:{};return{wsUrl:r,selfId:typeof s.id==="string"?s.id:""}}var af=["chat:write","im:write"],cf=["im:history","im:read"];async function cs(e){let{userId:t,botId:n,team:r,scopes:s}=await ya(e),o="";if(n)try{o=(await ba(e,n)).appId}catch{o=""}let i=(u)=>s.includes(u),a=af.filter((u)=>!i(u)),c=cf.filter((u)=>!i(u));return{canSend:a.length===0,canReceiveReplies:c.length===0,ok:a.length===0&&c.length===0,botUserId:t,appId:o,team:r,grantedScopes:s,missingSendScopes:a,missingReplyScopes:c}}function ka(e){return["",` Bot user: ${e.botUserId||"(unknown)"}`,` App ID: ${e.appId||"(unknown — bots.info unavailable)"}`,` Granted scopes: ${e.grantedScopes.join(", ")||"(none reported)"}`]}function us(e,t=!1){let n=e.appId?`https://api.slack.com/apps/${e.appId}`:"https://api.slack.com/apps";if(e.ok){let s=["✓ Bot DM scopes are complete (send + read replies)."," Two-way replies also require the Messages Tab, which is not API-detectable.",' If recipients see "Sending messages to this app is turned off", enable it:',` ${n} → App Home → "Messages Tab" ON + "Allow users to send messages".`];return t?s:[...s,...ka(e)]}let r=[];if(!e.canSend)r.push(`⚠ This bot CANNOT send DMs — missing scope(s): ${e.missingSendScopes.join(", ")}.`);else r.push("⚠ This bot can send DMs, but the user's replies will NOT be readable.");return r.push(" Make escalation DMs two-way:"),r.push(` 1. ${n} → App Home → enable "Messages Tab" and check`),r.push(' "Allow users to send Slash commands and messages".'),r.push(` 2. OAuth & Permissions → add Bot Token Scopes: ${[...e.missingSendScopes,...e.missingReplyScopes].join(", ")}`),r.push(" 3. Reinstall the app to apply the new scopes."),t?r:[...r,...ka(e)]}import{createInterface as It}from"node:readline/promises";import{join as Rr}from"node:path";import{homedir as yf}from"node:os";import{readdirSync as ls,readFileSync as gn,existsSync as Ot,copyFileSync as Sa,unlinkSync as Aa}from"node:fs";import{homedir as fs,tmpdir as $a}from"node:os";import{join as he,dirname as uf}from"node:path";import{pbkdf2Sync as Oa,createDecipheriv as Ia}from"node:crypto";import{execSync as Ta}from"node:child_process";function lf(){let e=fs();if(process.platform==="darwin")return he(e,"Library","Application Support","Slack","Local Storage","leveldb");if(process.platform==="linux")return he(e,".config","Slack","Local Storage","leveldb");if(process.platform==="win32"){let t=process.env.APPDATA??he(e,"AppData","Roaming");return he(t,"Slack","Local Storage","leveldb")}throw Error(`Unsupported platform: ${process.platform}`)}function ff(){let e=fs();if(process.platform==="darwin")return he(e,"Library","Application Support","Slack","Cookies");return""}function df(e,t){if(e.length<35||e.slice(0,3).toString()!=="v10")throw Error("Not a v10 encrypted cookie");let n=e.slice(19,35),r=e.slice(35),s=Ia("aes-128-cbc",t,n);return s.setAutoPadding(!0),Buffer.concat([s.update(r),s.final()]).toString("utf8")}function pf(){if(process.platform!=="darwin")return;let e=ff();if(!Ot(e))return;let t;try{t=Ta('security find-generic-password -w -s "Slack Safe Storage" -a "Slack Key"',{encoding:"utf8",stdio:["ignore","pipe","ignore"]}).trimEnd()}catch{return}let n=Oa(t,"saltysalt",1003,16,"sha1");try{let{default:r}=Ns("bun:sqlite"),s=new r(e,{readonly:!0}),o=s.prepare("SELECT encrypted_value FROM cookies WHERE name='d' AND host_key LIKE '%slack%'").get();if(s.close(),!o)return;return df(Buffer.from(o.encrypted_value),n)}catch{return}}async function Pa(){let e=lf();if(!Ot(e))throw Error(`Slack desktop app LevelDB not found at:
113
113
  ${e}
114
- Is Slack installed and opened at least once?`);let t=cs(e).filter((a)=>a.endsWith(".ldb")||a.endsWith(".log"));if(t.length===0)throw Error(`No LevelDB data files found in ${e}`);let n=new Map;for(let a of t){let c;try{c=hn(pe(e,a),"latin1")}catch{continue}if(a.endsWith(".log"))for(let u of c.matchAll(/"token":"(xoxc-[^"]+)"/g)){let f=u[1],l=f.split("-")[1]??"";if(!l||f.length<40)continue;let d=Math.max(0,u.index-2000),p=Math.min(c.length,u.index+2000),m=c.slice(d,p),h=m.match(/"url":"(https:\/\/[a-z0-9-]+\.slack\.com\/)"/),y=m.match(/"(?:team_name|name)":"([^"]{2,60})"/),E=n.get(l);if(!E||f.length>E.token.length){let F={token:f,teamId:l},A=h?.[1]??E?.url,k=y?.[1]??E?.teamName;if(A)F.url=A;if(k)F.teamName=k;n.set(l,F)}}else for(let u of c.matchAll(/xoxc-(\d+)-(\d+)-(\d+)/g)){let f=u[1];if(n.has(f))continue;let l=u.index+u[0].length,d=Math.min(l+10,c.length);while(l<d&&(c.charCodeAt(l)<48||c.charCodeAt(l)>57))l++;let p="";while(l<c.length&&c.charCodeAt(l)>=48&&c.charCodeAt(l)<=57)p+=c[l++];if(c[l]!=="-")continue;l++;let m="";while(l<c.length){let y=c.charCodeAt(l);if(y>=48&&y<=57||y>=97&&y<=102)m+=c[l++];else break}if(m.length<20)continue;let h=`${u[0]}${p}-${m}`;n.set(f,{token:h,teamId:f})}}let s=cs(e).filter((a)=>a.endsWith(".ldb")||a.endsWith(".log")).map((a)=>{try{return hn(pe(e,a),"latin1").replace(/[^\x20-\x7e]/g," ")}catch{return""}}).join(" ");for(let a of n.values()){if(a.teamName)continue;let c=s.indexOf(a.teamId);if(c!==-1){let u=Math.max(0,c-500),f=Math.min(s.length,c+500),d=s.slice(u,f).match(/"(?:team_name|name)":"([^"]{2,60})"/);if(d?.[1]){a.teamName=d[1];continue}}if(!a.teamName&&a.url){let u=a.url.match(/https:\/\/([a-z0-9-]+)\.slack\.com\//)?.[1];if(u){let f=s.indexOf(u);if(f!==-1){let l=Math.max(0,f-500),d=Math.min(s.length,f+500),m=s.slice(l,d).match(/"(?:team_name|name)":"([^"]{2,60})"/);if(m?.[1]){a.teamName=m[1];continue}}a.teamName=u.split("-").map((l)=>l.charAt(0).toUpperCase()+l.slice(1)).join(" ")}}}let o=nf(),i=[...n.values()];if(o)for(let a of i)a.cookie=o;return i}function sf(e,t){let n=(r,s)=>{try{let o=ka("aes-128-cbc",t,r);o.setAutoPadding(!0);let i=Buffer.concat([o.update(s),o.final()]).toString("utf8");return i.startsWith("xoxd-")?i:void 0}catch{return}};return n(Buffer.alloc(16,32),e.slice(3))??(e.length>=35?n(e.slice(19,35),e.slice(35)):void 0)}function rf(e,t){let n=(r,s)=>{if(r&&s)return`${r} (${s})`;return r||s||t};try{let s=JSON.parse(hn(pe(e,"Local State"),"utf8")).profile?.info_cache?.[t];if(s&&(s.name||s.user_name))return n(s.name??"",s.user_name??"")}catch{}try{let s=JSON.parse(hn(pe(e,t,"Preferences"),"utf8")).profile;return n(s?.name??"",s?.user_name??"")}catch{return t}}function $a(){if(process.platform!=="darwin")return{candidates:[],totalProfiles:0};let e=pe(us(),"Library","Application Support","Google","Chrome");if(!Ot(e))return{candidates:[],totalProfiles:0};let t;try{t=Sa('security find-generic-password -a Chrome -s "Chrome Safe Storage" -w',{encoding:"utf8",stdio:["ignore","pipe","ignore"]}).trimEnd()}catch{return{candidates:[],totalProfiles:0}}if(!t)return{candidates:[],totalProfiles:0};let n=_a(t,"saltysalt",1003,16,"sha1"),r=["Default",...cs(e).filter((o)=>o.startsWith("Profile "))],s=[];for(let o of r){let i=pe(e,o,"Cookies");if(!Ot(i))continue;let a=pe(xa(),`slack-chrome-cookies-${Date.now()}-${o}.db`);try{Ca(i,a);let{default:c}=Bs("bun:sqlite"),u=new c(a,{readonly:!0}),f=u.prepare("SELECT encrypted_value FROM cookies WHERE name='d' AND host_key LIKE '%slack%'").get();if(u.close(),!f)continue;let l=Buffer.from(f.encrypted_value),d=l.slice(0,3).toString();if(d==="v10"){let p=sf(l,n);if(!p)continue;s.push({profileDir:o,profileName:rf(e,o),cookie:p})}else if(d==="v20")throw Error(`Chrome cookie uses v20 (app-bound AES-256-GCM) which is not supported yet. Prefix found: ${l.slice(0,4).toString("hex")}`);else throw Error(`Unknown cookie encryption prefix: ${l.slice(0,4).toString("hex")}`)}catch(c){if(c instanceof Error&&(c.message.includes("app-bound")||c.message.includes("Unknown cookie")))throw c}finally{try{Ea(a)}catch{}}}return{candidates:s,totalProfiles:r.length}}function of(){let e=us();if(process.platform==="darwin")return pe(e,"Library","Application Support","Firefox","Profiles");if(process.platform==="linux")return pe(e,".mozilla","firefox");if(process.platform==="win32")return pe(process.env.APPDATA??pe(e,"AppData","Roaming"),"Mozilla","Firefox","Profiles");return""}function af(e){let t=pe(Zl(e),"profiles.ini"),n={};if(!Ot(t))return n;try{let r=hn(t,"utf8"),s="",o="";for(let i of r.split(`
115
- `)){let a=i.trim();if(a.startsWith("[")){s="",o="";continue}let c=a.indexOf("=");if(c===-1)continue;let u=a.slice(0,c).trim().toLowerCase(),f=a.slice(c+1).trim();if(u==="name")s=f;if(u==="path")o=f.split(/[\\/]/).pop()??f;if(s&&o)n[o]=s,s="",o=""}}catch{}return n}function Oa(){let e=of();if(!e||!Ot(e))return[];let t=af(e),n=[],r;try{r=cs(e)}catch{return[]}for(let s of r){let o=pe(e,s,"cookies.sqlite");if(!Ot(o))continue;let i=pe(xa(),`slack-firefox-cookies-${Date.now()}-${s}.db`);try{Ca(o,i);let{default:a}=Bs("bun:sqlite"),c=new a(i,{readonly:!0}),u=c.prepare("SELECT value FROM moz_cookies WHERE name='d' AND host LIKE '%slack%' LIMIT 1").get();if(c.close(),!u?.value||!u.value.startsWith("xoxd-"))continue;let f=t[s]??s;n.push({profileDir:s,profileName:f,cookie:u.value})}catch{}finally{try{Ea(i)}catch{}}}return n}var uf=["search:read","channels:history","groups:history","im:history","mpim:history","channels:read","groups:read","im:read","mpim:read","users:read","chat:write","files:write"],lf=["channels:history","groups:history","im:history","mpim:history","channels:read","groups:read","im:read","mpim:read","users:read","chat:write","files:write"];function ls(e){return e.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,"")}function ff(){return JSON.stringify({display_information:{name:"slack-term"},oauth_config:{scopes:{user:uf}},settings:{org_deploy_enabled:!1,socket_mode_enabled:!1,token_rotation_enabled:!1}},null,2)}function df(){return JSON.stringify({display_information:{name:"slack-term"},features:{bot_user:{display_name:"slack-term",always_online:!1}},oauth_config:{scopes:{bot:lf}},settings:{org_deploy_enabled:!1,socket_mode_enabled:!1,token_rotation_enabled:!1}},null,2)}async function Tt(e,t){return(await e.question(t)).trim()}async function Pt(e,t,n,r){console.error("Verifying token...");let s=await Xt(t),o=ls(s.team),i;if(n)i=n;else if(e)i=await Tt(e,`Workspace name [${o}]: `)||o;else i=o;let a=null;if(e){console.log(""),console.log("Where to save the token?"),console.log(" 1) ./.env.local (current directory) [default]"),console.log(" 2) ./.slack-term/.env.local (current directory, slack-specific)"),console.log(" 3) ~/.slack-term/.env.local (global, available everywhere)"),console.log(" 4) profiles.json (multi-workspace: slack auth use)"),console.log("");let c=await Tt(e,"Choice [1/2/3/4, Enter=1]: ");if(c==="2")a=Or(process.cwd(),".slack-term",".env.local");else if(c==="3")a=Or(cf(),".slack-term",".env.local");else if(c==="4")a=null;else a=Or(process.cwd(),".env.local")}if(a===null)if(Cr(i,{token:t,...s,...r?{cookie:r}:{}}),console.log(`Saved workspace "${i}" to profiles.json: ${s.team} (${s.user})`),process.env.SLACK_MCP_XOXP_TOKEN)console.log(""),console.log("Warning: SLACK_MCP_XOXP_TOKEN is set — it conflicts with profiles."),console.log(" Unset it: unset SLACK_MCP_XOXP_TOKEN (and remove from ~/.zshrc / ~/.bashrc)");else console.log(` Run: slack auth use -g ${i}`);else{let c={SLACK_TOKEN:t};if(r)c.SLACK_COOKIE=r;aa(a,c),console.log(`Saved token to ${a}`),console.log(" SLACK_TOKEN will be picked up automatically in this directory tree.")}return i}async function hf(e){console.error("Scanning Slack desktop app...");let t=await Aa();if(t.length===0)console.error("No sessions found. Make sure Slack is installed and you have signed in at least once."),process.exit(1);if(t.length===1&&e){let n=t[0],r=n.teamName??n.teamId;console.log(`Found workspace: ${r}${n.cookie?" (+ xoxd cookie)":""}`),await Pt(e,n.token,ls(r),n.cookie),console.log(""),console.log("Note: desktop app tokens (xoxc-) are internal Slack tokens."),console.log("If API calls fail, replace with an xoxp- token: slack auth login");return}for(let n of t){let r=n.teamName??n.teamId,s=ls(r);Cr(s,{token:n.token,team:r,teamId:n.teamId,url:n.url??"",user:"",...n.cookie?{cookie:n.cookie}:{}}),console.log(`Added workspace "${s}": ${r}${n.cookie?" + xoxd cookie":""}`)}if(console.log(""),t.length===1){let n=ls(t[0].teamName??t[0].teamId);console.log(`Run: slack auth use -g ${n}`)}else console.log("Run: slack auth ls then: slack auth use -g <name>");console.log(""),console.log("Note: desktop app tokens (xoxc-) are internal Slack tokens."),console.log("If API calls fail, replace with an xoxp- user token by re-running: slack auth login")}async function Ia(e){console.log("Which token type does your app use?"),console.log(""),console.log(" 1) User token (xoxp-) -full access including search [recommended]"),console.log(" 2) Bot token (xoxb-) -search and news unavailable"),console.log("");let n=await Tt(e,"Choice [1/2]: ")==="2"?"bot":"user",r=n==="user"?"xoxp-":"xoxb-",s=n==="user"?"User OAuth Token":"Bot User OAuth Token";console.log(""),console.log("Find your token here:"),console.log(" https://api.slack.com/apps"),console.log(" -> Select your app -> OAuth & Permissions"),console.log(` -> Copy the "${s}" (starts with ${r})`),console.log("");let o=await Tt(e,"Paste your token: ");if(!o)console.error("No token provided."),process.exit(1);if(!o.startsWith(r))console.error(`Expected a ${r} token, got: ${o.slice(0,10)}...`),process.exit(1);await Pt(e,o)}async function fs(e,t){let n=t==="user"?ff():df(),r=t==="user"?"User OAuth Token (xoxp-...)":"Bot User OAuth Token (xoxb-...)",s=t==="user"?"xoxp-":"xoxb-";if(t==="bot")console.log("Note: bot tokens cannot use search:read (user-only scope)."),console.log(" The news and search commands will not work with a bot token."),console.log("");console.log("Step 1 -Create your Slack app:"),console.log(" Open: https://api.slack.com/apps"),console.log(' Click "Create New App" -> "From a manifest" -> select your workspace'),console.log(" Paste this manifest (JSON tab):"),console.log(""),console.log("-------------------------------------------------------------"),console.log(n),console.log("-------------------------------------------------------------"),console.log(""),console.log('Step 2 -Install: "Install App" -> "Install to Workspace" -> Authorize'),console.log(""),console.log("Step 3 -Copy your token:"),console.log(` OAuth & Permissions -> ${r}`),console.log("");let o=await Tt(e,"Paste your token: ");if(!o)console.error("No token provided."),process.exit(1);if(!o.startsWith(s))console.error(`Expected a ${s} token, got: ${o.slice(0,10)}...`),process.exit(1);await Pt(e,o)}async function Ta(e={}){if(process.platform!=="darwin")console.error("Chrome cookie extraction is only supported on macOS."),process.exit(1);let t=es();if(t.length===0)console.error("No workspaces configured. Run: slack auth login"),process.exit(1);let n;if(e.workspace){if(!t.find((c)=>c.name===e.workspace))console.error(`Workspace "${e.workspace}" not found. Available: ${t.map((c)=>c.name).join(", ")}`),process.exit(1);n=e.workspace}else if(t.length===1)n=t[0].name;else{let a=t.find((c)=>c.current);if(a)n=a.name,console.log(`Using active workspace: ${n}`);else{console.log("Multiple workspaces found. Choose one:"),t.forEach((l,d)=>console.log(` ${d+1}) ${l.name} (${l.profile.team})`));let c=It({input:process.stdin,output:process.stdout}),u=(await c.question("Choice: ")).trim();c.close();let f=parseInt(u,10)-1;if(isNaN(f)||f<0||f>=t.length)console.error("Invalid choice."),process.exit(1);n=t[f].name}}if(t.find((a)=>a.name===n).profile.token.startsWith("xoxb-")){console.error(`
114
+ Is Slack installed and opened at least once?`);let t=ls(e).filter((a)=>a.endsWith(".ldb")||a.endsWith(".log"));if(t.length===0)throw Error(`No LevelDB data files found in ${e}`);let n=new Map;for(let a of t){let c;try{c=gn(he(e,a),"latin1")}catch{continue}if(a.endsWith(".log"))for(let u of c.matchAll(/"token":"(xoxc-[^"]+)"/g)){let f=u[1],l=f.split("-")[1]??"";if(!l||f.length<40)continue;let d=Math.max(0,u.index-2000),h=Math.min(c.length,u.index+2000),m=c.slice(d,h),p=m.match(/"url":"(https:\/\/[a-z0-9-]+\.slack\.com\/)"/),y=m.match(/"(?:team_name|name)":"([^"]{2,60})"/),E=n.get(l);if(!E||f.length>E.token.length){let F={token:f,teamId:l},A=p?.[1]??E?.url,k=y?.[1]??E?.teamName;if(A)F.url=A;if(k)F.teamName=k;n.set(l,F)}}else for(let u of c.matchAll(/xoxc-(\d+)-(\d+)-(\d+)/g)){let f=u[1];if(n.has(f))continue;let l=u.index+u[0].length,d=Math.min(l+10,c.length);while(l<d&&(c.charCodeAt(l)<48||c.charCodeAt(l)>57))l++;let h="";while(l<c.length&&c.charCodeAt(l)>=48&&c.charCodeAt(l)<=57)h+=c[l++];if(c[l]!=="-")continue;l++;let m="";while(l<c.length){let y=c.charCodeAt(l);if(y>=48&&y<=57||y>=97&&y<=102)m+=c[l++];else break}if(m.length<20)continue;let p=`${u[0]}${h}-${m}`;n.set(f,{token:p,teamId:f})}}let s=ls(e).filter((a)=>a.endsWith(".ldb")||a.endsWith(".log")).map((a)=>{try{return gn(he(e,a),"latin1").replace(/[^\x20-\x7e]/g," ")}catch{return""}}).join(" ");for(let a of n.values()){if(a.teamName)continue;let c=s.indexOf(a.teamId);if(c!==-1){let u=Math.max(0,c-500),f=Math.min(s.length,c+500),d=s.slice(u,f).match(/"(?:team_name|name)":"([^"]{2,60})"/);if(d?.[1]){a.teamName=d[1];continue}}if(!a.teamName&&a.url){let u=a.url.match(/https:\/\/([a-z0-9-]+)\.slack\.com\//)?.[1];if(u){let f=s.indexOf(u);if(f!==-1){let l=Math.max(0,f-500),d=Math.min(s.length,f+500),m=s.slice(l,d).match(/"(?:team_name|name)":"([^"]{2,60})"/);if(m?.[1]){a.teamName=m[1];continue}}a.teamName=u.split("-").map((l)=>l.charAt(0).toUpperCase()+l.slice(1)).join(" ")}}}let o=pf(),i=[...n.values()];if(o)for(let a of i)a.cookie=o;return i}function hf(e,t){let n=(r,s)=>{try{let o=Ia("aes-128-cbc",t,r);o.setAutoPadding(!0);let i=Buffer.concat([o.update(s),o.final()]).toString("utf8");return i.startsWith("xoxd-")?i:void 0}catch{return}};return n(Buffer.alloc(16,32),e.slice(3))??(e.length>=35?n(e.slice(19,35),e.slice(35)):void 0)}function gf(e,t){let n=(r,s)=>{if(r&&s)return`${r} (${s})`;return r||s||t};try{let s=JSON.parse(gn(he(e,"Local State"),"utf8")).profile?.info_cache?.[t];if(s&&(s.name||s.user_name))return n(s.name??"",s.user_name??"")}catch{}try{let s=JSON.parse(gn(he(e,t,"Preferences"),"utf8")).profile;return n(s?.name??"",s?.user_name??"")}catch{return t}}function Ra(){if(process.platform!=="darwin")return{candidates:[],totalProfiles:0};let e=he(fs(),"Library","Application Support","Google","Chrome");if(!Ot(e))return{candidates:[],totalProfiles:0};let t;try{t=Ta('security find-generic-password -a Chrome -s "Chrome Safe Storage" -w',{encoding:"utf8",stdio:["ignore","pipe","ignore"]}).trimEnd()}catch{return{candidates:[],totalProfiles:0}}if(!t)return{candidates:[],totalProfiles:0};let n=Oa(t,"saltysalt",1003,16,"sha1"),r=["Default",...ls(e).filter((o)=>o.startsWith("Profile "))],s=[];for(let o of r){let i=he(e,o,"Cookies");if(!Ot(i))continue;let a=he($a(),`slack-chrome-cookies-${Date.now()}-${o}.db`);try{Sa(i,a);let{default:c}=Ns("bun:sqlite"),u=new c(a,{readonly:!0}),f=u.prepare("SELECT encrypted_value FROM cookies WHERE name='d' AND host_key LIKE '%slack%'").get();if(u.close(),!f)continue;let l=Buffer.from(f.encrypted_value),d=l.slice(0,3).toString();if(d==="v10"){let h=hf(l,n);if(!h)continue;s.push({profileDir:o,profileName:gf(e,o),cookie:h})}else if(d==="v20")throw Error(`Chrome cookie uses v20 (app-bound AES-256-GCM) which is not supported yet. Prefix found: ${l.slice(0,4).toString("hex")}`);else throw Error(`Unknown cookie encryption prefix: ${l.slice(0,4).toString("hex")}`)}catch(c){if(c instanceof Error&&(c.message.includes("app-bound")||c.message.includes("Unknown cookie")))throw c}finally{try{Aa(a)}catch{}}}return{candidates:s,totalProfiles:r.length}}function mf(){let e=fs();if(process.platform==="darwin")return he(e,"Library","Application Support","Firefox","Profiles");if(process.platform==="linux")return he(e,".mozilla","firefox");if(process.platform==="win32")return he(process.env.APPDATA??he(e,"AppData","Roaming"),"Mozilla","Firefox","Profiles");return""}function Df(e){let t=he(uf(e),"profiles.ini"),n={};if(!Ot(t))return n;try{let r=gn(t,"utf8"),s="",o="";for(let i of r.split(`
115
+ `)){let a=i.trim();if(a.startsWith("[")){s="",o="";continue}let c=a.indexOf("=");if(c===-1)continue;let u=a.slice(0,c).trim().toLowerCase(),f=a.slice(c+1).trim();if(u==="name")s=f;if(u==="path")o=f.split(/[\\/]/).pop()??f;if(s&&o)n[o]=s,s="",o=""}}catch{}return n}function Ma(){let e=mf();if(!e||!Ot(e))return[];let t=Df(e),n=[],r;try{r=ls(e)}catch{return[]}for(let s of r){let o=he(e,s,"cookies.sqlite");if(!Ot(o))continue;let i=he($a(),`slack-firefox-cookies-${Date.now()}-${s}.db`);try{Sa(o,i);let{default:a}=Ns("bun:sqlite"),c=new a(i,{readonly:!0}),u=c.prepare("SELECT value FROM moz_cookies WHERE name='d' AND host LIKE '%slack%' LIMIT 1").get();if(c.close(),!u?.value||!u.value.startsWith("xoxd-"))continue;let f=t[s]??s;n.push({profileDir:s,profileName:f,cookie:u.value})}catch{}finally{try{Aa(i)}catch{}}}return n}var bf=["search:read","channels:history","groups:history","im:history","mpim:history","channels:read","groups:read","im:read","mpim:read","users:read","chat:write","files:write"],wf=["channels:history","groups:history","im:history","mpim:history","channels:read","groups:read","im:read","mpim:read","users:read","chat:write","files:write"];function ds(e){return e.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,"")}function Ff(){return JSON.stringify({display_information:{name:"slack-term"},oauth_config:{scopes:{user:bf}},settings:{org_deploy_enabled:!1,socket_mode_enabled:!1,token_rotation_enabled:!1}},null,2)}function Cf(){return JSON.stringify({display_information:{name:"slack-term"},features:{bot_user:{display_name:"slack-term",always_online:!1}},oauth_config:{scopes:{bot:wf}},settings:{org_deploy_enabled:!1,socket_mode_enabled:!1,token_rotation_enabled:!1}},null,2)}async function Tt(e,t){return(await e.question(t)).trim()}async function Pt(e,t,n,r){console.error("Verifying token...");let s=await Yt(t),o=ds(s.team),i;if(n)i=n;else if(e)i=await Tt(e,`Workspace name [${o}]: `)||o;else i=o;let a=null;if(e){console.log(""),console.log("Where to save the token?"),console.log(" 1) ./.env.local (current directory) [default]"),console.log(" 2) ./.slack-term/.env.local (current directory, slack-specific)"),console.log(" 3) ~/.slack-term/.env.local (global, available everywhere)"),console.log(" 4) profiles.json (multi-workspace: slack auth use)"),console.log("");let c=await Tt(e,"Choice [1/2/3/4, Enter=1]: ");if(c==="2")a=Rr(process.cwd(),".slack-term",".env.local");else if(c==="3")a=Rr(yf(),".slack-term",".env.local");else if(c==="4")a=null;else a=Rr(process.cwd(),".env.local")}if(a===null)if(xr(i,{token:t,...s,...r?{cookie:r}:{}}),console.log(`Saved workspace "${i}" to profiles.json: ${s.team} (${s.user})`),process.env.SLACK_MCP_XOXP_TOKEN)console.log(""),console.log("Warning: SLACK_MCP_XOXP_TOKEN is set — it conflicts with profiles."),console.log(" Unset it: unset SLACK_MCP_XOXP_TOKEN (and remove from ~/.zshrc / ~/.bashrc)");else console.log(` Run: slack auth use -g ${i}`);else{let c={SLACK_TOKEN:t};if(r)c.SLACK_COOKIE=r;da(a,c),console.log(`Saved token to ${a}`),console.log(" SLACK_TOKEN will be picked up automatically in this directory tree.")}return i}async function Ef(e){console.error("Scanning Slack desktop app...");let t=await Pa();if(t.length===0)console.error("No sessions found. Make sure Slack is installed and you have signed in at least once."),process.exit(1);if(t.length===1&&e){let n=t[0],r=n.teamName??n.teamId;console.log(`Found workspace: ${r}${n.cookie?" (+ xoxd cookie)":""}`),await Pt(e,n.token,ds(r),n.cookie),console.log(""),console.log("Note: desktop app tokens (xoxc-) are internal Slack tokens."),console.log("If API calls fail, replace with an xoxp- token: slack auth login");return}for(let n of t){let r=n.teamName??n.teamId,s=ds(r);xr(s,{token:n.token,team:r,teamId:n.teamId,url:n.url??"",user:"",...n.cookie?{cookie:n.cookie}:{}}),console.log(`Added workspace "${s}": ${r}${n.cookie?" + xoxd cookie":""}`)}if(console.log(""),t.length===1){let n=ds(t[0].teamName??t[0].teamId);console.log(`Run: slack auth use -g ${n}`)}else console.log("Run: slack auth ls then: slack auth use -g <name>");console.log(""),console.log("Note: desktop app tokens (xoxc-) are internal Slack tokens."),console.log("If API calls fail, replace with an xoxp- user token by re-running: slack auth login")}async function Ba(e){console.log("Which token type does your app use?"),console.log(""),console.log(" 1) User token (xoxp-) -full access including search [recommended]"),console.log(" 2) Bot token (xoxb-) -search and news unavailable"),console.log("");let n=await Tt(e,"Choice [1/2]: ")==="2"?"bot":"user",r=n==="user"?"xoxp-":"xoxb-",s=n==="user"?"User OAuth Token":"Bot User OAuth Token";console.log(""),console.log("Find your token here:"),console.log(" https://api.slack.com/apps"),console.log(" -> Select your app -> OAuth & Permissions"),console.log(` -> Copy the "${s}" (starts with ${r})`),console.log("");let o=await Tt(e,"Paste your token: ");if(!o)console.error("No token provided."),process.exit(1);if(!o.startsWith(r))console.error(`Expected a ${r} token, got: ${o.slice(0,10)}...`),process.exit(1);await Pt(e,o)}async function ps(e,t){let n=t==="user"?Ff():Cf(),r=t==="user"?"User OAuth Token (xoxp-...)":"Bot User OAuth Token (xoxb-...)",s=t==="user"?"xoxp-":"xoxb-";if(t==="bot")console.log("Note: bot tokens cannot use search:read (user-only scope)."),console.log(" The news and search commands will not work with a bot token."),console.log("");console.log("Step 1 -Create your Slack app:"),console.log(" Open: https://api.slack.com/apps"),console.log(' Click "Create New App" -> "From a manifest" -> select your workspace'),console.log(" Paste this manifest (JSON tab):"),console.log(""),console.log("-------------------------------------------------------------"),console.log(n),console.log("-------------------------------------------------------------"),console.log(""),console.log('Step 2 -Install: "Install App" -> "Install to Workspace" -> Authorize'),console.log(""),console.log("Step 3 -Copy your token:"),console.log(` OAuth & Permissions -> ${r}`),console.log("");let o=await Tt(e,"Paste your token: ");if(!o)console.error("No token provided."),process.exit(1);if(!o.startsWith(s))console.error(`Expected a ${s} token, got: ${o.slice(0,10)}...`),process.exit(1);await Pt(e,o)}async function va(e={}){if(process.platform!=="darwin")console.error("Chrome cookie extraction is only supported on macOS."),process.exit(1);let t=ts();if(t.length===0)console.error("No workspaces configured. Run: slack auth login"),process.exit(1);let n;if(e.workspace){if(!t.find((c)=>c.name===e.workspace))console.error(`Workspace "${e.workspace}" not found. Available: ${t.map((c)=>c.name).join(", ")}`),process.exit(1);n=e.workspace}else if(t.length===1)n=t[0].name;else{let a=t.find((c)=>c.current);if(a)n=a.name,console.log(`Using active workspace: ${n}`);else{console.log("Multiple workspaces found. Choose one:"),t.forEach((l,d)=>console.log(` ${d+1}) ${l.name} (${l.profile.team})`));let c=It({input:process.stdin,output:process.stdout}),u=(await c.question("Choice: ")).trim();c.close();let f=parseInt(u,10)-1;if(isNaN(f)||f<0||f>=t.length)console.error("Invalid choice."),process.exit(1);n=t[f].name}}if(t.find((a)=>a.name===n).profile.token.startsWith("xoxb-")){console.error(`
116
116
  Workspace "${n}" uses a bot token (xoxb-). A Chrome session cookie only
117
117
  `+`augments a user session token (xoxc-) — it has no effect on a bot token, so user-level
118
- `+"actions (tail @user, DMs, listing users) would still fail.");let a=t.filter((c)=>c.profile.token.startsWith("xoxc-")||c.profile.token.startsWith("xoxp-"));if(a.length>0)console.error(` Target a user-token workspace instead: ${a.map((c)=>c.name).join(", ")}`),console.error(` slack auth chrome -w ${a[0].name}`);else console.error(" Import your Slack desktop user session instead: slack auth login");process.exit(1)}console.log("Scanning Chrome profiles for Slack session..."),console.log("macOS may show a dialog asking for your login password — click Allow.");let s,o;try{({candidates:s,totalProfiles:o}=$a())}catch(a){console.error(`Failed: ${a instanceof Error?a.message:String(a)}`),process.exit(1)}if(s.length===0)console.error(`No Slack session found in Chrome (scanned ${o} profile${o!==1?"s":""}). Possible reasons:`),console.error(" - You denied the keychain dialog (try running again and click Allow)"),console.error(" - Chrome is not installed or has no Slack session"),console.error(" - You're not logged in to Slack in Chrome"),process.exit(1);let i;if(s.length===1&&o<=1)i=s[0].cookie,console.log(`Found session in Chrome profile: ${s[0].profileName}`);else{let a=s.length===1?`Found 1 Slack session across ${o} Chrome profiles:`:`Found ${s.length} Slack sessions across ${o} Chrome profiles:`;console.log(a),s.forEach((d,p)=>console.log(` ${p+1}) ${d.profileName} [${d.profileDir}]`)),console.log("");let c=It({input:process.stdin,output:process.stdout}),u=s.length===1?" [Enter=1]":"",f=(await c.question(`Choice [1-${s.length}]${u}: `)).trim();c.close();let l=f===""&&s.length===1?0:parseInt(f,10)-1;if(isNaN(l)||l<0||l>=s.length)console.error("Invalid choice."),process.exit(1);i=s[l].cookie}Er(n,i),console.log(`Saved xoxd cookie to workspace "${n}".`),console.log("RTM WebSocket mode is now available: slack tail @you")}async function Pa(e={}){let t=es();if(t.length===0)console.error("No workspaces configured. Run: slack auth login"),process.exit(1);let n;if(e.workspace){if(!t.find((i)=>i.name===e.workspace))console.error(`Workspace "${e.workspace}" not found. Available: ${t.map((i)=>i.name).join(", ")}`),process.exit(1);n=e.workspace}else if(t.length===1)n=t[0].name;else{let o=t.find((i)=>i.current);if(o)n=o.name,console.log(`Using active workspace: ${n}`);else{console.log("Multiple workspaces found. Choose one:"),t.forEach((u,f)=>console.log(` ${f+1}) ${u.name} (${u.profile.team})`));let i=It({input:process.stdin,output:process.stdout}),a=(await i.question("Choice: ")).trim();i.close();let c=parseInt(a,10)-1;if(isNaN(c)||c<0||c>=t.length)console.error("Invalid choice."),process.exit(1);n=t[c].name}}console.log("Scanning Firefox profiles for Slack session...");let r=Oa();if(r.length===0)console.error("No Slack session found in Firefox. Possible reasons:"),console.error(" - Firefox is not installed"),console.error(" - You are not logged in to Slack in Firefox"),process.exit(1);let s;if(r.length===1)s=r[0].cookie,console.log(`Found session in Firefox profile: ${r[0].profileName}`);else{console.log("Multiple Firefox profiles have a Slack session. Choose one:"),r.forEach((c,u)=>console.log(` ${u+1}) ${c.profileName} [${c.profileDir}]`));let o=It({input:process.stdin,output:process.stdout}),i=(await o.question("Choice: ")).trim();o.close();let a=parseInt(i,10)-1;if(isNaN(a)||a<0||a>=r.length)console.error("Invalid choice."),process.exit(1);s=r[a].cookie}Er(n,s),console.log(`Saved xoxd cookie to workspace "${n}".`),console.log("RTM WebSocket mode is now available: slack tail @you")}async function Ra(e={}){if(e.token){await Pt(null,e.token,e.name);return}if(!process.stdin.isTTY){let n=[];for await(let s of process.stdin)n.push(s);let r=Buffer.concat(n).toString("utf8").trim();if(!r)console.error("No token provided on stdin."),process.exit(1);await Pt(null,r,e.name);return}let t=It({input:process.stdin,output:process.stdout});try{await Ia(t)}finally{t.close()}}async function Ma(e={}){let t=It({input:process.stdin,output:process.stdout});try{if(e.bot!==void 0){await fs(t,e.bot?"bot":"user");return}console.log("Which token type?"),console.log(" 1) User token (xoxp-) -full access including search [default]"),console.log(" 2) Bot token (xoxb-) -search and news unavailable"),console.log("");let n=await Tt(t,"Choice [1/2, Enter=1]: ");await fs(t,n==="2"?"bot":"user")}finally{t.close()}}async function ds(e={}){let t=es();if(t.length>0){console.log("Currently logged in:");for(let{name:r,profile:s,current:o}of t)console.log(` ${o?"*":" "} ${r} ${s.team} (${s.user||"unknown"})`);console.log(""),console.log("Adding another workspace:"),console.log("")}if(e.token){await Pt(null,e.token,e.name);return}if(!process.stdin.isTTY){let r=[];for await(let o of process.stdin)r.push(o);let s=Buffer.concat(r).toString("utf8").trim();if(!s)console.error("No token provided on stdin."),process.exit(1);await Pt(null,s,e.name);return}console.log("How would you like to authenticate with Slack?"),console.log(""),console.log(" 1) Slack desktop app - import session token"),console.log(" Reads the xoxc- token directly from the installed app."),console.log(" Token: all platforms | xoxd cookie: macOS only"),console.log(""),console.log(" 2) Connect existing Slack app [recommended if you have one]"),console.log(" Paste a token from an app you already created."),console.log(""),console.log(" 3) Create new Slack app - user token (xoxp-)"),console.log(" Guided setup with manifest. Full access including search."),console.log(""),console.log(" 4) Create new Slack app - bot token (xoxb-)"),console.log(" Bot is invited to channels. Search and news unavailable."),console.log("");let n=It({input:process.stdin,output:process.stdout});try{let r=await Tt(n,"Choice [1/2/3/4]: ");if(console.log(""),r==="1")await hf(n);else if(r==="2")await Ia(n);else if(r==="3")await fs(n,"user");else if(r==="4")await fs(n,"bot");else console.error(`Invalid choice: "${r}". Enter 1, 2, 3, or 4.`),process.exit(1)}finally{n.close()}}async function hs(e,t,n,r){let s=t,o=[],i=s,a=0;while(!0){let c=i.indexOf("<@U",a);if(c===-1)break;let u=i.slice(c+2),f=u.search(/[>|]/),l=f===-1?u:u.slice(0,f);if(l.length>=9)o.push(l);a=c+1}for(let c of o){if(!n.has(c))n.set(c,await rs(e,c,r));let u=n.get(c)??c;s=s.replaceAll(`<@${c}>`,`@${u}`),s=s.replace(new RegExp(`<@${c}\\|[^>]*>`,"g"),`@${u}`)}return s}function ps(e){return e.replace(/<!date\^(\d+)\^[^|>]*(?:\|([^>]*))?>/g,(t,n,r)=>{let s=Number(n);if(!Number.isFinite(s))return r??"date";let o=new Date(s*1000);if(Number.isNaN(o.getTime()))return r??"date";let i=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],a=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],c=i[o.getUTCDay()]??"",u=a[o.getUTCMonth()]??"";return`${c}, ${u} ${String(o.getUTCDate()).padStart(2,"0")}, ${o.getUTCFullYear()}`})}function Na(e){let t=typeof e.ts==="string"?e.ts:"",n=typeof e.thread_ts==="string"?e.thread_ts:"";return n!==""&&n!==t}function pf(e){let[t,n="000000"]=e.split("."),r=new Date(Number(t)*1000),s=r.getUTCFullYear(),o=String(r.getUTCMonth()+1).padStart(2,"0"),i=String(r.getUTCDate()).padStart(2,"0"),a=String(r.getUTCHours()).padStart(2,"0"),c=String(r.getUTCMinutes()).padStart(2,"0"),u=String(r.getUTCSeconds()).padStart(2,"0"),f=n.padEnd(6,"0").slice(0,6);return`${s}-${o}-${i}T${a}:${c}:${u}.${f}`}async function gf(e,t,n){let r=typeof t.ts==="string"?t.ts:"0.000000",s=pf(r),o="?";if(typeof t.user==="string"){let l=t.user,d="@"+l;if(!n.has(d)){let[,p]=await ss(e,l);n.set(d,p)}o=n.get(d)??l}else if(typeof t.username==="string")o=t.username;let i=typeof t.text==="string"?t.text:"",c=ps(await hs(e,i,n)).split(`
118
+ `+"actions (tail @user, DMs, listing users) would still fail.");let a=t.filter((c)=>c.profile.token.startsWith("xoxc-")||c.profile.token.startsWith("xoxp-"));if(a.length>0)console.error(` Target a user-token workspace instead: ${a.map((c)=>c.name).join(", ")}`),console.error(` slack auth chrome -w ${a[0].name}`);else console.error(" Import your Slack desktop user session instead: slack auth login");process.exit(1)}console.log("Scanning Chrome profiles for Slack session..."),console.log("macOS may show a dialog asking for your login password — click Allow.");let s,o;try{({candidates:s,totalProfiles:o}=Ra())}catch(a){console.error(`Failed: ${a instanceof Error?a.message:String(a)}`),process.exit(1)}if(s.length===0)console.error(`No Slack session found in Chrome (scanned ${o} profile${o!==1?"s":""}). Possible reasons:`),console.error(" - You denied the keychain dialog (try running again and click Allow)"),console.error(" - Chrome is not installed or has no Slack session"),console.error(" - You're not logged in to Slack in Chrome"),process.exit(1);let i;if(s.length===1&&o<=1)i=s[0].cookie,console.log(`Found session in Chrome profile: ${s[0].profileName}`);else{let a=s.length===1?`Found 1 Slack session across ${o} Chrome profiles:`:`Found ${s.length} Slack sessions across ${o} Chrome profiles:`;console.log(a),s.forEach((d,h)=>console.log(` ${h+1}) ${d.profileName} [${d.profileDir}]`)),console.log("");let c=It({input:process.stdin,output:process.stdout}),u=s.length===1?" [Enter=1]":"",f=(await c.question(`Choice [1-${s.length}]${u}: `)).trim();c.close();let l=f===""&&s.length===1?0:parseInt(f,10)-1;if(isNaN(l)||l<0||l>=s.length)console.error("Invalid choice."),process.exit(1);i=s[l].cookie}_r(n,i),console.log(`Saved xoxd cookie to workspace "${n}".`),console.log("RTM WebSocket mode is now available: slack tail @you")}async function Na(e={}){let t=ts();if(t.length===0)console.error("No workspaces configured. Run: slack auth login"),process.exit(1);let n;if(e.workspace){if(!t.find((i)=>i.name===e.workspace))console.error(`Workspace "${e.workspace}" not found. Available: ${t.map((i)=>i.name).join(", ")}`),process.exit(1);n=e.workspace}else if(t.length===1)n=t[0].name;else{let o=t.find((i)=>i.current);if(o)n=o.name,console.log(`Using active workspace: ${n}`);else{console.log("Multiple workspaces found. Choose one:"),t.forEach((u,f)=>console.log(` ${f+1}) ${u.name} (${u.profile.team})`));let i=It({input:process.stdin,output:process.stdout}),a=(await i.question("Choice: ")).trim();i.close();let c=parseInt(a,10)-1;if(isNaN(c)||c<0||c>=t.length)console.error("Invalid choice."),process.exit(1);n=t[c].name}}console.log("Scanning Firefox profiles for Slack session...");let r=Ma();if(r.length===0)console.error("No Slack session found in Firefox. Possible reasons:"),console.error(" - Firefox is not installed"),console.error(" - You are not logged in to Slack in Firefox"),process.exit(1);let s;if(r.length===1)s=r[0].cookie,console.log(`Found session in Firefox profile: ${r[0].profileName}`);else{console.log("Multiple Firefox profiles have a Slack session. Choose one:"),r.forEach((c,u)=>console.log(` ${u+1}) ${c.profileName} [${c.profileDir}]`));let o=It({input:process.stdin,output:process.stdout}),i=(await o.question("Choice: ")).trim();o.close();let a=parseInt(i,10)-1;if(isNaN(a)||a<0||a>=r.length)console.error("Invalid choice."),process.exit(1);s=r[a].cookie}_r(n,s),console.log(`Saved xoxd cookie to workspace "${n}".`),console.log("RTM WebSocket mode is now available: slack tail @you")}async function ja(e={}){if(e.token){await Pt(null,e.token,e.name);return}if(!process.stdin.isTTY){let n=[];for await(let s of process.stdin)n.push(s);let r=Buffer.concat(n).toString("utf8").trim();if(!r)console.error("No token provided on stdin."),process.exit(1);await Pt(null,r,e.name);return}let t=It({input:process.stdin,output:process.stdout});try{await Ba(t)}finally{t.close()}}async function La(e={}){let t=It({input:process.stdin,output:process.stdout});try{if(e.bot!==void 0){await ps(t,e.bot?"bot":"user");return}console.log("Which token type?"),console.log(" 1) User token (xoxp-) -full access including search [default]"),console.log(" 2) Bot token (xoxb-) -search and news unavailable"),console.log("");let n=await Tt(t,"Choice [1/2, Enter=1]: ");await ps(t,n==="2"?"bot":"user")}finally{t.close()}}async function hs(e={}){let t=ts();if(t.length>0){console.log("Currently logged in:");for(let{name:r,profile:s,current:o}of t)console.log(` ${o?"*":" "} ${r} ${s.team} (${s.user||"unknown"})`);console.log(""),console.log("Adding another workspace:"),console.log("")}if(e.token){await Pt(null,e.token,e.name);return}if(!process.stdin.isTTY){let r=[];for await(let o of process.stdin)r.push(o);let s=Buffer.concat(r).toString("utf8").trim();if(!s)console.error("No token provided on stdin."),process.exit(1);await Pt(null,s,e.name);return}console.log("How would you like to authenticate with Slack?"),console.log(""),console.log(" 1) Slack desktop app - import session token"),console.log(" Reads the xoxc- token directly from the installed app."),console.log(" Token: all platforms | xoxd cookie: macOS only"),console.log(""),console.log(" 2) Connect existing Slack app [recommended if you have one]"),console.log(" Paste a token from an app you already created."),console.log(""),console.log(" 3) Create new Slack app - user token (xoxp-)"),console.log(" Guided setup with manifest. Full access including search."),console.log(""),console.log(" 4) Create new Slack app - bot token (xoxb-)"),console.log(" Bot is invited to channels. Search and news unavailable."),console.log("");let n=It({input:process.stdin,output:process.stdout});try{let r=await Tt(n,"Choice [1/2/3/4]: ");if(console.log(""),r==="1")await Ef(n);else if(r==="2")await Ba(n);else if(r==="3")await ps(n,"user");else if(r==="4")await ps(n,"bot");else console.error(`Invalid choice: "${r}". Enter 1, 2, 3, or 4.`),process.exit(1)}finally{n.close()}}async function gs(e,t,n,r){let s=t,o=[],i=s,a=0;while(!0){let c=i.indexOf("<@U",a);if(c===-1)break;let u=i.slice(c+2),f=u.search(/[>|]/),l=f===-1?u:u.slice(0,f);if(l.length>=9)o.push(l);a=c+1}for(let c of o){if(!n.has(c))n.set(c,await is(e,c,r));let u=n.get(c)??c;s=s.replaceAll(`<@${c}>`,`@${u}`),s=s.replace(new RegExp(`<@${c}\\|[^>]*>`,"g"),`@${u}`)}return s}function ms(e){return e.replace(/<!date\^(\d+)\^[^|>]*(?:\|([^>]*))?>/g,(t,n,r)=>{let s=Number(n);if(!Number.isFinite(s))return r??"date";let o=new Date(s*1000);if(Number.isNaN(o.getTime()))return r??"date";let i=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],a=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],c=i[o.getUTCDay()]??"",u=a[o.getUTCMonth()]??"";return`${c}, ${u} ${String(o.getUTCDate()).padStart(2,"0")}, ${o.getUTCFullYear()}`})}function Ua(e){let t=typeof e.ts==="string"?e.ts:"",n=typeof e.thread_ts==="string"?e.thread_ts:"";return n!==""&&n!==t}function xf(e){let[t,n="000000"]=e.split("."),r=new Date(Number(t)*1000),s=r.getUTCFullYear(),o=String(r.getUTCMonth()+1).padStart(2,"0"),i=String(r.getUTCDate()).padStart(2,"0"),a=String(r.getUTCHours()).padStart(2,"0"),c=String(r.getUTCMinutes()).padStart(2,"0"),u=String(r.getUTCSeconds()).padStart(2,"0"),f=n.padEnd(6,"0").slice(0,6);return`${s}-${o}-${i}T${a}:${c}:${u}.${f}`}async function _f(e,t,n){let r=typeof t.ts==="string"?t.ts:"0.000000",s=xf(r),o="?";if(typeof t.user==="string"){let l=t.user,d="@"+l;if(!n.has(d)){let[,h]=await os(e,l);n.set(d,h)}o=n.get(d)??l}else if(typeof t.username==="string")o=t.username;let i=typeof t.text==="string"?t.text:"",c=ms(await gs(e,i,n)).split(`
119
119
  `),u=c[0]+(c.length>1?`
120
120
  `+c.slice(1).map((l)=>` ${l}`).join(`
121
- `):""),f=Na(t)?"↳ ":"";return`${s} ${f}@${o}: ${u}`}async function mf(e,t,n,r,s,o,i,a){if(a?.aborted)return;return new Promise((c)=>{let u=new e(n);a?.addEventListener("abort",()=>{u.close(),c()},{once:!0}),u.addEventListener("open",()=>{process.stderr.write(`Connected via RTM (experimental).
122
- `)}),u.addEventListener("close",()=>c()),u.addEventListener("error",()=>c()),u.addEventListener("message",(f)=>{(async()=>{try{let l;try{l=JSON.parse(String(f.data))}catch{return}let d=typeof l.type==="string"?l.type:"";if(d==="ping"){u.send(JSON.stringify({type:"pong",reply_to:l.id??0}));return}if(d!=="message")return;if((typeof l.channel==="string"?l.channel:"")!==r)return;let m=typeof l.ts==="string"?l.ts:"";if(!m||o.has(m))return;let h=typeof l.subtype==="string"?l.subtype:"";if(h==="message_changed"||h==="message_deleted")return;if(s.thread){if((typeof l.thread_ts==="string"?l.thread_ts:m)!==s.thread&&m!==s.thread)return}if(s.watchThread&&Na(l)){if((typeof l.thread_ts==="string"?l.thread_ts:"")!==s.watchThread)return}if(s.me&&s.myUserId){if(!(typeof l.text==="string"?l.text:"").includes(`<@${s.myUserId}>`))return}if(o.add(m),o.size>1000){let E=o.values().next().value;if(E!==void 0)o.delete(E)}let y=await gf(t,l,i);process.stdout.write(y+`
121
+ `):""),f=Ua(t)?"↳ ":"";return`${s} ${f}@${o}: ${u}`}async function kf(e,t,n,r,s,o,i,a){if(a?.aborted)return;return new Promise((c)=>{let u=new e(n);a?.addEventListener("abort",()=>{u.close(),c()},{once:!0}),u.addEventListener("open",()=>{process.stderr.write(`Connected via RTM (experimental).
122
+ `)}),u.addEventListener("close",()=>c()),u.addEventListener("error",()=>c()),u.addEventListener("message",(f)=>{(async()=>{try{let l;try{l=JSON.parse(String(f.data))}catch{return}let d=typeof l.type==="string"?l.type:"";if(d==="ping"){u.send(JSON.stringify({type:"pong",reply_to:l.id??0}));return}if(d!=="message")return;if((typeof l.channel==="string"?l.channel:"")!==r)return;let m=typeof l.ts==="string"?l.ts:"";if(!m||o.has(m))return;let p=typeof l.subtype==="string"?l.subtype:"";if(p==="message_changed"||p==="message_deleted")return;if(s.thread){if((typeof l.thread_ts==="string"?l.thread_ts:m)!==s.thread&&m!==s.thread)return}if(s.watchThread&&Ua(l)){if((typeof l.thread_ts==="string"?l.thread_ts:"")!==s.watchThread)return}if(s.me&&s.myUserId){if(!(typeof l.text==="string"?l.text:"").includes(`<@${s.myUserId}>`))return}if(o.add(m),o.size>1000){let E=o.values().next().value;if(E!==void 0)o.delete(E)}let y=await _f(t,l,i);process.stdout.write(y+`
123
123
  `)}catch(l){process.stderr.write(`RTM message error: ${l instanceof Error?l.message:String(l)}
124
- `)}})()})})}var Ba=3,Df=2000,Ir={sleep:(e)=>new Promise((t)=>setTimeout(t,e)),clientBoot:wa,getWebSocket:()=>{let e=globalThis.WebSocket;return typeof e==="function"?e:void 0}};async function va(e,t,n,r,s,o,i){let a=Ir.getWebSocket();if(!a)return;for(let c=0;c<Ba;c++){if(i?.aborted)return;try{let{wsUrl:u}=await Ir.clientBoot(e,t);await mf(a,e,u,n,r,s,o,i)}catch{}if(i?.aborted)return;if(c<Ba-1)await Ir.sleep(Df)}}function ja(e){let t=e.match(/^(\d+(?:\.\d+)?)(s|m|h|d)$/);if(!t)throw Error(`Invalid --since format: "${e}" (expected e.g. 10m, 2h, 1d)`);let n=parseFloat(t[1]);switch(t[2]){case"s":return n;case"m":return n*60;case"h":return n*3600;case"d":return n*86400}}var Je={sleep:(e)=>new Promise((t)=>setTimeout(t,e)),now:()=>Date.now(),tailRTM:va};function Qe(e){return e&&typeof e==="object"&&!Array.isArray(e)?e:{}}function Tr(e){return Array.isArray(e)?e:[]}function La(e){return Number(e)||0}function Wa(e){let t=typeof e.ts==="string"?e.ts:"",n=typeof e.thread_ts==="string"?e.thread_ts:"";return n!==""&&n!==t}function yf(e){let[t,n="000000"]=e.split("."),r=new Date(Number(t)*1000),s=r.getUTCFullYear(),o=String(r.getUTCMonth()+1).padStart(2,"0"),i=String(r.getUTCDate()).padStart(2,"0"),a=String(r.getUTCHours()).padStart(2,"0"),c=String(r.getUTCMinutes()).padStart(2,"0"),u=String(r.getUTCSeconds()).padStart(2,"0"),f=n.padEnd(6,"0").slice(0,6);return`${s}-${o}-${i}T${a}:${c}:${u}.${f}`}async function bf(e,t,n,r,s){let o=typeof t.ts==="string"?t.ts:"0.000000",i=yf(o),a="?";if(typeof t.user==="string"){let m=t.user,h="@"+m;if(!n.has(h)){let[,y]=await ss(e,m,s);n.set(h,y)}a=n.get(h)??m}else if(typeof t.username==="string")a=t.username;let c=typeof t.text==="string"?t.text:"",f=ps(await hs(e,c,n,s)).split(`
124
+ `)}})()})})}var Wa=3,Sf=2000,Mr={sleep:(e)=>new Promise((t)=>setTimeout(t,e)),clientBoot:_a,getWebSocket:()=>{let e=globalThis.WebSocket;return typeof e==="function"?e:void 0}};async function Ka(e,t,n,r,s,o,i){let a=Mr.getWebSocket();if(!a)return;for(let c=0;c<Wa;c++){if(i?.aborted)return;try{let{wsUrl:u}=await Mr.clientBoot(e,t);await kf(a,e,u,n,r,s,o,i)}catch{}if(i?.aborted)return;if(c<Wa-1)await Mr.sleep(Sf)}}function Ja(e){let t=e.match(/^(\d+(?:\.\d+)?)(s|m|h|d)$/);if(!t)throw Error(`Invalid --since format: "${e}" (expected e.g. 10m, 2h, 1d)`);let n=parseFloat(t[1]);switch(t[2]){case"s":return n;case"m":return n*60;case"h":return n*3600;case"d":return n*86400}}var Je={sleep:(e)=>new Promise((t)=>setTimeout(t,e)),now:()=>Date.now(),tailRTM:Ka};function Qe(e){return e&&typeof e==="object"&&!Array.isArray(e)?e:{}}function Br(e){return Array.isArray(e)?e:[]}function za(e){return Number(e)||0}function Ha(e){let t=typeof e.ts==="string"?e.ts:"",n=typeof e.thread_ts==="string"?e.thread_ts:"";return n!==""&&n!==t}function Af(e){let[t,n="000000"]=e.split("."),r=new Date(Number(t)*1000),s=r.getUTCFullYear(),o=String(r.getUTCMonth()+1).padStart(2,"0"),i=String(r.getUTCDate()).padStart(2,"0"),a=String(r.getUTCHours()).padStart(2,"0"),c=String(r.getUTCMinutes()).padStart(2,"0"),u=String(r.getUTCSeconds()).padStart(2,"0"),f=n.padEnd(6,"0").slice(0,6);return`${s}-${o}-${i}T${a}:${c}:${u}.${f}`}async function $f(e,t,n,r,s){let o=typeof t.ts==="string"?t.ts:"0.000000",i=Af(o),a="?";if(typeof t.user==="string"){let m=t.user,p="@"+m;if(!n.has(p)){let[,y]=await os(e,m,s);n.set(p,y)}a=n.get(p)??m}else if(typeof t.username==="string")a=t.username;let c=typeof t.text==="string"?t.text:"",f=ms(await gs(e,c,n,s)).split(`
125
125
  `),l=f[0]+(f.length>1?`
126
126
  `+f.slice(1).map((m)=>` ${m}`).join(`
127
- `):""),d=Wa(t)?"↳ ":"",p=r?`${r} @${a}`:`@${a}`;return`${i} ${d}${p}: ${l}`}async function wf(e,t,n,r,s,o,i){let a=Qe(await dn(e,t,20,i?void 0:n||void 0,i,r.cookie)),c=Tr(a.messages).map(Qe).reverse(),u=Qe(a.response_metadata),f=a.has_more===!0&&typeof u.next_cursor==="string"?u.next_cursor:void 0,l=[];if(r.watchThread&&!i){let y=Qe(await pa(e,t,r.watchThread,50,r.cookie));l=Tr(y.messages).map(Qe).filter((E)=>(typeof E.ts==="string"?E.ts:"")!==r.watchThread)}let d=[...c.map((y)=>({m:y,fromHistory:!0})),...l.map((y)=>({m:y,fromHistory:!1}))].sort((y,E)=>La(typeof y.m.ts==="string"?y.m.ts:"")-La(typeof E.m.ts==="string"?E.m.ts:"")),p=[],m=n,h=!1;for(let{m:y,fromHistory:E}of d){let F=typeof y.ts==="string"?y.ts:"";if(!F||s.has(F))continue;let A=typeof y.subtype==="string"?y.subtype:"";if(A==="message_changed"||A==="message_deleted")continue;if(r.thread){if((typeof y.thread_ts==="string"?y.thread_ts:F)!==r.thread&&F!==r.thread)continue}if(r.watchThread&&Wa(y)){if((typeof y.thread_ts==="string"?y.thread_ts:"")!==r.watchThread)continue}if(r.me&&r.myUserId){if(!(typeof y.text==="string"?y.text:"").includes(`<@${r.myUserId}>`))continue}if(s.add(F),s.size>1000){let B=s.values().next().value;if(B!==void 0)s.delete(B)}if(p.push(await bf(e,y,o,void 0,r.cookie)),E)m=F;let k=typeof y.user==="string"?y.user:"";if(!r.myUserId||k!==r.myUserId)h=!0}return{newCursor:m,lines:p,hasMore:a.has_more===!0,nextPageCursor:f,emittedOther:h}}function Ff(e){if(e.includes("slack.com")){let t=Sr(e),n=t?.threadTs??t?.ts;if(n)return n;throw Error(`--watch-thread: could not extract a timestamp from "${e}"`)}if(/^\d{10}\.\d{6}$/.test(e))return e;if(/^\d{16}$/.test(e))return`${e.slice(0,10)}.${e.slice(10)}`;throw Error(`--watch-thread: "${e}" is not a valid ts or permalink`)}async function Ua(e,t,n={},r){if(n.me&&!t)console.error(`slack tail --me requires a <target> channel.
127
+ `):""),d=Ha(t)?"↳ ":"",h=r?`${r} @${a}`:`@${a}`;return`${i} ${d}${h}: ${l}`}async function Of(e,t,n,r,s,o,i){let a=Qe(await hn(e,t,20,i?void 0:n||void 0,i,r.cookie)),c=Br(a.messages).map(Qe).reverse(),u=Qe(a.response_metadata),f=a.has_more===!0&&typeof u.next_cursor==="string"?u.next_cursor:void 0,l=[];if(r.watchThread&&!i){let y=Qe(await wa(e,t,r.watchThread,50,r.cookie));l=Br(y.messages).map(Qe).filter((E)=>(typeof E.ts==="string"?E.ts:"")!==r.watchThread)}let d=[...c.map((y)=>({m:y,fromHistory:!0})),...l.map((y)=>({m:y,fromHistory:!1}))].sort((y,E)=>za(typeof y.m.ts==="string"?y.m.ts:"")-za(typeof E.m.ts==="string"?E.m.ts:"")),h=[],m=n,p=!1;for(let{m:y,fromHistory:E}of d){let F=typeof y.ts==="string"?y.ts:"";if(!F||s.has(F))continue;let A=typeof y.subtype==="string"?y.subtype:"";if(A==="message_changed"||A==="message_deleted")continue;if(r.thread){if((typeof y.thread_ts==="string"?y.thread_ts:F)!==r.thread&&F!==r.thread)continue}if(r.watchThread&&Ha(y)){if((typeof y.thread_ts==="string"?y.thread_ts:"")!==r.watchThread)continue}if(r.me&&r.myUserId){if(!(typeof y.text==="string"?y.text:"").includes(`<@${r.myUserId}>`))continue}if(s.add(F),s.size>1000){let B=s.values().next().value;if(B!==void 0)s.delete(B)}if(h.push(await $f(e,y,o,void 0,r.cookie)),E)m=F;let k=typeof y.user==="string"?y.user:"";if(!r.myUserId||k!==r.myUserId)p=!0}return{newCursor:m,lines:h,hasMore:a.has_more===!0,nextPageCursor:f,emittedOther:p}}function If(e){if(e.includes("slack.com")){let t=Ir(e),n=t?.threadTs??t?.ts;if(n)return n;throw Error(`--watch-thread: could not extract a timestamp from "${e}"`)}if(/^\d{10}\.\d{6}$/.test(e))return e;if(/^\d{16}$/.test(e))return`${e.slice(0,10)}.${e.slice(10)}`;throw Error(`--watch-thread: "${e}" is not a valid ts or permalink`)}async function qa(e,t,n={},r){if(n.me&&!t)console.error(`slack tail --me requires a <target> channel.
128
128
  Cross-channel mention streaming is not yet supported.
129
- Use: slack tail "#channel" --me`),process.exit(1);if(!t)console.error("Usage: slack tail <#channel|@user>\n Run `slack tail --help` for details."),process.exit(1);let s=await ya(e,t,n.cookie),o=n.interval??60000,i=n.timeout?Je.now()+ja(n.timeout)*1000:1/0,a=new Map,c=new Set;try{let h=Qe(await ba(e,s,n.cookie));if(Qe(h.channel).is_archived===!0)console.error("Warning: this channel is archived — no new messages will arrive.")}catch(h){let y=h instanceof Error?h.message:String(h);if(y.includes("not_in_channel"))console.error("Error: you are not a member of that channel. Join it in Slack first, then retry."),process.exit(1);if(y.includes("missing_scope"))console.error("Error: token lacks the required history scope. Check your token's channels:history (or groups:history) permission."),process.exit(1);if(y.includes("channel_not_found"))console.error("Error: channel not found — it may be a private channel inaccessible with your token."),process.exit(1);console.error(`Warning: preflight check failed: ${y}`)}let u="";if(n.since){let h=ja(n.since);u=(Je.now()/1000-h).toFixed(6)}else{let h=Qe(await dn(e,s,1,void 0,void 0,n.cookie)),y=Tr(h.messages).map(Qe);if(y.length>0&&typeof y[0]?.ts==="string")u=y[0].ts,c.add(u);else u=(Je.now()/1000).toFixed(6)}let f;if(n.me||n.exitOnMessage)f=(await Xt(e,n.cookie)).userId||void 0;let l;if(n.watchThread!==void 0)try{l=Ff(n.watchThread)}catch(h){console.error(h instanceof Error?h.message:String(h)),process.exit(1)}let d={...n.thread!==void 0?{thread:n.thread}:{},...l!==void 0?{watchThread:l}:{},...n.me!==void 0?{me:n.me}:{},...f!==void 0?{myUserId:f}:{},...n.cookie!==void 0?{cookie:n.cookie}:{}};if(e.startsWith("xoxc-")&&n.cookie!==void 0&&n.noRtm!==!0&&n.since===void 0&&n.timeout===void 0&&n.exitOnMessage!==!0){if(await Je.tailRTM(e,n.cookie,s,d,c,a,r),r?.aborted)return;console.error("RTM unavailable — switching to polling.")}let p=!0,m=Je.now();while(!r?.aborted){if(Je.now()>=i)return;let h=!1;try{let F=Je.now()-m,A=o>0&&F>o*5,k,B=!0;do{let{newCursor:I,lines:R,nextPageCursor:V,emittedOther:L}=await wf(e,s,u,d,c,a,k);if(u=I,p&&B&&n.since&&R.length===0)process.stdout.write(`(no messages in the last ${n.since} — watching for new)
129
+ Use: slack tail "#channel" --me`),process.exit(1);if(!t)console.error("Usage: slack tail <#channel|@user>\n Run `slack tail --help` for details."),process.exit(1);let s=await rs(e,t,n.cookie),o=n.interval??60000,i=n.timeout?Je.now()+Ja(n.timeout)*1000:1/0,a=new Map,c=new Set;try{let p=Qe(await xa(e,s,n.cookie));if(Qe(p.channel).is_archived===!0)console.error("Warning: this channel is archived — no new messages will arrive.")}catch(p){let y=p instanceof Error?p.message:String(p);if(y.includes("not_in_channel"))console.error("Error: you are not a member of that channel. Join it in Slack first, then retry."),process.exit(1);if(y.includes("missing_scope"))console.error("Error: token lacks the required history scope. Check your token's channels:history (or groups:history) permission."),process.exit(1);if(y.includes("channel_not_found"))console.error("Error: channel not found — it may be a private channel inaccessible with your token."),process.exit(1);console.error(`Warning: preflight check failed: ${y}`)}let u="";if(n.since){let p=Ja(n.since);u=(Je.now()/1000-p).toFixed(6)}else{let p=Qe(await hn(e,s,1,void 0,void 0,n.cookie)),y=Br(p.messages).map(Qe);if(y.length>0&&typeof y[0]?.ts==="string")u=y[0].ts,c.add(u);else u=(Je.now()/1000).toFixed(6)}let f;if(n.me||n.exitOnMessage)f=(await Yt(e,n.cookie)).userId||void 0;let l;if(n.watchThread!==void 0)try{l=If(n.watchThread)}catch(p){console.error(p instanceof Error?p.message:String(p)),process.exit(1)}let d={...n.thread!==void 0?{thread:n.thread}:{},...l!==void 0?{watchThread:l}:{},...n.me!==void 0?{me:n.me}:{},...f!==void 0?{myUserId:f}:{},...n.cookie!==void 0?{cookie:n.cookie}:{}};if(e.startsWith("xoxc-")&&n.cookie!==void 0&&n.noRtm!==!0&&n.since===void 0&&n.timeout===void 0&&n.exitOnMessage!==!0){if(await Je.tailRTM(e,n.cookie,s,d,c,a,r),r?.aborted)return;console.error("RTM unavailable — switching to polling.")}let h=!0,m=Je.now();while(!r?.aborted){if(Je.now()>=i)return;let p=!1;try{let F=Je.now()-m,A=o>0&&F>o*5,k,B=!0;do{let{newCursor:I,lines:R,nextPageCursor:V,emittedOther:L}=await Of(e,s,u,d,c,a,k);if(u=I,h&&B&&n.since&&R.length===0)process.stdout.write(`(no messages in the last ${n.since} — watching for new)
130
130
  `);B=!1;for(let ne of R)process.stdout.write(ne+`
131
- `);if(L)h=!0;k=A?V:void 0}while(k);p=!1}catch(E){if(E instanceof Ke){console.error(`Warning: Slack rate limit hit — backing off for ${E.retryAfter}s`),await Je.sleep(E.retryAfter*1000);continue}throw E}if(n.exitOnMessage&&h)return;m=Je.now();let y=i-Je.now();if(y<=0)return;await Je.sleep(Math.min(o,y))}}var Be=[{name:"one",glyph:"1️⃣"},{name:"two",glyph:"2️⃣"},{name:"three",glyph:"3️⃣"},{name:"four",glyph:"4️⃣"},{name:"five",glyph:"5️⃣"},{name:"six",glyph:"6️⃣"},{name:"seven",glyph:"7️⃣"},{name:"eight",glyph:"8️⃣"},{name:"nine",glyph:"9️⃣"},{name:"keycap_ten",glyph:"\uD83D\uDD1F"}],ms=Be.length,Ds="question";function Rr(e){let t=e.split(`
132
- `),n=t[t.length-2];if(n===void 0||!n.startsWith("_:warning: 同時に複数選ばれているため回答として数えていません — どれか 1 つだけ残してください: ")||!n.endsWith("_"))return[];return[...n.matchAll(/<@([UW][A-Z0-9]+)>/g)].map((r)=>r[1])}function Mr(e,t){let n=e.split(`
133
- `);if(n.length<2)return e;if(Rr(e).length)n.splice(n.length-2,1);if(t.length)n.splice(n.length-1,0,`${"_:warning: 同時に複数選ばれているため回答として数えていません — どれか 1 つだけ残してください: "}${t.map((s)=>`<@${s}>`).join(", ")}_`);let r=n.join(`
134
- `);return r===e?e:r}function Cf(e){return e!==void 0&&e.startsWith("_:warning: 同時に複数選ばれているため回答として数えていません — どれか 1 つだけ残してください: ")&&e.endsWith("_")}var Br="white_check_mark",gs=`:${Br}: `;function Ka(e){return`:${Be[e].name}:`}function Ja(e,t){let n=Be[t];for(let r of[Ka(t),n.glyph]){if(e.startsWith(`${r} `))return e.slice(r.length+1);if(e===r)return""}return null}function Ef(e){return Be.some((t,n)=>Ja(e,n)!==null)}function Gt(e){return e.replace(/\s*\n\s*/g," ")}function za(e,t,n,r,s){let o=[`:question: *${e}*`];if(t)o.push("",t);if(n.length){if(o.push(""),o.push(...n.map((i,a)=>`${Ka(a)} ${Gt(i)}`)),r.length)o.push(""),o.push(...r.map((i,a)=>`(${a+11}) ${Gt(i)}`)),o.push("_11 番目以降はリアクションがないので、返信で答えてください。_");o.push(""),o.push(s?"_下のリアクションを 1 つ押すと回答になります。当てはまるものがなければ、このメッセージの *スレッド* で返信してください (チャンネルへの通常投稿は回答として拾いません)。_":"_下のリアクションを 1 つ押すと回答になります。当てはまるものがなければ、このメッセージに返信してください。_")}else o.push(""),o.push(s?"_このメッセージの *スレッド* で返信してください。本文がそのまま回答になります (チャンネルへの通常投稿は回答として拾いません)。_":"_このメッセージに返信してください。本文がそのまま回答になります。_");return o.join(`
135
- `)}function Ha(e,t,n){let r=t.answer.split(`
131
+ `);if(L)p=!0;k=A?V:void 0}while(k);h=!1}catch(E){if(E instanceof Ke){console.error(`Warning: Slack rate limit hit — backing off for ${E.retryAfter}s`),await Je.sleep(E.retryAfter*1000);continue}throw E}if(n.exitOnMessage&&p)return;m=Je.now();let y=i-Je.now();if(y<=0)return;await Je.sleep(Math.min(o,y))}}import{spawn as Tf}from"node:child_process";import{constants as Ga}from"node:os";var Pf=["processing","active","suspended","closed"];function Ya(e){if(e!==void 0&&!/^[A-Za-z_][A-Za-z0-9_]*$/.test(e))throw Error("--bot-token-env must name an environment variable, not contain a token.");let t=e===void 0?pa():process.env[e];if(!t?.startsWith("xoxb-"))throw Error("Agent commands require a bot token (xoxb). Set SLACK_BOT_TOKEN or --bot-token-env NAME; user tokens are refused.");return t}function Xa(e){if(e!==void 0&&(!e.trim()||[...e].length>200))throw Error("--title must contain 1–200 characters.")}async function Va(e,t,n){let{ref:r,threadTs:s}=n(t);if(!s||!/^\d{10}\.\d{6}$/.test(s))throw Error("Target must include a thread root: C00000001:1700000000.000100, #channel:ts, or a message permalink.");return{channel_id:await rs(e,r),thread_ts:s}}function vr(e,t){console.error(`agent: ${e}: ${t instanceof Error?t.message:"request failed"}`)}async function Rf(e,t,n,r){let s,o,i,a,c,u=!1,f=!1,l=1,d=(p)=>{if(o)return;if(o=p,u=!0,s&&s.exitCode===null&&s.signalCode===null)s.kill(p),i=setTimeout(()=>s?.kill("SIGKILL"),5000)},h=()=>d("SIGINT"),m=()=>d("SIGTERM");process.on("SIGINT",h),process.on("SIGTERM",m);try{if(f=!0,await pn(e,t,"processing"),!u&&r.title!==void 0)await Or(e,t,r.title);if(!u){s=Tf(n[0],n.slice(1),{stdio:"inherit"});let p=new Promise((y)=>{s.once("error",()=>{console.error("agent: could not start command"),y(127)}),s.once("exit",(E,F)=>{y(E??(F?128+Ga.signals[F]:1))})});a=setInterval(()=>{if(u||c)return;c=pn(e,t,"processing").then(()=>{}).catch((y)=>vr("heartbeat failed; retrying on next tick",y)).finally(()=>{c=void 0})},r.every*1000),l=await p}}catch(p){vr("could not start agent session",p)}finally{if(u=!0,clearInterval(a),clearTimeout(i),await c,f)try{await pn(e,t,r.close?"closed":"active")}catch(p){if(vr("final status clear failed",p),l===0)l=1}process.removeListener("SIGINT",h),process.removeListener("SIGTERM",m)}return o?128+Ga.signals[o]:l}function Za(e,t){let n=(r)=>r.positional("target",{type:"string",demandOption:!0,describe:"Thread root: raw channel ID:ts (avoids listing), #channel:ts, or permalink"}).option("title",{type:"string",describe:"Rename the session (1–200 characters)"}).option("bot-token-env",{type:"string",describe:"Environment variable holding an agent-enabled app's xoxb token (default SLACK_BOT_TOKEN); requires chat:write and channel membership"});return e.command("status <target> <status>","Set a bot agent session's status",(r)=>n(r).positional("status",{type:"string",choices:Pf,demandOption:!0}),async(r)=>{Xa(r.title);let s=Ya(r["bot-token-env"]),o=await Va(s,r.target,t);if(await pn(s,o,r.status),r.title!==void 0)await Or(s,o,r.title)}).command("run <target>","Keep a thread working while a command runs: run <target> -- <command...>",(r)=>n(r).parserConfiguration({"populate--":!0}).option("every",{type:"number",default:300,describe:"Heartbeat seconds (>0 and <3600); processing expires after one hour"}).option("close",{type:"boolean",default:!1,describe:"Finish with closed instead of active (also on failure or interrupt)"}),async(r)=>{if(Xa(r.title),!Number.isFinite(r.every)||r.every<=0||r.every>=3600)throw Error("--every must be greater than 0 and less than 3600 seconds.");let s=process.argv.indexOf("--"),o=s<0?[]:process.argv.slice(s+1);if(!o[0])throw Error("agent run requires -- <command...>");let i=Ya(r["bot-token-env"]),a=await Va(i,r.target,t);process.exitCode=await Rf(i,a,o,{every:r.every,close:r.close,...r.title!==void 0?{title:r.title}:{}})}).demandCommand(1,"Choose agent status or agent run.")}var Be=[{name:"one",glyph:"1️⃣"},{name:"two",glyph:"2️⃣"},{name:"three",glyph:"3️⃣"},{name:"four",glyph:"4️⃣"},{name:"five",glyph:"5️⃣"},{name:"six",glyph:"6️⃣"},{name:"seven",glyph:"7️⃣"},{name:"eight",glyph:"8️⃣"},{name:"nine",glyph:"9️⃣"},{name:"keycap_ten",glyph:"\uD83D\uDD1F"}],ys=Be.length,bs="question";function jr(e){let t=e.split(`
132
+ `),n=t[t.length-2];if(n===void 0||!n.startsWith("_:warning: 同時に複数選ばれているため回答として数えていません — どれか 1 つだけ残してください: ")||!n.endsWith("_"))return[];return[...n.matchAll(/<@([UW][A-Z0-9]+)>/g)].map((r)=>r[1])}function Lr(e,t){let n=e.split(`
133
+ `);if(n.length<2)return e;if(jr(e).length)n.splice(n.length-2,1);if(t.length)n.splice(n.length-1,0,`${"_:warning: 同時に複数選ばれているため回答として数えていません — どれか 1 つだけ残してください: "}${t.map((s)=>`<@${s}>`).join(", ")}_`);let r=n.join(`
134
+ `);return r===e?e:r}function Mf(e){return e!==void 0&&e.startsWith("_:warning: 同時に複数選ばれているため回答として数えていません — どれか 1 つだけ残してください: ")&&e.endsWith("_")}var Wr="white_check_mark",Ds=`:${Wr}: `;function Qa(e){return`:${Be[e].name}:`}function ec(e,t){let n=Be[t];for(let r of[Qa(t),n.glyph]){if(e.startsWith(`${r} `))return e.slice(r.length+1);if(e===r)return""}return null}function Bf(e){return Be.some((t,n)=>ec(e,n)!==null)}function Xt(e){return e.replace(/\s*\n\s*/g," ")}function tc(e,t,n,r,s){let o=[`:question: *${e}*`];if(t)o.push("",t);if(n.length){if(o.push(""),o.push(...n.map((i,a)=>`${Qa(a)} ${Xt(i)}`)),r.length)o.push(""),o.push(...r.map((i,a)=>`(${a+11}) ${Xt(i)}`)),o.push("_11 番目以降はリアクションがないので、返信で答えてください。_");o.push(""),o.push(s?"_下のリアクションを 1 つ押すと回答になります。当てはまるものがなければ、このメッセージの *スレッド* で返信してください (チャンネルへの通常投稿は回答として拾いません)。_":"_下のリアクションを 1 つ押すと回答になります。当てはまるものがなければ、このメッセージに返信してください。_")}else o.push(""),o.push(s?"_このメッセージの *スレッド* で返信してください。本文がそのまま回答になります (チャンネルへの通常投稿は回答として拾いません)。_":"_このメッセージに返信してください。本文がそのまま回答になります。_");return o.join(`
135
+ `)}function nc(e,t,n){let r=t.answer.split(`
136
136
  `).map((s)=>`> ${s}`).join(`
137
- `);return`${gs}*${e}*
137
+ `);return`${Ds}*${e}*
138
138
  _${t.how}で回答済み${n?` (${n})`:""}_
139
139
 
140
- ${r}`}function qa(e){if(!e.trim())return"本文が空です (bot 投稿や添付のみのメッセージかもしれません)";let t=e.split(`
141
- `),n=t[t.length-1]??"";if(e.startsWith(gs))return"回答済みマーク付きですが、引用された回答本文が見つかりません";if(!/_$/.test(n))return"末尾が `ask` の案内文ではありません — このメッセージは `slack ask` で投稿されたものではないか、本文が編集されています";if(!t[0].startsWith(":question: ")&&!t[0].startsWith("*"))return"先頭が質問文 (太字) ではありません — 本文が編集されている可能性があります";return"選択肢の並びを読み取れません — 番号が 1 から連番になっていないか、本文が編集されています"}function Ya(e){let t=e.split(`
142
- `);if(e.startsWith(gs)){let l=t[0].slice(gs.length).replace(/^\*/,"").replace(/\*$/,""),d=t.filter((p)=>p.startsWith("> ")).map((p)=>p.slice(2)).join(`
140
+ ${r}`}function sc(e){if(!e.trim())return"本文が空です (bot 投稿や添付のみのメッセージかもしれません)";let t=e.split(`
141
+ `),n=t[t.length-1]??"";if(e.startsWith(Ds))return"回答済みマーク付きですが、引用された回答本文が見つかりません";if(!/_$/.test(n))return"末尾が `ask` の案内文ではありません — このメッセージは `slack ask` で投稿されたものではないか、本文が編集されています";if(!t[0].startsWith(":question: ")&&!t[0].startsWith("*"))return"先頭が質問文 (太字) ではありません — 本文が編集されている可能性があります";return"選択肢の並びを読み取れません — 番号が 1 から連番になっていないか、本文が編集されています"}function rc(e){let t=e.split(`
142
+ `);if(e.startsWith(Ds)){let l=t[0].slice(Ds.length).replace(/^\*/,"").replace(/\*$/,""),d=t.filter((h)=>h.startsWith("> ")).map((h)=>h.slice(2)).join(`
143
143
  `);if(!d)return{kind:"other"};return{kind:"resolved",question:l,answer:d}}let n=t[t.length-1]??"",r,s;switch(n){case"_下のリアクションを 1 つ押すと回答になります。当てはまるものがなければ、このメッセージの *スレッド* で返信してください (チャンネルへの通常投稿は回答として拾いません)。_":r=!0,s=!0;break;case"_下のリアクションを 1 つ押すと回答になります。当てはまるものがなければ、このメッセージに返信してください。_":r=!1,s=!0;break;case"_このメッセージの *スレッド* で返信してください。本文がそのまま回答になります (チャンネルへの通常投稿は回答として拾いません)。_":r=!0,s=!1;break;case"_このメッセージに返信してください。本文がそのまま回答になります。_":r=!1,s=!1;break;default:return{kind:"other"}}let o=t[0].startsWith(":question: ")?t[0].slice(11):t[0];if(t[0]=o,!t[0].startsWith("*"))return{kind:"other"};let i=0;while(i<t.length&&!(t[i].endsWith("*")&&(i>0||t[0].length>1)))i++;if(i>=t.length)return{kind:"other"};let a=t.slice(0,i+1).join(`
144
- `).replace(/^\*/,"").replace(/\*$/,""),c=[],u=[];if(s){let f=t.length-2;if(Cf(t[f]))f--;if(t[f]!=="")return{kind:"other"};if(f--,t[f]==="_11 番目以降はリアクションがないので、返信で答えてください。_"){f--;while(f>=0&&/^\(\d+\) /.test(t[f]))u.unshift(t[f].replace(/^\(\d+\) /,"")),f--;if(t[f]!=="")return{kind:"other"};f--}let l=[];while(f>=0){let d=t[f];if(!Ef(d))break;l.unshift(d),f--}if(!l.length||l.length>ms)return{kind:"other"};for(let d=0;d<l.length;d++){let p=Ja(l[d],d);if(p===null)return{kind:"other"};c.push(p)}if(t[f]!=="")return{kind:"other"};if(f<i+1)return{kind:"other"};for(let d=0;d<u.length;d++)if(!t.includes(`(${d+11}) ${u[d]}`))return{kind:"other"}}return{kind:"open",question:a,reactable:c,overflow:u,threadOnly:r}}function Pr(e){return e.normalize("NFKC").replace(/[*_`~]/g,"").trim().replace(/^[\s"'`「『((\[]+/,"").replace(/[\s"'`」』))\]。..!!??、,]+$/,"").replace(/\s+/g," ").trim().toLowerCase()}function Xa(e,t){let n=Pr(e);if(!n)return{kind:"none"};let r=t.map(Pr),s=new Set;r.forEach((u,f)=>{if(u&&u===n)s.add(f+1)}),Be.forEach((u,f)=>{if(f<t.length&&e.trim()===u.glyph)s.add(f+1)});let o=0,i="",a=n.match(/^(\d{1,2})$/);if(a)o=Number(a[1]);else if(a=n.match(/^(\d{1,2})(?:\s*[.)::、。\-\]]\s*|\s+)(.*)$/)){if(o=Number(a[1]),i=Pr(a[2]),!i)return{kind:"none"};if(/^\d+$/.test(i))return{kind:"none"}}if(o>=1&&o<=t.length&&(i===""||i===r[o-1]))s.add(o);let c=[...s].sort((u,f)=>u-f);if(!c.length)return{kind:"none"};if(c.length>1)return{kind:"ambiguous",indexes:c};return{kind:"chosen",index:c[0]}}var Nr=[{name:"one",glyph:"1️⃣"},{name:"two",glyph:"2️⃣"},{name:"three",glyph:"3️⃣"},{name:"four",glyph:"4️⃣"},{name:"five",glyph:"5️⃣"},{name:"six",glyph:"6️⃣"},{name:"seven",glyph:"7️⃣"},{name:"eight",glyph:"8️⃣"},{name:"nine",glyph:"9️⃣"},{name:"keycap_ten",glyph:"\uD83D\uDD1F"}],gm=Nr.length;function vr(e){let t=e.split(`
145
- `),n=t[t.length-2];if(n===void 0||!n.startsWith("_:warning: 同時に複数選ばれているため回答として数えていません — どれか 1 つだけ残してください: ")||!n.endsWith("_"))return[];return[...n.matchAll(/<@([UW][A-Z0-9]+)>/g)].map((r)=>r[1])}function Ga(e,t){let n=e.split(`
146
- `);if(n.length<2)return e;if(vr(e).length)n.splice(n.length-2,1);if(t.length)n.splice(n.length-1,0,`${"_:warning: 同時に複数選ばれているため回答として数えていません — どれか 1 つだけ残してください: "}${t.map((s)=>`<@${s}>`).join(", ")}_`);let r=n.join(`
147
- `);return r===e?e:r}function Va(e){return e!==void 0&&e.startsWith("_:warning: 同時に複数選ばれているため回答として数えていません — どれか 1 つだけ残してください: ")&&e.endsWith("_")}var xf="white_check_mark",mm=`:${xf}: `;var ze=Nr,Vt=ze.length,gn="ballot_box_with_ballot",jr=`:${gn}: `,Qa="_下のリアクションで投票してください (1 人 1 票、押し直しで変更できます)。_",ec="_下のリアクションで投票してください (当てはまるものを *いくつでも* 押せます)。_",ys="_締切: ",bs="_",Wr="bar_chart",Lr=`:${Wr}: `;function ws(e){return`:${ze[e].name}:`}function Za(e,t){for(let n of[ws(t),ze[t].glyph])if(e.startsWith(`${n} `))return e.slice(n.length+1);return null}function _f(e){return ze.some((t,n)=>e.startsWith(`${ws(n)} `)||e.startsWith(`${t.glyph} `))}function pn(e){return e.replace(/\s*\n\s*/g," ")}function tc(e,t,n,r={}){let s=!!r.multi,o=r.deadline??"",i=r.invalid??[];if(!n.length||n.length>Vt)throw Error(`poll needs 1..${Vt} choices, got ${n.length}`);let a=[`${jr}*${e}*`];if(t)a.push("",t);if(a.push(""),a.push(...n.map((c,u)=>`${ws(u)} ${pn(c)}`)),a.push(""),o)a.push(`${ys}${pn(o)}${bs}`);return a.push(s?ec:Qa),Ga(a.join(`
148
- `),s?[]:i)}function nc(e,t){let n=t.reduce((s,o)=>s+o.count,0),r=[`${Lr}*${e}*`,`_投票終了 (計 ${n} 票)_`,""];return r.push(...t.map((s,o)=>`${ws(o)} ×${s.count} ${pn(s.choice)}`)),r.join(`
149
- `)}function sc(e){let t=e.split(`
150
- `);if(e.startsWith(Lr)){let d=t[0].slice(Lr.length).replace(/^\*/,"").replace(/\*$/,""),p=[];for(let m=0;m<ze.length;m++){let h=t.map((E)=>Za(E,m)).find((E)=>E!==null&&E.startsWith("×"));if(h===void 0)break;let y=/^×(\d+) (.*)$/.exec(h);if(!y)return{kind:"other"};p.push({choice:y[2],count:Number(y[1])})}if(!p.length)return{kind:"other"};return{kind:"closed",question:d,tallies:p}}let n=t[t.length-1]??"",r;if(n===Qa)r=!1;else if(n===ec)r=!0;else return{kind:"other"};if(t[0].startsWith(jr))t[0]=t[0].slice(jr.length);if(!t[0].startsWith("*"))return{kind:"other"};let s=0;while(s<t.length&&!(t[s].endsWith("*")&&(s>0||t[0].length>1)))s++;if(s>=t.length)return{kind:"other"};let o=t.slice(0,s+1).join(`
151
- `).replace(/^\*/,"").replace(/\*$/,""),i=t.length-2,a=vr(e);if(Va(t[i]))i--;let c="",u=t[i];if(u!==void 0&&u.startsWith(ys)&&u.endsWith(bs)&&u.length>ys.length+bs.length)c=u.slice(ys.length,-bs.length),i--;if(t[i]!=="")return{kind:"other"};i--;let f=[];while(i>=0){let d=t[i];if(!_f(d))break;f.unshift(d),i--}if(!f.length||f.length>Vt)return{kind:"other"};let l=[];for(let d=0;d<f.length;d++){let p=Za(f[d],d);if(p===null)return{kind:"other"};l.push(p)}if(t[i]!=="")return{kind:"other"};if(i<s+1)return{kind:"other"};return{kind:"open",question:o,choices:l,multi:r,deadline:c,invalid:a}}function rc(e,t,n,r){let s=new Map(t.map((u)=>[u.name,u.users])),o=e.map((u,f)=>(s.get(ze[f].name)??[]).filter((l)=>!n.has(l))),i=[];if(!r){let u=new Map;for(let f of o)for(let l of f)u.set(l,(u.get(l)??0)+1);for(let[f,l]of u)if(l>1)i.push(f)}let a=new Set(i),c=o.map((u)=>u.filter((f)=>!a.has(f)));return{tallies:e.map((u,f)=>({choice:u,count:c[f].length})),voters:c,ambiguous:i}}function kf(e=process.env){return!!e.VITEST||e.NODE_ENV==="test"||!!e.BUN_TEST}var oc={isTestEnv:()=>kf(),sleep:(e)=>oc.isTestEnv()?Promise.resolve():new Promise((t)=>setTimeout(t,e))};function Sf(e=process.env){let t=e.SLACK_REACTION_SEED_GAP_MS;if(t===void 0||t==="")return 1100;let n=Number(t);if(!Number.isFinite(n)||n<0)return 1100;return n}async function Ur(e,t,n,r=Sf()){for(let s=0;s<e.length;s++){let o=!0;try{await t(e[s])}catch(i){o=!1,n(e[s],i)}if(o&&r>0&&s<e.length-1)await oc.sleep(r)}}class Mt extends Error{retryAfter;constructor(e){super(`Slack rate limited — retry after ${e}s`);this.name="RateLimitError",this.retryAfter=e}}function zr(){return(process.env.SLACK_API_BASE??"https://slack.com/api").replace(/\/$/,"")}async function cc(e,t,n,r){r=e.startsWith("xoxc-")?r??Yt():void 0;let s={};if(r)s.Cookie=`d=${r}`;let o=await fetch(`${zr()}/${t}`,{...n,headers:{...n.headers??{},Authorization:`Bearer ${e}`,...s}});if(o.status===429){let a=parseInt(o.headers.get("retry-after")??"60",10);throw new Mt(isNaN(a)?60:a)}let i=await o.json();if(i.ok!==!0){let a=i.error??"unknown";if(a==="ratelimited")throw new Mt(60);if(a==="invalid_auth"&&e.startsWith("xoxc-")&&!r)throw Error(`Desktop app token (xoxc-) needs its session cookie to be accepted by the public Slack API.
144
+ `).replace(/^\*/,"").replace(/\*$/,""),c=[],u=[];if(s){let f=t.length-2;if(Mf(t[f]))f--;if(t[f]!=="")return{kind:"other"};if(f--,t[f]==="_11 番目以降はリアクションがないので、返信で答えてください。_"){f--;while(f>=0&&/^\(\d+\) /.test(t[f]))u.unshift(t[f].replace(/^\(\d+\) /,"")),f--;if(t[f]!=="")return{kind:"other"};f--}let l=[];while(f>=0){let d=t[f];if(!Bf(d))break;l.unshift(d),f--}if(!l.length||l.length>ys)return{kind:"other"};for(let d=0;d<l.length;d++){let h=ec(l[d],d);if(h===null)return{kind:"other"};c.push(h)}if(t[f]!=="")return{kind:"other"};if(f<i+1)return{kind:"other"};for(let d=0;d<u.length;d++)if(!t.includes(`(${d+11}) ${u[d]}`))return{kind:"other"}}return{kind:"open",question:a,reactable:c,overflow:u,threadOnly:r}}function Nr(e){return e.normalize("NFKC").replace(/[*_`~]/g,"").trim().replace(/^[\s"'`「『((\[]+/,"").replace(/[\s"'`」』))\]。..!!??、,]+$/,"").replace(/\s+/g," ").trim().toLowerCase()}function oc(e,t){let n=Nr(e);if(!n)return{kind:"none"};let r=t.map(Nr),s=new Set;r.forEach((u,f)=>{if(u&&u===n)s.add(f+1)}),Be.forEach((u,f)=>{if(f<t.length&&e.trim()===u.glyph)s.add(f+1)});let o=0,i="",a=n.match(/^(\d{1,2})$/);if(a)o=Number(a[1]);else if(a=n.match(/^(\d{1,2})(?:\s*[.)::、。\-\]]\s*|\s+)(.*)$/)){if(o=Number(a[1]),i=Nr(a[2]),!i)return{kind:"none"};if(/^\d+$/.test(i))return{kind:"none"}}if(o>=1&&o<=t.length&&(i===""||i===r[o-1]))s.add(o);let c=[...s].sort((u,f)=>u-f);if(!c.length)return{kind:"none"};if(c.length>1)return{kind:"ambiguous",indexes:c};return{kind:"chosen",index:c[0]}}var Ur=[{name:"one",glyph:"1️⃣"},{name:"two",glyph:"2️⃣"},{name:"three",glyph:"3️⃣"},{name:"four",glyph:"4️⃣"},{name:"five",glyph:"5️⃣"},{name:"six",glyph:"6️⃣"},{name:"seven",glyph:"7️⃣"},{name:"eight",glyph:"8️⃣"},{name:"nine",glyph:"9️⃣"},{name:"keycap_ten",glyph:"\uD83D\uDD1F"}],Pm=Ur.length;function Kr(e){let t=e.split(`
145
+ `),n=t[t.length-2];if(n===void 0||!n.startsWith("_:warning: 同時に複数選ばれているため回答として数えていません — どれか 1 つだけ残してください: ")||!n.endsWith("_"))return[];return[...n.matchAll(/<@([UW][A-Z0-9]+)>/g)].map((r)=>r[1])}function ic(e,t){let n=e.split(`
146
+ `);if(n.length<2)return e;if(Kr(e).length)n.splice(n.length-2,1);if(t.length)n.splice(n.length-1,0,`${"_:warning: 同時に複数選ばれているため回答として数えていません — どれか 1 つだけ残してください: "}${t.map((s)=>`<@${s}>`).join(", ")}_`);let r=n.join(`
147
+ `);return r===e?e:r}function ac(e){return e!==void 0&&e.startsWith("_:warning: 同時に複数選ばれているため回答として数えていません — どれか 1 つだけ残してください: ")&&e.endsWith("_")}var vf="white_check_mark",Rm=`:${vf}: `;var ze=Ur,Vt=ze.length,Dn="ballot_box_with_ballot",Jr=`:${Dn}: `,uc="_下のリアクションで投票してください (1 人 1 票、押し直しで変更できます)。_",lc="_下のリアクションで投票してください (当てはまるものを *いくつでも* 押せます)。_",ws="_締切: ",Fs="_",Hr="bar_chart",zr=`:${Hr}: `;function Cs(e){return`:${ze[e].name}:`}function cc(e,t){for(let n of[Cs(t),ze[t].glyph])if(e.startsWith(`${n} `))return e.slice(n.length+1);return null}function Nf(e){return ze.some((t,n)=>e.startsWith(`${Cs(n)} `)||e.startsWith(`${t.glyph} `))}function mn(e){return e.replace(/\s*\n\s*/g," ")}function fc(e,t,n,r={}){let s=!!r.multi,o=r.deadline??"",i=r.invalid??[];if(!n.length||n.length>Vt)throw Error(`poll needs 1..${Vt} choices, got ${n.length}`);let a=[`${Jr}*${e}*`];if(t)a.push("",t);if(a.push(""),a.push(...n.map((c,u)=>`${Cs(u)} ${mn(c)}`)),a.push(""),o)a.push(`${ws}${mn(o)}${Fs}`);return a.push(s?lc:uc),ic(a.join(`
148
+ `),s?[]:i)}function dc(e,t){let n=t.reduce((s,o)=>s+o.count,0),r=[`${zr}*${e}*`,`_投票終了 (計 ${n} 票)_`,""];return r.push(...t.map((s,o)=>`${Cs(o)} ×${s.count} ${mn(s.choice)}`)),r.join(`
149
+ `)}function pc(e){let t=e.split(`
150
+ `);if(e.startsWith(zr)){let d=t[0].slice(zr.length).replace(/^\*/,"").replace(/\*$/,""),h=[];for(let m=0;m<ze.length;m++){let p=t.map((E)=>cc(E,m)).find((E)=>E!==null&&E.startsWith("×"));if(p===void 0)break;let y=/^×(\d+) (.*)$/.exec(p);if(!y)return{kind:"other"};h.push({choice:y[2],count:Number(y[1])})}if(!h.length)return{kind:"other"};return{kind:"closed",question:d,tallies:h}}let n=t[t.length-1]??"",r;if(n===uc)r=!1;else if(n===lc)r=!0;else return{kind:"other"};if(t[0].startsWith(Jr))t[0]=t[0].slice(Jr.length);if(!t[0].startsWith("*"))return{kind:"other"};let s=0;while(s<t.length&&!(t[s].endsWith("*")&&(s>0||t[0].length>1)))s++;if(s>=t.length)return{kind:"other"};let o=t.slice(0,s+1).join(`
151
+ `).replace(/^\*/,"").replace(/\*$/,""),i=t.length-2,a=Kr(e);if(ac(t[i]))i--;let c="",u=t[i];if(u!==void 0&&u.startsWith(ws)&&u.endsWith(Fs)&&u.length>ws.length+Fs.length)c=u.slice(ws.length,-Fs.length),i--;if(t[i]!=="")return{kind:"other"};i--;let f=[];while(i>=0){let d=t[i];if(!Nf(d))break;f.unshift(d),i--}if(!f.length||f.length>Vt)return{kind:"other"};let l=[];for(let d=0;d<f.length;d++){let h=cc(f[d],d);if(h===null)return{kind:"other"};l.push(h)}if(t[i]!=="")return{kind:"other"};if(i<s+1)return{kind:"other"};return{kind:"open",question:o,choices:l,multi:r,deadline:c,invalid:a}}function hc(e,t,n,r){let s=new Map(t.map((u)=>[u.name,u.users])),o=e.map((u,f)=>(s.get(ze[f].name)??[]).filter((l)=>!n.has(l))),i=[];if(!r){let u=new Map;for(let f of o)for(let l of f)u.set(l,(u.get(l)??0)+1);for(let[f,l]of u)if(l>1)i.push(f)}let a=new Set(i),c=o.map((u)=>u.filter((f)=>!a.has(f)));return{tallies:e.map((u,f)=>({choice:u,count:c[f].length})),voters:c,ambiguous:i}}function jf(e=process.env){return!!e.VITEST||e.NODE_ENV==="test"||!!e.BUN_TEST}var gc={isTestEnv:()=>jf(),sleep:(e)=>gc.isTestEnv()?Promise.resolve():new Promise((t)=>setTimeout(t,e))};function Lf(e=process.env){let t=e.SLACK_REACTION_SEED_GAP_MS;if(t===void 0||t==="")return 1100;let n=Number(t);if(!Number.isFinite(n)||n<0)return 1100;return n}async function qr(e,t,n,r=Lf()){for(let s=0;s<e.length;s++){let o=!0;try{await t(e[s])}catch(i){o=!1,n(e[s],i)}if(o&&r>0&&s<e.length-1)await gc.sleep(r)}}class Mt extends Error{retryAfter;constructor(e){super(`Slack rate limited — retry after ${e}s`);this.name="RateLimitError",this.retryAfter=e}}function Xr(){return(process.env.SLACK_API_BASE??"https://slack.com/api").replace(/\/$/,"")}async function yc(e,t,n,r){r=e.startsWith("xoxc-")?r??Gt():void 0;let s={};if(r)s.Cookie=`d=${r}`;let o=await fetch(`${Xr()}/${t}`,{...n,headers:{...n.headers??{},Authorization:`Bearer ${e}`,...s}});if(o.status===429){let a=parseInt(o.headers.get("retry-after")??"60",10);throw new Mt(isNaN(a)?60:a)}let i=await o.json();if(i.ok!==!0){let a=i.error??"unknown";if(a==="ratelimited")throw new Mt(60);if(a==="invalid_auth"&&e.startsWith("xoxc-")&&!r)throw Error(`Desktop app token (xoxc-) needs its session cookie to be accepted by the public Slack API.
152
152
  Attach it: slack auth chrome (macOS) or slack auth firefox
153
153
  Or replace the token with an xoxp- user token:
154
- slack auth login`);if((a==="missing_scope"||a==="cannot_dm_bot")&&e.startsWith("xoxb-"))throw Error(`Slack error on ${t}: ${a} — ${a==="cannot_dm_bot"?`you're authenticated as a bot, so "@you" is the bot itself and it can't DM itself`:"this bot token lacks the user scope this action needs"}.
154
+ slack auth login`);if((a==="missing_scope"||a==="cannot_dm_bot")&&e.startsWith("xoxb-")){if(t.startsWith("agents.sessions."))throw Error(`Slack error on ${t}: ${a}. Agent sessions need a granular bot token with chat:write and app membership in the channel.`);throw Error(`Slack error on ${t}: ${a} — ${a==="cannot_dm_bot"?`you're authenticated as a bot, so "@you" is the bot itself and it can't DM itself`:"this bot token lacks the user scope this action needs"}.
155
155
  Tailing/DMing people and listing users need a user session, not a bot token.
156
156
  Switch workspace: slack auth ls then slack auth use <name>
157
- Or import your Slack desktop session: slack auth login`);throw Error(`Slack error on ${t}: ${a}`)}return i}async function Af(e,t,n,r){let s={};if(r)s.Cookie=`d=${r}`;let o=await fetch(`${zr()}/${t}`,{...n,headers:{...n.headers??{},Authorization:`Bearer ${e}`,...s}});if(o.status===429){let a=parseInt(o.headers.get("retry-after")??"60",10);throw new Mt(isNaN(a)?60:a)}let i=await o.json();if(i.ok!==!0){let a=i.error??"unknown";if(a==="ratelimited")throw new Mt(60);if((a==="invalid_auth"||a==="not_authed")&&!e.startsWith("xoxc-"))throw Error(`The draft API requires a desktop app session token (xoxc-).
157
+ Or import your Slack desktop session: slack auth login`)}throw Error(`Slack error on ${t}: ${a}`)}return i}async function Wf(e,t,n,r){let s={};if(r)s.Cookie=`d=${r}`;let o=await fetch(`${Xr()}/${t}`,{...n,headers:{...n.headers??{},Authorization:`Bearer ${e}`,...s}});if(o.status===429){let a=parseInt(o.headers.get("retry-after")??"60",10);throw new Mt(isNaN(a)?60:a)}let i=await o.json();if(i.ok!==!0){let a=i.error??"unknown";if(a==="ratelimited")throw new Mt(60);if((a==="invalid_auth"||a==="not_authed")&&!e.startsWith("xoxc-"))throw Error(`The draft API requires a desktop app session token (xoxc-).
158
158
  Import from Slack desktop: slack auth login`);if((a==="invalid_auth"||a==="not_authed")&&!r)throw Error(`drafts.list also requires the xoxd session cookie.
159
- Attach it with: slack auth chrome (macOS) or slack auth firefox`);throw Error(`Slack error on ${t}: ${a}`)}return i}function Bt(e,t,n={},r){let s=new URLSearchParams({token:e,...n});return Af(e,t,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:s.toString()},r)}function ie(e,t,n,r){let s=new URLSearchParams(n).toString();return cc(e,`${t}?${s}`,{method:"GET"},r)}function He(e,t,n,r){return cc(e,t,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(n)},r)}async function uc(e,t){let n=await ie(e,"auth.test",{},t);return{team:n.team??"",teamId:n.team_id??"",url:n.url??"",user:n.user??"",userId:n.user_id??""}}async function lc(e,t){t=e.startsWith("xoxc-")?t??Yt():void 0;let n={Authorization:`Bearer ${e}`};if(t)n.Cookie=`d=${t}`;let r=await fetch(`${zr()}/auth.test`,{method:"GET",headers:n});if(r.status===429){let i=parseInt(r.headers.get("retry-after")??"60",10);throw new Mt(isNaN(i)?60:i)}let s=r.headers.get("x-oauth-scopes")??"",o=await r.json();if(o.ok!==!0)throw Error(`Slack error on auth.test: ${o.error??"unknown"}`);return{userId:o.user_id??"",user:o.user??"",botId:o.bot_id??"",team:o.team??"",url:o.url??"",scopes:s.split(",").map((i)=>i.trim()).filter(Boolean)}}async function Ve(e,t,n=20,r,s,o,i){let a={channel:t,limit:String(n)};if(r!==void 0)a.oldest=r;if(s!==void 0)a.cursor=s;if(i)a.inclusive="true";return ie(e,"conversations.history",a,o)}async function qe(e,t,n,r=50,s){return ie(e,"conversations.replies",{channel:t,ts:n,limit:String(r)},s)}async function fc(e,t,n){return ie(e,"files.info",{file:t},n)}async function dc(e,t={},n){let r={count:String(Math.min(Math.max(t.count??100,1),200)),page:String(Math.max(t.page??1,1))};if(t.types)r.types=t.types;if(t.channel)r.channel=t.channel;if(t.user)r.user=t.user;return ie(e,"files.list",r,n)}async function hc(e,t,n={},r){let s={list_id:t};if(n.limit)s.limit=String(n.limit);if(n.cursor)s.cursor=n.cursor;return Bt(e,"lists.records.list",s,r)}async function pc(e,t,n,r,s){return ie(e,"search.messages",{query:t,sort:"timestamp",sort_dir:"desc",count:String(Math.min(Math.max(n,1),100)),page:String(Math.max(r,1))},s)}async function gc(e,t,n){return pc(e,t,100,1,n)}async function Hr(e,t,n,r){let o=1,i=[],a={ok:!0,messages:{}};while(!0){let u=await pc(e,t,100,o,r),f=mn(u,["messages","matches"]),l=Array.isArray(f)?f:[];i.push(...l);let d=Number(mn(u,["messages","paging","pages"])??1);if(a=u,l.length===0||o>=d||i.length>=n)break;o+=1}let c=a;if(!c.messages)c.messages={};return c.messages.matches=i.slice(0,n),c}async function Fs(e,t,n,r,s,o,i){let a=i?{channel:t,text:n}:{channel:t,text:n,blocks:[{type:"markdown",text:n}]};if(r!==void 0)a.thread_ts=r;if(s&&r!==void 0)a.reply_broadcast=!0;return(await He(e,"chat.postMessage",a,o)).ts??""}async function mc(e,t,n,r,s,o){let i={channel:t,text:n,post_at:r,blocks:[{type:"markdown",text:n}]};if(s!==void 0)i.thread_ts=s;return(await He(e,"chat.scheduleMessage",i,o)).scheduled_message_id??""}async function Dc(e,t,n){let r={};if(t)r.channel=t;return ie(e,"chat.scheduledMessages.list",r,n)}async function yc(e,t,n,r){await He(e,"chat.deleteScheduledMessage",{channel:t,scheduled_message_id:n},r)}async function Dn(e,t,n,r){return(await ie(e,"chat.getPermalink",{channel:t,message_ts:n},r)).permalink??""}async function Zt(e,t,n,r,s,o){return(await He(e,"chat.update",o?{channel:t,ts:n,text:r}:{channel:t,ts:n,text:r,blocks:[{type:"markdown",text:r}]},s)).ts??n}async function bc(e,t,n,r){await He(e,"chat.delete",{channel:t,ts:n},r)}async function Qt(e,t,n,r,s){await He(e,"reactions.add",{channel:t,timestamp:n,name:r},s)}async function wc(e,t,n,r){return((await ie(e,"reactions.get",{channel:t,timestamp:n,full:"true"},r)).message?.reactions??[]).map((o)=>({name:String(o.name??""),users:Array.isArray(o.users)?o.users.map(String):[]}))}async function yn(e,t,n,r,s){await He(e,"reactions.remove",{channel:t,timestamp:n,name:r},s)}async function Fc(e,t,n=!1,r){let s=await He(e,"conversations.create",{name:t,is_private:n},r);return{id:s.channel?.id??"",name:s.channel?.name??t}}async function Cc(e,t,n,r){await He(e,"conversations.invite",{channel:t,users:n.join(",")},r)}async function bn(e,t){let n=[],r="";while(!0){let s={limit:"200",types:"public_channel,private_channel,im,mpim"};if(r)s.cursor=r;let o=await ie(e,"conversations.list",s,t);if(n.push(...o.channels??[]),r=o.response_metadata?.next_cursor??"",!r)break}return{channels:n}}async function et(e,t,n){let s=(await He(e,"conversations.open",{users:t},n)).channel?.id;if(!s)throw Error(`Failed to open DM with user ${t}`);return s}async function Ec(e,t,n){let r="";while(!0){let s={types:"im",limit:"200"};if(r)s.cursor=r;let o=await ie(e,"conversations.list",s,n);for(let i of o.channels??[])if(i.user===t)return String(i.id??"");if(r=o.response_metadata?.next_cursor??"",!r)break}return""}async function Kr(e,t,n,r){let s=await Ec(e,t,n);if(s)return s;let o=r?`${r} (${t})`:t;throw Error(`No existing DM with ${o}. Open it once in Slack first.`)}function Rt(e){return e.toLowerCase().replace(/[-_\s]/g,"")}function ic(e,t){let n=Rt(e.name??""),r=Rt(e.real_name??e.profile?.real_name??""),s=Rt(e.profile?.display_name??"");return n===t||r===t||!!s&&s===t}var xc=200;async function _c(e,t,n){let r=0,s=new Set,o="";while(!0){let f={limit:"200"};if(o)f.cursor=o;let l=await ie(e,"users.list",f,n);for(let d of l.members??[]){if(r++,d.id)s.add(d.id);if(ic(d,t))return{id:d.id??"",workspaceCount:r,connectCount:0,skipped:0,capped:!1}}if(o=l.response_metadata?.next_cursor??"",!o)break}let i=0,a=0,c=!1,u="";while(!0){let f={types:"im",limit:"200"};if(u)f.cursor=u;let l=await ie(e,"conversations.list",f,n);for(let d of l.channels??[]){let p=d.user;if(!p||s.has(p))continue;if(i>=xc){c=!0;break}s.add(p),i++;let m;try{m=(await ie(e,"users.info",{user:p},n)).user}catch(h){if(h instanceof Mt)throw h;a++;continue}if(m&&ic(m,t))return{id:p,dm:String(d.id??""),workspaceCount:r,connectCount:i,skipped:a,capped:c}}if(c)break;if(u=l.response_metadata?.next_cursor??"",!u)break}return{id:"",workspaceCount:r,connectCount:i,skipped:a,capped:c}}function kc(e,t){if(t.workspaceCount===0)return Error(`Cannot resolve ${e}: users.list returned no members at all, so nothing could have matched.
159
+ Attach it with: slack auth chrome (macOS) or slack auth firefox`);throw Error(`Slack error on ${t}: ${a}`)}return i}function Bt(e,t,n={},r){let s=new URLSearchParams({token:e,...n});return Wf(e,t,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:s.toString()},r)}function ie(e,t,n,r){let s=new URLSearchParams(n).toString();return yc(e,`${t}?${s}`,{method:"GET"},r)}function He(e,t,n,r){return yc(e,t,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(n)},r)}async function bc(e,t){let n=await ie(e,"auth.test",{},t);return{team:n.team??"",teamId:n.team_id??"",url:n.url??"",user:n.user??"",userId:n.user_id??""}}async function wc(e,t){t=e.startsWith("xoxc-")?t??Gt():void 0;let n={Authorization:`Bearer ${e}`};if(t)n.Cookie=`d=${t}`;let r=await fetch(`${Xr()}/auth.test`,{method:"GET",headers:n});if(r.status===429){let i=parseInt(r.headers.get("retry-after")??"60",10);throw new Mt(isNaN(i)?60:i)}let s=r.headers.get("x-oauth-scopes")??"",o=await r.json();if(o.ok!==!0)throw Error(`Slack error on auth.test: ${o.error??"unknown"}`);return{userId:o.user_id??"",user:o.user??"",botId:o.bot_id??"",team:o.team??"",url:o.url??"",scopes:s.split(",").map((i)=>i.trim()).filter(Boolean)}}async function Ve(e,t,n=20,r,s,o,i){let a={channel:t,limit:String(n)};if(r!==void 0)a.oldest=r;if(s!==void 0)a.cursor=s;if(i)a.inclusive="true";return ie(e,"conversations.history",a,o)}async function qe(e,t,n,r=50,s){return ie(e,"conversations.replies",{channel:t,ts:n,limit:String(r)},s)}async function Fc(e,t,n){return ie(e,"files.info",{file:t},n)}async function Cc(e,t={},n){let r={count:String(Math.min(Math.max(t.count??100,1),200)),page:String(Math.max(t.page??1,1))};if(t.types)r.types=t.types;if(t.channel)r.channel=t.channel;if(t.user)r.user=t.user;return ie(e,"files.list",r,n)}async function Ec(e,t,n={},r){let s={list_id:t};if(n.limit)s.limit=String(n.limit);if(n.cursor)s.cursor=n.cursor;return Bt(e,"lists.records.list",s,r)}async function xc(e,t,n,r,s){return ie(e,"search.messages",{query:t,sort:"timestamp",sort_dir:"desc",count:String(Math.min(Math.max(n,1),100)),page:String(Math.max(r,1))},s)}async function _c(e,t,n){return xc(e,t,100,1,n)}async function Vr(e,t,n,r){let o=1,i=[],a={ok:!0,messages:{}};while(!0){let u=await xc(e,t,100,o,r),f=yn(u,["messages","matches"]),l=Array.isArray(f)?f:[];i.push(...l);let d=Number(yn(u,["messages","paging","pages"])??1);if(a=u,l.length===0||o>=d||i.length>=n)break;o+=1}let c=a;if(!c.messages)c.messages={};return c.messages.matches=i.slice(0,n),c}async function Es(e,t,n,r,s,o,i){let a=i?{channel:t,text:n}:{channel:t,text:n,blocks:[{type:"markdown",text:n}]};if(r!==void 0)a.thread_ts=r;if(s&&r!==void 0)a.reply_broadcast=!0;return(await He(e,"chat.postMessage",a,o)).ts??""}async function kc(e,t,n,r,s,o){let i={channel:t,text:n,post_at:r,blocks:[{type:"markdown",text:n}]};if(s!==void 0)i.thread_ts=s;return(await He(e,"chat.scheduleMessage",i,o)).scheduled_message_id??""}async function Sc(e,t,n){let r={};if(t)r.channel=t;return ie(e,"chat.scheduledMessages.list",r,n)}async function Ac(e,t,n,r){await He(e,"chat.deleteScheduledMessage",{channel:t,scheduled_message_id:n},r)}async function bn(e,t,n,r){return(await ie(e,"chat.getPermalink",{channel:t,message_ts:n},r)).permalink??""}async function Zt(e,t,n,r,s,o){return(await He(e,"chat.update",o?{channel:t,ts:n,text:r}:{channel:t,ts:n,text:r,blocks:[{type:"markdown",text:r}]},s)).ts??n}async function $c(e,t,n,r){await He(e,"chat.delete",{channel:t,ts:n},r)}async function Qt(e,t,n,r,s){await He(e,"reactions.add",{channel:t,timestamp:n,name:r},s)}async function Oc(e,t,n,r){return((await ie(e,"reactions.get",{channel:t,timestamp:n,full:"true"},r)).message?.reactions??[]).map((o)=>({name:String(o.name??""),users:Array.isArray(o.users)?o.users.map(String):[]}))}async function wn(e,t,n,r,s){await He(e,"reactions.remove",{channel:t,timestamp:n,name:r},s)}async function Ic(e,t,n=!1,r){let s=await He(e,"conversations.create",{name:t,is_private:n},r);return{id:s.channel?.id??"",name:s.channel?.name??t}}async function Tc(e,t,n,r){await He(e,"conversations.invite",{channel:t,users:n.join(",")},r)}async function Fn(e,t){let n=[],r="";while(!0){let s={limit:"200",types:"public_channel,private_channel,im,mpim"};if(r)s.cursor=r;let o=await ie(e,"conversations.list",s,t);if(n.push(...o.channels??[]),r=o.response_metadata?.next_cursor??"",!r)break}return{channels:n}}async function et(e,t,n){let s=(await He(e,"conversations.open",{users:t},n)).channel?.id;if(!s)throw Error(`Failed to open DM with user ${t}`);return s}async function Pc(e,t,n){let r="";while(!0){let s={types:"im",limit:"200"};if(r)s.cursor=r;let o=await ie(e,"conversations.list",s,n);for(let i of o.channels??[])if(i.user===t)return String(i.id??"");if(r=o.response_metadata?.next_cursor??"",!r)break}return""}async function Gr(e,t,n,r){let s=await Pc(e,t,n);if(s)return s;let o=r?`${r} (${t})`:t;throw Error(`No existing DM with ${o}. Open it once in Slack first.`)}function Rt(e){return e.toLowerCase().replace(/[-_\s]/g,"")}function mc(e,t){let n=Rt(e.name??""),r=Rt(e.real_name??e.profile?.real_name??""),s=Rt(e.profile?.display_name??"");return n===t||r===t||!!s&&s===t}var Rc=200;async function Mc(e,t,n){let r=0,s=new Set,o="";while(!0){let f={limit:"200"};if(o)f.cursor=o;let l=await ie(e,"users.list",f,n);for(let d of l.members??[]){if(r++,d.id)s.add(d.id);if(mc(d,t))return{id:d.id??"",workspaceCount:r,connectCount:0,skipped:0,capped:!1}}if(o=l.response_metadata?.next_cursor??"",!o)break}let i=0,a=0,c=!1,u="";while(!0){let f={types:"im",limit:"200"};if(u)f.cursor=u;let l=await ie(e,"conversations.list",f,n);for(let d of l.channels??[]){let h=d.user;if(!h||s.has(h))continue;if(i>=Rc){c=!0;break}s.add(h),i++;let m;try{m=(await ie(e,"users.info",{user:h},n)).user}catch(p){if(p instanceof Mt)throw p;a++;continue}if(m&&mc(m,t))return{id:h,dm:String(d.id??""),workspaceCount:r,connectCount:i,skipped:a,capped:c}}if(c)break;if(u=l.response_metadata?.next_cursor??"",!u)break}return{id:"",workspaceCount:r,connectCount:i,skipped:a,capped:c}}function Bc(e,t){if(t.workspaceCount===0)return Error(`Cannot resolve ${e}: users.list returned no members at all, so nothing could have matched.
160
160
  `+`That is a token or scope fault, not a wrong handle — this says nothing about whether ${e} exists.
161
- Check who you are: slack auth ls`);let n=t.connectCount?`${t.workspaceCount} workspace account(s) and ${t.connectCount} Slack Connect DM partner(s)`:`${t.workspaceCount} workspace account(s)`,r=[];if(t.capped)r.push(`stopped after ${xc} Slack Connect DM partners, so there may be more`);if(t.skipped)r.push(`${t.skipped} DM partner profile(s) could not be read and were never compared`);return Error(`User not found: ${e} — searched ${n}, none matched.
161
+ Check who you are: slack auth ls`);let n=t.connectCount?`${t.workspaceCount} workspace account(s) and ${t.connectCount} Slack Connect DM partner(s)`:`${t.workspaceCount} workspace account(s)`,r=[];if(t.capped)r.push(`stopped after ${Rc} Slack Connect DM partners, so there may be more`);if(t.skipped)r.push(`${t.skipped} DM partner profile(s) could not be read and were never compared`);return Error(`User not found: ${e} — searched ${n}, none matched.
162
162
  `+(r.length?`This search was incomplete: ${r.join("; ")}.
163
163
  `:"")+`Slack Connect people from another workspace are not in users.list, so if they never
164
164
  DMed you they cannot be found by name at all. Look them up and use their ID:
165
- slack user ls --external`)}async function tt(e,t,n){let r=t.startsWith("@")?t.slice(1):t;if(Jr(r))return r;if(!t.startsWith("@"))throw Error(`Expected @user or a user ID, got: ${t}`);let s=Rt(r),o=await ie(e,"auth.test",{},n);if(s==="you"||s==="me"||Rt(o.user??"")===s){if(!o.user_id)throw Error("auth.test did not return user_id");return o.user_id}let i=await _c(e,s,n);if(i.id)return i.id;throw kc(t,i)}function Nt(e){let t=e.match(/(?:app\.slack\.com\/client\/T[A-Za-z0-9]+|[A-Za-z0-9-]+\.slack\.com\/archives)\/([A-Za-z0-9]+)(?:\/p(\d{10})(\d{6}))?/);if(!t)return;let n=t[1],r=t[2]&&t[3]?`${t[2]}.${t[3]}`:void 0,s=e.indexOf("?"),o=s>=0?new URLSearchParams(e.slice(s)):void 0,i=o?.get("thread_ts")??void 0,u={channel:o?.get("cid")??void 0??n};if(r)u.ts=r;if(i)u.threadTs=i;return u}function $f(e){return Nt(e)?.channel}function ac(e){return/^[CDG][A-Z0-9]{8,}$/.test(e)}function Jr(e){return/^[UW][A-Z0-9]{6,}$/.test(e)}async function De(e,t,n){let r=$f(t);if(r)return r;if(!t.startsWith("@")&&!t.startsWith("#")){if(ac(t))return t;if(Jr(t))return Kr(e,t,n);throw Error(`Target must start with # or @ (or be a Slack URL/ID), got: ${t}`)}if(t.startsWith("#")&&ac(t.slice(1)))return t.slice(1);let s=t.startsWith("@"),o=t.slice(1),i=Rt(o);if(s){if(Jr(o))return Kr(e,o,n);let u=await ie(e,"auth.test",{},n);if(i==="you"||i==="me"||Rt(u.user??"")===i){let d=u.user_id;if(!d)throw Error("auth.test did not return user_id");return await Ec(e,d,n)||et(e,d,n)}let l=await _c(e,i,n);if(!l.id)throw kc(t,l);if(l.dm)return l.dm;return Kr(e,l.id,n,t)}let a=o.toLowerCase(),c="";while(!0){let u={limit:"200",types:"public_channel,private_channel",exclude_archived:"true"};if(c)u.cursor=c;let f=await ie(e,"conversations.list",u,n);for(let l of f.channels??[])if(String(l.name??"").toLowerCase()===a)return String(l.id??"");if(c=f.response_metadata?.next_cursor??"",!c)break}throw Error(`channel not found: ${t}`)}async function wn(e,t,n){try{let r=await ie(e,"users.info",{user:t},n),s=r.user?.profile?.display_name,o=s&&s.length>0?s:r.user?.real_name??r.user?.name??t,i=r.user?.name??t;return[o,i]}catch{return[t,t]}}async function Ne(e,t,n){try{let r=await ie(e,"users.info",{user:t},n),s=r.user?.profile?.display_name;if(s&&s.length>0)return s;return r.user?.real_name??r.user?.name??t}catch{return t}}async function Sc(e,t){let n=[],r="";while(!0){let s={limit:"200"};if(r)s.cursor=r;let o=await ie(e,"users.list",s,t);if(n.push(...o.members??[]),r=o.response_metadata?.next_cursor??"",!r)break}return{members:n}}async function Ac(e,t,n){let r=[],s="";while(!0){let o={channel:t,limit:"200"};if(s)o.cursor=s;let i=await ie(e,"conversations.members",o,n);if(r.push(...i.members??[]),s=i.response_metadata?.next_cursor??"",!s)break}return r}async function Fn(e,t){return Bt(e,"drafts.list",{},t)}async function $c(e,t,n,r){let{randomUUID:s}=await import("node:crypto"),o=JSON.stringify([{type:"rich_text",elements:[{type:"rich_text_section",elements:[{type:"text",text:n}]}]}]);return Bt(e,"drafts.create",{client_msg_id:s(),destinations:JSON.stringify([{channel_id:t}]),blocks:o,file_ids:JSON.stringify([]),is_from_composer:"true"},r)}async function Oc(e,t,n,r,s){let o=JSON.stringify([{type:"rich_text",elements:[{type:"rich_text_section",elements:[{type:"text",text:r}]}]}]),i=(Date.now()/1000).toFixed(6);return Bt(e,"drafts.update",{draft_id:t,client_last_updated_ts:i,destinations:JSON.stringify([{channel_id:n}]),blocks:o,file_ids:JSON.stringify([])},s)}async function Ic(e,t,n){return Bt(e,"conversations.info",{channel:t},n)}async function Cn(e,t,n){return ie(e,"users.info",{user:t},n)}async function En(e,t,n){return ie(e,"conversations.info",{channel:t},n)}async function Tc(e,t,n){let r=(Date.now()/1000).toFixed(6);return Bt(e,"drafts.delete",{draft_id:t,client_last_updated_ts:r},n)}async function qr(e,t){let n=await Bt(e,"auth.test",{},t);return{userId:String(n.user_id??""),teamId:String(n.team_id??"")}}async function Pc(e,t,n,r={},s){let{statSync:o,readFileSync:i}=await import("node:fs"),{basename:a}=await import("node:path"),c=o(n),u=a(n),f=await ie(e,"files.getUploadURLExternal",{filename:u,length:String(c.size)},s),{upload_url:l,file_id:d}=f;if(!l||!d)throw Error("files.getUploadURLExternal returned no upload_url/file_id");let p=i(n),m=await fetch(l,{method:"POST",headers:{"Content-Type":"application/octet-stream"},body:p});if(!m.ok)throw Error(`Upload PUT failed: ${m.status} ${m.statusText}`);let h={files:[{id:d,title:r.title??u}],channel_id:t};if(r.threadTs)h.thread_ts=r.threadTs;if(r.initialComment)h.initial_comment=r.initialComment;let y=await He(e,"files.completeUploadExternal",h,s),E={fileId:d},F=y.files?.[0]?.permalink;if(F)E.permalink=F;return E}function mn(e,t){let n=e;for(let r of t){if(n===void 0||n===null)return;if(typeof r==="number"){if(!Array.isArray(n))return;n=n[r]??void 0}else{if(typeof n!=="object"||Array.isArray(n))return;n=n[r]}}return n}import{existsSync as jf,readFileSync as Lf}from"node:fs";import{homedir as Wf}from"node:os";import{join as Uf}from"node:path";import{existsSync as Of,mkdirSync as If,readFileSync as Tf,writeFileSync as Pf}from"node:fs";import{homedir as Rf}from"node:os";import{dirname as Mf,join as Bf}from"node:path";var Nf=3600000,Cs={now:()=>Date.now(),path:()=>Bf(process.env.HOME||Rf(),".config","slack-cli","cache.json")},Es=!0,lt;function Rc(){return{channels:{},users:{}}}function Yr(){if(lt)return lt;if(lt=Rc(),!Es)return lt;try{let e=Cs.path();if(!Of(e))return lt;let t=JSON.parse(Tf(e,"utf8"));for(let n of["channels","users"]){let r=t?.[n];if(!r||typeof r!=="object"||Array.isArray(r))continue;for(let[s,o]of Object.entries(r))if(o&&typeof o==="object"&&typeof o.value==="string"&&typeof o.expires==="number")lt[n][s]={value:o.value,expires:o.expires}}}catch{lt=Rc()}return lt}function vf(e){if(!Es)return;try{let t=Cs.path();If(Mf(t),{recursive:!0}),Pf(t,JSON.stringify(e,null,2)+`
166
- `)}catch{}}function Mc(e,t){return e?`${e} ${t}`:void 0}function xs(e,t,n){if(!Es)return;let r=Mc(t,n);if(!r)return;let s=Yr()[e][r];if(!s)return;if(s.expires<=Cs.now()){delete Yr()[e][r];return}return s.value}function _s(e,t,n,r,s=Nf){if(!Es)return;let o=Mc(t,n);if(!o)return;let i=Yr();i[e][o]={value:r,expires:Cs.now()+s},vf(i)}var Xr={marker:"pushpin",progress:{done:"white_check_mark",dropped:"no_entry_sign",doing:"eyes",pending:"hourglass_flowing_sand"},flags:{alert:"exclamation","needs-discussion":"thinking_face",waiting:"speech_balloon",blocked:"lock"}},en=["done","dropped","doing","pending"],jc=["alert","needs-discussion","waiting","blocked"];function Kf(){return Uf(process.env.HOME||Wf(),".config","slack-cli","todo.json")}function ks(e){return e.replace(/^:+|:+$/g,"")}function xn(e=Kf()){let t={marker:Xr.marker,progress:{...Xr.progress},flags:{...Xr.flags}};try{if(!jf(e))return t;let n=JSON.parse(Lf(e,"utf8"));if(typeof n.marker==="string"&&n.marker.trim())t.marker=ks(n.marker.trim());for(let r of en){let s=n.progress?.[r];if(typeof s==="string"&&s.trim())t.progress[r]=ks(s.trim())}for(let r of jc){let s=n.flags?.[r];if(typeof s==="string"&&s.trim())t.flags[r]=ks(s.trim())}}catch{}return t}function Bc(e,t,n=!1){return`${n?"-":""}${t?"has":"hasmy"}::${ks(e)}:`}function Lc(e,t,n={}){let r=n.shared===!0,s=(a)=>Bc(a,r),o=(a)=>Bc(a,r,!0),i=[];if(e==="untriaged")i.push(s(t.marker),...en.map((a)=>o(t.progress[a])));else if(e==="stuck")i.push(s(t.marker),o(t.progress.done),o(t.progress.dropped),`(${jc.map((a)=>s(t.flags[a])).join(" OR ")})`);else if(e==="open")i.push(s(t.marker),o(t.progress.done),o(t.progress.dropped));else{let a=en.indexOf(e);i.push(s(t.progress[e]));for(let c of en.slice(0,a))i.push(o(t.progress[c]))}if(n.in){let a=n.in.startsWith("#")||n.in.startsWith("@")?n.in:`#${n.in}`;i.push(`in:${a}`)}if(n.from){let a=n.from==="me"||n.from.startsWith("@")?n.from:`@${n.from}`;i.push(`from:${a}`)}return i.join(" ")}var Jf=3,zf={sleep:(e)=>Hf()?Promise.resolve():new Promise((t)=>setTimeout(t,e))};function Hf(){return!!process.env.VITEST||!1||!!process.env.BUN_TEST}async function _e(e,t,n=Jf){for(let r=0;;r++)try{return await t()}catch(s){if(!(s instanceof Ke))throw s;if(r>=n)throw Error(`Slack rate limit hit on ${e} — gave up after ${n} retries. Try again in a minute.`);console.error(`Warning: Slack rate limit hit on ${e} — backing off for ${s.retryAfter}s`),await zf.sleep(s.retryAfter*1000)}}var Nc=new Map;async function Wc(e,t){let n=Nc.get(e);if(n)return n;let r=await _e("auth.test",()=>Xt(e,t)),s={userId:r.userId,teamId:r.teamId};return Nc.set(e,s),s}async function Uc(e,t){return(await Wc(e,t)).userId}async function Gr(e,t){try{return(await Wc(e,t)).teamId}catch{return""}}async function Vr(e,t,n,r){if(!t.startsWith("#"))return n(e,t,r);let s=await Gr(e,r),o=xs("channels",s,t);if(o)return o;let i=await _e("resolveChannel",()=>n(e,t,r));return _s("channels",s,t,i),i}async function Kc(e,t,n,r){let s=await Gr(e,r),o=xs("users",s,t);if(o)return o;let i=await _e("users.info",()=>n(e,t,r));if(i&&i!==t)_s("users",s,t,i);return i}async function Jc(e,t,n,r){let s=await Gr(e,r),o=xs("users",s,`tz:${t}`);if(o)return o==="?"?null:o;let i=null;try{let a=await _e("users.info",()=>n(e,t,r));if(a?.user?.is_bot===!0||t==="USLACKBOT")return vc(s,t,null);let c=a?.user?.tz;i=typeof c==="string"&&c?c:null}catch{return null}return vc(s,t,i)}function vc(e,t,n){return _s("users",e,`tz:${t}`,n??"?"),n}async function zc(e,t,n,r,s,o){let i=s.progress[r],a=await Uc(e,o),c=await _e("reactions.get",()=>ga(e,t,n,o)),u=new Set(c.filter((p)=>p.users.includes(a)).map((p)=>p.name)),f=en.map((p)=>s.progress[p]).filter((p)=>u.has(p));if(f.length===1&&f[0]===i)return{noop:!0,removed:[],leftover:[]};if(!u.has(i))await _e("reactions.add",()=>ts(e,t,n,i,o));let l=[],d=[];for(let p of f){if(p===i)continue;try{await _e("reactions.remove",()=>ns(e,t,n,p,o)),l.push(p)}catch{d.push(p)}}return{noop:!1,added:r,removed:l,leftover:d}}async function Hc(e,t,n,r,s,o,i){let a=s.flags[r];if(o)await _e("reactions.remove",()=>ns(e,t,n,a,i));else await _e("reactions.add",()=>ts(e,t,n,a,i));return a}var Zr=1000;async function qc(e,t,n,r={}){let s=r.limit??Zr,o=r.cookie,i=await Uc(e,o),a=en.map((d)=>n.progress[d]),c=[],u=0,f,l=!1;while(u<s){let d=Math.min(200,s-u),p=await _e("conversations.history",()=>dn(e,t,d,void 0,f,o)),m=p.messages??[];u+=m.length;for(let h of m){let y=String(h.ts??"");if(!y)continue;let E=new Set((h.reactions??[]).filter((A)=>(A.users??[]).map(String).includes(i)).map((A)=>String(A.name??""))),F=a.filter((A)=>E.has(A));if(F.length<2)continue;c.push({ts:y,text:String(h.text??"").split(`
167
- `)[0]??"",emoji:F,keep:F[0]})}if(f=p.response_metadata?.next_cursor||void 0,!f||m.length===0)break;if(u>=s){l=!0;break}}if(r.fix)for(let d of c)try{try{await _e("reactions.add",()=>ts(e,t,d.ts,d.keep,o))}catch(p){if(!(p instanceof Error)||!/already_reacted/.test(p.message))throw p}for(let p of d.emoji){if(p===d.keep)continue;await _e("reactions.remove",()=>ns(e,t,d.ts,p,o))}d.fixed=!0}catch(p){d.fixed=!1,d.error=p instanceof Error?p.message:String(p)}return{scanned:u,findings:c,truncated:l}}var qf=!0,Yf;function Qr(e){if(qf=e,!e)Yf=void 0}function ft(e){return e.replace(new RegExp(`[${"\\\\¥"}](.)`,"gs"),(t,n)=>{switch(n){case"n":return`
168
- `;case"t":return"\t";case"\\":case"¥":return n==="¥"?"¥":"\\";default:return t}})}function vt(e){return e.toLowerCase().replace(/[-_\s]/g,"")}function dt(e){return e&&typeof e==="object"&&!Array.isArray(e)?e:{}}function Xf(e,t){let n=vt(t),r=dt(e.profile);for(let o of[e.name,e.real_name,r.display_name,r.real_name])if(typeof o==="string"&&o&&vt(o)===n)return!0;let s=typeof r.email==="string"?r.email.toLowerCase():"";return s!==""&&s===t.toLowerCase()}function Gf(e){let t=dt(e.profile),n=new Set;for(let r of[t.display_name,e.real_name,e.name,t.real_name])if(typeof r==="string"&&r){let s=vt(r);if(s.length>=2)n.add(s)}return[...n]}function Vf(e,t){let n=vt(e),r,s=!1;for(let o of t){let i=typeof o.id==="string"?o.id:"";if(!i)continue;for(let a of Gf(o)){let c=-1;if(n===a)c=e.length;else for(let u of Xc)if(e.length>u.length&&e.endsWith(u)&&vt(e.slice(0,e.length-u.length))===a){c=e.length-u.length;break}if(c<0)continue;if(!r||a.length>r.formLen)r={userId:i,matchLen:c,formLen:a.length,display:no(o)},s=!1;else if(a.length===r.formLen&&r.userId!==i)s=!0}}if(!r)return;return s?"ambiguous":{userId:r.userId,matchLen:r.matchLen,display:r.display}}async function jt(e,t,n,r){let s=`[${Gc}ー]+`,o=`${s}(?:[._-]+${s})*`,i=new RegExp(`(?<![A-Za-z0-9._@<-])@(${o})`,"gu"),a=new Set;for(let F of t.matchAll(i))a.add(F[1]);if(a.size===0)return{text:t,resolved:[],unresolved:[]};let c=new Map;for(let F of a)c.set(F,{status:"pending"});let u=(F)=>{for(let A of a){if(c.get(A).status!=="pending")continue;if(to(A)){let k=Vf(A,F);if(k==="ambiguous")c.set(A,{status:"ambiguous"});else if(k)c.set(A,{status:"resolved",userId:k.userId,matchLen:k.matchLen,display:k.display})}else{let k=F.filter((I)=>Xf(I,A)),B=new Set(k.map((I)=>typeof I.id==="string"?I.id:"").filter(Boolean));if(B.size===1){let I=k.find((R)=>typeof R.id==="string");c.set(A,{status:"resolved",userId:I.id,matchLen:A.length,display:no(I)})}else if(B.size>1)c.set(A,{status:"ambiguous"})}}},f=!1;try{let F=await os(e,r);u((F.members??[]).map(dt)),f=!0}catch{f=!1}let l=[...a].some((F)=>c.get(F).status==="pending"),d=!1,p=!0;if(l&&n){d=!0;try{let F=await Ar(e,n,r),A=[];for(let k of F){let B=dt(await $r(e,k,r)),I=dt(B.user);if(typeof I.id!=="string")I.id=k;A.push(I)}u(A)}catch{p=!1}}let m=f&&(n?d&&p:!0),h=[],y=[];for(let F of a){let A=c.get(F);if(A.status==="resolved")h.push({surface:`@${F.slice(0,A.matchLen)}`,display:A.display,userId:A.userId});else if(A.status==="ambiguous")y.push({surface:`@${F}`,reason:"ambiguous"});else y.push({surface:`@${F}`,reason:m?"no-match":"unavailable"})}return{text:t.replace(i,(F,A)=>{let k=c.get(A);if(k&&k.status==="resolved")return`<@${k.userId}>${A.slice(k.matchLen)}`;return F}),resolved:h,unresolved:y}}function _n(e){let t=[],n=!1;for(let r of e)if(r.reason==="ambiguous")t.push(`${r.surface} matches multiple people — not tagged, sent as plain text (use <@USERID> to tag)`);else if(r.reason==="unavailable"){if(n)continue;t.push("could not fetch the user list (users:read missing or an API/connection error) — @mentions not tagged, sent as plain text"),n=!0}else t.push(`${r.surface} matched no one — not tagged, sent as plain text`);return t}async function Yc(e,t,n,r={}){let s=r.warn??((i)=>process.stderr.write(`${i}
169
- `)),o=await jt(e,t,n,r.cookie);for(let i of _n(o.unresolved))s(`warn: ${i}`);return o.text}var Xc=["さん","さま","様","君","くん","ちゃん","氏","先生","先輩","殿","老师","老師","兄","姐","哥","姐妹"],Gc="\\p{Script=Han}\\p{Script=Hiragana}\\p{Script=Katakana}A-Za-z0-9";function to(e){return/[\p{Script=Han}\p{Script=Hiragana}\p{Script=Katakana}]/u.test(e)}function Zf(e){let t=[],n=new RegExp(`([${Gc}]{1,12})(${Xc.join("|")})`,"gu");for(let r of e.matchAll(n))t.push({ref:r[1],honorific:r[2]});for(let r of e.matchAll(/\b(?:dear|hi|hello|hey)\b[ \t]+([A-Z][A-Za-z'’-]{1,20})/gi))t.push({ref:r[1],honorific:""});for(let r of e.matchAll(/(?:^|\n)[ \t]*([A-Z][A-Za-z'’-]{1,20}),/g))t.push({ref:r[1],honorific:""});return t}function Qf(e){let t=dt(e.profile),n=new Set;for(let r of[e.name,e.real_name,t.display_name,t.real_name]){if(typeof r!=="string"||!r)continue;for(let s of[r,...r.split(/\s+/)]){let o=vt(s);if(o.length>=2)n.add(o)}}return[...n]}function ed(e,t){let n=vt(e);if(n.length<2)return;for(let r of t)if(n===r)return r;if(to(e)){for(let r of t)if(n.includes(r)||r.includes(n))return r}return}function no(e){return[dt(e.profile).display_name,e.real_name,e.name].filter((r)=>typeof r==="string"&&r!=="")[0]??String(e.id??"?")}async function Vc(e,t,n){let r=Zf(t);if(r.length===0)return[];let s=new Set;for(let u of t.matchAll(/<@([A-Z0-9]+)(?:\|[^>]*)?>/g))s.add(u[1]);let i=((await os(e,n)).members??[]).map(dt).filter((u)=>u.deleted!==!0&&u.is_bot!==!0&&u.id!=="USLACKBOT").map((u)=>({id:typeof u.id==="string"?u.id:"",forms:Qf(u),display:no(u)})).filter((u)=>u.id!==""),a=[],c=new Set;for(let{ref:u,honorific:f}of r)for(let l of i){let d=ed(u,l.forms);if(!d)continue;if(s.has(l.id)||c.has(l.id))break;c.add(l.id),a.push({surface:to(u)?`${d}${f}`:u,display:l.display,userId:l.id});break}return a}async function tn(e,t,n,r){let s=t,o=[],i=s,a=0;while(!0){let c=i.indexOf("<@U",a);if(c===-1)break;let u=i.slice(c+2),f=u.search(/[>|]/),l=f===-1?u:u.slice(0,f);if(l.length>=9)o.push(l);a=c+1}for(let c of o){if(!n.has(c))n.set(c,await rs(e,c,r));let u=n.get(c)??c;s=s.replaceAll(`<@${c}>`,`@${u}`),s=s.replace(new RegExp(`<@${c}\\|[^>]*>`,"g"),`@${u}`)}return s}function kn(e){return e.replace(/<!date\^(\d+)\^[^|>]*(?:\|([^>]*))?>/g,(t,n,r)=>{let s=Number(n);if(!Number.isFinite(s))return r??"date";let o=new Date(s*1000);if(Number.isNaN(o.getTime()))return r??"date";let i=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],a=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],c=i[o.getUTCDay()]??"",u=a[o.getUTCMonth()]??"";return`${c}, ${u} ${String(o.getUTCDate()).padStart(2,"0")}, ${o.getUTCFullYear()}`})}function Zc(e,t=new Date){let n=new Date(e*1000),r=eo(t),s=eo(new Date(t.getTime()-86400000)),o=eo(n);if(o===r)return"Today";if(o===s)return"Yesterday";let i=n.toLocaleDateString("en-US",{weekday:"long"}),a=n.toLocaleDateString("en-US",{month:"short"});return`${i}, ${a} ${String(n.getDate()).padStart(2,"0")}`}function eo(e){return`${e.getFullYear()}-${e.getMonth()}-${e.getDate()}`}function Qc(e){let t=new Date(e*1000),n=t.getFullYear(),r=String(t.getMonth()+1).padStart(2,"0"),s=String(t.getDate()).padStart(2,"0"),o=String(t.getHours()).padStart(2,"0"),i=String(t.getMinutes()).padStart(2,"0");return`${n}-${r}-${s} ${o}:${i}`}function eu(e=new Date,t){let n=process.env.SLACK_QUIET_TZ??"Asia/Tokyo",r=!!t&&td(t),s=r?t:n,o=Number(process.env.SLACK_QUIET_START??23),i=Number(process.env.SLACK_QUIET_END??8),a,c;try{let p=new Intl.DateTimeFormat("en-GB",{timeZone:s,hour12:!1,weekday:"short",year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"});c=p.format(e),a=Number(p.formatToParts(e).find((m)=>m.type==="hour")?.value??"12")}catch{return null}let u=o>i?a>=o||a<i:a>=o&&a<i,f=r?`${s}, recipient`:`${s}, sender — recipient's timezone unknown`,l=`\uD83D\uDD50 ${c} (${f})`;if(!u)return l;return`${l}
170
- ⚠ QUIET HOURS (${o}:00-${i}:00) — this will buzz a phone.${r?"":" Their local time may differ."} Send only for a production incident; otherwise hold it until morning.`}function td(e){try{return new Intl.DateTimeFormat("en-GB",{timeZone:e}),!0}catch{return!1}}function Sn(e){if(!lu(e))return;let t=sd(e,"utf8");for(let n of t.split(`
171
- `)){let r=n.trim();if(!r||r.startsWith("#"))continue;let s=r.indexOf("=");if(s===-1)continue;let o=r.slice(0,s).trim(),i=r.slice(s+1).trim();if(i.startsWith('"')&&i.endsWith('"')||i.startsWith("'")&&i.endsWith("'"))i=i.slice(1,-1);if(!(o in process.env))process.env[o]=i}}function od(e){rd(e,{recursive:!0});let t=ht(e,".gitignore");if(!lu(t))fu(t,`*
172
- `)}function id(){Sn(ht(tu(),".slack-cli",".env.local")),Sn(ht(tu(),".config/slack-cli",".env")),Sn(ht(process.cwd(),".slack-cli",".env.local")),Sn(ht(process.cwd(),".env.local")),Sn(ht(process.cwd(),".env"))}function ad(e){return nd("sha256").update(e).digest("hex")}function P(e){return e&&typeof e==="object"&&!Array.isArray(e)?e:{}}function X(e){return Array.isArray(e)?e:[]}function Ss(e){return Number(e.ts??0)}async function du(e,t,n){let r=t.user;if(typeof r==="string"){if(!n.has(r))n.set(r,await Ne(e,r));return n.get(r)??r}return typeof t.username==="string"?t.username:"bot"}function ro(e){let t=new Date(e*1000),n=t.getUTCFullYear(),r=String(t.getUTCMonth()+1).padStart(2,"0"),s=String(t.getUTCDate()).padStart(2,"0"),o=String(t.getUTCHours()).padStart(2,"0"),i=String(t.getUTCMinutes()).padStart(2,"0"),a=String(t.getUTCSeconds()).padStart(2,"0");return`${n}-${r}-${s} ${o}:${i}:${a}`}function ao(e){let[t,n="000000"]=e.split("."),r=Number(t),s=new Date(r*1000),o=s.getUTCFullYear(),i=String(s.getUTCMonth()+1).padStart(2,"0"),a=String(s.getUTCDate()).padStart(2,"0"),c=String(s.getUTCHours()).padStart(2,"0"),u=String(s.getUTCMinutes()).padStart(2,"0"),f=String(s.getUTCSeconds()).padStart(2,"0"),l=n.padEnd(6,"0").slice(0,6);return`${o}-${i}-${a}T${c}:${u}:${f}.${l}`}function co(e){let t=e.match(/^(\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2})\.(\d{6})$/);if(!t)throw Error(`Invalid message timestamp "${e}" \u2014 expected 2026-05-11T06:01:04.000100`);let n=Date.parse(t[1]+"Z");if(isNaN(n))throw Error(`Cannot parse date in "${e}"`);return`${Math.floor(n/1000)}.${t[2]}`}function cd(e){return/^\d{4}-\d{2}-\d{2}T/.test(e)?co(e):e}async function Os(e,t,n,r,s){let o=typeof t.ts==="string"?t.ts:`${Ss(t)}.000000`,i=ao(o),a="?";if(typeof t.user==="string"){let F=t.user,A="@"+F;if(!n.has(A)){let k=await Kc(e,F,async(B,I,R)=>(await wn(B,I,R))[1],s);n.set(A,k)}a=n.get(A)??F}else if(typeof t.username==="string")a=t.username;let c=typeof t.text==="string"?t.text:"",f=kn(await tn(e,c,n,s)).split(`
165
+ slack user ls --external`)}async function tt(e,t,n){let r=t.startsWith("@")?t.slice(1):t;if(Yr(r))return r;if(!t.startsWith("@"))throw Error(`Expected @user or a user ID, got: ${t}`);let s=Rt(r),o=await ie(e,"auth.test",{},n);if(s==="you"||s==="me"||Rt(o.user??"")===s){if(!o.user_id)throw Error("auth.test did not return user_id");return o.user_id}let i=await Mc(e,s,n);if(i.id)return i.id;throw Bc(t,i)}function vt(e){let t=e.match(/(?:app\.slack\.com\/client\/T[A-Za-z0-9]+|[A-Za-z0-9-]+\.slack\.com\/archives)\/([A-Za-z0-9]+)(?:\/p(\d{10})(\d{6}))?/);if(!t)return;let n=t[1],r=t[2]&&t[3]?`${t[2]}.${t[3]}`:void 0,s=e.indexOf("?"),o=s>=0?new URLSearchParams(e.slice(s)):void 0,i=o?.get("thread_ts")??void 0,u={channel:o?.get("cid")??void 0??n};if(r)u.ts=r;if(i)u.threadTs=i;return u}function Uf(e){return vt(e)?.channel}function Dc(e){return/^[CDG][A-Z0-9]{8,}$/.test(e)}function Yr(e){return/^[UW][A-Z0-9]{6,}$/.test(e)}async function De(e,t,n){let r=Uf(t);if(r)return r;if(!t.startsWith("@")&&!t.startsWith("#")){if(Dc(t))return t;if(Yr(t))return Gr(e,t,n);throw Error(`Target must start with # or @ (or be a Slack URL/ID), got: ${t}`)}if(t.startsWith("#")&&Dc(t.slice(1)))return t.slice(1);let s=t.startsWith("@"),o=t.slice(1),i=Rt(o);if(s){if(Yr(o))return Gr(e,o,n);let u=await ie(e,"auth.test",{},n);if(i==="you"||i==="me"||Rt(u.user??"")===i){let d=u.user_id;if(!d)throw Error("auth.test did not return user_id");return await Pc(e,d,n)||et(e,d,n)}let l=await Mc(e,i,n);if(!l.id)throw Bc(t,l);if(l.dm)return l.dm;return Gr(e,l.id,n,t)}let a=o.toLowerCase(),c="";while(!0){let u={limit:"200",types:"public_channel,private_channel",exclude_archived:"true"};if(c)u.cursor=c;let f=await ie(e,"conversations.list",u,n);for(let l of f.channels??[])if(String(l.name??"").toLowerCase()===a)return String(l.id??"");if(c=f.response_metadata?.next_cursor??"",!c)break}throw Error(`channel not found: ${t}`)}async function Cn(e,t,n){try{let r=await ie(e,"users.info",{user:t},n),s=r.user?.profile?.display_name,o=s&&s.length>0?s:r.user?.real_name??r.user?.name??t,i=r.user?.name??t;return[o,i]}catch{return[t,t]}}async function ve(e,t,n){try{let r=await ie(e,"users.info",{user:t},n),s=r.user?.profile?.display_name;if(s&&s.length>0)return s;return r.user?.real_name??r.user?.name??t}catch{return t}}async function vc(e,t){let n=[],r="";while(!0){let s={limit:"200"};if(r)s.cursor=r;let o=await ie(e,"users.list",s,t);if(n.push(...o.members??[]),r=o.response_metadata?.next_cursor??"",!r)break}return{members:n}}async function Nc(e,t,n){let r=[],s="";while(!0){let o={channel:t,limit:"200"};if(s)o.cursor=s;let i=await ie(e,"conversations.members",o,n);if(r.push(...i.members??[]),s=i.response_metadata?.next_cursor??"",!s)break}return r}async function En(e,t){return Bt(e,"drafts.list",{},t)}async function jc(e,t,n,r){let{randomUUID:s}=await import("node:crypto"),o=JSON.stringify([{type:"rich_text",elements:[{type:"rich_text_section",elements:[{type:"text",text:n}]}]}]);return Bt(e,"drafts.create",{client_msg_id:s(),destinations:JSON.stringify([{channel_id:t}]),blocks:o,file_ids:JSON.stringify([]),is_from_composer:"true"},r)}async function Lc(e,t,n,r,s){let o=JSON.stringify([{type:"rich_text",elements:[{type:"rich_text_section",elements:[{type:"text",text:r}]}]}]),i=(Date.now()/1000).toFixed(6);return Bt(e,"drafts.update",{draft_id:t,client_last_updated_ts:i,destinations:JSON.stringify([{channel_id:n}]),blocks:o,file_ids:JSON.stringify([])},s)}async function Wc(e,t,n){return Bt(e,"conversations.info",{channel:t},n)}async function xn(e,t,n){return ie(e,"users.info",{user:t},n)}async function _n(e,t,n){return ie(e,"conversations.info",{channel:t},n)}async function Uc(e,t,n){let r=(Date.now()/1000).toFixed(6);return Bt(e,"drafts.delete",{draft_id:t,client_last_updated_ts:r},n)}async function Zr(e,t){let n=await Bt(e,"auth.test",{},t);return{userId:String(n.user_id??""),teamId:String(n.team_id??"")}}async function Kc(e,t,n,r={},s){let{statSync:o,readFileSync:i}=await import("node:fs"),{basename:a}=await import("node:path"),c=o(n),u=a(n),f=await ie(e,"files.getUploadURLExternal",{filename:u,length:String(c.size)},s),{upload_url:l,file_id:d}=f;if(!l||!d)throw Error("files.getUploadURLExternal returned no upload_url/file_id");let h=i(n),m=await fetch(l,{method:"POST",headers:{"Content-Type":"application/octet-stream"},body:h});if(!m.ok)throw Error(`Upload PUT failed: ${m.status} ${m.statusText}`);let p={files:[{id:d,title:r.title??u}],channel_id:t};if(r.threadTs)p.thread_ts=r.threadTs;if(r.initialComment)p.initial_comment=r.initialComment;let y=await He(e,"files.completeUploadExternal",p,s),E={fileId:d},F=y.files?.[0]?.permalink;if(F)E.permalink=F;return E}function yn(e,t){let n=e;for(let r of t){if(n===void 0||n===null)return;if(typeof r==="number"){if(!Array.isArray(n))return;n=n[r]??void 0}else{if(typeof n!=="object"||Array.isArray(n))return;n=n[r]}}return n}import{existsSync as Zf,readFileSync as Qf}from"node:fs";import{homedir as ed}from"node:os";import{join as td}from"node:path";import{existsSync as Kf,mkdirSync as Jf,readFileSync as zf,writeFileSync as Hf}from"node:fs";import{homedir as qf}from"node:os";import{dirname as Gf,join as Yf}from"node:path";var Xf=3600000,xs={now:()=>Date.now(),path:()=>Yf(process.env.HOME||qf(),".config","slack-cli","cache.json")},_s=!0,lt;function Jc(){return{channels:{},users:{}}}function Qr(){if(lt)return lt;if(lt=Jc(),!_s)return lt;try{let e=xs.path();if(!Kf(e))return lt;let t=JSON.parse(zf(e,"utf8"));for(let n of["channels","users"]){let r=t?.[n];if(!r||typeof r!=="object"||Array.isArray(r))continue;for(let[s,o]of Object.entries(r))if(o&&typeof o==="object"&&typeof o.value==="string"&&typeof o.expires==="number")lt[n][s]={value:o.value,expires:o.expires}}}catch{lt=Jc()}return lt}function Vf(e){if(!_s)return;try{let t=xs.path();Jf(Gf(t),{recursive:!0}),Hf(t,JSON.stringify(e,null,2)+`
166
+ `)}catch{}}function zc(e,t){return e?`${e} ${t}`:void 0}function ks(e,t,n){if(!_s)return;let r=zc(t,n);if(!r)return;let s=Qr()[e][r];if(!s)return;if(s.expires<=xs.now()){delete Qr()[e][r];return}return s.value}function Ss(e,t,n,r,s=Xf){if(!_s)return;let o=zc(t,n);if(!o)return;let i=Qr();i[e][o]={value:r,expires:xs.now()+s},Vf(i)}var eo={marker:"pushpin",progress:{done:"white_check_mark",dropped:"no_entry_sign",doing:"eyes",pending:"hourglass_flowing_sand"},flags:{alert:"exclamation","needs-discussion":"thinking_face",waiting:"speech_balloon",blocked:"lock"}},en=["done","dropped","doing","pending"],Yc=["alert","needs-discussion","waiting","blocked"];function nd(){return td(process.env.HOME||ed(),".config","slack-cli","todo.json")}function As(e){return e.replace(/^:+|:+$/g,"")}function kn(e=nd()){let t={marker:eo.marker,progress:{...eo.progress},flags:{...eo.flags}};try{if(!Zf(e))return t;let n=JSON.parse(Qf(e,"utf8"));if(typeof n.marker==="string"&&n.marker.trim())t.marker=As(n.marker.trim());for(let r of en){let s=n.progress?.[r];if(typeof s==="string"&&s.trim())t.progress[r]=As(s.trim())}for(let r of Yc){let s=n.flags?.[r];if(typeof s==="string"&&s.trim())t.flags[r]=As(s.trim())}}catch{}return t}function Hc(e,t,n=!1){return`${n?"-":""}${t?"has":"hasmy"}::${As(e)}:`}function Xc(e,t,n={}){let r=n.shared===!0,s=(a)=>Hc(a,r),o=(a)=>Hc(a,r,!0),i=[];if(e==="untriaged")i.push(s(t.marker),...en.map((a)=>o(t.progress[a])));else if(e==="stuck")i.push(s(t.marker),o(t.progress.done),o(t.progress.dropped),`(${Yc.map((a)=>s(t.flags[a])).join(" OR ")})`);else if(e==="open")i.push(s(t.marker),o(t.progress.done),o(t.progress.dropped));else{let a=en.indexOf(e);i.push(s(t.progress[e]));for(let c of en.slice(0,a))i.push(o(t.progress[c]))}if(n.in){let a=n.in.startsWith("#")||n.in.startsWith("@")?n.in:`#${n.in}`;i.push(`in:${a}`)}if(n.from){let a=n.from==="me"||n.from.startsWith("@")?n.from:`@${n.from}`;i.push(`from:${a}`)}return i.join(" ")}var sd=3,rd={sleep:(e)=>od()?Promise.resolve():new Promise((t)=>setTimeout(t,e))};function od(){return!!process.env.VITEST||!1||!!process.env.BUN_TEST}async function _e(e,t,n=sd){for(let r=0;;r++)try{return await t()}catch(s){if(!(s instanceof Ke))throw s;if(r>=n)throw Error(`Slack rate limit hit on ${e} — gave up after ${n} retries. Try again in a minute.`);console.error(`Warning: Slack rate limit hit on ${e} — backing off for ${s.retryAfter}s`),await rd.sleep(s.retryAfter*1000)}}var qc=new Map;async function Vc(e,t){let n=qc.get(e);if(n)return n;let r=await _e("auth.test",()=>Yt(e,t)),s={userId:r.userId,teamId:r.teamId};return qc.set(e,s),s}async function Zc(e,t){return(await Vc(e,t)).userId}async function to(e,t){try{return(await Vc(e,t)).teamId}catch{return""}}async function no(e,t,n,r){if(!t.startsWith("#"))return n(e,t,r);let s=await to(e,r),o=ks("channels",s,t);if(o)return o;let i=await _e("resolveChannel",()=>n(e,t,r));return Ss("channels",s,t,i),i}async function Qc(e,t,n,r){let s=await to(e,r),o=ks("users",s,t);if(o)return o;let i=await _e("users.info",()=>n(e,t,r));if(i&&i!==t)Ss("users",s,t,i);return i}async function eu(e,t,n,r){let s=await to(e,r),o=ks("users",s,`tz:${t}`);if(o)return o==="?"?null:o;let i=null;try{let a=await _e("users.info",()=>n(e,t,r));if(a?.user?.is_bot===!0||t==="USLACKBOT")return Gc(s,t,null);let c=a?.user?.tz;i=typeof c==="string"&&c?c:null}catch{return null}return Gc(s,t,i)}function Gc(e,t,n){return Ss("users",e,`tz:${t}`,n??"?"),n}async function tu(e,t,n,r,s,o){let i=s.progress[r],a=await Zc(e,o),c=await _e("reactions.get",()=>Fa(e,t,n,o)),u=new Set(c.filter((h)=>h.users.includes(a)).map((h)=>h.name)),f=en.map((h)=>s.progress[h]).filter((h)=>u.has(h));if(f.length===1&&f[0]===i)return{noop:!0,removed:[],leftover:[]};if(!u.has(i))await _e("reactions.add",()=>ns(e,t,n,i,o));let l=[],d=[];for(let h of f){if(h===i)continue;try{await _e("reactions.remove",()=>ss(e,t,n,h,o)),l.push(h)}catch{d.push(h)}}return{noop:!1,added:r,removed:l,leftover:d}}async function nu(e,t,n,r,s,o,i){let a=s.flags[r];if(o)await _e("reactions.remove",()=>ss(e,t,n,a,i));else await _e("reactions.add",()=>ns(e,t,n,a,i));return a}var so=1000;async function su(e,t,n,r={}){let s=r.limit??so,o=r.cookie,i=await Zc(e,o),a=en.map((d)=>n.progress[d]),c=[],u=0,f,l=!1;while(u<s){let d=Math.min(200,s-u),h=await _e("conversations.history",()=>hn(e,t,d,void 0,f,o)),m=h.messages??[];u+=m.length;for(let p of m){let y=String(p.ts??"");if(!y)continue;let E=new Set((p.reactions??[]).filter((A)=>(A.users??[]).map(String).includes(i)).map((A)=>String(A.name??""))),F=a.filter((A)=>E.has(A));if(F.length<2)continue;c.push({ts:y,text:String(p.text??"").split(`
167
+ `)[0]??"",emoji:F,keep:F[0]})}if(f=h.response_metadata?.next_cursor||void 0,!f||m.length===0)break;if(u>=s){l=!0;break}}if(r.fix)for(let d of c)try{try{await _e("reactions.add",()=>ns(e,t,d.ts,d.keep,o))}catch(h){if(!(h instanceof Error)||!/already_reacted/.test(h.message))throw h}for(let h of d.emoji){if(h===d.keep)continue;await _e("reactions.remove",()=>ss(e,t,d.ts,h,o))}d.fixed=!0}catch(h){d.fixed=!1,d.error=h instanceof Error?h.message:String(h)}return{scanned:u,findings:c,truncated:l}}var id=!0,ad;function ro(e){if(id=e,!e)ad=void 0}function ft(e){return e.replace(new RegExp(`[${"\\\\¥"}](.)`,"gs"),(t,n)=>{switch(n){case"n":return`
168
+ `;case"t":return"\t";case"\\":case"¥":return n==="¥"?"¥":"\\";default:return t}})}function Nt(e){return e.toLowerCase().replace(/[-_\s]/g,"")}function dt(e){return e&&typeof e==="object"&&!Array.isArray(e)?e:{}}function cd(e,t){let n=Nt(t),r=dt(e.profile);for(let o of[e.name,e.real_name,r.display_name,r.real_name])if(typeof o==="string"&&o&&Nt(o)===n)return!0;let s=typeof r.email==="string"?r.email.toLowerCase():"";return s!==""&&s===t.toLowerCase()}function ud(e){let t=dt(e.profile),n=new Set;for(let r of[t.display_name,e.real_name,e.name,t.real_name])if(typeof r==="string"&&r){let s=Nt(r);if(s.length>=2)n.add(s)}return[...n]}function ld(e,t){let n=Nt(e),r,s=!1;for(let o of t){let i=typeof o.id==="string"?o.id:"";if(!i)continue;for(let a of ud(o)){let c=-1;if(n===a)c=e.length;else for(let u of ou)if(e.length>u.length&&e.endsWith(u)&&Nt(e.slice(0,e.length-u.length))===a){c=e.length-u.length;break}if(c<0)continue;if(!r||a.length>r.formLen)r={userId:i,matchLen:c,formLen:a.length,display:ao(o)},s=!1;else if(a.length===r.formLen&&r.userId!==i)s=!0}}if(!r)return;return s?"ambiguous":{userId:r.userId,matchLen:r.matchLen,display:r.display}}async function jt(e,t,n,r){let s=`[${iu}ー]+`,o=`${s}(?:[._-]+${s})*`,i=new RegExp(`(?<![A-Za-z0-9._@<-])@(${o})`,"gu"),a=new Set;for(let F of t.matchAll(i))a.add(F[1]);if(a.size===0)return{text:t,resolved:[],unresolved:[]};let c=new Map;for(let F of a)c.set(F,{status:"pending"});let u=(F)=>{for(let A of a){if(c.get(A).status!=="pending")continue;if(io(A)){let k=ld(A,F);if(k==="ambiguous")c.set(A,{status:"ambiguous"});else if(k)c.set(A,{status:"resolved",userId:k.userId,matchLen:k.matchLen,display:k.display})}else{let k=F.filter((I)=>cd(I,A)),B=new Set(k.map((I)=>typeof I.id==="string"?I.id:"").filter(Boolean));if(B.size===1){let I=k.find((R)=>typeof R.id==="string");c.set(A,{status:"resolved",userId:I.id,matchLen:A.length,display:ao(I)})}else if(B.size>1)c.set(A,{status:"ambiguous"})}}},f=!1;try{let F=await as(e,r);u((F.members??[]).map(dt)),f=!0}catch{f=!1}let l=[...a].some((F)=>c.get(F).status==="pending"),d=!1,h=!0;if(l&&n){d=!0;try{let F=await Tr(e,n,r),A=[];for(let k of F){let B=dt(await Pr(e,k,r)),I=dt(B.user);if(typeof I.id!=="string")I.id=k;A.push(I)}u(A)}catch{h=!1}}let m=f&&(n?d&&h:!0),p=[],y=[];for(let F of a){let A=c.get(F);if(A.status==="resolved")p.push({surface:`@${F.slice(0,A.matchLen)}`,display:A.display,userId:A.userId});else if(A.status==="ambiguous")y.push({surface:`@${F}`,reason:"ambiguous"});else y.push({surface:`@${F}`,reason:m?"no-match":"unavailable"})}return{text:t.replace(i,(F,A)=>{let k=c.get(A);if(k&&k.status==="resolved")return`<@${k.userId}>${A.slice(k.matchLen)}`;return F}),resolved:p,unresolved:y}}function Sn(e){let t=[],n=!1;for(let r of e)if(r.reason==="ambiguous")t.push(`${r.surface} matches multiple people — not tagged, sent as plain text (use <@USERID> to tag)`);else if(r.reason==="unavailable"){if(n)continue;t.push("could not fetch the user list (users:read missing or an API/connection error) — @mentions not tagged, sent as plain text"),n=!0}else t.push(`${r.surface} matched no one — not tagged, sent as plain text`);return t}async function ru(e,t,n,r={}){let s=r.warn??((i)=>process.stderr.write(`${i}
169
+ `)),o=await jt(e,t,n,r.cookie);for(let i of Sn(o.unresolved))s(`warn: ${i}`);return o.text}var ou=["さん","さま","様","君","くん","ちゃん","氏","先生","先輩","殿","老师","老師","兄","姐","哥","姐妹"],iu="\\p{Script=Han}\\p{Script=Hiragana}\\p{Script=Katakana}A-Za-z0-9";function io(e){return/[\p{Script=Han}\p{Script=Hiragana}\p{Script=Katakana}]/u.test(e)}function fd(e){let t=[],n=new RegExp(`([${iu}]{1,12})(${ou.join("|")})`,"gu");for(let r of e.matchAll(n))t.push({ref:r[1],honorific:r[2]});for(let r of e.matchAll(/\b(?:dear|hi|hello|hey)\b[ \t]+([A-Z][A-Za-z'’-]{1,20})/gi))t.push({ref:r[1],honorific:""});for(let r of e.matchAll(/(?:^|\n)[ \t]*([A-Z][A-Za-z'’-]{1,20}),/g))t.push({ref:r[1],honorific:""});return t}function dd(e){let t=dt(e.profile),n=new Set;for(let r of[e.name,e.real_name,t.display_name,t.real_name]){if(typeof r!=="string"||!r)continue;for(let s of[r,...r.split(/\s+/)]){let o=Nt(s);if(o.length>=2)n.add(o)}}return[...n]}function pd(e,t){let n=Nt(e);if(n.length<2)return;for(let r of t)if(n===r)return r;if(io(e)){for(let r of t)if(n.includes(r)||r.includes(n))return r}return}function ao(e){return[dt(e.profile).display_name,e.real_name,e.name].filter((r)=>typeof r==="string"&&r!=="")[0]??String(e.id??"?")}async function au(e,t,n){let r=fd(t);if(r.length===0)return[];let s=new Set;for(let u of t.matchAll(/<@([A-Z0-9]+)(?:\|[^>]*)?>/g))s.add(u[1]);let i=((await as(e,n)).members??[]).map(dt).filter((u)=>u.deleted!==!0&&u.is_bot!==!0&&u.id!=="USLACKBOT").map((u)=>({id:typeof u.id==="string"?u.id:"",forms:dd(u),display:ao(u)})).filter((u)=>u.id!==""),a=[],c=new Set;for(let{ref:u,honorific:f}of r)for(let l of i){let d=pd(u,l.forms);if(!d)continue;if(s.has(l.id)||c.has(l.id))break;c.add(l.id),a.push({surface:io(u)?`${d}${f}`:u,display:l.display,userId:l.id});break}return a}async function tn(e,t,n,r){let s=t,o=[],i=s,a=0;while(!0){let c=i.indexOf("<@U",a);if(c===-1)break;let u=i.slice(c+2),f=u.search(/[>|]/),l=f===-1?u:u.slice(0,f);if(l.length>=9)o.push(l);a=c+1}for(let c of o){if(!n.has(c))n.set(c,await is(e,c,r));let u=n.get(c)??c;s=s.replaceAll(`<@${c}>`,`@${u}`),s=s.replace(new RegExp(`<@${c}\\|[^>]*>`,"g"),`@${u}`)}return s}function An(e){return e.replace(/<!date\^(\d+)\^[^|>]*(?:\|([^>]*))?>/g,(t,n,r)=>{let s=Number(n);if(!Number.isFinite(s))return r??"date";let o=new Date(s*1000);if(Number.isNaN(o.getTime()))return r??"date";let i=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],a=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],c=i[o.getUTCDay()]??"",u=a[o.getUTCMonth()]??"";return`${c}, ${u} ${String(o.getUTCDate()).padStart(2,"0")}, ${o.getUTCFullYear()}`})}function cu(e,t=new Date){let n=new Date(e*1000),r=oo(t),s=oo(new Date(t.getTime()-86400000)),o=oo(n);if(o===r)return"Today";if(o===s)return"Yesterday";let i=n.toLocaleDateString("en-US",{weekday:"long"}),a=n.toLocaleDateString("en-US",{month:"short"});return`${i}, ${a} ${String(n.getDate()).padStart(2,"0")}`}function oo(e){return`${e.getFullYear()}-${e.getMonth()}-${e.getDate()}`}function uu(e){let t=new Date(e*1000),n=t.getFullYear(),r=String(t.getMonth()+1).padStart(2,"0"),s=String(t.getDate()).padStart(2,"0"),o=String(t.getHours()).padStart(2,"0"),i=String(t.getMinutes()).padStart(2,"0");return`${n}-${r}-${s} ${o}:${i}`}function lu(e=new Date,t){let n=process.env.SLACK_QUIET_TZ??"Asia/Tokyo",r=!!t&&hd(t),s=r?t:n,o=Number(process.env.SLACK_QUIET_START??23),i=Number(process.env.SLACK_QUIET_END??8),a,c;try{let h=new Intl.DateTimeFormat("en-GB",{timeZone:s,hour12:!1,weekday:"short",year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"});c=h.format(e),a=Number(h.formatToParts(e).find((m)=>m.type==="hour")?.value??"12")}catch{return null}let u=o>i?a>=o||a<i:a>=o&&a<i,f=r?`${s}, recipient`:`${s}, sender — recipient's timezone unknown`,l=`\uD83D\uDD50 ${c} (${f})`;if(!u)return l;return`${l}
170
+ ⚠ QUIET HOURS (${o}:00-${i}:00) — this will buzz a phone.${r?"":" Their local time may differ."} Send only for a production incident; otherwise hold it until morning.`}function hd(e){try{return new Intl.DateTimeFormat("en-GB",{timeZone:e}),!0}catch{return!1}}function $n(e){if(!wu(e))return;let t=md(e,"utf8");for(let n of t.split(`
171
+ `)){let r=n.trim();if(!r||r.startsWith("#"))continue;let s=r.indexOf("=");if(s===-1)continue;let o=r.slice(0,s).trim(),i=r.slice(s+1).trim();if(i.startsWith('"')&&i.endsWith('"')||i.startsWith("'")&&i.endsWith("'"))i=i.slice(1,-1);if(!(o in process.env))process.env[o]=i}}function yd(e){Dd(e,{recursive:!0});let t=pt(e,".gitignore");if(!wu(t))Fu(t,`*
172
+ `)}function bd(){$n(pt(fu(),".slack-cli",".env.local")),$n(pt(fu(),".config/slack-cli",".env")),$n(pt(process.cwd(),".slack-cli",".env.local")),$n(pt(process.cwd(),".env.local")),$n(pt(process.cwd(),".env"))}function wd(e){return gd("sha256").update(e).digest("hex")}function P(e){return e&&typeof e==="object"&&!Array.isArray(e)?e:{}}function Y(e){return Array.isArray(e)?e:[]}function $s(e){return Number(e.ts??0)}async function Cu(e,t,n){let r=t.user;if(typeof r==="string"){if(!n.has(r))n.set(r,await ve(e,r));return n.get(r)??r}return typeof t.username==="string"?t.username:"bot"}function uo(e){let t=new Date(e*1000),n=t.getUTCFullYear(),r=String(t.getUTCMonth()+1).padStart(2,"0"),s=String(t.getUTCDate()).padStart(2,"0"),o=String(t.getUTCHours()).padStart(2,"0"),i=String(t.getUTCMinutes()).padStart(2,"0"),a=String(t.getUTCSeconds()).padStart(2,"0");return`${n}-${r}-${s} ${o}:${i}:${a}`}function po(e){let[t,n="000000"]=e.split("."),r=Number(t),s=new Date(r*1000),o=s.getUTCFullYear(),i=String(s.getUTCMonth()+1).padStart(2,"0"),a=String(s.getUTCDate()).padStart(2,"0"),c=String(s.getUTCHours()).padStart(2,"0"),u=String(s.getUTCMinutes()).padStart(2,"0"),f=String(s.getUTCSeconds()).padStart(2,"0"),l=n.padEnd(6,"0").slice(0,6);return`${o}-${i}-${a}T${c}:${u}:${f}.${l}`}function ho(e){let t=e.match(/^(\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2})\.(\d{6})$/);if(!t)throw Error(`Invalid message timestamp "${e}" \u2014 expected 2026-05-11T06:01:04.000100`);let n=Date.parse(t[1]+"Z");if(isNaN(n))throw Error(`Cannot parse date in "${e}"`);return`${Math.floor(n/1000)}.${t[2]}`}function Fd(e){return/^\d{4}-\d{2}-\d{2}T/.test(e)?ho(e):e}async function Ts(e,t,n,r,s){let o=typeof t.ts==="string"?t.ts:`${$s(t)}.000000`,i=po(o),a="?";if(typeof t.user==="string"){let F=t.user,A="@"+F;if(!n.has(A)){let k=await Qc(e,F,async(B,I,R)=>(await Cn(B,I,R))[1],s);n.set(A,k)}a=n.get(A)??F}else if(typeof t.username==="string")a=t.username;let c=typeof t.text==="string"?t.text:"",f=An(await tn(e,c,n,s)).split(`
173
173
  `),l=f[0]+(f.length>1?`
174
174
  `+f.slice(1).map((F)=>` ${F}`).join(`
175
- `):""),d=r?`${r} @${a}`:`@${a}`,p=X(t.reactions).map(P).map((F)=>{let A=typeof F.name==="string"?F.name:"",k=Number(F.count??X(F.users).length??0);return A?`:${A}:\xD7${k}`:""}).filter(Boolean).join(" "),m=X(t.files).map(P).map((F)=>{let A=typeof F.name==="string"?F.name:typeof F.title==="string"?F.title:"(file)",k=typeof F.size==="number"?` (${Is(F.size)})`:"",B=typeof F.id==="string"?` [${F.id}]`:"";return`
176
- \uD83D\uDCCE ${A}${k}${B}`}).join(""),h=Number(t.reply_count??0),y=h>0?` [+${h} ${h===1?"reply":"replies"}]`:"",E=(p?`
177
- ${p}`:"")+m;return`${i} ${d}: ${l}${y}${E}`}function Is(e){return e<1024?`${e} B`:e<1048576?`${(e/1024).toFixed(1)} KB`:`${(e/1048576).toFixed(1)} MB`}function ud(e){return X(e.files).map(P).map((t)=>({id:t.id??null,name:t.name??t.title??null,mimetype:t.mimetype??null,size:t.size??null,url_private_download:t.url_private_download??t.url_private??null,permalink:t.permalink??null}))}function hu(e){let t=ud(e);return{ts:e.ts??null,user:e.user??null,username:e.username??null,bot_id:e.bot_id??null,thread_ts:e.thread_ts??null,text:typeof e.text==="string"?e.text:"",...Array.isArray(e.reactions)&&e.reactions.length?{reactions:X(e.reactions).map(P).map((n)=>({name:n.name??null,count:n.count??null,users:Array.isArray(n.users)?n.users:[]}))}:{},...e.reply_count!==void 0?{reply_count:e.reply_count}:{},...e.reply_users_count!==void 0?{reply_users_count:e.reply_users_count}:{},...e.latest_reply!==void 0?{latest_reply:e.latest_reply}:{},...t.length>0?{files:t}:{}}}async function ld(e,t,n,r,s){let o=[];for(let i of n){let a=i;if(Number(i.reply_count??0)>0&&typeof i.ts==="string"){let c=await qe(e,t,i.ts,200,s),u=X(c.messages).map(P);a=u[u.length-1]??i}if(a.user!==r)o.push(i)}return o}async function fd(e,t,n,r="text",s=!1,o){let i=Nt(t),a=await De(e,t,o),c=new Map,f=await(async()=>{if(i?.threadTs){let d=await qe(e,a,i.threadTs,n,o);return X(d.messages).map(P)}let l=await Ve(e,a,n,void 0,void 0,o);return X(l.messages).map(P).reverse()})();if(s){let{userId:l}=await uc(e,o);f=await ld(e,a,f,l,o)}if(r==="jsonl"){for(let l of f)console.log(JSON.stringify(hu(l)));return}for(let l of f)console.log(await Os(e,l,c,void 0,o))}async function dd(e,t,n,r,s="text",o){let i=await De(e,t,o),a=await qe(e,i,cd(n),r,o),c=X(a.messages).map(P);if(s==="jsonl"){for(let f of c)console.log(JSON.stringify(hu(f)));return}let u=new Map;for(let f of c)console.log(await Os(e,f,u,void 0,o))}async function hd(e){let t=await bn(e),n=X(t.channels).map(P).filter((s)=>s.is_member===!0).sort((s,o)=>Number(o.updated??0)-Number(s.updated??0)).slice(0,10),r=new Map;for(let s of n){let o=String(s.id??""),i=typeof s.name==="string"?s.name:typeof s.user==="string"?s.user:o,a=await Ve(e,o,5),c=X(a.messages).map(P).filter((u)=>u.subtype===void 0||u.subtype===null).filter((u)=>{let f=typeof u.text==="string"?u.text:"";return f.length>0&&!f.startsWith("<@")}).slice(0,3).reverse();if(c.length===0)continue;console.log(`-- #${i} --------------------------------`);for(let u of c){let f=await du(e,u,r),l=(typeof u.text==="string"?u.text:"").split(`
178
- `)[0]??"",d=await tn(e,l,r);console.log(` ${f}: ${d}`)}}}async function pd(e,t){let n=await gc(e,"to:me"),r=X(mn(n,["messages","matches"])).map(P).slice(0,t),s=new Map,o=[];for(let i of r){let a=Zc(Ss(i)),c=o[o.length-1];if(c?.label===a)c.msgs.push(i);else o.push({label:a,msgs:[i]})}for(let i=0;i<o.length;i++){let{label:a,msgs:c}=o[i];if(i>0)console.log("");console.log(` ${a}`),console.log(" ----------------------------");for(let u of[...c].reverse()){let f=P(u.channel),l=f.is_im===!0,d=typeof f.name==="string"?f.name:"dm",p;if(l&&d.startsWith("U")){let m="@"+d;if(!s.has(m)){let[,h]=await wn(e,d);s.set(m,h)}p=`@${s.get(m)??d}`}else if(l)p=`@${d}`;else p=`#${d}`;console.log(await Os(e,u,s,p))}}}async function gd(e,t,n,r,s="text"){let o=await bn(e),i=X(o.channels).map(P).filter((a)=>r||a.is_member===!0).filter((a)=>{if(!n)return!0;return(typeof a.name==="string"?a.name:"").toLowerCase().includes(n.toLowerCase())}).sort((a,c)=>Number(c.updated??0)-Number(a.updated??0)).slice(0,t);if(s==="jsonl"){for(let a of i)console.log(JSON.stringify(a));return}for(let a of i){let c=String(a.id??""),u=typeof a.name==="string"?a.name:typeof a.user==="string"?a.user:c,f=a.is_im===!0,l=a.is_mpim===!0,d=f||l?"@":"#",p=a.is_member===!0?"":" (not joined)",m=typeof P(a.purpose).value==="string"?String(P(a.purpose).value):"",h=m?` ${m.split(`
179
- `)[0]?.slice(0,60)}`:"";console.log(`${d}${u} ${c}${p}${h}`)}}function md(e){let t=(s)=>s.startsWith("xoxp-")||s.startsWith("xoxc-"),n=yr(),r=n.find((s)=>s.profile.token===e);if(!r)return;return n.find((s)=>t(s.profile.token)&&s.profile.teamId===r.profile.teamId)}async function pu(e,t,n,r,s){let o=e,i=s,a;try{a=await Hr(o,t,n,i)}catch(f){let l=f instanceof Error?f.message:String(f);if(e.startsWith("xoxb-")&&l.includes("not_allowed_token_type")){let d=md(e);if(d)console.error(`Note: search.messages needs a user token \u2014 the active profile is a bot token (xoxb-); falling back to profile "${d.name}".`),o=d.profile.token,i=d.profile.cookie,a=await Hr(o,t,n,i);else console.error(`Error: search requires a user token (xoxp-/xoxc-) \u2014 the active profile is a bot token (xoxb-), which Slack rejects for search.messages.
175
+ `):""),d=r?`${r} @${a}`:`@${a}`,h=Y(t.reactions).map(P).map((F)=>{let A=typeof F.name==="string"?F.name:"",k=Number(F.count??Y(F.users).length??0);return A?`:${A}:\xD7${k}`:""}).filter(Boolean).join(" "),m=Y(t.files).map(P).map((F)=>{let A=typeof F.name==="string"?F.name:typeof F.title==="string"?F.title:"(file)",k=typeof F.size==="number"?` (${Ps(F.size)})`:"",B=typeof F.id==="string"?` [${F.id}]`:"";return`
176
+ \uD83D\uDCCE ${A}${k}${B}`}).join(""),p=Number(t.reply_count??0),y=p>0?` [+${p} ${p===1?"reply":"replies"}]`:"",E=(h?`
177
+ ${h}`:"")+m;return`${i} ${d}: ${l}${y}${E}`}function Ps(e){return e<1024?`${e} B`:e<1048576?`${(e/1024).toFixed(1)} KB`:`${(e/1048576).toFixed(1)} MB`}function Cd(e){return Y(e.files).map(P).map((t)=>({id:t.id??null,name:t.name??t.title??null,mimetype:t.mimetype??null,size:t.size??null,url_private_download:t.url_private_download??t.url_private??null,permalink:t.permalink??null}))}function Eu(e){let t=Cd(e);return{ts:e.ts??null,user:e.user??null,username:e.username??null,bot_id:e.bot_id??null,thread_ts:e.thread_ts??null,text:typeof e.text==="string"?e.text:"",...Array.isArray(e.reactions)&&e.reactions.length?{reactions:Y(e.reactions).map(P).map((n)=>({name:n.name??null,count:n.count??null,users:Array.isArray(n.users)?n.users:[]}))}:{},...e.reply_count!==void 0?{reply_count:e.reply_count}:{},...e.reply_users_count!==void 0?{reply_users_count:e.reply_users_count}:{},...e.latest_reply!==void 0?{latest_reply:e.latest_reply}:{},...t.length>0?{files:t}:{}}}async function Ed(e,t,n,r,s){let o=[];for(let i of n){let a=i;if(Number(i.reply_count??0)>0&&typeof i.ts==="string"){let c=await qe(e,t,i.ts,200,s),u=Y(c.messages).map(P);a=u[u.length-1]??i}if(a.user!==r)o.push(i)}return o}async function xd(e,t,n,r="text",s=!1,o){let i=vt(t),a=await De(e,t,o),c=new Map,f=await(async()=>{if(i?.threadTs){let d=await qe(e,a,i.threadTs,n,o);return Y(d.messages).map(P)}let l=await Ve(e,a,n,void 0,void 0,o);return Y(l.messages).map(P).reverse()})();if(s){let{userId:l}=await bc(e,o);f=await Ed(e,a,f,l,o)}if(r==="jsonl"){for(let l of f)console.log(JSON.stringify(Eu(l)));return}for(let l of f)console.log(await Ts(e,l,c,void 0,o))}async function _d(e,t,n,r,s="text",o){let i=await De(e,t,o),a=await qe(e,i,Fd(n),r,o),c=Y(a.messages).map(P);if(s==="jsonl"){for(let f of c)console.log(JSON.stringify(Eu(f)));return}let u=new Map;for(let f of c)console.log(await Ts(e,f,u,void 0,o))}async function kd(e){let t=await Fn(e),n=Y(t.channels).map(P).filter((s)=>s.is_member===!0).sort((s,o)=>Number(o.updated??0)-Number(s.updated??0)).slice(0,10),r=new Map;for(let s of n){let o=String(s.id??""),i=typeof s.name==="string"?s.name:typeof s.user==="string"?s.user:o,a=await Ve(e,o,5),c=Y(a.messages).map(P).filter((u)=>u.subtype===void 0||u.subtype===null).filter((u)=>{let f=typeof u.text==="string"?u.text:"";return f.length>0&&!f.startsWith("<@")}).slice(0,3).reverse();if(c.length===0)continue;console.log(`-- #${i} --------------------------------`);for(let u of c){let f=await Cu(e,u,r),l=(typeof u.text==="string"?u.text:"").split(`
178
+ `)[0]??"",d=await tn(e,l,r);console.log(` ${f}: ${d}`)}}}async function Sd(e,t){let n=await _c(e,"to:me"),r=Y(yn(n,["messages","matches"])).map(P).slice(0,t),s=new Map,o=[];for(let i of r){let a=cu($s(i)),c=o[o.length-1];if(c?.label===a)c.msgs.push(i);else o.push({label:a,msgs:[i]})}for(let i=0;i<o.length;i++){let{label:a,msgs:c}=o[i];if(i>0)console.log("");console.log(` ${a}`),console.log(" ----------------------------");for(let u of[...c].reverse()){let f=P(u.channel),l=f.is_im===!0,d=typeof f.name==="string"?f.name:"dm",h;if(l&&d.startsWith("U")){let m="@"+d;if(!s.has(m)){let[,p]=await Cn(e,d);s.set(m,p)}h=`@${s.get(m)??d}`}else if(l)h=`@${d}`;else h=`#${d}`;console.log(await Ts(e,u,s,h))}}}async function Ad(e,t,n,r,s="text"){let o=await Fn(e),i=Y(o.channels).map(P).filter((a)=>r||a.is_member===!0).filter((a)=>{if(!n)return!0;return(typeof a.name==="string"?a.name:"").toLowerCase().includes(n.toLowerCase())}).sort((a,c)=>Number(c.updated??0)-Number(a.updated??0)).slice(0,t);if(s==="jsonl"){for(let a of i)console.log(JSON.stringify(a));return}for(let a of i){let c=String(a.id??""),u=typeof a.name==="string"?a.name:typeof a.user==="string"?a.user:c,f=a.is_im===!0,l=a.is_mpim===!0,d=f||l?"@":"#",h=a.is_member===!0?"":" (not joined)",m=typeof P(a.purpose).value==="string"?String(P(a.purpose).value):"",p=m?` ${m.split(`
179
+ `)[0]?.slice(0,60)}`:"";console.log(`${d}${u} ${c}${h}${p}`)}}function $d(e){let t=(s)=>s.startsWith("xoxp-")||s.startsWith("xoxc-"),n=wr(),r=n.find((s)=>s.profile.token===e);if(!r)return;return n.find((s)=>t(s.profile.token)&&s.profile.teamId===r.profile.teamId)}async function xu(e,t,n,r,s){let o=e,i=s,a;try{a=await Vr(o,t,n,i)}catch(f){let l=f instanceof Error?f.message:String(f);if(e.startsWith("xoxb-")&&l.includes("not_allowed_token_type")){let d=$d(e);if(d)console.error(`Note: search.messages needs a user token \u2014 the active profile is a bot token (xoxb-); falling back to profile "${d.name}".`),o=d.profile.token,i=d.profile.cookie,a=await Vr(o,t,n,i);else console.error(`Error: search requires a user token (xoxp-/xoxc-) \u2014 the active profile is a bot token (xoxb-), which Slack rejects for search.messages.
180
180
  `+` Add a user-token profile: slack auth login (or slack auth login --token <token>)
181
- Then select it: slack auth use <name> (or pass --workspace <name>)`),process.exit(1)}else throw f}if(r){console.log(JSON.stringify(a,null,2));return}let c=X(mn(a,["messages","matches"])).map(P),u=new Map;for(let f of c){let l=P(f.channel),d=l.is_im===!0,p=typeof l.name==="string"?l.name:"dm",m;if(d&&p.startsWith("U")){let h="@"+p;if(!u.has(h)){let[,y]=await wn(o,p,i);u.set(h,y)}m=`@${u.get(h)??p}`}else if(d)m=`@${p}`;else m=`#${p}`;console.log(await Os(o,f,u,m,i))}}async function gu(e,t,n,r){let{ref:s,ts:o}=An(t);if(!o)console.error("Error: target must embed a message ts (e.g. #chan:1700000000.000100 or a Slack permalink URL)"),process.exit(2);return{channelId:n??await Vr(e,s,De,r),ts:o}}async function Dd(e,t){let n=xn(),r={};if(!t.mine)r.shared=!0;if(t.in)r.in=t.in;if(t.from)r.from=t.from;let s=Lc(t.state,n,r);if(!t.json){let o=await nn(e,t.cookie),i=t.mine?"your reactions only [hasmy:]":"anyone's reactions [has:]";console.error(`(From: ${Du(o)} \xB7 matching ${i})`),console.error(`(query: ${s})`)}await _e("search.messages",()=>pu(e,s,t.count,t.json,t.cookie))}async function yd(e,t){let n=xn(),{channelId:r,ts:s}=await gu(e,t.target,t.channelId,t.cookie),o=await zc(e,r,s,t.state,n,t.cookie);if(o.noop){console.log(`= Already ${t.state} (ts: ${s})`);return}let i=o.removed.length?`, removed ${o.removed.map((a)=>`:${a}:`).join(" ")}`:"";if(console.log(`\u2713 ${t.state} :${n.progress[t.state]}: (ts: ${s})${i}`),o.leftover.length)console.error(`\u26A0 ${o.leftover.map((a)=>`:${a}:`).join(" ")} could not be removed \u2014 this message now carries more than one `+"progress reaction. Readers collapse by priority so nothing is lost; repair with: slack todo doctor --in <#chan> --fix")}async function bd(e,t){let n=xn(),{channelId:r,ts:s}=await gu(e,t.target,t.channelId,t.cookie),o=await Hc(e,r,s,t.flag,n,t.remove===!0,t.cookie);console.log(`\u2713 ${t.remove?"Cleared":"Flagged"} ${t.flag} :${o}: (ts: ${s})`)}async function wd(e,t){let n=xn(),r=t.channelId??await Vr(e,t.channel,De,t.cookie),s={limit:t.limit};if(t.fix)s.fix=!0;if(t.cookie)s.cookie=t.cookie;let o=await qc(e,r,n,s);if(o.findings.length===0)console.log(`\u2713 No multi-state tasks in ${o.scanned} message(s).`);else{for(let i of o.findings){let a=i.fixed===!0?"fixed":i.fixed===!1?`FAILED: ${i.error??"?"}`:"needs --fix";console.log(`${i.ts} ${i.emoji.map((c)=>`:${c}:`).join(" ")} \u2192 keep :${i.keep}: [${a}] ${Q(i.text).slice(0,60)}`)}console.log(`${o.findings.length} multi-state task(s) in ${o.scanned} message(s).`)}if(o.truncated)console.error(`\u26A0 Scan limit reached (${t.limit} messages) \u2014 older history was NOT checked. Raise it with --limit N.`)}async function Fd(e,t,n,r){let s=Math.floor(Date.now()/1000)-t*86400,o=await bn(e),i=X(o.channels).map(P).filter((f)=>f.is_member===!0&&f.is_im!==!0&&f.is_mpim!==!0).filter((f)=>{if(!r)return!0;return(typeof f.name==="string"?f.name:"").toLowerCase().includes(r.toLowerCase())}).sort((f,l)=>Number(l.updated??0)-Number(f.updated??0)),a=new Map,c=0,u=0;for(let f of i){let l=String(f.id??""),d=typeof f.name==="string"?f.name:l,p;try{p=await Ve(e,l,n)}catch(h){console.error(` SKIP #${d}: ${h.message}`);continue}let m=X(p.messages).map(P).filter((h)=>(h.subtype===void 0||h.subtype===null)&&Ss(h)>=s);if(m.length===0)continue;u+=1,c+=m.length,console.log(`## #${d} (${m.length} msgs)
182
- `);for(let h of[...m].reverse()){let y=await du(e,h,a),E=typeof h.text==="string"?h.text:"",A=kn(await tn(e,E,a)).split(`
183
- `).join(" \u21B5 ");console.log(`[${Qc(Ss(h))}] ${y}: ${A}`)}console.log("")}console.error(`Dumped ${c} messages across ${u} channels (cutoff: ${t}d)`)}function Cd(e){let t=[];function n(r){if(typeof r==="string"){t.push(r);return}if(Array.isArray(r)){for(let s of r)n(s);return}if(r&&typeof r==="object"){let s=r;if(typeof s.text==="string"){t.push(s.text);return}if(Array.isArray(s.elements))n(s.elements);else if(Array.isArray(s.content))n(s.content)}}for(let r of e)n(r);return t.join("").trim()}async function mu(e,t,n){let r=new Map;return async(s)=>{if(!s)return"(unknown)";if(r.has(s))return r.get(s);try{let o=await Ic(e,s,t),i=P(o.channel),a;if(i.is_im===!0){let c=typeof i.user==="string"?i.user:"";if(!c||c===n)a="@self";else{let[u]=await wn(e,c);a=`@${u}`}}else a=`#${typeof i.name==="string"?i.name:s}`;return r.set(s,a),a}catch{return s}}}function uo(e){let t=P(X(e.destinations)[0]);return String(t.channel_id??e.channel_id??e.channel??"")}function As(e){return Cd(X(e.blocks))||(typeof e.text==="string"?e.text:"(no text)")}async function Ed(e,t,n=!1){let r=await Fn(e,t),s=X(r.drafts??r.messages??[]).map(P).filter((u)=>u.is_deleted!==!0),o=n?s:s.filter((u)=>u.is_sent!==!0);if(o.length===0){console.log(n?"No drafts.":"No pending drafts. Run with --all to include sent.");return}let i="";try{({userId:i}=await qr(e,t))}catch{}let a=await mu(e,t,i),c=new Map;for(let u of o){let f=uo(u),l=As(u),d=Number(u.date_created??u.date_create??0),p=d?ro(d):"?",m=await a(f),h=typeof u.id==="string"?u.id:"",y=u.is_sent===!0?" [SENT]":"",E=kn(await tn(e,l,c));console.log(`-- ${h} ${m} [${p}]${y}`);for(let F of E.split(`
184
- `))console.log(` ${F}`)}}async function xd(e,t,n){let r=await Fn(e,t),s=X(r.drafts).map(P).find((m)=>String(m.id)===n);if(!s)console.error(`Draft not found: ${n}`),process.exit(1);let o="";try{({userId:o}=await qr(e,t))}catch{}let i=await mu(e,t,o),a=uo(s),c=As(s),u=Number(s.date_created??0),f=String(s.last_updated_ts??"?"),l=await i(a),p=kn(await tn(e,c,new Map));console.log(`id: ${s.id}`),console.log(`channel: ${l} (${a})`),console.log(`created: ${u?ro(u):"?"}`),console.log(`updated: ${ro(Number(f.split(".")[0]))}`),console.log(`status: ${s.is_sent===!0?"sent":"pending"}`),console.log("---"),console.log(p)}function Ye(...e){return ad(e.join(`
185
- `)).slice(0,4)}function Q(e){return e.replace(/\x1b\[[0-9;:?]*[ -/]*[@-~]/g,"").replace(/[\x00-\x1f\x7f-\x9f]/g,"").replace(/[\u061c\u200e\u200f\u202a-\u202e\u2066-\u2069]/g,"")}var _d={"reactions.add":"reactions:write","reactions.remove":"reactions:write","chat.postMessage":"chat:write","chat.update":"chat:write","chat.delete":"chat:write","conversations.replies":"channels:history (or groups:history)","conversations.history":"channels:history (or groups:history)"};function nt(e){let t=e instanceof Error?e.message:String(e),n=t.match(/Slack error on (\S+): (\w+)/);if(!n)return t;let[,r,s]=n;switch(s){case"missing_scope":return`Error: token lacks the ${_d[r]??"the required"} scope (needed for ${r}). Add it to your Slack App's User Token Scopes (or Bot Token Scopes if you use a bot token / --as-bot) \u2014 it must be on the token type the CLI actually uses \u2014 then reinstall to the workspace.`;case"invalid_name":return"Error: not a valid emoji shortcode \u2014 use the name without colons (e.g. white_check_mark), and make sure it exists in the workspace.";case"already_reacted":return"Error: you've already added that reaction to the message.";case"no_reaction":return"Error: that reaction isn't on the message \u2014 nothing to remove.";case"message_not_found":return"Error: no message found at that timestamp in the channel \u2014 check the target ts/permalink.";case"channel_not_found":return"Error: channel not found \u2014 check the target.";default:return t}}async function Ts(e,t,n){if(!t.startsWith("D"))return null;try{let r=await Rs(e,t,n);if(!r)return null;return await Jc(e,r,Cn,n)}catch{return null}}function je(e,t,n,r,s=new Date){for(let i of n)console.log(i);let o=eu(s,r);if(o)console.log(o);if(e!==void 0)console.error(`Code mismatch (got ${e}, expected ${t})`);console.error(`Rerun with --code=${t}`),process.exit(1)}function An(e){let t=Nt(e);if(t)return t.ts?{ref:t.channel,ts:t.ts}:{ref:t.channel};if(e.startsWith("#")||e.startsWith("@")){let n=e.indexOf(":");if(n>0){let r=e.slice(n+1);if(/^\d{10}\.\d{6}$/.test(r))return{ref:e.slice(0,n),ts:r};if(/^\d{4}-\d{2}-\d{2}T/.test(r))return{ref:e.slice(0,n),ts:co(r)}}}return{ref:e}}function $n(e,t=!0){let n=Nt(e);if(n){if(!t)return{ref:n.channel};let s=n.threadTs??n.ts;return s?{ref:n.channel,threadTs:s}:{ref:n.channel}}let r=e.indexOf(":");if(r>0){let s=e.slice(r+1);if(/^\d{10}\.\d{6}$/.test(s))return{ref:e.slice(0,r),threadTs:s};if(/^\d{4}-\d{2}-\d{2}T/.test(s))return{ref:e.slice(0,r),threadTs:co(s)}}return{ref:e}}async function Ps(e,t,n,r){let s=n;if(/^#?[CDG][A-Z0-9]{8,}$/.test(n)||!n.startsWith("#")&&!n.startsWith("@"))try{let i=P(await En(e,t,r)),a=P(i.channel);if(a.is_im===!0){let c=typeof a.user==="string"?a.user:"";s=c?`@${await Ne(e,c,r)}`:t}else s=typeof a.name==="string"?`#${a.name}`:t}catch{s=t}return s===t?t:`${s} (${t})`}async function nn(e,t){try{return await lc(e,t)}catch{return null}}function Lt(e,t){let n;return async()=>{if(n===void 0)n=await nn(e,t);return n}}function Du(e,t){let n=t?" [as bot]":"";if(!e)return`(unknown \u2014 auth.test failed)${n}`;let r=Q(e.user||e.userId||"?"),s=e.userId?` (${e.userId})`:"",o=e.team?` \u2014 ${Q(e.team)}`:"";return`@${r}${s}${o}${n}`}function Le(e,t={}){return` ${"From:".padEnd(t.pad??6)}${Du(e,t.asBot)}`}async function oo(e,t,n=60,r){let s=typeof t.user==="string"?await Ne(e,t.user,r):typeof t.username==="string"?t.username:"?",o=(typeof t.text==="string"?t.text:"").split(`
186
- `)[0]??"",i=o.length>n?`${o.slice(0,n)}\u2026`:o,a=typeof t.ts==="string"?t.ts:"";return`${a?ao(a).slice(0,16).replace("T"," "):""} @${s}${i?`: ${i}`:""}`}async function kd(e,t,n,r){let s=n.find((o)=>String(o.ts)===t)??n[0];if(!s)return t;return oo(e,s,40,r)}function nu(e){return e.toLowerCase().replace(/<[@#!][^>]+>/g," ").replace(/[^\p{L}\p{N}\s]/gu," ").replace(/\s+/g," ").trim()}function Sd(e,t){let n=nu(e),r=nu(t);if(!n||!r)return 0;if(n===r)return 1;let s=(u)=>{let f=new Map;for(let l=0;l<u.length-1;l++){let d=u.slice(l,l+2);f.set(d,(f.get(d)??0)+1)}return f},o=s(n),i=s(r);if(o.size===0||i.size===0)return 0;let a=0;for(let[u,f]of o){let l=i.get(u);if(l)a+=Math.min(f,l)}let c=su(o)+su(i);return c===0?0:2*a/c}function su(e){let t=0;for(let n of e.values())t+=n;return t}async function ru(e,t,n,r){let s=ut();if(!s)console.error(`Error: --as-bot needs a bot token, but no xoxb- token was found.
187
- Set SLACK_BOT_TOKEN=xoxb-... in ~/.config/slack-cli/.env (or your shell).`),process.exit(1);if(r)return{botToken:s};let{ref:o}=An(e);if(!o.startsWith("@"))return{botToken:s};try{let i=await tt(t,o,n);return{botToken:s,channelId:await et(s,i)}}catch(i){console.error(`Error: could not resolve ${Q(o)} to the bot's DM.
181
+ Then select it: slack auth use <name> (or pass --workspace <name>)`),process.exit(1)}else throw f}if(r){console.log(JSON.stringify(a,null,2));return}let c=Y(yn(a,["messages","matches"])).map(P),u=new Map;for(let f of c){let l=P(f.channel),d=l.is_im===!0,h=typeof l.name==="string"?l.name:"dm",m;if(d&&h.startsWith("U")){let p="@"+h;if(!u.has(p)){let[,y]=await Cn(o,h,i);u.set(p,y)}m=`@${u.get(p)??h}`}else if(d)m=`@${h}`;else m=`#${h}`;console.log(await Ts(o,f,u,m,i))}}async function _u(e,t,n,r){let{ref:s,ts:o}=On(t);if(!o)console.error("Error: target must embed a message ts (e.g. #chan:1700000000.000100 or a Slack permalink URL)"),process.exit(2);return{channelId:n??await no(e,s,De,r),ts:o}}async function Od(e,t){let n=kn(),r={};if(!t.mine)r.shared=!0;if(t.in)r.in=t.in;if(t.from)r.from=t.from;let s=Xc(t.state,n,r);if(!t.json){let o=await nn(e,t.cookie),i=t.mine?"your reactions only [hasmy:]":"anyone's reactions [has:]";console.error(`(From: ${Su(o)} \xB7 matching ${i})`),console.error(`(query: ${s})`)}await _e("search.messages",()=>xu(e,s,t.count,t.json,t.cookie))}async function Id(e,t){let n=kn(),{channelId:r,ts:s}=await _u(e,t.target,t.channelId,t.cookie),o=await tu(e,r,s,t.state,n,t.cookie);if(o.noop){console.log(`= Already ${t.state} (ts: ${s})`);return}let i=o.removed.length?`, removed ${o.removed.map((a)=>`:${a}:`).join(" ")}`:"";if(console.log(`\u2713 ${t.state} :${n.progress[t.state]}: (ts: ${s})${i}`),o.leftover.length)console.error(`\u26A0 ${o.leftover.map((a)=>`:${a}:`).join(" ")} could not be removed \u2014 this message now carries more than one `+"progress reaction. Readers collapse by priority so nothing is lost; repair with: slack todo doctor --in <#chan> --fix")}async function Td(e,t){let n=kn(),{channelId:r,ts:s}=await _u(e,t.target,t.channelId,t.cookie),o=await nu(e,r,s,t.flag,n,t.remove===!0,t.cookie);console.log(`\u2713 ${t.remove?"Cleared":"Flagged"} ${t.flag} :${o}: (ts: ${s})`)}async function Pd(e,t){let n=kn(),r=t.channelId??await no(e,t.channel,De,t.cookie),s={limit:t.limit};if(t.fix)s.fix=!0;if(t.cookie)s.cookie=t.cookie;let o=await su(e,r,n,s);if(o.findings.length===0)console.log(`\u2713 No multi-state tasks in ${o.scanned} message(s).`);else{for(let i of o.findings){let a=i.fixed===!0?"fixed":i.fixed===!1?`FAILED: ${i.error??"?"}`:"needs --fix";console.log(`${i.ts} ${i.emoji.map((c)=>`:${c}:`).join(" ")} \u2192 keep :${i.keep}: [${a}] ${Q(i.text).slice(0,60)}`)}console.log(`${o.findings.length} multi-state task(s) in ${o.scanned} message(s).`)}if(o.truncated)console.error(`\u26A0 Scan limit reached (${t.limit} messages) \u2014 older history was NOT checked. Raise it with --limit N.`)}async function Rd(e,t,n,r){let s=Math.floor(Date.now()/1000)-t*86400,o=await Fn(e),i=Y(o.channels).map(P).filter((f)=>f.is_member===!0&&f.is_im!==!0&&f.is_mpim!==!0).filter((f)=>{if(!r)return!0;return(typeof f.name==="string"?f.name:"").toLowerCase().includes(r.toLowerCase())}).sort((f,l)=>Number(l.updated??0)-Number(f.updated??0)),a=new Map,c=0,u=0;for(let f of i){let l=String(f.id??""),d=typeof f.name==="string"?f.name:l,h;try{h=await Ve(e,l,n)}catch(p){console.error(` SKIP #${d}: ${p.message}`);continue}let m=Y(h.messages).map(P).filter((p)=>(p.subtype===void 0||p.subtype===null)&&$s(p)>=s);if(m.length===0)continue;u+=1,c+=m.length,console.log(`## #${d} (${m.length} msgs)
182
+ `);for(let p of[...m].reverse()){let y=await Cu(e,p,a),E=typeof p.text==="string"?p.text:"",A=An(await tn(e,E,a)).split(`
183
+ `).join(" \u21B5 ");console.log(`[${uu($s(p))}] ${y}: ${A}`)}console.log("")}console.error(`Dumped ${c} messages across ${u} channels (cutoff: ${t}d)`)}function Md(e){let t=[];function n(r){if(typeof r==="string"){t.push(r);return}if(Array.isArray(r)){for(let s of r)n(s);return}if(r&&typeof r==="object"){let s=r;if(typeof s.text==="string"){t.push(s.text);return}if(Array.isArray(s.elements))n(s.elements);else if(Array.isArray(s.content))n(s.content)}}for(let r of e)n(r);return t.join("").trim()}async function ku(e,t,n){let r=new Map;return async(s)=>{if(!s)return"(unknown)";if(r.has(s))return r.get(s);try{let o=await Wc(e,s,t),i=P(o.channel),a;if(i.is_im===!0){let c=typeof i.user==="string"?i.user:"";if(!c||c===n)a="@self";else{let[u]=await Cn(e,c);a=`@${u}`}}else a=`#${typeof i.name==="string"?i.name:s}`;return r.set(s,a),a}catch{return s}}}function go(e){let t=P(Y(e.destinations)[0]);return String(t.channel_id??e.channel_id??e.channel??"")}function Os(e){return Md(Y(e.blocks))||(typeof e.text==="string"?e.text:"(no text)")}async function Bd(e,t,n=!1){let r=await En(e,t),s=Y(r.drafts??r.messages??[]).map(P).filter((u)=>u.is_deleted!==!0),o=n?s:s.filter((u)=>u.is_sent!==!0);if(o.length===0){console.log(n?"No drafts.":"No pending drafts. Run with --all to include sent.");return}let i="";try{({userId:i}=await Zr(e,t))}catch{}let a=await ku(e,t,i),c=new Map;for(let u of o){let f=go(u),l=Os(u),d=Number(u.date_created??u.date_create??0),h=d?uo(d):"?",m=await a(f),p=typeof u.id==="string"?u.id:"",y=u.is_sent===!0?" [SENT]":"",E=An(await tn(e,l,c));console.log(`-- ${p} ${m} [${h}]${y}`);for(let F of E.split(`
184
+ `))console.log(` ${F}`)}}async function vd(e,t,n){let r=await En(e,t),s=Y(r.drafts).map(P).find((m)=>String(m.id)===n);if(!s)console.error(`Draft not found: ${n}`),process.exit(1);let o="";try{({userId:o}=await Zr(e,t))}catch{}let i=await ku(e,t,o),a=go(s),c=Os(s),u=Number(s.date_created??0),f=String(s.last_updated_ts??"?"),l=await i(a),h=An(await tn(e,c,new Map));console.log(`id: ${s.id}`),console.log(`channel: ${l} (${a})`),console.log(`created: ${u?uo(u):"?"}`),console.log(`updated: ${uo(Number(f.split(".")[0]))}`),console.log(`status: ${s.is_sent===!0?"sent":"pending"}`),console.log("---"),console.log(h)}function Ge(...e){return wd(e.join(`
185
+ `)).slice(0,4)}function Q(e){return e.replace(/\x1b\[[0-9;:?]*[ -/]*[@-~]/g,"").replace(/[\x00-\x1f\x7f-\x9f]/g,"").replace(/[\u061c\u200e\u200f\u202a-\u202e\u2066-\u2069]/g,"")}var Nd={"reactions.add":"reactions:write","reactions.remove":"reactions:write","chat.postMessage":"chat:write","chat.update":"chat:write","chat.delete":"chat:write","conversations.replies":"channels:history (or groups:history)","conversations.history":"channels:history (or groups:history)"};function nt(e){let t=e instanceof Error?e.message:String(e),n=t.match(/Slack error on (\S+): (\w+)/);if(!n)return t;let[,r,s]=n;switch(s){case"missing_scope":return`Error: token lacks the ${Nd[r]??"the required"} scope (needed for ${r}). Add it to your Slack App's User Token Scopes (or Bot Token Scopes if you use a bot token / --as-bot) \u2014 it must be on the token type the CLI actually uses \u2014 then reinstall to the workspace.`;case"invalid_name":return"Error: not a valid emoji shortcode \u2014 use the name without colons (e.g. white_check_mark), and make sure it exists in the workspace.";case"already_reacted":return"Error: you've already added that reaction to the message.";case"no_reaction":return"Error: that reaction isn't on the message \u2014 nothing to remove.";case"message_not_found":return"Error: no message found at that timestamp in the channel \u2014 check the target ts/permalink.";case"channel_not_found":return"Error: channel not found \u2014 check the target.";default:return t}}async function Rs(e,t,n){if(!t.startsWith("D"))return null;try{let r=await Bs(e,t,n);if(!r)return null;return await eu(e,r,xn,n)}catch{return null}}function je(e,t,n,r,s=new Date){for(let i of n)console.log(i);let o=lu(s,r);if(o)console.log(o);if(e!==void 0)console.error(`Code mismatch (got ${e}, expected ${t})`);console.error(`Rerun with --code=${t}`),process.exit(1)}function On(e){let t=vt(e);if(t)return t.ts?{ref:t.channel,ts:t.ts}:{ref:t.channel};if(e.startsWith("#")||e.startsWith("@")){let n=e.indexOf(":");if(n>0){let r=e.slice(n+1);if(/^\d{10}\.\d{6}$/.test(r))return{ref:e.slice(0,n),ts:r};if(/^\d{4}-\d{2}-\d{2}T/.test(r))return{ref:e.slice(0,n),ts:ho(r)}}}return{ref:e}}function sn(e,t=!0){let n=vt(e);if(n){if(!t)return{ref:n.channel};let s=n.threadTs??n.ts;return s?{ref:n.channel,threadTs:s}:{ref:n.channel}}let r=e.indexOf(":");if(r>0){let s=e.slice(r+1);if(/^\d{10}\.\d{6}$/.test(s))return{ref:e.slice(0,r),threadTs:s};if(/^\d{4}-\d{2}-\d{2}T/.test(s))return{ref:e.slice(0,r),threadTs:ho(s)}}return{ref:e}}async function Ms(e,t,n,r){let s=n;if(/^#?[CDG][A-Z0-9]{8,}$/.test(n)||!n.startsWith("#")&&!n.startsWith("@"))try{let i=P(await _n(e,t,r)),a=P(i.channel);if(a.is_im===!0){let c=typeof a.user==="string"?a.user:"";s=c?`@${await ve(e,c,r)}`:t}else s=typeof a.name==="string"?`#${a.name}`:t}catch{s=t}return s===t?t:`${s} (${t})`}async function nn(e,t){try{return await wc(e,t)}catch{return null}}function Lt(e,t){let n;return async()=>{if(n===void 0)n=await nn(e,t);return n}}function Su(e,t){let n=t?" [as bot]":"";if(!e)return`(unknown \u2014 auth.test failed)${n}`;let r=Q(e.user||e.userId||"?"),s=e.userId?` (${e.userId})`:"",o=e.team?` \u2014 ${Q(e.team)}`:"";return`@${r}${s}${o}${n}`}function Le(e,t={}){return` ${"From:".padEnd(t.pad??6)}${Su(e,t.asBot)}`}async function lo(e,t,n=60,r){let s=typeof t.user==="string"?await ve(e,t.user,r):typeof t.username==="string"?t.username:"?",o=(typeof t.text==="string"?t.text:"").split(`
186
+ `)[0]??"",i=o.length>n?`${o.slice(0,n)}\u2026`:o,a=typeof t.ts==="string"?t.ts:"";return`${a?po(a).slice(0,16).replace("T"," "):""} @${s}${i?`: ${i}`:""}`}async function jd(e,t,n,r){let s=n.find((o)=>String(o.ts)===t)??n[0];if(!s)return t;return lo(e,s,40,r)}function du(e){return e.toLowerCase().replace(/<[@#!][^>]+>/g," ").replace(/[^\p{L}\p{N}\s]/gu," ").replace(/\s+/g," ").trim()}function Ld(e,t){let n=du(e),r=du(t);if(!n||!r)return 0;if(n===r)return 1;let s=(u)=>{let f=new Map;for(let l=0;l<u.length-1;l++){let d=u.slice(l,l+2);f.set(d,(f.get(d)??0)+1)}return f},o=s(n),i=s(r);if(o.size===0||i.size===0)return 0;let a=0;for(let[u,f]of o){let l=i.get(u);if(l)a+=Math.min(f,l)}let c=pu(o)+pu(i);return c===0?0:2*a/c}function pu(e){let t=0;for(let n of e.values())t+=n;return t}async function hu(e,t,n,r){let s=ut();if(!s)console.error(`Error: --as-bot needs a bot token, but no xoxb- token was found.
187
+ Set SLACK_BOT_TOKEN=xoxb-... in ~/.config/slack-cli/.env (or your shell).`),process.exit(1);if(r)return{botToken:s};let{ref:o}=On(e);if(!o.startsWith("@"))return{botToken:s};try{let i=await tt(t,o,n);return{botToken:s,channelId:await et(s,i)}}catch(i){console.error(`Error: could not resolve ${Q(o)} to the bot's DM.
188
188
  ${i instanceof Error?i.message:String(i)}
189
- `+" Tip: pass the message permalink, or --channel-id <D\u2026>, to skip the lookup."),process.exit(1)}}async function Ad(e,t){let n=Lt(e,t.cookie),{ref:r,ts:s}=An(t.target);if(!s)console.error("Error: target must embed a message ts (e.g. #chan:2026-05-11T06:01:04.000100 or a Slack permalink URL)"),process.exit(2);let o;if(t.channelId)o=t.channelId;else o=await De(e,r,t.cookie);let i=await qe(e,o,s,1,t.cookie),c=X(i.messages).map(P).find((h)=>String(h.ts)===s);if(!c)console.error(`Message not found at ts=${s} in channel ${o}`),process.exit(1);let u=typeof c.text==="string"?c.text:"",f=t.mentionCookie??t.cookie,l=t.mentions?await Yc(t.mentionToken??e,t.newText,o,f?{cookie:f}:{}):t.newText;Hn(l,t.allowUrlAdjacent);let d=await n(),p=Ye(u,l,d?.userId??"");if(t.code!==p)je(t.code,p,["--- Editing as -------------------------------",Le(d,{asBot:t.asBot}),"--- Original message -------------------------",...u.split(`
190
- `).map((h)=>` ${h}`),"--- Replacing with ---------------------------",...l.split(`
191
- `).map((h)=>` ${h}`),"--------------------------------\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500"]);let m=await Zt(e,o,s,l,t.cookie);console.log(`\u2713 Edited (ts: ${m})`)}async function $d(e,t){let n=Lt(e,t.cookie),{ref:r,ts:s}=An(t.target);if(!s)console.error("Error: target must embed a message ts (e.g. #chan:2026-05-11T06:01:04.000100 or a Slack permalink URL)"),process.exit(2);let o;if(t.channelId)o=t.channelId;else o=await De(e,r,t.cookie);let i=await qe(e,o,s,1,t.cookie),c=X(i.messages).map(P).find((d)=>String(d.ts)===s);if(!c)console.error(`Message not found at ts=${s} in channel ${o}`),process.exit(1);let u=typeof c.text==="string"?c.text:"",f=await n(),l=Ye(o,s,u,f?.userId??"");if(t.code!==l){let d=await Ps(e,o,r,t.cookie);je(t.code,l,["--- Deleting message -------------------------",Le(f,{asBot:t.asBot}),` \u2192 ${d} at ${ao(s)}`,...u.split(`
192
- `).map((p)=>` ${p}`),"---------------------------------------------"])}await bc(e,o,s,t.cookie),console.log(`\u2713 Deleted (ts: ${s})`)}async function Od(e,t){let{ref:n,ts:r}=An(t.target);if(!r)console.error("Error: target must embed a message ts (e.g. #chan:2026-05-11T06:01:04.000100 or a Slack permalink URL)"),process.exit(2);let s=t.emoji.replace(/^:|:$/g,""),o;if(t.channelId)o=t.channelId;else o=await De(e,n,t.cookie);if(t.remove)await yn(e,o,r,s,t.cookie),console.log(`\u2713 Removed :${s}: (ts: ${r})`);else await Qt(e,o,r,s,t.cookie),console.log(`\u2713 Reacted :${s}: (ts: ${r})`)}async function lo(e,t,n,r){if(!n||!t.startsWith("D"))return!1;try{let s=P(await En(e,t,r)),o=P(s.channel);return o.is_im===!0&&o.user===n}catch{return!1}}async function Id(e,t){let{ref:n,threadTs:r}=$n(t.target),s=t.cookie,o=Lt(e,s),i;if(t.channelId)i=t.channelId;else if(t.userId)i=await et(e,t.userId,s);else i=await De(e,n,s);if(!t.asBot&&await lo(e,i,(await o())?.userId,s))console.error(`Warning: "${t.target}" is a DM to yourself \u2014 Slack will NOT notify you of your own message.
193
- `+` To reach yourself with a notification, send as the bot: slack send '${t.target}' '...' --as-bot`);let a=ft(t.message);Hn(a,t.allowUrlAdjacent);let c=a,u=null;if(t.mentions){u=await jt(t.mentionToken??e,a,i,t.mentionCookie),c=u.text;for(let I of _n(u.unresolved))console.error(`\u26A0 ${Q(I)}`)}try{for(let I of await Vc(t.mentionToken??e,c,t.mentionCookie))console.error(`\u26A0 possible untagged mention: ${Q(I.surface)} \u2014 @${Q(I.display)} won't be notified (did you mean <@${I.userId}>?)`)}catch{}let f=[];if(u&&(u.resolved.length>0||u.unresolved.length>0)){f.push("--- Mentions ---------------------------------");for(let I of u.resolved)f.push(` \u2713 ${Q(I.surface)} \u2192 @${Q(I.display)} (${I.userId}) \u2014 will notify`);for(let I of u.unresolved){let R=I.reason==="ambiguous"?"ambiguous":I.reason==="unavailable"?"lookup unavailable":"no match";f.push(` \u26A0 ${Q(I.surface)} \u2014 plain text, NOT notified (${R})`)}}let l="",d="?",p=[],m,h,y;if(r)try{let I=await qe(e,i,r,100,s);p=X(I.messages).map(P);let R=p[p.length-1];l=typeof R?.text==="string"?R.text:"",m=typeof R?.user==="string"?R.user:void 0,h=typeof R?.bot_id==="string"?R.bot_id:void 0,y=typeof R?.ts==="string"?R.ts:void 0}catch{}else try{let I=await Ve(e,i,1,void 0,void 0,s),R=X(I.messages).map(P),V=R.filter((ne)=>ne.subtype===void 0||ne.subtype===null)[0];l=typeof V?.text==="string"?V.text:"",d=typeof V?.user==="string"?await Ne(e,V.user,s):typeof V?.username==="string"?V.username:"?";let L=R[0];m=typeof L?.user==="string"?L.user:void 0,h=typeof L?.bot_id==="string"?L.bot_id:void 0,y=typeof L?.ts==="string"?L.ts:void 0}catch{}if(process.env.SLACK_UNREPLIED_WARN!=="0"&&y&&(m||h))try{let I=await o();if(!!I&&(!!m&&!!I.userId&&I.userId===m||!!h&&!!I.botId&&I.botId===h)){let V=`slack edit "#${i}:${y}" "<\u65B0\u3057\u3044\u672C\u6587>" --channel-id ${i}`;try{let L=await Dn(e,i,y,s);if(L)V=`slack edit "${L}" "<\u65B0\u3057\u3044\u672C\u6587>"`}catch{}console.error("\u26A0 \u76F8\u624B\u306F\u307E\u3060\u8FD4\u4FE1\u3057\u3066\u3044\u307E\u305B\u3093(\u6700\u5F8C\u306E\u30E1\u30C3\u30BB\u30FC\u30B8\u306F\u3042\u306A\u305F\u306E\u3082\u306E\u3067\u3059)\u3002"),console.error(" \u9023\u6295\u3092\u907F\u3051\u308B\u305F\u3081\u3001\u65B0\u898F\u9001\u4FE1\u3067\u306A\u304F\u76F4\u524D\u306E\u30E1\u30C3\u30BB\u30FC\u30B8\u306E edit \u3092\u691C\u8A0E\u3057\u3066\u304F\u3060\u3055\u3044:"),console.error(` ${V}`),console.error(" \u3053\u306E\u307E\u307E\u9001\u4FE1\u3059\u308B\u5834\u5408\u306F --code=XXXX \u3067\u78BA\u5B9A\u3002")}}catch{}if(r&&p.length){let I={sim:0,msg:null};for(let R of p){let V=typeof R.text==="string"?R.text:"";if(!V)continue;let L=Sd(c,V);if(L>I.sim)I={sim:L,msg:R}}if(I.msg&&I.sim>=0.82){let R=Math.round(I.sim*100);console.error(`\u26A0 possible duplicate: ${R}% similar to an existing thread message \u2014 ${await oo(e,I.msg,60,s)}`)}}let E=await o(),F=await Ts(e,i,s),A=Ye(i,r??"",l,c,E?.userId??"");if(t.code!==A){let I=await Ps(e,i,n,s),R=Le(E,{asBot:t.asBot});if(r){let V=await kd(e,r,p,s),L=p.slice(-3),ne=L.length?await Promise.all(L.map(async(_)=>` ${await oo(e,_,60,s)}`)):[" (thread context unavailable)"];je(t.code,A,["--- Recent messages in thread ----------------",...ne,...f,"--- Sending ----------------------------------",R,` \u2192 ${I} thread of ${V} \u2014 THREAD REPLY`,` Message: ${c}`,"--------------------------------\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500"],F)}else je(t.code,A,["--- Last message in channel ------------------",` ${d}: ${l.split(`
194
- `)[0]?.slice(0,100)??"(empty)"}`,...f,"--- Sending ----------------------------------",R,` \u2192 ${I} \u2014 NEW top-level message`,` Message: ${c}`,"--------------------------------\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500"],F)}let k=await Fs(e,i,c,r,t.broadcast,s),B="";try{B=await Dn(e,i,k,s)}catch{}if(B)console.log(`\u2713 Sent: ${B}`);else console.log(`\u2713 Sent (ts: ${k})`);if(t.asBot&&i.startsWith("D"))try{let I=await is(e);if(!I.ok)for(let R of as(I,!0))console.error(R);else{let R=I.appId?`https://api.slack.com/apps/${I.appId}`:"https://api.slack.com/apps";console.error(`Note: if ${t.target} can't reply (app messaging may be off), enable Messages Tab: ${R} \u2192 App Home.`)}}catch{}}var Td=2,Ee=3,Pd=4,Rd=1.618033988749895,Md=1000,Bd=5000,ou=8,Nd=(e)=>new Promise((t)=>setTimeout(t,e)),vd=new Set(["thread_broadcast"]),jd=/(?<![A-Za-z0-9._@<-])@(here|channel|everyone)(?![A-Za-z0-9._-])/giu;function $s(e){let t=new Set;return{text:e.replace(jd,(r,s)=>{let o=s.toLowerCase();return t.add(o),`<!${o}>`}),kinds:t}}async function Rs(e,t,n){if(!t.startsWith("D"))return;try{let r=P(await En(e,t,n)),s=P(r.channel);return s.is_im===!0&&typeof s.user==="string"?s.user:void 0}catch{return}}async function yu(e,t){let{channelId:n,ts:r,question:s,reactable:o,threadOnly:i,audience:a,broadcast:c,cookie:u,timeout:f,shown:l}=t,{askerUserId:d,askerBotId:p}=t,m=(_)=>typeof _==="string"&&!!_&&_!==d&&(c||a.has(_)),h,y="";function E(_){let C=X(_.reactions).map(P),S=[];for(let O=0;O<o.length;O++){let W=C.find((q)=>q.name===Be[O].name),G=W?X(W.users).filter(m):[];if(G.length)S.push({index:O,users:G})}return S}async function F(_,C){let S=typeof _.text==="string"?_.text:"";if(!S)return;let O=Mr(S,C);if(O===S)return;try{await Zt(e,n,r,O,u,!0)}catch(W){console.error(` (\u8CEA\u554F\u6587\u306B\u6CE8\u610F\u66F8\u304D\u3092\u5165\u308C\u3089\u308C\u307E\u305B\u3093\u3067\u3057\u305F: ${W instanceof Error?W.message:String(W)})`)}}async function A(_){let C=E(_);if(C.length<=1&&Rr(typeof _.text==="string"?_.text:"").length)await F(_,[]);if(!C.length)return null;if(C.length===1){let{index:W,users:G}=C[0];return{answer:o[W],how:`\u30EA\u30A2\u30AF\u30B7\u30E7\u30F3 ${Be[W].glyph}`,who:G[0]}}let S=C.map((W)=>Be[W.index].glyph).join(" / ");console.error(` (${S} \u304C\u540C\u6642\u306B\u9078\u3070\u308C\u3066\u3044\u307E\u3059\u30021 \u3064\u306B\u7D5E\u3063\u3066\u3082\u3089\u3046\u307E\u3067\u5F85\u3061\u307E\u3059)`);let O=[...new Set(C.flatMap((W)=>W.users))].sort();return await F(_,O),null}let k=[...o,...t.overflow];function B(_,C=1/0){let S=[..._].sort((O,W)=>Number(O.ts)-Number(W.ts));for(let O of S){if(!(Number(O.ts)>Number(r)))continue;if(!m(O.user))continue;if(typeof O.subtype==="string"&&!vd.has(O.subtype))continue;if(Number(O.ts)>=C)break;let W=typeof O.text==="string"?O.text.trim():"";if(!W)continue;if(!k.length)return{answer:W,how:"\u8FD4\u4FE1",who:O.user};let G=Xa(W,k);if(G.kind==="chosen")return{answer:k[G.index-1],how:`\u8FD4\u4FE1 (${G.index})`,who:O.user};if(!h||Number(O.ts)<Number(h.ts))h={text:W,who:typeof O.user==="string"?O.user:"",ts:String(O.ts),ambiguous:G.kind==="ambiguous"}}return null}async function I(){if(h=void 0,t.threadParentTs){let O=P(await qe(e,n,t.threadParentTs,100,u)),W=X(O.messages).map(P),G=W.find((q)=>q.ts===r);if(G){let q=await A(G);if(q)return q}return B(W)}let _=P(await Ve(e,n,30,r,void 0,u,!0)),C=X(_.messages).map(P),S=C.find((O)=>O.ts===r);if(S){let O=await A(S);if(O)return O}if(!i){let O=C.filter((G)=>Number(G.ts)>Number(r)&&(p&&G.bot_id===p||d&&G.user===d)).reduce((G,q)=>Math.min(G,Number(q.ts)),1/0),W=B(C,O);if(W)return W}if(S&&Number(S.reply_count)>0){let O=P(await qe(e,n,r,30,u)),W=B(X(O.messages).map(P));if(W)return W}return null}async function R(_){for(let S=0;S<o.length;S++)try{await yn(e,n,r,Be[S].name,u)}catch{}let C="";if(_.who)try{C=await Ne(e,_.who,u)}catch{C=_.who}if(C)console.error(` \u56DE\u7B54\u8005: ${Q(C)}`);try{await Zt(e,n,r,Ha(s,_,C),u,!0);try{await Qt(e,n,r,Br,u),await yn(e,n,r,Ds,u)}catch{}}catch(S){console.error(` (\u5143\u30E1\u30C3\u30BB\u30FC\u30B8\u306E\u66F4\u65B0\u306B\u5931\u6557: ${S instanceof Error?S.message:String(S)})`)}}let V=Date.now()+f*1000,L=0,ne=Md;for(;;){let _=null;try{_=await I(),L=0}catch(C){if(L++,L>=ou)console.error(`Error: Slack \u3078\u306E\u554F\u3044\u5408\u308F\u305B\u306B ${L} \u56DE\u9023\u7D9A\u3067\u5931\u6557\u3057\u307E\u3057\u305F: ${C instanceof Error?C.message:String(C)}`),process.exit(Ee);console.error(` (Slack \u30A8\u30E9\u30FC ${L}/${ou}, \u518D\u8A66\u884C\u3057\u307E\u3059: ${C instanceof Error?C.message:String(C)})`)}if(_)await R(_),console.log(_.answer),process.exit(0);if(h&&h.ts!==y){y=h.ts;let C=h.who;try{if(C)C=await Ne(e,C,u)}catch{}console.error(h.ambiguous?` (${Q(C)} \u306E\u8FD4\u4FE1\u306F\u8907\u6570\u306E\u9078\u629E\u80A2\u306B\u4E00\u81F4\u3057\u307E\u3059\u30021 \u3064\u306B\u7D5E\u3063\u3066\u3082\u3089\u3046\u307E\u3067\u5F85\u3061\u307E\u3059)`:` (${Q(C)} \u304C\u8FD4\u4FE1\u3057\u307E\u3057\u305F\u304C\u3001\u9078\u629E\u80A2\u306E\u3069\u308C\u3067\u3082\u3042\u308A\u307E\u305B\u3093\u3002\u5F85\u6A5F\u3092\u7D9A\u3051\u307E\u3059)`),console.error(` \u300C${Q(h.text)}\u300D`)}if(Date.now()>=V)break;await Nd(Math.min(ne,Math.max(0,V-Date.now()))),ne=Math.min(ne*Rd,Bd)}if(h)console.error(h.ambiguous?"Error: \u8FD4\u4FE1\u306F\u3042\u308A\u307E\u3057\u305F\u304C\u3001\u8907\u6570\u306E\u9078\u629E\u80A2\u306B\u4E00\u81F4\u3059\u308B\u305F\u3081\u78BA\u5B9A\u3067\u304D\u307E\u305B\u3093 (\u30E1\u30C3\u30BB\u30FC\u30B8\u306F\u305D\u306E\u307E\u307E\u6B8B\u3063\u3066\u3044\u307E\u3059)":"Error: \u8FD4\u4FE1\u306F\u3042\u308A\u307E\u3057\u305F\u304C\u3001\u9078\u629E\u80A2\u306E\u3069\u308C\u3082\u9078\u3070\u308C\u3066\u3044\u307E\u305B\u3093 (\u30E1\u30C3\u30BB\u30FC\u30B8\u306F\u305D\u306E\u307E\u307E\u6B8B\u3063\u3066\u3044\u307E\u3059)"),console.error(` \u8FD4\u4FE1: \u300C${Q(h.text)}\u300D`),console.error(` \u9078\u629E\u80A2: ${k.map((_,C)=>`${C+1}. ${Q(Gt(_))}`).join(" ")}`),console.error(` ${l}`),console.error(` \u8FD4\u7B54\u3057\u3066\u304B\u3089\u56DE\u53CE\u3059\u308B: ${io(l,t.asBot)}`),process.exit(Pd);if(f===0)console.error(`\u307E\u3060\u56DE\u7B54\u304C\u3042\u308A\u307E\u305B\u3093: ${l}`);else console.error(`Error: ${f}s \u4EE5\u5185\u306B\u56DE\u7B54\u304C\u3042\u308A\u307E\u305B\u3093\u3067\u3057\u305F (\u30E1\u30C3\u30BB\u30FC\u30B8\u306F\u305D\u306E\u307E\u307E\u6B8B\u3063\u3066\u3044\u307E\u3059)`),console.error(` ${l}`),console.error(` \u3042\u3068\u3067\u56DE\u53CE\u3059\u308B: ${io(l,t.asBot)}`);process.exit(Td)}function io(e,t){return`slack ask --waitFor='${e}'${t?" --as-bot":""}`}async function Ld(e,t){let{ref:n,threadTs:r}=$n(t.target,!1),s=t.cookie,o=Lt(e,s),i;if(t.channelId)i=t.channelId;else if(t.userId)i=await et(e,t.userId,s);else i=await De(e,n,s);let a=(await o())?.userId??"",c=await Rs(e,i,s);if(!t.asBot&&!!a&&c===a)console.error(`Warning: "${t.target}" is a DM to yourself \u2014 Slack will NOT notify you of your own message.
195
- `+` To reach yourself with a notification, ask as the bot: slack ask '${t.target}' '...' --as-bot`);let u=$s(ft(t.question)),f=$s(ft(t.body??"")),l=new Set([...u.kinds,...f.kinds]),d=t.mentionToken??e,p=await jt(d,u.text,i,t.mentionCookie),m=f.text?await jt(d,f.text,i,t.mentionCookie):{text:"",resolved:[],unresolved:[]},h=p.text,y=m.text,E=[...p.resolved,...m.resolved],F=[...p.unresolved,...m.unresolved];for(let ee of _n(F))console.error(`\u26A0 ${Q(ee)}`);let A=l.size>0,k=new Set(E.map((ee)=>ee.userId).filter((ee)=>ee!==a)),B=new Map(E.map((ee)=>[ee.userId,ee.display])),I;if(A)I=`anyone in ${n} (${[...l].map((ee)=>`@${ee}`).join(", ")})`;else{if(!k.size&&c&&c!==a)k.add(c),B.set(c,await Ne(e,c,s));if(!k.size)console.error("Error: `ask` will not post a question nobody is addressed to \u2014 no one is tagged.\n"+(F.length?` (${F.map((ee)=>Q(ee.surface)).join(", ")} matched no one, so it names nobody.)
189
+ `+" Tip: pass the message permalink, or --channel-id <D\u2026>, to skip the lookup."),process.exit(1)}}async function Wd(e,t){let n=Lt(e,t.cookie),{ref:r,ts:s}=On(t.target);if(!s)console.error("Error: target must embed a message ts (e.g. #chan:2026-05-11T06:01:04.000100 or a Slack permalink URL)"),process.exit(2);let o;if(t.channelId)o=t.channelId;else o=await De(e,r,t.cookie);let i=await qe(e,o,s,1,t.cookie),c=Y(i.messages).map(P).find((p)=>String(p.ts)===s);if(!c)console.error(`Message not found at ts=${s} in channel ${o}`),process.exit(1);let u=typeof c.text==="string"?c.text:"",f=t.mentionCookie??t.cookie,l=t.mentions?await ru(t.mentionToken??e,t.newText,o,f?{cookie:f}:{}):t.newText;qn(l,t.allowUrlAdjacent);let d=await n(),h=Ge(u,l,d?.userId??"");if(t.code!==h)je(t.code,h,["--- Editing as -------------------------------",Le(d,{asBot:t.asBot}),"--- Original message -------------------------",...u.split(`
190
+ `).map((p)=>` ${p}`),"--- Replacing with ---------------------------",...l.split(`
191
+ `).map((p)=>` ${p}`),"--------------------------------\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500"]);let m=await Zt(e,o,s,l,t.cookie);console.log(`\u2713 Edited (ts: ${m})`)}async function Ud(e,t){let n=Lt(e,t.cookie),{ref:r,ts:s}=On(t.target);if(!s)console.error("Error: target must embed a message ts (e.g. #chan:2026-05-11T06:01:04.000100 or a Slack permalink URL)"),process.exit(2);let o;if(t.channelId)o=t.channelId;else o=await De(e,r,t.cookie);let i=await qe(e,o,s,1,t.cookie),c=Y(i.messages).map(P).find((d)=>String(d.ts)===s);if(!c)console.error(`Message not found at ts=${s} in channel ${o}`),process.exit(1);let u=typeof c.text==="string"?c.text:"",f=await n(),l=Ge(o,s,u,f?.userId??"");if(t.code!==l){let d=await Ms(e,o,r,t.cookie);je(t.code,l,["--- Deleting message -------------------------",Le(f,{asBot:t.asBot}),` \u2192 ${d} at ${po(s)}`,...u.split(`
192
+ `).map((h)=>` ${h}`),"---------------------------------------------"])}await $c(e,o,s,t.cookie),console.log(`\u2713 Deleted (ts: ${s})`)}async function Kd(e,t){let{ref:n,ts:r}=On(t.target);if(!r)console.error("Error: target must embed a message ts (e.g. #chan:2026-05-11T06:01:04.000100 or a Slack permalink URL)"),process.exit(2);let s=t.emoji.replace(/^:|:$/g,""),o;if(t.channelId)o=t.channelId;else o=await De(e,n,t.cookie);if(t.remove)await wn(e,o,r,s,t.cookie),console.log(`\u2713 Removed :${s}: (ts: ${r})`);else await Qt(e,o,r,s,t.cookie),console.log(`\u2713 Reacted :${s}: (ts: ${r})`)}async function mo(e,t,n,r){if(!n||!t.startsWith("D"))return!1;try{let s=P(await _n(e,t,r)),o=P(s.channel);return o.is_im===!0&&o.user===n}catch{return!1}}async function Jd(e,t){let{ref:n,threadTs:r}=sn(t.target),s=t.cookie,o=Lt(e,s),i;if(t.channelId)i=t.channelId;else if(t.userId)i=await et(e,t.userId,s);else i=await De(e,n,s);if(!t.asBot&&await mo(e,i,(await o())?.userId,s))console.error(`Warning: "${t.target}" is a DM to yourself \u2014 Slack will NOT notify you of your own message.
193
+ `+` To reach yourself with a notification, send as the bot: slack send '${t.target}' '...' --as-bot`);let a=ft(t.message);qn(a,t.allowUrlAdjacent);let c=a,u=null;if(t.mentions){u=await jt(t.mentionToken??e,a,i,t.mentionCookie),c=u.text;for(let I of Sn(u.unresolved))console.error(`\u26A0 ${Q(I)}`)}try{for(let I of await au(t.mentionToken??e,c,t.mentionCookie))console.error(`\u26A0 possible untagged mention: ${Q(I.surface)} \u2014 @${Q(I.display)} won't be notified (did you mean <@${I.userId}>?)`)}catch{}let f=[];if(u&&(u.resolved.length>0||u.unresolved.length>0)){f.push("--- Mentions ---------------------------------");for(let I of u.resolved)f.push(` \u2713 ${Q(I.surface)} \u2192 @${Q(I.display)} (${I.userId}) \u2014 will notify`);for(let I of u.unresolved){let R=I.reason==="ambiguous"?"ambiguous":I.reason==="unavailable"?"lookup unavailable":"no match";f.push(` \u26A0 ${Q(I.surface)} \u2014 plain text, NOT notified (${R})`)}}let l="",d="?",h=[],m,p,y;if(r)try{let I=await qe(e,i,r,100,s);h=Y(I.messages).map(P);let R=h[h.length-1];l=typeof R?.text==="string"?R.text:"",m=typeof R?.user==="string"?R.user:void 0,p=typeof R?.bot_id==="string"?R.bot_id:void 0,y=typeof R?.ts==="string"?R.ts:void 0}catch{}else try{let I=await Ve(e,i,1,void 0,void 0,s),R=Y(I.messages).map(P),V=R.filter((ne)=>ne.subtype===void 0||ne.subtype===null)[0];l=typeof V?.text==="string"?V.text:"",d=typeof V?.user==="string"?await ve(e,V.user,s):typeof V?.username==="string"?V.username:"?";let L=R[0];m=typeof L?.user==="string"?L.user:void 0,p=typeof L?.bot_id==="string"?L.bot_id:void 0,y=typeof L?.ts==="string"?L.ts:void 0}catch{}if(process.env.SLACK_UNREPLIED_WARN!=="0"&&y&&(m||p))try{let I=await o();if(!!I&&(!!m&&!!I.userId&&I.userId===m||!!p&&!!I.botId&&I.botId===p)){let V=`slack edit "#${i}:${y}" "<\u65B0\u3057\u3044\u672C\u6587>" --channel-id ${i}`;try{let L=await bn(e,i,y,s);if(L)V=`slack edit "${L}" "<\u65B0\u3057\u3044\u672C\u6587>"`}catch{}console.error("\u26A0 \u76F8\u624B\u306F\u307E\u3060\u8FD4\u4FE1\u3057\u3066\u3044\u307E\u305B\u3093(\u6700\u5F8C\u306E\u30E1\u30C3\u30BB\u30FC\u30B8\u306F\u3042\u306A\u305F\u306E\u3082\u306E\u3067\u3059)\u3002"),console.error(" \u9023\u6295\u3092\u907F\u3051\u308B\u305F\u3081\u3001\u65B0\u898F\u9001\u4FE1\u3067\u306A\u304F\u76F4\u524D\u306E\u30E1\u30C3\u30BB\u30FC\u30B8\u306E edit \u3092\u691C\u8A0E\u3057\u3066\u304F\u3060\u3055\u3044:"),console.error(` ${V}`),console.error(" \u3053\u306E\u307E\u307E\u9001\u4FE1\u3059\u308B\u5834\u5408\u306F --code=XXXX \u3067\u78BA\u5B9A\u3002")}}catch{}if(r&&h.length){let I={sim:0,msg:null};for(let R of h){let V=typeof R.text==="string"?R.text:"";if(!V)continue;let L=Ld(c,V);if(L>I.sim)I={sim:L,msg:R}}if(I.msg&&I.sim>=0.82){let R=Math.round(I.sim*100);console.error(`\u26A0 possible duplicate: ${R}% similar to an existing thread message \u2014 ${await lo(e,I.msg,60,s)}`)}}let E=await o(),F=await Rs(e,i,s),A=Ge(i,r??"",l,c,E?.userId??"");if(t.code!==A){let I=await Ms(e,i,n,s),R=Le(E,{asBot:t.asBot});if(r){let V=await jd(e,r,h,s),L=h.slice(-3),ne=L.length?await Promise.all(L.map(async(_)=>` ${await lo(e,_,60,s)}`)):[" (thread context unavailable)"];je(t.code,A,["--- Recent messages in thread ----------------",...ne,...f,"--- Sending ----------------------------------",R,` \u2192 ${I} thread of ${V} \u2014 THREAD REPLY`,` Message: ${c}`,"--------------------------------\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500"],F)}else je(t.code,A,["--- Last message in channel ------------------",` ${d}: ${l.split(`
194
+ `)[0]?.slice(0,100)??"(empty)"}`,...f,"--- Sending ----------------------------------",R,` \u2192 ${I} \u2014 NEW top-level message`,` Message: ${c}`,"--------------------------------\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500"],F)}let k=await Es(e,i,c,r,t.broadcast,s),B="";try{B=await bn(e,i,k,s)}catch{}if(B)console.log(`\u2713 Sent: ${B}`);else console.log(`\u2713 Sent (ts: ${k})`);if(t.asBot&&i.startsWith("D"))try{let I=await cs(e);if(!I.ok)for(let R of us(I,!0))console.error(R);else{let R=I.appId?`https://api.slack.com/apps/${I.appId}`:"https://api.slack.com/apps";console.error(`Note: if ${t.target} can't reply (app messaging may be off), enable Messages Tab: ${R} \u2192 App Home.`)}}catch{}}var zd=2,Ee=3,Hd=4,qd=1.618033988749895,Gd=1000,Yd=5000,gu=8,Xd=(e)=>new Promise((t)=>setTimeout(t,e)),Vd=new Set(["thread_broadcast"]),Zd=/(?<![A-Za-z0-9._@<-])@(here|channel|everyone)(?![A-Za-z0-9._-])/giu;function Is(e){let t=new Set;return{text:e.replace(Zd,(r,s)=>{let o=s.toLowerCase();return t.add(o),`<!${o}>`}),kinds:t}}async function Bs(e,t,n){if(!t.startsWith("D"))return;try{let r=P(await _n(e,t,n)),s=P(r.channel);return s.is_im===!0&&typeof s.user==="string"?s.user:void 0}catch{return}}async function Au(e,t){let{channelId:n,ts:r,question:s,reactable:o,threadOnly:i,audience:a,broadcast:c,cookie:u,timeout:f,shown:l}=t,{askerUserId:d,askerBotId:h}=t,m=(_)=>typeof _==="string"&&!!_&&_!==d&&(c||a.has(_)),p,y="";function E(_){let C=Y(_.reactions).map(P),S=[];for(let O=0;O<o.length;O++){let W=C.find((q)=>q.name===Be[O].name),X=W?Y(W.users).filter(m):[];if(X.length)S.push({index:O,users:X})}return S}async function F(_,C){let S=typeof _.text==="string"?_.text:"";if(!S)return;let O=Lr(S,C);if(O===S)return;try{await Zt(e,n,r,O,u,!0)}catch(W){console.error(` (\u8CEA\u554F\u6587\u306B\u6CE8\u610F\u66F8\u304D\u3092\u5165\u308C\u3089\u308C\u307E\u305B\u3093\u3067\u3057\u305F: ${W instanceof Error?W.message:String(W)})`)}}async function A(_){let C=E(_);if(C.length<=1&&jr(typeof _.text==="string"?_.text:"").length)await F(_,[]);if(!C.length)return null;if(C.length===1){let{index:W,users:X}=C[0];return{answer:o[W],how:`\u30EA\u30A2\u30AF\u30B7\u30E7\u30F3 ${Be[W].glyph}`,who:X[0]}}let S=C.map((W)=>Be[W.index].glyph).join(" / ");console.error(` (${S} \u304C\u540C\u6642\u306B\u9078\u3070\u308C\u3066\u3044\u307E\u3059\u30021 \u3064\u306B\u7D5E\u3063\u3066\u3082\u3089\u3046\u307E\u3067\u5F85\u3061\u307E\u3059)`);let O=[...new Set(C.flatMap((W)=>W.users))].sort();return await F(_,O),null}let k=[...o,...t.overflow];function B(_,C=1/0){let S=[..._].sort((O,W)=>Number(O.ts)-Number(W.ts));for(let O of S){if(!(Number(O.ts)>Number(r)))continue;if(!m(O.user))continue;if(typeof O.subtype==="string"&&!Vd.has(O.subtype))continue;if(Number(O.ts)>=C)break;let W=typeof O.text==="string"?O.text.trim():"";if(!W)continue;if(!k.length)return{answer:W,how:"\u8FD4\u4FE1",who:O.user};let X=oc(W,k);if(X.kind==="chosen")return{answer:k[X.index-1],how:`\u8FD4\u4FE1 (${X.index})`,who:O.user};if(!p||Number(O.ts)<Number(p.ts))p={text:W,who:typeof O.user==="string"?O.user:"",ts:String(O.ts),ambiguous:X.kind==="ambiguous"}}return null}async function I(){if(p=void 0,t.threadParentTs){let O=P(await qe(e,n,t.threadParentTs,100,u)),W=Y(O.messages).map(P),X=W.find((q)=>q.ts===r);if(X){let q=await A(X);if(q)return q}return B(W)}let _=P(await Ve(e,n,30,r,void 0,u,!0)),C=Y(_.messages).map(P),S=C.find((O)=>O.ts===r);if(S){let O=await A(S);if(O)return O}if(!i){let O=C.filter((X)=>Number(X.ts)>Number(r)&&(h&&X.bot_id===h||d&&X.user===d)).reduce((X,q)=>Math.min(X,Number(q.ts)),1/0),W=B(C,O);if(W)return W}if(S&&Number(S.reply_count)>0){let O=P(await qe(e,n,r,30,u)),W=B(Y(O.messages).map(P));if(W)return W}return null}async function R(_){for(let S=0;S<o.length;S++)try{await wn(e,n,r,Be[S].name,u)}catch{}let C="";if(_.who)try{C=await ve(e,_.who,u)}catch{C=_.who}if(C)console.error(` \u56DE\u7B54\u8005: ${Q(C)}`);try{await Zt(e,n,r,nc(s,_,C),u,!0);try{await Qt(e,n,r,Wr,u),await wn(e,n,r,bs,u)}catch{}}catch(S){console.error(` (\u5143\u30E1\u30C3\u30BB\u30FC\u30B8\u306E\u66F4\u65B0\u306B\u5931\u6557: ${S instanceof Error?S.message:String(S)})`)}}let V=Date.now()+f*1000,L=0,ne=Gd;for(;;){let _=null;try{_=await I(),L=0}catch(C){if(L++,L>=gu)console.error(`Error: Slack \u3078\u306E\u554F\u3044\u5408\u308F\u305B\u306B ${L} \u56DE\u9023\u7D9A\u3067\u5931\u6557\u3057\u307E\u3057\u305F: ${C instanceof Error?C.message:String(C)}`),process.exit(Ee);console.error(` (Slack \u30A8\u30E9\u30FC ${L}/${gu}, \u518D\u8A66\u884C\u3057\u307E\u3059: ${C instanceof Error?C.message:String(C)})`)}if(_)await R(_),console.log(_.answer),process.exit(0);if(p&&p.ts!==y){y=p.ts;let C=p.who;try{if(C)C=await ve(e,C,u)}catch{}console.error(p.ambiguous?` (${Q(C)} \u306E\u8FD4\u4FE1\u306F\u8907\u6570\u306E\u9078\u629E\u80A2\u306B\u4E00\u81F4\u3057\u307E\u3059\u30021 \u3064\u306B\u7D5E\u3063\u3066\u3082\u3089\u3046\u307E\u3067\u5F85\u3061\u307E\u3059)`:` (${Q(C)} \u304C\u8FD4\u4FE1\u3057\u307E\u3057\u305F\u304C\u3001\u9078\u629E\u80A2\u306E\u3069\u308C\u3067\u3082\u3042\u308A\u307E\u305B\u3093\u3002\u5F85\u6A5F\u3092\u7D9A\u3051\u307E\u3059)`),console.error(` \u300C${Q(p.text)}\u300D`)}if(Date.now()>=V)break;await Xd(Math.min(ne,Math.max(0,V-Date.now()))),ne=Math.min(ne*qd,Yd)}if(p)console.error(p.ambiguous?"Error: \u8FD4\u4FE1\u306F\u3042\u308A\u307E\u3057\u305F\u304C\u3001\u8907\u6570\u306E\u9078\u629E\u80A2\u306B\u4E00\u81F4\u3059\u308B\u305F\u3081\u78BA\u5B9A\u3067\u304D\u307E\u305B\u3093 (\u30E1\u30C3\u30BB\u30FC\u30B8\u306F\u305D\u306E\u307E\u307E\u6B8B\u3063\u3066\u3044\u307E\u3059)":"Error: \u8FD4\u4FE1\u306F\u3042\u308A\u307E\u3057\u305F\u304C\u3001\u9078\u629E\u80A2\u306E\u3069\u308C\u3082\u9078\u3070\u308C\u3066\u3044\u307E\u305B\u3093 (\u30E1\u30C3\u30BB\u30FC\u30B8\u306F\u305D\u306E\u307E\u307E\u6B8B\u3063\u3066\u3044\u307E\u3059)"),console.error(` \u8FD4\u4FE1: \u300C${Q(p.text)}\u300D`),console.error(` \u9078\u629E\u80A2: ${k.map((_,C)=>`${C+1}. ${Q(Xt(_))}`).join(" ")}`),console.error(` ${l}`),console.error(` \u8FD4\u7B54\u3057\u3066\u304B\u3089\u56DE\u53CE\u3059\u308B: ${fo(l,t.asBot)}`),process.exit(Hd);if(f===0)console.error(`\u307E\u3060\u56DE\u7B54\u304C\u3042\u308A\u307E\u305B\u3093: ${l}`);else console.error(`Error: ${f}s \u4EE5\u5185\u306B\u56DE\u7B54\u304C\u3042\u308A\u307E\u305B\u3093\u3067\u3057\u305F (\u30E1\u30C3\u30BB\u30FC\u30B8\u306F\u305D\u306E\u307E\u307E\u6B8B\u3063\u3066\u3044\u307E\u3059)`),console.error(` ${l}`),console.error(` \u3042\u3068\u3067\u56DE\u53CE\u3059\u308B: ${fo(l,t.asBot)}`);process.exit(zd)}function fo(e,t){return`slack ask --waitFor='${e}'${t?" --as-bot":""}`}async function Qd(e,t){let{ref:n,threadTs:r}=sn(t.target,!1),s=t.cookie,o=Lt(e,s),i;if(t.channelId)i=t.channelId;else if(t.userId)i=await et(e,t.userId,s);else i=await De(e,n,s);let a=(await o())?.userId??"",c=await Bs(e,i,s);if(!t.asBot&&!!a&&c===a)console.error(`Warning: "${t.target}" is a DM to yourself \u2014 Slack will NOT notify you of your own message.
195
+ `+` To reach yourself with a notification, ask as the bot: slack ask '${t.target}' '...' --as-bot`);let u=Is(ft(t.question)),f=Is(ft(t.body??"")),l=new Set([...u.kinds,...f.kinds]),d=t.mentionToken??e,h=await jt(d,u.text,i,t.mentionCookie),m=f.text?await jt(d,f.text,i,t.mentionCookie):{text:"",resolved:[],unresolved:[]},p=h.text,y=m.text,E=[...h.resolved,...m.resolved],F=[...h.unresolved,...m.unresolved];for(let ee of Sn(F))console.error(`\u26A0 ${Q(ee)}`);let A=l.size>0,k=new Set(E.map((ee)=>ee.userId).filter((ee)=>ee!==a)),B=new Map(E.map((ee)=>[ee.userId,ee.display])),I;if(A)I=`anyone in ${n} (${[...l].map((ee)=>`@${ee}`).join(", ")})`;else{if(!k.size&&c&&c!==a)k.add(c),B.set(c,await ve(e,c,s));if(!k.size)console.error("Error: `ask` will not post a question nobody is addressed to \u2014 no one is tagged.\n"+(F.length?` (${F.map((ee)=>Q(ee.surface)).join(", ")} matched no one, so it names nobody.)
196
196
  `:"")+` Tag the person who should answer: slack ask '${t.target}' '@alice ${t.question}' ...
197
197
  Or open it to the whole channel: slack ask '${t.target}' '@here ${t.question}' ...
198
- (In a 1:1 DM the other person counts automatically.)`),process.exit(Ee);I=[...k].map((ee)=>`@${Q(B.get(ee)??ee)} (${ee})`).join(", ")}let R=t.choices.map(ft),V=R.slice(0,ms),L=R.slice(ms),ne=!i.startsWith("D")||!!r,_=za(h,y,V,L,ne);Hn(_,t.allowUrlAdjacent);let C="",S="?";try{let ee=await Ve(e,i,1,void 0,void 0,s),N=X(ee.messages).map(P).filter((we)=>we.subtype===void 0||we.subtype===null)[0];C=typeof N?.text==="string"?N.text:"",S=typeof N?.user==="string"?await Ne(e,N.user,s):typeof N?.username==="string"?N.username:"?"}catch{}let O=await o(),W=await Ts(e,i,s),G=Ye(i,r??"",C,_,O?.userId??"");if(t.code!==G){let ee=await Ps(e,i,n,s),N=V.length?["--- Choices (seeded as reactions) ------------",...V.map((we,Wt)=>` ${Be[Wt].glyph} ${Gt(we)}`),...L.map((we,Wt)=>` (${Wt+11}) ${Gt(we)} \u2014 text answer only`)]:["--- Choices ----------------------------------"," (none \u2014 free-text reply)"];je(t.code,G,["--- Last message in channel ------------------",` ${S}: ${C.split(`
199
- `)[0]?.slice(0,100)??"(empty)"}`,...N,"--- Asking -----------------------------------",Le(O,{asBot:t.asBot}),` \u2192 ${ee}${r?" \u2014 THREAD REPLY":" \u2014 NEW top-level message"}`,` Question: ${h}`,` Answerable by: ${I}`,` Via: ${ne?"reactions or thread replies":"reactions or replies in this DM"}`,"--------------------------------\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500"],W)}let q=await Fs(e,i,_,r,!1,s,!0);await Ur([Ds,...V.map((ee,N)=>Be[N].name)],(ee)=>Qt(e,i,q,ee,s),(ee,N)=>{let we=N instanceof Error?N.message:String(N);if(ee===Ds)console.error(` (marker ${ee} \u3092\u4ED8\u3051\u3089\u308C\u307E\u305B\u3093\u3067\u3057\u305F: ${we})`);else console.error(` (\u30EA\u30A2\u30AF\u30B7\u30E7\u30F3 ${ee} \u3092\u4ED8\u3051\u3089\u308C\u307E\u305B\u3093\u3067\u3057\u305F: ${we})`)});let ae="";try{ae=await Dn(e,i,q,s)}catch{}let Ie=ae||`${i}:${q}`;if(console.error(`\u2713 Asked: ${Ie}`),!t.wait){console.log(io(Ie,!!t.asBot));return}let te=t.timeout??3600;console.error(` \u56DE\u7B54\u3092\u5F85\u3063\u3066\u3044\u307E\u3059 (\u6700\u5927 ${te}s)\u2026 Ctrl-C \u3067\u4E2D\u65AD`);let ke={channelId:i,ts:q,question:h,reactable:V,overflow:L,threadOnly:ne,audience:k,broadcast:A,askerUserId:O?.userId??"",askerBotId:O?.botId??"",timeout:te,shown:Ie,asBot:!!t.asBot};if(r)ke.threadParentTs=r;if(s)ke.cookie=s;await yu(e,ke)}async function Wd(e,t){let n=Nt(t.link),r,s,o;if(n?.ts)r=n.channel,s=n.ts,o=n.threadTs&&n.threadTs!==n.ts?n.threadTs:void 0;else{let m=t.link.match(/^([A-Za-z0-9]+):(\d{10}\.\d{6})$/);if(!m)console.error(`Error: --waitFor needs the permalink of a question (or 'C\u2026:1700000000.000100').
200
- `+` Got: ${Q(t.link)}`),process.exit(Ee);r=m[1],s=m[2]}let i;if(o){let m=P(await qe(e,r,o,100,t.cookie));i=X(m.messages).map(P).find((h)=>h.ts===s)}else{let m=P(await Ve(e,r,1,s,void 0,t.cookie,!0));i=X(m.messages).map(P).find((h)=>h.ts===s)}if(!i)console.error(`Error: \u305D\u306E\u30E1\u30C3\u30BB\u30FC\u30B8\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093: ${Q(t.link)}`),process.exit(Ee);let a=typeof i.text==="string"?i.text:"",c=Ya(a);if(c.kind==="other")console.error("Error: \u3053\u308C\u306F `slack ask` \u306E\u8CEA\u554F\u3068\u3057\u3066\u8AAD\u307F\u53D6\u308C\u307E\u305B\u3093\u3002\n"+` \u7406\u7531: ${qa(a)}
198
+ (In a 1:1 DM the other person counts automatically.)`),process.exit(Ee);I=[...k].map((ee)=>`@${Q(B.get(ee)??ee)} (${ee})`).join(", ")}let R=t.choices.map(ft),V=R.slice(0,ys),L=R.slice(ys),ne=!i.startsWith("D")||!!r,_=tc(p,y,V,L,ne);qn(_,t.allowUrlAdjacent);let C="",S="?";try{let ee=await Ve(e,i,1,void 0,void 0,s),v=Y(ee.messages).map(P).filter((we)=>we.subtype===void 0||we.subtype===null)[0];C=typeof v?.text==="string"?v.text:"",S=typeof v?.user==="string"?await ve(e,v.user,s):typeof v?.username==="string"?v.username:"?"}catch{}let O=await o(),W=await Rs(e,i,s),X=Ge(i,r??"",C,_,O?.userId??"");if(t.code!==X){let ee=await Ms(e,i,n,s),v=V.length?["--- Choices (seeded as reactions) ------------",...V.map((we,Wt)=>` ${Be[Wt].glyph} ${Xt(we)}`),...L.map((we,Wt)=>` (${Wt+11}) ${Xt(we)} \u2014 text answer only`)]:["--- Choices ----------------------------------"," (none \u2014 free-text reply)"];je(t.code,X,["--- Last message in channel ------------------",` ${S}: ${C.split(`
199
+ `)[0]?.slice(0,100)??"(empty)"}`,...v,"--- Asking -----------------------------------",Le(O,{asBot:t.asBot}),` \u2192 ${ee}${r?" \u2014 THREAD REPLY":" \u2014 NEW top-level message"}`,` Question: ${p}`,` Answerable by: ${I}`,` Via: ${ne?"reactions or thread replies":"reactions or replies in this DM"}`,"--------------------------------\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500"],W)}let q=await Es(e,i,_,r,!1,s,!0);await qr([bs,...V.map((ee,v)=>Be[v].name)],(ee)=>Qt(e,i,q,ee,s),(ee,v)=>{let we=v instanceof Error?v.message:String(v);if(ee===bs)console.error(` (marker ${ee} \u3092\u4ED8\u3051\u3089\u308C\u307E\u305B\u3093\u3067\u3057\u305F: ${we})`);else console.error(` (\u30EA\u30A2\u30AF\u30B7\u30E7\u30F3 ${ee} \u3092\u4ED8\u3051\u3089\u308C\u307E\u305B\u3093\u3067\u3057\u305F: ${we})`)});let ae="";try{ae=await bn(e,i,q,s)}catch{}let Ie=ae||`${i}:${q}`;if(console.error(`\u2713 Asked: ${Ie}`),!t.wait){console.log(fo(Ie,!!t.asBot));return}let te=t.timeout??3600;console.error(` \u56DE\u7B54\u3092\u5F85\u3063\u3066\u3044\u307E\u3059 (\u6700\u5927 ${te}s)\u2026 Ctrl-C \u3067\u4E2D\u65AD`);let ke={channelId:i,ts:q,question:p,reactable:V,overflow:L,threadOnly:ne,audience:k,broadcast:A,askerUserId:O?.userId??"",askerBotId:O?.botId??"",timeout:te,shown:Ie,asBot:!!t.asBot};if(r)ke.threadParentTs=r;if(s)ke.cookie=s;await Au(e,ke)}async function ep(e,t){let n=vt(t.link),r,s,o;if(n?.ts)r=n.channel,s=n.ts,o=n.threadTs&&n.threadTs!==n.ts?n.threadTs:void 0;else{let m=t.link.match(/^([A-Za-z0-9]+):(\d{10}\.\d{6})$/);if(!m)console.error(`Error: --waitFor needs the permalink of a question (or 'C\u2026:1700000000.000100').
200
+ `+` Got: ${Q(t.link)}`),process.exit(Ee);r=m[1],s=m[2]}let i;if(o){let m=P(await qe(e,r,o,100,t.cookie));i=Y(m.messages).map(P).find((p)=>p.ts===s)}else{let m=P(await Ve(e,r,1,s,void 0,t.cookie,!0));i=Y(m.messages).map(P).find((p)=>p.ts===s)}if(!i)console.error(`Error: \u305D\u306E\u30E1\u30C3\u30BB\u30FC\u30B8\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093: ${Q(t.link)}`),process.exit(Ee);let a=typeof i.text==="string"?i.text:"",c=rc(a);if(c.kind==="other")console.error("Error: \u3053\u308C\u306F `slack ask` \u306E\u8CEA\u554F\u3068\u3057\u3066\u8AAD\u307F\u53D6\u308C\u307E\u305B\u3093\u3002\n"+` \u7406\u7531: ${sc(a)}
201
201
  ${Q(t.link)}
202
- `+` (\u62BC\u3055\u308C\u305F\u30EA\u30A2\u30AF\u30B7\u30E7\u30F3\u306F\u6B8B\u3063\u3066\u3044\u307E\u3059: slack read '${Q(t.link)}' \u3067\u78BA\u8A8D\u3067\u304D\u307E\u3059)`),process.exit(Ee);if(c.kind==="resolved"){console.error(`\u2713 \u56DE\u7B54\u6E08\u307F: ${Q(c.question)}`),console.log(c.answer);return}let u=typeof i.user==="string"?i.user:"",f=typeof i.bot_id==="string"?i.bot_id:"",l=/<!(here|channel|everyone)(\^[^>]*)?(\|[^>]*)?>/.test(a),d=new Set;for(let m of a.matchAll(/<@([UW][A-Z0-9]+)>/g))if(m[1]!==u)d.add(m[1]);if(!d.size&&!l){let m=await Rs(e,r,t.cookie);if(m&&m!==u)d.add(m)}if(!d.size&&!l)console.error(`Error: \u3053\u306E\u8CEA\u554F\u306F\u8AB0\u306B\u3082\u5B9B\u3066\u3089\u308C\u3066\u3044\u306A\u3044\u305F\u3081\u3001\u6709\u52B9\u306A\u56DE\u7B54\u8005\u3092\u5224\u5B9A\u3067\u304D\u307E\u305B\u3093: ${Q(t.link)}`),process.exit(Ee);if(t.timeout>0)console.error(` \u56DE\u7B54\u3092\u5F85\u3063\u3066\u3044\u307E\u3059 (\u6700\u5927 ${t.timeout}s)\u2026 Ctrl-C \u3067\u4E2D\u65AD`);let p={channelId:r,ts:s,question:c.question,reactable:c.reactable,overflow:c.overflow,threadOnly:c.threadOnly,audience:d,broadcast:l,askerUserId:u,askerBotId:f,timeout:t.timeout,shown:t.link,asBot:t.asBot};if(o)p.threadParentTs=o;if(t.cookie)p.cookie=t.cookie;await yu(e,p)}var ve=3;function Ud(e){return`slack poll --results='${e}'`}async function Kd(e,t){let{ref:n,threadTs:r}=$n(t.target,!1),s=t.cookie,o=Lt(e,s),i;if(t.channelId)i=t.channelId;else if(t.userId)i=await et(e,t.userId,s);else i=await De(e,n,s);let a=(await o())?.userId??"",c=await Rs(e,i,s);if(!t.asBot&&!!a&&c===a)console.error(`Warning: "${t.target}" is a DM to yourself \u2014 Slack will NOT notify you of your own message.
203
- `+` To reach yourself with a notification, post as the bot: slack poll '${t.target}' '...' --as-bot`);let u=$s(ft(t.question)),f=$s(ft(t.body??"")),l=t.mentionToken??e,d=await jt(l,u.text,i,t.mentionCookie),p=f.text?await jt(l,f.text,i,t.mentionCookie):{text:"",resolved:[],unresolved:[]},m=d.text,h=p.text;for(let C of _n([...d.unresolved,...p.unresolved]))console.error(`\u26A0 ${Q(C)}`);let y=t.choices.map(ft),E=!!t.multi,F=t.until??"",A=tc(m,h,y,{multi:E,deadline:F}),k="",B="?";try{let C=await Ve(e,i,1,void 0,void 0,s),S=X(C.messages).map(P).filter((O)=>O.subtype===void 0||O.subtype===null)[0];k=typeof S?.text==="string"?S.text:"",B=typeof S?.user==="string"?await Ne(e,S.user,s):typeof S?.username==="string"?S.username:"?"}catch{}let I=await o(),R=await Ts(e,i,s),V=Ye(i,r??"",k,A,I?.userId??"");if(t.code!==V){let C=await Ps(e,i,n,s);je(t.code,V,["--- Last message in channel ------------------",` ${B}: ${k.split(`
204
- `)[0]?.slice(0,100)??"(empty)"}`,"--- Ballot (seeded as reactions) -------------",...y.map((S,O)=>` ${ze[O].glyph} ${pn(S)}`),"--- Posting ----------------------------------",Le(I,{asBot:t.asBot}),` \u2192 ${C}${r?" \u2014 THREAD REPLY":" \u2014 NEW top-level message"}`,` Question: ${m}`,` Rule: ${E?"1 \u4EBA \u4F55\u7968\u3067\u3082 (--multi)":"1 \u4EBA 1 \u7968"}${F?` \u2014 \u7DE0\u5207 ${F}`:""}`," Note: \u3042\u306A\u305F\u81EA\u8EAB\u306E\u7968\u306F\u6570\u3048\u307E\u305B\u3093 (\u30D4\u30EB\u306F\u3042\u306A\u305F\u304C\u4ED8\u3051\u305F\u7A2E\u306A\u306E\u3067\u533A\u5225\u3067\u304D\u307E\u305B\u3093)","--------------------------------\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500"],R)}let L=await Fs(e,i,A,r,!1,s,!0);await Ur([gn,...y.map((C,S)=>ze[S].name)],(C)=>Qt(e,i,L,C,s),(C,S)=>{let O=S instanceof Error?S.message:String(S);if(C===gn)console.error(` (marker ${C} \u3092\u4ED8\u3051\u3089\u308C\u307E\u305B\u3093\u3067\u3057\u305F: ${O})`);else console.error(` (\u30EA\u30A2\u30AF\u30B7\u30E7\u30F3 ${C} \u3092\u4ED8\u3051\u3089\u308C\u307E\u305B\u3093\u3067\u3057\u305F: ${O})`)});let ne="";try{ne=await Dn(e,i,L,s)}catch{}let _=ne||`${i}:${L}`;console.error(`\u2713 Posted: ${_}`),console.log(Ud(_)),console.error(` \u7DE0\u3081\u5207\u308B: slack poll --close='${_}'${t.asBot?" --as-bot":""}`)}async function Jd(e,t,n){let r=Nt(t),s,o,i;if(r?.ts)s=r.channel,o=r.ts,i=r.threadTs&&r.threadTs!==r.ts?r.threadTs:void 0;else{let c=t.match(/^([A-Za-z0-9]+):(\d{10}\.\d{6})$/);if(!c)console.error(`Error: --results/--close needs the permalink of a poll (or 'C\u2026:1700000000.000100').
205
- `+` Got: ${Q(t)}`),process.exit(ve);s=c[1],o=c[2]}let a;if(i){let c=P(await qe(e,s,i,100,n));a=X(c.messages).map(P).find((u)=>u.ts===o)}else{let c=P(await Ve(e,s,1,o,void 0,n,!0));a=X(c.messages).map(P).find((u)=>u.ts===o)}if(!a)console.error(`Error: \u305D\u306E\u30E1\u30C3\u30BB\u30FC\u30B8\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093: ${Q(t)}`),process.exit(ve);return{channelId:s,ts:o,msg:a}}function iu(e){let t=Math.max(1,...e.map((n)=>n.count));return e.map((n,r)=>`${ze[r].glyph} ${String(n.count).padStart(3)} ${"\u2588".repeat(Math.round(n.count/t*20))}${n.count?" ":""}${n.choice}`)}async function zd(e,t){let{channelId:n,ts:r,msg:s}=await Jd(e,t.link,t.cookie),o=typeof s.text==="string"?s.text:"",i=sc(o);if(i.kind==="other")console.error("Error: \u3053\u308C\u306F `slack poll` \u306E\u6295\u7968\u3067\u306F\u3042\u308A\u307E\u305B\u3093 (\u7968\u306E\u6570\u3048\u65B9\u304C\u5206\u304B\u308A\u307E\u305B\u3093)\u3002\n"+` ${Q(t.link)}`),process.exit(ve);if(i.kind==="closed"){console.error(`\u2713 \u6295\u7968\u7D42\u4E86: ${Q(i.question)}`);for(let p of iu(i.tallies))console.log(p);return}let a=new Set;if(typeof s.user==="string"&&s.user)a.add(s.user);let c=await wc(e,n,r,t.cookie),u=rc(i.choices,c,a,i.multi);console.error(`${Q(i.question)}${i.deadline?` (\u7DE0\u5207 ${i.deadline})`:""}`);for(let p of iu(u.tallies))console.log(p);let f=u.tallies.reduce((p,m)=>p+m.count,0);if(console.error(` \u8A08 ${f} \u7968${i.multi?" (\u8907\u6570\u9078\u629E\u53EF)":""}`),t.names)for(let p=0;p<u.voters.length;p++){if(!u.voters[p].length)continue;let m=await Promise.all(u.voters[p].map((h)=>Ne(e,h,t.cookie)));console.error(` ${ze[p].glyph} ${m.map((h)=>`@${Q(h)}`).join(", ")}`)}let l=i.multi?[]:u.ambiguous,d=Mr(o,l);if(d!==o&&!t.noNotify)try{await Zt(t.writeToken??e,n,r,d,t.writeToken?t.writeCookie:t.cookie,!0)}catch(p){console.error(` (\u6295\u7968\u6587\u306B\u6CE8\u610F\u66F8\u304D\u3092\u5165\u308C\u3089\u308C\u307E\u305B\u3093\u3067\u3057\u305F: ${p instanceof Error?p.message:String(p)})
206
- `+" \u30E1\u30C3\u30BB\u30FC\u30B8\u3092\u66F8\u304D\u63DB\u3048\u3089\u308C\u308B\u306E\u306F\u6295\u7A3F\u8005\u3060\u3051\u3067\u3059 \u2014 bot \u304C\u6295\u7A3F\u3057\u305F\u6295\u7968\u306A\u3089 --as-bot \u3092\u4ED8\u3051\u3066\u304F\u3060\u3055\u3044\u3002")}if(u.ambiguous.length){let p=await Promise.all(u.ambiguous.map((m)=>Ne(e,m,t.cookie)));console.error(`\u26A0 1 \u4EBA 1 \u7968\u306A\u306E\u306B\u8907\u6570\u62BC\u3057\u3066\u3044\u308B\u4EBA\u304C\u3044\u307E\u3059 (\u7121\u52B9\u7968): ${p.map((m)=>`@${Q(m)}`).join(", ")}`)}if(!t.close)return;await Zt(t.writeToken??e,n,r,nc(i.question,u.tallies),t.writeToken?t.writeCookie:t.cookie,!0);try{await Qt(t.writeToken??e,n,r,Wr,t.writeToken?t.writeCookie:t.cookie),await yn(t.writeToken??e,n,r,gn,t.writeToken?t.writeCookie:t.cookie)}catch{}console.error(`\u2713 \u6295\u7968\u3092\u7DE0\u3081\u5207\u308A\u307E\u3057\u305F: ${Q(t.link)}`)}async function Hd(e){let t=await is(e);for(let n of as(t,!1))console.log(n);if(!t.ok)process.exit(1)}function so(){let e=ut();if(!e)console.error(`Error: --as-bot needs a bot token, but no xoxb- token was found.
207
- Set SLACK_BOT_TOKEN=xoxb-... in ~/.config/slack-cli/.env (or your shell).`),process.exit(1);return e}async function au(e,t,n,r){let s=await tt(n,e,r);return et(t,s)}function qd(e){if(/^\d{10,}$/.test(e))return parseInt(e,10);let t=new Date(e.replace(" ","T"));if(isNaN(t.getTime()))throw Error(`Cannot parse time: ${e}`);return Math.floor(t.getTime()/1000)}function Yd(e){let t=new Date(e*1000);return`${new Intl.DateTimeFormat("sv-SE",{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",hour12:!1,timeZoneName:"short"}).format(t).replace(/\u2212/g,"-")} (local) / ${t.toISOString()} (Unix: ${e})`}async function Xd(e,t){let n=Lt(e,t.cookie),{ref:r,threadTs:s}=$n(t.target),o;if(t.channelId)o=t.channelId;else if(t.userId)o=await et(e,t.userId,t.cookie);else o=await De(e,r,t.cookie);let i=qd(t.at),a=new Date(i*1000).toISOString(),c=await n();if(!t.asBot&&await lo(e,o,c?.userId,t.cookie))console.error(`Warning: "${t.target}" is a DM to yourself \u2014 Slack will NOT notify you when this fires.
208
- `+` To be notified, schedule it as the bot: slack schedule send '${t.target}' '...' --at '${t.at}' --as-bot`);let u=Ye(o,t.message,String(i),c?.userId??""),f=t.targetOverride?` [${t.targetOverride} \u2192 ${o}]`:"";if(t.code!==u){let d=await Ts(e,o,t.cookie);je(t.code,u,["--- Scheduling message -----------------------",Le(c,{asBot:t.asBot,pad:9}),` To: ${r}${s?` (thread ${s})`:""}${f}`,` At: ${Yd(i)}`,` Message: ${t.message}`,"---------------------------------------------"],d,new Date(i*1000))}let l=await mc(e,o,t.message,i,s,t.cookie);if(console.log(`\u2713 Scheduled (id: ${l}, at: ${a})`),t.asBot){if(console.error(` Scheduled as the bot \u2014 the user token cannot see or cancel it. Use the same flag:
202
+ `+` (\u62BC\u3055\u308C\u305F\u30EA\u30A2\u30AF\u30B7\u30E7\u30F3\u306F\u6B8B\u3063\u3066\u3044\u307E\u3059: slack read '${Q(t.link)}' \u3067\u78BA\u8A8D\u3067\u304D\u307E\u3059)`),process.exit(Ee);if(c.kind==="resolved"){console.error(`\u2713 \u56DE\u7B54\u6E08\u307F: ${Q(c.question)}`),console.log(c.answer);return}let u=typeof i.user==="string"?i.user:"",f=typeof i.bot_id==="string"?i.bot_id:"",l=/<!(here|channel|everyone)(\^[^>]*)?(\|[^>]*)?>/.test(a),d=new Set;for(let m of a.matchAll(/<@([UW][A-Z0-9]+)>/g))if(m[1]!==u)d.add(m[1]);if(!d.size&&!l){let m=await Bs(e,r,t.cookie);if(m&&m!==u)d.add(m)}if(!d.size&&!l)console.error(`Error: \u3053\u306E\u8CEA\u554F\u306F\u8AB0\u306B\u3082\u5B9B\u3066\u3089\u308C\u3066\u3044\u306A\u3044\u305F\u3081\u3001\u6709\u52B9\u306A\u56DE\u7B54\u8005\u3092\u5224\u5B9A\u3067\u304D\u307E\u305B\u3093: ${Q(t.link)}`),process.exit(Ee);if(t.timeout>0)console.error(` \u56DE\u7B54\u3092\u5F85\u3063\u3066\u3044\u307E\u3059 (\u6700\u5927 ${t.timeout}s)\u2026 Ctrl-C \u3067\u4E2D\u65AD`);let h={channelId:r,ts:s,question:c.question,reactable:c.reactable,overflow:c.overflow,threadOnly:c.threadOnly,audience:d,broadcast:l,askerUserId:u,askerBotId:f,timeout:t.timeout,shown:t.link,asBot:t.asBot};if(o)h.threadParentTs=o;if(t.cookie)h.cookie=t.cookie;await Au(e,h)}var Ne=3;function tp(e){return`slack poll --results='${e}'`}async function np(e,t){let{ref:n,threadTs:r}=sn(t.target,!1),s=t.cookie,o=Lt(e,s),i;if(t.channelId)i=t.channelId;else if(t.userId)i=await et(e,t.userId,s);else i=await De(e,n,s);let a=(await o())?.userId??"",c=await Bs(e,i,s);if(!t.asBot&&!!a&&c===a)console.error(`Warning: "${t.target}" is a DM to yourself \u2014 Slack will NOT notify you of your own message.
203
+ `+` To reach yourself with a notification, post as the bot: slack poll '${t.target}' '...' --as-bot`);let u=Is(ft(t.question)),f=Is(ft(t.body??"")),l=t.mentionToken??e,d=await jt(l,u.text,i,t.mentionCookie),h=f.text?await jt(l,f.text,i,t.mentionCookie):{text:"",resolved:[],unresolved:[]},m=d.text,p=h.text;for(let C of Sn([...d.unresolved,...h.unresolved]))console.error(`\u26A0 ${Q(C)}`);let y=t.choices.map(ft),E=!!t.multi,F=t.until??"",A=fc(m,p,y,{multi:E,deadline:F}),k="",B="?";try{let C=await Ve(e,i,1,void 0,void 0,s),S=Y(C.messages).map(P).filter((O)=>O.subtype===void 0||O.subtype===null)[0];k=typeof S?.text==="string"?S.text:"",B=typeof S?.user==="string"?await ve(e,S.user,s):typeof S?.username==="string"?S.username:"?"}catch{}let I=await o(),R=await Rs(e,i,s),V=Ge(i,r??"",k,A,I?.userId??"");if(t.code!==V){let C=await Ms(e,i,n,s);je(t.code,V,["--- Last message in channel ------------------",` ${B}: ${k.split(`
204
+ `)[0]?.slice(0,100)??"(empty)"}`,"--- Ballot (seeded as reactions) -------------",...y.map((S,O)=>` ${ze[O].glyph} ${mn(S)}`),"--- Posting ----------------------------------",Le(I,{asBot:t.asBot}),` \u2192 ${C}${r?" \u2014 THREAD REPLY":" \u2014 NEW top-level message"}`,` Question: ${m}`,` Rule: ${E?"1 \u4EBA \u4F55\u7968\u3067\u3082 (--multi)":"1 \u4EBA 1 \u7968"}${F?` \u2014 \u7DE0\u5207 ${F}`:""}`," Note: \u3042\u306A\u305F\u81EA\u8EAB\u306E\u7968\u306F\u6570\u3048\u307E\u305B\u3093 (\u30D4\u30EB\u306F\u3042\u306A\u305F\u304C\u4ED8\u3051\u305F\u7A2E\u306A\u306E\u3067\u533A\u5225\u3067\u304D\u307E\u305B\u3093)","--------------------------------\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500"],R)}let L=await Es(e,i,A,r,!1,s,!0);await qr([Dn,...y.map((C,S)=>ze[S].name)],(C)=>Qt(e,i,L,C,s),(C,S)=>{let O=S instanceof Error?S.message:String(S);if(C===Dn)console.error(` (marker ${C} \u3092\u4ED8\u3051\u3089\u308C\u307E\u305B\u3093\u3067\u3057\u305F: ${O})`);else console.error(` (\u30EA\u30A2\u30AF\u30B7\u30E7\u30F3 ${C} \u3092\u4ED8\u3051\u3089\u308C\u307E\u305B\u3093\u3067\u3057\u305F: ${O})`)});let ne="";try{ne=await bn(e,i,L,s)}catch{}let _=ne||`${i}:${L}`;console.error(`\u2713 Posted: ${_}`),console.log(tp(_)),console.error(` \u7DE0\u3081\u5207\u308B: slack poll --close='${_}'${t.asBot?" --as-bot":""}`)}async function sp(e,t,n){let r=vt(t),s,o,i;if(r?.ts)s=r.channel,o=r.ts,i=r.threadTs&&r.threadTs!==r.ts?r.threadTs:void 0;else{let c=t.match(/^([A-Za-z0-9]+):(\d{10}\.\d{6})$/);if(!c)console.error(`Error: --results/--close needs the permalink of a poll (or 'C\u2026:1700000000.000100').
205
+ `+` Got: ${Q(t)}`),process.exit(Ne);s=c[1],o=c[2]}let a;if(i){let c=P(await qe(e,s,i,100,n));a=Y(c.messages).map(P).find((u)=>u.ts===o)}else{let c=P(await Ve(e,s,1,o,void 0,n,!0));a=Y(c.messages).map(P).find((u)=>u.ts===o)}if(!a)console.error(`Error: \u305D\u306E\u30E1\u30C3\u30BB\u30FC\u30B8\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093: ${Q(t)}`),process.exit(Ne);return{channelId:s,ts:o,msg:a}}function mu(e){let t=Math.max(1,...e.map((n)=>n.count));return e.map((n,r)=>`${ze[r].glyph} ${String(n.count).padStart(3)} ${"\u2588".repeat(Math.round(n.count/t*20))}${n.count?" ":""}${n.choice}`)}async function rp(e,t){let{channelId:n,ts:r,msg:s}=await sp(e,t.link,t.cookie),o=typeof s.text==="string"?s.text:"",i=pc(o);if(i.kind==="other")console.error("Error: \u3053\u308C\u306F `slack poll` \u306E\u6295\u7968\u3067\u306F\u3042\u308A\u307E\u305B\u3093 (\u7968\u306E\u6570\u3048\u65B9\u304C\u5206\u304B\u308A\u307E\u305B\u3093)\u3002\n"+` ${Q(t.link)}`),process.exit(Ne);if(i.kind==="closed"){console.error(`\u2713 \u6295\u7968\u7D42\u4E86: ${Q(i.question)}`);for(let h of mu(i.tallies))console.log(h);return}let a=new Set;if(typeof s.user==="string"&&s.user)a.add(s.user);let c=await Oc(e,n,r,t.cookie),u=hc(i.choices,c,a,i.multi);console.error(`${Q(i.question)}${i.deadline?` (\u7DE0\u5207 ${i.deadline})`:""}`);for(let h of mu(u.tallies))console.log(h);let f=u.tallies.reduce((h,m)=>h+m.count,0);if(console.error(` \u8A08 ${f} \u7968${i.multi?" (\u8907\u6570\u9078\u629E\u53EF)":""}`),t.names)for(let h=0;h<u.voters.length;h++){if(!u.voters[h].length)continue;let m=await Promise.all(u.voters[h].map((p)=>ve(e,p,t.cookie)));console.error(` ${ze[h].glyph} ${m.map((p)=>`@${Q(p)}`).join(", ")}`)}let l=i.multi?[]:u.ambiguous,d=Lr(o,l);if(d!==o&&!t.noNotify)try{await Zt(t.writeToken??e,n,r,d,t.writeToken?t.writeCookie:t.cookie,!0)}catch(h){console.error(` (\u6295\u7968\u6587\u306B\u6CE8\u610F\u66F8\u304D\u3092\u5165\u308C\u3089\u308C\u307E\u305B\u3093\u3067\u3057\u305F: ${h instanceof Error?h.message:String(h)})
206
+ `+" \u30E1\u30C3\u30BB\u30FC\u30B8\u3092\u66F8\u304D\u63DB\u3048\u3089\u308C\u308B\u306E\u306F\u6295\u7A3F\u8005\u3060\u3051\u3067\u3059 \u2014 bot \u304C\u6295\u7A3F\u3057\u305F\u6295\u7968\u306A\u3089 --as-bot \u3092\u4ED8\u3051\u3066\u304F\u3060\u3055\u3044\u3002")}if(u.ambiguous.length){let h=await Promise.all(u.ambiguous.map((m)=>ve(e,m,t.cookie)));console.error(`\u26A0 1 \u4EBA 1 \u7968\u306A\u306E\u306B\u8907\u6570\u62BC\u3057\u3066\u3044\u308B\u4EBA\u304C\u3044\u307E\u3059 (\u7121\u52B9\u7968): ${h.map((m)=>`@${Q(m)}`).join(", ")}`)}if(!t.close)return;await Zt(t.writeToken??e,n,r,dc(i.question,u.tallies),t.writeToken?t.writeCookie:t.cookie,!0);try{await Qt(t.writeToken??e,n,r,Hr,t.writeToken?t.writeCookie:t.cookie),await wn(t.writeToken??e,n,r,Dn,t.writeToken?t.writeCookie:t.cookie)}catch{}console.error(`\u2713 \u6295\u7968\u3092\u7DE0\u3081\u5207\u308A\u307E\u3057\u305F: ${Q(t.link)}`)}async function op(e){let t=await cs(e);for(let n of us(t,!1))console.log(n);if(!t.ok)process.exit(1)}function co(){let e=ut();if(!e)console.error(`Error: --as-bot needs a bot token, but no xoxb- token was found.
207
+ Set SLACK_BOT_TOKEN=xoxb-... in ~/.config/slack-cli/.env (or your shell).`),process.exit(1);return e}async function Du(e,t,n,r){let s=await tt(n,e,r);return et(t,s)}function ip(e){if(/^\d{10,}$/.test(e))return parseInt(e,10);let t=new Date(e.replace(" ","T"));if(isNaN(t.getTime()))throw Error(`Cannot parse time: ${e}`);return Math.floor(t.getTime()/1000)}function ap(e){let t=new Date(e*1000);return`${new Intl.DateTimeFormat("sv-SE",{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",hour12:!1,timeZoneName:"short"}).format(t).replace(/\u2212/g,"-")} (local) / ${t.toISOString()} (Unix: ${e})`}async function cp(e,t){let n=Lt(e,t.cookie),{ref:r,threadTs:s}=sn(t.target),o;if(t.channelId)o=t.channelId;else if(t.userId)o=await et(e,t.userId,t.cookie);else o=await De(e,r,t.cookie);let i=ip(t.at),a=new Date(i*1000).toISOString(),c=await n();if(!t.asBot&&await mo(e,o,c?.userId,t.cookie))console.error(`Warning: "${t.target}" is a DM to yourself \u2014 Slack will NOT notify you when this fires.
208
+ `+` To be notified, schedule it as the bot: slack schedule send '${t.target}' '...' --at '${t.at}' --as-bot`);let u=Ge(o,t.message,String(i),c?.userId??""),f=t.targetOverride?` [${t.targetOverride} \u2192 ${o}]`:"";if(t.code!==u){let d=await Rs(e,o,t.cookie);je(t.code,u,["--- Scheduling message -----------------------",Le(c,{asBot:t.asBot,pad:9}),` To: ${r}${s?` (thread ${s})`:""}${f}`,` At: ${ap(i)}`,` Message: ${t.message}`,"---------------------------------------------"],d,new Date(i*1000))}let l=await kc(e,o,t.message,i,s,t.cookie);if(console.log(`\u2713 Scheduled (id: ${l}, at: ${a})`),t.asBot){if(console.error(` Scheduled as the bot \u2014 the user token cannot see or cancel it. Use the same flag:
209
209
  `+` slack schedule ls --as-bot
210
- slack schedule rm '${t.target}' ${l} --as-bot`),o.startsWith("D"))try{let d=await is(e);if(!d.ok)for(let p of as(d,!0))console.error(p);else{let p=d.appId?`https://api.slack.com/apps/${d.appId}`:"https://api.slack.com/apps";console.error(`Note: if ${t.target} can't reply (app messaging may be off), enable Messages Tab: ${p} \u2192 App Home.`)}}catch{}}}async function cu(e,t,n,r){let s;if(n)s=n;else if(t)s=await De(e,t,r);let i=(await Dc(e,s,r)).scheduled_messages??[];if(i.length===0){console.log("(no scheduled messages)");return}for(let a of i){let c=new Date(a.post_at*1000).toISOString();console.log(`${a.id} ${c} [${a.channel_id}] ${a.text.split(`
211
- `)[0]?.slice(0,80)??""}`)}}async function uu(e,t){let n;if(t.channelId)n=t.channelId;else n=await De(e,t.target,t.cookie);let r=await nn(e,t.cookie),s=Ye(n,t.id,r?.userId??"");if(t.code!==s)je(t.code,s,["--- Deleting scheduled message ---------------",Le(r,{asBot:t.asBot,pad:9}),` Channel: ${t.target}${t.targetOverride?` [${t.targetOverride} \u2192 ${n}]`:""}`,` ID: ${t.id}`,"---------------------------------------------"]);await yc(e,n,t.id,t.cookie),console.log(`\u2713 Deleted scheduled message ${t.id}`)}async function Gd(e,t){let n=Lt(e,t.cookie),{statSync:r,existsSync:s}=await import("fs"),{basename:o}=await import("path");for(let m of t.filePaths)if(!s(m))console.error(`Error: file not found: ${m}`),process.exit(1);let{ref:i,threadTs:a}=$n(t.target),c;if(t.channelId)c=t.channelId;else if(t.userId)c=await et(e,t.userId,t.cookie);else c=await De(e,i,t.cookie);if(await lo(e,c,(await n())?.userId,t.cookie))console.error(`Warning: "${t.target}" is a DM to yourself \u2014 Slack will NOT notify you of your own upload.`);let u=t.filePaths.length>1,f=t.filePaths.map((m)=>{let h=o(m),y=u?h:t.title??h;return{fp:m,filename:h,title:y,sizeFmt:Is(r(m).size)}}),l=await n(),d=Ye(c,...f.flatMap((m)=>[m.fp,m.title]),l?.userId??"");if(t.code!==d){let m=` To: ${i}${a?` (thread ${a})`:""}`,h=u?[`--- Uploading ${f.length} files ------------------------`,Le(l,{pad:7}),m,...f.map((y)=>` ${y.filename} (${y.sizeFmt})`),"--------------------------------\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500"]:["--- Uploading file ---------------------------",Le(l,{pad:7}),m,` File: ${f[0].fp}`,` Title: ${f[0].title}`,` Size: ${f[0].sizeFmt}`,"--------------------------------\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500"];je(t.code,d,h)}let p=f.length;for(let m=0;m<p;m++){let h=f[m],y={title:h.title};if(a!==void 0)y.threadTs=a;if(t.comment!==void 0&&m===0)y.initialComment=t.comment;let{fileId:E,permalink:F}=await Pc(e,c,h.fp,y,t.cookie),A=p>1?`[${m+1}/${p}] `:"";console.log(`${A}\u2713 Uploaded (file_id: ${E}${F?`, url: ${F}`:""})`)}}async function Vd(e,t,n){let r=n.channel?await De(e,n.channel,t):void 0,s=[],o=1,i=1;do{let c={page:o,count:200};if(n.types)c.types=n.types;if(r)c.channel=r;if(n.user)c.user=n.user;let u=P(await dc(e,c,t));for(let f of X(u.files))s.push(P(f));i=Number(P(u.paging).pages??1),o++}while(s.length<n.limit&&o<=i);let a=s.slice(0,n.limit);if(n.format==="jsonl"){for(let c of a)console.log(JSON.stringify({id:c.id??null,name:c.name??c.title??null,filetype:c.filetype??null,size:c.size??null,user:c.user??null,created:c.created??null,permalink:c.permalink??null}));return}for(let c of a){let u=String(c.id??""),f=typeof c.name==="string"?c.name:typeof c.title==="string"?c.title:u,l=typeof c.filetype==="string"?c.filetype:"?",d=typeof c.size==="number"?Is(c.size):"";console.log(`${u} ${l.padEnd(7)} ${d.padStart(9)} ${f}`)}}function Zd(e){if(/^F[A-Z0-9]+$/i.test(e))return e;return e.match(/\/lists\/[A-Za-z0-9]+\/(F[A-Za-z0-9]+)/i)?.[1]??e.match(/\/lists\/(F[A-Za-z0-9]+)/i)?.[1]}function Qd(e){if(typeof e.text==="string"&&e.text)return e.text;let t=e.value;if(typeof t==="string"||typeof t==="number"||typeof t==="boolean")return String(t);if(Array.isArray(t))return t.map((n)=>typeof n==="string"?n:String(P(n).text??P(n).name??P(n).value??"")).filter(Boolean).join(", ");for(let n of["rich_text","select","user","date","number","checkbox","email","phone"]){let r=e[n];if(r!=null)return typeof r==="object"?JSON.stringify(r):String(r)}return""}async function eh(e,t,n,r){let s=Zd(n);if(!s)throw Error(`Not a list ID or list URL: ${n}
212
- `+"Expected F\u2026 or https://<ws>.slack.com/lists/<TEAM>/<F-id>");let o=[],i;do{let c={limit:200};if(i)c.cursor=i;let u=P(await hc(e,s,c,t));for(let l of X(u.items??u.records))o.push(P(l));let f=P(u.response_metadata).next_cursor;i=typeof f==="string"&&f?f:void 0}while(i&&o.length<r.limit);let a=o.slice(0,r.limit);if(r.format==="jsonl"){for(let c of a)console.log(JSON.stringify(c));return}for(let c of a){let u=String(c.id??""),f=X(c.fields).map(P).map((l)=>{let d=String(l.key??l.column_id??"?"),p=Qd(l);return p?`${d}=${p}`:""}).filter(Boolean);console.log(`${u} ${f.join(" | ")}`)}}function th(e){if(/^F[A-Z0-9]+$/i.test(e))return e;return e.match(/\/files\/[A-Za-z0-9]+\/(F[A-Za-z0-9]+)/)?.[1]}async function nh(e,t,n,r){let s=th(n);if(!s)throw Error(`Not a file ID or file permalink: ${n}
213
- `+"Expected F\u2026 or https://<ws>.slack.com/files/<UID>/<FID>/<name>");let o=P(await fc(e,s,t)),i=P(o.file),a=typeof i.name==="string"?i.name:typeof i.title==="string"?i.title:s,c=typeof i.url_private_download==="string"?i.url_private_download:typeof i.url_private==="string"?i.url_private:"";if(!c)throw Error(`files.info returned no download URL for ${s}`);let u={Authorization:`Bearer ${e}`};if(t)u.Cookie=`d=${t}`;let f=await fetch(c,{headers:u});if(!f.ok)throw Error(`Download failed: HTTP ${f.status} ${f.statusText}`);let l=Buffer.from(await f.arrayBuffer()),{statSync:d,existsSync:p}=await import("fs"),{basename:m}=await import("path"),h=r??a;if(r&&p(r)&&d(r).isDirectory())h=ht(r,m(a));fu(h,l),console.log(`\u2713 Downloaded ${a} (${Is(l.length)}) \u2192 ${h}`)}async function sh(){id();let e=(s)=>ln(s.workspace),t=(s)=>br(s.workspace),n={state:{type:"string",choices:["open","untriaged","pending","doing","done","dropped","stuck"],default:"open",describe:"open (default) = marked and not done/dropped; untriaged = marked with no progress; stuck = unfinished with a reason flag"},in:{type:"string",describe:"Limit to a channel (#chan)"},from:{type:"string",describe:"Limit to a sender (@user, or 'me') \u2014 usually the person a task is waiting on"},n:{alias:"count",type:"number",default:50,describe:"Max results"},json:{type:"boolean",default:!1}},r=async(s,o)=>{let i={state:s.state??"open",mine:o||s.mine===!0,count:s.n??50,json:s.json===!0};if(s.in)i.in=s.in;if(s.from)i.from=s.from;let a=t(s);if(a)i.cookie=a;await Dd(e(s),i)};await qi(Gs(process.argv)).scriptName("slack").showHelpOnFail(!1).fail((s,o,i)=>{if(o)console.error(o.message),process.exit(1);console.error(s),console.error(""),i.showHelp(),process.exit(1)}).option("workspace",{alias:"w",type:"string",describe:"Workspace name"}).middleware(async(s)=>{let o=String((s._??[])[0]??"");if(!o||o==="auth"||o==="login")return;try{ln(s.workspace)}catch(i){if((i instanceof Error?i.message:String(i)).startsWith("No profiles configured"))console.log(`No workspace configured. Let's set that up:
214
- `),await ds(),process.exit(0);throw i}},!0).command(["read [target]","msgs [target]"],"Browse messages",(s)=>s.positional("target",{type:"string",describe:"#channel, @user, or URL"}).option("limit",{alias:"n",type:"number",default:20,describe:"Number of messages"}).option("format",{type:"string",choices:["text","jsonl"],default:"text",describe:"jsonl exposes raw ts/user/text (incl. external-guest user IDs)"}).option("json",{type:"boolean",default:!1,describe:"Alias for --format=jsonl"}).option("unreplied",{type:"boolean",default:!1,describe:"Only messages whose last word (incl. thread replies) is not yours \u2014 i.e. awaiting your answer"}),async(s)=>{let o=e(s),i=s.json?"jsonl":s.format;if(s.target)await fd(o,s.target,s.limit,i,s.unreplied,t(s));else await hd(o)}).command("thread <target> <ts>","Show thread messages",(s)=>s.positional("target",{type:"string",demandOption:!0}).positional("ts",{type:"string",demandOption:!0}).option("limit",{alias:"n",type:"number",default:100}).option("format",{type:"string",choices:["text","jsonl"],default:"text",describe:"jsonl exposes raw ts/user/text (incl. external-guest user IDs)"}).option("json",{type:"boolean",default:!1,describe:"Alias for --format=jsonl"}),async(s)=>{let o=s.json?"jsonl":s.format;await dd(e(s),s.target,s.ts,s.limit,o,t(s))}).command(["channel","channels","ch"],"Channel commands",(s)=>s.command(["ls","list"],"List channels",(o)=>o.option("limit",{alias:"n",type:"number",default:200}).option("filter",{alias:"f",type:"string"}).option("all",{type:"boolean",default:!1}).option("format",{type:"string",choices:["text","jsonl"],default:"text"}).option("json",{type:"boolean",default:!1,describe:"Alias for --format=jsonl"}),async(o)=>{await gd(e(o),o.limit,o.filter,o.all,o.json?"jsonl":o.format)}).command("get <channel>","Show channel details",(o)=>o.positional("channel",{type:"string",demandOption:!0,describe:"#name or channel ID"}),async(o)=>{let i=e(o),a=t(o),c=o.channel,u=c.startsWith("#")||c.startsWith("@")||c.startsWith("C")||c.startsWith("G")||c.startsWith("D")?c:`#${c}`,f=await De(i,u,a),l=P(await En(i,f,a)),d=P(l.channel),p=typeof d.name==="string"?d.name:f,h=d.is_im===!0?"@":"#",y=String(P(d.purpose).value??""),E=String(P(d.topic).value??""),F=d.num_members??d.member_count??"";if(console.log(`${h}${p} ${f}`),E)console.log(`topic: ${E}`);if(y)console.log(`purpose: ${y}`);if(F)console.log(`members: ${F}`);console.log(`private: ${d.is_private===!0}`)}).command(["create <name>","new <name>"],"Create a channel (confirm-hash safety gate)",(o)=>o.positional("name",{type:"string",demandOption:!0,describe:"Channel name (Slack lowercases it; no spaces)"}).option("private",{type:"boolean",default:!1,describe:"Create a private channel"}).option("invite",{type:"string",array:!0,default:[],describe:"Users to invite after creating (@handle or Uxxxx, repeatable)"}).option("code",{type:"string",describe:"Safety hash to confirm create"}),async(o)=>{let i=e(o),a=t(o),c=o.name.replace(/^#/,"").toLowerCase(),u=o.private===!0,f=o.invite.filter(Boolean),l=await nn(i,a),d=Ye(c,String(u),f.join(","),l?.userId??"");if(o.code!==d)je(o.code,d,["--- Creating channel -------------------------",Le(l,{pad:9}),` name: ${u?"\uD83D\uDD12 ":"#"}${c}`,` private: ${u}`,...f.length?[` invite: ${f.join(", ")}`]:[],"--------------------------------\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500"]);let p;try{p=await Fc(i,c,u,a)}catch(m){console.error(m instanceof Error?m.message:String(m)),process.exit(1)}if(console.log(`\u2713 Created ${u?"\uD83D\uDD12 ":"#"}${p.name} (${p.id})`),f.length){let m=[];for(let h of f)try{m.push(h.startsWith("U")||h.startsWith("W")?h:await tt(i,h,a))}catch(y){console.error(` ! could not resolve ${h}: ${y instanceof Error?y.message:String(y)}`)}for(let h of m)try{let y=P(await Cn(i,h,a)),E=P(y.user);if(E.is_ultra_restricted===!0)console.error(`\u26A0 ${h} is a single-channel guest \u2014 Slack restricts them to their one existing channel; this invite will likely report success but not actually add them.`);else if(E.is_restricted===!0)console.error(`\u26A0 ${h} is a multi-channel guest \u2014 double-check they were actually added (guest invites can silently no-op depending on workspace restrictions).`)}catch{}if(m.length)try{await Cc(i,p.id,m,a),console.log(`\u2713 Invited ${m.length} member${m.length===1?"":"s"}`)}catch(h){console.error(` ! invite failed: ${h instanceof Error?h.message:String(h)}`)}}}).demandCommand(1,"").showHelpOnFail(!0)).command(["user","usr"],"User commands",(s)=>s.command(["ls","list"],"List workspace members",(o)=>o.option("limit",{alias:"n",type:"number",default:200}).option("filter",{alias:"f",type:"string"}).option("format",{type:"string",choices:["text","jsonl","yaml"],default:"text"}).option("json",{type:"boolean",default:!1,describe:"Alias for --format=jsonl"}).option("external",{type:"boolean",default:!1,describe:"Also include people reachable only through Slack Connect shared channels \u2014 they are in ANOTHER workspace, so users.list never returns them (costs one API call per shared channel)"}),async(o)=>{let i=o.json?"jsonl":o.format,a=e(o),c=t(o),u=await Sc(a,c),f=o.filter?.toLowerCase(),l=X(u.members).map(P);if(o.external){let h=new Set(l.map((A)=>String(A.id))),y=P(await bn(a,c)),E=X(y.channels).map(P).filter((A)=>A.is_ext_shared===!0&&!!A.name),F=new Set;for(let A of E)try{for(let k of await Ac(a,String(A.id),c))if(!h.has(k))F.add(k)}catch{}for(let A of F)try{let k=P(await Cn(a,A,c)),B=P(k.user);if(B.id)l.push(B)}catch{}}let d=l.filter((h)=>h.deleted!==!0&&h.is_bot!==!0&&String(h.id)!=="USLACKBOT").filter((h)=>{if(!f)return!0;let y=String(h.name??"").toLowerCase(),E=String(P(h.profile).real_name??"").toLowerCase(),F=String(P(h.profile).email??"").toLowerCase();return y.includes(f)||E.includes(f)||F.includes(f)}).slice(0,o.limit);if(i==="jsonl"){for(let h of d)console.log(JSON.stringify(h));return}if(i==="yaml"){for(let h of d){let y=function(E,F=""){if(E===null)return"null";if(typeof E==="string")return E.includes(`
210
+ slack schedule rm '${t.target}' ${l} --as-bot`),o.startsWith("D"))try{let d=await cs(e);if(!d.ok)for(let h of us(d,!0))console.error(h);else{let h=d.appId?`https://api.slack.com/apps/${d.appId}`:"https://api.slack.com/apps";console.error(`Note: if ${t.target} can't reply (app messaging may be off), enable Messages Tab: ${h} \u2192 App Home.`)}}catch{}}}async function yu(e,t,n,r){let s;if(n)s=n;else if(t)s=await De(e,t,r);let i=(await Sc(e,s,r)).scheduled_messages??[];if(i.length===0){console.log("(no scheduled messages)");return}for(let a of i){let c=new Date(a.post_at*1000).toISOString();console.log(`${a.id} ${c} [${a.channel_id}] ${a.text.split(`
211
+ `)[0]?.slice(0,80)??""}`)}}async function bu(e,t){let n;if(t.channelId)n=t.channelId;else n=await De(e,t.target,t.cookie);let r=await nn(e,t.cookie),s=Ge(n,t.id,r?.userId??"");if(t.code!==s)je(t.code,s,["--- Deleting scheduled message ---------------",Le(r,{asBot:t.asBot,pad:9}),` Channel: ${t.target}${t.targetOverride?` [${t.targetOverride} \u2192 ${n}]`:""}`,` ID: ${t.id}`,"---------------------------------------------"]);await Ac(e,n,t.id,t.cookie),console.log(`\u2713 Deleted scheduled message ${t.id}`)}async function up(e,t){let n=Lt(e,t.cookie),{statSync:r,existsSync:s}=await import("fs"),{basename:o}=await import("path");for(let m of t.filePaths)if(!s(m))console.error(`Error: file not found: ${m}`),process.exit(1);let{ref:i,threadTs:a}=sn(t.target),c;if(t.channelId)c=t.channelId;else if(t.userId)c=await et(e,t.userId,t.cookie);else c=await De(e,i,t.cookie);if(await mo(e,c,(await n())?.userId,t.cookie))console.error(`Warning: "${t.target}" is a DM to yourself \u2014 Slack will NOT notify you of your own upload.`);let u=t.filePaths.length>1,f=t.filePaths.map((m)=>{let p=o(m),y=u?p:t.title??p;return{fp:m,filename:p,title:y,sizeFmt:Ps(r(m).size)}}),l=await n(),d=Ge(c,...f.flatMap((m)=>[m.fp,m.title]),l?.userId??"");if(t.code!==d){let m=` To: ${i}${a?` (thread ${a})`:""}`,p=u?[`--- Uploading ${f.length} files ------------------------`,Le(l,{pad:7}),m,...f.map((y)=>` ${y.filename} (${y.sizeFmt})`),"--------------------------------\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500"]:["--- Uploading file ---------------------------",Le(l,{pad:7}),m,` File: ${f[0].fp}`,` Title: ${f[0].title}`,` Size: ${f[0].sizeFmt}`,"--------------------------------\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500"];je(t.code,d,p)}let h=f.length;for(let m=0;m<h;m++){let p=f[m],y={title:p.title};if(a!==void 0)y.threadTs=a;if(t.comment!==void 0&&m===0)y.initialComment=t.comment;let{fileId:E,permalink:F}=await Kc(e,c,p.fp,y,t.cookie),A=h>1?`[${m+1}/${h}] `:"";console.log(`${A}\u2713 Uploaded (file_id: ${E}${F?`, url: ${F}`:""})`)}}async function lp(e,t,n){let r=n.channel?await De(e,n.channel,t):void 0,s=[],o=1,i=1;do{let c={page:o,count:200};if(n.types)c.types=n.types;if(r)c.channel=r;if(n.user)c.user=n.user;let u=P(await Cc(e,c,t));for(let f of Y(u.files))s.push(P(f));i=Number(P(u.paging).pages??1),o++}while(s.length<n.limit&&o<=i);let a=s.slice(0,n.limit);if(n.format==="jsonl"){for(let c of a)console.log(JSON.stringify({id:c.id??null,name:c.name??c.title??null,filetype:c.filetype??null,size:c.size??null,user:c.user??null,created:c.created??null,permalink:c.permalink??null}));return}for(let c of a){let u=String(c.id??""),f=typeof c.name==="string"?c.name:typeof c.title==="string"?c.title:u,l=typeof c.filetype==="string"?c.filetype:"?",d=typeof c.size==="number"?Ps(c.size):"";console.log(`${u} ${l.padEnd(7)} ${d.padStart(9)} ${f}`)}}function fp(e){if(/^F[A-Z0-9]+$/i.test(e))return e;return e.match(/\/lists\/[A-Za-z0-9]+\/(F[A-Za-z0-9]+)/i)?.[1]??e.match(/\/lists\/(F[A-Za-z0-9]+)/i)?.[1]}function dp(e){if(typeof e.text==="string"&&e.text)return e.text;let t=e.value;if(typeof t==="string"||typeof t==="number"||typeof t==="boolean")return String(t);if(Array.isArray(t))return t.map((n)=>typeof n==="string"?n:String(P(n).text??P(n).name??P(n).value??"")).filter(Boolean).join(", ");for(let n of["rich_text","select","user","date","number","checkbox","email","phone"]){let r=e[n];if(r!=null)return typeof r==="object"?JSON.stringify(r):String(r)}return""}async function pp(e,t,n,r){let s=fp(n);if(!s)throw Error(`Not a list ID or list URL: ${n}
212
+ `+"Expected F\u2026 or https://<ws>.slack.com/lists/<TEAM>/<F-id>");let o=[],i;do{let c={limit:200};if(i)c.cursor=i;let u=P(await Ec(e,s,c,t));for(let l of Y(u.items??u.records))o.push(P(l));let f=P(u.response_metadata).next_cursor;i=typeof f==="string"&&f?f:void 0}while(i&&o.length<r.limit);let a=o.slice(0,r.limit);if(r.format==="jsonl"){for(let c of a)console.log(JSON.stringify(c));return}for(let c of a){let u=String(c.id??""),f=Y(c.fields).map(P).map((l)=>{let d=String(l.key??l.column_id??"?"),h=dp(l);return h?`${d}=${h}`:""}).filter(Boolean);console.log(`${u} ${f.join(" | ")}`)}}function hp(e){if(/^F[A-Z0-9]+$/i.test(e))return e;return e.match(/\/files\/[A-Za-z0-9]+\/(F[A-Za-z0-9]+)/)?.[1]}async function gp(e,t,n,r){let s=hp(n);if(!s)throw Error(`Not a file ID or file permalink: ${n}
213
+ `+"Expected F\u2026 or https://<ws>.slack.com/files/<UID>/<FID>/<name>");let o=P(await Fc(e,s,t)),i=P(o.file),a=typeof i.name==="string"?i.name:typeof i.title==="string"?i.title:s,c=typeof i.url_private_download==="string"?i.url_private_download:typeof i.url_private==="string"?i.url_private:"";if(!c)throw Error(`files.info returned no download URL for ${s}`);let u={Authorization:`Bearer ${e}`};if(t)u.Cookie=`d=${t}`;let f=await fetch(c,{headers:u});if(!f.ok)throw Error(`Download failed: HTTP ${f.status} ${f.statusText}`);let l=Buffer.from(await f.arrayBuffer()),{statSync:d,existsSync:h}=await import("fs"),{basename:m}=await import("path"),p=r??a;if(r&&h(r)&&d(r).isDirectory())p=pt(r,m(a));Fu(p,l),console.log(`\u2713 Downloaded ${a} (${Ps(l.length)}) \u2192 ${p}`)}async function mp(){bd();let e=(s)=>fn(s.workspace),t=(s)=>Fr(s.workspace),n={state:{type:"string",choices:["open","untriaged","pending","doing","done","dropped","stuck"],default:"open",describe:"open (default) = marked and not done/dropped; untriaged = marked with no progress; stuck = unfinished with a reason flag"},in:{type:"string",describe:"Limit to a channel (#chan)"},from:{type:"string",describe:"Limit to a sender (@user, or 'me') \u2014 usually the person a task is waiting on"},n:{alias:"count",type:"number",default:50,describe:"Max results"},json:{type:"boolean",default:!1}},r=async(s,o)=>{let i={state:s.state??"open",mine:o||s.mine===!0,count:s.n??50,json:s.json===!0};if(s.in)i.in=s.in;if(s.from)i.from=s.from;let a=t(s);if(a)i.cookie=a;await Od(e(s),i)};await Zi(Zs(process.argv)).scriptName("slack").showHelpOnFail(!1).fail((s,o,i)=>{if(o)console.error(o.message),process.exit(1);console.error(s),console.error(""),i.showHelp(),process.exit(1)}).option("workspace",{alias:"w",type:"string",describe:"Workspace name"}).middleware(async(s)=>{let o=String((s._??[])[0]??"");if(!o||o==="auth"||o==="login"||o==="agent")return;try{fn(s.workspace)}catch(i){if((i instanceof Error?i.message:String(i)).startsWith("No profiles configured"))console.log(`No workspace configured. Let's set that up:
214
+ `),await hs(),process.exit(0);throw i}},!0).command("agent","Bot agent session status and command heartbeat",(s)=>Za(s,sn)).command(["read [target]","msgs [target]"],"Browse messages",(s)=>s.positional("target",{type:"string",describe:"#channel, @user, or URL"}).option("limit",{alias:"n",type:"number",default:20,describe:"Number of messages"}).option("format",{type:"string",choices:["text","jsonl"],default:"text",describe:"jsonl exposes raw ts/user/text (incl. external-guest user IDs)"}).option("json",{type:"boolean",default:!1,describe:"Alias for --format=jsonl"}).option("unreplied",{type:"boolean",default:!1,describe:"Only messages whose last word (incl. thread replies) is not yours \u2014 i.e. awaiting your answer"}),async(s)=>{let o=e(s),i=s.json?"jsonl":s.format;if(s.target)await xd(o,s.target,s.limit,i,s.unreplied,t(s));else await kd(o)}).command("thread <target> <ts>","Show thread messages",(s)=>s.positional("target",{type:"string",demandOption:!0}).positional("ts",{type:"string",demandOption:!0}).option("limit",{alias:"n",type:"number",default:100}).option("format",{type:"string",choices:["text","jsonl"],default:"text",describe:"jsonl exposes raw ts/user/text (incl. external-guest user IDs)"}).option("json",{type:"boolean",default:!1,describe:"Alias for --format=jsonl"}),async(s)=>{let o=s.json?"jsonl":s.format;await _d(e(s),s.target,s.ts,s.limit,o,t(s))}).command(["channel","channels","ch"],"Channel commands",(s)=>s.command(["ls","list"],"List channels",(o)=>o.option("limit",{alias:"n",type:"number",default:200}).option("filter",{alias:"f",type:"string"}).option("all",{type:"boolean",default:!1}).option("format",{type:"string",choices:["text","jsonl"],default:"text"}).option("json",{type:"boolean",default:!1,describe:"Alias for --format=jsonl"}),async(o)=>{await Ad(e(o),o.limit,o.filter,o.all,o.json?"jsonl":o.format)}).command("get <channel>","Show channel details",(o)=>o.positional("channel",{type:"string",demandOption:!0,describe:"#name or channel ID"}),async(o)=>{let i=e(o),a=t(o),c=o.channel,u=c.startsWith("#")||c.startsWith("@")||c.startsWith("C")||c.startsWith("G")||c.startsWith("D")?c:`#${c}`,f=await De(i,u,a),l=P(await _n(i,f,a)),d=P(l.channel),h=typeof d.name==="string"?d.name:f,p=d.is_im===!0?"@":"#",y=String(P(d.purpose).value??""),E=String(P(d.topic).value??""),F=d.num_members??d.member_count??"";if(console.log(`${p}${h} ${f}`),E)console.log(`topic: ${E}`);if(y)console.log(`purpose: ${y}`);if(F)console.log(`members: ${F}`);console.log(`private: ${d.is_private===!0}`)}).command(["create <name>","new <name>"],"Create a channel (confirm-hash safety gate)",(o)=>o.positional("name",{type:"string",demandOption:!0,describe:"Channel name (Slack lowercases it; no spaces)"}).option("private",{type:"boolean",default:!1,describe:"Create a private channel"}).option("invite",{type:"string",array:!0,default:[],describe:"Users to invite after creating (@handle or Uxxxx, repeatable)"}).option("code",{type:"string",describe:"Safety hash to confirm create"}),async(o)=>{let i=e(o),a=t(o),c=o.name.replace(/^#/,"").toLowerCase(),u=o.private===!0,f=o.invite.filter(Boolean),l=await nn(i,a),d=Ge(c,String(u),f.join(","),l?.userId??"");if(o.code!==d)je(o.code,d,["--- Creating channel -------------------------",Le(l,{pad:9}),` name: ${u?"\uD83D\uDD12 ":"#"}${c}`,` private: ${u}`,...f.length?[` invite: ${f.join(", ")}`]:[],"--------------------------------\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500"]);let h;try{h=await Ic(i,c,u,a)}catch(m){console.error(m instanceof Error?m.message:String(m)),process.exit(1)}if(console.log(`\u2713 Created ${u?"\uD83D\uDD12 ":"#"}${h.name} (${h.id})`),f.length){let m=[];for(let p of f)try{m.push(p.startsWith("U")||p.startsWith("W")?p:await tt(i,p,a))}catch(y){console.error(` ! could not resolve ${p}: ${y instanceof Error?y.message:String(y)}`)}for(let p of m)try{let y=P(await xn(i,p,a)),E=P(y.user);if(E.is_ultra_restricted===!0)console.error(`\u26A0 ${p} is a single-channel guest \u2014 Slack restricts them to their one existing channel; this invite will likely report success but not actually add them.`);else if(E.is_restricted===!0)console.error(`\u26A0 ${p} is a multi-channel guest \u2014 double-check they were actually added (guest invites can silently no-op depending on workspace restrictions).`)}catch{}if(m.length)try{await Tc(i,h.id,m,a),console.log(`\u2713 Invited ${m.length} member${m.length===1?"":"s"}`)}catch(p){console.error(` ! invite failed: ${p instanceof Error?p.message:String(p)}`)}}}).demandCommand(1,"").showHelpOnFail(!0)).command(["user","usr"],"User commands",(s)=>s.command(["ls","list"],"List workspace members",(o)=>o.option("limit",{alias:"n",type:"number",default:200}).option("filter",{alias:"f",type:"string"}).option("format",{type:"string",choices:["text","jsonl","yaml"],default:"text"}).option("json",{type:"boolean",default:!1,describe:"Alias for --format=jsonl"}).option("external",{type:"boolean",default:!1,describe:"Also include people reachable only through Slack Connect shared channels \u2014 they are in ANOTHER workspace, so users.list never returns them (costs one API call per shared channel)"}),async(o)=>{let i=o.json?"jsonl":o.format,a=e(o),c=t(o),u=await vc(a,c),f=o.filter?.toLowerCase(),l=Y(u.members).map(P);if(o.external){let p=new Set(l.map((A)=>String(A.id))),y=P(await Fn(a,c)),E=Y(y.channels).map(P).filter((A)=>A.is_ext_shared===!0&&!!A.name),F=new Set;for(let A of E)try{for(let k of await Nc(a,String(A.id),c))if(!p.has(k))F.add(k)}catch{}for(let A of F)try{let k=P(await xn(a,A,c)),B=P(k.user);if(B.id)l.push(B)}catch{}}let d=l.filter((p)=>p.deleted!==!0&&p.is_bot!==!0&&String(p.id)!=="USLACKBOT").filter((p)=>{if(!f)return!0;let y=String(p.name??"").toLowerCase(),E=String(P(p.profile).real_name??"").toLowerCase(),F=String(P(p.profile).email??"").toLowerCase();return y.includes(f)||E.includes(f)||F.includes(f)}).slice(0,o.limit);if(i==="jsonl"){for(let p of d)console.log(JSON.stringify(p));return}if(i==="yaml"){for(let p of d){let y=function(E,F=""){if(E===null)return"null";if(typeof E==="string")return E.includes(`
215
215
  `)?`|
216
216
  ${E.split(`
217
217
  `).join(`
218
218
  `)}`:E;if(typeof E!=="object")return String(E);if(Array.isArray(E))return E.map((A)=>`
219
219
  ${F} - ${y(A,F+" ")}`).join("");return Object.entries(E).map(([A,k])=>`
220
- ${F} ${A}: ${y(k,F+" ")}`).join("")};console.log("---");for(let[E,F]of Object.entries(h))console.log(`${E}: ${y(F)}`)}return}let p=Intl.DateTimeFormat().resolvedOptions().timeZone,m=d.length?String(P(X(u.members).map(P)[0]??{}).team_id??""):"";for(let h of d){let y=P(h.profile),E=String(h.name??h.id),F=String(h.id??""),A=String(y.display_name||""),k=String(y.real_name||""),B=String(y.email||""),I=String(h.tz??""),V=[...new Set([A,k].filter((S)=>S&&S!==E))].join(" / "),L=I&&I!==p?I:"",ne=String(h.team_id??""),_=h.is_stranger===!0||m&&ne&&ne!==m?`external:${ne||"?"}`:h.is_ultra_restricted===!0?"single-channel guest":h.is_restricted===!0?"guest":"",C=[B,L].filter(Boolean).join(" ");console.log(`@${E} ${F} ${V}${C?" "+C:""}${_?` [${_}]`:""}`)}}).command("get <user>","Show user details",(o)=>o.positional("user",{type:"string",demandOption:!0,describe:"@handle or user ID"}),async(o)=>{let i=e(o),a=t(o),c=o.user.startsWith("@")?o.user:`@${o.user}`,u="";try{u=await tt(i,c,a)}catch(R){console.error(R instanceof Error?R.message:String(R)),process.exit(1)}let f=P(await Cn(i,u,a)),l=P(f.user),d=P(l.profile),p=Intl.DateTimeFormat().resolvedOptions().timeZone,m=String(l.name??u),h=String(l.id??u),y=String(d.display_name||""),E=String(d.real_name||""),F=String(d.email||""),A=String(l.tz??""),k=String(d.phone||""),B=String(d.title||"");console.log(`@${m} ${h}`);let I=[...new Set([y,E].filter((R)=>R&&R!==m))];if(I.length)console.log(`name: ${I.join(" / ")}`);if(F)console.log(`email: ${F}`);if(k)console.log(`phone: ${k}`);if(B)console.log(`title: ${B}`);if(A&&A!==p)console.log(`tz: ${A}`)}).demandCommand(1,"").showHelpOnFail(!0)).command("news","Activity feed (mentions to you)",(s)=>s.option("limit",{alias:"l",type:"number",default:20}),async(s)=>{await pd(e(s),s.limit)}).command("search <query>","Full-text search",(s)=>s.positional("query",{type:"string",demandOption:!0}).option("count",{alias:"n",type:"number",default:100}).option("json",{type:"boolean",default:!1,describe:"Output raw JSON"}),async(s)=>{await pu(e(s),s.query,s.count,s.json,t(s))}).command("send <target> <message>","Send a message (confirm-hash safety gate)",(s)=>s.positional("target",{type:"string",demandOption:!0,describe:"#chan, @user, #chan:thread_ts, or permalink (a message permalink replies in its thread)"}).positional("message",{type:"string",demandOption:!0}).option("code",{type:"string",describe:"Safety hash to confirm send"}).option("allow-url-adjacent",{type:"boolean",default:!1,describe:"Warn instead of refusing ambiguous bare URL boundaries"}).option("channel-id",{type:"string",describe:"Raw channel ID"}).option("user-id",{type:"string",describe:"Raw user ID (opens DM)"}).option("as-bot",{type:"boolean",default:!1,describe:"Send via the bot token (xoxb / SLACK_BOT_TOKEN) so a DM notifies the recipient and can be two-way"}).option("broadcast",{type:"boolean",default:!1,describe:`Also send to channel: broadcast a threaded reply back to the channel (Slack's "Also send to #channel" checkbox). Only effective with a thread target.`}).option("mentions",{type:"boolean",default:!0,describe:"Convert @handle tokens to real <@USERID> mentions (on by default; resolves via users.list, then channel members for Slack Connect guests). Unresolved handles stay as plain text. The confirm preview shows the converted message before sending. Disable with --no-mentions for literal @text."}),async(s)=>{let o={target:s.target,message:s.message,allowUrlAdjacent:s["allow-url-adjacent"]};if(s.code)o.code=s.code;if(s["channel-id"])o.channelId=s["channel-id"];if(s["user-id"])o.userId=s["user-id"];if(s.broadcast)o.broadcast=!0;if(s.mentions!==!1){o.mentions=!0,o.mentionToken=e(s);let a=t(s);if(a)o.mentionCookie=a}let i;if(s["as-bot"]){let a=ut();if(!a)console.error(`Error: --as-bot needs a bot token, but no xoxb- token was found.
220
+ ${F} ${A}: ${y(k,F+" ")}`).join("")};console.log("---");for(let[E,F]of Object.entries(p))console.log(`${E}: ${y(F)}`)}return}let h=Intl.DateTimeFormat().resolvedOptions().timeZone,m=d.length?String(P(Y(u.members).map(P)[0]??{}).team_id??""):"";for(let p of d){let y=P(p.profile),E=String(p.name??p.id),F=String(p.id??""),A=String(y.display_name||""),k=String(y.real_name||""),B=String(y.email||""),I=String(p.tz??""),V=[...new Set([A,k].filter((S)=>S&&S!==E))].join(" / "),L=I&&I!==h?I:"",ne=String(p.team_id??""),_=p.is_stranger===!0||m&&ne&&ne!==m?`external:${ne||"?"}`:p.is_ultra_restricted===!0?"single-channel guest":p.is_restricted===!0?"guest":"",C=[B,L].filter(Boolean).join(" ");console.log(`@${E} ${F} ${V}${C?" "+C:""}${_?` [${_}]`:""}`)}}).command("get <user>","Show user details",(o)=>o.positional("user",{type:"string",demandOption:!0,describe:"@handle or user ID"}),async(o)=>{let i=e(o),a=t(o),c=o.user.startsWith("@")?o.user:`@${o.user}`,u="";try{u=await tt(i,c,a)}catch(R){console.error(R instanceof Error?R.message:String(R)),process.exit(1)}let f=P(await xn(i,u,a)),l=P(f.user),d=P(l.profile),h=Intl.DateTimeFormat().resolvedOptions().timeZone,m=String(l.name??u),p=String(l.id??u),y=String(d.display_name||""),E=String(d.real_name||""),F=String(d.email||""),A=String(l.tz??""),k=String(d.phone||""),B=String(d.title||"");console.log(`@${m} ${p}`);let I=[...new Set([y,E].filter((R)=>R&&R!==m))];if(I.length)console.log(`name: ${I.join(" / ")}`);if(F)console.log(`email: ${F}`);if(k)console.log(`phone: ${k}`);if(B)console.log(`title: ${B}`);if(A&&A!==h)console.log(`tz: ${A}`)}).demandCommand(1,"").showHelpOnFail(!0)).command("news","Activity feed (mentions to you)",(s)=>s.option("limit",{alias:"l",type:"number",default:20}),async(s)=>{await Sd(e(s),s.limit)}).command("search <query>","Full-text search",(s)=>s.positional("query",{type:"string",demandOption:!0}).option("count",{alias:"n",type:"number",default:100}).option("json",{type:"boolean",default:!1,describe:"Output raw JSON"}),async(s)=>{await xu(e(s),s.query,s.count,s.json,t(s))}).command("send <target> <message>","Send a message (confirm-hash safety gate)",(s)=>s.positional("target",{type:"string",demandOption:!0,describe:"#chan, @user, #chan:thread_ts, or permalink (a message permalink replies in its thread)"}).positional("message",{type:"string",demandOption:!0}).option("code",{type:"string",describe:"Safety hash to confirm send"}).option("allow-url-adjacent",{type:"boolean",default:!1,describe:"Warn instead of refusing ambiguous bare URL boundaries"}).option("channel-id",{type:"string",describe:"Raw channel ID"}).option("user-id",{type:"string",describe:"Raw user ID (opens DM)"}).option("as-bot",{type:"boolean",default:!1,describe:"Send via the bot token (xoxb / SLACK_BOT_TOKEN) so a DM notifies the recipient and can be two-way"}).option("broadcast",{type:"boolean",default:!1,describe:`Also send to channel: broadcast a threaded reply back to the channel (Slack's "Also send to #channel" checkbox). Only effective with a thread target.`}).option("mentions",{type:"boolean",default:!0,describe:"Convert @handle tokens to real <@USERID> mentions (on by default; resolves via users.list, then channel members for Slack Connect guests). Unresolved handles stay as plain text. The confirm preview shows the converted message before sending. Disable with --no-mentions for literal @text."}),async(s)=>{let o={target:s.target,message:s.message,allowUrlAdjacent:s["allow-url-adjacent"]};if(s.code)o.code=s.code;if(s["channel-id"])o.channelId=s["channel-id"];if(s["user-id"])o.userId=s["user-id"];if(s.broadcast)o.broadcast=!0;if(s.mentions!==!1){o.mentions=!0,o.mentionToken=e(s);let a=t(s);if(a)o.mentionCookie=a}let i;if(s["as-bot"]){let a=ut();if(!a)console.error(`Error: --as-bot needs a bot token, but no xoxb- token was found.
221
221
  Set SLACK_BOT_TOKEN=xoxb-... in ~/.config/slack-cli/.env (or your shell).`),process.exit(1);if(!o.channelId&&!o.userId&&o.target.startsWith("@"))try{o.userId=await tt(e(s),o.target,t(s))}catch(c){console.error(`Error: could not resolve ${o.target} to a user for the bot DM.
222
222
  ${c instanceof Error?c.message:String(c)}
223
- Tip: pass --user-id <Uxxxx> to skip the lookup.`),process.exit(1)}i=a,o.asBot=!0}else{i=e(s);let a=t(s);if(a)o.cookie=a}try{await Id(i,o)}catch(a){console.error(nt(a)),process.exit(1)}}).command("ask [target] [question] [choices..]","Ask a question with its choices pre-seeded as 1\uFE0F\u20E3..\uD83D\uDD1F reactions (confirm-hash safety gate)",(s)=>s.positional("target",{type:"string",describe:"#chan, @user, #chan:thread_ts, or permalink (omit with --waitFor)"}).positional("question",{type:"string",describe:"The question. Must @tag whoever may answer (@alice), or the whole channel (@here / @channel / @everyone) \u2014 only their answer counts. In a 1:1 DM the other party counts automatically."}).positional("choices",{type:"string",array:!0,describe:"Up to 10 choices, seeded as 1\uFE0F\u20E3..\uD83D\uDD1F reactions. Beyond 10 they are listed but answerable only by text. With none, the question asks for a free-text reply."}).option("code",{type:"string",describe:"Safety hash to confirm the ask"}).option("allow-url-adjacent",{type:"boolean",default:!1,describe:"Warn instead of refusing ambiguous bare URL boundaries"}).option("body",{type:"string",describe:"Extra context shown under the question"}).option("wait",{type:"boolean",default:!1,describe:"Block until answered; print ONLY the answer on stdout. Exit 0 = answered, 2 = nobody replied, 3 = transport failure, 4 = somebody replied but picked none of the choices (stdout empty \u2014 do not act on it)."}).option("waitFor",{type:"string",describe:"Collect the answer to a question already posted: pass its permalink. Nothing is posted. Same stdout/exit contract as --wait; --timeout 0 checks once and exits 2 if still open."}).option("timeout",{type:"number",default:3600,describe:"Overall limit for --wait / --waitFor, in seconds (0 with --waitFor = check once)"}).option("channel-id",{type:"string",describe:"Raw channel ID"}).option("user-id",{type:"string",describe:"Raw user ID (opens DM)"}).option("as-bot",{type:"boolean",default:!1,describe:"Ask via the bot token (xoxb / SLACK_BOT_TOKEN) so a DM notifies the recipient"}),async(s)=>{let o=s.waitFor?String(s.waitFor):"",i=Number(s.timeout);if(!Number.isFinite(i)||i<0||i===0&&!o)console.error("Error: --timeout must be a positive number of seconds"),process.exit(Ee);if(o){if(s.target||s.question||s.choices?.length)console.error("Error: --waitFor collects an existing question \u2014 do not also pass a target/question/choices."),process.exit(Ee);let l,d;if(s["as-bot"]){let p=ut();if(!p)console.error(`Error: --as-bot needs a bot token, but no xoxb- token was found.
224
- Set SLACK_BOT_TOKEN=xoxb-... in ~/.config/slack-cli/.env (or your shell).`),process.exit(Ee);l=p}else l=e(s),d=t(s);try{let p={link:o,timeout:i,asBot:!!s["as-bot"]};if(d)p.cookie=d;await Wd(l,p)}catch(p){console.error(nt(p)),process.exit(Ee)}return}if(!s.target)console.error("Error: target is required (or use --waitFor <permalink> to collect an answer)"),process.exit(Ee);let a=String(s.question??"").trim();if(!a)console.error("Error: question is empty"),process.exit(Ee);let c={allowUrlAdjacent:s["allow-url-adjacent"],target:s.target,question:a,choices:(s.choices??[]).map((l)=>String(l).trim()).filter(Boolean),timeout:i};if(s.code)c.code=s.code;if(s.body)c.body=s.body;if(s.wait)c.wait=!0;if(s["channel-id"])c.channelId=s["channel-id"];if(s["user-id"])c.userId=s["user-id"];c.mentionToken=e(s);let u=t(s);if(u)c.mentionCookie=u;let f;if(s["as-bot"]){let l=ut();if(!l)console.error(`Error: --as-bot needs a bot token, but no xoxb- token was found.
223
+ Tip: pass --user-id <Uxxxx> to skip the lookup.`),process.exit(1)}i=a,o.asBot=!0}else{i=e(s);let a=t(s);if(a)o.cookie=a}try{await Jd(i,o)}catch(a){console.error(nt(a)),process.exit(1)}}).command("ask [target] [question] [choices..]","Ask a question with its choices pre-seeded as 1\uFE0F\u20E3..\uD83D\uDD1F reactions (confirm-hash safety gate)",(s)=>s.positional("target",{type:"string",describe:"#chan, @user, #chan:thread_ts, or permalink (omit with --waitFor)"}).positional("question",{type:"string",describe:"The question. Must @tag whoever may answer (@alice), or the whole channel (@here / @channel / @everyone) \u2014 only their answer counts. In a 1:1 DM the other party counts automatically."}).positional("choices",{type:"string",array:!0,describe:"Up to 10 choices, seeded as 1\uFE0F\u20E3..\uD83D\uDD1F reactions. Beyond 10 they are listed but answerable only by text. With none, the question asks for a free-text reply."}).option("code",{type:"string",describe:"Safety hash to confirm the ask"}).option("allow-url-adjacent",{type:"boolean",default:!1,describe:"Warn instead of refusing ambiguous bare URL boundaries"}).option("body",{type:"string",describe:"Extra context shown under the question"}).option("wait",{type:"boolean",default:!1,describe:"Block until answered; print ONLY the answer on stdout. Exit 0 = answered, 2 = nobody replied, 3 = transport failure, 4 = somebody replied but picked none of the choices (stdout empty \u2014 do not act on it)."}).option("waitFor",{type:"string",describe:"Collect the answer to a question already posted: pass its permalink. Nothing is posted. Same stdout/exit contract as --wait; --timeout 0 checks once and exits 2 if still open."}).option("timeout",{type:"number",default:3600,describe:"Overall limit for --wait / --waitFor, in seconds (0 with --waitFor = check once)"}).option("channel-id",{type:"string",describe:"Raw channel ID"}).option("user-id",{type:"string",describe:"Raw user ID (opens DM)"}).option("as-bot",{type:"boolean",default:!1,describe:"Ask via the bot token (xoxb / SLACK_BOT_TOKEN) so a DM notifies the recipient"}),async(s)=>{let o=s.waitFor?String(s.waitFor):"",i=Number(s.timeout);if(!Number.isFinite(i)||i<0||i===0&&!o)console.error("Error: --timeout must be a positive number of seconds"),process.exit(Ee);if(o){if(s.target||s.question||s.choices?.length)console.error("Error: --waitFor collects an existing question \u2014 do not also pass a target/question/choices."),process.exit(Ee);let l,d;if(s["as-bot"]){let h=ut();if(!h)console.error(`Error: --as-bot needs a bot token, but no xoxb- token was found.
224
+ Set SLACK_BOT_TOKEN=xoxb-... in ~/.config/slack-cli/.env (or your shell).`),process.exit(Ee);l=h}else l=e(s),d=t(s);try{let h={link:o,timeout:i,asBot:!!s["as-bot"]};if(d)h.cookie=d;await ep(l,h)}catch(h){console.error(nt(h)),process.exit(Ee)}return}if(!s.target)console.error("Error: target is required (or use --waitFor <permalink> to collect an answer)"),process.exit(Ee);let a=String(s.question??"").trim();if(!a)console.error("Error: question is empty"),process.exit(Ee);let c={allowUrlAdjacent:s["allow-url-adjacent"],target:s.target,question:a,choices:(s.choices??[]).map((l)=>String(l).trim()).filter(Boolean),timeout:i};if(s.code)c.code=s.code;if(s.body)c.body=s.body;if(s.wait)c.wait=!0;if(s["channel-id"])c.channelId=s["channel-id"];if(s["user-id"])c.userId=s["user-id"];c.mentionToken=e(s);let u=t(s);if(u)c.mentionCookie=u;let f;if(s["as-bot"]){let l=ut();if(!l)console.error(`Error: --as-bot needs a bot token, but no xoxb- token was found.
225
225
  Set SLACK_BOT_TOKEN=xoxb-... in ~/.config/slack-cli/.env (or your shell).`),process.exit(Ee);if(!c.channelId&&!c.userId&&c.target.startsWith("@"))try{c.userId=await tt(e(s),c.target,t(s))}catch(d){console.error(`Error: could not resolve ${c.target} to a user for the bot DM.
226
226
  ${d instanceof Error?d.message:String(d)}
227
- Tip: pass --user-id <Uxxxx> to skip the lookup.`),process.exit(Ee)}f=l,c.asBot=!0}else{f=e(s);let l=t(s);if(l)c.cookie=l}try{await Ld(f,c)}catch(l){console.error(nt(l)),process.exit(Ee)}}).command(["poll [target] [question] [choices..]","vote [target] [question] [choices..]"],"Post a poll with its choices pre-seeded as 1\uFE0F\u20E3..\uD83D\uDD1F reactions, then count them (confirm-hash safety gate)",(s)=>s.positional("target",{type:"string",describe:"#chan, @user, #chan:thread_ts, or permalink (omit with --results/--close)"}).positional("question",{type:"string",describe:"The question. @tags are optional here \u2014 unlike `ask`, a poll needs no addressee: anyone who can see it may vote."}).positional("choices",{type:"string",array:!0,describe:"2..10 choices, seeded as 1\uFE0F\u20E3..\uD83D\uDD1F reactions for voters to click"}).option("multi",{type:"boolean",default:!1,describe:"Let one person pick several choices (default: 1 \u4EBA 1 \u7968)"}).option("until",{type:"string",describe:"Deadline shown in the message (display only \u2014 closing is still `--close`)"}).option("results",{type:"string",describe:"Count an existing poll: pass its permalink. Posts nothing; only edit is the invalid-ballot notice in the poll itself (--no-notify to suppress)."}).option("close",{type:"string",describe:"Count an existing poll AND freeze the tally into the message. Only the poster can do this."}).option("names",{type:"boolean",default:!1,describe:"Also list who voted for what (stderr)"}).option("no-notify",{type:"boolean",default:!1,describe:"With --results: do not write the invalid-ballot notice back into the message (keeps it strictly read-only)"}).option("code",{type:"string",describe:"Safety hash to confirm the post"}).option("body",{type:"string",describe:"Extra context shown under the question"}).option("channel-id",{type:"string",describe:"Raw channel ID"}).option("user-id",{type:"string",describe:"Raw user ID (opens DM)"}).option("as-bot",{type:"boolean",default:!1,describe:"Post via the bot token (xoxb / SLACK_BOT_TOKEN) so a DM notifies the recipient \u2014 and so YOUR OWN vote counts, since the seeds are then the bot's"}),async(s)=>{let o=s.close?String(s.close):s.results?String(s.results):"";if(s.results&&s.close)console.error("Error: pass --results or --close, not both (--close counts as well)."),process.exit(ve);let i=()=>{let d=ut();if(!d)console.error(`Error: --as-bot needs a bot token, but no xoxb- token was found.
228
- Set SLACK_BOT_TOKEN=xoxb-... in ~/.config/slack-cli/.env (or your shell).`),process.exit(ve);return d};if(o){if(s.target||s.question||s.choices?.length)console.error("Error: --results/--close reads an existing poll \u2014 do not also pass a target/question/choices."),process.exit(ve);let d=e(s),p=t(s);try{let m={link:o};if(s.close)m.close=!0;if(s.names)m.names=!0;if(s["no-notify"])m.noNotify=!0;if(p)m.cookie=p;if(s["as-bot"])m.writeToken=i();await zd(d,m)}catch(m){console.error(nt(m)),process.exit(ve)}return}if(!s.target)console.error("Error: target is required (or use --results <permalink> to count a poll)"),process.exit(ve);let a=String(s.question??"").trim();if(!a)console.error("Error: question is empty"),process.exit(ve);let c=(s.choices??[]).map((d)=>String(d).trim()).filter(Boolean);if(c.length<2||c.length>Vt)console.error(`Error: poll needs 2..${Vt} choices (got ${c.length}). For a free-text question use \`slack ask\`.`),process.exit(ve);let u={target:s.target,question:a,choices:c};if(s.multi)u.multi=!0;if(s.until)u.until=String(s.until);if(s.code)u.code=s.code;if(s.body)u.body=s.body;if(s["channel-id"])u.channelId=s["channel-id"];if(s["user-id"])u.userId=s["user-id"];u.mentionToken=e(s);let f=t(s);if(f)u.mentionCookie=f;let l;if(s["as-bot"]){let d=i();if(!u.channelId&&!u.userId&&u.target.startsWith("@"))try{u.userId=await tt(e(s),u.target,t(s))}catch(p){console.error(`Error: could not resolve ${u.target} to a user for the bot DM.
229
- ${p instanceof Error?p.message:String(p)}
230
- Tip: pass --user-id <Uxxxx> to skip the lookup.`),process.exit(ve)}l=d,u.asBot=!0}else{l=e(s);let d=t(s);if(d)u.cookie=d}try{await Kd(l,u)}catch(d){console.error(nt(d)),process.exit(ve)}}).command("doctor","Check the bot token (xoxb) can carry a two-way DM (scopes + Messages Tab)",(s)=>s,async()=>{let s=ut();if(!s)console.error(`Error: slack doctor checks the bot token, but no xoxb- token was found.
231
- Set SLACK_BOT_TOKEN=xoxb-... in ~/.config/slack-cli/.env (or your shell).`),process.exit(1);await Hd(s)}).command("schedule","Manage scheduled messages",(s)=>s.command("send <target> <message>","Schedule a message for later delivery",(o)=>o.positional("target",{type:"string",demandOption:!0,describe:"#chan, @user, #chan:thread_ts, or permalink (a message permalink replies in its thread)"}).positional("message",{type:"string",demandOption:!0}).option("at",{type:"string",demandOption:!0,describe:"Delivery time (ISO datetime or Unix ts)"}).option("code",{type:"string",describe:"Safety hash to confirm"}).option("channel-id",{type:"string",describe:"Raw channel ID"}).option("user-id",{type:"string",describe:"Raw user ID (opens DM)"}).option("as-bot",{type:"boolean",default:!1,describe:"Schedule via the bot token (xoxb / SLACK_BOT_TOKEN) so a DM notifies the recipient. Without it a scheduled DM to yourself is posted by you, and Slack never notifies you of your own message \u2014 it fires into silence."}),async(o)=>{let i={target:o.target,message:o.message,at:o.at};if(o.code)i.code=o.code;if(o["channel-id"])i.channelId=o["channel-id"],i.targetOverride=`--channel-id ${o["channel-id"]}`;if(o["user-id"])i.userId=o["user-id"],i.targetOverride=`--user-id ${o["user-id"]}`;let a;if(o["as-bot"]){let c=so();if(!i.channelId&&!i.userId&&i.target.startsWith("@"))try{i.userId=await tt(e(o),i.target,t(o))}catch(u){console.error(`Error: could not resolve ${i.target} to a user for the bot DM.
227
+ Tip: pass --user-id <Uxxxx> to skip the lookup.`),process.exit(Ee)}f=l,c.asBot=!0}else{f=e(s);let l=t(s);if(l)c.cookie=l}try{await Qd(f,c)}catch(l){console.error(nt(l)),process.exit(Ee)}}).command(["poll [target] [question] [choices..]","vote [target] [question] [choices..]"],"Post a poll with its choices pre-seeded as 1\uFE0F\u20E3..\uD83D\uDD1F reactions, then count them (confirm-hash safety gate)",(s)=>s.positional("target",{type:"string",describe:"#chan, @user, #chan:thread_ts, or permalink (omit with --results/--close)"}).positional("question",{type:"string",describe:"The question. @tags are optional here \u2014 unlike `ask`, a poll needs no addressee: anyone who can see it may vote."}).positional("choices",{type:"string",array:!0,describe:"2..10 choices, seeded as 1\uFE0F\u20E3..\uD83D\uDD1F reactions for voters to click"}).option("multi",{type:"boolean",default:!1,describe:"Let one person pick several choices (default: 1 \u4EBA 1 \u7968)"}).option("until",{type:"string",describe:"Deadline shown in the message (display only \u2014 closing is still `--close`)"}).option("results",{type:"string",describe:"Count an existing poll: pass its permalink. Posts nothing; only edit is the invalid-ballot notice in the poll itself (--no-notify to suppress)."}).option("close",{type:"string",describe:"Count an existing poll AND freeze the tally into the message. Only the poster can do this."}).option("names",{type:"boolean",default:!1,describe:"Also list who voted for what (stderr)"}).option("no-notify",{type:"boolean",default:!1,describe:"With --results: do not write the invalid-ballot notice back into the message (keeps it strictly read-only)"}).option("code",{type:"string",describe:"Safety hash to confirm the post"}).option("body",{type:"string",describe:"Extra context shown under the question"}).option("channel-id",{type:"string",describe:"Raw channel ID"}).option("user-id",{type:"string",describe:"Raw user ID (opens DM)"}).option("as-bot",{type:"boolean",default:!1,describe:"Post via the bot token (xoxb / SLACK_BOT_TOKEN) so a DM notifies the recipient \u2014 and so YOUR OWN vote counts, since the seeds are then the bot's"}),async(s)=>{let o=s.close?String(s.close):s.results?String(s.results):"";if(s.results&&s.close)console.error("Error: pass --results or --close, not both (--close counts as well)."),process.exit(Ne);let i=()=>{let d=ut();if(!d)console.error(`Error: --as-bot needs a bot token, but no xoxb- token was found.
228
+ Set SLACK_BOT_TOKEN=xoxb-... in ~/.config/slack-cli/.env (or your shell).`),process.exit(Ne);return d};if(o){if(s.target||s.question||s.choices?.length)console.error("Error: --results/--close reads an existing poll \u2014 do not also pass a target/question/choices."),process.exit(Ne);let d=e(s),h=t(s);try{let m={link:o};if(s.close)m.close=!0;if(s.names)m.names=!0;if(s["no-notify"])m.noNotify=!0;if(h)m.cookie=h;if(s["as-bot"])m.writeToken=i();await rp(d,m)}catch(m){console.error(nt(m)),process.exit(Ne)}return}if(!s.target)console.error("Error: target is required (or use --results <permalink> to count a poll)"),process.exit(Ne);let a=String(s.question??"").trim();if(!a)console.error("Error: question is empty"),process.exit(Ne);let c=(s.choices??[]).map((d)=>String(d).trim()).filter(Boolean);if(c.length<2||c.length>Vt)console.error(`Error: poll needs 2..${Vt} choices (got ${c.length}). For a free-text question use \`slack ask\`.`),process.exit(Ne);let u={target:s.target,question:a,choices:c};if(s.multi)u.multi=!0;if(s.until)u.until=String(s.until);if(s.code)u.code=s.code;if(s.body)u.body=s.body;if(s["channel-id"])u.channelId=s["channel-id"];if(s["user-id"])u.userId=s["user-id"];u.mentionToken=e(s);let f=t(s);if(f)u.mentionCookie=f;let l;if(s["as-bot"]){let d=i();if(!u.channelId&&!u.userId&&u.target.startsWith("@"))try{u.userId=await tt(e(s),u.target,t(s))}catch(h){console.error(`Error: could not resolve ${u.target} to a user for the bot DM.
229
+ ${h instanceof Error?h.message:String(h)}
230
+ Tip: pass --user-id <Uxxxx> to skip the lookup.`),process.exit(Ne)}l=d,u.asBot=!0}else{l=e(s);let d=t(s);if(d)u.cookie=d}try{await np(l,u)}catch(d){console.error(nt(d)),process.exit(Ne)}}).command("doctor","Check the bot token (xoxb) can carry a two-way DM (scopes + Messages Tab)",(s)=>s,async()=>{let s=ut();if(!s)console.error(`Error: slack doctor checks the bot token, but no xoxb- token was found.
231
+ Set SLACK_BOT_TOKEN=xoxb-... in ~/.config/slack-cli/.env (or your shell).`),process.exit(1);await op(s)}).command("schedule","Manage scheduled messages",(s)=>s.command("send <target> <message>","Schedule a message for later delivery",(o)=>o.positional("target",{type:"string",demandOption:!0,describe:"#chan, @user, #chan:thread_ts, or permalink (a message permalink replies in its thread)"}).positional("message",{type:"string",demandOption:!0}).option("at",{type:"string",demandOption:!0,describe:"Delivery time (ISO datetime or Unix ts)"}).option("code",{type:"string",describe:"Safety hash to confirm"}).option("channel-id",{type:"string",describe:"Raw channel ID"}).option("user-id",{type:"string",describe:"Raw user ID (opens DM)"}).option("as-bot",{type:"boolean",default:!1,describe:"Schedule via the bot token (xoxb / SLACK_BOT_TOKEN) so a DM notifies the recipient. Without it a scheduled DM to yourself is posted by you, and Slack never notifies you of your own message \u2014 it fires into silence."}),async(o)=>{let i={target:o.target,message:o.message,at:o.at};if(o.code)i.code=o.code;if(o["channel-id"])i.channelId=o["channel-id"],i.targetOverride=`--channel-id ${o["channel-id"]}`;if(o["user-id"])i.userId=o["user-id"],i.targetOverride=`--user-id ${o["user-id"]}`;let a;if(o["as-bot"]){let c=co();if(!i.channelId&&!i.userId&&i.target.startsWith("@"))try{i.userId=await tt(e(o),i.target,t(o))}catch(u){console.error(`Error: could not resolve ${i.target} to a user for the bot DM.
232
232
  ${u instanceof Error?u.message:String(u)}
233
- Tip: pass --user-id <Uxxxx> to skip the lookup.`),process.exit(1)}a=c,i.asBot=!0}else{a=e(o);let c=t(o);if(c)i.cookie=c}await Xd(a,i)}).command(["ls","list"],"List pending scheduled messages",(o)=>o.positional("target",{type:"string",describe:"#channel to filter by"}).option("channel-id",{type:"string",describe:"Raw channel ID"}).option("as-bot",{type:"boolean",default:!1,describe:"List what the BOT token scheduled. A message from `schedule send --as-bot` belongs to the app, so the user token's listing does not contain it \u2014 and an invisible pending message cannot be cancelled."}),async(o)=>{let i=o.target;if(o["as-bot"]){let a=so(),c=o["channel-id"];if(!c&&i?.startsWith("@"))c=await au(i,a,e(o),t(o));await cu(a,i,c);return}await cu(e(o),i,o["channel-id"],t(o))}).command("rm <target> <id>","Delete a scheduled message",(o)=>o.positional("target",{type:"string",demandOption:!0,describe:"#channel or @user"}).positional("id",{type:"string",demandOption:!0,describe:"Scheduled message ID"}).option("code",{type:"string",describe:"Safety hash to confirm"}).option("channel-id",{type:"string",describe:"Raw channel ID"}).option("as-bot",{type:"boolean",default:!1,describe:"Cancel a message scheduled with `schedule send --as-bot`. It belongs to the bot token, so the user token cannot delete it."}),async(o)=>{let i={target:o.target,id:o.id};if(o.code)i.code=o.code;if(o["channel-id"])i.channelId=o["channel-id"],i.targetOverride=`--channel-id ${o["channel-id"]}`;if(o["as-bot"]){let c=so();if(!i.channelId&&i.target.startsWith("@"))i.channelId=await au(i.target,c,e(o),t(o));i.asBot=!0,await uu(c,i);return}let a=t(o);if(a)i.cookie=a;await uu(e(o),i)}).demandCommand(1,"").showHelpOnFail(!0),()=>{}).command("edit <target> <newText>","Edit a sent message",(s)=>s.positional("target",{type:"string",demandOption:!0,describe:"#chan:ts, @user:ts, or permalink"}).positional("newText",{type:"string",demandOption:!0}).option("code",{type:"string",describe:"Safety hash to confirm edit"}).option("allow-url-adjacent",{type:"boolean",default:!1,describe:"Warn instead of refusing ambiguous bare URL boundaries"}).option("channel-id",{type:"string",describe:"Raw channel ID"}).option("mentions",{type:"boolean",default:!0,describe:"Convert @handle tokens in the new text to real <@USERID> mentions (on by default). Unresolved handles stay as plain text. Disable with --no-mentions for literal @text."}).option("as-bot",{type:"boolean",default:!1,describe:"Edit as the bot (xoxb / SLACK_BOT_TOKEN). REQUIRED to correct a message the bot posted: Slack only lets a token edit its OWN messages, so a bot-authored message is uneditable by the user token and chat.update returns cant_update_message. Address it by permalink or --channel-id; an @user target resolves against the BOT's DM list, which is where a bot-authored DM actually lives."}),async(s)=>{let o={target:s.target,newText:s.newText,allowUrlAdjacent:s["allow-url-adjacent"]};if(s.code)o.code=s.code;if(s["channel-id"])o.channelId=s["channel-id"];if(s.mentions!==!1)o.mentions=!0;let i;if(s["as-bot"]){let a=await ru(o.target,e(s),t(s),o.channelId);if(i=a.botToken,a.channelId&&!o.channelId)o.channelId=a.channelId;o.asBot=!0,o.mentionToken=e(s);let c=t(s);if(c)o.mentionCookie=c}else{i=e(s);let a=t(s);if(a)o.cookie=a}await Ad(i,o)}).command("delete <target>","Delete a sent message (confirm-hash safety gate)",(s)=>s.positional("target",{type:"string",demandOption:!0,describe:"#chan:ts, @user:ts, or permalink"}).option("code",{type:"string",describe:"Safety hash to confirm delete"}).option("channel-id",{type:"string",describe:"Raw channel ID"}).option("as-bot",{type:"boolean",default:!1,describe:"Delete as the bot (xoxb / SLACK_BOT_TOKEN). REQUIRED for a message the bot posted: chat.delete refuses another token's message exactly as chat.update does."}),async(s)=>{let o={target:s.target};if(s.code)o.code=s.code;if(s["channel-id"])o.channelId=s["channel-id"];let i;if(s["as-bot"]){let a=await ru(o.target,e(s),t(s),o.channelId);if(i=a.botToken,a.channelId&&!o.channelId)o.channelId=a.channelId;o.asBot=!0}else{i=e(s);let a=t(s);if(a)o.cookie=a}await $d(i,o)}).command("react <target> <emoji>","Add (or --remove) an emoji reaction \u2014 a lightweight ack that doesn't grow the thread",(s)=>s.positional("target",{type:"string",demandOption:!0,describe:"#chan:ts, @user:ts, or permalink"}).positional("emoji",{type:"string",demandOption:!0,describe:"Emoji shortcode without colons (e.g. eyes, white_check_mark, hourglass)"}).option("remove",{type:"boolean",default:!1,describe:"Remove the reaction instead of adding it"}).option("channel-id",{type:"string",describe:"Raw channel ID"}),async(s)=>{let o={target:s.target,emoji:s.emoji};if(s.remove)o.remove=!0;if(s["channel-id"])o.channelId=s["channel-id"];let i=t(s);if(i)o.cookie=i;try{await Od(e(s),o)}catch(a){console.error(nt(a)),process.exit(1)}}).command("todo","Reaction-backed task tracking (:pushpin: marks a task, progress lives in a second reaction)",(s)=>s.option("cache",{type:"boolean",default:!0,describe:"Use ~/.config/slack-cli/cache.json for channel/user lookups (--no-cache to bypass)"}).middleware((o)=>{if(o.cache===!1)Qr(!1)}).command(["ls","list"],"List everyone's tasks (has: \u2014 read-only, one search per run)",(o)=>o.options(n).option("mine",{type:"boolean",default:!1,describe:"Only your own reactions (hasmy:) \u2014 same as `slack mytodo ls`"}).option("shared",{type:"boolean",default:!1,hidden:!0,describe:"Deprecated \u2014 anyone's reactions is the default for `todo ls`"}),async(o)=>{await r(o,!1)}).command("set <target> <state>","Move a task to a progress state (adds the new reaction before removing the old one)",(o)=>o.positional("target",{type:"string",demandOption:!0,describe:"#chan:ts or permalink"}).positional("state",{type:"string",demandOption:!0,choices:["pending","doing","done","dropped"]}).option("channel-id",{type:"string",describe:"Raw channel ID"}),async(o)=>{let i={target:o.target,state:o.state};if(o["channel-id"])i.channelId=o["channel-id"];let a=t(o);if(a)i.cookie=a;try{await yd(e(o),i)}catch(c){console.error(nt(c)),process.exit(1)}}).command("flag <target> <flag>","Add (or --remove) a reason flag (alert | needs-discussion | waiting | blocked) \u2014 flags stack, independent of progress",(o)=>o.positional("target",{type:"string",demandOption:!0,describe:"#chan:ts or permalink"}).positional("flag",{type:"string",demandOption:!0,choices:["alert","needs-discussion","waiting","blocked"],describe:"waiting = the other party in this conversation owes a reply; blocked = stuck on something outside it"}).option("remove",{type:"boolean",default:!1,describe:"Remove the flag instead of adding it"}).option("channel-id",{type:"string",describe:"Raw channel ID"}),async(o)=>{let i={target:o.target,flag:o.flag};if(o.remove)i.remove=!0;if(o["channel-id"])i.channelId=o["channel-id"];let a=t(o);if(a)i.cookie=a;try{await bd(e(o),i)}catch(c){console.error(nt(c)),process.exit(1)}}).command("doctor","Find messages carrying two or more progress reactions (--fix repairs them)",(o)=>o.option("in",{type:"string",demandOption:!0,describe:"Channel to scan (#chan)"}).option("fix",{type:"boolean",default:!1,describe:"Repair findings (keeps the highest-priority state)"}).option("limit",{type:"number",default:Zr,describe:"Max messages to scan"}).option("channel-id",{type:"string",describe:"Raw channel ID"}),async(o)=>{let i={channel:o.in,limit:o.limit};if(o.fix)i.fix=!0;if(o["channel-id"])i.channelId=o["channel-id"];let a=t(o);if(a)i.cookie=a;await wd(e(o),i)}).demandCommand(1,"Specify a todo subcommand (ls, set, flag, doctor)"),()=>{}).command("mytodo","Tasks carrying YOUR reactions (hasmy:) \u2014 the my-only half of `todo`",(s)=>s.option("cache",{type:"boolean",default:!0,describe:"Use ~/.config/slack-cli/cache.json for channel/user lookups (--no-cache to bypass)"}).middleware((o)=>{if(o.cache===!1)Qr(!1)}).command(["ls","list"],"List tasks you have reacted to (hasmy: \u2014 read-only, one search per run)",(o)=>o.options(n),async(o)=>{await r(o,!0)}).demandCommand(1,"Specify a mytodo subcommand (ls)"),()=>{}).command("upload <target> <file..>","Upload one or more files to a channel or DM",(s)=>s.positional("target",{type:"string",demandOption:!0,describe:"#chan, @user, #chan:thread_ts, or permalink (a message permalink replies in its thread)"}).positional("file",{type:"string",array:!0,demandOption:!0,describe:"Path(s) to file(s)"}).option("title",{type:"string",describe:"Title (single file only)"}).option("comment",{type:"string",describe:"Initial comment (first file)"}).option("code",{type:"string",describe:"4-hex safety code to confirm upload"}).option("channel-id",{type:"string"}).option("user-id",{type:"string"}),async(s)=>{let o={target:s.target,filePaths:s.file};if(s.title)o.title=s.title;if(s.comment)o.comment=s.comment;if(s.code)o.code=s.code;if(s["channel-id"])o.channelId=s["channel-id"];if(s["user-id"])o.userId=s["user-id"];let i=t(s);if(i)o.cookie=i;await Gd(e(s),o)}).command("files","File commands",(s)=>s.command(["ls","list"],"List files visible to you (files.list)",(o)=>o.option("limit",{alias:"l",type:"number",default:100,describe:"Max files to list"}).option("type",{alias:"t",type:"string",describe:"Slack type filter: images, pdfs, gdocs, snippets, zips, spaces, all"}).option("channel",{alias:"c",type:"string",describe:"Only files in this channel (#name, @user, ID, or permalink)"}).option("user",{alias:"u",type:"string",describe:"Only files from this raw user ID"}).option("format",{type:"string",choices:["text","jsonl"],default:"text"}).option("json",{type:"boolean",default:!1,describe:"Alias for --format=jsonl"}),async(o)=>{let i={limit:o.limit,format:o.json?"jsonl":o.format};if(o.type)i.types=o.type;if(o.channel)i.channel=o.channel;if(o.user)i.user=o.user;await Vd(e(o),t(o),i)}).demandCommand(1,"").showHelpOnFail(!0),()=>{}).command("lists <ref>","Read a Slack List's rows (by list URL or F-id) \u2014 read-only",(s)=>s.positional("ref",{type:"string",demandOption:!0,describe:"List URL (\u2026/lists/<TEAM>/<F-id>) or bare F-id"}).option("limit",{alias:"l",type:"number",default:100,describe:"Max rows to show"}).option("format",{type:"string",choices:["text","jsonl"],default:"text"}).option("json",{type:"boolean",default:!1,describe:"Alias for --format=jsonl (raw records)"}),async(s)=>{let o=s.json?"jsonl":s.format;try{await eh(e(s),t(s),s.ref,{limit:s.limit,format:o})}catch(i){console.error(nt(i)),process.exit(1)}}).command("download <ref> [dest]","Download a file attachment (by file ID or file permalink) to disk",(s)=>s.positional("ref",{type:"string",demandOption:!0,describe:"File ID (F\u2026) or Slack file permalink"}).positional("dest",{type:"string",describe:"Output path or directory (default: ./<filename>)"}),async(s)=>{await nh(e(s),t(s),s.ref,s.dest)}).command("dump","Bulk export channel history as markdown",(s)=>s.option("days",{alias:"d",type:"number",default:7,describe:"Days of history"}).option("limit",{alias:"l",type:"number",default:200}).option("filter",{alias:"f",type:"string",describe:"Filter channel names"}),async(s)=>{await Fd(e(s),s.days,s.limit,s.filter)}).command("drafts","Manage message drafts (requires xoxc desktop token)",(s)=>s.command(["$0","ls","list"],"List pending drafts",(o)=>o.option("all",{alias:"a",type:"boolean",default:!1,describe:"Include sent drafts"}),async(o)=>{await Ed(e(o),t(o),o.all)}).command(["new <channel> [text..]","save <channel> [text..]"],"Create a draft",(o)=>o.positional("channel",{type:"string",demandOption:!0}).positional("text",{type:"string",array:!0,default:[]}),async(o)=>{let i=e(o),a=t(o),c=o.text.join(" ");if(!c)console.error("Usage: slack drafts new <#channel|@user> <text>"),process.exit(2);let u=await De(i,o.channel,a),f=await $c(i,u,c,a);console.log(`\u2713 Draft created (id: ${P(f.draft).id??"?"})`)}).command("get <id>","Show a draft",(o)=>o.positional("id",{type:"string",demandOption:!0}),async(o)=>{await xd(e(o),t(o),o.id)}).command(["edit <id> [text..]","update <id> [text..]"],"Edit a draft",(o)=>o.positional("id",{type:"string",demandOption:!0}).positional("text",{type:"string",array:!0,default:[]}).option("code",{type:"string"}),async(o)=>{let i=e(o),a=t(o),c=o.text.join(" ");if(!c)console.error("Usage: slack drafts edit <id> <new-text>"),process.exit(2);let u=await Fn(i,a),f=X(u.drafts).map(P).find((h)=>String(h.id)===o.id);if(!f)console.error(`Draft not found: ${o.id}`),process.exit(1);let l=As(f),d=await nn(i,a),p=Ye(l,c,d?.userId??"");if(o.code!==p)je(o.code,p,["--- Editing draft as -------------------------",Le(d),"--- Current draft ----------------------------",...l.split(`
234
- `).map((h)=>` ${h}`),"--- Replacing with ---------------------------",...c.split(`
235
- `).map((h)=>` ${h}`),"--------------------------------\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500"]);let m=await Oc(i,o.id,uo(f),c,a);console.log(`\u2713 Draft updated (id: ${P(m.draft).id??"?"})`)}).command(["delete <id>","rm <id>"],"Delete a draft",(o)=>o.positional("id",{type:"string",demandOption:!0}).option("code",{type:"string"}),async(o)=>{let i=e(o),a=t(o),c=await Fn(i,a),u=X(c.drafts).map(P).find((p)=>String(p.id)===o.id);if(!u)console.error(`Draft not found: ${o.id}`),process.exit(1);let f=As(u),l=await nn(i,a),d=Ye(o.id,f,l?.userId??"");if(o.code!==d)je(o.code,d,["\u2500-- Deleting draft \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500",Le(l),` id: ${o.id}`,...f.split(`
236
- `).map((p)=>` ${p}`),"--------------------------------\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500"]);await Tc(i,o.id,a),console.log(`\u2713 Draft deleted (id: ${o.id})`)})).command("auth","Authentication and workspace management",(s)=>s.command("token","Print the active token (or save one with --token)",(o)=>o.option("token",{type:"string",describe:"Token to save directly (non-interactive)"}).option("name",{type:"string",describe:"Workspace name (used with --token)"}),async(o)=>{if(o.token===void 0){console.log(ln(o.workspace));return}await Ra({...o.token!==void 0?{token:o.token}:{},...o.name!==void 0?{name:o.name}:{}})}).command("env","Print active workspace credentials in dotenv format",()=>{},(o)=>{let i=ln(o.workspace),a=i.startsWith("xoxc-")?br(o.workspace):void 0,c=[["SLACK_TOKEN",i]];if(a)c.push(["SLACK_COOKIE",a]);let u=c.map(([f,l])=>{if(/[\r\n\0']/.test(l))throw Error(`Cannot export ${f}: unsupported characters in credential`);return`${f}='${l}'`});console.log(u.join(`
237
- `))}).command("app","Create a new Slack app and obtain a token (guided wizard)",(o)=>o.option("bot",{type:"boolean",describe:"Create a bot token (xoxb-) instead of user (xoxp-)"}),async(o)=>{await Ma({...o.bot!==void 0?{bot:o.bot}:{}})}).command("login","Interactive auth wizard (all auth methods: desktop app, token, new app)",(o)=>o.option("token",{type:"string",describe:"Token to save directly (non-interactive)"}).option("name",{type:"string",describe:"Workspace name (used with --token)"}),async(o)=>{await ds({...o.token!==void 0?{token:o.token}:{},...o.name!==void 0?{name:o.name}:{}})}).command(["ls","status"],"Show auth status",()=>{},()=>{let o=yr();if(o.length===0){console.log("No workspaces configured. Run: slack auth login");return}for(let{name:i,profile:a,current:c}of o)console.log(`${c?"* ":" "}${i} ${a.team} (${a.user}) ${a.url??""}`)}).command("use <name>","Switch active workspace",(o)=>o.positional("name",{type:"string",demandOption:!0}).option("g",{type:"boolean",default:!1,describe:"Write global lockfile (~/.slack-cli/workspace)"}),(o)=>{if(!o.g)od(ht(process.cwd(),".slack-cli"));Qi(o.name,o.g),console.log(`Switched to workspace "${o.name}" ${o.g?"globally":"locally"}`)}).command(["logout <name>","rm <name>","remove <name>"],"Remove a workspace",(o)=>o.positional("name",{type:"string",demandOption:!0}),(o)=>{Zi(o.name),console.log(`Removed workspace "${o.name}"`)}).command(["chrome","cookie"],"Attach Chrome browser xoxd cookie to a workspace (macOS, interactive)",(o)=>o.option("workspace",{type:"string",alias:"w",describe:"Workspace name to update (default: active)"}),async(o)=>{await Ta({...o.workspace!==void 0?{workspace:o.workspace}:{}})}).command("firefox","Attach Firefox browser xoxd cookie to a workspace (all platforms)",(o)=>o.option("workspace",{type:"string",alias:"w",describe:"Workspace name to update (default: active)"}),async(o)=>{await Pa({...o.workspace!==void 0?{workspace:o.workspace}:{}})}).command("$0",!1,()=>{},()=>{s.showHelp(),process.exit(0)})).command("tail [target]","Stream new messages in real time (like tail -f)",(s)=>s.positional("target",{type:"string",describe:"#channel or @user to follow"}).option("since",{type:"string",describe:"Backfill from N ago (e.g. 10m, 2h, 1d)"}).option("thread",{type:"string",describe:"Follow a single thread by timestamp"}).option("watch-thread",{type:"string",describe:"Watch the channel's top-level timeline AND one thread's replies together (ts or permalink)"}).option("me",{type:"boolean",default:!1,describe:"Filter to messages that mention you"}).option("interval",{type:"number",default:60000,describe:"Poll interval in ms (default 60s; use --interval=3000 for near-real-time)"}).option("timeout",{type:"string",describe:"Auto-stop after this long (e.g. 30m, 2h). Exit code 0 even if nothing arrived."}).option("exit-on-message",{type:"boolean",default:!1,describe:"Stop as soon as the first new message from someone else arrives (wait-for-reply)"}).option("rtm",{type:"boolean",default:!0,describe:"Use RTM WebSocket when available (xoxc + cookie); pass --no-rtm to force polling"}),async(s)=>{let o=e(s),i=t(s),a=new AbortController;process.on("SIGINT",()=>{a.abort(),process.exit(0)}),await Ua(o,s.target,{...s.since!==void 0?{since:s.since}:{},...s.thread!==void 0?{thread:s.thread}:{},...s["watch-thread"]!==void 0?{watchThread:s["watch-thread"]}:{},me:s.me,interval:s.interval,...s.timeout!==void 0?{timeout:s.timeout}:{},...s["exit-on-message"]===!0?{exitOnMessage:!0}:{},...i!==void 0?{cookie:i}:{},...s.rtm===!1?{noRtm:!0}:{}},a.signal)}).command("login",!1,(s)=>s.option("token",{type:"string"}).option("name",{type:"string"}),async(s)=>{await ds({...s.token!==void 0?{token:s.token}:{},...s.name!==void 0?{name:s.name}:{}})}).demandCommand(1,"Specify a command. Run with --help for usage.").strict().help().alias("help","h").parseAsync()}sh().catch((e)=>{console.error(e instanceof Error?e.message:String(e)),process.exit(1)});
233
+ Tip: pass --user-id <Uxxxx> to skip the lookup.`),process.exit(1)}a=c,i.asBot=!0}else{a=e(o);let c=t(o);if(c)i.cookie=c}await cp(a,i)}).command(["ls","list"],"List pending scheduled messages",(o)=>o.positional("target",{type:"string",describe:"#channel to filter by"}).option("channel-id",{type:"string",describe:"Raw channel ID"}).option("as-bot",{type:"boolean",default:!1,describe:"List what the BOT token scheduled. A message from `schedule send --as-bot` belongs to the app, so the user token's listing does not contain it \u2014 and an invisible pending message cannot be cancelled."}),async(o)=>{let i=o.target;if(o["as-bot"]){let a=co(),c=o["channel-id"];if(!c&&i?.startsWith("@"))c=await Du(i,a,e(o),t(o));await yu(a,i,c);return}await yu(e(o),i,o["channel-id"],t(o))}).command("rm <target> <id>","Delete a scheduled message",(o)=>o.positional("target",{type:"string",demandOption:!0,describe:"#channel or @user"}).positional("id",{type:"string",demandOption:!0,describe:"Scheduled message ID"}).option("code",{type:"string",describe:"Safety hash to confirm"}).option("channel-id",{type:"string",describe:"Raw channel ID"}).option("as-bot",{type:"boolean",default:!1,describe:"Cancel a message scheduled with `schedule send --as-bot`. It belongs to the bot token, so the user token cannot delete it."}),async(o)=>{let i={target:o.target,id:o.id};if(o.code)i.code=o.code;if(o["channel-id"])i.channelId=o["channel-id"],i.targetOverride=`--channel-id ${o["channel-id"]}`;if(o["as-bot"]){let c=co();if(!i.channelId&&i.target.startsWith("@"))i.channelId=await Du(i.target,c,e(o),t(o));i.asBot=!0,await bu(c,i);return}let a=t(o);if(a)i.cookie=a;await bu(e(o),i)}).demandCommand(1,"").showHelpOnFail(!0),()=>{}).command("edit <target> <newText>","Edit a sent message",(s)=>s.positional("target",{type:"string",demandOption:!0,describe:"#chan:ts, @user:ts, or permalink"}).positional("newText",{type:"string",demandOption:!0}).option("code",{type:"string",describe:"Safety hash to confirm edit"}).option("allow-url-adjacent",{type:"boolean",default:!1,describe:"Warn instead of refusing ambiguous bare URL boundaries"}).option("channel-id",{type:"string",describe:"Raw channel ID"}).option("mentions",{type:"boolean",default:!0,describe:"Convert @handle tokens in the new text to real <@USERID> mentions (on by default). Unresolved handles stay as plain text. Disable with --no-mentions for literal @text."}).option("as-bot",{type:"boolean",default:!1,describe:"Edit as the bot (xoxb / SLACK_BOT_TOKEN). REQUIRED to correct a message the bot posted: Slack only lets a token edit its OWN messages, so a bot-authored message is uneditable by the user token and chat.update returns cant_update_message. Address it by permalink or --channel-id; an @user target resolves against the BOT's DM list, which is where a bot-authored DM actually lives."}),async(s)=>{let o={target:s.target,newText:s.newText,allowUrlAdjacent:s["allow-url-adjacent"]};if(s.code)o.code=s.code;if(s["channel-id"])o.channelId=s["channel-id"];if(s.mentions!==!1)o.mentions=!0;let i;if(s["as-bot"]){let a=await hu(o.target,e(s),t(s),o.channelId);if(i=a.botToken,a.channelId&&!o.channelId)o.channelId=a.channelId;o.asBot=!0,o.mentionToken=e(s);let c=t(s);if(c)o.mentionCookie=c}else{i=e(s);let a=t(s);if(a)o.cookie=a}await Wd(i,o)}).command("delete <target>","Delete a sent message (confirm-hash safety gate)",(s)=>s.positional("target",{type:"string",demandOption:!0,describe:"#chan:ts, @user:ts, or permalink"}).option("code",{type:"string",describe:"Safety hash to confirm delete"}).option("channel-id",{type:"string",describe:"Raw channel ID"}).option("as-bot",{type:"boolean",default:!1,describe:"Delete as the bot (xoxb / SLACK_BOT_TOKEN). REQUIRED for a message the bot posted: chat.delete refuses another token's message exactly as chat.update does."}),async(s)=>{let o={target:s.target};if(s.code)o.code=s.code;if(s["channel-id"])o.channelId=s["channel-id"];let i;if(s["as-bot"]){let a=await hu(o.target,e(s),t(s),o.channelId);if(i=a.botToken,a.channelId&&!o.channelId)o.channelId=a.channelId;o.asBot=!0}else{i=e(s);let a=t(s);if(a)o.cookie=a}await Ud(i,o)}).command("react <target> <emoji>","Add (or --remove) an emoji reaction \u2014 a lightweight ack that doesn't grow the thread",(s)=>s.positional("target",{type:"string",demandOption:!0,describe:"#chan:ts, @user:ts, or permalink"}).positional("emoji",{type:"string",demandOption:!0,describe:"Emoji shortcode without colons (e.g. eyes, white_check_mark, hourglass)"}).option("remove",{type:"boolean",default:!1,describe:"Remove the reaction instead of adding it"}).option("channel-id",{type:"string",describe:"Raw channel ID"}),async(s)=>{let o={target:s.target,emoji:s.emoji};if(s.remove)o.remove=!0;if(s["channel-id"])o.channelId=s["channel-id"];let i=t(s);if(i)o.cookie=i;try{await Kd(e(s),o)}catch(a){console.error(nt(a)),process.exit(1)}}).command("todo","Reaction-backed task tracking (:pushpin: marks a task, progress lives in a second reaction)",(s)=>s.option("cache",{type:"boolean",default:!0,describe:"Use ~/.config/slack-cli/cache.json for channel/user lookups (--no-cache to bypass)"}).middleware((o)=>{if(o.cache===!1)ro(!1)}).command(["ls","list"],"List everyone's tasks (has: \u2014 read-only, one search per run)",(o)=>o.options(n).option("mine",{type:"boolean",default:!1,describe:"Only your own reactions (hasmy:) \u2014 same as `slack mytodo ls`"}).option("shared",{type:"boolean",default:!1,hidden:!0,describe:"Deprecated \u2014 anyone's reactions is the default for `todo ls`"}),async(o)=>{await r(o,!1)}).command("set <target> <state>","Move a task to a progress state (adds the new reaction before removing the old one)",(o)=>o.positional("target",{type:"string",demandOption:!0,describe:"#chan:ts or permalink"}).positional("state",{type:"string",demandOption:!0,choices:["pending","doing","done","dropped"]}).option("channel-id",{type:"string",describe:"Raw channel ID"}),async(o)=>{let i={target:o.target,state:o.state};if(o["channel-id"])i.channelId=o["channel-id"];let a=t(o);if(a)i.cookie=a;try{await Id(e(o),i)}catch(c){console.error(nt(c)),process.exit(1)}}).command("flag <target> <flag>","Add (or --remove) a reason flag (alert | needs-discussion | waiting | blocked) \u2014 flags stack, independent of progress",(o)=>o.positional("target",{type:"string",demandOption:!0,describe:"#chan:ts or permalink"}).positional("flag",{type:"string",demandOption:!0,choices:["alert","needs-discussion","waiting","blocked"],describe:"waiting = the other party in this conversation owes a reply; blocked = stuck on something outside it"}).option("remove",{type:"boolean",default:!1,describe:"Remove the flag instead of adding it"}).option("channel-id",{type:"string",describe:"Raw channel ID"}),async(o)=>{let i={target:o.target,flag:o.flag};if(o.remove)i.remove=!0;if(o["channel-id"])i.channelId=o["channel-id"];let a=t(o);if(a)i.cookie=a;try{await Td(e(o),i)}catch(c){console.error(nt(c)),process.exit(1)}}).command("doctor","Find messages carrying two or more progress reactions (--fix repairs them)",(o)=>o.option("in",{type:"string",demandOption:!0,describe:"Channel to scan (#chan)"}).option("fix",{type:"boolean",default:!1,describe:"Repair findings (keeps the highest-priority state)"}).option("limit",{type:"number",default:so,describe:"Max messages to scan"}).option("channel-id",{type:"string",describe:"Raw channel ID"}),async(o)=>{let i={channel:o.in,limit:o.limit};if(o.fix)i.fix=!0;if(o["channel-id"])i.channelId=o["channel-id"];let a=t(o);if(a)i.cookie=a;await Pd(e(o),i)}).demandCommand(1,"Specify a todo subcommand (ls, set, flag, doctor)"),()=>{}).command("mytodo","Tasks carrying YOUR reactions (hasmy:) \u2014 the my-only half of `todo`",(s)=>s.option("cache",{type:"boolean",default:!0,describe:"Use ~/.config/slack-cli/cache.json for channel/user lookups (--no-cache to bypass)"}).middleware((o)=>{if(o.cache===!1)ro(!1)}).command(["ls","list"],"List tasks you have reacted to (hasmy: \u2014 read-only, one search per run)",(o)=>o.options(n),async(o)=>{await r(o,!0)}).demandCommand(1,"Specify a mytodo subcommand (ls)"),()=>{}).command("upload <target> <file..>","Upload one or more files to a channel or DM",(s)=>s.positional("target",{type:"string",demandOption:!0,describe:"#chan, @user, #chan:thread_ts, or permalink (a message permalink replies in its thread)"}).positional("file",{type:"string",array:!0,demandOption:!0,describe:"Path(s) to file(s)"}).option("title",{type:"string",describe:"Title (single file only)"}).option("comment",{type:"string",describe:"Initial comment (first file)"}).option("code",{type:"string",describe:"4-hex safety code to confirm upload"}).option("channel-id",{type:"string"}).option("user-id",{type:"string"}),async(s)=>{let o={target:s.target,filePaths:s.file};if(s.title)o.title=s.title;if(s.comment)o.comment=s.comment;if(s.code)o.code=s.code;if(s["channel-id"])o.channelId=s["channel-id"];if(s["user-id"])o.userId=s["user-id"];let i=t(s);if(i)o.cookie=i;await up(e(s),o)}).command("files","File commands",(s)=>s.command(["ls","list"],"List files visible to you (files.list)",(o)=>o.option("limit",{alias:"l",type:"number",default:100,describe:"Max files to list"}).option("type",{alias:"t",type:"string",describe:"Slack type filter: images, pdfs, gdocs, snippets, zips, spaces, all"}).option("channel",{alias:"c",type:"string",describe:"Only files in this channel (#name, @user, ID, or permalink)"}).option("user",{alias:"u",type:"string",describe:"Only files from this raw user ID"}).option("format",{type:"string",choices:["text","jsonl"],default:"text"}).option("json",{type:"boolean",default:!1,describe:"Alias for --format=jsonl"}),async(o)=>{let i={limit:o.limit,format:o.json?"jsonl":o.format};if(o.type)i.types=o.type;if(o.channel)i.channel=o.channel;if(o.user)i.user=o.user;await lp(e(o),t(o),i)}).demandCommand(1,"").showHelpOnFail(!0),()=>{}).command("lists <ref>","Read a Slack List's rows (by list URL or F-id) \u2014 read-only",(s)=>s.positional("ref",{type:"string",demandOption:!0,describe:"List URL (\u2026/lists/<TEAM>/<F-id>) or bare F-id"}).option("limit",{alias:"l",type:"number",default:100,describe:"Max rows to show"}).option("format",{type:"string",choices:["text","jsonl"],default:"text"}).option("json",{type:"boolean",default:!1,describe:"Alias for --format=jsonl (raw records)"}),async(s)=>{let o=s.json?"jsonl":s.format;try{await pp(e(s),t(s),s.ref,{limit:s.limit,format:o})}catch(i){console.error(nt(i)),process.exit(1)}}).command("download <ref> [dest]","Download a file attachment (by file ID or file permalink) to disk",(s)=>s.positional("ref",{type:"string",demandOption:!0,describe:"File ID (F\u2026) or Slack file permalink"}).positional("dest",{type:"string",describe:"Output path or directory (default: ./<filename>)"}),async(s)=>{await gp(e(s),t(s),s.ref,s.dest)}).command("dump","Bulk export channel history as markdown",(s)=>s.option("days",{alias:"d",type:"number",default:7,describe:"Days of history"}).option("limit",{alias:"l",type:"number",default:200}).option("filter",{alias:"f",type:"string",describe:"Filter channel names"}),async(s)=>{await Rd(e(s),s.days,s.limit,s.filter)}).command("drafts","Manage message drafts (requires xoxc desktop token)",(s)=>s.command(["$0","ls","list"],"List pending drafts",(o)=>o.option("all",{alias:"a",type:"boolean",default:!1,describe:"Include sent drafts"}),async(o)=>{await Bd(e(o),t(o),o.all)}).command(["new <channel> [text..]","save <channel> [text..]"],"Create a draft",(o)=>o.positional("channel",{type:"string",demandOption:!0}).positional("text",{type:"string",array:!0,default:[]}),async(o)=>{let i=e(o),a=t(o),c=o.text.join(" ");if(!c)console.error("Usage: slack drafts new <#channel|@user> <text>"),process.exit(2);let u=await De(i,o.channel,a),f=await jc(i,u,c,a);console.log(`\u2713 Draft created (id: ${P(f.draft).id??"?"})`)}).command("get <id>","Show a draft",(o)=>o.positional("id",{type:"string",demandOption:!0}),async(o)=>{await vd(e(o),t(o),o.id)}).command(["edit <id> [text..]","update <id> [text..]"],"Edit a draft",(o)=>o.positional("id",{type:"string",demandOption:!0}).positional("text",{type:"string",array:!0,default:[]}).option("code",{type:"string"}),async(o)=>{let i=e(o),a=t(o),c=o.text.join(" ");if(!c)console.error("Usage: slack drafts edit <id> <new-text>"),process.exit(2);let u=await En(i,a),f=Y(u.drafts).map(P).find((p)=>String(p.id)===o.id);if(!f)console.error(`Draft not found: ${o.id}`),process.exit(1);let l=Os(f),d=await nn(i,a),h=Ge(l,c,d?.userId??"");if(o.code!==h)je(o.code,h,["--- Editing draft as -------------------------",Le(d),"--- Current draft ----------------------------",...l.split(`
234
+ `).map((p)=>` ${p}`),"--- Replacing with ---------------------------",...c.split(`
235
+ `).map((p)=>` ${p}`),"--------------------------------\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500"]);let m=await Lc(i,o.id,go(f),c,a);console.log(`\u2713 Draft updated (id: ${P(m.draft).id??"?"})`)}).command(["delete <id>","rm <id>"],"Delete a draft",(o)=>o.positional("id",{type:"string",demandOption:!0}).option("code",{type:"string"}),async(o)=>{let i=e(o),a=t(o),c=await En(i,a),u=Y(c.drafts).map(P).find((h)=>String(h.id)===o.id);if(!u)console.error(`Draft not found: ${o.id}`),process.exit(1);let f=Os(u),l=await nn(i,a),d=Ge(o.id,f,l?.userId??"");if(o.code!==d)je(o.code,d,["\u2500-- Deleting draft \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500",Le(l),` id: ${o.id}`,...f.split(`
236
+ `).map((h)=>` ${h}`),"--------------------------------\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500"]);await Uc(i,o.id,a),console.log(`\u2713 Draft deleted (id: ${o.id})`)})).command("auth","Authentication and workspace management",(s)=>s.command("token","Print the active token (or save one with --token)",(o)=>o.option("token",{type:"string",describe:"Token to save directly (non-interactive)"}).option("name",{type:"string",describe:"Workspace name (used with --token)"}),async(o)=>{if(o.token===void 0){console.log(fn(o.workspace));return}await ja({...o.token!==void 0?{token:o.token}:{},...o.name!==void 0?{name:o.name}:{}})}).command("env","Print active workspace credentials in dotenv format",()=>{},(o)=>{let i=fn(o.workspace),a=i.startsWith("xoxc-")?Fr(o.workspace):void 0,c=[["SLACK_TOKEN",i]];if(a)c.push(["SLACK_COOKIE",a]);let u=c.map(([f,l])=>{if(/[\r\n\0']/.test(l))throw Error(`Cannot export ${f}: unsupported characters in credential`);return`${f}='${l}'`});console.log(u.join(`
237
+ `))}).command("app","Create a new Slack app and obtain a token (guided wizard)",(o)=>o.option("bot",{type:"boolean",describe:"Create a bot token (xoxb-) instead of user (xoxp-)"}),async(o)=>{await La({...o.bot!==void 0?{bot:o.bot}:{}})}).command("login","Interactive auth wizard (all auth methods: desktop app, token, new app)",(o)=>o.option("token",{type:"string",describe:"Token to save directly (non-interactive)"}).option("name",{type:"string",describe:"Workspace name (used with --token)"}),async(o)=>{await hs({...o.token!==void 0?{token:o.token}:{},...o.name!==void 0?{name:o.name}:{}})}).command(["ls","status"],"Show auth status",()=>{},()=>{let o=wr();if(o.length===0){console.log("No workspaces configured. Run: slack auth login");return}for(let{name:i,profile:a,current:c}of o)console.log(`${c?"* ":" "}${i} ${a.team} (${a.user}) ${a.url??""}`)}).command("use <name>","Switch active workspace",(o)=>o.positional("name",{type:"string",demandOption:!0}).option("g",{type:"boolean",default:!1,describe:"Write global lockfile (~/.slack-cli/workspace)"}),(o)=>{if(!o.g)yd(pt(process.cwd(),".slack-cli"));ra(o.name,o.g),console.log(`Switched to workspace "${o.name}" ${o.g?"globally":"locally"}`)}).command(["logout <name>","rm <name>","remove <name>"],"Remove a workspace",(o)=>o.positional("name",{type:"string",demandOption:!0}),(o)=>{sa(o.name),console.log(`Removed workspace "${o.name}"`)}).command(["chrome","cookie"],"Attach Chrome browser xoxd cookie to a workspace (macOS, interactive)",(o)=>o.option("workspace",{type:"string",alias:"w",describe:"Workspace name to update (default: active)"}),async(o)=>{await va({...o.workspace!==void 0?{workspace:o.workspace}:{}})}).command("firefox","Attach Firefox browser xoxd cookie to a workspace (all platforms)",(o)=>o.option("workspace",{type:"string",alias:"w",describe:"Workspace name to update (default: active)"}),async(o)=>{await Na({...o.workspace!==void 0?{workspace:o.workspace}:{}})}).command("$0",!1,()=>{},()=>{s.showHelp(),process.exit(0)})).command("tail [target]","Stream new messages in real time (like tail -f)",(s)=>s.positional("target",{type:"string",describe:"#channel or @user to follow"}).option("since",{type:"string",describe:"Backfill from N ago (e.g. 10m, 2h, 1d)"}).option("thread",{type:"string",describe:"Follow a single thread by timestamp"}).option("watch-thread",{type:"string",describe:"Watch the channel's top-level timeline AND one thread's replies together (ts or permalink)"}).option("me",{type:"boolean",default:!1,describe:"Filter to messages that mention you"}).option("interval",{type:"number",default:60000,describe:"Poll interval in ms (default 60s; use --interval=3000 for near-real-time)"}).option("timeout",{type:"string",describe:"Auto-stop after this long (e.g. 30m, 2h). Exit code 0 even if nothing arrived."}).option("exit-on-message",{type:"boolean",default:!1,describe:"Stop as soon as the first new message from someone else arrives (wait-for-reply)"}).option("rtm",{type:"boolean",default:!0,describe:"Use RTM WebSocket when available (xoxc + cookie); pass --no-rtm to force polling"}),async(s)=>{let o=e(s),i=t(s),a=new AbortController;process.on("SIGINT",()=>{a.abort(),process.exit(0)}),await qa(o,s.target,{...s.since!==void 0?{since:s.since}:{},...s.thread!==void 0?{thread:s.thread}:{},...s["watch-thread"]!==void 0?{watchThread:s["watch-thread"]}:{},me:s.me,interval:s.interval,...s.timeout!==void 0?{timeout:s.timeout}:{},...s["exit-on-message"]===!0?{exitOnMessage:!0}:{},...i!==void 0?{cookie:i}:{},...s.rtm===!1?{noRtm:!0}:{}},a.signal)}).command("login",!1,(s)=>s.option("token",{type:"string"}).option("name",{type:"string"}),async(s)=>{await hs({...s.token!==void 0?{token:s.token}:{},...s.name!==void 0?{name:s.name}:{}})}).demandCommand(1,"Specify a command. Run with --help for usage.").strict().help().alias("help","h").parseAsync()}mp().catch((e)=>{console.error(e instanceof Error?e.message:String(e)),process.exit(1)});