aicommit2 1.9.0 → 1.9.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/README.md +40 -13
  2. package/dist/cli.mjs +54 -54
  3. package/package.json +6 -3
package/README.md CHANGED
@@ -31,6 +31,7 @@ AICommit2 streamlines interactions with various AI, enabling users to request mu
31
31
  - [Anthropic Claude](https://console.anthropic.com/)
32
32
  - [Gemini](https://gemini.google.com/)
33
33
  - [Mistral AI](https://mistral.ai/)
34
+ - [Cohere](https://cohere.com/)
34
35
  - [Huggingface **(Unofficial)**](https://huggingface.co/chat/)
35
36
  - [Clova X **(Unofficial)**](https://clova-x.naver.com/)
36
37
 
@@ -72,6 +73,11 @@ aicommit2 config set GEMINI_KEY=<your key>
72
73
  aicommit2 config set MISTRAL_KEY=<your key>
73
74
  ```
74
75
 
76
+ - [Cohere](https://dashboard.cohere.com/)
77
+ ```sh
78
+ aicommit2 config set COHERE_KEY=<your key>
79
+ ```
80
+
75
81
  - [Huggingface **(Unofficial)**](https://github.com/tak-bro/aicommit2?tab=readme-ov-file#how-to-get-cookieunofficial-api)
76
82
  ```shell
77
83
  # Please be cautious of Escape characters(\", \') in browser cookie string
@@ -295,9 +301,11 @@ aicommit2 config set OPENAI_KEY=<your-api-key> generate=3 locale=en
295
301
  | `ANTHROPIC_KEY` | N/A | The Anthropic API key |
296
302
  | `ANTHROPIC_MODEL` | `claude-3-haiku-20240307` | The Anthropic Model to use |
297
303
  | `GEMINI_KEY` | N/A | The Gemini API key |
298
- | `GEMINI_MODEL` | `gemini-pro` | The Gemini Model |
304
+ | `GEMINI_MODEL` | `gemini-1.5-flash-latest` | The Gemini Model |
299
305
  | `MISTRAL_KEY` | N/A | The Mistral API key |
300
306
  | `MISTRAL_MODEL` | `mistral-tiny` | The Mistral Model to use |
307
+ | `COHERE_KEY` | N/A | The Cohere API Key |
308
+ | `COHERE_MODEL` | `command` | The identifier of the Cohere model |
301
309
  | `HUGGING_COOKIE` | N/A | The HuggingFace Cookie string |
302
310
  | `HUGGING_MODEL` | `mistralai/Mixtral-8x7B-Instruct-v0.1` | The HuggingFace Model to use |
303
311
  | `CLOVAX_COOKIE` | N/A | The Clova X Cookie string |
@@ -314,19 +322,20 @@ aicommit2 config set OPENAI_KEY=<your-api-key> generate=3 locale=en
314
322
  | `max-tokens` | `200` | The maximum number of tokens that the AI models can generate (for **Open AI, Anthropic, Gemini, Mistral**) |
315
323
  | `temperature` | `0.7` | The temperature (0.0-2.0) is used to control the randomness of the output (for **Open AI, Anthropic, Gemini, Mistral**) |
316
324
  | `prompt` | N/A | Additional prompt to let users fine-tune provided prompt |
317
- | `logging` | `false` | Whether to log AI reponses for debugging (true or false) |
325
+ | `logging` | `false` | Whether to log AI responses for debugging (true or false) |
318
326
 
319
327
  > **Currently, options are set universally. However, there are plans to develop the ability to set individual options in the future.**
320
328
 
321
329
  ### Available Options by Model
322
- | | locale | generate | type | proxy | timeout | max-length | max-tokens | temperature | prompt |
323
- |:--------------------:|:------:|:--------:|:-----:|:-----:|:---------------------:|:-----------:|:----------:|:-----------:|:------:|
324
- | **OpenAI** | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
325
- | **Anthropic Claude** | ✓ | ✓ | ✓ | | | ✓ | ✓ | ✓ | ✓ |
326
- | **Gemini** | ✓ | ✓ | ✓ | | | ✓ | ✓ | ✓ | ✓ |
327
- | **Mistral AI** | ✓ | ✓ | ✓ | | ✓ | ✓ | ✓ | ✓ | ✓ |
328
- | **Huggingface** | ✓ | ✓ | ✓ | || ✓ | | | ✓ |
329
- | **Clova X** | ✓ | ✓ | ✓ | | ✓ | ✓ | | | ✓ |
330
+ | | locale | generate | type | proxy | timeout | max-length | max-tokens | temperature | prompt |
331
+ |:--------------------:|:------:|:--------:|:-----:|:-----:|:----------------------:|:-----------:|:----------:|:-----------:|:------:|
332
+ | **OpenAI** | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
333
+ | **Anthropic Claude** | ✓ | ✓ | ✓ | | | ✓ | ✓ | ✓ | ✓ |
334
+ | **Gemini** | ✓ | ✓ | ✓ | | | ✓ | ✓ | ✓ | ✓ |
335
+ | **Mistral AI** | ✓ | ✓ | ✓ | | ✓ | ✓ | ✓ | ✓ | ✓ |
336
+ | **Cohere** | ✓ | ✓ | ✓ | | | ✓ ||| ✓ |
337
+ | **Huggingface** | ✓ | ✓ | ✓ | | ✓ | ✓ | | | ✓ |
338
+ | **Clova X** | ✓ | ✓ | ✓ | | ✓ | ✓ | | | ✓ |
330
339
  | **Ollama** | ✓ | ✓ | ✓ | | ⚠<br/>(OLLAMA_TIMEOUT) | ✓ | | ✓ | ✓ |
331
340
 
332
341
 
@@ -430,7 +439,6 @@ The log files will be stored in the `~/.aicommit2_log` directory(user's home).
430
439
 
431
440
  ![log-path](https://github.com/tak-bro/aicommit2/blob/main/img/log_path.png?raw=true)
432
441
 
433
-
434
442
  ### Ollama
435
443
 
436
444
  ##### OLLAMA_MODEL
@@ -519,12 +527,13 @@ The Gemini API key. If you don't have one, create a key in [Google AI Studio](ht
519
527
 
520
528
  ##### GEMINI_MODEL
521
529
 
522
- Default: `gemini-pro`
530
+ Default: `gemini-1.5-flash-latest`
523
531
 
524
532
  Supported:
533
+ - `gemini-1.5-flash-latest`
525
534
  - `gemini-pro`
526
535
 
527
- > Currently supporting only one model, but as Gemini starts supporting other models, it will be updated.
536
+ > The models mentioned above are subject to change.
528
537
 
529
538
  ### MISTRAL
530
539
 
@@ -554,6 +563,24 @@ Supported:
554
563
 
555
564
  > The models mentioned above are subject to change.
556
565
 
566
+ ### Cohere
567
+
568
+ ##### COHERE_KEY
569
+
570
+ The Cohere API key. If you don't have one, please sign up and get the API key in [Cohere Dashboard](https://dashboard.cohere.com/).
571
+
572
+ ##### COHERE_MODEL
573
+
574
+ Default: `command`
575
+
576
+ Supported:
577
+ - `command`
578
+ - `command-nightly`
579
+ - `command-light`
580
+ - `command-light-nightly`
581
+
582
+ > The models mentioned above are subject to change.
583
+
557
584
  ### HuggingFace Chat
558
585
 
559
586
  ##### HUGGING_COOKIE
package/dist/cli.mjs CHANGED
@@ -1,43 +1,43 @@
1
1
  #!/usr/bin/env node
2
- import ke from"tty";import{createRequire as yn}from"module";import{Buffer as wn}from"node:buffer";import ee from"node:path";import Rt from"node:child_process";import G from"node:process";import bn from"child_process";import H from"path";import Y from"fs";import An from"node:url";import vn,{constants as kt}from"node:os";import jt from"assert";import Gt from"events";import $n from"buffer";import je from"stream";import Ht from"util";import Ge from"inquirer";import He from"ora";import g from"chalk";import{of as U,from as _,filter as Ut,map as M,tap as Kt,concatMap as L,catchError as R,scan as qt,switchMap as Bn,mergeMap as xn,BehaviorSubject as zt,ReplaySubject as On,lastValueFrom as Sn,toArray as In}from"rxjs";import Mn from"@anthropic-ai/sdk";import{fromPromise as K}from"rxjs/internal/observable/innerFrom";import Ue from"os";import{xxh64 as Pn}from"@pacote/xxhash";import _n from"http";import Nn from"https";import"@dqbd/tiktoken";import Tn from"net";import Ln from"tls";import Rn,{fileURLToPath as kn,pathToFileURL as jn}from"url";import{FormData as Gn,Blob as Hn}from"formdata-node";import x from"fs/promises";import Un from"axios";import{GoogleGenerativeAI as Kn}from"@google/generative-ai";import{Ollama as qn}from"ollama";import ye from"readline";import zn from"figlet";import Yn from"inquirer-reactive-list-prompt";const Wn="known-flag",Vn="unknown-flag",Xn="argument",{stringify:ce}=JSON,Jn=/\B([A-Z])/g,Zn=e=>e.replace(Jn,"-$1").toLowerCase(),{hasOwnProperty:Qn}=Object.prototype,le=(e,t)=>Qn.call(e,t),eo=e=>Array.isArray(e),Yt=e=>typeof e=="function"?[e,!1]:eo(e)?[e[0],!0]:Yt(e.type),to=(e,t)=>e===Boolean?t!=="false":t,ro=(e,t)=>typeof t=="boolean"?t:e===Number&&t===""?Number.NaN:e(t),no=/[\s.:=]/,oo=e=>{const t=`Flag name ${ce(e)}`;if(e.length===0)throw new Error(`${t} cannot be empty`);if(e.length===1)throw new Error(`${t} must be longer than a character`);const r=e.match(no);if(r)throw new Error(`${t} cannot contain ${ce(r?.[0])}`)},so=e=>{const t={},r=(n,s)=>{if(le(t,n))throw new Error(`Duplicate flags named ${ce(n)}`);t[n]=s};for(const n in e){if(!le(e,n))continue;oo(n);const s=e[n],o=[[],...Yt(s),s];r(n,o);const u=Zn(n);if(n!==u&&r(u,o),"alias"in s&&typeof s.alias=="string"){const{alias:a}=s,i=`Flag alias ${ce(a)} for flag ${ce(n)}`;if(a.length===0)throw new Error(`${i} cannot be empty`);if(a.length>1)throw new Error(`${i} must be a single character`);r(a,o)}}return t},uo=(e,t)=>{const r={};for(const n in e){if(!le(e,n))continue;const[s,,o,u]=t[n];if(s.length===0&&"default"in u){let{default:a}=u;typeof a=="function"&&(a=a()),r[n]=a}else r[n]=o?s:s.pop()}return r},we="--",io=/[.:=]/,ao=/^-{1,2}\w/,Do=e=>{if(!ao.test(e))return;const t=!e.startsWith(we);let r=e.slice(t?1:2),n;const s=r.match(io);if(s){const{index:o}=s;n=r.slice(o+1),r=r.slice(0,o)}return[r,n,t]},co=(e,{onFlag:t,onArgument:r})=>{let n;const s=(o,u)=>{if(typeof n!="function")return!0;n(o,u),n=void 0};for(let o=0;o<e.length;o+=1){const u=e[o];if(u===we){s();const i=e.slice(o+1);r?.(i,[o],!0);break}const a=Do(u);if(a){if(s(),!t)continue;const[i,l,f]=a;if(f)for(let D=0;D<i.length;D+=1){s();const c=D===i.length-1;n=t(i[D],c?l:void 0,[o,D+1,c])}else n=t(i,l,[o])}else s(u,[o])&&r?.([u],[o])}s()},lo=(e,t)=>{for(const[r,n,s]of t.reverse()){if(n){const o=e[r];let u=o.slice(0,n);if(s||(u+=o.slice(n+1)),u!=="-"){e[r]=u;continue}}e.splice(r,1)}},fo=(e,t=process.argv.slice(2),{ignore:r}={})=>{const n=[],s=so(e),o={},u=[];return u[we]=[],co(t,{onFlag(a,i,l){const f=le(s,a);if(!r?.(f?Wn:Vn,a,i)){if(f){const[D,c]=s[a],p=to(c,i),d=(h,m)=>{n.push(l),m&&n.push(m),D.push(ro(c,h||""))};return p===void 0?d:d(p)}le(o,a)||(o[a]=[]),o[a].push(i===void 0?!0:i),n.push(l)}},onArgument(a,i,l){r?.(Xn,t[i[0]])||(u.push(...a),l?(u[we]=a,t.splice(i[0])):n.push(i))}}),lo(t,n),{flags:uo(e,s),unknownFlags:o,_:u}};var po=Object.create,be=Object.defineProperty,mo=Object.defineProperties,ho=Object.getOwnPropertyDescriptor,go=Object.getOwnPropertyDescriptors,Co=Object.getOwnPropertyNames,Wt=Object.getOwnPropertySymbols,Fo=Object.getPrototypeOf,Vt=Object.prototype.hasOwnProperty,Eo=Object.prototype.propertyIsEnumerable,Xt=(e,t,r)=>t in e?be(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,Ae=(e,t)=>{for(var r in t||(t={}))Vt.call(t,r)&&Xt(e,r,t[r]);if(Wt)for(var r of Wt(t))Eo.call(t,r)&&Xt(e,r,t[r]);return e},Ke=(e,t)=>mo(e,go(t)),yo=e=>be(e,"__esModule",{value:!0}),wo=(e,t)=>()=>(e&&(t=e(e=0)),t),bo=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),Ao=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of Co(t))!Vt.call(e,s)&&(r||s!=="default")&&be(e,s,{get:()=>t[s],enumerable:!(n=ho(t,s))||n.enumerable});return e},vo=(e,t)=>Ao(yo(be(e!=null?po(Fo(e)):{},"default",!t&&e&&e.__esModule?{get:()=>e.default,enumerable:!0}:{value:e,enumerable:!0})),e),B=wo(()=>{}),$o=bo((e,t)=>{B(),t.exports=function(){return/\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62(?:\uDB40\uDC77\uDB40\uDC6C\uDB40\uDC73|\uDB40\uDC73\uDB40\uDC63\uDB40\uDC74|\uDB40\uDC65\uDB40\uDC6E\uDB40\uDC67)\uDB40\uDC7F|(?:\uD83E\uDDD1\uD83C\uDFFF\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFE])|(?:\uD83E\uDDD1\uD83C\uDFFE\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFD\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFC\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFB\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFC-\uDFFF])|\uD83D\uDC68(?:\uD83C\uDFFB(?:\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF]))|\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFC-\uDFFF])|[\u2695\u2696\u2708]\uFE0F|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))?|(?:\uD83C[\uDFFC-\uDFFF])\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF]))|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83D\uDC68|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFE])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])\uFE0F|\u200D(?:(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D[\uDC66\uDC67])|\uD83D[\uDC66\uDC67])|\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC)?|(?:\uD83D\uDC69(?:\uD83C\uDFFB\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|(?:\uD83C[\uDFFC-\uDFFF])\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69]))|\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1)(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC69(?:\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83E\uDDD1(?:\u200D(?:\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D[\uDC66\uDC67])|\uD83D\uDC69\u200D\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D\uDC41\uFE0F\u200D\uD83D\uDDE8|\uD83E\uDDD1(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|\uD83D\uDC69(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|\uD83D\uDE36\u200D\uD83C\uDF2B|\uD83C\uDFF3\uFE0F\u200D\u26A7|\uD83D\uDC3B\u200D\u2744|(?:(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF])\u200D[\u2640\u2642]|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|\uD83C\uDFF4\u200D\u2620|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])\u200D[\u2640\u2642]|[\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u2328\u23CF\u23ED-\u23EF\u23F1\u23F2\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB\u25FC\u2600-\u2604\u260E\u2611\u2618\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u2692\u2694-\u2697\u2699\u269B\u269C\u26A0\u26A7\u26B0\u26B1\u26C8\u26CF\u26D1\u26D3\u26E9\u26F0\u26F1\u26F4\u26F7\u26F8\u2702\u2708\u2709\u270F\u2712\u2714\u2716\u271D\u2721\u2733\u2734\u2744\u2747\u2763\u27A1\u2934\u2935\u2B05-\u2B07\u3030\u303D\u3297\u3299]|\uD83C[\uDD70\uDD71\uDD7E\uDD7F\uDE02\uDE37\uDF21\uDF24-\uDF2C\uDF36\uDF7D\uDF96\uDF97\uDF99-\uDF9B\uDF9E\uDF9F\uDFCD\uDFCE\uDFD4-\uDFDF\uDFF5\uDFF7]|\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|\uD83C\uDFF3\uFE0F\u200D\uD83C\uDF08|\uD83D\uDC69\u200D\uD83D\uDC67|\uD83D\uDC69\u200D\uD83D\uDC66|\uD83D\uDE35\u200D\uD83D\uDCAB|\uD83D\uDE2E\u200D\uD83D\uDCA8|\uD83D\uDC15\u200D\uD83E\uDDBA|\uD83E\uDDD1(?:\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC|\uD83C\uDFFB)?|\uD83D\uDC69(?:\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC|\uD83C\uDFFB)?|\uD83C\uDDFD\uD83C\uDDF0|\uD83C\uDDF6\uD83C\uDDE6|\uD83C\uDDF4\uD83C\uDDF2|\uD83D\uDC08\u200D\u2B1B|\u2764\uFE0F\u200D(?:\uD83D\uDD25|\uD83E\uDE79)|\uD83D\uDC41\uFE0F|\uD83C\uDFF3\uFE0F|\uD83C\uDDFF(?:\uD83C[\uDDE6\uDDF2\uDDFC])|\uD83C\uDDFE(?:\uD83C[\uDDEA\uDDF9])|\uD83C\uDDFC(?:\uD83C[\uDDEB\uDDF8])|\uD83C\uDDFB(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA])|\uD83C\uDDFA(?:\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF])|\uD83C\uDDF9(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF])|\uD83C\uDDF8(?:\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF])|\uD83C\uDDF7(?:\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC])|\uD83C\uDDF5(?:\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE])|\uD83C\uDDF3(?:\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF])|\uD83C\uDDF2(?:\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF])|\uD83C\uDDF1(?:\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE])|\uD83C\uDDF0(?:\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF])|\uD83C\uDDEF(?:\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5])|\uD83C\uDDEE(?:\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9])|\uD83C\uDDED(?:\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA])|\uD83C\uDDEC(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE])|\uD83C\uDDEB(?:\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7])|\uD83C\uDDEA(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA])|\uD83C\uDDE9(?:\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF])|\uD83C\uDDE8(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF])|\uD83C\uDDE7(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF])|\uD83C\uDDE6(?:\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF])|[#\*0-9]\uFE0F\u20E3|\u2764\uFE0F|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])|\uD83C\uDFF4|(?:[\u270A\u270B]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\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]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5])(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u261D\u270C\u270D]|\uD83D[\uDD74\uDD90])(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])|[\u270A\u270B]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC08\uDC15\uDC3B\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE2E\uDE35\uDE36\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5]|\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD]|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF]|[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF84\uDF86-\uDF93\uDFA0-\uDFC1\uDFC5\uDFC6\uDFC8\uDFC9\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC07\uDC09-\uDC14\uDC16-\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-\uDE44\uDE48-\uDE4A\uDE80-\uDEA2\uDEA4-\uDEB3\uDEB7-\uDEBF\uDEC1-\uDEC5\uDED0-\uDED2\uDED5-\uDED7\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0D\uDD0E\uDD10-\uDD17\uDD1D\uDD20-\uDD25\uDD27-\uDD2F\uDD3A\uDD3F-\uDD45\uDD47-\uDD76\uDD78\uDD7A-\uDDB4\uDDB7\uDDBA\uDDBC-\uDDCB\uDDD0\uDDE0-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6]|(?:[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u270A\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF93\uDFA0-\uDFCA\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF4\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC3E\uDC40\uDC42-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDD7A\uDD95\uDD96\uDDA4\uDDFB-\uDE4F\uDE80-\uDEC5\uDECC\uDED0-\uDED2\uDED5-\uDED7\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0C-\uDD3A\uDD3C-\uDD45\uDD47-\uDD78\uDD7A-\uDDCB\uDDCD-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6])|(?:[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26A7\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]|\uD83C[\uDC04\uDCCF\uDD70\uDD71\uDD7E\uDD7F\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE02\uDE1A\uDE2F\uDE32-\uDE3A\uDE50\uDE51\uDF00-\uDF21\uDF24-\uDF93\uDF96\uDF97\uDF99-\uDF9B\uDF9E-\uDFF0\uDFF3-\uDFF5\uDFF7-\uDFFF]|\uD83D[\uDC00-\uDCFD\uDCFF-\uDD3D\uDD49-\uDD4E\uDD50-\uDD67\uDD6F\uDD70\uDD73-\uDD7A\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA4\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED2\uDED5-\uDED7\uDEE0-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0C-\uDD3A\uDD3C-\uDD45\uDD47-\uDD78\uDD7A-\uDDCB\uDDCD-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6])\uFE0F|(?:[\u261D\u26F9\u270A-\u270D]|\uD83C[\uDF85\uDFC2-\uDFC4\uDFC7\uDFCA-\uDFCC]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66-\uDC78\uDC7C\uDC81-\uDC83\uDC85-\uDC87\uDC8F\uDC91\uDCAA\uDD74\uDD75\uDD7A\uDD90\uDD95\uDD96\uDE45-\uDE47\uDE4B-\uDE4F\uDEA3\uDEB4-\uDEB6\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1F\uDD26\uDD30-\uDD39\uDD3C-\uDD3E\uDD77\uDDB5\uDDB6\uDDB8\uDDB9\uDDBB\uDDCD-\uDDCF\uDDD1-\uDDDD])/g}});B(),B(),B();var Bo=e=>{var t,r,n;let s=(t=process.stdout.columns)!=null?t:Number.POSITIVE_INFINITY;return typeof e=="function"&&(e=e(s)),e||(e={}),Array.isArray(e)?{columns:e,stdoutColumns:s}:{columns:(r=e.columns)!=null?r:[],stdoutColumns:(n=e.stdoutColumns)!=null?n:s}};B(),B(),B(),B(),B();function xo({onlyFirst:e=!1}={}){let t=["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)","(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))"].join("|");return new RegExp(t,e?void 0:"g")}function Jt(e){if(typeof e!="string")throw new TypeError(`Expected a \`string\`, got \`${typeof e}\``);return e.replace(xo(),"")}B();function Oo(e){return Number.isInteger(e)?e>=4352&&(e<=4447||e===9001||e===9002||11904<=e&&e<=12871&&e!==12351||12880<=e&&e<=19903||19968<=e&&e<=42182||43360<=e&&e<=43388||44032<=e&&e<=55203||63744<=e&&e<=64255||65040<=e&&e<=65049||65072<=e&&e<=65131||65281<=e&&e<=65376||65504<=e&&e<=65510||110592<=e&&e<=110593||127488<=e&&e<=127569||131072<=e&&e<=262141):!1}var So=vo($o(),1);function W(e){if(typeof e!="string"||e.length===0||(e=Jt(e),e.length===0))return 0;e=e.replace((0,So.default)()," ");let t=0;for(let r=0;r<e.length;r++){let n=e.codePointAt(r);n<=31||n>=127&&n<=159||n>=768&&n<=879||(n>65535&&r++,t+=Oo(n)?2:1)}return t}var Zt=e=>Math.max(...e.split(`
3
- `).map(W)),Io=e=>{let t=[];for(let r of e){let{length:n}=r,s=n-t.length;for(let o=0;o<s;o+=1)t.push(0);for(let o=0;o<n;o+=1){let u=Zt(r[o]);u>t[o]&&(t[o]=u)}}return t};B();var Qt=/^\d+%$/,er={width:"auto",align:"left",contentWidth:0,paddingLeft:0,paddingRight:0,paddingTop:0,paddingBottom:0,horizontalPadding:0,paddingLeftString:"",paddingRightString:""},Mo=(e,t)=>{var r;let n=[];for(let s=0;s<e.length;s+=1){let o=(r=t[s])!=null?r:"auto";if(typeof o=="number"||o==="auto"||o==="content-width"||typeof o=="string"&&Qt.test(o)){n.push(Ke(Ae({},er),{width:o,contentWidth:e[s]}));continue}if(o&&typeof o=="object"){let u=Ke(Ae(Ae({},er),o),{contentWidth:e[s]});u.horizontalPadding=u.paddingLeft+u.paddingRight,n.push(u);continue}throw new Error(`Invalid column width: ${JSON.stringify(o)}`)}return n};function Po(e,t){for(let r of e){let{width:n}=r;if(n==="content-width"&&(r.width=r.contentWidth),n==="auto"){let i=Math.min(20,r.contentWidth);r.width=i,r.autoOverflow=r.contentWidth-i}if(typeof n=="string"&&Qt.test(n)){let i=Number.parseFloat(n.slice(0,-1))/100;r.width=Math.floor(t*i)-(r.paddingLeft+r.paddingRight)}let{horizontalPadding:s}=r,o=1,u=o+s;if(u>=t){let i=u-t,l=Math.ceil(r.paddingLeft/s*i),f=i-l;r.paddingLeft-=l,r.paddingRight-=f,r.horizontalPadding=r.paddingLeft+r.paddingRight}r.paddingLeftString=r.paddingLeft?" ".repeat(r.paddingLeft):"",r.paddingRightString=r.paddingRight?" ".repeat(r.paddingRight):"";let a=t-r.horizontalPadding;r.width=Math.max(Math.min(r.width,a),o)}}var tr=()=>Object.assign([],{columns:0});function _o(e,t){let r=[tr()],[n]=r;for(let s of e){let o=s.width+s.horizontalPadding;n.columns+o>t&&(n=tr(),r.push(n)),n.push(s),n.columns+=o}for(let s of r){let o=s.reduce((c,p)=>c+p.width+p.horizontalPadding,0),u=t-o;if(u===0)continue;let a=s.filter(c=>"autoOverflow"in c),i=a.filter(c=>c.autoOverflow>0),l=i.reduce((c,p)=>c+p.autoOverflow,0),f=Math.min(l,u);for(let c of i){let p=Math.floor(c.autoOverflow/l*f);c.width+=p,u-=p}let D=Math.floor(u/a.length);for(let c=0;c<a.length;c+=1){let p=a[c];c===a.length-1?p.width+=u:p.width+=D,u-=D}}return r}function No(e,t,r){let n=Mo(r,t);return Po(n,e),_o(n,e)}B(),B(),B();var qe=10,rr=(e=0)=>t=>`\x1B[${t+e}m`,nr=(e=0)=>t=>`\x1B[${38+e};5;${t}m`,or=(e=0)=>(t,r,n)=>`\x1B[${38+e};2;${t};${r};${n}m`;function To(){let e=new Map,t={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],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],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}};t.color.gray=t.color.blackBright,t.bgColor.bgGray=t.bgColor.bgBlackBright,t.color.grey=t.color.blackBright,t.bgColor.bgGrey=t.bgColor.bgBlackBright;for(let[r,n]of Object.entries(t)){for(let[s,o]of Object.entries(n))t[s]={open:`\x1B[${o[0]}m`,close:`\x1B[${o[1]}m`},n[s]=t[s],e.set(o[0],o[1]);Object.defineProperty(t,r,{value:n,enumerable:!1})}return Object.defineProperty(t,"codes",{value:e,enumerable:!1}),t.color.close="\x1B[39m",t.bgColor.close="\x1B[49m",t.color.ansi=rr(),t.color.ansi256=nr(),t.color.ansi16m=or(),t.bgColor.ansi=rr(qe),t.bgColor.ansi256=nr(qe),t.bgColor.ansi16m=or(qe),Object.defineProperties(t,{rgbToAnsi256:{value:(r,n,s)=>r===n&&n===s?r<8?16:r>248?231:Math.round((r-8)/247*24)+232:16+36*Math.round(r/255*5)+6*Math.round(n/255*5)+Math.round(s/255*5),enumerable:!1},hexToRgb:{value:r=>{let n=/(?<colorString>[a-f\d]{6}|[a-f\d]{3})/i.exec(r.toString(16));if(!n)return[0,0,0];let{colorString:s}=n.groups;s.length===3&&(s=s.split("").map(u=>u+u).join(""));let o=Number.parseInt(s,16);return[o>>16&255,o>>8&255,o&255]},enumerable:!1},hexToAnsi256:{value:r=>t.rgbToAnsi256(...t.hexToRgb(r)),enumerable:!1},ansi256ToAnsi:{value:r=>{if(r<8)return 30+r;if(r<16)return 90+(r-8);let n,s,o;if(r>=232)n=((r-232)*10+8)/255,s=n,o=n;else{r-=16;let i=r%36;n=Math.floor(r/36)/5,s=Math.floor(i/6)/5,o=i%6/5}let u=Math.max(n,s,o)*2;if(u===0)return 30;let a=30+(Math.round(o)<<2|Math.round(s)<<1|Math.round(n));return u===2&&(a+=60),a},enumerable:!1},rgbToAnsi:{value:(r,n,s)=>t.ansi256ToAnsi(t.rgbToAnsi256(r,n,s)),enumerable:!1},hexToAnsi:{value:r=>t.ansi256ToAnsi(t.hexToAnsi256(r)),enumerable:!1}}),t}var Lo=To(),Ro=Lo,ve=new Set(["\x1B","\x9B"]),ko=39,ze="\x07",sr="[",jo="]",ur="m",Ye=`${jo}8;;`,ir=e=>`${ve.values().next().value}${sr}${e}${ur}`,ar=e=>`${ve.values().next().value}${Ye}${e}${ze}`,Go=e=>e.split(" ").map(t=>W(t)),We=(e,t,r)=>{let n=[...t],s=!1,o=!1,u=W(Jt(e[e.length-1]));for(let[a,i]of n.entries()){let l=W(i);if(u+l<=r?e[e.length-1]+=i:(e.push(i),u=0),ve.has(i)&&(s=!0,o=n.slice(a+1).join("").startsWith(Ye)),s){o?i===ze&&(s=!1,o=!1):i===ur&&(s=!1);continue}u+=l,u===r&&a<n.length-1&&(e.push(""),u=0)}!u&&e[e.length-1].length>0&&e.length>1&&(e[e.length-2]+=e.pop())},Ho=e=>{let t=e.split(" "),r=t.length;for(;r>0&&!(W(t[r-1])>0);)r--;return r===t.length?e:t.slice(0,r).join(" ")+t.slice(r).join("")},Uo=(e,t,r={})=>{if(r.trim!==!1&&e.trim()==="")return"";let n="",s,o,u=Go(e),a=[""];for(let[l,f]of e.split(" ").entries()){r.trim!==!1&&(a[a.length-1]=a[a.length-1].trimStart());let D=W(a[a.length-1]);if(l!==0&&(D>=t&&(r.wordWrap===!1||r.trim===!1)&&(a.push(""),D=0),(D>0||r.trim===!1)&&(a[a.length-1]+=" ",D++)),r.hard&&u[l]>t){let c=t-D,p=1+Math.floor((u[l]-c-1)/t);Math.floor((u[l]-1)/t)<p&&a.push(""),We(a,f,t);continue}if(D+u[l]>t&&D>0&&u[l]>0){if(r.wordWrap===!1&&D<t){We(a,f,t);continue}a.push("")}if(D+u[l]>t&&r.wordWrap===!1){We(a,f,t);continue}a[a.length-1]+=f}r.trim!==!1&&(a=a.map(l=>Ho(l)));let i=[...a.join(`
4
- `)];for(let[l,f]of i.entries()){if(n+=f,ve.has(f)){let{groups:c}=new RegExp(`(?:\\${sr}(?<code>\\d+)m|\\${Ye}(?<uri>.*)${ze})`).exec(i.slice(l).join(""))||{groups:{}};if(c.code!==void 0){let p=Number.parseFloat(c.code);s=p===ko?void 0:p}else c.uri!==void 0&&(o=c.uri.length===0?void 0:c.uri)}let D=Ro.codes.get(Number(s));i[l+1]===`
5
- `?(o&&(n+=ar("")),s&&D&&(n+=ir(D))):f===`
6
- `&&(s&&D&&(n+=ir(s)),o&&(n+=ar(o)))}return n};function Ko(e,t,r){return String(e).normalize().replace(/\r\n/g,`
2
+ import Re from"tty";import{createRequire as wn}from"module";import{Buffer as bn}from"node:buffer";import ee from"node:path";import Lt from"node:child_process";import K from"node:process";import An from"child_process";import q from"path";import V from"fs";import vn from"node:url";import $n,{constants as Rt}from"node:os";import kt from"assert";import jt from"events";import Bn from"buffer";import ke from"stream";import Gt from"util";import je from"inquirer";import Ge from"ora";import g from"chalk";import{of as j,from as P,filter as Ht,map as I,tap as Ut,concatMap as T,catchError as L,scan as Kt,switchMap as xn,mergeMap as On,BehaviorSubject as qt,ReplaySubject as Sn,lastValueFrom as In,toArray as Mn}from"rxjs";import Pn from"@anthropic-ai/sdk";import{fromPromise as G}from"rxjs/internal/observable/innerFrom";import He from"os";import{xxh64 as _n}from"@pacote/xxhash";import Nn from"http";import Tn from"https";import"@dqbd/tiktoken";import Ln from"net";import Rn from"tls";import kn,{fileURLToPath as jn,pathToFileURL as Gn}from"url";import{FormData as Hn,Blob as Un}from"formdata-node";import x from"fs/promises";import Kn from"axios";import{CohereClient as qn,CohereTimeoutError as zn}from"cohere-ai";import{GoogleGenerativeAI as Yn}from"@google/generative-ai";import{Ollama as Wn}from"ollama";import ye from"readline";import Vn from"figlet";import Xn from"inquirer-reactive-list-prompt";const Jn="known-flag",Zn="unknown-flag",Qn="argument",{stringify:De}=JSON,eo=/\B([A-Z])/g,to=e=>e.replace(eo,"-$1").toLowerCase(),{hasOwnProperty:ro}=Object.prototype,le=(e,t)=>ro.call(e,t),no=e=>Array.isArray(e),zt=e=>typeof e=="function"?[e,!1]:no(e)?[e[0],!0]:zt(e.type),oo=(e,t)=>e===Boolean?t!=="false":t,so=(e,t)=>typeof t=="boolean"?t:e===Number&&t===""?Number.NaN:e(t),uo=/[\s.:=]/,io=e=>{const t=`Flag name ${De(e)}`;if(e.length===0)throw new Error(`${t} cannot be empty`);if(e.length===1)throw new Error(`${t} must be longer than a character`);const r=e.match(uo);if(r)throw new Error(`${t} cannot contain ${De(r?.[0])}`)},ao=e=>{const t={},r=(n,s)=>{if(le(t,n))throw new Error(`Duplicate flags named ${De(n)}`);t[n]=s};for(const n in e){if(!le(e,n))continue;io(n);const s=e[n],o=[[],...zt(s),s];r(n,o);const u=to(n);if(n!==u&&r(u,o),"alias"in s&&typeof s.alias=="string"){const{alias:a}=s,i=`Flag alias ${De(a)} for flag ${De(n)}`;if(a.length===0)throw new Error(`${i} cannot be empty`);if(a.length>1)throw new Error(`${i} must be a single character`);r(a,o)}}return t},co=(e,t)=>{const r={};for(const n in e){if(!le(e,n))continue;const[s,,o,u]=t[n];if(s.length===0&&"default"in u){let{default:a}=u;typeof a=="function"&&(a=a()),r[n]=a}else r[n]=o?s:s.pop()}return r},we="--",Do=/[.:=]/,lo=/^-{1,2}\w/,fo=e=>{if(!lo.test(e))return;const t=!e.startsWith(we);let r=e.slice(t?1:2),n;const s=r.match(Do);if(s){const{index:o}=s;n=r.slice(o+1),r=r.slice(0,o)}return[r,n,t]},po=(e,{onFlag:t,onArgument:r})=>{let n;const s=(o,u)=>{if(typeof n!="function")return!0;n(o,u),n=void 0};for(let o=0;o<e.length;o+=1){const u=e[o];if(u===we){s();const i=e.slice(o+1);r?.(i,[o],!0);break}const a=fo(u);if(a){if(s(),!t)continue;const[i,l,f]=a;if(f)for(let c=0;c<i.length;c+=1){s();const D=c===i.length-1;n=t(i[c],D?l:void 0,[o,c+1,D])}else n=t(i,l,[o])}else s(u,[o])&&r?.([u],[o])}s()},mo=(e,t)=>{for(const[r,n,s]of t.reverse()){if(n){const o=e[r];let u=o.slice(0,n);if(s||(u+=o.slice(n+1)),u!=="-"){e[r]=u;continue}}e.splice(r,1)}},ho=(e,t=process.argv.slice(2),{ignore:r}={})=>{const n=[],s=ao(e),o={},u=[];return u[we]=[],po(t,{onFlag(a,i,l){const f=le(s,a);if(!r?.(f?Jn:Zn,a,i)){if(f){const[c,D]=s[a],p=oo(D,i),d=(h,m)=>{n.push(l),m&&n.push(m),c.push(so(D,h||""))};return p===void 0?d:d(p)}le(o,a)||(o[a]=[]),o[a].push(i===void 0?!0:i),n.push(l)}},onArgument(a,i,l){r?.(Qn,t[i[0]])||(u.push(...a),l?(u[we]=a,t.splice(i[0])):n.push(i))}}),mo(t,n),{flags:co(e,s),unknownFlags:o,_:u}};var go=Object.create,be=Object.defineProperty,Co=Object.defineProperties,Eo=Object.getOwnPropertyDescriptor,Fo=Object.getOwnPropertyDescriptors,yo=Object.getOwnPropertyNames,Yt=Object.getOwnPropertySymbols,wo=Object.getPrototypeOf,Wt=Object.prototype.hasOwnProperty,bo=Object.prototype.propertyIsEnumerable,Vt=(e,t,r)=>t in e?be(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,Ae=(e,t)=>{for(var r in t||(t={}))Wt.call(t,r)&&Vt(e,r,t[r]);if(Yt)for(var r of Yt(t))bo.call(t,r)&&Vt(e,r,t[r]);return e},Ue=(e,t)=>Co(e,Fo(t)),Ao=e=>be(e,"__esModule",{value:!0}),vo=(e,t)=>()=>(e&&(t=e(e=0)),t),$o=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),Bo=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of yo(t))!Wt.call(e,s)&&(r||s!=="default")&&be(e,s,{get:()=>t[s],enumerable:!(n=Eo(t,s))||n.enumerable});return e},xo=(e,t)=>Bo(Ao(be(e!=null?go(wo(e)):{},"default",!t&&e&&e.__esModule?{get:()=>e.default,enumerable:!0}:{value:e,enumerable:!0})),e),B=vo(()=>{}),Oo=$o((e,t)=>{B(),t.exports=function(){return/\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62(?:\uDB40\uDC77\uDB40\uDC6C\uDB40\uDC73|\uDB40\uDC73\uDB40\uDC63\uDB40\uDC74|\uDB40\uDC65\uDB40\uDC6E\uDB40\uDC67)\uDB40\uDC7F|(?:\uD83E\uDDD1\uD83C\uDFFF\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFE])|(?:\uD83E\uDDD1\uD83C\uDFFE\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFD\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFC\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFB\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFC-\uDFFF])|\uD83D\uDC68(?:\uD83C\uDFFB(?:\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF]))|\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFC-\uDFFF])|[\u2695\u2696\u2708]\uFE0F|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))?|(?:\uD83C[\uDFFC-\uDFFF])\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF]))|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83D\uDC68|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFE])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])\uFE0F|\u200D(?:(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D[\uDC66\uDC67])|\uD83D[\uDC66\uDC67])|\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC)?|(?:\uD83D\uDC69(?:\uD83C\uDFFB\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|(?:\uD83C[\uDFFC-\uDFFF])\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69]))|\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1)(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC69(?:\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83E\uDDD1(?:\u200D(?:\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D[\uDC66\uDC67])|\uD83D\uDC69\u200D\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D\uDC41\uFE0F\u200D\uD83D\uDDE8|\uD83E\uDDD1(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|\uD83D\uDC69(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|\uD83D\uDE36\u200D\uD83C\uDF2B|\uD83C\uDFF3\uFE0F\u200D\u26A7|\uD83D\uDC3B\u200D\u2744|(?:(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF])\u200D[\u2640\u2642]|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|\uD83C\uDFF4\u200D\u2620|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])\u200D[\u2640\u2642]|[\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u2328\u23CF\u23ED-\u23EF\u23F1\u23F2\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB\u25FC\u2600-\u2604\u260E\u2611\u2618\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u2692\u2694-\u2697\u2699\u269B\u269C\u26A0\u26A7\u26B0\u26B1\u26C8\u26CF\u26D1\u26D3\u26E9\u26F0\u26F1\u26F4\u26F7\u26F8\u2702\u2708\u2709\u270F\u2712\u2714\u2716\u271D\u2721\u2733\u2734\u2744\u2747\u2763\u27A1\u2934\u2935\u2B05-\u2B07\u3030\u303D\u3297\u3299]|\uD83C[\uDD70\uDD71\uDD7E\uDD7F\uDE02\uDE37\uDF21\uDF24-\uDF2C\uDF36\uDF7D\uDF96\uDF97\uDF99-\uDF9B\uDF9E\uDF9F\uDFCD\uDFCE\uDFD4-\uDFDF\uDFF5\uDFF7]|\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|\uD83C\uDFF3\uFE0F\u200D\uD83C\uDF08|\uD83D\uDC69\u200D\uD83D\uDC67|\uD83D\uDC69\u200D\uD83D\uDC66|\uD83D\uDE35\u200D\uD83D\uDCAB|\uD83D\uDE2E\u200D\uD83D\uDCA8|\uD83D\uDC15\u200D\uD83E\uDDBA|\uD83E\uDDD1(?:\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC|\uD83C\uDFFB)?|\uD83D\uDC69(?:\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC|\uD83C\uDFFB)?|\uD83C\uDDFD\uD83C\uDDF0|\uD83C\uDDF6\uD83C\uDDE6|\uD83C\uDDF4\uD83C\uDDF2|\uD83D\uDC08\u200D\u2B1B|\u2764\uFE0F\u200D(?:\uD83D\uDD25|\uD83E\uDE79)|\uD83D\uDC41\uFE0F|\uD83C\uDFF3\uFE0F|\uD83C\uDDFF(?:\uD83C[\uDDE6\uDDF2\uDDFC])|\uD83C\uDDFE(?:\uD83C[\uDDEA\uDDF9])|\uD83C\uDDFC(?:\uD83C[\uDDEB\uDDF8])|\uD83C\uDDFB(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA])|\uD83C\uDDFA(?:\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF])|\uD83C\uDDF9(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF])|\uD83C\uDDF8(?:\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF])|\uD83C\uDDF7(?:\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC])|\uD83C\uDDF5(?:\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE])|\uD83C\uDDF3(?:\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF])|\uD83C\uDDF2(?:\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF])|\uD83C\uDDF1(?:\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE])|\uD83C\uDDF0(?:\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF])|\uD83C\uDDEF(?:\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5])|\uD83C\uDDEE(?:\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9])|\uD83C\uDDED(?:\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA])|\uD83C\uDDEC(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE])|\uD83C\uDDEB(?:\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7])|\uD83C\uDDEA(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA])|\uD83C\uDDE9(?:\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF])|\uD83C\uDDE8(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF])|\uD83C\uDDE7(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF])|\uD83C\uDDE6(?:\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF])|[#\*0-9]\uFE0F\u20E3|\u2764\uFE0F|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])|\uD83C\uDFF4|(?:[\u270A\u270B]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\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]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5])(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u261D\u270C\u270D]|\uD83D[\uDD74\uDD90])(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])|[\u270A\u270B]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC08\uDC15\uDC3B\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE2E\uDE35\uDE36\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5]|\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD]|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF]|[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF84\uDF86-\uDF93\uDFA0-\uDFC1\uDFC5\uDFC6\uDFC8\uDFC9\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC07\uDC09-\uDC14\uDC16-\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-\uDE44\uDE48-\uDE4A\uDE80-\uDEA2\uDEA4-\uDEB3\uDEB7-\uDEBF\uDEC1-\uDEC5\uDED0-\uDED2\uDED5-\uDED7\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0D\uDD0E\uDD10-\uDD17\uDD1D\uDD20-\uDD25\uDD27-\uDD2F\uDD3A\uDD3F-\uDD45\uDD47-\uDD76\uDD78\uDD7A-\uDDB4\uDDB7\uDDBA\uDDBC-\uDDCB\uDDD0\uDDE0-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6]|(?:[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u270A\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF93\uDFA0-\uDFCA\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF4\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC3E\uDC40\uDC42-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDD7A\uDD95\uDD96\uDDA4\uDDFB-\uDE4F\uDE80-\uDEC5\uDECC\uDED0-\uDED2\uDED5-\uDED7\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0C-\uDD3A\uDD3C-\uDD45\uDD47-\uDD78\uDD7A-\uDDCB\uDDCD-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6])|(?:[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26A7\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]|\uD83C[\uDC04\uDCCF\uDD70\uDD71\uDD7E\uDD7F\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE02\uDE1A\uDE2F\uDE32-\uDE3A\uDE50\uDE51\uDF00-\uDF21\uDF24-\uDF93\uDF96\uDF97\uDF99-\uDF9B\uDF9E-\uDFF0\uDFF3-\uDFF5\uDFF7-\uDFFF]|\uD83D[\uDC00-\uDCFD\uDCFF-\uDD3D\uDD49-\uDD4E\uDD50-\uDD67\uDD6F\uDD70\uDD73-\uDD7A\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA4\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED2\uDED5-\uDED7\uDEE0-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0C-\uDD3A\uDD3C-\uDD45\uDD47-\uDD78\uDD7A-\uDDCB\uDDCD-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6])\uFE0F|(?:[\u261D\u26F9\u270A-\u270D]|\uD83C[\uDF85\uDFC2-\uDFC4\uDFC7\uDFCA-\uDFCC]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66-\uDC78\uDC7C\uDC81-\uDC83\uDC85-\uDC87\uDC8F\uDC91\uDCAA\uDD74\uDD75\uDD7A\uDD90\uDD95\uDD96\uDE45-\uDE47\uDE4B-\uDE4F\uDEA3\uDEB4-\uDEB6\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1F\uDD26\uDD30-\uDD39\uDD3C-\uDD3E\uDD77\uDDB5\uDDB6\uDDB8\uDDB9\uDDBB\uDDCD-\uDDCF\uDDD1-\uDDDD])/g}});B(),B(),B();var So=e=>{var t,r,n;let s=(t=process.stdout.columns)!=null?t:Number.POSITIVE_INFINITY;return typeof e=="function"&&(e=e(s)),e||(e={}),Array.isArray(e)?{columns:e,stdoutColumns:s}:{columns:(r=e.columns)!=null?r:[],stdoutColumns:(n=e.stdoutColumns)!=null?n:s}};B(),B(),B(),B(),B();function Io({onlyFirst:e=!1}={}){let t=["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)","(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))"].join("|");return new RegExp(t,e?void 0:"g")}function Xt(e){if(typeof e!="string")throw new TypeError(`Expected a \`string\`, got \`${typeof e}\``);return e.replace(Io(),"")}B();function Mo(e){return Number.isInteger(e)?e>=4352&&(e<=4447||e===9001||e===9002||11904<=e&&e<=12871&&e!==12351||12880<=e&&e<=19903||19968<=e&&e<=42182||43360<=e&&e<=43388||44032<=e&&e<=55203||63744<=e&&e<=64255||65040<=e&&e<=65049||65072<=e&&e<=65131||65281<=e&&e<=65376||65504<=e&&e<=65510||110592<=e&&e<=110593||127488<=e&&e<=127569||131072<=e&&e<=262141):!1}var Po=xo(Oo(),1);function X(e){if(typeof e!="string"||e.length===0||(e=Xt(e),e.length===0))return 0;e=e.replace((0,Po.default)()," ");let t=0;for(let r=0;r<e.length;r++){let n=e.codePointAt(r);n<=31||n>=127&&n<=159||n>=768&&n<=879||(n>65535&&r++,t+=Mo(n)?2:1)}return t}var Jt=e=>Math.max(...e.split(`
3
+ `).map(X)),_o=e=>{let t=[];for(let r of e){let{length:n}=r,s=n-t.length;for(let o=0;o<s;o+=1)t.push(0);for(let o=0;o<n;o+=1){let u=Jt(r[o]);u>t[o]&&(t[o]=u)}}return t};B();var Zt=/^\d+%$/,Qt={width:"auto",align:"left",contentWidth:0,paddingLeft:0,paddingRight:0,paddingTop:0,paddingBottom:0,horizontalPadding:0,paddingLeftString:"",paddingRightString:""},No=(e,t)=>{var r;let n=[];for(let s=0;s<e.length;s+=1){let o=(r=t[s])!=null?r:"auto";if(typeof o=="number"||o==="auto"||o==="content-width"||typeof o=="string"&&Zt.test(o)){n.push(Ue(Ae({},Qt),{width:o,contentWidth:e[s]}));continue}if(o&&typeof o=="object"){let u=Ue(Ae(Ae({},Qt),o),{contentWidth:e[s]});u.horizontalPadding=u.paddingLeft+u.paddingRight,n.push(u);continue}throw new Error(`Invalid column width: ${JSON.stringify(o)}`)}return n};function To(e,t){for(let r of e){let{width:n}=r;if(n==="content-width"&&(r.width=r.contentWidth),n==="auto"){let i=Math.min(20,r.contentWidth);r.width=i,r.autoOverflow=r.contentWidth-i}if(typeof n=="string"&&Zt.test(n)){let i=Number.parseFloat(n.slice(0,-1))/100;r.width=Math.floor(t*i)-(r.paddingLeft+r.paddingRight)}let{horizontalPadding:s}=r,o=1,u=o+s;if(u>=t){let i=u-t,l=Math.ceil(r.paddingLeft/s*i),f=i-l;r.paddingLeft-=l,r.paddingRight-=f,r.horizontalPadding=r.paddingLeft+r.paddingRight}r.paddingLeftString=r.paddingLeft?" ".repeat(r.paddingLeft):"",r.paddingRightString=r.paddingRight?" ".repeat(r.paddingRight):"";let a=t-r.horizontalPadding;r.width=Math.max(Math.min(r.width,a),o)}}var er=()=>Object.assign([],{columns:0});function Lo(e,t){let r=[er()],[n]=r;for(let s of e){let o=s.width+s.horizontalPadding;n.columns+o>t&&(n=er(),r.push(n)),n.push(s),n.columns+=o}for(let s of r){let o=s.reduce((D,p)=>D+p.width+p.horizontalPadding,0),u=t-o;if(u===0)continue;let a=s.filter(D=>"autoOverflow"in D),i=a.filter(D=>D.autoOverflow>0),l=i.reduce((D,p)=>D+p.autoOverflow,0),f=Math.min(l,u);for(let D of i){let p=Math.floor(D.autoOverflow/l*f);D.width+=p,u-=p}let c=Math.floor(u/a.length);for(let D=0;D<a.length;D+=1){let p=a[D];D===a.length-1?p.width+=u:p.width+=c,u-=c}}return r}function Ro(e,t,r){let n=No(r,t);return To(n,e),Lo(n,e)}B(),B(),B();var Ke=10,tr=(e=0)=>t=>`\x1B[${t+e}m`,rr=(e=0)=>t=>`\x1B[${38+e};5;${t}m`,nr=(e=0)=>(t,r,n)=>`\x1B[${38+e};2;${t};${r};${n}m`;function ko(){let e=new Map,t={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],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],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}};t.color.gray=t.color.blackBright,t.bgColor.bgGray=t.bgColor.bgBlackBright,t.color.grey=t.color.blackBright,t.bgColor.bgGrey=t.bgColor.bgBlackBright;for(let[r,n]of Object.entries(t)){for(let[s,o]of Object.entries(n))t[s]={open:`\x1B[${o[0]}m`,close:`\x1B[${o[1]}m`},n[s]=t[s],e.set(o[0],o[1]);Object.defineProperty(t,r,{value:n,enumerable:!1})}return Object.defineProperty(t,"codes",{value:e,enumerable:!1}),t.color.close="\x1B[39m",t.bgColor.close="\x1B[49m",t.color.ansi=tr(),t.color.ansi256=rr(),t.color.ansi16m=nr(),t.bgColor.ansi=tr(Ke),t.bgColor.ansi256=rr(Ke),t.bgColor.ansi16m=nr(Ke),Object.defineProperties(t,{rgbToAnsi256:{value:(r,n,s)=>r===n&&n===s?r<8?16:r>248?231:Math.round((r-8)/247*24)+232:16+36*Math.round(r/255*5)+6*Math.round(n/255*5)+Math.round(s/255*5),enumerable:!1},hexToRgb:{value:r=>{let n=/(?<colorString>[a-f\d]{6}|[a-f\d]{3})/i.exec(r.toString(16));if(!n)return[0,0,0];let{colorString:s}=n.groups;s.length===3&&(s=s.split("").map(u=>u+u).join(""));let o=Number.parseInt(s,16);return[o>>16&255,o>>8&255,o&255]},enumerable:!1},hexToAnsi256:{value:r=>t.rgbToAnsi256(...t.hexToRgb(r)),enumerable:!1},ansi256ToAnsi:{value:r=>{if(r<8)return 30+r;if(r<16)return 90+(r-8);let n,s,o;if(r>=232)n=((r-232)*10+8)/255,s=n,o=n;else{r-=16;let i=r%36;n=Math.floor(r/36)/5,s=Math.floor(i/6)/5,o=i%6/5}let u=Math.max(n,s,o)*2;if(u===0)return 30;let a=30+(Math.round(o)<<2|Math.round(s)<<1|Math.round(n));return u===2&&(a+=60),a},enumerable:!1},rgbToAnsi:{value:(r,n,s)=>t.ansi256ToAnsi(t.rgbToAnsi256(r,n,s)),enumerable:!1},hexToAnsi:{value:r=>t.ansi256ToAnsi(t.hexToAnsi256(r)),enumerable:!1}}),t}var jo=ko(),Go=jo,ve=new Set(["\x1B","\x9B"]),Ho=39,qe="\x07",or="[",Uo="]",sr="m",ze=`${Uo}8;;`,ur=e=>`${ve.values().next().value}${or}${e}${sr}`,ir=e=>`${ve.values().next().value}${ze}${e}${qe}`,Ko=e=>e.split(" ").map(t=>X(t)),Ye=(e,t,r)=>{let n=[...t],s=!1,o=!1,u=X(Xt(e[e.length-1]));for(let[a,i]of n.entries()){let l=X(i);if(u+l<=r?e[e.length-1]+=i:(e.push(i),u=0),ve.has(i)&&(s=!0,o=n.slice(a+1).join("").startsWith(ze)),s){o?i===qe&&(s=!1,o=!1):i===sr&&(s=!1);continue}u+=l,u===r&&a<n.length-1&&(e.push(""),u=0)}!u&&e[e.length-1].length>0&&e.length>1&&(e[e.length-2]+=e.pop())},qo=e=>{let t=e.split(" "),r=t.length;for(;r>0&&!(X(t[r-1])>0);)r--;return r===t.length?e:t.slice(0,r).join(" ")+t.slice(r).join("")},zo=(e,t,r={})=>{if(r.trim!==!1&&e.trim()==="")return"";let n="",s,o,u=Ko(e),a=[""];for(let[l,f]of e.split(" ").entries()){r.trim!==!1&&(a[a.length-1]=a[a.length-1].trimStart());let c=X(a[a.length-1]);if(l!==0&&(c>=t&&(r.wordWrap===!1||r.trim===!1)&&(a.push(""),c=0),(c>0||r.trim===!1)&&(a[a.length-1]+=" ",c++)),r.hard&&u[l]>t){let D=t-c,p=1+Math.floor((u[l]-D-1)/t);Math.floor((u[l]-1)/t)<p&&a.push(""),Ye(a,f,t);continue}if(c+u[l]>t&&c>0&&u[l]>0){if(r.wordWrap===!1&&c<t){Ye(a,f,t);continue}a.push("")}if(c+u[l]>t&&r.wordWrap===!1){Ye(a,f,t);continue}a[a.length-1]+=f}r.trim!==!1&&(a=a.map(l=>qo(l)));let i=[...a.join(`
4
+ `)];for(let[l,f]of i.entries()){if(n+=f,ve.has(f)){let{groups:D}=new RegExp(`(?:\\${or}(?<code>\\d+)m|\\${ze}(?<uri>.*)${qe})`).exec(i.slice(l).join(""))||{groups:{}};if(D.code!==void 0){let p=Number.parseFloat(D.code);s=p===Ho?void 0:p}else D.uri!==void 0&&(o=D.uri.length===0?void 0:D.uri)}let c=Go.codes.get(Number(s));i[l+1]===`
5
+ `?(o&&(n+=ir("")),s&&c&&(n+=ur(c))):f===`
6
+ `&&(s&&c&&(n+=ur(s)),o&&(n+=ir(o)))}return n};function Yo(e,t,r){return String(e).normalize().replace(/\r\n/g,`
7
7
  `).split(`
8
- `).map(n=>Uo(n,t,r)).join(`
9
- `)}var Dr=e=>Array.from({length:e}).fill("");function qo(e,t){let r=[],n=0;for(let s of e){let o=0,u=s.map(i=>{var l;let f=(l=t[n])!=null?l:"";n+=1,i.preprocess&&(f=i.preprocess(f)),Zt(f)>i.width&&(f=Ko(f,i.width,{hard:!0}));let D=f.split(`
10
- `);if(i.postprocess){let{postprocess:c}=i;D=D.map((p,d)=>c.call(i,p,d))}return i.paddingTop&&D.unshift(...Dr(i.paddingTop)),i.paddingBottom&&D.push(...Dr(i.paddingBottom)),D.length>o&&(o=D.length),Ke(Ae({},i),{lines:D})}),a=[];for(let i=0;i<o;i+=1){let l=u.map(f=>{var D;let c=(D=f.lines[i])!=null?D:"",p=Number.isFinite(f.width)?" ".repeat(f.width-W(c)):"",d=f.paddingLeftString;return f.align==="right"&&(d+=p),d+=c,f.align==="left"&&(d+=p),d+f.paddingRightString}).join("");a.push(l)}r.push(a.join(`
8
+ `).map(n=>zo(n,t,r)).join(`
9
+ `)}var ar=e=>Array.from({length:e}).fill("");function Wo(e,t){let r=[],n=0;for(let s of e){let o=0,u=s.map(i=>{var l;let f=(l=t[n])!=null?l:"";n+=1,i.preprocess&&(f=i.preprocess(f)),Jt(f)>i.width&&(f=Yo(f,i.width,{hard:!0}));let c=f.split(`
10
+ `);if(i.postprocess){let{postprocess:D}=i;c=c.map((p,d)=>D.call(i,p,d))}return i.paddingTop&&c.unshift(...ar(i.paddingTop)),i.paddingBottom&&c.push(...ar(i.paddingBottom)),c.length>o&&(o=c.length),Ue(Ae({},i),{lines:c})}),a=[];for(let i=0;i<o;i+=1){let l=u.map(f=>{var c;let D=(c=f.lines[i])!=null?c:"",p=Number.isFinite(f.width)?" ".repeat(f.width-X(D)):"",d=f.paddingLeftString;return f.align==="right"&&(d+=p),d+=D,f.align==="left"&&(d+=p),d+f.paddingRightString}).join("");a.push(l)}r.push(a.join(`
11
11
  `))}return r.join(`
12
- `)}function zo(e,t){if(!e||e.length===0)return"";let r=Io(e),n=r.length;if(n===0)return"";let{stdoutColumns:s,columns:o}=Bo(t);if(o.length>n)throw new Error(`${o.length} columns defined, but only ${n} columns found`);let u=No(s,o,r);return e.map(a=>qo(u,a)).join(`
13
- `)}B();var Yo=["<",">","=",">=","<="];function Wo(e){if(!Yo.includes(e))throw new TypeError(`Invalid breakpoint operator: ${e}`)}function Vo(e){let t=Object.keys(e).map(r=>{let[n,s]=r.split(" ");Wo(n);let o=Number.parseInt(s,10);if(Number.isNaN(o))throw new TypeError(`Invalid breakpoint value: ${s}`);let u=e[r];return{operator:n,breakpoint:o,value:u}}).sort((r,n)=>n.breakpoint-r.breakpoint);return r=>{var n;return(n=t.find(({operator:s,breakpoint:o})=>s==="="&&r===o||s===">"&&r>o||s==="<"&&r<o||s===">="&&r>=o||s==="<="&&r<=o))==null?void 0:n.value}}const Xo=e=>e.replace(/[\W_]([a-z\d])?/gi,(t,r)=>r?r.toUpperCase():""),Jo=e=>e.replace(/\B([A-Z])/g,"-$1").toLowerCase(),Zo={"> 80":[{width:"content-width",paddingLeft:2,paddingRight:8},{width:"auto"}],"> 40":[{width:"auto",paddingLeft:2,paddingRight:8,preprocess:e=>e.trim()},{width:"100%",paddingLeft:2,paddingBottom:1}],"> 0":{stdoutColumns:1e3,columns:[{width:"content-width",paddingLeft:2,paddingRight:8},{width:"content-width"}]}};function Qo(e){let t=!1;return{type:"table",data:{tableData:Object.keys(e).sort((r,n)=>r.localeCompare(n)).map(r=>{const n=e[r],s="alias"in n;return s&&(t=!0),{name:r,flag:n,flagFormatted:`--${Jo(r)}`,aliasesEnabled:t,aliasFormatted:s?`-${n.alias}`:void 0}}).map(r=>(r.aliasesEnabled=t,[{type:"flagName",data:r},{type:"flagDescription",data:r}])),tableBreakpoints:Zo}}}const cr=e=>!e||(e.version??(e.help?e.help.version:void 0)),lr=e=>{const t="parent"in e&&e.parent?.name;return(t?`${t} `:"")+e.name};function es(e){const t=[];e.name&&t.push(lr(e));const r=cr(e)??("parent"in e&&cr(e.parent));if(r&&t.push(`v${r}`),t.length!==0)return{id:"name",type:"text",data:`${t.join(" ")}
14
- `}}function ts(e){const{help:t}=e;if(!(!t||!t.description))return{id:"description",type:"text",data:`${t.description}
15
- `}}function rs(e){const t=e.help||{};if("usage"in t)return t.usage?{id:"usage",type:"section",data:{title:"Usage:",body:Array.isArray(t.usage)?t.usage.join(`
16
- `):t.usage}}:void 0;if(e.name){const r=[],n=[lr(e)];if(e.flags&&Object.keys(e.flags).length>0&&n.push("[flags...]"),e.parameters&&e.parameters.length>0){const{parameters:s}=e,o=s.indexOf("--"),u=o>-1&&s.slice(o+1).some(a=>a.startsWith("<"));n.push(s.map(a=>a!=="--"?a:u?"--":"[--]").join(" "))}if(n.length>1&&r.push(n.join(" ")),"commands"in e&&e.commands?.length&&r.push(`${e.name} <command>`),r.length>0)return{id:"usage",type:"section",data:{title:"Usage:",body:r.join(`
17
- `)}}}}function ns(e){return!("commands"in e)||!e.commands?.length?void 0:{id:"commands",type:"section",data:{title:"Commands:",body:{type:"table",data:{tableData:e.commands.map(t=>[t.options.name,t.options.help?t.options.help.description:""]),tableOptions:[{width:"content-width",paddingLeft:2,paddingRight:8}]}},indentBody:0}}}function os(e){if(!(!e.flags||Object.keys(e.flags).length===0))return{id:"flags",type:"section",data:{title:"Flags:",body:Qo(e.flags),indentBody:0}}}function ss(e){const{help:t}=e;if(!t||!t.examples||t.examples.length===0)return;let{examples:r}=t;if(Array.isArray(r)&&(r=r.join(`
18
- `)),r)return{id:"examples",type:"section",data:{title:"Examples:",body:r}}}function us(e){if(!("alias"in e)||!e.alias)return;const{alias:t}=e;return{id:"aliases",type:"section",data:{title:"Aliases:",body:Array.isArray(t)?t.join(", "):t}}}const is=e=>[es,ts,rs,ns,os,ss,us].map(t=>t(e)).filter(Boolean),as=ke.WriteStream.prototype.hasColors();class Ds{text(t){return t}bold(t){return as?`\x1B[1m${t}\x1B[22m`:t.toLocaleUpperCase()}indentText({text:t,spaces:r}){return t.replace(/^/gm," ".repeat(r))}heading(t){return this.bold(t)}section({title:t,body:r,indentBody:n=2}){return`${(t?`${this.heading(t)}
12
+ `)}function Vo(e,t){if(!e||e.length===0)return"";let r=_o(e),n=r.length;if(n===0)return"";let{stdoutColumns:s,columns:o}=So(t);if(o.length>n)throw new Error(`${o.length} columns defined, but only ${n} columns found`);let u=Ro(s,o,r);return e.map(a=>Wo(u,a)).join(`
13
+ `)}B();var Xo=["<",">","=",">=","<="];function Jo(e){if(!Xo.includes(e))throw new TypeError(`Invalid breakpoint operator: ${e}`)}function Zo(e){let t=Object.keys(e).map(r=>{let[n,s]=r.split(" ");Jo(n);let o=Number.parseInt(s,10);if(Number.isNaN(o))throw new TypeError(`Invalid breakpoint value: ${s}`);let u=e[r];return{operator:n,breakpoint:o,value:u}}).sort((r,n)=>n.breakpoint-r.breakpoint);return r=>{var n;return(n=t.find(({operator:s,breakpoint:o})=>s==="="&&r===o||s===">"&&r>o||s==="<"&&r<o||s===">="&&r>=o||s==="<="&&r<=o))==null?void 0:n.value}}const Qo=e=>e.replace(/[\W_]([a-z\d])?/gi,(t,r)=>r?r.toUpperCase():""),es=e=>e.replace(/\B([A-Z])/g,"-$1").toLowerCase(),ts={"> 80":[{width:"content-width",paddingLeft:2,paddingRight:8},{width:"auto"}],"> 40":[{width:"auto",paddingLeft:2,paddingRight:8,preprocess:e=>e.trim()},{width:"100%",paddingLeft:2,paddingBottom:1}],"> 0":{stdoutColumns:1e3,columns:[{width:"content-width",paddingLeft:2,paddingRight:8},{width:"content-width"}]}};function rs(e){let t=!1;return{type:"table",data:{tableData:Object.keys(e).sort((r,n)=>r.localeCompare(n)).map(r=>{const n=e[r],s="alias"in n;return s&&(t=!0),{name:r,flag:n,flagFormatted:`--${es(r)}`,aliasesEnabled:t,aliasFormatted:s?`-${n.alias}`:void 0}}).map(r=>(r.aliasesEnabled=t,[{type:"flagName",data:r},{type:"flagDescription",data:r}])),tableBreakpoints:ts}}}const cr=e=>!e||(e.version??(e.help?e.help.version:void 0)),Dr=e=>{const t="parent"in e&&e.parent?.name;return(t?`${t} `:"")+e.name};function ns(e){const t=[];e.name&&t.push(Dr(e));const r=cr(e)??("parent"in e&&cr(e.parent));if(r&&t.push(`v${r}`),t.length!==0)return{id:"name",type:"text",data:`${t.join(" ")}
14
+ `}}function os(e){const{help:t}=e;if(!(!t||!t.description))return{id:"description",type:"text",data:`${t.description}
15
+ `}}function ss(e){const t=e.help||{};if("usage"in t)return t.usage?{id:"usage",type:"section",data:{title:"Usage:",body:Array.isArray(t.usage)?t.usage.join(`
16
+ `):t.usage}}:void 0;if(e.name){const r=[],n=[Dr(e)];if(e.flags&&Object.keys(e.flags).length>0&&n.push("[flags...]"),e.parameters&&e.parameters.length>0){const{parameters:s}=e,o=s.indexOf("--"),u=o>-1&&s.slice(o+1).some(a=>a.startsWith("<"));n.push(s.map(a=>a!=="--"?a:u?"--":"[--]").join(" "))}if(n.length>1&&r.push(n.join(" ")),"commands"in e&&e.commands?.length&&r.push(`${e.name} <command>`),r.length>0)return{id:"usage",type:"section",data:{title:"Usage:",body:r.join(`
17
+ `)}}}}function us(e){return!("commands"in e)||!e.commands?.length?void 0:{id:"commands",type:"section",data:{title:"Commands:",body:{type:"table",data:{tableData:e.commands.map(t=>[t.options.name,t.options.help?t.options.help.description:""]),tableOptions:[{width:"content-width",paddingLeft:2,paddingRight:8}]}},indentBody:0}}}function is(e){if(!(!e.flags||Object.keys(e.flags).length===0))return{id:"flags",type:"section",data:{title:"Flags:",body:rs(e.flags),indentBody:0}}}function as(e){const{help:t}=e;if(!t||!t.examples||t.examples.length===0)return;let{examples:r}=t;if(Array.isArray(r)&&(r=r.join(`
18
+ `)),r)return{id:"examples",type:"section",data:{title:"Examples:",body:r}}}function cs(e){if(!("alias"in e)||!e.alias)return;const{alias:t}=e;return{id:"aliases",type:"section",data:{title:"Aliases:",body:Array.isArray(t)?t.join(", "):t}}}const Ds=e=>[ns,os,ss,us,is,as,cs].map(t=>t(e)).filter(Boolean),ls=Re.WriteStream.prototype.hasColors();class fs{text(t){return t}bold(t){return ls?`\x1B[1m${t}\x1B[22m`:t.toLocaleUpperCase()}indentText({text:t,spaces:r}){return t.replace(/^/gm," ".repeat(r))}heading(t){return this.bold(t)}section({title:t,body:r,indentBody:n=2}){return`${(t?`${this.heading(t)}
19
19
  `:"")+(r?this.indentText({text:this.render(r),spaces:n}):"")}
20
- `}table({tableData:t,tableOptions:r,tableBreakpoints:n}){return zo(t.map(s=>s.map(o=>this.render(o))),n?Vo(n):r)}flagParameter(t){return t===Boolean?"":t===String?"<string>":t===Number?"<number>":Array.isArray(t)?this.flagParameter(t[0]):"<value>"}flagOperator(t){return" "}flagName(t){const{flag:r,flagFormatted:n,aliasesEnabled:s,aliasFormatted:o}=t;let u="";if(o?u+=`${o}, `:s&&(u+=" "),u+=n,"placeholder"in r&&typeof r.placeholder=="string")u+=`${this.flagOperator(t)}${r.placeholder}`;else{const a=this.flagParameter("type"in r?r.type:r);a&&(u+=`${this.flagOperator(t)}${a}`)}return u}flagDefault(t){return JSON.stringify(t)}flagDescription({flag:t}){let r="description"in t?t.description??"":"";if("default"in t){let{default:n}=t;typeof n=="function"&&(n=n()),n&&(r+=` (default: ${this.flagDefault(n)})`)}return r}render(t){if(typeof t=="string")return t;if(Array.isArray(t))return t.map(r=>this.render(r)).join(`
21
- `);if("type"in t&&this[t.type]){const r=this[t.type];if(typeof r=="function")return r.call(this,t.data)}throw new Error(`Invalid node type: ${JSON.stringify(t)}`)}}const Ve=/^[\w.-]+$/,{stringify:N}=JSON,cs=/[|\\{}()[\]^$+*?.]/;function Xe(e){const t=[];let r,n;for(const s of e){if(n)throw new Error(`Invalid parameter: Spread parameter ${N(n)} must be last`);const o=s[0],u=s[s.length-1];let a;if(o==="<"&&u===">"&&(a=!0,r))throw new Error(`Invalid parameter: Required parameter ${N(s)} cannot come after optional parameter ${N(r)}`);if(o==="["&&u==="]"&&(a=!1,r=s),a===void 0)throw new Error(`Invalid parameter: ${N(s)}. Must be wrapped in <> (required parameter) or [] (optional parameter)`);let i=s.slice(1,-1);const l=i.slice(-3)==="...";l&&(n=s,i=i.slice(0,-3));const f=i.match(cs);if(f)throw new Error(`Invalid parameter: ${N(s)}. Invalid character found ${N(f[0])}`);t.push({name:i,required:a,spread:l})}return t}function Je(e,t,r,n){for(let s=0;s<t.length;s+=1){const{name:o,required:u,spread:a}=t[s],i=Xo(o);if(i in e)throw new Error(`Invalid parameter: ${N(o)} is used more than once.`);const l=a?r.slice(s):r[s];if(a&&(s=t.length),u&&(!l||a&&l.length===0))return console.error(`Error: Missing required parameter ${N(o)}
22
- `),n(),process.exit(1);e[i]=l}}function ls(e){return e===void 0||e!==!1}function fr(e,t,r,n){const s={...t.flags},o=t.version;o&&(s.version={type:Boolean,description:"Show version"});const{help:u}=t,a=ls(u);a&&!("help"in s)&&(s.help={type:Boolean,alias:"h",description:"Show help"});const i=fo(s,n,{ignore:t.ignoreArgv}),l=()=>{console.log(t.version)};if(o&&i.flags.version===!0)return l(),process.exit(0);const f=new Ds,D=a&&u?.render?u.render:d=>f.render(d),c=d=>{const h=is({...t,...d?{help:d}:{},flags:s});console.log(D(h,f))};if(a&&i.flags.help===!0)return c(),process.exit(0);if(t.parameters){let{parameters:d}=t,h=i._;const m=d.indexOf("--"),C=d.slice(m+1),b=Object.create(null);if(m>-1&&C.length>0){d=d.slice(0,m);const E=i._["--"];h=h.slice(0,-E.length||void 0),Je(b,Xe(d),h,c),Je(b,Xe(C),E,c)}else Je(b,Xe(d),h,c);Object.assign(i._,b)}const p={...i,showVersion:l,showHelp:c};return typeof r=="function"&&r(p),{command:e,...p}}function fs(e,t){const r=new Map;for(const n of t){const s=[n.options.name],{alias:o}=n.options;o&&(Array.isArray(o)?s.push(...o):s.push(o));for(const u of s){if(r.has(u))throw new Error(`Duplicate command name found: ${N(u)}`);r.set(u,n)}}return r.get(e)}function ps(e,t,r=process.argv.slice(2)){if(!e)throw new Error("Options is required");if("name"in e&&(!e.name||!Ve.test(e.name)))throw new Error(`Invalid script name: ${N(e.name)}`);const n=r[0];if(e.commands&&Ve.test(n)){const s=fs(n,e.commands);if(s)return fr(s.options.name,{...s.options,parent:e},s.callback,r.slice(1))}return fr(void 0,e,t,r)}function pr(e,t){if(!e)throw new Error("Command options are required");const{name:r}=e;if(e.name===void 0)throw new Error("Command name is required");if(!Ve.test(r))throw new Error(`Invalid command name ${JSON.stringify(r)}. Command names must be one word.`);return{options:e,callback:t}}var ds=yn(import.meta.url),v=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function te(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var re={exports:{}},Ze,dr;function ms(){if(dr)return Ze;dr=1,Ze=n,n.sync=s;var e=Y;function t(o,u){var a=u.pathExt!==void 0?u.pathExt:process.env.PATHEXT;if(!a||(a=a.split(";"),a.indexOf("")!==-1))return!0;for(var i=0;i<a.length;i++){var l=a[i].toLowerCase();if(l&&o.substr(-l.length).toLowerCase()===l)return!0}return!1}function r(o,u,a){return!o.isSymbolicLink()&&!o.isFile()?!1:t(u,a)}function n(o,u,a){e.stat(o,function(i,l){a(i,i?!1:r(l,o,u))})}function s(o,u){return r(e.statSync(o),o,u)}return Ze}var Qe,mr;function hs(){if(mr)return Qe;mr=1,Qe=t,t.sync=r;var e=Y;function t(o,u,a){e.stat(o,function(i,l){a(i,i?!1:n(l,u))})}function r(o,u){return n(e.statSync(o),u)}function n(o,u){return o.isFile()&&s(o,u)}function s(o,u){var a=o.mode,i=o.uid,l=o.gid,f=u.uid!==void 0?u.uid:process.getuid&&process.getuid(),D=u.gid!==void 0?u.gid:process.getgid&&process.getgid(),c=parseInt("100",8),p=parseInt("010",8),d=parseInt("001",8),h=c|p,m=a&d||a&p&&l===D||a&c&&i===f||a&h&&f===0;return m}return Qe}var $e;process.platform==="win32"||v.TESTING_WINDOWS?$e=ms():$e=hs();var gs=et;et.sync=Cs;function et(e,t,r){if(typeof t=="function"&&(r=t,t={}),!r){if(typeof Promise!="function")throw new TypeError("callback not provided");return new Promise(function(n,s){et(e,t||{},function(o,u){o?s(o):n(u)})})}$e(e,t||{},function(n,s){n&&(n.code==="EACCES"||t&&t.ignoreErrors)&&(n=null,s=!1),r(n,s)})}function Cs(e,t){try{return $e.sync(e,t||{})}catch(r){if(t&&t.ignoreErrors||r.code==="EACCES")return!1;throw r}}const ne=process.platform==="win32"||process.env.OSTYPE==="cygwin"||process.env.OSTYPE==="msys",hr=H,Fs=ne?";":":",gr=gs,Cr=e=>Object.assign(new Error(`not found: ${e}`),{code:"ENOENT"}),Fr=(e,t)=>{const r=t.colon||Fs,n=e.match(/\//)||ne&&e.match(/\\/)?[""]:[...ne?[process.cwd()]:[],...(t.path||process.env.PATH||"").split(r)],s=ne?t.pathExt||process.env.PATHEXT||".EXE;.CMD;.BAT;.COM":"",o=ne?s.split(r):[""];return ne&&e.indexOf(".")!==-1&&o[0]!==""&&o.unshift(""),{pathEnv:n,pathExt:o,pathExtExe:s}},Er=(e,t,r)=>{typeof t=="function"&&(r=t,t={}),t||(t={});const{pathEnv:n,pathExt:s,pathExtExe:o}=Fr(e,t),u=[],a=l=>new Promise((f,D)=>{if(l===n.length)return t.all&&u.length?f(u):D(Cr(e));const c=n[l],p=/^".*"$/.test(c)?c.slice(1,-1):c,d=hr.join(p,e),h=!p&&/^\.[\\\/]/.test(e)?e.slice(0,2)+d:d;f(i(h,l,0))}),i=(l,f,D)=>new Promise((c,p)=>{if(D===s.length)return c(a(f+1));const d=s[D];gr(l+d,{pathExt:o},(h,m)=>{if(!h&&m)if(t.all)u.push(l+d);else return c(l+d);return c(i(l,f,D+1))})});return r?a(0).then(l=>r(null,l),r):a(0)},Es=(e,t)=>{t=t||{};const{pathEnv:r,pathExt:n,pathExtExe:s}=Fr(e,t),o=[];for(let u=0;u<r.length;u++){const a=r[u],i=/^".*"$/.test(a)?a.slice(1,-1):a,l=hr.join(i,e),f=!i&&/^\.[\\\/]/.test(e)?e.slice(0,2)+l:l;for(let D=0;D<n.length;D++){const c=f+n[D];try{if(gr.sync(c,{pathExt:s}))if(t.all)o.push(c);else return c}catch{}}}if(t.all&&o.length)return o;if(t.nothrow)return null;throw Cr(e)};var ys=Er;Er.sync=Es;var tt={exports:{}};const yr=(e={})=>{const t=e.env||process.env;return(e.platform||process.platform)!=="win32"?"PATH":Object.keys(t).reverse().find(n=>n.toUpperCase()==="PATH")||"Path"};tt.exports=yr,tt.exports.default=yr;var ws=tt.exports;const wr=H,bs=ys,As=ws;function br(e,t){const r=e.options.env||process.env,n=process.cwd(),s=e.options.cwd!=null,o=s&&process.chdir!==void 0&&!process.chdir.disabled;if(o)try{process.chdir(e.options.cwd)}catch{}let u;try{u=bs.sync(e.command,{path:r[As({env:r})],pathExt:t?wr.delimiter:void 0})}catch{}finally{o&&process.chdir(n)}return u&&(u=wr.resolve(s?e.options.cwd:"",u)),u}function vs(e){return br(e)||br(e,!0)}var $s=vs,rt={};const nt=/([()\][%!^"`<>&|;, *?])/g;function Bs(e){return e=e.replace(nt,"^$1"),e}function xs(e,t){return e=`${e}`,e=e.replace(/(\\*)"/g,'$1$1\\"'),e=e.replace(/(\\*)$/,"$1$1"),e=`"${e}"`,e=e.replace(nt,"^$1"),t&&(e=e.replace(nt,"^$1")),e}rt.command=Bs,rt.argument=xs;var Os=/^#!(.*)/;const Ss=Os;var Is=(e="")=>{const t=e.match(Ss);if(!t)return null;const[r,n]=t[0].replace(/#! ?/,"").split(" "),s=r.split("/").pop();return s==="env"?n:n?`${s} ${n}`:s};const ot=Y,Ms=Is;function Ps(e){const r=Buffer.alloc(150);let n;try{n=ot.openSync(e,"r"),ot.readSync(n,r,0,150,0),ot.closeSync(n)}catch{}return Ms(r.toString())}var _s=Ps;const Ns=H,Ar=$s,vr=rt,Ts=_s,Ls=process.platform==="win32",Rs=/\.(?:com|exe)$/i,ks=/node_modules[\\/].bin[\\/][^\\/]+\.cmd$/i;function js(e){e.file=Ar(e);const t=e.file&&Ts(e.file);return t?(e.args.unshift(e.file),e.command=t,Ar(e)):e.file}function Gs(e){if(!Ls)return e;const t=js(e),r=!Rs.test(t);if(e.options.forceShell||r){const n=ks.test(t);e.command=Ns.normalize(e.command),e.command=vr.command(e.command),e.args=e.args.map(o=>vr.argument(o,n));const s=[e.command].concat(e.args).join(" ");e.args=["/d","/s","/c",`"${s}"`],e.command=process.env.comspec||"cmd.exe",e.options.windowsVerbatimArguments=!0}return e}function Hs(e,t,r){t&&!Array.isArray(t)&&(r=t,t=null),t=t?t.slice(0):[],r=Object.assign({},r);const n={command:e,args:t,options:r,file:void 0,original:{command:e,args:t}};return r.shell?n:Gs(n)}var Us=Hs;const st=process.platform==="win32";function ut(e,t){return Object.assign(new Error(`${t} ${e.command} ENOENT`),{code:"ENOENT",errno:"ENOENT",syscall:`${t} ${e.command}`,path:e.command,spawnargs:e.args})}function Ks(e,t){if(!st)return;const r=e.emit;e.emit=function(n,s){if(n==="exit"){const o=$r(s,t);if(o)return r.call(e,"error",o)}return r.apply(e,arguments)}}function $r(e,t){return st&&e===1&&!t.file?ut(t.original,"spawn"):null}function qs(e,t){return st&&e===1&&!t.file?ut(t.original,"spawnSync"):null}var zs={hookChildProcess:Ks,verifyENOENT:$r,verifyENOENTSync:qs,notFoundError:ut};const Br=bn,it=Us,at=zs;function xr(e,t,r){const n=it(e,t,r),s=Br.spawn(n.command,n.args,n.options);return at.hookChildProcess(s,n),s}function Ys(e,t,r){const n=it(e,t,r),s=Br.spawnSync(n.command,n.args,n.options);return s.error=s.error||at.verifyENOENTSync(s.status,n),s}re.exports=xr,re.exports.spawn=xr,re.exports.sync=Ys,re.exports._parse=it,re.exports._enoent=at;var Ws=re.exports,Vs=te(Ws);function Xs(e){const t=typeof e=="string"?`
20
+ `}table({tableData:t,tableOptions:r,tableBreakpoints:n}){return Vo(t.map(s=>s.map(o=>this.render(o))),n?Zo(n):r)}flagParameter(t){return t===Boolean?"":t===String?"<string>":t===Number?"<number>":Array.isArray(t)?this.flagParameter(t[0]):"<value>"}flagOperator(t){return" "}flagName(t){const{flag:r,flagFormatted:n,aliasesEnabled:s,aliasFormatted:o}=t;let u="";if(o?u+=`${o}, `:s&&(u+=" "),u+=n,"placeholder"in r&&typeof r.placeholder=="string")u+=`${this.flagOperator(t)}${r.placeholder}`;else{const a=this.flagParameter("type"in r?r.type:r);a&&(u+=`${this.flagOperator(t)}${a}`)}return u}flagDefault(t){return JSON.stringify(t)}flagDescription({flag:t}){let r="description"in t?t.description??"":"";if("default"in t){let{default:n}=t;typeof n=="function"&&(n=n()),n&&(r+=` (default: ${this.flagDefault(n)})`)}return r}render(t){if(typeof t=="string")return t;if(Array.isArray(t))return t.map(r=>this.render(r)).join(`
21
+ `);if("type"in t&&this[t.type]){const r=this[t.type];if(typeof r=="function")return r.call(this,t.data)}throw new Error(`Invalid node type: ${JSON.stringify(t)}`)}}const We=/^[\w.-]+$/,{stringify:R}=JSON,ps=/[|\\{}()[\]^$+*?.]/;function Ve(e){const t=[];let r,n;for(const s of e){if(n)throw new Error(`Invalid parameter: Spread parameter ${R(n)} must be last`);const o=s[0],u=s[s.length-1];let a;if(o==="<"&&u===">"&&(a=!0,r))throw new Error(`Invalid parameter: Required parameter ${R(s)} cannot come after optional parameter ${R(r)}`);if(o==="["&&u==="]"&&(a=!1,r=s),a===void 0)throw new Error(`Invalid parameter: ${R(s)}. Must be wrapped in <> (required parameter) or [] (optional parameter)`);let i=s.slice(1,-1);const l=i.slice(-3)==="...";l&&(n=s,i=i.slice(0,-3));const f=i.match(ps);if(f)throw new Error(`Invalid parameter: ${R(s)}. Invalid character found ${R(f[0])}`);t.push({name:i,required:a,spread:l})}return t}function Xe(e,t,r,n){for(let s=0;s<t.length;s+=1){const{name:o,required:u,spread:a}=t[s],i=Qo(o);if(i in e)throw new Error(`Invalid parameter: ${R(o)} is used more than once.`);const l=a?r.slice(s):r[s];if(a&&(s=t.length),u&&(!l||a&&l.length===0))return console.error(`Error: Missing required parameter ${R(o)}
22
+ `),n(),process.exit(1);e[i]=l}}function ds(e){return e===void 0||e!==!1}function lr(e,t,r,n){const s={...t.flags},o=t.version;o&&(s.version={type:Boolean,description:"Show version"});const{help:u}=t,a=ds(u);a&&!("help"in s)&&(s.help={type:Boolean,alias:"h",description:"Show help"});const i=ho(s,n,{ignore:t.ignoreArgv}),l=()=>{console.log(t.version)};if(o&&i.flags.version===!0)return l(),process.exit(0);const f=new fs,c=a&&u?.render?u.render:d=>f.render(d),D=d=>{const h=Ds({...t,...d?{help:d}:{},flags:s});console.log(c(h,f))};if(a&&i.flags.help===!0)return D(),process.exit(0);if(t.parameters){let{parameters:d}=t,h=i._;const m=d.indexOf("--"),C=d.slice(m+1),b=Object.create(null);if(m>-1&&C.length>0){d=d.slice(0,m);const F=i._["--"];h=h.slice(0,-F.length||void 0),Xe(b,Ve(d),h,D),Xe(b,Ve(C),F,D)}else Xe(b,Ve(d),h,D);Object.assign(i._,b)}const p={...i,showVersion:l,showHelp:D};return typeof r=="function"&&r(p),{command:e,...p}}function ms(e,t){const r=new Map;for(const n of t){const s=[n.options.name],{alias:o}=n.options;o&&(Array.isArray(o)?s.push(...o):s.push(o));for(const u of s){if(r.has(u))throw new Error(`Duplicate command name found: ${R(u)}`);r.set(u,n)}}return r.get(e)}function hs(e,t,r=process.argv.slice(2)){if(!e)throw new Error("Options is required");if("name"in e&&(!e.name||!We.test(e.name)))throw new Error(`Invalid script name: ${R(e.name)}`);const n=r[0];if(e.commands&&We.test(n)){const s=ms(n,e.commands);if(s)return lr(s.options.name,{...s.options,parent:e},s.callback,r.slice(1))}return lr(void 0,e,t,r)}function fr(e,t){if(!e)throw new Error("Command options are required");const{name:r}=e;if(e.name===void 0)throw new Error("Command name is required");if(!We.test(r))throw new Error(`Invalid command name ${JSON.stringify(r)}. Command names must be one word.`);return{options:e,callback:t}}var gs=wn(import.meta.url),v=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function te(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var re={exports:{}},Je,pr;function Cs(){if(pr)return Je;pr=1,Je=n,n.sync=s;var e=V;function t(o,u){var a=u.pathExt!==void 0?u.pathExt:process.env.PATHEXT;if(!a||(a=a.split(";"),a.indexOf("")!==-1))return!0;for(var i=0;i<a.length;i++){var l=a[i].toLowerCase();if(l&&o.substr(-l.length).toLowerCase()===l)return!0}return!1}function r(o,u,a){return!o.isSymbolicLink()&&!o.isFile()?!1:t(u,a)}function n(o,u,a){e.stat(o,function(i,l){a(i,i?!1:r(l,o,u))})}function s(o,u){return r(e.statSync(o),o,u)}return Je}var Ze,dr;function Es(){if(dr)return Ze;dr=1,Ze=t,t.sync=r;var e=V;function t(o,u,a){e.stat(o,function(i,l){a(i,i?!1:n(l,u))})}function r(o,u){return n(e.statSync(o),u)}function n(o,u){return o.isFile()&&s(o,u)}function s(o,u){var a=o.mode,i=o.uid,l=o.gid,f=u.uid!==void 0?u.uid:process.getuid&&process.getuid(),c=u.gid!==void 0?u.gid:process.getgid&&process.getgid(),D=parseInt("100",8),p=parseInt("010",8),d=parseInt("001",8),h=D|p,m=a&d||a&p&&l===c||a&D&&i===f||a&h&&f===0;return m}return Ze}var $e;process.platform==="win32"||v.TESTING_WINDOWS?$e=Cs():$e=Es();var Fs=Qe;Qe.sync=ys;function Qe(e,t,r){if(typeof t=="function"&&(r=t,t={}),!r){if(typeof Promise!="function")throw new TypeError("callback not provided");return new Promise(function(n,s){Qe(e,t||{},function(o,u){o?s(o):n(u)})})}$e(e,t||{},function(n,s){n&&(n.code==="EACCES"||t&&t.ignoreErrors)&&(n=null,s=!1),r(n,s)})}function ys(e,t){try{return $e.sync(e,t||{})}catch(r){if(t&&t.ignoreErrors||r.code==="EACCES")return!1;throw r}}const ne=process.platform==="win32"||process.env.OSTYPE==="cygwin"||process.env.OSTYPE==="msys",mr=q,ws=ne?";":":",hr=Fs,gr=e=>Object.assign(new Error(`not found: ${e}`),{code:"ENOENT"}),Cr=(e,t)=>{const r=t.colon||ws,n=e.match(/\//)||ne&&e.match(/\\/)?[""]:[...ne?[process.cwd()]:[],...(t.path||process.env.PATH||"").split(r)],s=ne?t.pathExt||process.env.PATHEXT||".EXE;.CMD;.BAT;.COM":"",o=ne?s.split(r):[""];return ne&&e.indexOf(".")!==-1&&o[0]!==""&&o.unshift(""),{pathEnv:n,pathExt:o,pathExtExe:s}},Er=(e,t,r)=>{typeof t=="function"&&(r=t,t={}),t||(t={});const{pathEnv:n,pathExt:s,pathExtExe:o}=Cr(e,t),u=[],a=l=>new Promise((f,c)=>{if(l===n.length)return t.all&&u.length?f(u):c(gr(e));const D=n[l],p=/^".*"$/.test(D)?D.slice(1,-1):D,d=mr.join(p,e),h=!p&&/^\.[\\\/]/.test(e)?e.slice(0,2)+d:d;f(i(h,l,0))}),i=(l,f,c)=>new Promise((D,p)=>{if(c===s.length)return D(a(f+1));const d=s[c];hr(l+d,{pathExt:o},(h,m)=>{if(!h&&m)if(t.all)u.push(l+d);else return D(l+d);return D(i(l,f,c+1))})});return r?a(0).then(l=>r(null,l),r):a(0)},bs=(e,t)=>{t=t||{};const{pathEnv:r,pathExt:n,pathExtExe:s}=Cr(e,t),o=[];for(let u=0;u<r.length;u++){const a=r[u],i=/^".*"$/.test(a)?a.slice(1,-1):a,l=mr.join(i,e),f=!i&&/^\.[\\\/]/.test(e)?e.slice(0,2)+l:l;for(let c=0;c<n.length;c++){const D=f+n[c];try{if(hr.sync(D,{pathExt:s}))if(t.all)o.push(D);else return D}catch{}}}if(t.all&&o.length)return o;if(t.nothrow)return null;throw gr(e)};var As=Er;Er.sync=bs;var et={exports:{}};const Fr=(e={})=>{const t=e.env||process.env;return(e.platform||process.platform)!=="win32"?"PATH":Object.keys(t).reverse().find(n=>n.toUpperCase()==="PATH")||"Path"};et.exports=Fr,et.exports.default=Fr;var vs=et.exports;const yr=q,$s=As,Bs=vs;function wr(e,t){const r=e.options.env||process.env,n=process.cwd(),s=e.options.cwd!=null,o=s&&process.chdir!==void 0&&!process.chdir.disabled;if(o)try{process.chdir(e.options.cwd)}catch{}let u;try{u=$s.sync(e.command,{path:r[Bs({env:r})],pathExt:t?yr.delimiter:void 0})}catch{}finally{o&&process.chdir(n)}return u&&(u=yr.resolve(s?e.options.cwd:"",u)),u}function xs(e){return wr(e)||wr(e,!0)}var Os=xs,tt={};const rt=/([()\][%!^"`<>&|;, *?])/g;function Ss(e){return e=e.replace(rt,"^$1"),e}function Is(e,t){return e=`${e}`,e=e.replace(/(\\*)"/g,'$1$1\\"'),e=e.replace(/(\\*)$/,"$1$1"),e=`"${e}"`,e=e.replace(rt,"^$1"),t&&(e=e.replace(rt,"^$1")),e}tt.command=Ss,tt.argument=Is;var Ms=/^#!(.*)/;const Ps=Ms;var _s=(e="")=>{const t=e.match(Ps);if(!t)return null;const[r,n]=t[0].replace(/#! ?/,"").split(" "),s=r.split("/").pop();return s==="env"?n:n?`${s} ${n}`:s};const nt=V,Ns=_s;function Ts(e){const r=Buffer.alloc(150);let n;try{n=nt.openSync(e,"r"),nt.readSync(n,r,0,150,0),nt.closeSync(n)}catch{}return Ns(r.toString())}var Ls=Ts;const Rs=q,br=Os,Ar=tt,ks=Ls,js=process.platform==="win32",Gs=/\.(?:com|exe)$/i,Hs=/node_modules[\\/].bin[\\/][^\\/]+\.cmd$/i;function Us(e){e.file=br(e);const t=e.file&&ks(e.file);return t?(e.args.unshift(e.file),e.command=t,br(e)):e.file}function Ks(e){if(!js)return e;const t=Us(e),r=!Gs.test(t);if(e.options.forceShell||r){const n=Hs.test(t);e.command=Rs.normalize(e.command),e.command=Ar.command(e.command),e.args=e.args.map(o=>Ar.argument(o,n));const s=[e.command].concat(e.args).join(" ");e.args=["/d","/s","/c",`"${s}"`],e.command=process.env.comspec||"cmd.exe",e.options.windowsVerbatimArguments=!0}return e}function qs(e,t,r){t&&!Array.isArray(t)&&(r=t,t=null),t=t?t.slice(0):[],r=Object.assign({},r);const n={command:e,args:t,options:r,file:void 0,original:{command:e,args:t}};return r.shell?n:Ks(n)}var zs=qs;const ot=process.platform==="win32";function st(e,t){return Object.assign(new Error(`${t} ${e.command} ENOENT`),{code:"ENOENT",errno:"ENOENT",syscall:`${t} ${e.command}`,path:e.command,spawnargs:e.args})}function Ys(e,t){if(!ot)return;const r=e.emit;e.emit=function(n,s){if(n==="exit"){const o=vr(s,t);if(o)return r.call(e,"error",o)}return r.apply(e,arguments)}}function vr(e,t){return ot&&e===1&&!t.file?st(t.original,"spawn"):null}function Ws(e,t){return ot&&e===1&&!t.file?st(t.original,"spawnSync"):null}var Vs={hookChildProcess:Ys,verifyENOENT:vr,verifyENOENTSync:Ws,notFoundError:st};const $r=An,ut=zs,it=Vs;function Br(e,t,r){const n=ut(e,t,r),s=$r.spawn(n.command,n.args,n.options);return it.hookChildProcess(s,n),s}function Xs(e,t,r){const n=ut(e,t,r),s=$r.spawnSync(n.command,n.args,n.options);return s.error=s.error||it.verifyENOENTSync(s.status,n),s}re.exports=Br,re.exports.spawn=Br,re.exports.sync=Xs,re.exports._parse=ut,re.exports._enoent=it;var Js=re.exports,Zs=te(Js);function Qs(e){const t=typeof e=="string"?`
23
23
  `:`
24
- `.charCodeAt(),r=typeof e=="string"?"\r":"\r".charCodeAt();return e[e.length-1]===t&&(e=e.slice(0,-1)),e[e.length-1]===r&&(e=e.slice(0,-1)),e}function Or(e={}){const{env:t=process.env,platform:r=process.platform}=e;return r!=="win32"?"PATH":Object.keys(t).reverse().find(n=>n.toUpperCase()==="PATH")||"Path"}function Js(e={}){const{cwd:t=G.cwd(),path:r=G.env[Or()],execPath:n=G.execPath}=e;let s;const o=t instanceof URL?An.fileURLToPath(t):t;let u=ee.resolve(o);const a=[];for(;s!==u;)a.push(ee.join(u,"node_modules/.bin")),s=u,u=ee.resolve(u,"..");return a.push(ee.resolve(o,n,"..")),[...a,r].join(ee.delimiter)}function Zs({env:e=G.env,...t}={}){e={...e};const r=Or({env:e});return t.path=e[r],e[r]=Js(t),e}const Qs=(e,t,r,n)=>{if(r==="length"||r==="prototype"||r==="arguments"||r==="caller")return;const s=Object.getOwnPropertyDescriptor(e,r),o=Object.getOwnPropertyDescriptor(t,r);!eu(s,o)&&n||Object.defineProperty(e,r,o)},eu=function(e,t){return e===void 0||e.configurable||e.writable===t.writable&&e.enumerable===t.enumerable&&e.configurable===t.configurable&&(e.writable||e.value===t.value)},tu=(e,t)=>{const r=Object.getPrototypeOf(t);r!==Object.getPrototypeOf(e)&&Object.setPrototypeOf(e,r)},ru=(e,t)=>`/* Wrapped ${e}*/
25
- ${t}`,nu=Object.getOwnPropertyDescriptor(Function.prototype,"toString"),ou=Object.getOwnPropertyDescriptor(Function.prototype.toString,"name"),su=(e,t,r)=>{const n=r===""?"":`with ${r.trim()}() `,s=ru.bind(null,n,t.toString());Object.defineProperty(s,"name",ou),Object.defineProperty(e,"toString",{...nu,value:s})};function uu(e,t,{ignoreNonConfigurable:r=!1}={}){const{name:n}=e;for(const s of Reflect.ownKeys(t))Qs(e,t,s,r);return tu(e,t),su(e,t,n),e}const Be=new WeakMap,Sr=(e,t={})=>{if(typeof e!="function")throw new TypeError("Expected a function");let r,n=0;const s=e.displayName||e.name||"<anonymous>",o=function(...u){if(Be.set(o,++n),n===1)r=e.apply(this,u),e=null;else if(t.throw===!0)throw new Error(`Function \`${s}\` can only be called once`);return r};return uu(o,e),Be.set(o,n),o};Sr.callCount=e=>{if(!Be.has(e))throw new Error(`The given function \`${e.name}\` is not wrapped by the \`onetime\` package`);return Be.get(e)};const iu=()=>{const e=Mr-Ir+1;return Array.from({length:e},au)},au=(e,t)=>({name:`SIGRT${t+1}`,number:Ir+t,action:"terminate",description:"Application-specific signal (realtime)",standard:"posix"}),Ir=34,Mr=64,Du=[{name:"SIGHUP",number:1,action:"terminate",description:"Terminal closed",standard:"posix"},{name:"SIGINT",number:2,action:"terminate",description:"User interruption with CTRL-C",standard:"ansi"},{name:"SIGQUIT",number:3,action:"core",description:"User interruption with CTRL-\\",standard:"posix"},{name:"SIGILL",number:4,action:"core",description:"Invalid machine instruction",standard:"ansi"},{name:"SIGTRAP",number:5,action:"core",description:"Debugger breakpoint",standard:"posix"},{name:"SIGABRT",number:6,action:"core",description:"Aborted",standard:"ansi"},{name:"SIGIOT",number:6,action:"core",description:"Aborted",standard:"bsd"},{name:"SIGBUS",number:7,action:"core",description:"Bus error due to misaligned, non-existing address or paging error",standard:"bsd"},{name:"SIGEMT",number:7,action:"terminate",description:"Command should be emulated but is not implemented",standard:"other"},{name:"SIGFPE",number:8,action:"core",description:"Floating point arithmetic error",standard:"ansi"},{name:"SIGKILL",number:9,action:"terminate",description:"Forced termination",standard:"posix",forced:!0},{name:"SIGUSR1",number:10,action:"terminate",description:"Application-specific signal",standard:"posix"},{name:"SIGSEGV",number:11,action:"core",description:"Segmentation fault",standard:"ansi"},{name:"SIGUSR2",number:12,action:"terminate",description:"Application-specific signal",standard:"posix"},{name:"SIGPIPE",number:13,action:"terminate",description:"Broken pipe or socket",standard:"posix"},{name:"SIGALRM",number:14,action:"terminate",description:"Timeout or timer",standard:"posix"},{name:"SIGTERM",number:15,action:"terminate",description:"Termination",standard:"ansi"},{name:"SIGSTKFLT",number:16,action:"terminate",description:"Stack is empty or overflowed",standard:"other"},{name:"SIGCHLD",number:17,action:"ignore",description:"Child process terminated, paused or unpaused",standard:"posix"},{name:"SIGCLD",number:17,action:"ignore",description:"Child process terminated, paused or unpaused",standard:"other"},{name:"SIGCONT",number:18,action:"unpause",description:"Unpaused",standard:"posix",forced:!0},{name:"SIGSTOP",number:19,action:"pause",description:"Paused",standard:"posix",forced:!0},{name:"SIGTSTP",number:20,action:"pause",description:'Paused using CTRL-Z or "suspend"',standard:"posix"},{name:"SIGTTIN",number:21,action:"pause",description:"Background process cannot read terminal input",standard:"posix"},{name:"SIGBREAK",number:21,action:"terminate",description:"User interruption with CTRL-BREAK",standard:"other"},{name:"SIGTTOU",number:22,action:"pause",description:"Background process cannot write to terminal output",standard:"posix"},{name:"SIGURG",number:23,action:"ignore",description:"Socket received out-of-band data",standard:"bsd"},{name:"SIGXCPU",number:24,action:"core",description:"Process timed out",standard:"bsd"},{name:"SIGXFSZ",number:25,action:"core",description:"File too big",standard:"bsd"},{name:"SIGVTALRM",number:26,action:"terminate",description:"Timeout or timer",standard:"bsd"},{name:"SIGPROF",number:27,action:"terminate",description:"Timeout or timer",standard:"bsd"},{name:"SIGWINCH",number:28,action:"ignore",description:"Terminal window size changed",standard:"bsd"},{name:"SIGIO",number:29,action:"terminate",description:"I/O is available",standard:"other"},{name:"SIGPOLL",number:29,action:"terminate",description:"Watched event",standard:"other"},{name:"SIGINFO",number:29,action:"ignore",description:"Request for process information",standard:"other"},{name:"SIGPWR",number:30,action:"terminate",description:"Device running out of power",standard:"systemv"},{name:"SIGSYS",number:31,action:"core",description:"Invalid system call",standard:"other"},{name:"SIGUNUSED",number:31,action:"terminate",description:"Invalid system call",standard:"other"}],Pr=()=>{const e=iu();return[...Du,...e].map(cu)},cu=({name:e,number:t,description:r,action:n,forced:s=!1,standard:o})=>{const{signals:{[e]:u}}=kt,a=u!==void 0;return{name:e,number:a?u:t,description:r,supported:a,action:n,forced:s,standard:o}},lu=()=>{const e=Pr();return Object.fromEntries(e.map(fu))},fu=({name:e,number:t,description:r,supported:n,action:s,forced:o,standard:u})=>[e,{name:e,number:t,description:r,supported:n,action:s,forced:o,standard:u}],pu=lu(),du=()=>{const e=Pr(),t=Mr+1,r=Array.from({length:t},(n,s)=>mu(s,e));return Object.assign({},...r)},mu=(e,t)=>{const r=hu(e,t);if(r===void 0)return{};const{name:n,description:s,supported:o,action:u,forced:a,standard:i}=r;return{[e]:{name:n,number:e,description:s,supported:o,action:u,forced:a,standard:i}}},hu=(e,t)=>{const r=t.find(({name:n})=>kt.signals[n]===e);return r!==void 0?r:t.find(n=>n.number===e)};du();const gu=({timedOut:e,timeout:t,errorCode:r,signal:n,signalDescription:s,exitCode:o,isCanceled:u})=>e?`timed out after ${t} milliseconds`:u?"was canceled":r!==void 0?`failed with ${r}`:n!==void 0?`was killed with ${n} (${s})`:o!==void 0?`failed with exit code ${o}`:"failed",_r=({stdout:e,stderr:t,all:r,error:n,signal:s,exitCode:o,command:u,escapedCommand:a,timedOut:i,isCanceled:l,killed:f,parsed:{options:{timeout:D}}})=>{o=o===null?void 0:o,s=s===null?void 0:s;const c=s===void 0?void 0:pu[s].description,p=n&&n.code,h=`Command ${gu({timedOut:i,timeout:D,errorCode:p,signal:s,signalDescription:c,exitCode:o,isCanceled:l})}: ${u}`,m=Object.prototype.toString.call(n)==="[object Error]",C=m?`${h}
24
+ `.charCodeAt(),r=typeof e=="string"?"\r":"\r".charCodeAt();return e[e.length-1]===t&&(e=e.slice(0,-1)),e[e.length-1]===r&&(e=e.slice(0,-1)),e}function xr(e={}){const{env:t=process.env,platform:r=process.platform}=e;return r!=="win32"?"PATH":Object.keys(t).reverse().find(n=>n.toUpperCase()==="PATH")||"Path"}function eu(e={}){const{cwd:t=K.cwd(),path:r=K.env[xr()],execPath:n=K.execPath}=e;let s;const o=t instanceof URL?vn.fileURLToPath(t):t;let u=ee.resolve(o);const a=[];for(;s!==u;)a.push(ee.join(u,"node_modules/.bin")),s=u,u=ee.resolve(u,"..");return a.push(ee.resolve(o,n,"..")),[...a,r].join(ee.delimiter)}function tu({env:e=K.env,...t}={}){e={...e};const r=xr({env:e});return t.path=e[r],e[r]=eu(t),e}const ru=(e,t,r,n)=>{if(r==="length"||r==="prototype"||r==="arguments"||r==="caller")return;const s=Object.getOwnPropertyDescriptor(e,r),o=Object.getOwnPropertyDescriptor(t,r);!nu(s,o)&&n||Object.defineProperty(e,r,o)},nu=function(e,t){return e===void 0||e.configurable||e.writable===t.writable&&e.enumerable===t.enumerable&&e.configurable===t.configurable&&(e.writable||e.value===t.value)},ou=(e,t)=>{const r=Object.getPrototypeOf(t);r!==Object.getPrototypeOf(e)&&Object.setPrototypeOf(e,r)},su=(e,t)=>`/* Wrapped ${e}*/
25
+ ${t}`,uu=Object.getOwnPropertyDescriptor(Function.prototype,"toString"),iu=Object.getOwnPropertyDescriptor(Function.prototype.toString,"name"),au=(e,t,r)=>{const n=r===""?"":`with ${r.trim()}() `,s=su.bind(null,n,t.toString());Object.defineProperty(s,"name",iu),Object.defineProperty(e,"toString",{...uu,value:s})};function cu(e,t,{ignoreNonConfigurable:r=!1}={}){const{name:n}=e;for(const s of Reflect.ownKeys(t))ru(e,t,s,r);return ou(e,t),au(e,t,n),e}const Be=new WeakMap,Or=(e,t={})=>{if(typeof e!="function")throw new TypeError("Expected a function");let r,n=0;const s=e.displayName||e.name||"<anonymous>",o=function(...u){if(Be.set(o,++n),n===1)r=e.apply(this,u),e=null;else if(t.throw===!0)throw new Error(`Function \`${s}\` can only be called once`);return r};return cu(o,e),Be.set(o,n),o};Or.callCount=e=>{if(!Be.has(e))throw new Error(`The given function \`${e.name}\` is not wrapped by the \`onetime\` package`);return Be.get(e)};const Du=()=>{const e=Ir-Sr+1;return Array.from({length:e},lu)},lu=(e,t)=>({name:`SIGRT${t+1}`,number:Sr+t,action:"terminate",description:"Application-specific signal (realtime)",standard:"posix"}),Sr=34,Ir=64,fu=[{name:"SIGHUP",number:1,action:"terminate",description:"Terminal closed",standard:"posix"},{name:"SIGINT",number:2,action:"terminate",description:"User interruption with CTRL-C",standard:"ansi"},{name:"SIGQUIT",number:3,action:"core",description:"User interruption with CTRL-\\",standard:"posix"},{name:"SIGILL",number:4,action:"core",description:"Invalid machine instruction",standard:"ansi"},{name:"SIGTRAP",number:5,action:"core",description:"Debugger breakpoint",standard:"posix"},{name:"SIGABRT",number:6,action:"core",description:"Aborted",standard:"ansi"},{name:"SIGIOT",number:6,action:"core",description:"Aborted",standard:"bsd"},{name:"SIGBUS",number:7,action:"core",description:"Bus error due to misaligned, non-existing address or paging error",standard:"bsd"},{name:"SIGEMT",number:7,action:"terminate",description:"Command should be emulated but is not implemented",standard:"other"},{name:"SIGFPE",number:8,action:"core",description:"Floating point arithmetic error",standard:"ansi"},{name:"SIGKILL",number:9,action:"terminate",description:"Forced termination",standard:"posix",forced:!0},{name:"SIGUSR1",number:10,action:"terminate",description:"Application-specific signal",standard:"posix"},{name:"SIGSEGV",number:11,action:"core",description:"Segmentation fault",standard:"ansi"},{name:"SIGUSR2",number:12,action:"terminate",description:"Application-specific signal",standard:"posix"},{name:"SIGPIPE",number:13,action:"terminate",description:"Broken pipe or socket",standard:"posix"},{name:"SIGALRM",number:14,action:"terminate",description:"Timeout or timer",standard:"posix"},{name:"SIGTERM",number:15,action:"terminate",description:"Termination",standard:"ansi"},{name:"SIGSTKFLT",number:16,action:"terminate",description:"Stack is empty or overflowed",standard:"other"},{name:"SIGCHLD",number:17,action:"ignore",description:"Child process terminated, paused or unpaused",standard:"posix"},{name:"SIGCLD",number:17,action:"ignore",description:"Child process terminated, paused or unpaused",standard:"other"},{name:"SIGCONT",number:18,action:"unpause",description:"Unpaused",standard:"posix",forced:!0},{name:"SIGSTOP",number:19,action:"pause",description:"Paused",standard:"posix",forced:!0},{name:"SIGTSTP",number:20,action:"pause",description:'Paused using CTRL-Z or "suspend"',standard:"posix"},{name:"SIGTTIN",number:21,action:"pause",description:"Background process cannot read terminal input",standard:"posix"},{name:"SIGBREAK",number:21,action:"terminate",description:"User interruption with CTRL-BREAK",standard:"other"},{name:"SIGTTOU",number:22,action:"pause",description:"Background process cannot write to terminal output",standard:"posix"},{name:"SIGURG",number:23,action:"ignore",description:"Socket received out-of-band data",standard:"bsd"},{name:"SIGXCPU",number:24,action:"core",description:"Process timed out",standard:"bsd"},{name:"SIGXFSZ",number:25,action:"core",description:"File too big",standard:"bsd"},{name:"SIGVTALRM",number:26,action:"terminate",description:"Timeout or timer",standard:"bsd"},{name:"SIGPROF",number:27,action:"terminate",description:"Timeout or timer",standard:"bsd"},{name:"SIGWINCH",number:28,action:"ignore",description:"Terminal window size changed",standard:"bsd"},{name:"SIGIO",number:29,action:"terminate",description:"I/O is available",standard:"other"},{name:"SIGPOLL",number:29,action:"terminate",description:"Watched event",standard:"other"},{name:"SIGINFO",number:29,action:"ignore",description:"Request for process information",standard:"other"},{name:"SIGPWR",number:30,action:"terminate",description:"Device running out of power",standard:"systemv"},{name:"SIGSYS",number:31,action:"core",description:"Invalid system call",standard:"other"},{name:"SIGUNUSED",number:31,action:"terminate",description:"Invalid system call",standard:"other"}],Mr=()=>{const e=Du();return[...fu,...e].map(pu)},pu=({name:e,number:t,description:r,action:n,forced:s=!1,standard:o})=>{const{signals:{[e]:u}}=Rt,a=u!==void 0;return{name:e,number:a?u:t,description:r,supported:a,action:n,forced:s,standard:o}},du=()=>{const e=Mr();return Object.fromEntries(e.map(mu))},mu=({name:e,number:t,description:r,supported:n,action:s,forced:o,standard:u})=>[e,{name:e,number:t,description:r,supported:n,action:s,forced:o,standard:u}],hu=du(),gu=()=>{const e=Mr(),t=Ir+1,r=Array.from({length:t},(n,s)=>Cu(s,e));return Object.assign({},...r)},Cu=(e,t)=>{const r=Eu(e,t);if(r===void 0)return{};const{name:n,description:s,supported:o,action:u,forced:a,standard:i}=r;return{[e]:{name:n,number:e,description:s,supported:o,action:u,forced:a,standard:i}}},Eu=(e,t)=>{const r=t.find(({name:n})=>Rt.signals[n]===e);return r!==void 0?r:t.find(n=>n.number===e)};gu();const Fu=({timedOut:e,timeout:t,errorCode:r,signal:n,signalDescription:s,exitCode:o,isCanceled:u})=>e?`timed out after ${t} milliseconds`:u?"was canceled":r!==void 0?`failed with ${r}`:n!==void 0?`was killed with ${n} (${s})`:o!==void 0?`failed with exit code ${o}`:"failed",Pr=({stdout:e,stderr:t,all:r,error:n,signal:s,exitCode:o,command:u,escapedCommand:a,timedOut:i,isCanceled:l,killed:f,parsed:{options:{timeout:c}}})=>{o=o===null?void 0:o,s=s===null?void 0:s;const D=s===void 0?void 0:hu[s].description,p=n&&n.code,h=`Command ${Fu({timedOut:i,timeout:c,errorCode:p,signal:s,signalDescription:D,exitCode:o,isCanceled:l})}: ${u}`,m=Object.prototype.toString.call(n)==="[object Error]",C=m?`${h}
26
26
  ${n.message}`:h,b=[C,t,e].filter(Boolean).join(`
27
- `);return m?(n.originalMessage=n.message,n.message=b):n=new Error(b),n.shortMessage=C,n.command=u,n.escapedCommand=a,n.exitCode=o,n.signal=s,n.signalDescription=c,n.stdout=e,n.stderr=t,r!==void 0&&(n.all=r),"bufferedData"in n&&delete n.bufferedData,n.failed=!0,n.timedOut=!!i,n.isCanceled=l,n.killed=f&&!i,n},xe=["stdin","stdout","stderr"],Cu=e=>xe.some(t=>e[t]!==void 0),Fu=e=>{if(!e)return;const{stdio:t}=e;if(t===void 0)return xe.map(n=>e[n]);if(Cu(e))throw new Error(`It's not possible to provide \`stdio\` in combination with one of ${xe.map(n=>`\`${n}\``).join(", ")}`);if(typeof t=="string")return t;if(!Array.isArray(t))throw new TypeError(`Expected \`stdio\` to be of type \`string\` or \`Array\`, got \`${typeof t}\``);const r=Math.max(t.length,xe.length);return Array.from({length:r},(n,s)=>t[s])};var oe={exports:{}},Oe={exports:{}};Oe.exports;var Nr;function Eu(){return Nr||(Nr=1,function(e){e.exports=["SIGABRT","SIGALRM","SIGHUP","SIGINT","SIGTERM"],process.platform!=="win32"&&e.exports.push("SIGVTALRM","SIGXCPU","SIGXFSZ","SIGUSR2","SIGTRAP","SIGSYS","SIGQUIT","SIGIOT"),process.platform==="linux"&&e.exports.push("SIGIO","SIGPOLL","SIGPWR","SIGSTKFLT","SIGUNUSED")}(Oe)),Oe.exports}var y=v.process;const V=function(e){return e&&typeof e=="object"&&typeof e.removeListener=="function"&&typeof e.emit=="function"&&typeof e.reallyExit=="function"&&typeof e.listeners=="function"&&typeof e.kill=="function"&&typeof e.pid=="number"&&typeof e.on=="function"};if(!V(y))oe.exports=function(){return function(){}};else{var yu=jt,fe=Eu(),wu=/^win/i.test(y.platform),Se=Gt;typeof Se!="function"&&(Se=Se.EventEmitter);var $;y.__signal_exit_emitter__?$=y.__signal_exit_emitter__:($=y.__signal_exit_emitter__=new Se,$.count=0,$.emitted={}),$.infinite||($.setMaxListeners(1/0),$.infinite=!0),oe.exports=function(e,t){if(!V(v.process))return function(){};yu.equal(typeof e,"function","a callback must be provided for exit handler"),pe===!1&&Tr();var r="exit";t&&t.alwaysLast&&(r="afterexit");var n=function(){$.removeListener(r,e),$.listeners("exit").length===0&&$.listeners("afterexit").length===0&&Dt()};return $.on(r,e),n};var Dt=function(){!pe||!V(v.process)||(pe=!1,fe.forEach(function(t){try{y.removeListener(t,ct[t])}catch{}}),y.emit=lt,y.reallyExit=Lr,$.count-=1)};oe.exports.unload=Dt;var se=function(t,r,n){$.emitted[t]||($.emitted[t]=!0,$.emit(t,r,n))},ct={};fe.forEach(function(e){ct[e]=function(){if(V(v.process)){var r=y.listeners(e);r.length===$.count&&(Dt(),se("exit",null,e),se("afterexit",null,e),wu&&e==="SIGHUP"&&(e="SIGINT"),y.kill(y.pid,e))}}}),oe.exports.signals=function(){return fe};var pe=!1,Tr=function(){pe||!V(v.process)||(pe=!0,$.count+=1,fe=fe.filter(function(t){try{return y.on(t,ct[t]),!0}catch{return!1}}),y.emit=Au,y.reallyExit=bu)};oe.exports.load=Tr;var Lr=y.reallyExit,bu=function(t){V(v.process)&&(y.exitCode=t||0,se("exit",y.exitCode,null),se("afterexit",y.exitCode,null),Lr.call(y,y.exitCode))},lt=y.emit,Au=function(t,r){if(t==="exit"&&V(v.process)){r!==void 0&&(y.exitCode=r);var n=lt.apply(this,arguments);return se("exit",y.exitCode,null),se("afterexit",y.exitCode,null),n}else return lt.apply(this,arguments)}}var vu=oe.exports,$u=te(vu);const Bu=1e3*5,xu=(e,t="SIGTERM",r={})=>{const n=e(t);return Ou(e,t,r,n),n},Ou=(e,t,r,n)=>{if(!Su(t,r,n))return;const s=Mu(r),o=setTimeout(()=>{e("SIGKILL")},s);o.unref&&o.unref()},Su=(e,{forceKillAfterTimeout:t},r)=>Iu(e)&&t!==!1&&r,Iu=e=>e===vn.constants.signals.SIGTERM||typeof e=="string"&&e.toUpperCase()==="SIGTERM",Mu=({forceKillAfterTimeout:e=!0})=>{if(e===!0)return Bu;if(!Number.isFinite(e)||e<0)throw new TypeError(`Expected the \`forceKillAfterTimeout\` option to be a non-negative integer, got \`${e}\` (${typeof e})`);return e},Pu=(e,t)=>{e.kill()&&(t.isCanceled=!0)},_u=(e,t,r)=>{e.kill(t),r(Object.assign(new Error("Timed out"),{timedOut:!0,signal:t}))},Nu=(e,{timeout:t,killSignal:r="SIGTERM"},n)=>{if(t===0||t===void 0)return n;let s;const o=new Promise((a,i)=>{s=setTimeout(()=>{_u(e,r,i)},t)}),u=n.finally(()=>{clearTimeout(s)});return Promise.race([o,u])},Tu=({timeout:e})=>{if(e!==void 0&&(!Number.isFinite(e)||e<0))throw new TypeError(`Expected the \`timeout\` option to be a non-negative integer, got \`${e}\` (${typeof e})`)},Lu=async(e,{cleanup:t,detached:r},n)=>{if(!t||r)return n;const s=$u(()=>{e.kill()});return n.finally(()=>{s()})};function Ru(e){return e!==null&&typeof e=="object"&&typeof e.pipe=="function"}var de={exports:{}};const{PassThrough:ku}=je;var ju=e=>{e={...e};const{array:t}=e;let{encoding:r}=e;const n=r==="buffer";let s=!1;t?s=!(r||n):r=r||"utf8",n&&(r=null);const o=new ku({objectMode:s});r&&o.setEncoding(r);let u=0;const a=[];return o.on("data",i=>{a.push(i),s?u=a.length:u+=i.length}),o.getBufferedValue=()=>t?a:n?Buffer.concat(a,u):a.join(""),o.getBufferedLength=()=>u,o};const{constants:Gu}=$n,Hu=je,{promisify:Uu}=Ht,Ku=ju,qu=Uu(Hu.pipeline);class Rr extends Error{constructor(){super("maxBuffer exceeded"),this.name="MaxBufferError"}}async function ft(e,t){if(!e)throw new Error("Expected a stream");t={maxBuffer:1/0,...t};const{maxBuffer:r}=t,n=Ku(t);return await new Promise((s,o)=>{const u=a=>{a&&n.getBufferedLength()<=Gu.MAX_LENGTH&&(a.bufferedData=n.getBufferedValue()),o(a)};(async()=>{try{await qu(e,n),s()}catch(a){u(a)}})(),n.on("data",()=>{n.getBufferedLength()>r&&u(new Rr)})}),n.getBufferedValue()}de.exports=ft,de.exports.buffer=(e,t)=>ft(e,{...t,encoding:"buffer"}),de.exports.array=(e,t)=>ft(e,{...t,array:!0}),de.exports.MaxBufferError=Rr;var zu=de.exports,kr=te(zu);const{PassThrough:Yu}=je;var Wu=function(){var e=[],t=new Yu({objectMode:!0});return t.setMaxListeners(0),t.add=r,t.isEmpty=n,t.on("unpipe",s),Array.prototype.slice.call(arguments).forEach(r),t;function r(o){return Array.isArray(o)?(o.forEach(r),this):(e.push(o),o.once("end",s.bind(null,o)),o.once("error",t.emit.bind(t,"error")),o.pipe(t,{end:!1}),this)}function n(){return e.length==0}function s(o){e=e.filter(function(u){return u!==o}),!e.length&&t.readable&&t.end()}},Vu=te(Wu);const Xu=(e,t)=>{t!==void 0&&(Ru(t)?t.pipe(e.stdin):e.stdin.end(t))},Ju=(e,{all:t})=>{if(!t||!e.stdout&&!e.stderr)return;const r=Vu();return e.stdout&&r.add(e.stdout),e.stderr&&r.add(e.stderr),r},pt=async(e,t)=>{if(!(!e||t===void 0)){e.destroy();try{return await t}catch(r){return r.bufferedData}}},dt=(e,{encoding:t,buffer:r,maxBuffer:n})=>{if(!(!e||!r))return t?kr(e,{encoding:t,maxBuffer:n}):kr.buffer(e,{maxBuffer:n})},Zu=async({stdout:e,stderr:t,all:r},{encoding:n,buffer:s,maxBuffer:o},u)=>{const a=dt(e,{encoding:n,buffer:s,maxBuffer:o}),i=dt(t,{encoding:n,buffer:s,maxBuffer:o}),l=dt(r,{encoding:n,buffer:s,maxBuffer:o*2});try{return await Promise.all([u,a,i,l])}catch(f){return Promise.all([{error:f,signal:f.signal,timedOut:f.timedOut},pt(e,a),pt(t,i),pt(r,l)])}},Qu=(async()=>{})().constructor.prototype,ei=["then","catch","finally"].map(e=>[e,Reflect.getOwnPropertyDescriptor(Qu,e)]),jr=(e,t)=>{for(const[r,n]of ei){const s=typeof t=="function"?(...o)=>Reflect.apply(n.value,t(),o):n.value.bind(t);Reflect.defineProperty(e,r,{...n,value:s})}return e},ti=e=>new Promise((t,r)=>{e.on("exit",(n,s)=>{t({exitCode:n,signal:s})}),e.on("error",n=>{r(n)}),e.stdin&&e.stdin.on("error",n=>{r(n)})}),Gr=(e,t=[])=>Array.isArray(t)?[e,...t]:[e],ri=/^[\w.-]+$/,ni=/"/g,oi=e=>typeof e!="string"||ri.test(e)?e:`"${e.replace(ni,'\\"')}"`,si=(e,t)=>Gr(e,t).join(" "),ui=(e,t)=>Gr(e,t).map(r=>oi(r)).join(" "),ii=1e3*1e3*100,ai=({env:e,extendEnv:t,preferLocal:r,localDir:n,execPath:s})=>{const o=t?{...G.env,...e}:e;return r?Zs({env:o,cwd:n,execPath:s}):o},Di=(e,t,r={})=>{const n=Vs._parse(e,t,r);return e=n.command,t=n.args,r=n.options,r={maxBuffer:ii,buffer:!0,stripFinalNewline:!0,extendEnv:!0,preferLocal:!1,localDir:r.cwd||G.cwd(),execPath:G.execPath,encoding:"utf8",reject:!0,cleanup:!0,all:!1,windowsHide:!0,...r},r.env=ai(r),r.stdio=Fu(r),G.platform==="win32"&&ee.basename(e,".exe")==="cmd"&&t.unshift("/q"),{file:e,args:t,options:r,parsed:n}},mt=(e,t,r)=>typeof t!="string"&&!wn.isBuffer(t)?r===void 0?void 0:"":e.stripFinalNewline?Xs(t):t;function ue(e,t,r){const n=Di(e,t,r),s=si(e,t),o=ui(e,t);Tu(n.options);let u;try{u=Rt.spawn(n.file,n.args,n.options)}catch(p){const d=new Rt.ChildProcess,h=Promise.reject(_r({error:p,stdout:"",stderr:"",all:"",command:s,escapedCommand:o,parsed:n,timedOut:!1,isCanceled:!1,killed:!1}));return jr(d,h)}const a=ti(u),i=Nu(u,n.options,a),l=Lu(u,n.options,i),f={isCanceled:!1};u.kill=xu.bind(null,u.kill.bind(u)),u.cancel=Pu.bind(null,u,f);const c=Sr(async()=>{const[{error:p,exitCode:d,signal:h,timedOut:m},C,b,E]=await Zu(u,n.options,l),I=mt(n.options,C),P=mt(n.options,b),z=mt(n.options,E);if(p||d!==0||h!==null){const A=_r({error:p,exitCode:d,signal:h,stdout:I,stderr:P,all:z,command:s,escapedCommand:o,parsed:n,timedOut:m,isCanceled:f.isCanceled||(n.options.signal?n.options.signal.aborted:!1),killed:u.killed});if(!n.options.reject)return A;throw A}return{command:s,escapedCommand:o,exitCode:0,stdout:I,stderr:P,all:z,failed:!1,timedOut:!1,isCanceled:!1,killed:!1}});return Xu(u,n.options.input),u.all=Ju(u,n.options),jr(u,c)}class X{static create(t,r){return new t(r)}}const ci=80,li={"":"<commit message>",conventional:"<type>(<optional scope>): <description>",gitmoji:":<emoji>: <description>"},fi=(e="conventional")=>e===""?"":`The output format must be in ${e} commit type:
28
- ${li[e]}`;`${JSON.stringify({":tada:":"Initial commit",":sparkles:":"Introduce new features",":bug:":"Fix a bug",":memo:":"Writing docs",":fire:":"Remove code or files",":art:":"Improve structure/format of the code commit",":zap:":"Improve performance",":lock:":"Fix security issues",":ambulance:":"Critical hotfix",":rocket:":"Deploy stuff",":lipstick:":"Add or update UI and style files",":construction:":"Work in progress",":green_heart:":"Fix CI build issues"},null,2)}`,`${JSON.stringify({docs:"Documentation only changes",style:"Changes that do not affect the meaning of the code (white-space, formatting, missing semi-colons, etc)",refactor:"A code change that neither fixes a bug nor adds a feature",perf:"A code change that improves performance",test:"Adding missing tests or correcting existing tests",build:"Changes that affect the build system or external dependencies",ci:"Changes to CI configuration files, scripts",chore:"Other changes that don't modify src or test files",revert:"Reverts a previous commit",feat:"A new feature",fix:"A bug fix"},null,2)}`;const J=(e,t,r,n="")=>["You are the author of the changes, you are going to provide a professional git commit message.","Generate a concise git commit message written in present tense for the following code diff with the given specifications below:",`Message language: ${e}.`,`Commit message must be a maximum of ${Math.min(Math.max(t,0),ci)} characters.`,"Exclude anything unnecessary such as explanation. Your entire response will be passed directly into git commit.",n,fi(r)].filter(Boolean).join(`
29
- `),ie=e=>`You must generate ${e} commit messages in numbered list format in Markdown without any explanation.`,pi=e=>/^(build|chore|ci|docs|feat|fix|perf|refactor|revert|style|test){1}(\([\w\-]+\))?(!)?: .{1,80}(\n|\r\n){2}(.*(\n|\r\n)*)*$/.test(e),di=e=>/^\:\w+\: (.*)$/.test(e),q={OPEN_AI:"OPENAI_KEY",GEMINI:"GEMINI_KEY",ANTHROPIC:"ANTHROPIC_KEY",HUGGING:"HUGGING_COOKIE",CLOVA_X:"CLOVAX_COOKIE",MISTRAL:"MISTRAL_KEY",OLLAMA:"OLLAMA_MODEL"},Hr=Object.values(q).map(e=>e);class Z{constructor(t){this.handleError$=r=>{let n="An error occurred";return r.message&&(n=r.message),U({name:`${this.errorPrefix} ${n}`,value:n,isError:!0,disabled:!0})},this.serviceName="AI",this.errorPrefix="ERROR",this.colors={primary:""}}buildPrompt(t,r,n,s,o,u){return`${J(t,s,o,u)}
27
+ `);return m?(n.originalMessage=n.message,n.message=b):n=new Error(b),n.shortMessage=C,n.command=u,n.escapedCommand=a,n.exitCode=o,n.signal=s,n.signalDescription=D,n.stdout=e,n.stderr=t,r!==void 0&&(n.all=r),"bufferedData"in n&&delete n.bufferedData,n.failed=!0,n.timedOut=!!i,n.isCanceled=l,n.killed=f&&!i,n},xe=["stdin","stdout","stderr"],yu=e=>xe.some(t=>e[t]!==void 0),wu=e=>{if(!e)return;const{stdio:t}=e;if(t===void 0)return xe.map(n=>e[n]);if(yu(e))throw new Error(`It's not possible to provide \`stdio\` in combination with one of ${xe.map(n=>`\`${n}\``).join(", ")}`);if(typeof t=="string")return t;if(!Array.isArray(t))throw new TypeError(`Expected \`stdio\` to be of type \`string\` or \`Array\`, got \`${typeof t}\``);const r=Math.max(t.length,xe.length);return Array.from({length:r},(n,s)=>t[s])};var oe={exports:{}},Oe={exports:{}};Oe.exports;var _r;function bu(){return _r||(_r=1,function(e){e.exports=["SIGABRT","SIGALRM","SIGHUP","SIGINT","SIGTERM"],process.platform!=="win32"&&e.exports.push("SIGVTALRM","SIGXCPU","SIGXFSZ","SIGUSR2","SIGTRAP","SIGSYS","SIGQUIT","SIGIOT"),process.platform==="linux"&&e.exports.push("SIGIO","SIGPOLL","SIGPWR","SIGSTKFLT","SIGUNUSED")}(Oe)),Oe.exports}var y=v.process;const J=function(e){return e&&typeof e=="object"&&typeof e.removeListener=="function"&&typeof e.emit=="function"&&typeof e.reallyExit=="function"&&typeof e.listeners=="function"&&typeof e.kill=="function"&&typeof e.pid=="number"&&typeof e.on=="function"};if(!J(y))oe.exports=function(){return function(){}};else{var Au=kt,fe=bu(),vu=/^win/i.test(y.platform),Se=jt;typeof Se!="function"&&(Se=Se.EventEmitter);var $;y.__signal_exit_emitter__?$=y.__signal_exit_emitter__:($=y.__signal_exit_emitter__=new Se,$.count=0,$.emitted={}),$.infinite||($.setMaxListeners(1/0),$.infinite=!0),oe.exports=function(e,t){if(!J(v.process))return function(){};Au.equal(typeof e,"function","a callback must be provided for exit handler"),pe===!1&&Nr();var r="exit";t&&t.alwaysLast&&(r="afterexit");var n=function(){$.removeListener(r,e),$.listeners("exit").length===0&&$.listeners("afterexit").length===0&&at()};return $.on(r,e),n};var at=function(){!pe||!J(v.process)||(pe=!1,fe.forEach(function(t){try{y.removeListener(t,ct[t])}catch{}}),y.emit=Dt,y.reallyExit=Tr,$.count-=1)};oe.exports.unload=at;var se=function(t,r,n){$.emitted[t]||($.emitted[t]=!0,$.emit(t,r,n))},ct={};fe.forEach(function(e){ct[e]=function(){if(J(v.process)){var r=y.listeners(e);r.length===$.count&&(at(),se("exit",null,e),se("afterexit",null,e),vu&&e==="SIGHUP"&&(e="SIGINT"),y.kill(y.pid,e))}}}),oe.exports.signals=function(){return fe};var pe=!1,Nr=function(){pe||!J(v.process)||(pe=!0,$.count+=1,fe=fe.filter(function(t){try{return y.on(t,ct[t]),!0}catch{return!1}}),y.emit=Bu,y.reallyExit=$u)};oe.exports.load=Nr;var Tr=y.reallyExit,$u=function(t){J(v.process)&&(y.exitCode=t||0,se("exit",y.exitCode,null),se("afterexit",y.exitCode,null),Tr.call(y,y.exitCode))},Dt=y.emit,Bu=function(t,r){if(t==="exit"&&J(v.process)){r!==void 0&&(y.exitCode=r);var n=Dt.apply(this,arguments);return se("exit",y.exitCode,null),se("afterexit",y.exitCode,null),n}else return Dt.apply(this,arguments)}}var xu=oe.exports,Ou=te(xu);const Su=1e3*5,Iu=(e,t="SIGTERM",r={})=>{const n=e(t);return Mu(e,t,r,n),n},Mu=(e,t,r,n)=>{if(!Pu(t,r,n))return;const s=Nu(r),o=setTimeout(()=>{e("SIGKILL")},s);o.unref&&o.unref()},Pu=(e,{forceKillAfterTimeout:t},r)=>_u(e)&&t!==!1&&r,_u=e=>e===$n.constants.signals.SIGTERM||typeof e=="string"&&e.toUpperCase()==="SIGTERM",Nu=({forceKillAfterTimeout:e=!0})=>{if(e===!0)return Su;if(!Number.isFinite(e)||e<0)throw new TypeError(`Expected the \`forceKillAfterTimeout\` option to be a non-negative integer, got \`${e}\` (${typeof e})`);return e},Tu=(e,t)=>{e.kill()&&(t.isCanceled=!0)},Lu=(e,t,r)=>{e.kill(t),r(Object.assign(new Error("Timed out"),{timedOut:!0,signal:t}))},Ru=(e,{timeout:t,killSignal:r="SIGTERM"},n)=>{if(t===0||t===void 0)return n;let s;const o=new Promise((a,i)=>{s=setTimeout(()=>{Lu(e,r,i)},t)}),u=n.finally(()=>{clearTimeout(s)});return Promise.race([o,u])},ku=({timeout:e})=>{if(e!==void 0&&(!Number.isFinite(e)||e<0))throw new TypeError(`Expected the \`timeout\` option to be a non-negative integer, got \`${e}\` (${typeof e})`)},ju=async(e,{cleanup:t,detached:r},n)=>{if(!t||r)return n;const s=Ou(()=>{e.kill()});return n.finally(()=>{s()})};function Gu(e){return e!==null&&typeof e=="object"&&typeof e.pipe=="function"}var de={exports:{}};const{PassThrough:Hu}=ke;var Uu=e=>{e={...e};const{array:t}=e;let{encoding:r}=e;const n=r==="buffer";let s=!1;t?s=!(r||n):r=r||"utf8",n&&(r=null);const o=new Hu({objectMode:s});r&&o.setEncoding(r);let u=0;const a=[];return o.on("data",i=>{a.push(i),s?u=a.length:u+=i.length}),o.getBufferedValue=()=>t?a:n?Buffer.concat(a,u):a.join(""),o.getBufferedLength=()=>u,o};const{constants:Ku}=Bn,qu=ke,{promisify:zu}=Gt,Yu=Uu,Wu=zu(qu.pipeline);class Lr extends Error{constructor(){super("maxBuffer exceeded"),this.name="MaxBufferError"}}async function lt(e,t){if(!e)throw new Error("Expected a stream");t={maxBuffer:1/0,...t};const{maxBuffer:r}=t,n=Yu(t);return await new Promise((s,o)=>{const u=a=>{a&&n.getBufferedLength()<=Ku.MAX_LENGTH&&(a.bufferedData=n.getBufferedValue()),o(a)};(async()=>{try{await Wu(e,n),s()}catch(a){u(a)}})(),n.on("data",()=>{n.getBufferedLength()>r&&u(new Lr)})}),n.getBufferedValue()}de.exports=lt,de.exports.buffer=(e,t)=>lt(e,{...t,encoding:"buffer"}),de.exports.array=(e,t)=>lt(e,{...t,array:!0}),de.exports.MaxBufferError=Lr;var Vu=de.exports,Rr=te(Vu);const{PassThrough:Xu}=ke;var Ju=function(){var e=[],t=new Xu({objectMode:!0});return t.setMaxListeners(0),t.add=r,t.isEmpty=n,t.on("unpipe",s),Array.prototype.slice.call(arguments).forEach(r),t;function r(o){return Array.isArray(o)?(o.forEach(r),this):(e.push(o),o.once("end",s.bind(null,o)),o.once("error",t.emit.bind(t,"error")),o.pipe(t,{end:!1}),this)}function n(){return e.length==0}function s(o){e=e.filter(function(u){return u!==o}),!e.length&&t.readable&&t.end()}},Zu=te(Ju);const Qu=(e,t)=>{t!==void 0&&(Gu(t)?t.pipe(e.stdin):e.stdin.end(t))},ei=(e,{all:t})=>{if(!t||!e.stdout&&!e.stderr)return;const r=Zu();return e.stdout&&r.add(e.stdout),e.stderr&&r.add(e.stderr),r},ft=async(e,t)=>{if(!(!e||t===void 0)){e.destroy();try{return await t}catch(r){return r.bufferedData}}},pt=(e,{encoding:t,buffer:r,maxBuffer:n})=>{if(!(!e||!r))return t?Rr(e,{encoding:t,maxBuffer:n}):Rr.buffer(e,{maxBuffer:n})},ti=async({stdout:e,stderr:t,all:r},{encoding:n,buffer:s,maxBuffer:o},u)=>{const a=pt(e,{encoding:n,buffer:s,maxBuffer:o}),i=pt(t,{encoding:n,buffer:s,maxBuffer:o}),l=pt(r,{encoding:n,buffer:s,maxBuffer:o*2});try{return await Promise.all([u,a,i,l])}catch(f){return Promise.all([{error:f,signal:f.signal,timedOut:f.timedOut},ft(e,a),ft(t,i),ft(r,l)])}},ri=(async()=>{})().constructor.prototype,ni=["then","catch","finally"].map(e=>[e,Reflect.getOwnPropertyDescriptor(ri,e)]),kr=(e,t)=>{for(const[r,n]of ni){const s=typeof t=="function"?(...o)=>Reflect.apply(n.value,t(),o):n.value.bind(t);Reflect.defineProperty(e,r,{...n,value:s})}return e},oi=e=>new Promise((t,r)=>{e.on("exit",(n,s)=>{t({exitCode:n,signal:s})}),e.on("error",n=>{r(n)}),e.stdin&&e.stdin.on("error",n=>{r(n)})}),jr=(e,t=[])=>Array.isArray(t)?[e,...t]:[e],si=/^[\w.-]+$/,ui=/"/g,ii=e=>typeof e!="string"||si.test(e)?e:`"${e.replace(ui,'\\"')}"`,ai=(e,t)=>jr(e,t).join(" "),ci=(e,t)=>jr(e,t).map(r=>ii(r)).join(" "),Di=1e3*1e3*100,li=({env:e,extendEnv:t,preferLocal:r,localDir:n,execPath:s})=>{const o=t?{...K.env,...e}:e;return r?tu({env:o,cwd:n,execPath:s}):o},fi=(e,t,r={})=>{const n=Zs._parse(e,t,r);return e=n.command,t=n.args,r=n.options,r={maxBuffer:Di,buffer:!0,stripFinalNewline:!0,extendEnv:!0,preferLocal:!1,localDir:r.cwd||K.cwd(),execPath:K.execPath,encoding:"utf8",reject:!0,cleanup:!0,all:!1,windowsHide:!0,...r},r.env=li(r),r.stdio=wu(r),K.platform==="win32"&&ee.basename(e,".exe")==="cmd"&&t.unshift("/q"),{file:e,args:t,options:r,parsed:n}},dt=(e,t,r)=>typeof t!="string"&&!bn.isBuffer(t)?r===void 0?void 0:"":e.stripFinalNewline?Qs(t):t;function ue(e,t,r){const n=fi(e,t,r),s=ai(e,t),o=ci(e,t);ku(n.options);let u;try{u=Lt.spawn(n.file,n.args,n.options)}catch(p){const d=new Lt.ChildProcess,h=Promise.reject(Pr({error:p,stdout:"",stderr:"",all:"",command:s,escapedCommand:o,parsed:n,timedOut:!1,isCanceled:!1,killed:!1}));return kr(d,h)}const a=oi(u),i=Ru(u,n.options,a),l=ju(u,n.options,i),f={isCanceled:!1};u.kill=Iu.bind(null,u.kill.bind(u)),u.cancel=Tu.bind(null,u,f);const D=Or(async()=>{const[{error:p,exitCode:d,signal:h,timedOut:m},C,b,F]=await ti(u,n.options,l),M=dt(n.options,C),N=dt(n.options,b),W=dt(n.options,F);if(p||d!==0||h!==null){const A=Pr({error:p,exitCode:d,signal:h,stdout:M,stderr:N,all:W,command:s,escapedCommand:o,parsed:n,timedOut:m,isCanceled:f.isCanceled||(n.options.signal?n.options.signal.aborted:!1),killed:u.killed});if(!n.options.reject)return A;throw A}return{command:s,escapedCommand:o,exitCode:0,stdout:M,stderr:N,all:W,failed:!1,timedOut:!1,isCanceled:!1,killed:!1}});return Qu(u,n.options.input),u.all=ei(u,n.options),kr(u,D)}class z{static create(t,r){return new t(r)}}const pi=80,di={"":"<commit message>",conventional:"<type>(<optional scope>): <description>",gitmoji:":<emoji>: <description>"},mi=(e="conventional")=>e===""?"":`The output format must be in ${e} commit type:
28
+ ${di[e]}`;`${JSON.stringify({":tada:":"Initial commit",":sparkles:":"Introduce new features",":bug:":"Fix a bug",":memo:":"Writing docs",":fire:":"Remove code or files",":art:":"Improve structure/format of the code commit",":zap:":"Improve performance",":lock:":"Fix security issues",":ambulance:":"Critical hotfix",":rocket:":"Deploy stuff",":lipstick:":"Add or update UI and style files",":construction:":"Work in progress",":green_heart:":"Fix CI build issues"},null,2)}`,`${JSON.stringify({docs:"Documentation only changes",style:"Changes that do not affect the meaning of the code (white-space, formatting, missing semi-colons, etc)",refactor:"A code change that neither fixes a bug nor adds a feature",perf:"A code change that improves performance",test:"Adding missing tests or correcting existing tests",build:"Changes that affect the build system or external dependencies",ci:"Changes to CI configuration files, scripts",chore:"Other changes that don't modify src or test files",revert:"Reverts a previous commit",feat:"A new feature",fix:"A bug fix"},null,2)}`;const Z=(e,t,r,n="")=>["You are the author of the changes, you are going to provide a professional git commit message.","Generate a concise git commit message written in present tense for the following code diff with the given specifications below:",`Message language: ${e}.`,`Commit message must be a maximum of ${Math.min(Math.max(t,0),pi)} characters.`,"Exclude anything unnecessary such as explanation. Your entire response will be passed directly into git commit.",n,mi(r)].filter(Boolean).join(`
29
+ `),ie=e=>`You must generate ${e} commit messages in numbered list format in Markdown without any explanation.`,hi=e=>/^(build|chore|ci|docs|feat|fix|perf|refactor|revert|style|test){1}(\([\w\-]+\))?(!)?: .{1,80}(\n|\r\n){2}(.*(\n|\r\n)*)*$/.test(e),gi=e=>/^\:\w+\: (.*)$/.test(e),H={OPEN_AI:"OPENAI_KEY",GEMINI:"GEMINI_KEY",ANTHROPIC:"ANTHROPIC_KEY",HUGGING:"HUGGING_COOKIE",CLOVA_X:"CLOVAX_COOKIE",MISTRAL:"MISTRAL_KEY",OLLAMA:"OLLAMA_MODEL",COHERE:"COHERE_KEY"},Gr=Object.values(H).map(e=>e);class Y{constructor(t){this.handleError$=r=>{let n="An error occurred";return r.message&&(n=r.message),j({name:`${this.errorPrefix} ${n}`,value:n,isError:!0,disabled:!0})},this.serviceName="AI",this.errorPrefix="ERROR",this.colors={primary:""}}buildPrompt(t,r,n,s,o,u){return`${Z(t,s,o,u)}
30
30
  ${ie(n)}
31
31
  Here are diff:
32
32
  ${r}`}extractCommitMessageFromRawText(t,r){switch(t){case"conventional":const n=new RegExp(/(build|chore|ci|docs|feat|fix|perf|refactor|revert|style|test)(\(.*\))?: .*$/),s=r.match(n);return s?s[0].replace(/: (\w)/,(a,i)=>`: ${i.toLowerCase()}`):"";case"gitmoji":const o=new RegExp(/^\:\w+\: (.*)$/gm),u=r.match(o);return u?u[0]:"";default:return r}}sanitizeMessage(t,r,n){const s=t.split(`
33
- `).map(o=>o.trim().replace(/^\d+\.\s/,"")).map(o=>o.replace(/`/g,"")).map(o=>o.replace(/"/g,"")).map(o=>this.extractCommitMessageFromRawText(r,o)).filter(o=>!!o);return s.length>n?s.slice(0,n):s}}var Ur="1.9.0",mi="A Reactive CLI that generates git commit messages with various AI";class w extends Error{}const ht=" ",Ie=e=>{e instanceof Error&&(e instanceof w||(e.stack&&console.error(g.dim(e.stack.split(`
33
+ `).map(o=>o.trim().replace(/^\d+\.\s/,"")).map(o=>o.replace(/`/g,"")).map(o=>o.replace(/"/g,"")).map(o=>this.extractCommitMessageFromRawText(r,o)).filter(o=>!!o);return s.length>n?s.slice(0,n):s}}var Hr="1.9.2",Ci="A Reactive CLI that generates git commit messages with various AI";class w extends Error{}const mt=" ",Ie=e=>{e instanceof Error&&(e instanceof w||(e.stack&&console.error(g.dim(e.stack.split(`
34
34
  `).slice(1).join(`
35
35
  `))),console.error(`
36
- ${ht}${g.dim(`aicommit2 v${Ur}`)}`),console.error(`
37
- ${ht}Please open a Bug report with the information above:`),console.error(`${ht}https://github.com/tak-bro/aicommit2/issues/new/choose`)))},hi=(e,t)=>{const r=Math.ceil(e),n=Math.floor(t);return Math.floor(Math.random()*(n-r+1))+r};async function*Kr(e){const t=await e;for await(const r of t)yield r}const me=(e,t)=>e.disabled&&!t.disabled?1:!e.disabled&&t.disabled?-1:0,O="done",qr="undone",gi=(e,t,r=!1)=>{const n=e.indexOf(t);if(n!==-1){const s=r?t.length:0;return e.slice(0,n+s).trim()}return e},Ci=H.join(Ue.homedir(),".aicommit2_log"),Fi=new Date,T=(e,t,r,n)=>{const s=`[${e} Response]`,o=Ei(Fi,t),u=`${Ci}/${o}`;if(Y.existsSync(u)){const i=Y.readFileSync(u,"utf-8");zr(u,`${s}
36
+ ${mt}${g.dim(`aicommit2 v${Hr}`)}`),console.error(`
37
+ ${mt}Please open a Bug report with the information above:`),console.error(`${mt}https://github.com/tak-bro/aicommit2/issues/new/choose`)))},Ei=(e,t)=>{const r=Math.ceil(e),n=Math.floor(t);return Math.floor(Math.random()*(n-r+1))+r};async function*Ur(e){const t=await e;for await(const r of t)yield r}const me=(e,t)=>e.disabled&&!t.disabled?1:!e.disabled&&t.disabled?-1:0,O="done",Kr="undone",Fi=(e,t,r=!1)=>{const n=e.indexOf(t);if(n!==-1){const s=r?t.length:0;return e.slice(0,n+s).trim()}return e},yi=q.join(He.homedir(),".aicommit2_log"),wi=new Date,_=(e,t,r,n)=>{const s=`[${e} Response]`,o=bi(wi,t),u=`${yi}/${o}`;if(V.existsSync(u)){const i=V.readFileSync(u,"utf-8");qr(u,`${s}
38
38
  ${n}
39
39
 
40
- ${i}`);return}const a=gi(r,"Here are diff");zr(u,`${s}
40
+ ${i}`);return}const a=Fi(r,"Here are diff");qr(u,`${s}
41
41
  ${n}
42
42
 
43
43
 
@@ -46,31 +46,31 @@ ${a}
46
46
 
47
47
 
48
48
  [Git Diff]
49
- ${t}`)},Ei=(e,t)=>{const{year:r,month:n,day:s,hours:o,minutes:u,seconds:a}=yi(e),l=Pn(0).update(t).digest("hex");return`aic2_${r}-${n}-${s}_${o}:${u}:${a}_${l}.log`},zr=(e,t="")=>{Y.mkdirSync(H.dirname(e),{recursive:!0}),Y.writeFileSync(e,t,"utf-8")},yi=e=>{const t=e.getFullYear().toString(),r=(e.getMonth()+1).toString().padStart(2,"0"),n=e.getDate().toString().padStart(2,"0"),s=e.getHours().toString().padStart(2,"0"),o=e.getMinutes().toString().padStart(2,"0"),u=e.getSeconds().toString().padStart(2,"0");return{year:t,month:r,day:n,hours:s,minutes:o,seconds:u}};var gt={},Ct={exports:{}},he={exports:{}},Ft,Yr;function wi(){if(Yr)return Ft;Yr=1;var e=1e3,t=e*60,r=t*60,n=r*24,s=n*7,o=n*365.25;Ft=function(f,D){D=D||{};var c=typeof f;if(c==="string"&&f.length>0)return u(f);if(c==="number"&&isFinite(f))return D.long?i(f):a(f);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(f))};function u(f){if(f=String(f),!(f.length>100)){var D=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(f);if(D){var c=parseFloat(D[1]),p=(D[2]||"ms").toLowerCase();switch(p){case"years":case"year":case"yrs":case"yr":case"y":return c*o;case"weeks":case"week":case"w":return c*s;case"days":case"day":case"d":return c*n;case"hours":case"hour":case"hrs":case"hr":case"h":return c*r;case"minutes":case"minute":case"mins":case"min":case"m":return c*t;case"seconds":case"second":case"secs":case"sec":case"s":return c*e;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return c;default:return}}}}function a(f){var D=Math.abs(f);return D>=n?Math.round(f/n)+"d":D>=r?Math.round(f/r)+"h":D>=t?Math.round(f/t)+"m":D>=e?Math.round(f/e)+"s":f+"ms"}function i(f){var D=Math.abs(f);return D>=n?l(f,D,n,"day"):D>=r?l(f,D,r,"hour"):D>=t?l(f,D,t,"minute"):D>=e?l(f,D,e,"second"):f+" ms"}function l(f,D,c,p){var d=D>=c*1.5;return Math.round(f/c)+" "+p+(d?"s":"")}return Ft}var Et,Wr;function Vr(){if(Wr)return Et;Wr=1;function e(t){n.debug=n,n.default=n,n.coerce=l,n.disable=u,n.enable=o,n.enabled=a,n.humanize=wi(),n.destroy=f,Object.keys(t).forEach(D=>{n[D]=t[D]}),n.names=[],n.skips=[],n.formatters={};function r(D){let c=0;for(let p=0;p<D.length;p++)c=(c<<5)-c+D.charCodeAt(p),c|=0;return n.colors[Math.abs(c)%n.colors.length]}n.selectColor=r;function n(D){let c,p=null,d,h;function m(...C){if(!m.enabled)return;const b=m,E=Number(new Date),I=E-(c||E);b.diff=I,b.prev=c,b.curr=E,c=E,C[0]=n.coerce(C[0]),typeof C[0]!="string"&&C.unshift("%O");let P=0;C[0]=C[0].replace(/%([a-zA-Z%])/g,(A,Re)=>{if(A==="%%")return"%";P++;const Lt=n.formatters[Re];if(typeof Lt=="function"){const En=C[P];A=Lt.call(b,En),C.splice(P,1),P--}return A}),n.formatArgs.call(b,C),(b.log||n.log).apply(b,C)}return m.namespace=D,m.useColors=n.useColors(),m.color=n.selectColor(D),m.extend=s,m.destroy=n.destroy,Object.defineProperty(m,"enabled",{enumerable:!0,configurable:!1,get:()=>p!==null?p:(d!==n.namespaces&&(d=n.namespaces,h=n.enabled(D)),h),set:C=>{p=C}}),typeof n.init=="function"&&n.init(m),m}function s(D,c){const p=n(this.namespace+(typeof c>"u"?":":c)+D);return p.log=this.log,p}function o(D){n.save(D),n.namespaces=D,n.names=[],n.skips=[];let c;const p=(typeof D=="string"?D:"").split(/[\s,]+/),d=p.length;for(c=0;c<d;c++)p[c]&&(D=p[c].replace(/\*/g,".*?"),D[0]==="-"?n.skips.push(new RegExp("^"+D.slice(1)+"$")):n.names.push(new RegExp("^"+D+"$")))}function u(){const D=[...n.names.map(i),...n.skips.map(i).map(c=>"-"+c)].join(",");return n.enable(""),D}function a(D){if(D[D.length-1]==="*")return!0;let c,p;for(c=0,p=n.skips.length;c<p;c++)if(n.skips[c].test(D))return!1;for(c=0,p=n.names.length;c<p;c++)if(n.names[c].test(D))return!0;return!1}function i(D){return D.toString().substring(2,D.toString().length-2).replace(/\.\*\?$/,"*")}function l(D){return D instanceof Error?D.stack||D.message:D}function f(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")}return n.enable(n.load()),n}return Et=e,Et}he.exports;var Xr;function bi(){return Xr||(Xr=1,function(e,t){t.formatArgs=n,t.save=s,t.load=o,t.useColors=r,t.storage=u(),t.destroy=(()=>{let i=!1;return()=>{i||(i=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})(),t.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"];function r(){return typeof window<"u"&&window.process&&(window.process.type==="renderer"||window.process.__nwjs)?!0:typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)?!1:typeof document<"u"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window<"u"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}function n(i){if(i[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+i[0]+(this.useColors?"%c ":" ")+"+"+e.exports.humanize(this.diff),!this.useColors)return;const l="color: "+this.color;i.splice(1,0,l,"color: inherit");let f=0,D=0;i[0].replace(/%[a-zA-Z%]/g,c=>{c!=="%%"&&(f++,c==="%c"&&(D=f))}),i.splice(D,0,l)}t.log=console.debug||console.log||(()=>{});function s(i){try{i?t.storage.setItem("debug",i):t.storage.removeItem("debug")}catch{}}function o(){let i;try{i=t.storage.getItem("debug")}catch{}return!i&&typeof process<"u"&&"env"in process&&(i=process.env.DEBUG),i}function u(){try{return localStorage}catch{}}e.exports=Vr()(t);const{formatters:a}=e.exports;a.j=function(i){try{return JSON.stringify(i)}catch(l){return"[UnexpectedJSONParseError]: "+l.message}}}(he,he.exports)),he.exports}var ge={exports:{}},yt,Jr;function Ai(){return Jr||(Jr=1,yt=(e,t=process.argv)=>{const r=e.startsWith("-")?"":e.length===1?"-":"--",n=t.indexOf(r+e),s=t.indexOf("--");return n!==-1&&(s===-1||n<s)}),yt}var wt,Zr;function vi(){if(Zr)return wt;Zr=1;const e=Ue,t=ke,r=Ai(),{env:n}=process;let s;r("no-color")||r("no-colors")||r("color=false")||r("color=never")?s=0:(r("color")||r("colors")||r("color=true")||r("color=always"))&&(s=1),"FORCE_COLOR"in n&&(n.FORCE_COLOR==="true"?s=1:n.FORCE_COLOR==="false"?s=0:s=n.FORCE_COLOR.length===0?1:Math.min(parseInt(n.FORCE_COLOR,10),3));function o(i){return i===0?!1:{level:i,hasBasic:!0,has256:i>=2,has16m:i>=3}}function u(i,l){if(s===0)return 0;if(r("color=16m")||r("color=full")||r("color=truecolor"))return 3;if(r("color=256"))return 2;if(i&&!l&&s===void 0)return 0;const f=s||0;if(n.TERM==="dumb")return f;if(process.platform==="win32"){const D=e.release().split(".");return Number(D[0])>=10&&Number(D[2])>=10586?Number(D[2])>=14931?3:2:1}if("CI"in n)return["TRAVIS","CIRCLECI","APPVEYOR","GITLAB_CI","GITHUB_ACTIONS","BUILDKITE"].some(D=>D in n)||n.CI_NAME==="codeship"?1:f;if("TEAMCITY_VERSION"in n)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(n.TEAMCITY_VERSION)?1:0;if(n.COLORTERM==="truecolor")return 3;if("TERM_PROGRAM"in n){const D=parseInt((n.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(n.TERM_PROGRAM){case"iTerm.app":return D>=3?3:2;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test(n.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(n.TERM)||"COLORTERM"in n?1:f}function a(i){const l=u(i,i&&i.isTTY);return o(l)}return wt={supportsColor:a,stdout:o(u(!0,t.isatty(1))),stderr:o(u(!0,t.isatty(2)))},wt}ge.exports;var Qr;function $i(){return Qr||(Qr=1,function(e,t){const r=ke,n=Ht;t.init=f,t.log=a,t.formatArgs=o,t.save=i,t.load=l,t.useColors=s,t.destroy=n.deprecate(()=>{},"Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."),t.colors=[6,2,3,4,5,1];try{const c=vi();c&&(c.stderr||c).level>=2&&(t.colors=[20,21,26,27,32,33,38,39,40,41,42,43,44,45,56,57,62,63,68,69,74,75,76,77,78,79,80,81,92,93,98,99,112,113,128,129,134,135,148,149,160,161,162,163,164,165,166,167,168,169,170,171,172,173,178,179,184,185,196,197,198,199,200,201,202,203,204,205,206,207,208,209,214,215,220,221])}catch{}t.inspectOpts=Object.keys(process.env).filter(c=>/^debug_/i.test(c)).reduce((c,p)=>{const d=p.substring(6).toLowerCase().replace(/_([a-z])/g,(m,C)=>C.toUpperCase());let h=process.env[p];return/^(yes|on|true|enabled)$/i.test(h)?h=!0:/^(no|off|false|disabled)$/i.test(h)?h=!1:h==="null"?h=null:h=Number(h),c[d]=h,c},{});function s(){return"colors"in t.inspectOpts?!!t.inspectOpts.colors:r.isatty(process.stderr.fd)}function o(c){const{namespace:p,useColors:d}=this;if(d){const h=this.color,m="\x1B[3"+(h<8?h:"8;5;"+h),C=` ${m};1m${p} \x1B[0m`;c[0]=C+c[0].split(`
49
+ ${t}`)},bi=(e,t)=>{const{year:r,month:n,day:s,hours:o,minutes:u,seconds:a}=Ai(e),l=_n(0).update(t).digest("hex");return`aic2_${r}-${n}-${s}_${o}:${u}:${a}_${l}.log`},qr=(e,t="")=>{V.mkdirSync(q.dirname(e),{recursive:!0}),V.writeFileSync(e,t,"utf-8")},Ai=e=>{const t=e.getFullYear().toString(),r=(e.getMonth()+1).toString().padStart(2,"0"),n=e.getDate().toString().padStart(2,"0"),s=e.getHours().toString().padStart(2,"0"),o=e.getMinutes().toString().padStart(2,"0"),u=e.getSeconds().toString().padStart(2,"0");return{year:t,month:r,day:n,hours:s,minutes:o,seconds:u}};var ht={},gt={exports:{}},he={exports:{}},Ct,zr;function vi(){if(zr)return Ct;zr=1;var e=1e3,t=e*60,r=t*60,n=r*24,s=n*7,o=n*365.25;Ct=function(f,c){c=c||{};var D=typeof f;if(D==="string"&&f.length>0)return u(f);if(D==="number"&&isFinite(f))return c.long?i(f):a(f);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(f))};function u(f){if(f=String(f),!(f.length>100)){var c=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(f);if(c){var D=parseFloat(c[1]),p=(c[2]||"ms").toLowerCase();switch(p){case"years":case"year":case"yrs":case"yr":case"y":return D*o;case"weeks":case"week":case"w":return D*s;case"days":case"day":case"d":return D*n;case"hours":case"hour":case"hrs":case"hr":case"h":return D*r;case"minutes":case"minute":case"mins":case"min":case"m":return D*t;case"seconds":case"second":case"secs":case"sec":case"s":return D*e;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return D;default:return}}}}function a(f){var c=Math.abs(f);return c>=n?Math.round(f/n)+"d":c>=r?Math.round(f/r)+"h":c>=t?Math.round(f/t)+"m":c>=e?Math.round(f/e)+"s":f+"ms"}function i(f){var c=Math.abs(f);return c>=n?l(f,c,n,"day"):c>=r?l(f,c,r,"hour"):c>=t?l(f,c,t,"minute"):c>=e?l(f,c,e,"second"):f+" ms"}function l(f,c,D,p){var d=c>=D*1.5;return Math.round(f/D)+" "+p+(d?"s":"")}return Ct}var Et,Yr;function Wr(){if(Yr)return Et;Yr=1;function e(t){n.debug=n,n.default=n,n.coerce=l,n.disable=u,n.enable=o,n.enabled=a,n.humanize=vi(),n.destroy=f,Object.keys(t).forEach(c=>{n[c]=t[c]}),n.names=[],n.skips=[],n.formatters={};function r(c){let D=0;for(let p=0;p<c.length;p++)D=(D<<5)-D+c.charCodeAt(p),D|=0;return n.colors[Math.abs(D)%n.colors.length]}n.selectColor=r;function n(c){let D,p=null,d,h;function m(...C){if(!m.enabled)return;const b=m,F=Number(new Date),M=F-(D||F);b.diff=M,b.prev=D,b.curr=F,D=F,C[0]=n.coerce(C[0]),typeof C[0]!="string"&&C.unshift("%O");let N=0;C[0]=C[0].replace(/%([a-zA-Z%])/g,(A,Le)=>{if(A==="%%")return"%";N++;const Tt=n.formatters[Le];if(typeof Tt=="function"){const yn=C[N];A=Tt.call(b,yn),C.splice(N,1),N--}return A}),n.formatArgs.call(b,C),(b.log||n.log).apply(b,C)}return m.namespace=c,m.useColors=n.useColors(),m.color=n.selectColor(c),m.extend=s,m.destroy=n.destroy,Object.defineProperty(m,"enabled",{enumerable:!0,configurable:!1,get:()=>p!==null?p:(d!==n.namespaces&&(d=n.namespaces,h=n.enabled(c)),h),set:C=>{p=C}}),typeof n.init=="function"&&n.init(m),m}function s(c,D){const p=n(this.namespace+(typeof D>"u"?":":D)+c);return p.log=this.log,p}function o(c){n.save(c),n.namespaces=c,n.names=[],n.skips=[];let D;const p=(typeof c=="string"?c:"").split(/[\s,]+/),d=p.length;for(D=0;D<d;D++)p[D]&&(c=p[D].replace(/\*/g,".*?"),c[0]==="-"?n.skips.push(new RegExp("^"+c.slice(1)+"$")):n.names.push(new RegExp("^"+c+"$")))}function u(){const c=[...n.names.map(i),...n.skips.map(i).map(D=>"-"+D)].join(",");return n.enable(""),c}function a(c){if(c[c.length-1]==="*")return!0;let D,p;for(D=0,p=n.skips.length;D<p;D++)if(n.skips[D].test(c))return!1;for(D=0,p=n.names.length;D<p;D++)if(n.names[D].test(c))return!0;return!1}function i(c){return c.toString().substring(2,c.toString().length-2).replace(/\.\*\?$/,"*")}function l(c){return c instanceof Error?c.stack||c.message:c}function f(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")}return n.enable(n.load()),n}return Et=e,Et}he.exports;var Vr;function $i(){return Vr||(Vr=1,function(e,t){t.formatArgs=n,t.save=s,t.load=o,t.useColors=r,t.storage=u(),t.destroy=(()=>{let i=!1;return()=>{i||(i=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})(),t.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"];function r(){return typeof window<"u"&&window.process&&(window.process.type==="renderer"||window.process.__nwjs)?!0:typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)?!1:typeof document<"u"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window<"u"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}function n(i){if(i[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+i[0]+(this.useColors?"%c ":" ")+"+"+e.exports.humanize(this.diff),!this.useColors)return;const l="color: "+this.color;i.splice(1,0,l,"color: inherit");let f=0,c=0;i[0].replace(/%[a-zA-Z%]/g,D=>{D!=="%%"&&(f++,D==="%c"&&(c=f))}),i.splice(c,0,l)}t.log=console.debug||console.log||(()=>{});function s(i){try{i?t.storage.setItem("debug",i):t.storage.removeItem("debug")}catch{}}function o(){let i;try{i=t.storage.getItem("debug")}catch{}return!i&&typeof process<"u"&&"env"in process&&(i=process.env.DEBUG),i}function u(){try{return localStorage}catch{}}e.exports=Wr()(t);const{formatters:a}=e.exports;a.j=function(i){try{return JSON.stringify(i)}catch(l){return"[UnexpectedJSONParseError]: "+l.message}}}(he,he.exports)),he.exports}var ge={exports:{}},Ft,Xr;function Bi(){return Xr||(Xr=1,Ft=(e,t=process.argv)=>{const r=e.startsWith("-")?"":e.length===1?"-":"--",n=t.indexOf(r+e),s=t.indexOf("--");return n!==-1&&(s===-1||n<s)}),Ft}var yt,Jr;function xi(){if(Jr)return yt;Jr=1;const e=He,t=Re,r=Bi(),{env:n}=process;let s;r("no-color")||r("no-colors")||r("color=false")||r("color=never")?s=0:(r("color")||r("colors")||r("color=true")||r("color=always"))&&(s=1),"FORCE_COLOR"in n&&(n.FORCE_COLOR==="true"?s=1:n.FORCE_COLOR==="false"?s=0:s=n.FORCE_COLOR.length===0?1:Math.min(parseInt(n.FORCE_COLOR,10),3));function o(i){return i===0?!1:{level:i,hasBasic:!0,has256:i>=2,has16m:i>=3}}function u(i,l){if(s===0)return 0;if(r("color=16m")||r("color=full")||r("color=truecolor"))return 3;if(r("color=256"))return 2;if(i&&!l&&s===void 0)return 0;const f=s||0;if(n.TERM==="dumb")return f;if(process.platform==="win32"){const c=e.release().split(".");return Number(c[0])>=10&&Number(c[2])>=10586?Number(c[2])>=14931?3:2:1}if("CI"in n)return["TRAVIS","CIRCLECI","APPVEYOR","GITLAB_CI","GITHUB_ACTIONS","BUILDKITE"].some(c=>c in n)||n.CI_NAME==="codeship"?1:f;if("TEAMCITY_VERSION"in n)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(n.TEAMCITY_VERSION)?1:0;if(n.COLORTERM==="truecolor")return 3;if("TERM_PROGRAM"in n){const c=parseInt((n.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(n.TERM_PROGRAM){case"iTerm.app":return c>=3?3:2;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test(n.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(n.TERM)||"COLORTERM"in n?1:f}function a(i){const l=u(i,i&&i.isTTY);return o(l)}return yt={supportsColor:a,stdout:o(u(!0,t.isatty(1))),stderr:o(u(!0,t.isatty(2)))},yt}ge.exports;var Zr;function Oi(){return Zr||(Zr=1,function(e,t){const r=Re,n=Gt;t.init=f,t.log=a,t.formatArgs=o,t.save=i,t.load=l,t.useColors=s,t.destroy=n.deprecate(()=>{},"Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."),t.colors=[6,2,3,4,5,1];try{const D=xi();D&&(D.stderr||D).level>=2&&(t.colors=[20,21,26,27,32,33,38,39,40,41,42,43,44,45,56,57,62,63,68,69,74,75,76,77,78,79,80,81,92,93,98,99,112,113,128,129,134,135,148,149,160,161,162,163,164,165,166,167,168,169,170,171,172,173,178,179,184,185,196,197,198,199,200,201,202,203,204,205,206,207,208,209,214,215,220,221])}catch{}t.inspectOpts=Object.keys(process.env).filter(D=>/^debug_/i.test(D)).reduce((D,p)=>{const d=p.substring(6).toLowerCase().replace(/_([a-z])/g,(m,C)=>C.toUpperCase());let h=process.env[p];return/^(yes|on|true|enabled)$/i.test(h)?h=!0:/^(no|off|false|disabled)$/i.test(h)?h=!1:h==="null"?h=null:h=Number(h),D[d]=h,D},{});function s(){return"colors"in t.inspectOpts?!!t.inspectOpts.colors:r.isatty(process.stderr.fd)}function o(D){const{namespace:p,useColors:d}=this;if(d){const h=this.color,m="\x1B[3"+(h<8?h:"8;5;"+h),C=` ${m};1m${p} \x1B[0m`;D[0]=C+D[0].split(`
50
50
  `).join(`
51
- `+C),c.push(m+"m+"+e.exports.humanize(this.diff)+"\x1B[0m")}else c[0]=u()+p+" "+c[0]}function u(){return t.inspectOpts.hideDate?"":new Date().toISOString()+" "}function a(...c){return process.stderr.write(n.format(...c)+`
52
- `)}function i(c){c?process.env.DEBUG=c:delete process.env.DEBUG}function l(){return process.env.DEBUG}function f(c){c.inspectOpts={};const p=Object.keys(t.inspectOpts);for(let d=0;d<p.length;d++)c.inspectOpts[p[d]]=t.inspectOpts[p[d]]}e.exports=Vr()(t);const{formatters:D}=e.exports;D.o=function(c){return this.inspectOpts.colors=this.useColors,n.inspect(c,this.inspectOpts).split(`
53
- `).map(p=>p.trim()).join(" ")},D.O=function(c){return this.inspectOpts.colors=this.useColors,n.inspect(c,this.inspectOpts)}}(ge,ge.exports)),ge.exports}typeof process>"u"||process.type==="renderer"||process.browser===!0||process.__nwjs?Ct.exports=bi():Ct.exports=$i();var bt=Ct.exports,At={};Object.defineProperty(At,"__esModule",{value:!0});function Bi(e){return function(t,r){return new Promise((n,s)=>{e.call(this,t,r,(o,u)=>{o?s(o):n(u)})})}}At.default=Bi;var en=v&&v.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};const xi=Gt,Oi=en(bt),Si=en(At),Ce=Oi.default("agent-base");function Ii(e){return!!e&&typeof e.addRequest=="function"}function vt(){const{stack:e}=new Error;return typeof e!="string"?!1:e.split(`
54
- `).some(t=>t.indexOf("(https.js:")!==-1||t.indexOf("node:https:")!==-1)}function Me(e,t){return new Me.Agent(e,t)}(function(e){class t extends xi.EventEmitter{constructor(n,s){super();let o=s;typeof n=="function"?this.callback=n:n&&(o=n),this.timeout=null,o&&typeof o.timeout=="number"&&(this.timeout=o.timeout),this.maxFreeSockets=1,this.maxSockets=1,this.maxTotalSockets=1/0,this.sockets={},this.freeSockets={},this.requests={},this.options={}}get defaultPort(){return typeof this.explicitDefaultPort=="number"?this.explicitDefaultPort:vt()?443:80}set defaultPort(n){this.explicitDefaultPort=n}get protocol(){return typeof this.explicitProtocol=="string"?this.explicitProtocol:vt()?"https:":"http:"}set protocol(n){this.explicitProtocol=n}callback(n,s,o){throw new Error('"agent-base" has no default implementation, you must subclass and override `callback()`')}addRequest(n,s){const o=Object.assign({},s);typeof o.secureEndpoint!="boolean"&&(o.secureEndpoint=vt()),o.host==null&&(o.host="localhost"),o.port==null&&(o.port=o.secureEndpoint?443:80),o.protocol==null&&(o.protocol=o.secureEndpoint?"https:":"http:"),o.host&&o.path&&delete o.path,delete o.agent,delete o.hostname,delete o._defaultAgent,delete o.defaultPort,delete o.createConnection,n._last=!0,n.shouldKeepAlive=!1;let u=!1,a=null;const i=o.timeout||this.timeout,l=p=>{n._hadError||(n.emit("error",p),n._hadError=!0)},f=()=>{a=null,u=!0;const p=new Error(`A "socket" was not created for HTTP request before ${i}ms`);p.code="ETIMEOUT",l(p)},D=p=>{u||(a!==null&&(clearTimeout(a),a=null),l(p))},c=p=>{if(u)return;if(a!=null&&(clearTimeout(a),a=null),Ii(p)){Ce("Callback returned another Agent instance %o",p.constructor.name),p.addRequest(n,o);return}if(p){p.once("free",()=>{this.freeSocket(p,o)}),n.onSocket(p);return}const d=new Error(`no Duplex stream was returned to agent-base for \`${n.method} ${n.path}\``);l(d)};if(typeof this.callback!="function"){l(new Error("`callback` is not defined"));return}this.promisifiedCallback||(this.callback.length>=3?(Ce("Converting legacy callback function to promise"),this.promisifiedCallback=Si.default(this.callback)):this.promisifiedCallback=this.callback),typeof i=="number"&&i>0&&(a=setTimeout(f,i)),"port"in o&&typeof o.port!="number"&&(o.port=Number(o.port));try{Ce("Resolving socket for %o request: %o",o.protocol,`${n.method} ${n.path}`),Promise.resolve(this.promisifiedCallback(n,o)).then(c,D)}catch(p){Promise.reject(p).catch(D)}}freeSocket(n,s){Ce("Freeing socket %o %o",n.constructor.name,s),n.destroy()}destroy(){Ce("Destroying agent %o",this.constructor.name)}}e.Agent=t,e.prototype=e.Agent.prototype})(Me||(Me={}));var Mi=Me,$t={},Pi=v&&v.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty($t,"__esModule",{value:!0});const _i=Pi(bt),Fe=_i.default("https-proxy-agent:parse-proxy-response");function Ni(e){return new Promise((t,r)=>{let n=0;const s=[];function o(){const D=e.read();D?f(D):e.once("readable",o)}function u(){e.removeListener("end",i),e.removeListener("error",l),e.removeListener("close",a),e.removeListener("readable",o)}function a(D){Fe("onclose had error %o",D)}function i(){Fe("onend")}function l(D){u(),Fe("onerror %o",D),r(D)}function f(D){s.push(D),n+=D.length;const c=Buffer.concat(s,n);if(c.indexOf(`\r
51
+ `+C),D.push(m+"m+"+e.exports.humanize(this.diff)+"\x1B[0m")}else D[0]=u()+p+" "+D[0]}function u(){return t.inspectOpts.hideDate?"":new Date().toISOString()+" "}function a(...D){return process.stderr.write(n.format(...D)+`
52
+ `)}function i(D){D?process.env.DEBUG=D:delete process.env.DEBUG}function l(){return process.env.DEBUG}function f(D){D.inspectOpts={};const p=Object.keys(t.inspectOpts);for(let d=0;d<p.length;d++)D.inspectOpts[p[d]]=t.inspectOpts[p[d]]}e.exports=Wr()(t);const{formatters:c}=e.exports;c.o=function(D){return this.inspectOpts.colors=this.useColors,n.inspect(D,this.inspectOpts).split(`
53
+ `).map(p=>p.trim()).join(" ")},c.O=function(D){return this.inspectOpts.colors=this.useColors,n.inspect(D,this.inspectOpts)}}(ge,ge.exports)),ge.exports}typeof process>"u"||process.type==="renderer"||process.browser===!0||process.__nwjs?gt.exports=$i():gt.exports=Oi();var wt=gt.exports,bt={};Object.defineProperty(bt,"__esModule",{value:!0});function Si(e){return function(t,r){return new Promise((n,s)=>{e.call(this,t,r,(o,u)=>{o?s(o):n(u)})})}}bt.default=Si;var Qr=v&&v.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};const Ii=jt,Mi=Qr(wt),Pi=Qr(bt),Ce=Mi.default("agent-base");function _i(e){return!!e&&typeof e.addRequest=="function"}function At(){const{stack:e}=new Error;return typeof e!="string"?!1:e.split(`
54
+ `).some(t=>t.indexOf("(https.js:")!==-1||t.indexOf("node:https:")!==-1)}function Me(e,t){return new Me.Agent(e,t)}(function(e){class t extends Ii.EventEmitter{constructor(n,s){super();let o=s;typeof n=="function"?this.callback=n:n&&(o=n),this.timeout=null,o&&typeof o.timeout=="number"&&(this.timeout=o.timeout),this.maxFreeSockets=1,this.maxSockets=1,this.maxTotalSockets=1/0,this.sockets={},this.freeSockets={},this.requests={},this.options={}}get defaultPort(){return typeof this.explicitDefaultPort=="number"?this.explicitDefaultPort:At()?443:80}set defaultPort(n){this.explicitDefaultPort=n}get protocol(){return typeof this.explicitProtocol=="string"?this.explicitProtocol:At()?"https:":"http:"}set protocol(n){this.explicitProtocol=n}callback(n,s,o){throw new Error('"agent-base" has no default implementation, you must subclass and override `callback()`')}addRequest(n,s){const o=Object.assign({},s);typeof o.secureEndpoint!="boolean"&&(o.secureEndpoint=At()),o.host==null&&(o.host="localhost"),o.port==null&&(o.port=o.secureEndpoint?443:80),o.protocol==null&&(o.protocol=o.secureEndpoint?"https:":"http:"),o.host&&o.path&&delete o.path,delete o.agent,delete o.hostname,delete o._defaultAgent,delete o.defaultPort,delete o.createConnection,n._last=!0,n.shouldKeepAlive=!1;let u=!1,a=null;const i=o.timeout||this.timeout,l=p=>{n._hadError||(n.emit("error",p),n._hadError=!0)},f=()=>{a=null,u=!0;const p=new Error(`A "socket" was not created for HTTP request before ${i}ms`);p.code="ETIMEOUT",l(p)},c=p=>{u||(a!==null&&(clearTimeout(a),a=null),l(p))},D=p=>{if(u)return;if(a!=null&&(clearTimeout(a),a=null),_i(p)){Ce("Callback returned another Agent instance %o",p.constructor.name),p.addRequest(n,o);return}if(p){p.once("free",()=>{this.freeSocket(p,o)}),n.onSocket(p);return}const d=new Error(`no Duplex stream was returned to agent-base for \`${n.method} ${n.path}\``);l(d)};if(typeof this.callback!="function"){l(new Error("`callback` is not defined"));return}this.promisifiedCallback||(this.callback.length>=3?(Ce("Converting legacy callback function to promise"),this.promisifiedCallback=Pi.default(this.callback)):this.promisifiedCallback=this.callback),typeof i=="number"&&i>0&&(a=setTimeout(f,i)),"port"in o&&typeof o.port!="number"&&(o.port=Number(o.port));try{Ce("Resolving socket for %o request: %o",o.protocol,`${n.method} ${n.path}`),Promise.resolve(this.promisifiedCallback(n,o)).then(D,c)}catch(p){Promise.reject(p).catch(c)}}freeSocket(n,s){Ce("Freeing socket %o %o",n.constructor.name,s),n.destroy()}destroy(){Ce("Destroying agent %o",this.constructor.name)}}e.Agent=t,e.prototype=e.Agent.prototype})(Me||(Me={}));var Ni=Me,vt={},Ti=v&&v.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(vt,"__esModule",{value:!0});const Li=Ti(wt),Ee=Li.default("https-proxy-agent:parse-proxy-response");function Ri(e){return new Promise((t,r)=>{let n=0;const s=[];function o(){const c=e.read();c?f(c):e.once("readable",o)}function u(){e.removeListener("end",i),e.removeListener("error",l),e.removeListener("close",a),e.removeListener("readable",o)}function a(c){Ee("onclose had error %o",c)}function i(){Ee("onend")}function l(c){u(),Ee("onerror %o",c),r(c)}function f(c){s.push(c),n+=c.length;const D=Buffer.concat(s,n);if(D.indexOf(`\r
55
55
  \r
56
- `)===-1){Fe("have not received end of HTTP headers yet..."),o();return}const d=c.toString("ascii",0,c.indexOf(`\r
57
- `)),h=+d.split(" ")[1];Fe("got proxy server response: %o",d),t({statusCode:h,buffered:c})}e.on("error",l),e.on("close",a),e.on("end",i),o()})}$t.default=Ni;var Ti=v&&v.__awaiter||function(e,t,r,n){function s(o){return o instanceof r?o:new r(function(u){u(o)})}return new(r||(r=Promise))(function(o,u){function a(f){try{l(n.next(f))}catch(D){u(D)}}function i(f){try{l(n.throw(f))}catch(D){u(D)}}function l(f){f.done?o(f.value):s(f.value).then(a,i)}l((n=n.apply(e,t||[])).next())})},ae=v&&v.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(gt,"__esModule",{value:!0});const tn=ae(Tn),rn=ae(Ln),Li=ae(Rn),Ri=ae(jt),ki=ae(bt),ji=Mi,Gi=ae($t),Ee=ki.default("https-proxy-agent:agent");class Hi extends ji.Agent{constructor(t){let r;if(typeof t=="string"?r=Li.default.parse(t):r=t,!r)throw new Error("an HTTP(S) proxy server `host` and `port` must be specified!");Ee("creating new HttpsProxyAgent instance: %o",r),super(r);const n=Object.assign({},r);this.secureProxy=r.secureProxy||qi(n.protocol),n.host=n.hostname||n.host,typeof n.port=="string"&&(n.port=parseInt(n.port,10)),!n.port&&n.host&&(n.port=this.secureProxy?443:80),this.secureProxy&&!("ALPNProtocols"in n)&&(n.ALPNProtocols=["http 1.1"]),n.host&&n.path&&(delete n.path,delete n.pathname),this.proxy=n}callback(t,r){return Ti(this,void 0,void 0,function*(){const{proxy:n,secureProxy:s}=this;let o;s?(Ee("Creating `tls.Socket`: %o",n),o=rn.default.connect(n)):(Ee("Creating `net.Socket`: %o",n),o=tn.default.connect(n));const u=Object.assign({},n.headers);let i=`CONNECT ${`${r.host}:${r.port}`} HTTP/1.1\r
58
- `;n.auth&&(u["Proxy-Authorization"]=`Basic ${Buffer.from(n.auth).toString("base64")}`);let{host:l,port:f,secureEndpoint:D}=r;Ki(f,D)||(l+=`:${f}`),u.Host=l,u.Connection="close";for(const m of Object.keys(u))i+=`${m}: ${u[m]}\r
59
- `;const c=Gi.default(o);o.write(`${i}\r
60
- `);const{statusCode:p,buffered:d}=yield c;if(p===200){if(t.once("socket",Ui),r.secureEndpoint){Ee("Upgrading socket connection to TLS");const m=r.servername||r.host;return rn.default.connect(Object.assign(Object.assign({},zi(r,"host","hostname","path","port")),{socket:o,servername:m}))}return o}o.destroy();const h=new tn.default.Socket({writable:!1});return h.readable=!0,t.once("socket",m=>{Ee("replaying proxy buffer for failed request"),Ri.default(m.listenerCount("data")>0),m.push(d),m.push(null)}),h})}}gt.default=Hi;function Ui(e){e.resume()}function Ki(e,t){return!!(!t&&e===80||t&&e===443)}function qi(e){return typeof e=="string"?/^https:?$/i.test(e):!1}function zi(e,...t){const r={};let n;for(n in e)t.includes(n)||(r[n]=e[n]);return r}var Yi=v&&v.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};const Bt=Yi(gt);function xt(e){return new Bt.default(e)}(function(e){e.HttpsProxyAgent=Bt.default,e.prototype=Bt.default.prototype})(xt||(xt={}));var Wi=xt,Vi=te(Wi);const Xi=async(e,t,r,n,s,o,u)=>new Promise((a,i)=>{const l=JSON.stringify(n),D=(e.protocol.includes("https")?Nn:_n).request({port:u||void 0,hostname:e.hostname,path:t,method:"POST",headers:{"Content-Type":"application/json","Content-Length":Buffer.byteLength(l),...r},timeout:s,agent:o?Vi(o):void 0},c=>{const p=[];c.on("data",d=>p.push(d)),c.on("end",()=>{a({request:D,response:c,data:Buffer.concat(p).toString()})})});D.on("error",i),D.on("timeout",()=>{D.destroy(),i(new w(`Time out error: request took over ${s}ms. Try increasing the \`timeout\` config`))}),D.write(l),D.end()}),Ji=async(e,t,r,n,s,o)=>{const u=new URL(e),{response:a,data:i}=await Xi(u,t,{Authorization:`Bearer ${r}`},n,s,o);if(!a.statusCode||a.statusCode<200||a.statusCode>299){let l=`OpenAI API Error: ${a.statusCode} - ${a.statusMessage}`;throw i&&(l+=`
56
+ `)===-1){Ee("have not received end of HTTP headers yet..."),o();return}const d=D.toString("ascii",0,D.indexOf(`\r
57
+ `)),h=+d.split(" ")[1];Ee("got proxy server response: %o",d),t({statusCode:h,buffered:D})}e.on("error",l),e.on("close",a),e.on("end",i),o()})}vt.default=Ri;var ki=v&&v.__awaiter||function(e,t,r,n){function s(o){return o instanceof r?o:new r(function(u){u(o)})}return new(r||(r=Promise))(function(o,u){function a(f){try{l(n.next(f))}catch(c){u(c)}}function i(f){try{l(n.throw(f))}catch(c){u(c)}}function l(f){f.done?o(f.value):s(f.value).then(a,i)}l((n=n.apply(e,t||[])).next())})},ae=v&&v.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(ht,"__esModule",{value:!0});const en=ae(Ln),tn=ae(Rn),ji=ae(kn),Gi=ae(kt),Hi=ae(wt),Ui=Ni,Ki=ae(vt),Fe=Hi.default("https-proxy-agent:agent");class qi extends Ui.Agent{constructor(t){let r;if(typeof t=="string"?r=ji.default.parse(t):r=t,!r)throw new Error("an HTTP(S) proxy server `host` and `port` must be specified!");Fe("creating new HttpsProxyAgent instance: %o",r),super(r);const n=Object.assign({},r);this.secureProxy=r.secureProxy||Wi(n.protocol),n.host=n.hostname||n.host,typeof n.port=="string"&&(n.port=parseInt(n.port,10)),!n.port&&n.host&&(n.port=this.secureProxy?443:80),this.secureProxy&&!("ALPNProtocols"in n)&&(n.ALPNProtocols=["http 1.1"]),n.host&&n.path&&(delete n.path,delete n.pathname),this.proxy=n}callback(t,r){return ki(this,void 0,void 0,function*(){const{proxy:n,secureProxy:s}=this;let o;s?(Fe("Creating `tls.Socket`: %o",n),o=tn.default.connect(n)):(Fe("Creating `net.Socket`: %o",n),o=en.default.connect(n));const u=Object.assign({},n.headers);let i=`CONNECT ${`${r.host}:${r.port}`} HTTP/1.1\r
58
+ `;n.auth&&(u["Proxy-Authorization"]=`Basic ${Buffer.from(n.auth).toString("base64")}`);let{host:l,port:f,secureEndpoint:c}=r;Yi(f,c)||(l+=`:${f}`),u.Host=l,u.Connection="close";for(const m of Object.keys(u))i+=`${m}: ${u[m]}\r
59
+ `;const D=Ki.default(o);o.write(`${i}\r
60
+ `);const{statusCode:p,buffered:d}=yield D;if(p===200){if(t.once("socket",zi),r.secureEndpoint){Fe("Upgrading socket connection to TLS");const m=r.servername||r.host;return tn.default.connect(Object.assign(Object.assign({},Vi(r,"host","hostname","path","port")),{socket:o,servername:m}))}return o}o.destroy();const h=new en.default.Socket({writable:!1});return h.readable=!0,t.once("socket",m=>{Fe("replaying proxy buffer for failed request"),Gi.default(m.listenerCount("data")>0),m.push(d),m.push(null)}),h})}}ht.default=qi;function zi(e){e.resume()}function Yi(e,t){return!!(!t&&e===80||t&&e===443)}function Wi(e){return typeof e=="string"?/^https:?$/i.test(e):!1}function Vi(e,...t){const r={};let n;for(n in e)t.includes(n)||(r[n]=e[n]);return r}var Xi=v&&v.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};const $t=Xi(ht);function Bt(e){return new $t.default(e)}(function(e){e.HttpsProxyAgent=$t.default,e.prototype=$t.default.prototype})(Bt||(Bt={}));var Ji=Bt,Zi=te(Ji);const Qi=async(e,t,r,n,s,o,u)=>new Promise((a,i)=>{const l=JSON.stringify(n),c=(e.protocol.includes("https")?Tn:Nn).request({port:u||void 0,hostname:e.hostname,path:t,method:"POST",headers:{"Content-Type":"application/json","Content-Length":Buffer.byteLength(l),...r},timeout:s,agent:o?Zi(o):void 0},D=>{const p=[];D.on("data",d=>p.push(d)),D.on("end",()=>{a({request:c,response:D,data:Buffer.concat(p).toString()})})});c.on("error",i),c.on("timeout",()=>{c.destroy(),i(new w(`Time out error: request took over ${s}ms. Try increasing the \`timeout\` config`))}),c.write(l),c.end()}),ea=async(e,t,r,n,s,o)=>{const u=new URL(e),{response:a,data:i}=await Qi(u,t,{Authorization:`Bearer ${r}`},n,s,o);if(!a.statusCode||a.statusCode<200||a.statusCode>299){let l=`OpenAI API Error: ${a.statusCode} - ${a.statusMessage}`;throw i&&(l+=`
61
61
 
62
62
  ${i}`),a.statusCode===500&&(l+=`
63
63
 
64
- Check the API status: https://status.openai.com`),new w(l)}return JSON.parse(i)},nn=e=>e.trim().replace(/[\n\r]/g,"").replace(/(\w)\.$/,"$1"),k=e=>Array.from(new Set(e)),Zi=async(e,t,r,n,s,o,u,a,i,l,f,D,c,p,d)=>{try{const h=J(s,a,i,c),m=await Ji(e,t,r,{model:n,messages:[{role:"system",content:h},{role:"user",content:o}],temperature:D,top_p:1,frequency_penalty:0,presence_penalty:0,max_tokens:f,stream:!1,n:u},l,d),C=k(m.choices.filter(E=>E.message?.content).map(E=>nn(E.message.content)).map(E=>{if(i==="conventional"){const I=/: (\w)/;return E.replace(I,(P,z)=>`: ${z.toLowerCase()}`)}return E}).filter(E=>{switch(i){case"gitmoji":return di(E);case"conventional":return pi(E);case"":default:return!0}})),b=m.choices.filter(E=>E.message?.content).map(E=>nn(E.message.content)).join();return p&&T("OPEN AI",o,h,b),C}catch(h){const m=h;throw m.code==="ENOTFOUND"?new w(`Error connecting to ${m.hostname} (${m.syscall})`):m}};class Qi extends Z{constructor(t){super(t),this.params=t,this.handleError$=r=>{const n=r.error?.error?.message?.replace(/(\r\n|\n|\r)/gm,"")||"An error occurred";return U({name:`${this.errorPrefix} ${n}`,value:n,isError:!0,disabled:!0})},this.generateStreamChoice$=()=>{const r=this.params.stagedDiff.diff,{locale:n,generate:s,type:o,prompt:u}=this.params.config,a=this.params.config["max-length"],l=`${J(n,a,o,u)}
65
- ${ie(s)}`,f={max_tokens:this.params.config["max-tokens"],temperature:this.params.config.temperature,system:l,messages:[{role:"user",content:r}],model:this.params.config.ANTHROPIC_MODEL,stream:!0},D=this.anthropic.messages.create(f);let c="";return _(Kr(D)).pipe(Ut(p=>["content_block_delta","message_stop"].includes(p.type)),M(p=>p),Kt(p=>{p.type==="content_block_delta"&&(c+=p.delta.text)}),M(p=>{const d=p.type==="message_stop";return{id:this.params.keyName,name:`${this.serviceName} ${c}`,value:`${c}`,isError:!1,description:d?O:qr,disabled:!d}}))},this.colors={primary:"#AE5630",secondary:"#fff"},this.serviceName=g.bgHex(this.colors.primary).hex(this.colors.secondary).bold("[Anthropic]"),this.errorPrefix=g.red.bold("[Anthropic]"),this.anthropic=new Mn({apiKey:this.params.config.ANTHROPIC_KEY})}generateCommitMessage$(){return K(this.generateMessage()).pipe(L(t=>_(t)),M(t=>({name:`${this.serviceName} ${t}`,value:t,isError:!1})),R(this.handleError$))}async generateMessage(){try{const t=this.params.stagedDiff.diff,{locale:r,generate:n,type:s,prompt:o,logging:u}=this.params.config,a=this.params.config["max-length"],l=`${J(r,a,s,o)}
66
- ${ie(n)}`,f={max_tokens:this.params.config["max-tokens"],temperature:this.params.config.temperature,system:l,messages:[{role:"user",content:t}],model:this.params.config.ANTHROPIC_MODEL},c=(await this.anthropic.messages.create(f)).content.map(({text:p})=>p).join("");return u&&T("Anthropic",t,l,c),k(this.sanitizeMessage(c,this.params.config.type,n))}catch(t){const r=t;throw r.code==="ENOTFOUND"?new w(`Error connecting to ${r.hostname} (${r.syscall})`):r}}generateStreamCommitMessage$(){return this.generateStreamChoice$().pipe(qt((t,r)=>{if(r.description===O){const o=k(this.sanitizeMessage(r.value,this.params.config.type,this.params.config.generate)),u=this.params.stagedDiff.diff,{locale:a,generate:i,type:l,prompt:f,logging:D}=this.params.config,c=this.params.config["max-length"],d=`${J(a,c,l,f)}
67
- ${ie(i)}`;return D&&T("Anthropic",u,d,r.value),!o||o.length===0?[{id:`${this.params.keyName}_${O}_0`,name:`${this.serviceName} Failed to extract messages from response`,value:"Failed to extract messages from response",isError:!0,description:O,disabled:!0}]:o.map((m,C)=>({id:`${this.params.keyName}_${O}_${C}`,name:`${this.serviceName} ${m}`,value:`${m}`,isError:!1,description:O,disabled:!1}))}return t.find(o=>o.id===r.id)?[...t.map(o=>r.id===o.id?r:o)]:[{...r}]},[]),L(t=>t),R(this.handleError$))}}const{hasOwnProperty:Ot}=Object.prototype,Pe=typeof process<"u"&&process.platform==="win32"?`\r
64
+ Check the API status: https://status.openai.com`),new w(l)}return JSON.parse(i)},rn=e=>e.trim().replace(/[\n\r]/g,"").replace(/(\w)\.$/,"$1"),k=e=>Array.from(new Set(e)),ta=async(e,t,r,n,s,o,u,a,i,l,f,c,D,p,d)=>{try{const h=Z(s,a,i,D),m=await ea(e,t,r,{model:n,messages:[{role:"system",content:h},{role:"user",content:o}],temperature:c,top_p:1,frequency_penalty:0,presence_penalty:0,max_tokens:f,stream:!1,n:u},l,d),C=k(m.choices.filter(F=>F.message?.content).map(F=>rn(F.message.content)).map(F=>{if(i==="conventional"){const M=/: (\w)/;return F.replace(M,(N,W)=>`: ${W.toLowerCase()}`)}return F}).filter(F=>{switch(i){case"gitmoji":return gi(F);case"conventional":return hi(F);case"":default:return!0}})),b=m.choices.filter(F=>F.message?.content).map(F=>rn(F.message.content)).join();return p&&_("OPEN AI",o,h,b),C}catch(h){const m=h;throw m.code==="ENOTFOUND"?new w(`Error connecting to ${m.hostname} (${m.syscall})`):m}};class ra extends Y{constructor(t){super(t),this.params=t,this.handleError$=r=>{const n=r.error?.error?.message?.replace(/(\r\n|\n|\r)/gm,"")||"An error occurred";return j({name:`${this.errorPrefix} ${n}`,value:n,isError:!0,disabled:!0})},this.generateStreamChoice$=()=>{const r=this.params.stagedDiff.diff,{locale:n,generate:s,type:o,prompt:u}=this.params.config,a=this.params.config["max-length"],l=`${Z(n,a,o,u)}
65
+ ${ie(s)}`,f={max_tokens:this.params.config["max-tokens"],temperature:this.params.config.temperature,system:l,messages:[{role:"user",content:r}],model:this.params.config.ANTHROPIC_MODEL,stream:!0},c=this.anthropic.messages.create(f);let D="";return P(Ur(c)).pipe(Ht(p=>["content_block_delta","message_stop"].includes(p.type)),I(p=>p),Ut(p=>{p.type==="content_block_delta"&&(D+=p.delta.text)}),I(p=>{const d=p.type==="message_stop";return{id:this.params.keyName,name:`${this.serviceName} ${D}`,value:`${D}`,isError:!1,description:d?O:Kr,disabled:!d}}))},this.colors={primary:"#AE5630",secondary:"#fff"},this.serviceName=g.bgHex(this.colors.primary).hex(this.colors.secondary).bold("[Anthropic]"),this.errorPrefix=g.red.bold("[Anthropic]"),this.anthropic=new Pn({apiKey:this.params.config.ANTHROPIC_KEY})}generateCommitMessage$(){return G(this.generateMessage()).pipe(T(t=>P(t)),I(t=>({name:`${this.serviceName} ${t}`,value:t,isError:!1})),L(this.handleError$))}async generateMessage(){try{const t=this.params.stagedDiff.diff,{locale:r,generate:n,type:s,prompt:o,logging:u}=this.params.config,a=this.params.config["max-length"],l=`${Z(r,a,s,o)}
66
+ ${ie(n)}`,f={max_tokens:this.params.config["max-tokens"],temperature:this.params.config.temperature,system:l,messages:[{role:"user",content:t}],model:this.params.config.ANTHROPIC_MODEL},D=(await this.anthropic.messages.create(f)).content.map(({text:p})=>p).join("");return u&&_("Anthropic",t,l,D),k(this.sanitizeMessage(D,this.params.config.type,n))}catch(t){const r=t;throw r.code==="ENOTFOUND"?new w(`Error connecting to ${r.hostname} (${r.syscall})`):r}}generateStreamCommitMessage$(){return this.generateStreamChoice$().pipe(Kt((t,r)=>{if(r.description===O){const o=k(this.sanitizeMessage(r.value,this.params.config.type,this.params.config.generate)),u=this.params.stagedDiff.diff,{locale:a,generate:i,type:l,prompt:f,logging:c}=this.params.config,D=this.params.config["max-length"],d=`${Z(a,D,l,f)}
67
+ ${ie(i)}`;return c&&_("Anthropic",u,d,r.value),!o||o.length===0?[{id:`${this.params.keyName}_${O}_0`,name:`${this.serviceName} Failed to extract messages from response`,value:"Failed to extract messages from response",isError:!0,description:O,disabled:!0}]:o.map((m,C)=>({id:`${this.params.keyName}_${O}_${C}`,name:`${this.serviceName} ${m}`,value:`${m}`,isError:!1,description:O,disabled:!1}))}return t.find(o=>o.id===r.id)?[...t.map(o=>r.id===o.id?r:o)]:[{...r}]},[]),T(t=>t),L(this.handleError$))}}const{hasOwnProperty:xt}=Object.prototype,Pe=typeof process<"u"&&process.platform==="win32"?`\r
68
68
  `:`
69
- `,St=(e,t)=>{const r=[];let n="";typeof t=="string"?t={section:t,whitespace:!1}:(t=t||Object.create(null),t.whitespace=t.whitespace===!0);const s=t.whitespace?" = ":"=";for(const o of Object.keys(e)){const u=e[o];if(u&&Array.isArray(u))for(const a of u)n+=De(o+"[]")+s+De(a)+Pe;else u&&typeof u=="object"?r.push(o):n+=De(o)+s+De(u)+Pe}t.section&&n.length&&(n="["+De(t.section)+"]"+Pe+n);for(const o of r){const u=on(o).join("\\."),a=(t.section?t.section+".":"")+u,{whitespace:i}=t,l=St(e[o],{section:a,whitespace:i});n.length&&l.length&&(n+=Pe),n+=l}return n},on=e=>e.replace(/\1/g,"LITERAL\\1LITERAL").replace(/\\\./g,"").split(/\./).map(t=>t.replace(/\1/g,"\\.").replace(/\2LITERAL\\1LITERAL\2/g,"")),sn=e=>{const t=Object.create(null);let r=t,n=null;const s=/^\[([^\]]*)\]$|^([^=]+)(=(.*))?$/i,o=e.split(/[\r\n]+/g);for(const a of o){if(!a||a.match(/^\s*[;#]/))continue;const i=a.match(s);if(!i)continue;if(i[1]!==void 0){if(n=_e(i[1]),n==="__proto__"){r=Object.create(null);continue}r=t[n]=t[n]||Object.create(null);continue}const l=_e(i[2]),f=l.length>2&&l.slice(-2)==="[]",D=f?l.slice(0,-2):l;if(D==="__proto__")continue;const c=i[3]?_e(i[4]):!0,p=c==="true"||c==="false"||c==="null"?JSON.parse(c):c;f&&(Ot.call(r,D)?Array.isArray(r[D])||(r[D]=[r[D]]):r[D]=[]),Array.isArray(r[D])?r[D].push(p):r[D]=p}const u=[];for(const a of Object.keys(t)){if(!Ot.call(t,a)||typeof t[a]!="object"||Array.isArray(t[a]))continue;const i=on(a);r=t;const l=i.pop(),f=l.replace(/\\\./g,".");for(const D of i)D!=="__proto__"&&((!Ot.call(r,D)||typeof r[D]!="object")&&(r[D]=Object.create(null)),r=r[D]);r===t&&f===l||(r[f]=t[a],u.push(a))}for(const a of u)delete t[a];return t},un=e=>e.startsWith('"')&&e.endsWith('"')||e.startsWith("'")&&e.endsWith("'"),De=e=>typeof e!="string"||e.match(/[=\r\n]/)||e.match(/^\[/)||e.length>1&&un(e)||e!==e.trim()?JSON.stringify(e):e.split(";").join("\\;").split("#").join("\\#"),_e=(e,t)=>{if(e=(e||"").trim(),un(e)){e.charAt(0)==="'"&&(e=e.slice(1,-1));try{e=JSON.parse(e)}catch{}}else{let r=!1,n="";for(let s=0,o=e.length;s<o;s++){const u=e.charAt(s);if(r)"\\;#".indexOf(u)!==-1?n+=u:n+="\\"+u,r=!1;else{if(";#".indexOf(u)!==-1)break;u==="\\"?r=!0:n+=u}}return r&&(n+="\\"),n.trim()}return e};var ea={parse:sn,decode:sn,stringify:St,encode:St,safe:De,unsafe:_e},an=te(ea);const Dn=e=>x.lstat(e).then(()=>!0,()=>!1),ta=["","conventional","gitmoji"],It="http://localhost:11434",{hasOwnProperty:ra}=Object.prototype,Q=(e,t)=>ra.call(e,t),F=(e,t,r)=>{if(!t)throw new w(`Invalid config property ${e}: ${r}`)},Ne={OPENAI_KEY(e){return e||""},OPENAI_MODEL(e){return!e||e.length===0?"gpt-3.5-turbo":e},OPENAI_URL(e){return e?(F("OPENAI_URL",/^https?:\/\//.test(e),"Must be a valid URL"),e):"https://api.openai.com"},OPENAI_PATH(e){return e||"/v1/chat/completions"},HUGGING_COOKIE(e){return e||""},HUGGING_MODEL(e){return!e||e.length===0?"mistralai/Mixtral-8x7B-Instruct-v0.1":(F("HUGGING_MODEL",["CohereForAI/c4ai-command-r-plus","meta-llama/Meta-Llama-3-70B-Instruct","HuggingFaceH4/zephyr-orpo-141b-A35b-v0.1","mistralai/Mixtral-8x7B-Instruct-v0.1","NousResearch/Nous-Hermes-2-Mixtral-8x7B-DPO","google/gemma-1.1-7b-it","mistralai/Mistral-7B-Instruct-v0.2","microsoft/Phi-3-mini-4k-instruct"].includes(e),"Invalid model type of hugging"),e)},CLOVAX_COOKIE(e){return e||""},GEMINI_KEY(e){return e||""},GEMINI_MODEL(e){return!e||e.length===0?"gemini-pro":(F("GEMINI_MODEL",["gemini-pro"].includes(e),"Invalid model type of Gemini"),e)},ANTHROPIC_MODEL(e){return!e||e.length===0?"claude-3-haiku-20240307":(F("ANTHROPIC_MODEL",["claude-2.1","claude-2.0","claude-instant-1.2","claude-3-haiku-20240307","claude-3-sonnet-20240229","claude-3-opus-20240229"].includes(e),"Invalid model type of Anthropic"),e)},ANTHROPIC_KEY(e){return e||""},MISTRAL_KEY(e){return e||""},MISTRAL_MODEL(e){return!e||e.length===0?"mistral-tiny":(F("MISTRAL_MODEL",["open-mistral-7b","mistral-tiny-2312","mistral-tiny","open-mixtral-8x7b","mistral-small-2312","mistral-small","mistral-small-2402","mistral-small-latest","mistral-medium-latest","mistral-medium-2312","mistral-medium","mistral-large-latest","mistral-large-2402","mistral-embed"].includes(e),"Invalid model type of Mistral AI"),e)},OLLAMA_MODEL(e){return e||""},OLLAMA_HOST(e){return e?(F("OLLAMA_HOST",/^https?:\/\//.test(e),"Must be a valid URL"),e):It},OLLAMA_TIMEOUT(e){if(!e)return 1e5;F("OLLAMA_TIMEOUT",/^\d+$/.test(e),"Must be an integer");const t=Number(e);return F("OLLAMA_TIMEOUT",t>=500,"Must be greater than 500ms"),t},OLLAMA_STREAM(e){return e?typeof e=="boolean"?e:(F("OLLAMA_STREAM",/^(?:true|false)$/.test(e),"Must be a boolean(true or false)"),e==="true"):!1},confirm(e){return e?typeof e=="boolean"?e:(F("confirm",/^(?:true|false)$/.test(e),"Must be a boolean"),e==="true"):!1},prompt(e){return e||""},locale(e){return e?(F("locale",e,"Cannot be empty"),F("locale",/^[a-z-]+$/i.test(e),"Must be a valid locale (letters and dashes/underscores). You can consult the list of codes in: https://wikipedia.org/wiki/List_of_ISO_639-1_codes"),e):"en"},generate(e){if(!e)return 1;F("generate",/^\d+$/.test(e),"Must be an integer");const t=Number(e);return F("generate",t>0,"Must be greater than 0"),F("generate",t<=5,"Must be less or equal to 5"),t},type(e){return e?(F("type",ta.includes(e),"Invalid commit type"),e):"conventional"},proxy(e){if(!(!e||e.length===0))return F("proxy",/^https?:\/\//.test(e),"Must be a valid URL"),e},timeout(e){if(!e)return 1e4;F("timeout",/^\d+$/.test(e),"Must be an integer");const t=Number(e);return F("timeout",t>=500,"Must be greater than 500ms"),t},temperature(e){if(!e)return .7;F("temperature",/^(2|\d)(\.\d{1,2})?$/.test(e),"Must be decimal between 0 and 2");const t=Number(e);return F("temperature",t>0,"Must be greater than 0"),F("temperature",t<=2,"Must be less than or equal to 2"),t},"max-length"(e){if(!e)return 50;F("max-length",/^\d+$/.test(e),"Must be an integer");const t=Number(e);return F("max-length",t>=20,"Must be greater than 20 characters"),t},"max-tokens"(e){return e?(F("max-tokens",/^\d+$/.test(e),"Must be an integer"),Number(e)):200},logging(e){return e?typeof e=="boolean"?e:(F("logging",/^(?:true|false)$/.test(e),"Must be a boolean(true or false)"),e==="true"):!1}},Mt=H.join(Ue.homedir(),".aicommit2"),cn=async()=>{if(!await Dn(Mt))return Object.create(null);const t=await x.readFile(Mt,"utf8");return an.parse(t)},Pt=async(e,t)=>{const r=await cn(),n={};for(const s of Object.keys(Ne)){const o=Ne[s],u=e?.[s]??r[s];if(t)try{n[s]=o(u)}catch{}else n[s]=o(u)}return n},na=async e=>{const t=await cn();for(const[r,n]of e){if(!Q(Ne,r))throw new w(`Invalid config property: ${r}`);const s=Ne[r](n);t[r]=s}await x.writeFile(Mt,an.stringify(t),"utf8")};class S{constructor(t={}){if(!t.method)throw new Error("method should be defined!");if(!t.baseURL)throw new Error("baseURL should be defined!");this.config={...t},this.axiosInstance=Un.create(this.config)}setHeaders(t){return this.config.headers=t,this}setParams(t){return this.config.params=t,this}setBody(t){return this.config.data=t,this}setMethod(t){return this.config.method=t,this}async execute(){try{return await this.axiosInstance.request(this.config)}catch(t){throw t}}}class oa extends Z{constructor(t){super(t),this.params=t,this.host="https://clova-x.naver.com",this.cookie="",this.colors={primary:"#00db9b",secondary:"#fff"},this.serviceName=g.bgHex(this.colors.primary).hex(this.colors.secondary).bold("[CLOVA X]"),this.errorPrefix=g.red.bold("[CLOVA X]"),this.cookie=this.params.config.CLOVAX_COOKIE}generateCommitMessage$(){return K(this.generateMessage()).pipe(L(t=>_(t)),M((t,r)=>({name:`${this.serviceName} ${t}`,value:t,isError:!1})),R(this.handleError$))}async generateMessage(){try{const{locale:t,generate:r,type:n,prompt:s,logging:o}=this.params.config,u=this.params.config["max-length"],a=this.params.stagedDiff.diff,i=this.buildPrompt(t,a,r,u,n,s);await this.getAllConversationIds();const l=await this.sendMessage(i),{conversationId:f,allText:D}=this.parseSendMessageResult(l);return await this.deleteConversation(f),o&&T("CLOVA X",a,i,D),k(this.sanitizeMessage(D,this.params.config.type,r))}catch(t){const r=t;throw r.code==="ENOTFOUND"?new w(`Error connecting to ${r.hostname} (${r.syscall})`):r}}async getAllConversationIds(){const r=(await new S({method:"GET",baseURL:`${this.host}/api/v1/conversations`,timeout:this.params.config.timeout}).setHeaders({Cookie:this.cookie}).setParams({page:0,size:50,sort:"turnUpdatedTime,DESC"}).execute()).data;if(!r||!r.content)throw new Error("No content on conversations ClovaX");return r.content.length===0?[]:r.content.map(s=>s.conversationId||"").filter(s=>!!s)}async sendMessage(t){const r={text:t,action:"new"},n=new Gn;return n.set("form",new Hn([JSON.stringify(r)],{type:"application/json"})),(await new S({method:"POST",baseURL:`${this.host}/api/v1/generate`,timeout:this.params.config.timeout}).setHeaders({"Content-Type":"multipart/form-data","Content-Length":this.getContentLength(n),Cookie:this.cookie}).setBody(n).execute()).data}parseSendMessageResult(t){const r=/data:{(.*)}/g,n=t.match(r);if(!n)throw new Error("Failed to extract object from generated text");const s=n.map(i=>i.trim().replace(/data:/g,""));if(!s||s.length===0)throw new Error("Cannot extract message");let o="",u="",a="";if(s.map(i=>{try{return JSON.parse(i)}catch{return null}}).filter(i=>!!i).forEach(i=>{if(Q(i,"conversationId")){o=i.conversationId;return}if(Q(i,"text")){u+=i.text;return}if(Q(i,"error")){a=`${i.error}: ${i.type||i.message||""}`;return}}),a)throw new Error(a);if(!o)throw new Error("No conversationId!");if(!u)throw new Error("No allText!");return{conversationId:o,allText:u}}async deleteConversation(t){return(await new S({method:"DELETE",baseURL:`${this.host}/api/v1/conversation/${t}`,timeout:this.params.config.timeout}).setHeaders({Cookie:this.cookie}).execute()).data}getContentLength(t){return Array.from(t.entries(),([r,n])=>({[r]:{ContentLength:typeof n=="string"?n.length:n.size}}))}}class sa extends Z{constructor(t){super(t),this.params=t,this.handleError$=r=>{const n=r.message||r.toString(),s=/(\[.*?\]\s*[^[]*)/g,o=[...n.matchAll(s)],u=[];o.forEach(i=>u.push(i[1]));const a=u[1]||"An error occurred";return U({name:`${this.errorPrefix} ${a}`,value:a,isError:!0,disabled:!0})},this.colors={primary:"#0077FF",secondary:"#fff"},this.serviceName=g.bgHex(this.colors.primary).hex(this.colors.secondary).bold("[Gemini]"),this.errorPrefix=g.red.bold("[Gemini]"),this.genAI=new Kn(this.params.config.GEMINI_KEY)}generateCommitMessage$(){return K(this.generateMessage()).pipe(L(t=>_(t)),M(t=>({name:`${this.serviceName} ${t}`,value:t,isError:!1})),R(this.handleError$))}async generateMessage(){try{const t=this.params.stagedDiff.diff,{locale:r,generate:n,type:s,prompt:o,logging:u}=this.params.config,a=this.params.config["max-length"],i=this.buildPrompt(r,t,n,a,s,o),l=this.params.config["max-tokens"],p=(await(await this.genAI.getGenerativeModel({model:this.params.config.GEMINI_MODEL,generationConfig:{maxOutputTokens:l,temperature:this.params.config.temperature}}).generateContent(i)).response).text();return u&&T("Gemini",t,i,p),k(this.sanitizeMessage(p,this.params.config.type,n))}catch(t){const r=t;throw r.code==="ENOTFOUND"?new w(`Error connecting to ${r.hostname} (${r.syscall})`):r}}}class ua extends Z{constructor(t){super(t),this.params=t,this.host="https://huggingface.co",this.cookie="",this.colors={primary:"#FED21F",secondary:"#000"},this.serviceName=g.bgHex(this.colors.primary).hex(this.colors.secondary).bold("[HuggingFace]"),this.errorPrefix=g.red.bold("[HuggingFace]"),this.cookie=this.params.config.HUGGING_COOKIE}generateCommitMessage$(){return K(this.generateMessage()).pipe(L(t=>_(t)),M((t,r)=>({name:`${this.serviceName} ${t}`,value:t,isError:!1})),R(this.handleError$))}async generateMessage(){try{const t=this.getFullPrompt();await this.prepareNewConversation();const{conversationId:r}=await this.getNewConversationId();await this.prepareConversationEvent(r);const{lastMessageId:n}=await this.getConversationInfo(r),s=await this.sendMessage(r,t,n);await this.deleteConversation(r);const{generate:o}=this.params.config;return k(this.sanitizeHuggingMessage(s,this.params.config.type,o))}catch(t){const r=t;throw r.code==="ENOTFOUND"?new w(`Error connecting to ${r.hostname} (${r.syscall})`):r}}sanitizeHuggingMessage(t,r,n){const s=/{[^{}]*}/g,o=t.match(s);if(!o)throw new Error("Failed to extract object from generated text");let u=null;o.forEach((i,l)=>{try{const f=JSON.parse(i);Q(f,"type")&&f.type==="finalAnswer"&&(u=f)}catch{}});const a=this.getFullPrompt();if(!u||!Q(u,"text"))throw this.params.config.logging&&T("HuggingFace",this.params.stagedDiff.diff,a,t),new Error("Cannot parse finalAnswer");return this.params.config.logging&&T("HuggingFace",this.params.stagedDiff.diff,a,u.text),this.sanitizeMessage(u.text,r,n)}async prepareNewConversation(){return(await new S({method:"POST",baseURL:`${this.host}/api/event`}).setHeaders({"content-type":"application/json",Cookie:this.cookie}).setBody({d:"huggingface.co",n:"pageview",r:"https://huggingface.co/chat/",u:"https://huggingface.co/chat/"}).execute()).data}async prepareConversationEvent(t){return(await new S({method:"POST",baseURL:`${this.host}/api/event`}).setHeaders({"content-type":"application/json",Cookie:this.cookie}).setBody({d:"huggingface.co",n:"pageview",r:"https://huggingface.co/chat/",u:`https://huggingface.co/chat/conversation/${t}`}).execute()).data}async getNewConversationId(){const t=await new S({method:"POST",baseURL:`${this.host}/chat/conversation`,timeout:this.params.config.timeout}).setHeaders({"content-type":"application/json",Cookie:this.cookie,Accept:"*/*",Connection:"keep-alive",Host:"huggingface.co",Origin:"https://huggingface.co"}).setBody({model:this.params.config.HUGGING_MODEL,preprompt:""}).execute();if(!t.data||!t.data.conversationId)throw new Error("No conversationId on Hugging service");return t.data}async getConversationInfo(t){const n=(await new S({method:"GET",baseURL:`${this.host}/chat/conversation/${t}/__data.json`,timeout:this.params.config.timeout}).setParams({"x-sveltekit-invalidated":"11"}).setHeaders({"Content-Type":"application/json",Cookie:this.cookie,Accept:"*/*",Connection:"keep-alive",Referer:"https://huggingface.co/chat/"}).execute()).data;if(!n||!n.nodes||n.nodes.length===0)throw new Error("No Nodes on conversation info");if(!n.nodes[1]||!n.nodes[1].data||n.nodes[1].data.length===0||!n.nodes[1].data[3])throw new Error("No data on node");const u=n.nodes[1]?.data[3];return{conversationInfo:n,lastMessageId:u}}async deleteConversation(t){return await new S({method:"DELETE",baseURL:`${this.host}/chat/conversation/${t}`,timeout:this.params.config.timeout}).setHeaders({Cookie:this.cookie}).execute(),(await new S({method:"GET",baseURL:`${this.host}/chat/__data.json`,timeout:this.params.config.timeout}).setParams({"x-sveltekit-trailing-slash":"1","x-sveltekit-invalidated":"10"}).setHeaders({"Content-Type":"application/json",Cookie:this.cookie,Accept:"*/*",Connection:"keep-alive",Referer:"https://huggingface.co/chat/"}).execute()).data}async sendMessage(t,r,n){return(await new S({method:"POST",baseURL:`${this.host}/chat/conversation/${t}`,timeout:this.params.config.timeout}).setHeaders({"content-type":"application/json",Cookie:this.cookie,authority:"huggingface.co",accept:"*/*",origin:"https://huggingface.co"}).setBody({files:[],id:n,inputs:r,is_continue:!1,is_retry:!1,use_cache:!1}).execute()).data}getFullPrompt(){const{locale:t,generate:r,type:n,prompt:s}=this.params.config,o=this.params.config["max-length"],u=this.params.stagedDiff.diff;return this.buildPrompt(t,u,r,o,n,s)}}class ia extends Z{constructor(t){super(t),this.params=t,this.host="https://api.mistral.ai",this.apiKey="",this.handleError$=r=>{const n=r.message?.replace(/(\r\n|\n|\r)/gm,"")||"An error occurred";return U({name:`${this.errorPrefix} ${n}`,value:n,isError:!0,disabled:!0})},this.colors={primary:"#FC4A0A",secondary:"#fff"},this.serviceName=g.bgHex(this.colors.primary).hex(this.colors.secondary).bold("[MistralAI]"),this.errorPrefix=g.red.bold("[MistralAI]"),this.apiKey=this.params.config.MISTRAL_KEY}generateCommitMessage$(){return K(this.generateMessage()).pipe(L(t=>_(t)),M(t=>({name:`${this.serviceName} ${t}`,value:t,isError:!1})),R(this.handleError$))}async generateMessage(){try{const t=this.params.stagedDiff.diff,{locale:r,generate:n,type:s,prompt:o,logging:u}=this.params.config,a=this.params.config["max-length"],i=this.buildPrompt(r,t,n,a,s,o);await this.checkAvailableModels();const l=await this.createChatCompletions(i);return u&&T("MistralAI",t,i,l),k(this.sanitizeMessage(l,this.params.config.type,n))}catch(t){const r=t;throw r.code==="ENOTFOUND"?new w(`Error connecting to ${r.hostname} (${r.syscall})`):r}}async checkAvailableModels(){if((await this.getAvailableModels()).includes(this.params.config.MISTRAL_MODEL))return!0;throw new Error("Invalid model type of Mistral AI")}async getAvailableModels(){return(await new S({method:"GET",baseURL:`${this.host}/v1/models`,timeout:this.params.config.timeout}).setHeaders({Authorization:`Bearer ${this.apiKey}`,"content-type":"application/json"}).execute()).data.data.filter(r=>r.object==="model").map(r=>r.id)}async createChatCompletions(t){const n=(await new S({method:"POST",baseURL:`${this.host}/v1/chat/completions`,timeout:this.params.config.timeout}).setHeaders({Authorization:`Bearer ${this.apiKey}`,"content-type":"application/json"}).setBody({model:this.params.config.MISTRAL_MODEL,messages:[{role:"user",content:t}],temperature:this.params.config.temperature,top_p:1,max_tokens:this.params.config["max-tokens"],stream:!1,safe_prompt:!1,random_seed:hi(10,1e3)}).execute()).data;if(!n.choices||n.choices.length===0||!n.choices[0].message?.content)throw new Error("No Content on response. Please open a Bug report");return n.choices[0].message.content}}class aa extends Z{constructor(t){super(t),this.params=t,this.host=It,this.model="",this.handleError$=r=>{if(r.response&&r.response.data?.error)return U({name:`${this.errorPrefix} ${r.response.data?.error}`,value:r.response.data?.error,isError:!0,disabled:!0});const n=r.message?.replace(/(\r\n|\n|\r)/gm,"")||"An error occurred";return U({name:`${this.errorPrefix} ${n}`,value:n,isError:!0,disabled:!0})},this.generateStreamChoice$=()=>{const n=`${J(this.params.config.locale,this.params.config["max-length"],this.params.config.type,this.params.config.prompt)}
70
- ${ie(this.params.config.generate)}`,s=this.ollama.chat({model:this.model,messages:[{role:"system",content:n},{role:"user",content:`${this.params.stagedDiff.diff}`}],stream:!0,options:{temperature:this.params.config.temperature}});let o="";return _(Kr(s)).pipe(Kt(u=>o+=u.message.content),M(u=>({id:this.params.keyName,name:`${this.serviceName} ${o}`,value:`${o}`,isError:!1,description:u.done?O:qr,disabled:!u.done})))},this.colors={primary:"#FFF",secondary:"#000"},this.serviceName=g.bgHex(this.colors.primary).hex(this.colors.secondary).bold("[Ollama]"),this.errorPrefix=g.red.bold("[Ollama]"),this.model=this.params.config.OLLAMA_MODEL,this.host=this.params.config.OLLAMA_HOST||It,this.ollama=new qn({host:this.host})}generateCommitMessage$(){return this.params.config.OLLAMA_STREAM?this.generateStreamCommitMessage$():K(this.generateMessage()).pipe(L(t=>_(t)),M(t=>({name:`${this.serviceName} ${t}`,value:t,isError:!1})),R(this.handleError$))}generateStreamCommitMessage$(){return K(this.checkIsAvailableOllama()).pipe(Bn(()=>this.generateStreamChoice$()),qt((t,r)=>{if(r.description===O){const{type:o,generate:u,logging:a}=this.params.config;if(a){const f=this.createSystemPrompt();T("Ollama",this.params.stagedDiff.diff,f,r.value)}const i=k(this.sanitizeMessage(r.value,o,u));return!i||i.length===0?[{id:`${this.params.keyName}_${O}_0`,name:`${this.serviceName} Failed to extract messages from response`,value:"Failed to extract messages from response",isError:!0,description:O,disabled:!0}]:i.map((f,D)=>({id:`${this.params.keyName}_${O}_${D}`,name:`${this.serviceName} ${f}`,value:`${f}`,isError:!1,description:O,disabled:!1}))}return t.find(o=>o.id===r.id)?[...t.map(o=>r.id===o.id?r:o)]:[{...r}]},[]),L(t=>t),R(this.handleError$))}async generateMessage(){try{await this.checkIsAvailableOllama();const t=await this.createChatCompletions(),{type:r,generate:n,logging:s}=this.params.config,o=this.createSystemPrompt();return s&&T("Ollama",this.params.stagedDiff.diff,o,t),k(this.sanitizeMessage(t,r,n))}catch(t){const r=t;throw r.code==="ENOTFOUND"?new w(`Error connecting to ${r.hostname} (${r.syscall})`):r}}async checkIsAvailableOllama(){try{return(await new S({method:"GET",baseURL:`${this.host}`,timeout:this.params.config.OLLAMA_TIMEOUT}).execute()).data}catch(t){throw t.code==="ECONNREFUSED"?new w(`Error connecting to ${this.host}. Please run Ollama or check host`):t}}async createChatCompletions(){const t=this.createSystemPrompt();return(await this.ollama.chat({model:this.model,messages:[{role:"system",content:t},{role:"user",content:`${this.params.stagedDiff.diff}`}],stream:!1,options:{temperature:this.params.config.temperature}})).message.content}createSystemPrompt(){return`${J(this.params.config.locale,this.params.config["max-length"],this.params.config.type,this.params.config.prompt)}
71
- ${ie(this.params.config.generate)}`}}class Da extends Z{constructor(t){super(t),this.params=t,this.handleError$=r=>{let n="An error occurred";if(r.message){n=r.message.split(`
72
- `)[0];const s=this.extractJSONFromError(r.message);n+=`: ${s.error.message}`}return U({name:`${this.errorPrefix} ${n}`,value:n,isError:!0,disabled:!0})},this.colors={primary:"#74AA9C",secondary:"#FFF"},this.serviceName=g.bgHex(this.colors.primary).hex(this.colors.secondary).bold("[ChatGPT]"),this.errorPrefix=g.red.bold("[ChatGPT]")}generateCommitMessage$(){return K(Zi(this.params.config.OPENAI_URL,this.params.config.OPENAI_PATH,this.params.config.OPENAI_KEY,this.params.config.OPENAI_MODEL,this.params.config.locale,this.params.stagedDiff.diff,this.params.config.generate,this.params.config["max-length"],this.params.config.type,this.params.config.timeout,this.params.config["max-tokens"],this.params.config.temperature,this.params.config.prompt,this.params.config.logging,this.params.config.proxy)).pipe(L(t=>_(t)),M(t=>({name:`${this.serviceName} ${t}`,value:t,isError:!1})),R(this.handleError$))}extractJSONFromError(t){const r=/[{[]{1}([,:{}[\]0-9.\-+Eaeflnr-u \n\r\t]|".*?")+[}\]]{1}/gis,n=t.match(r);return n?Object.assign({},...n.map(s=>JSON.parse(s))):{error:{message:"Unknown error"}}}}class ln{constructor(t,r){this.config=t,this.stagedDiff=r}createAIRequests$(t){return _(t).pipe(xn(r=>{const n={config:this.config,stagedDiff:this.stagedDiff,keyName:r};switch(r){case q.OPEN_AI:return X.create(Da,n).generateCommitMessage$();case q.GEMINI:return X.create(sa,n).generateCommitMessage$();case q.ANTHROPIC:return X.create(Qi,n).generateCommitMessage$();case q.HUGGING:return X.create(ua,n).generateCommitMessage$();case q.CLOVA_X:return X.create(oa,n).generateCommitMessage$();case q.MISTRAL:return X.create(ia,n).generateCommitMessage$();case q.OLLAMA:return X.create(aa,n).generateCommitMessage$();default:const s=g.red.bold(`[${r}]`);return U({name:s+" Invalid AI type",value:"Invalid AI type",isError:!0,disabled:!0})}}))}}const fn=async()=>{const{stdout:e,failed:t}=await ue("git",["rev-parse","--show-toplevel"],{reject:!1});if(t)throw new w("The current directory must be a Git repository!");return e},_t=e=>`:(exclude)${e}`,pn=["package-lock.json","pnpm-lock.yaml","*.lock"].map(_t),dn=async e=>{const t=["diff","--cached","--diff-algorithm=minimal"],{stdout:r}=await ue("git",[...t,"--name-only",...pn,...e?e.map(_t):[]]);if(!r)return null;const{stdout:n}=await ue("git",[...t,...pn,...e?e.map(_t):[]]);return{files:r.split(`
73
- `),diff:n}},ca=e=>`Detected ${e.length.toLocaleString()} staged file${e.length>1?"s":""}`;class Te{constructor(){this.title="aicommit2"}printTitle(){console.log(zn.textSync(this.title,{font:"Small"}))}displaySpinner(t){return He(t).start()}stopSpinner(t){t.stop(),t.clear()}printStagedFiles(t){console.log(g.bold.green("\u2714 ")+g.bold(`${ca(t.files)}:`)),console.log(`${t.files.map(r=>` ${r}`).join(`
69
+ `,Ot=(e,t)=>{const r=[];let n="";typeof t=="string"?t={section:t,whitespace:!1}:(t=t||Object.create(null),t.whitespace=t.whitespace===!0);const s=t.whitespace?" = ":"=";for(const o of Object.keys(e)){const u=e[o];if(u&&Array.isArray(u))for(const a of u)n+=ce(o+"[]")+s+ce(a)+Pe;else u&&typeof u=="object"?r.push(o):n+=ce(o)+s+ce(u)+Pe}t.section&&n.length&&(n="["+ce(t.section)+"]"+Pe+n);for(const o of r){const u=nn(o).join("\\."),a=(t.section?t.section+".":"")+u,{whitespace:i}=t,l=Ot(e[o],{section:a,whitespace:i});n.length&&l.length&&(n+=Pe),n+=l}return n},nn=e=>e.replace(/\1/g,"LITERAL\\1LITERAL").replace(/\\\./g,"").split(/\./).map(t=>t.replace(/\1/g,"\\.").replace(/\2LITERAL\\1LITERAL\2/g,"")),on=e=>{const t=Object.create(null);let r=t,n=null;const s=/^\[([^\]]*)\]$|^([^=]+)(=(.*))?$/i,o=e.split(/[\r\n]+/g);for(const a of o){if(!a||a.match(/^\s*[;#]/))continue;const i=a.match(s);if(!i)continue;if(i[1]!==void 0){if(n=_e(i[1]),n==="__proto__"){r=Object.create(null);continue}r=t[n]=t[n]||Object.create(null);continue}const l=_e(i[2]),f=l.length>2&&l.slice(-2)==="[]",c=f?l.slice(0,-2):l;if(c==="__proto__")continue;const D=i[3]?_e(i[4]):!0,p=D==="true"||D==="false"||D==="null"?JSON.parse(D):D;f&&(xt.call(r,c)?Array.isArray(r[c])||(r[c]=[r[c]]):r[c]=[]),Array.isArray(r[c])?r[c].push(p):r[c]=p}const u=[];for(const a of Object.keys(t)){if(!xt.call(t,a)||typeof t[a]!="object"||Array.isArray(t[a]))continue;const i=nn(a);r=t;const l=i.pop(),f=l.replace(/\\\./g,".");for(const c of i)c!=="__proto__"&&((!xt.call(r,c)||typeof r[c]!="object")&&(r[c]=Object.create(null)),r=r[c]);r===t&&f===l||(r[f]=t[a],u.push(a))}for(const a of u)delete t[a];return t},sn=e=>e.startsWith('"')&&e.endsWith('"')||e.startsWith("'")&&e.endsWith("'"),ce=e=>typeof e!="string"||e.match(/[=\r\n]/)||e.match(/^\[/)||e.length>1&&sn(e)||e!==e.trim()?JSON.stringify(e):e.split(";").join("\\;").split("#").join("\\#"),_e=(e,t)=>{if(e=(e||"").trim(),sn(e)){e.charAt(0)==="'"&&(e=e.slice(1,-1));try{e=JSON.parse(e)}catch{}}else{let r=!1,n="";for(let s=0,o=e.length;s<o;s++){const u=e.charAt(s);if(r)"\\;#".indexOf(u)!==-1?n+=u:n+="\\"+u,r=!1;else{if(";#".indexOf(u)!==-1)break;u==="\\"?r=!0:n+=u}}return r&&(n+="\\"),n.trim()}return e};var na={parse:on,decode:on,stringify:Ot,encode:Ot,safe:ce,unsafe:_e},un=te(na);const an=e=>x.lstat(e).then(()=>!0,()=>!1),oa=["","conventional","gitmoji"],St="http://localhost:11434",{hasOwnProperty:sa}=Object.prototype,Q=(e,t)=>sa.call(e,t),E=(e,t,r)=>{if(!t)throw new w(`Invalid config property ${e}: ${r}`)},cn={confirm(e){return e?typeof e=="boolean"?e:(E("confirm",/^(?:true|false)$/.test(e),"Must be a boolean"),e==="true"):!1},prompt(e){return e||""},locale(e){return e?(E("locale",e,"Cannot be empty"),E("locale",/^[a-z-]+$/i.test(e),"Must be a valid locale (letters and dashes/underscores). You can consult the list of codes in: https://wikipedia.org/wiki/List_of_ISO_639-1_codes"),e):"en"},generate(e){if(!e)return 1;E("generate",/^\d+$/.test(e),"Must be an integer");const t=Number(e);return E("generate",t>0,"Must be greater than 0"),E("generate",t<=5,"Must be less or equal to 5"),t},type(e){return e?(E("type",oa.includes(e),"Invalid commit type"),e):"conventional"},proxy(e){if(!(!e||e.length===0))return E("proxy",/^https?:\/\//.test(e),"Must be a valid URL"),e},timeout(e){if(!e)return 1e4;E("timeout",/^\d+$/.test(e),"Must be an integer");const t=Number(e);return E("timeout",t>=500,"Must be greater than 500ms"),t},temperature(e){if(!e)return .7;E("temperature",/^(2|\d)(\.\d{1,2})?$/.test(e),"Must be decimal between 0 and 2");const t=Number(e);return E("temperature",t>0,"Must be greater than 0"),E("temperature",t<=2,"Must be less than or equal to 2"),t},"max-length"(e){if(!e)return 50;E("max-length",/^\d+$/.test(e),"Must be an integer");const t=Number(e);return E("max-length",t>=20,"Must be greater than 20 characters"),t},"max-tokens"(e){return e?(E("max-tokens",/^\d+$/.test(e),"Must be an integer"),Number(e)):200},logging(e){return e?typeof e=="boolean"?e:(E("logging",/^(?:true|false)$/.test(e),"Must be a boolean(true or false)"),e==="true"):!1}},Dn={OPENAI_KEY(e){return e||""},OPENAI_MODEL(e){return!e||e.length===0?"gpt-3.5-turbo":e},OPENAI_URL(e){return e?(E("OPENAI_URL",/^https?:\/\//.test(e),"Must be a valid URL"),e):"https://api.openai.com"},OPENAI_PATH(e){return e||"/v1/chat/completions"},HUGGING_COOKIE(e){return e||""},HUGGING_MODEL(e){return!e||e.length===0?"mistralai/Mixtral-8x7B-Instruct-v0.1":(E("HUGGING_MODEL",["CohereForAI/c4ai-command-r-plus","meta-llama/Meta-Llama-3-70B-Instruct","HuggingFaceH4/zephyr-orpo-141b-A35b-v0.1","mistralai/Mixtral-8x7B-Instruct-v0.1","NousResearch/Nous-Hermes-2-Mixtral-8x7B-DPO","google/gemma-1.1-7b-it","mistralai/Mistral-7B-Instruct-v0.2","microsoft/Phi-3-mini-4k-instruct"].includes(e),"Invalid model type of HuggingFace chat"),e)},CLOVAX_COOKIE(e){return e||""},GEMINI_KEY(e){return e||""},GEMINI_MODEL(e){return!e||e.length===0?"gemini-1.5-flash-latest":(E("GEMINI_MODEL",["gemini-1.5-flash-latest","gemini-pro"].includes(e),"Invalid model type of Gemini"),e)},ANTHROPIC_MODEL(e){return!e||e.length===0?"claude-3-haiku-20240307":(E("ANTHROPIC_MODEL",["claude-2.1","claude-2.0","claude-instant-1.2","claude-3-haiku-20240307","claude-3-sonnet-20240229","claude-3-opus-20240229"].includes(e),"Invalid model type of Anthropic"),e)},ANTHROPIC_KEY(e){return e||""},MISTRAL_KEY(e){return e||""},MISTRAL_MODEL(e){return!e||e.length===0?"mistral-tiny":(E("MISTRAL_MODEL",["open-mistral-7b","mistral-tiny-2312","mistral-tiny","open-mixtral-8x7b","mistral-small-2312","mistral-small","mistral-small-2402","mistral-small-latest","mistral-medium-latest","mistral-medium-2312","mistral-medium","mistral-large-latest","mistral-large-2402","mistral-embed"].includes(e),"Invalid model type of Mistral AI"),e)},OLLAMA_MODEL(e){return e||""},OLLAMA_HOST(e){return e?(E("OLLAMA_HOST",/^https?:\/\//.test(e),"Must be a valid URL"),e):St},OLLAMA_TIMEOUT(e){if(!e)return 1e5;E("OLLAMA_TIMEOUT",/^\d+$/.test(e),"Must be an integer");const t=Number(e);return E("OLLAMA_TIMEOUT",t>=500,"Must be greater than 500ms"),t},OLLAMA_STREAM(e){return e?typeof e=="boolean"?e:(E("OLLAMA_STREAM",/^(?:true|false)$/.test(e),"Must be a boolean(true or false)"),e==="true"):!1},COHERE_KEY(e){return e||""},COHERE_MODEL(e){return!e||e.length===0?"command":(E("COHERE_MODEL",["command","command-nightly","command-light","command-light-nightly"].includes(e),"Invalid model type of Cohere"),e)}},It=q.join(He.homedir(),".aicommit2"),ln=async()=>{if(!await an(It))return Object.create(null);const t=await x.readFile(It,"utf8");return un.parse(t)},Mt=async(e,t)=>{const r=await ln(),n={},s={...cn,...Dn};for(const o of Object.keys(s)){const u=s[o],a=e?.[o]??r[o];if(t)try{n[o]=u(a)}catch{}else n[o]=u(a)}return n},ua=async e=>{const t=await ln(),r={...cn,...Dn};for(const[n,s]of e){if(!Q(r,n))throw new w(`Invalid config property: ${n}`);const o=r[n](s);t[n]=o}await x.writeFile(It,un.stringify(t),"utf8")};class S{constructor(t={}){if(!t.method)throw new Error("method should be defined!");if(!t.baseURL)throw new Error("baseURL should be defined!");this.config={...t},this.axiosInstance=Kn.create(this.config)}setHeaders(t){return this.config.headers=t,this}setParams(t){return this.config.params=t,this}setBody(t){return this.config.data=t,this}setMethod(t){return this.config.method=t,this}async execute(){try{return await this.axiosInstance.request(this.config)}catch(t){throw t}}}class ia extends Y{constructor(t){super(t),this.params=t,this.host="https://clova-x.naver.com",this.cookie="",this.colors={primary:"#00db9b",secondary:"#fff"},this.serviceName=g.bgHex(this.colors.primary).hex(this.colors.secondary).bold("[CLOVA X]"),this.errorPrefix=g.red.bold("[CLOVA X]"),this.cookie=this.params.config.CLOVAX_COOKIE}generateCommitMessage$(){return G(this.generateMessage()).pipe(T(t=>P(t)),I((t,r)=>({name:`${this.serviceName} ${t}`,value:t,isError:!1})),L(this.handleError$))}async generateMessage(){try{const{locale:t,generate:r,type:n,prompt:s,logging:o}=this.params.config,u=this.params.config["max-length"],a=this.params.stagedDiff.diff,i=this.buildPrompt(t,a,r,u,n,s);await this.getAllConversationIds();const l=await this.sendMessage(i),{conversationId:f,allText:c}=this.parseSendMessageResult(l);return await this.deleteConversation(f),o&&_("CLOVA X",a,i,c),k(this.sanitizeMessage(c,this.params.config.type,r))}catch(t){const r=t;throw r.code==="ENOTFOUND"?new w(`Error connecting to ${r.hostname} (${r.syscall})`):r}}async getAllConversationIds(){const r=(await new S({method:"GET",baseURL:`${this.host}/api/v1/conversations`,timeout:this.params.config.timeout}).setHeaders({Cookie:this.cookie}).setParams({page:0,size:50,sort:"turnUpdatedTime,DESC"}).execute()).data;if(!r||!r.content)throw new Error("No content on conversations ClovaX");return r.content.length===0?[]:r.content.map(s=>s.conversationId||"").filter(s=>!!s)}async sendMessage(t){const r={text:t,action:"new"},n=new Hn;return n.set("form",new Un([JSON.stringify(r)],{type:"application/json"})),(await new S({method:"POST",baseURL:`${this.host}/api/v1/generate`,timeout:this.params.config.timeout}).setHeaders({"Content-Type":"multipart/form-data","Content-Length":this.getContentLength(n),Cookie:this.cookie}).setBody(n).execute()).data}parseSendMessageResult(t){const r=/data:{(.*)}/g,n=t.match(r);if(!n)throw new Error("Failed to extract object from generated text");const s=n.map(i=>i.trim().replace(/data:/g,""));if(!s||s.length===0)throw new Error("Cannot extract message");let o="",u="",a="";if(s.map(i=>{try{return JSON.parse(i)}catch{return null}}).filter(i=>!!i).forEach(i=>{if(Q(i,"conversationId")){o=i.conversationId;return}if(Q(i,"text")){u+=i.text;return}if(Q(i,"error")){a=`${i.error}: ${i.type||i.message||""}`;return}}),a)throw new Error(a);if(!o)throw new Error("No conversationId!");if(!u)throw new Error("No allText!");return{conversationId:o,allText:u}}async deleteConversation(t){return(await new S({method:"DELETE",baseURL:`${this.host}/api/v1/conversation/${t}`,timeout:this.params.config.timeout}).setHeaders({Cookie:this.cookie}).execute()).data}getContentLength(t){return Array.from(t.entries(),([r,n])=>({[r]:{ContentLength:typeof n=="string"?n.length:n.size}}))}}class aa extends Y{constructor(t){super(t),this.params=t,this.handleError$=r=>{const n=/"message":\s*"([^"]*)"/,s=r.message.match(n);let o=r?.body?.message;s&&s[1]&&(o=s[1]);const u=`${r.statusCode} ${o}`;return j({name:`${this.errorPrefix} ${u}`,value:o,isError:!0,disabled:!0})},this.colors={primary:"#D18EE2",secondary:"#fff"},this.serviceName=g.bgHex(this.colors.primary).hex(this.colors.secondary).bold("[Cohere]"),this.errorPrefix=g.red.bold("[Cohere]"),this.cohere=new qn({token:this.params.config.COHERE_KEY})}generateCommitMessage$(){return G(this.generateMessage()).pipe(T(t=>P(t)),I(t=>({name:`${this.serviceName} ${t}`,value:t,isError:!1})),L(this.handleError$))}async generateMessage(){try{const t=this.params.stagedDiff.diff,{locale:r,generate:n,type:s,prompt:o,logging:u}=this.params.config,a=this.params.config["max-length"],i=this.buildPrompt(r,t,n,a,s,o),l=this.params.config["max-tokens"],c=(await this.cohere.generate({prompt:i,maxTokens:l,temperature:this.params.config.temperature,model:this.params.config.COHERE_MODEL})).generations.map(D=>D.text).join("");return u&&_("Cohere",t,i,c),k(this.sanitizeMessage(c,this.params.config.type,n))}catch(t){const r=t;throw r instanceof zn?new w("Request timed out error!"):r}}}class ca extends Y{constructor(t){super(t),this.params=t,this.handleError$=r=>{const n=r.message||r.toString(),s=/(\[.*?\]\s*[^[]*)/g,o=[...n.matchAll(s)],u=[];o.forEach(i=>u.push(i[1]));const a=u[1]||"An error occurred";return j({name:`${this.errorPrefix} ${a}`,value:a,isError:!0,disabled:!0})},this.colors={primary:"#0077FF",secondary:"#fff"},this.serviceName=g.bgHex(this.colors.primary).hex(this.colors.secondary).bold("[Gemini]"),this.errorPrefix=g.red.bold("[Gemini]"),this.genAI=new Yn(this.params.config.GEMINI_KEY)}generateCommitMessage$(){return G(this.generateMessage()).pipe(T(t=>P(t)),I(t=>({name:`${this.serviceName} ${t}`,value:t,isError:!1})),L(this.handleError$))}async generateMessage(){try{const t=this.params.stagedDiff.diff,{locale:r,generate:n,type:s,prompt:o,logging:u}=this.params.config,a=this.params.config["max-length"],i=this.buildPrompt(r,t,n,a,s,o),l=this.params.config["max-tokens"],p=(await(await this.genAI.getGenerativeModel({model:this.params.config.GEMINI_MODEL,generationConfig:{maxOutputTokens:l,temperature:this.params.config.temperature}}).generateContent(i)).response).text();return u&&_("Gemini",t,i,p),k(this.sanitizeMessage(p,this.params.config.type,n))}catch(t){const r=t;throw r.code==="ENOTFOUND"?new w(`Error connecting to ${r.hostname} (${r.syscall})`):r}}}class Da extends Y{constructor(t){super(t),this.params=t,this.host="https://huggingface.co",this.cookie="",this.colors={primary:"#FED21F",secondary:"#000"},this.serviceName=g.bgHex(this.colors.primary).hex(this.colors.secondary).bold("[HuggingFace]"),this.errorPrefix=g.red.bold("[HuggingFace]"),this.cookie=this.params.config.HUGGING_COOKIE}generateCommitMessage$(){return G(this.generateMessage()).pipe(T(t=>P(t)),I((t,r)=>({name:`${this.serviceName} ${t}`,value:t,isError:!1})),L(this.handleError$))}async generateMessage(){try{const t=this.getFullPrompt();await this.prepareNewConversation();const{conversationId:r}=await this.getNewConversationId();await this.prepareConversationEvent(r);const{lastMessageId:n}=await this.getConversationInfo(r),s=await this.sendMessage(r,t,n);await this.deleteConversation(r);const{generate:o}=this.params.config;return k(this.sanitizeHuggingMessage(s,this.params.config.type,o))}catch(t){const r=t;throw r.code==="ENOTFOUND"?new w(`Error connecting to ${r.hostname} (${r.syscall})`):r}}sanitizeHuggingMessage(t,r,n){const s=/{[^{}]*}/g,o=t.match(s);if(!o)throw new Error("Failed to extract object from generated text");let u=null;o.forEach((i,l)=>{try{const f=JSON.parse(i);Q(f,"type")&&f.type==="finalAnswer"&&(u=f)}catch{}});const a=this.getFullPrompt();if(!u||!Q(u,"text"))throw this.params.config.logging&&_("HuggingFace",this.params.stagedDiff.diff,a,t),new Error("Cannot parse finalAnswer");return this.params.config.logging&&_("HuggingFace",this.params.stagedDiff.diff,a,u.text),this.sanitizeMessage(u.text,r,n)}async prepareNewConversation(){return(await new S({method:"POST",baseURL:`${this.host}/api/event`}).setHeaders({"content-type":"application/json",Cookie:this.cookie}).setBody({d:"huggingface.co",n:"pageview",r:"https://huggingface.co/chat/",u:"https://huggingface.co/chat/"}).execute()).data}async prepareConversationEvent(t){return(await new S({method:"POST",baseURL:`${this.host}/api/event`}).setHeaders({"content-type":"application/json",Cookie:this.cookie}).setBody({d:"huggingface.co",n:"pageview",r:"https://huggingface.co/chat/",u:`https://huggingface.co/chat/conversation/${t}`}).execute()).data}async getNewConversationId(){const t=await new S({method:"POST",baseURL:`${this.host}/chat/conversation`,timeout:this.params.config.timeout}).setHeaders({"content-type":"application/json",Cookie:this.cookie,Accept:"*/*",Connection:"keep-alive",Host:"huggingface.co",Origin:"https://huggingface.co"}).setBody({model:this.params.config.HUGGING_MODEL,preprompt:""}).execute();if(!t.data||!t.data.conversationId)throw new Error("No conversationId on Hugging service");return t.data}async getConversationInfo(t){const n=(await new S({method:"GET",baseURL:`${this.host}/chat/conversation/${t}/__data.json`,timeout:this.params.config.timeout}).setParams({"x-sveltekit-invalidated":"11"}).setHeaders({"Content-Type":"application/json",Cookie:this.cookie,Accept:"*/*",Connection:"keep-alive",Referer:"https://huggingface.co/chat/"}).execute()).data;if(!n||!n.nodes||n.nodes.length===0)throw new Error("No Nodes on conversation info");if(!n.nodes[1]||!n.nodes[1].data||n.nodes[1].data.length===0||!n.nodes[1].data[3])throw new Error("No data on node");const u=n.nodes[1]?.data[3];return{conversationInfo:n,lastMessageId:u}}async deleteConversation(t){return await new S({method:"DELETE",baseURL:`${this.host}/chat/conversation/${t}`,timeout:this.params.config.timeout}).setHeaders({Cookie:this.cookie}).execute(),(await new S({method:"GET",baseURL:`${this.host}/chat/__data.json`,timeout:this.params.config.timeout}).setParams({"x-sveltekit-trailing-slash":"1","x-sveltekit-invalidated":"10"}).setHeaders({"Content-Type":"application/json",Cookie:this.cookie,Accept:"*/*",Connection:"keep-alive",Referer:"https://huggingface.co/chat/"}).execute()).data}async sendMessage(t,r,n){return(await new S({method:"POST",baseURL:`${this.host}/chat/conversation/${t}`,timeout:this.params.config.timeout}).setHeaders({"content-type":"application/json",Cookie:this.cookie,authority:"huggingface.co",accept:"*/*",origin:"https://huggingface.co"}).setBody({files:[],id:n,inputs:r,is_continue:!1,is_retry:!1,use_cache:!1}).execute()).data}getFullPrompt(){const{locale:t,generate:r,type:n,prompt:s}=this.params.config,o=this.params.config["max-length"],u=this.params.stagedDiff.diff;return this.buildPrompt(t,u,r,o,n,s)}}class la extends Y{constructor(t){super(t),this.params=t,this.host="https://api.mistral.ai",this.apiKey="",this.handleError$=r=>{const n=r.message?.replace(/(\r\n|\n|\r)/gm,"")||"An error occurred";return j({name:`${this.errorPrefix} ${n}`,value:n,isError:!0,disabled:!0})},this.colors={primary:"#FC4A0A",secondary:"#fff"},this.serviceName=g.bgHex(this.colors.primary).hex(this.colors.secondary).bold("[MistralAI]"),this.errorPrefix=g.red.bold("[MistralAI]"),this.apiKey=this.params.config.MISTRAL_KEY}generateCommitMessage$(){return G(this.generateMessage()).pipe(T(t=>P(t)),I(t=>({name:`${this.serviceName} ${t}`,value:t,isError:!1})),L(this.handleError$))}async generateMessage(){try{const t=this.params.stagedDiff.diff,{locale:r,generate:n,type:s,prompt:o,logging:u}=this.params.config,a=this.params.config["max-length"],i=this.buildPrompt(r,t,n,a,s,o);await this.checkAvailableModels();const l=await this.createChatCompletions(i);return u&&_("MistralAI",t,i,l),k(this.sanitizeMessage(l,this.params.config.type,n))}catch(t){const r=t;throw r.code==="ENOTFOUND"?new w(`Error connecting to ${r.hostname} (${r.syscall})`):r}}async checkAvailableModels(){if((await this.getAvailableModels()).includes(this.params.config.MISTRAL_MODEL))return!0;throw new Error("Invalid model type of Mistral AI")}async getAvailableModels(){return(await new S({method:"GET",baseURL:`${this.host}/v1/models`,timeout:this.params.config.timeout}).setHeaders({Authorization:`Bearer ${this.apiKey}`,"content-type":"application/json"}).execute()).data.data.filter(r=>r.object==="model").map(r=>r.id)}async createChatCompletions(t){const n=(await new S({method:"POST",baseURL:`${this.host}/v1/chat/completions`,timeout:this.params.config.timeout}).setHeaders({Authorization:`Bearer ${this.apiKey}`,"content-type":"application/json"}).setBody({model:this.params.config.MISTRAL_MODEL,messages:[{role:"user",content:t}],temperature:this.params.config.temperature,top_p:1,max_tokens:this.params.config["max-tokens"],stream:!1,safe_prompt:!1,random_seed:Ei(10,1e3)}).execute()).data;if(!n.choices||n.choices.length===0||!n.choices[0].message?.content)throw new Error("No Content on response. Please open a Bug report");return n.choices[0].message.content}}class fa extends Y{constructor(t){super(t),this.params=t,this.host=St,this.model="",this.handleError$=r=>{if(r.response&&r.response.data?.error)return j({name:`${this.errorPrefix} ${r.response.data?.error}`,value:r.response.data?.error,isError:!0,disabled:!0});const n=r.message?.replace(/(\r\n|\n|\r)/gm,"")||"An error occurred";return j({name:`${this.errorPrefix} ${n}`,value:n,isError:!0,disabled:!0})},this.generateStreamChoice$=()=>{const n=`${Z(this.params.config.locale,this.params.config["max-length"],this.params.config.type,this.params.config.prompt)}
70
+ ${ie(this.params.config.generate)}`,s=this.ollama.chat({model:this.model,messages:[{role:"system",content:n},{role:"user",content:`${this.params.stagedDiff.diff}`}],stream:!0,options:{temperature:this.params.config.temperature}});let o="";return P(Ur(s)).pipe(Ut(u=>o+=u.message.content),I(u=>({id:this.params.keyName,name:`${this.serviceName} ${o}`,value:`${o}`,isError:!1,description:u.done?O:Kr,disabled:!u.done})))},this.colors={primary:"#FFF",secondary:"#000"},this.serviceName=g.bgHex(this.colors.primary).hex(this.colors.secondary).bold("[Ollama]"),this.errorPrefix=g.red.bold("[Ollama]"),this.model=this.params.config.OLLAMA_MODEL,this.host=this.params.config.OLLAMA_HOST||St,this.ollama=new Wn({host:this.host})}generateCommitMessage$(){return this.params.config.OLLAMA_STREAM?this.generateStreamCommitMessage$():G(this.generateMessage()).pipe(T(t=>P(t)),I(t=>({name:`${this.serviceName} ${t}`,value:t,isError:!1})),L(this.handleError$))}generateStreamCommitMessage$(){return G(this.checkIsAvailableOllama()).pipe(xn(()=>this.generateStreamChoice$()),Kt((t,r)=>{if(r.description===O){const{type:o,generate:u,logging:a}=this.params.config;if(a){const f=this.createSystemPrompt();_("Ollama",this.params.stagedDiff.diff,f,r.value)}const i=k(this.sanitizeMessage(r.value,o,u));return!i||i.length===0?[{id:`${this.params.keyName}_${O}_0`,name:`${this.serviceName} Failed to extract messages from response`,value:"Failed to extract messages from response",isError:!0,description:O,disabled:!0}]:i.map((f,c)=>({id:`${this.params.keyName}_${O}_${c}`,name:`${this.serviceName} ${f}`,value:`${f}`,isError:!1,description:O,disabled:!1}))}return t.find(o=>o.id===r.id)?[...t.map(o=>r.id===o.id?r:o)]:[{...r}]},[]),T(t=>t),L(this.handleError$))}async generateMessage(){try{await this.checkIsAvailableOllama();const t=await this.createChatCompletions(),{type:r,generate:n,logging:s}=this.params.config,o=this.createSystemPrompt();return s&&_("Ollama",this.params.stagedDiff.diff,o,t),k(this.sanitizeMessage(t,r,n))}catch(t){const r=t;throw r.code==="ENOTFOUND"?new w(`Error connecting to ${r.hostname} (${r.syscall})`):r}}async checkIsAvailableOllama(){try{return(await new S({method:"GET",baseURL:`${this.host}`,timeout:this.params.config.OLLAMA_TIMEOUT}).execute()).data}catch(t){throw t.code==="ECONNREFUSED"?new w(`Error connecting to ${this.host}. Please run Ollama or check host`):t}}async createChatCompletions(){const t=this.createSystemPrompt();return(await this.ollama.chat({model:this.model,messages:[{role:"system",content:t},{role:"user",content:`${this.params.stagedDiff.diff}`}],stream:!1,options:{temperature:this.params.config.temperature}})).message.content}createSystemPrompt(){return`${Z(this.params.config.locale,this.params.config["max-length"],this.params.config.type,this.params.config.prompt)}
71
+ ${ie(this.params.config.generate)}`}}class pa extends Y{constructor(t){super(t),this.params=t,this.handleError$=r=>{let n="An error occurred";if(r.message){n=r.message.split(`
72
+ `)[0];const s=this.extractJSONFromError(r.message);n+=`: ${s.error.message}`}return j({name:`${this.errorPrefix} ${n}`,value:n,isError:!0,disabled:!0})},this.colors={primary:"#74AA9C",secondary:"#FFF"},this.serviceName=g.bgHex(this.colors.primary).hex(this.colors.secondary).bold("[ChatGPT]"),this.errorPrefix=g.red.bold("[ChatGPT]")}generateCommitMessage$(){return G(ta(this.params.config.OPENAI_URL,this.params.config.OPENAI_PATH,this.params.config.OPENAI_KEY,this.params.config.OPENAI_MODEL,this.params.config.locale,this.params.stagedDiff.diff,this.params.config.generate,this.params.config["max-length"],this.params.config.type,this.params.config.timeout,this.params.config["max-tokens"],this.params.config.temperature,this.params.config.prompt,this.params.config.logging,this.params.config.proxy)).pipe(T(t=>P(t)),I(t=>({name:`${this.serviceName} ${t}`,value:t,isError:!1})),L(this.handleError$))}extractJSONFromError(t){const r=/[{[]{1}([,:{}[\]0-9.\-+Eaeflnr-u \n\r\t]|".*?")+[}\]]{1}/gis,n=t.match(r);return n?Object.assign({},...n.map(s=>JSON.parse(s))):{error:{message:"Unknown error"}}}}class fn{constructor(t,r){this.config=t,this.stagedDiff=r}createAIRequests$(t){return P(t).pipe(On(r=>{const n={config:this.config,stagedDiff:this.stagedDiff,keyName:r};switch(r){case H.OPEN_AI:return z.create(pa,n).generateCommitMessage$();case H.GEMINI:return z.create(ca,n).generateCommitMessage$();case H.ANTHROPIC:return z.create(ra,n).generateCommitMessage$();case H.HUGGING:return z.create(Da,n).generateCommitMessage$();case H.CLOVA_X:return z.create(ia,n).generateCommitMessage$();case H.MISTRAL:return z.create(la,n).generateCommitMessage$();case H.OLLAMA:return z.create(fa,n).generateCommitMessage$();case H.COHERE:return z.create(aa,n).generateCommitMessage$();default:const s=g.red.bold(`[${r}]`);return j({name:s+" Invalid AI type",value:"Invalid AI type",isError:!0,disabled:!0})}}))}}const pn=async()=>{const{stdout:e,failed:t}=await ue("git",["rev-parse","--show-toplevel"],{reject:!1});if(t)throw new w("The current directory must be a Git repository!");return e},Pt=e=>`:(exclude)${e}`,dn=["package-lock.json","pnpm-lock.yaml","*.lock"].map(Pt),mn=async e=>{const t=["diff","--cached","--diff-algorithm=minimal"],{stdout:r}=await ue("git",[...t,"--name-only",...dn,...e?e.map(Pt):[]]);if(!r)return null;const{stdout:n}=await ue("git",[...t,...dn,...e?e.map(Pt):[]]);return{files:r.split(`
73
+ `),diff:n}},da=e=>`Detected ${e.length.toLocaleString()} staged file${e.length>1?"s":""}`;class Ne{constructor(){this.title="aicommit2"}printTitle(){console.log(Vn.textSync(this.title,{font:"Small"}))}displaySpinner(t){return Ge(t).start()}stopSpinner(t){t.stop(),t.clear()}printStagedFiles(t){console.log(g.bold.green("\u2714 ")+g.bold(`${da(t.files)}:`)),console.log(`${t.files.map(r=>` ${r}`).join(`
74
74
  `)}
75
75
  `)}printAnalyzed(){console.log(`
76
76
  ${g.bold.green("\u2714")} ${g.bold("Changes analyzed")}`)}printCommitted(){console.log(`
@@ -78,14 +78,14 @@ ${g.bold.green("\u2714")} ${g.bold("Successfully committed!")}`)}printCopied(){c
78
78
  ${g.bold.green("\u2714")} ${g.bold("Successfully copied! Press 'Ctrl + V' to paste")}`)}printSavedCommitMessage(){console.log(`
79
79
  ${g.bold.green("\u2714")} ${g.bold("Saved commit message")}`)}printCancelledCommit(){console.log(`
80
80
  ${g.bold.yellow("\u26A0")} ${g.yellow("Commit cancelled")}`)}printErrorMessage(t){console.log(`
81
- ${g.bold.red("\u2716")} ${g.red(`${t}`)}`)}moveCursorUp(){const t=ye.createInterface({input:process.stdin,output:process.stdout});ye.moveCursor(process.stdout,0,-1),t.close()}moveCursorDown(){const t=ye.createInterface({input:process.stdin,output:process.stdout});ye.moveCursor(process.stdout,0,1),t.close()}}const la={isLoading:!1,startOption:{text:"AI is analyzing your changes"}},Nt="No commit messages were generated";class fa{constructor(){this.choices$=new zt([]),this.loader$=new zt(la),this.destroyed$=new On(1)}initPrompt(){return Ge.registerPrompt("reactiveListPrompt",Yn),Ge.prompt({type:"reactiveListPrompt",name:"aicommit2Prompt",message:"Pick a commit message to use: ",emptyMessage:`\u26A0 ${Nt}`,choices$:this.choices$,loader$:this.loader$,loop:!1})}startLoader(){this.loader$.next({isLoading:!0})}refreshChoices(t){const{value:r,isError:n}=t;if(!t||!r)return;if(!t.id){this.choices$.next([...this.currentChoices,t].sort(me));return}this.checkStreamChoice(t)}checkErrorOnChoices(){if(this.choices$.getValue().map(r=>r).every(r=>r?.isError||r?.disabled)){this.alertNoGeneratedMessage(),this.logEmptyCommitMessage(),process.exit(1);return}this.stopLoaderOnSuccess()}completeSubject(){this.choices$.complete(),this.loader$.complete(),this.destroyed$.next(!0),this.destroyed$.complete()}alertNoGeneratedMessage(){this.loader$.next({isLoading:!1,message:Nt,stopOption:{doneFrame:"\u26A0",color:"yellow"}})}stopLoaderOnSuccess(){this.loader$.next({isLoading:!1,message:"Changes analyzed"})}logEmptyCommitMessage(){console.log(`${g.bold.yellow("\u26A0")} ${g.yellow(`${Nt}`)}`)}checkStreamChoice(t){if(t.description===O){const s=this.currentChoices.find(o=>{const u=o.id||"",a=/\d/.test(u);return t.id?.includes(u)&&!a});if(s){this.choices$.next([...this.currentChoices.filter(o=>o.id!==s.id),t].sort(me));return}this.choices$.next([...this.currentChoices,t].sort(me));return}if(this.currentChoices.find(s=>s?.id===t.id)){this.choices$.next(this.currentChoices.map(s=>s?.id===t.id?t:s).sort(me));return}this.choices$.next([...this.currentChoices,t].sort(me))}get currentChoices(){return this.choices$.getValue().map(t=>t)}}const j=new Te;var pa=async(e,t,r,n,s,o,u,a,i)=>(async()=>{j.printTitle(),await fn(),n&&await ue("git",["add","--update"]);const l=j.displaySpinner("Detecting staged files"),f=await dn(r);if(l.stop(),!f)throw new w("No staged changes found. Stage your changes manually, or automatically stage all changes with the `--all` flag.");j.printStagedFiles(f);const{env:D}=process,c=await Pt({OPENAI_KEY:D.OPENAI_KEY||D.OPENAI_API_KEY,OPENAI_MODEL:D.OPENAI_MODEL||D["openai-model"]||D.openai_model,OPENAI_URL:D.OPENAI_URL||D["openai-url"]||D.OPENAI_URL,GEMINI_KEY:D.GEMINI_KEY||D.GEMINI_API_KEY,GEMINI_MODEL:D.GEMINI_MODEL||D["gemini-model"]||D.gemini_model,ANTHROPIC_KEY:D.ANTHROPIC_KEY||D.ANTHROPIC_API_KEY,ANTHROPIC_MODEL:D.ANTHROPIC_MODEL||D["anthropic-model"]||D.anthropic_model,HUGGING_COOKIE:D.HUGGING_COOKIE||D.HUGGING_API_KEY||D.HF_TOKEN,HUGGING_MODEL:D.HUGGING_MODEL||D["hugging-model"],CLOVAX_COOKIE:D.CLOVAX_COOKIE||D.CLOVA_X_COOKIE,proxy:D.https_proxy||D.HTTPS_PROXY||D.http_proxy||D.HTTP_PROXY,temperature:D.temperature,generate:t?.toString()||D.generate,type:s?.toString()||D.type,locale:e?.toString()||D.locale,prompt:a?.toString()||D.prompt}),p=Object.entries(c).filter(([A])=>Hr.includes(A)).filter(([A,Re])=>!!Re).map(([A])=>A);if(p.length===0)throw new w("Please set at least one API key via `aicommit2 config set OPENAI_KEY=<your token>`");const h=new ln(c,f),m=new fa,C=m.initPrompt();m.startLoader();const b=h.createAIRequests$(p).subscribe(A=>m.refreshChoices(A),()=>{},()=>m.checkErrorOnChoices()),E=await C;b.unsubscribe(),m.completeSubject(),j.moveCursorUp();const I=E.aicommit2Prompt?.value;if(!I)throw new w("An error occurred! No selected message");if(u&&(ds("copy-paste").copy(I),j.printCopied(),process.exit()),o){const A=He("Committing with the generated message").start();await ue("git",["commit","-m",I,...i]),A.stop(),A.clear(),j.printCommitted(),process.exit()}const P=await Ge.prompt([{type:"confirm",name:"confirmationPrompt",message:"Use selected message?",default:!0}]),{confirmationPrompt:z}=P;if(z){const A=He("Committing with the generated message").start();await ue("git",["commit","-m",I,...i]),A.stop(),A.clear(),j.printCommitted(),process.exit()}j.printCancelledCommit(),process.exit()})().catch(l=>{j.printErrorMessage(l.message),Ie(l),process.exit(1)}),da=pr({name:"config",parameters:["<mode>","<key=value...>"]},e=>{(async()=>{const{mode:t,keyValue:r}=e._;if(t==="get"){const n=await Pt({},!0);for(const s of r)Q(n,s)&&console.log(`${s}=${n[s]}`);return}if(t==="set"){await na(r.map(n=>n.split("=")));return}throw new w(`Invalid mode: ${t}`)})().catch(t=>{new Te().printErrorMessage(t.message),Ie(t),process.exit(1)})});const mn="prepare-commit-msg",hn=`.git/hooks/${mn}`,Le=kn(new URL("cli.mjs",import.meta.url)),ma=process.argv[1].replace(/\\/g,"/").endsWith(`/${hn}`),gn=process.platform==="win32",Cn=`
81
+ ${g.bold.red("\u2716")} ${g.red(`${t}`)}`)}moveCursorUp(){const t=ye.createInterface({input:process.stdin,output:process.stdout});ye.moveCursor(process.stdout,0,-1),t.close()}moveCursorDown(){const t=ye.createInterface({input:process.stdin,output:process.stdout});ye.moveCursor(process.stdout,0,1),t.close()}}const ma={isLoading:!1,startOption:{text:"AI is analyzing your changes"}},_t="No commit messages were generated";class ha{constructor(){this.choices$=new qt([]),this.loader$=new qt(ma),this.destroyed$=new Sn(1)}initPrompt(){return je.registerPrompt("reactiveListPrompt",Xn),je.prompt({type:"reactiveListPrompt",name:"aicommit2Prompt",message:"Pick a commit message to use: ",emptyMessage:`\u26A0 ${_t}`,choices$:this.choices$,loader$:this.loader$,loop:!1})}startLoader(){this.loader$.next({isLoading:!0})}refreshChoices(t){const{value:r,isError:n}=t;if(!t||!r)return;if(!t.id){this.choices$.next([...this.currentChoices,t].sort(me));return}this.checkStreamChoice(t)}checkErrorOnChoices(){if(this.choices$.getValue().map(r=>r).every(r=>r?.isError||r?.disabled)){this.alertNoGeneratedMessage(),this.logEmptyCommitMessage(),process.exit(1);return}this.stopLoaderOnSuccess()}completeSubject(){this.choices$.complete(),this.loader$.complete(),this.destroyed$.next(!0),this.destroyed$.complete()}alertNoGeneratedMessage(){this.loader$.next({isLoading:!1,message:_t,stopOption:{doneFrame:"\u26A0",color:"yellow"}})}stopLoaderOnSuccess(){this.loader$.next({isLoading:!1,message:"Changes analyzed"})}logEmptyCommitMessage(){console.log(`${g.bold.yellow("\u26A0")} ${g.yellow(`${_t}`)}`)}checkStreamChoice(t){if(t.description===O){const s=this.currentChoices.find(o=>{const u=o.id||"",a=/\d/.test(u);return t.id?.includes(u)&&!a});if(s){this.choices$.next([...this.currentChoices.filter(o=>o.id!==s.id),t].sort(me));return}this.choices$.next([...this.currentChoices,t].sort(me));return}if(this.currentChoices.find(s=>s?.id===t.id)){this.choices$.next(this.currentChoices.map(s=>s?.id===t.id?t:s).sort(me));return}this.choices$.next([...this.currentChoices,t].sort(me))}get currentChoices(){return this.choices$.getValue().map(t=>t)}}const U=new Ne;var ga=async(e,t,r,n,s,o,u,a,i)=>(async()=>{U.printTitle(),await pn(),n&&await ue("git",["add","--update"]);const l=U.displaySpinner("Detecting staged files"),f=await mn(r);if(l.stop(),!f)throw new w("No staged changes found. Stage your changes manually, or automatically stage all changes with the `--all` flag.");U.printStagedFiles(f);const{env:c}=process,D=await Mt({OPENAI_KEY:c.OPENAI_KEY||c.OPENAI_API_KEY,OPENAI_MODEL:c.OPENAI_MODEL||c["openai-model"]||c.openai_model,OPENAI_URL:c.OPENAI_URL||c["openai-url"]||c.OPENAI_URL,GEMINI_KEY:c.GEMINI_KEY||c.GEMINI_API_KEY,GEMINI_MODEL:c.GEMINI_MODEL||c["gemini-model"]||c.gemini_model,ANTHROPIC_KEY:c.ANTHROPIC_KEY||c.ANTHROPIC_API_KEY,ANTHROPIC_MODEL:c.ANTHROPIC_MODEL||c["anthropic-model"]||c.anthropic_model,HUGGING_COOKIE:c.HUGGING_COOKIE||c.HUGGING_API_KEY||c.HF_TOKEN,HUGGING_MODEL:c.HUGGING_MODEL||c["hugging-model"],CLOVAX_COOKIE:c.CLOVAX_COOKIE||c.CLOVA_X_COOKIE,proxy:c.https_proxy||c.HTTPS_PROXY||c.http_proxy||c.HTTP_PROXY,temperature:c.temperature,generate:t?.toString()||c.generate,type:s?.toString()||c.type,locale:e?.toString()||c.locale,prompt:a?.toString()||c.prompt}),p=Object.entries(D).filter(([A])=>Gr.includes(A)).filter(([A,Le])=>!!Le).map(([A])=>A);if(p.length===0)throw new w("Please set at least one API key via `aicommit2 config set OPENAI_KEY=<your token>`");const h=new fn(D,f),m=new ha,C=m.initPrompt();m.startLoader();const b=h.createAIRequests$(p).subscribe(A=>m.refreshChoices(A),()=>{},()=>m.checkErrorOnChoices()),F=await C;b.unsubscribe(),m.completeSubject(),U.moveCursorUp();const M=F.aicommit2Prompt?.value;if(!M)throw new w("An error occurred! No selected message");if(u&&(gs("copy-paste").copy(M),U.printCopied(),process.exit()),o){const A=Ge("Committing with the generated message").start();await ue("git",["commit","-m",M,...i]),A.stop(),A.clear(),U.printCommitted(),process.exit()}const N=await je.prompt([{type:"confirm",name:"confirmationPrompt",message:"Use selected message?",default:!0}]),{confirmationPrompt:W}=N;if(W){const A=Ge("Committing with the generated message").start();await ue("git",["commit","-m",M,...i]),A.stop(),A.clear(),U.printCommitted(),process.exit()}U.printCancelledCommit(),process.exit()})().catch(l=>{U.printErrorMessage(l.message),Ie(l),process.exit(1)}),Ca=fr({name:"config",parameters:["<mode>","<key=value...>"]},e=>{(async()=>{const{mode:t,keyValue:r}=e._;if(t==="get"){const n=await Mt({},!0);for(const s of r)Q(n,s)&&console.log(`${s}=${n[s]}`);return}if(t==="set"){await ua(r.map(n=>n.split("=")));return}throw new w(`Invalid mode: ${t}`)})().catch(t=>{new Ne().printErrorMessage(t.message),Ie(t),process.exit(1)})});const hn="prepare-commit-msg",gn=`.git/hooks/${hn}`,Te=jn(new URL("cli.mjs",import.meta.url)),Ea=process.argv[1].replace(/\\/g,"/").endsWith(`/${gn}`),Cn=process.platform==="win32",En=`
82
82
  #!/usr/bin/env node
83
- import(${JSON.stringify(jn(Le))})
84
- `.trim();var ha=pr({name:"hook",parameters:["<install/uninstall>"]},e=>{(async()=>{const t=await fn(),{installUninstall:r}=e._,n=H.join(t,hn),s=await Dn(n);if(r==="install"){if(s){if(await x.realpath(n).catch(()=>{})===Le){console.warn("The hook is already installed");return}throw new w(`A different ${mn} hook seems to be installed. Please remove it before installing aicommit2.`)}await x.mkdir(H.dirname(n),{recursive:!0}),gn?await x.writeFile(n,Cn):(await x.symlink(Le,n,"file"),await x.chmod(n,493)),console.log(`${g.green("\u2714")} Hook installed`);return}if(r==="uninstall"){if(!s){console.warn("Hook is not installed");return}if(gn){if(await x.readFile(n,"utf8")!==Cn){console.warn("Hook is not installed");return}}else if(await x.realpath(n)!==Le){console.warn("Hook is not installed");return}await x.rm(n),console.log(`${g.green("\u2714")} Hook uninstalled`);return}throw new w(`Invalid mode: ${r}`)})().catch(t=>{console.error(`${g.red("\u2716")} ${t.message}`),Ie(t),process.exit(1)})});const[Tt,ga]=process.argv.slice(2);var Ca=()=>(async()=>{if(!Tt)throw new w('Commit message file path is missing. This file should be called from the "prepare-commit-msg" git hook');if(ga)return;const e=await dn();if(!e)return;const t=new Te;t.printTitle();const{env:r}=process,n=await Pt({proxy:r.https_proxy||r.HTTPS_PROXY||r.http_proxy||r.HTTP_PROXY}),s=Object.entries(n).filter(([p])=>Hr.includes(p)).filter(([p,d])=>!!d).map(([p])=>p);if(s.length===0)throw new w("Please set at least one API key via `aicommit2 config set OPENAI_KEY=<your token>`");const u=new ln(n,e),a=t.displaySpinner("The AI is analyzing your changes");let i;try{i=await Sn(u.createAIRequests$(s).pipe(Ut(p=>!p.isError),M(p=>p.value),In()))}finally{a.stop(),a.clear(),t.printAnalyzed()}const f=await x.readFile(Tt,"utf8")!=="",D=i.length>1;let c="";f&&(c=`# \u{1F916} AI generated commit${D?"s":""}
85
- `),D?(f&&(c+=`# Select one of the following messages by uncommenting:
86
- `),c+=`
83
+ import(${JSON.stringify(Gn(Te))})
84
+ `.trim();var Fa=fr({name:"hook",parameters:["<install/uninstall>"]},e=>{(async()=>{const t=await pn(),{installUninstall:r}=e._,n=q.join(t,gn),s=await an(n);if(r==="install"){if(s){if(await x.realpath(n).catch(()=>{})===Te){console.warn("The hook is already installed");return}throw new w(`A different ${hn} hook seems to be installed. Please remove it before installing aicommit2.`)}await x.mkdir(q.dirname(n),{recursive:!0}),Cn?await x.writeFile(n,En):(await x.symlink(Te,n,"file"),await x.chmod(n,493)),console.log(`${g.green("\u2714")} Hook installed`);return}if(r==="uninstall"){if(!s){console.warn("Hook is not installed");return}if(Cn){if(await x.readFile(n,"utf8")!==En){console.warn("Hook is not installed");return}}else if(await x.realpath(n)!==Te){console.warn("Hook is not installed");return}await x.rm(n),console.log(`${g.green("\u2714")} Hook uninstalled`);return}throw new w(`Invalid mode: ${r}`)})().catch(t=>{console.error(`${g.red("\u2716")} ${t.message}`),Ie(t),process.exit(1)})});const[Nt,ya]=process.argv.slice(2);var wa=()=>(async()=>{if(!Nt)throw new w('Commit message file path is missing. This file should be called from the "prepare-commit-msg" git hook');if(ya)return;const e=await mn();if(!e)return;const t=new Ne;t.printTitle();const{env:r}=process,n=await Mt({proxy:r.https_proxy||r.HTTPS_PROXY||r.http_proxy||r.HTTP_PROXY}),s=Object.entries(n).filter(([p])=>Gr.includes(p)).filter(([p,d])=>!!d).map(([p])=>p);if(s.length===0)throw new w("Please set at least one API key via `aicommit2 config set OPENAI_KEY=<your token>`");const u=new fn(n,e),a=t.displaySpinner("The AI is analyzing your changes");let i;try{i=await In(u.createAIRequests$(s).pipe(Ht(p=>!p.isError),I(p=>p.value),Mn()))}finally{a.stop(),a.clear(),t.printAnalyzed()}const f=await x.readFile(Nt,"utf8")!=="",c=i.length>1;let D="";f&&(D=`# \u{1F916} AI generated commit${c?"s":""}
85
+ `),c?(f&&(D+=`# Select one of the following messages by uncommenting:
86
+ `),D+=`
87
87
  ${i.map(p=>`# ${p}`).join(`
88
- `)}`):(f&&(c+=`# Edit the message below and commit:
89
- `),c+=`
88
+ `)}`):(f&&(D+=`# Edit the message below and commit:
89
+ `),D+=`
90
90
  ${i[0]}
91
- `),await x.appendFile(Tt,c),t.printSavedCommitMessage()})().catch(e=>{new Te().printErrorMessage(e.message),Ie(e),process.exit(1)});const Fn=process.argv.slice(2);ps({name:"aicommit2",version:Ur,flags:{locale:{type:String,description:"Locale to use for the generated commit messages (default: en)",alias:"l"},generate:{type:Number,description:"Number of messages to generate (Warning: generating multiple costs more) (default: 1)",alias:"g"},exclude:{type:[String],description:"Files to exclude from AI analysis",alias:"x"},all:{type:Boolean,description:"Automatically stage changes in tracked files for the commit",alias:"a",default:!1},type:{type:String,description:"Type of commit message to generate",alias:"t",default:"conventional"},confirm:{type:Boolean,description:"Skip confirmation when committing after message generation (default: false)",alias:"y",default:!1},clipboard:{type:Boolean,description:"Copy the selected message to the clipboard",alias:"c",default:!1},prompt:{type:String,description:"Additional prompt to let users fine-tune provided prompt",alias:"p"}},commands:[da,ha],help:{description:mi},ignoreArgv:e=>e==="unknown-flag"||e==="argument"},e=>{if(ma){Ca();return}pa(e.flags.locale,e.flags.generate,e.flags.exclude,e.flags.all,e.flags.type,e.flags.confirm,e.flags.clipboard,e.flags.prompt,Fn)},Fn);
91
+ `),await x.appendFile(Nt,D),t.printSavedCommitMessage()})().catch(e=>{new Ne().printErrorMessage(e.message),Ie(e),process.exit(1)});const Fn=process.argv.slice(2);hs({name:"aicommit2",version:Hr,flags:{locale:{type:String,description:"Locale to use for the generated commit messages (default: en)",alias:"l"},generate:{type:Number,description:"Number of messages to generate (Warning: generating multiple costs more) (default: 1)",alias:"g"},exclude:{type:[String],description:"Files to exclude from AI analysis",alias:"x"},all:{type:Boolean,description:"Automatically stage changes in tracked files for the commit",alias:"a",default:!1},type:{type:String,description:"Type of commit message to generate",alias:"t",default:"conventional"},confirm:{type:Boolean,description:"Skip confirmation when committing after message generation (default: false)",alias:"y",default:!1},clipboard:{type:Boolean,description:"Copy the selected message to the clipboard",alias:"c",default:!1},prompt:{type:String,description:"Additional prompt to let users fine-tune provided prompt",alias:"p"}},commands:[Ca,Fa],help:{description:Ci},ignoreArgv:e=>e==="unknown-flag"||e==="argument"},e=>{if(Ea){wa();return}ga(e.flags.locale,e.flags.generate,e.flags.exclude,e.flags.all,e.flags.type,e.flags.confirm,e.flags.clipboard,e.flags.prompt,Fn)},Fn);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "aicommit2",
3
- "version": "1.9.0",
3
+ "version": "1.9.2",
4
4
  "description": "A Reactive CLI that generates git commit messages with various AI",
5
5
  "keywords": [
6
6
  "cli",
@@ -24,12 +24,14 @@
24
24
  "claude2",
25
25
  "claude3",
26
26
  "gemini",
27
+ "gemini-pro",
27
28
  "generative-ai",
28
29
  "mistral",
29
30
  "ollama",
30
31
  "llama3",
31
32
  "llm",
32
- "chatgpt"
33
+ "chatgpt",
34
+ "cohere"
33
35
  ],
34
36
  "license": "MIT",
35
37
  "repository": "tak-bro/aicommit2",
@@ -45,11 +47,12 @@
45
47
  "dependencies": {
46
48
  "@anthropic-ai/sdk": "^0.20.8",
47
49
  "@dqbd/tiktoken": "^1.0.2",
48
- "@google/generative-ai": "^0.9.0",
50
+ "@google/generative-ai": "^0.11.4",
49
51
  "@inquirer/prompts": "^3.0.0",
50
52
  "@pacote/xxhash": "^0.3.2",
51
53
  "axios": "^1.6.8",
52
54
  "chalk": "^5.3.0",
55
+ "cohere-ai": "^7.10.2",
53
56
  "copy-paste": "^1.5.3",
54
57
  "figlet": "^1.7.0",
55
58
  "formdata-node": "^6.0.3",