aicommit2 1.8.7 → 1.9.1

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 +16 -4
  2. package/dist/cli.mjs +62 -51
  3. package/package.json +3 -2
package/README.md CHANGED
@@ -314,6 +314,7 @@ aicommit2 config set OPENAI_KEY=<your-api-key> generate=3 locale=en
314
314
  | `max-tokens` | `200` | The maximum number of tokens that the AI models can generate (for **Open AI, Anthropic, Gemini, Mistral**) |
315
315
  | `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
316
  | `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) |
317
318
 
318
319
  > **Currently, options are set universally. However, there are plans to develop the ability to set individual options in the future.**
319
320
 
@@ -420,6 +421,16 @@ Additional prompt to let users fine-tune provided prompt. Users provide extra in
420
421
  aicommit2 config set prompt="Do not mention config changes"
421
422
  ```
422
423
 
424
+ ##### logging
425
+
426
+ Default: `false`
427
+
428
+ Option that allows users to decide whether to generate a log file capturing the responses.
429
+ The log files will be stored in the `~/.aicommit2_log` directory(user's home).
430
+
431
+ ![log-path](https://github.com/tak-bro/aicommit2/blob/main/img/log_path.png?raw=true)
432
+
433
+
423
434
  ### Ollama
424
435
 
425
436
  ##### OLLAMA_MODEL
@@ -466,13 +477,13 @@ The Chat Completions (`/v1/chat/completions`) model to use. Consult the list of
466
477
  aicommit2 config set OPENAI_MODEL=gpt-4
467
478
  ```
468
479
 
469
- #### OPENAI_URL
480
+ ##### OPENAI_URL
470
481
 
471
482
  Default: `https://api.openai.com`
472
483
 
473
484
  The OpenAI URL. Both https and http protocols supported. It allows to run local OpenAI-compatible server.
474
485
 
475
- #### OPENAI_PATH
486
+ ##### OPENAI_PATH
476
487
 
477
488
  Default: `/v1/chat/completions`
478
489
 
@@ -508,12 +519,13 @@ The Gemini API key. If you don't have one, create a key in [Google AI Studio](ht
508
519
 
509
520
  ##### GEMINI_MODEL
510
521
 
511
- Default: `gemini-pro`
522
+ Default: `gemini-1.5-flash-latest`
512
523
 
513
524
  Supported:
525
+ - `gemini-1.5-flash-latest`
514
526
  - `gemini-pro`
515
527
 
516
- > Currently supporting only one model, but as Gemini starts supporting other models, it will be updated.
528
+ > The models mentioned above are subject to change.
517
529
 
518
530
  ### MISTRAL
519
531
 
package/dist/cli.mjs CHANGED
@@ -1,65 +1,76 @@
1
1
  #!/usr/bin/env node
2
- import Te from"tty";import{createRequire as gn}from"module";import{Buffer as Cn}from"node:buffer";import V from"node:path";import Nt from"node:child_process";import j from"node:process";import Fn from"child_process";import X from"path";import Le from"fs";import En from"node:url";import yn,{constants as Tt}from"node:os";import Lt from"assert";import Rt from"events";import bn from"buffer";import Re from"stream";import kt from"util";import ke from"inquirer";import je from"ora";import g from"chalk";import{of as G,from as M,filter as jt,map as S,tap as Gt,concatMap as T,catchError as L,scan as Ut,switchMap as wn,mergeMap as An,BehaviorSubject as Ht,ReplaySubject as vn,lastValueFrom as $n,toArray as Bn}from"rxjs";import xn from"@anthropic-ai/sdk";import{fromPromise as U}from"rxjs/internal/observable/innerFrom";import On from"http";import In from"https";import"@dqbd/tiktoken";import Sn from"net";import Mn from"tls";import Pn,{fileURLToPath as _n,pathToFileURL as Nn}from"url";import Kt from"os";import{FormData as Tn,Blob as Ln}from"formdata-node";import B from"fs/promises";import Rn from"axios";import{GoogleGenerativeAI as kn}from"@google/generative-ai";import{Ollama as jn}from"ollama";import Ce from"readline";import Gn from"figlet";import Un from"inquirer-reactive-list-prompt";const Hn="known-flag",Kn="unknown-flag",qn="argument",{stringify:ie}=JSON,zn=/\B([A-Z])/g,Yn=e=>e.replace(zn,"-$1").toLowerCase(),{hasOwnProperty:Wn}=Object.prototype,ae=(e,t)=>Wn.call(e,t),Vn=e=>Array.isArray(e),qt=e=>typeof e=="function"?[e,!1]:Vn(e)?[e[0],!0]:qt(e.type),Xn=(e,t)=>e===Boolean?t!=="false":t,Jn=(e,t)=>typeof t=="boolean"?t:e===Number&&t===""?Number.NaN:e(t),Zn=/[\s.:=]/,Qn=e=>{const t=`Flag name ${ie(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(Zn);if(r)throw new Error(`${t} cannot contain ${ie(r?.[0])}`)},eo=e=>{const t={},r=(n,s)=>{if(ae(t,n))throw new Error(`Duplicate flags named ${ie(n)}`);t[n]=s};for(const n in e){if(!ae(e,n))continue;Qn(n);const s=e[n],o=[[],...qt(s),s];r(n,o);const u=Yn(n);if(n!==u&&r(u,o),"alias"in s&&typeof s.alias=="string"){const{alias:a}=s,i=`Flag alias ${ie(a)} for flag ${ie(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},to=(e,t)=>{const r={};for(const n in e){if(!ae(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},Fe="--",ro=/[.:=]/,no=/^-{1,2}\w/,oo=e=>{if(!no.test(e))return;const t=!e.startsWith(Fe);let r=e.slice(t?1:2),n;const s=r.match(ro);if(s){const{index:o}=s;n=r.slice(o+1),r=r.slice(0,o)}return[r,n,t]},so=(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===Fe){s();const i=e.slice(o+1);r?.(i,[o],!0);break}const a=oo(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()},uo=(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)}},io=(e,t=process.argv.slice(2),{ignore:r}={})=>{const n=[],s=eo(e),o={},u=[];return u[Fe]=[],so(t,{onFlag(a,i,l){const f=ae(s,a);if(!r?.(f?Hn:Kn,a,i)){if(f){const[D,c]=s[a],p=Xn(c,i),d=(m,h)=>{n.push(l),h&&n.push(h),D.push(Jn(c,m||""))};return p===void 0?d:d(p)}ae(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[Fe]=a,t.splice(i[0])):n.push(i))}}),uo(t,n),{flags:to(e,s),unknownFlags:o,_:u}};var ao=Object.create,Ee=Object.defineProperty,Do=Object.defineProperties,co=Object.getOwnPropertyDescriptor,lo=Object.getOwnPropertyDescriptors,fo=Object.getOwnPropertyNames,zt=Object.getOwnPropertySymbols,po=Object.getPrototypeOf,Yt=Object.prototype.hasOwnProperty,mo=Object.prototype.propertyIsEnumerable,Wt=(e,t,r)=>t in e?Ee(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,ye=(e,t)=>{for(var r in t||(t={}))Yt.call(t,r)&&Wt(e,r,t[r]);if(zt)for(var r of zt(t))mo.call(t,r)&&Wt(e,r,t[r]);return e},Ge=(e,t)=>Do(e,lo(t)),ho=e=>Ee(e,"__esModule",{value:!0}),go=(e,t)=>()=>(e&&(t=e(e=0)),t),Co=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),Fo=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of fo(t))!Yt.call(e,s)&&(r||s!=="default")&&Ee(e,s,{get:()=>t[s],enumerable:!(n=co(t,s))||n.enumerable});return e},Eo=(e,t)=>Fo(ho(Ee(e!=null?ao(po(e)):{},"default",!t&&e&&e.__esModule?{get:()=>e.default,enumerable:!0}:{value:e,enumerable:!0})),e),$=go(()=>{}),yo=Co((e,t)=>{$(),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}});$(),$(),$();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}};$(),$(),$(),$(),$();function wo({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 Vt(e){if(typeof e!="string")throw new TypeError(`Expected a \`string\`, got \`${typeof e}\``);return e.replace(wo(),"")}$();function Ao(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 vo=Eo(yo(),1);function K(e){if(typeof e!="string"||e.length===0||(e=Vt(e),e.length===0))return 0;e=e.replace((0,vo.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+=Ao(n)?2:1)}return t}var Xt=e=>Math.max(...e.split(`
3
- `).map(K)),$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=Xt(r[o]);u>t[o]&&(t[o]=u)}}return t};$();var Jt=/^\d+%$/,Zt={width:"auto",align:"left",contentWidth:0,paddingLeft:0,paddingRight:0,paddingTop:0,paddingBottom:0,horizontalPadding:0,paddingLeftString:"",paddingRightString:""},Bo=(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"&&Jt.test(o)){n.push(Ge(ye({},Zt),{width:o,contentWidth:e[s]}));continue}if(o&&typeof o=="object"){let u=Ge(ye(ye({},Zt),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 xo(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"&&Jt.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 Qt=()=>Object.assign([],{columns:0});function Oo(e,t){let r=[Qt()],[n]=r;for(let s of e){let o=s.width+s.horizontalPadding;n.columns+o>t&&(n=Qt(),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 Io(e,t,r){let n=Bo(r,t);return xo(n,e),Oo(n,e)}$(),$(),$();var Ue=10,er=(e=0)=>t=>`\x1B[${t+e}m`,tr=(e=0)=>t=>`\x1B[${38+e};5;${t}m`,rr=(e=0)=>(t,r,n)=>`\x1B[${38+e};2;${t};${r};${n}m`;function So(){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=er(),t.color.ansi256=tr(),t.color.ansi16m=rr(),t.bgColor.ansi=er(Ue),t.bgColor.ansi256=tr(Ue),t.bgColor.ansi16m=rr(Ue),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 Mo=So(),Po=Mo,be=new Set(["\x1B","\x9B"]),_o=39,He="\x07",nr="[",No="]",or="m",Ke=`${No}8;;`,sr=e=>`${be.values().next().value}${nr}${e}${or}`,ur=e=>`${be.values().next().value}${Ke}${e}${He}`,To=e=>e.split(" ").map(t=>K(t)),qe=(e,t,r)=>{let n=[...t],s=!1,o=!1,u=K(Vt(e[e.length-1]));for(let[a,i]of n.entries()){let l=K(i);if(u+l<=r?e[e.length-1]+=i:(e.push(i),u=0),be.has(i)&&(s=!0,o=n.slice(a+1).join("").startsWith(Ke)),s){o?i===He&&(s=!1,o=!1):i===or&&(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())},Lo=e=>{let t=e.split(" "),r=t.length;for(;r>0&&!(K(t[r-1])>0);)r--;return r===t.length?e:t.slice(0,r).join(" ")+t.slice(r).join("")},Ro=(e,t,r={})=>{if(r.trim!==!1&&e.trim()==="")return"";let n="",s,o,u=To(e),a=[""];for(let[l,f]of e.split(" ").entries()){r.trim!==!1&&(a[a.length-1]=a[a.length-1].trimStart());let D=K(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(""),qe(a,f,t);continue}if(D+u[l]>t&&D>0&&u[l]>0){if(r.wordWrap===!1&&D<t){qe(a,f,t);continue}a.push("")}if(D+u[l]>t&&r.wordWrap===!1){qe(a,f,t);continue}a[a.length-1]+=f}r.trim!==!1&&(a=a.map(l=>Lo(l)));let i=[...a.join(`
4
- `)];for(let[l,f]of i.entries()){if(n+=f,be.has(f)){let{groups:c}=new RegExp(`(?:\\${nr}(?<code>\\d+)m|\\${Ke}(?<uri>.*)${He})`).exec(i.slice(l).join(""))||{groups:{}};if(c.code!==void 0){let p=Number.parseFloat(c.code);s=p===_o?void 0:p}else c.uri!==void 0&&(o=c.uri.length===0?void 0:c.uri)}let D=Po.codes.get(Number(s));i[l+1]===`
5
- `?(o&&(n+=ur("")),s&&D&&(n+=sr(D))):f===`
6
- `&&(s&&D&&(n+=sr(s)),o&&(n+=ur(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 G from"node:process";import An from"child_process";import H from"path";import Y 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 U,from as _,filter as Ht,map as P,tap as Ut,concatMap as L,catchError as R,scan as Kt,switchMap as xn,mergeMap as On,BehaviorSubject as qt,ReplaySubject as Sn,lastValueFrom as In,toArray as Pn}from"rxjs";import Mn from"@anthropic-ai/sdk";import{fromPromise as K}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{GoogleGenerativeAI as qn}from"@google/generative-ai";import{Ollama as zn}from"ollama";import ye from"readline";import Yn from"figlet";import Wn from"inquirer-reactive-list-prompt";const Vn="known-flag",Xn="unknown-flag",Jn="argument",{stringify:ce}=JSON,Zn=/\B([A-Z])/g,Qn=e=>e.replace(Zn,"-$1").toLowerCase(),{hasOwnProperty:eo}=Object.prototype,le=(e,t)=>eo.call(e,t),to=e=>Array.isArray(e),zt=e=>typeof e=="function"?[e,!1]:to(e)?[e[0],!0]:zt(e.type),ro=(e,t)=>e===Boolean?t!=="false":t,no=(e,t)=>typeof t=="boolean"?t:e===Number&&t===""?Number.NaN:e(t),oo=/[\s.:=]/,so=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(oo);if(r)throw new Error(`${t} cannot contain ${ce(r?.[0])}`)},uo=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;so(n);const s=e[n],o=[[],...zt(s),s];r(n,o);const u=Qn(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},io=(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="--",ao=/[.:=]/,Do=/^-{1,2}\w/,co=e=>{if(!Do.test(e))return;const t=!e.startsWith(we);let r=e.slice(t?1:2),n;const s=r.match(ao);if(s){const{index:o}=s;n=r.slice(o+1),r=r.slice(0,o)}return[r,n,t]},lo=(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=co(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()},fo=(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)}},po=(e,t=process.argv.slice(2),{ignore:r}={})=>{const n=[],s=uo(e),o={},u=[];return u[we]=[],lo(t,{onFlag(a,i,l){const f=le(s,a);if(!r?.(f?Vn:Xn,a,i)){if(f){const[D,c]=s[a],p=ro(c,i),d=(h,m)=>{n.push(l),m&&n.push(m),D.push(no(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?.(Jn,t[i[0]])||(u.push(...a),l?(u[we]=a,t.splice(i[0])):n.push(i))}}),fo(t,n),{flags:io(e,s),unknownFlags:o,_:u}};var mo=Object.create,be=Object.defineProperty,ho=Object.defineProperties,go=Object.getOwnPropertyDescriptor,Co=Object.getOwnPropertyDescriptors,Fo=Object.getOwnPropertyNames,Yt=Object.getOwnPropertySymbols,Eo=Object.getPrototypeOf,Wt=Object.prototype.hasOwnProperty,yo=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))yo.call(t,r)&&Vt(e,r,t[r]);return e},Ue=(e,t)=>ho(e,Co(t)),wo=e=>be(e,"__esModule",{value:!0}),bo=(e,t)=>()=>(e&&(t=e(e=0)),t),Ao=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),vo=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of Fo(t))!Wt.call(e,s)&&(r||s!=="default")&&be(e,s,{get:()=>t[s],enumerable:!(n=go(t,s))||n.enumerable});return e},$o=(e,t)=>vo(wo(be(e!=null?mo(Eo(e)):{},"default",!t&&e&&e.__esModule?{get:()=>e.default,enumerable:!0}:{value:e,enumerable:!0})),e),B=bo(()=>{}),Bo=Ao((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 xo=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 Oo({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(Oo(),"")}B();function So(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 Io=$o(Bo(),1);function W(e){if(typeof e!="string"||e.length===0||(e=Xt(e),e.length===0))return 0;e=e.replace((0,Io.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+=So(n)?2:1)}return t}var Jt=e=>Math.max(...e.split(`
3
+ `).map(W)),Po=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:""},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"&&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 _o(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 No(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((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 To(e,t,r){let n=Mo(r,t);return _o(n,e),No(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 Lo(){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 Ro=Lo(),ko=Ro,ve=new Set(["\x1B","\x9B"]),jo=39,qe="\x07",or="[",Go="]",sr="m",ze=`${Go}8;;`,ur=e=>`${ve.values().next().value}${or}${e}${sr}`,ir=e=>`${ve.values().next().value}${ze}${e}${qe}`,Ho=e=>e.split(" ").map(t=>W(t)),Ye=(e,t,r)=>{let n=[...t],s=!1,o=!1,u=W(Xt(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(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())},Uo=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("")},Ko=(e,t,r={})=>{if(r.trim!==!1&&e.trim()==="")return"";let n="",s,o,u=Ho(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(""),Ye(a,f,t);continue}if(D+u[l]>t&&D>0&&u[l]>0){if(r.wordWrap===!1&&D<t){Ye(a,f,t);continue}a.push("")}if(D+u[l]>t&&r.wordWrap===!1){Ye(a,f,t);continue}a[a.length-1]+=f}r.trim!==!1&&(a=a.map(l=>Uo(l)));let i=[...a.join(`
4
+ `)];for(let[l,f]of i.entries()){if(n+=f,ve.has(f)){let{groups:c}=new RegExp(`(?:\\${or}(?<code>\\d+)m|\\${ze}(?<uri>.*)${qe})`).exec(i.slice(l).join(""))||{groups:{}};if(c.code!==void 0){let p=Number.parseFloat(c.code);s=p===jo?void 0:p}else c.uri!==void 0&&(o=c.uri.length===0?void 0:c.uri)}let D=ko.codes.get(Number(s));i[l+1]===`
5
+ `?(o&&(n+=ir("")),s&&D&&(n+=ur(D))):f===`
6
+ `&&(s&&D&&(n+=ur(s)),o&&(n+=ir(o)))}return n};function qo(e,t,r){return String(e).normalize().replace(/\r\n/g,`
7
7
  `).split(`
8
- `).map(n=>Ro(n,t,r)).join(`
9
- `)}var ir=e=>Array.from({length:e}).fill("");function jo(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)),Xt(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(...ir(i.paddingTop)),i.paddingBottom&&D.push(...ir(i.paddingBottom)),D.length>o&&(o=D.length),Ge(ye({},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-K(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=>Ko(n,t,r)).join(`
9
+ `)}var ar=e=>Array.from({length:e}).fill("");function zo(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=qo(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(...ar(i.paddingTop)),i.paddingBottom&&D.push(...ar(i.paddingBottom)),D.length>o&&(o=D.length),Ue(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(`
11
11
  `))}return r.join(`
12
- `)}function Go(e,t){if(!e||e.length===0)return"";let r=$o(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=Io(s,o,r);return e.map(a=>jo(u,a)).join(`
13
- `)}$();var Uo=["<",">","=",">=","<="];function Ho(e){if(!Uo.includes(e))throw new TypeError(`Invalid breakpoint operator: ${e}`)}function Ko(e){let t=Object.keys(e).map(r=>{let[n,s]=r.split(" ");Ho(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():""),zo=e=>e.replace(/\B([A-Z])/g,"-$1").toLowerCase(),Yo={"> 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 Wo(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:`--${zo(r)}`,aliasesEnabled:t,aliasFormatted:s?`-${n.alias}`:void 0}}).map(r=>(r.aliasesEnabled=t,[{type:"flagName",data:r},{type:"flagDescription",data:r}])),tableBreakpoints:Yo}}}const ar=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 Vo(e){const t=[];e.name&&t.push(Dr(e));const r=ar(e)??("parent"in e&&ar(e.parent));if(r&&t.push(`v${r}`),t.length!==0)return{id:"name",type:"text",data:`${t.join(" ")}
14
- `}}function Xo(e){const{help:t}=e;if(!(!t||!t.description))return{id:"description",type:"text",data:`${t.description}
15
- `}}function Jo(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 Zo(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 Qo(e){if(!(!e.flags||Object.keys(e.flags).length===0))return{id:"flags",type:"section",data:{title:"Flags:",body:Wo(e.flags),indentBody:0}}}function es(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 ts(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 rs=e=>[Vo,Xo,Jo,Zo,Qo,es,ts].map(t=>t(e)).filter(Boolean),ns=Te.WriteStream.prototype.hasColors();class os{text(t){return t}bold(t){return ns?`\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 Yo(e,t){if(!e||e.length===0)return"";let r=Po(e),n=r.length;if(n===0)return"";let{stdoutColumns:s,columns:o}=xo(t);if(o.length>n)throw new Error(`${o.length} columns defined, but only ${n} columns found`);let u=To(s,o,r);return e.map(a=>zo(u,a)).join(`
13
+ `)}B();var Wo=["<",">","=",">=","<="];function Vo(e){if(!Wo.includes(e))throw new TypeError(`Invalid breakpoint operator: ${e}`)}function Xo(e){let t=Object.keys(e).map(r=>{let[n,s]=r.split(" ");Vo(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 Jo=e=>e.replace(/[\W_]([a-z\d])?/gi,(t,r)=>r?r.toUpperCase():""),Zo=e=>e.replace(/\B([A-Z])/g,"-$1").toLowerCase(),Qo={"> 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 es(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:`--${Zo(r)}`,aliasesEnabled:t,aliasFormatted:s?`-${n.alias}`:void 0}}).map(r=>(r.aliasesEnabled=t,[{type:"flagName",data:r},{type:"flagDescription",data:r}])),tableBreakpoints:Qo}}}const Dr=e=>!e||(e.version??(e.help?e.help.version:void 0)),cr=e=>{const t="parent"in e&&e.parent?.name;return(t?`${t} `:"")+e.name};function ts(e){const t=[];e.name&&t.push(cr(e));const r=Dr(e)??("parent"in e&&Dr(e.parent));if(r&&t.push(`v${r}`),t.length!==0)return{id:"name",type:"text",data:`${t.join(" ")}
14
+ `}}function rs(e){const{help:t}=e;if(!(!t||!t.description))return{id:"description",type:"text",data:`${t.description}
15
+ `}}function ns(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=[cr(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 os(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 ss(e){if(!(!e.flags||Object.keys(e.flags).length===0))return{id:"flags",type:"section",data:{title:"Flags:",body:es(e.flags),indentBody:0}}}function us(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 is(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 as=e=>[ts,rs,ns,os,ss,us,is].map(t=>t(e)).filter(Boolean),Ds=Re.WriteStream.prototype.hasColors();class cs{text(t){return t}bold(t){return Ds?`\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 Go(t.map(s=>s.map(o=>this.render(o))),n?Ko(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 ze=/^[\w.-]+$/,{stringify:P}=JSON,ss=/[|\\{}()[\]^$+*?.]/;function Ye(e){const t=[];let r,n;for(const s of e){if(n)throw new Error(`Invalid parameter: Spread parameter ${P(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 ${P(s)} cannot come after optional parameter ${P(r)}`);if(o==="["&&u==="]"&&(a=!1,r=s),a===void 0)throw new Error(`Invalid parameter: ${P(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(ss);if(f)throw new Error(`Invalid parameter: ${P(s)}. Invalid character found ${P(f[0])}`);t.push({name:i,required:a,spread:l})}return t}function We(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: ${P(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 ${P(o)}
22
- `),n(),process.exit(1);e[i]=l}}function us(e){return e===void 0||e!==!1}function cr(e,t,r,n){const s={...t.flags},o=t.version;o&&(s.version={type:Boolean,description:"Show version"});const{help:u}=t,a=us(u);a&&!("help"in s)&&(s.help={type:Boolean,alias:"h",description:"Show help"});const i=io(s,n,{ignore:t.ignoreArgv}),l=()=>{console.log(t.version)};if(o&&i.flags.version===!0)return l(),process.exit(0);const f=new os,D=a&&u?.render?u.render:d=>f.render(d),c=d=>{const m=rs({...t,...d?{help:d}:{},flags:s});console.log(D(m,f))};if(a&&i.flags.help===!0)return c(),process.exit(0);if(t.parameters){let{parameters:d}=t,m=i._;const h=d.indexOf("--"),C=d.slice(h+1),b=Object.create(null);if(h>-1&&C.length>0){d=d.slice(0,h);const I=i._["--"];m=m.slice(0,-I.length||void 0),We(b,Ye(d),m,c),We(b,Ye(C),I,c)}else We(b,Ye(d),m,c);Object.assign(i._,b)}const p={...i,showVersion:l,showHelp:c};return typeof r=="function"&&r(p),{command:e,...p}}function is(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: ${P(u)}`);r.set(u,n)}}return r.get(e)}function as(e,t,r=process.argv.slice(2)){if(!e)throw new Error("Options is required");if("name"in e&&(!e.name||!ze.test(e.name)))throw new Error(`Invalid script name: ${P(e.name)}`);const n=r[0];if(e.commands&&ze.test(n)){const s=is(n,e.commands);if(s)return cr(s.options.name,{...s.options,parent:e},s.callback,r.slice(1))}return cr(void 0,e,t,r)}function lr(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(!ze.test(r))throw new Error(`Invalid command name ${JSON.stringify(r)}. Command names must be one word.`);return{options:e,callback:t}}var Ds=gn(import.meta.url),A=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function J(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var Z={exports:{}},Ve,fr;function cs(){if(fr)return Ve;fr=1,Ve=n,n.sync=s;var e=Le;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 Ve}var Xe,pr;function ls(){if(pr)return Xe;pr=1,Xe=t,t.sync=r;var e=Le;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),m=c|p,h=a&d||a&p&&l===D||a&c&&i===f||a&m&&f===0;return h}return Xe}var we;process.platform==="win32"||A.TESTING_WINDOWS?we=cs():we=ls();var fs=Je;Je.sync=ps;function Je(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){Je(e,t||{},function(o,u){o?s(o):n(u)})})}we(e,t||{},function(n,s){n&&(n.code==="EACCES"||t&&t.ignoreErrors)&&(n=null,s=!1),r(n,s)})}function ps(e,t){try{return we.sync(e,t||{})}catch(r){if(t&&t.ignoreErrors||r.code==="EACCES")return!1;throw r}}const Q=process.platform==="win32"||process.env.OSTYPE==="cygwin"||process.env.OSTYPE==="msys",dr=X,ds=Q?";":":",mr=fs,hr=e=>Object.assign(new Error(`not found: ${e}`),{code:"ENOENT"}),gr=(e,t)=>{const r=t.colon||ds,n=e.match(/\//)||Q&&e.match(/\\/)?[""]:[...Q?[process.cwd()]:[],...(t.path||process.env.PATH||"").split(r)],s=Q?t.pathExt||process.env.PATHEXT||".EXE;.CMD;.BAT;.COM":"",o=Q?s.split(r):[""];return Q&&e.indexOf(".")!==-1&&o[0]!==""&&o.unshift(""),{pathEnv:n,pathExt:o,pathExtExe:s}},Cr=(e,t,r)=>{typeof t=="function"&&(r=t,t={}),t||(t={});const{pathEnv:n,pathExt:s,pathExtExe:o}=gr(e,t),u=[],a=l=>new Promise((f,D)=>{if(l===n.length)return t.all&&u.length?f(u):D(hr(e));const c=n[l],p=/^".*"$/.test(c)?c.slice(1,-1):c,d=dr.join(p,e),m=!p&&/^\.[\\\/]/.test(e)?e.slice(0,2)+d:d;f(i(m,l,0))}),i=(l,f,D)=>new Promise((c,p)=>{if(D===s.length)return c(a(f+1));const d=s[D];mr(l+d,{pathExt:o},(m,h)=>{if(!m&&h)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)},ms=(e,t)=>{t=t||{};const{pathEnv:r,pathExt:n,pathExtExe:s}=gr(e,t),o=[];for(let u=0;u<r.length;u++){const a=r[u],i=/^".*"$/.test(a)?a.slice(1,-1):a,l=dr.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(mr.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 hr(e)};var hs=Cr;Cr.sync=ms;var Ze={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"};Ze.exports=Fr,Ze.exports.default=Fr;var gs=Ze.exports;const Er=X,Cs=hs,Fs=gs;function yr(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=Cs.sync(e.command,{path:r[Fs({env:r})],pathExt:t?Er.delimiter:void 0})}catch{}finally{o&&process.chdir(n)}return u&&(u=Er.resolve(s?e.options.cwd:"",u)),u}function Es(e){return yr(e)||yr(e,!0)}var ys=Es,Qe={};const et=/([()\][%!^"`<>&|;, *?])/g;function bs(e){return e=e.replace(et,"^$1"),e}function ws(e,t){return e=`${e}`,e=e.replace(/(\\*)"/g,'$1$1\\"'),e=e.replace(/(\\*)$/,"$1$1"),e=`"${e}"`,e=e.replace(et,"^$1"),t&&(e=e.replace(et,"^$1")),e}Qe.command=bs,Qe.argument=ws;var As=/^#!(.*)/;const vs=As;var $s=(e="")=>{const t=e.match(vs);if(!t)return null;const[r,n]=t[0].replace(/#! ?/,"").split(" "),s=r.split("/").pop();return s==="env"?n:n?`${s} ${n}`:s};const tt=Le,Bs=$s;function xs(e){const r=Buffer.alloc(150);let n;try{n=tt.openSync(e,"r"),tt.readSync(n,r,0,150,0),tt.closeSync(n)}catch{}return Bs(r.toString())}var Os=xs;const Is=X,br=ys,wr=Qe,Ss=Os,Ms=process.platform==="win32",Ps=/\.(?:com|exe)$/i,_s=/node_modules[\\/].bin[\\/][^\\/]+\.cmd$/i;function Ns(e){e.file=br(e);const t=e.file&&Ss(e.file);return t?(e.args.unshift(e.file),e.command=t,br(e)):e.file}function Ts(e){if(!Ms)return e;const t=Ns(e),r=!Ps.test(t);if(e.options.forceShell||r){const n=_s.test(t);e.command=Is.normalize(e.command),e.command=wr.command(e.command),e.args=e.args.map(o=>wr.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 Ls(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:Ts(n)}var Rs=Ls;const rt=process.platform==="win32";function nt(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(!rt)return;const r=e.emit;e.emit=function(n,s){if(n==="exit"){const o=Ar(s,t);if(o)return r.call(e,"error",o)}return r.apply(e,arguments)}}function Ar(e,t){return rt&&e===1&&!t.file?nt(t.original,"spawn"):null}function js(e,t){return rt&&e===1&&!t.file?nt(t.original,"spawnSync"):null}var Gs={hookChildProcess:ks,verifyENOENT:Ar,verifyENOENTSync:js,notFoundError:nt};const vr=Fn,ot=Rs,st=Gs;function $r(e,t,r){const n=ot(e,t,r),s=vr.spawn(n.command,n.args,n.options);return st.hookChildProcess(s,n),s}function Us(e,t,r){const n=ot(e,t,r),s=vr.spawnSync(n.command,n.args,n.options);return s.error=s.error||st.verifyENOENTSync(s.status,n),s}Z.exports=$r,Z.exports.spawn=$r,Z.exports.sync=Us,Z.exports._parse=ot,Z.exports._enoent=st;var Hs=Z.exports,Ks=J(Hs);function qs(e){const t=typeof e=="string"?`
20
+ `}table({tableData:t,tableOptions:r,tableBreakpoints:n}){return Yo(t.map(s=>s.map(o=>this.render(o))),n?Xo(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:N}=JSON,ls=/[|\\{}()[\]^$+*?.]/;function Ve(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(ls);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 Xe(e,t,r,n){for(let s=0;s<t.length;s+=1){const{name:o,required:u,spread:a}=t[s],i=Jo(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 fs(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=fs(u);a&&!("help"in s)&&(s.help={type:Boolean,alias:"h",description:"Show help"});const i=po(s,n,{ignore:t.ignoreArgv}),l=()=>{console.log(t.version)};if(o&&i.flags.version===!0)return l(),process.exit(0);const f=new cs,D=a&&u?.render?u.render:d=>f.render(d),c=d=>{const h=as({...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),Xe(b,Ve(d),h,c),Xe(b,Ve(C),E,c)}else Xe(b,Ve(d),h,c);Object.assign(i._,b)}const p={...i,showVersion:l,showHelp:c};return typeof r=="function"&&r(p),{command:e,...p}}function ps(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 ds(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: ${N(e.name)}`);const n=r[0];if(e.commands&&We.test(n)){const s=ps(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 ms=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 hs(){if(pr)return Je;pr=1,Je=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 Je}var Ze,dr;function gs(){if(dr)return Ze;dr=1,Ze=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 Ze}var $e;process.platform==="win32"||v.TESTING_WINDOWS?$e=hs():$e=gs();var Cs=Qe;Qe.sync=Fs;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 Fs(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=H,Es=ne?";":":",hr=Cs,gr=e=>Object.assign(new Error(`not found: ${e}`),{code:"ENOENT"}),Cr=(e,t)=>{const r=t.colon||Es,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}},Fr=(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,D)=>{if(l===n.length)return t.all&&u.length?f(u):D(gr(e));const c=n[l],p=/^".*"$/.test(c)?c.slice(1,-1):c,d=mr.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];hr(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)},ys=(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 D=0;D<n.length;D++){const c=f+n[D];try{if(hr.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 gr(e)};var ws=Fr;Fr.sync=ys;var et={exports:{}};const Er=(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=Er,et.exports.default=Er;var bs=et.exports;const yr=H,As=ws,vs=bs;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=As.sync(e.command,{path:r[vs({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 $s(e){return wr(e)||wr(e,!0)}var Bs=$s,tt={};const rt=/([()\][%!^"`<>&|;, *?])/g;function xs(e){return e=e.replace(rt,"^$1"),e}function Os(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=xs,tt.argument=Os;var Ss=/^#!(.*)/;const Is=Ss;var Ps=(e="")=>{const t=e.match(Is);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=Y,Ms=Ps;function _s(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 Ms(r.toString())}var Ns=_s;const Ts=H,br=Bs,Ar=tt,Ls=Ns,Rs=process.platform==="win32",ks=/\.(?:com|exe)$/i,js=/node_modules[\\/].bin[\\/][^\\/]+\.cmd$/i;function Gs(e){e.file=br(e);const t=e.file&&Ls(e.file);return t?(e.args.unshift(e.file),e.command=t,br(e)):e.file}function Hs(e){if(!Rs)return e;const t=Gs(e),r=!ks.test(t);if(e.options.forceShell||r){const n=js.test(t);e.command=Ts.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 Us(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:Hs(n)}var Ks=Us;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 qs(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 zs(e,t){return ot&&e===1&&!t.file?st(t.original,"spawnSync"):null}var Ys={hookChildProcess:qs,verifyENOENT:vr,verifyENOENTSync:zs,notFoundError:st};const $r=An,ut=Ks,it=Ys;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 Ws(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=Ws,re.exports._parse=ut,re.exports._enoent=it;var Vs=re.exports,Xs=te(Vs);function Js(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 Br(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 zs(e={}){const{cwd:t=j.cwd(),path:r=j.env[Br()],execPath:n=j.execPath}=e;let s;const o=t instanceof URL?En.fileURLToPath(t):t;let u=V.resolve(o);const a=[];for(;s!==u;)a.push(V.join(u,"node_modules/.bin")),s=u,u=V.resolve(u,"..");return a.push(V.resolve(o,n,"..")),[...a,r].join(V.delimiter)}function Ys({env:e=j.env,...t}={}){e={...e};const r=Br({env:e});return t.path=e[r],e[r]=zs(t),e}const Ws=(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);!Vs(s,o)&&n||Object.defineProperty(e,r,o)},Vs=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)},Xs=(e,t)=>{const r=Object.getPrototypeOf(t);r!==Object.getPrototypeOf(e)&&Object.setPrototypeOf(e,r)},Js=(e,t)=>`/* Wrapped ${e}*/
25
- ${t}`,Zs=Object.getOwnPropertyDescriptor(Function.prototype,"toString"),Qs=Object.getOwnPropertyDescriptor(Function.prototype.toString,"name"),eu=(e,t,r)=>{const n=r===""?"":`with ${r.trim()}() `,s=Js.bind(null,n,t.toString());Object.defineProperty(s,"name",Qs),Object.defineProperty(e,"toString",{...Zs,value:s})};function tu(e,t,{ignoreNonConfigurable:r=!1}={}){const{name:n}=e;for(const s of Reflect.ownKeys(t))Ws(e,t,s,r);return Xs(e,t),eu(e,t,n),e}const Ae=new WeakMap,xr=(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(Ae.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 tu(o,e),Ae.set(o,n),o};xr.callCount=e=>{if(!Ae.has(e))throw new Error(`The given function \`${e.name}\` is not wrapped by the \`onetime\` package`);return Ae.get(e)};const ru=()=>{const e=Ir-Or+1;return Array.from({length:e},nu)},nu=(e,t)=>({name:`SIGRT${t+1}`,number:Or+t,action:"terminate",description:"Application-specific signal (realtime)",standard:"posix"}),Or=34,Ir=64,ou=[{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"}],Sr=()=>{const e=ru();return[...ou,...e].map(su)},su=({name:e,number:t,description:r,action:n,forced:s=!1,standard:o})=>{const{signals:{[e]:u}}=Tt,a=u!==void 0;return{name:e,number:a?u:t,description:r,supported:a,action:n,forced:s,standard:o}},uu=()=>{const e=Sr();return Object.fromEntries(e.map(iu))},iu=({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}],au=uu(),Du=()=>{const e=Sr(),t=Ir+1,r=Array.from({length:t},(n,s)=>cu(s,e));return Object.assign({},...r)},cu=(e,t)=>{const r=lu(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}}},lu=(e,t)=>{const r=t.find(({name:n})=>Tt.signals[n]===e);return r!==void 0?r:t.find(n=>n.number===e)};Du();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",Mr=({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:au[s].description,p=n&&n.code,m=`Command ${fu({timedOut:i,timeout:D,errorCode:p,signal:s,signalDescription:c,exitCode:o,isCanceled:l})}: ${u}`,h=Object.prototype.toString.call(n)==="[object Error]",C=h?`${m}
26
- ${n.message}`:m,b=[C,t,e].filter(Boolean).join(`
27
- `);return h?(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},ve=["stdin","stdout","stderr"],pu=e=>ve.some(t=>e[t]!==void 0),du=e=>{if(!e)return;const{stdio:t}=e;if(t===void 0)return ve.map(n=>e[n]);if(pu(e))throw new Error(`It's not possible to provide \`stdio\` in combination with one of ${ve.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,ve.length);return Array.from({length:r},(n,s)=>t[s])};var ee={exports:{}},$e={exports:{}};$e.exports;var Pr;function mu(){return Pr||(Pr=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")}($e)),$e.exports}var E=A.process;const q=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(!q(E))ee.exports=function(){return function(){}};else{var hu=Lt,De=mu(),gu=/^win/i.test(E.platform),Be=Rt;typeof Be!="function"&&(Be=Be.EventEmitter);var v;E.__signal_exit_emitter__?v=E.__signal_exit_emitter__:(v=E.__signal_exit_emitter__=new Be,v.count=0,v.emitted={}),v.infinite||(v.setMaxListeners(1/0),v.infinite=!0),ee.exports=function(e,t){if(!q(A.process))return function(){};hu.equal(typeof e,"function","a callback must be provided for exit handler"),ce===!1&&_r();var r="exit";t&&t.alwaysLast&&(r="afterexit");var n=function(){v.removeListener(r,e),v.listeners("exit").length===0&&v.listeners("afterexit").length===0&&ut()};return v.on(r,e),n};var ut=function(){!ce||!q(A.process)||(ce=!1,De.forEach(function(t){try{E.removeListener(t,it[t])}catch{}}),E.emit=at,E.reallyExit=Nr,v.count-=1)};ee.exports.unload=ut;var te=function(t,r,n){v.emitted[t]||(v.emitted[t]=!0,v.emit(t,r,n))},it={};De.forEach(function(e){it[e]=function(){if(q(A.process)){var r=E.listeners(e);r.length===v.count&&(ut(),te("exit",null,e),te("afterexit",null,e),gu&&e==="SIGHUP"&&(e="SIGINT"),E.kill(E.pid,e))}}}),ee.exports.signals=function(){return De};var ce=!1,_r=function(){ce||!q(A.process)||(ce=!0,v.count+=1,De=De.filter(function(t){try{return E.on(t,it[t]),!0}catch{return!1}}),E.emit=Fu,E.reallyExit=Cu)};ee.exports.load=_r;var Nr=E.reallyExit,Cu=function(t){q(A.process)&&(E.exitCode=t||0,te("exit",E.exitCode,null),te("afterexit",E.exitCode,null),Nr.call(E,E.exitCode))},at=E.emit,Fu=function(t,r){if(t==="exit"&&q(A.process)){r!==void 0&&(E.exitCode=r);var n=at.apply(this,arguments);return te("exit",E.exitCode,null),te("afterexit",E.exitCode,null),n}else return at.apply(this,arguments)}}var Eu=ee.exports,yu=J(Eu);const bu=1e3*5,wu=(e,t="SIGTERM",r={})=>{const n=e(t);return Au(e,t,r,n),n},Au=(e,t,r,n)=>{if(!vu(t,r,n))return;const s=Bu(r),o=setTimeout(()=>{e("SIGKILL")},s);o.unref&&o.unref()},vu=(e,{forceKillAfterTimeout:t},r)=>$u(e)&&t!==!1&&r,$u=e=>e===yn.constants.signals.SIGTERM||typeof e=="string"&&e.toUpperCase()==="SIGTERM",Bu=({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},xu=(e,t)=>{e.kill()&&(t.isCanceled=!0)},Ou=(e,t,r)=>{e.kill(t),r(Object.assign(new Error("Timed out"),{timedOut:!0,signal:t}))},Iu=(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(()=>{Ou(e,r,i)},t)}),u=n.finally(()=>{clearTimeout(s)});return Promise.race([o,u])},Su=({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})`)},Mu=async(e,{cleanup:t,detached:r},n)=>{if(!t||r)return n;const s=yu(()=>{e.kill()});return n.finally(()=>{s()})};function Pu(e){return e!==null&&typeof e=="object"&&typeof e.pipe=="function"}var le={exports:{}};const{PassThrough:_u}=Re;var Nu=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 _u({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:Tu}=bn,Lu=Re,{promisify:Ru}=kt,ku=Nu,ju=Ru(Lu.pipeline);class Tr extends Error{constructor(){super("maxBuffer exceeded"),this.name="MaxBufferError"}}async function Dt(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()<=Tu.MAX_LENGTH&&(a.bufferedData=n.getBufferedValue()),o(a)};(async()=>{try{await ju(e,n),s()}catch(a){u(a)}})(),n.on("data",()=>{n.getBufferedLength()>r&&u(new Tr)})}),n.getBufferedValue()}le.exports=Dt,le.exports.buffer=(e,t)=>Dt(e,{...t,encoding:"buffer"}),le.exports.array=(e,t)=>Dt(e,{...t,array:!0}),le.exports.MaxBufferError=Tr;var Gu=le.exports,Lr=J(Gu);const{PassThrough:Uu}=Re;var Hu=function(){var e=[],t=new Uu({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()}},Ku=J(Hu);const qu=(e,t)=>{t!==void 0&&(Pu(t)?t.pipe(e.stdin):e.stdin.end(t))},zu=(e,{all:t})=>{if(!t||!e.stdout&&!e.stderr)return;const r=Ku();return e.stdout&&r.add(e.stdout),e.stderr&&r.add(e.stderr),r},ct=async(e,t)=>{if(!(!e||t===void 0)){e.destroy();try{return await t}catch(r){return r.bufferedData}}},lt=(e,{encoding:t,buffer:r,maxBuffer:n})=>{if(!(!e||!r))return t?Lr(e,{encoding:t,maxBuffer:n}):Lr.buffer(e,{maxBuffer:n})},Yu=async({stdout:e,stderr:t,all:r},{encoding:n,buffer:s,maxBuffer:o},u)=>{const a=lt(e,{encoding:n,buffer:s,maxBuffer:o}),i=lt(t,{encoding:n,buffer:s,maxBuffer:o}),l=lt(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},ct(e,a),ct(t,i),ct(r,l)])}},Wu=(async()=>{})().constructor.prototype,Vu=["then","catch","finally"].map(e=>[e,Reflect.getOwnPropertyDescriptor(Wu,e)]),Rr=(e,t)=>{for(const[r,n]of Vu){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},Xu=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)})}),kr=(e,t=[])=>Array.isArray(t)?[e,...t]:[e],Ju=/^[\w.-]+$/,Zu=/"/g,Qu=e=>typeof e!="string"||Ju.test(e)?e:`"${e.replace(Zu,'\\"')}"`,ei=(e,t)=>kr(e,t).join(" "),ti=(e,t)=>kr(e,t).map(r=>Qu(r)).join(" "),ri=1e3*1e3*100,ni=({env:e,extendEnv:t,preferLocal:r,localDir:n,execPath:s})=>{const o=t?{...j.env,...e}:e;return r?Ys({env:o,cwd:n,execPath:s}):o},oi=(e,t,r={})=>{const n=Ks._parse(e,t,r);return e=n.command,t=n.args,r=n.options,r={maxBuffer:ri,buffer:!0,stripFinalNewline:!0,extendEnv:!0,preferLocal:!1,localDir:r.cwd||j.cwd(),execPath:j.execPath,encoding:"utf8",reject:!0,cleanup:!0,all:!1,windowsHide:!0,...r},r.env=ni(r),r.stdio=du(r),j.platform==="win32"&&V.basename(e,".exe")==="cmd"&&t.unshift("/q"),{file:e,args:t,options:r,parsed:n}},ft=(e,t,r)=>typeof t!="string"&&!Cn.isBuffer(t)?r===void 0?void 0:"":e.stripFinalNewline?qs(t):t;function re(e,t,r){const n=oi(e,t,r),s=ei(e,t),o=ti(e,t);Su(n.options);let u;try{u=Nt.spawn(n.file,n.args,n.options)}catch(p){const d=new Nt.ChildProcess,m=Promise.reject(Mr({error:p,stdout:"",stderr:"",all:"",command:s,escapedCommand:o,parsed:n,timedOut:!1,isCanceled:!1,killed:!1}));return Rr(d,m)}const a=Xu(u),i=Iu(u,n.options,a),l=Mu(u,n.options,i),f={isCanceled:!1};u.kill=wu.bind(null,u.kill.bind(u)),u.cancel=xu.bind(null,u,f);const c=xr(async()=>{const[{error:p,exitCode:d,signal:m,timedOut:h},C,b,I]=await Yu(u,n.options,l),_=ft(n.options,C),N=ft(n.options,b),ue=ft(n.options,I);if(p||d!==0||m!==null){const w=Mr({error:p,exitCode:d,signal:m,stdout:_,stderr:N,all:ue,command:s,escapedCommand:o,parsed:n,timedOut:h,isCanceled:f.isCanceled||(n.options.signal?n.options.signal.aborted:!1),killed:u.killed});if(!n.options.reject)return w;throw w}return{command:s,escapedCommand:o,exitCode:0,stdout:_,stderr:N,all:ue,failed:!1,timedOut:!1,isCanceled:!1,killed:!1}});return qu(u,n.options.input),u.all=zu(u,n.options),Rr(u,c)}class z{static create(t,r){return new t(r)}}const si=80,ui={"":"commit message",conventional:"type(optional scope): description",gitmoji:":emoji: description"},ii=(e="conventional")=>e===""?"":`The output format must be in ${e} commit type:
28
- ${ui[e]}`,ai={"":"",gitmoji:`Choose a emoji from the emoji-to-description JSON below that best describes the git diff:
29
- ${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)}`,conventional:`Choose a type from the type-to-description JSON below that best describes the git diff
30
- ${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)}`},ne=(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 imperative 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),si)} characters.`,"Please exclude anything unnecessary such as explanation.","Your entire response will be passed directly into git commit.",ai[r],ii(r),n].filter(Boolean).join(`
31
- `),Di=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),ci=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"},jr=Object.values(H).map(e=>e);class Y{constructor(t){this.handleError$=r=>{let n="An error occurred";return r.message&&(n=r.message),G({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`${ne(t,s,o,u)}
32
- You must generate ${n} commit messages in numbered list format in Markdown without any explanation.
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 Zs(e={}){const{cwd:t=G.cwd(),path:r=G.env[xr()],execPath:n=G.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 Qs({env:e=G.env,...t}={}){e={...e};const r=xr({env:e});return t.path=e[r],e[r]=Zs(t),e}const eu=(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);!tu(s,o)&&n||Object.defineProperty(e,r,o)},tu=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)},ru=(e,t)=>{const r=Object.getPrototypeOf(t);r!==Object.getPrototypeOf(e)&&Object.setPrototypeOf(e,r)},nu=(e,t)=>`/* Wrapped ${e}*/
25
+ ${t}`,ou=Object.getOwnPropertyDescriptor(Function.prototype,"toString"),su=Object.getOwnPropertyDescriptor(Function.prototype.toString,"name"),uu=(e,t,r)=>{const n=r===""?"":`with ${r.trim()}() `,s=nu.bind(null,n,t.toString());Object.defineProperty(s,"name",su),Object.defineProperty(e,"toString",{...ou,value:s})};function iu(e,t,{ignoreNonConfigurable:r=!1}={}){const{name:n}=e;for(const s of Reflect.ownKeys(t))eu(e,t,s,r);return ru(e,t),uu(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 iu(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 au=()=>{const e=Ir-Sr+1;return Array.from({length:e},Du)},Du=(e,t)=>({name:`SIGRT${t+1}`,number:Sr+t,action:"terminate",description:"Application-specific signal (realtime)",standard:"posix"}),Sr=34,Ir=64,cu=[{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=au();return[...cu,...e].map(lu)},lu=({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}},fu=()=>{const e=Pr();return Object.fromEntries(e.map(pu))},pu=({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}],du=fu(),mu=()=>{const e=Pr(),t=Ir+1,r=Array.from({length:t},(n,s)=>hu(s,e));return Object.assign({},...r)},hu=(e,t)=>{const r=gu(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}}},gu=(e,t)=>{const r=t.find(({name:n})=>Rt.signals[n]===e);return r!==void 0?r:t.find(n=>n.number===e)};mu();const Cu=({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",Mr=({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:du[s].description,p=n&&n.code,h=`Command ${Cu({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}
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"],Fu=e=>xe.some(t=>e[t]!==void 0),Eu=e=>{if(!e)return;const{stdio:t}=e;if(t===void 0)return xe.map(n=>e[n]);if(Fu(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 yu(){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 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 wu=kt,fe=yu(),bu=/^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(!V(v.process))return function(){};wu.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||!V(v.process)||(pe=!1,fe.forEach(function(t){try{y.removeListener(t,Dt[t])}catch{}}),y.emit=ct,y.reallyExit=Tr,$.count-=1)};oe.exports.unload=at;var se=function(t,r,n){$.emitted[t]||($.emitted[t]=!0,$.emit(t,r,n))},Dt={};fe.forEach(function(e){Dt[e]=function(){if(V(v.process)){var r=y.listeners(e);r.length===$.count&&(at(),se("exit",null,e),se("afterexit",null,e),bu&&e==="SIGHUP"&&(e="SIGINT"),y.kill(y.pid,e))}}}),oe.exports.signals=function(){return fe};var pe=!1,Nr=function(){pe||!V(v.process)||(pe=!0,$.count+=1,fe=fe.filter(function(t){try{return y.on(t,Dt[t]),!0}catch{return!1}}),y.emit=vu,y.reallyExit=Au)};oe.exports.load=Nr;var Tr=y.reallyExit,Au=function(t){V(v.process)&&(y.exitCode=t||0,se("exit",y.exitCode,null),se("afterexit",y.exitCode,null),Tr.call(y,y.exitCode))},ct=y.emit,vu=function(t,r){if(t==="exit"&&V(v.process)){r!==void 0&&(y.exitCode=r);var n=ct.apply(this,arguments);return se("exit",y.exitCode,null),se("afterexit",y.exitCode,null),n}else return ct.apply(this,arguments)}}var $u=oe.exports,Bu=te($u);const xu=1e3*5,Ou=(e,t="SIGTERM",r={})=>{const n=e(t);return Su(e,t,r,n),n},Su=(e,t,r,n)=>{if(!Iu(t,r,n))return;const s=Mu(r),o=setTimeout(()=>{e("SIGKILL")},s);o.unref&&o.unref()},Iu=(e,{forceKillAfterTimeout:t},r)=>Pu(e)&&t!==!1&&r,Pu=e=>e===$n.constants.signals.SIGTERM||typeof e=="string"&&e.toUpperCase()==="SIGTERM",Mu=({forceKillAfterTimeout:e=!0})=>{if(e===!0)return xu;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},_u=(e,t)=>{e.kill()&&(t.isCanceled=!0)},Nu=(e,t,r)=>{e.kill(t),r(Object.assign(new Error("Timed out"),{timedOut:!0,signal:t}))},Tu=(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(()=>{Nu(e,r,i)},t)}),u=n.finally(()=>{clearTimeout(s)});return Promise.race([o,u])},Lu=({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})`)},Ru=async(e,{cleanup:t,detached:r},n)=>{if(!t||r)return n;const s=Bu(()=>{e.kill()});return n.finally(()=>{s()})};function ku(e){return e!==null&&typeof e=="object"&&typeof e.pipe=="function"}var de={exports:{}};const{PassThrough:ju}=ke;var Gu=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 ju({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:Hu}=Bn,Uu=ke,{promisify:Ku}=Gt,qu=Gu,zu=Ku(Uu.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=qu(t);return await new Promise((s,o)=>{const u=a=>{a&&n.getBufferedLength()<=Hu.MAX_LENGTH&&(a.bufferedData=n.getBufferedValue()),o(a)};(async()=>{try{await zu(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 Yu=de.exports,Rr=te(Yu);const{PassThrough:Wu}=ke;var Vu=function(){var e=[],t=new Wu({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()}},Xu=te(Vu);const Ju=(e,t)=>{t!==void 0&&(ku(t)?t.pipe(e.stdin):e.stdin.end(t))},Zu=(e,{all:t})=>{if(!t||!e.stdout&&!e.stderr)return;const r=Xu();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})},Qu=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)])}},ei=(async()=>{})().constructor.prototype,ti=["then","catch","finally"].map(e=>[e,Reflect.getOwnPropertyDescriptor(ei,e)]),kr=(e,t)=>{for(const[r,n]of ti){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},ri=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],ni=/^[\w.-]+$/,oi=/"/g,si=e=>typeof e!="string"||ni.test(e)?e:`"${e.replace(oi,'\\"')}"`,ui=(e,t)=>jr(e,t).join(" "),ii=(e,t)=>jr(e,t).map(r=>si(r)).join(" "),ai=1e3*1e3*100,Di=({env:e,extendEnv:t,preferLocal:r,localDir:n,execPath:s})=>{const o=t?{...G.env,...e}:e;return r?Qs({env:o,cwd:n,execPath:s}):o},ci=(e,t,r={})=>{const n=Xs._parse(e,t,r);return e=n.command,t=n.args,r=n.options,r={maxBuffer:ai,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=Di(r),r.stdio=Eu(r),G.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?Js(t):t;function ue(e,t,r){const n=ci(e,t,r),s=ui(e,t),o=ii(e,t);Lu(n.options);let u;try{u=Lt.spawn(n.file,n.args,n.options)}catch(p){const d=new Lt.ChildProcess,h=Promise.reject(Mr({error:p,stdout:"",stderr:"",all:"",command:s,escapedCommand:o,parsed:n,timedOut:!1,isCanceled:!1,killed:!1}));return kr(d,h)}const a=ri(u),i=Tu(u,n.options,a),l=Ru(u,n.options,i),f={isCanceled:!1};u.kill=Ou.bind(null,u.kill.bind(u)),u.cancel=_u.bind(null,u,f);const c=Or(async()=>{const[{error:p,exitCode:d,signal:h,timedOut:m},C,b,E]=await Qu(u,n.options,l),I=dt(n.options,C),M=dt(n.options,b),z=dt(n.options,E);if(p||d!==0||h!==null){const A=Mr({error:p,exitCode:d,signal:h,stdout:I,stderr:M,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:M,all:z,failed:!1,timedOut:!1,isCanceled:!1,killed:!1}});return Ju(u,n.options.input),u.all=Zu(u,n.options),kr(u,c)}class X{static create(t,r){return new t(r)}}const li=80,fi={"":"<commit message>",conventional:"<type>(<optional scope>): <description>",gitmoji:":<emoji>: <description>"},pi=(e="conventional")=>e===""?"":`The output format must be in ${e} commit type:
28
+ ${fi[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),li)} characters.`,"Exclude anything unnecessary such as explanation. Your entire response will be passed directly into git commit.",n,pi(r)].filter(Boolean).join(`
29
+ `),ie=e=>`You must generate ${e} commit messages in numbered list format in Markdown without any explanation.`,di=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),mi=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"},Gr=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)}
30
+ ${ie(n)}
33
31
  Here are diff:
34
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(`
35
- `).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 Gr="1.8.7",li="A Reactive CLI that generates git commit messages with various AI";class y extends Error{}const pt=" ",xe=e=>{e instanceof Error&&(e instanceof y||(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.1",hi="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(`
36
34
  `).slice(1).join(`
37
35
  `))),console.error(`
38
- ${pt}${g.dim(`aicommit2 v${Gr}`)}`),console.error(`
39
- ${pt}Please open a Bug report with the information above:`),console.error(`${pt}https://github.com/tak-bro/aicommit2/issues/new/choose`)))};var dt={},mt={exports:{}},fe={exports:{}},ht,Ur;function fi(){if(Ur)return ht;Ur=1;var e=1e3,t=e*60,r=t*60,n=r*24,s=n*7,o=n*365.25;ht=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 ht}var gt,Hr;function Kr(){if(Hr)return gt;Hr=1;function e(t){n.debug=n,n.default=n,n.coerce=l,n.disable=u,n.enable=o,n.enabled=a,n.humanize=fi(),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,m;function h(...C){if(!h.enabled)return;const b=h,I=Number(new Date),_=I-(c||I);b.diff=_,b.prev=c,b.curr=I,c=I,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,(w,Ne)=>{if(w==="%%")return"%";N++;const _t=n.formatters[Ne];if(typeof _t=="function"){const hn=C[N];w=_t.call(b,hn),C.splice(N,1),N--}return w}),n.formatArgs.call(b,C),(b.log||n.log).apply(b,C)}return h.namespace=D,h.useColors=n.useColors(),h.color=n.selectColor(D),h.extend=s,h.destroy=n.destroy,Object.defineProperty(h,"enabled",{enumerable:!0,configurable:!1,get:()=>p!==null?p:(d!==n.namespaces&&(d=n.namespaces,m=n.enabled(D)),m),set:C=>{p=C}}),typeof n.init=="function"&&n.init(h),h}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 gt=e,gt}fe.exports;var qr;function pi(){return qr||(qr=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=Kr()(t);const{formatters:a}=e.exports;a.j=function(i){try{return JSON.stringify(i)}catch(l){return"[UnexpectedJSONParseError]: "+l.message}}}(fe,fe.exports)),fe.exports}var pe={exports:{}},Ct,zr;function di(){return zr||(zr=1,Ct=(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)}),Ct}var Ft,Yr;function mi(){if(Yr)return Ft;Yr=1;const e=Kt,t=Te,r=di(),{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 Ft={supportsColor:a,stdout:o(u(!0,t.isatty(1))),stderr:o(u(!0,t.isatty(2)))},Ft}pe.exports;var Wr;function hi(){return Wr||(Wr=1,function(e,t){const r=Te,n=kt;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=mi();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,(h,C)=>C.toUpperCase());let m=process.env[p];return/^(yes|on|true|enabled)$/i.test(m)?m=!0:/^(no|off|false|disabled)$/i.test(m)?m=!1:m==="null"?m=null:m=Number(m),c[d]=m,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 m=this.color,h="\x1B[3"+(m<8?m:"8;5;"+m),C=` ${h};1m${p} \x1B[0m`;c[0]=C+c[0].split(`
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`)))},gi=(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",Ci=(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},Fi=H.join(He.homedir(),".aicommit2_log"),Ei=new Date,T=(e,t,r,n)=>{const s=`[${e} Response]`,o=yi(Ei,t),u=`${Fi}/${o}`;if(Y.existsSync(u)){const i=Y.readFileSync(u,"utf-8");qr(u,`${s}
38
+ ${n}
39
+
40
+ ${i}`);return}const a=Ci(r,"Here are diff");qr(u,`${s}
41
+ ${n}
42
+
43
+
44
+ [AICommit2 Prompt]
45
+ ${a}
46
+
47
+
48
+ [Git Diff]
49
+ ${t}`)},yi=(e,t)=>{const{year:r,month:n,day:s,hours:o,minutes:u,seconds:a}=wi(e),l=_n(0).update(t).digest("hex");return`aic2_${r}-${n}-${s}_${o}:${u}:${a}_${l}.log`},qr=(e,t="")=>{Y.mkdirSync(H.dirname(e),{recursive:!0}),Y.writeFileSync(e,t,"utf-8")},wi=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 bi(){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,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 Ct}var Ft,Yr;function Wr(){if(Yr)return Ft;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=bi(),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 M=0;C[0]=C[0].replace(/%([a-zA-Z%])/g,(A,Le)=>{if(A==="%%")return"%";M++;const Tt=n.formatters[Le];if(typeof Tt=="function"){const yn=C[M];A=Tt.call(b,yn),C.splice(M,1),M--}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 Ft=e,Ft}he.exports;var Vr;function Ai(){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,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=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:{}},Et,Xr;function vi(){return Xr||(Xr=1,Et=(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)}),Et}var yt,Jr;function $i(){if(Jr)return yt;Jr=1;const e=He,t=Re,r=vi(),{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 yt={supportsColor:a,stdout:o(u(!0,t.isatty(1))),stderr:o(u(!0,t.isatty(2)))},yt}ge.exports;var Zr;function Bi(){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 c=$i();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(`
40
50
  `).join(`
41
- `+C),c.push(h+"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)+`
42
- `)}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=Kr()(t);const{formatters:D}=e.exports;D.o=function(c){return this.inspectOpts.colors=this.useColors,n.inspect(c,this.inspectOpts).split(`
43
- `).map(p=>p.trim()).join(" ")},D.O=function(c){return this.inspectOpts.colors=this.useColors,n.inspect(c,this.inspectOpts)}}(pe,pe.exports)),pe.exports}typeof process>"u"||process.type==="renderer"||process.browser===!0||process.__nwjs?mt.exports=pi():mt.exports=hi();var Et=mt.exports,yt={};Object.defineProperty(yt,"__esModule",{value:!0});function gi(e){return function(t,r){return new Promise((n,s)=>{e.call(this,t,r,(o,u)=>{o?s(o):n(u)})})}}yt.default=gi;var Vr=A&&A.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};const Ci=Rt,Fi=Vr(Et),Ei=Vr(yt),de=Fi.default("agent-base");function yi(e){return!!e&&typeof e.addRequest=="function"}function bt(){const{stack:e}=new Error;return typeof e!="string"?!1:e.split(`
44
- `).some(t=>t.indexOf("(https.js:")!==-1||t.indexOf("node:https:")!==-1)}function Oe(e,t){return new Oe.Agent(e,t)}(function(e){class t extends Ci.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:bt()?443:80}set defaultPort(n){this.explicitDefaultPort=n}get protocol(){return typeof this.explicitProtocol=="string"?this.explicitProtocol:bt()?"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=bt()),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),yi(p)){de("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?(de("Converting legacy callback function to promise"),this.promisifiedCallback=Ei.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{de("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){de("Freeing socket %o %o",n.constructor.name,s),n.destroy()}destroy(){de("Destroying agent %o",this.constructor.name)}}e.Agent=t,e.prototype=e.Agent.prototype})(Oe||(Oe={}));var bi=Oe,wt={},wi=A&&A.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(wt,"__esModule",{value:!0});const Ai=wi(Et),me=Ai.default("https-proxy-agent:parse-proxy-response");function vi(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){me("onclose had error %o",D)}function i(){me("onend")}function l(D){u(),me("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),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=Wr()(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?gt.exports=Ai():gt.exports=Bi();var wt=gt.exports,bt={};Object.defineProperty(bt,"__esModule",{value:!0});function xi(e){return function(t,r){return new Promise((n,s)=>{e.call(this,t,r,(o,u)=>{o?s(o):n(u)})})}}bt.default=xi;var Qr=v&&v.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};const Oi=jt,Si=Qr(wt),Ii=Qr(bt),Ce=Si.default("agent-base");function Pi(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 Pe(e,t){return new Pe.Agent(e,t)}(function(e){class t extends Oi.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)},D=p=>{u||(a!==null&&(clearTimeout(a),a=null),l(p))},c=p=>{if(u)return;if(a!=null&&(clearTimeout(a),a=null),Pi(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=Ii.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})(Pe||(Pe={}));var Mi=Pe,vt={},_i=v&&v.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(vt,"__esModule",{value:!0});const Ni=_i(wt),Fe=Ni.default("https-proxy-agent:parse-proxy-response");function Ti(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
45
55
  \r
46
- `)===-1){me("have not received end of HTTP headers yet..."),o();return}const d=c.toString("ascii",0,c.indexOf(`\r
47
- `)),m=+d.split(" ")[1];me("got proxy server response: %o",d),t({statusCode:m,buffered:c})}e.on("error",l),e.on("close",a),e.on("end",i),o()})}wt.default=vi;var $i=A&&A.__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())})},oe=A&&A.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(dt,"__esModule",{value:!0});const Xr=oe(Sn),Jr=oe(Mn),Bi=oe(Pn),xi=oe(Lt),Oi=oe(Et),Ii=bi,Si=oe(wt),he=Oi.default("https-proxy-agent:agent");class Mi extends Ii.Agent{constructor(t){let r;if(typeof t=="string"?r=Bi.default.parse(t):r=t,!r)throw new Error("an HTTP(S) proxy server `host` and `port` must be specified!");he("creating new HttpsProxyAgent instance: %o",r),super(r);const n=Object.assign({},r);this.secureProxy=r.secureProxy||Ni(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 $i(this,void 0,void 0,function*(){const{proxy:n,secureProxy:s}=this;let o;s?(he("Creating `tls.Socket`: %o",n),o=Jr.default.connect(n)):(he("Creating `net.Socket`: %o",n),o=Xr.default.connect(n));const u=Object.assign({},n.headers);let i=`CONNECT ${`${r.host}:${r.port}`} HTTP/1.1\r
48
- `;n.auth&&(u["Proxy-Authorization"]=`Basic ${Buffer.from(n.auth).toString("base64")}`);let{host:l,port:f,secureEndpoint:D}=r;_i(f,D)||(l+=`:${f}`),u.Host=l,u.Connection="close";for(const h of Object.keys(u))i+=`${h}: ${u[h]}\r
49
- `;const c=Si.default(o);o.write(`${i}\r
50
- `);const{statusCode:p,buffered:d}=yield c;if(p===200){if(t.once("socket",Pi),r.secureEndpoint){he("Upgrading socket connection to TLS");const h=r.servername||r.host;return Jr.default.connect(Object.assign(Object.assign({},Ti(r,"host","hostname","path","port")),{socket:o,servername:h}))}return o}o.destroy();const m=new Xr.default.Socket({writable:!1});return m.readable=!0,t.once("socket",h=>{he("replaying proxy buffer for failed request"),xi.default(h.listenerCount("data")>0),h.push(d),h.push(null)}),m})}}dt.default=Mi;function Pi(e){e.resume()}function _i(e,t){return!!(!t&&e===80||t&&e===443)}function Ni(e){return typeof e=="string"?/^https:?$/i.test(e):!1}function Ti(e,...t){const r={};let n;for(n in e)t.includes(n)||(r[n]=e[n]);return r}var Li=A&&A.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};const At=Li(dt);function vt(e){return new At.default(e)}(function(e){e.HttpsProxyAgent=At.default,e.prototype=At.default.prototype})(vt||(vt={}));var Ri=vt,ki=J(Ri);const ji=async(e,t,r,n,s,o,u)=>new Promise((a,i)=>{const l=JSON.stringify(n),D=(e.protocol.includes("https")?In:On).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?ki(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 y(`Time out error: request took over ${s}ms. Try increasing the \`timeout\` config`))}),D.write(l),D.end()}),Gi=async(e,t,r,n,s,o)=>{const u=new URL(e),{response:a,data:i}=await ji(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){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()})}vt.default=Ti;var Li=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(ht,"__esModule",{value:!0});const en=ae(Ln),tn=ae(Rn),Ri=ae(kn),ki=ae(kt),ji=ae(wt),Gi=Mi,Hi=ae(vt),Ee=ji.default("https-proxy-agent:agent");class Ui extends Gi.Agent{constructor(t){let r;if(typeof t=="string"?r=Ri.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||zi(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 Li(this,void 0,void 0,function*(){const{proxy:n,secureProxy:s}=this;let o;s?(Ee("Creating `tls.Socket`: %o",n),o=tn.default.connect(n)):(Ee("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:D}=r;qi(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=Hi.default(o);o.write(`${i}\r
60
+ `);const{statusCode:p,buffered:d}=yield c;if(p===200){if(t.once("socket",Ki),r.secureEndpoint){Ee("Upgrading socket connection to TLS");const m=r.servername||r.host;return tn.default.connect(Object.assign(Object.assign({},Yi(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=>{Ee("replaying proxy buffer for failed request"),ki.default(m.listenerCount("data")>0),m.push(d),m.push(null)}),h})}}ht.default=Ui;function Ki(e){e.resume()}function qi(e,t){return!!(!t&&e===80||t&&e===443)}function zi(e){return typeof e=="string"?/^https:?$/i.test(e):!1}function Yi(e,...t){const r={};let n;for(n in e)t.includes(n)||(r[n]=e[n]);return r}var Wi=v&&v.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};const $t=Wi(ht);function Bt(e){return new $t.default(e)}(function(e){e.HttpsProxyAgent=$t.default,e.prototype=$t.default.prototype})(Bt||(Bt={}));var Vi=Bt,Xi=te(Vi);const Ji=async(e,t,r,n,s,o,u)=>new Promise((a,i)=>{const l=JSON.stringify(n),D=(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?Xi(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()}),Zi=async(e,t,r,n,s,o)=>{const u=new URL(e),{response:a,data:i}=await Ji(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+=`
51
61
 
52
62
  ${i}`),a.statusCode===500&&(l+=`
53
63
 
54
- Check the API status: https://status.openai.com`),new y(l)}return JSON.parse(i)},Ui=e=>e.trim().replace(/[\n\r]/g,"").replace(/(\w)\.$/,"$1"),R=e=>Array.from(new Set(e)),Hi=async(e,t,r,n,s,o,u,a,i,l,f,D,c,p)=>{try{const d=await Gi(e,t,r,{model:n,messages:[{role:"system",content:ne(s,a,i,c)},{role:"user",content:o}],temperature:D,top_p:1,frequency_penalty:0,presence_penalty:0,max_tokens:f,stream:!1,n:u},l,p);return R(d.choices.filter(m=>m.message?.content).map(m=>Ui(m.message.content)).map(m=>{if(i==="conventional"){const h=/: (\w)/;return m.replace(h,(C,b)=>`: ${b.toLowerCase()}`)}return m}).filter(m=>{switch(i){case"gitmoji":return ci(m);case"conventional":return Di(m);case"":default:return!0}}))}catch(d){const m=d;throw m.code==="ENOTFOUND"?new y(`Error connecting to ${m.hostname} (${m.syscall})`):m}},Ki=(e,t)=>{const r=Math.ceil(e),n=Math.floor(t);return Math.floor(Math.random()*(n-r+1))+r};async function*Zr(e){const t=await e;for await(const r of t)yield r}const ge=(e,t)=>e.disabled&&!t.disabled?1:!e.disabled&&t.disabled?-1:0,x="done",Qr="undone";class qi 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 G({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=`${ne(n,a,o,u)}
55
- Please just generate ${s} commit messages in numbered list format without any explanation.`,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 M(Zr(D)).pipe(jt(p=>["content_block_delta","message_stop"].includes(p.type)),S(p=>p),Gt(p=>{p.type==="content_block_delta"&&(c+=p.delta.text)}),S(p=>{const d=p.type==="message_stop";return{id:this.params.keyName,name:`${this.serviceName} ${c}`,value:`${c}`,isError:!1,description:d?x: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 xn({apiKey:this.params.config.ANTHROPIC_KEY})}generateCommitMessage$(){return U(this.generateMessage()).pipe(T(t=>M(t)),S(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}=this.params.config,u=this.params.config["max-length"],i=`${ne(r,u,s,o)}
56
- Please just generate ${n} commit messages in numbered list format without any explanation.`,l={max_tokens:this.params.config["max-tokens"],temperature:this.params.config.temperature,system:i,messages:[{role:"user",content:t}],model:this.params.config.ANTHROPIC_MODEL},D=(await this.anthropic.messages.create(l)).content.map(({text:c})=>c).join("");return R(this.sanitizeMessage(D,this.params.config.type,n))}catch(t){const r=t;throw r.code==="ENOTFOUND"?new y(`Error connecting to ${r.hostname} (${r.syscall})`):r}}generateStreamCommitMessage$(){return this.generateStreamChoice$().pipe(Ut((t,r)=>{if(r.description===x){const o=R(this.sanitizeMessage(r.value,this.params.config.type,this.params.config.generate));return!o||o.length===0?[{id:`${this.params.keyName}_${x}_0`,name:`${this.serviceName} Failed to extract messages from response`,value:"Failed to extract messages from response",isError:!0,description:x,disabled:!0}]:o.map((a,i)=>({id:`${this.params.keyName}_${x}_${i}`,name:`${this.serviceName} ${a}`,value:`${a}`,isError:!1,description:x,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:$t}=Object.prototype,Ie=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)),Qi=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 Zi(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=>rn(E.message.content)).map(E=>{if(i==="conventional"){const I=/: (\w)/;return E.replace(I,(M,z)=>`: ${z.toLowerCase()}`)}return E}).filter(E=>{switch(i){case"gitmoji":return mi(E);case"conventional":return di(E);case"":default:return!0}})),b=m.choices.filter(E=>E.message?.content).map(E=>rn(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 ea 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 _(Ur(D)).pipe(Ht(p=>["content_block_delta","message_stop"].includes(p.type)),P(p=>p),Ut(p=>{p.type==="content_block_delta"&&(c+=p.delta.text)}),P(p=>{const d=p.type==="message_stop";return{id:this.params.keyName,name:`${this.serviceName} ${c}`,value:`${c}`,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 Mn({apiKey:this.params.config.ANTHROPIC_KEY})}generateCommitMessage$(){return K(this.generateMessage()).pipe(L(t=>_(t)),P(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(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: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:xt}=Object.prototype,Me=typeof process<"u"&&process.platform==="win32"?`\r
57
68
  `:`
58
- `,Bt=(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+=se(o+"[]")+s+se(a)+Ie;else u&&typeof u=="object"?r.push(o):n+=se(o)+s+se(u)+Ie}t.section&&n.length&&(n="["+se(t.section)+"]"+Ie+n);for(const o of r){const u=en(o).join("\\."),a=(t.section?t.section+".":"")+u,{whitespace:i}=t,l=Bt(e[o],{section:a,whitespace:i});n.length&&l.length&&(n+=Ie),n+=l}return n},en=e=>e.replace(/\1/g,"LITERAL\\1LITERAL").replace(/\\\./g,"").split(/\./).map(t=>t.replace(/\1/g,"\\.").replace(/\2LITERAL\\1LITERAL\2/g,"")),tn=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=Se(i[1]),n==="__proto__"){r=Object.create(null);continue}r=t[n]=t[n]||Object.create(null);continue}const l=Se(i[2]),f=l.length>2&&l.slice(-2)==="[]",D=f?l.slice(0,-2):l;if(D==="__proto__")continue;const c=i[3]?Se(i[4]):!0,p=c==="true"||c==="false"||c==="null"?JSON.parse(c):c;f&&($t.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(!$t.call(t,a)||typeof t[a]!="object"||Array.isArray(t[a]))continue;const i=en(a);r=t;const l=i.pop(),f=l.replace(/\\\./g,".");for(const D of i)D!=="__proto__"&&((!$t.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},rn=e=>e.startsWith('"')&&e.endsWith('"')||e.startsWith("'")&&e.endsWith("'"),se=e=>typeof e!="string"||e.match(/[=\r\n]/)||e.match(/^\[/)||e.length>1&&rn(e)||e!==e.trim()?JSON.stringify(e):e.split(";").join("\\;").split("#").join("\\#"),Se=(e,t)=>{if(e=(e||"").trim(),rn(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 zi={parse:tn,decode:tn,stringify:Bt,encode:Bt,safe:se,unsafe:Se},nn=J(zi);const on=e=>B.lstat(e).then(()=>!0,()=>!1),Yi=["","conventional","gitmoji"],xt="http://localhost:11434",{hasOwnProperty:Wi}=Object.prototype,W=(e,t)=>Wi.call(e,t),F=(e,t,r)=>{if(!t)throw new y(`Invalid config property ${e}: ${r}`)},Me={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):xt},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"),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",Yi.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}},Ot=X.join(Kt.homedir(),".aicommit2"),sn=async()=>{if(!await on(Ot))return Object.create(null);const t=await B.readFile(Ot,"utf8");return nn.parse(t)},It=async(e,t)=>{const r=await sn(),n={};for(const s of Object.keys(Me)){const o=Me[s],u=e?.[s]??r[s];if(t)try{n[s]=o(u)}catch{}else n[s]=o(u)}return n},Vi=async e=>{const t=await sn();for(const[r,n]of e){if(!W(Me,r))throw new y(`Invalid config property: ${r}`);const s=Me[r](n);t[r]=s}await B.writeFile(Ot,nn.stringify(t),"utf8")};class O{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=Rn.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 Xi 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 U(this.generateMessage()).pipe(T(t=>M(t)),S((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}=this.params.config,o=this.params.config["max-length"],u=this.params.stagedDiff.diff,a=this.buildPrompt(t,u,r,o,n,s);await this.getAllConversationIds();const i=await this.sendMessage(a),{conversationId:l,allText:f}=this.parseSendMessageResult(i);return await this.deleteConversation(l),R(this.sanitizeMessage(f,this.params.config.type,r))}catch(t){const r=t;throw r.code==="ENOTFOUND"?new y(`Error connecting to ${r.hostname} (${r.syscall})`):r}}async getAllConversationIds(){const r=(await new O({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 Tn;return n.set("form",new Ln([JSON.stringify(r)],{type:"application/json"})),(await new O({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(W(i,"conversationId")){o=i.conversationId;return}if(W(i,"text")){u+=i.text;return}if(W(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 O({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 Ji 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 G({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 U(this.generateMessage()).pipe(T(t=>M(t)),S(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}=this.params.config,u=this.params.config["max-length"],a=this.buildPrompt(r,t,n,u,s,o),i=this.params.config["max-tokens"],c=(await(await this.genAI.getGenerativeModel({model:this.params.config.GEMINI_MODEL,generationConfig:{maxOutputTokens:i,temperature:this.params.config.temperature}}).generateContent(a)).response).text();return R(this.sanitizeMessage(c,this.params.config.type,n))}catch(t){const r=t;throw r.code==="ENOTFOUND"?new y(`Error connecting to ${r.hostname} (${r.syscall})`):r}}}class Zi 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 U(this.generateMessage()).pipe(T(t=>M(t)),S((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}=this.params.config,o=this.params.config["max-length"],u=this.params.stagedDiff.diff,a=this.buildPrompt(t,u,r,o,n,s);await this.prepareNewConversation();const{conversationId:i}=await this.getNewConversationId();await this.prepareConversationEvent(i);const{lastMessageId:l}=await this.getConversationInfo(i),f=await this.sendMessage(i,a,l);return await this.deleteConversation(i),R(this.sanitizeHuggingMessage(f,this.params.config.type,r))}catch(t){const r=t;throw r.code==="ENOTFOUND"?new y(`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;if(o.forEach((a,i)=>{try{const l=JSON.parse(a);W(l,"type")&&l.type==="finalAnswer"&&(u=l)}catch{}}),!u||!W(u,"text"))throw new Error("Cannot parse finalAnswer");return this.sanitizeMessage(u.text,r,n)}async prepareNewConversation(){return(await new O({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 O({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 O({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 O({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 O({method:"DELETE",baseURL:`${this.host}/chat/conversation/${t}`,timeout:this.params.config.timeout}).setHeaders({Cookie:this.cookie}).execute(),(await new O({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 O({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}}class Qi 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 G({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 U(this.generateMessage()).pipe(T(t=>M(t)),S(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}=this.params.config,u=this.params.config["max-length"],a=this.buildPrompt(r,t,n,u,s,o);await this.checkAvailableModels();const i=await this.createChatCompletions(a);return R(this.sanitizeMessage(i,this.params.config.type,n))}catch(t){const r=t;throw r.code==="ENOTFOUND"?new y(`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 O({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 O({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:Ki(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 ea extends Y{constructor(t){super(t),this.params=t,this.host=xt,this.model="",this.handleError$=r=>{if(r.response&&r.response.data?.error)return G({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 G({name:`${this.errorPrefix} ${n}`,value:n,isError:!0,disabled:!0})},this.generateStreamChoice$=()=>{const n=`${ne(this.params.config.locale,this.params.config["max-length"],this.params.config.type,this.params.config.prompt)}
59
- Please just generate ${this.params.config.generate} commit messages in numbered list format without any explanation.`,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 M(Zr(s)).pipe(Gt(u=>o+=u.message.content),S(u=>({id:this.params.keyName,name:`${this.serviceName} ${o}`,value:`${o}`,isError:!1,description:u.done?x: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||xt,this.ollama=new jn({host:this.host})}generateCommitMessage$(){return this.params.config.OLLAMA_STREAM?this.generateStreamCommitMessage$():U(this.generateMessage()).pipe(T(t=>M(t)),S(t=>({name:`${this.serviceName} ${t}`,value:t,isError:!1})),L(this.handleError$))}generateStreamCommitMessage$(){return U(this.checkIsAvailableOllama()).pipe(wn(()=>this.generateStreamChoice$()),Ut((t,r)=>{if(r.description===x){const o=R(this.sanitizeMessage(r.value,this.params.config.type,this.params.config.generate));return!o||o.length===0?[{id:`${this.params.keyName}_${x}_0`,name:`${this.serviceName} Failed to extract messages from response`,value:"Failed to extract messages from response",isError:!0,description:x,disabled:!0}]:o.map((a,i)=>({id:`${this.params.keyName}_${x}_${i}`,name:`${this.serviceName} ${a}`,value:`${a}`,isError:!1,description:x,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();return R(this.sanitizeMessage(t,this.params.config.type,this.params.config.generate))}catch(t){const r=t;throw r.code==="ENOTFOUND"?new y(`Error connecting to ${r.hostname} (${r.syscall})`):r}}async checkIsAvailableOllama(){try{return(await new O({method:"GET",baseURL:`${this.host}`,timeout:this.params.config.OLLAMA_TIMEOUT}).execute()).data}catch(t){throw t.code==="ECONNREFUSED"?new y(`Error connecting to ${this.host}. Please run Ollama or check host`):t}}async createChatCompletions(){const r=`${ne(this.params.config.locale,this.params.config["max-length"],this.params.config.type,this.params.config.prompt)}
60
- Please just generate ${this.params.config.generate} commit messages in numbered list format without explanation.`;return(await this.ollama.chat({model:this.model,messages:[{role:"system",content:r},{role:"user",content:`${this.params.stagedDiff.diff}`}],stream:!1,options:{temperature:this.params.config.temperature}})).message.content}}class ta extends Y{constructor(t){super(t),this.params=t,this.handleError$=r=>{let n="An error occurred";if(r.message){n=r.message.split(`
61
- `)[0];const s=this.extractJSONFromError(r.message);n+=`: ${s.error.message}`}return G({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 U(Hi(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.proxy)).pipe(T(t=>M(t)),S(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 un{constructor(t,r){this.config=t,this.stagedDiff=r}createAIRequests$(t){return M(t).pipe(An(r=>{const n={config:this.config,stagedDiff:this.stagedDiff,keyName:r};switch(r){case H.OPEN_AI:return z.create(ta,n).generateCommitMessage$();case H.GEMINI:return z.create(Ji,n).generateCommitMessage$();case H.ANTHROPIC:return z.create(qi,n).generateCommitMessage$();case H.HUGGING:return z.create(Zi,n).generateCommitMessage$();case H.CLOVA_X:return z.create(Xi,n).generateCommitMessage$();case H.MISTRAL:return z.create(Qi,n).generateCommitMessage$();case H.OLLAMA:return z.create(ea,n).generateCommitMessage$();default:const s=g.red.bold(`[${r}]`);return G({name:s+" Invalid AI type",value:"Invalid AI type",isError:!0,disabled:!0})}}))}}const an=async()=>{const{stdout:e,failed:t}=await re("git",["rev-parse","--show-toplevel"],{reject:!1});if(t)throw new y("The current directory must be a Git repository!");return e},St=e=>`:(exclude)${e}`,Dn=["package-lock.json","pnpm-lock.yaml","*.lock"].map(St),cn=async e=>{const t=["diff","--cached","--diff-algorithm=minimal"],{stdout:r}=await re("git",[...t,"--name-only",...Dn,...e?e.map(St):[]]);if(!r)return null;const{stdout:n}=await re("git",[...t,...Dn,...e?e.map(St):[]]);return{files:r.split(`
62
- `),diff:n}},ra=e=>`Detected ${e.length.toLocaleString()} staged file${e.length>1?"s":""}`;class Pe{constructor(){this.title="aicommit2"}printTitle(){console.log(Gn.textSync(this.title,{font:"Small"}))}displaySpinner(t){return je(t).start()}stopSpinner(t){t.stop(),t.clear()}printStagedFiles(t){console.log(g.bold.green("\u2714 ")+g.bold(`${ra(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+=De(o+"[]")+s+De(a)+Me;else u&&typeof u=="object"?r.push(o):n+=De(o)+s+De(u)+Me}t.section&&n.length&&(n="["+De(t.section)+"]"+Me+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+=Me),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)==="[]",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&&(xt.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(!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 D of i)D!=="__proto__"&&((!xt.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},sn=e=>e.startsWith('"')&&e.endsWith('"')||e.startsWith("'")&&e.endsWith("'"),De=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 ta={parse:on,decode:on,stringify:Ot,encode:Ot,safe:De,unsafe:_e},un=te(ta);const an=e=>x.lstat(e).then(()=>!0,()=>!1),ra=["","conventional","gitmoji"],St="http://localhost:11434",{hasOwnProperty:na}=Object.prototype,Q=(e,t)=>na.call(e,t),F=(e,t,r)=>{if(!t)throw new w(`Invalid config property ${e}: ${r}`)},Dn={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",ra.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}},cn={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-1.5-flash-latest":(F("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":(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):St},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}},It=H.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)},Pt=async(e,t)=>{const r=await ln(),n={},s={...Dn,...cn};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},oa=async e=>{const t=await ln(),r={...Dn,...cn};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 sa 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)),P((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 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 ua 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 qn(this.params.config.GEMINI_KEY)}generateCommitMessage$(){return K(this.generateMessage()).pipe(L(t=>_(t)),P(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 ia 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)),P((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 aa 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)),P(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:gi(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 Da extends Z{constructor(t){super(t),this.params=t,this.host=St,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 _(Ur(s)).pipe(Ut(u=>o+=u.message.content),P(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 zn({host:this.host})}generateCommitMessage$(){return this.params.config.OLLAMA_STREAM?this.generateStreamCommitMessage$():K(this.generateMessage()).pipe(L(t=>_(t)),P(t=>({name:`${this.serviceName} ${t}`,value:t,isError:!1})),R(this.handleError$))}generateStreamCommitMessage$(){return K(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();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 ca 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(Qi(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)),P(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 fn{constructor(t,r){this.config=t,this.stagedDiff=r}createAIRequests$(t){return _(t).pipe(On(r=>{const n={config:this.config,stagedDiff:this.stagedDiff,keyName:r};switch(r){case q.OPEN_AI:return X.create(ca,n).generateCommitMessage$();case q.GEMINI:return X.create(ua,n).generateCommitMessage$();case q.ANTHROPIC:return X.create(ea,n).generateCommitMessage$();case q.HUGGING:return X.create(ia,n).generateCommitMessage$();case q.CLOVA_X:return X.create(sa,n).generateCommitMessage$();case q.MISTRAL:return X.create(aa,n).generateCommitMessage$();case q.OLLAMA:return X.create(Da,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 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},Mt=e=>`:(exclude)${e}`,dn=["package-lock.json","pnpm-lock.yaml","*.lock"].map(Mt),mn=async e=>{const t=["diff","--cached","--diff-algorithm=minimal"],{stdout:r}=await ue("git",[...t,"--name-only",...dn,...e?e.map(Mt):[]]);if(!r)return null;const{stdout:n}=await ue("git",[...t,...dn,...e?e.map(Mt):[]]);return{files:r.split(`
73
+ `),diff:n}},la=e=>`Detected ${e.length.toLocaleString()} staged file${e.length>1?"s":""}`;class Ne{constructor(){this.title="aicommit2"}printTitle(){console.log(Yn.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(`${la(t.files)}:`)),console.log(`${t.files.map(r=>` ${r}`).join(`
63
74
  `)}
64
75
  `)}printAnalyzed(){console.log(`
65
76
  ${g.bold.green("\u2714")} ${g.bold("Changes analyzed")}`)}printCommitted(){console.log(`
@@ -67,14 +78,14 @@ ${g.bold.green("\u2714")} ${g.bold("Successfully committed!")}`)}printCopied(){c
67
78
  ${g.bold.green("\u2714")} ${g.bold("Successfully copied! Press 'Ctrl + V' to paste")}`)}printSavedCommitMessage(){console.log(`
68
79
  ${g.bold.green("\u2714")} ${g.bold("Saved commit message")}`)}printCancelledCommit(){console.log(`
69
80
  ${g.bold.yellow("\u26A0")} ${g.yellow("Commit cancelled")}`)}printErrorMessage(t){console.log(`
70
- ${g.bold.red("\u2716")} ${g.red(`${t}`)}`)}moveCursorUp(){const t=Ce.createInterface({input:process.stdin,output:process.stdout});Ce.moveCursor(process.stdout,0,-1),t.close()}moveCursorDown(){const t=Ce.createInterface({input:process.stdin,output:process.stdout});Ce.moveCursor(process.stdout,0,1),t.close()}}const na={isLoading:!1,startOption:{text:"AI is analyzing your changes"}},Mt="No commit messages were generated";class oa{constructor(){this.choices$=new Ht([]),this.loader$=new Ht(na),this.destroyed$=new vn(1)}initPrompt(){return ke.registerPrompt("reactiveListPrompt",Un),ke.prompt({type:"reactiveListPrompt",name:"aicommit2Prompt",message:"Pick a commit message to use: ",emptyMessage:`\u26A0 ${Mt}`,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(ge));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:Mt,stopOption:{doneFrame:"\u26A0",color:"yellow"}})}stopLoaderOnSuccess(){this.loader$.next({isLoading:!1,message:"Changes analyzed"})}logEmptyCommitMessage(){console.log(`${g.bold.yellow("\u26A0")} ${g.yellow(`${Mt}`)}`)}checkStreamChoice(t){if(t.description===x){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(ge));return}this.choices$.next([...this.currentChoices,t].sort(ge));return}if(this.currentChoices.find(s=>s?.id===t.id)){this.choices$.next(this.currentChoices.map(s=>s?.id===t.id?t:s).sort(ge));return}this.choices$.next([...this.currentChoices,t].sort(ge))}get currentChoices(){return this.choices$.getValue().map(t=>t)}}const k=new Pe;var sa=async(e,t,r,n,s,o,u,a,i)=>(async()=>{k.printTitle(),await an(),n&&await re("git",["add","--update"]);const l=k.displaySpinner("Detecting staged files"),f=await cn(r);if(l.stop(),!f)throw new y("No staged changes found. Stage your changes manually, or automatically stage all changes with the `--all` flag.");k.printStagedFiles(f);const{env:D}=process,c=await It({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(([w])=>jr.includes(w)).filter(([w,Ne])=>!!Ne).map(([w])=>w);if(p.length===0)throw new y("Please set at least one API key via `aicommit2 config set OPENAI_KEY=<your token>`");const m=new un(c,f),h=new oa,C=h.initPrompt();h.startLoader();const b=m.createAIRequests$(p).subscribe(w=>h.refreshChoices(w),()=>{},()=>h.checkErrorOnChoices()),I=await C;b.unsubscribe(),h.completeSubject(),k.moveCursorUp();const _=I.aicommit2Prompt?.value;if(!_)throw new y("An error occurred! No selected message");if(u&&(Ds("copy-paste").copy(_),k.printCopied(),process.exit()),o){const w=je("Committing with the generated message").start();await re("git",["commit","-m",_,...i]),w.stop(),w.clear(),k.printCommitted(),process.exit()}const N=await ke.prompt([{type:"confirm",name:"confirmationPrompt",message:"Use selected message?",default:!0}]),{confirmationPrompt:ue}=N;if(ue){const w=je("Committing with the generated message").start();await re("git",["commit","-m",_,...i]),w.stop(),w.clear(),k.printCommitted(),process.exit()}k.printCancelledCommit(),process.exit()})().catch(l=>{k.printErrorMessage(l.message),xe(l),process.exit(1)}),ua=lr({name:"config",parameters:["<mode>","<key=value...>"]},e=>{(async()=>{const{mode:t,keyValue:r}=e._;if(t==="get"){const n=await It({},!0);for(const s of r)W(n,s)&&console.log(`${s}=${n[s]}`);return}if(t==="set"){await Vi(r.map(n=>n.split("=")));return}throw new y(`Invalid mode: ${t}`)})().catch(t=>{new Pe().printErrorMessage(t.message),xe(t),process.exit(1)})});const ln="prepare-commit-msg",fn=`.git/hooks/${ln}`,_e=_n(new URL("cli.mjs",import.meta.url)),ia=process.argv[1].replace(/\\/g,"/").endsWith(`/${fn}`),pn=process.platform==="win32",dn=`
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 fa={isLoading:!1,startOption:{text:"AI is analyzing your changes"}},_t="No commit messages were generated";class pa{constructor(){this.choices$=new qt([]),this.loader$=new qt(fa),this.destroyed$=new Sn(1)}initPrompt(){return je.registerPrompt("reactiveListPrompt",Wn),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 j=new Ne;var da=async(e,t,r,n,s,o,u,a,i)=>(async()=>{j.printTitle(),await pn(),n&&await ue("git",["add","--update"]);const l=j.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.");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])=>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(c,f),m=new pa,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&&(ms("copy-paste").copy(I),j.printCopied(),process.exit()),o){const A=Ge("Committing with the generated message").start();await ue("git",["commit","-m",I,...i]),A.stop(),A.clear(),j.printCommitted(),process.exit()}const M=await je.prompt([{type:"confirm",name:"confirmationPrompt",message:"Use selected message?",default:!0}]),{confirmationPrompt:z}=M;if(z){const A=Ge("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)}),ma=fr({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 oa(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)),ha=process.argv[1].replace(/\\/g,"/").endsWith(`/${gn}`),Cn=process.platform==="win32",Fn=`
71
82
  #!/usr/bin/env node
72
- import(${JSON.stringify(Nn(_e))})
73
- `.trim();var aa=lr({name:"hook",parameters:["<install/uninstall>"]},e=>{(async()=>{const t=await an(),{installUninstall:r}=e._,n=X.join(t,fn),s=await on(n);if(r==="install"){if(s){if(await B.realpath(n).catch(()=>{})===_e){console.warn("The hook is already installed");return}throw new y(`A different ${ln} hook seems to be installed. Please remove it before installing aicommit2.`)}await B.mkdir(X.dirname(n),{recursive:!0}),pn?await B.writeFile(n,dn):(await B.symlink(_e,n,"file"),await B.chmod(n,493)),console.log(`${g.green("\u2714")} Hook installed`);return}if(r==="uninstall"){if(!s){console.warn("Hook is not installed");return}if(pn){if(await B.readFile(n,"utf8")!==dn){console.warn("Hook is not installed");return}}else if(await B.realpath(n)!==_e){console.warn("Hook is not installed");return}await B.rm(n),console.log(`${g.green("\u2714")} Hook uninstalled`);return}throw new y(`Invalid mode: ${r}`)})().catch(t=>{console.error(`${g.red("\u2716")} ${t.message}`),xe(t),process.exit(1)})});const[Pt,Da]=process.argv.slice(2);var ca=()=>(async()=>{if(!Pt)throw new y('Commit message file path is missing. This file should be called from the "prepare-commit-msg" git hook');if(Da)return;const e=await cn();if(!e)return;const t=new Pe;t.printTitle();const{env:r}=process,n=await It({proxy:r.https_proxy||r.HTTPS_PROXY||r.http_proxy||r.HTTP_PROXY}),s=Object.entries(n).filter(([p])=>jr.includes(p)).filter(([p,d])=>!!d).map(([p])=>p);if(s.length===0)throw new y("Please set at least one API key via `aicommit2 config set OPENAI_KEY=<your token>`");const u=new un(n,e),a=t.displaySpinner("The AI is analyzing your changes");let i;try{i=await $n(u.createAIRequests$(s).pipe(jt(p=>!p.isError),S(p=>p.value),Bn()))}finally{a.stop(),a.clear(),t.printAnalyzed()}const f=await B.readFile(Pt,"utf8")!=="",D=i.length>1;let c="";f&&(c=`# \u{1F916} AI generated commit${D?"s":""}
83
+ import(${JSON.stringify(Gn(Te))})
84
+ `.trim();var ga=fr({name:"hook",parameters:["<install/uninstall>"]},e=>{(async()=>{const t=await pn(),{installUninstall:r}=e._,n=H.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(H.dirname(n),{recursive:!0}),Cn?await x.writeFile(n,Fn):(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")!==Fn){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,Ca]=process.argv.slice(2);var Fa=()=>(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(Ca)return;const e=await mn();if(!e)return;const t=new Ne;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])=>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),P(p=>p.value),Pn()))}finally{a.stop(),a.clear(),t.printAnalyzed()}const f=await x.readFile(Nt,"utf8")!=="",D=i.length>1;let c="";f&&(c=`# \u{1F916} AI generated commit${D?"s":""}
74
85
  `),D?(f&&(c+=`# Select one of the following messages by uncommenting:
75
86
  `),c+=`
76
87
  ${i.map(p=>`# ${p}`).join(`
77
88
  `)}`):(f&&(c+=`# Edit the message below and commit:
78
89
  `),c+=`
79
90
  ${i[0]}
80
- `),await B.appendFile(Pt,c),t.printSavedCommitMessage()})().catch(e=>{new Pe().printErrorMessage(e.message),xe(e),process.exit(1)});const mn=process.argv.slice(2);as({name:"aicommit2",version:Gr,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:[ua,aa],help:{description:li},ignoreArgv:e=>e==="unknown-flag"||e==="argument"},e=>{if(ia){ca();return}sa(e.flags.locale,e.flags.generate,e.flags.exclude,e.flags.all,e.flags.type,e.flags.confirm,e.flags.clipboard,e.flags.prompt,mn)},mn);
91
+ `),await x.appendFile(Nt,c),t.printSavedCommitMessage()})().catch(e=>{new Ne().printErrorMessage(e.message),Ie(e),process.exit(1)});const En=process.argv.slice(2);ds({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:[ma,ga],help:{description:hi},ignoreArgv:e=>e==="unknown-flag"||e==="argument"},e=>{if(ha){Fa();return}da(e.flags.locale,e.flags.generate,e.flags.exclude,e.flags.all,e.flags.type,e.flags.confirm,e.flags.clipboard,e.flags.prompt,En)},En);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "aicommit2",
3
- "version": "1.8.7",
3
+ "version": "1.9.1",
4
4
  "description": "A Reactive CLI that generates git commit messages with various AI",
5
5
  "keywords": [
6
6
  "cli",
@@ -45,8 +45,9 @@
45
45
  "dependencies": {
46
46
  "@anthropic-ai/sdk": "^0.20.8",
47
47
  "@dqbd/tiktoken": "^1.0.2",
48
- "@google/generative-ai": "^0.9.0",
48
+ "@google/generative-ai": "^0.11.4",
49
49
  "@inquirer/prompts": "^3.0.0",
50
+ "@pacote/xxhash": "^0.3.2",
50
51
  "axios": "^1.6.8",
51
52
  "chalk": "^5.3.0",
52
53
  "copy-paste": "^1.5.3",