aicommit2 1.1.1 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/README.md +51 -23
  2. package/dist/cli.mjs +56 -55
  3. package/package.json +6 -3
package/README.md CHANGED
@@ -1,9 +1,9 @@
1
1
  <div align="center">
2
2
  <div>
3
- <img src="https://github.com/tak-bro/aicommit2/assets/7614353/fae40f3e-329d-4acf-bd91-f7297cb88209" alt="AICommit2"/>
3
+ <img src="https://github.com/tak-bro/aicommit2/assets/7614353/9046d4ab-5652-4f2a-99b8-e58920ddbe17" alt="AICommit2"/>
4
4
  <h1 align="center">AICommit2</h1>
5
5
  </div>
6
- <p>Reactive CLI that generates git commit messages with diverse AI</p>
6
+ <p>Reactive CLI that generates git commit messages with various AI</p>
7
7
  <a aria-label="npm" href="https://www.npmjs.com/package/aicommit2">
8
8
  <img src="https://img.shields.io/npm/v/aicommit2" alt="Current version">
9
9
  </a>
@@ -21,6 +21,7 @@ The core functionalities and architecture of this project are inspired by [AI Co
21
21
  ## Supported Providers
22
22
 
23
23
  - [OpenAI](https://openai.com/)
24
+ - [Anthropic Claude](https://console.anthropic.com/)
24
25
  - [Huggingface **(Unofficial)**](https://huggingface.co/chat/)
25
26
  - [Clova X **(Unofficial)**](https://clova-x.naver.com/)
26
27
 
@@ -37,6 +38,7 @@ npm install -g aicommit2
37
38
  2. Retrieve your API key or Cookie
38
39
 
39
40
  - [OpenAI](https://platform.openai.com/account/api-keys)
41
+ - [Anthropic Claude](https://console.anthropic.com/)
40
42
  - [Huggingface **(Unofficial)**](https://github.com/tak-bro/aicommit2/blob/main/README.md#how-to-get-cookie)
41
43
  - [Clova X **(Unofficial)**](https://github.com/tak-bro/aicommit2/blob/main/README.md#how-to-get-cookie)
42
44
 
@@ -45,9 +47,12 @@ npm install -g aicommit2
45
47
  3. Set the key so aicommit2 can use it:
46
48
 
47
49
  ```sh
48
- aicommit2 config set OPENAI_KEY=<your token> # openai
49
- aicommit2 config set HUGGING_COOKIE="<your browser cookie>" # huggingface
50
- aicommit2 config set CLOVAX_COOKIE="<your browser cookie>" # clova x
50
+ aicommit2 config set OPENAI_KEY=<your key> # OpenAI
51
+ aicommit2 config set ANTHROPIC_KEY=<your key> # Anthropic Claude
52
+
53
+ # Please be cautious of Escape characters(\", \') in browser cookie string
54
+ aicommit2 config set HUGGING_COOKIE="<your browser cookie>" # Hugging Face
55
+ aicommit2 config set CLOVAX_COOKIE="<your browser cookie>" # Clova X
51
56
  ```
52
57
 
53
58
  This will create a `.aicommit2` file in your home directory.
@@ -219,21 +224,23 @@ aicommit2 config set OPENAI_KEY=<your-api-key> generate=3 locale=en
219
224
 
220
225
  ### Options
221
226
 
222
- | Option | Default | Description |
223
- |------------------|----------------------------------------|-----------------------------------------------------------------------------|
224
- | `OPENAI_KEY` | N/A | The OpenAI API key. |
225
- | `OPENAI_MODEL` | `gpt-3.5-turbo` | The OpenAI Model to use. |
226
- | `HUGGING_COOKIE` | N/A | The HuggingFace Cookie string |
227
- | `HUGGING_MODEL` | `mistralai/Mixtral-8x7B-Instruct-v0.1` | The HuggingFace Model to use. |
228
- | `CLOVAX_COOKIE` | N/A | The Clova X Cookie string |
229
- | `locale` | `en` | Locale for the generated commit messages. |
230
- | `generate` | `1` | Number of commit messages to generate. |
231
- | `type` | `conventional` | Type of commit message to generate. |
232
- | `proxy` | N/A | Set a HTTP/HTTPS proxy to use for requests(only **OpenAI**). |
233
- | `timeout` | `10000` ms | Network request timeout |
234
- | `max-length` | `50` | Maximum character length of the generated commit message. |
235
- | `max-tokens` | `200` | The maximum number of tokens that the AI models can generate. |
236
- | `temperature` | `0.7` | The temperature (0.0-2.0) is used to control the randomness of the output |
227
+ | Option | Default | Description |
228
+ |--------------------|----------------------------------------|---------------------------------------------------------------------------------------------------------|
229
+ | `OPENAI_KEY` | N/A | The OpenAI API key. |
230
+ | `OPENAI_MODEL` | `gpt-3.5-turbo` | The OpenAI Model to use. |
231
+ | `ANTHROPIC_KEY` | N/A | The Anthropic API key. |
232
+ | `ANTHROPIC_MODEL` | `claude-2.1` | The Anthropic Model to use. |
233
+ | `HUGGING_COOKIE` | N/A | The HuggingFace Cookie string |
234
+ | `HUGGING_MODEL` | `mistralai/Mixtral-8x7B-Instruct-v0.1` | The HuggingFace Model to use. |
235
+ | `CLOVAX_COOKIE` | N/A | The Clova X Cookie string |
236
+ | `locale` | `en` | Locale for the generated commit messages. |
237
+ | `generate` | `1` | Number of commit messages to generate. |
238
+ | `type` | `conventional` | Type of commit message to generate. |
239
+ | `proxy` | N/A | Set a HTTP/HTTPS proxy to use for requests(only **OpenAI**). |
240
+ | `timeout` | `10000` ms | Network request timeout |
241
+ | `max-length` | `50` | Maximum character length of the generated commit message. |
242
+ | `max-tokens` | `200` | The maximum number of tokens that the AI models can generate. (only **Open AI, Anthropic**) |
243
+ | `temperature` | `0.7` | The temperature (0.0-2.0) is used to control the randomness of the output (only **Open AI, Anthropic**) |
237
244
 
238
245
 
239
246
  #### OPENAI_KEY
@@ -252,6 +259,23 @@ The Chat Completions (`/v1/chat/completions`) model to use. Consult the list of
252
259
  aicommit2 config set OPENAI_MODEL=gpt-4
253
260
  ```
254
261
 
262
+ #### ANTHROPIC_KEY
263
+
264
+ The Anthropic API key. To get started with Anthropic Claude, request access to their API at [anthropic.com/earlyaccess](https://www.anthropic.com/earlyaccess).
265
+
266
+ #### ANTHROPIC_MODEL
267
+
268
+ Default: `claude-2.1`
269
+
270
+ Supported:
271
+ - `claude-2.1`
272
+ - `claude-instant-1.2`
273
+
274
+ ```sh
275
+ aicommit2 config set ANTHROPIC_MODEL=claude-2.1
276
+ ```
277
+
278
+
255
279
  #### HUGGING_COOKIE
256
280
 
257
281
  The [Huggingface Chat](https://huggingface.co/chat/) Cookie. Please check [how to get cookie](https://github.com/tak-bro/aicommit2?tab=readme-ov-file#how-to-get-cookieunofficial-api)
@@ -353,13 +377,17 @@ This CLI tool runs `git diff` to grab all your latest code changes, sends them t
353
377
 
354
378
  * Login to the site you want
355
379
  * You can get cookie from the browser's developer tools network tab
356
- * See for any requests check out the Cookie, **Copy whole value**
380
+ * See for any requests check out the Cookie, **Copy whole value**
357
381
  * Check below image for the format of cookie
358
382
 
383
+ > When setting cookies with long string values, ensure to **escape characters** like ", ', and others properly.
384
+ > - For double quotes ("), use \\"
385
+ > - For single quotes ('), use \\'
386
+
359
387
  ![how-to-get-cookie](https://github.com/tak-bro/aicommit2/assets/7614353/66f2994d-23d9-4c88-a113-f2d3dc5c0669)
360
388
 
361
- > This picture is an example of the Huggingface Chat.
362
-
389
+ ![how-to-get-clova-x-cookie](https://github.com/tak-bro/aicommit2/assets/7614353/dd2202d6-ca1a-4a8a-ba2f-b5703a19c71d)
390
+
363
391
  ## Disclaimer
364
392
 
365
393
  This project utilizes certain functionalities or data from external APIs, but it is important to note that it is not officially affiliated with or endorsed by the providers of those APIs. The use of external APIs is at the sole discretion and risk of the user.
package/dist/cli.mjs CHANGED
@@ -1,76 +1,77 @@
1
1
  #!/usr/bin/env node
2
- import Be from"tty";import{createRequire as ar}from"module";import{Buffer as Dr}from"node:buffer";import L from"node:path";import Ot from"node:child_process";import _ from"node:process";import cr from"child_process";import j from"path";import Ae from"fs";import lr from"node:url";import fr,{constants as St}from"node:os";import It from"assert";import Pt from"events";import dr from"buffer";import $e from"stream";import Tt from"util";import xe from"inquirer";import Oe from"ora";import g from"chalk";import{of as Se,concatMap as Ie,from as oe,map as se,catchError as Pe,mergeMap as pr,BehaviorSubject as _t,ReplaySubject as mr,lastValueFrom as hr,filter as Cr,toArray as gr}from"rxjs";import"web-streams-polyfill";import{FormData as Fr,Blob as Er}from"formdata-node";import{fromPromise as Te}from"rxjs/internal/observable/innerFrom";import x from"fs/promises";import Mt from"os";import yr from"https";import"@dqbd/tiktoken";import wr from"net";import br from"tls";import vr,{fileURLToPath as Br,pathToFileURL as Ar}from"url";import $r from"axios";import ie from"readline";import xr from"figlet";import Or from"inquirer-reactive-list-prompt";const Sr="known-flag",Ir="unknown-flag",Pr="argument",{stringify:Y}=JSON,Tr=/\B([A-Z])/g,_r=e=>e.replace(Tr,"-$1").toLowerCase(),{hasOwnProperty:Mr}=Object.prototype,X=(e,t)=>Mr.call(e,t),Rr=e=>Array.isArray(e),Rt=e=>typeof e=="function"?[e,!1]:Rr(e)?[e[0],!0]:Rt(e.type),Nr=(e,t)=>e===Boolean?t!=="false":t,kr=(e,t)=>typeof t=="boolean"?t:e===Number&&t===""?Number.NaN:e(t),Lr=/[\s.:=]/,jr=e=>{const t=`Flag name ${Y(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(Lr);if(r)throw new Error(`${t} cannot contain ${Y(r?.[0])}`)},Gr=e=>{const t={},r=(n,u)=>{if(X(t,n))throw new Error(`Duplicate flags named ${Y(n)}`);t[n]=u};for(const n in e){if(!X(e,n))continue;jr(n);const u=e[n],o=[[],...Rt(u),u];r(n,o);const s=_r(n);if(n!==s&&r(s,o),"alias"in u&&typeof u.alias=="string"){const{alias:a}=u,i=`Flag alias ${Y(a)} for flag ${Y(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},Ur=(e,t)=>{const r={};for(const n in e){if(!X(e,n))continue;const[u,,o,s]=t[n];if(u.length===0&&"default"in s){let{default:a}=s;typeof a=="function"&&(a=a()),r[n]=a}else r[n]=o?u:u.pop()}return r},ae="--",Hr=/[.:=]/,qr=/^-{1,2}\w/,Kr=e=>{if(!qr.test(e))return;const t=!e.startsWith(ae);let r=e.slice(t?1:2),n;const u=r.match(Hr);if(u){const{index:o}=u;n=r.slice(o+1),r=r.slice(0,o)}return[r,n,t]},zr=(e,{onFlag:t,onArgument:r})=>{let n;const u=(o,s)=>{if(typeof n!="function")return!0;n(o,s),n=void 0};for(let o=0;o<e.length;o+=1){const s=e[o];if(s===ae){u();const i=e.slice(o+1);r?.(i,[o],!0);break}const a=Kr(s);if(a){if(u(),!t)continue;const[i,f,l]=a;if(l)for(let c=0;c<i.length;c+=1){u();const D=c===i.length-1;n=t(i[c],D?f:void 0,[o,c+1,D])}else n=t(i,f,[o])}else u(s,[o])&&r?.([s],[o])}u()},Wr=(e,t)=>{for(const[r,n,u]of t.reverse()){if(n){const o=e[r];let s=o.slice(0,n);if(u||(s+=o.slice(n+1)),s!=="-"){e[r]=s;continue}}e.splice(r,1)}},Vr=(e,t=process.argv.slice(2),{ignore:r}={})=>{const n=[],u=Gr(e),o={},s=[];return s[ae]=[],zr(t,{onFlag(a,i,f){const l=X(u,a);if(!r?.(l?Sr:Ir,a,i)){if(l){const[c,D]=u[a],d=Nr(D,i),p=(m,h)=>{n.push(f),h&&n.push(h),c.push(kr(D,m||""))};return d===void 0?p:p(d)}X(o,a)||(o[a]=[]),o[a].push(i===void 0?!0:i),n.push(f)}},onArgument(a,i,f){r?.(Pr,t[i[0]])||(s.push(...a),f?(s[ae]=a,t.splice(i[0])):n.push(i))}}),Wr(t,n),{flags:Ur(e,u),unknownFlags:o,_:s}};var Yr=Object.create,De=Object.defineProperty,Xr=Object.defineProperties,Jr=Object.getOwnPropertyDescriptor,Zr=Object.getOwnPropertyDescriptors,Qr=Object.getOwnPropertyNames,Nt=Object.getOwnPropertySymbols,eu=Object.getPrototypeOf,kt=Object.prototype.hasOwnProperty,tu=Object.prototype.propertyIsEnumerable,Lt=(e,t,r)=>t in e?De(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,ce=(e,t)=>{for(var r in t||(t={}))kt.call(t,r)&&Lt(e,r,t[r]);if(Nt)for(var r of Nt(t))tu.call(t,r)&&Lt(e,r,t[r]);return e},_e=(e,t)=>Xr(e,Zr(t)),nu=e=>De(e,"__esModule",{value:!0}),ru=(e,t)=>()=>(e&&(t=e(e=0)),t),uu=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),ou=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let u of Qr(t))!kt.call(e,u)&&(r||u!=="default")&&De(e,u,{get:()=>t[u],enumerable:!(n=Jr(t,u))||n.enumerable});return e},su=(e,t)=>ou(nu(De(e!=null?Yr(eu(e)):{},"default",!t&&e&&e.__esModule?{get:()=>e.default,enumerable:!0}:{value:e,enumerable:!0})),e),A=ru(()=>{}),iu=uu((e,t)=>{A(),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}});A(),A(),A();var au=e=>{var t,r,n;let u=(t=process.stdout.columns)!=null?t:Number.POSITIVE_INFINITY;return typeof e=="function"&&(e=e(u)),e||(e={}),Array.isArray(e)?{columns:e,stdoutColumns:u}:{columns:(r=e.columns)!=null?r:[],stdoutColumns:(n=e.stdoutColumns)!=null?n:u}};A(),A(),A(),A(),A();function Du({onlyFirst:e=!1}={}){let t=["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)","(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))"].join("|");return new RegExp(t,e?void 0:"g")}function jt(e){if(typeof e!="string")throw new TypeError(`Expected a \`string\`, got \`${typeof e}\``);return e.replace(Du(),"")}A();function cu(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 lu=su(iu(),1);function M(e){if(typeof e!="string"||e.length===0||(e=jt(e),e.length===0))return 0;e=e.replace((0,lu.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+=cu(n)?2:1)}return t}var Gt=e=>Math.max(...e.split(`
3
- `).map(M)),fu=e=>{let t=[];for(let r of e){let{length:n}=r,u=n-t.length;for(let o=0;o<u;o+=1)t.push(0);for(let o=0;o<n;o+=1){let s=Gt(r[o]);s>t[o]&&(t[o]=s)}}return t};A();var Ut=/^\d+%$/,Ht={width:"auto",align:"left",contentWidth:0,paddingLeft:0,paddingRight:0,paddingTop:0,paddingBottom:0,horizontalPadding:0,paddingLeftString:"",paddingRightString:""},du=(e,t)=>{var r;let n=[];for(let u=0;u<e.length;u+=1){let o=(r=t[u])!=null?r:"auto";if(typeof o=="number"||o==="auto"||o==="content-width"||typeof o=="string"&&Ut.test(o)){n.push(_e(ce({},Ht),{width:o,contentWidth:e[u]}));continue}if(o&&typeof o=="object"){let s=_e(ce(ce({},Ht),o),{contentWidth:e[u]});s.horizontalPadding=s.paddingLeft+s.paddingRight,n.push(s);continue}throw new Error(`Invalid column width: ${JSON.stringify(o)}`)}return n};function pu(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"&&Ut.test(n)){let i=Number.parseFloat(n.slice(0,-1))/100;r.width=Math.floor(t*i)-(r.paddingLeft+r.paddingRight)}let{horizontalPadding:u}=r,o=1,s=o+u;if(s>=t){let i=s-t,f=Math.ceil(r.paddingLeft/u*i),l=i-f;r.paddingLeft-=f,r.paddingRight-=l,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 mu(e,t){let r=[qt()],[n]=r;for(let u of e){let o=u.width+u.horizontalPadding;n.columns+o>t&&(n=qt(),r.push(n)),n.push(u),n.columns+=o}for(let u of r){let o=u.reduce((D,d)=>D+d.width+d.horizontalPadding,0),s=t-o;if(s===0)continue;let a=u.filter(D=>"autoOverflow"in D),i=a.filter(D=>D.autoOverflow>0),f=i.reduce((D,d)=>D+d.autoOverflow,0),l=Math.min(f,s);for(let D of i){let d=Math.floor(D.autoOverflow/f*l);D.width+=d,s-=d}let c=Math.floor(s/a.length);for(let D=0;D<a.length;D+=1){let d=a[D];D===a.length-1?d.width+=s:d.width+=c,s-=c}}return r}function hu(e,t,r){let n=du(r,t);return pu(n,e),mu(n,e)}A(),A(),A();var Me=10,Kt=(e=0)=>t=>`\x1B[${t+e}m`,zt=(e=0)=>t=>`\x1B[${38+e};5;${t}m`,Wt=(e=0)=>(t,r,n)=>`\x1B[${38+e};2;${t};${r};${n}m`;function Cu(){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[u,o]of Object.entries(n))t[u]={open:`\x1B[${o[0]}m`,close:`\x1B[${o[1]}m`},n[u]=t[u],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=Kt(),t.color.ansi256=zt(),t.color.ansi16m=Wt(),t.bgColor.ansi=Kt(Me),t.bgColor.ansi256=zt(Me),t.bgColor.ansi16m=Wt(Me),Object.defineProperties(t,{rgbToAnsi256:{value:(r,n,u)=>r===n&&n===u?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(u/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:u}=n.groups;u.length===3&&(u=u.split("").map(s=>s+s).join(""));let o=Number.parseInt(u,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,u,o;if(r>=232)n=((r-232)*10+8)/255,u=n,o=n;else{r-=16;let i=r%36;n=Math.floor(r/36)/5,u=Math.floor(i/6)/5,o=i%6/5}let s=Math.max(n,u,o)*2;if(s===0)return 30;let a=30+(Math.round(o)<<2|Math.round(u)<<1|Math.round(n));return s===2&&(a+=60),a},enumerable:!1},rgbToAnsi:{value:(r,n,u)=>t.ansi256ToAnsi(t.rgbToAnsi256(r,n,u)),enumerable:!1},hexToAnsi:{value:r=>t.ansi256ToAnsi(t.hexToAnsi256(r)),enumerable:!1}}),t}var gu=Cu(),Fu=gu,le=new Set(["\x1B","\x9B"]),Eu=39,Re="\x07",Vt="[",yu="]",Yt="m",Ne=`${yu}8;;`,Xt=e=>`${le.values().next().value}${Vt}${e}${Yt}`,Jt=e=>`${le.values().next().value}${Ne}${e}${Re}`,wu=e=>e.split(" ").map(t=>M(t)),ke=(e,t,r)=>{let n=[...t],u=!1,o=!1,s=M(jt(e[e.length-1]));for(let[a,i]of n.entries()){let f=M(i);if(s+f<=r?e[e.length-1]+=i:(e.push(i),s=0),le.has(i)&&(u=!0,o=n.slice(a+1).join("").startsWith(Ne)),u){o?i===Re&&(u=!1,o=!1):i===Yt&&(u=!1);continue}s+=f,s===r&&a<n.length-1&&(e.push(""),s=0)}!s&&e[e.length-1].length>0&&e.length>1&&(e[e.length-2]+=e.pop())},bu=e=>{let t=e.split(" "),r=t.length;for(;r>0&&!(M(t[r-1])>0);)r--;return r===t.length?e:t.slice(0,r).join(" ")+t.slice(r).join("")},vu=(e,t,r={})=>{if(r.trim!==!1&&e.trim()==="")return"";let n="",u,o,s=wu(e),a=[""];for(let[f,l]of e.split(" ").entries()){r.trim!==!1&&(a[a.length-1]=a[a.length-1].trimStart());let c=M(a[a.length-1]);if(f!==0&&(c>=t&&(r.wordWrap===!1||r.trim===!1)&&(a.push(""),c=0),(c>0||r.trim===!1)&&(a[a.length-1]+=" ",c++)),r.hard&&s[f]>t){let D=t-c,d=1+Math.floor((s[f]-D-1)/t);Math.floor((s[f]-1)/t)<d&&a.push(""),ke(a,l,t);continue}if(c+s[f]>t&&c>0&&s[f]>0){if(r.wordWrap===!1&&c<t){ke(a,l,t);continue}a.push("")}if(c+s[f]>t&&r.wordWrap===!1){ke(a,l,t);continue}a[a.length-1]+=l}r.trim!==!1&&(a=a.map(f=>bu(f)));let i=[...a.join(`
4
- `)];for(let[f,l]of i.entries()){if(n+=l,le.has(l)){let{groups:D}=new RegExp(`(?:\\${Vt}(?<code>\\d+)m|\\${Ne}(?<uri>.*)${Re})`).exec(i.slice(f).join(""))||{groups:{}};if(D.code!==void 0){let d=Number.parseFloat(D.code);u=d===Eu?void 0:d}else D.uri!==void 0&&(o=D.uri.length===0?void 0:D.uri)}let c=Fu.codes.get(Number(u));i[f+1]===`
5
- `?(o&&(n+=Jt("")),u&&c&&(n+=Xt(c))):l===`
6
- `&&(u&&c&&(n+=Xt(u)),o&&(n+=Jt(o)))}return n};function Bu(e,t,r){return String(e).normalize().replace(/\r\n/g,`
2
+ import Pe from"tty";import{createRequire as Dr}from"module";import{Buffer as cr}from"node:buffer";import L from"node:path";import St from"node:child_process";import _ from"node:process";import lr from"child_process";import j from"path";import Te from"fs";import fr from"node:url";import dr,{constants as It}from"node:os";import Pt from"assert";import Tt from"events";import pr from"buffer";import _e from"stream";import _t from"util";import Me from"inquirer";import Ne from"ora";import C from"chalk";import{of as ae,concatMap as De,from as Y,map as X,catchError as ce,mergeMap as mr,BehaviorSubject as Mt,ReplaySubject as hr,lastValueFrom as Cr,filter as gr,toArray as Fr}from"rxjs";import Re from"@anthropic-ai/sdk";import{fromPromise as le}from"rxjs/internal/observable/innerFrom";import Er from"https";import"@dqbd/tiktoken";import yr from"net";import wr from"tls";import br,{fileURLToPath as vr,pathToFileURL as Ar}from"url";import Nt from"os";import"web-streams-polyfill";import{FormData as Br,Blob as $r}from"formdata-node";import x from"fs/promises";import xr from"axios";import fe from"readline";import Or from"figlet";import Sr from"inquirer-reactive-list-prompt";const Ir="known-flag",Pr="unknown-flag",Tr="argument",{stringify:J}=JSON,_r=/\B([A-Z])/g,Mr=e=>e.replace(_r,"-$1").toLowerCase(),{hasOwnProperty:Nr}=Object.prototype,Z=(e,t)=>Nr.call(e,t),Rr=e=>Array.isArray(e),Rt=e=>typeof e=="function"?[e,!1]:Rr(e)?[e[0],!0]:Rt(e.type),kr=(e,t)=>e===Boolean?t!=="false":t,Lr=(e,t)=>typeof t=="boolean"?t:e===Number&&t===""?Number.NaN:e(t),jr=/[\s.:=]/,Gr=e=>{const t=`Flag name ${J(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 n=e.match(jr);if(n)throw new Error(`${t} cannot contain ${J(n?.[0])}`)},Hr=e=>{const t={},n=(r,u)=>{if(Z(t,r))throw new Error(`Duplicate flags named ${J(r)}`);t[r]=u};for(const r in e){if(!Z(e,r))continue;Gr(r);const u=e[r],o=[[],...Rt(u),u];n(r,o);const s=Mr(r);if(r!==s&&n(s,o),"alias"in u&&typeof u.alias=="string"){const{alias:a}=u,i=`Flag alias ${J(a)} for flag ${J(r)}`;if(a.length===0)throw new Error(`${i} cannot be empty`);if(a.length>1)throw new Error(`${i} must be a single character`);n(a,o)}}return t},Ur=(e,t)=>{const n={};for(const r in e){if(!Z(e,r))continue;const[u,,o,s]=t[r];if(u.length===0&&"default"in s){let{default:a}=s;typeof a=="function"&&(a=a()),n[r]=a}else n[r]=o?u:u.pop()}return n},de="--",qr=/[.:=]/,Kr=/^-{1,2}\w/,zr=e=>{if(!Kr.test(e))return;const t=!e.startsWith(de);let n=e.slice(t?1:2),r;const u=n.match(qr);if(u){const{index:o}=u;r=n.slice(o+1),n=n.slice(0,o)}return[n,r,t]},Wr=(e,{onFlag:t,onArgument:n})=>{let r;const u=(o,s)=>{if(typeof r!="function")return!0;r(o,s),r=void 0};for(let o=0;o<e.length;o+=1){const s=e[o];if(s===de){u();const i=e.slice(o+1);n?.(i,[o],!0);break}const a=zr(s);if(a){if(u(),!t)continue;const[i,f,l]=a;if(l)for(let c=0;c<i.length;c+=1){u();const D=c===i.length-1;r=t(i[c],D?f:void 0,[o,c+1,D])}else r=t(i,f,[o])}else u(s,[o])&&n?.([s],[o])}u()},Vr=(e,t)=>{for(const[n,r,u]of t.reverse()){if(r){const o=e[n];let s=o.slice(0,r);if(u||(s+=o.slice(r+1)),s!=="-"){e[n]=s;continue}}e.splice(n,1)}},Yr=(e,t=process.argv.slice(2),{ignore:n}={})=>{const r=[],u=Hr(e),o={},s=[];return s[de]=[],Wr(t,{onFlag(a,i,f){const l=Z(u,a);if(!n?.(l?Ir:Pr,a,i)){if(l){const[c,D]=u[a],d=kr(D,i),p=(m,h)=>{r.push(f),h&&r.push(h),c.push(Lr(D,m||""))};return d===void 0?p:p(d)}Z(o,a)||(o[a]=[]),o[a].push(i===void 0?!0:i),r.push(f)}},onArgument(a,i,f){n?.(Tr,t[i[0]])||(s.push(...a),f?(s[de]=a,t.splice(i[0])):r.push(i))}}),Vr(t,r),{flags:Ur(e,u),unknownFlags:o,_:s}};var Xr=Object.create,pe=Object.defineProperty,Jr=Object.defineProperties,Zr=Object.getOwnPropertyDescriptor,Qr=Object.getOwnPropertyDescriptors,eu=Object.getOwnPropertyNames,kt=Object.getOwnPropertySymbols,tu=Object.getPrototypeOf,Lt=Object.prototype.hasOwnProperty,nu=Object.prototype.propertyIsEnumerable,jt=(e,t,n)=>t in e?pe(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,me=(e,t)=>{for(var n in t||(t={}))Lt.call(t,n)&&jt(e,n,t[n]);if(kt)for(var n of kt(t))nu.call(t,n)&&jt(e,n,t[n]);return e},ke=(e,t)=>Jr(e,Qr(t)),ru=e=>pe(e,"__esModule",{value:!0}),uu=(e,t)=>()=>(e&&(t=e(e=0)),t),ou=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),su=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let u of eu(t))!Lt.call(e,u)&&(n||u!=="default")&&pe(e,u,{get:()=>t[u],enumerable:!(r=Zr(t,u))||r.enumerable});return e},iu=(e,t)=>su(ru(pe(e!=null?Xr(tu(e)):{},"default",!t&&e&&e.__esModule?{get:()=>e.default,enumerable:!0}:{value:e,enumerable:!0})),e),B=uu(()=>{}),au=ou((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 Du=e=>{var t,n,r;let u=(t=process.stdout.columns)!=null?t:Number.POSITIVE_INFINITY;return typeof e=="function"&&(e=e(u)),e||(e={}),Array.isArray(e)?{columns:e,stdoutColumns:u}:{columns:(n=e.columns)!=null?n:[],stdoutColumns:(r=e.stdoutColumns)!=null?r:u}};B(),B(),B(),B(),B();function cu({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 Gt(e){if(typeof e!="string")throw new TypeError(`Expected a \`string\`, got \`${typeof e}\``);return e.replace(cu(),"")}B();function lu(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 fu=iu(au(),1);function M(e){if(typeof e!="string"||e.length===0||(e=Gt(e),e.length===0))return 0;e=e.replace((0,fu.default)()," ");let t=0;for(let n=0;n<e.length;n++){let r=e.codePointAt(n);r<=31||r>=127&&r<=159||r>=768&&r<=879||(r>65535&&n++,t+=lu(r)?2:1)}return t}var Ht=e=>Math.max(...e.split(`
3
+ `).map(M)),du=e=>{let t=[];for(let n of e){let{length:r}=n,u=r-t.length;for(let o=0;o<u;o+=1)t.push(0);for(let o=0;o<r;o+=1){let s=Ht(n[o]);s>t[o]&&(t[o]=s)}}return t};B();var Ut=/^\d+%$/,qt={width:"auto",align:"left",contentWidth:0,paddingLeft:0,paddingRight:0,paddingTop:0,paddingBottom:0,horizontalPadding:0,paddingLeftString:"",paddingRightString:""},pu=(e,t)=>{var n;let r=[];for(let u=0;u<e.length;u+=1){let o=(n=t[u])!=null?n:"auto";if(typeof o=="number"||o==="auto"||o==="content-width"||typeof o=="string"&&Ut.test(o)){r.push(ke(me({},qt),{width:o,contentWidth:e[u]}));continue}if(o&&typeof o=="object"){let s=ke(me(me({},qt),o),{contentWidth:e[u]});s.horizontalPadding=s.paddingLeft+s.paddingRight,r.push(s);continue}throw new Error(`Invalid column width: ${JSON.stringify(o)}`)}return r};function mu(e,t){for(let n of e){let{width:r}=n;if(r==="content-width"&&(n.width=n.contentWidth),r==="auto"){let i=Math.min(20,n.contentWidth);n.width=i,n.autoOverflow=n.contentWidth-i}if(typeof r=="string"&&Ut.test(r)){let i=Number.parseFloat(r.slice(0,-1))/100;n.width=Math.floor(t*i)-(n.paddingLeft+n.paddingRight)}let{horizontalPadding:u}=n,o=1,s=o+u;if(s>=t){let i=s-t,f=Math.ceil(n.paddingLeft/u*i),l=i-f;n.paddingLeft-=f,n.paddingRight-=l,n.horizontalPadding=n.paddingLeft+n.paddingRight}n.paddingLeftString=n.paddingLeft?" ".repeat(n.paddingLeft):"",n.paddingRightString=n.paddingRight?" ".repeat(n.paddingRight):"";let a=t-n.horizontalPadding;n.width=Math.max(Math.min(n.width,a),o)}}var Kt=()=>Object.assign([],{columns:0});function hu(e,t){let n=[Kt()],[r]=n;for(let u of e){let o=u.width+u.horizontalPadding;r.columns+o>t&&(r=Kt(),n.push(r)),r.push(u),r.columns+=o}for(let u of n){let o=u.reduce((D,d)=>D+d.width+d.horizontalPadding,0),s=t-o;if(s===0)continue;let a=u.filter(D=>"autoOverflow"in D),i=a.filter(D=>D.autoOverflow>0),f=i.reduce((D,d)=>D+d.autoOverflow,0),l=Math.min(f,s);for(let D of i){let d=Math.floor(D.autoOverflow/f*l);D.width+=d,s-=d}let c=Math.floor(s/a.length);for(let D=0;D<a.length;D+=1){let d=a[D];D===a.length-1?d.width+=s:d.width+=c,s-=c}}return n}function Cu(e,t,n){let r=pu(n,t);return mu(r,e),hu(r,e)}B(),B(),B();var Le=10,zt=(e=0)=>t=>`\x1B[${t+e}m`,Wt=(e=0)=>t=>`\x1B[${38+e};5;${t}m`,Vt=(e=0)=>(t,n,r)=>`\x1B[${38+e};2;${t};${n};${r}m`;function gu(){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[n,r]of Object.entries(t)){for(let[u,o]of Object.entries(r))t[u]={open:`\x1B[${o[0]}m`,close:`\x1B[${o[1]}m`},r[u]=t[u],e.set(o[0],o[1]);Object.defineProperty(t,n,{value:r,enumerable:!1})}return Object.defineProperty(t,"codes",{value:e,enumerable:!1}),t.color.close="\x1B[39m",t.bgColor.close="\x1B[49m",t.color.ansi=zt(),t.color.ansi256=Wt(),t.color.ansi16m=Vt(),t.bgColor.ansi=zt(Le),t.bgColor.ansi256=Wt(Le),t.bgColor.ansi16m=Vt(Le),Object.defineProperties(t,{rgbToAnsi256:{value:(n,r,u)=>n===r&&r===u?n<8?16:n>248?231:Math.round((n-8)/247*24)+232:16+36*Math.round(n/255*5)+6*Math.round(r/255*5)+Math.round(u/255*5),enumerable:!1},hexToRgb:{value:n=>{let r=/(?<colorString>[a-f\d]{6}|[a-f\d]{3})/i.exec(n.toString(16));if(!r)return[0,0,0];let{colorString:u}=r.groups;u.length===3&&(u=u.split("").map(s=>s+s).join(""));let o=Number.parseInt(u,16);return[o>>16&255,o>>8&255,o&255]},enumerable:!1},hexToAnsi256:{value:n=>t.rgbToAnsi256(...t.hexToRgb(n)),enumerable:!1},ansi256ToAnsi:{value:n=>{if(n<8)return 30+n;if(n<16)return 90+(n-8);let r,u,o;if(n>=232)r=((n-232)*10+8)/255,u=r,o=r;else{n-=16;let i=n%36;r=Math.floor(n/36)/5,u=Math.floor(i/6)/5,o=i%6/5}let s=Math.max(r,u,o)*2;if(s===0)return 30;let a=30+(Math.round(o)<<2|Math.round(u)<<1|Math.round(r));return s===2&&(a+=60),a},enumerable:!1},rgbToAnsi:{value:(n,r,u)=>t.ansi256ToAnsi(t.rgbToAnsi256(n,r,u)),enumerable:!1},hexToAnsi:{value:n=>t.ansi256ToAnsi(t.hexToAnsi256(n)),enumerable:!1}}),t}var Fu=gu(),Eu=Fu,he=new Set(["\x1B","\x9B"]),yu=39,je="\x07",Yt="[",wu="]",Xt="m",Ge=`${wu}8;;`,Jt=e=>`${he.values().next().value}${Yt}${e}${Xt}`,Zt=e=>`${he.values().next().value}${Ge}${e}${je}`,bu=e=>e.split(" ").map(t=>M(t)),He=(e,t,n)=>{let r=[...t],u=!1,o=!1,s=M(Gt(e[e.length-1]));for(let[a,i]of r.entries()){let f=M(i);if(s+f<=n?e[e.length-1]+=i:(e.push(i),s=0),he.has(i)&&(u=!0,o=r.slice(a+1).join("").startsWith(Ge)),u){o?i===je&&(u=!1,o=!1):i===Xt&&(u=!1);continue}s+=f,s===n&&a<r.length-1&&(e.push(""),s=0)}!s&&e[e.length-1].length>0&&e.length>1&&(e[e.length-2]+=e.pop())},vu=e=>{let t=e.split(" "),n=t.length;for(;n>0&&!(M(t[n-1])>0);)n--;return n===t.length?e:t.slice(0,n).join(" ")+t.slice(n).join("")},Au=(e,t,n={})=>{if(n.trim!==!1&&e.trim()==="")return"";let r="",u,o,s=bu(e),a=[""];for(let[f,l]of e.split(" ").entries()){n.trim!==!1&&(a[a.length-1]=a[a.length-1].trimStart());let c=M(a[a.length-1]);if(f!==0&&(c>=t&&(n.wordWrap===!1||n.trim===!1)&&(a.push(""),c=0),(c>0||n.trim===!1)&&(a[a.length-1]+=" ",c++)),n.hard&&s[f]>t){let D=t-c,d=1+Math.floor((s[f]-D-1)/t);Math.floor((s[f]-1)/t)<d&&a.push(""),He(a,l,t);continue}if(c+s[f]>t&&c>0&&s[f]>0){if(n.wordWrap===!1&&c<t){He(a,l,t);continue}a.push("")}if(c+s[f]>t&&n.wordWrap===!1){He(a,l,t);continue}a[a.length-1]+=l}n.trim!==!1&&(a=a.map(f=>vu(f)));let i=[...a.join(`
4
+ `)];for(let[f,l]of i.entries()){if(r+=l,he.has(l)){let{groups:D}=new RegExp(`(?:\\${Yt}(?<code>\\d+)m|\\${Ge}(?<uri>.*)${je})`).exec(i.slice(f).join(""))||{groups:{}};if(D.code!==void 0){let d=Number.parseFloat(D.code);u=d===yu?void 0:d}else D.uri!==void 0&&(o=D.uri.length===0?void 0:D.uri)}let c=Eu.codes.get(Number(u));i[f+1]===`
5
+ `?(o&&(r+=Zt("")),u&&c&&(r+=Jt(c))):l===`
6
+ `&&(u&&c&&(r+=Jt(u)),o&&(r+=Zt(o)))}return r};function Bu(e,t,n){return String(e).normalize().replace(/\r\n/g,`
7
7
  `).split(`
8
- `).map(n=>vu(n,t,r)).join(`
9
- `)}var Zt=e=>Array.from({length:e}).fill("");function Au(e,t){let r=[],n=0;for(let u of e){let o=0,s=u.map(i=>{var f;let l=(f=t[n])!=null?f:"";n+=1,i.preprocess&&(l=i.preprocess(l)),Gt(l)>i.width&&(l=Bu(l,i.width,{hard:!0}));let c=l.split(`
10
- `);if(i.postprocess){let{postprocess:D}=i;c=c.map((d,p)=>D.call(i,d,p))}return i.paddingTop&&c.unshift(...Zt(i.paddingTop)),i.paddingBottom&&c.push(...Zt(i.paddingBottom)),c.length>o&&(o=c.length),_e(ce({},i),{lines:c})}),a=[];for(let i=0;i<o;i+=1){let f=s.map(l=>{var c;let D=(c=l.lines[i])!=null?c:"",d=Number.isFinite(l.width)?" ".repeat(l.width-M(D)):"",p=l.paddingLeftString;return l.align==="right"&&(p+=d),p+=D,l.align==="left"&&(p+=d),p+l.paddingRightString}).join("");a.push(f)}r.push(a.join(`
11
- `))}return r.join(`
12
- `)}function $u(e,t){if(!e||e.length===0)return"";let r=fu(e),n=r.length;if(n===0)return"";let{stdoutColumns:u,columns:o}=au(t);if(o.length>n)throw new Error(`${o.length} columns defined, but only ${n} columns found`);let s=hu(u,o,r);return e.map(a=>Au(s,a)).join(`
13
- `)}A();var xu=["<",">","=",">=","<="];function Ou(e){if(!xu.includes(e))throw new TypeError(`Invalid breakpoint operator: ${e}`)}function Su(e){let t=Object.keys(e).map(r=>{let[n,u]=r.split(" ");Ou(n);let o=Number.parseInt(u,10);if(Number.isNaN(o))throw new TypeError(`Invalid breakpoint value: ${u}`);let s=e[r];return{operator:n,breakpoint:o,value:s}}).sort((r,n)=>n.breakpoint-r.breakpoint);return r=>{var n;return(n=t.find(({operator:u,breakpoint:o})=>u==="="&&r===o||u===">"&&r>o||u==="<"&&r<o||u===">="&&r>=o||u==="<="&&r<=o))==null?void 0:n.value}}const Iu=e=>e.replace(/[\W_]([a-z\d])?/gi,(t,r)=>r?r.toUpperCase():""),Pu=e=>e.replace(/\B([A-Z])/g,"-$1").toLowerCase(),Tu={"> 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 _u(e){let t=!1;return{type:"table",data:{tableData:Object.keys(e).sort((r,n)=>r.localeCompare(n)).map(r=>{const n=e[r],u="alias"in n;return u&&(t=!0),{name:r,flag:n,flagFormatted:`--${Pu(r)}`,aliasesEnabled:t,aliasFormatted:u?`-${n.alias}`:void 0}}).map(r=>(r.aliasesEnabled=t,[{type:"flagName",data:r},{type:"flagDescription",data:r}])),tableBreakpoints:Tu}}}const Qt=e=>!e||(e.version??(e.help?e.help.version:void 0)),en=e=>{const t="parent"in e&&e.parent?.name;return(t?`${t} `:"")+e.name};function Mu(e){const t=[];e.name&&t.push(en(e));const r=Qt(e)??("parent"in e&&Qt(e.parent));if(r&&t.push(`v${r}`),t.length!==0)return{id:"name",type:"text",data:`${t.join(" ")}
8
+ `).map(r=>Au(r,t,n)).join(`
9
+ `)}var Qt=e=>Array.from({length:e}).fill("");function $u(e,t){let n=[],r=0;for(let u of e){let o=0,s=u.map(i=>{var f;let l=(f=t[r])!=null?f:"";r+=1,i.preprocess&&(l=i.preprocess(l)),Ht(l)>i.width&&(l=Bu(l,i.width,{hard:!0}));let c=l.split(`
10
+ `);if(i.postprocess){let{postprocess:D}=i;c=c.map((d,p)=>D.call(i,d,p))}return i.paddingTop&&c.unshift(...Qt(i.paddingTop)),i.paddingBottom&&c.push(...Qt(i.paddingBottom)),c.length>o&&(o=c.length),ke(me({},i),{lines:c})}),a=[];for(let i=0;i<o;i+=1){let f=s.map(l=>{var c;let D=(c=l.lines[i])!=null?c:"",d=Number.isFinite(l.width)?" ".repeat(l.width-M(D)):"",p=l.paddingLeftString;return l.align==="right"&&(p+=d),p+=D,l.align==="left"&&(p+=d),p+l.paddingRightString}).join("");a.push(f)}n.push(a.join(`
11
+ `))}return n.join(`
12
+ `)}function xu(e,t){if(!e||e.length===0)return"";let n=du(e),r=n.length;if(r===0)return"";let{stdoutColumns:u,columns:o}=Du(t);if(o.length>r)throw new Error(`${o.length} columns defined, but only ${r} columns found`);let s=Cu(u,o,n);return e.map(a=>$u(s,a)).join(`
13
+ `)}B();var Ou=["<",">","=",">=","<="];function Su(e){if(!Ou.includes(e))throw new TypeError(`Invalid breakpoint operator: ${e}`)}function Iu(e){let t=Object.keys(e).map(n=>{let[r,u]=n.split(" ");Su(r);let o=Number.parseInt(u,10);if(Number.isNaN(o))throw new TypeError(`Invalid breakpoint value: ${u}`);let s=e[n];return{operator:r,breakpoint:o,value:s}}).sort((n,r)=>r.breakpoint-n.breakpoint);return n=>{var r;return(r=t.find(({operator:u,breakpoint:o})=>u==="="&&n===o||u===">"&&n>o||u==="<"&&n<o||u===">="&&n>=o||u==="<="&&n<=o))==null?void 0:r.value}}const Pu=e=>e.replace(/[\W_]([a-z\d])?/gi,(t,n)=>n?n.toUpperCase():""),Tu=e=>e.replace(/\B([A-Z])/g,"-$1").toLowerCase(),_u={"> 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 Mu(e){let t=!1;return{type:"table",data:{tableData:Object.keys(e).sort((n,r)=>n.localeCompare(r)).map(n=>{const r=e[n],u="alias"in r;return u&&(t=!0),{name:n,flag:r,flagFormatted:`--${Tu(n)}`,aliasesEnabled:t,aliasFormatted:u?`-${r.alias}`:void 0}}).map(n=>(n.aliasesEnabled=t,[{type:"flagName",data:n},{type:"flagDescription",data:n}])),tableBreakpoints:_u}}}const en=e=>!e||(e.version??(e.help?e.help.version:void 0)),tn=e=>{const t="parent"in e&&e.parent?.name;return(t?`${t} `:"")+e.name};function Nu(e){const t=[];e.name&&t.push(tn(e));const n=en(e)??("parent"in e&&en(e.parent));if(n&&t.push(`v${n}`),t.length!==0)return{id:"name",type:"text",data:`${t.join(" ")}
14
14
  `}}function Ru(e){const{help:t}=e;if(!(!t||!t.description))return{id:"description",type:"text",data:`${t.description}
15
- `}}function Nu(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=[en(e)];if(e.flags&&Object.keys(e.flags).length>0&&n.push("[flags...]"),e.parameters&&e.parameters.length>0){const{parameters:u}=e,o=u.indexOf("--"),s=o>-1&&u.slice(o+1).some(a=>a.startsWith("<"));n.push(u.map(a=>a!=="--"?a:s?"--":"[--]").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 ku(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 Lu(e){if(!(!e.flags||Object.keys(e.flags).length===0))return{id:"flags",type:"section",data:{title:"Flags:",body:_u(e.flags),indentBody:0}}}function ju(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 Gu(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 Uu=e=>[Mu,Ru,Nu,ku,Lu,ju,Gu].map(t=>t(e)).filter(Boolean),Hu=Be.WriteStream.prototype.hasColors();class qu{text(t){return t}bold(t){return Hu?`\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
- `:"")+(r?this.indentText({text:this.render(r),spaces:n}):"")}
20
- `}table({tableData:t,tableOptions:r,tableBreakpoints:n}){return $u(t.map(u=>u.map(o=>this.render(o))),n?Su(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:u,aliasFormatted:o}=t;let s="";if(o?s+=`${o}, `:u&&(s+=" "),s+=n,"placeholder"in r&&typeof r.placeholder=="string")s+=`${this.flagOperator(t)}${r.placeholder}`;else{const a=this.flagParameter("type"in r?r.type:r);a&&(s+=`${this.flagOperator(t)}${a}`)}return s}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 Le=/^[\w.-]+$/,{stringify:O}=JSON,Ku=/[|\\{}()[\]^$+*?.]/;function je(e){const t=[];let r,n;for(const u of e){if(n)throw new Error(`Invalid parameter: Spread parameter ${O(n)} must be last`);const o=u[0],s=u[u.length-1];let a;if(o==="<"&&s===">"&&(a=!0,r))throw new Error(`Invalid parameter: Required parameter ${O(u)} cannot come after optional parameter ${O(r)}`);if(o==="["&&s==="]"&&(a=!1,r=u),a===void 0)throw new Error(`Invalid parameter: ${O(u)}. Must be wrapped in <> (required parameter) or [] (optional parameter)`);let i=u.slice(1,-1);const f=i.slice(-3)==="...";f&&(n=u,i=i.slice(0,-3));const l=i.match(Ku);if(l)throw new Error(`Invalid parameter: ${O(u)}. Invalid character found ${O(l[0])}`);t.push({name:i,required:a,spread:f})}return t}function Ge(e,t,r,n){for(let u=0;u<t.length;u+=1){const{name:o,required:s,spread:a}=t[u],i=Iu(o);if(i in e)throw new Error(`Invalid parameter: ${O(o)} is used more than once.`);const f=a?r.slice(u):r[u];if(a&&(u=t.length),s&&(!f||a&&f.length===0))return console.error(`Error: Missing required parameter ${O(o)}
22
- `),n(),process.exit(1);e[i]=f}}function zu(e){return e===void 0||e!==!1}function tn(e,t,r,n){const u={...t.flags},o=t.version;o&&(u.version={type:Boolean,description:"Show version"});const{help:s}=t,a=zu(s);a&&!("help"in u)&&(u.help={type:Boolean,alias:"h",description:"Show help"});const i=Vr(u,n,{ignore:t.ignoreArgv}),f=()=>{console.log(t.version)};if(o&&i.flags.version===!0)return f(),process.exit(0);const l=new qu,c=a&&s?.render?s.render:p=>l.render(p),D=p=>{const m=Uu({...t,...p?{help:p}:{},flags:u});console.log(c(m,l))};if(a&&i.flags.help===!0)return D(),process.exit(0);if(t.parameters){let{parameters:p}=t,m=i._;const h=p.indexOf("--"),C=p.slice(h+1),E=Object.create(null);if(h>-1&&C.length>0){p=p.slice(0,h);const $=i._["--"];m=m.slice(0,-$.length||void 0),Ge(E,je(p),m,D),Ge(E,je(C),$,D)}else Ge(E,je(p),m,D);Object.assign(i._,E)}const d={...i,showVersion:f,showHelp:D};return typeof r=="function"&&r(d),{command:e,...d}}function Wu(e,t){const r=new Map;for(const n of t){const u=[n.options.name],{alias:o}=n.options;o&&(Array.isArray(o)?u.push(...o):u.push(o));for(const s of u){if(r.has(s))throw new Error(`Duplicate command name found: ${O(s)}`);r.set(s,n)}}return r.get(e)}function Vu(e,t,r=process.argv.slice(2)){if(!e)throw new Error("Options is required");if("name"in e&&(!e.name||!Le.test(e.name)))throw new Error(`Invalid script name: ${O(e.name)}`);const n=r[0];if(e.commands&&Le.test(n)){const u=Wu(n,e.commands);if(u)return tn(u.options.name,{...u.options,parent:e},u.callback,r.slice(1))}return tn(void 0,e,t,r)}function nn(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(!Le.test(r))throw new Error(`Invalid command name ${JSON.stringify(r)}. Command names must be one word.`);return{options:e,callback:t}}var Yu=ar(import.meta.url),y=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function G(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var U={exports:{}},Ue,rn;function Xu(){if(rn)return Ue;rn=1,Ue=n,n.sync=u;var e=Ae;function t(o,s){var a=s.pathExt!==void 0?s.pathExt:process.env.PATHEXT;if(!a||(a=a.split(";"),a.indexOf("")!==-1))return!0;for(var i=0;i<a.length;i++){var f=a[i].toLowerCase();if(f&&o.substr(-f.length).toLowerCase()===f)return!0}return!1}function r(o,s,a){return!o.isSymbolicLink()&&!o.isFile()?!1:t(s,a)}function n(o,s,a){e.stat(o,function(i,f){a(i,i?!1:r(f,o,s))})}function u(o,s){return r(e.statSync(o),o,s)}return Ue}var He,un;function Ju(){if(un)return He;un=1,He=t,t.sync=r;var e=Ae;function t(o,s,a){e.stat(o,function(i,f){a(i,i?!1:n(f,s))})}function r(o,s){return n(e.statSync(o),s)}function n(o,s){return o.isFile()&&u(o,s)}function u(o,s){var a=o.mode,i=o.uid,f=o.gid,l=s.uid!==void 0?s.uid:process.getuid&&process.getuid(),c=s.gid!==void 0?s.gid:process.getgid&&process.getgid(),D=parseInt("100",8),d=parseInt("010",8),p=parseInt("001",8),m=D|d,h=a&p||a&d&&f===c||a&D&&i===l||a&m&&l===0;return h}return He}var fe;process.platform==="win32"||y.TESTING_WINDOWS?fe=Xu():fe=Ju();var Zu=qe;qe.sync=Qu;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,u){qe(e,t||{},function(o,s){o?u(o):n(s)})})}fe(e,t||{},function(n,u){n&&(n.code==="EACCES"||t&&t.ignoreErrors)&&(n=null,u=!1),r(n,u)})}function Qu(e,t){try{return fe.sync(e,t||{})}catch(r){if(t&&t.ignoreErrors||r.code==="EACCES")return!1;throw r}}const H=process.platform==="win32"||process.env.OSTYPE==="cygwin"||process.env.OSTYPE==="msys",on=j,eo=H?";":":",sn=Zu,an=e=>Object.assign(new Error(`not found: ${e}`),{code:"ENOENT"}),Dn=(e,t)=>{const r=t.colon||eo,n=e.match(/\//)||H&&e.match(/\\/)?[""]:[...H?[process.cwd()]:[],...(t.path||process.env.PATH||"").split(r)],u=H?t.pathExt||process.env.PATHEXT||".EXE;.CMD;.BAT;.COM":"",o=H?u.split(r):[""];return H&&e.indexOf(".")!==-1&&o[0]!==""&&o.unshift(""),{pathEnv:n,pathExt:o,pathExtExe:u}},cn=(e,t,r)=>{typeof t=="function"&&(r=t,t={}),t||(t={});const{pathEnv:n,pathExt:u,pathExtExe:o}=Dn(e,t),s=[],a=f=>new Promise((l,c)=>{if(f===n.length)return t.all&&s.length?l(s):c(an(e));const D=n[f],d=/^".*"$/.test(D)?D.slice(1,-1):D,p=on.join(d,e),m=!d&&/^\.[\\\/]/.test(e)?e.slice(0,2)+p:p;l(i(m,f,0))}),i=(f,l,c)=>new Promise((D,d)=>{if(c===u.length)return D(a(l+1));const p=u[c];sn(f+p,{pathExt:o},(m,h)=>{if(!m&&h)if(t.all)s.push(f+p);else return D(f+p);return D(i(f,l,c+1))})});return r?a(0).then(f=>r(null,f),r):a(0)},to=(e,t)=>{t=t||{};const{pathEnv:r,pathExt:n,pathExtExe:u}=Dn(e,t),o=[];for(let s=0;s<r.length;s++){const a=r[s],i=/^".*"$/.test(a)?a.slice(1,-1):a,f=on.join(i,e),l=!i&&/^\.[\\\/]/.test(e)?e.slice(0,2)+f:f;for(let c=0;c<n.length;c++){const D=l+n[c];try{if(sn.sync(D,{pathExt:u}))if(t.all)o.push(D);else return D}catch{}}}if(t.all&&o.length)return o;if(t.nothrow)return null;throw an(e)};var no=cn;cn.sync=to;var Ke={exports:{}};const ln=(e={})=>{const t=e.env||process.env;return(e.platform||process.platform)!=="win32"?"PATH":Object.keys(t).reverse().find(n=>n.toUpperCase()==="PATH")||"Path"};Ke.exports=ln,Ke.exports.default=ln;var ro=Ke.exports;const fn=j,uo=no,oo=ro;function dn(e,t){const r=e.options.env||process.env,n=process.cwd(),u=e.options.cwd!=null,o=u&&process.chdir!==void 0&&!process.chdir.disabled;if(o)try{process.chdir(e.options.cwd)}catch{}let s;try{s=uo.sync(e.command,{path:r[oo({env:r})],pathExt:t?fn.delimiter:void 0})}catch{}finally{o&&process.chdir(n)}return s&&(s=fn.resolve(u?e.options.cwd:"",s)),s}function so(e){return dn(e)||dn(e,!0)}var io=so,ze={};const We=/([()\][%!^"`<>&|;, *?])/g;function ao(e){return e=e.replace(We,"^$1"),e}function Do(e,t){return e=`${e}`,e=e.replace(/(\\*)"/g,'$1$1\\"'),e=e.replace(/(\\*)$/,"$1$1"),e=`"${e}"`,e=e.replace(We,"^$1"),t&&(e=e.replace(We,"^$1")),e}ze.command=ao,ze.argument=Do;var co=/^#!(.*)/;const lo=co;var fo=(e="")=>{const t=e.match(lo);if(!t)return null;const[r,n]=t[0].replace(/#! ?/,"").split(" "),u=r.split("/").pop();return u==="env"?n:n?`${u} ${n}`:u};const Ve=Ae,po=fo;function mo(e){const r=Buffer.alloc(150);let n;try{n=Ve.openSync(e,"r"),Ve.readSync(n,r,0,150,0),Ve.closeSync(n)}catch{}return po(r.toString())}var ho=mo;const Co=j,pn=io,mn=ze,go=ho,Fo=process.platform==="win32",Eo=/\.(?:com|exe)$/i,yo=/node_modules[\\/].bin[\\/][^\\/]+\.cmd$/i;function wo(e){e.file=pn(e);const t=e.file&&go(e.file);return t?(e.args.unshift(e.file),e.command=t,pn(e)):e.file}function bo(e){if(!Fo)return e;const t=wo(e),r=!Eo.test(t);if(e.options.forceShell||r){const n=yo.test(t);e.command=Co.normalize(e.command),e.command=mn.command(e.command),e.args=e.args.map(o=>mn.argument(o,n));const u=[e.command].concat(e.args).join(" ");e.args=["/d","/s","/c",`"${u}"`],e.command=process.env.comspec||"cmd.exe",e.options.windowsVerbatimArguments=!0}return e}function vo(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:bo(n)}var Bo=vo;const Ye=process.platform==="win32";function Xe(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 Ao(e,t){if(!Ye)return;const r=e.emit;e.emit=function(n,u){if(n==="exit"){const o=hn(u,t);if(o)return r.call(e,"error",o)}return r.apply(e,arguments)}}function hn(e,t){return Ye&&e===1&&!t.file?Xe(t.original,"spawn"):null}function $o(e,t){return Ye&&e===1&&!t.file?Xe(t.original,"spawnSync"):null}var xo={hookChildProcess:Ao,verifyENOENT:hn,verifyENOENTSync:$o,notFoundError:Xe};const Cn=cr,Je=Bo,Ze=xo;function gn(e,t,r){const n=Je(e,t,r),u=Cn.spawn(n.command,n.args,n.options);return Ze.hookChildProcess(u,n),u}function Oo(e,t,r){const n=Je(e,t,r),u=Cn.spawnSync(n.command,n.args,n.options);return u.error=u.error||Ze.verifyENOENTSync(u.status,n),u}U.exports=gn,U.exports.spawn=gn,U.exports.sync=Oo,U.exports._parse=Je,U.exports._enoent=Ze;var So=U.exports,Io=G(So);function Po(e){const t=typeof e=="string"?`
15
+ `}}function ku(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 n=[],r=[tn(e)];if(e.flags&&Object.keys(e.flags).length>0&&r.push("[flags...]"),e.parameters&&e.parameters.length>0){const{parameters:u}=e,o=u.indexOf("--"),s=o>-1&&u.slice(o+1).some(a=>a.startsWith("<"));r.push(u.map(a=>a!=="--"?a:s?"--":"[--]").join(" "))}if(r.length>1&&n.push(r.join(" ")),"commands"in e&&e.commands?.length&&n.push(`${e.name} <command>`),n.length>0)return{id:"usage",type:"section",data:{title:"Usage:",body:n.join(`
17
+ `)}}}}function Lu(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 ju(e){if(!(!e.flags||Object.keys(e.flags).length===0))return{id:"flags",type:"section",data:{title:"Flags:",body:Mu(e.flags),indentBody:0}}}function Gu(e){const{help:t}=e;if(!t||!t.examples||t.examples.length===0)return;let{examples:n}=t;if(Array.isArray(n)&&(n=n.join(`
18
+ `)),n)return{id:"examples",type:"section",data:{title:"Examples:",body:n}}}function Hu(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 Uu=e=>[Nu,Ru,ku,Lu,ju,Gu,Hu].map(t=>t(e)).filter(Boolean),qu=Pe.WriteStream.prototype.hasColors();class Ku{text(t){return t}bold(t){return qu?`\x1B[1m${t}\x1B[22m`:t.toLocaleUpperCase()}indentText({text:t,spaces:n}){return t.replace(/^/gm," ".repeat(n))}heading(t){return this.bold(t)}section({title:t,body:n,indentBody:r=2}){return`${(t?`${this.heading(t)}
19
+ `:"")+(n?this.indentText({text:this.render(n),spaces:r}):"")}
20
+ `}table({tableData:t,tableOptions:n,tableBreakpoints:r}){return xu(t.map(u=>u.map(o=>this.render(o))),r?Iu(r):n)}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:n,flagFormatted:r,aliasesEnabled:u,aliasFormatted:o}=t;let s="";if(o?s+=`${o}, `:u&&(s+=" "),s+=r,"placeholder"in n&&typeof n.placeholder=="string")s+=`${this.flagOperator(t)}${n.placeholder}`;else{const a=this.flagParameter("type"in n?n.type:n);a&&(s+=`${this.flagOperator(t)}${a}`)}return s}flagDefault(t){return JSON.stringify(t)}flagDescription({flag:t}){let n="description"in t?t.description??"":"";if("default"in t){let{default:r}=t;typeof r=="function"&&(r=r()),r&&(n+=` (default: ${this.flagDefault(r)})`)}return n}render(t){if(typeof t=="string")return t;if(Array.isArray(t))return t.map(n=>this.render(n)).join(`
21
+ `);if("type"in t&&this[t.type]){const n=this[t.type];if(typeof n=="function")return n.call(this,t.data)}throw new Error(`Invalid node type: ${JSON.stringify(t)}`)}}const Ue=/^[\w.-]+$/,{stringify:O}=JSON,zu=/[|\\{}()[\]^$+*?.]/;function qe(e){const t=[];let n,r;for(const u of e){if(r)throw new Error(`Invalid parameter: Spread parameter ${O(r)} must be last`);const o=u[0],s=u[u.length-1];let a;if(o==="<"&&s===">"&&(a=!0,n))throw new Error(`Invalid parameter: Required parameter ${O(u)} cannot come after optional parameter ${O(n)}`);if(o==="["&&s==="]"&&(a=!1,n=u),a===void 0)throw new Error(`Invalid parameter: ${O(u)}. Must be wrapped in <> (required parameter) or [] (optional parameter)`);let i=u.slice(1,-1);const f=i.slice(-3)==="...";f&&(r=u,i=i.slice(0,-3));const l=i.match(zu);if(l)throw new Error(`Invalid parameter: ${O(u)}. Invalid character found ${O(l[0])}`);t.push({name:i,required:a,spread:f})}return t}function Ke(e,t,n,r){for(let u=0;u<t.length;u+=1){const{name:o,required:s,spread:a}=t[u],i=Pu(o);if(i in e)throw new Error(`Invalid parameter: ${O(o)} is used more than once.`);const f=a?n.slice(u):n[u];if(a&&(u=t.length),s&&(!f||a&&f.length===0))return console.error(`Error: Missing required parameter ${O(o)}
22
+ `),r(),process.exit(1);e[i]=f}}function Wu(e){return e===void 0||e!==!1}function nn(e,t,n,r){const u={...t.flags},o=t.version;o&&(u.version={type:Boolean,description:"Show version"});const{help:s}=t,a=Wu(s);a&&!("help"in u)&&(u.help={type:Boolean,alias:"h",description:"Show help"});const i=Yr(u,r,{ignore:t.ignoreArgv}),f=()=>{console.log(t.version)};if(o&&i.flags.version===!0)return f(),process.exit(0);const l=new Ku,c=a&&s?.render?s.render:p=>l.render(p),D=p=>{const m=Uu({...t,...p?{help:p}:{},flags:u});console.log(c(m,l))};if(a&&i.flags.help===!0)return D(),process.exit(0);if(t.parameters){let{parameters:p}=t,m=i._;const h=p.indexOf("--"),g=p.slice(h+1),E=Object.create(null);if(h>-1&&g.length>0){p=p.slice(0,h);const $=i._["--"];m=m.slice(0,-$.length||void 0),Ke(E,qe(p),m,D),Ke(E,qe(g),$,D)}else Ke(E,qe(p),m,D);Object.assign(i._,E)}const d={...i,showVersion:f,showHelp:D};return typeof n=="function"&&n(d),{command:e,...d}}function Vu(e,t){const n=new Map;for(const r of t){const u=[r.options.name],{alias:o}=r.options;o&&(Array.isArray(o)?u.push(...o):u.push(o));for(const s of u){if(n.has(s))throw new Error(`Duplicate command name found: ${O(s)}`);n.set(s,r)}}return n.get(e)}function Yu(e,t,n=process.argv.slice(2)){if(!e)throw new Error("Options is required");if("name"in e&&(!e.name||!Ue.test(e.name)))throw new Error(`Invalid script name: ${O(e.name)}`);const r=n[0];if(e.commands&&Ue.test(r)){const u=Vu(r,e.commands);if(u)return nn(u.options.name,{...u.options,parent:e},u.callback,n.slice(1))}return nn(void 0,e,t,n)}function rn(e,t){if(!e)throw new Error("Command options are required");const{name:n}=e;if(e.name===void 0)throw new Error("Command name is required");if(!Ue.test(n))throw new Error(`Invalid command name ${JSON.stringify(n)}. Command names must be one word.`);return{options:e,callback:t}}var Xu=Dr(import.meta.url),w=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function G(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var H={exports:{}},ze,un;function Ju(){if(un)return ze;un=1,ze=r,r.sync=u;var e=Te;function t(o,s){var a=s.pathExt!==void 0?s.pathExt:process.env.PATHEXT;if(!a||(a=a.split(";"),a.indexOf("")!==-1))return!0;for(var i=0;i<a.length;i++){var f=a[i].toLowerCase();if(f&&o.substr(-f.length).toLowerCase()===f)return!0}return!1}function n(o,s,a){return!o.isSymbolicLink()&&!o.isFile()?!1:t(s,a)}function r(o,s,a){e.stat(o,function(i,f){a(i,i?!1:n(f,o,s))})}function u(o,s){return n(e.statSync(o),o,s)}return ze}var We,on;function Zu(){if(on)return We;on=1,We=t,t.sync=n;var e=Te;function t(o,s,a){e.stat(o,function(i,f){a(i,i?!1:r(f,s))})}function n(o,s){return r(e.statSync(o),s)}function r(o,s){return o.isFile()&&u(o,s)}function u(o,s){var a=o.mode,i=o.uid,f=o.gid,l=s.uid!==void 0?s.uid:process.getuid&&process.getuid(),c=s.gid!==void 0?s.gid:process.getgid&&process.getgid(),D=parseInt("100",8),d=parseInt("010",8),p=parseInt("001",8),m=D|d,h=a&p||a&d&&f===c||a&D&&i===l||a&m&&l===0;return h}return We}var Ce;process.platform==="win32"||w.TESTING_WINDOWS?Ce=Ju():Ce=Zu();var Qu=Ve;Ve.sync=eo;function Ve(e,t,n){if(typeof t=="function"&&(n=t,t={}),!n){if(typeof Promise!="function")throw new TypeError("callback not provided");return new Promise(function(r,u){Ve(e,t||{},function(o,s){o?u(o):r(s)})})}Ce(e,t||{},function(r,u){r&&(r.code==="EACCES"||t&&t.ignoreErrors)&&(r=null,u=!1),n(r,u)})}function eo(e,t){try{return Ce.sync(e,t||{})}catch(n){if(t&&t.ignoreErrors||n.code==="EACCES")return!1;throw n}}const U=process.platform==="win32"||process.env.OSTYPE==="cygwin"||process.env.OSTYPE==="msys",sn=j,to=U?";":":",an=Qu,Dn=e=>Object.assign(new Error(`not found: ${e}`),{code:"ENOENT"}),cn=(e,t)=>{const n=t.colon||to,r=e.match(/\//)||U&&e.match(/\\/)?[""]:[...U?[process.cwd()]:[],...(t.path||process.env.PATH||"").split(n)],u=U?t.pathExt||process.env.PATHEXT||".EXE;.CMD;.BAT;.COM":"",o=U?u.split(n):[""];return U&&e.indexOf(".")!==-1&&o[0]!==""&&o.unshift(""),{pathEnv:r,pathExt:o,pathExtExe:u}},ln=(e,t,n)=>{typeof t=="function"&&(n=t,t={}),t||(t={});const{pathEnv:r,pathExt:u,pathExtExe:o}=cn(e,t),s=[],a=f=>new Promise((l,c)=>{if(f===r.length)return t.all&&s.length?l(s):c(Dn(e));const D=r[f],d=/^".*"$/.test(D)?D.slice(1,-1):D,p=sn.join(d,e),m=!d&&/^\.[\\\/]/.test(e)?e.slice(0,2)+p:p;l(i(m,f,0))}),i=(f,l,c)=>new Promise((D,d)=>{if(c===u.length)return D(a(l+1));const p=u[c];an(f+p,{pathExt:o},(m,h)=>{if(!m&&h)if(t.all)s.push(f+p);else return D(f+p);return D(i(f,l,c+1))})});return n?a(0).then(f=>n(null,f),n):a(0)},no=(e,t)=>{t=t||{};const{pathEnv:n,pathExt:r,pathExtExe:u}=cn(e,t),o=[];for(let s=0;s<n.length;s++){const a=n[s],i=/^".*"$/.test(a)?a.slice(1,-1):a,f=sn.join(i,e),l=!i&&/^\.[\\\/]/.test(e)?e.slice(0,2)+f:f;for(let c=0;c<r.length;c++){const D=l+r[c];try{if(an.sync(D,{pathExt:u}))if(t.all)o.push(D);else return D}catch{}}}if(t.all&&o.length)return o;if(t.nothrow)return null;throw Dn(e)};var ro=ln;ln.sync=no;var Ye={exports:{}};const fn=(e={})=>{const t=e.env||process.env;return(e.platform||process.platform)!=="win32"?"PATH":Object.keys(t).reverse().find(r=>r.toUpperCase()==="PATH")||"Path"};Ye.exports=fn,Ye.exports.default=fn;var uo=Ye.exports;const dn=j,oo=ro,so=uo;function pn(e,t){const n=e.options.env||process.env,r=process.cwd(),u=e.options.cwd!=null,o=u&&process.chdir!==void 0&&!process.chdir.disabled;if(o)try{process.chdir(e.options.cwd)}catch{}let s;try{s=oo.sync(e.command,{path:n[so({env:n})],pathExt:t?dn.delimiter:void 0})}catch{}finally{o&&process.chdir(r)}return s&&(s=dn.resolve(u?e.options.cwd:"",s)),s}function io(e){return pn(e)||pn(e,!0)}var ao=io,Xe={};const Je=/([()\][%!^"`<>&|;, *?])/g;function Do(e){return e=e.replace(Je,"^$1"),e}function co(e,t){return e=`${e}`,e=e.replace(/(\\*)"/g,'$1$1\\"'),e=e.replace(/(\\*)$/,"$1$1"),e=`"${e}"`,e=e.replace(Je,"^$1"),t&&(e=e.replace(Je,"^$1")),e}Xe.command=Do,Xe.argument=co;var lo=/^#!(.*)/;const fo=lo;var po=(e="")=>{const t=e.match(fo);if(!t)return null;const[n,r]=t[0].replace(/#! ?/,"").split(" "),u=n.split("/").pop();return u==="env"?r:r?`${u} ${r}`:u};const Ze=Te,mo=po;function ho(e){const n=Buffer.alloc(150);let r;try{r=Ze.openSync(e,"r"),Ze.readSync(r,n,0,150,0),Ze.closeSync(r)}catch{}return mo(n.toString())}var Co=ho;const go=j,mn=ao,hn=Xe,Fo=Co,Eo=process.platform==="win32",yo=/\.(?:com|exe)$/i,wo=/node_modules[\\/].bin[\\/][^\\/]+\.cmd$/i;function bo(e){e.file=mn(e);const t=e.file&&Fo(e.file);return t?(e.args.unshift(e.file),e.command=t,mn(e)):e.file}function vo(e){if(!Eo)return e;const t=bo(e),n=!yo.test(t);if(e.options.forceShell||n){const r=wo.test(t);e.command=go.normalize(e.command),e.command=hn.command(e.command),e.args=e.args.map(o=>hn.argument(o,r));const u=[e.command].concat(e.args).join(" ");e.args=["/d","/s","/c",`"${u}"`],e.command=process.env.comspec||"cmd.exe",e.options.windowsVerbatimArguments=!0}return e}function Ao(e,t,n){t&&!Array.isArray(t)&&(n=t,t=null),t=t?t.slice(0):[],n=Object.assign({},n);const r={command:e,args:t,options:n,file:void 0,original:{command:e,args:t}};return n.shell?r:vo(r)}var Bo=Ao;const Qe=process.platform==="win32";function et(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 $o(e,t){if(!Qe)return;const n=e.emit;e.emit=function(r,u){if(r==="exit"){const o=Cn(u,t);if(o)return n.call(e,"error",o)}return n.apply(e,arguments)}}function Cn(e,t){return Qe&&e===1&&!t.file?et(t.original,"spawn"):null}function xo(e,t){return Qe&&e===1&&!t.file?et(t.original,"spawnSync"):null}var Oo={hookChildProcess:$o,verifyENOENT:Cn,verifyENOENTSync:xo,notFoundError:et};const gn=lr,tt=Bo,nt=Oo;function Fn(e,t,n){const r=tt(e,t,n),u=gn.spawn(r.command,r.args,r.options);return nt.hookChildProcess(u,r),u}function So(e,t,n){const r=tt(e,t,n),u=gn.spawnSync(r.command,r.args,r.options);return u.error=u.error||nt.verifyENOENTSync(u.status,r),u}H.exports=Fn,H.exports.spawn=Fn,H.exports.sync=So,H.exports._parse=tt,H.exports._enoent=nt;var Io=H.exports,Po=G(Io);function To(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 Fn(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 To(e={}){const{cwd:t=_.cwd(),path:r=_.env[Fn()],execPath:n=_.execPath}=e;let u;const o=t instanceof URL?lr.fileURLToPath(t):t;let s=L.resolve(o);const a=[];for(;u!==s;)a.push(L.join(s,"node_modules/.bin")),u=s,s=L.resolve(s,"..");return a.push(L.resolve(o,n,"..")),[...a,r].join(L.delimiter)}function _o({env:e=_.env,...t}={}){e={...e};const r=Fn({env:e});return t.path=e[r],e[r]=To(t),e}const Mo=(e,t,r,n)=>{if(r==="length"||r==="prototype"||r==="arguments"||r==="caller")return;const u=Object.getOwnPropertyDescriptor(e,r),o=Object.getOwnPropertyDescriptor(t,r);!Ro(u,o)&&n||Object.defineProperty(e,r,o)},Ro=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)},No=(e,t)=>{const r=Object.getPrototypeOf(t);r!==Object.getPrototypeOf(e)&&Object.setPrototypeOf(e,r)},ko=(e,t)=>`/* Wrapped ${e}*/
25
- ${t}`,Lo=Object.getOwnPropertyDescriptor(Function.prototype,"toString"),jo=Object.getOwnPropertyDescriptor(Function.prototype.toString,"name"),Go=(e,t,r)=>{const n=r===""?"":`with ${r.trim()}() `,u=ko.bind(null,n,t.toString());Object.defineProperty(u,"name",jo),Object.defineProperty(e,"toString",{...Lo,value:u})};function Uo(e,t,{ignoreNonConfigurable:r=!1}={}){const{name:n}=e;for(const u of Reflect.ownKeys(t))Mo(e,t,u,r);return No(e,t),Go(e,t,n),e}const de=new WeakMap,En=(e,t={})=>{if(typeof e!="function")throw new TypeError("Expected a function");let r,n=0;const u=e.displayName||e.name||"<anonymous>",o=function(...s){if(de.set(o,++n),n===1)r=e.apply(this,s),e=null;else if(t.throw===!0)throw new Error(`Function \`${u}\` can only be called once`);return r};return Uo(o,e),de.set(o,n),o};En.callCount=e=>{if(!de.has(e))throw new Error(`The given function \`${e.name}\` is not wrapped by the \`onetime\` package`);return de.get(e)};const Ho=()=>{const e=wn-yn+1;return Array.from({length:e},qo)},qo=(e,t)=>({name:`SIGRT${t+1}`,number:yn+t,action:"terminate",description:"Application-specific signal (realtime)",standard:"posix"}),yn=34,wn=64,Ko=[{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"}],bn=()=>{const e=Ho();return[...Ko,...e].map(zo)},zo=({name:e,number:t,description:r,action:n,forced:u=!1,standard:o})=>{const{signals:{[e]:s}}=St,a=s!==void 0;return{name:e,number:a?s:t,description:r,supported:a,action:n,forced:u,standard:o}},Wo=()=>{const e=bn();return Object.fromEntries(e.map(Vo))},Vo=({name:e,number:t,description:r,supported:n,action:u,forced:o,standard:s})=>[e,{name:e,number:t,description:r,supported:n,action:u,forced:o,standard:s}],Yo=Wo(),Xo=()=>{const e=bn(),t=wn+1,r=Array.from({length:t},(n,u)=>Jo(u,e));return Object.assign({},...r)},Jo=(e,t)=>{const r=Zo(e,t);if(r===void 0)return{};const{name:n,description:u,supported:o,action:s,forced:a,standard:i}=r;return{[e]:{name:n,number:e,description:u,supported:o,action:s,forced:a,standard:i}}},Zo=(e,t)=>{const r=t.find(({name:n})=>St.signals[n]===e);return r!==void 0?r:t.find(n=>n.number===e)};Xo();const Qo=({timedOut:e,timeout:t,errorCode:r,signal:n,signalDescription:u,exitCode:o,isCanceled:s})=>e?`timed out after ${t} milliseconds`:s?"was canceled":r!==void 0?`failed with ${r}`:n!==void 0?`was killed with ${n} (${u})`:o!==void 0?`failed with exit code ${o}`:"failed",vn=({stdout:e,stderr:t,all:r,error:n,signal:u,exitCode:o,command:s,escapedCommand:a,timedOut:i,isCanceled:f,killed:l,parsed:{options:{timeout:c}}})=>{o=o===null?void 0:o,u=u===null?void 0:u;const D=u===void 0?void 0:Yo[u].description,d=n&&n.code,m=`Command ${Qo({timedOut:i,timeout:c,errorCode:d,signal:u,signalDescription:D,exitCode:o,isCanceled:f})}: ${s}`,h=Object.prototype.toString.call(n)==="[object Error]",C=h?`${m}
26
- ${n.message}`:m,E=[C,t,e].filter(Boolean).join(`
27
- `);return h?(n.originalMessage=n.message,n.message=E):n=new Error(E),n.shortMessage=C,n.command=s,n.escapedCommand=a,n.exitCode=o,n.signal=u,n.signalDescription=D,n.stdout=e,n.stderr=t,r!==void 0&&(n.all=r),"bufferedData"in n&&delete n.bufferedData,n.failed=!0,n.timedOut=!!i,n.isCanceled=f,n.killed=l&&!i,n},pe=["stdin","stdout","stderr"],es=e=>pe.some(t=>e[t]!==void 0),ts=e=>{if(!e)return;const{stdio:t}=e;if(t===void 0)return pe.map(n=>e[n]);if(es(e))throw new Error(`It's not possible to provide \`stdio\` in combination with one of ${pe.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,pe.length);return Array.from({length:r},(n,u)=>t[u])};var q={exports:{}},me={exports:{}};me.exports;var Bn;function ns(){return Bn||(Bn=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")}(me)),me.exports}var F=y.process;const R=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(!R(F))q.exports=function(){return function(){}};else{var rs=It,J=ns(),us=/^win/i.test(F.platform),he=Pt;typeof he!="function"&&(he=he.EventEmitter);var v;F.__signal_exit_emitter__?v=F.__signal_exit_emitter__:(v=F.__signal_exit_emitter__=new he,v.count=0,v.emitted={}),v.infinite||(v.setMaxListeners(1/0),v.infinite=!0),q.exports=function(e,t){if(!R(y.process))return function(){};rs.equal(typeof e,"function","a callback must be provided for exit handler"),Z===!1&&An();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&&Qe()};return v.on(r,e),n};var Qe=function(){!Z||!R(y.process)||(Z=!1,J.forEach(function(t){try{F.removeListener(t,et[t])}catch{}}),F.emit=tt,F.reallyExit=$n,v.count-=1)};q.exports.unload=Qe;var K=function(t,r,n){v.emitted[t]||(v.emitted[t]=!0,v.emit(t,r,n))},et={};J.forEach(function(e){et[e]=function(){if(R(y.process)){var r=F.listeners(e);r.length===v.count&&(Qe(),K("exit",null,e),K("afterexit",null,e),us&&e==="SIGHUP"&&(e="SIGINT"),F.kill(F.pid,e))}}}),q.exports.signals=function(){return J};var Z=!1,An=function(){Z||!R(y.process)||(Z=!0,v.count+=1,J=J.filter(function(t){try{return F.on(t,et[t]),!0}catch{return!1}}),F.emit=ss,F.reallyExit=os)};q.exports.load=An;var $n=F.reallyExit,os=function(t){R(y.process)&&(F.exitCode=t||0,K("exit",F.exitCode,null),K("afterexit",F.exitCode,null),$n.call(F,F.exitCode))},tt=F.emit,ss=function(t,r){if(t==="exit"&&R(y.process)){r!==void 0&&(F.exitCode=r);var n=tt.apply(this,arguments);return K("exit",F.exitCode,null),K("afterexit",F.exitCode,null),n}else return tt.apply(this,arguments)}}var is=q.exports,as=G(is);const Ds=1e3*5,cs=(e,t="SIGTERM",r={})=>{const n=e(t);return ls(e,t,r,n),n},ls=(e,t,r,n)=>{if(!fs(t,r,n))return;const u=ps(r),o=setTimeout(()=>{e("SIGKILL")},u);o.unref&&o.unref()},fs=(e,{forceKillAfterTimeout:t},r)=>ds(e)&&t!==!1&&r,ds=e=>e===fr.constants.signals.SIGTERM||typeof e=="string"&&e.toUpperCase()==="SIGTERM",ps=({forceKillAfterTimeout:e=!0})=>{if(e===!0)return Ds;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},ms=(e,t)=>{e.kill()&&(t.isCanceled=!0)},hs=(e,t,r)=>{e.kill(t),r(Object.assign(new Error("Timed out"),{timedOut:!0,signal:t}))},Cs=(e,{timeout:t,killSignal:r="SIGTERM"},n)=>{if(t===0||t===void 0)return n;let u;const o=new Promise((a,i)=>{u=setTimeout(()=>{hs(e,r,i)},t)}),s=n.finally(()=>{clearTimeout(u)});return Promise.race([o,s])},gs=({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})`)},Fs=async(e,{cleanup:t,detached:r},n)=>{if(!t||r)return n;const u=as(()=>{e.kill()});return n.finally(()=>{u()})};function Es(e){return e!==null&&typeof e=="object"&&typeof e.pipe=="function"}var Q={exports:{}};const{PassThrough:ys}=$e;var ws=e=>{e={...e};const{array:t}=e;let{encoding:r}=e;const n=r==="buffer";let u=!1;t?u=!(r||n):r=r||"utf8",n&&(r=null);const o=new ys({objectMode:u});r&&o.setEncoding(r);let s=0;const a=[];return o.on("data",i=>{a.push(i),u?s=a.length:s+=i.length}),o.getBufferedValue=()=>t?a:n?Buffer.concat(a,s):a.join(""),o.getBufferedLength=()=>s,o};const{constants:bs}=dr,vs=$e,{promisify:Bs}=Tt,As=ws,$s=Bs(vs.pipeline);class xn extends Error{constructor(){super("maxBuffer exceeded"),this.name="MaxBufferError"}}async function nt(e,t){if(!e)throw new Error("Expected a stream");t={maxBuffer:1/0,...t};const{maxBuffer:r}=t,n=As(t);return await new Promise((u,o)=>{const s=a=>{a&&n.getBufferedLength()<=bs.MAX_LENGTH&&(a.bufferedData=n.getBufferedValue()),o(a)};(async()=>{try{await $s(e,n),u()}catch(a){s(a)}})(),n.on("data",()=>{n.getBufferedLength()>r&&s(new xn)})}),n.getBufferedValue()}Q.exports=nt,Q.exports.buffer=(e,t)=>nt(e,{...t,encoding:"buffer"}),Q.exports.array=(e,t)=>nt(e,{...t,array:!0}),Q.exports.MaxBufferError=xn;var xs=Q.exports,On=G(xs);const{PassThrough:Os}=$e;var Ss=function(){var e=[],t=new Os({objectMode:!0});return t.setMaxListeners(0),t.add=r,t.isEmpty=n,t.on("unpipe",u),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",u.bind(null,o)),o.once("error",t.emit.bind(t,"error")),o.pipe(t,{end:!1}),this)}function n(){return e.length==0}function u(o){e=e.filter(function(s){return s!==o}),!e.length&&t.readable&&t.end()}},Is=G(Ss);const Ps=(e,t)=>{t!==void 0&&(Es(t)?t.pipe(e.stdin):e.stdin.end(t))},Ts=(e,{all:t})=>{if(!t||!e.stdout&&!e.stderr)return;const r=Is();return e.stdout&&r.add(e.stdout),e.stderr&&r.add(e.stderr),r},rt=async(e,t)=>{if(!(!e||t===void 0)){e.destroy();try{return await t}catch(r){return r.bufferedData}}},ut=(e,{encoding:t,buffer:r,maxBuffer:n})=>{if(!(!e||!r))return t?On(e,{encoding:t,maxBuffer:n}):On.buffer(e,{maxBuffer:n})},_s=async({stdout:e,stderr:t,all:r},{encoding:n,buffer:u,maxBuffer:o},s)=>{const a=ut(e,{encoding:n,buffer:u,maxBuffer:o}),i=ut(t,{encoding:n,buffer:u,maxBuffer:o}),f=ut(r,{encoding:n,buffer:u,maxBuffer:o*2});try{return await Promise.all([s,a,i,f])}catch(l){return Promise.all([{error:l,signal:l.signal,timedOut:l.timedOut},rt(e,a),rt(t,i),rt(r,f)])}},Ms=(async()=>{})().constructor.prototype,Rs=["then","catch","finally"].map(e=>[e,Reflect.getOwnPropertyDescriptor(Ms,e)]),Sn=(e,t)=>{for(const[r,n]of Rs){const u=typeof t=="function"?(...o)=>Reflect.apply(n.value,t(),o):n.value.bind(t);Reflect.defineProperty(e,r,{...n,value:u})}return e},Ns=e=>new Promise((t,r)=>{e.on("exit",(n,u)=>{t({exitCode:n,signal:u})}),e.on("error",n=>{r(n)}),e.stdin&&e.stdin.on("error",n=>{r(n)})}),In=(e,t=[])=>Array.isArray(t)?[e,...t]:[e],ks=/^[\w.-]+$/,Ls=/"/g,js=e=>typeof e!="string"||ks.test(e)?e:`"${e.replace(Ls,'\\"')}"`,Gs=(e,t)=>In(e,t).join(" "),Us=(e,t)=>In(e,t).map(r=>js(r)).join(" "),Hs=1e3*1e3*100,qs=({env:e,extendEnv:t,preferLocal:r,localDir:n,execPath:u})=>{const o=t?{..._.env,...e}:e;return r?_o({env:o,cwd:n,execPath:u}):o},Ks=(e,t,r={})=>{const n=Io._parse(e,t,r);return e=n.command,t=n.args,r=n.options,r={maxBuffer:Hs,buffer:!0,stripFinalNewline:!0,extendEnv:!0,preferLocal:!1,localDir:r.cwd||_.cwd(),execPath:_.execPath,encoding:"utf8",reject:!0,cleanup:!0,all:!1,windowsHide:!0,...r},r.env=qs(r),r.stdio=ts(r),_.platform==="win32"&&L.basename(e,".exe")==="cmd"&&t.unshift("/q"),{file:e,args:t,options:r,parsed:n}},ot=(e,t,r)=>typeof t!="string"&&!Dr.isBuffer(t)?r===void 0?void 0:"":e.stripFinalNewline?Po(t):t;function z(e,t,r){const n=Ks(e,t,r),u=Gs(e,t),o=Us(e,t);gs(n.options);let s;try{s=Ot.spawn(n.file,n.args,n.options)}catch(d){const p=new Ot.ChildProcess,m=Promise.reject(vn({error:d,stdout:"",stderr:"",all:"",command:u,escapedCommand:o,parsed:n,timedOut:!1,isCanceled:!1,killed:!1}));return Sn(p,m)}const a=Ns(s),i=Cs(s,n.options,a),f=Fs(s,n.options,i),l={isCanceled:!1};s.kill=cs.bind(null,s.kill.bind(s)),s.cancel=ms.bind(null,s,l);const D=En(async()=>{const[{error:d,exitCode:p,signal:m,timedOut:h},C,E,$]=await _s(s,n.options,f),k=ot(n.options,C),I=ot(n.options,E),b=ot(n.options,$);if(d||p!==0||m!==null){const T=vn({error:d,exitCode:p,signal:m,stdout:k,stderr:I,all:b,command:u,escapedCommand:o,parsed:n,timedOut:h,isCanceled:l.isCanceled||(n.options.signal?n.options.signal.aborted:!1),killed:s.killed});if(!n.options.reject)return T;throw T}return{command:u,escapedCommand:o,exitCode:0,stdout:k,stderr:I,all:b,failed:!1,timedOut:!1,isCanceled:!1,killed:!1}});return Ps(s,n.options.input),s.all=Ts(s,n.options),Sn(s,D)}class st{static create(t,r){return new t(r)}}const zs={"":"<commit message>",conventional:"<type>(<optional scope>): <description>",gitmoji:":<emoji>: <description>"},Ws=e=>`The output response must be in ${e} commit type:
28
- ${zs[e]}`,Vs={"":"",gitmoji:"",conventional:`Choose a type from the type-to-description JSON below that best describes the git diff:
29
- ${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 our CI configuration files and 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)}`},Pn=(e,t,r)=>["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 ${t} characters.`,"Exclude anything unnecessary such as translation. Your entire response will be passed directly into git commit.",Vs[r],Ws(r)].filter(Boolean).join(`
30
- `),Ys=e=>/^(build|chore|ci|docs|feat|fix|perf|refactor|revert|style|test){1}(\([\s\w\.\-\p{Extended_Pictographic}]+\))?(!)?: ([\s\w \p{Extended_Pictographic}])+([\s\S]*)/.test(e),Xs=e=>/^\:\w+\: (.*)$/.test(e),Ce={OPEN_AI:"OPENAI_KEY",HUGGING:"HUGGING_COOKIE",CLOVA_X:"CLOVAX_COOKIE"},Tn=Object.values(Ce).map(e=>e);class it{constructor(t){this.handleError$=r=>{let n="An error occurred";return r.message&&(n=r.message),Se({name:`${this.errorPrefix} ${n}`,value:n,isError:!0})},this.serviceName="AI",this.errorPrefix="ERROR",this.colors={primary:""}}buildPrompt(t,r,n,u,o){return`${Pn(t,u,o)}
31
- Please just generate ${n} messages in numbered list format.
24
+ `.charCodeAt(),n=typeof e=="string"?"\r":"\r".charCodeAt();return e[e.length-1]===t&&(e=e.slice(0,-1)),e[e.length-1]===n&&(e=e.slice(0,-1)),e}function En(e={}){const{env:t=process.env,platform:n=process.platform}=e;return n!=="win32"?"PATH":Object.keys(t).reverse().find(r=>r.toUpperCase()==="PATH")||"Path"}function _o(e={}){const{cwd:t=_.cwd(),path:n=_.env[En()],execPath:r=_.execPath}=e;let u;const o=t instanceof URL?fr.fileURLToPath(t):t;let s=L.resolve(o);const a=[];for(;u!==s;)a.push(L.join(s,"node_modules/.bin")),u=s,s=L.resolve(s,"..");return a.push(L.resolve(o,r,"..")),[...a,n].join(L.delimiter)}function Mo({env:e=_.env,...t}={}){e={...e};const n=En({env:e});return t.path=e[n],e[n]=_o(t),e}const No=(e,t,n,r)=>{if(n==="length"||n==="prototype"||n==="arguments"||n==="caller")return;const u=Object.getOwnPropertyDescriptor(e,n),o=Object.getOwnPropertyDescriptor(t,n);!Ro(u,o)&&r||Object.defineProperty(e,n,o)},Ro=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)},ko=(e,t)=>{const n=Object.getPrototypeOf(t);n!==Object.getPrototypeOf(e)&&Object.setPrototypeOf(e,n)},Lo=(e,t)=>`/* Wrapped ${e}*/
25
+ ${t}`,jo=Object.getOwnPropertyDescriptor(Function.prototype,"toString"),Go=Object.getOwnPropertyDescriptor(Function.prototype.toString,"name"),Ho=(e,t,n)=>{const r=n===""?"":`with ${n.trim()}() `,u=Lo.bind(null,r,t.toString());Object.defineProperty(u,"name",Go),Object.defineProperty(e,"toString",{...jo,value:u})};function Uo(e,t,{ignoreNonConfigurable:n=!1}={}){const{name:r}=e;for(const u of Reflect.ownKeys(t))No(e,t,u,n);return ko(e,t),Ho(e,t,r),e}const ge=new WeakMap,yn=(e,t={})=>{if(typeof e!="function")throw new TypeError("Expected a function");let n,r=0;const u=e.displayName||e.name||"<anonymous>",o=function(...s){if(ge.set(o,++r),r===1)n=e.apply(this,s),e=null;else if(t.throw===!0)throw new Error(`Function \`${u}\` can only be called once`);return n};return Uo(o,e),ge.set(o,r),o};yn.callCount=e=>{if(!ge.has(e))throw new Error(`The given function \`${e.name}\` is not wrapped by the \`onetime\` package`);return ge.get(e)};const qo=()=>{const e=bn-wn+1;return Array.from({length:e},Ko)},Ko=(e,t)=>({name:`SIGRT${t+1}`,number:wn+t,action:"terminate",description:"Application-specific signal (realtime)",standard:"posix"}),wn=34,bn=64,zo=[{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"}],vn=()=>{const e=qo();return[...zo,...e].map(Wo)},Wo=({name:e,number:t,description:n,action:r,forced:u=!1,standard:o})=>{const{signals:{[e]:s}}=It,a=s!==void 0;return{name:e,number:a?s:t,description:n,supported:a,action:r,forced:u,standard:o}},Vo=()=>{const e=vn();return Object.fromEntries(e.map(Yo))},Yo=({name:e,number:t,description:n,supported:r,action:u,forced:o,standard:s})=>[e,{name:e,number:t,description:n,supported:r,action:u,forced:o,standard:s}],Xo=Vo(),Jo=()=>{const e=vn(),t=bn+1,n=Array.from({length:t},(r,u)=>Zo(u,e));return Object.assign({},...n)},Zo=(e,t)=>{const n=Qo(e,t);if(n===void 0)return{};const{name:r,description:u,supported:o,action:s,forced:a,standard:i}=n;return{[e]:{name:r,number:e,description:u,supported:o,action:s,forced:a,standard:i}}},Qo=(e,t)=>{const n=t.find(({name:r})=>It.signals[r]===e);return n!==void 0?n:t.find(r=>r.number===e)};Jo();const es=({timedOut:e,timeout:t,errorCode:n,signal:r,signalDescription:u,exitCode:o,isCanceled:s})=>e?`timed out after ${t} milliseconds`:s?"was canceled":n!==void 0?`failed with ${n}`:r!==void 0?`was killed with ${r} (${u})`:o!==void 0?`failed with exit code ${o}`:"failed",An=({stdout:e,stderr:t,all:n,error:r,signal:u,exitCode:o,command:s,escapedCommand:a,timedOut:i,isCanceled:f,killed:l,parsed:{options:{timeout:c}}})=>{o=o===null?void 0:o,u=u===null?void 0:u;const D=u===void 0?void 0:Xo[u].description,d=r&&r.code,m=`Command ${es({timedOut:i,timeout:c,errorCode:d,signal:u,signalDescription:D,exitCode:o,isCanceled:f})}: ${s}`,h=Object.prototype.toString.call(r)==="[object Error]",g=h?`${m}
26
+ ${r.message}`:m,E=[g,t,e].filter(Boolean).join(`
27
+ `);return h?(r.originalMessage=r.message,r.message=E):r=new Error(E),r.shortMessage=g,r.command=s,r.escapedCommand=a,r.exitCode=o,r.signal=u,r.signalDescription=D,r.stdout=e,r.stderr=t,n!==void 0&&(r.all=n),"bufferedData"in r&&delete r.bufferedData,r.failed=!0,r.timedOut=!!i,r.isCanceled=f,r.killed=l&&!i,r},Fe=["stdin","stdout","stderr"],ts=e=>Fe.some(t=>e[t]!==void 0),ns=e=>{if(!e)return;const{stdio:t}=e;if(t===void 0)return Fe.map(r=>e[r]);if(ts(e))throw new Error(`It's not possible to provide \`stdio\` in combination with one of ${Fe.map(r=>`\`${r}\``).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 n=Math.max(t.length,Fe.length);return Array.from({length:n},(r,u)=>t[u])};var q={exports:{}},Ee={exports:{}};Ee.exports;var Bn;function rs(){return Bn||(Bn=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")}(Ee)),Ee.exports}var F=w.process;const N=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(!N(F))q.exports=function(){return function(){}};else{var us=Pt,Q=rs(),os=/^win/i.test(F.platform),ye=Tt;typeof ye!="function"&&(ye=ye.EventEmitter);var A;F.__signal_exit_emitter__?A=F.__signal_exit_emitter__:(A=F.__signal_exit_emitter__=new ye,A.count=0,A.emitted={}),A.infinite||(A.setMaxListeners(1/0),A.infinite=!0),q.exports=function(e,t){if(!N(w.process))return function(){};us.equal(typeof e,"function","a callback must be provided for exit handler"),ee===!1&&$n();var n="exit";t&&t.alwaysLast&&(n="afterexit");var r=function(){A.removeListener(n,e),A.listeners("exit").length===0&&A.listeners("afterexit").length===0&&rt()};return A.on(n,e),r};var rt=function(){!ee||!N(w.process)||(ee=!1,Q.forEach(function(t){try{F.removeListener(t,ut[t])}catch{}}),F.emit=ot,F.reallyExit=xn,A.count-=1)};q.exports.unload=rt;var K=function(t,n,r){A.emitted[t]||(A.emitted[t]=!0,A.emit(t,n,r))},ut={};Q.forEach(function(e){ut[e]=function(){if(N(w.process)){var n=F.listeners(e);n.length===A.count&&(rt(),K("exit",null,e),K("afterexit",null,e),os&&e==="SIGHUP"&&(e="SIGINT"),F.kill(F.pid,e))}}}),q.exports.signals=function(){return Q};var ee=!1,$n=function(){ee||!N(w.process)||(ee=!0,A.count+=1,Q=Q.filter(function(t){try{return F.on(t,ut[t]),!0}catch{return!1}}),F.emit=is,F.reallyExit=ss)};q.exports.load=$n;var xn=F.reallyExit,ss=function(t){N(w.process)&&(F.exitCode=t||0,K("exit",F.exitCode,null),K("afterexit",F.exitCode,null),xn.call(F,F.exitCode))},ot=F.emit,is=function(t,n){if(t==="exit"&&N(w.process)){n!==void 0&&(F.exitCode=n);var r=ot.apply(this,arguments);return K("exit",F.exitCode,null),K("afterexit",F.exitCode,null),r}else return ot.apply(this,arguments)}}var as=q.exports,Ds=G(as);const cs=1e3*5,ls=(e,t="SIGTERM",n={})=>{const r=e(t);return fs(e,t,n,r),r},fs=(e,t,n,r)=>{if(!ds(t,n,r))return;const u=ms(n),o=setTimeout(()=>{e("SIGKILL")},u);o.unref&&o.unref()},ds=(e,{forceKillAfterTimeout:t},n)=>ps(e)&&t!==!1&&n,ps=e=>e===dr.constants.signals.SIGTERM||typeof e=="string"&&e.toUpperCase()==="SIGTERM",ms=({forceKillAfterTimeout:e=!0})=>{if(e===!0)return cs;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},hs=(e,t)=>{e.kill()&&(t.isCanceled=!0)},Cs=(e,t,n)=>{e.kill(t),n(Object.assign(new Error("Timed out"),{timedOut:!0,signal:t}))},gs=(e,{timeout:t,killSignal:n="SIGTERM"},r)=>{if(t===0||t===void 0)return r;let u;const o=new Promise((a,i)=>{u=setTimeout(()=>{Cs(e,n,i)},t)}),s=r.finally(()=>{clearTimeout(u)});return Promise.race([o,s])},Fs=({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})`)},Es=async(e,{cleanup:t,detached:n},r)=>{if(!t||n)return r;const u=Ds(()=>{e.kill()});return r.finally(()=>{u()})};function ys(e){return e!==null&&typeof e=="object"&&typeof e.pipe=="function"}var te={exports:{}};const{PassThrough:ws}=_e;var bs=e=>{e={...e};const{array:t}=e;let{encoding:n}=e;const r=n==="buffer";let u=!1;t?u=!(n||r):n=n||"utf8",r&&(n=null);const o=new ws({objectMode:u});n&&o.setEncoding(n);let s=0;const a=[];return o.on("data",i=>{a.push(i),u?s=a.length:s+=i.length}),o.getBufferedValue=()=>t?a:r?Buffer.concat(a,s):a.join(""),o.getBufferedLength=()=>s,o};const{constants:vs}=pr,As=_e,{promisify:Bs}=_t,$s=bs,xs=Bs(As.pipeline);class On extends Error{constructor(){super("maxBuffer exceeded"),this.name="MaxBufferError"}}async function st(e,t){if(!e)throw new Error("Expected a stream");t={maxBuffer:1/0,...t};const{maxBuffer:n}=t,r=$s(t);return await new Promise((u,o)=>{const s=a=>{a&&r.getBufferedLength()<=vs.MAX_LENGTH&&(a.bufferedData=r.getBufferedValue()),o(a)};(async()=>{try{await xs(e,r),u()}catch(a){s(a)}})(),r.on("data",()=>{r.getBufferedLength()>n&&s(new On)})}),r.getBufferedValue()}te.exports=st,te.exports.buffer=(e,t)=>st(e,{...t,encoding:"buffer"}),te.exports.array=(e,t)=>st(e,{...t,array:!0}),te.exports.MaxBufferError=On;var Os=te.exports,Sn=G(Os);const{PassThrough:Ss}=_e;var Is=function(){var e=[],t=new Ss({objectMode:!0});return t.setMaxListeners(0),t.add=n,t.isEmpty=r,t.on("unpipe",u),Array.prototype.slice.call(arguments).forEach(n),t;function n(o){return Array.isArray(o)?(o.forEach(n),this):(e.push(o),o.once("end",u.bind(null,o)),o.once("error",t.emit.bind(t,"error")),o.pipe(t,{end:!1}),this)}function r(){return e.length==0}function u(o){e=e.filter(function(s){return s!==o}),!e.length&&t.readable&&t.end()}},Ps=G(Is);const Ts=(e,t)=>{t!==void 0&&(ys(t)?t.pipe(e.stdin):e.stdin.end(t))},_s=(e,{all:t})=>{if(!t||!e.stdout&&!e.stderr)return;const n=Ps();return e.stdout&&n.add(e.stdout),e.stderr&&n.add(e.stderr),n},it=async(e,t)=>{if(!(!e||t===void 0)){e.destroy();try{return await t}catch(n){return n.bufferedData}}},at=(e,{encoding:t,buffer:n,maxBuffer:r})=>{if(!(!e||!n))return t?Sn(e,{encoding:t,maxBuffer:r}):Sn.buffer(e,{maxBuffer:r})},Ms=async({stdout:e,stderr:t,all:n},{encoding:r,buffer:u,maxBuffer:o},s)=>{const a=at(e,{encoding:r,buffer:u,maxBuffer:o}),i=at(t,{encoding:r,buffer:u,maxBuffer:o}),f=at(n,{encoding:r,buffer:u,maxBuffer:o*2});try{return await Promise.all([s,a,i,f])}catch(l){return Promise.all([{error:l,signal:l.signal,timedOut:l.timedOut},it(e,a),it(t,i),it(n,f)])}},Ns=(async()=>{})().constructor.prototype,Rs=["then","catch","finally"].map(e=>[e,Reflect.getOwnPropertyDescriptor(Ns,e)]),In=(e,t)=>{for(const[n,r]of Rs){const u=typeof t=="function"?(...o)=>Reflect.apply(r.value,t(),o):r.value.bind(t);Reflect.defineProperty(e,n,{...r,value:u})}return e},ks=e=>new Promise((t,n)=>{e.on("exit",(r,u)=>{t({exitCode:r,signal:u})}),e.on("error",r=>{n(r)}),e.stdin&&e.stdin.on("error",r=>{n(r)})}),Pn=(e,t=[])=>Array.isArray(t)?[e,...t]:[e],Ls=/^[\w.-]+$/,js=/"/g,Gs=e=>typeof e!="string"||Ls.test(e)?e:`"${e.replace(js,'\\"')}"`,Hs=(e,t)=>Pn(e,t).join(" "),Us=(e,t)=>Pn(e,t).map(n=>Gs(n)).join(" "),qs=1e3*1e3*100,Ks=({env:e,extendEnv:t,preferLocal:n,localDir:r,execPath:u})=>{const o=t?{..._.env,...e}:e;return n?Mo({env:o,cwd:r,execPath:u}):o},zs=(e,t,n={})=>{const r=Po._parse(e,t,n);return e=r.command,t=r.args,n=r.options,n={maxBuffer:qs,buffer:!0,stripFinalNewline:!0,extendEnv:!0,preferLocal:!1,localDir:n.cwd||_.cwd(),execPath:_.execPath,encoding:"utf8",reject:!0,cleanup:!0,all:!1,windowsHide:!0,...n},n.env=Ks(n),n.stdio=ns(n),_.platform==="win32"&&L.basename(e,".exe")==="cmd"&&t.unshift("/q"),{file:e,args:t,options:n,parsed:r}},Dt=(e,t,n)=>typeof t!="string"&&!cr.isBuffer(t)?n===void 0?void 0:"":e.stripFinalNewline?To(t):t;function z(e,t,n){const r=zs(e,t,n),u=Hs(e,t),o=Us(e,t);Fs(r.options);let s;try{s=St.spawn(r.file,r.args,r.options)}catch(d){const p=new St.ChildProcess,m=Promise.reject(An({error:d,stdout:"",stderr:"",all:"",command:u,escapedCommand:o,parsed:r,timedOut:!1,isCanceled:!1,killed:!1}));return In(p,m)}const a=ks(s),i=gs(s,r.options,a),f=Es(s,r.options,i),l={isCanceled:!1};s.kill=ls.bind(null,s.kill.bind(s)),s.cancel=hs.bind(null,s,l);const D=yn(async()=>{const[{error:d,exitCode:p,signal:m,timedOut:h},g,E,$]=await Ms(s,r.options,f),k=Dt(r.options,g),I=Dt(r.options,E),v=Dt(r.options,$);if(d||p!==0||m!==null){const T=An({error:d,exitCode:p,signal:m,stdout:k,stderr:I,all:v,command:u,escapedCommand:o,parsed:r,timedOut:h,isCanceled:l.isCanceled||(r.options.signal?r.options.signal.aborted:!1),killed:s.killed});if(!r.options.reject)return T;throw T}return{command:u,escapedCommand:o,exitCode:0,stdout:k,stderr:I,all:v,failed:!1,timedOut:!1,isCanceled:!1,killed:!1}});return Ts(s,r.options.input),s.all=_s(s,r.options),In(s,D)}class we{static create(t,n){return new t(n)}}const Ws={"":"<commit message>",conventional:"<type>(<optional scope>): <description>",gitmoji:":<emoji>: <description>"},Vs=e=>`The output response must be in ${e} commit type:
28
+ ${Ws[e]}`,Ys={"":"",gitmoji:"",conventional:`Choose a type from the type-to-description JSON below that best describes the git diff:
29
+ ${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 our CI configuration files and 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)}`},Tn=(e,t,n)=>["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 ${t} characters.`,"Exclude anything unnecessary such as translation. Your entire response will be passed directly into git commit.",Ys[n],Vs(n)].filter(Boolean).join(`
30
+ `),Xs=e=>/^(build|chore|ci|docs|feat|fix|perf|refactor|revert|style|test){1}(\([\s\w\.\-\p{Extended_Pictographic}]+\))?(!)?: ([\s\w \p{Extended_Pictographic}])+([\s\S]*)/.test(e),Js=e=>/^\:\w+\: (.*)$/.test(e),ne={OPEN_AI:"OPENAI_KEY",HUGGING:"HUGGING_COOKIE",CLOVA_X:"CLOVAX_COOKIE",ANTHROPIC:"ANTHROPIC_KEY"},_n=Object.values(ne).map(e=>e);class be{constructor(t){this.handleError$=n=>{let r="An error occurred";return n.message&&(r=n.message),ae({name:`${this.errorPrefix} ${r}`,value:r,isError:!0})},this.serviceName="AI",this.errorPrefix="ERROR",this.colors={primary:""}}buildPrompt(t,n,r,u,o){return`${Tn(t,u,o)}
31
+ Please just generate ${r} messages in numbered list format.
32
32
  Here are git diff:
33
- ${r}`}extractCommitMessageFromRawText(t,r){switch(t){case"conventional":const n=new RegExp(/(build|chore|ci|docs|feat|fix|perf|refactor|revert|style|test)(\(.*\))?: .*$/),u=r.match(n);return u?u[0].replace(/: (\w)/,(a,i)=>`: ${i.toLowerCase()}`):"";case"gitmoji":const o=new RegExp(/\:\w+\: (.*)$/),s=r.match(o);return s?s[0]:"";default:return r}}}const{hasOwnProperty:at}=Object.prototype,ge=typeof process<"u"&&process.platform==="win32"?`\r
34
- `:`
35
- `,Dt=(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 u=t.whitespace?" = ":"=";for(const o of Object.keys(e)){const s=e[o];if(s&&Array.isArray(s))for(const a of s)n+=W(o+"[]")+u+W(a)+ge;else s&&typeof s=="object"?r.push(o):n+=W(o)+u+W(s)+ge}t.section&&n.length&&(n="["+W(t.section)+"]"+ge+n);for(const o of r){const s=_n(o).join("\\."),a=(t.section?t.section+".":"")+s,{whitespace:i}=t,f=Dt(e[o],{section:a,whitespace:i});n.length&&f.length&&(n+=ge),n+=f}return n},_n=e=>e.replace(/\1/g,"LITERAL\\1LITERAL").replace(/\\\./g,"").split(/\./).map(t=>t.replace(/\1/g,"\\.").replace(/\2LITERAL\\1LITERAL\2/g,"")),Mn=e=>{const t=Object.create(null);let r=t,n=null;const u=/^\[([^\]]*)\]$|^([^=]+)(=(.*))?$/i,o=e.split(/[\r\n]+/g);for(const a of o){if(!a||a.match(/^\s*[;#]/))continue;const i=a.match(u);if(!i)continue;if(i[1]!==void 0){if(n=Fe(i[1]),n==="__proto__"){r=Object.create(null);continue}r=t[n]=t[n]||Object.create(null);continue}const f=Fe(i[2]),l=f.length>2&&f.slice(-2)==="[]",c=l?f.slice(0,-2):f;if(c==="__proto__")continue;const D=i[3]?Fe(i[4]):!0,d=D==="true"||D==="false"||D==="null"?JSON.parse(D):D;l&&(at.call(r,c)?Array.isArray(r[c])||(r[c]=[r[c]]):r[c]=[]),Array.isArray(r[c])?r[c].push(d):r[c]=d}const s=[];for(const a of Object.keys(t)){if(!at.call(t,a)||typeof t[a]!="object"||Array.isArray(t[a]))continue;const i=_n(a);r=t;const f=i.pop(),l=f.replace(/\\\./g,".");for(const c of i)c!=="__proto__"&&((!at.call(r,c)||typeof r[c]!="object")&&(r[c]=Object.create(null)),r=r[c]);r===t&&l===f||(r[l]=t[a],s.push(a))}for(const a of s)delete t[a];return t},Rn=e=>e.startsWith('"')&&e.endsWith('"')||e.startsWith("'")&&e.endsWith("'"),W=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("\\#"),Fe=(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 u=0,o=e.length;u<o;u++){const s=e.charAt(u);if(r)"\\;#".indexOf(s)!==-1?n+=s:n+="\\"+s,r=!1;else{if(";#".indexOf(s)!==-1)break;s==="\\"?r=!0:n+=s}}return r&&(n+="\\"),n.trim()}return e};var Js={parse:Mn,decode:Mn,stringify:Dt,encode:Dt,safe:W,unsafe:Fe},Nn=G(Js),kn="1.1.1",Zs="Reactive CLI that generates git commit messages with diverse AI";class B extends Error{}const ct=" ",Ee=e=>{e instanceof Error&&(e instanceof B||(e.stack&&console.error(g.dim(e.stack.split(`
33
+ ${n}`}extractCommitMessageFromRawText(t,n){switch(t){case"conventional":const r=new RegExp(/(build|chore|ci|docs|feat|fix|perf|refactor|revert|style|test)(\(.*\))?: .*$/),u=n.match(r);return u?u[0].replace(/: (\w)/,(a,i)=>`: ${i.toLowerCase()}`):"";case"gitmoji":const o=new RegExp(/\:\w+\: (.*)$/),s=n.match(o);return s?s[0]:"";default:return n}}}var Mn="1.2.0",Zs="Reactive CLI that generates git commit messages with various AI";class b extends Error{}const ct=" ",ve=e=>{e instanceof Error&&(e instanceof b||(e.stack&&console.error(C.dim(e.stack.split(`
36
34
  `).slice(1).join(`
37
35
  `))),console.error(`
38
- ${ct}${g.dim(`aicommit2 v${kn}`)}`),console.error(`
39
- ${ct}Please open a Bug report with the information above:`),console.error(`${ct}https://github.com/tak-bro/aicommit2/issues/new/choose`)))},Ln=e=>x.lstat(e).then(()=>!0,()=>!1),Qs=["","conventional","gitmoji"],{hasOwnProperty:ei}=Object.prototype,N=(e,t)=>ei.call(e,t),w=(e,t,r)=>{if(!t)throw new B(`Invalid config property ${e}: ${r}`)},ye={OPENAI_KEY(e){return e?(w("OPENAI_KEY",e.startsWith("sk-"),'Must start with "sk-"'),e):""},OPENAI_MODEL(e){return!e||e.length===0?"gpt-3.5-turbo":e},HUGGING_COOKIE(e){return e||""},HUGGING_MODEL(e){return!e||e.length===0?"mistralai/Mixtral-8x7B-Instruct-v0.1":(w("HUGGING_MODEL",["mistralai/Mixtral-8x7B-Instruct-v0.1","meta-llama/Llama-2-70b-chat-hf","NousResearch/Nous-Hermes-2-Mixtral-8x7B-DPO","codellama/CodeLlama-70b-Instruct-hf","mistralai/Mistral-7B-Instruct-v0.2","openchat/openchat-3.5-0106"].includes(e),"Invalid model type of hugging"),e)},CLOVAX_COOKIE(e){return e||""},GOOGLE_KEY(e){return e||""},CLAUDE_MODEL(e){return!e||e.length===0?"claude-2.1":e},CLAUDE_KEY(e){return e||""},confirm(e){return e?typeof e=="boolean"?e:(w("confirm",/^(?:true|false)$/.test(e),"Must be a boolean"),e==="true"):!1},locale(e){return e?(w("locale",e,"Cannot be empty"),w("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;w("generate",/^\d+$/.test(e),"Must be an integer");const t=Number(e);return w("generate",t>0,"Must be greater than 0"),w("generate",t<=5,"Must be less or equal to 5"),t},type(e){return e?(w("type",Qs.includes(e),"Invalid commit type"),e):"conventional"},proxy(e){if(!(!e||e.length===0))return w("proxy",/^https?:\/\//.test(e),"Must be a valid URL"),e},timeout(e){if(!e)return 1e4;w("timeout",/^\d+$/.test(e),"Must be an integer");const t=Number(e);return w("timeout",t>=500,"Must be greater than 500ms"),t},temperature(e){if(!e)return .7;w("temperature",/^(2|\d)(\.\d{1,2})?$/.test(e),"Must be decimal between 0 and 2");const t=Number(e);return w("temperature",t>0,"Must be greater than 0"),w("temperature",t<=2,"Must be less than or equal to 2"),t},"max-length"(e){if(!e)return 50;w("max-length",/^\d+$/.test(e),"Must be an integer");const t=Number(e);return w("max-length",t>=20,"Must be greater than 20 characters"),t},"max-tokens"(e){return e?(w("max-tokens",/^\d+$/.test(e),"Must be an integer"),Number(e)):200}},lt=j.join(Mt.homedir(),".aicommit2"),jn=async()=>{if(!await Ln(lt))return Object.create(null);const t=await x.readFile(lt,"utf8");return Nn.parse(t)},ft=async(e,t)=>{const r=await jn(),n={};for(const u of Object.keys(ye)){const o=ye[u],s=e?.[u]??r[u];if(t)try{n[u]=o(s)}catch{}else n[u]=o(s)}return n},ti=async e=>{const t=await jn();for(const[r,n]of e){if(!N(ye,r))throw new B(`Invalid config property: ${r}`);const u=ye[r](n);t[r]=u}await x.writeFile(lt,Nn.stringify(t),"utf8")};var dt={},pt={exports:{}},ee={exports:{}},mt,Gn;function ni(){if(Gn)return mt;Gn=1;var e=1e3,t=e*60,r=t*60,n=r*24,u=n*7,o=n*365.25;mt=function(l,c){c=c||{};var D=typeof l;if(D==="string"&&l.length>0)return s(l);if(D==="number"&&isFinite(l))return c.long?i(l):a(l);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(l))};function s(l){if(l=String(l),!(l.length>100)){var c=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(l);if(c){var D=parseFloat(c[1]),d=(c[2]||"ms").toLowerCase();switch(d){case"years":case"year":case"yrs":case"yr":case"y":return D*o;case"weeks":case"week":case"w":return D*u;case"days":case"day":case"d":return D*n;case"hours":case"hour":case"hrs":case"hr":case"h":return D*r;case"minutes":case"minute":case"mins":case"min":case"m":return D*t;case"seconds":case"second":case"secs":case"sec":case"s":return D*e;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return D;default:return}}}}function a(l){var c=Math.abs(l);return c>=n?Math.round(l/n)+"d":c>=r?Math.round(l/r)+"h":c>=t?Math.round(l/t)+"m":c>=e?Math.round(l/e)+"s":l+"ms"}function i(l){var c=Math.abs(l);return c>=n?f(l,c,n,"day"):c>=r?f(l,c,r,"hour"):c>=t?f(l,c,t,"minute"):c>=e?f(l,c,e,"second"):l+" ms"}function f(l,c,D,d){var p=c>=D*1.5;return Math.round(l/D)+" "+d+(p?"s":"")}return mt}var ht,Un;function Hn(){if(Un)return ht;Un=1;function e(t){n.debug=n,n.default=n,n.coerce=f,n.disable=s,n.enable=o,n.enabled=a,n.humanize=ni(),n.destroy=l,Object.keys(t).forEach(c=>{n[c]=t[c]}),n.names=[],n.skips=[],n.formatters={};function r(c){let D=0;for(let d=0;d<c.length;d++)D=(D<<5)-D+c.charCodeAt(d),D|=0;return n.colors[Math.abs(D)%n.colors.length]}n.selectColor=r;function n(c){let D,d=null,p,m;function h(...C){if(!h.enabled)return;const E=h,$=Number(new Date),k=$-(D||$);E.diff=k,E.prev=D,E.curr=$,D=$,C[0]=n.coerce(C[0]),typeof C[0]!="string"&&C.unshift("%O");let I=0;C[0]=C[0].replace(/%([a-zA-Z%])/g,(T,sr)=>{if(T==="%%")return"%";I++;const xt=n.formatters[sr];if(typeof xt=="function"){const ir=C[I];T=xt.call(E,ir),C.splice(I,1),I--}return T}),n.formatArgs.call(E,C),(E.log||n.log).apply(E,C)}return h.namespace=c,h.useColors=n.useColors(),h.color=n.selectColor(c),h.extend=u,h.destroy=n.destroy,Object.defineProperty(h,"enabled",{enumerable:!0,configurable:!1,get:()=>d!==null?d:(p!==n.namespaces&&(p=n.namespaces,m=n.enabled(c)),m),set:C=>{d=C}}),typeof n.init=="function"&&n.init(h),h}function u(c,D){const d=n(this.namespace+(typeof D>"u"?":":D)+c);return d.log=this.log,d}function o(c){n.save(c),n.namespaces=c,n.names=[],n.skips=[];let D;const d=(typeof c=="string"?c:"").split(/[\s,]+/),p=d.length;for(D=0;D<p;D++)d[D]&&(c=d[D].replace(/\*/g,".*?"),c[0]==="-"?n.skips.push(new RegExp("^"+c.slice(1)+"$")):n.names.push(new RegExp("^"+c+"$")))}function s(){const c=[...n.names.map(i),...n.skips.map(i).map(D=>"-"+D)].join(",");return n.enable(""),c}function a(c){if(c[c.length-1]==="*")return!0;let D,d;for(D=0,d=n.skips.length;D<d;D++)if(n.skips[D].test(c))return!1;for(D=0,d=n.names.length;D<d;D++)if(n.names[D].test(c))return!0;return!1}function i(c){return c.toString().substring(2,c.toString().length-2).replace(/\.\*\?$/,"*")}function f(c){return c instanceof Error?c.stack||c.message:c}function l(){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 ht=e,ht}ee.exports;var qn;function ri(){return qn||(qn=1,function(e,t){t.formatArgs=n,t.save=u,t.load=o,t.useColors=r,t.storage=s(),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 f="color: "+this.color;i.splice(1,0,f,"color: inherit");let l=0,c=0;i[0].replace(/%[a-zA-Z%]/g,D=>{D!=="%%"&&(l++,D==="%c"&&(c=l))}),i.splice(c,0,f)}t.log=console.debug||console.log||(()=>{});function u(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 s(){try{return localStorage}catch{}}e.exports=Hn()(t);const{formatters:a}=e.exports;a.j=function(i){try{return JSON.stringify(i)}catch(f){return"[UnexpectedJSONParseError]: "+f.message}}}(ee,ee.exports)),ee.exports}var te={exports:{}},Ct,Kn;function ui(){return Kn||(Kn=1,Ct=(e,t=process.argv)=>{const r=e.startsWith("-")?"":e.length===1?"-":"--",n=t.indexOf(r+e),u=t.indexOf("--");return n!==-1&&(u===-1||n<u)}),Ct}var gt,zn;function oi(){if(zn)return gt;zn=1;const e=Mt,t=Be,r=ui(),{env:n}=process;let u;r("no-color")||r("no-colors")||r("color=false")||r("color=never")?u=0:(r("color")||r("colors")||r("color=true")||r("color=always"))&&(u=1),"FORCE_COLOR"in n&&(n.FORCE_COLOR==="true"?u=1:n.FORCE_COLOR==="false"?u=0:u=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 s(i,f){if(u===0)return 0;if(r("color=16m")||r("color=full")||r("color=truecolor"))return 3;if(r("color=256"))return 2;if(i&&!f&&u===void 0)return 0;const l=u||0;if(n.TERM==="dumb")return l;if(process.platform==="win32"){const c=e.release().split(".");return Number(c[0])>=10&&Number(c[2])>=10586?Number(c[2])>=14931?3:2:1}if("CI"in n)return["TRAVIS","CIRCLECI","APPVEYOR","GITLAB_CI","GITHUB_ACTIONS","BUILDKITE"].some(c=>c in n)||n.CI_NAME==="codeship"?1:l;if("TEAMCITY_VERSION"in n)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(n.TEAMCITY_VERSION)?1:0;if(n.COLORTERM==="truecolor")return 3;if("TERM_PROGRAM"in n){const c=parseInt((n.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(n.TERM_PROGRAM){case"iTerm.app":return c>=3?3:2;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test(n.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(n.TERM)||"COLORTERM"in n?1:l}function a(i){const f=s(i,i&&i.isTTY);return o(f)}return gt={supportsColor:a,stdout:o(s(!0,t.isatty(1))),stderr:o(s(!0,t.isatty(2)))},gt}te.exports;var Wn;function si(){return Wn||(Wn=1,function(e,t){const r=Be,n=Tt;t.init=l,t.log=a,t.formatArgs=o,t.save=i,t.load=f,t.useColors=u,t.destroy=n.deprecate(()=>{},"Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."),t.colors=[6,2,3,4,5,1];try{const D=oi();D&&(D.stderr||D).level>=2&&(t.colors=[20,21,26,27,32,33,38,39,40,41,42,43,44,45,56,57,62,63,68,69,74,75,76,77,78,79,80,81,92,93,98,99,112,113,128,129,134,135,148,149,160,161,162,163,164,165,166,167,168,169,170,171,172,173,178,179,184,185,196,197,198,199,200,201,202,203,204,205,206,207,208,209,214,215,220,221])}catch{}t.inspectOpts=Object.keys(process.env).filter(D=>/^debug_/i.test(D)).reduce((D,d)=>{const p=d.substring(6).toLowerCase().replace(/_([a-z])/g,(h,C)=>C.toUpperCase());let m=process.env[d];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),D[p]=m,D},{});function u(){return"colors"in t.inspectOpts?!!t.inspectOpts.colors:r.isatty(process.stderr.fd)}function o(D){const{namespace:d,useColors:p}=this;if(p){const m=this.color,h="\x1B[3"+(m<8?m:"8;5;"+m),C=` ${h};1m${d} \x1B[0m`;D[0]=C+D[0].split(`
36
+ ${ct}${C.dim(`aicommit2 v${Mn}`)}`),console.error(`
37
+ ${ct}Please open a Bug report with the information above:`),console.error(`${ct}https://github.com/tak-bro/aicommit2/issues/new/choose`)))};var lt={},ft={exports:{}},re={exports:{}},dt,Nn;function Qs(){if(Nn)return dt;Nn=1;var e=1e3,t=e*60,n=t*60,r=n*24,u=r*7,o=r*365.25;dt=function(l,c){c=c||{};var D=typeof l;if(D==="string"&&l.length>0)return s(l);if(D==="number"&&isFinite(l))return c.long?i(l):a(l);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(l))};function s(l){if(l=String(l),!(l.length>100)){var c=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(l);if(c){var D=parseFloat(c[1]),d=(c[2]||"ms").toLowerCase();switch(d){case"years":case"year":case"yrs":case"yr":case"y":return D*o;case"weeks":case"week":case"w":return D*u;case"days":case"day":case"d":return D*r;case"hours":case"hour":case"hrs":case"hr":case"h":return D*n;case"minutes":case"minute":case"mins":case"min":case"m":return D*t;case"seconds":case"second":case"secs":case"sec":case"s":return D*e;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return D;default:return}}}}function a(l){var c=Math.abs(l);return c>=r?Math.round(l/r)+"d":c>=n?Math.round(l/n)+"h":c>=t?Math.round(l/t)+"m":c>=e?Math.round(l/e)+"s":l+"ms"}function i(l){var c=Math.abs(l);return c>=r?f(l,c,r,"day"):c>=n?f(l,c,n,"hour"):c>=t?f(l,c,t,"minute"):c>=e?f(l,c,e,"second"):l+" ms"}function f(l,c,D,d){var p=c>=D*1.5;return Math.round(l/D)+" "+d+(p?"s":"")}return dt}var pt,Rn;function kn(){if(Rn)return pt;Rn=1;function e(t){r.debug=r,r.default=r,r.coerce=f,r.disable=s,r.enable=o,r.enabled=a,r.humanize=Qs(),r.destroy=l,Object.keys(t).forEach(c=>{r[c]=t[c]}),r.names=[],r.skips=[],r.formatters={};function n(c){let D=0;for(let d=0;d<c.length;d++)D=(D<<5)-D+c.charCodeAt(d),D|=0;return r.colors[Math.abs(D)%r.colors.length]}r.selectColor=n;function r(c){let D,d=null,p,m;function h(...g){if(!h.enabled)return;const E=h,$=Number(new Date),k=$-(D||$);E.diff=k,E.prev=D,E.curr=$,D=$,g[0]=r.coerce(g[0]),typeof g[0]!="string"&&g.unshift("%O");let I=0;g[0]=g[0].replace(/%([a-zA-Z%])/g,(T,ir)=>{if(T==="%%")return"%";I++;const Ot=r.formatters[ir];if(typeof Ot=="function"){const ar=g[I];T=Ot.call(E,ar),g.splice(I,1),I--}return T}),r.formatArgs.call(E,g),(E.log||r.log).apply(E,g)}return h.namespace=c,h.useColors=r.useColors(),h.color=r.selectColor(c),h.extend=u,h.destroy=r.destroy,Object.defineProperty(h,"enabled",{enumerable:!0,configurable:!1,get:()=>d!==null?d:(p!==r.namespaces&&(p=r.namespaces,m=r.enabled(c)),m),set:g=>{d=g}}),typeof r.init=="function"&&r.init(h),h}function u(c,D){const d=r(this.namespace+(typeof D>"u"?":":D)+c);return d.log=this.log,d}function o(c){r.save(c),r.namespaces=c,r.names=[],r.skips=[];let D;const d=(typeof c=="string"?c:"").split(/[\s,]+/),p=d.length;for(D=0;D<p;D++)d[D]&&(c=d[D].replace(/\*/g,".*?"),c[0]==="-"?r.skips.push(new RegExp("^"+c.slice(1)+"$")):r.names.push(new RegExp("^"+c+"$")))}function s(){const c=[...r.names.map(i),...r.skips.map(i).map(D=>"-"+D)].join(",");return r.enable(""),c}function a(c){if(c[c.length-1]==="*")return!0;let D,d;for(D=0,d=r.skips.length;D<d;D++)if(r.skips[D].test(c))return!1;for(D=0,d=r.names.length;D<d;D++)if(r.names[D].test(c))return!0;return!1}function i(c){return c.toString().substring(2,c.toString().length-2).replace(/\.\*\?$/,"*")}function f(c){return c instanceof Error?c.stack||c.message:c}function l(){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 r.enable(r.load()),r}return pt=e,pt}re.exports;var Ln;function ei(){return Ln||(Ln=1,function(e,t){t.formatArgs=r,t.save=u,t.load=o,t.useColors=n,t.storage=s(),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 n(){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 r(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 f="color: "+this.color;i.splice(1,0,f,"color: inherit");let l=0,c=0;i[0].replace(/%[a-zA-Z%]/g,D=>{D!=="%%"&&(l++,D==="%c"&&(c=l))}),i.splice(c,0,f)}t.log=console.debug||console.log||(()=>{});function u(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 s(){try{return localStorage}catch{}}e.exports=kn()(t);const{formatters:a}=e.exports;a.j=function(i){try{return JSON.stringify(i)}catch(f){return"[UnexpectedJSONParseError]: "+f.message}}}(re,re.exports)),re.exports}var ue={exports:{}},mt,jn;function ti(){return jn||(jn=1,mt=(e,t=process.argv)=>{const n=e.startsWith("-")?"":e.length===1?"-":"--",r=t.indexOf(n+e),u=t.indexOf("--");return r!==-1&&(u===-1||r<u)}),mt}var ht,Gn;function ni(){if(Gn)return ht;Gn=1;const e=Nt,t=Pe,n=ti(),{env:r}=process;let u;n("no-color")||n("no-colors")||n("color=false")||n("color=never")?u=0:(n("color")||n("colors")||n("color=true")||n("color=always"))&&(u=1),"FORCE_COLOR"in r&&(r.FORCE_COLOR==="true"?u=1:r.FORCE_COLOR==="false"?u=0:u=r.FORCE_COLOR.length===0?1:Math.min(parseInt(r.FORCE_COLOR,10),3));function o(i){return i===0?!1:{level:i,hasBasic:!0,has256:i>=2,has16m:i>=3}}function s(i,f){if(u===0)return 0;if(n("color=16m")||n("color=full")||n("color=truecolor"))return 3;if(n("color=256"))return 2;if(i&&!f&&u===void 0)return 0;const l=u||0;if(r.TERM==="dumb")return l;if(process.platform==="win32"){const c=e.release().split(".");return Number(c[0])>=10&&Number(c[2])>=10586?Number(c[2])>=14931?3:2:1}if("CI"in r)return["TRAVIS","CIRCLECI","APPVEYOR","GITLAB_CI","GITHUB_ACTIONS","BUILDKITE"].some(c=>c in r)||r.CI_NAME==="codeship"?1:l;if("TEAMCITY_VERSION"in r)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(r.TEAMCITY_VERSION)?1:0;if(r.COLORTERM==="truecolor")return 3;if("TERM_PROGRAM"in r){const c=parseInt((r.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(r.TERM_PROGRAM){case"iTerm.app":return c>=3?3:2;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test(r.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(r.TERM)||"COLORTERM"in r?1:l}function a(i){const f=s(i,i&&i.isTTY);return o(f)}return ht={supportsColor:a,stdout:o(s(!0,t.isatty(1))),stderr:o(s(!0,t.isatty(2)))},ht}ue.exports;var Hn;function ri(){return Hn||(Hn=1,function(e,t){const n=Pe,r=_t;t.init=l,t.log=a,t.formatArgs=o,t.save=i,t.load=f,t.useColors=u,t.destroy=r.deprecate(()=>{},"Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."),t.colors=[6,2,3,4,5,1];try{const D=ni();D&&(D.stderr||D).level>=2&&(t.colors=[20,21,26,27,32,33,38,39,40,41,42,43,44,45,56,57,62,63,68,69,74,75,76,77,78,79,80,81,92,93,98,99,112,113,128,129,134,135,148,149,160,161,162,163,164,165,166,167,168,169,170,171,172,173,178,179,184,185,196,197,198,199,200,201,202,203,204,205,206,207,208,209,214,215,220,221])}catch{}t.inspectOpts=Object.keys(process.env).filter(D=>/^debug_/i.test(D)).reduce((D,d)=>{const p=d.substring(6).toLowerCase().replace(/_([a-z])/g,(h,g)=>g.toUpperCase());let m=process.env[d];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),D[p]=m,D},{});function u(){return"colors"in t.inspectOpts?!!t.inspectOpts.colors:n.isatty(process.stderr.fd)}function o(D){const{namespace:d,useColors:p}=this;if(p){const m=this.color,h="\x1B[3"+(m<8?m:"8;5;"+m),g=` ${h};1m${d} \x1B[0m`;D[0]=g+D[0].split(`
40
38
  `).join(`
41
- `+C),D.push(h+"m+"+e.exports.humanize(this.diff)+"\x1B[0m")}else D[0]=s()+d+" "+D[0]}function s(){return t.inspectOpts.hideDate?"":new Date().toISOString()+" "}function a(...D){return process.stderr.write(n.format(...D)+`
42
- `)}function i(D){D?process.env.DEBUG=D:delete process.env.DEBUG}function f(){return process.env.DEBUG}function l(D){D.inspectOpts={};const d=Object.keys(t.inspectOpts);for(let p=0;p<d.length;p++)D.inspectOpts[d[p]]=t.inspectOpts[d[p]]}e.exports=Hn()(t);const{formatters:c}=e.exports;c.o=function(D){return this.inspectOpts.colors=this.useColors,n.inspect(D,this.inspectOpts).split(`
43
- `).map(d=>d.trim()).join(" ")},c.O=function(D){return this.inspectOpts.colors=this.useColors,n.inspect(D,this.inspectOpts)}}(te,te.exports)),te.exports}typeof process>"u"||process.type==="renderer"||process.browser===!0||process.__nwjs?pt.exports=ri():pt.exports=si();var Ft=pt.exports,Et={};Object.defineProperty(Et,"__esModule",{value:!0});function ii(e){return function(t,r){return new Promise((n,u)=>{e.call(this,t,r,(o,s)=>{o?u(o):n(s)})})}}Et.default=ii;var Vn=y&&y.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};const ai=Pt,Di=Vn(Ft),ci=Vn(Et),ne=Di.default("agent-base");function li(e){return!!e&&typeof e.addRequest=="function"}function yt(){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 we(e,t){return new we.Agent(e,t)}(function(e){class t extends ai.EventEmitter{constructor(n,u){super();let o=u;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:yt()?443:80}set defaultPort(n){this.explicitDefaultPort=n}get protocol(){return typeof this.explicitProtocol=="string"?this.explicitProtocol:yt()?"https:":"http:"}set protocol(n){this.explicitProtocol=n}callback(n,u,o){throw new Error('"agent-base" has no default implementation, you must subclass and override `callback()`')}addRequest(n,u){const o=Object.assign({},u);typeof o.secureEndpoint!="boolean"&&(o.secureEndpoint=yt()),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 s=!1,a=null;const i=o.timeout||this.timeout,f=d=>{n._hadError||(n.emit("error",d),n._hadError=!0)},l=()=>{a=null,s=!0;const d=new Error(`A "socket" was not created for HTTP request before ${i}ms`);d.code="ETIMEOUT",f(d)},c=d=>{s||(a!==null&&(clearTimeout(a),a=null),f(d))},D=d=>{if(s)return;if(a!=null&&(clearTimeout(a),a=null),li(d)){ne("Callback returned another Agent instance %o",d.constructor.name),d.addRequest(n,o);return}if(d){d.once("free",()=>{this.freeSocket(d,o)}),n.onSocket(d);return}const p=new Error(`no Duplex stream was returned to agent-base for \`${n.method} ${n.path}\``);f(p)};if(typeof this.callback!="function"){f(new Error("`callback` is not defined"));return}this.promisifiedCallback||(this.callback.length>=3?(ne("Converting legacy callback function to promise"),this.promisifiedCallback=ci.default(this.callback)):this.promisifiedCallback=this.callback),typeof i=="number"&&i>0&&(a=setTimeout(l,i)),"port"in o&&typeof o.port!="number"&&(o.port=Number(o.port));try{ne("Resolving socket for %o request: %o",o.protocol,`${n.method} ${n.path}`),Promise.resolve(this.promisifiedCallback(n,o)).then(D,c)}catch(d){Promise.reject(d).catch(c)}}freeSocket(n,u){ne("Freeing socket %o %o",n.constructor.name,u),n.destroy()}destroy(){ne("Destroying agent %o",this.constructor.name)}}e.Agent=t,e.prototype=e.Agent.prototype})(we||(we={}));var fi=we,wt={},di=y&&y.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(wt,"__esModule",{value:!0});const pi=di(Ft),re=pi.default("https-proxy-agent:parse-proxy-response");function mi(e){return new Promise((t,r)=>{let n=0;const u=[];function o(){const c=e.read();c?l(c):e.once("readable",o)}function s(){e.removeListener("end",i),e.removeListener("error",f),e.removeListener("close",a),e.removeListener("readable",o)}function a(c){re("onclose had error %o",c)}function i(){re("onend")}function f(c){s(),re("onerror %o",c),r(c)}function l(c){u.push(c),n+=c.length;const D=Buffer.concat(u,n);if(D.indexOf(`\r
39
+ `+g),D.push(h+"m+"+e.exports.humanize(this.diff)+"\x1B[0m")}else D[0]=s()+d+" "+D[0]}function s(){return t.inspectOpts.hideDate?"":new Date().toISOString()+" "}function a(...D){return process.stderr.write(r.format(...D)+`
40
+ `)}function i(D){D?process.env.DEBUG=D:delete process.env.DEBUG}function f(){return process.env.DEBUG}function l(D){D.inspectOpts={};const d=Object.keys(t.inspectOpts);for(let p=0;p<d.length;p++)D.inspectOpts[d[p]]=t.inspectOpts[d[p]]}e.exports=kn()(t);const{formatters:c}=e.exports;c.o=function(D){return this.inspectOpts.colors=this.useColors,r.inspect(D,this.inspectOpts).split(`
41
+ `).map(d=>d.trim()).join(" ")},c.O=function(D){return this.inspectOpts.colors=this.useColors,r.inspect(D,this.inspectOpts)}}(ue,ue.exports)),ue.exports}typeof process>"u"||process.type==="renderer"||process.browser===!0||process.__nwjs?ft.exports=ei():ft.exports=ri();var Ct=ft.exports,gt={};Object.defineProperty(gt,"__esModule",{value:!0});function ui(e){return function(t,n){return new Promise((r,u)=>{e.call(this,t,n,(o,s)=>{o?u(o):r(s)})})}}gt.default=ui;var Un=w&&w.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};const oi=Tt,si=Un(Ct),ii=Un(gt),oe=si.default("agent-base");function ai(e){return!!e&&typeof e.addRequest=="function"}function Ft(){const{stack:e}=new Error;return typeof e!="string"?!1:e.split(`
42
+ `).some(t=>t.indexOf("(https.js:")!==-1||t.indexOf("node:https:")!==-1)}function Ae(e,t){return new Ae.Agent(e,t)}(function(e){class t extends oi.EventEmitter{constructor(r,u){super();let o=u;typeof r=="function"?this.callback=r:r&&(o=r),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:Ft()?443:80}set defaultPort(r){this.explicitDefaultPort=r}get protocol(){return typeof this.explicitProtocol=="string"?this.explicitProtocol:Ft()?"https:":"http:"}set protocol(r){this.explicitProtocol=r}callback(r,u,o){throw new Error('"agent-base" has no default implementation, you must subclass and override `callback()`')}addRequest(r,u){const o=Object.assign({},u);typeof o.secureEndpoint!="boolean"&&(o.secureEndpoint=Ft()),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,r._last=!0,r.shouldKeepAlive=!1;let s=!1,a=null;const i=o.timeout||this.timeout,f=d=>{r._hadError||(r.emit("error",d),r._hadError=!0)},l=()=>{a=null,s=!0;const d=new Error(`A "socket" was not created for HTTP request before ${i}ms`);d.code="ETIMEOUT",f(d)},c=d=>{s||(a!==null&&(clearTimeout(a),a=null),f(d))},D=d=>{if(s)return;if(a!=null&&(clearTimeout(a),a=null),ai(d)){oe("Callback returned another Agent instance %o",d.constructor.name),d.addRequest(r,o);return}if(d){d.once("free",()=>{this.freeSocket(d,o)}),r.onSocket(d);return}const p=new Error(`no Duplex stream was returned to agent-base for \`${r.method} ${r.path}\``);f(p)};if(typeof this.callback!="function"){f(new Error("`callback` is not defined"));return}this.promisifiedCallback||(this.callback.length>=3?(oe("Converting legacy callback function to promise"),this.promisifiedCallback=ii.default(this.callback)):this.promisifiedCallback=this.callback),typeof i=="number"&&i>0&&(a=setTimeout(l,i)),"port"in o&&typeof o.port!="number"&&(o.port=Number(o.port));try{oe("Resolving socket for %o request: %o",o.protocol,`${r.method} ${r.path}`),Promise.resolve(this.promisifiedCallback(r,o)).then(D,c)}catch(d){Promise.reject(d).catch(c)}}freeSocket(r,u){oe("Freeing socket %o %o",r.constructor.name,u),r.destroy()}destroy(){oe("Destroying agent %o",this.constructor.name)}}e.Agent=t,e.prototype=e.Agent.prototype})(Ae||(Ae={}));var Di=Ae,Et={},ci=w&&w.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Et,"__esModule",{value:!0});const li=ci(Ct),se=li.default("https-proxy-agent:parse-proxy-response");function fi(e){return new Promise((t,n)=>{let r=0;const u=[];function o(){const c=e.read();c?l(c):e.once("readable",o)}function s(){e.removeListener("end",i),e.removeListener("error",f),e.removeListener("close",a),e.removeListener("readable",o)}function a(c){se("onclose had error %o",c)}function i(){se("onend")}function f(c){s(),se("onerror %o",c),n(c)}function l(c){u.push(c),r+=c.length;const D=Buffer.concat(u,r);if(D.indexOf(`\r
45
43
  \r
46
- `)===-1){re("have not received end of HTTP headers yet..."),o();return}const p=D.toString("ascii",0,D.indexOf(`\r
47
- `)),m=+p.split(" ")[1];re("got proxy server response: %o",p),t({statusCode:m,buffered:D})}e.on("error",f),e.on("close",a),e.on("end",i),o()})}wt.default=mi;var hi=y&&y.__awaiter||function(e,t,r,n){function u(o){return o instanceof r?o:new r(function(s){s(o)})}return new(r||(r=Promise))(function(o,s){function a(l){try{f(n.next(l))}catch(c){s(c)}}function i(l){try{f(n.throw(l))}catch(c){s(c)}}function f(l){l.done?o(l.value):u(l.value).then(a,i)}f((n=n.apply(e,t||[])).next())})},V=y&&y.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(dt,"__esModule",{value:!0});const Yn=V(wr),Xn=V(br),Ci=V(vr),gi=V(It),Fi=V(Ft),Ei=fi,yi=V(wt),ue=Fi.default("https-proxy-agent:agent");class wi extends Ei.Agent{constructor(t){let r;if(typeof t=="string"?r=Ci.default.parse(t):r=t,!r)throw new Error("an HTTP(S) proxy server `host` and `port` must be specified!");ue("creating new HttpsProxyAgent instance: %o",r),super(r);const n=Object.assign({},r);this.secureProxy=r.secureProxy||Bi(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 hi(this,void 0,void 0,function*(){const{proxy:n,secureProxy:u}=this;let o;u?(ue("Creating `tls.Socket`: %o",n),o=Xn.default.connect(n)):(ue("Creating `net.Socket`: %o",n),o=Yn.default.connect(n));const s=Object.assign({},n.headers);let i=`CONNECT ${`${r.host}:${r.port}`} HTTP/1.1\r
48
- `;n.auth&&(s["Proxy-Authorization"]=`Basic ${Buffer.from(n.auth).toString("base64")}`);let{host:f,port:l,secureEndpoint:c}=r;vi(l,c)||(f+=`:${l}`),s.Host=f,s.Connection="close";for(const h of Object.keys(s))i+=`${h}: ${s[h]}\r
49
- `;const D=yi.default(o);o.write(`${i}\r
50
- `);const{statusCode:d,buffered:p}=yield D;if(d===200){if(t.once("socket",bi),r.secureEndpoint){ue("Upgrading socket connection to TLS");const h=r.servername||r.host;return Xn.default.connect(Object.assign(Object.assign({},Ai(r,"host","hostname","path","port")),{socket:o,servername:h}))}return o}o.destroy();const m=new Yn.default.Socket({writable:!1});return m.readable=!0,t.once("socket",h=>{ue("replaying proxy buffer for failed request"),gi.default(h.listenerCount("data")>0),h.push(p),h.push(null)}),m})}}dt.default=wi;function bi(e){e.resume()}function vi(e,t){return!!(!t&&e===80||t&&e===443)}function Bi(e){return typeof e=="string"?/^https:?$/i.test(e):!1}function Ai(e,...t){const r={};let n;for(n in e)t.includes(n)||(r[n]=e[n]);return r}var $i=y&&y.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};const bt=$i(dt);function vt(e){return new bt.default(e)}(function(e){e.HttpsProxyAgent=bt.default,e.prototype=bt.default.prototype})(vt||(vt={}));var xi=vt,Oi=G(xi);const Si=async(e,t,r,n,u,o,s)=>new Promise((a,i)=>{const f=JSON.stringify(n),l=yr.request({port:s||void 0,hostname:e,path:t,method:"POST",headers:{"Content-Type":"application/json","Content-Length":Buffer.byteLength(f),...r},timeout:u,agent:o?Oi(o):void 0},c=>{const D=[];c.on("data",d=>D.push(d)),c.on("end",()=>{a({request:l,response:c,data:Buffer.concat(D).toString()})})});l.on("error",i),l.on("timeout",()=>{l.destroy(),i(new B(`Time out error: request took over ${u}ms. Try increasing the \`timeout\` config`))}),l.write(f),l.end()}),Ii=async(e,t,r,n)=>{const{response:u,data:o}=await Si("api.openai.com","/v1/chat/completions",{Authorization:`Bearer ${e}`},t,r,n);if(!u.statusCode||u.statusCode<200||u.statusCode>299){let s=`OpenAI API Error: ${u.statusCode} - ${u.statusMessage}`;throw o&&(s+=`
44
+ `)===-1){se("have not received end of HTTP headers yet..."),o();return}const p=D.toString("ascii",0,D.indexOf(`\r
45
+ `)),m=+p.split(" ")[1];se("got proxy server response: %o",p),t({statusCode:m,buffered:D})}e.on("error",f),e.on("close",a),e.on("end",i),o()})}Et.default=fi;var di=w&&w.__awaiter||function(e,t,n,r){function u(o){return o instanceof n?o:new n(function(s){s(o)})}return new(n||(n=Promise))(function(o,s){function a(l){try{f(r.next(l))}catch(c){s(c)}}function i(l){try{f(r.throw(l))}catch(c){s(c)}}function f(l){l.done?o(l.value):u(l.value).then(a,i)}f((r=r.apply(e,t||[])).next())})},W=w&&w.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(lt,"__esModule",{value:!0});const qn=W(yr),Kn=W(wr),pi=W(br),mi=W(Pt),hi=W(Ct),Ci=Di,gi=W(Et),ie=hi.default("https-proxy-agent:agent");class Fi extends Ci.Agent{constructor(t){let n;if(typeof t=="string"?n=pi.default.parse(t):n=t,!n)throw new Error("an HTTP(S) proxy server `host` and `port` must be specified!");ie("creating new HttpsProxyAgent instance: %o",n),super(n);const r=Object.assign({},n);this.secureProxy=n.secureProxy||wi(r.protocol),r.host=r.hostname||r.host,typeof r.port=="string"&&(r.port=parseInt(r.port,10)),!r.port&&r.host&&(r.port=this.secureProxy?443:80),this.secureProxy&&!("ALPNProtocols"in r)&&(r.ALPNProtocols=["http 1.1"]),r.host&&r.path&&(delete r.path,delete r.pathname),this.proxy=r}callback(t,n){return di(this,void 0,void 0,function*(){const{proxy:r,secureProxy:u}=this;let o;u?(ie("Creating `tls.Socket`: %o",r),o=Kn.default.connect(r)):(ie("Creating `net.Socket`: %o",r),o=qn.default.connect(r));const s=Object.assign({},r.headers);let i=`CONNECT ${`${n.host}:${n.port}`} HTTP/1.1\r
46
+ `;r.auth&&(s["Proxy-Authorization"]=`Basic ${Buffer.from(r.auth).toString("base64")}`);let{host:f,port:l,secureEndpoint:c}=n;yi(l,c)||(f+=`:${l}`),s.Host=f,s.Connection="close";for(const h of Object.keys(s))i+=`${h}: ${s[h]}\r
47
+ `;const D=gi.default(o);o.write(`${i}\r
48
+ `);const{statusCode:d,buffered:p}=yield D;if(d===200){if(t.once("socket",Ei),n.secureEndpoint){ie("Upgrading socket connection to TLS");const h=n.servername||n.host;return Kn.default.connect(Object.assign(Object.assign({},bi(n,"host","hostname","path","port")),{socket:o,servername:h}))}return o}o.destroy();const m=new qn.default.Socket({writable:!1});return m.readable=!0,t.once("socket",h=>{ie("replaying proxy buffer for failed request"),mi.default(h.listenerCount("data")>0),h.push(p),h.push(null)}),m})}}lt.default=Fi;function Ei(e){e.resume()}function yi(e,t){return!!(!t&&e===80||t&&e===443)}function wi(e){return typeof e=="string"?/^https:?$/i.test(e):!1}function bi(e,...t){const n={};let r;for(r in e)t.includes(r)||(n[r]=e[r]);return n}var vi=w&&w.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};const yt=vi(lt);function wt(e){return new yt.default(e)}(function(e){e.HttpsProxyAgent=yt.default,e.prototype=yt.default.prototype})(wt||(wt={}));var Ai=wt,Bi=G(Ai);const $i=async(e,t,n,r,u,o,s)=>new Promise((a,i)=>{const f=JSON.stringify(r),l=Er.request({port:s||void 0,hostname:e,path:t,method:"POST",headers:{"Content-Type":"application/json","Content-Length":Buffer.byteLength(f),...n},timeout:u,agent:o?Bi(o):void 0},c=>{const D=[];c.on("data",d=>D.push(d)),c.on("end",()=>{a({request:l,response:c,data:Buffer.concat(D).toString()})})});l.on("error",i),l.on("timeout",()=>{l.destroy(),i(new b(`Time out error: request took over ${u}ms. Try increasing the \`timeout\` config`))}),l.write(f),l.end()}),xi=async(e,t,n,r)=>{const{response:u,data:o}=await $i("api.openai.com","/v1/chat/completions",{Authorization:`Bearer ${e}`},t,n,r);if(!u.statusCode||u.statusCode<200||u.statusCode>299){let s=`OpenAI API Error: ${u.statusCode} - ${u.statusMessage}`;throw o&&(s+=`
51
49
 
52
50
  ${o}`),u.statusCode===500&&(s+=`
53
51
 
54
- Check the API status: https://status.openai.com`),new B(s)}return JSON.parse(o)},Pi=e=>e.trim().replace(/[\n\r]/g,"").replace(/(\w)\.$/,"$1"),Bt=e=>Array.from(new Set(e)),Ti=async(e,t,r,n,u,o,s,a,i,f,l)=>{try{const c=await Ii(e,{model:t,messages:[{role:"system",content:Pn(r,o,s)},{role:"user",content:n}],temperature:f,top_p:1,frequency_penalty:0,presence_penalty:0,max_tokens:i,stream:!1,n:u},a,l);return Bt(c.choices.filter(D=>D.message?.content).map(D=>Pi(D.message.content)).map(D=>{if(s==="conventional"){const d=/: (\w)/;return D.replace(d,(p,m)=>`: ${m.toLowerCase()}`)}return D}).filter(D=>{switch(s){case"gitmoji":return Xs(D);case"conventional":return Ys(D);case"":default:return!0}}))}catch(c){const D=c;throw D.code==="ENOTFOUND"?new B(`Error connecting to ${D.hostname} (${D.syscall})`):D}};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=$r.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 _i extends it{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 Te(this.generateMessage()).pipe(Ie(t=>oe(t)),se(t=>({name:`${this.serviceName} ${t}`,value:t,isError:!1})),Pe(this.handleError$))}async generateMessage(){try{const{locale:t,generate:r,type:n}=this.params.config,u=this.params.config["max-length"],o=this.params.stagedDiff.diff,s=this.buildPrompt(t,o,r,u,n);await this.getAllConversationIds();const a=await this.sendMessage(s),{conversationId:i,allText:f}=this.parseSendMessageResult(a);return await this.deleteConversation(i),Bt(this.sanitizeMessage(f))}catch(t){const r=t;throw r.code==="ENOTFOUND"?new B(`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(u=>u.conversationId||"").filter(u=>!!u)}async sendMessage(t){const r={text:t,action:"new"},n=new Fr;return n.set("form",new Er([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 u=n.map(i=>i.trim().replace(/data:/g,""));if(!u||u.length===0)throw new Error("Cannot extract message");let o="",s="",a="";if(u.map(i=>{try{return JSON.parse(i)}catch{return null}}).filter(i=>!!i).forEach(i=>{if(N(i,"conversationId")){o=i.conversationId;return}if(N(i,"text")){s+=i.text;return}if(N(i,"error")){a=`${i.error}: ${i.type||i.message||""}`;return}}),a)throw new Error(a);if(!o)throw new Error("No conversationId!");if(!s)throw new Error("No allText!");return{conversationId:o,allText:s}}sanitizeMessage(t){return t.split(`
55
- `).map(r=>r.trim().replace(/^\d+\.\s/,"")).map(r=>r.replace(/`/g,"")).map(r=>this.extractCommitMessageFromRawText(this.params.config.type,r)).filter(r=>!!r)}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 Mi extends it{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 Te(this.generateMessage()).pipe(Ie(t=>oe(t)),se(t=>({name:`${this.serviceName} ${t}`,value:t,isError:!1})),Pe(this.handleError$))}async generateMessage(){try{const{locale:t,generate:r,type:n}=this.params.config,u=this.params.config["max-length"],o=this.params.stagedDiff.diff,s=this.buildPrompt(t,o,r,u,n);await this.prepareNewConversation();const{conversationId:a}=await this.getNewConversationId();await this.prepareConversationEvent(a);const{lastMessageId:i}=await this.getConversationInfo(a),f=await this.sendMessage(a,s,i);return await this.deleteConversation(a),Bt(this.sanitizeMessage(f))}catch(t){const r=t;throw r.code==="ENOTFOUND"?new B(`Error connecting to ${r.hostname} (${r.syscall})`):r}}sanitizeMessage(t){const r=/{[^{}]*}/g,n=t.match(r);if(!n)throw new Error("Failed to extract object from generated text");let u=null;if(n.forEach((o,s)=>{try{const a=JSON.parse(o);N(a,"type")&&a.type==="finalAnswer"&&(u=a)}catch{}}),!u||!N(u,"text"))throw new Error("Cannot parse finalAnswer");return u.text.split(`
56
- `).map(o=>o.trim().replace(/^\d+\.\s/,"")).map(o=>o.replace(/`/g,"")).map(o=>this.extractCommitMessageFromRawText(this.params.config.type,o)).filter(o=>!!o)}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 s=n.nodes[1]?.data[3];return{conversationInfo:n,lastMessageId:s}}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}}class Ri extends it{constructor(t){super(t),this.params=t,this.handleError$=r=>{const n=g.red.bold("[ChatGPT]");let u="An error occurred";if(r.message){u=r.message.split(`
57
- `)[0];const o=this.extractJSONFromError(r.message);u+=`: ${o.error.message}`}return Se({name:`${n} ${u}`,value:u,isError:!0})},this.colors={primary:"#74AA9C",secondary:"#FFF"},this.serviceName=g.bgHex(this.colors.primary).hex(this.colors.secondary).bold("[ChatGPT]")}generateCommitMessage$(){return Te(Ti(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.proxy)).pipe(Ie(t=>oe(t)),se(t=>({name:`${this.serviceName} ${t}`,value:t,isError:!1})),Pe(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(u=>JSON.parse(u))):{error:{message:"Unknown error"}}}}class Jn{constructor(t,r){this.config=t,this.stagedDiff=r}createAIRequests$(t){return oe(t).pipe(pr(r=>{const n={config:this.config,stagedDiff:this.stagedDiff};switch(r){case Ce.OPEN_AI:return st.create(Ri,n).generateCommitMessage$();case Ce.HUGGING:return st.create(Mi,n).generateCommitMessage$();case Ce.CLOVA_X:return st.create(_i,n).generateCommitMessage$();default:const u=g.red.bold(`[${r}]`);return Se({name:u+" Invalid AI type",value:"Invalid AI type",isError:!0})}}))}}const Zn=async()=>{const{stdout:e,failed:t}=await z("git",["rev-parse","--show-toplevel"],{reject:!1});if(t)throw new B("The current directory must be a Git repository!");return e},At=e=>`:(exclude)${e}`,Qn=["package-lock.json","pnpm-lock.yaml","*.lock"].map(At),er=async e=>{const t=["diff","--cached","--diff-algorithm=minimal"],{stdout:r}=await z("git",[...t,"--name-only",...Qn,...e?e.map(At):[]]);if(!r)return null;const{stdout:n}=await z("git",[...t,...Qn,...e?e.map(At):[]]);return{files:r.split(`
58
- `),diff:n}},Ni=e=>`Detected ${e.length.toLocaleString()} staged file${e.length>1?"s":""}`;class be{constructor(){this.title="aicommit2"}printTitle(){console.log(xr.textSync(this.title,{font:"Small"}))}displaySpinner(t){return Oe(t).start()}stopSpinner(t){t.stop(),t.clear()}printStagedFiles(t){console.log(g.bold.green("\u2714 ")+g.bold(`${Ni(t.files)}:`)),console.log(`${t.files.map(r=>` ${r}`).join(`
52
+ Check the API status: https://status.openai.com`),new b(s)}return JSON.parse(o)},Oi=e=>e.trim().replace(/[\n\r]/g,"").replace(/(\w)\.$/,"$1"),Be=e=>Array.from(new Set(e)),Si=async(e,t,n,r,u,o,s,a,i,f,l)=>{try{const c=await xi(e,{model:t,messages:[{role:"system",content:Tn(n,o,s)},{role:"user",content:r}],temperature:f,top_p:1,frequency_penalty:0,presence_penalty:0,max_tokens:i,stream:!1,n:u},a,l);return Be(c.choices.filter(D=>D.message?.content).map(D=>Oi(D.message.content)).map(D=>{if(s==="conventional"){const d=/: (\w)/;return D.replace(d,(p,m)=>`: ${m.toLowerCase()}`)}return D}).filter(D=>{switch(s){case"gitmoji":return Js(D);case"conventional":return Xs(D);case"":default:return!0}}))}catch(c){const D=c;throw D.code==="ENOTFOUND"?new b(`Error connecting to ${D.hostname} (${D.syscall})`):D}};class Ii extends be{constructor(t){super(t),this.params=t,this.handleError$=n=>{const r=C.red.bold("[Anthropic]"),u=n.error?.error?.message?.replace(/(\r\n|\n|\r)/gm,"")||"An error occurred";return ae({name:`${r} ${u}`,value:u,isError:!0})},this.colors={primary:"#AE5630",secondary:"#fff"},this.serviceName=C.bgHex(this.colors.primary).hex(this.colors.secondary).bold("[Anthropic]"),this.errorPrefix=C.red.bold("[Anthropic]"),this.anthropic=new Re({apiKey:this.params.config.ANTHROPIC_KEY})}generateCommitMessage$(){return le(this.generateMessage()).pipe(De(t=>Y(t)),X(t=>({name:`${this.serviceName} ${t}`,value:t,isError:!1})),ce(this.handleError$))}async generateMessage(){try{const t=this.params.stagedDiff.diff,{locale:n,generate:r,type:u}=this.params.config,o=this.params.config["max-length"],s=this.buildPrompt(n,t,r,o,u),i=(await this.anthropic.completions.create({model:this.params.config.ANTHROPIC_MODEL,max_tokens_to_sample:this.params.config["max-tokens"],temperature:this.params.config.temperature,prompt:`${Re.HUMAN_PROMPT} ${s}${Re.AI_PROMPT}`})).completion;return Be(this.sanitizeMessage(i))}catch(t){const n=t;throw n.code==="ENOTFOUND"?new b(`Error connecting to ${n.hostname} (${n.syscall})`):n}}sanitizeMessage(t){return t.split(`
53
+ `).map(n=>n.trim().replace(/^\d+\.\s/,"")).map(n=>n.replace(/`/g,"")).map(n=>this.extractCommitMessageFromRawText(this.params.config.type,n)).filter(n=>!!n)}}const{hasOwnProperty:bt}=Object.prototype,$e=typeof process<"u"&&process.platform==="win32"?`\r
54
+ `:`
55
+ `,vt=(e,t)=>{const n=[];let r="";typeof t=="string"?t={section:t,whitespace:!1}:(t=t||Object.create(null),t.whitespace=t.whitespace===!0);const u=t.whitespace?" = ":"=";for(const o of Object.keys(e)){const s=e[o];if(s&&Array.isArray(s))for(const a of s)r+=V(o+"[]")+u+V(a)+$e;else s&&typeof s=="object"?n.push(o):r+=V(o)+u+V(s)+$e}t.section&&r.length&&(r="["+V(t.section)+"]"+$e+r);for(const o of n){const s=zn(o).join("\\."),a=(t.section?t.section+".":"")+s,{whitespace:i}=t,f=vt(e[o],{section:a,whitespace:i});r.length&&f.length&&(r+=$e),r+=f}return r},zn=e=>e.replace(/\1/g,"LITERAL\\1LITERAL").replace(/\\\./g,"").split(/\./).map(t=>t.replace(/\1/g,"\\.").replace(/\2LITERAL\\1LITERAL\2/g,"")),Wn=e=>{const t=Object.create(null);let n=t,r=null;const u=/^\[([^\]]*)\]$|^([^=]+)(=(.*))?$/i,o=e.split(/[\r\n]+/g);for(const a of o){if(!a||a.match(/^\s*[;#]/))continue;const i=a.match(u);if(!i)continue;if(i[1]!==void 0){if(r=xe(i[1]),r==="__proto__"){n=Object.create(null);continue}n=t[r]=t[r]||Object.create(null);continue}const f=xe(i[2]),l=f.length>2&&f.slice(-2)==="[]",c=l?f.slice(0,-2):f;if(c==="__proto__")continue;const D=i[3]?xe(i[4]):!0,d=D==="true"||D==="false"||D==="null"?JSON.parse(D):D;l&&(bt.call(n,c)?Array.isArray(n[c])||(n[c]=[n[c]]):n[c]=[]),Array.isArray(n[c])?n[c].push(d):n[c]=d}const s=[];for(const a of Object.keys(t)){if(!bt.call(t,a)||typeof t[a]!="object"||Array.isArray(t[a]))continue;const i=zn(a);n=t;const f=i.pop(),l=f.replace(/\\\./g,".");for(const c of i)c!=="__proto__"&&((!bt.call(n,c)||typeof n[c]!="object")&&(n[c]=Object.create(null)),n=n[c]);n===t&&l===f||(n[l]=t[a],s.push(a))}for(const a of s)delete t[a];return t},Vn=e=>e.startsWith('"')&&e.endsWith('"')||e.startsWith("'")&&e.endsWith("'"),V=e=>typeof e!="string"||e.match(/[=\r\n]/)||e.match(/^\[/)||e.length>1&&Vn(e)||e!==e.trim()?JSON.stringify(e):e.split(";").join("\\;").split("#").join("\\#"),xe=(e,t)=>{if(e=(e||"").trim(),Vn(e)){e.charAt(0)==="'"&&(e=e.slice(1,-1));try{e=JSON.parse(e)}catch{}}else{let n=!1,r="";for(let u=0,o=e.length;u<o;u++){const s=e.charAt(u);if(n)"\\;#".indexOf(s)!==-1?r+=s:r+="\\"+s,n=!1;else{if(";#".indexOf(s)!==-1)break;s==="\\"?n=!0:r+=s}}return n&&(r+="\\"),r.trim()}return e};var Pi={parse:Wn,decode:Wn,stringify:vt,encode:vt,safe:V,unsafe:xe},Yn=G(Pi);const Xn=e=>x.lstat(e).then(()=>!0,()=>!1),Ti=["","conventional","gitmoji"],{hasOwnProperty:_i}=Object.prototype,R=(e,t)=>_i.call(e,t),y=(e,t,n)=>{if(!t)throw new b(`Invalid config property ${e}: ${n}`)},Oe={OPENAI_KEY(e){return e?(y("OPENAI_KEY",e.startsWith("sk-"),'Must start with "sk-"'),e):""},OPENAI_MODEL(e){return!e||e.length===0?"gpt-3.5-turbo":e},HUGGING_COOKIE(e){return e||""},HUGGING_MODEL(e){return!e||e.length===0?"mistralai/Mixtral-8x7B-Instruct-v0.1":(y("HUGGING_MODEL",["mistralai/Mixtral-8x7B-Instruct-v0.1","meta-llama/Llama-2-70b-chat-hf","NousResearch/Nous-Hermes-2-Mixtral-8x7B-DPO","codellama/CodeLlama-70b-Instruct-hf","mistralai/Mistral-7B-Instruct-v0.2","openchat/openchat-3.5-0106"].includes(e),"Invalid model type of hugging"),e)},CLOVAX_COOKIE(e){return e||""},GOOGLE_KEY(e){return e||""},ANTHROPIC_MODEL(e){return!e||e.length===0?"claude-2.1":(y("ANTHROPIC_MODEL",["claude-2.1","claude-instant-1.2"].includes(e),"Invalid model type of Anthropic"),e)},ANTHROPIC_KEY(e){return e||""},confirm(e){return e?typeof e=="boolean"?e:(y("confirm",/^(?:true|false)$/.test(e),"Must be a boolean"),e==="true"):!1},locale(e){return e?(y("locale",e,"Cannot be empty"),y("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;y("generate",/^\d+$/.test(e),"Must be an integer");const t=Number(e);return y("generate",t>0,"Must be greater than 0"),y("generate",t<=5,"Must be less or equal to 5"),t},type(e){return e?(y("type",Ti.includes(e),"Invalid commit type"),e):"conventional"},proxy(e){if(!(!e||e.length===0))return y("proxy",/^https?:\/\//.test(e),"Must be a valid URL"),e},timeout(e){if(!e)return 1e4;y("timeout",/^\d+$/.test(e),"Must be an integer");const t=Number(e);return y("timeout",t>=500,"Must be greater than 500ms"),t},temperature(e){if(!e)return .7;y("temperature",/^(2|\d)(\.\d{1,2})?$/.test(e),"Must be decimal between 0 and 2");const t=Number(e);return y("temperature",t>0,"Must be greater than 0"),y("temperature",t<=2,"Must be less than or equal to 2"),t},"max-length"(e){if(!e)return 50;y("max-length",/^\d+$/.test(e),"Must be an integer");const t=Number(e);return y("max-length",t>=20,"Must be greater than 20 characters"),t},"max-tokens"(e){return e?(y("max-tokens",/^\d+$/.test(e),"Must be an integer"),Number(e)):200}},At=j.join(Nt.homedir(),".aicommit2"),Jn=async()=>{if(!await Xn(At))return Object.create(null);const t=await x.readFile(At,"utf8");return Yn.parse(t)},Bt=async(e,t)=>{const n=await Jn(),r={};for(const u of Object.keys(Oe)){const o=Oe[u],s=e?.[u]??n[u];if(t)try{r[u]=o(s)}catch{}else r[u]=o(s)}return r},Mi=async e=>{const t=await Jn();for(const[n,r]of e){if(!R(Oe,n))throw new b(`Invalid config property: ${n}`);const u=Oe[n](r);t[n]=u}await x.writeFile(At,Yn.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=xr.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 Ni extends be{constructor(t){super(t),this.params=t,this.host="https://clova-x.naver.com",this.cookie="",this.colors={primary:"#00db9b",secondary:"#fff"},this.serviceName=C.bgHex(this.colors.primary).hex(this.colors.secondary).bold("[CLOVA X]"),this.errorPrefix=C.red.bold("[CLOVA X]"),this.cookie=this.params.config.CLOVAX_COOKIE}generateCommitMessage$(){return le(this.generateMessage()).pipe(De(t=>Y(t)),X(t=>({name:`${this.serviceName} ${t}`,value:t,isError:!1})),ce(this.handleError$))}async generateMessage(){try{const{locale:t,generate:n,type:r}=this.params.config,u=this.params.config["max-length"],o=this.params.stagedDiff.diff,s=this.buildPrompt(t,o,n,u,r);await this.getAllConversationIds();const a=await this.sendMessage(s),{conversationId:i,allText:f}=this.parseSendMessageResult(a);return await this.deleteConversation(i),Be(this.sanitizeMessage(f))}catch(t){const n=t;throw n.code==="ENOTFOUND"?new b(`Error connecting to ${n.hostname} (${n.syscall})`):n}}async getAllConversationIds(){const n=(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(!n||!n.content)throw new Error("No content on conversations ClovaX");return n.content.length===0?[]:n.content.map(u=>u.conversationId||"").filter(u=>!!u)}async sendMessage(t){const n={text:t,action:"new"},r=new Br;return r.set("form",new $r([JSON.stringify(n)],{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(r),Cookie:this.cookie}).setBody(r).execute()).data}parseSendMessageResult(t){const n=/data:{(.*)}/g,r=t.match(n);if(!r)throw new Error("Failed to extract object from generated text");const u=r.map(i=>i.trim().replace(/data:/g,""));if(!u||u.length===0)throw new Error("Cannot extract message");let o="",s="",a="";if(u.map(i=>{try{return JSON.parse(i)}catch{return null}}).filter(i=>!!i).forEach(i=>{if(R(i,"conversationId")){o=i.conversationId;return}if(R(i,"text")){s+=i.text;return}if(R(i,"error")){a=`${i.error}: ${i.type||i.message||""}`;return}}),a)throw new Error(a);if(!o)throw new Error("No conversationId!");if(!s)throw new Error("No allText!");return{conversationId:o,allText:s}}sanitizeMessage(t){return t.split(`
56
+ `).map(n=>n.trim().replace(/^\d+\.\s/,"")).map(n=>n.replace(/`/g,"")).map(n=>this.extractCommitMessageFromRawText(this.params.config.type,n)).filter(n=>!!n)}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(),([n,r])=>({[n]:{ContentLength:typeof r=="string"?r.length:r.size}}))}}class Ri extends be{constructor(t){super(t),this.params=t,this.host="https://huggingface.co",this.cookie="",this.colors={primary:"#FED21F",secondary:"#000"},this.serviceName=C.bgHex(this.colors.primary).hex(this.colors.secondary).bold("[HuggingFace]"),this.errorPrefix=C.red.bold("[HuggingFace]"),this.cookie=this.params.config.HUGGING_COOKIE}generateCommitMessage$(){return le(this.generateMessage()).pipe(De(t=>Y(t)),X(t=>({name:`${this.serviceName} ${t}`,value:t,isError:!1})),ce(this.handleError$))}async generateMessage(){try{const{locale:t,generate:n,type:r}=this.params.config,u=this.params.config["max-length"],o=this.params.stagedDiff.diff,s=this.buildPrompt(t,o,n,u,r);await this.prepareNewConversation();const{conversationId:a}=await this.getNewConversationId();await this.prepareConversationEvent(a);const{lastMessageId:i}=await this.getConversationInfo(a),f=await this.sendMessage(a,s,i);return await this.deleteConversation(a),Be(this.sanitizeMessage(f))}catch(t){const n=t;throw n.code==="ENOTFOUND"?new b(`Error connecting to ${n.hostname} (${n.syscall})`):n}}sanitizeMessage(t){const n=/{[^{}]*}/g,r=t.match(n);if(!r)throw new Error("Failed to extract object from generated text");let u=null;if(r.forEach((o,s)=>{try{const a=JSON.parse(o);R(a,"type")&&a.type==="finalAnswer"&&(u=a)}catch{}}),!u||!R(u,"text"))throw new Error("Cannot parse finalAnswer");return u.text.split(`
57
+ `).map(o=>o.trim().replace(/^\d+\.\s/,"")).map(o=>o.replace(/`/g,"")).map(o=>this.extractCommitMessageFromRawText(this.params.config.type,o)).filter(o=>!!o)}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 r=(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(!r||!r.nodes||r.nodes.length===0)throw new Error("No Nodes on conversation info");if(!r.nodes[1]||!r.nodes[1].data||r.nodes[1].data.length===0||!r.nodes[1].data[3])throw new Error("No data on node");const s=r.nodes[1]?.data[3];return{conversationInfo:r,lastMessageId:s}}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,n,r){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:r,inputs:n,is_continue:!1,is_retry:!1,use_cache:!1}).execute()).data}}class ki extends be{constructor(t){super(t),this.params=t,this.handleError$=n=>{const r=C.red.bold("[ChatGPT]");let u="An error occurred";if(n.message){u=n.message.split(`
58
+ `)[0];const o=this.extractJSONFromError(n.message);u+=`: ${o.error.message}`}return ae({name:`${r} ${u}`,value:u,isError:!0})},this.colors={primary:"#74AA9C",secondary:"#FFF"},this.serviceName=C.bgHex(this.colors.primary).hex(this.colors.secondary).bold("[ChatGPT]")}generateCommitMessage$(){return le(Si(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.proxy)).pipe(De(t=>Y(t)),X(t=>({name:`${this.serviceName} ${t}`,value:t,isError:!1})),ce(this.handleError$))}extractJSONFromError(t){const n=/[{[]{1}([,:{}[\]0-9.\-+Eaeflnr-u \n\r\t]|".*?")+[}\]]{1}/gis,r=t.match(n);return r?Object.assign({},...r.map(u=>JSON.parse(u))):{error:{message:"Unknown error"}}}}class Zn{constructor(t,n){this.config=t,this.stagedDiff=n}createAIRequests$(t){return Y(t).pipe(mr(n=>{const r={config:this.config,stagedDiff:this.stagedDiff};switch(n){case ne.OPEN_AI:return we.create(ki,r).generateCommitMessage$();case ne.HUGGING:return we.create(Ri,r).generateCommitMessage$();case ne.CLOVA_X:return we.create(Ni,r).generateCommitMessage$();case ne.ANTHROPIC:return we.create(Ii,r).generateCommitMessage$();default:const u=C.red.bold(`[${n}]`);return ae({name:u+" Invalid AI type",value:"Invalid AI type",isError:!0})}}))}}const Qn=async()=>{const{stdout:e,failed:t}=await z("git",["rev-parse","--show-toplevel"],{reject:!1});if(t)throw new b("The current directory must be a Git repository!");return e},$t=e=>`:(exclude)${e}`,er=["package-lock.json","pnpm-lock.yaml","*.lock"].map($t),tr=async e=>{const t=["diff","--cached","--diff-algorithm=minimal"],{stdout:n}=await z("git",[...t,"--name-only",...er,...e?e.map($t):[]]);if(!n)return null;const{stdout:r}=await z("git",[...t,...er,...e?e.map($t):[]]);return{files:n.split(`
59
+ `),diff:r}},Li=e=>`Detected ${e.length.toLocaleString()} staged file${e.length>1?"s":""}`;class Se{constructor(){this.title="aicommit2"}printTitle(){console.log(Or.textSync(this.title,{font:"Small"}))}displaySpinner(t){return Ne(t).start()}stopSpinner(t){t.stop(),t.clear()}printStagedFiles(t){console.log(C.bold.green("\u2714 ")+C.bold(`${Li(t.files)}:`)),console.log(`${t.files.map(n=>` ${n}`).join(`
59
60
  `)}
60
61
  `)}printAnalyzed(){console.log(`
61
- ${g.bold.green("\u2714")} ${g.bold("Changes analyzed")}`)}printCommitted(){console.log(`
62
- ${g.bold.green("\u2714")} ${g.bold("Successfully committed!")}`)}printCopied(){console.log(`
63
- ${g.bold.green("\u2714")} ${g.bold("Successfully copied! Press 'Ctrl + V' to paste")}`)}printSavedCommitMessage(){console.log(`
64
- ${g.bold.green("\u2714")} ${g.bold("Saved commit message")}`)}printCancelledCommit(){console.log(`
65
- ${g.bold.yellow("\u26A0")} ${g.yellow("Commit cancelled")}`)}printErrorMessage(t){console.log(`
66
- ${g.bold.red("\u2716")} ${g.red(`${t}`)}`)}moveCursorUp(){const t=ie.createInterface({input:process.stdin,output:process.stdout});ie.moveCursor(process.stdout,0,-1),t.close()}moveCursorDown(){const t=ie.createInterface({input:process.stdin,output:process.stdout});ie.moveCursor(process.stdout,0,1),t.close()}}const ki={isLoading:!1,startOption:{text:"AI is analyzing your changes"}};class Li{constructor(){this.choices$=new _t([]),this.loader$=new _t(ki),this.destroyed$=new mr(1)}initPrompt(){return xe.registerPrompt("reactiveListPrompt",Or),xe.prompt({type:"reactiveListPrompt",name:"aicommit2Prompt",message:"Pick a commit message to use: ",emptyMessage:"\u26A0 No commit messages were generated",choices$:this.choices$,loader$:this.loader$})}startLoader(){this.loader$.next({isLoading:!0})}refreshChoices(t){const{name:r,value:n,isError:u}=t;if(!t||!n)return;const o=this.choices$.getValue();this.choices$.next([...o,{name:r,value:n,disabled:u,isError:u}])}checkErrorOnChoices(){if(this.choices$.getValue().map(r=>r).every(r=>r?.isError||r?.disabled)){this.alertNoGeneratedMessage();return}this.stopLoaderOnSuccess()}completeSubject(){this.choices$.complete(),this.loader$.complete(),this.destroyed$.next(!0),this.destroyed$.complete()}alertNoGeneratedMessage(){this.loader$.next({isLoading:!1,message:"No commit messages were generated",stopOption:{doneFrame:"\u26A0",color:"yellow"}})}stopLoaderOnSuccess(){this.loader$.next({isLoading:!1,message:"Changes analyzed"})}}const P=new be;var ji=async(e,t,r,n,u,o,s,a)=>(async()=>{P.printTitle(),await Zn(),n&&await z("git",["add","--update"]);const i=P.displaySpinner("Detecting staged files"),f=await er(r);if(i.stop(),!f)throw new B("No staged changes found. Stage your changes manually, or automatically stage all changes with the `--all` flag.");P.printStagedFiles(f);const{env:l}=process,c=await ft({OPENAI_KEY:l.OPENAI_KEY||l.OPENAI_API_KEY,OPENAI_MODEL:l.OPENAI_MODEL||l["openai-model"]||l.openai_model,HUGGING_COOKIE:l.HUGGING_COOKIE||l.HUGGING_API_KEY||l.HF_TOKEN,HUGGING_MODEL:l.HUGGING_MODEL||l["hugging-model"],CLOVAX_COOKIE:l.CLOVAX_COOKIE||l.CLOVA_X_COOKIE,proxy:l.https_proxy||l.HTTPS_PROXY||l.http_proxy||l.HTTP_PROXY,temperature:l.temperature,generate:t?.toString()||l.generate,type:u?.toString()||l.type,locale:e?.toString()||l.locale}),D=Object.entries(c).filter(([b])=>Tn.includes(b)).filter(([b,T])=>!!T).map(([b])=>b);if(D.length===0)throw new B("Please set at least one API key via `aicommit2 config set OPENAI_KEY=<your token>`");const p=new Jn(c,f),m=new Li,h=m.initPrompt();m.startLoader();const C=p.createAIRequests$(D).subscribe(b=>m.refreshChoices(b),()=>{},()=>m.checkErrorOnChoices()),E=await h;C.unsubscribe(),m.completeSubject(),P.moveCursorUp();const $=E.aicommit2Prompt?.value;if(!$)throw new B("An error occurred! No selected message");if(s&&(Yu("copy-paste").copy($),P.printCopied(),process.exit()),o){const b=Oe("Committing with the generated message").start();await z("git",["commit","-m",$,...a]),b.stop(),b.clear(),P.printCommitted(),process.exit()}const k=await xe.prompt([{type:"confirm",name:"confirmationPrompt",message:"Use selected message?",default:!0}]),{confirmationPrompt:I}=k;if(I){const b=Oe("Committing with the generated message").start();await z("git",["commit","-m",$,...a]),b.stop(),b.clear(),P.printCommitted(),process.exit()}P.printCancelledCommit(),process.exit()})().catch(i=>{P.printErrorMessage(i.message),Ee(i),process.exit(1)}),Gi=nn({name:"config",parameters:["<mode>","<key=value...>"]},e=>{(async()=>{const{mode:t,keyValue:r}=e._;if(t==="get"){const n=await ft({},!0);for(const u of r)N(n,u)&&console.log(`${u}=${n[u]}`);return}if(t==="set"){await ti(r.map(n=>n.split("=")));return}throw new B(`Invalid mode: ${t}`)})().catch(t=>{new be().printErrorMessage(t.message),Ee(t),process.exit(1)})});const tr="prepare-commit-msg",nr=`.git/hooks/${tr}`,ve=Br(new URL("cli.mjs",import.meta.url)),Ui=process.argv[1].replace(/\\/g,"/").endsWith(`/${nr}`),rr=process.platform==="win32",ur=`
62
+ ${C.bold.green("\u2714")} ${C.bold("Changes analyzed")}`)}printCommitted(){console.log(`
63
+ ${C.bold.green("\u2714")} ${C.bold("Successfully committed!")}`)}printCopied(){console.log(`
64
+ ${C.bold.green("\u2714")} ${C.bold("Successfully copied! Press 'Ctrl + V' to paste")}`)}printSavedCommitMessage(){console.log(`
65
+ ${C.bold.green("\u2714")} ${C.bold("Saved commit message")}`)}printCancelledCommit(){console.log(`
66
+ ${C.bold.yellow("\u26A0")} ${C.yellow("Commit cancelled")}`)}printErrorMessage(t){console.log(`
67
+ ${C.bold.red("\u2716")} ${C.red(`${t}`)}`)}moveCursorUp(){const t=fe.createInterface({input:process.stdin,output:process.stdout});fe.moveCursor(process.stdout,0,-1),t.close()}moveCursorDown(){const t=fe.createInterface({input:process.stdin,output:process.stdout});fe.moveCursor(process.stdout,0,1),t.close()}}const ji={isLoading:!1,startOption:{text:"AI is analyzing your changes"}};class Gi{constructor(){this.choices$=new Mt([]),this.loader$=new Mt(ji),this.destroyed$=new hr(1)}initPrompt(){return Me.registerPrompt("reactiveListPrompt",Sr),Me.prompt({type:"reactiveListPrompt",name:"aicommit2Prompt",message:"Pick a commit message to use: ",emptyMessage:"\u26A0 No commit messages were generated",choices$:this.choices$,loader$:this.loader$})}startLoader(){this.loader$.next({isLoading:!0})}refreshChoices(t){const{name:n,value:r,isError:u}=t;if(!t||!r)return;const o=this.choices$.getValue();this.choices$.next([...o,{name:n,value:r,disabled:u,isError:u}])}checkErrorOnChoices(){if(this.choices$.getValue().map(n=>n).every(n=>n?.isError||n?.disabled)){this.alertNoGeneratedMessage();return}this.stopLoaderOnSuccess()}completeSubject(){this.choices$.complete(),this.loader$.complete(),this.destroyed$.next(!0),this.destroyed$.complete()}alertNoGeneratedMessage(){this.loader$.next({isLoading:!1,message:"No commit messages were generated",stopOption:{doneFrame:"\u26A0",color:"yellow"}})}stopLoaderOnSuccess(){this.loader$.next({isLoading:!1,message:"Changes analyzed"})}}const P=new Se;var Hi=async(e,t,n,r,u,o,s,a)=>(async()=>{P.printTitle(),await Qn(),r&&await z("git",["add","--update"]);const i=P.displaySpinner("Detecting staged files"),f=await tr(n);if(i.stop(),!f)throw new b("No staged changes found. Stage your changes manually, or automatically stage all changes with the `--all` flag.");P.printStagedFiles(f);const{env:l}=process,c=await Bt({OPENAI_KEY:l.OPENAI_KEY||l.OPENAI_API_KEY,OPENAI_MODEL:l.OPENAI_MODEL||l["openai-model"]||l.openai_model,HUGGING_COOKIE:l.HUGGING_COOKIE||l.HUGGING_API_KEY||l.HF_TOKEN,HUGGING_MODEL:l.HUGGING_MODEL||l["hugging-model"],CLOVAX_COOKIE:l.CLOVAX_COOKIE||l.CLOVA_X_COOKIE,proxy:l.https_proxy||l.HTTPS_PROXY||l.http_proxy||l.HTTP_PROXY,temperature:l.temperature,generate:t?.toString()||l.generate,type:u?.toString()||l.type,locale:e?.toString()||l.locale}),D=Object.entries(c).filter(([v])=>_n.includes(v)).filter(([v,T])=>!!T).map(([v])=>v);if(D.length===0)throw new b("Please set at least one API key via `aicommit2 config set OPENAI_KEY=<your token>`");const p=new Zn(c,f),m=new Gi,h=m.initPrompt();m.startLoader();const g=p.createAIRequests$(D).subscribe(v=>m.refreshChoices(v),()=>{},()=>m.checkErrorOnChoices()),E=await h;g.unsubscribe(),m.completeSubject(),P.moveCursorUp();const $=E.aicommit2Prompt?.value;if(!$)throw new b("An error occurred! No selected message");if(s&&(Xu("copy-paste").copy($),P.printCopied(),process.exit()),o){const v=Ne("Committing with the generated message").start();await z("git",["commit","-m",$,...a]),v.stop(),v.clear(),P.printCommitted(),process.exit()}const k=await Me.prompt([{type:"confirm",name:"confirmationPrompt",message:"Use selected message?",default:!0}]),{confirmationPrompt:I}=k;if(I){const v=Ne("Committing with the generated message").start();await z("git",["commit","-m",$,...a]),v.stop(),v.clear(),P.printCommitted(),process.exit()}P.printCancelledCommit(),process.exit()})().catch(i=>{P.printErrorMessage(i.message),ve(i),process.exit(1)}),Ui=rn({name:"config",parameters:["<mode>","<key=value...>"]},e=>{(async()=>{const{mode:t,keyValue:n}=e._;if(t==="get"){const r=await Bt({},!0);for(const u of n)R(r,u)&&console.log(`${u}=${r[u]}`);return}if(t==="set"){await Mi(n.map(r=>r.split("=")));return}throw new b(`Invalid mode: ${t}`)})().catch(t=>{new Se().printErrorMessage(t.message),ve(t),process.exit(1)})});const nr="prepare-commit-msg",rr=`.git/hooks/${nr}`,Ie=vr(new URL("cli.mjs",import.meta.url)),qi=process.argv[1].replace(/\\/g,"/").endsWith(`/${rr}`),ur=process.platform==="win32",or=`
67
68
  #!/usr/bin/env node
68
- import(${JSON.stringify(Ar(ve))})
69
- `.trim();var Hi=nn({name:"hook",parameters:["<install/uninstall>"]},e=>{(async()=>{const t=await Zn(),{installUninstall:r}=e._,n=j.join(t,nr),u=await Ln(n);if(r==="install"){if(u){if(await x.realpath(n).catch(()=>{})===ve){console.warn("The hook is already installed");return}throw new B(`A different ${tr} hook seems to be installed. Please remove it before installing aicommit2.`)}await x.mkdir(j.dirname(n),{recursive:!0}),rr?await x.writeFile(n,ur):(await x.symlink(ve,n,"file"),await x.chmod(n,493)),console.log(`${g.green("\u2714")} Hook installed`);return}if(r==="uninstall"){if(!u){console.warn("Hook is not installed");return}if(rr){if(await x.readFile(n,"utf8")!==ur){console.warn("Hook is not installed");return}}else if(await x.realpath(n)!==ve){console.warn("Hook is not installed");return}await x.rm(n),console.log(`${g.green("\u2714")} Hook uninstalled`);return}throw new B(`Invalid mode: ${r}`)})().catch(t=>{console.error(`${g.red("\u2716")} ${t.message}`),Ee(t),process.exit(1)})});const[$t,qi]=process.argv.slice(2);var Ki=()=>(async()=>{if(!$t)throw new B('Commit message file path is missing. This file should be called from the "prepare-commit-msg" git hook');if(qi)return;const e=await er();if(!e)return;const t=new be;t.printTitle();const{env:r}=process,n=await ft({proxy:r.https_proxy||r.HTTPS_PROXY||r.http_proxy||r.HTTP_PROXY}),u=Object.entries(n).filter(([d])=>Tn.includes(d)).filter(([d,p])=>!!p).map(([d])=>d);if(u.length===0)throw new B("Please set at least one API key via `aicommit2 config set OPENAI_KEY=<your token>`");const s=new Jn(n,e),a=t.displaySpinner("The AI is analyzing your changes");let i;try{i=await hr(s.createAIRequests$(u).pipe(Cr(d=>!d.isError),se(d=>d.value),gr()))}finally{a.stop(),a.clear(),t.printAnalyzed()}const l=await x.readFile($t,"utf8")!=="",c=i.length>1;let D="";l&&(D=`# \u{1F916} AI generated commit${c?"s":""}
69
+ import(${JSON.stringify(Ar(Ie))})
70
+ `.trim();var Ki=rn({name:"hook",parameters:["<install/uninstall>"]},e=>{(async()=>{const t=await Qn(),{installUninstall:n}=e._,r=j.join(t,rr),u=await Xn(r);if(n==="install"){if(u){if(await x.realpath(r).catch(()=>{})===Ie){console.warn("The hook is already installed");return}throw new b(`A different ${nr} hook seems to be installed. Please remove it before installing aicommit2.`)}await x.mkdir(j.dirname(r),{recursive:!0}),ur?await x.writeFile(r,or):(await x.symlink(Ie,r,"file"),await x.chmod(r,493)),console.log(`${C.green("\u2714")} Hook installed`);return}if(n==="uninstall"){if(!u){console.warn("Hook is not installed");return}if(ur){if(await x.readFile(r,"utf8")!==or){console.warn("Hook is not installed");return}}else if(await x.realpath(r)!==Ie){console.warn("Hook is not installed");return}await x.rm(r),console.log(`${C.green("\u2714")} Hook uninstalled`);return}throw new b(`Invalid mode: ${n}`)})().catch(t=>{console.error(`${C.red("\u2716")} ${t.message}`),ve(t),process.exit(1)})});const[xt,zi]=process.argv.slice(2);var Wi=()=>(async()=>{if(!xt)throw new b('Commit message file path is missing. This file should be called from the "prepare-commit-msg" git hook');if(zi)return;const e=await tr();if(!e)return;const t=new Se;t.printTitle();const{env:n}=process,r=await Bt({proxy:n.https_proxy||n.HTTPS_PROXY||n.http_proxy||n.HTTP_PROXY}),u=Object.entries(r).filter(([d])=>_n.includes(d)).filter(([d,p])=>!!p).map(([d])=>d);if(u.length===0)throw new b("Please set at least one API key via `aicommit2 config set OPENAI_KEY=<your token>`");const s=new Zn(r,e),a=t.displaySpinner("The AI is analyzing your changes");let i;try{i=await Cr(s.createAIRequests$(u).pipe(gr(d=>!d.isError),X(d=>d.value),Fr()))}finally{a.stop(),a.clear(),t.printAnalyzed()}const l=await x.readFile(xt,"utf8")!=="",c=i.length>1;let D="";l&&(D=`# \u{1F916} AI generated commit${c?"s":""}
70
71
  `),c?(l&&(D+=`# Select one of the following messages by uncommenting:
71
72
  `),D+=`
72
73
  ${i.map(d=>`# ${d}`).join(`
73
74
  `)}`):(l&&(D+=`# Edit the message below and commit:
74
75
  `),D+=`
75
76
  ${i[0]}
76
- `),await x.appendFile($t,D),t.printSavedCommitMessage()})().catch(e=>{new be().printErrorMessage(e.message),Ee(e),process.exit(1)});const or=process.argv.slice(2);Vu({name:"aicommit2",version:kn,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}},commands:[Gi,Hi],help:{description:Zs},ignoreArgv:e=>e==="unknown-flag"||e==="argument"},e=>{if(Ui){Ki();return}ji(e.flags.locale,e.flags.generate,e.flags.exclude,e.flags.all,e.flags.type,e.flags.confirm,e.flags.clipboard,or)},or);
77
+ `),await x.appendFile(xt,D),t.printSavedCommitMessage()})().catch(e=>{new Se().printErrorMessage(e.message),ve(e),process.exit(1)});const sr=process.argv.slice(2);Yu({name:"aicommit2",version:Mn,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}},commands:[Ui,Ki],help:{description:Zs},ignoreArgv:e=>e==="unknown-flag"||e==="argument"},e=>{if(qi){Wi();return}Hi(e.flags.locale,e.flags.generate,e.flags.exclude,e.flags.all,e.flags.type,e.flags.confirm,e.flags.clipboard,sr)},sr);
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "aicommit2",
3
- "version": "1.1.1",
4
- "description": "Reactive CLI that generates git commit messages with diverse AI",
3
+ "version": "1.2.0",
4
+ "description": "Reactive CLI that generates git commit messages with various AI",
5
5
  "keywords": [
6
6
  "ai",
7
7
  "git",
@@ -13,7 +13,9 @@
13
13
  "huggingface",
14
14
  "hugging face",
15
15
  "clovax",
16
- "clova x"
16
+ "clova x",
17
+ "anthropic",
18
+ "claude"
17
19
  ],
18
20
  "license": "MIT",
19
21
  "repository": "tak-bro/aicommit2",
@@ -27,6 +29,7 @@
27
29
  "aic2": "./dist/cli.mjs"
28
30
  },
29
31
  "dependencies": {
32
+ "@anthropic-ai/sdk": "^0.14.1",
30
33
  "@dqbd/tiktoken": "^1.0.2",
31
34
  "@inquirer/prompts": "^3.0.0",
32
35
  "axios": "^1.4.0",