slack-term 1.33.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/README.md +6 -0
- package/dist/cli.js +117 -116
- package/package.json +1 -1
- package/ts/agent.ts +148 -0
- package/ts/cli.ts +23 -1
- package/ts/slack.ts +25 -0
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:lo,getOwnPropertyNames:Fu}=Object;var fo=Object.prototype.hasOwnProperty;function Cu(e){return this[e]}var Eu,xu,ho=(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||!fo.call(e,"default")?lo(n,"default",{value:e,enumerable:!0}):n;if(e&&typeof e==="object"||typeof e==="function"){for(let a of Fu(e))if(!fo.call(i,a))lo(i,a,{get:Cu.bind(e,a),enumerable:!0})}if(r)s.set(e,i);return i};var po=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var Bs=_u(import.meta.url);var To=po(function(xh,Io){Io.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 ri=po(function(dp,si){si.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 mo{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=
|
|
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 go(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 Do(e,t){return Se=t,new mo({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 yo=161,bo=1114109,wo=[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],Fo=12288,Co=65510,Eo=[12288,12288,65281,65376,65504,65510];var xo=4352,_o=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 $n=(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 ko=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(ko>=s&&ko<=o)return[s,o];if(o-s>n-t)t=s,n=o}return[t,n]}var So=(e)=>{if(e<yo||e>bo)return!1;return $n(wo,e)},Ao=(e)=>{if(e<Fo||e>Co)return!1;return $n(Eo,e)};var $o=(e)=>{if(e>=Tu&&e<=Pu)return!0;if(e<xo||e>_o)return!1;return $n(vs,e)};function Mu(e){if(!Number.isSafeInteger(e))throw TypeError(`Expected a code point, got \`${typeof e}\`.`)}function Oo(e,{ambiguousAsWide:t=!1}={}){if(Mu(e),Ao(e)||$o(e)||t&&So(e))return 2;return 1}var Po=ho(To(),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(Po.default().test(i)){s+=2;continue}s+=Oo(a,o)}return s}var Ro=(e=0)=>(t)=>`\x1B[${t+e}m`,Mo=(e=0)=>(t)=>`\x1B[${38+e};5;${t}m`,Bo=(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=Ro(),oe.color.ansi256=Mo(),oe.color.ansi16m=Bo(),oe.bgColor.ansi=Ro(10),oe.bgColor.ansi256=Mo(10),oe.bgColor.ansi16m=Bo(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(),No=Wu;var In=new Set(["\x1B",""]),Uu=39,Ls="\x07",Lo="[",Ku="]",Wo="m",On=`${Ku}8;;`,vo=(e)=>`${In.values().next().value}${Lo}${e}${Wo}`,jo=(e)=>`${In.values().next().value}${On}${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(In.has(c))s=!0,o=r.slice(a+1,a+1+On.length).join("")===On;if(s){if(o){if(c===Ls)s=!1,o=!1}else if(c===Wo)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,
|
|
9
|
-
`){if(o)r+=
|
|
10
|
-
`){if(s&&
|
|
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)=>
|
|
14
|
-
`)}function Us(e){return Do(e,{stringWidth:We,stripAnsi:pt,wrap:Ws})}import{dirname as Uo,resolve as Ko}from"path";import{readdirSync as qu,statSync as Yu}from"fs";function Ks(e,t){let n=Ko(".",e),r;if(!Yu(n).isDirectory())n=Uo(n);while(!0){if(r=t(n,qu(n)),r)return Ko(n,r);if(n=Uo(r=n),r===n)break}}import{inspect as dl}from"util";import{fileURLToPath as ii}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 Tn(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 Pn(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 Jo(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=Jo(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(Pn(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=zo(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=zo(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=Tn(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 zo(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 Ho}from"node:module";var Hs,qs,Ys,qo=process&&process.env&&process.env.YARGS_MIN_NODE_VERSION?Number(process.env.YARGS_MIN_NODE_VERSION):20,Yo=(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(Yo){if(Number(Yo.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 tl=process?process.env:{},Xo=Ho?Ho(import.meta.url):void 0,Go=new zs({cwd:process.cwd,env:()=>tl,format:Vu,normalize:Zu,resolve:Qu,require:(e)=>{if(typeof Xo<"u")return Xo(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 Go.parse(t.slice(),n).argv};sn.detailed=function(e,t){return Go.parse(e.slice(),t)};sn.camelCase=gt;sn.decamelize=Tn;sn.looksLikeNumber=Pn;var Xs=sn;import{basename as hl,dirname as pl,extname as gl,relative as ml,resolve as oi,join as Dl}from"path";function Vo(){if(nl())return 0;return 1}function nl(){return sl()&&!process.defaultApp}function sl(){return!!process.versions.electron}function Gs(e){return e.slice(Vo()+1)}function Zo(){return process.argv[Vo()]}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 Qo={fs:{readFileSync:rl,writeFile:il},format:al,resolve:cl,exists:(e)=>{try{return ol(e).isFile()}catch(t){return!1}}};var Ue;class ei{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 ti(e,t){Ue=t;let n=new ei(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)=>ti(e,Qo),ni=ul;var ai=ho(ri(),1);import{createRequire as yl}from"node:module";import{readFileSync as bl,readdirSync as wl}from"node:fs";var Vs=ii(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:Zo,mainFilename:Fl||process.cwd(),Parser:Xs,path:{basename:hl,dirname:pl,extname:gl,relative:ml,resolve:oi,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=ai.default(3);return e.match(/^file:\/\//)?ii(e):e},stringWidth:We,y18n:ni({directory:oi(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=ci(d);if(l.cmd.filter((h)=>h===p||h==="*").length===0)ui(p,l.cmd,s);s+=1}),o.optional.forEach((l)=>{if(c.length===0)return;let d=c.shift(),p=ci(d);if(l.cmd.filter((h)=>h===p||h==="*").length===0)ui(p,l.cmd,s);s+=1})}catch(s){console.warn(s.stack)}}function ci(e){if(Array.isArray(e))return"array";else if(e===null)return"null";return typeof e}function ui(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 li(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 di{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=li(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(fi(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(Rn(c)){n.getInternalMethods().getUsageInstance().freeze();let f=c(n.getInternalMethods().reset(r),a);if(re(f))return f.then((l)=>(u=pi(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(Rn(t))return t(e,!0);else if(!fi(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 hi(e,t,n,r){return new di(e,t,n,r)}function fi(e){return typeof e==="object"&&!!e.builder&&typeof e.handler==="function"}function _l(e){return e.every((t)=>typeof t==="string")}function Rn(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 mi(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(!
|
|
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} ${
|
|
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
|
-
`,
|
|
47
|
+
`,xi=`#compdef {{app_name}}
|
|
48
48
|
###-begin-{{app_name}}-completions-###
|
|
49
49
|
#
|
|
50
50
|
# yargs command completion script
|
|
@@ -71,166 +71,167 @@ else
|
|
|
71
71
|
compdef _{{app_name}}_yargs_completions {{app_name}}
|
|
72
72
|
fi
|
|
73
73
|
###-end-{{app_name}}-completions-###
|
|
74
|
-
`;class
|
|
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(
|
|
77
|
-
${r("Argument: %s, Given: %s, Choices: %s",y,t.stringifiedValues(
|
|
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=Fi(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?xi(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 xi(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]=xi(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,Bn,it,bt,Nn,Pe,vn,Re,Xe,$e,Me,jn,wt,me,K,Ln,Wn,Oe,Ft,Jt,Ct,at,Un,H,Et,xt,_t,Y,Kn,Ge,ce;function Ji(e){return(t=[],n=e.process.cwd(),r)=>{let s=new zi(t,n,r,e);return Object.defineProperty(s,"argv",{get:()=>s.parse(),enumerable:!0}),s.help(),s.version(),s}}var _i=Symbol("copyDoubleDash"),ki=Symbol("copyDoubleDash"),sr=Symbol("deleteFromParserHintObject"),Si=Symbol("emitWarning"),Ai=Symbol("freeze"),$i=Symbol("getDollarZero"),kt=Symbol("getParserConfiguration"),Oi=Symbol("getUsageConfiguration"),rr=Symbol("guessLocale"),Ii=Symbol("guessVersion"),Ti=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"),Pi=Symbol("validateAsync"),Ri=Symbol("getCommandInstance"),Mi=Symbol("getContext"),Bi=Symbol("getHasOutput"),Ni=Symbol("getLoggerInstance"),vi=Symbol("getParseContext"),ji=Symbol("getUsageInstance"),Li=Symbol("getValidationInstance"),Jn=Symbol("hasParseCallback"),Wi=Symbol("isGlobalContext"),St=Symbol("postProcess"),Ui=Symbol("rebase"),fr=Symbol("reset"),cn=Symbol("runYargsParserAndExecuteCommands"),dr=Symbol("runValidation"),Ki=Symbol("setHasOutput"),At=Symbol("kTrackManuallySetKeys"),Ml="en_US";class zi{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),Bn.set(this,"show-hidden"),it.set(this,null),bt.set(this,!0),Nn.set(this,{}),Pe.set(this,!0),vn.set(this,[]),Re.set(this,void 0),Xe.set(this,{}),$e.set(this,!1),Me.set(this,null),jn.set(this,!0),wt.set(this,void 0),me.set(this,""),K.set(this,void 0),Ln.set(this,void 0),Wn.set(this,{}),Oe.set(this,null),Ft.set(this,null),Jt.set(this,{}),Ct.set(this,{}),at.set(this,void 0),Un.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),Kn.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,Ln,n,"f"),j(this,Re,new er(this),"f"),this.$0=this[$i](),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,Bn,"f"),j(this,wt,this[ki](),"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,Bn,"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,Ln,"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[Si](['"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,
|
|
80
|
-
`,"f");j(this,me,g(this,me,"f")+e.join(" "),"f")},error:(...e)=>{if(!this[
|
|
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]}[Si](e,t,n){if(!g(this,Nn,"f")[n])g(this,H,"f").process.emitWarning(e,t),g(this,Nn,"f")[n]=!0}[Ai](){g(this,vn,"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()}[$i](){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[Ui](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,Wn,"f")}[Oi](){return g(this,Kn,"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(/[.:].*/,""))}[Ii](){return this[or]().version||"unknown"}[Ti](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,vn,"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()}[Pi](e,t){return Dt(t,(n)=>(e(n),n))}getInternalMethods(){return{getCommandInstance:this[Ri].bind(this),getContext:this[Mi].bind(this),getHasOutput:this[Bi].bind(this),getLoggerInstance:this[Ni].bind(this),getParseContext:this[vi].bind(this),getParserConfiguration:this[kt].bind(this),getUsageConfiguration:this[Oi].bind(this),getUsageInstance:this[ji].bind(this),getValidationInstance:this[Li].bind(this),hasParseCallback:this[Jn].bind(this),isGlobalContext:this[Wi].bind(this),postProcess:this[St].bind(this),reset:this[fr].bind(this),runValidation:this[dr].bind(this),runYargsParserAndExecuteCommands:this[cn].bind(this),setHasOutput:this[Ki].bind(this)}}[Ri](){return g(this,fe,"f")}[Mi](){return g(this,an,"f")}[Bi](){return g(this,$e,"f")}[Ni](){return g(this,wt,"f")}[vi](){return g(this,Ft,"f")||{}}[ji](){return g(this,Y,"f")}[Li](){return g(this,ce,"f")}[Jn](){return!!g(this,Oe,"f")}[Wi](){return g(this,jn,"f")}[St](e,t,n,r){if(n)return e;if(re(e))return e;if(!t)e=this[_i](e);if(this[kt]()["parse-positional-numbers"]||this[kt]()["parse-positional-numbers"]===void 0)e=this[Ti](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):mi(this,g(this,H,"f")),"f"),j(this,ce,g(this,ce,"f")?g(this,ce,"f").reset(n):Ei(this,g(this,Y,"f"),g(this,H,"f")),"f"),j(this,fe,g(this,fe,"f")?g(this,fe,"f").reset():hi(g(this,Y,"f"),g(this,ce,"f"),g(this,Re,"f"),g(this,H,"f")),"f"),!g(this,xe,"f"))j(this,xe,wi(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}[Ui](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,jn,!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,Un,"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[Pi](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)}}[Ki](){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 pi(e){return!!e&&typeof e.getInternalMethods==="function"}var Bl=Ji(Zs),Hi=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 zn(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 Hn,readFileSync as gr,writeFileSync as hr,mkdirSync as Xi}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 Gi(){return $t(Dr(),".config","slack-cli","profiles.json")}function qn(){return $t(process.cwd(),".slack-cli","workspace")}function Yn(){return $t(Dr(),".slack-cli","workspace")}function un(){let e=Gi();if(!Hn(e))return{profiles:{}};return JSON.parse(gr(e,"utf8"))}function jl(e){let t=Gi();Xi(mr(t),{recursive:!0}),hr(t,JSON.stringify(e,null,2)+`
|
|
82
|
-
`)}function Ht(e){if(!
|
|
83
|
-
`);
|
|
84
|
-
`)}function
|
|
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
|
|
86
|
-
`+" Migrate to SLACK_TOKEN=... or remove from your shell config.")}}let o=
|
|
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
|
|
94
|
-
`)}function
|
|
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
|
|
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)}
|
|
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
|
|
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`)
|
|
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
|
|
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 ${
|
|
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
|
|
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=
|
|
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
|
|
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}
|
|
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=
|
|
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
|
|
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
|
|
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=
|
|
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
|
|
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)
|
|
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
|
|
133
|
-
`);if(n.length<2)return e;if(
|
|
134
|
-
`);return r===e?e:r}function
|
|
135
|
-
`)}function
|
|
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`${
|
|
137
|
+
`);return`${Ds}*${e}*
|
|
138
138
|
_${t.how}で回答済み${n?` (${n})`:""}_
|
|
139
139
|
|
|
140
|
-
${r}`}function
|
|
141
|
-
`),n=t[t.length-1]??"";if(e.startsWith(
|
|
142
|
-
`);if(e.startsWith(
|
|
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(
|
|
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
|
|
146
|
-
`);if(n.length<2)return e;if(
|
|
147
|
-
`);return r===e?e:r}function
|
|
148
|
-
`),s?[]:i)}function
|
|
149
|
-
`)}function
|
|
150
|
-
`);if(e.startsWith(
|
|
151
|
-
`).replace(/^\*/,"").replace(/\*$/,""),i=t.length-2,a=
|
|
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`)
|
|
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
|
|
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 ${
|
|
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(
|
|
166
|
-
`)}catch{}}function
|
|
167
|
-
`)[0]??"",emoji:F,keep:F[0]})}if(f=
|
|
168
|
-
`;case"t":return"\t";case"\\":case"¥":return n==="¥"?"¥":"\\";default:return t}})}function
|
|
169
|
-
`)),o=await jt(e,t,n,r.cookie);for(let i of
|
|
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
|
|
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
|
|
172
|
-
`)}function
|
|
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}`,
|
|
176
|
-
\uD83D\uDCCE ${A}${k}${B}`}).join(""),
|
|
177
|
-
${
|
|
178
|
-
`)[0]??"",d=await tn(e,l,r);console.log(` ${f}: ${d}`)}}}async function
|
|
179
|
-
`)[0]?.slice(0,60)}`:"";console.log(`${d}${u} ${c}${
|
|
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=
|
|
182
|
-
`);for(let
|
|
183
|
-
`).join(" \u21B5 ");console.log(`[${
|
|
184
|
-
`))console.log(` ${F}`)}}async function
|
|
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
|
|
186
|
-
`)[0]??"",i=o.length>n?`${o.slice(0,n)}\u2026`:o,a=typeof t.ts==="string"?t.ts:"";return`${a?
|
|
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}=
|
|
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
|
|
190
|
-
`).map((
|
|
191
|
-
`).map((
|
|
192
|
-
`).map((
|
|
193
|
-
`+` To reach yourself with a notification, send as the bot: slack send '${t.target}' '...' --as-bot`);let a=ft(t.message);
|
|
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
|
|
195
|
-
`+` To reach yourself with a notification, ask as the bot: slack ask '${t.target}' '...' --as-bot`);let u
|
|
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,
|
|
199
|
-
`)[0]?.slice(0,100)??"(empty)"}`,...
|
|
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=
|
|
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
|
|
203
|
-
`+` To reach yourself with a notification, post as the bot: slack poll '${t.target}' '...' --as-bot`);let u
|
|
204
|
-
`)[0]?.slice(0,100)??"(empty)"}`,"--- Ballot (seeded as reactions) -------------",...y.map((S,O)=>` ${ze[O].glyph} ${
|
|
205
|
-
`+` Got: ${Q(t)}`),process.exit(
|
|
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
|
|
207
|
-
Set SLACK_BOT_TOKEN=xoxb-... in ~/.config/slack-cli/.env (or your shell).`),process.exit(1);return e}async function
|
|
208
|
-
`+` To be notified, schedule it as the bot: slack schedule send '${t.target}' '...' --at '${t.at}' --as-bot`);let u=
|
|
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
|
|
211
|
-
`)[0]?.slice(0,80)??""}`)}}async function
|
|
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
|
|
213
|
-
`+"Expected F\u2026 or https://<ws>.slack.com/files/<UID>/<FID>/<name>");let o=P(await
|
|
214
|
-
`),await
|
|
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(
|
|
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
|
|
224
|
-
Set SLACK_BOT_TOKEN=xoxb-... in ~/.config/slack-cli/.env (or your shell).`),process.exit(Ee);l=
|
|
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
|
|
228
|
-
Set SLACK_BOT_TOKEN=xoxb-... in ~/.config/slack-cli/.env (or your shell).`),process.exit(
|
|
229
|
-
${
|
|
230
|
-
Tip: pass --user-id <Uxxxx> to skip the lookup.`),process.exit(
|
|
231
|
-
Set SLACK_BOT_TOKEN=xoxb-... in ~/.config/slack-cli/.env (or your shell).`),process.exit(1);await
|
|
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=no(),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=no();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)Zr(!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:Vr,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)Zr(!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 wn(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((
|
|
235
|
-
`).map((
|
|
236
|
-
`).map((
|
|
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)});
|