create-mastra 0.0.0-trigger-playground-ui-package-20250506151043 → 0.0.0-tsconfig-compile-20250703214351

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';
7
+ import path2, { dirname } from 'node:path';
8
8
  import { fileURLToPath } from 'node:url';
9
9
  import { PostHog } from 'posthog-node';
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';
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
16
  import fs4 from 'node:fs/promises';
17
17
  import { execa } from 'execa';
18
18
  import fsExtra3, { readJSON, ensureFile, writeJSON } from 'fs-extra/esm';
19
19
  import prettier from 'prettier';
20
- import { Transform } from 'node:stream';
20
+ import tty from 'node:tty';
21
21
  import pino from 'pino';
22
22
  import pretty from 'pino-pretty';
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,7 +35,7 @@ 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"));
@@ -63,7 +63,7 @@ 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 }));
66
+ writeFileSync(path2.join(__dirname, "mastra-cli.json"), JSON.stringify({ distinctId, sessionId }));
67
67
  } catch {
68
68
  }
69
69
  }
@@ -349,72 +349,335 @@ function requirePicocolors () {
349
349
  var picocolorsExports = /*@__PURE__*/ requirePicocolors();
350
350
  var color2 = /*@__PURE__*/getDefaultExportFromCjs(picocolorsExports);
351
351
 
352
- 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(`
353
- `)];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]===`
354
- `?(C&&(t+=L("")),s&&o&&(t+=N(o))):h===`
355
- `&&(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,`
356
356
  `).split(`
357
- `).map(t=>oD(t,u,F)).join(`
358
- `)}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(`
359
- `),t=u.split(`
360
- `),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$1(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$1(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$1(this.input,false),F(this.value);}),this.once("cancel",()=>{this.output.write(srcExports.cursor.show),this.output.off("resize",this.render),v$1(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(`
361
- `),v$1(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(`
362
- `).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(`
363
- `);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(`
364
- `).slice(t);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;}}}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();}}
366
-
367
- 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","+"),se=u("\u25CF","\u2022"),re=u("\u25C6","*"),ie=u("\u25B2","!"),ne=u("\u25A0","x"),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)}
368
- ${y(this.state)} ${s.message}
369
- `,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()}
370
- ${color2.yellow(a)} ${i}
371
- ${color2.yellow($)} ${color2.yellow(this.error)}
372
- `;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()?`
373
- `+color2.gray(a):""}`;default:return `${n}${color2.cyan(a)} ${i}
374
- ${color2.cyan($)}
375
- `}}}).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)}
376
- ${y(this.state)} ${s.message}
377
- `,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))}
378
- ${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}`}
379
- ${color2.cyan($)}
380
- `}}}).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)}
381
- ${y(this.state)} ${s.message}
382
- `;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")}
383
- ${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(`
384
- ${color2.cyan(a)} `)}
385
- ${color2.cyan($)}
386
- `}}}).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.
387
- ${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)}
388
- ${y(this.state)} ${s.message}
389
- `;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}
390
- ${color2.gray(a)}`:""}`}case "error":{const r=this.error.split(`
391
- `).map((o,c)=>c===0?`${color2.yellow($)} ${color2.yellow(o)}`:` ${o}`).join(`
392
- `);return t+color2.yellow(a)+" "+E({options:this.options,cursor:this.cursor,maxItems:s.maxItems,style:i}).join(`
393
- ${color2.yellow(a)} `)+`
394
- `+r+`
395
- `}default:return `${t}${color2.cyan(a)} ${E({options:this.options,cursor:this.cursor,maxItems:s.maxItems,style:i}).join(`
396
- ${color2.cyan(a)} `)}
397
- ${color2.cyan($)}
398
- `}}}).prompt()},R=s=>s.replace(ye(),""),me=(s="",n="")=>{const t=`
399
- ${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}
400
383
  `.split(`
401
- `),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(`
402
- `);process.stdout.write(`${color2.gray(a)}
403
- ${color2.green(M)} ${color2.reset(n)} ${color2.gray(G.repeat(Math.max(r-i-1,1))+H)}
404
- ${o}
405
- ${color2.gray(ee+G.repeat(r+2)+te)}
406
- `);},he=(s="")=>{process.stdout.write(`${color2.gray($)} ${color2.red(s)}
407
-
408
- `);},pe=(s="")=>{process.stdout.write(`${color2.gray(Q)} ${s}
409
- `);},ge=(s="")=>{process.stdout.write(`${color2.gray(a)}
410
- ${color2.gray($)} ${s}
411
-
412
- `);},v={message:(s="",{symbol:n=color2.gray(a)}={})=>{const t=[`${color2.gray(a)}`];if(s){const[i,...r]=s.split(`
413
- `);t.push(`${n} ${i}`,...r.map(o=>`${color2.gray(a)} ${o}`));}process.stdout.write(`${t.join(`
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(`
414
397
  `)}
415
- `);},info:s=>{v.message(s,{symbol:color2.blue(se)});},success:s=>{v.message(s,{symbol:color2.green(re)});},step:s=>{v.message(s,{symbol:color2.green(M)});},warn:s=>{v.message(s,{symbol:color2.yellow(ie)});},warning:s=>{v.warn(s);},error:s=>{v.message(s,{symbol:color2.red(ne)});}},_=()=>{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)}
416
- `);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}
417
- `),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};
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
+ }
636
+
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
+ }
643
+
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);
418
681
 
419
682
  // eslint-disable-next-line no-warning-comments
420
683
  // TODO: Use a better method when it's added to Node.js (https://github.com/nodejs/node/pull/40240)
@@ -549,18 +812,20 @@ var yoctocolors = /*#__PURE__*/Object.freeze({
549
812
  yellowBright: yellowBright
550
813
  });
551
814
 
552
- 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';
553
818
 
554
819
  const isInteractive = stream => Boolean(
555
820
  stream.isTTY
556
- && h.env.TERM !== 'dumb'
557
- && !('CI' in h.env),
821
+ && y$1.env.TERM !== 'dumb'
822
+ && !('CI' in y$1.env),
558
823
  );
559
824
 
560
825
  const infoSymbol = blue(isUnicodeSupported ? 'ℹ' : 'i');
561
826
  const successSymbol = green(isUnicodeSupported ? '✔' : '√');
562
827
  const warningSymbol = yellow(isUnicodeSupported ? '⚠' : '‼');
563
- const errorSymbol = red(isUnicodeSupported ? '✖️' : '×');
828
+ const errorSymbol = red(isUnicodeSupported ? '' : '×');
564
829
 
565
830
  const defaultSpinner = {
566
831
  frames: isUnicodeSupported
@@ -603,7 +868,7 @@ class YoctoSpinner {
603
868
  this.#frames = spinner.frames;
604
869
  this.#interval = spinner.interval;
605
870
  this.#text = options.text ?? '';
606
- this.#stream = options.stream ?? h.stderr;
871
+ this.#stream = options.stream ?? y$1.stderr;
607
872
  this.#color = options.color ?? 'cyan';
608
873
  this.#isInteractive = isInteractive(this.#stream);
609
874
  this.#exitHandlerBound = this.#exitHandler.bind(this);
@@ -675,8 +940,8 @@ class YoctoSpinner {
675
940
  return this.#text;
676
941
  }
677
942
 
678
- set text(value = '') {
679
- this.#text = value;
943
+ set text(value) {
944
+ this.#text = value ?? '';
680
945
  this.#render();
681
946
  }
682
947
 
@@ -740,7 +1005,7 @@ class YoctoSpinner {
740
1005
 
741
1006
  #lineCount(text) {
742
1007
  const width = this.#stream.columns ?? 80;
743
- const lines = text.split('\n');
1008
+ const lines = stripVTControlCharacters(text).split('\n');
744
1009
 
745
1010
  let lineCount = 0;
746
1011
  for (const line of lines) {
@@ -763,13 +1028,13 @@ class YoctoSpinner {
763
1028
  }
764
1029
 
765
1030
  #subscribeToProcessEvents() {
766
- h.once('SIGINT', this.#exitHandlerBound);
767
- h.once('SIGTERM', this.#exitHandlerBound);
1031
+ y$1.once('SIGINT', this.#exitHandlerBound);
1032
+ y$1.once('SIGTERM', this.#exitHandlerBound);
768
1033
  }
769
1034
 
770
1035
  #unsubscribeFromProcessEvents() {
771
- h.off('SIGINT', this.#exitHandlerBound);
772
- h.off('SIGTERM', this.#exitHandlerBound);
1036
+ y$1.off('SIGINT', this.#exitHandlerBound);
1037
+ y$1.off('SIGTERM', this.#exitHandlerBound);
773
1038
  }
774
1039
 
775
1040
  #exitHandler(signal) {
@@ -780,7 +1045,7 @@ class YoctoSpinner {
780
1045
  // SIGINT: 128 + 2
781
1046
  // SIGTERM: 128 + 15
782
1047
  const exitCode = signal === 'SIGINT' ? 130 : (signal === 'SIGTERM' ? 143 : 1);
783
- h.exit(exitCode);
1048
+ y$1.exit(exitCode);
784
1049
  }
785
1050
  }
786
1051
 
@@ -789,46 +1054,86 @@ function yoctoSpinner(options) {
789
1054
  }
790
1055
 
791
1056
  var LogLevel = {
792
- INFO: "info"};
793
- var Logger = class {
794
- logger;
1057
+ INFO: "info",
1058
+ ERROR: "error"};
1059
+ var MastraLogger = class {
1060
+ name;
1061
+ level;
795
1062
  transports;
796
1063
  constructor(options = {}) {
797
- this.transports = options.transports || {};
798
- const transportsAry = Object.entries(this.transports);
799
- this.logger = pino(
800
- {
801
- name: options.name || "app",
802
- level: options.level || LogLevel.INFO,
803
- formatters: {
804
- level: (label) => {
805
- return {
806
- level: label
807
- };
808
- }
809
- }
810
- },
811
- 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({
812
1115
  colorize: true,
813
1116
  levelFirst: true,
814
1117
  ignore: "pid,hostname",
815
1118
  colorizeObjects: true,
816
1119
  translateTime: "SYS:standard",
817
1120
  singleLine: false
818
- }) : pino.multistream([
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([
819
1131
  ...transportsAry.map(([, transport]) => ({
820
1132
  stream: transport,
821
1133
  level: options.level || LogLevel.INFO
822
1134
  })),
823
1135
  {
824
- stream: pretty({
825
- colorize: true,
826
- levelFirst: true,
827
- ignore: "pid,hostname",
828
- colorizeObjects: true,
829
- translateTime: "SYS:standard",
830
- singleLine: false
831
- }),
1136
+ stream: prettyStream,
832
1137
  level: options.level || LogLevel.INFO
833
1138
  }
834
1139
  ])
@@ -846,31 +1151,7 @@ var Logger = class {
846
1151
  error(message, args = {}) {
847
1152
  this.logger.error(args, message);
848
1153
  }
849
- // Stream creation for process output handling
850
- createStream() {
851
- return new Transform({
852
- transform: (chunk, _encoding, callback) => {
853
- const line = chunk.toString().trim();
854
- if (line) {
855
- this.info(line);
856
- }
857
- callback(null, chunk);
858
- }
859
- });
860
- }
861
- async getLogs(transportId) {
862
- if (!transportId || !this.transports[transportId]) {
863
- return [];
864
- }
865
- return this.transports[transportId].getLogs();
866
- }
867
- async getLogsByRunId({ runId, transportId }) {
868
- return this.transports[transportId]?.getLogsByRunId({ runId });
869
- }
870
1154
  };
871
- function createLogger(options) {
872
- return new Logger(options);
873
- }
874
1155
 
875
1156
  var DepsService = class {
876
1157
  packageManager;
@@ -880,11 +1161,11 @@ var DepsService = class {
880
1161
  findLockFile(dir) {
881
1162
  const lockFiles = ["pnpm-lock.yaml", "package-lock.json", "yarn.lock", "bun.lock"];
882
1163
  for (const file of lockFiles) {
883
- if (fs3__default__default.existsSync(path.join(dir, file))) {
1164
+ if (fs3__default__default.existsSync(path2.join(dir, file))) {
884
1165
  return file;
885
1166
  }
886
1167
  }
887
- const parentDir = path.resolve(dir, "..");
1168
+ const parentDir = path2.resolve(dir, "..");
888
1169
  if (parentDir !== dir) {
889
1170
  return this.findLockFile(parentDir);
890
1171
  }
@@ -921,7 +1202,7 @@ var DepsService = class {
921
1202
  }
922
1203
  async checkDependencies(dependencies) {
923
1204
  try {
924
- const packageJsonPath = path.join(process.cwd(), "package.json");
1205
+ const packageJsonPath = path2.join(process.cwd(), "package.json");
925
1206
  try {
926
1207
  await fs4.access(packageJsonPath);
927
1208
  } catch {
@@ -941,7 +1222,7 @@ var DepsService = class {
941
1222
  }
942
1223
  async getProjectName() {
943
1224
  try {
944
- const packageJsonPath = path.join(process.cwd(), "package.json");
1225
+ const packageJsonPath = path2.join(process.cwd(), "package.json");
945
1226
  const packageJson = await fs4.readFile(packageJsonPath, "utf-8");
946
1227
  const pkg = JSON.parse(packageJson);
947
1228
  return pkg.name;
@@ -952,7 +1233,7 @@ var DepsService = class {
952
1233
  async getPackageVersion() {
953
1234
  const __filename = fileURLToPath(import.meta.url);
954
1235
  const __dirname = dirname(__filename);
955
- const pkgJsonPath = path.join(__dirname, "..", "package.json");
1236
+ const pkgJsonPath = path2.join(__dirname, "..", "package.json");
956
1237
  const content = await fsExtra3.readJSON(pkgJsonPath);
957
1238
  return content.version;
958
1239
  }
@@ -1000,57 +1281,85 @@ function getPackageManagerInstallCommand(pm) {
1000
1281
  return "install";
1001
1282
  }
1002
1283
  }
1003
- var args = ["-y", "@mastra/mcp-docs-server@latest"];
1004
- var mcpConfig = {
1005
- mcpServers: {
1006
- mastra: process.platform === `win32` ? {
1007
- command: "cmd",
1008
- args: ["/c", "npx", ...args]
1009
- } : {
1010
- command: "npx",
1011
- args
1012
- }
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
+ };
1013
1300
  }
1301
+ return {
1302
+ mcpServers: {
1303
+ mastra: {
1304
+ command: "npx",
1305
+ args
1306
+ }
1307
+ }
1308
+ };
1014
1309
  };
1015
- function makeConfig(original) {
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
+ }
1016
1320
  return {
1017
1321
  ...original,
1018
1322
  mcpServers: {
1019
1323
  ...original?.mcpServers || {},
1020
- ...mcpConfig.mcpServers
1324
+ ...createMcpConfig(editor).mcpServers
1021
1325
  }
1022
1326
  };
1023
1327
  }
1024
- async function writeMergedConfig(configPath) {
1328
+ async function writeMergedConfig(configPath, editor) {
1025
1329
  const configExists = existsSync(configPath);
1026
- const config = makeConfig(configExists ? await readJSON(configPath) : {});
1330
+ const config = makeConfig(configExists ? await readJSON(configPath) : {}, editor);
1027
1331
  await ensureFile(configPath);
1028
1332
  await writeJSON(configPath, config, {
1029
1333
  spaces: 2
1030
1334
  });
1031
1335
  }
1032
- var windsurfGlobalMCPConfigPath = path.join(os.homedir(), ".codeium", "windsurf", "mcp_config.json");
1033
- var cursorGlobalMCPConfigPath = path.join(os.homedir(), ".cursor", "mcp.json");
1034
- async function installMastraDocsMCPServer({
1035
- editor,
1036
- directory
1037
- }) {
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 }) {
1038
1344
  if (editor === `cursor`) {
1039
- await writeMergedConfig(path.join(directory, ".cursor", "mcp.json"));
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");
1040
1349
  }
1041
1350
  if (editor === `cursor-global`) {
1042
1351
  const alreadyInstalled = await globalMCPIsAlreadyInstalled(editor);
1043
1352
  if (alreadyInstalled) {
1044
1353
  return;
1045
1354
  }
1046
- await writeMergedConfig(cursorGlobalMCPConfigPath);
1355
+ await writeMergedConfig(cursorGlobalMCPConfigPath, "cursor-global");
1047
1356
  }
1048
1357
  if (editor === `windsurf`) {
1049
1358
  const alreadyInstalled = await globalMCPIsAlreadyInstalled(editor);
1050
1359
  if (alreadyInstalled) {
1051
1360
  return;
1052
1361
  }
1053
- await writeMergedConfig(windsurfGlobalMCPConfigPath);
1362
+ await writeMergedConfig(windsurfGlobalMCPConfigPath, editor);
1054
1363
  }
1055
1364
  }
1056
1365
  async function globalMCPIsAlreadyInstalled(editor) {
@@ -1059,19 +1368,28 @@ async function globalMCPIsAlreadyInstalled(editor) {
1059
1368
  configPath = windsurfGlobalMCPConfigPath;
1060
1369
  } else if (editor === "cursor-global") {
1061
1370
  configPath = cursorGlobalMCPConfigPath;
1371
+ } else if (editor === "vscode") {
1372
+ configPath = vscodeGlobalMCPConfigPath;
1062
1373
  }
1063
1374
  if (!configPath || !existsSync(configPath)) {
1064
1375
  return false;
1065
1376
  }
1066
1377
  try {
1067
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
+ }
1068
1387
  if (!configContents?.mcpServers) return false;
1069
1388
  const hasMastraMCP = Object.values(configContents.mcpServers).some(
1070
1389
  (server) => server?.args?.find((arg) => arg?.includes(`@mastra/mcp-docs-server`))
1071
1390
  );
1072
1391
  return hasMastraMCP;
1073
- } catch (e) {
1074
- console.error(e);
1392
+ } catch {
1075
1393
  return false;
1076
1394
  }
1077
1395
  }
@@ -1146,8 +1464,8 @@ var FileService = class {
1146
1464
  */
1147
1465
  async copyStarterFile(inputFile, outputFilePath, replaceIfExists) {
1148
1466
  const __filename = fileURLToPath(import.meta.url);
1149
- const __dirname = path.dirname(__filename);
1150
- const filePath = path.resolve(__dirname, "starter-files", inputFile);
1467
+ const __dirname = path2.dirname(__filename);
1468
+ const filePath = path2.resolve(__dirname, "starter-files", inputFile);
1151
1469
  const fileString = fs3__default__default.readFileSync(filePath, "utf8");
1152
1470
  if (fs3__default__default.existsSync(outputFilePath) && !replaceIfExists) {
1153
1471
  console.log(`${outputFilePath} already exists`);
@@ -1157,7 +1475,7 @@ var FileService = class {
1157
1475
  return true;
1158
1476
  }
1159
1477
  async setupEnvFile({ dbUrl }) {
1160
- const envPath = path.join(process.cwd(), ".env.development");
1478
+ const envPath = path2.join(process.cwd(), ".env.development");
1161
1479
  await fsExtra3.ensureFile(envPath);
1162
1480
  const fileEnvService = new FileEnvService(envPath);
1163
1481
  await fileEnvService.setEnvValue("DB_URL", dbUrl);
@@ -1181,9 +1499,9 @@ var FileService = class {
1181
1499
  fs3__default__default.writeFileSync(filePath, fileContent);
1182
1500
  }
1183
1501
  };
1184
- createLogger({
1502
+ new PinoLogger({
1185
1503
  name: "Mastra CLI",
1186
- level: "debug"
1504
+ level: "info"
1187
1505
  });
1188
1506
  var exec = util.promisify(child_process.exec);
1189
1507
  var getAISDKPackage = (llmProvider) => {
@@ -1207,7 +1525,7 @@ var getProviderImportAndModelItem = (llmProvider) => {
1207
1525
  let modelItem = "";
1208
1526
  if (llmProvider === "openai") {
1209
1527
  providerImport = `import { openai } from '${getAISDKPackage(llmProvider)}';`;
1210
- modelItem = `openai('gpt-4o')`;
1528
+ modelItem = `openai('gpt-4o-mini')`;
1211
1529
  } else if (llmProvider === "anthropic") {
1212
1530
  providerImport = `import { anthropic } from '${getAISDKPackage(llmProvider)}';`;
1213
1531
  modelItem = `anthropic('claude-3-5-sonnet-20241022')`;
@@ -1216,7 +1534,7 @@ var getProviderImportAndModelItem = (llmProvider) => {
1216
1534
  modelItem = `groq('llama-3.3-70b-versatile')`;
1217
1535
  } else if (llmProvider === "google") {
1218
1536
  providerImport = `import { google } from '${getAISDKPackage(llmProvider)}';`;
1219
- modelItem = `google('gemini-1.5-pro-latest')`;
1537
+ modelItem = `google('gemini-2.5-pro-exp-03-25')`;
1220
1538
  } else if (llmProvider === "cerebras") {
1221
1539
  providerImport = `import { cerebras } from '${getAISDKPackage(llmProvider)}';`;
1222
1540
  modelItem = `cerebras('llama-3.3-70b')`;
@@ -1226,14 +1544,16 @@ var getProviderImportAndModelItem = (llmProvider) => {
1226
1544
  async function writeAgentSample(llmProvider, destPath, addExampleTool) {
1227
1545
  const { providerImport, modelItem } = getProviderImportAndModelItem(llmProvider);
1228
1546
  const instructions = `
1229
- 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.
1230
1548
 
1231
1549
  Your primary function is to help users get weather details for specific locations. When responding:
1232
1550
  - Always ask for a location if none is provided
1233
- - If the location name isn\u2019t in English, please translate it
1551
+ - If the location name isn't in English, please translate it
1234
1552
  - If giving a location with multiple parts (e.g. "New York, NY"), use the most relevant part (e.g. "New York")
1235
1553
  - Include relevant details like humidity, wind conditions, and precipitation
1236
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.
1237
1557
 
1238
1558
  ${addExampleTool ? "Use the weatherTool to fetch current weather data." : ""}
1239
1559
  `;
@@ -1242,7 +1562,7 @@ ${providerImport}
1242
1562
  import { Agent } from '@mastra/core/agent';
1243
1563
  import { Memory } from '@mastra/memory';
1244
1564
  import { LibSQLStore } from '@mastra/libsql';
1245
- ${addExampleTool ? `import { weatherTool } from '../tools';` : ""}
1565
+ ${addExampleTool ? `import { weatherTool } from '../tools/weather-tool';` : ""}
1246
1566
 
1247
1567
  export const weatherAgent = new Agent({
1248
1568
  name: 'Weather Agent',
@@ -1252,14 +1572,7 @@ export const weatherAgent = new Agent({
1252
1572
  memory: new Memory({
1253
1573
  storage: new LibSQLStore({
1254
1574
  url: "file:../mastra.db", // path is relative to the .mastra/output directory
1255
- }),
1256
- options: {
1257
- lastMessages: 10,
1258
- semanticRecall: false,
1259
- threads: {
1260
- generateTitle: false
1261
- }
1262
- }
1575
+ })
1263
1576
  })
1264
1577
  });
1265
1578
  `;
@@ -1270,139 +1583,156 @@ export const weatherAgent = new Agent({
1270
1583
  await fs4.writeFile(destPath, "");
1271
1584
  await fs4.writeFile(destPath, formattedContent);
1272
1585
  }
1273
- async function writeWorkflowSample(destPath, llmProvider) {
1274
- const { providerImport, modelItem } = getProviderImportAndModelItem(llmProvider);
1275
- const content = `${providerImport}
1276
- import { Agent } from '@mastra/core/agent';
1277
- import { Step, Workflow } from '@mastra/core/workflows';
1586
+ async function writeWorkflowSample(destPath) {
1587
+ const content = `import { createStep, createWorkflow } from '@mastra/core/workflows';
1278
1588
  import { z } from 'zod';
1279
1589
 
1280
- const llm = ${modelItem};
1281
-
1282
- const agent = new Agent({
1283
- name: 'Weather Agent',
1284
- model: llm,
1285
- instructions: \`
1286
- You are a local activities and travel expert who excels at weather-based planning. Analyze the weather data and provide practical activity recommendations.
1287
-
1288
- For each day in the forecast, structure your response exactly as follows:
1289
-
1290
- \u{1F4C5} [Day, Month Date, Year]
1291
- \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
1292
-
1293
- \u{1F321}\uFE0F WEATHER SUMMARY
1294
- \u2022 Conditions: [brief description]
1295
- \u2022 Temperature: [X\xB0C/Y\xB0F to A\xB0C/B\xB0F]
1296
- \u2022 Precipitation: [X% chance]
1297
-
1298
- \u{1F305} MORNING ACTIVITIES
1299
- Outdoor:
1300
- \u2022 [Activity Name] - [Brief description including specific location/route]
1301
- Best timing: [specific time range]
1302
- Note: [relevant weather consideration]
1303
-
1304
- \u{1F31E} AFTERNOON ACTIVITIES
1305
- Outdoor:
1306
- \u2022 [Activity Name] - [Brief description including specific location/route]
1307
- Best timing: [specific time range]
1308
- Note: [relevant weather consideration]
1309
-
1310
- \u{1F3E0} INDOOR ALTERNATIVES
1311
- \u2022 [Activity Name] - [Brief description including specific venue]
1312
- Ideal for: [weather condition that would trigger this alternative]
1313
-
1314
- \u26A0\uFE0F SPECIAL CONSIDERATIONS
1315
- \u2022 [Any relevant weather warnings, UV index, wind conditions, etc.]
1316
-
1317
- Guidelines:
1318
- - Suggest 2-3 time-specific outdoor activities per day
1319
- - Include 1-2 indoor backup options
1320
- - For precipitation >50%, lead with indoor activities
1321
- - All activities must be specific to the location
1322
- - Include specific venues, trails, or locations
1323
- - Consider activity intensity based on temperature
1324
- - Keep descriptions concise but informative
1325
-
1326
- Maintain this exact formatting for consistency, using the emoji and section headers as shown.
1327
- \`,
1328
- });
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
+ })
1329
1598
 
1330
- const forecastSchema = z.array(
1331
- z.object({
1332
- date: z.string(),
1333
- maxTemp: z.number(),
1334
- minTemp: z.number(),
1335
- precipitationChance: z.number(),
1336
- condition: z.string(),
1337
- location: z.string(),
1338
- }),
1339
- );
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
+ }
1340
1620
 
1341
- const fetchWeather = new Step({
1621
+ const fetchWeather = createStep({
1342
1622
  id: 'fetch-weather',
1343
1623
  description: 'Fetches weather forecast for a given city',
1344
1624
  inputSchema: z.object({
1345
1625
  city: z.string().describe('The city to get the weather for'),
1346
1626
  }),
1347
1627
  outputSchema: forecastSchema,
1348
- execute: async ({ context }) => {
1349
- const triggerData = context?.getStepResult<{ city: string }>('trigger');
1350
-
1351
- if (!triggerData) {
1352
- throw new Error('Trigger data not found');
1628
+ execute: async ({ inputData }) => {
1629
+ if (!inputData) {
1630
+ throw new Error('Input data not found');
1353
1631
  }
1354
1632
 
1355
- 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\`;
1356
1634
  const geocodingResponse = await fetch(geocodingUrl);
1357
1635
  const geocodingData = (await geocodingResponse.json()) as {
1358
1636
  results: { latitude: number; longitude: number; name: string }[];
1359
1637
  };
1360
1638
 
1361
1639
  if (!geocodingData.results?.[0]) {
1362
- throw new Error(\`Location '\${triggerData.city}' not found\`);
1640
+ throw new Error(\`Location '\${inputData.city}' not found\`);
1363
1641
  }
1364
1642
 
1365
1643
  const { latitude, longitude, name } = geocodingData.results[0];
1366
1644
 
1367
- 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\`;
1368
1646
  const response = await fetch(weatherUrl);
1369
1647
  const data = (await response.json()) as {
1370
- daily: {
1371
- time: string[];
1372
- temperature_2m_max: number[];
1373
- temperature_2m_min: number[];
1374
- precipitation_probability_mean: number[];
1375
- weathercode: number[];
1376
- };
1377
- };
1648
+ current: {
1649
+ time: string
1650
+ precipitation: number
1651
+ weathercode: number
1652
+ }
1653
+ hourly: {
1654
+ precipitation_probability: number[]
1655
+ temperature_2m: number[]
1656
+ }
1657
+ }
1378
1658
 
1379
- const forecast = data.daily.time.map((date: string, index: number) => ({
1380
- date,
1381
- maxTemp: data.daily.temperature_2m_max[index],
1382
- minTemp: data.daily.temperature_2m_min[index],
1383
- precipitationChance: data.daily.precipitation_probability_mean[index],
1384
- condition: getWeatherCondition(data.daily.weathercode[index]!),
1385
- location: name,
1386
- }));
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
+ }
1387
1670
 
1388
1671
  return forecast;
1389
1672
  },
1390
1673
  });
1391
1674
 
1392
1675
 
1393
- const planActivities = new Step({
1676
+ const planActivities = createStep({
1394
1677
  id: 'plan-activities',
1395
1678
  description: 'Suggests activities based on weather conditions',
1396
- execute: async ({ context, mastra }) => {
1397
- const forecast = context?.getStepResult(fetchWeather);
1679
+ inputSchema: forecastSchema,
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
+ }
1398
1689
 
1399
- if (!forecast || forecast.length === 0) {
1400
- throw new Error('Forecast data not found');
1690
+ const agent = mastra?.getAgent('weatherAgent');
1691
+ if (!agent) {
1692
+ throw new Error('Weather agent not found');
1401
1693
  }
1402
1694
 
1403
- 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:
1404
1696
  \${JSON.stringify(forecast, null, 2)}
1405
- \`;
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.\`;
1406
1736
 
1407
1737
  const response = await agent.stream([
1408
1738
  {
@@ -1412,7 +1742,7 @@ const planActivities = new Step({
1412
1742
  ]);
1413
1743
 
1414
1744
  let activitiesText = '';
1415
-
1745
+
1416
1746
  for await (const chunk of response.textStream) {
1417
1747
  process.stdout.write(chunk);
1418
1748
  activitiesText += chunk;
@@ -1424,35 +1754,16 @@ const planActivities = new Step({
1424
1754
  },
1425
1755
  });
1426
1756
 
1427
- function getWeatherCondition(code: number): string {
1428
- const conditions: Record<number, string> = {
1429
- 0: 'Clear sky',
1430
- 1: 'Mainly clear',
1431
- 2: 'Partly cloudy',
1432
- 3: 'Overcast',
1433
- 45: 'Foggy',
1434
- 48: 'Depositing rime fog',
1435
- 51: 'Light drizzle',
1436
- 53: 'Moderate drizzle',
1437
- 55: 'Dense drizzle',
1438
- 61: 'Slight rain',
1439
- 63: 'Moderate rain',
1440
- 65: 'Heavy rain',
1441
- 71: 'Slight snow fall',
1442
- 73: 'Moderate snow fall',
1443
- 75: 'Heavy snow fall',
1444
- 95: 'Thunderstorm',
1445
- };
1446
- return conditions[code] || 'Unknown';
1447
- }
1448
-
1449
- const weatherWorkflow = new Workflow({
1450
- name: 'weather-workflow',
1451
- triggerSchema: z.object({
1757
+ const weatherWorkflow = createWorkflow({
1758
+ id: 'weather-workflow',
1759
+ inputSchema: z.object({
1452
1760
  city: z.string().describe('The city to get the weather for'),
1453
1761
  }),
1762
+ outputSchema: z.object({
1763
+ activities: z.string(),
1764
+ })
1454
1765
  })
1455
- .step(fetchWeather)
1766
+ .then(fetchWeather)
1456
1767
  .then(planActivities);
1457
1768
 
1458
1769
  weatherWorkflow.commit();
@@ -1476,7 +1787,7 @@ async function writeCodeSampleForComponents(llmprovider, component, destPath, im
1476
1787
  case "tools":
1477
1788
  return writeToolSample(destPath);
1478
1789
  case "workflows":
1479
- return writeWorkflowSample(destPath, llmprovider);
1790
+ return writeWorkflowSample(destPath);
1480
1791
  default:
1481
1792
  return "";
1482
1793
  }
@@ -1492,7 +1803,7 @@ var writeIndexFile = async ({
1492
1803
  addWorkflow
1493
1804
  }) => {
1494
1805
  const indexPath = dirPath + "/index.ts";
1495
- const destPath = path.join(indexPath);
1806
+ const destPath = path2.join(indexPath);
1496
1807
  try {
1497
1808
  await fs4.writeFile(destPath, "");
1498
1809
  const filteredExports = [
@@ -1514,10 +1825,10 @@ export const mastra = new Mastra()
1514
1825
  destPath,
1515
1826
  `
1516
1827
  import { Mastra } from '@mastra/core/mastra';
1517
- import { createLogger } from '@mastra/core/logger';
1828
+ import { PinoLogger } from '@mastra/loggers';
1518
1829
  import { LibSQLStore } from '@mastra/libsql';
1519
- ${addWorkflow ? `import { weatherWorkflow } from './workflows';` : ""}
1520
- ${addAgent ? `import { weatherAgent } from './agents';` : ""}
1830
+ ${addWorkflow ? `import { weatherWorkflow } from './workflows/weather-workflow';` : ""}
1831
+ ${addAgent ? `import { weatherAgent } from './agents/weather-agent';` : ""}
1521
1832
 
1522
1833
  export const mastra = new Mastra({
1523
1834
  ${filteredExports.join("\n ")}
@@ -1525,7 +1836,7 @@ export const mastra = new Mastra({
1525
1836
  // stores telemetry, evals, ... into memory storage, if it needs to persist, change to file:../mastra.db
1526
1837
  url: ":memory:",
1527
1838
  }),
1528
- logger: createLogger({
1839
+ logger: new PinoLogger({
1529
1840
  name: 'Mastra',
1530
1841
  level: 'info',
1531
1842
  }),
@@ -1561,11 +1872,13 @@ var writeAPIKey = async ({
1561
1872
  apiKey = "your-api-key"
1562
1873
  }) => {
1563
1874
  const key = await getAPIKey(provider);
1564
- 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`);
1565
1878
  };
1566
1879
  var createMastraDir = async (directory) => {
1567
1880
  let dir = directory.trim().split("/").filter((item) => item !== "");
1568
- const dirPath = path.join(process.cwd(), ...dir, "mastra");
1881
+ const dirPath = path2.join(process.cwd(), ...dir, "mastra");
1569
1882
  try {
1570
1883
  await fs4.access(dirPath);
1571
1884
  return { ok: false };
@@ -1575,7 +1888,7 @@ var createMastraDir = async (directory) => {
1575
1888
  }
1576
1889
  };
1577
1890
  var writeCodeSample = async (dirPath, component, llmProvider, importComponents) => {
1578
- const destPath = dirPath + `/${component}/index.ts`;
1891
+ const destPath = dirPath + `/${component}/weather-${component.slice(0, -1)}.ts`;
1579
1892
  try {
1580
1893
  await writeCodeSampleForComponents(llmProvider, component, destPath, importComponents);
1581
1894
  } catch (err) {
@@ -1583,29 +1896,15 @@ var writeCodeSample = async (dirPath, component, llmProvider, importComponents)
1583
1896
  }
1584
1897
  };
1585
1898
  var interactivePrompt = async () => {
1586
- pe(color2.inverse("Mastra Init"));
1587
- const mastraProject = await ve(
1899
+ Ie(color2.inverse(" Mastra Init "));
1900
+ const mastraProject = await Ce(
1588
1901
  {
1589
- directory: () => ae({
1902
+ directory: () => he({
1590
1903
  message: "Where should we create the Mastra files? (default: src/)",
1591
1904
  placeholder: "src/",
1592
1905
  defaultValue: "src/"
1593
1906
  }),
1594
- components: () => $e({
1595
- message: "Choose components to install:",
1596
- options: [
1597
- { value: "agents", label: "Agents", hint: "recommended" },
1598
- {
1599
- value: "workflows",
1600
- label: "Workflows"
1601
- }
1602
- ]
1603
- }),
1604
- shouldAddTools: () => ce({
1605
- message: "Add tools?",
1606
- initialValue: false
1607
- }),
1608
- llmProvider: () => le({
1907
+ llmProvider: () => ve({
1609
1908
  message: "Select default provider:",
1610
1909
  options: [
1611
1910
  { value: "openai", label: "OpenAI", hint: "recommended" },
@@ -1616,7 +1915,7 @@ var interactivePrompt = async () => {
1616
1915
  ]
1617
1916
  }),
1618
1917
  llmApiKey: async ({ results: { llmProvider } }) => {
1619
- const keyChoice = await le({
1918
+ const keyChoice = await ve({
1620
1919
  message: `Enter your ${llmProvider} API key?`,
1621
1920
  options: [
1622
1921
  { value: "skip", label: "Skip for now", hint: "default" },
@@ -1625,21 +1924,18 @@ var interactivePrompt = async () => {
1625
1924
  initialValue: "skip"
1626
1925
  });
1627
1926
  if (keyChoice === "enter") {
1628
- return ae({
1927
+ return he({
1629
1928
  message: "Enter your API key:",
1630
1929
  placeholder: "sk-..."
1631
1930
  });
1632
1931
  }
1633
1932
  return void 0;
1634
1933
  },
1635
- addExample: () => ce({
1636
- message: "Add example",
1637
- initialValue: false
1638
- }),
1639
1934
  configureEditorWithDocsMCP: async () => {
1640
1935
  const windsurfIsAlreadyInstalled = await globalMCPIsAlreadyInstalled(`windsurf`);
1641
1936
  const cursorIsAlreadyInstalled = await globalMCPIsAlreadyInstalled(`cursor`);
1642
- const editor = await le({
1937
+ const vscodeIsAlreadyInstalled = await globalMCPIsAlreadyInstalled(`vscode`);
1938
+ const editor = await ve({
1643
1939
  message: `Make your AI IDE into a Mastra expert? (installs Mastra docs MCP server)`,
1644
1940
  options: [
1645
1941
  { value: "skip", label: "Skip for now", hint: "default" },
@@ -1657,24 +1953,34 @@ var interactivePrompt = async () => {
1657
1953
  value: "windsurf",
1658
1954
  label: "Windsurf",
1659
1955
  hint: windsurfIsAlreadyInstalled ? `Already installed` : void 0
1956
+ },
1957
+ {
1958
+ value: "vscode",
1959
+ label: "VSCode",
1960
+ hint: vscodeIsAlreadyInstalled ? `Already installed` : void 0
1660
1961
  }
1661
1962
  ]
1662
1963
  });
1663
1964
  if (editor === `skip`) return void 0;
1664
1965
  if (editor === `windsurf` && windsurfIsAlreadyInstalled) {
1665
- v.message(`
1966
+ M.message(`
1666
1967
  Windsurf is already installed, skipping.`);
1667
1968
  return void 0;
1668
1969
  }
1970
+ if (editor === `vscode` && vscodeIsAlreadyInstalled) {
1971
+ M.message(`
1972
+ VSCode is already installed, skipping.`);
1973
+ return void 0;
1974
+ }
1669
1975
  if (editor === `cursor`) {
1670
- v.message(
1976
+ M.message(
1671
1977
  `
1672
1978
  Note: you will need to go into Cursor Settings -> MCP Settings and manually enable the installed Mastra MCP server.
1673
1979
  `
1674
1980
  );
1675
1981
  }
1676
1982
  if (editor === `cursor-global`) {
1677
- const confirm2 = await le({
1983
+ const confirm2 = await ve({
1678
1984
  message: `Global install will add/update ${cursorGlobalMCPConfigPath} and make the Mastra docs MCP server available in all your Cursor projects. Continue?`,
1679
1985
  options: [
1680
1986
  { value: "yes", label: "Yes, I understand" },
@@ -1686,7 +1992,7 @@ Note: you will need to go into Cursor Settings -> MCP Settings and manually enab
1686
1992
  }
1687
1993
  }
1688
1994
  if (editor === `windsurf`) {
1689
- const confirm2 = await le({
1995
+ const confirm2 = await ve({
1690
1996
  message: `Windsurf only supports a global MCP config (at ${windsurfGlobalMCPConfigPath}) is it ok to add/update that global config?
1691
1997
  This means the Mastra docs MCP server will be available in all your Windsurf projects.`,
1692
1998
  options: [
@@ -1703,16 +2009,14 @@ This means the Mastra docs MCP server will be available in all your Windsurf pro
1703
2009
  },
1704
2010
  {
1705
2011
  onCancel: () => {
1706
- he("Operation cancelled.");
2012
+ xe("Operation cancelled.");
1707
2013
  process.exit(0);
1708
2014
  }
1709
2015
  }
1710
2016
  );
1711
- const { shouldAddTools, components, ...rest } = mastraProject;
1712
- const mastraComponents = shouldAddTools ? [...components, "tools"] : components;
1713
- return { ...rest, components: mastraComponents };
2017
+ return mastraProject;
1714
2018
  };
1715
- var s = _();
2019
+ var s = Y();
1716
2020
  var exec2 = util.promisify(child_process.exec);
1717
2021
  var init = async ({
1718
2022
  directory,
@@ -1755,6 +2059,10 @@ var init = async ({
1755
2059
  if (needsMemory) {
1756
2060
  await depService.installPackages(["@mastra/memory"]);
1757
2061
  }
2062
+ const needsLoggers = await depService.checkDependencies(["@mastra/loggers"]) !== `ok`;
2063
+ if (needsLoggers) {
2064
+ await depService.installPackages(["@mastra/loggers"]);
2065
+ }
1758
2066
  }
1759
2067
  const key = await getAPIKey(llmProvider || "openai");
1760
2068
  const aiSdkPackage = getAISDKPackage(llmProvider);
@@ -1770,14 +2078,14 @@ var init = async ({
1770
2078
  }
1771
2079
  s.stop();
1772
2080
  if (!llmApiKey) {
1773
- me(`
2081
+ Me(`
1774
2082
  ${color2.green("Mastra initialized successfully!")}
1775
2083
 
1776
2084
  Add your ${color2.cyan(key)} as an environment variable
1777
- in your ${color2.cyan(".env.development")} file
2085
+ in your ${color2.cyan(".env")} file
1778
2086
  `);
1779
2087
  } else {
1780
- me(`
2088
+ Me(`
1781
2089
  ${color2.green("Mastra initialized successfully!")}
1782
2090
  `);
1783
2091
  }
@@ -1811,7 +2119,6 @@ var execWithTimeout = async (command, timeoutMs) => {
1811
2119
  throw error;
1812
2120
  }
1813
2121
  } catch (error) {
1814
- console.error(error);
1815
2122
  throw error;
1816
2123
  }
1817
2124
  };
@@ -1823,11 +2130,18 @@ async function installMastraDependency(pm, dependency, versionTag, isDev, timeou
1823
2130
  try {
1824
2131
  await execWithTimeout(`${pm} ${installCommand} ${dependency}${versionTag}`, timeout);
1825
2132
  } catch (err) {
1826
- console.log("err", err);
1827
2133
  if (versionTag === "@latest") {
1828
- throw err;
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
+ );
1829
2144
  }
1830
- await execWithTimeout(`${pm} ${installCommand} ${dependency}@latest`, timeout);
1831
2145
  }
1832
2146
  }
1833
2147
  var createMastraProject = async ({
@@ -1835,45 +2149,55 @@ var createMastraProject = async ({
1835
2149
  createVersionTag,
1836
2150
  timeout
1837
2151
  }) => {
1838
- pe(color2.inverse("Mastra Create"));
1839
- const projectName = name ?? await ae({
2152
+ Ie(color2.inverse(" Mastra Create "));
2153
+ const projectName = name ?? await he({
1840
2154
  message: "What do you want to name your project?",
1841
2155
  placeholder: "my-mastra-app",
1842
2156
  defaultValue: "my-mastra-app"
1843
2157
  });
1844
- if (lD(projectName)) {
1845
- he("Operation cancelled");
2158
+ if (pD(projectName)) {
2159
+ xe("Operation cancelled");
1846
2160
  process.exit(0);
1847
2161
  }
1848
- const s2 = _();
1849
- s2.start("Creating project");
2162
+ const s2 = Y();
1850
2163
  try {
1851
- await fs4.mkdir(projectName);
1852
- } catch (error) {
1853
- if (error instanceof Error && "code" in error && error.code === "EEXIST") {
1854
- s2.stop(
1855
- `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"}`
1856
2174
  );
1857
- process.exit(1);
1858
2175
  }
1859
- throw error;
1860
- }
1861
- process.chdir(projectName);
1862
- const pm = getPackageManager();
1863
- const installCommand = getPackageManagerInstallCommand(pm);
1864
- s2.message("Creating project");
1865
- await exec3(`npm init -y`);
1866
- await exec3(`npm pkg set type="module"`);
1867
- const depsService = new DepsService();
1868
- await depsService.addScriptsToPackageJson({
1869
- dev: "mastra dev",
1870
- build: "mastra build"
1871
- });
1872
- s2.stop("Project created");
1873
- s2.start(`Installing ${pm} dependencies`);
1874
- await exec3(`${pm} ${installCommand} zod`);
1875
- await exec3(`${pm} ${installCommand} typescript @types/node --save-dev`);
1876
- 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 '{
1877
2201
  "compilerOptions": {
1878
2202
  "target": "ES2022",
1879
2203
  "module": "ES2022",
@@ -1889,29 +2213,54 @@ var createMastraProject = async ({
1889
2213
  "src/**/*"
1890
2214
  ]
1891
2215
  }' > tsconfig.json`);
1892
- s2.stop(`${pm} dependencies installed`);
1893
- s2.start("Installing mastra");
1894
- const versionTag = createVersionTag ? `@${createVersionTag}` : "@latest";
1895
- await installMastraDependency(pm, "mastra", versionTag, true, timeout);
1896
- s2.stop("mastra installed");
1897
- s2.start("Installing dependencies");
1898
- await installMastraDependency(pm, "@mastra/core", versionTag, false, timeout);
1899
- await installMastraDependency(pm, "@mastra/libsql", versionTag, false, timeout);
1900
- await installMastraDependency(pm, "@mastra/memory", versionTag, false, timeout);
1901
- s2.stop("Dependencies installed");
1902
- s2.start("Adding .gitignore");
1903
- await exec3(`echo output.txt >> .gitignore`);
1904
- await exec3(`echo node_modules >> .gitignore`);
1905
- await exec3(`echo dist >> .gitignore`);
1906
- await exec3(`echo .mastra >> .gitignore`);
1907
- await exec3(`echo .env.development >> .gitignore`);
1908
- await exec3(`echo .env >> .gitignore`);
1909
- await exec3(`echo *.db >> .gitignore`);
1910
- await exec3(`echo *.db-* >> .gitignore`);
1911
- s2.stop(".gitignore added");
1912
- ge("Project created successfully");
1913
- console.log("");
1914
- 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
+ }
1915
2264
  };
1916
2265
  var create = async (args2) => {
1917
2266
  const { projectName } = await createMastraProject({
@@ -1924,7 +2273,9 @@ var create = async (args2) => {
1924
2273
  const result = await interactivePrompt();
1925
2274
  await init({
1926
2275
  ...result,
1927
- llmApiKey: result?.llmApiKey
2276
+ llmApiKey: result?.llmApiKey,
2277
+ components: ["agents", "tools", "workflows"],
2278
+ addExample: true
1928
2279
  });
1929
2280
  postCreate({ projectName });
1930
2281
  return;
@@ -1935,23 +2286,25 @@ var create = async (args2) => {
1935
2286
  components,
1936
2287
  llmProvider,
1937
2288
  addExample,
1938
- llmApiKey
2289
+ llmApiKey,
2290
+ configureEditorWithDocsMCP: args2.mcpServer
1939
2291
  });
1940
2292
  postCreate({ projectName });
1941
2293
  };
1942
2294
  var postCreate = ({ projectName }) => {
1943
- ge(`
2295
+ const packageManager = getPackageManager();
2296
+ Se(`
1944
2297
  ${color2.green("To start your project:")}
1945
2298
 
1946
2299
  ${color2.cyan("cd")} ${projectName}
1947
- ${color2.cyan("npm run dev")}
2300
+ ${color2.cyan(`${packageManager} run dev`)}
1948
2301
  `);
1949
2302
  };
1950
2303
 
1951
2304
  async function getPackageVersion() {
1952
2305
  const __filename = fileURLToPath(import.meta.url);
1953
2306
  const __dirname = dirname(__filename);
1954
- const pkgJsonPath = path.join(__dirname, "..", "package.json");
2307
+ const pkgJsonPath = path2.join(__dirname, "..", "package.json");
1955
2308
  const content = await fsExtra.readJSON(pkgJsonPath);
1956
2309
  return content.version;
1957
2310
  }
@@ -1960,7 +2313,7 @@ async function getCreateVersionTag() {
1960
2313
  const pkgPath = fileURLToPath(import.meta.resolve("create-mastra/package.json"));
1961
2314
  const json = await fsExtra.readJSON(pkgPath);
1962
2315
  const { stdout } = await execa("npm", ["dist-tag", "create-mastra"]);
1963
- const tagLine = stdout.split("\n").find((distLine) => distLine.includes(`: ${json.version}`));
2316
+ const tagLine = stdout.split("\n").find((distLine) => distLine.endsWith(`: ${json.version}`));
1964
2317
  const tag = tagLine ? tagLine.split(":")[0].trim() : "latest";
1965
2318
  return tag;
1966
2319
  } catch {
@@ -1989,16 +2342,18 @@ program.version(`${version}`, "-v, --version").description(`create-mastra ${vers
1989
2342
  program.name("create-mastra").description("Create a new Mastra project").argument("[project-name]", "Directory name of the project").option(
1990
2343
  "-p, --project-name <string>",
1991
2344
  "Project name that will be used in package.json and as the project directory name."
1992
- ).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, 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/)").action(async (projectNameArg, args) => {
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) => {
1993
2346
  const projectName = projectNameArg || args.projectName;
1994
2347
  const timeout = args?.timeout ? args?.timeout === true ? 6e4 : parseInt(args?.timeout, 10) : void 0;
1995
2348
  if (args.default) {
1996
2349
  await create({
1997
2350
  components: ["agents", "tools", "workflows"],
1998
2351
  llmProvider: "openai",
1999
- addExample: false,
2352
+ addExample: true,
2000
2353
  createVersionTag,
2001
- timeout
2354
+ timeout,
2355
+ mcpServer: args.mcp,
2356
+ directory: "src/"
2002
2357
  });
2003
2358
  return;
2004
2359
  }
@@ -2010,7 +2365,8 @@ program.name("create-mastra").description("Create a new Mastra project").argumen
2010
2365
  createVersionTag,
2011
2366
  timeout,
2012
2367
  projectName,
2013
- directory: args.dir
2368
+ directory: args.dir,
2369
+ mcpServer: args.mcp
2014
2370
  });
2015
2371
  });
2016
2372
  program.parse(process.argv);