create-mastra 0.0.0-storage-20250225005900 → 0.0.0-support-d1-client-20250701191943

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -4,26 +4,26 @@ import { randomUUID } from 'node:crypto';
4
4
  import * as fs3__default from 'node:fs';
5
5
  import fs3__default__default, { existsSync, readFileSync, writeFileSync } from 'node:fs';
6
6
  import os from 'node:os';
7
- import path, { dirname } from 'node:path';
8
- import { PostHog } from 'posthog-node';
7
+ import path2, { dirname } from 'node:path';
9
8
  import { fileURLToPath } from 'node:url';
10
- import h, { stdin, stdout } from 'node:process';
11
- import * as f from 'node:readline';
12
- import f__default from 'node:readline';
13
- import tty, { WriteStream } from 'node:tty';
9
+ import { PostHog } from 'posthog-node';
10
+ import util, { stripVTControlCharacters } from 'node:util';
11
+ import y$1, { stdout, stdin } from 'node:process';
12
+ import * as g from 'node:readline';
13
+ import g__default from 'node:readline';
14
+ import { Writable } from 'node:stream';
14
15
  import child_process from 'node:child_process';
15
- import util from 'node:util';
16
- import prettier from 'prettier';
17
- import fsExtra3 from 'fs-extra/esm';
18
16
  import fs4 from 'node:fs/promises';
19
17
  import { execa } from 'execa';
18
+ import fsExtra3, { readJSON, ensureFile, writeJSON } from 'fs-extra/esm';
19
+ import prettier from 'prettier';
20
+ import tty from 'node:tty';
20
21
  import pino from 'pino';
21
22
  import pretty from 'pino-pretty';
22
- import { Transform } from 'node:stream';
23
23
  import fsExtra from 'fs-extra';
24
24
 
25
25
  var __filename = fileURLToPath(import.meta.url);
26
- var __dirname = path.dirname(__filename);
26
+ var __dirname = path2.dirname(__filename);
27
27
  var PosthogAnalytics = class {
28
28
  sessionId;
29
29
  client;
@@ -35,13 +35,13 @@ var PosthogAnalytics = class {
35
35
  host = "https://app.posthog.com"
36
36
  }) {
37
37
  this.version = version;
38
- const cliConfigPath = path.join(__dirname, "mastra-cli.json");
38
+ const cliConfigPath = path2.join(__dirname, "mastra-cli.json");
39
39
  if (existsSync(cliConfigPath)) {
40
40
  try {
41
41
  const { distinctId, sessionId } = JSON.parse(readFileSync(cliConfigPath, "utf-8"));
42
42
  this.distinctId = distinctId;
43
43
  this.sessionId = sessionId;
44
- } catch (e) {
44
+ } catch {
45
45
  this.sessionId = randomUUID();
46
46
  this.distinctId = this.getDistinctId();
47
47
  }
@@ -63,15 +63,16 @@ var PosthogAnalytics = class {
63
63
  }
64
64
  writeCliConfig({ distinctId, sessionId }) {
65
65
  try {
66
- writeFileSync(path.join(__dirname, "mastra-cli.json"), JSON.stringify({ distinctId, sessionId }));
67
- } catch (e) {
66
+ writeFileSync(path2.join(__dirname, "mastra-cli.json"), JSON.stringify({ distinctId, sessionId }));
67
+ } catch {
68
68
  }
69
69
  }
70
70
  initializePostHog(apiKey, host) {
71
71
  this.client = new PostHog(apiKey, {
72
72
  host,
73
73
  flushAt: 1,
74
- flushInterval: 0
74
+ flushInterval: 0,
75
+ disableGeoip: false
75
76
  });
76
77
  this.captureSessionStart();
77
78
  process.on("exit", () => {
@@ -80,7 +81,7 @@ var PosthogAnalytics = class {
80
81
  });
81
82
  }
82
83
  isTelemetryEnabled() {
83
- if (process.env.NO_MASTRA_TELEMETRY) {
84
+ if (process.env.MASTRA_TELEMETRY_DISABLED) {
84
85
  return false;
85
86
  }
86
87
  return true;
@@ -135,17 +136,19 @@ var PosthogAnalytics = class {
135
136
  event: "cli_command",
136
137
  properties: {
137
138
  ...this.getSystemProperties(),
138
- ...commandData
139
+ ...commandData,
140
+ origin: options?.origin || "oss"
139
141
  }
140
142
  });
141
- } catch (e) {
143
+ } catch {
142
144
  }
143
145
  }
144
146
  // Helper method to wrap command execution with timing
145
147
  async trackCommandExecution({
146
148
  command,
147
149
  args,
148
- execution
150
+ execution,
151
+ origin
149
152
  }) {
150
153
  const startTime = process.hrtime();
151
154
  try {
@@ -156,7 +159,8 @@ var PosthogAnalytics = class {
156
159
  command,
157
160
  args,
158
161
  durationMs,
159
- status: "success"
162
+ status: "success",
163
+ origin
160
164
  });
161
165
  return result;
162
166
  } catch (error) {
@@ -167,7 +171,8 @@ var PosthogAnalytics = class {
167
171
  args,
168
172
  durationMs,
169
173
  status: "error",
170
- error: error instanceof Error ? error.message : String(error)
174
+ error: error instanceof Error ? error.message : String(error),
175
+ origin
171
176
  });
172
177
  throw error;
173
178
  }
@@ -179,7 +184,7 @@ var PosthogAnalytics = class {
179
184
  }
180
185
  try {
181
186
  await this.client.shutdown();
182
- } catch (e) {
187
+ } catch {
183
188
  }
184
189
  }
185
190
  };
@@ -344,69 +349,335 @@ function requirePicocolors () {
344
349
  var picocolorsExports = /*@__PURE__*/ requirePicocolors();
345
350
  var color2 = /*@__PURE__*/getDefaultExportFromCjs(picocolorsExports);
346
351
 
347
- function q({onlyFirst:e=false}={}){const F=["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?(?:\\u0007|\\u001B\\u005C|\\u009C))","(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~]))"].join("|");return new RegExp(F,e?void 0:"g")}const J=q();function S(e){if(typeof e!="string")throw new TypeError(`Expected a \`string\`, got \`${typeof e}\``);return e.replace(J,"")}function T$1(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var j$1={exports:{}};(function(e){var u={};e.exports=u,u.eastAsianWidth=function(t){var s=t.charCodeAt(0),C=t.length==2?t.charCodeAt(1):0,D=s;return 55296<=s&&s<=56319&&56320<=C&&C<=57343&&(s&=1023,C&=1023,D=s<<10|C,D+=65536),D==12288||65281<=D&&D<=65376||65504<=D&&D<=65510?"F":D==8361||65377<=D&&D<=65470||65474<=D&&D<=65479||65482<=D&&D<=65487||65490<=D&&D<=65495||65498<=D&&D<=65500||65512<=D&&D<=65518?"H":4352<=D&&D<=4447||4515<=D&&D<=4519||4602<=D&&D<=4607||9001<=D&&D<=9002||11904<=D&&D<=11929||11931<=D&&D<=12019||12032<=D&&D<=12245||12272<=D&&D<=12283||12289<=D&&D<=12350||12353<=D&&D<=12438||12441<=D&&D<=12543||12549<=D&&D<=12589||12593<=D&&D<=12686||12688<=D&&D<=12730||12736<=D&&D<=12771||12784<=D&&D<=12830||12832<=D&&D<=12871||12880<=D&&D<=13054||13056<=D&&D<=19903||19968<=D&&D<=42124||42128<=D&&D<=42182||43360<=D&&D<=43388||44032<=D&&D<=55203||55216<=D&&D<=55238||55243<=D&&D<=55291||63744<=D&&D<=64255||65040<=D&&D<=65049||65072<=D&&D<=65106||65108<=D&&D<=65126||65128<=D&&D<=65131||110592<=D&&D<=110593||127488<=D&&D<=127490||127504<=D&&D<=127546||127552<=D&&D<=127560||127568<=D&&D<=127569||131072<=D&&D<=194367||177984<=D&&D<=196605||196608<=D&&D<=262141?"W":32<=D&&D<=126||162<=D&&D<=163||165<=D&&D<=166||D==172||D==175||10214<=D&&D<=10221||10629<=D&&D<=10630?"Na":D==161||D==164||167<=D&&D<=168||D==170||173<=D&&D<=174||176<=D&&D<=180||182<=D&&D<=186||188<=D&&D<=191||D==198||D==208||215<=D&&D<=216||222<=D&&D<=225||D==230||232<=D&&D<=234||236<=D&&D<=237||D==240||242<=D&&D<=243||247<=D&&D<=250||D==252||D==254||D==257||D==273||D==275||D==283||294<=D&&D<=295||D==299||305<=D&&D<=307||D==312||319<=D&&D<=322||D==324||328<=D&&D<=331||D==333||338<=D&&D<=339||358<=D&&D<=359||D==363||D==462||D==464||D==466||D==468||D==470||D==472||D==474||D==476||D==593||D==609||D==708||D==711||713<=D&&D<=715||D==717||D==720||728<=D&&D<=731||D==733||D==735||768<=D&&D<=879||913<=D&&D<=929||931<=D&&D<=937||945<=D&&D<=961||963<=D&&D<=969||D==1025||1040<=D&&D<=1103||D==1105||D==8208||8211<=D&&D<=8214||8216<=D&&D<=8217||8220<=D&&D<=8221||8224<=D&&D<=8226||8228<=D&&D<=8231||D==8240||8242<=D&&D<=8243||D==8245||D==8251||D==8254||D==8308||D==8319||8321<=D&&D<=8324||D==8364||D==8451||D==8453||D==8457||D==8467||D==8470||8481<=D&&D<=8482||D==8486||D==8491||8531<=D&&D<=8532||8539<=D&&D<=8542||8544<=D&&D<=8555||8560<=D&&D<=8569||D==8585||8592<=D&&D<=8601||8632<=D&&D<=8633||D==8658||D==8660||D==8679||D==8704||8706<=D&&D<=8707||8711<=D&&D<=8712||D==8715||D==8719||D==8721||D==8725||D==8730||8733<=D&&D<=8736||D==8739||D==8741||8743<=D&&D<=8748||D==8750||8756<=D&&D<=8759||8764<=D&&D<=8765||D==8776||D==8780||D==8786||8800<=D&&D<=8801||8804<=D&&D<=8807||8810<=D&&D<=8811||8814<=D&&D<=8815||8834<=D&&D<=8835||8838<=D&&D<=8839||D==8853||D==8857||D==8869||D==8895||D==8978||9312<=D&&D<=9449||9451<=D&&D<=9547||9552<=D&&D<=9587||9600<=D&&D<=9615||9618<=D&&D<=9621||9632<=D&&D<=9633||9635<=D&&D<=9641||9650<=D&&D<=9651||9654<=D&&D<=9655||9660<=D&&D<=9661||9664<=D&&D<=9665||9670<=D&&D<=9672||D==9675||9678<=D&&D<=9681||9698<=D&&D<=9701||D==9711||9733<=D&&D<=9734||D==9737||9742<=D&&D<=9743||9748<=D&&D<=9749||D==9756||D==9758||D==9792||D==9794||9824<=D&&D<=9825||9827<=D&&D<=9829||9831<=D&&D<=9834||9836<=D&&D<=9837||D==9839||9886<=D&&D<=9887||9918<=D&&D<=9919||9924<=D&&D<=9933||9935<=D&&D<=9953||D==9955||9960<=D&&D<=9983||D==10045||D==10071||10102<=D&&D<=10111||11093<=D&&D<=11097||12872<=D&&D<=12879||57344<=D&&D<=63743||65024<=D&&D<=65039||D==65533||127232<=D&&D<=127242||127248<=D&&D<=127277||127280<=D&&D<=127337||127344<=D&&D<=127386||917760<=D&&D<=917999||983040<=D&&D<=1048573||1048576<=D&&D<=1114109?"A":"N"},u.characterLength=function(t){var s=this.eastAsianWidth(t);return s=="F"||s=="W"||s=="A"?2:1};function F(t){return t.match(/[\uD800-\uDBFF][\uDC00-\uDFFF]|[^\uD800-\uDFFF]/g)||[]}u.length=function(t){for(var s=F(t),C=0,D=0;D<s.length;D++)C=C+this.characterLength(s[D]);return C},u.slice=function(t,s,C){textLen=u.length(t),s=s||0,C=C||1,s<0&&(s=textLen+s),C<0&&(C=textLen+C);for(var D="",i=0,n=F(t),E=0;E<n.length;E++){var h=n[E],o=u.length(h);if(i>=s-(o==2?1:0))if(i+o<=C)D+=h;else break;i+=o;}return D};})(j$1);var Q$1=j$1.exports;const X=T$1(Q$1);var DD=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};const uD=T$1(DD);function A(e,u={}){if(typeof e!="string"||e.length===0||(u={ambiguousIsNarrow:true,...u},e=S(e),e.length===0))return 0;e=e.replace(uD()," ");const F=u.ambiguousIsNarrow?1:2;let t=0;for(const s of e){const C=s.codePointAt(0);if(C<=31||C>=127&&C<=159||C>=768&&C<=879)continue;switch(X.eastAsianWidth(s)){case "F":case "W":t+=2;break;case "A":t+=F;break;default:t+=1;}}return t}const d=10,M$1=(e=0)=>u=>`\x1B[${u+e}m`,P$1=(e=0)=>u=>`\x1B[${38+e};5;${u}m`,W=(e=0)=>(u,F,t)=>`\x1B[${38+e};2;${u};${F};${t}m`,r={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],overline:[53,55],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],gray:[90,39],grey:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgGray:[100,49],bgGrey:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}};Object.keys(r.modifier);const FD=Object.keys(r.color),eD=Object.keys(r.bgColor);[...FD,...eD];function tD(){const e=new Map;for(const[u,F]of Object.entries(r)){for(const[t,s]of Object.entries(F))r[t]={open:`\x1B[${s[0]}m`,close:`\x1B[${s[1]}m`},F[t]=r[t],e.set(s[0],s[1]);Object.defineProperty(r,u,{value:F,enumerable:false});}return Object.defineProperty(r,"codes",{value:e,enumerable:false}),r.color.close="\x1B[39m",r.bgColor.close="\x1B[49m",r.color.ansi=M$1(),r.color.ansi256=P$1(),r.color.ansi16m=W(),r.bgColor.ansi=M$1(d),r.bgColor.ansi256=P$1(d),r.bgColor.ansi16m=W(d),Object.defineProperties(r,{rgbToAnsi256:{value:(u,F,t)=>u===F&&F===t?u<8?16:u>248?231:Math.round((u-8)/247*24)+232:16+36*Math.round(u/255*5)+6*Math.round(F/255*5)+Math.round(t/255*5),enumerable:false},hexToRgb:{value:u=>{const F=/[a-f\d]{6}|[a-f\d]{3}/i.exec(u.toString(16));if(!F)return [0,0,0];let[t]=F;t.length===3&&(t=[...t].map(C=>C+C).join(""));const s=Number.parseInt(t,16);return [s>>16&255,s>>8&255,s&255]},enumerable:false},hexToAnsi256:{value:u=>r.rgbToAnsi256(...r.hexToRgb(u)),enumerable:false},ansi256ToAnsi:{value:u=>{if(u<8)return 30+u;if(u<16)return 90+(u-8);let F,t,s;if(u>=232)F=((u-232)*10+8)/255,t=F,s=F;else {u-=16;const i=u%36;F=Math.floor(u/36)/5,t=Math.floor(i/6)/5,s=i%6/5;}const C=Math.max(F,t,s)*2;if(C===0)return 30;let D=30+(Math.round(s)<<2|Math.round(t)<<1|Math.round(F));return C===2&&(D+=60),D},enumerable:false},rgbToAnsi:{value:(u,F,t)=>r.ansi256ToAnsi(r.rgbToAnsi256(u,F,t)),enumerable:false},hexToAnsi:{value:u=>r.ansi256ToAnsi(r.hexToAnsi256(u)),enumerable:false}}),r}const sD=tD(),g=new Set(["\x1B","\x9B"]),CD=39,b$1="\x07",O="[",iD="]",I$1="m",w=`${iD}8;;`,N=e=>`${g.values().next().value}${O}${e}${I$1}`,L=e=>`${g.values().next().value}${w}${e}${b$1}`,rD=e=>e.split(" ").map(u=>A(u)),y$1=(e,u,F)=>{const t=[...u];let s=false,C=false,D=A(S(e[e.length-1]));for(const[i,n]of t.entries()){const E=A(n);if(D+E<=F?e[e.length-1]+=n:(e.push(n),D=0),g.has(n)&&(s=true,C=t.slice(i+1).join("").startsWith(w)),s){C?n===b$1&&(s=false,C=false):n===I$1&&(s=false);continue}D+=E,D===F&&i<t.length-1&&(e.push(""),D=0);}!D&&e[e.length-1].length>0&&e.length>1&&(e[e.length-2]+=e.pop());},ED=e=>{const u=e.split(" ");let F=u.length;for(;F>0&&!(A(u[F-1])>0);)F--;return F===u.length?e:u.slice(0,F).join(" ")+u.slice(F).join("")},oD=(e,u,F={})=>{if(F.trim!==false&&e.trim()==="")return "";let t="",s,C;const D=rD(e);let i=[""];for(const[E,h]of e.split(" ").entries()){F.trim!==false&&(i[i.length-1]=i[i.length-1].trimStart());let o=A(i[i.length-1]);if(E!==0&&(o>=u&&(F.wordWrap===false||F.trim===false)&&(i.push(""),o=0),(o>0||F.trim===false)&&(i[i.length-1]+=" ",o++)),F.hard&&D[E]>u){const B=u-o,p=1+Math.floor((D[E]-B-1)/u);Math.floor((D[E]-1)/u)<p&&i.push(""),y$1(i,h,u);continue}if(o+D[E]>u&&o>0&&D[E]>0){if(F.wordWrap===false&&o<u){y$1(i,h,u);continue}i.push("");}if(o+D[E]>u&&F.wordWrap===false){y$1(i,h,u);continue}i[i.length-1]+=h;}F.trim!==false&&(i=i.map(E=>ED(E)));const n=[...i.join(`
348
- `)];for(const[E,h]of n.entries()){if(t+=h,g.has(h)){const{groups:B}=new RegExp(`(?:\\${O}(?<code>\\d+)m|\\${w}(?<uri>.*)${b$1})`).exec(n.slice(E).join(""))||{groups:{}};if(B.code!==void 0){const p=Number.parseFloat(B.code);s=p===CD?void 0:p;}else B.uri!==void 0&&(C=B.uri.length===0?void 0:B.uri);}const o=sD.codes.get(Number(s));n[E+1]===`
349
- `?(C&&(t+=L("")),s&&o&&(t+=N(o))):h===`
350
- `&&(s&&o&&(t+=N(s)),C&&(t+=L(C)));}return t};function R$1(e,u,F){return String(e).normalize().replace(/\r\n/g,`
352
+ function DD({onlyFirst:e=false}={}){const t=["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?(?:\\u0007|\\u001B\\u005C|\\u009C))","(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~]))"].join("|");return new RegExp(t,e?void 0:"g")}const uD=DD();function P$1(e){if(typeof e!="string")throw new TypeError(`Expected a \`string\`, got \`${typeof e}\``);return e.replace(uD,"")}function L$1(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var W$1={exports:{}};(function(e){var u={};e.exports=u,u.eastAsianWidth=function(F){var s=F.charCodeAt(0),i=F.length==2?F.charCodeAt(1):0,D=s;return 55296<=s&&s<=56319&&56320<=i&&i<=57343&&(s&=1023,i&=1023,D=s<<10|i,D+=65536),D==12288||65281<=D&&D<=65376||65504<=D&&D<=65510?"F":D==8361||65377<=D&&D<=65470||65474<=D&&D<=65479||65482<=D&&D<=65487||65490<=D&&D<=65495||65498<=D&&D<=65500||65512<=D&&D<=65518?"H":4352<=D&&D<=4447||4515<=D&&D<=4519||4602<=D&&D<=4607||9001<=D&&D<=9002||11904<=D&&D<=11929||11931<=D&&D<=12019||12032<=D&&D<=12245||12272<=D&&D<=12283||12289<=D&&D<=12350||12353<=D&&D<=12438||12441<=D&&D<=12543||12549<=D&&D<=12589||12593<=D&&D<=12686||12688<=D&&D<=12730||12736<=D&&D<=12771||12784<=D&&D<=12830||12832<=D&&D<=12871||12880<=D&&D<=13054||13056<=D&&D<=19903||19968<=D&&D<=42124||42128<=D&&D<=42182||43360<=D&&D<=43388||44032<=D&&D<=55203||55216<=D&&D<=55238||55243<=D&&D<=55291||63744<=D&&D<=64255||65040<=D&&D<=65049||65072<=D&&D<=65106||65108<=D&&D<=65126||65128<=D&&D<=65131||110592<=D&&D<=110593||127488<=D&&D<=127490||127504<=D&&D<=127546||127552<=D&&D<=127560||127568<=D&&D<=127569||131072<=D&&D<=194367||177984<=D&&D<=196605||196608<=D&&D<=262141?"W":32<=D&&D<=126||162<=D&&D<=163||165<=D&&D<=166||D==172||D==175||10214<=D&&D<=10221||10629<=D&&D<=10630?"Na":D==161||D==164||167<=D&&D<=168||D==170||173<=D&&D<=174||176<=D&&D<=180||182<=D&&D<=186||188<=D&&D<=191||D==198||D==208||215<=D&&D<=216||222<=D&&D<=225||D==230||232<=D&&D<=234||236<=D&&D<=237||D==240||242<=D&&D<=243||247<=D&&D<=250||D==252||D==254||D==257||D==273||D==275||D==283||294<=D&&D<=295||D==299||305<=D&&D<=307||D==312||319<=D&&D<=322||D==324||328<=D&&D<=331||D==333||338<=D&&D<=339||358<=D&&D<=359||D==363||D==462||D==464||D==466||D==468||D==470||D==472||D==474||D==476||D==593||D==609||D==708||D==711||713<=D&&D<=715||D==717||D==720||728<=D&&D<=731||D==733||D==735||768<=D&&D<=879||913<=D&&D<=929||931<=D&&D<=937||945<=D&&D<=961||963<=D&&D<=969||D==1025||1040<=D&&D<=1103||D==1105||D==8208||8211<=D&&D<=8214||8216<=D&&D<=8217||8220<=D&&D<=8221||8224<=D&&D<=8226||8228<=D&&D<=8231||D==8240||8242<=D&&D<=8243||D==8245||D==8251||D==8254||D==8308||D==8319||8321<=D&&D<=8324||D==8364||D==8451||D==8453||D==8457||D==8467||D==8470||8481<=D&&D<=8482||D==8486||D==8491||8531<=D&&D<=8532||8539<=D&&D<=8542||8544<=D&&D<=8555||8560<=D&&D<=8569||D==8585||8592<=D&&D<=8601||8632<=D&&D<=8633||D==8658||D==8660||D==8679||D==8704||8706<=D&&D<=8707||8711<=D&&D<=8712||D==8715||D==8719||D==8721||D==8725||D==8730||8733<=D&&D<=8736||D==8739||D==8741||8743<=D&&D<=8748||D==8750||8756<=D&&D<=8759||8764<=D&&D<=8765||D==8776||D==8780||D==8786||8800<=D&&D<=8801||8804<=D&&D<=8807||8810<=D&&D<=8811||8814<=D&&D<=8815||8834<=D&&D<=8835||8838<=D&&D<=8839||D==8853||D==8857||D==8869||D==8895||D==8978||9312<=D&&D<=9449||9451<=D&&D<=9547||9552<=D&&D<=9587||9600<=D&&D<=9615||9618<=D&&D<=9621||9632<=D&&D<=9633||9635<=D&&D<=9641||9650<=D&&D<=9651||9654<=D&&D<=9655||9660<=D&&D<=9661||9664<=D&&D<=9665||9670<=D&&D<=9672||D==9675||9678<=D&&D<=9681||9698<=D&&D<=9701||D==9711||9733<=D&&D<=9734||D==9737||9742<=D&&D<=9743||9748<=D&&D<=9749||D==9756||D==9758||D==9792||D==9794||9824<=D&&D<=9825||9827<=D&&D<=9829||9831<=D&&D<=9834||9836<=D&&D<=9837||D==9839||9886<=D&&D<=9887||9918<=D&&D<=9919||9924<=D&&D<=9933||9935<=D&&D<=9953||D==9955||9960<=D&&D<=9983||D==10045||D==10071||10102<=D&&D<=10111||11093<=D&&D<=11097||12872<=D&&D<=12879||57344<=D&&D<=63743||65024<=D&&D<=65039||D==65533||127232<=D&&D<=127242||127248<=D&&D<=127277||127280<=D&&D<=127337||127344<=D&&D<=127386||917760<=D&&D<=917999||983040<=D&&D<=1048573||1048576<=D&&D<=1114109?"A":"N"},u.characterLength=function(F){var s=this.eastAsianWidth(F);return s=="F"||s=="W"||s=="A"?2:1};function t(F){return F.match(/[\uD800-\uDBFF][\uDC00-\uDFFF]|[^\uD800-\uDFFF]/g)||[]}u.length=function(F){for(var s=t(F),i=0,D=0;D<s.length;D++)i=i+this.characterLength(s[D]);return i},u.slice=function(F,s,i){textLen=u.length(F),s=s||0,i=i||1,s<0&&(s=textLen+s),i<0&&(i=textLen+i);for(var D="",C=0,n=t(F),E=0;E<n.length;E++){var a=n[E],o=u.length(a);if(C>=s-(o==2?1:0))if(C+o<=i)D+=a;else break;C+=o;}return D};})(W$1);var tD=W$1.exports;const eD=L$1(tD);var FD=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};const sD=L$1(FD);function p(e,u={}){if(typeof e!="string"||e.length===0||(u={ambiguousIsNarrow:true,...u},e=P$1(e),e.length===0))return 0;e=e.replace(sD()," ");const t=u.ambiguousIsNarrow?1:2;let F=0;for(const s of e){const i=s.codePointAt(0);if(i<=31||i>=127&&i<=159||i>=768&&i<=879)continue;switch(eD.eastAsianWidth(s)){case "F":case "W":F+=2;break;case "A":F+=t;break;default:F+=1;}}return F}const w=10,N=(e=0)=>u=>`\x1B[${u+e}m`,I=(e=0)=>u=>`\x1B[${38+e};5;${u}m`,R=(e=0)=>(u,t,F)=>`\x1B[${38+e};2;${u};${t};${F}m`,r={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],overline:[53,55],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],gray:[90,39],grey:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgGray:[100,49],bgGrey:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}};Object.keys(r.modifier);const iD=Object.keys(r.color),CD=Object.keys(r.bgColor);[...iD,...CD];function rD(){const e=new Map;for(const[u,t]of Object.entries(r)){for(const[F,s]of Object.entries(t))r[F]={open:`\x1B[${s[0]}m`,close:`\x1B[${s[1]}m`},t[F]=r[F],e.set(s[0],s[1]);Object.defineProperty(r,u,{value:t,enumerable:false});}return Object.defineProperty(r,"codes",{value:e,enumerable:false}),r.color.close="\x1B[39m",r.bgColor.close="\x1B[49m",r.color.ansi=N(),r.color.ansi256=I(),r.color.ansi16m=R(),r.bgColor.ansi=N(w),r.bgColor.ansi256=I(w),r.bgColor.ansi16m=R(w),Object.defineProperties(r,{rgbToAnsi256:{value:(u,t,F)=>u===t&&t===F?u<8?16:u>248?231:Math.round((u-8)/247*24)+232:16+36*Math.round(u/255*5)+6*Math.round(t/255*5)+Math.round(F/255*5),enumerable:false},hexToRgb:{value:u=>{const t=/[a-f\d]{6}|[a-f\d]{3}/i.exec(u.toString(16));if(!t)return [0,0,0];let[F]=t;F.length===3&&(F=[...F].map(i=>i+i).join(""));const s=Number.parseInt(F,16);return [s>>16&255,s>>8&255,s&255]},enumerable:false},hexToAnsi256:{value:u=>r.rgbToAnsi256(...r.hexToRgb(u)),enumerable:false},ansi256ToAnsi:{value:u=>{if(u<8)return 30+u;if(u<16)return 90+(u-8);let t,F,s;if(u>=232)t=((u-232)*10+8)/255,F=t,s=t;else {u-=16;const C=u%36;t=Math.floor(u/36)/5,F=Math.floor(C/6)/5,s=C%6/5;}const i=Math.max(t,F,s)*2;if(i===0)return 30;let D=30+(Math.round(s)<<2|Math.round(F)<<1|Math.round(t));return i===2&&(D+=60),D},enumerable:false},rgbToAnsi:{value:(u,t,F)=>r.ansi256ToAnsi(r.rgbToAnsi256(u,t,F)),enumerable:false},hexToAnsi:{value:u=>r.ansi256ToAnsi(r.hexToAnsi256(u)),enumerable:false}}),r}const ED=rD(),d$1=new Set(["\x1B","\x9B"]),oD=39,y="\x07",V$1="[",nD="]",G$1="m",_$1=`${nD}8;;`,z=e=>`${d$1.values().next().value}${V$1}${e}${G$1}`,K$1=e=>`${d$1.values().next().value}${_$1}${e}${y}`,aD=e=>e.split(" ").map(u=>p(u)),k$1=(e,u,t)=>{const F=[...u];let s=false,i=false,D=p(P$1(e[e.length-1]));for(const[C,n]of F.entries()){const E=p(n);if(D+E<=t?e[e.length-1]+=n:(e.push(n),D=0),d$1.has(n)&&(s=true,i=F.slice(C+1).join("").startsWith(_$1)),s){i?n===y&&(s=false,i=false):n===G$1&&(s=false);continue}D+=E,D===t&&C<F.length-1&&(e.push(""),D=0);}!D&&e[e.length-1].length>0&&e.length>1&&(e[e.length-2]+=e.pop());},hD=e=>{const u=e.split(" ");let t=u.length;for(;t>0&&!(p(u[t-1])>0);)t--;return t===u.length?e:u.slice(0,t).join(" ")+u.slice(t).join("")},lD=(e,u,t={})=>{if(t.trim!==false&&e.trim()==="")return "";let F="",s,i;const D=aD(e);let C=[""];for(const[E,a]of e.split(" ").entries()){t.trim!==false&&(C[C.length-1]=C[C.length-1].trimStart());let o=p(C[C.length-1]);if(E!==0&&(o>=u&&(t.wordWrap===false||t.trim===false)&&(C.push(""),o=0),(o>0||t.trim===false)&&(C[C.length-1]+=" ",o++)),t.hard&&D[E]>u){const c=u-o,f=1+Math.floor((D[E]-c-1)/u);Math.floor((D[E]-1)/u)<f&&C.push(""),k$1(C,a,u);continue}if(o+D[E]>u&&o>0&&D[E]>0){if(t.wordWrap===false&&o<u){k$1(C,a,u);continue}C.push("");}if(o+D[E]>u&&t.wordWrap===false){k$1(C,a,u);continue}C[C.length-1]+=a;}t.trim!==false&&(C=C.map(E=>hD(E)));const n=[...C.join(`
353
+ `)];for(const[E,a]of n.entries()){if(F+=a,d$1.has(a)){const{groups:c}=new RegExp(`(?:\\${V$1}(?<code>\\d+)m|\\${_$1}(?<uri>.*)${y})`).exec(n.slice(E).join(""))||{groups:{}};if(c.code!==void 0){const f=Number.parseFloat(c.code);s=f===oD?void 0:f;}else c.uri!==void 0&&(i=c.uri.length===0?void 0:c.uri);}const o=ED.codes.get(Number(s));n[E+1]===`
354
+ `?(i&&(F+=K$1("")),s&&o&&(F+=z(o))):a===`
355
+ `&&(s&&o&&(F+=z(s)),i&&(F+=K$1(i)));}return F};function Y$1(e,u,t){return String(e).normalize().replace(/\r\n/g,`
351
356
  `).split(`
352
- `).map(t=>oD(t,u,F)).join(`
353
- `)}var nD=Object.defineProperty,aD=(e,u,F)=>u in e?nD(e,u,{enumerable:true,configurable:true,writable:true,value:F}):e[u]=F,a$1=(e,u,F)=>(aD(e,typeof u!="symbol"?u+"":u,F),F);function hD(e,u){if(e===u)return;const F=e.split(`
354
- `),t=u.split(`
355
- `),s=[];for(let C=0;C<Math.max(F.length,t.length);C++)F[C]!==t[C]&&s.push(C);return s}const V$1=Symbol("clack:cancel");function lD(e){return e===V$1}function v(e,u){e.isTTY&&e.setRawMode(u);}const z=new Map([["k","up"],["j","down"],["h","left"],["l","right"]]),xD=new Set(["up","down","left","right","space","enter"]);class x{constructor({render:u,input:F=stdin,output:t=stdout,...s},C=true){a$1(this,"input"),a$1(this,"output"),a$1(this,"rl"),a$1(this,"opts"),a$1(this,"_track",false),a$1(this,"_render"),a$1(this,"_cursor",0),a$1(this,"state","initial"),a$1(this,"value"),a$1(this,"error",""),a$1(this,"subscribers",new Map),a$1(this,"_prevFrame",""),this.opts=s,this.onKeypress=this.onKeypress.bind(this),this.close=this.close.bind(this),this.render=this.render.bind(this),this._render=u.bind(this),this._track=C,this.input=F,this.output=t;}prompt(){const u=new WriteStream(0);return u._write=(F,t,s)=>{this._track&&(this.value=this.rl.line.replace(/\t/g,""),this._cursor=this.rl.cursor,this.emit("value",this.value)),s();},this.input.pipe(u),this.rl=f__default.createInterface({input:this.input,output:u,tabSize:2,prompt:"",escapeCodeTimeout:50}),f__default.emitKeypressEvents(this.input,this.rl),this.rl.prompt(),this.opts.initialValue!==void 0&&this._track&&this.rl.write(this.opts.initialValue),this.input.on("keypress",this.onKeypress),v(this.input,true),this.output.on("resize",this.render),this.render(),new Promise((F,t)=>{this.once("submit",()=>{this.output.write(srcExports.cursor.show),this.output.off("resize",this.render),v(this.input,false),F(this.value);}),this.once("cancel",()=>{this.output.write(srcExports.cursor.show),this.output.off("resize",this.render),v(this.input,false),F(V$1);});})}on(u,F){const t=this.subscribers.get(u)??[];t.push({cb:F}),this.subscribers.set(u,t);}once(u,F){const t=this.subscribers.get(u)??[];t.push({cb:F,once:true}),this.subscribers.set(u,t);}emit(u,...F){const t=this.subscribers.get(u)??[],s=[];for(const C of t)C.cb(...F),C.once&&s.push(()=>t.splice(t.indexOf(C),1));for(const C of s)C();}unsubscribe(){this.subscribers.clear();}onKeypress(u,F){if(this.state==="error"&&(this.state="active"),F?.name&&!this._track&&z.has(F.name)&&this.emit("cursor",z.get(F.name)),F?.name&&xD.has(F.name)&&this.emit("cursor",F.name),u&&(u.toLowerCase()==="y"||u.toLowerCase()==="n")&&this.emit("confirm",u.toLowerCase()==="y"),u===" "&&this.opts.placeholder&&(this.value||(this.rl.write(this.opts.placeholder),this.emit("value",this.opts.placeholder))),u&&this.emit("key",u.toLowerCase()),F?.name==="return"){if(this.opts.validate){const t=this.opts.validate(this.value);t&&(this.error=t,this.state="error",this.rl.write(this.value));}this.state!=="error"&&(this.state="submit");}u===""&&(this.state="cancel"),(this.state==="submit"||this.state==="cancel")&&this.emit("finalize"),this.render(),(this.state==="submit"||this.state==="cancel")&&this.close();}close(){this.input.unpipe(),this.input.removeListener("keypress",this.onKeypress),this.output.write(`
356
- `),v(this.input,false),this.rl.close(),this.emit(`${this.state}`,this.value),this.unsubscribe();}restoreCursor(){const u=R$1(this._prevFrame,process.stdout.columns,{hard:true}).split(`
357
- `).length-1;this.output.write(srcExports.cursor.move(-999,u*-1));}render(){const u=R$1(this._render(this)??"",process.stdout.columns,{hard:true});if(u!==this._prevFrame){if(this.state==="initial")this.output.write(srcExports.cursor.hide);else {const F=hD(this._prevFrame,u);if(this.restoreCursor(),F&&F?.length===1){const t=F[0];this.output.write(srcExports.cursor.move(0,t)),this.output.write(srcExports.erase.lines(1));const s=u.split(`
358
- `);this.output.write(s[t]),this._prevFrame=u,this.output.write(srcExports.cursor.move(0,s.length-t-1));return}else if(F&&F?.length>1){const t=F[0];this.output.write(srcExports.cursor.move(0,t)),this.output.write(srcExports.erase.down());const s=u.split(`
359
- `).slice(t);this.output.write(s.join(`
360
- `)),this._prevFrame=u;return}this.output.write(srcExports.erase.down());}this.output.write(u),this.state==="initial"&&(this.state="active"),this._prevFrame=u;}}}class BD extends x{get cursor(){return this.value?0:1}get _value(){return this.cursor===0}constructor(u){super(u,false),this.value=!!u.initialValue,this.on("value",()=>{this.value=this._value;}),this.on("confirm",F=>{this.output.write(srcExports.cursor.move(0,-1)),this.value=F,this.state="submit",this.close();}),this.on("cursor",()=>{this.value=!this.value;});}}var fD=Object.defineProperty,gD=(e,u,F)=>u in e?fD(e,u,{enumerable:true,configurable:true,writable:true,value:F}):e[u]=F,K$1=(e,u,F)=>(gD(e,typeof u!="symbol"?u+"":u,F),F);let vD=class extends x{constructor(u){super(u,false),K$1(this,"options"),K$1(this,"cursor",0),this.options=u.options,this.value=[...u.initialValues??[]],this.cursor=Math.max(this.options.findIndex(({value:F})=>F===u.cursorAt),0),this.on("key",F=>{F==="a"&&this.toggleAll();}),this.on("cursor",F=>{switch(F){case "left":case "up":this.cursor=this.cursor===0?this.options.length-1:this.cursor-1;break;case "down":case "right":this.cursor=this.cursor===this.options.length-1?0:this.cursor+1;break;case "space":this.toggleValue();break}});}get _value(){return this.options[this.cursor].value}toggleAll(){const u=this.value.length===this.options.length;this.value=u?[]:this.options.map(F=>F.value);}toggleValue(){const u=this.value.includes(this._value);this.value=u?this.value.filter(F=>F!==this._value):[...this.value,this._value];}};var wD=Object.defineProperty,yD=(e,u,F)=>u in e?wD(e,u,{enumerable:true,configurable:true,writable:true,value:F}):e[u]=F,Z=(e,u,F)=>(yD(e,typeof u!="symbol"?u+"":u,F),F);let $D=class extends x{constructor(u){super(u,false),Z(this,"options"),Z(this,"cursor",0),this.options=u.options,this.cursor=this.options.findIndex(({value:F})=>F===u.initialValue),this.cursor===-1&&(this.cursor=0),this.changeValue(),this.on("cursor",F=>{switch(F){case "left":case "up":this.cursor=this.cursor===0?this.options.length-1:this.cursor-1;break;case "down":case "right":this.cursor=this.cursor===this.options.length-1?0:this.cursor+1;break}this.changeValue();});}get _value(){return this.options[this.cursor]}changeValue(){this.value=this._value.value;}};var TD=Object.defineProperty,jD=(e,u,F)=>u in e?TD(e,u,{enumerable:true,configurable:true,writable:true,value:F}):e[u]=F,MD=(e,u,F)=>(jD(e,u+"",F),F);class PD extends x{constructor(u){super(u),MD(this,"valueWithCursor",""),this.on("finalize",()=>{this.value||(this.value=u.defaultValue),this.valueWithCursor=this.value;}),this.on("value",()=>{if(this.cursor>=this.value.length)this.valueWithCursor=`${this.value}${color2.inverse(color2.hidden("_"))}`;else {const F=this.value.slice(0,this.cursor),t=this.value.slice(this.cursor);this.valueWithCursor=`${F}${color2.inverse(t[0])}${t.slice(1)}`;}});}get cursor(){return this._cursor}}const WD=globalThis.process.platform.startsWith("win");function OD({input:e=stdin,output:u=stdout,overwrite:F=true,hideCursor:t=true}={}){const s=f.createInterface({input:e,output:u,prompt:"",tabSize:1});f.emitKeypressEvents(e,s),e.isTTY&&e.setRawMode(true);const C=(D,{name:i})=>{if(String(D)===""){t&&u.write(srcExports.cursor.show),process.exit(0);return}if(!F)return;let n=i==="return"?0:-1,E=i==="return"?-1:0;f.moveCursor(u,n,E,()=>{f.clearLine(u,1,()=>{e.once("keypress",C);});});};return t&&u.write(srcExports.cursor.hide),e.once("keypress",C),()=>{e.off("keypress",C),t&&u.write(srcExports.cursor.show),e.isTTY&&!WD&&e.setRawMode(false),s.terminal=false,s.close();}}
361
-
362
- function K(){return h.platform!=="win32"?h.env.TERM!=="linux":!!h.env.CI||!!h.env.WT_SESSION||!!h.env.TERMINUS_SUBLIME||h.env.ConEmuTask==="{cmd::Cmder}"||h.env.TERM_PROGRAM==="Terminus-Sublime"||h.env.TERM_PROGRAM==="vscode"||h.env.TERM==="xterm-256color"||h.env.TERM==="alacritty"||h.env.TERMINAL_EMULATOR==="JetBrains-JediTerm"}const C=K(),u=(s,n)=>C?s:n,Y=u("\u25C6","*"),P=u("\u25A0","x"),V=u("\u25B2","x"),M=u("\u25C7","o"),Q=u("\u250C","T"),a=u("\u2502","|"),$=u("\u2514","\u2014"),I=u("\u25CF",">"),T=u("\u25CB"," "),j=u("\u25FB","[\u2022]"),b=u("\u25FC","[+]"),B=u("\u25FB","[ ]"),G=u("\u2500","-"),H=u("\u256E","+"),ee=u("\u251C","+"),te=u("\u256F","+"),y=s=>{switch(s){case "initial":case "active":return color2.cyan(Y);case "cancel":return color2.red(P);case "error":return color2.yellow(V);case "submit":return color2.green(M)}},E=s=>{const{cursor:n,options:t,style:i}=s,r=s.maxItems??1/0,o=Math.max(process.stdout.rows-4,0),c=Math.min(o,Math.max(r,5));let l=0;n>=l+c-3?l=Math.max(Math.min(n-c+3,t.length-c),0):n<l+2&&(l=Math.max(n-2,0));const d=c<t.length&&l>0,p=c<t.length&&l+c<t.length;return t.slice(l,l+c).map((S,f,x)=>{const g=f===0&&d,m=f===x.length-1&&p;return g||m?color2.dim("..."):i(S,f+l===n)})},ae=s=>new PD({validate:s.validate,placeholder:s.placeholder,defaultValue:s.defaultValue,initialValue:s.initialValue,render(){const n=`${color2.gray(a)}
363
- ${y(this.state)} ${s.message}
364
- `,t=s.placeholder?color2.inverse(s.placeholder[0])+color2.dim(s.placeholder.slice(1)):color2.inverse(color2.hidden("_")),i=this.value?this.valueWithCursor:t;switch(this.state){case "error":return `${n.trim()}
365
- ${color2.yellow(a)} ${i}
366
- ${color2.yellow($)} ${color2.yellow(this.error)}
367
- `;case "submit":return `${n}${color2.gray(a)} ${color2.dim(this.value||s.placeholder)}`;case "cancel":return `${n}${color2.gray(a)} ${color2.strikethrough(color2.dim(this.value??""))}${this.value?.trim()?`
368
- `+color2.gray(a):""}`;default:return `${n}${color2.cyan(a)} ${i}
369
- ${color2.cyan($)}
370
- `}}}).prompt(),ce=s=>{const n=s.active??"Yes",t=s.inactive??"No";return new BD({active:n,inactive:t,initialValue:s.initialValue??true,render(){const i=`${color2.gray(a)}
371
- ${y(this.state)} ${s.message}
372
- `,r=this.value?n:t;switch(this.state){case "submit":return `${i}${color2.gray(a)} ${color2.dim(r)}`;case "cancel":return `${i}${color2.gray(a)} ${color2.strikethrough(color2.dim(r))}
373
- ${color2.gray(a)}`;default:return `${i}${color2.cyan(a)} ${this.value?`${color2.green(I)} ${n}`:`${color2.dim(T)} ${color2.dim(n)}`} ${color2.dim("/")} ${this.value?`${color2.dim(T)} ${color2.dim(t)}`:`${color2.green(I)} ${t}`}
374
- ${color2.cyan($)}
375
- `}}}).prompt()},le=s=>{const n=(t,i)=>{const r=t.label??String(t.value);switch(i){case "selected":return `${color2.dim(r)}`;case "active":return `${color2.green(I)} ${r} ${t.hint?color2.dim(`(${t.hint})`):""}`;case "cancelled":return `${color2.strikethrough(color2.dim(r))}`;default:return `${color2.dim(T)} ${color2.dim(r)}`}};return new $D({options:s.options,initialValue:s.initialValue,render(){const t=`${color2.gray(a)}
376
- ${y(this.state)} ${s.message}
377
- `;switch(this.state){case "submit":return `${t}${color2.gray(a)} ${n(this.options[this.cursor],"selected")}`;case "cancel":return `${t}${color2.gray(a)} ${n(this.options[this.cursor],"cancelled")}
378
- ${color2.gray(a)}`;default:return `${t}${color2.cyan(a)} ${E({cursor:this.cursor,options:this.options,maxItems:s.maxItems,style:(i,r)=>n(i,r?"active":"inactive")}).join(`
379
- ${color2.cyan(a)} `)}
380
- ${color2.cyan($)}
381
- `}}}).prompt()},$e=s=>{const n=(t,i)=>{const r=t.label??String(t.value);return i==="active"?`${color2.cyan(j)} ${r} ${t.hint?color2.dim(`(${t.hint})`):""}`:i==="selected"?`${color2.green(b)} ${color2.dim(r)}`:i==="cancelled"?`${color2.strikethrough(color2.dim(r))}`:i==="active-selected"?`${color2.green(b)} ${r} ${t.hint?color2.dim(`(${t.hint})`):""}`:i==="submitted"?`${color2.dim(r)}`:`${color2.dim(B)} ${color2.dim(r)}`};return new vD({options:s.options,initialValues:s.initialValues,required:s.required??true,cursorAt:s.cursorAt,validate(t){if(this.required&&t.length===0)return `Please select at least one option.
382
- ${color2.reset(color2.dim(`Press ${color2.gray(color2.bgWhite(color2.inverse(" space ")))} to select, ${color2.gray(color2.bgWhite(color2.inverse(" enter ")))} to submit`))}`},render(){let t=`${color2.gray(a)}
383
- ${y(this.state)} ${s.message}
384
- `;const i=(r,o)=>{const c=this.value.includes(r.value);return o&&c?n(r,"active-selected"):c?n(r,"selected"):n(r,o?"active":"inactive")};switch(this.state){case "submit":return `${t}${color2.gray(a)} ${this.options.filter(({value:r})=>this.value.includes(r)).map(r=>n(r,"submitted")).join(color2.dim(", "))||color2.dim("none")}`;case "cancel":{const r=this.options.filter(({value:o})=>this.value.includes(o)).map(o=>n(o,"cancelled")).join(color2.dim(", "));return `${t}${color2.gray(a)} ${r.trim()?`${r}
385
- ${color2.gray(a)}`:""}`}case "error":{const r=this.error.split(`
386
- `).map((o,c)=>c===0?`${color2.yellow($)} ${color2.yellow(o)}`:` ${o}`).join(`
387
- `);return t+color2.yellow(a)+" "+E({options:this.options,cursor:this.cursor,maxItems:s.maxItems,style:i}).join(`
388
- ${color2.yellow(a)} `)+`
389
- `+r+`
390
- `}default:return `${t}${color2.cyan(a)} ${E({options:this.options,cursor:this.cursor,maxItems:s.maxItems,style:i}).join(`
391
- ${color2.cyan(a)} `)}
392
- ${color2.cyan($)}
393
- `}}}).prompt()},R=s=>s.replace(ye(),""),me=(s="",n="")=>{const t=`
394
- ${s}
357
+ `).map(F=>lD(F,u,t)).join(`
358
+ `)}const xD=["up","down","left","right","space","enter","cancel"],B={actions:new Set(xD),aliases:new Map([["k","up"],["j","down"],["h","left"],["l","right"],["","cancel"],["escape","cancel"]])};function $(e,u){if(typeof e=="string")return B.aliases.get(e)===u;for(const t of e)if(t!==void 0&&$(t,u))return true;return false}function BD(e,u){if(e===u)return;const t=e.split(`
359
+ `),F=u.split(`
360
+ `),s=[];for(let i=0;i<Math.max(t.length,F.length);i++)t[i]!==F[i]&&s.push(i);return s}const AD=globalThis.process.platform.startsWith("win"),S=Symbol("clack:cancel");function pD(e){return e===S}function m(e,u){const t=e;t.isTTY&&t.setRawMode(u);}function fD({input:e=stdin,output:u=stdout,overwrite:t=true,hideCursor:F=true}={}){const s=g.createInterface({input:e,output:u,prompt:"",tabSize:1});g.emitKeypressEvents(e,s),e.isTTY&&e.setRawMode(true);const i=(D,{name:C,sequence:n})=>{const E=String(D);if($([E,C,n],"cancel")){F&&u.write(srcExports.cursor.show),process.exit(0);return}if(!t)return;const a=C==="return"?0:-1,o=C==="return"?-1:0;g.moveCursor(u,a,o,()=>{g.clearLine(u,1,()=>{e.once("keypress",i);});});};return F&&u.write(srcExports.cursor.hide),e.once("keypress",i),()=>{e.off("keypress",i),F&&u.write(srcExports.cursor.show),e.isTTY&&!AD&&e.setRawMode(false),s.terminal=false,s.close();}}var gD=Object.defineProperty,vD=(e,u,t)=>u in e?gD(e,u,{enumerable:true,configurable:true,writable:true,value:t}):e[u]=t,h=(e,u,t)=>(vD(e,typeof u!="symbol"?u+"":u,t),t);class x{constructor(u,t=true){h(this,"input"),h(this,"output"),h(this,"_abortSignal"),h(this,"rl"),h(this,"opts"),h(this,"_render"),h(this,"_track",false),h(this,"_prevFrame",""),h(this,"_subscribers",new Map),h(this,"_cursor",0),h(this,"state","initial"),h(this,"error",""),h(this,"value");const{input:F=stdin,output:s=stdout,render:i,signal:D,...C}=u;this.opts=C,this.onKeypress=this.onKeypress.bind(this),this.close=this.close.bind(this),this.render=this.render.bind(this),this._render=i.bind(this),this._track=t,this._abortSignal=D,this.input=F,this.output=s;}unsubscribe(){this._subscribers.clear();}setSubscriber(u,t){const F=this._subscribers.get(u)??[];F.push(t),this._subscribers.set(u,F);}on(u,t){this.setSubscriber(u,{cb:t});}once(u,t){this.setSubscriber(u,{cb:t,once:true});}emit(u,...t){const F=this._subscribers.get(u)??[],s=[];for(const i of F)i.cb(...t),i.once&&s.push(()=>F.splice(F.indexOf(i),1));for(const i of s)i();}prompt(){return new Promise((u,t)=>{if(this._abortSignal){if(this._abortSignal.aborted)return this.state="cancel",this.close(),u(S);this._abortSignal.addEventListener("abort",()=>{this.state="cancel",this.close();},{once:true});}const F=new Writable;F._write=(s,i,D)=>{this._track&&(this.value=this.rl?.line.replace(/\t/g,""),this._cursor=this.rl?.cursor??0,this.emit("value",this.value)),D();},this.input.pipe(F),this.rl=g__default.createInterface({input:this.input,output:F,tabSize:2,prompt:"",escapeCodeTimeout:50,terminal:true}),g__default.emitKeypressEvents(this.input,this.rl),this.rl.prompt(),this.opts.initialValue!==void 0&&this._track&&this.rl.write(this.opts.initialValue),this.input.on("keypress",this.onKeypress),m(this.input,true),this.output.on("resize",this.render),this.render(),this.once("submit",()=>{this.output.write(srcExports.cursor.show),this.output.off("resize",this.render),m(this.input,false),u(this.value);}),this.once("cancel",()=>{this.output.write(srcExports.cursor.show),this.output.off("resize",this.render),m(this.input,false),u(S);});})}onKeypress(u,t){if(this.state==="error"&&(this.state="active"),t?.name&&(!this._track&&B.aliases.has(t.name)&&this.emit("cursor",B.aliases.get(t.name)),B.actions.has(t.name)&&this.emit("cursor",t.name)),u&&(u.toLowerCase()==="y"||u.toLowerCase()==="n")&&this.emit("confirm",u.toLowerCase()==="y"),u===" "&&this.opts.placeholder&&(this.value||(this.rl?.write(this.opts.placeholder),this.emit("value",this.opts.placeholder))),u&&this.emit("key",u.toLowerCase()),t?.name==="return"){if(this.opts.validate){const F=this.opts.validate(this.value);F&&(this.error=F instanceof Error?F.message:F,this.state="error",this.rl?.write(this.value));}this.state!=="error"&&(this.state="submit");}$([u,t?.name,t?.sequence],"cancel")&&(this.state="cancel"),(this.state==="submit"||this.state==="cancel")&&this.emit("finalize"),this.render(),(this.state==="submit"||this.state==="cancel")&&this.close();}close(){this.input.unpipe(),this.input.removeListener("keypress",this.onKeypress),this.output.write(`
361
+ `),m(this.input,false),this.rl?.close(),this.rl=void 0,this.emit(`${this.state}`,this.value),this.unsubscribe();}restoreCursor(){const u=Y$1(this._prevFrame,process.stdout.columns,{hard:true}).split(`
362
+ `).length-1;this.output.write(srcExports.cursor.move(-999,u*-1));}render(){const u=Y$1(this._render(this)??"",process.stdout.columns,{hard:true});if(u!==this._prevFrame){if(this.state==="initial")this.output.write(srcExports.cursor.hide);else {const t=BD(this._prevFrame,u);if(this.restoreCursor(),t&&t?.length===1){const F=t[0];this.output.write(srcExports.cursor.move(0,F)),this.output.write(srcExports.erase.lines(1));const s=u.split(`
363
+ `);this.output.write(s[F]),this._prevFrame=u,this.output.write(srcExports.cursor.move(0,s.length-F-1));return}if(t&&t?.length>1){const F=t[0];this.output.write(srcExports.cursor.move(0,F)),this.output.write(srcExports.erase.down());const s=u.split(`
364
+ `).slice(F);this.output.write(s.join(`
365
+ `)),this._prevFrame=u;return}this.output.write(srcExports.erase.down());}this.output.write(u),this.state==="initial"&&(this.state="active"),this._prevFrame=u;}}}var OD=Object.defineProperty,PD=(e,u,t)=>u in e?OD(e,u,{enumerable:true,configurable:true,writable:true,value:t}):e[u]=t,J=(e,u,t)=>(PD(e,typeof u!="symbol"?u+"":u,t),t);class LD extends x{constructor(u){super(u,false),J(this,"options"),J(this,"cursor",0),this.options=u.options,this.cursor=this.options.findIndex(({value:t})=>t===u.initialValue),this.cursor===-1&&(this.cursor=0),this.changeValue(),this.on("cursor",t=>{switch(t){case "left":case "up":this.cursor=this.cursor===0?this.options.length-1:this.cursor-1;break;case "down":case "right":this.cursor=this.cursor===this.options.length-1?0:this.cursor+1;break}this.changeValue();});}get _value(){return this.options[this.cursor]}changeValue(){this.value=this._value.value;}}class RD extends x{get valueWithCursor(){if(this.state==="submit")return this.value;if(this.cursor>=this.value.length)return `${this.value}\u2588`;const u=this.value.slice(0,this.cursor),[t,...F]=this.value.slice(this.cursor);return `${u}${color2.inverse(t)}${F.join("")}`}get cursor(){return this._cursor}constructor(u){super(u),this.on("finalize",()=>{this.value||(this.value=u.defaultValue);});}}
366
+
367
+ function ce(){return y$1.platform!=="win32"?y$1.env.TERM!=="linux":!!y$1.env.CI||!!y$1.env.WT_SESSION||!!y$1.env.TERMINUS_SUBLIME||y$1.env.ConEmuTask==="{cmd::Cmder}"||y$1.env.TERM_PROGRAM==="Terminus-Sublime"||y$1.env.TERM_PROGRAM==="vscode"||y$1.env.TERM==="xterm-256color"||y$1.env.TERM==="alacritty"||y$1.env.TERMINAL_EMULATOR==="JetBrains-JediTerm"}const V=ce(),u=(t,n)=>V?t:n,le=u("\u25C6","*"),L=u("\u25A0","x"),W=u("\u25B2","x"),C=u("\u25C7","o"),ue=u("\u250C","T"),o=u("\u2502","|"),d=u("\u2514","\u2014"),k=u("\u25CF",">"),P=u("\u25CB"," "),_=u("\u2500","-"),me=u("\u256E","+"),de=u("\u251C","+"),pe=u("\u256F","+"),q=u("\u25CF","\u2022"),D=u("\u25C6","*"),U=u("\u25B2","!"),K=u("\u25A0","x"),b=t=>{switch(t){case "initial":case "active":return color2.cyan(le);case "cancel":return color2.red(L);case "error":return color2.yellow(W);case "submit":return color2.green(C)}},G=t=>{const{cursor:n,options:r,style:i}=t,s=t.maxItems??Number.POSITIVE_INFINITY,c=Math.max(process.stdout.rows-4,0),a=Math.min(c,Math.max(s,5));let l=0;n>=l+a-3?l=Math.max(Math.min(n-a+3,r.length-a),0):n<l+2&&(l=Math.max(n-2,0));const $=a<r.length&&l>0,g=a<r.length&&l+a<r.length;return r.slice(l,l+a).map((p,v,f)=>{const j=v===0&&$,E=v===f.length-1&&g;return j||E?color2.dim("..."):i(p,v+l===n)})},he=t=>new RD({validate:t.validate,placeholder:t.placeholder,defaultValue:t.defaultValue,initialValue:t.initialValue,render(){const n=`${color2.gray(o)}
368
+ ${b(this.state)} ${t.message}
369
+ `,r=t.placeholder?color2.inverse(t.placeholder[0])+color2.dim(t.placeholder.slice(1)):color2.inverse(color2.hidden("_")),i=this.value?this.valueWithCursor:r;switch(this.state){case "error":return `${n.trim()}
370
+ ${color2.yellow(o)} ${i}
371
+ ${color2.yellow(d)} ${color2.yellow(this.error)}
372
+ `;case "submit":return `${n}${color2.gray(o)} ${color2.dim(this.value||t.placeholder)}`;case "cancel":return `${n}${color2.gray(o)} ${color2.strikethrough(color2.dim(this.value??""))}${this.value?.trim()?`
373
+ ${color2.gray(o)}`:""}`;default:return `${n}${color2.cyan(o)} ${i}
374
+ ${color2.cyan(d)}
375
+ `}}}).prompt(),ve=t=>{const n=(r,i)=>{const s=r.label??String(r.value);switch(i){case "selected":return `${color2.dim(s)}`;case "active":return `${color2.green(k)} ${s} ${r.hint?color2.dim(`(${r.hint})`):""}`;case "cancelled":return `${color2.strikethrough(color2.dim(s))}`;default:return `${color2.dim(P)} ${color2.dim(s)}`}};return new LD({options:t.options,initialValue:t.initialValue,render(){const r=`${color2.gray(o)}
376
+ ${b(this.state)} ${t.message}
377
+ `;switch(this.state){case "submit":return `${r}${color2.gray(o)} ${n(this.options[this.cursor],"selected")}`;case "cancel":return `${r}${color2.gray(o)} ${n(this.options[this.cursor],"cancelled")}
378
+ ${color2.gray(o)}`;default:return `${r}${color2.cyan(o)} ${G({cursor:this.cursor,options:this.options,maxItems:t.maxItems,style:(i,s)=>n(i,s?"active":"inactive")}).join(`
379
+ ${color2.cyan(o)} `)}
380
+ ${color2.cyan(d)}
381
+ `}}}).prompt()},Me=(t="",n="")=>{const r=`
382
+ ${t}
395
383
  `.split(`
396
- `),i=R(n).length,r=Math.max(t.reduce((c,l)=>(l=R(l),l.length>c?l.length:c),0),i)+2,o=t.map(c=>`${color2.gray(a)} ${color2.dim(c)}${" ".repeat(r-R(c).length)}${color2.gray(a)}`).join(`
397
- `);process.stdout.write(`${color2.gray(a)}
398
- ${color2.green(M)} ${color2.reset(n)} ${color2.gray(G.repeat(Math.max(r-i-1,1))+H)}
399
- ${o}
400
- ${color2.gray(ee+G.repeat(r+2)+te)}
401
- `);},he=(s="")=>{process.stdout.write(`${color2.gray($)} ${color2.red(s)}
384
+ `),i=stripVTControlCharacters(n).length,s=Math.max(r.reduce((a,l)=>{const $=stripVTControlCharacters(l);return $.length>a?$.length:a},0),i)+2,c=r.map(a=>`${color2.gray(o)} ${color2.dim(a)}${" ".repeat(s-stripVTControlCharacters(a).length)}${color2.gray(o)}`).join(`
385
+ `);process.stdout.write(`${color2.gray(o)}
386
+ ${color2.green(C)} ${color2.reset(n)} ${color2.gray(_.repeat(Math.max(s-i-1,1))+me)}
387
+ ${c}
388
+ ${color2.gray(de+_.repeat(s+2)+pe)}
389
+ `);},xe=(t="")=>{process.stdout.write(`${color2.gray(d)} ${color2.red(t)}
390
+
391
+ `);},Ie=(t="")=>{process.stdout.write(`${color2.gray(ue)} ${t}
392
+ `);},Se=(t="")=>{process.stdout.write(`${color2.gray(o)}
393
+ ${color2.gray(d)} ${t}
394
+
395
+ `);},M={message:(t="",{symbol:n=color2.gray(o)}={})=>{const r=[`${color2.gray(o)}`];if(t){const[i,...s]=t.split(`
396
+ `);r.push(`${n} ${i}`,...s.map(c=>`${color2.gray(o)} ${c}`));}process.stdout.write(`${r.join(`
397
+ `)}
398
+ `);},info:t=>{M.message(t,{symbol:color2.blue(q)});},success:t=>{M.message(t,{symbol:color2.green(D)});},step:t=>{M.message(t,{symbol:color2.green(C)});},warn:t=>{M.message(t,{symbol:color2.yellow(U)});},warning:t=>{M.warn(t);},error:t=>{M.message(t,{symbol:color2.red(K)});}};`${color2.gray(o)} `;const Y=({indicator:t="dots"}={})=>{const n=V?["\u25D2","\u25D0","\u25D3","\u25D1"]:["\u2022","o","O","0"],r=V?80:120,i=process.env.CI==="true";let s,c,a=false,l="",$,g=performance.now();const p=m=>{const h=m>1?"Something went wrong":"Canceled";a&&N(h,m);},v=()=>p(2),f=()=>p(1),j=()=>{process.on("uncaughtExceptionMonitor",v),process.on("unhandledRejection",v),process.on("SIGINT",f),process.on("SIGTERM",f),process.on("exit",p);},E=()=>{process.removeListener("uncaughtExceptionMonitor",v),process.removeListener("unhandledRejection",v),process.removeListener("SIGINT",f),process.removeListener("SIGTERM",f),process.removeListener("exit",p);},B=()=>{if($===void 0)return;i&&process.stdout.write(`
399
+ `);const m=$.split(`
400
+ `);process.stdout.write(srcExports.cursor.move(-999,m.length-1)),process.stdout.write(srcExports.erase.down(m.length));},R=m=>m.replace(/\.+$/,""),O=m=>{const h=(performance.now()-m)/1e3,w=Math.floor(h/60),I=Math.floor(h%60);return w>0?`[${w}m ${I}s]`:`[${I}s]`},H=(m="")=>{a=true,s=fD(),l=R(m),g=performance.now(),process.stdout.write(`${color2.gray(o)}
401
+ `);let h=0,w=0;j(),c=setInterval(()=>{if(i&&l===$)return;B(),$=l;const I=color2.magenta(n[h]);if(i)process.stdout.write(`${I} ${l}...`);else if(t==="timer")process.stdout.write(`${I} ${l} ${O(g)}`);else {const z=".".repeat(Math.floor(w)).slice(0,3);process.stdout.write(`${I} ${l}${z}`);}h=h+1<n.length?h+1:0,w=w<n.length?w+.125:0;},r);},N=(m="",h=0)=>{a=false,clearInterval(c),B();const w=h===0?color2.green(C):h===1?color2.red(L):color2.red(W);l=R(m??l),t==="timer"?process.stdout.write(`${w} ${l} ${O(g)}
402
+ `):process.stdout.write(`${w} ${l}
403
+ `),E(),s();};return {start:H,stop:N,message:(m="")=>{l=R(m??l);}}},Ce=async(t,n)=>{const r={},i=Object.keys(t);for(const s of i){const c=t[s],a=await c({results:r})?.catch(l=>{throw l});if(typeof n?.onCancel=="function"&&pD(a)){r[s]="canceled",n.onCancel({results:r});continue}r[s]=a;}return r};
404
+
405
+ var shellQuote$1 = {};
406
+
407
+ var quote;
408
+ var hasRequiredQuote;
409
+
410
+ function requireQuote () {
411
+ if (hasRequiredQuote) return quote;
412
+ hasRequiredQuote = 1;
413
+
414
+ quote = function quote(xs) {
415
+ return xs.map(function (s) {
416
+ if (s === '') {
417
+ return '\'\'';
418
+ }
419
+ if (s && typeof s === 'object') {
420
+ return s.op.replace(/(.)/g, '\\$1');
421
+ }
422
+ if ((/["\s\\]/).test(s) && !(/'/).test(s)) {
423
+ return "'" + s.replace(/(['])/g, '\\$1') + "'";
424
+ }
425
+ if ((/["'\s]/).test(s)) {
426
+ return '"' + s.replace(/(["\\$`!])/g, '\\$1') + '"';
427
+ }
428
+ return String(s).replace(/([A-Za-z]:)?([#!"$&'()*,:;<=>?@[\\\]^`{|}])/g, '$1\\$2');
429
+ }).join(' ');
430
+ };
431
+ return quote;
432
+ }
433
+
434
+ var parse;
435
+ var hasRequiredParse;
436
+
437
+ function requireParse () {
438
+ if (hasRequiredParse) return parse;
439
+ hasRequiredParse = 1;
440
+
441
+ // '<(' is process substitution operator and
442
+ // can be parsed the same as control operator
443
+ var CONTROL = '(?:' + [
444
+ '\\|\\|',
445
+ '\\&\\&',
446
+ ';;',
447
+ '\\|\\&',
448
+ '\\<\\(',
449
+ '\\<\\<\\<',
450
+ '>>',
451
+ '>\\&',
452
+ '<\\&',
453
+ '[&;()|<>]'
454
+ ].join('|') + ')';
455
+ var controlRE = new RegExp('^' + CONTROL + '$');
456
+ var META = '|&;()<> \\t';
457
+ var SINGLE_QUOTE = '"((\\\\"|[^"])*?)"';
458
+ var DOUBLE_QUOTE = '\'((\\\\\'|[^\'])*?)\'';
459
+ var hash = /^#$/;
460
+
461
+ var SQ = "'";
462
+ var DQ = '"';
463
+ var DS = '$';
464
+
465
+ var TOKEN = '';
466
+ var mult = 0x100000000; // Math.pow(16, 8);
467
+ for (var i = 0; i < 4; i++) {
468
+ TOKEN += (mult * Math.random()).toString(16);
469
+ }
470
+ var startsWithToken = new RegExp('^' + TOKEN);
471
+
472
+ function matchAll(s, r) {
473
+ var origIndex = r.lastIndex;
474
+
475
+ var matches = [];
476
+ var matchObj;
477
+
478
+ while ((matchObj = r.exec(s))) {
479
+ matches.push(matchObj);
480
+ if (r.lastIndex === matchObj.index) {
481
+ r.lastIndex += 1;
482
+ }
483
+ }
484
+
485
+ r.lastIndex = origIndex;
486
+
487
+ return matches;
488
+ }
489
+
490
+ function getVar(env, pre, key) {
491
+ var r = typeof env === 'function' ? env(key) : env[key];
492
+ if (typeof r === 'undefined' && key != '') {
493
+ r = '';
494
+ } else if (typeof r === 'undefined') {
495
+ r = '$';
496
+ }
497
+
498
+ if (typeof r === 'object') {
499
+ return pre + TOKEN + JSON.stringify(r) + TOKEN;
500
+ }
501
+ return pre + r;
502
+ }
503
+
504
+ function parseInternal(string, env, opts) {
505
+ if (!opts) {
506
+ opts = {};
507
+ }
508
+ var BS = opts.escape || '\\';
509
+ var BAREWORD = '(\\' + BS + '[\'"' + META + ']|[^\\s\'"' + META + '])+';
510
+
511
+ var chunker = new RegExp([
512
+ '(' + CONTROL + ')', // control chars
513
+ '(' + BAREWORD + '|' + SINGLE_QUOTE + '|' + DOUBLE_QUOTE + ')+'
514
+ ].join('|'), 'g');
515
+
516
+ var matches = matchAll(string, chunker);
517
+
518
+ if (matches.length === 0) {
519
+ return [];
520
+ }
521
+ if (!env) {
522
+ env = {};
523
+ }
524
+
525
+ var commented = false;
526
+
527
+ return matches.map(function (match) {
528
+ var s = match[0];
529
+ if (!s || commented) {
530
+ return void undefined;
531
+ }
532
+ if (controlRE.test(s)) {
533
+ return { op: s };
534
+ }
535
+
536
+ // Hand-written scanner/parser for Bash quoting rules:
537
+ //
538
+ // 1. inside single quotes, all characters are printed literally.
539
+ // 2. inside double quotes, all characters are printed literally
540
+ // except variables prefixed by '$' and backslashes followed by
541
+ // either a double quote or another backslash.
542
+ // 3. outside of any quotes, backslashes are treated as escape
543
+ // characters and not printed (unless they are themselves escaped)
544
+ // 4. quote context can switch mid-token if there is no whitespace
545
+ // between the two quote contexts (e.g. all'one'"token" parses as
546
+ // "allonetoken")
547
+ var quote = false;
548
+ var esc = false;
549
+ var out = '';
550
+ var isGlob = false;
551
+ var i;
552
+
553
+ function parseEnvVar() {
554
+ i += 1;
555
+ var varend;
556
+ var varname;
557
+ var char = s.charAt(i);
558
+
559
+ if (char === '{') {
560
+ i += 1;
561
+ if (s.charAt(i) === '}') {
562
+ throw new Error('Bad substitution: ' + s.slice(i - 2, i + 1));
563
+ }
564
+ varend = s.indexOf('}', i);
565
+ if (varend < 0) {
566
+ throw new Error('Bad substitution: ' + s.slice(i));
567
+ }
568
+ varname = s.slice(i, varend);
569
+ i = varend;
570
+ } else if ((/[*@#?$!_-]/).test(char)) {
571
+ varname = char;
572
+ i += 1;
573
+ } else {
574
+ var slicedFromI = s.slice(i);
575
+ varend = slicedFromI.match(/[^\w\d_]/);
576
+ if (!varend) {
577
+ varname = slicedFromI;
578
+ i = s.length;
579
+ } else {
580
+ varname = slicedFromI.slice(0, varend.index);
581
+ i += varend.index - 1;
582
+ }
583
+ }
584
+ return getVar(env, '', varname);
585
+ }
586
+
587
+ for (i = 0; i < s.length; i++) {
588
+ var c = s.charAt(i);
589
+ isGlob = isGlob || (!quote && (c === '*' || c === '?'));
590
+ if (esc) {
591
+ out += c;
592
+ esc = false;
593
+ } else if (quote) {
594
+ if (c === quote) {
595
+ quote = false;
596
+ } else if (quote == SQ) {
597
+ out += c;
598
+ } else { // Double quote
599
+ if (c === BS) {
600
+ i += 1;
601
+ c = s.charAt(i);
602
+ if (c === DQ || c === BS || c === DS) {
603
+ out += c;
604
+ } else {
605
+ out += BS + c;
606
+ }
607
+ } else if (c === DS) {
608
+ out += parseEnvVar();
609
+ } else {
610
+ out += c;
611
+ }
612
+ }
613
+ } else if (c === DQ || c === SQ) {
614
+ quote = c;
615
+ } else if (controlRE.test(c)) {
616
+ return { op: s };
617
+ } else if (hash.test(c)) {
618
+ commented = true;
619
+ var commentObj = { comment: string.slice(match.index + i + 1) };
620
+ if (out.length) {
621
+ return [out, commentObj];
622
+ }
623
+ return [commentObj];
624
+ } else if (c === BS) {
625
+ esc = true;
626
+ } else if (c === DS) {
627
+ out += parseEnvVar();
628
+ } else {
629
+ out += c;
630
+ }
631
+ }
632
+
633
+ if (isGlob) {
634
+ return { op: 'glob', pattern: out };
635
+ }
402
636
 
403
- `);},pe=(s="")=>{process.stdout.write(`${color2.gray(Q)} ${s}
404
- `);},ge=(s="")=>{process.stdout.write(`${color2.gray(a)}
405
- ${color2.gray($)} ${s}
637
+ return out;
638
+ }).reduce(function (prev, arg) { // finalize parsed arguments
639
+ // TODO: replace this whole reduce with a concat
640
+ return typeof arg === 'undefined' ? prev : prev.concat(arg);
641
+ }, []);
642
+ }
406
643
 
407
- `);},_=()=>{const s=C?["\u25D2","\u25D0","\u25D3","\u25D1"]:["\u2022","o","O","0"],n=C?80:120;let t,i,r=false,o="";const c=g=>{const m=g>1?"Something went wrong":"Canceled";r&&x(m,g);},l=()=>c(2),d=()=>c(1),p=()=>{process.on("uncaughtExceptionMonitor",l),process.on("unhandledRejection",l),process.on("SIGINT",d),process.on("SIGTERM",d),process.on("exit",c);},S=()=>{process.removeListener("uncaughtExceptionMonitor",l),process.removeListener("unhandledRejection",l),process.removeListener("SIGINT",d),process.removeListener("SIGTERM",d),process.removeListener("exit",c);},f=(g="")=>{r=true,t=OD(),o=g.replace(/\.+$/,""),process.stdout.write(`${color2.gray(a)}
408
- `);let m=0,w=0;p(),i=setInterval(()=>{const L=color2.magenta(s[m]),O=".".repeat(Math.floor(w)).slice(0,3);process.stdout.write(srcExports.cursor.move(-999,0)),process.stdout.write(srcExports.erase.down(1)),process.stdout.write(`${L} ${o}${O}`),m=m+1<s.length?m+1:0,w=w<s.length?w+.125:0;},n);},x=(g="",m=0)=>{o=g??o,r=false,clearInterval(i);const w=m===0?color2.green(M):m===1?color2.red(P):color2.red(V);process.stdout.write(srcExports.cursor.move(-999,0)),process.stdout.write(srcExports.erase.down(1)),process.stdout.write(`${w} ${o}
409
- `),S(),t();};return {start:f,stop:x,message:(g="")=>{o=g??o;}}};function ye(){const s=["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)","(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~]))"].join("|");return new RegExp(s,"g")}const ve=async(s,n)=>{const t={},i=Object.keys(s);for(const r of i){const o=s[r],c=await o({results:t})?.catch(l=>{throw l});if(typeof n?.onCancel=="function"&&lD(c)){t[r]="canceled",n.onCancel({results:t});continue}t[r]=c;}return t};
644
+ parse = function parse(s, env, opts) {
645
+ var mapped = parseInternal(s, env, opts);
646
+ if (typeof env !== 'function') {
647
+ return mapped;
648
+ }
649
+ return mapped.reduce(function (acc, s) {
650
+ if (typeof s === 'object') {
651
+ return acc.concat(s);
652
+ }
653
+ var xs = s.split(RegExp('(' + TOKEN + '.*?' + TOKEN + ')', 'g'));
654
+ if (xs.length === 1) {
655
+ return acc.concat(xs[0]);
656
+ }
657
+ return acc.concat(xs.filter(Boolean).map(function (x) {
658
+ if (startsWithToken.test(x)) {
659
+ return JSON.parse(x.split(TOKEN)[1]);
660
+ }
661
+ return x;
662
+ }));
663
+ }, []);
664
+ };
665
+ return parse;
666
+ }
667
+
668
+ var hasRequiredShellQuote;
669
+
670
+ function requireShellQuote () {
671
+ if (hasRequiredShellQuote) return shellQuote$1;
672
+ hasRequiredShellQuote = 1;
673
+
674
+ shellQuote$1.quote = requireQuote();
675
+ shellQuote$1.parse = requireParse();
676
+ return shellQuote$1;
677
+ }
678
+
679
+ var shellQuoteExports = requireShellQuote();
680
+ var shellQuote = /*@__PURE__*/getDefaultExportFromCjs(shellQuoteExports);
410
681
 
411
682
  // eslint-disable-next-line no-warning-comments
412
683
  // TODO: Use a better method when it's added to Node.js (https://github.com/nodejs/node/pull/40240)
@@ -541,18 +812,20 @@ var yoctocolors = /*#__PURE__*/Object.freeze({
541
812
  yellowBright: yellowBright
542
813
  });
543
814
 
544
- const isUnicodeSupported = h.platform !== 'win32' || Boolean(h.env.WT_SESSION);
815
+ const isUnicodeSupported = y$1.platform !== 'win32'
816
+ || Boolean(y$1.env.WT_SESSION) // Windows Terminal
817
+ || y$1.env.TERM_PROGRAM === 'vscode';
545
818
 
546
819
  const isInteractive = stream => Boolean(
547
820
  stream.isTTY
548
- && h.env.TERM !== 'dumb'
549
- && !('CI' in h.env),
821
+ && y$1.env.TERM !== 'dumb'
822
+ && !('CI' in y$1.env),
550
823
  );
551
824
 
552
825
  const infoSymbol = blue(isUnicodeSupported ? 'ℹ' : 'i');
553
826
  const successSymbol = green(isUnicodeSupported ? '✔' : '√');
554
827
  const warningSymbol = yellow(isUnicodeSupported ? '⚠' : '‼');
555
- const errorSymbol = red(isUnicodeSupported ? '✖️' : '×');
828
+ const errorSymbol = red(isUnicodeSupported ? '' : '×');
556
829
 
557
830
  const defaultSpinner = {
558
831
  frames: isUnicodeSupported
@@ -595,7 +868,7 @@ class YoctoSpinner {
595
868
  this.#frames = spinner.frames;
596
869
  this.#interval = spinner.interval;
597
870
  this.#text = options.text ?? '';
598
- this.#stream = options.stream ?? h.stderr;
871
+ this.#stream = options.stream ?? y$1.stderr;
599
872
  this.#color = options.color ?? 'cyan';
600
873
  this.#isInteractive = isInteractive(this.#stream);
601
874
  this.#exitHandlerBound = this.#exitHandler.bind(this);
@@ -667,8 +940,8 @@ class YoctoSpinner {
667
940
  return this.#text;
668
941
  }
669
942
 
670
- set text(value = '') {
671
- this.#text = value;
943
+ set text(value) {
944
+ this.#text = value ?? '';
672
945
  this.#render();
673
946
  }
674
947
 
@@ -732,7 +1005,7 @@ class YoctoSpinner {
732
1005
 
733
1006
  #lineCount(text) {
734
1007
  const width = this.#stream.columns ?? 80;
735
- const lines = text.split('\n');
1008
+ const lines = stripVTControlCharacters(text).split('\n');
736
1009
 
737
1010
  let lineCount = 0;
738
1011
  for (const line of lines) {
@@ -755,13 +1028,13 @@ class YoctoSpinner {
755
1028
  }
756
1029
 
757
1030
  #subscribeToProcessEvents() {
758
- h.once('SIGINT', this.#exitHandlerBound);
759
- h.once('SIGTERM', this.#exitHandlerBound);
1031
+ y$1.once('SIGINT', this.#exitHandlerBound);
1032
+ y$1.once('SIGTERM', this.#exitHandlerBound);
760
1033
  }
761
1034
 
762
1035
  #unsubscribeFromProcessEvents() {
763
- h.off('SIGINT', this.#exitHandlerBound);
764
- h.off('SIGTERM', this.#exitHandlerBound);
1036
+ y$1.off('SIGINT', this.#exitHandlerBound);
1037
+ y$1.off('SIGTERM', this.#exitHandlerBound);
765
1038
  }
766
1039
 
767
1040
  #exitHandler(signal) {
@@ -772,7 +1045,7 @@ class YoctoSpinner {
772
1045
  // SIGINT: 128 + 2
773
1046
  // SIGTERM: 128 + 15
774
1047
  const exitCode = signal === 'SIGINT' ? 130 : (signal === 'SIGTERM' ? 143 : 1);
775
- h.exit(exitCode);
1048
+ y$1.exit(exitCode);
776
1049
  }
777
1050
  }
778
1051
 
@@ -781,39 +1054,86 @@ function yoctoSpinner(options) {
781
1054
  }
782
1055
 
783
1056
  var LogLevel = {
784
- INFO: "info"};
785
- var Logger = class {
786
- logger;
1057
+ INFO: "info",
1058
+ ERROR: "error"};
1059
+ var MastraLogger = class {
1060
+ name;
1061
+ level;
787
1062
  transports;
788
1063
  constructor(options = {}) {
789
- this.transports = options.transports || {};
790
- const transportsAry = Object.entries(this.transports);
791
- this.logger = pino(
792
- {
793
- name: options.name || "app",
794
- level: options.level || LogLevel.INFO
795
- },
796
- options.overrideDefaultTransports ? options?.transports?.default : transportsAry.length === 0 ? pretty({
1064
+ this.name = options.name || "Mastra";
1065
+ this.level = options.level || LogLevel.ERROR;
1066
+ this.transports = new Map(Object.entries(options.transports || {}));
1067
+ }
1068
+ getTransports() {
1069
+ return this.transports;
1070
+ }
1071
+ trackException(_error) {
1072
+ }
1073
+ async getLogs(transportId, params) {
1074
+ if (!transportId || !this.transports.has(transportId)) {
1075
+ return { logs: [], total: 0, page: params?.page ?? 1, perPage: params?.perPage ?? 100, hasMore: false };
1076
+ }
1077
+ return this.transports.get(transportId).getLogs(params) ?? {
1078
+ logs: [],
1079
+ total: 0,
1080
+ page: params?.page ?? 1,
1081
+ perPage: params?.perPage ?? 100,
1082
+ hasMore: false
1083
+ };
1084
+ }
1085
+ async getLogsByRunId({
1086
+ transportId,
1087
+ runId,
1088
+ fromDate,
1089
+ toDate,
1090
+ logLevel,
1091
+ filters,
1092
+ page,
1093
+ perPage
1094
+ }) {
1095
+ if (!transportId || !this.transports.has(transportId) || !runId) {
1096
+ return { logs: [], total: 0, page: page ?? 1, perPage: perPage ?? 100, hasMore: false };
1097
+ }
1098
+ return this.transports.get(transportId).getLogsByRunId({ runId, fromDate, toDate, logLevel, filters, page, perPage }) ?? {
1099
+ logs: [],
1100
+ total: 0,
1101
+ page: page ?? 1,
1102
+ perPage: perPage ?? 100,
1103
+ hasMore: false
1104
+ };
1105
+ }
1106
+ };
1107
+
1108
+ var PinoLogger = class extends MastraLogger {
1109
+ logger;
1110
+ constructor(options = {}) {
1111
+ super(options);
1112
+ let prettyStream = void 0;
1113
+ if (!options.overrideDefaultTransports) {
1114
+ prettyStream = pretty({
797
1115
  colorize: true,
798
1116
  levelFirst: true,
799
1117
  ignore: "pid,hostname",
800
1118
  colorizeObjects: true,
801
1119
  translateTime: "SYS:standard",
802
1120
  singleLine: false
803
- }) : pino.multistream([
804
- ...transportsAry.map(([_, transport]) => ({
1121
+ });
1122
+ }
1123
+ const transportsAry = [...this.getTransports().entries()];
1124
+ this.logger = pino(
1125
+ {
1126
+ name: options.name || "app",
1127
+ level: options.level || LogLevel.INFO,
1128
+ formatters: options.formatters
1129
+ },
1130
+ options.overrideDefaultTransports ? options?.transports?.default : transportsAry.length === 0 ? prettyStream : pino.multistream([
1131
+ ...transportsAry.map(([, transport]) => ({
805
1132
  stream: transport,
806
1133
  level: options.level || LogLevel.INFO
807
1134
  })),
808
1135
  {
809
- stream: pretty({
810
- colorize: true,
811
- levelFirst: true,
812
- ignore: "pid,hostname",
813
- colorizeObjects: true,
814
- translateTime: "SYS:standard",
815
- singleLine: false
816
- }),
1136
+ stream: prettyStream,
817
1137
  level: options.level || LogLevel.INFO
818
1138
  }
819
1139
  ])
@@ -831,67 +1151,8 @@ var Logger = class {
831
1151
  error(message, args = {}) {
832
1152
  this.logger.error(args, message);
833
1153
  }
834
- // Stream creation for process output handling
835
- createStream() {
836
- return new Transform({
837
- transform: (chunk, _encoding, callback) => {
838
- const line = chunk.toString().trim();
839
- if (line) {
840
- this.info(line);
841
- }
842
- callback(null, chunk);
843
- }
844
- });
845
- }
846
- async getLogs(transportId) {
847
- if (!transportId || !this.transports[transportId]) {
848
- return [];
849
- }
850
- return this.transports[transportId].getLogs();
851
- }
852
- async getLogsByRunId({ runId, transportId }) {
853
- return this.transports[transportId]?.getLogsByRunId({ runId });
854
- }
855
1154
  };
856
- function createLogger(options) {
857
- return new Logger(options);
858
- }
859
1155
 
860
- function getPackageManager() {
861
- const userAgent = process.env.npm_config_user_agent || "";
862
- const execPath = process.env.npm_execpath || "";
863
- if (userAgent.includes("yarn")) {
864
- return "yarn";
865
- }
866
- if (userAgent.includes("pnpm")) {
867
- return "pnpm";
868
- }
869
- if (userAgent.includes("npm")) {
870
- return "npm";
871
- }
872
- if (execPath.includes("yarn")) {
873
- return "yarn";
874
- }
875
- if (execPath.includes("pnpm")) {
876
- return "pnpm";
877
- }
878
- if (execPath.includes("npm")) {
879
- return "npm";
880
- }
881
- return "npm";
882
- }
883
- function getPackageManagerInstallCommand(pm) {
884
- switch (pm) {
885
- case "npm":
886
- return "install";
887
- case "yarn":
888
- return "add";
889
- case "pnpm":
890
- return "add";
891
- default:
892
- return "install";
893
- }
894
- }
895
1156
  var DepsService = class {
896
1157
  packageManager;
897
1158
  constructor() {
@@ -900,11 +1161,11 @@ var DepsService = class {
900
1161
  findLockFile(dir) {
901
1162
  const lockFiles = ["pnpm-lock.yaml", "package-lock.json", "yarn.lock", "bun.lock"];
902
1163
  for (const file of lockFiles) {
903
- if (fs3__default__default.existsSync(path.join(dir, file))) {
1164
+ if (fs3__default__default.existsSync(path2.join(dir, file))) {
904
1165
  return file;
905
1166
  }
906
1167
  }
907
- const parentDir = path.resolve(dir, "..");
1168
+ const parentDir = path2.resolve(dir, "..");
908
1169
  if (parentDir !== dir) {
909
1170
  return this.findLockFile(parentDir);
910
1171
  }
@@ -941,7 +1202,7 @@ var DepsService = class {
941
1202
  }
942
1203
  async checkDependencies(dependencies) {
943
1204
  try {
944
- const packageJsonPath = path.join(process.cwd(), "package.json");
1205
+ const packageJsonPath = path2.join(process.cwd(), "package.json");
945
1206
  try {
946
1207
  await fs4.access(packageJsonPath);
947
1208
  } catch {
@@ -961,7 +1222,7 @@ var DepsService = class {
961
1222
  }
962
1223
  async getProjectName() {
963
1224
  try {
964
- const packageJsonPath = path.join(process.cwd(), "package.json");
1225
+ const packageJsonPath = path2.join(process.cwd(), "package.json");
965
1226
  const packageJson = await fs4.readFile(packageJsonPath, "utf-8");
966
1227
  const pkg = JSON.parse(packageJson);
967
1228
  return pkg.name;
@@ -972,7 +1233,7 @@ var DepsService = class {
972
1233
  async getPackageVersion() {
973
1234
  const __filename = fileURLToPath(import.meta.url);
974
1235
  const __dirname = dirname(__filename);
975
- const pkgJsonPath = path.join(__dirname, "..", "package.json");
1236
+ const pkgJsonPath = path2.join(__dirname, "..", "package.json");
976
1237
  const content = await fsExtra3.readJSON(pkgJsonPath);
977
1238
  return content.version;
978
1239
  }
@@ -985,6 +1246,153 @@ var DepsService = class {
985
1246
  await fs4.writeFile("package.json", JSON.stringify(packageJson, null, 2));
986
1247
  }
987
1248
  };
1249
+ function getPackageManager() {
1250
+ const userAgent = process.env.npm_config_user_agent || "";
1251
+ const execPath = process.env.npm_execpath || "";
1252
+ if (userAgent.includes("yarn")) {
1253
+ return "yarn";
1254
+ }
1255
+ if (userAgent.includes("pnpm")) {
1256
+ return "pnpm";
1257
+ }
1258
+ if (userAgent.includes("npm")) {
1259
+ return "npm";
1260
+ }
1261
+ if (execPath.includes("yarn")) {
1262
+ return "yarn";
1263
+ }
1264
+ if (execPath.includes("pnpm")) {
1265
+ return "pnpm";
1266
+ }
1267
+ if (execPath.includes("npm")) {
1268
+ return "npm";
1269
+ }
1270
+ return "npm";
1271
+ }
1272
+ function getPackageManagerInstallCommand(pm) {
1273
+ switch (pm) {
1274
+ case "npm":
1275
+ return "install";
1276
+ case "yarn":
1277
+ return "add";
1278
+ case "pnpm":
1279
+ return "add";
1280
+ default:
1281
+ return "install";
1282
+ }
1283
+ }
1284
+ var args = ["-y", "@mastra/mcp-docs-server"];
1285
+ var createMcpConfig = (editor) => {
1286
+ if (editor === "vscode") {
1287
+ return {
1288
+ servers: {
1289
+ mastra: process.platform === `win32` ? {
1290
+ command: "cmd",
1291
+ args: ["/c", "npx", ...args],
1292
+ type: "stdio"
1293
+ } : {
1294
+ command: "npx",
1295
+ args,
1296
+ type: "stdio"
1297
+ }
1298
+ }
1299
+ };
1300
+ }
1301
+ return {
1302
+ mcpServers: {
1303
+ mastra: {
1304
+ command: "npx",
1305
+ args
1306
+ }
1307
+ }
1308
+ };
1309
+ };
1310
+ function makeConfig(original, editor) {
1311
+ if (editor === "vscode") {
1312
+ return {
1313
+ ...original,
1314
+ servers: {
1315
+ ...original?.servers || {},
1316
+ ...createMcpConfig(editor).servers
1317
+ }
1318
+ };
1319
+ }
1320
+ return {
1321
+ ...original,
1322
+ mcpServers: {
1323
+ ...original?.mcpServers || {},
1324
+ ...createMcpConfig(editor).mcpServers
1325
+ }
1326
+ };
1327
+ }
1328
+ async function writeMergedConfig(configPath, editor) {
1329
+ const configExists = existsSync(configPath);
1330
+ const config = makeConfig(configExists ? await readJSON(configPath) : {}, editor);
1331
+ await ensureFile(configPath);
1332
+ await writeJSON(configPath, config, {
1333
+ spaces: 2
1334
+ });
1335
+ }
1336
+ var windsurfGlobalMCPConfigPath = path2.join(os.homedir(), ".codeium", "windsurf", "mcp_config.json");
1337
+ var cursorGlobalMCPConfigPath = path2.join(os.homedir(), ".cursor", "mcp.json");
1338
+ path2.join(process.cwd(), ".vscode", "mcp.json");
1339
+ var vscodeGlobalMCPConfigPath = path2.join(
1340
+ os.homedir(),
1341
+ process.platform === "win32" ? path2.join("AppData", "Roaming", "Code", "User", "settings.json") : process.platform === "darwin" ? path2.join("Library", "Application Support", "Code", "User", "settings.json") : path2.join(".config", "Code", "User", "settings.json")
1342
+ );
1343
+ async function installMastraDocsMCPServer({ editor, directory }) {
1344
+ if (editor === `cursor`) {
1345
+ await writeMergedConfig(path2.join(directory, ".cursor", "mcp.json"), "cursor");
1346
+ }
1347
+ if (editor === `vscode`) {
1348
+ await writeMergedConfig(path2.join(directory, ".vscode", "mcp.json"), "vscode");
1349
+ }
1350
+ if (editor === `cursor-global`) {
1351
+ const alreadyInstalled = await globalMCPIsAlreadyInstalled(editor);
1352
+ if (alreadyInstalled) {
1353
+ return;
1354
+ }
1355
+ await writeMergedConfig(cursorGlobalMCPConfigPath, "cursor-global");
1356
+ }
1357
+ if (editor === `windsurf`) {
1358
+ const alreadyInstalled = await globalMCPIsAlreadyInstalled(editor);
1359
+ if (alreadyInstalled) {
1360
+ return;
1361
+ }
1362
+ await writeMergedConfig(windsurfGlobalMCPConfigPath, editor);
1363
+ }
1364
+ }
1365
+ async function globalMCPIsAlreadyInstalled(editor) {
1366
+ let configPath = ``;
1367
+ if (editor === "windsurf") {
1368
+ configPath = windsurfGlobalMCPConfigPath;
1369
+ } else if (editor === "cursor-global") {
1370
+ configPath = cursorGlobalMCPConfigPath;
1371
+ } else if (editor === "vscode") {
1372
+ configPath = vscodeGlobalMCPConfigPath;
1373
+ }
1374
+ if (!configPath || !existsSync(configPath)) {
1375
+ return false;
1376
+ }
1377
+ try {
1378
+ const configContents = await readJSON(configPath);
1379
+ if (!configContents) return false;
1380
+ if (editor === "vscode") {
1381
+ if (!configContents.servers) return false;
1382
+ const hasMastraMCP2 = Object.values(configContents.servers).some(
1383
+ (server) => server?.args?.find((arg) => arg?.includes(`@mastra/mcp-docs-server`))
1384
+ );
1385
+ return hasMastraMCP2;
1386
+ }
1387
+ if (!configContents?.mcpServers) return false;
1388
+ const hasMastraMCP = Object.values(configContents.mcpServers).some(
1389
+ (server) => server?.args?.find((arg) => arg?.includes(`@mastra/mcp-docs-server`))
1390
+ );
1391
+ return hasMastraMCP;
1392
+ } catch {
1393
+ return false;
1394
+ }
1395
+ }
988
1396
  var EnvService = class {
989
1397
  };
990
1398
  var FileEnvService = class extends EnvService {
@@ -1056,8 +1464,8 @@ var FileService = class {
1056
1464
  */
1057
1465
  async copyStarterFile(inputFile, outputFilePath, replaceIfExists) {
1058
1466
  const __filename = fileURLToPath(import.meta.url);
1059
- const __dirname = path.dirname(__filename);
1060
- const filePath = path.resolve(__dirname, "starter-files", inputFile);
1467
+ const __dirname = path2.dirname(__filename);
1468
+ const filePath = path2.resolve(__dirname, "starter-files", inputFile);
1061
1469
  const fileString = fs3__default__default.readFileSync(filePath, "utf8");
1062
1470
  if (fs3__default__default.existsSync(outputFilePath) && !replaceIfExists) {
1063
1471
  console.log(`${outputFilePath} already exists`);
@@ -1067,7 +1475,7 @@ var FileService = class {
1067
1475
  return true;
1068
1476
  }
1069
1477
  async setupEnvFile({ dbUrl }) {
1070
- const envPath = path.join(process.cwd(), ".env.development");
1478
+ const envPath = path2.join(process.cwd(), ".env.development");
1071
1479
  await fsExtra3.ensureFile(envPath);
1072
1480
  const fileEnvService = new FileEnvService(envPath);
1073
1481
  await fileEnvService.setEnvValue("DB_URL", dbUrl);
@@ -1091,9 +1499,9 @@ var FileService = class {
1091
1499
  fs3__default__default.writeFileSync(filePath, fileContent);
1092
1500
  }
1093
1501
  };
1094
- createLogger({
1502
+ new PinoLogger({
1095
1503
  name: "Mastra CLI",
1096
- level: "debug"
1504
+ level: "info"
1097
1505
  });
1098
1506
  var exec = util.promisify(child_process.exec);
1099
1507
  var getAISDKPackage = (llmProvider) => {
@@ -1104,6 +1512,10 @@ var getAISDKPackage = (llmProvider) => {
1104
1512
  return "@ai-sdk/anthropic";
1105
1513
  case "groq":
1106
1514
  return "@ai-sdk/groq";
1515
+ case "google":
1516
+ return "@ai-sdk/google";
1517
+ case "cerebras":
1518
+ return "@ai-sdk/cerebras";
1107
1519
  default:
1108
1520
  return "@ai-sdk/openai";
1109
1521
  }
@@ -1113,39 +1525,55 @@ var getProviderImportAndModelItem = (llmProvider) => {
1113
1525
  let modelItem = "";
1114
1526
  if (llmProvider === "openai") {
1115
1527
  providerImport = `import { openai } from '${getAISDKPackage(llmProvider)}';`;
1116
- modelItem = `openai('gpt-4o')`;
1528
+ modelItem = `openai('gpt-4o-mini')`;
1117
1529
  } else if (llmProvider === "anthropic") {
1118
1530
  providerImport = `import { anthropic } from '${getAISDKPackage(llmProvider)}';`;
1119
1531
  modelItem = `anthropic('claude-3-5-sonnet-20241022')`;
1120
1532
  } else if (llmProvider === "groq") {
1121
1533
  providerImport = `import { groq } from '${getAISDKPackage(llmProvider)}';`;
1122
- modelItem = `groq('llama3-groq-70b-8192-tool-use-preview')`;
1534
+ modelItem = `groq('llama-3.3-70b-versatile')`;
1535
+ } else if (llmProvider === "google") {
1536
+ providerImport = `import { google } from '${getAISDKPackage(llmProvider)}';`;
1537
+ modelItem = `google('gemini-2.5-pro-exp-03-25')`;
1538
+ } else if (llmProvider === "cerebras") {
1539
+ providerImport = `import { cerebras } from '${getAISDKPackage(llmProvider)}';`;
1540
+ modelItem = `cerebras('llama-3.3-70b')`;
1123
1541
  }
1124
1542
  return { providerImport, modelItem };
1125
1543
  };
1126
1544
  async function writeAgentSample(llmProvider, destPath, addExampleTool) {
1127
1545
  const { providerImport, modelItem } = getProviderImportAndModelItem(llmProvider);
1128
1546
  const instructions = `
1129
- You are a helpful weather assistant that provides accurate weather information.
1547
+ You are a helpful weather assistant that provides accurate weather information and can help planning activities based on the weather.
1130
1548
 
1131
1549
  Your primary function is to help users get weather details for specific locations. When responding:
1132
1550
  - Always ask for a location if none is provided
1551
+ - If the location name isn't in English, please translate it
1133
1552
  - If giving a location with multiple parts (e.g. "New York, NY"), use the most relevant part (e.g. "New York")
1134
1553
  - Include relevant details like humidity, wind conditions, and precipitation
1135
1554
  - Keep responses concise but informative
1555
+ - If the user asks for activities and provides the weather forecast, suggest activities based on the weather forecast.
1556
+ - If the user asks for activities, respond in the format they request.
1136
1557
 
1137
1558
  ${addExampleTool ? "Use the weatherTool to fetch current weather data." : ""}
1138
1559
  `;
1139
1560
  const content = `
1140
- ${providerImport}
1561
+ ${providerImport}
1141
1562
  import { Agent } from '@mastra/core/agent';
1142
- ${addExampleTool ? `import { weatherTool } from '../tools';` : ""}
1563
+ import { Memory } from '@mastra/memory';
1564
+ import { LibSQLStore } from '@mastra/libsql';
1565
+ ${addExampleTool ? `import { weatherTool } from '../tools/weather-tool';` : ""}
1143
1566
 
1144
1567
  export const weatherAgent = new Agent({
1145
1568
  name: 'Weather Agent',
1146
1569
  instructions: \`${instructions}\`,
1147
1570
  model: ${modelItem},
1148
1571
  ${addExampleTool ? "tools: { weatherTool }," : ""}
1572
+ memory: new Memory({
1573
+ storage: new LibSQLStore({
1574
+ url: "file:../mastra.db", // path is relative to the .mastra/output directory
1575
+ })
1576
+ })
1149
1577
  });
1150
1578
  `;
1151
1579
  const formattedContent = await prettier.format(content, {
@@ -1155,138 +1583,156 @@ export const weatherAgent = new Agent({
1155
1583
  await fs4.writeFile(destPath, "");
1156
1584
  await fs4.writeFile(destPath, formattedContent);
1157
1585
  }
1158
- async function writeWorkflowSample(destPath, llmProvider) {
1159
- const { providerImport, modelItem } = getProviderImportAndModelItem(llmProvider);
1160
- const content = `${providerImport}
1161
- import { Agent } from '@mastra/core/agent';
1162
- import { Step, Workflow } from '@mastra/core/workflows';
1586
+ async function writeWorkflowSample(destPath) {
1587
+ const content = `import { createStep, createWorkflow } from '@mastra/core/workflows';
1163
1588
  import { z } from 'zod';
1164
1589
 
1165
- const llm = ${modelItem};
1590
+ const forecastSchema = z.object({
1591
+ date: z.string(),
1592
+ maxTemp: z.number(),
1593
+ minTemp: z.number(),
1594
+ precipitationChance: z.number(),
1595
+ condition: z.string(),
1596
+ location: z.string(),
1597
+ })
1166
1598
 
1167
- const agent = new Agent({
1168
- name: 'Weather Agent',
1169
- model: llm,
1170
- instructions: \`
1171
- You are a local activities and travel expert who excels at weather-based planning. Analyze the weather data and provide practical activity recommendations.
1172
-
1173
- For each day in the forecast, structure your response exactly as follows:
1174
-
1175
- \u{1F4C5} [Day, Month Date, Year]
1176
- \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550
1177
-
1178
- \u{1F321}\uFE0F WEATHER SUMMARY
1179
- \u2022 Conditions: [brief description]
1180
- \u2022 Temperature: [X\xB0C/Y\xB0F to A\xB0C/B\xB0F]
1181
- \u2022 Precipitation: [X% chance]
1182
-
1183
- \u{1F305} MORNING ACTIVITIES
1184
- Outdoor:
1185
- \u2022 [Activity Name] - [Brief description including specific location/route]
1186
- Best timing: [specific time range]
1187
- Note: [relevant weather consideration]
1188
-
1189
- \u{1F31E} AFTERNOON ACTIVITIES
1190
- Outdoor:
1191
- \u2022 [Activity Name] - [Brief description including specific location/route]
1192
- Best timing: [specific time range]
1193
- Note: [relevant weather consideration]
1194
-
1195
- \u{1F3E0} INDOOR ALTERNATIVES
1196
- \u2022 [Activity Name] - [Brief description including specific venue]
1197
- Ideal for: [weather condition that would trigger this alternative]
1198
-
1199
- \u26A0\uFE0F SPECIAL CONSIDERATIONS
1200
- \u2022 [Any relevant weather warnings, UV index, wind conditions, etc.]
1201
-
1202
- Guidelines:
1203
- - Suggest 2-3 time-specific outdoor activities per day
1204
- - Include 1-2 indoor backup options
1205
- - For precipitation >50%, lead with indoor activities
1206
- - All activities must be specific to the location
1207
- - Include specific venues, trails, or locations
1208
- - Consider activity intensity based on temperature
1209
- - Keep descriptions concise but informative
1210
-
1211
- Maintain this exact formatting for consistency, using the emoji and section headers as shown.
1212
- \`,
1213
- });
1599
+ function getWeatherCondition(code: number): string {
1600
+ const conditions: Record<number, string> = {
1601
+ 0: 'Clear sky',
1602
+ 1: 'Mainly clear',
1603
+ 2: 'Partly cloudy',
1604
+ 3: 'Overcast',
1605
+ 45: 'Foggy',
1606
+ 48: 'Depositing rime fog',
1607
+ 51: 'Light drizzle',
1608
+ 53: 'Moderate drizzle',
1609
+ 55: 'Dense drizzle',
1610
+ 61: 'Slight rain',
1611
+ 63: 'Moderate rain',
1612
+ 65: 'Heavy rain',
1613
+ 71: 'Slight snow fall',
1614
+ 73: 'Moderate snow fall',
1615
+ 75: 'Heavy snow fall',
1616
+ 95: 'Thunderstorm',
1617
+ }
1618
+ return conditions[code] || 'Unknown'
1619
+ }
1214
1620
 
1215
- const fetchWeather = new Step({
1621
+ const fetchWeather = createStep({
1216
1622
  id: 'fetch-weather',
1217
1623
  description: 'Fetches weather forecast for a given city',
1218
1624
  inputSchema: z.object({
1219
1625
  city: z.string().describe('The city to get the weather for'),
1220
1626
  }),
1221
- execute: async ({ context }) => {
1222
- const triggerData = context?.getStepPayload<{ city: string }>('trigger');
1223
-
1224
- if (!triggerData) {
1225
- throw new Error('Trigger data not found');
1627
+ outputSchema: forecastSchema,
1628
+ execute: async ({ inputData }) => {
1629
+ if (!inputData) {
1630
+ throw new Error('Input data not found');
1226
1631
  }
1227
1632
 
1228
- const geocodingUrl = \`https://geocoding-api.open-meteo.com/v1/search?name=\${encodeURIComponent(triggerData.city)}&count=1\`;
1633
+ const geocodingUrl = \`https://geocoding-api.open-meteo.com/v1/search?name=\${encodeURIComponent(inputData.city)}&count=1\`;
1229
1634
  const geocodingResponse = await fetch(geocodingUrl);
1230
1635
  const geocodingData = (await geocodingResponse.json()) as {
1231
1636
  results: { latitude: number; longitude: number; name: string }[];
1232
1637
  };
1233
1638
 
1234
1639
  if (!geocodingData.results?.[0]) {
1235
- throw new Error(\`Location '\${triggerData.city}' not found\`);
1640
+ throw new Error(\`Location '\${inputData.city}' not found\`);
1236
1641
  }
1237
1642
 
1238
1643
  const { latitude, longitude, name } = geocodingData.results[0];
1239
1644
 
1240
- const weatherUrl = \`https://api.open-meteo.com/v1/forecast?latitude=\${latitude}&longitude=\${longitude}&daily=temperature_2m_max,temperature_2m_min,precipitation_probability_mean,weathercode&timezone=auto\`;
1645
+ const weatherUrl = \`https://api.open-meteo.com/v1/forecast?latitude=\${latitude}&longitude=\${longitude}&current=precipitation,weathercode&timezone=auto,&hourly=precipitation_probability,temperature_2m\`;
1241
1646
  const response = await fetch(weatherUrl);
1242
1647
  const data = (await response.json()) as {
1243
- daily: {
1244
- time: string[];
1245
- temperature_2m_max: number[];
1246
- temperature_2m_min: number[];
1247
- precipitation_probability_mean: number[];
1248
- weathercode: number[];
1249
- };
1250
- };
1648
+ current: {
1649
+ time: string
1650
+ precipitation: number
1651
+ weathercode: number
1652
+ }
1653
+ hourly: {
1654
+ precipitation_probability: number[]
1655
+ temperature_2m: number[]
1656
+ }
1657
+ }
1251
1658
 
1252
- const forecast = data.daily.time.map((date: string, index: number) => ({
1253
- date,
1254
- maxTemp: data.daily.temperature_2m_max[index],
1255
- minTemp: data.daily.temperature_2m_min[index],
1256
- precipitationChance: data.daily.precipitation_probability_mean[index],
1257
- condition: getWeatherCondition(data.daily.weathercode[index]!),
1258
- location: name,
1259
- }));
1659
+ const forecast = {
1660
+ date: new Date().toISOString(),
1661
+ maxTemp: Math.max(...data.hourly.temperature_2m),
1662
+ minTemp: Math.min(...data.hourly.temperature_2m),
1663
+ condition: getWeatherCondition(data.current.weathercode),
1664
+ precipitationChance: data.hourly.precipitation_probability.reduce(
1665
+ (acc, curr) => Math.max(acc, curr),
1666
+ 0
1667
+ ),
1668
+ location: name
1669
+ }
1260
1670
 
1261
1671
  return forecast;
1262
1672
  },
1263
1673
  });
1264
1674
 
1265
- const forecastSchema = z.array(
1266
- z.object({
1267
- date: z.string(),
1268
- maxTemp: z.number(),
1269
- minTemp: z.number(),
1270
- precipitationChance: z.number(),
1271
- condition: z.string(),
1272
- location: z.string(),
1273
- }),
1274
- );
1275
1675
 
1276
- const planActivities = new Step({
1676
+ const planActivities = createStep({
1277
1677
  id: 'plan-activities',
1278
1678
  description: 'Suggests activities based on weather conditions',
1279
1679
  inputSchema: forecastSchema,
1280
- execute: async ({ context, mastra }) => {
1281
- const forecast = context?.getStepPayload<z.infer<typeof forecastSchema>>('fetch-weather');
1680
+ outputSchema: z.object({
1681
+ activities: z.string(),
1682
+ }),
1683
+ execute: async ({ inputData, mastra }) => {
1684
+ const forecast = inputData
1685
+
1686
+ if (!forecast) {
1687
+ throw new Error('Forecast data not found')
1688
+ }
1282
1689
 
1283
- if (!forecast || forecast.length === 0) {
1284
- throw new Error('Forecast data not found');
1690
+ const agent = mastra?.getAgent('weatherAgent');
1691
+ if (!agent) {
1692
+ throw new Error('Weather agent not found');
1285
1693
  }
1286
1694
 
1287
- const prompt = \`Based on the following weather forecast for \${forecast[0]?.location}, suggest appropriate activities:
1695
+ const prompt = \`Based on the following weather forecast for \${forecast.location}, suggest appropriate activities:
1288
1696
  \${JSON.stringify(forecast, null, 2)}
1289
- \`;
1697
+ For each day in the forecast, structure your response exactly as follows:
1698
+
1699
+ \u{1F4C5} [Day, Month Date, Year]
1700
+ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550
1701
+
1702
+ \u{1F321}\uFE0F WEATHER SUMMARY
1703
+ \u2022 Conditions: [brief description]
1704
+ \u2022 Temperature: [X\xB0C/Y\xB0F to A\xB0C/B\xB0F]
1705
+ \u2022 Precipitation: [X% chance]
1706
+
1707
+ \u{1F305} MORNING ACTIVITIES
1708
+ Outdoor:
1709
+ \u2022 [Activity Name] - [Brief description including specific location/route]
1710
+ Best timing: [specific time range]
1711
+ Note: [relevant weather consideration]
1712
+
1713
+ \u{1F31E} AFTERNOON ACTIVITIES
1714
+ Outdoor:
1715
+ \u2022 [Activity Name] - [Brief description including specific location/route]
1716
+ Best timing: [specific time range]
1717
+ Note: [relevant weather consideration]
1718
+
1719
+ \u{1F3E0} INDOOR ALTERNATIVES
1720
+ \u2022 [Activity Name] - [Brief description including specific venue]
1721
+ Ideal for: [weather condition that would trigger this alternative]
1722
+
1723
+ \u26A0\uFE0F SPECIAL CONSIDERATIONS
1724
+ \u2022 [Any relevant weather warnings, UV index, wind conditions, etc.]
1725
+
1726
+ Guidelines:
1727
+ - Suggest 2-3 time-specific outdoor activities per day
1728
+ - Include 1-2 indoor backup options
1729
+ - For precipitation >50%, lead with indoor activities
1730
+ - All activities must be specific to the location
1731
+ - Include specific venues, trails, or locations
1732
+ - Consider activity intensity based on temperature
1733
+ - Keep descriptions concise but informative
1734
+
1735
+ Maintain this exact formatting for consistency, using the emoji and section headers as shown.\`;
1290
1736
 
1291
1737
  const response = await agent.stream([
1292
1738
  {
@@ -1295,45 +1741,29 @@ const planActivities = new Step({
1295
1741
  },
1296
1742
  ]);
1297
1743
 
1744
+ let activitiesText = '';
1745
+
1298
1746
  for await (const chunk of response.textStream) {
1299
1747
  process.stdout.write(chunk);
1748
+ activitiesText += chunk;
1300
1749
  }
1301
1750
 
1302
1751
  return {
1303
- activities: response.text,
1752
+ activities: activitiesText,
1304
1753
  };
1305
1754
  },
1306
1755
  });
1307
1756
 
1308
- function getWeatherCondition(code: number): string {
1309
- const conditions: Record<number, string> = {
1310
- 0: 'Clear sky',
1311
- 1: 'Mainly clear',
1312
- 2: 'Partly cloudy',
1313
- 3: 'Overcast',
1314
- 45: 'Foggy',
1315
- 48: 'Depositing rime fog',
1316
- 51: 'Light drizzle',
1317
- 53: 'Moderate drizzle',
1318
- 55: 'Dense drizzle',
1319
- 61: 'Slight rain',
1320
- 63: 'Moderate rain',
1321
- 65: 'Heavy rain',
1322
- 71: 'Slight snow fall',
1323
- 73: 'Moderate snow fall',
1324
- 75: 'Heavy snow fall',
1325
- 95: 'Thunderstorm',
1326
- };
1327
- return conditions[code] || 'Unknown';
1328
- }
1329
-
1330
- const weatherWorkflow = new Workflow({
1331
- name: 'weather-workflow',
1332
- triggerSchema: z.object({
1757
+ const weatherWorkflow = createWorkflow({
1758
+ id: 'weather-workflow',
1759
+ inputSchema: z.object({
1333
1760
  city: z.string().describe('The city to get the weather for'),
1334
1761
  }),
1762
+ outputSchema: z.object({
1763
+ activities: z.string(),
1764
+ })
1335
1765
  })
1336
- .step(fetchWeather)
1766
+ .then(fetchWeather)
1337
1767
  .then(planActivities);
1338
1768
 
1339
1769
  weatherWorkflow.commit();
@@ -1357,7 +1787,7 @@ async function writeCodeSampleForComponents(llmprovider, component, destPath, im
1357
1787
  case "tools":
1358
1788
  return writeToolSample(destPath);
1359
1789
  case "workflows":
1360
- return writeWorkflowSample(destPath, llmprovider);
1790
+ return writeWorkflowSample(destPath);
1361
1791
  default:
1362
1792
  return "";
1363
1793
  }
@@ -1373,7 +1803,7 @@ var writeIndexFile = async ({
1373
1803
  addWorkflow
1374
1804
  }) => {
1375
1805
  const indexPath = dirPath + "/index.ts";
1376
- const destPath = path.join(indexPath);
1806
+ const destPath = path2.join(indexPath);
1377
1807
  try {
1378
1808
  await fs4.writeFile(destPath, "");
1379
1809
  const filteredExports = [
@@ -1395,13 +1825,18 @@ export const mastra = new Mastra()
1395
1825
  destPath,
1396
1826
  `
1397
1827
  import { Mastra } from '@mastra/core/mastra';
1398
- import { createLogger } from '@mastra/core/logger';
1399
- ${addWorkflow ? `import { weatherWorkflow } from './workflows';` : ""}
1400
- ${addAgent ? `import { weatherAgent } from './agents';` : ""}
1828
+ import { PinoLogger } from '@mastra/loggers';
1829
+ import { LibSQLStore } from '@mastra/libsql';
1830
+ ${addWorkflow ? `import { weatherWorkflow } from './workflows/weather-workflow';` : ""}
1831
+ ${addAgent ? `import { weatherAgent } from './agents/weather-agent';` : ""}
1401
1832
 
1402
1833
  export const mastra = new Mastra({
1403
1834
  ${filteredExports.join("\n ")}
1404
- logger: createLogger({
1835
+ storage: new LibSQLStore({
1836
+ // stores telemetry, evals, ... into memory storage, if it needs to persist, change to file:../mastra.db
1837
+ url: ":memory:",
1838
+ }),
1839
+ logger: new PinoLogger({
1405
1840
  name: 'Mastra',
1406
1841
  level: 'info',
1407
1842
  }),
@@ -1422,6 +1857,12 @@ var getAPIKey = async (provider) => {
1422
1857
  case "groq":
1423
1858
  key = "GROQ_API_KEY";
1424
1859
  return key;
1860
+ case "google":
1861
+ key = "GOOGLE_GENERATIVE_AI_API_KEY";
1862
+ return key;
1863
+ case "cerebras":
1864
+ key = "CEREBRAS_API_KEY";
1865
+ return key;
1425
1866
  default:
1426
1867
  return key;
1427
1868
  }
@@ -1431,11 +1872,13 @@ var writeAPIKey = async ({
1431
1872
  apiKey = "your-api-key"
1432
1873
  }) => {
1433
1874
  const key = await getAPIKey(provider);
1434
- await exec(`echo ${key}=${apiKey} >> .env.development`);
1875
+ const escapedKey = shellQuote.quote([key]);
1876
+ const escapedApiKey = shellQuote.quote([apiKey]);
1877
+ await exec(`echo ${escapedKey}=${escapedApiKey} >> .env`);
1435
1878
  };
1436
1879
  var createMastraDir = async (directory) => {
1437
1880
  let dir = directory.trim().split("/").filter((item) => item !== "");
1438
- const dirPath = path.join(process.cwd(), ...dir, "mastra");
1881
+ const dirPath = path2.join(process.cwd(), ...dir, "mastra");
1439
1882
  try {
1440
1883
  await fs4.access(dirPath);
1441
1884
  return { ok: false };
@@ -1445,7 +1888,7 @@ var createMastraDir = async (directory) => {
1445
1888
  }
1446
1889
  };
1447
1890
  var writeCodeSample = async (dirPath, component, llmProvider, importComponents) => {
1448
- const destPath = dirPath + `/${component}/index.ts`;
1891
+ const destPath = dirPath + `/${component}/weather-${component.slice(0, -1)}.ts`;
1449
1892
  try {
1450
1893
  await writeCodeSampleForComponents(llmProvider, component, destPath, importComponents);
1451
1894
  } catch (err) {
@@ -1453,38 +1896,26 @@ var writeCodeSample = async (dirPath, component, llmProvider, importComponents)
1453
1896
  }
1454
1897
  };
1455
1898
  var interactivePrompt = async () => {
1456
- pe(color2.inverse("Mastra Init"));
1457
- const mastraProject = await ve(
1899
+ Ie(color2.inverse(" Mastra Init "));
1900
+ const mastraProject = await Ce(
1458
1901
  {
1459
- directory: () => ae({
1902
+ directory: () => he({
1460
1903
  message: "Where should we create the Mastra files? (default: src/)",
1461
1904
  placeholder: "src/",
1462
1905
  defaultValue: "src/"
1463
1906
  }),
1464
- components: () => $e({
1465
- message: "Choose components to install:",
1466
- options: [
1467
- { value: "agents", label: "Agents", hint: "recommended" },
1468
- {
1469
- value: "workflows",
1470
- label: "Workflows"
1471
- }
1472
- ]
1473
- }),
1474
- shouldAddTools: () => ce({
1475
- message: "Add tools?",
1476
- initialValue: false
1477
- }),
1478
- llmProvider: () => le({
1907
+ llmProvider: () => ve({
1479
1908
  message: "Select default provider:",
1480
1909
  options: [
1481
1910
  { value: "openai", label: "OpenAI", hint: "recommended" },
1482
1911
  { value: "anthropic", label: "Anthropic" },
1483
- { value: "groq", label: "Groq" }
1912
+ { value: "groq", label: "Groq" },
1913
+ { value: "google", label: "Google" },
1914
+ { value: "cerebras", label: "Cerebras" }
1484
1915
  ]
1485
1916
  }),
1486
1917
  llmApiKey: async ({ results: { llmProvider } }) => {
1487
- const keyChoice = await le({
1918
+ const keyChoice = await ve({
1488
1919
  message: `Enter your ${llmProvider} API key?`,
1489
1920
  options: [
1490
1921
  { value: "skip", label: "Skip for now", hint: "default" },
@@ -1493,37 +1924,107 @@ var interactivePrompt = async () => {
1493
1924
  initialValue: "skip"
1494
1925
  });
1495
1926
  if (keyChoice === "enter") {
1496
- return ae({
1927
+ return he({
1497
1928
  message: "Enter your API key:",
1498
1929
  placeholder: "sk-..."
1499
1930
  });
1500
1931
  }
1501
1932
  return void 0;
1502
1933
  },
1503
- addExample: () => ce({
1504
- message: "Add example",
1505
- initialValue: false
1506
- })
1934
+ configureEditorWithDocsMCP: async () => {
1935
+ const windsurfIsAlreadyInstalled = await globalMCPIsAlreadyInstalled(`windsurf`);
1936
+ const cursorIsAlreadyInstalled = await globalMCPIsAlreadyInstalled(`cursor`);
1937
+ const vscodeIsAlreadyInstalled = await globalMCPIsAlreadyInstalled(`vscode`);
1938
+ const editor = await ve({
1939
+ message: `Make your AI IDE into a Mastra expert? (installs Mastra docs MCP server)`,
1940
+ options: [
1941
+ { value: "skip", label: "Skip for now", hint: "default" },
1942
+ {
1943
+ value: "cursor",
1944
+ label: "Cursor (project only)",
1945
+ hint: cursorIsAlreadyInstalled ? `Already installed globally` : void 0
1946
+ },
1947
+ {
1948
+ value: "cursor-global",
1949
+ label: "Cursor (global, all projects)",
1950
+ hint: cursorIsAlreadyInstalled ? `Already installed` : void 0
1951
+ },
1952
+ {
1953
+ value: "windsurf",
1954
+ label: "Windsurf",
1955
+ hint: windsurfIsAlreadyInstalled ? `Already installed` : void 0
1956
+ },
1957
+ {
1958
+ value: "vscode",
1959
+ label: "VSCode",
1960
+ hint: vscodeIsAlreadyInstalled ? `Already installed` : void 0
1961
+ }
1962
+ ]
1963
+ });
1964
+ if (editor === `skip`) return void 0;
1965
+ if (editor === `windsurf` && windsurfIsAlreadyInstalled) {
1966
+ M.message(`
1967
+ Windsurf is already installed, skipping.`);
1968
+ return void 0;
1969
+ }
1970
+ if (editor === `vscode` && vscodeIsAlreadyInstalled) {
1971
+ M.message(`
1972
+ VSCode is already installed, skipping.`);
1973
+ return void 0;
1974
+ }
1975
+ if (editor === `cursor`) {
1976
+ M.message(
1977
+ `
1978
+ Note: you will need to go into Cursor Settings -> MCP Settings and manually enable the installed Mastra MCP server.
1979
+ `
1980
+ );
1981
+ }
1982
+ if (editor === `cursor-global`) {
1983
+ const confirm2 = await ve({
1984
+ message: `Global install will add/update ${cursorGlobalMCPConfigPath} and make the Mastra docs MCP server available in all your Cursor projects. Continue?`,
1985
+ options: [
1986
+ { value: "yes", label: "Yes, I understand" },
1987
+ { value: "skip", label: "No, skip for now" }
1988
+ ]
1989
+ });
1990
+ if (confirm2 !== `yes`) {
1991
+ return void 0;
1992
+ }
1993
+ }
1994
+ if (editor === `windsurf`) {
1995
+ const confirm2 = await ve({
1996
+ message: `Windsurf only supports a global MCP config (at ${windsurfGlobalMCPConfigPath}) is it ok to add/update that global config?
1997
+ This means the Mastra docs MCP server will be available in all your Windsurf projects.`,
1998
+ options: [
1999
+ { value: "yes", label: "Yes, I understand" },
2000
+ { value: "skip", label: "No, skip for now" }
2001
+ ]
2002
+ });
2003
+ if (confirm2 !== `yes`) {
2004
+ return void 0;
2005
+ }
2006
+ }
2007
+ return editor;
2008
+ }
1507
2009
  },
1508
2010
  {
1509
2011
  onCancel: () => {
1510
- he("Operation cancelled.");
2012
+ xe("Operation cancelled.");
1511
2013
  process.exit(0);
1512
2014
  }
1513
2015
  }
1514
2016
  );
1515
- const { shouldAddTools, components, ...rest } = mastraProject;
1516
- const mastraComponents = shouldAddTools ? [...components, "tools"] : components;
1517
- return { ...rest, components: mastraComponents };
2017
+ return mastraProject;
1518
2018
  };
1519
- var s = _();
2019
+ var s = Y();
1520
2020
  var exec2 = util.promisify(child_process.exec);
1521
2021
  var init = async ({
1522
2022
  directory,
1523
2023
  addExample = false,
1524
2024
  components,
1525
2025
  llmProvider = "openai",
1526
- llmApiKey
2026
+ llmApiKey,
2027
+ configureEditorWithDocsMCP
1527
2028
  }) => {
1528
2029
  s.start("Initializing Mastra");
1529
2030
  try {
@@ -1549,22 +2050,42 @@ var init = async ({
1549
2050
  (component) => writeCodeSample(dirPath, component, llmProvider, components)
1550
2051
  )
1551
2052
  ]);
2053
+ const depService = new DepsService();
2054
+ const needsLibsql = await depService.checkDependencies(["@mastra/libsql"]) !== `ok`;
2055
+ if (needsLibsql) {
2056
+ await depService.installPackages(["@mastra/libsql"]);
2057
+ }
2058
+ const needsMemory = components.includes(`agents`) && await depService.checkDependencies(["@mastra/memory"]) !== `ok`;
2059
+ if (needsMemory) {
2060
+ await depService.installPackages(["@mastra/memory"]);
2061
+ }
2062
+ const needsLoggers = await depService.checkDependencies(["@mastra/loggers"]) !== `ok`;
2063
+ if (needsLoggers) {
2064
+ await depService.installPackages(["@mastra/loggers"]);
2065
+ }
1552
2066
  }
1553
2067
  const key = await getAPIKey(llmProvider || "openai");
1554
2068
  const aiSdkPackage = getAISDKPackage(llmProvider);
1555
- const pm = getPackageManager();
2069
+ const depsService = new DepsService();
2070
+ const pm = depsService.packageManager;
1556
2071
  const installCommand = getPackageManagerInstallCommand(pm);
1557
2072
  await exec2(`${pm} ${installCommand} ${aiSdkPackage}`);
2073
+ if (configureEditorWithDocsMCP) {
2074
+ await installMastraDocsMCPServer({
2075
+ editor: configureEditorWithDocsMCP,
2076
+ directory: process.cwd()
2077
+ });
2078
+ }
1558
2079
  s.stop();
1559
2080
  if (!llmApiKey) {
1560
- me(`
2081
+ Me(`
1561
2082
  ${color2.green("Mastra initialized successfully!")}
1562
2083
 
1563
2084
  Add your ${color2.cyan(key)} as an environment variable
1564
- in your ${color2.cyan(".env.development")} file
2085
+ in your ${color2.cyan(".env")} file
1565
2086
  `);
1566
2087
  } else {
1567
- me(`
2088
+ Me(`
1568
2089
  ${color2.green("Mastra initialized successfully!")}
1569
2090
  `);
1570
2091
  }
@@ -1576,9 +2097,12 @@ var init = async ({
1576
2097
  }
1577
2098
  };
1578
2099
  var exec3 = util.promisify(child_process.exec);
1579
- var execWithTimeout = async (command, timeoutMs = 18e4) => {
2100
+ var execWithTimeout = async (command, timeoutMs) => {
1580
2101
  try {
1581
2102
  const promise = exec3(command, { killSignal: "SIGTERM" });
2103
+ if (!timeoutMs) {
2104
+ return await promise;
2105
+ }
1582
2106
  let timeoutId;
1583
2107
  const timeout = new Promise((_, reject) => {
1584
2108
  timeoutId = setTimeout(() => reject(new Error("Command timed out")), timeoutMs);
@@ -1595,49 +2119,85 @@ var execWithTimeout = async (command, timeoutMs = 18e4) => {
1595
2119
  throw error;
1596
2120
  }
1597
2121
  } catch (error) {
1598
- console.error(error);
1599
2122
  throw error;
1600
2123
  }
1601
2124
  };
1602
- var createMastraProject = async ({ createVersionTag }) => {
1603
- pe(color2.inverse("Mastra Create"));
1604
- const projectName = await ae({
2125
+ async function installMastraDependency(pm, dependency, versionTag, isDev, timeout) {
2126
+ let installCommand = getPackageManagerInstallCommand(pm);
2127
+ if (isDev) {
2128
+ installCommand = `${installCommand} --save-dev`;
2129
+ }
2130
+ try {
2131
+ await execWithTimeout(`${pm} ${installCommand} ${dependency}${versionTag}`, timeout);
2132
+ } catch (err) {
2133
+ if (versionTag === "@latest") {
2134
+ throw new Error(
2135
+ `Failed to install ${dependency}@latest: ${err instanceof Error ? err.message : "Unknown error"}`
2136
+ );
2137
+ }
2138
+ try {
2139
+ await execWithTimeout(`${pm} ${installCommand} ${dependency}@latest`, timeout);
2140
+ } catch (fallbackErr) {
2141
+ throw new Error(
2142
+ `Failed to install ${dependency} (tried ${versionTag} and @latest): ${fallbackErr instanceof Error ? fallbackErr.message : "Unknown error"}`
2143
+ );
2144
+ }
2145
+ }
2146
+ }
2147
+ var createMastraProject = async ({
2148
+ projectName: name,
2149
+ createVersionTag,
2150
+ timeout
2151
+ }) => {
2152
+ Ie(color2.inverse(" Mastra Create "));
2153
+ const projectName = name ?? await he({
1605
2154
  message: "What do you want to name your project?",
1606
2155
  placeholder: "my-mastra-app",
1607
2156
  defaultValue: "my-mastra-app"
1608
2157
  });
1609
- if (lD(projectName)) {
1610
- he("Operation cancelled");
2158
+ if (pD(projectName)) {
2159
+ xe("Operation cancelled");
1611
2160
  process.exit(0);
1612
2161
  }
1613
- const s2 = _();
1614
- s2.start("Creating project");
2162
+ const s2 = Y();
1615
2163
  try {
1616
- await fs4.mkdir(projectName);
1617
- } catch (error) {
1618
- if (error instanceof Error && "code" in error && error.code === "EEXIST") {
1619
- s2.stop(
1620
- `A directory named "${projectName}" already exists. Please choose a different name or delete the existing directory.`
2164
+ s2.start("Creating project");
2165
+ try {
2166
+ await fs4.mkdir(projectName);
2167
+ } catch (error) {
2168
+ if (error instanceof Error && "code" in error && error.code === "EEXIST") {
2169
+ s2.stop(`A directory named "${projectName}" already exists. Please choose a different name.`);
2170
+ process.exit(1);
2171
+ }
2172
+ throw new Error(
2173
+ `Failed to create project directory: ${error instanceof Error ? error.message : "Unknown error"}`
1621
2174
  );
1622
- process.exit(1);
1623
2175
  }
1624
- throw error;
1625
- }
1626
- process.chdir(projectName);
1627
- const pm = getPackageManager();
1628
- const installCommand = getPackageManagerInstallCommand(pm);
1629
- s2.message("Creating project");
1630
- await exec3(`npm init -y`);
1631
- await exec3(`npm pkg set type="module"`);
1632
- const depsService = new DepsService();
1633
- await depsService.addScriptsToPackageJson({
1634
- dev: "mastra dev"
1635
- });
1636
- s2.stop("Project created");
1637
- s2.start(`Installing ${pm} dependencies`);
1638
- await exec3(`${pm} ${installCommand} zod`);
1639
- await exec3(`${pm} ${installCommand} typescript tsx @types/node --save-dev`);
1640
- await exec3(`echo '{
2176
+ process.chdir(projectName);
2177
+ const pm = getPackageManager();
2178
+ const installCommand = getPackageManagerInstallCommand(pm);
2179
+ s2.message("Initializing project structure");
2180
+ try {
2181
+ await exec3(`npm init -y`);
2182
+ await exec3(`npm pkg set type="module"`);
2183
+ await exec3(`npm pkg set engines.node=">=20.9.0"`);
2184
+ const depsService = new DepsService();
2185
+ await depsService.addScriptsToPackageJson({
2186
+ dev: "mastra dev",
2187
+ build: "mastra build",
2188
+ start: "mastra start"
2189
+ });
2190
+ } catch (error) {
2191
+ throw new Error(
2192
+ `Failed to initialize project structure: ${error instanceof Error ? error.message : "Unknown error"}`
2193
+ );
2194
+ }
2195
+ s2.stop("Project structure created");
2196
+ s2.start(`Installing ${pm} dependencies`);
2197
+ try {
2198
+ await exec3(`${pm} ${installCommand} zod`);
2199
+ await exec3(`${pm} ${installCommand} typescript @types/node --save-dev`);
2200
+ await exec3(`echo '{
1641
2201
  "compilerOptions": {
1642
2202
  "target": "ES2022",
1643
2203
  "module": "ES2022",
@@ -1646,121 +2206,117 @@ var createMastraProject = async ({ createVersionTag }) => {
1646
2206
  "forceConsistentCasingInFileNames": true,
1647
2207
  "strict": true,
1648
2208
  "skipLibCheck": true,
2209
+ "noEmit": true,
1649
2210
  "outDir": "dist"
1650
2211
  },
1651
2212
  "include": [
1652
2213
  "src/**/*"
1653
- ],
1654
- "exclude": [
1655
- "node_modules",
1656
- "dist",
1657
- ".mastra"
1658
2214
  ]
1659
2215
  }' > tsconfig.json`);
1660
- s2.stop(`${pm} dependencies installed`);
1661
- s2.start("Installing mastra");
1662
- const versionTag = createVersionTag ? `@${createVersionTag}` : "@latest";
1663
- await execWithTimeout(`${pm} ${installCommand} mastra${versionTag}`);
1664
- s2.stop("mastra installed");
1665
- s2.start("Installing @mastra/core");
1666
- await execWithTimeout(`${pm} ${installCommand} @mastra/core${versionTag}`);
1667
- s2.stop("@mastra/core installed");
1668
- s2.start("Adding .gitignore");
1669
- await exec3(`echo output.txt >> .gitignore`);
1670
- await exec3(`echo node_modules >> .gitignore`);
1671
- await exec3(`echo dist >> .gitignore`);
1672
- await exec3(`echo .mastra >> .gitignore`);
1673
- await exec3(`echo .env.development >> .gitignore`);
1674
- await exec3(`echo .env >> .gitignore`);
1675
- await exec3(`echo *.db >> .gitignore`);
1676
- s2.stop(".gitignore added");
1677
- ge("Project created successfully");
1678
- console.log("");
1679
- return { projectName };
2216
+ } catch (error) {
2217
+ throw new Error(
2218
+ `Failed to install basic dependencies: ${error instanceof Error ? error.message : "Unknown error"}`
2219
+ );
2220
+ }
2221
+ s2.stop(`${pm} dependencies installed`);
2222
+ s2.start("Installing mastra");
2223
+ const versionTag = createVersionTag ? `@${createVersionTag}` : "@latest";
2224
+ try {
2225
+ await installMastraDependency(pm, "mastra", versionTag, true, timeout);
2226
+ } catch (error) {
2227
+ throw new Error(`Failed to install Mastra CLI: ${error instanceof Error ? error.message : "Unknown error"}`);
2228
+ }
2229
+ s2.stop("mastra installed");
2230
+ s2.start("Installing dependencies");
2231
+ try {
2232
+ await installMastraDependency(pm, "@mastra/core", versionTag, false, timeout);
2233
+ await installMastraDependency(pm, "@mastra/libsql", versionTag, false, timeout);
2234
+ await installMastraDependency(pm, "@mastra/memory", versionTag, false, timeout);
2235
+ } catch (error) {
2236
+ throw new Error(
2237
+ `Failed to install Mastra dependencies: ${error instanceof Error ? error.message : "Unknown error"}`
2238
+ );
2239
+ }
2240
+ s2.stop("Mastra dependencies installed");
2241
+ s2.start("Adding .gitignore");
2242
+ try {
2243
+ await exec3(`echo output.txt >> .gitignore`);
2244
+ await exec3(`echo node_modules >> .gitignore`);
2245
+ await exec3(`echo dist >> .gitignore`);
2246
+ await exec3(`echo .mastra >> .gitignore`);
2247
+ await exec3(`echo .env.development >> .gitignore`);
2248
+ await exec3(`echo .env >> .gitignore`);
2249
+ await exec3(`echo *.db >> .gitignore`);
2250
+ await exec3(`echo *.db-* >> .gitignore`);
2251
+ } catch (error) {
2252
+ throw new Error(`Failed to create .gitignore: ${error instanceof Error ? error.message : "Unknown error"}`);
2253
+ }
2254
+ s2.stop(".gitignore added");
2255
+ Se("Project created successfully");
2256
+ console.log("");
2257
+ return { projectName };
2258
+ } catch (error) {
2259
+ s2.stop();
2260
+ const errorMessage = error instanceof Error ? error.message : "An unexpected error occurred";
2261
+ xe(`Project creation failed: ${errorMessage}`);
2262
+ process.exit(1);
2263
+ }
1680
2264
  };
1681
- var create = async (args) => {
2265
+ var create = async (args2) => {
1682
2266
  const { projectName } = await createMastraProject({
1683
- createVersionTag: args?.createVersionTag
2267
+ projectName: args2?.projectName,
2268
+ createVersionTag: args2?.createVersionTag,
2269
+ timeout: args2?.timeout
1684
2270
  });
1685
- const directory = "/src";
1686
- if (!args.components || !args.llmProvider || !args.addExample) {
2271
+ const directory = args2.directory || "src/";
2272
+ if (args2.components === void 0 || args2.llmProvider === void 0 || args2.addExample === void 0) {
1687
2273
  const result = await interactivePrompt();
1688
2274
  await init({
1689
2275
  ...result,
1690
- llmApiKey: result?.llmApiKey
2276
+ llmApiKey: result?.llmApiKey,
2277
+ components: ["agents", "tools", "workflows"],
2278
+ addExample: true
1691
2279
  });
1692
2280
  postCreate({ projectName });
1693
2281
  return;
1694
2282
  }
1695
- const { components = [], llmProvider = "openai", addExample = false, llmApiKey } = args;
2283
+ const { components = [], llmProvider = "openai", addExample = false, llmApiKey } = args2;
1696
2284
  await init({
1697
2285
  directory,
1698
2286
  components,
1699
2287
  llmProvider,
1700
2288
  addExample,
1701
- llmApiKey
2289
+ llmApiKey,
2290
+ configureEditorWithDocsMCP: args2.mcpServer
1702
2291
  });
1703
2292
  postCreate({ projectName });
1704
2293
  };
1705
2294
  var postCreate = ({ projectName }) => {
1706
- ge(`
2295
+ const packageManager = getPackageManager();
2296
+ Se(`
1707
2297
  ${color2.green("To start your project:")}
1708
2298
 
1709
2299
  ${color2.cyan("cd")} ${projectName}
1710
- ${color2.cyan("npm run dev")}
2300
+ ${color2.cyan(`${packageManager} run dev`)}
1711
2301
  `);
1712
2302
  };
1713
2303
 
1714
2304
  async function getPackageVersion() {
1715
2305
  const __filename = fileURLToPath(import.meta.url);
1716
2306
  const __dirname = dirname(__filename);
1717
- const pkgJsonPath = path.join(__dirname, "..", "package.json");
2307
+ const pkgJsonPath = path2.join(__dirname, "..", "package.json");
1718
2308
  const content = await fsExtra.readJSON(pkgJsonPath);
1719
2309
  return content.version;
1720
2310
  }
1721
- async function tryReadPackageJson(paths) {
1722
- let lastError;
1723
- for (const path2 of paths) {
1724
- try {
1725
- const content = await fsExtra.readJSON(path2);
1726
- if (content.name === "create-mastra") {
1727
- return content;
1728
- }
1729
- } catch (err) {
1730
- lastError = err;
1731
- continue;
1732
- }
1733
- }
1734
- throw lastError || new Error("Could not find create-mastra package.json in any of the expected locations");
1735
- }
1736
2311
  async function getCreateVersionTag() {
1737
2312
  try {
1738
- const binPath = process.argv[1];
1739
- const binDir = dirname(binPath);
1740
- const possiblePaths = [
1741
- // Direct parent paths
1742
- path.join(binDir, "..", "package.json"),
1743
- path.join(binDir, "..", "..", "package.json"),
1744
- path.join(binDir, "..", "..", "..", "package.json"),
1745
- path.join(binDir, "..", "..", "..", "..", "package.json"),
1746
- // Standard node_modules paths
1747
- path.join(binDir, "..", "create-mastra", "package.json"),
1748
- path.join(binDir, "..", "..", "create-mastra", "package.json"),
1749
- path.join(binDir, "..", "..", "..", "create-mastra", "package.json"),
1750
- path.join(binDir, "..", "..", "..", "..", "create-mastra", "package.json"),
1751
- // pnpm specific paths (.pnpm directory)
1752
- path.join(binDir, "..", ".pnpm", "create-mastra@*", "node_modules", "create-mastra", "package.json"),
1753
- path.join(binDir, "..", "..", ".pnpm", "create-mastra@*", "node_modules", "create-mastra", "package.json"),
1754
- // pnpm dlx specific path
1755
- path.join(binDir, "..", "..", "package.json"),
1756
- path.join(binDir, "..", "..", "node_modules", "create-mastra", "package.json")
1757
- ];
1758
- const content = await tryReadPackageJson(possiblePaths);
1759
- if (content.version?.includes("-")) {
1760
- const tag = content.version.split("-")[1].split(".")[0];
1761
- return tag;
1762
- }
1763
- } catch (error) {
2313
+ const pkgPath = fileURLToPath(import.meta.resolve("create-mastra/package.json"));
2314
+ const json = await fsExtra.readJSON(pkgPath);
2315
+ const { stdout } = await execa("npm", ["dist-tag", "create-mastra"]);
2316
+ const tagLine = stdout.split("\n").find((distLine) => distLine.endsWith(`: ${json.version}`));
2317
+ const tag = tagLine ? tagLine.split(":")[0].trim() : "latest";
2318
+ return tag;
2319
+ } catch {
1764
2320
  console.error('We could not resolve the create-mastra version tag, falling back to "latest"');
1765
2321
  }
1766
2322
  return "latest";
@@ -1780,16 +2336,24 @@ program.version(`${version}`, "-v, --version").description(`create-mastra ${vers
1780
2336
  command: "version"
1781
2337
  });
1782
2338
  console.log(`create-mastra ${version}`);
1783
- } catch (e) {
2339
+ } catch {
1784
2340
  }
1785
2341
  });
1786
- program.name("create-mastra").description("Create a new Mastra project").option("--default", "Quick start with defaults(src, OpenAI, no examples)").option("-c, --components <components>", "Comma-separated list of components (agents, tools, workflows)").option("-l, --llm <model-provider>", "Default model provider (openai, anthropic, or groq)").option("-k, --llm-api-key <api-key>", "API key for the model provider").option("-e, --example", "Include example code").action(async (args) => {
2342
+ program.name("create-mastra").description("Create a new Mastra project").argument("[project-name]", "Directory name of the project").option(
2343
+ "-p, --project-name <string>",
2344
+ "Project name that will be used in package.json and as the project directory name."
2345
+ ).option("--default", "Quick start with defaults(src, OpenAI, examples)").option("-c, --components <components>", "Comma-separated list of components (agents, tools, workflows)").option("-l, --llm <model-provider>", "Default model provider (openai, anthropic, groq, google, or cerebras)").option("-k, --llm-api-key <api-key>", "API key for the model provider").option("-e, --example", "Include example code").option("-n, --no-example", "Do not include example code").option("-t, --timeout [timeout]", "Configurable timeout for package installation, defaults to 60000 ms").option("-d, --dir <directory>", "Target directory for Mastra source code (default: src/)").option("-m, --mcp <mcp>", "MCP Server for code editor (cursor, cursor-global, windsurf, vscode)").action(async (projectNameArg, args) => {
2346
+ const projectName = projectNameArg || args.projectName;
2347
+ const timeout = args?.timeout ? args?.timeout === true ? 6e4 : parseInt(args?.timeout, 10) : void 0;
1787
2348
  if (args.default) {
1788
2349
  await create({
1789
2350
  components: ["agents", "tools", "workflows"],
1790
2351
  llmProvider: "openai",
1791
- addExample: false,
1792
- createVersionTag
2352
+ addExample: true,
2353
+ createVersionTag,
2354
+ timeout,
2355
+ mcpServer: args.mcp,
2356
+ directory: "src/"
1793
2357
  });
1794
2358
  return;
1795
2359
  }
@@ -1798,7 +2362,11 @@ program.name("create-mastra").description("Create a new Mastra project").option(
1798
2362
  llmProvider: args.llm,
1799
2363
  addExample: args.example,
1800
2364
  llmApiKey: args["llm-api-key"],
1801
- createVersionTag
2365
+ createVersionTag,
2366
+ timeout,
2367
+ projectName,
2368
+ directory: args.dir,
2369
+ mcpServer: args.mcp
1802
2370
  });
1803
2371
  });
1804
2372
  program.parse(process.argv);