create-mastra 0.0.0-taofeeqInngest-20250603090617 → 0.0.0-tool-list-type-20250910134057

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
@@ -1,28 +1,33 @@
1
1
  #! /usr/bin/env node
2
2
  import { Command } from 'commander';
3
3
  import { randomUUID } from 'node:crypto';
4
- import * as fs3__default from 'node:fs';
5
- import fs3__default__default, { existsSync, readFileSync, writeFileSync } from 'node:fs';
4
+ import * as fs4__default from 'node:fs';
5
+ import fs4__default__default, { existsSync, readFileSync, writeFileSync } from 'node:fs';
6
6
  import os from 'node:os';
7
- import path2, { dirname } from 'node:path';
7
+ import path3, { 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';
15
+ import fs from 'node:fs/promises';
14
16
  import child_process from 'node:child_process';
15
- import util from 'node:util';
16
- import fs4 from 'node:fs/promises';
17
- import { execa } from 'execa';
18
- import fsExtra3, { readJSON, ensureFile, writeJSON } from 'fs-extra/esm';
19
- import prettier from 'prettier';
17
+ import tty from 'node:tty';
20
18
  import pino from 'pino';
21
19
  import pretty from 'pino-pretty';
20
+ import { execa } from 'execa';
21
+ import fsExtra2, { readJSON, ensureFile, writeJSON } from 'fs-extra/esm';
22
+ import prettier from 'prettier';
22
23
  import fsExtra from 'fs-extra';
23
24
 
24
25
  var __filename = fileURLToPath(import.meta.url);
25
- var __dirname = path2.dirname(__filename);
26
+ var __dirname = path3.dirname(__filename);
27
+ var analyticsInstance = null;
28
+ function getAnalytics() {
29
+ return analyticsInstance;
30
+ }
26
31
  var PosthogAnalytics = class {
27
32
  sessionId;
28
33
  client;
@@ -34,7 +39,7 @@ var PosthogAnalytics = class {
34
39
  host = "https://app.posthog.com"
35
40
  }) {
36
41
  this.version = version;
37
- const cliConfigPath = path2.join(__dirname, "mastra-cli.json");
42
+ const cliConfigPath = path3.join(__dirname, "mastra-cli.json");
38
43
  if (existsSync(cliConfigPath)) {
39
44
  try {
40
45
  const { distinctId, sessionId } = JSON.parse(readFileSync(cliConfigPath, "utf-8"));
@@ -62,7 +67,7 @@ var PosthogAnalytics = class {
62
67
  }
63
68
  writeCliConfig({ distinctId, sessionId }) {
64
69
  try {
65
- writeFileSync(path2.join(__dirname, "mastra-cli.json"), JSON.stringify({ distinctId, sessionId }));
70
+ writeFileSync(path3.join(__dirname, "mastra-cli.json"), JSON.stringify({ distinctId, sessionId }));
66
71
  } catch {
67
72
  }
68
73
  }
@@ -112,6 +117,22 @@ var PosthogAnalytics = class {
112
117
  }
113
118
  });
114
119
  }
120
+ trackEvent(eventName, properties) {
121
+ try {
122
+ if (!this.client) {
123
+ return;
124
+ }
125
+ this.client.capture({
126
+ distinctId: this.distinctId,
127
+ event: eventName,
128
+ properties: {
129
+ ...this.getSystemProperties(),
130
+ ...properties
131
+ }
132
+ });
133
+ } catch {
134
+ }
135
+ }
115
136
  trackCommand(options) {
116
137
  try {
117
138
  if (!this.client) {
@@ -348,72 +369,58 @@ function requirePicocolors () {
348
369
  var picocolorsExports = /*@__PURE__*/ requirePicocolors();
349
370
  var color2 = /*@__PURE__*/getDefaultExportFromCjs(picocolorsExports);
350
371
 
351
- 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(`
352
- `)];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]===`
353
- `?(C&&(t+=L("")),s&&o&&(t+=N(o))):h===`
354
- `&&(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,`
372
+ 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(`
373
+ `)];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]===`
374
+ `?(i&&(F+=K$1("")),s&&o&&(F+=z(o))):a===`
375
+ `&&(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,`
355
376
  `).split(`
356
- `).map(t=>oD(t,u,F)).join(`
357
- `)}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(`
358
- `),t=u.split(`
359
- `),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(`
360
- `),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(`
361
- `).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(`
362
- `);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(`
363
- `).slice(t);this.output.write(s.join(`
364
- `)),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();}}
365
-
366
- 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)}
367
- ${y(this.state)} ${s.message}
368
- `,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()}
369
- ${color2.yellow(a)} ${i}
370
- ${color2.yellow($)} ${color2.yellow(this.error)}
371
- `;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()?`
372
- `+color2.gray(a):""}`;default:return `${n}${color2.cyan(a)} ${i}
373
- ${color2.cyan($)}
374
- `}}}).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)}
375
- ${y(this.state)} ${s.message}
376
- `,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))}
377
- ${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}`}
378
- ${color2.cyan($)}
379
- `}}}).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)}
380
- ${y(this.state)} ${s.message}
381
- `;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")}
382
- ${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(`
383
- ${color2.cyan(a)} `)}
384
- ${color2.cyan($)}
385
- `}}}).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.
386
- ${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)}
387
- ${y(this.state)} ${s.message}
388
- `;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}
389
- ${color2.gray(a)}`:""}`}case "error":{const r=this.error.split(`
390
- `).map((o,c)=>c===0?`${color2.yellow($)} ${color2.yellow(o)}`:` ${o}`).join(`
391
- `);return t+color2.yellow(a)+" "+E({options:this.options,cursor:this.cursor,maxItems:s.maxItems,style:i}).join(`
392
- ${color2.yellow(a)} `)+`
393
- `+r+`
394
- `}default:return `${t}${color2.cyan(a)} ${E({options:this.options,cursor:this.cursor,maxItems:s.maxItems,style:i}).join(`
395
- ${color2.cyan(a)} `)}
396
- ${color2.cyan($)}
397
- `}}}).prompt()},R=s=>s.replace(ye(),""),me=(s="",n="")=>{const t=`
398
- ${s}
377
+ `).map(F=>lD(F,u,t)).join(`
378
+ `)}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(`
379
+ `),F=u.split(`
380
+ `),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(`
381
+ `),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(`
382
+ `).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(`
383
+ `);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(`
384
+ `).slice(F);this.output.write(s.join(`
385
+ `)),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);});}}
386
+
387
+ 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)}
388
+ ${b(this.state)} ${t.message}
389
+ `,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()}
390
+ ${color2.yellow(o)} ${i}
391
+ ${color2.yellow(d)} ${color2.yellow(this.error)}
392
+ `;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()?`
393
+ ${color2.gray(o)}`:""}`;default:return `${n}${color2.cyan(o)} ${i}
394
+ ${color2.cyan(d)}
395
+ `}}}).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)}
396
+ ${b(this.state)} ${t.message}
397
+ `;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")}
398
+ ${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(`
399
+ ${color2.cyan(o)} `)}
400
+ ${color2.cyan(d)}
401
+ `}}}).prompt()},Me=(t="",n="")=>{const r=`
402
+ ${t}
399
403
  `.split(`
400
- `),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(`
401
- `);process.stdout.write(`${color2.gray(a)}
402
- ${color2.green(M)} ${color2.reset(n)} ${color2.gray(G.repeat(Math.max(r-i-1,1))+H)}
403
- ${o}
404
- ${color2.gray(ee+G.repeat(r+2)+te)}
405
- `);},he=(s="")=>{process.stdout.write(`${color2.gray($)} ${color2.red(s)}
406
-
407
- `);},pe=(s="")=>{process.stdout.write(`${color2.gray(Q)} ${s}
408
- `);},ge=(s="")=>{process.stdout.write(`${color2.gray(a)}
409
- ${color2.gray($)} ${s}
410
-
411
- `);},v={message:(s="",{symbol:n=color2.gray(a)}={})=>{const t=[`${color2.gray(a)}`];if(s){const[i,...r]=s.split(`
412
- `);t.push(`${n} ${i}`,...r.map(o=>`${color2.gray(a)} ${o}`));}process.stdout.write(`${t.join(`
404
+ `),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(`
405
+ `);process.stdout.write(`${color2.gray(o)}
406
+ ${color2.green(C)} ${color2.reset(n)} ${color2.gray(_.repeat(Math.max(s-i-1,1))+me)}
407
+ ${c}
408
+ ${color2.gray(de+_.repeat(s+2)+pe)}
409
+ `);},xe=(t="")=>{process.stdout.write(`${color2.gray(d)} ${color2.red(t)}
410
+
411
+ `);},Ie=(t="")=>{process.stdout.write(`${color2.gray(ue)} ${t}
412
+ `);},Se=(t="")=>{process.stdout.write(`${color2.gray(o)}
413
+ ${color2.gray(d)} ${t}
414
+
415
+ `);},M={message:(t="",{symbol:n=color2.gray(o)}={})=>{const r=[`${color2.gray(o)}`];if(t){const[i,...s]=t.split(`
416
+ `);r.push(`${n} ${i}`,...s.map(c=>`${color2.gray(o)} ${c}`));}process.stdout.write(`${r.join(`
413
417
  `)}
414
- `);},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)}
415
- `);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}
416
- `),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};
418
+ `);},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(`
419
+ `);const m=$.split(`
420
+ `);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)}
421
+ `);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)}
422
+ `):process.stdout.write(`${w} ${l}
423
+ `),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};
417
424
 
418
425
  var shellQuote$1 = {};
419
426
 
@@ -432,8 +439,8 @@ function requireQuote () {
432
439
  if (s && typeof s === 'object') {
433
440
  return s.op.replace(/(.)/g, '\\$1');
434
441
  }
435
- if ((/["\s]/).test(s) && !(/'/).test(s)) {
436
- return "'" + s.replace(/(['\\])/g, '\\$1') + "'";
442
+ if ((/["\s\\]/).test(s) && !(/'/).test(s)) {
443
+ return "'" + s.replace(/(['])/g, '\\$1') + "'";
437
444
  }
438
445
  if ((/["'\s]/).test(s)) {
439
446
  return '"' + s.replace(/(["\\$`!])/g, '\\$1') + '"';
@@ -540,7 +547,7 @@ function requireParse () {
540
547
  return matches.map(function (match) {
541
548
  var s = match[0];
542
549
  if (!s || commented) {
543
- return void 0;
550
+ return void undefined;
544
551
  }
545
552
  if (controlRE.test(s)) {
546
553
  return { op: s };
@@ -825,18 +832,20 @@ var yoctocolors = /*#__PURE__*/Object.freeze({
825
832
  yellowBright: yellowBright
826
833
  });
827
834
 
828
- const isUnicodeSupported = h.platform !== 'win32' || Boolean(h.env.WT_SESSION);
835
+ const isUnicodeSupported = y$1.platform !== 'win32'
836
+ || Boolean(y$1.env.WT_SESSION) // Windows Terminal
837
+ || y$1.env.TERM_PROGRAM === 'vscode';
829
838
 
830
839
  const isInteractive = stream => Boolean(
831
840
  stream.isTTY
832
- && h.env.TERM !== 'dumb'
833
- && !('CI' in h.env),
841
+ && y$1.env.TERM !== 'dumb'
842
+ && !('CI' in y$1.env),
834
843
  );
835
844
 
836
845
  const infoSymbol = blue(isUnicodeSupported ? 'ℹ' : 'i');
837
846
  const successSymbol = green(isUnicodeSupported ? '✔' : '√');
838
847
  const warningSymbol = yellow(isUnicodeSupported ? '⚠' : '‼');
839
- const errorSymbol = red(isUnicodeSupported ? '✖️' : '×');
848
+ const errorSymbol = red(isUnicodeSupported ? '' : '×');
840
849
 
841
850
  const defaultSpinner = {
842
851
  frames: isUnicodeSupported
@@ -879,7 +888,7 @@ class YoctoSpinner {
879
888
  this.#frames = spinner.frames;
880
889
  this.#interval = spinner.interval;
881
890
  this.#text = options.text ?? '';
882
- this.#stream = options.stream ?? h.stderr;
891
+ this.#stream = options.stream ?? y$1.stderr;
883
892
  this.#color = options.color ?? 'cyan';
884
893
  this.#isInteractive = isInteractive(this.#stream);
885
894
  this.#exitHandlerBound = this.#exitHandler.bind(this);
@@ -951,8 +960,8 @@ class YoctoSpinner {
951
960
  return this.#text;
952
961
  }
953
962
 
954
- set text(value = '') {
955
- this.#text = value;
963
+ set text(value) {
964
+ this.#text = value ?? '';
956
965
  this.#render();
957
966
  }
958
967
 
@@ -1016,7 +1025,7 @@ class YoctoSpinner {
1016
1025
 
1017
1026
  #lineCount(text) {
1018
1027
  const width = this.#stream.columns ?? 80;
1019
- const lines = text.split('\n');
1028
+ const lines = stripVTControlCharacters(text).split('\n');
1020
1029
 
1021
1030
  let lineCount = 0;
1022
1031
  for (const line of lines) {
@@ -1039,13 +1048,13 @@ class YoctoSpinner {
1039
1048
  }
1040
1049
 
1041
1050
  #subscribeToProcessEvents() {
1042
- h.once('SIGINT', this.#exitHandlerBound);
1043
- h.once('SIGTERM', this.#exitHandlerBound);
1051
+ y$1.once('SIGINT', this.#exitHandlerBound);
1052
+ y$1.once('SIGTERM', this.#exitHandlerBound);
1044
1053
  }
1045
1054
 
1046
1055
  #unsubscribeFromProcessEvents() {
1047
- h.off('SIGINT', this.#exitHandlerBound);
1048
- h.off('SIGTERM', this.#exitHandlerBound);
1056
+ y$1.off('SIGINT', this.#exitHandlerBound);
1057
+ y$1.off('SIGTERM', this.#exitHandlerBound);
1049
1058
  }
1050
1059
 
1051
1060
  #exitHandler(signal) {
@@ -1056,7 +1065,7 @@ class YoctoSpinner {
1056
1065
  // SIGINT: 128 + 2
1057
1066
  // SIGTERM: 128 + 15
1058
1067
  const exitCode = signal === 'SIGINT' ? 130 : (signal === 'SIGTERM' ? 143 : 1);
1059
- h.exit(exitCode);
1068
+ y$1.exit(exitCode);
1060
1069
  }
1061
1070
  }
1062
1071
 
@@ -1079,17 +1088,40 @@ var MastraLogger = class {
1079
1088
  getTransports() {
1080
1089
  return this.transports;
1081
1090
  }
1082
- async getLogs(transportId) {
1091
+ trackException(_error) {
1092
+ }
1093
+ async getLogs(transportId, params) {
1083
1094
  if (!transportId || !this.transports.has(transportId)) {
1084
- return [];
1095
+ return { logs: [], total: 0, page: params?.page ?? 1, perPage: params?.perPage ?? 100, hasMore: false };
1085
1096
  }
1086
- return this.transports.get(transportId).getLogs() ?? [];
1097
+ return this.transports.get(transportId).getLogs(params) ?? {
1098
+ logs: [],
1099
+ total: 0,
1100
+ page: params?.page ?? 1,
1101
+ perPage: params?.perPage ?? 100,
1102
+ hasMore: false
1103
+ };
1087
1104
  }
1088
- async getLogsByRunId({ transportId, runId }) {
1105
+ async getLogsByRunId({
1106
+ transportId,
1107
+ runId,
1108
+ fromDate,
1109
+ toDate,
1110
+ logLevel,
1111
+ filters,
1112
+ page,
1113
+ perPage
1114
+ }) {
1089
1115
  if (!transportId || !this.transports.has(transportId) || !runId) {
1090
- return [];
1116
+ return { logs: [], total: 0, page: page ?? 1, perPage: perPage ?? 100, hasMore: false };
1091
1117
  }
1092
- return this.transports.get(transportId).getLogsByRunId({ runId }) ?? [];
1118
+ return this.transports.get(transportId).getLogsByRunId({ runId, fromDate, toDate, logLevel, filters, page, perPage }) ?? {
1119
+ logs: [],
1120
+ total: 0,
1121
+ page: page ?? 1,
1122
+ perPage: perPage ?? 100,
1123
+ hasMore: false
1124
+ };
1093
1125
  }
1094
1126
  };
1095
1127
 
@@ -1113,9 +1145,7 @@ var PinoLogger = class extends MastraLogger {
1113
1145
  {
1114
1146
  name: options.name || "app",
1115
1147
  level: options.level || LogLevel.INFO,
1116
- formatters: {
1117
- level: (label) => ({ level: label })
1118
- }
1148
+ formatters: options.formatters
1119
1149
  },
1120
1150
  options.overrideDefaultTransports ? options?.transports?.default : transportsAry.length === 0 ? prettyStream : pino.multistream([
1121
1151
  ...transportsAry.map(([, transport]) => ({
@@ -1143,6 +1173,197 @@ var PinoLogger = class extends MastraLogger {
1143
1173
  }
1144
1174
  };
1145
1175
 
1176
+ function getPackageManager() {
1177
+ const userAgent = process.env.npm_config_user_agent || "";
1178
+ const execPath = process.env.npm_execpath || "";
1179
+ if (userAgent.includes("yarn")) {
1180
+ return "yarn";
1181
+ }
1182
+ if (userAgent.includes("pnpm")) {
1183
+ return "pnpm";
1184
+ }
1185
+ if (userAgent.includes("npm")) {
1186
+ return "npm";
1187
+ }
1188
+ if (execPath.includes("yarn")) {
1189
+ return "yarn";
1190
+ }
1191
+ if (execPath.includes("pnpm")) {
1192
+ return "pnpm";
1193
+ }
1194
+ if (execPath.includes("npm")) {
1195
+ return "npm";
1196
+ }
1197
+ return "npm";
1198
+ }
1199
+ var logger = new PinoLogger({
1200
+ name: "Mastra CLI",
1201
+ level: "info"
1202
+ });
1203
+ var exec = util.promisify(child_process.exec);
1204
+ async function cloneTemplate(options) {
1205
+ const { template, projectName, targetDir } = options;
1206
+ const projectPath = targetDir ? path3.resolve(targetDir, projectName) : path3.resolve(projectName);
1207
+ const spinner5 = yoctoSpinner({ text: `Cloning template "${template.title}"...` }).start();
1208
+ try {
1209
+ if (await directoryExists(projectPath)) {
1210
+ spinner5.error(`Directory ${projectName} already exists`);
1211
+ throw new Error(`Directory ${projectName} already exists`);
1212
+ }
1213
+ await cloneRepositoryWithoutGit(template.githubUrl, projectPath);
1214
+ await updatePackageJson(projectPath, projectName);
1215
+ const envExamplePath = path3.join(projectPath, ".env.example");
1216
+ if (await fileExists(envExamplePath)) {
1217
+ await fs.copyFile(envExamplePath, path3.join(projectPath, ".env"));
1218
+ }
1219
+ spinner5.success(`Template "${template.title}" cloned successfully to ${projectName}`);
1220
+ return projectPath;
1221
+ } catch (error) {
1222
+ spinner5.error(`Failed to clone template: ${error instanceof Error ? error.message : "Unknown error"}`);
1223
+ throw error;
1224
+ }
1225
+ }
1226
+ async function directoryExists(dirPath) {
1227
+ try {
1228
+ const stat = await fs.stat(dirPath);
1229
+ return stat.isDirectory();
1230
+ } catch {
1231
+ return false;
1232
+ }
1233
+ }
1234
+ async function fileExists(filePath) {
1235
+ try {
1236
+ const stat = await fs.stat(filePath);
1237
+ return stat.isFile();
1238
+ } catch {
1239
+ return false;
1240
+ }
1241
+ }
1242
+ async function cloneRepositoryWithoutGit(repoUrl, targetPath) {
1243
+ await fs.mkdir(targetPath, { recursive: true });
1244
+ try {
1245
+ const degitRepo = repoUrl.replace("https://github.com/", "");
1246
+ const degitCommand = shellQuote.quote(["npx", "degit", degitRepo, targetPath]);
1247
+ await exec(degitCommand, {
1248
+ cwd: process.cwd()
1249
+ });
1250
+ } catch {
1251
+ try {
1252
+ const gitCommand = shellQuote.quote(["git", "clone", repoUrl, targetPath]);
1253
+ await exec(gitCommand, {
1254
+ cwd: process.cwd()
1255
+ });
1256
+ const gitDir = path3.join(targetPath, ".git");
1257
+ if (await directoryExists(gitDir)) {
1258
+ await fs.rm(gitDir, { recursive: true, force: true });
1259
+ }
1260
+ } catch (gitError) {
1261
+ throw new Error(`Failed to clone repository: ${gitError instanceof Error ? gitError.message : "Unknown error"}`);
1262
+ }
1263
+ }
1264
+ }
1265
+ async function updatePackageJson(projectPath, projectName) {
1266
+ const packageJsonPath = path3.join(projectPath, "package.json");
1267
+ try {
1268
+ const packageJsonContent = await fs.readFile(packageJsonPath, "utf-8");
1269
+ const packageJson = JSON.parse(packageJsonContent);
1270
+ packageJson.name = projectName;
1271
+ await fs.writeFile(packageJsonPath, JSON.stringify(packageJson, null, 2), "utf-8");
1272
+ } catch (error) {
1273
+ logger.warn(`Could not update package.json: ${error instanceof Error ? error.message : "Unknown error"}`);
1274
+ }
1275
+ }
1276
+ async function installDependencies(projectPath, packageManager) {
1277
+ const spinner5 = yoctoSpinner({ text: "Installing dependencies..." }).start();
1278
+ try {
1279
+ const pm = packageManager || getPackageManager();
1280
+ const installCommand = shellQuote.quote([pm, "install"]);
1281
+ await exec(installCommand, {
1282
+ cwd: projectPath
1283
+ });
1284
+ spinner5.success("Dependencies installed successfully");
1285
+ } catch (error) {
1286
+ spinner5.error(`Failed to install dependencies: ${error instanceof Error ? error.message : "Unknown error"}`);
1287
+ throw error;
1288
+ }
1289
+ }
1290
+ var TEMPLATES_API_URL = process.env.MASTRA_TEMPLATES_API_URL || "https://mastra.ai/api/templates.json";
1291
+ async function loadTemplates() {
1292
+ try {
1293
+ const response = await fetch(TEMPLATES_API_URL);
1294
+ if (!response.ok) {
1295
+ throw new Error(`Failed to fetch templates: ${response.statusText}`);
1296
+ }
1297
+ const templates = await response.json();
1298
+ return templates;
1299
+ } catch (error) {
1300
+ console.error("Error loading templates:", error);
1301
+ throw new Error("Failed to load templates. Please check your internet connection and try again.");
1302
+ }
1303
+ }
1304
+ function pluralize(count, singular, plural) {
1305
+ return count === 1 ? singular : plural || `${singular}s`;
1306
+ }
1307
+ async function selectTemplate(templates) {
1308
+ const choices = templates.map((template) => {
1309
+ const parts = [];
1310
+ if (template.agents?.length) {
1311
+ parts.push(`${template.agents.length} ${pluralize(template.agents.length, "agent")}`);
1312
+ }
1313
+ if (template.tools?.length) {
1314
+ parts.push(`${template.tools.length} ${pluralize(template.tools.length, "tool")}`);
1315
+ }
1316
+ if (template.workflows?.length) {
1317
+ parts.push(`${template.workflows.length} ${pluralize(template.workflows.length, "workflow")}`);
1318
+ }
1319
+ if (template.mcp?.length) {
1320
+ parts.push(`${template.mcp.length} ${pluralize(template.mcp.length, "MCP server")}`);
1321
+ }
1322
+ if (template.networks?.length) {
1323
+ parts.push(`${template.networks.length} ${pluralize(template.networks.length, "agent network")}`);
1324
+ }
1325
+ return {
1326
+ value: template,
1327
+ label: template.title,
1328
+ hint: parts.join(", ") || "Template components"
1329
+ };
1330
+ });
1331
+ const selected = await ve({
1332
+ message: "Select a template:",
1333
+ options: choices
1334
+ });
1335
+ if (pD(selected)) {
1336
+ return null;
1337
+ }
1338
+ return selected;
1339
+ }
1340
+ function findTemplateByName(templates, templateName) {
1341
+ let template = templates.find((t) => t.slug === templateName);
1342
+ if (template) return template;
1343
+ const slugWithPrefix = `template-${templateName}`;
1344
+ template = templates.find((t) => t.slug === slugWithPrefix);
1345
+ if (template) return template;
1346
+ template = templates.find((t) => t.title.toLowerCase() === templateName.toLowerCase());
1347
+ if (template) return template;
1348
+ return null;
1349
+ }
1350
+ function getDefaultProjectName(template) {
1351
+ return template.slug.replace(/^template-/, "");
1352
+ }
1353
+ function getPackageManagerAddCommand(pm) {
1354
+ switch (pm) {
1355
+ case "npm":
1356
+ return "install --audit=false --fund=false --loglevel=error --progress=false --update-notifier=false";
1357
+ case "yarn":
1358
+ return "add";
1359
+ case "pnpm":
1360
+ return "add --loglevel=error";
1361
+ case "bun":
1362
+ return "add";
1363
+ default:
1364
+ return "add";
1365
+ }
1366
+ }
1146
1367
  var DepsService = class {
1147
1368
  packageManager;
1148
1369
  constructor() {
@@ -1151,11 +1372,11 @@ var DepsService = class {
1151
1372
  findLockFile(dir) {
1152
1373
  const lockFiles = ["pnpm-lock.yaml", "package-lock.json", "yarn.lock", "bun.lock"];
1153
1374
  for (const file of lockFiles) {
1154
- if (fs3__default__default.existsSync(path2.join(dir, file))) {
1375
+ if (fs4__default__default.existsSync(path3.join(dir, file))) {
1155
1376
  return file;
1156
1377
  }
1157
1378
  }
1158
- const parentDir = path2.resolve(dir, "..");
1379
+ const parentDir = path3.resolve(dir, "..");
1159
1380
  if (parentDir !== dir) {
1160
1381
  return this.findLockFile(parentDir);
1161
1382
  }
@@ -1177,14 +1398,10 @@ var DepsService = class {
1177
1398
  }
1178
1399
  }
1179
1400
  async installPackages(packages) {
1180
- let runCommand = this.packageManager;
1181
- if (this.packageManager === "npm") {
1182
- runCommand = `${this.packageManager} i`;
1183
- } else {
1184
- runCommand = `${this.packageManager} add`;
1185
- }
1401
+ const pm = this.packageManager;
1402
+ const installCommand = getPackageManagerAddCommand(pm);
1186
1403
  const packageList = packages.join(" ");
1187
- return execa(`${runCommand} ${packageList}`, {
1404
+ return execa(`${pm} ${installCommand} ${packageList}`, {
1188
1405
  all: true,
1189
1406
  shell: true,
1190
1407
  stdio: "inherit"
@@ -1192,13 +1409,13 @@ var DepsService = class {
1192
1409
  }
1193
1410
  async checkDependencies(dependencies) {
1194
1411
  try {
1195
- const packageJsonPath = path2.join(process.cwd(), "package.json");
1412
+ const packageJsonPath = path3.join(process.cwd(), "package.json");
1196
1413
  try {
1197
- await fs4.access(packageJsonPath);
1414
+ await fs.access(packageJsonPath);
1198
1415
  } catch {
1199
1416
  return "No package.json file found in the current directory";
1200
1417
  }
1201
- const packageJson = JSON.parse(await fs4.readFile(packageJsonPath, "utf-8"));
1418
+ const packageJson = JSON.parse(await fs.readFile(packageJsonPath, "utf-8"));
1202
1419
  for (const dependency of dependencies) {
1203
1420
  if (!packageJson.dependencies || !packageJson.dependencies[dependency]) {
1204
1421
  return `Please install ${dependency} before running this command (${this.packageManager} install ${dependency})`;
@@ -1212,66 +1429,24 @@ var DepsService = class {
1212
1429
  }
1213
1430
  async getProjectName() {
1214
1431
  try {
1215
- const packageJsonPath = path2.join(process.cwd(), "package.json");
1216
- const packageJson = await fs4.readFile(packageJsonPath, "utf-8");
1432
+ const packageJsonPath = path3.join(process.cwd(), "package.json");
1433
+ const packageJson = await fs.readFile(packageJsonPath, "utf-8");
1217
1434
  const pkg = JSON.parse(packageJson);
1218
1435
  return pkg.name;
1219
1436
  } catch (err) {
1220
1437
  throw err;
1221
1438
  }
1222
1439
  }
1223
- async getPackageVersion() {
1224
- const __filename = fileURLToPath(import.meta.url);
1225
- const __dirname = dirname(__filename);
1226
- const pkgJsonPath = path2.join(__dirname, "..", "package.json");
1227
- const content = await fsExtra3.readJSON(pkgJsonPath);
1228
- return content.version;
1229
- }
1230
1440
  async addScriptsToPackageJson(scripts) {
1231
- const packageJson = JSON.parse(await fs4.readFile("package.json", "utf-8"));
1441
+ const packageJson = JSON.parse(await fs.readFile("package.json", "utf-8"));
1232
1442
  packageJson.scripts = {
1233
1443
  ...packageJson.scripts,
1234
1444
  ...scripts
1235
1445
  };
1236
- await fs4.writeFile("package.json", JSON.stringify(packageJson, null, 2));
1446
+ await fs.writeFile("package.json", JSON.stringify(packageJson, null, 2));
1237
1447
  }
1238
1448
  };
1239
- function getPackageManager() {
1240
- const userAgent = process.env.npm_config_user_agent || "";
1241
- const execPath = process.env.npm_execpath || "";
1242
- if (userAgent.includes("yarn")) {
1243
- return "yarn";
1244
- }
1245
- if (userAgent.includes("pnpm")) {
1246
- return "pnpm";
1247
- }
1248
- if (userAgent.includes("npm")) {
1249
- return "npm";
1250
- }
1251
- if (execPath.includes("yarn")) {
1252
- return "yarn";
1253
- }
1254
- if (execPath.includes("pnpm")) {
1255
- return "pnpm";
1256
- }
1257
- if (execPath.includes("npm")) {
1258
- return "npm";
1259
- }
1260
- return "npm";
1261
- }
1262
- function getPackageManagerInstallCommand(pm) {
1263
- switch (pm) {
1264
- case "npm":
1265
- return "install";
1266
- case "yarn":
1267
- return "add";
1268
- case "pnpm":
1269
- return "add";
1270
- default:
1271
- return "install";
1272
- }
1273
- }
1274
- var args = ["-y", "@mastra/mcp-docs-server@latest"];
1449
+ var args = ["-y", "@mastra/mcp-docs-server"];
1275
1450
  var createMcpConfig = (editor) => {
1276
1451
  if (editor === "vscode") {
1277
1452
  return {
@@ -1290,10 +1465,7 @@ var createMcpConfig = (editor) => {
1290
1465
  }
1291
1466
  return {
1292
1467
  mcpServers: {
1293
- mastra: process.platform === `win32` ? {
1294
- command: "cmd",
1295
- args: ["/c", "npx", ...args]
1296
- } : {
1468
+ mastra: {
1297
1469
  command: "npx",
1298
1470
  args
1299
1471
  }
@@ -1326,19 +1498,19 @@ async function writeMergedConfig(configPath, editor) {
1326
1498
  spaces: 2
1327
1499
  });
1328
1500
  }
1329
- var windsurfGlobalMCPConfigPath = path2.join(os.homedir(), ".codeium", "windsurf", "mcp_config.json");
1330
- var cursorGlobalMCPConfigPath = path2.join(os.homedir(), ".cursor", "mcp.json");
1331
- path2.join(process.cwd(), ".vscode", "mcp.json");
1332
- var vscodeGlobalMCPConfigPath = path2.join(
1501
+ var windsurfGlobalMCPConfigPath = path3.join(os.homedir(), ".codeium", "windsurf", "mcp_config.json");
1502
+ var cursorGlobalMCPConfigPath = path3.join(os.homedir(), ".cursor", "mcp.json");
1503
+ path3.join(process.cwd(), ".vscode", "mcp.json");
1504
+ var vscodeGlobalMCPConfigPath = path3.join(
1333
1505
  os.homedir(),
1334
- 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")
1506
+ process.platform === "win32" ? path3.join("AppData", "Roaming", "Code", "User", "settings.json") : process.platform === "darwin" ? path3.join("Library", "Application Support", "Code", "User", "settings.json") : path3.join(".config", "Code", "User", "settings.json")
1335
1507
  );
1336
1508
  async function installMastraDocsMCPServer({ editor, directory }) {
1337
1509
  if (editor === `cursor`) {
1338
- await writeMergedConfig(path2.join(directory, ".cursor", "mcp.json"), "cursor");
1510
+ await writeMergedConfig(path3.join(directory, ".cursor", "mcp.json"), "cursor");
1339
1511
  }
1340
1512
  if (editor === `vscode`) {
1341
- await writeMergedConfig(path2.join(directory, ".vscode", "mcp.json"), "vscode");
1513
+ await writeMergedConfig(path3.join(directory, ".vscode", "mcp.json"), "vscode");
1342
1514
  }
1343
1515
  if (editor === `cursor-global`) {
1344
1516
  const alreadyInstalled = await globalMCPIsAlreadyInstalled(editor);
@@ -1369,8 +1541,9 @@ async function globalMCPIsAlreadyInstalled(editor) {
1369
1541
  }
1370
1542
  try {
1371
1543
  const configContents = await readJSON(configPath);
1544
+ if (!configContents) return false;
1372
1545
  if (editor === "vscode") {
1373
- if (!configContents?.servers) return false;
1546
+ if (!configContents.servers) return false;
1374
1547
  const hasMastraMCP2 = Object.values(configContents.servers).some(
1375
1548
  (server) => server?.args?.find((arg) => arg?.includes(`@mastra/mcp-docs-server`))
1376
1549
  );
@@ -1381,8 +1554,7 @@ async function globalMCPIsAlreadyInstalled(editor) {
1381
1554
  (server) => server?.args?.find((arg) => arg?.includes(`@mastra/mcp-docs-server`))
1382
1555
  );
1383
1556
  return hasMastraMCP;
1384
- } catch (e) {
1385
- console.error(e);
1557
+ } catch {
1386
1558
  return false;
1387
1559
  }
1388
1560
  }
@@ -1396,7 +1568,7 @@ var FileEnvService = class extends EnvService {
1396
1568
  }
1397
1569
  readFile(filePath) {
1398
1570
  return new Promise((resolve, reject) => {
1399
- fs3__default.readFile(filePath, "utf8", (err, data) => {
1571
+ fs4__default.readFile(filePath, "utf8", (err, data) => {
1400
1572
  if (err) reject(err);
1401
1573
  else resolve(data);
1402
1574
  });
@@ -1404,7 +1576,7 @@ var FileEnvService = class extends EnvService {
1404
1576
  }
1405
1577
  writeFile({ filePath, data }) {
1406
1578
  return new Promise((resolve, reject) => {
1407
- fs3__default.writeFile(filePath, data, "utf8", (err) => {
1579
+ fs4__default.writeFile(filePath, data, "utf8", (err) => {
1408
1580
  if (err) reject(err);
1409
1581
  else resolve();
1410
1582
  });
@@ -1457,25 +1629,25 @@ var FileService = class {
1457
1629
  */
1458
1630
  async copyStarterFile(inputFile, outputFilePath, replaceIfExists) {
1459
1631
  const __filename = fileURLToPath(import.meta.url);
1460
- const __dirname = path2.dirname(__filename);
1461
- const filePath = path2.resolve(__dirname, "starter-files", inputFile);
1462
- const fileString = fs3__default__default.readFileSync(filePath, "utf8");
1463
- if (fs3__default__default.existsSync(outputFilePath) && !replaceIfExists) {
1632
+ const __dirname = path3.dirname(__filename);
1633
+ const filePath = path3.resolve(__dirname, "starter-files", inputFile);
1634
+ const fileString = fs4__default__default.readFileSync(filePath, "utf8");
1635
+ if (fs4__default__default.existsSync(outputFilePath) && !replaceIfExists) {
1464
1636
  console.log(`${outputFilePath} already exists`);
1465
1637
  return false;
1466
1638
  }
1467
- await fsExtra3.outputFile(outputFilePath, fileString);
1639
+ await fsExtra2.outputFile(outputFilePath, fileString);
1468
1640
  return true;
1469
1641
  }
1470
1642
  async setupEnvFile({ dbUrl }) {
1471
- const envPath = path2.join(process.cwd(), ".env.development");
1472
- await fsExtra3.ensureFile(envPath);
1643
+ const envPath = path3.join(process.cwd(), ".env.development");
1644
+ await fsExtra2.ensureFile(envPath);
1473
1645
  const fileEnvService = new FileEnvService(envPath);
1474
1646
  await fileEnvService.setEnvValue("DB_URL", dbUrl);
1475
1647
  }
1476
1648
  getFirstExistingFile(files) {
1477
1649
  for (const f of files) {
1478
- if (fs3__default__default.existsSync(f)) {
1650
+ if (fs4__default__default.existsSync(f)) {
1479
1651
  return f;
1480
1652
  }
1481
1653
  }
@@ -1485,18 +1657,22 @@ var FileService = class {
1485
1657
  filePath,
1486
1658
  replacements
1487
1659
  }) {
1488
- let fileContent = fs3__default__default.readFileSync(filePath, "utf8");
1660
+ let fileContent = fs4__default__default.readFileSync(filePath, "utf8");
1489
1661
  replacements.forEach(({ search, replace }) => {
1490
1662
  fileContent = fileContent.replaceAll(search, replace);
1491
1663
  });
1492
- fs3__default__default.writeFileSync(filePath, fileContent);
1664
+ fs4__default__default.writeFileSync(filePath, fileContent);
1665
+ }
1666
+ };
1667
+ var exec2 = util.promisify(child_process.exec);
1668
+ var getAISDKPackageVersion = (llmProvider) => {
1669
+ switch (llmProvider) {
1670
+ case "cerebras":
1671
+ return "^0.2.14";
1672
+ default:
1673
+ return "^1.0.0";
1493
1674
  }
1494
1675
  };
1495
- new PinoLogger({
1496
- name: "Mastra CLI",
1497
- level: "debug"
1498
- });
1499
- var exec = util.promisify(child_process.exec);
1500
1676
  var getAISDKPackage = (llmProvider) => {
1501
1677
  switch (llmProvider) {
1502
1678
  case "openai":
@@ -1509,6 +1685,8 @@ var getAISDKPackage = (llmProvider) => {
1509
1685
  return "@ai-sdk/google";
1510
1686
  case "cerebras":
1511
1687
  return "@ai-sdk/cerebras";
1688
+ case "mistral":
1689
+ return "@ai-sdk/mistral";
1512
1690
  default:
1513
1691
  return "@ai-sdk/openai";
1514
1692
  }
@@ -1527,24 +1705,29 @@ var getProviderImportAndModelItem = (llmProvider) => {
1527
1705
  modelItem = `groq('llama-3.3-70b-versatile')`;
1528
1706
  } else if (llmProvider === "google") {
1529
1707
  providerImport = `import { google } from '${getAISDKPackage(llmProvider)}';`;
1530
- modelItem = `google('gemini-1.5-pro-latest')`;
1708
+ modelItem = `google('gemini-2.5-pro')`;
1531
1709
  } else if (llmProvider === "cerebras") {
1532
1710
  providerImport = `import { cerebras } from '${getAISDKPackage(llmProvider)}';`;
1533
1711
  modelItem = `cerebras('llama-3.3-70b')`;
1712
+ } else if (llmProvider === "mistral") {
1713
+ providerImport = `import { mistral } from '${getAISDKPackage(llmProvider)}';`;
1714
+ modelItem = `mistral('mistral-medium-2508')`;
1534
1715
  }
1535
1716
  return { providerImport, modelItem };
1536
1717
  };
1537
1718
  async function writeAgentSample(llmProvider, destPath, addExampleTool) {
1538
1719
  const { providerImport, modelItem } = getProviderImportAndModelItem(llmProvider);
1539
1720
  const instructions = `
1540
- You are a helpful weather assistant that provides accurate weather information.
1721
+ You are a helpful weather assistant that provides accurate weather information and can help planning activities based on the weather.
1541
1722
 
1542
1723
  Your primary function is to help users get weather details for specific locations. When responding:
1543
1724
  - Always ask for a location if none is provided
1544
- - If the location name isn\u2019t in English, please translate it
1725
+ - If the location name isn't in English, please translate it
1545
1726
  - If giving a location with multiple parts (e.g. "New York, NY"), use the most relevant part (e.g. "New York")
1546
1727
  - Include relevant details like humidity, wind conditions, and precipitation
1547
1728
  - Keep responses concise but informative
1729
+ - If the user asks for activities and provides the weather forecast, suggest activities based on the weather forecast.
1730
+ - If the user asks for activities, respond in the format they request.
1548
1731
 
1549
1732
  ${addExampleTool ? "Use the weatherTool to fetch current weather data." : ""}
1550
1733
  `;
@@ -1571,66 +1754,13 @@ export const weatherAgent = new Agent({
1571
1754
  parser: "typescript",
1572
1755
  singleQuote: true
1573
1756
  });
1574
- await fs4.writeFile(destPath, "");
1575
- await fs4.writeFile(destPath, formattedContent);
1757
+ await fs.writeFile(destPath, "");
1758
+ await fs.writeFile(destPath, formattedContent);
1576
1759
  }
1577
- async function writeWorkflowSample(destPath, llmProvider) {
1578
- const { providerImport, modelItem } = getProviderImportAndModelItem(llmProvider);
1579
- const content = `${providerImport}
1580
- import { Agent } from '@mastra/core/agent';
1581
- import { createStep, createWorkflow } from '@mastra/core/workflows';
1760
+ async function writeWorkflowSample(destPath) {
1761
+ const content = `import { createStep, createWorkflow } from '@mastra/core/workflows';
1582
1762
  import { z } from 'zod';
1583
1763
 
1584
- const llm = ${modelItem};
1585
-
1586
- const agent = new Agent({
1587
- name: 'Weather Agent',
1588
- model: llm,
1589
- instructions: \`
1590
- You are a local activities and travel expert who excels at weather-based planning. Analyze the weather data and provide practical activity recommendations.
1591
-
1592
- For each day in the forecast, structure your response exactly as follows:
1593
-
1594
- \u{1F4C5} [Day, Month Date, Year]
1595
- \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
1596
-
1597
- \u{1F321}\uFE0F WEATHER SUMMARY
1598
- \u2022 Conditions: [brief description]
1599
- \u2022 Temperature: [X\xB0C/Y\xB0F to A\xB0C/B\xB0F]
1600
- \u2022 Precipitation: [X% chance]
1601
-
1602
- \u{1F305} MORNING ACTIVITIES
1603
- Outdoor:
1604
- \u2022 [Activity Name] - [Brief description including specific location/route]
1605
- Best timing: [specific time range]
1606
- Note: [relevant weather consideration]
1607
-
1608
- \u{1F31E} AFTERNOON ACTIVITIES
1609
- Outdoor:
1610
- \u2022 [Activity Name] - [Brief description including specific location/route]
1611
- Best timing: [specific time range]
1612
- Note: [relevant weather consideration]
1613
-
1614
- \u{1F3E0} INDOOR ALTERNATIVES
1615
- \u2022 [Activity Name] - [Brief description including specific venue]
1616
- Ideal for: [weather condition that would trigger this alternative]
1617
-
1618
- \u26A0\uFE0F SPECIAL CONSIDERATIONS
1619
- \u2022 [Any relevant weather warnings, UV index, wind conditions, etc.]
1620
-
1621
- Guidelines:
1622
- - Suggest 2-3 time-specific outdoor activities per day
1623
- - Include 1-2 indoor backup options
1624
- - For precipitation >50%, lead with indoor activities
1625
- - All activities must be specific to the location
1626
- - Include specific venues, trails, or locations
1627
- - Consider activity intensity based on temperature
1628
- - Keep descriptions concise but informative
1629
-
1630
- Maintain this exact formatting for consistency, using the emoji and section headers as shown.
1631
- \`,
1632
- });
1633
-
1634
1764
  const forecastSchema = z.object({
1635
1765
  date: z.string(),
1636
1766
  maxTemp: z.number(),
@@ -1724,16 +1854,59 @@ const planActivities = createStep({
1724
1854
  outputSchema: z.object({
1725
1855
  activities: z.string(),
1726
1856
  }),
1727
- execute: async ({ inputData }) => {
1857
+ execute: async ({ inputData, mastra }) => {
1728
1858
  const forecast = inputData
1729
1859
 
1730
1860
  if (!forecast) {
1731
1861
  throw new Error('Forecast data not found')
1732
1862
  }
1733
1863
 
1864
+ const agent = mastra?.getAgent('weatherAgent');
1865
+ if (!agent) {
1866
+ throw new Error('Weather agent not found');
1867
+ }
1868
+
1734
1869
  const prompt = \`Based on the following weather forecast for \${forecast.location}, suggest appropriate activities:
1735
1870
  \${JSON.stringify(forecast, null, 2)}
1736
- \`;
1871
+ For each day in the forecast, structure your response exactly as follows:
1872
+
1873
+ \u{1F4C5} [Day, Month Date, Year]
1874
+ \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
1875
+
1876
+ \u{1F321}\uFE0F WEATHER SUMMARY
1877
+ \u2022 Conditions: [brief description]
1878
+ \u2022 Temperature: [X\xB0C/Y\xB0F to A\xB0C/B\xB0F]
1879
+ \u2022 Precipitation: [X% chance]
1880
+
1881
+ \u{1F305} MORNING ACTIVITIES
1882
+ Outdoor:
1883
+ \u2022 [Activity Name] - [Brief description including specific location/route]
1884
+ Best timing: [specific time range]
1885
+ Note: [relevant weather consideration]
1886
+
1887
+ \u{1F31E} AFTERNOON ACTIVITIES
1888
+ Outdoor:
1889
+ \u2022 [Activity Name] - [Brief description including specific location/route]
1890
+ Best timing: [specific time range]
1891
+ Note: [relevant weather consideration]
1892
+
1893
+ \u{1F3E0} INDOOR ALTERNATIVES
1894
+ \u2022 [Activity Name] - [Brief description including specific venue]
1895
+ Ideal for: [weather condition that would trigger this alternative]
1896
+
1897
+ \u26A0\uFE0F SPECIAL CONSIDERATIONS
1898
+ \u2022 [Any relevant weather warnings, UV index, wind conditions, etc.]
1899
+
1900
+ Guidelines:
1901
+ - Suggest 2-3 time-specific outdoor activities per day
1902
+ - Include 1-2 indoor backup options
1903
+ - For precipitation >50%, lead with indoor activities
1904
+ - All activities must be specific to the location
1905
+ - Include specific venues, trails, or locations
1906
+ - Consider activity intensity based on temperature
1907
+ - Keep descriptions concise but informative
1908
+
1909
+ Maintain this exact formatting for consistency, using the emoji and section headers as shown.\`;
1737
1910
 
1738
1911
  const response = await agent.stream([
1739
1912
  {
@@ -1775,7 +1948,7 @@ export { weatherWorkflow };`;
1775
1948
  semi: true,
1776
1949
  singleQuote: true
1777
1950
  });
1778
- await fs4.writeFile(destPath, formattedContent);
1951
+ await fs.writeFile(destPath, formattedContent);
1779
1952
  }
1780
1953
  async function writeToolSample(destPath) {
1781
1954
  const fileService = new FileService();
@@ -1788,14 +1961,14 @@ async function writeCodeSampleForComponents(llmprovider, component, destPath, im
1788
1961
  case "tools":
1789
1962
  return writeToolSample(destPath);
1790
1963
  case "workflows":
1791
- return writeWorkflowSample(destPath, llmprovider);
1964
+ return writeWorkflowSample(destPath);
1792
1965
  default:
1793
1966
  return "";
1794
1967
  }
1795
1968
  }
1796
1969
  var createComponentsDir = async (dirPath, component) => {
1797
1970
  const componentPath = dirPath + `/${component}`;
1798
- await fsExtra3.ensureDir(componentPath);
1971
+ await fsExtra2.ensureDir(componentPath);
1799
1972
  };
1800
1973
  var writeIndexFile = async ({
1801
1974
  dirPath,
@@ -1804,15 +1977,15 @@ var writeIndexFile = async ({
1804
1977
  addWorkflow
1805
1978
  }) => {
1806
1979
  const indexPath = dirPath + "/index.ts";
1807
- const destPath = path2.join(indexPath);
1980
+ const destPath = path3.join(indexPath);
1808
1981
  try {
1809
- await fs4.writeFile(destPath, "");
1982
+ await fs.writeFile(destPath, "");
1810
1983
  const filteredExports = [
1811
1984
  addWorkflow ? `workflows: { weatherWorkflow },` : "",
1812
1985
  addAgent ? `agents: { weatherAgent },` : ""
1813
1986
  ].filter(Boolean);
1814
1987
  if (!addExample) {
1815
- await fs4.writeFile(
1988
+ await fs.writeFile(
1816
1989
  destPath,
1817
1990
  `
1818
1991
  import { Mastra } from '@mastra/core';
@@ -1822,7 +1995,7 @@ export const mastra = new Mastra()
1822
1995
  );
1823
1996
  return;
1824
1997
  }
1825
- await fs4.writeFile(
1998
+ await fs.writeFile(
1826
1999
  destPath,
1827
2000
  `
1828
2001
  import { Mastra } from '@mastra/core/mastra';
@@ -1864,6 +2037,9 @@ var getAPIKey = async (provider) => {
1864
2037
  case "cerebras":
1865
2038
  key = "CEREBRAS_API_KEY";
1866
2039
  return key;
2040
+ case "mistral":
2041
+ key = "MISTRAL_API_KEY";
2042
+ return key;
1867
2043
  default:
1868
2044
  return key;
1869
2045
  }
@@ -1875,16 +2051,16 @@ var writeAPIKey = async ({
1875
2051
  const key = await getAPIKey(provider);
1876
2052
  const escapedKey = shellQuote.quote([key]);
1877
2053
  const escapedApiKey = shellQuote.quote([apiKey]);
1878
- await exec(`echo ${escapedKey}=${escapedApiKey} >> .env`);
2054
+ await exec2(`echo ${escapedKey}=${escapedApiKey} >> .env`);
1879
2055
  };
1880
2056
  var createMastraDir = async (directory) => {
1881
2057
  let dir = directory.trim().split("/").filter((item) => item !== "");
1882
- const dirPath = path2.join(process.cwd(), ...dir, "mastra");
2058
+ const dirPath = path3.join(process.cwd(), ...dir, "mastra");
1883
2059
  try {
1884
- await fs4.access(dirPath);
2060
+ await fs.access(dirPath);
1885
2061
  return { ok: false };
1886
2062
  } catch {
1887
- await fsExtra3.ensureDir(dirPath);
2063
+ await fsExtra2.ensureDir(dirPath);
1888
2064
  return { ok: true, dirPath };
1889
2065
  }
1890
2066
  };
@@ -1897,40 +2073,27 @@ var writeCodeSample = async (dirPath, component, llmProvider, importComponents)
1897
2073
  }
1898
2074
  };
1899
2075
  var interactivePrompt = async () => {
1900
- pe(color2.inverse("Mastra Init"));
1901
- const mastraProject = await ve(
2076
+ Ie(color2.inverse(" Mastra Init "));
2077
+ const mastraProject = await Ce(
1902
2078
  {
1903
- directory: () => ae({
2079
+ directory: () => he({
1904
2080
  message: "Where should we create the Mastra files? (default: src/)",
1905
2081
  placeholder: "src/",
1906
2082
  defaultValue: "src/"
1907
2083
  }),
1908
- components: () => $e({
1909
- message: "Choose components to install:",
1910
- options: [
1911
- { value: "agents", label: "Agents", hint: "recommended" },
1912
- {
1913
- value: "workflows",
1914
- label: "Workflows"
1915
- }
1916
- ]
1917
- }),
1918
- shouldAddTools: () => ce({
1919
- message: "Add tools?",
1920
- initialValue: false
1921
- }),
1922
- llmProvider: () => le({
2084
+ llmProvider: () => ve({
1923
2085
  message: "Select default provider:",
1924
2086
  options: [
1925
2087
  { value: "openai", label: "OpenAI", hint: "recommended" },
1926
2088
  { value: "anthropic", label: "Anthropic" },
1927
2089
  { value: "groq", label: "Groq" },
1928
2090
  { value: "google", label: "Google" },
1929
- { value: "cerebras", label: "Cerebras" }
2091
+ { value: "cerebras", label: "Cerebras" },
2092
+ { value: "mistral", label: "Mistral" }
1930
2093
  ]
1931
2094
  }),
1932
2095
  llmApiKey: async ({ results: { llmProvider } }) => {
1933
- const keyChoice = await le({
2096
+ const keyChoice = await ve({
1934
2097
  message: `Enter your ${llmProvider} API key?`,
1935
2098
  options: [
1936
2099
  { value: "skip", label: "Skip for now", hint: "default" },
@@ -1939,22 +2102,18 @@ var interactivePrompt = async () => {
1939
2102
  initialValue: "skip"
1940
2103
  });
1941
2104
  if (keyChoice === "enter") {
1942
- return ae({
2105
+ return he({
1943
2106
  message: "Enter your API key:",
1944
2107
  placeholder: "sk-..."
1945
2108
  });
1946
2109
  }
1947
2110
  return void 0;
1948
2111
  },
1949
- addExample: () => ce({
1950
- message: "Add example",
1951
- initialValue: false
1952
- }),
1953
2112
  configureEditorWithDocsMCP: async () => {
1954
2113
  const windsurfIsAlreadyInstalled = await globalMCPIsAlreadyInstalled(`windsurf`);
1955
2114
  const cursorIsAlreadyInstalled = await globalMCPIsAlreadyInstalled(`cursor`);
1956
2115
  const vscodeIsAlreadyInstalled = await globalMCPIsAlreadyInstalled(`vscode`);
1957
- const editor = await le({
2116
+ const editor = await ve({
1958
2117
  message: `Make your AI IDE into a Mastra expert? (installs Mastra docs MCP server)`,
1959
2118
  options: [
1960
2119
  { value: "skip", label: "Skip for now", hint: "default" },
@@ -1982,24 +2141,24 @@ var interactivePrompt = async () => {
1982
2141
  });
1983
2142
  if (editor === `skip`) return void 0;
1984
2143
  if (editor === `windsurf` && windsurfIsAlreadyInstalled) {
1985
- v.message(`
2144
+ M.message(`
1986
2145
  Windsurf is already installed, skipping.`);
1987
2146
  return void 0;
1988
2147
  }
1989
2148
  if (editor === `vscode` && vscodeIsAlreadyInstalled) {
1990
- v.message(`
2149
+ M.message(`
1991
2150
  VSCode is already installed, skipping.`);
1992
2151
  return void 0;
1993
2152
  }
1994
2153
  if (editor === `cursor`) {
1995
- v.message(
2154
+ M.message(
1996
2155
  `
1997
2156
  Note: you will need to go into Cursor Settings -> MCP Settings and manually enable the installed Mastra MCP server.
1998
2157
  `
1999
2158
  );
2000
2159
  }
2001
2160
  if (editor === `cursor-global`) {
2002
- const confirm2 = await le({
2161
+ const confirm2 = await ve({
2003
2162
  message: `Global install will add/update ${cursorGlobalMCPConfigPath} and make the Mastra docs MCP server available in all your Cursor projects. Continue?`,
2004
2163
  options: [
2005
2164
  { value: "yes", label: "Yes, I understand" },
@@ -2011,7 +2170,7 @@ Note: you will need to go into Cursor Settings -> MCP Settings and manually enab
2011
2170
  }
2012
2171
  }
2013
2172
  if (editor === `windsurf`) {
2014
- const confirm2 = await le({
2173
+ const confirm2 = await ve({
2015
2174
  message: `Windsurf only supports a global MCP config (at ${windsurfGlobalMCPConfigPath}) is it ok to add/update that global config?
2016
2175
  This means the Mastra docs MCP server will be available in all your Windsurf projects.`,
2017
2176
  options: [
@@ -2028,17 +2187,15 @@ This means the Mastra docs MCP server will be available in all your Windsurf pro
2028
2187
  },
2029
2188
  {
2030
2189
  onCancel: () => {
2031
- he("Operation cancelled.");
2190
+ xe("Operation cancelled.");
2032
2191
  process.exit(0);
2033
2192
  }
2034
2193
  }
2035
2194
  );
2036
- const { shouldAddTools, components, ...rest } = mastraProject;
2037
- const mastraComponents = shouldAddTools ? [...components, "tools"] : components;
2038
- return { ...rest, components: mastraComponents };
2195
+ return mastraProject;
2039
2196
  };
2040
- var s = _();
2041
- var exec2 = util.promisify(child_process.exec);
2197
+ var s = Y();
2198
+ var exec3 = util.promisify(child_process.exec);
2042
2199
  var init = async ({
2043
2200
  directory,
2044
2201
  addExample = false,
@@ -2087,10 +2244,11 @@ var init = async ({
2087
2244
  }
2088
2245
  const key = await getAPIKey(llmProvider || "openai");
2089
2246
  const aiSdkPackage = getAISDKPackage(llmProvider);
2247
+ const aiSdkPackageVersion = getAISDKPackageVersion(llmProvider);
2090
2248
  const depsService = new DepsService();
2091
2249
  const pm = depsService.packageManager;
2092
- const installCommand = getPackageManagerInstallCommand(pm);
2093
- await exec2(`${pm} ${installCommand} ${aiSdkPackage}`);
2250
+ const installCommand = getPackageManagerAddCommand(pm);
2251
+ await exec3(`${pm} ${installCommand} ${aiSdkPackage}@${aiSdkPackageVersion}`);
2094
2252
  if (configureEditorWithDocsMCP) {
2095
2253
  await installMastraDocsMCPServer({
2096
2254
  editor: configureEditorWithDocsMCP,
@@ -2099,14 +2257,14 @@ var init = async ({
2099
2257
  }
2100
2258
  s.stop();
2101
2259
  if (!llmApiKey) {
2102
- me(`
2260
+ Me(`
2103
2261
  ${color2.green("Mastra initialized successfully!")}
2104
2262
 
2105
2263
  Add your ${color2.cyan(key)} as an environment variable
2106
2264
  in your ${color2.cyan(".env")} file
2107
2265
  `);
2108
2266
  } else {
2109
- me(`
2267
+ Me(`
2110
2268
  ${color2.green("Mastra initialized successfully!")}
2111
2269
  `);
2112
2270
  }
@@ -2117,10 +2275,10 @@ var init = async ({
2117
2275
  return { success: false };
2118
2276
  }
2119
2277
  };
2120
- var exec3 = util.promisify(child_process.exec);
2278
+ var exec4 = util.promisify(child_process.exec);
2121
2279
  var execWithTimeout = async (command, timeoutMs) => {
2122
2280
  try {
2123
- const promise = exec3(command, { killSignal: "SIGTERM" });
2281
+ const promise = exec4(command, { killSignal: "SIGTERM" });
2124
2282
  if (!timeoutMs) {
2125
2283
  return await promise;
2126
2284
  }
@@ -2140,23 +2298,29 @@ var execWithTimeout = async (command, timeoutMs) => {
2140
2298
  throw error;
2141
2299
  }
2142
2300
  } catch (error) {
2143
- console.error(error);
2144
2301
  throw error;
2145
2302
  }
2146
2303
  };
2147
2304
  async function installMastraDependency(pm, dependency, versionTag, isDev, timeout) {
2148
- let installCommand = getPackageManagerInstallCommand(pm);
2305
+ let installCommand = getPackageManagerAddCommand(pm);
2149
2306
  if (isDev) {
2150
- installCommand = `${installCommand} --save-dev`;
2307
+ installCommand = `${installCommand} -D`;
2151
2308
  }
2152
2309
  try {
2153
2310
  await execWithTimeout(`${pm} ${installCommand} ${dependency}${versionTag}`, timeout);
2154
2311
  } catch (err) {
2155
- console.log("err", err);
2156
2312
  if (versionTag === "@latest") {
2157
- throw err;
2313
+ throw new Error(
2314
+ `Failed to install ${dependency}@latest: ${err instanceof Error ? err.message : "Unknown error"}`
2315
+ );
2316
+ }
2317
+ try {
2318
+ await execWithTimeout(`${pm} ${installCommand} ${dependency}@latest`, timeout);
2319
+ } catch (fallbackErr) {
2320
+ throw new Error(
2321
+ `Failed to install ${dependency} (tried ${versionTag} and @latest): ${fallbackErr instanceof Error ? fallbackErr.message : "Unknown error"}`
2322
+ );
2158
2323
  }
2159
- await execWithTimeout(`${pm} ${installCommand} ${dependency}@latest`, timeout);
2160
2324
  }
2161
2325
  }
2162
2326
  var createMastraProject = async ({
@@ -2164,47 +2328,55 @@ var createMastraProject = async ({
2164
2328
  createVersionTag,
2165
2329
  timeout
2166
2330
  }) => {
2167
- pe(color2.inverse("Mastra Create"));
2168
- const projectName = name ?? await ae({
2331
+ Ie(color2.inverse(" Mastra Create "));
2332
+ const projectName = name ?? await he({
2169
2333
  message: "What do you want to name your project?",
2170
2334
  placeholder: "my-mastra-app",
2171
2335
  defaultValue: "my-mastra-app"
2172
2336
  });
2173
- if (lD(projectName)) {
2174
- he("Operation cancelled");
2337
+ if (pD(projectName)) {
2338
+ xe("Operation cancelled");
2175
2339
  process.exit(0);
2176
2340
  }
2177
- const s2 = _();
2178
- s2.start("Creating project");
2341
+ const s2 = Y();
2179
2342
  try {
2180
- await fs4.mkdir(projectName);
2181
- } catch (error) {
2182
- if (error instanceof Error && "code" in error && error.code === "EEXIST") {
2183
- s2.stop(
2184
- `A directory named "${projectName}" already exists. Please choose a different name or delete the existing directory.`
2343
+ s2.start("Creating project");
2344
+ try {
2345
+ await fs.mkdir(projectName);
2346
+ } catch (error) {
2347
+ if (error instanceof Error && "code" in error && error.code === "EEXIST") {
2348
+ s2.stop(`A directory named "${projectName}" already exists. Please choose a different name.`);
2349
+ process.exit(1);
2350
+ }
2351
+ throw new Error(
2352
+ `Failed to create project directory: ${error instanceof Error ? error.message : "Unknown error"}`
2185
2353
  );
2186
- process.exit(1);
2187
2354
  }
2188
- throw error;
2189
- }
2190
- process.chdir(projectName);
2191
- const pm = getPackageManager();
2192
- const installCommand = getPackageManagerInstallCommand(pm);
2193
- s2.message("Creating project");
2194
- await exec3(`npm init -y`);
2195
- await exec3(`npm pkg set type="module"`);
2196
- await exec3(`npm pkg set engines.node=">=20.9.0"`);
2197
- const depsService = new DepsService();
2198
- await depsService.addScriptsToPackageJson({
2199
- dev: "mastra dev",
2200
- build: "mastra build",
2201
- start: "mastra start"
2202
- });
2203
- s2.stop("Project created");
2204
- s2.start(`Installing ${pm} dependencies`);
2205
- await exec3(`${pm} ${installCommand} zod`);
2206
- await exec3(`${pm} ${installCommand} typescript @types/node --save-dev`);
2207
- await exec3(`echo '{
2355
+ process.chdir(projectName);
2356
+ const pm = getPackageManager();
2357
+ const installCommand = getPackageManagerAddCommand(pm);
2358
+ s2.message("Initializing project structure");
2359
+ try {
2360
+ await exec4(`npm init -y`);
2361
+ await exec4(`npm pkg set type="module"`);
2362
+ await exec4(`npm pkg set engines.node=">=20.9.0"`);
2363
+ const depsService = new DepsService();
2364
+ await depsService.addScriptsToPackageJson({
2365
+ dev: "mastra dev",
2366
+ build: "mastra build",
2367
+ start: "mastra start"
2368
+ });
2369
+ } catch (error) {
2370
+ throw new Error(
2371
+ `Failed to initialize project structure: ${error instanceof Error ? error.message : "Unknown error"}`
2372
+ );
2373
+ }
2374
+ s2.stop("Project structure created");
2375
+ s2.start(`Installing ${pm} dependencies`);
2376
+ try {
2377
+ await exec4(`${pm} ${installCommand} zod@^3`);
2378
+ await exec4(`${pm} ${installCommand} typescript @types/node --save-dev`);
2379
+ await exec4(`echo '{
2208
2380
  "compilerOptions": {
2209
2381
  "target": "ES2022",
2210
2382
  "module": "ES2022",
@@ -2220,31 +2392,60 @@ var createMastraProject = async ({
2220
2392
  "src/**/*"
2221
2393
  ]
2222
2394
  }' > tsconfig.json`);
2223
- s2.stop(`${pm} dependencies installed`);
2224
- s2.start("Installing mastra");
2225
- const versionTag = createVersionTag ? `@${createVersionTag}` : "@latest";
2226
- await installMastraDependency(pm, "mastra", versionTag, true, timeout);
2227
- s2.stop("mastra installed");
2228
- s2.start("Installing dependencies");
2229
- await installMastraDependency(pm, "@mastra/core", versionTag, false, timeout);
2230
- await installMastraDependency(pm, "@mastra/libsql", versionTag, false, timeout);
2231
- await installMastraDependency(pm, "@mastra/memory", versionTag, false, timeout);
2232
- s2.stop("Dependencies installed");
2233
- s2.start("Adding .gitignore");
2234
- await exec3(`echo output.txt >> .gitignore`);
2235
- await exec3(`echo node_modules >> .gitignore`);
2236
- await exec3(`echo dist >> .gitignore`);
2237
- await exec3(`echo .mastra >> .gitignore`);
2238
- await exec3(`echo .env.development >> .gitignore`);
2239
- await exec3(`echo .env >> .gitignore`);
2240
- await exec3(`echo *.db >> .gitignore`);
2241
- await exec3(`echo *.db-* >> .gitignore`);
2242
- s2.stop(".gitignore added");
2243
- ge("Project created successfully");
2244
- console.log("");
2245
- return { projectName };
2395
+ } catch (error) {
2396
+ throw new Error(
2397
+ `Failed to install basic dependencies: ${error instanceof Error ? error.message : "Unknown error"}`
2398
+ );
2399
+ }
2400
+ s2.stop(`${pm} dependencies installed`);
2401
+ s2.start("Installing mastra");
2402
+ const versionTag = createVersionTag ? `@${createVersionTag}` : "@latest";
2403
+ try {
2404
+ await installMastraDependency(pm, "mastra", versionTag, true, timeout);
2405
+ } catch (error) {
2406
+ throw new Error(`Failed to install Mastra CLI: ${error instanceof Error ? error.message : "Unknown error"}`);
2407
+ }
2408
+ s2.stop("mastra installed");
2409
+ s2.start("Installing dependencies");
2410
+ try {
2411
+ await installMastraDependency(pm, "@mastra/core", versionTag, false, timeout);
2412
+ await installMastraDependency(pm, "@mastra/libsql", versionTag, false, timeout);
2413
+ await installMastraDependency(pm, "@mastra/memory", versionTag, false, timeout);
2414
+ } catch (error) {
2415
+ throw new Error(
2416
+ `Failed to install Mastra dependencies: ${error instanceof Error ? error.message : "Unknown error"}`
2417
+ );
2418
+ }
2419
+ s2.stop("Mastra dependencies installed");
2420
+ s2.start("Adding .gitignore");
2421
+ try {
2422
+ await exec4(`echo output.txt >> .gitignore`);
2423
+ await exec4(`echo node_modules >> .gitignore`);
2424
+ await exec4(`echo dist >> .gitignore`);
2425
+ await exec4(`echo .mastra >> .gitignore`);
2426
+ await exec4(`echo .env.development >> .gitignore`);
2427
+ await exec4(`echo .env >> .gitignore`);
2428
+ await exec4(`echo *.db >> .gitignore`);
2429
+ await exec4(`echo *.db-* >> .gitignore`);
2430
+ } catch (error) {
2431
+ throw new Error(`Failed to create .gitignore: ${error instanceof Error ? error.message : "Unknown error"}`);
2432
+ }
2433
+ s2.stop(".gitignore added");
2434
+ Se("Project created successfully");
2435
+ console.log("");
2436
+ return { projectName };
2437
+ } catch (error) {
2438
+ s2.stop();
2439
+ const errorMessage = error instanceof Error ? error.message : "An unexpected error occurred";
2440
+ xe(`Project creation failed: ${errorMessage}`);
2441
+ process.exit(1);
2442
+ }
2246
2443
  };
2247
2444
  var create = async (args2) => {
2445
+ if (args2.template !== void 0) {
2446
+ await createFromTemplate({ ...args2, injectedAnalytics: args2.analytics });
2447
+ return;
2448
+ }
2248
2449
  const { projectName } = await createMastraProject({
2249
2450
  projectName: args2?.projectName,
2250
2451
  createVersionTag: args2?.createVersionTag,
@@ -2255,7 +2456,9 @@ var create = async (args2) => {
2255
2456
  const result = await interactivePrompt();
2256
2457
  await init({
2257
2458
  ...result,
2258
- llmApiKey: result?.llmApiKey
2459
+ llmApiKey: result?.llmApiKey,
2460
+ components: ["agents", "tools", "workflows"],
2461
+ addExample: true
2259
2462
  });
2260
2463
  postCreate({ projectName });
2261
2464
  return;
@@ -2273,18 +2476,172 @@ var create = async (args2) => {
2273
2476
  };
2274
2477
  var postCreate = ({ projectName }) => {
2275
2478
  const packageManager = getPackageManager();
2276
- ge(`
2479
+ Se(`
2277
2480
  ${color2.green("To start your project:")}
2278
2481
 
2279
2482
  ${color2.cyan("cd")} ${projectName}
2280
2483
  ${color2.cyan(`${packageManager} run dev`)}
2281
2484
  `);
2282
2485
  };
2486
+ function isGitHubUrl(url) {
2487
+ try {
2488
+ const parsedUrl = new URL(url);
2489
+ return parsedUrl.hostname === "github.com" && parsedUrl.pathname.split("/").length >= 3;
2490
+ } catch {
2491
+ return false;
2492
+ }
2493
+ }
2494
+ async function validateGitHubProject(githubUrl) {
2495
+ const errors = [];
2496
+ try {
2497
+ const urlParts = new URL(githubUrl).pathname.split("/").filter(Boolean);
2498
+ const owner = urlParts[0];
2499
+ const repo = urlParts[1]?.replace(".git", "");
2500
+ if (!owner || !repo) {
2501
+ throw new Error("Invalid GitHub URL format");
2502
+ }
2503
+ const branches = ["main", "master"];
2504
+ let packageJsonContent = null;
2505
+ let indexContent = null;
2506
+ for (const branch of branches) {
2507
+ try {
2508
+ const packageJsonUrl = `https://raw.githubusercontent.com/${owner}/${repo}/${branch}/package.json`;
2509
+ const packageJsonResponse = await fetch(packageJsonUrl);
2510
+ if (packageJsonResponse.ok) {
2511
+ packageJsonContent = await packageJsonResponse.text();
2512
+ const indexUrl = `https://raw.githubusercontent.com/${owner}/${repo}/${branch}/src/mastra/index.ts`;
2513
+ const indexResponse = await fetch(indexUrl);
2514
+ if (indexResponse.ok) {
2515
+ indexContent = await indexResponse.text();
2516
+ }
2517
+ break;
2518
+ }
2519
+ } catch {
2520
+ }
2521
+ }
2522
+ if (!packageJsonContent) {
2523
+ errors.push("Could not fetch package.json from repository");
2524
+ return { isValid: false, errors };
2525
+ }
2526
+ try {
2527
+ const packageJson = JSON.parse(packageJsonContent);
2528
+ const hasMastraCore = packageJson.dependencies?.["@mastra/core"] || packageJson.devDependencies?.["@mastra/core"] || packageJson.peerDependencies?.["@mastra/core"];
2529
+ if (!hasMastraCore) {
2530
+ errors.push("Missing @mastra/core dependency in package.json");
2531
+ }
2532
+ } catch {
2533
+ errors.push("Invalid package.json format");
2534
+ }
2535
+ if (!indexContent) {
2536
+ errors.push("Missing src/mastra/index.ts file");
2537
+ } else {
2538
+ const hasMastraExport = indexContent.includes("export") && (indexContent.includes("new Mastra") || indexContent.includes("Mastra("));
2539
+ if (!hasMastraExport) {
2540
+ errors.push("src/mastra/index.ts does not export a Mastra instance");
2541
+ }
2542
+ }
2543
+ return { isValid: errors.length === 0, errors };
2544
+ } catch (error) {
2545
+ errors.push(`Failed to validate GitHub repository: ${error instanceof Error ? error.message : "Unknown error"}`);
2546
+ return { isValid: false, errors };
2547
+ }
2548
+ }
2549
+ async function createFromGitHubUrl(url) {
2550
+ const urlParts = new URL(url).pathname.split("/").filter(Boolean);
2551
+ const owner = urlParts[0] || "unknown";
2552
+ const repo = urlParts[1] || "unknown";
2553
+ return {
2554
+ githubUrl: url,
2555
+ title: `${owner}/${repo}`,
2556
+ slug: repo,
2557
+ agents: [],
2558
+ mcp: [],
2559
+ tools: [],
2560
+ networks: [],
2561
+ workflows: []
2562
+ };
2563
+ }
2564
+ async function createFromTemplate(args2) {
2565
+ let selectedTemplate;
2566
+ if (args2.template === true) {
2567
+ const templates = await loadTemplates();
2568
+ const selected = await selectTemplate(templates);
2569
+ if (!selected) {
2570
+ M.info("No template selected. Exiting.");
2571
+ return;
2572
+ }
2573
+ selectedTemplate = selected;
2574
+ } else if (args2.template && typeof args2.template === "string") {
2575
+ if (isGitHubUrl(args2.template)) {
2576
+ const spinner5 = Y();
2577
+ spinner5.start("Validating GitHub repository...");
2578
+ const validation = await validateGitHubProject(args2.template);
2579
+ if (!validation.isValid) {
2580
+ spinner5.stop("Validation failed");
2581
+ M.error("This does not appear to be a valid Mastra project:");
2582
+ validation.errors.forEach((error) => M.error(` - ${error}`));
2583
+ throw new Error("Invalid Mastra project");
2584
+ }
2585
+ spinner5.stop("Valid Mastra project \u2713");
2586
+ selectedTemplate = await createFromGitHubUrl(args2.template);
2587
+ } else {
2588
+ const templates = await loadTemplates();
2589
+ const found = findTemplateByName(templates, args2.template);
2590
+ if (!found) {
2591
+ M.error(`Template "${args2.template}" not found. Available templates:`);
2592
+ templates.forEach((t) => M.info(` - ${t.title} (use: ${t.slug.replace("template-", "")})`));
2593
+ throw new Error(`Template "${args2.template}" not found`);
2594
+ }
2595
+ selectedTemplate = found;
2596
+ }
2597
+ }
2598
+ if (!selectedTemplate) {
2599
+ throw new Error("No template selected");
2600
+ }
2601
+ let projectName = args2.projectName;
2602
+ if (!projectName) {
2603
+ const defaultName = getDefaultProjectName(selectedTemplate);
2604
+ const response = await he({
2605
+ message: "What is your project name?",
2606
+ defaultValue: defaultName,
2607
+ placeholder: defaultName
2608
+ });
2609
+ if (pD(response)) {
2610
+ M.info("Project creation cancelled.");
2611
+ return;
2612
+ }
2613
+ projectName = response;
2614
+ }
2615
+ try {
2616
+ const analytics = args2.injectedAnalytics || getAnalytics();
2617
+ if (analytics) {
2618
+ analytics.trackEvent("cli_template_used", {
2619
+ template_slug: selectedTemplate.slug,
2620
+ template_title: selectedTemplate.title
2621
+ });
2622
+ }
2623
+ const projectPath = await cloneTemplate({
2624
+ template: selectedTemplate,
2625
+ projectName
2626
+ });
2627
+ await installDependencies(projectPath);
2628
+ Me(`
2629
+ ${color2.green("Mastra template installed!")}
2630
+
2631
+ Add the necessary environment
2632
+ variables in your ${color2.cyan(".env")} file
2633
+ `);
2634
+ postCreate({ projectName });
2635
+ } catch (error) {
2636
+ M.error(`Failed to create project from template: ${error instanceof Error ? error.message : "Unknown error"}`);
2637
+ throw error;
2638
+ }
2639
+ }
2283
2640
 
2284
2641
  async function getPackageVersion() {
2285
2642
  const __filename = fileURLToPath(import.meta.url);
2286
2643
  const __dirname = dirname(__filename);
2287
- const pkgJsonPath = path2.join(__dirname, "..", "package.json");
2644
+ const pkgJsonPath = path3.join(__dirname, "..", "package.json");
2288
2645
  const content = await fsExtra.readJSON(pkgJsonPath);
2289
2646
  return content.version;
2290
2647
  }
@@ -2322,7 +2679,10 @@ program.version(`${version}`, "-v, --version").description(`create-mastra ${vers
2322
2679
  program.name("create-mastra").description("Create a new Mastra project").argument("[project-name]", "Directory name of the project").option(
2323
2680
  "-p, --project-name <string>",
2324
2681
  "Project name that will be used in package.json and as the project directory name."
2325
- ).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/)").option("-m, --mcp <mcp>", "MCP Server for code editor (cursor, cursor-global, windsurf, vscode)").action(async (projectNameArg, args) => {
2682
+ ).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)").option(
2683
+ "--template [template-name]",
2684
+ "Create project from a template (use template name, public GitHub URL, or leave blank to select from list)"
2685
+ ).action(async (projectNameArg, args) => {
2326
2686
  const projectName = projectNameArg || args.projectName;
2327
2687
  const timeout = args?.timeout ? args?.timeout === true ? 6e4 : parseInt(args?.timeout, 10) : void 0;
2328
2688
  if (args.default) {
@@ -2332,7 +2692,10 @@ program.name("create-mastra").description("Create a new Mastra project").argumen
2332
2692
  addExample: true,
2333
2693
  createVersionTag,
2334
2694
  timeout,
2335
- mcpServer: args.mcp
2695
+ mcpServer: args.mcp,
2696
+ directory: "src/",
2697
+ template: args.template,
2698
+ analytics
2336
2699
  });
2337
2700
  return;
2338
2701
  }
@@ -2345,7 +2708,9 @@ program.name("create-mastra").description("Create a new Mastra project").argumen
2345
2708
  timeout,
2346
2709
  projectName,
2347
2710
  directory: args.dir,
2348
- mcpServer: args.mcp
2711
+ mcpServer: args.mcp,
2712
+ template: args.template,
2713
+ analytics
2349
2714
  });
2350
2715
  });
2351
2716
  program.parse(process.argv);