create-mastra 0.0.0-vnextWorkflows-20250422142014 → 0.0.0-workflow-deno-20250616130925
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/README.md +0 -1
- package/dist/index.js +631 -232
- package/dist/index.js.map +1 -1
- package/dist/templates/dev.entry.js +1 -6
- package/package.json +13 -13
package/dist/index.js
CHANGED
|
@@ -4,7 +4,7 @@ import { randomUUID } from 'node:crypto';
|
|
|
4
4
|
import * as fs3__default from 'node:fs';
|
|
5
5
|
import fs3__default__default, { existsSync, readFileSync, writeFileSync } from 'node:fs';
|
|
6
6
|
import os from 'node:os';
|
|
7
|
-
import
|
|
7
|
+
import path2, { dirname } from 'node:path';
|
|
8
8
|
import { fileURLToPath } from 'node:url';
|
|
9
9
|
import { PostHog } from 'posthog-node';
|
|
10
10
|
import h, { stdin, stdout } from 'node:process';
|
|
@@ -17,13 +17,12 @@ import fs4 from 'node:fs/promises';
|
|
|
17
17
|
import { execa } from 'execa';
|
|
18
18
|
import fsExtra3, { readJSON, ensureFile, writeJSON } from 'fs-extra/esm';
|
|
19
19
|
import prettier from 'prettier';
|
|
20
|
-
import { Transform } from 'node:stream';
|
|
21
20
|
import pino from 'pino';
|
|
22
21
|
import pretty from 'pino-pretty';
|
|
23
22
|
import fsExtra from 'fs-extra';
|
|
24
23
|
|
|
25
24
|
var __filename = fileURLToPath(import.meta.url);
|
|
26
|
-
var __dirname =
|
|
25
|
+
var __dirname = path2.dirname(__filename);
|
|
27
26
|
var PosthogAnalytics = class {
|
|
28
27
|
sessionId;
|
|
29
28
|
client;
|
|
@@ -35,7 +34,7 @@ var PosthogAnalytics = class {
|
|
|
35
34
|
host = "https://app.posthog.com"
|
|
36
35
|
}) {
|
|
37
36
|
this.version = version;
|
|
38
|
-
const cliConfigPath =
|
|
37
|
+
const cliConfigPath = path2.join(__dirname, "mastra-cli.json");
|
|
39
38
|
if (existsSync(cliConfigPath)) {
|
|
40
39
|
try {
|
|
41
40
|
const { distinctId, sessionId } = JSON.parse(readFileSync(cliConfigPath, "utf-8"));
|
|
@@ -63,7 +62,7 @@ var PosthogAnalytics = class {
|
|
|
63
62
|
}
|
|
64
63
|
writeCliConfig({ distinctId, sessionId }) {
|
|
65
64
|
try {
|
|
66
|
-
writeFileSync(
|
|
65
|
+
writeFileSync(path2.join(__dirname, "mastra-cli.json"), JSON.stringify({ distinctId, sessionId }));
|
|
67
66
|
} catch {
|
|
68
67
|
}
|
|
69
68
|
}
|
|
@@ -349,8 +348,8 @@ function requirePicocolors () {
|
|
|
349
348
|
var picocolorsExports = /*@__PURE__*/ requirePicocolors();
|
|
350
349
|
var color2 = /*@__PURE__*/getDefaultExportFromCjs(picocolorsExports);
|
|
351
350
|
|
|
352
|
-
function q({onlyFirst:e=false}={}){const F=["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?(?:\\u0007|\\u001B\\u005C|\\u009C))","(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~]))"].join("|");return new RegExp(F,e?void 0:"g")}const J=q();function S(e){if(typeof e!="string")throw new TypeError(`Expected a \`string\`, got \`${typeof e}\``);return e.replace(J,"")}function T$1(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var j$1={exports:{}};(function(e){var u={};e.exports=u,u.eastAsianWidth=function(t){var s=t.charCodeAt(0),C=t.length==2?t.charCodeAt(1):0,D=s;return 55296<=s&&s<=56319&&56320<=C&&C<=57343&&(s&=1023,C&=1023,D=s<<10|C,D+=65536),D==12288||65281<=D&&D<=65376||65504<=D&&D<=65510?"F":D==8361||65377<=D&&D<=65470||65474<=D&&D<=65479||65482<=D&&D<=65487||65490<=D&&D<=65495||65498<=D&&D<=65500||65512<=D&&D<=65518?"H":4352<=D&&D<=4447||4515<=D&&D<=4519||4602<=D&&D<=4607||9001<=D&&D<=9002||11904<=D&&D<=11929||11931<=D&&D<=12019||12032<=D&&D<=12245||12272<=D&&D<=12283||12289<=D&&D<=12350||12353<=D&&D<=12438||12441<=D&&D<=12543||12549<=D&&D<=12589||12593<=D&&D<=12686||12688<=D&&D<=12730||12736<=D&&D<=12771||12784<=D&&D<=12830||12832<=D&&D<=12871||12880<=D&&D<=13054||13056<=D&&D<=19903||19968<=D&&D<=42124||42128<=D&&D<=42182||43360<=D&&D<=43388||44032<=D&&D<=55203||55216<=D&&D<=55238||55243<=D&&D<=55291||63744<=D&&D<=64255||65040<=D&&D<=65049||65072<=D&&D<=65106||65108<=D&&D<=65126||65128<=D&&D<=65131||110592<=D&&D<=110593||127488<=D&&D<=127490||127504<=D&&D<=127546||127552<=D&&D<=127560||127568<=D&&D<=127569||131072<=D&&D<=194367||177984<=D&&D<=196605||196608<=D&&D<=262141?"W":32<=D&&D<=126||162<=D&&D<=163||165<=D&&D<=166||D==172||D==175||10214<=D&&D<=10221||10629<=D&&D<=10630?"Na":D==161||D==164||167<=D&&D<=168||D==170||173<=D&&D<=174||176<=D&&D<=180||182<=D&&D<=186||188<=D&&D<=191||D==198||D==208||215<=D&&D<=216||222<=D&&D<=225||D==230||232<=D&&D<=234||236<=D&&D<=237||D==240||242<=D&&D<=243||247<=D&&D<=250||D==252||D==254||D==257||D==273||D==275||D==283||294<=D&&D<=295||D==299||305<=D&&D<=307||D==312||319<=D&&D<=322||D==324||328<=D&&D<=331||D==333||338<=D&&D<=339||358<=D&&D<=359||D==363||D==462||D==464||D==466||D==468||D==470||D==472||D==474||D==476||D==593||D==609||D==708||D==711||713<=D&&D<=715||D==717||D==720||728<=D&&D<=731||D==733||D==735||768<=D&&D<=879||913<=D&&D<=929||931<=D&&D<=937||945<=D&&D<=961||963<=D&&D<=969||D==1025||1040<=D&&D<=1103||D==1105||D==8208||8211<=D&&D<=8214||8216<=D&&D<=8217||8220<=D&&D<=8221||8224<=D&&D<=8226||8228<=D&&D<=8231||D==8240||8242<=D&&D<=8243||D==8245||D==8251||D==8254||D==8308||D==8319||8321<=D&&D<=8324||D==8364||D==8451||D==8453||D==8457||D==8467||D==8470||8481<=D&&D<=8482||D==8486||D==8491||8531<=D&&D<=8532||8539<=D&&D<=8542||8544<=D&&D<=8555||8560<=D&&D<=8569||D==8585||8592<=D&&D<=8601||8632<=D&&D<=8633||D==8658||D==8660||D==8679||D==8704||8706<=D&&D<=8707||8711<=D&&D<=8712||D==8715||D==8719||D==8721||D==8725||D==8730||8733<=D&&D<=8736||D==8739||D==8741||8743<=D&&D<=8748||D==8750||8756<=D&&D<=8759||8764<=D&&D<=8765||D==8776||D==8780||D==8786||8800<=D&&D<=8801||8804<=D&&D<=8807||8810<=D&&D<=8811||8814<=D&&D<=8815||8834<=D&&D<=8835||8838<=D&&D<=8839||D==8853||D==8857||D==8869||D==8895||D==8978||9312<=D&&D<=9449||9451<=D&&D<=9547||9552<=D&&D<=9587||9600<=D&&D<=9615||9618<=D&&D<=9621||9632<=D&&D<=9633||9635<=D&&D<=9641||9650<=D&&D<=9651||9654<=D&&D<=9655||9660<=D&&D<=9661||9664<=D&&D<=9665||9670<=D&&D<=9672||D==9675||9678<=D&&D<=9681||9698<=D&&D<=9701||D==9711||9733<=D&&D<=9734||D==9737||9742<=D&&D<=9743||9748<=D&&D<=9749||D==9756||D==9758||D==9792||D==9794||9824<=D&&D<=9825||9827<=D&&D<=9829||9831<=D&&D<=9834||9836<=D&&D<=9837||D==9839||9886<=D&&D<=9887||9918<=D&&D<=9919||9924<=D&&D<=9933||9935<=D&&D<=9953||D==9955||9960<=D&&D<=9983||D==10045||D==10071||10102<=D&&D<=10111||11093<=D&&D<=11097||12872<=D&&D<=12879||57344<=D&&D<=63743||65024<=D&&D<=65039||D==65533||127232<=D&&D<=127242||127248<=D&&D<=127277||127280<=D&&D<=127337||127344<=D&&D<=127386||917760<=D&&D<=917999||983040<=D&&D<=1048573||1048576<=D&&D<=1114109?"A":"N"},u.characterLength=function(t){var s=this.eastAsianWidth(t);return s=="F"||s=="W"||s=="A"?2:1};function F(t){return t.match(/[\uD800-\uDBFF][\uDC00-\uDFFF]|[^\uD800-\uDFFF]/g)||[]}u.length=function(t){for(var s=F(t),C=0,D=0;D<s.length;D++)C=C+this.characterLength(s[D]);return C},u.slice=function(t,s,C){textLen=u.length(t),s=s||0,C=C||1,s<0&&(s=textLen+s),C<0&&(C=textLen+C);for(var D="",i=0,n=F(t),E=0;E<n.length;E++){var h=n[E],o=u.length(h);if(i>=s-(o==2?1:0))if(i+o<=C)D+=h;else break;i+=o;}return D};})(j$1);var Q$1=j$1.exports;const X=T$1(Q$1);var DD=function(){return /\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62(?:\uDB40\uDC77\uDB40\uDC6C\uDB40\uDC73|\uDB40\uDC73\uDB40\uDC63\uDB40\uDC74|\uDB40\uDC65\uDB40\uDC6E\uDB40\uDC67)\uDB40\uDC7F|(?:\uD83E\uDDD1\uD83C\uDFFF\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFE])|(?:\uD83E\uDDD1\uD83C\uDFFE\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFD\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFC\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFB\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFC-\uDFFF])|\uD83D\uDC68(?:\uD83C\uDFFB(?:\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF]))|\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFC-\uDFFF])|[\u2695\u2696\u2708]\uFE0F|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))?|(?:\uD83C[\uDFFC-\uDFFF])\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF]))|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83D\uDC68|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFE])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])\uFE0F|\u200D(?:(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D[\uDC66\uDC67])|\uD83D[\uDC66\uDC67])|\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC)?|(?:\uD83D\uDC69(?:\uD83C\uDFFB\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|(?:\uD83C[\uDFFC-\uDFFF])\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69]))|\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1)(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC69(?:\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83E\uDDD1(?:\u200D(?:\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D[\uDC66\uDC67])|\uD83D\uDC69\u200D\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D\uDC41\uFE0F\u200D\uD83D\uDDE8|\uD83E\uDDD1(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|\uD83D\uDC69(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|\uD83D\uDE36\u200D\uD83C\uDF2B|\uD83C\uDFF3\uFE0F\u200D\u26A7|\uD83D\uDC3B\u200D\u2744|(?:(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF])\u200D[\u2640\u2642]|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|\uD83C\uDFF4\u200D\u2620|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])\u200D[\u2640\u2642]|[\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u2328\u23CF\u23ED-\u23EF\u23F1\u23F2\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB\u25FC\u2600-\u2604\u260E\u2611\u2618\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u2692\u2694-\u2697\u2699\u269B\u269C\u26A0\u26A7\u26B0\u26B1\u26C8\u26CF\u26D1\u26D3\u26E9\u26F0\u26F1\u26F4\u26F7\u26F8\u2702\u2708\u2709\u270F\u2712\u2714\u2716\u271D\u2721\u2733\u2734\u2744\u2747\u2763\u27A1\u2934\u2935\u2B05-\u2B07\u3030\u303D\u3297\u3299]|\uD83C[\uDD70\uDD71\uDD7E\uDD7F\uDE02\uDE37\uDF21\uDF24-\uDF2C\uDF36\uDF7D\uDF96\uDF97\uDF99-\uDF9B\uDF9E\uDF9F\uDFCD\uDFCE\uDFD4-\uDFDF\uDFF5\uDFF7]|\uD83D[\uDC3F\uDCFD\uDD49\uDD4A\uDD6F\uDD70\uDD73\uDD76-\uDD79\uDD87\uDD8A-\uDD8D\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA\uDECB\uDECD-\uDECF\uDEE0-\uDEE5\uDEE9\uDEF0\uDEF3])\uFE0F|\uD83C\uDFF3\uFE0F\u200D\uD83C\uDF08|\uD83D\uDC69\u200D\uD83D\uDC67|\uD83D\uDC69\u200D\uD83D\uDC66|\uD83D\uDE35\u200D\uD83D\uDCAB|\uD83D\uDE2E\u200D\uD83D\uDCA8|\uD83D\uDC15\u200D\uD83E\uDDBA|\uD83E\uDDD1(?:\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC|\uD83C\uDFFB)?|\uD83D\uDC69(?:\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC|\uD83C\uDFFB)?|\uD83C\uDDFD\uD83C\uDDF0|\uD83C\uDDF6\uD83C\uDDE6|\uD83C\uDDF4\uD83C\uDDF2|\uD83D\uDC08\u200D\u2B1B|\u2764\uFE0F\u200D(?:\uD83D\uDD25|\uD83E\uDE79)|\uD83D\uDC41\uFE0F|\uD83C\uDFF3\uFE0F|\uD83C\uDDFF(?:\uD83C[\uDDE6\uDDF2\uDDFC])|\uD83C\uDDFE(?:\uD83C[\uDDEA\uDDF9])|\uD83C\uDDFC(?:\uD83C[\uDDEB\uDDF8])|\uD83C\uDDFB(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA])|\uD83C\uDDFA(?:\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF])|\uD83C\uDDF9(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF])|\uD83C\uDDF8(?:\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF])|\uD83C\uDDF7(?:\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC])|\uD83C\uDDF5(?:\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE])|\uD83C\uDDF3(?:\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF])|\uD83C\uDDF2(?:\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF])|\uD83C\uDDF1(?:\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE])|\uD83C\uDDF0(?:\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF])|\uD83C\uDDEF(?:\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5])|\uD83C\uDDEE(?:\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9])|\uD83C\uDDED(?:\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA])|\uD83C\uDDEC(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE])|\uD83C\uDDEB(?:\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7])|\uD83C\uDDEA(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA])|\uD83C\uDDE9(?:\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF])|\uD83C\uDDE8(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF])|\uD83C\uDDE7(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF])|\uD83C\uDDE6(?:\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF])|[#\*0-9]\uFE0F\u20E3|\u2764\uFE0F|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])|\uD83C\uDFF4|(?:[\u270A\u270B]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5])(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u261D\u270C\u270D]|\uD83D[\uDD74\uDD90])(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])|[\u270A\u270B]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC08\uDC15\uDC3B\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE2E\uDE35\uDE36\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5]|\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD]|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF]|[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF84\uDF86-\uDF93\uDFA0-\uDFC1\uDFC5\uDFC6\uDFC8\uDFC9\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC07\uDC09-\uDC14\uDC16-\uDC3A\uDC3C-\uDC3E\uDC40\uDC44\uDC45\uDC51-\uDC65\uDC6A\uDC79-\uDC7B\uDC7D-\uDC80\uDC84\uDC88-\uDC8E\uDC90\uDC92-\uDCA9\uDCAB-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDDA4\uDDFB-\uDE2D\uDE2F-\uDE34\uDE37-\uDE44\uDE48-\uDE4A\uDE80-\uDEA2\uDEA4-\uDEB3\uDEB7-\uDEBF\uDEC1-\uDEC5\uDED0-\uDED2\uDED5-\uDED7\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0D\uDD0E\uDD10-\uDD17\uDD1D\uDD20-\uDD25\uDD27-\uDD2F\uDD3A\uDD3F-\uDD45\uDD47-\uDD76\uDD78\uDD7A-\uDDB4\uDDB7\uDDBA\uDDBC-\uDDCB\uDDD0\uDDE0-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6]|(?:[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u270A\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF93\uDFA0-\uDFCA\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF4\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC3E\uDC40\uDC42-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDD7A\uDD95\uDD96\uDDA4\uDDFB-\uDE4F\uDE80-\uDEC5\uDECC\uDED0-\uDED2\uDED5-\uDED7\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0C-\uDD3A\uDD3C-\uDD45\uDD47-\uDD78\uDD7A-\uDDCB\uDDCD-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6])|(?:[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26A7\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]|\uD83C[\uDC04\uDCCF\uDD70\uDD71\uDD7E\uDD7F\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE02\uDE1A\uDE2F\uDE32-\uDE3A\uDE50\uDE51\uDF00-\uDF21\uDF24-\uDF93\uDF96\uDF97\uDF99-\uDF9B\uDF9E-\uDFF0\uDFF3-\uDFF5\uDFF7-\uDFFF]|\uD83D[\uDC00-\uDCFD\uDCFF-\uDD3D\uDD49-\uDD4E\uDD50-\uDD67\uDD6F\uDD70\uDD73-\uDD7A\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA4\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED2\uDED5-\uDED7\uDEE0-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0C-\uDD3A\uDD3C-\uDD45\uDD47-\uDD78\uDD7A-\uDDCB\uDDCD-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6])\uFE0F|(?:[\u261D\u26F9\u270A-\u270D]|\uD83C[\uDF85\uDFC2-\uDFC4\uDFC7\uDFCA-\uDFCC]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66-\uDC78\uDC7C\uDC81-\uDC83\uDC85-\uDC87\uDC8F\uDC91\uDCAA\uDD74\uDD75\uDD7A\uDD90\uDD95\uDD96\uDE45-\uDE47\uDE4B-\uDE4F\uDEA3\uDEB4-\uDEB6\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1F\uDD26\uDD30-\uDD39\uDD3C-\uDD3E\uDD77\uDDB5\uDDB6\uDDB8\uDDB9\uDDBB\uDDCD-\uDDCF\uDDD1-\uDDDD])/g};const uD=T$1(DD);function A(e,u={}){if(typeof e!="string"||e.length===0||(u={ambiguousIsNarrow:true,...u},e=S(e),e.length===0))return 0;e=e.replace(uD()," ");const F=u.ambiguousIsNarrow?1:2;let t=0;for(const s of e){const C=s.codePointAt(0);if(C<=31||C>=127&&C<=159||C>=768&&C<=879)continue;switch(X.eastAsianWidth(s)){case "F":case "W":t+=2;break;case "A":t+=F;break;default:t+=1;}}return t}const d=10,M$1=(e=0)=>u=>`\x1B[${u+e}m`,P$1=(e=0)=>u=>`\x1B[${38+e};5;${u}m`,W=(e=0)=>(u,F,t)=>`\x1B[${38+e};2;${u};${F};${t}m`,r={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],overline:[53,55],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],gray:[90,39],grey:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgGray:[100,49],bgGrey:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}};Object.keys(r.modifier);const FD=Object.keys(r.color),eD=Object.keys(r.bgColor);[...FD,...eD];function tD(){const e=new Map;for(const[u,F]of Object.entries(r)){for(const[t,s]of Object.entries(F))r[t]={open:`\x1B[${s[0]}m`,close:`\x1B[${s[1]}m`},F[t]=r[t],e.set(s[0],s[1]);Object.defineProperty(r,u,{value:F,enumerable:false});}return Object.defineProperty(r,"codes",{value:e,enumerable:false}),r.color.close="\x1B[39m",r.bgColor.close="\x1B[49m",r.color.ansi=M$1(),r.color.ansi256=P$1(),r.color.ansi16m=W(),r.bgColor.ansi=M$1(d),r.bgColor.ansi256=P$1(d),r.bgColor.ansi16m=W(d),Object.defineProperties(r,{rgbToAnsi256:{value:(u,F,t)=>u===F&&F===t?u<8?16:u>248?231:Math.round((u-8)/247*24)+232:16+36*Math.round(u/255*5)+6*Math.round(F/255*5)+Math.round(t/255*5),enumerable:false},hexToRgb:{value:u=>{const F=/[a-f\d]{6}|[a-f\d]{3}/i.exec(u.toString(16));if(!F)return [0,0,0];let[t]=F;t.length===3&&(t=[...t].map(C=>C+C).join(""));const s=Number.parseInt(t,16);return [s>>16&255,s>>8&255,s&255]},enumerable:false},hexToAnsi256:{value:u=>r.rgbToAnsi256(...r.hexToRgb(u)),enumerable:false},ansi256ToAnsi:{value:u=>{if(u<8)return 30+u;if(u<16)return 90+(u-8);let F,t,s;if(u>=232)F=((u-232)*10+8)/255,t=F,s=F;else {u-=16;const i=u%36;F=Math.floor(u/36)/5,t=Math.floor(i/6)/5,s=i%6/5;}const C=Math.max(F,t,s)*2;if(C===0)return 30;let D=30+(Math.round(s)<<2|Math.round(t)<<1|Math.round(F));return C===2&&(D+=60),D},enumerable:false},rgbToAnsi:{value:(u,F,t)=>r.ansi256ToAnsi(r.rgbToAnsi256(u,F,t)),enumerable:false},hexToAnsi:{value:u=>r.ansi256ToAnsi(r.hexToAnsi256(u)),enumerable:false}}),r}const sD=tD(),g=new Set(["\x1B","\x9B"]),CD=39,b$1="\x07",O="[",iD="]",I$1="m",w=`${iD}8;;`,N=e=>`${g.values().next().value}${O}${e}${I$1}`,L=e=>`${g.values().next().value}${w}${e}${b$1}`,rD=e=>e.split(" ").map(u=>A(u)),y$1=(e,u,F)=>{const t=[...u];let s=false,C=false,D=A(S(e[e.length-1]));for(const[i,n]of t.entries()){const E=A(n);if(D+E<=F?e[e.length-1]+=n:(e.push(n),D=0),g.has(n)&&(s=true,C=t.slice(i+1).join("").startsWith(w)),s){C?n===b$1&&(s=false,C=false):n===I$1&&(s=false);continue}D+=E,D===F&&i<t.length-1&&(e.push(""),D=0);}!D&&e[e.length-1].length>0&&e.length>1&&(e[e.length-2]+=e.pop());},ED=e=>{const u=e.split(" ");let F=u.length;for(;F>0&&!(A(u[F-1])>0);)F--;return F===u.length?e:u.slice(0,F).join(" ")+u.slice(F).join("")},oD=(e,u,F={})=>{if(F.trim!==false&&e.trim()==="")return "";let t="",s,C;const D=rD(e);let i=[""];for(const[E,h]of e.split(" ").entries()){F.trim!==false&&(i[i.length-1]=i[i.length-1].trimStart());let o=A(i[i.length-1]);if(E!==0&&(o>=u&&(F.wordWrap===false||F.trim===false)&&(i.push(""),o=0),(o>0||F.trim===false)&&(i[i.length-1]+=" ",o++)),F.hard&&D[E]>u){const B=u-o,p=1+Math.floor((D[E]-B-1)/u);Math.floor((D[E]-1)/u)<p&&i.push(""),y$1(i,h,u);continue}if(o+D[E]>u&&o>0&&D[E]>0){if(F.wordWrap===false&&o<u){y$1(i,h,u);continue}i.push("");}if(o+D[E]>u&&F.wordWrap===false){y$1(i,h,u);continue}i[i.length-1]+=h;}F.trim!==false&&(i=i.map(E=>ED(E)));const n=[...i.join(`
|
|
353
|
-
`)];for(const[E,h]of n.entries()){if(t+=h,g.has(h)){const{groups:B}=new RegExp(`(?:\\${O}(?<code>\\d+)m|\\${w}(?<uri>.*)${b
|
|
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={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);var Q$1=j.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="\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}`,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&&(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})`).exec(n.slice(E).join(""))||{groups:{}};if(B.code!==void 0){const p=Number.parseFloat(B.code);s=p===CD?void 0:p;}else B.uri!==void 0&&(C=B.uri.length===0?void 0:B.uri);}const o=sD.codes.get(Number(s));n[E+1]===`
|
|
354
353
|
`?(C&&(t+=L("")),s&&o&&(t+=N(o))):h===`
|
|
355
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,`
|
|
356
355
|
`).split(`
|
|
@@ -362,9 +361,9 @@ function q({onlyFirst:e=false}={}){const F=["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(
|
|
|
362
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(`
|
|
363
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(`
|
|
364
363
|
`).slice(t);this.output.write(s.join(`
|
|
365
|
-
`)),this._prevFrame=u;return}this.output.write(srcExports.erase.down());}this.output.write(u),this.state==="initial"&&(this.state="active"),this._prevFrame=u;}}}
|
|
364
|
+
`)),this._prevFrame=u;return}this.output.write(srcExports.erase.down());}this.output.write(u),this.state==="initial"&&(this.state="active"),this._prevFrame=u;}}}var wD=Object.defineProperty,yD=(e,u,F)=>u in e?wD(e,u,{enumerable:true,configurable:true,writable:true,value:F}):e[u]=F,Z=(e,u,F)=>(yD(e,typeof u!="symbol"?u+"":u,F),F);let $D=class extends x{constructor(u){super(u,false),Z(this,"options"),Z(this,"cursor",0),this.options=u.options,this.cursor=this.options.findIndex(({value:F})=>F===u.initialValue),this.cursor===-1&&(this.cursor=0),this.changeValue(),this.on("cursor",F=>{switch(F){case "left":case "up":this.cursor=this.cursor===0?this.options.length-1:this.cursor-1;break;case "down":case "right":this.cursor=this.cursor===this.options.length-1?0:this.cursor+1;break}this.changeValue();});}get _value(){return this.options[this.cursor]}changeValue(){this.value=this._value.value;}};var TD=Object.defineProperty,jD=(e,u,F)=>u in e?TD(e,u,{enumerable:true,configurable:true,writable:true,value:F}):e[u]=F,MD=(e,u,F)=>(jD(e,u+"",F),F);class PD extends x{constructor(u){super(u),MD(this,"valueWithCursor",""),this.on("finalize",()=>{this.value||(this.value=u.defaultValue),this.valueWithCursor=this.value;}),this.on("value",()=>{if(this.cursor>=this.value.length)this.valueWithCursor=`${this.value}${color2.inverse(color2.hidden("_"))}`;else {const F=this.value.slice(0,this.cursor),t=this.value.slice(this.cursor);this.valueWithCursor=`${F}${color2.inverse(t[0])}${t.slice(1)}`;}});}get cursor(){return this._cursor}}const WD=globalThis.process.platform.startsWith("win");function OD({input:e=stdin,output:u=stdout,overwrite:F=true,hideCursor:t=true}={}){const s=f.createInterface({input:e,output:u,prompt:"",tabSize:1});f.emitKeypressEvents(e,s),e.isTTY&&e.setRawMode(true);const C=(D,{name:i})=>{if(String(D)===""){t&&u.write(srcExports.cursor.show),process.exit(0);return}if(!F)return;let n=i==="return"?0:-1,E=i==="return"?-1:0;f.moveCursor(u,n,E,()=>{f.clearLine(u,1,()=>{e.once("keypress",C);});});};return t&&u.write(srcExports.cursor.hide),e.once("keypress",C),()=>{e.off("keypress",C),t&&u.write(srcExports.cursor.show),e.isTTY&&!WD&&e.setRawMode(false),s.terminal=false,s.close();}}
|
|
366
365
|
|
|
367
|
-
function K(){return h.platform!=="win32"?h.env.TERM!=="linux":!!h.env.CI||!!h.env.WT_SESSION||!!h.env.TERMINUS_SUBLIME||h.env.ConEmuTask==="{cmd::Cmder}"||h.env.TERM_PROGRAM==="Terminus-Sublime"||h.env.TERM_PROGRAM==="vscode"||h.env.TERM==="xterm-256color"||h.env.TERM==="alacritty"||h.env.TERMINAL_EMULATOR==="JetBrains-JediTerm"}const C=K(),u=(s,n)=>C?s:n,Y=u("\u25C6","*"),P=u("\u25A0","x"),V=u("\u25B2","x"),M=u("\u25C7","o"),Q=u("\u250C","T"),a=u("\u2502","|"),$=u("\u2514","\u2014"),I=u("\u25CF",">"),T=u("\u25CB"," "),
|
|
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"," "),G=u("\u2500","-"),H=u("\u256E","+"),ee=u("\u251C","+"),te=u("\u256F","+"),se=u("\u25CF","\u2022"),re=u("\u25C6","*"),ie=u("\u25B2","!"),ne=u("\u25A0","x"),y=s=>{switch(s){case "initial":case "active":return color2.cyan(Y);case "cancel":return color2.red(P);case "error":return color2.yellow(V);case "submit":return color2.green(M)}},E=s=>{const{cursor:n,options:t,style:i}=s,r=s.maxItems??1/0,o=Math.max(process.stdout.rows-4,0),c=Math.min(o,Math.max(r,5));let l=0;n>=l+c-3?l=Math.max(Math.min(n-c+3,t.length-c),0):n<l+2&&(l=Math.max(n-2,0));const d=c<t.length&&l>0,p=c<t.length&&l+c<t.length;return t.slice(l,l+c).map((S,f,x)=>{const g=f===0&&d,m=f===x.length-1&&p;return g||m?color2.dim("..."):i(S,f+l===n)})},ae=s=>new PD({validate:s.validate,placeholder:s.placeholder,defaultValue:s.defaultValue,initialValue:s.initialValue,render(){const n=`${color2.gray(a)}
|
|
368
367
|
${y(this.state)} ${s.message}
|
|
369
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()}
|
|
370
369
|
${color2.yellow(a)} ${i}
|
|
@@ -372,29 +371,12 @@ ${color2.yellow($)} ${color2.yellow(this.error)}
|
|
|
372
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()?`
|
|
373
372
|
`+color2.gray(a):""}`;default:return `${n}${color2.cyan(a)} ${i}
|
|
374
373
|
${color2.cyan($)}
|
|
375
|
-
`}}}).prompt(),
|
|
376
|
-
${y(this.state)} ${s.message}
|
|
377
|
-
`,r=this.value?n:t;switch(this.state){case "submit":return `${i}${color2.gray(a)} ${color2.dim(r)}`;case "cancel":return `${i}${color2.gray(a)} ${color2.strikethrough(color2.dim(r))}
|
|
378
|
-
${color2.gray(a)}`;default:return `${i}${color2.cyan(a)} ${this.value?`${color2.green(I)} ${n}`:`${color2.dim(T)} ${color2.dim(n)}`} ${color2.dim("/")} ${this.value?`${color2.dim(T)} ${color2.dim(t)}`:`${color2.green(I)} ${t}`}
|
|
379
|
-
${color2.cyan($)}
|
|
380
|
-
`}}}).prompt()},le=s=>{const n=(t,i)=>{const r=t.label??String(t.value);switch(i){case "selected":return `${color2.dim(r)}`;case "active":return `${color2.green(I)} ${r} ${t.hint?color2.dim(`(${t.hint})`):""}`;case "cancelled":return `${color2.strikethrough(color2.dim(r))}`;default:return `${color2.dim(T)} ${color2.dim(r)}`}};return new $D({options:s.options,initialValue:s.initialValue,render(){const t=`${color2.gray(a)}
|
|
374
|
+
`}}}).prompt(),le=s=>{const n=(t,i)=>{const r=t.label??String(t.value);switch(i){case "selected":return `${color2.dim(r)}`;case "active":return `${color2.green(I)} ${r} ${t.hint?color2.dim(`(${t.hint})`):""}`;case "cancelled":return `${color2.strikethrough(color2.dim(r))}`;default:return `${color2.dim(T)} ${color2.dim(r)}`}};return new $D({options:s.options,initialValue:s.initialValue,render(){const t=`${color2.gray(a)}
|
|
381
375
|
${y(this.state)} ${s.message}
|
|
382
376
|
`;switch(this.state){case "submit":return `${t}${color2.gray(a)} ${n(this.options[this.cursor],"selected")}`;case "cancel":return `${t}${color2.gray(a)} ${n(this.options[this.cursor],"cancelled")}
|
|
383
377
|
${color2.gray(a)}`;default:return `${t}${color2.cyan(a)} ${E({cursor:this.cursor,options:this.options,maxItems:s.maxItems,style:(i,r)=>n(i,r?"active":"inactive")}).join(`
|
|
384
378
|
${color2.cyan(a)} `)}
|
|
385
379
|
${color2.cyan($)}
|
|
386
|
-
`}}}).prompt()},$e=s=>{const n=(t,i)=>{const r=t.label??String(t.value);return i==="active"?`${color2.cyan(j)} ${r} ${t.hint?color2.dim(`(${t.hint})`):""}`:i==="selected"?`${color2.green(b)} ${color2.dim(r)}`:i==="cancelled"?`${color2.strikethrough(color2.dim(r))}`:i==="active-selected"?`${color2.green(b)} ${r} ${t.hint?color2.dim(`(${t.hint})`):""}`:i==="submitted"?`${color2.dim(r)}`:`${color2.dim(B)} ${color2.dim(r)}`};return new vD({options:s.options,initialValues:s.initialValues,required:s.required??true,cursorAt:s.cursorAt,validate(t){if(this.required&&t.length===0)return `Please select at least one option.
|
|
387
|
-
${color2.reset(color2.dim(`Press ${color2.gray(color2.bgWhite(color2.inverse(" space ")))} to select, ${color2.gray(color2.bgWhite(color2.inverse(" enter ")))} to submit`))}`},render(){let t=`${color2.gray(a)}
|
|
388
|
-
${y(this.state)} ${s.message}
|
|
389
|
-
`;const i=(r,o)=>{const c=this.value.includes(r.value);return o&&c?n(r,"active-selected"):c?n(r,"selected"):n(r,o?"active":"inactive")};switch(this.state){case "submit":return `${t}${color2.gray(a)} ${this.options.filter(({value:r})=>this.value.includes(r)).map(r=>n(r,"submitted")).join(color2.dim(", "))||color2.dim("none")}`;case "cancel":{const r=this.options.filter(({value:o})=>this.value.includes(o)).map(o=>n(o,"cancelled")).join(color2.dim(", "));return `${t}${color2.gray(a)} ${r.trim()?`${r}
|
|
390
|
-
${color2.gray(a)}`:""}`}case "error":{const r=this.error.split(`
|
|
391
|
-
`).map((o,c)=>c===0?`${color2.yellow($)} ${color2.yellow(o)}`:` ${o}`).join(`
|
|
392
|
-
`);return t+color2.yellow(a)+" "+E({options:this.options,cursor:this.cursor,maxItems:s.maxItems,style:i}).join(`
|
|
393
|
-
${color2.yellow(a)} `)+`
|
|
394
|
-
`+r+`
|
|
395
|
-
`}default:return `${t}${color2.cyan(a)} ${E({options:this.options,cursor:this.cursor,maxItems:s.maxItems,style:i}).join(`
|
|
396
|
-
${color2.cyan(a)} `)}
|
|
397
|
-
${color2.cyan($)}
|
|
398
380
|
`}}}).prompt()},R=s=>s.replace(ye(),""),me=(s="",n="")=>{const t=`
|
|
399
381
|
${s}
|
|
400
382
|
`.split(`
|
|
@@ -416,6 +398,283 @@ ${color2.gray($)} ${s}
|
|
|
416
398
|
`);let m=0,w=0;p(),i=setInterval(()=>{const L=color2.magenta(s[m]),O=".".repeat(Math.floor(w)).slice(0,3);process.stdout.write(srcExports.cursor.move(-999,0)),process.stdout.write(srcExports.erase.down(1)),process.stdout.write(`${L} ${o}${O}`),m=m+1<s.length?m+1:0,w=w<s.length?w+.125:0;},n);},x=(g="",m=0)=>{o=g??o,r=false,clearInterval(i);const w=m===0?color2.green(M):m===1?color2.red(P):color2.red(V);process.stdout.write(srcExports.cursor.move(-999,0)),process.stdout.write(srcExports.erase.down(1)),process.stdout.write(`${w} ${o}
|
|
417
399
|
`),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
400
|
|
|
401
|
+
var shellQuote$1 = {};
|
|
402
|
+
|
|
403
|
+
var quote;
|
|
404
|
+
var hasRequiredQuote;
|
|
405
|
+
|
|
406
|
+
function requireQuote () {
|
|
407
|
+
if (hasRequiredQuote) return quote;
|
|
408
|
+
hasRequiredQuote = 1;
|
|
409
|
+
|
|
410
|
+
quote = function quote(xs) {
|
|
411
|
+
return xs.map(function (s) {
|
|
412
|
+
if (s === '') {
|
|
413
|
+
return '\'\'';
|
|
414
|
+
}
|
|
415
|
+
if (s && typeof s === 'object') {
|
|
416
|
+
return s.op.replace(/(.)/g, '\\$1');
|
|
417
|
+
}
|
|
418
|
+
if ((/["\s\\]/).test(s) && !(/'/).test(s)) {
|
|
419
|
+
return "'" + s.replace(/(['])/g, '\\$1') + "'";
|
|
420
|
+
}
|
|
421
|
+
if ((/["'\s]/).test(s)) {
|
|
422
|
+
return '"' + s.replace(/(["\\$`!])/g, '\\$1') + '"';
|
|
423
|
+
}
|
|
424
|
+
return String(s).replace(/([A-Za-z]:)?([#!"$&'()*,:;<=>?@[\\\]^`{|}])/g, '$1\\$2');
|
|
425
|
+
}).join(' ');
|
|
426
|
+
};
|
|
427
|
+
return quote;
|
|
428
|
+
}
|
|
429
|
+
|
|
430
|
+
var parse;
|
|
431
|
+
var hasRequiredParse;
|
|
432
|
+
|
|
433
|
+
function requireParse () {
|
|
434
|
+
if (hasRequiredParse) return parse;
|
|
435
|
+
hasRequiredParse = 1;
|
|
436
|
+
|
|
437
|
+
// '<(' is process substitution operator and
|
|
438
|
+
// can be parsed the same as control operator
|
|
439
|
+
var CONTROL = '(?:' + [
|
|
440
|
+
'\\|\\|',
|
|
441
|
+
'\\&\\&',
|
|
442
|
+
';;',
|
|
443
|
+
'\\|\\&',
|
|
444
|
+
'\\<\\(',
|
|
445
|
+
'\\<\\<\\<',
|
|
446
|
+
'>>',
|
|
447
|
+
'>\\&',
|
|
448
|
+
'<\\&',
|
|
449
|
+
'[&;()|<>]'
|
|
450
|
+
].join('|') + ')';
|
|
451
|
+
var controlRE = new RegExp('^' + CONTROL + '$');
|
|
452
|
+
var META = '|&;()<> \\t';
|
|
453
|
+
var SINGLE_QUOTE = '"((\\\\"|[^"])*?)"';
|
|
454
|
+
var DOUBLE_QUOTE = '\'((\\\\\'|[^\'])*?)\'';
|
|
455
|
+
var hash = /^#$/;
|
|
456
|
+
|
|
457
|
+
var SQ = "'";
|
|
458
|
+
var DQ = '"';
|
|
459
|
+
var DS = '$';
|
|
460
|
+
|
|
461
|
+
var TOKEN = '';
|
|
462
|
+
var mult = 0x100000000; // Math.pow(16, 8);
|
|
463
|
+
for (var i = 0; i < 4; i++) {
|
|
464
|
+
TOKEN += (mult * Math.random()).toString(16);
|
|
465
|
+
}
|
|
466
|
+
var startsWithToken = new RegExp('^' + TOKEN);
|
|
467
|
+
|
|
468
|
+
function matchAll(s, r) {
|
|
469
|
+
var origIndex = r.lastIndex;
|
|
470
|
+
|
|
471
|
+
var matches = [];
|
|
472
|
+
var matchObj;
|
|
473
|
+
|
|
474
|
+
while ((matchObj = r.exec(s))) {
|
|
475
|
+
matches.push(matchObj);
|
|
476
|
+
if (r.lastIndex === matchObj.index) {
|
|
477
|
+
r.lastIndex += 1;
|
|
478
|
+
}
|
|
479
|
+
}
|
|
480
|
+
|
|
481
|
+
r.lastIndex = origIndex;
|
|
482
|
+
|
|
483
|
+
return matches;
|
|
484
|
+
}
|
|
485
|
+
|
|
486
|
+
function getVar(env, pre, key) {
|
|
487
|
+
var r = typeof env === 'function' ? env(key) : env[key];
|
|
488
|
+
if (typeof r === 'undefined' && key != '') {
|
|
489
|
+
r = '';
|
|
490
|
+
} else if (typeof r === 'undefined') {
|
|
491
|
+
r = '$';
|
|
492
|
+
}
|
|
493
|
+
|
|
494
|
+
if (typeof r === 'object') {
|
|
495
|
+
return pre + TOKEN + JSON.stringify(r) + TOKEN;
|
|
496
|
+
}
|
|
497
|
+
return pre + r;
|
|
498
|
+
}
|
|
499
|
+
|
|
500
|
+
function parseInternal(string, env, opts) {
|
|
501
|
+
if (!opts) {
|
|
502
|
+
opts = {};
|
|
503
|
+
}
|
|
504
|
+
var BS = opts.escape || '\\';
|
|
505
|
+
var BAREWORD = '(\\' + BS + '[\'"' + META + ']|[^\\s\'"' + META + '])+';
|
|
506
|
+
|
|
507
|
+
var chunker = new RegExp([
|
|
508
|
+
'(' + CONTROL + ')', // control chars
|
|
509
|
+
'(' + BAREWORD + '|' + SINGLE_QUOTE + '|' + DOUBLE_QUOTE + ')+'
|
|
510
|
+
].join('|'), 'g');
|
|
511
|
+
|
|
512
|
+
var matches = matchAll(string, chunker);
|
|
513
|
+
|
|
514
|
+
if (matches.length === 0) {
|
|
515
|
+
return [];
|
|
516
|
+
}
|
|
517
|
+
if (!env) {
|
|
518
|
+
env = {};
|
|
519
|
+
}
|
|
520
|
+
|
|
521
|
+
var commented = false;
|
|
522
|
+
|
|
523
|
+
return matches.map(function (match) {
|
|
524
|
+
var s = match[0];
|
|
525
|
+
if (!s || commented) {
|
|
526
|
+
return void undefined;
|
|
527
|
+
}
|
|
528
|
+
if (controlRE.test(s)) {
|
|
529
|
+
return { op: s };
|
|
530
|
+
}
|
|
531
|
+
|
|
532
|
+
// Hand-written scanner/parser for Bash quoting rules:
|
|
533
|
+
//
|
|
534
|
+
// 1. inside single quotes, all characters are printed literally.
|
|
535
|
+
// 2. inside double quotes, all characters are printed literally
|
|
536
|
+
// except variables prefixed by '$' and backslashes followed by
|
|
537
|
+
// either a double quote or another backslash.
|
|
538
|
+
// 3. outside of any quotes, backslashes are treated as escape
|
|
539
|
+
// characters and not printed (unless they are themselves escaped)
|
|
540
|
+
// 4. quote context can switch mid-token if there is no whitespace
|
|
541
|
+
// between the two quote contexts (e.g. all'one'"token" parses as
|
|
542
|
+
// "allonetoken")
|
|
543
|
+
var quote = false;
|
|
544
|
+
var esc = false;
|
|
545
|
+
var out = '';
|
|
546
|
+
var isGlob = false;
|
|
547
|
+
var i;
|
|
548
|
+
|
|
549
|
+
function parseEnvVar() {
|
|
550
|
+
i += 1;
|
|
551
|
+
var varend;
|
|
552
|
+
var varname;
|
|
553
|
+
var char = s.charAt(i);
|
|
554
|
+
|
|
555
|
+
if (char === '{') {
|
|
556
|
+
i += 1;
|
|
557
|
+
if (s.charAt(i) === '}') {
|
|
558
|
+
throw new Error('Bad substitution: ' + s.slice(i - 2, i + 1));
|
|
559
|
+
}
|
|
560
|
+
varend = s.indexOf('}', i);
|
|
561
|
+
if (varend < 0) {
|
|
562
|
+
throw new Error('Bad substitution: ' + s.slice(i));
|
|
563
|
+
}
|
|
564
|
+
varname = s.slice(i, varend);
|
|
565
|
+
i = varend;
|
|
566
|
+
} else if ((/[*@#?$!_-]/).test(char)) {
|
|
567
|
+
varname = char;
|
|
568
|
+
i += 1;
|
|
569
|
+
} else {
|
|
570
|
+
var slicedFromI = s.slice(i);
|
|
571
|
+
varend = slicedFromI.match(/[^\w\d_]/);
|
|
572
|
+
if (!varend) {
|
|
573
|
+
varname = slicedFromI;
|
|
574
|
+
i = s.length;
|
|
575
|
+
} else {
|
|
576
|
+
varname = slicedFromI.slice(0, varend.index);
|
|
577
|
+
i += varend.index - 1;
|
|
578
|
+
}
|
|
579
|
+
}
|
|
580
|
+
return getVar(env, '', varname);
|
|
581
|
+
}
|
|
582
|
+
|
|
583
|
+
for (i = 0; i < s.length; i++) {
|
|
584
|
+
var c = s.charAt(i);
|
|
585
|
+
isGlob = isGlob || (!quote && (c === '*' || c === '?'));
|
|
586
|
+
if (esc) {
|
|
587
|
+
out += c;
|
|
588
|
+
esc = false;
|
|
589
|
+
} else if (quote) {
|
|
590
|
+
if (c === quote) {
|
|
591
|
+
quote = false;
|
|
592
|
+
} else if (quote == SQ) {
|
|
593
|
+
out += c;
|
|
594
|
+
} else { // Double quote
|
|
595
|
+
if (c === BS) {
|
|
596
|
+
i += 1;
|
|
597
|
+
c = s.charAt(i);
|
|
598
|
+
if (c === DQ || c === BS || c === DS) {
|
|
599
|
+
out += c;
|
|
600
|
+
} else {
|
|
601
|
+
out += BS + c;
|
|
602
|
+
}
|
|
603
|
+
} else if (c === DS) {
|
|
604
|
+
out += parseEnvVar();
|
|
605
|
+
} else {
|
|
606
|
+
out += c;
|
|
607
|
+
}
|
|
608
|
+
}
|
|
609
|
+
} else if (c === DQ || c === SQ) {
|
|
610
|
+
quote = c;
|
|
611
|
+
} else if (controlRE.test(c)) {
|
|
612
|
+
return { op: s };
|
|
613
|
+
} else if (hash.test(c)) {
|
|
614
|
+
commented = true;
|
|
615
|
+
var commentObj = { comment: string.slice(match.index + i + 1) };
|
|
616
|
+
if (out.length) {
|
|
617
|
+
return [out, commentObj];
|
|
618
|
+
}
|
|
619
|
+
return [commentObj];
|
|
620
|
+
} else if (c === BS) {
|
|
621
|
+
esc = true;
|
|
622
|
+
} else if (c === DS) {
|
|
623
|
+
out += parseEnvVar();
|
|
624
|
+
} else {
|
|
625
|
+
out += c;
|
|
626
|
+
}
|
|
627
|
+
}
|
|
628
|
+
|
|
629
|
+
if (isGlob) {
|
|
630
|
+
return { op: 'glob', pattern: out };
|
|
631
|
+
}
|
|
632
|
+
|
|
633
|
+
return out;
|
|
634
|
+
}).reduce(function (prev, arg) { // finalize parsed arguments
|
|
635
|
+
// TODO: replace this whole reduce with a concat
|
|
636
|
+
return typeof arg === 'undefined' ? prev : prev.concat(arg);
|
|
637
|
+
}, []);
|
|
638
|
+
}
|
|
639
|
+
|
|
640
|
+
parse = function parse(s, env, opts) {
|
|
641
|
+
var mapped = parseInternal(s, env, opts);
|
|
642
|
+
if (typeof env !== 'function') {
|
|
643
|
+
return mapped;
|
|
644
|
+
}
|
|
645
|
+
return mapped.reduce(function (acc, s) {
|
|
646
|
+
if (typeof s === 'object') {
|
|
647
|
+
return acc.concat(s);
|
|
648
|
+
}
|
|
649
|
+
var xs = s.split(RegExp('(' + TOKEN + '.*?' + TOKEN + ')', 'g'));
|
|
650
|
+
if (xs.length === 1) {
|
|
651
|
+
return acc.concat(xs[0]);
|
|
652
|
+
}
|
|
653
|
+
return acc.concat(xs.filter(Boolean).map(function (x) {
|
|
654
|
+
if (startsWithToken.test(x)) {
|
|
655
|
+
return JSON.parse(x.split(TOKEN)[1]);
|
|
656
|
+
}
|
|
657
|
+
return x;
|
|
658
|
+
}));
|
|
659
|
+
}, []);
|
|
660
|
+
};
|
|
661
|
+
return parse;
|
|
662
|
+
}
|
|
663
|
+
|
|
664
|
+
var hasRequiredShellQuote;
|
|
665
|
+
|
|
666
|
+
function requireShellQuote () {
|
|
667
|
+
if (hasRequiredShellQuote) return shellQuote$1;
|
|
668
|
+
hasRequiredShellQuote = 1;
|
|
669
|
+
|
|
670
|
+
shellQuote$1.quote = requireQuote();
|
|
671
|
+
shellQuote$1.parse = requireParse();
|
|
672
|
+
return shellQuote$1;
|
|
673
|
+
}
|
|
674
|
+
|
|
675
|
+
var shellQuoteExports = requireShellQuote();
|
|
676
|
+
var shellQuote = /*@__PURE__*/getDefaultExportFromCjs(shellQuoteExports);
|
|
677
|
+
|
|
419
678
|
// eslint-disable-next-line no-warning-comments
|
|
420
679
|
// TODO: Use a better method when it's added to Node.js (https://github.com/nodejs/node/pull/40240)
|
|
421
680
|
// Lots of optionals here to support Deno.
|
|
@@ -789,46 +1048,88 @@ function yoctoSpinner(options) {
|
|
|
789
1048
|
}
|
|
790
1049
|
|
|
791
1050
|
var LogLevel = {
|
|
792
|
-
INFO: "info"
|
|
793
|
-
|
|
794
|
-
|
|
1051
|
+
INFO: "info",
|
|
1052
|
+
ERROR: "error"};
|
|
1053
|
+
var MastraLogger = class {
|
|
1054
|
+
name;
|
|
1055
|
+
level;
|
|
795
1056
|
transports;
|
|
796
1057
|
constructor(options = {}) {
|
|
797
|
-
this.
|
|
798
|
-
|
|
1058
|
+
this.name = options.name || "Mastra";
|
|
1059
|
+
this.level = options.level || LogLevel.ERROR;
|
|
1060
|
+
this.transports = new Map(Object.entries(options.transports || {}));
|
|
1061
|
+
}
|
|
1062
|
+
getTransports() {
|
|
1063
|
+
return this.transports;
|
|
1064
|
+
}
|
|
1065
|
+
trackException(_error) {
|
|
1066
|
+
}
|
|
1067
|
+
async getLogs(transportId, params) {
|
|
1068
|
+
if (!transportId || !this.transports.has(transportId)) {
|
|
1069
|
+
return { logs: [], total: 0, page: params?.page ?? 1, perPage: params?.perPage ?? 100, hasMore: false };
|
|
1070
|
+
}
|
|
1071
|
+
return this.transports.get(transportId).getLogs(params) ?? {
|
|
1072
|
+
logs: [],
|
|
1073
|
+
total: 0,
|
|
1074
|
+
page: params?.page ?? 1,
|
|
1075
|
+
perPage: params?.perPage ?? 100,
|
|
1076
|
+
hasMore: false
|
|
1077
|
+
};
|
|
1078
|
+
}
|
|
1079
|
+
async getLogsByRunId({
|
|
1080
|
+
transportId,
|
|
1081
|
+
runId,
|
|
1082
|
+
fromDate,
|
|
1083
|
+
toDate,
|
|
1084
|
+
logLevel,
|
|
1085
|
+
filters,
|
|
1086
|
+
page,
|
|
1087
|
+
perPage
|
|
1088
|
+
}) {
|
|
1089
|
+
if (!transportId || !this.transports.has(transportId) || !runId) {
|
|
1090
|
+
return { logs: [], total: 0, page: page ?? 1, perPage: perPage ?? 100, hasMore: false };
|
|
1091
|
+
}
|
|
1092
|
+
return this.transports.get(transportId).getLogsByRunId({ runId, fromDate, toDate, logLevel, filters, page, perPage }) ?? {
|
|
1093
|
+
logs: [],
|
|
1094
|
+
total: 0,
|
|
1095
|
+
page: page ?? 1,
|
|
1096
|
+
perPage: perPage ?? 100,
|
|
1097
|
+
hasMore: false
|
|
1098
|
+
};
|
|
1099
|
+
}
|
|
1100
|
+
};
|
|
1101
|
+
|
|
1102
|
+
var PinoLogger = class extends MastraLogger {
|
|
1103
|
+
logger;
|
|
1104
|
+
constructor(options = {}) {
|
|
1105
|
+
super(options);
|
|
1106
|
+
let prettyStream = void 0;
|
|
1107
|
+
if (!options.overrideDefaultTransports) {
|
|
1108
|
+
prettyStream = pretty({
|
|
1109
|
+
colorize: true,
|
|
1110
|
+
levelFirst: true,
|
|
1111
|
+
ignore: "pid,hostname",
|
|
1112
|
+
colorizeObjects: true,
|
|
1113
|
+
translateTime: "SYS:standard",
|
|
1114
|
+
singleLine: false
|
|
1115
|
+
});
|
|
1116
|
+
}
|
|
1117
|
+
const transportsAry = [...this.getTransports().entries()];
|
|
799
1118
|
this.logger = pino(
|
|
800
1119
|
{
|
|
801
1120
|
name: options.name || "app",
|
|
802
1121
|
level: options.level || LogLevel.INFO,
|
|
803
1122
|
formatters: {
|
|
804
|
-
level: (label) => {
|
|
805
|
-
return {
|
|
806
|
-
level: label
|
|
807
|
-
};
|
|
808
|
-
}
|
|
1123
|
+
level: (label) => ({ level: label })
|
|
809
1124
|
}
|
|
810
1125
|
},
|
|
811
|
-
options.overrideDefaultTransports ? options?.transports?.default : transportsAry.length === 0 ?
|
|
812
|
-
colorize: true,
|
|
813
|
-
levelFirst: true,
|
|
814
|
-
ignore: "pid,hostname",
|
|
815
|
-
colorizeObjects: true,
|
|
816
|
-
translateTime: "SYS:standard",
|
|
817
|
-
singleLine: false
|
|
818
|
-
}) : pino.multistream([
|
|
1126
|
+
options.overrideDefaultTransports ? options?.transports?.default : transportsAry.length === 0 ? prettyStream : pino.multistream([
|
|
819
1127
|
...transportsAry.map(([, transport]) => ({
|
|
820
1128
|
stream: transport,
|
|
821
1129
|
level: options.level || LogLevel.INFO
|
|
822
1130
|
})),
|
|
823
1131
|
{
|
|
824
|
-
stream:
|
|
825
|
-
colorize: true,
|
|
826
|
-
levelFirst: true,
|
|
827
|
-
ignore: "pid,hostname",
|
|
828
|
-
colorizeObjects: true,
|
|
829
|
-
translateTime: "SYS:standard",
|
|
830
|
-
singleLine: false
|
|
831
|
-
}),
|
|
1132
|
+
stream: prettyStream,
|
|
832
1133
|
level: options.level || LogLevel.INFO
|
|
833
1134
|
}
|
|
834
1135
|
])
|
|
@@ -846,31 +1147,7 @@ var Logger = class {
|
|
|
846
1147
|
error(message, args = {}) {
|
|
847
1148
|
this.logger.error(args, message);
|
|
848
1149
|
}
|
|
849
|
-
// Stream creation for process output handling
|
|
850
|
-
createStream() {
|
|
851
|
-
return new Transform({
|
|
852
|
-
transform: (chunk, _encoding, callback) => {
|
|
853
|
-
const line = chunk.toString().trim();
|
|
854
|
-
if (line) {
|
|
855
|
-
this.info(line);
|
|
856
|
-
}
|
|
857
|
-
callback(null, chunk);
|
|
858
|
-
}
|
|
859
|
-
});
|
|
860
|
-
}
|
|
861
|
-
async getLogs(transportId) {
|
|
862
|
-
if (!transportId || !this.transports[transportId]) {
|
|
863
|
-
return [];
|
|
864
|
-
}
|
|
865
|
-
return this.transports[transportId].getLogs();
|
|
866
|
-
}
|
|
867
|
-
async getLogsByRunId({ runId, transportId }) {
|
|
868
|
-
return this.transports[transportId]?.getLogsByRunId({ runId });
|
|
869
|
-
}
|
|
870
1150
|
};
|
|
871
|
-
function createLogger(options) {
|
|
872
|
-
return new Logger(options);
|
|
873
|
-
}
|
|
874
1151
|
|
|
875
1152
|
var DepsService = class {
|
|
876
1153
|
packageManager;
|
|
@@ -880,11 +1157,11 @@ var DepsService = class {
|
|
|
880
1157
|
findLockFile(dir) {
|
|
881
1158
|
const lockFiles = ["pnpm-lock.yaml", "package-lock.json", "yarn.lock", "bun.lock"];
|
|
882
1159
|
for (const file of lockFiles) {
|
|
883
|
-
if (fs3__default__default.existsSync(
|
|
1160
|
+
if (fs3__default__default.existsSync(path2.join(dir, file))) {
|
|
884
1161
|
return file;
|
|
885
1162
|
}
|
|
886
1163
|
}
|
|
887
|
-
const parentDir =
|
|
1164
|
+
const parentDir = path2.resolve(dir, "..");
|
|
888
1165
|
if (parentDir !== dir) {
|
|
889
1166
|
return this.findLockFile(parentDir);
|
|
890
1167
|
}
|
|
@@ -921,7 +1198,7 @@ var DepsService = class {
|
|
|
921
1198
|
}
|
|
922
1199
|
async checkDependencies(dependencies) {
|
|
923
1200
|
try {
|
|
924
|
-
const packageJsonPath =
|
|
1201
|
+
const packageJsonPath = path2.join(process.cwd(), "package.json");
|
|
925
1202
|
try {
|
|
926
1203
|
await fs4.access(packageJsonPath);
|
|
927
1204
|
} catch {
|
|
@@ -941,7 +1218,7 @@ var DepsService = class {
|
|
|
941
1218
|
}
|
|
942
1219
|
async getProjectName() {
|
|
943
1220
|
try {
|
|
944
|
-
const packageJsonPath =
|
|
1221
|
+
const packageJsonPath = path2.join(process.cwd(), "package.json");
|
|
945
1222
|
const packageJson = await fs4.readFile(packageJsonPath, "utf-8");
|
|
946
1223
|
const pkg = JSON.parse(packageJson);
|
|
947
1224
|
return pkg.name;
|
|
@@ -952,7 +1229,7 @@ var DepsService = class {
|
|
|
952
1229
|
async getPackageVersion() {
|
|
953
1230
|
const __filename = fileURLToPath(import.meta.url);
|
|
954
1231
|
const __dirname = dirname(__filename);
|
|
955
|
-
const pkgJsonPath =
|
|
1232
|
+
const pkgJsonPath = path2.join(__dirname, "..", "package.json");
|
|
956
1233
|
const content = await fsExtra3.readJSON(pkgJsonPath);
|
|
957
1234
|
return content.version;
|
|
958
1235
|
}
|
|
@@ -1000,57 +1277,115 @@ function getPackageManagerInstallCommand(pm) {
|
|
|
1000
1277
|
return "install";
|
|
1001
1278
|
}
|
|
1002
1279
|
}
|
|
1003
|
-
var args = ["-y", "@mastra/mcp-docs-server
|
|
1004
|
-
var
|
|
1005
|
-
|
|
1006
|
-
|
|
1007
|
-
|
|
1008
|
-
|
|
1009
|
-
|
|
1010
|
-
|
|
1011
|
-
|
|
1012
|
-
|
|
1280
|
+
var args = ["-y", "@mastra/mcp-docs-server"];
|
|
1281
|
+
var createMcpConfig = (editor) => {
|
|
1282
|
+
if (editor === "vscode") {
|
|
1283
|
+
return {
|
|
1284
|
+
servers: {
|
|
1285
|
+
mastra: process.platform === `win32` ? {
|
|
1286
|
+
command: "cmd",
|
|
1287
|
+
args: ["/c", "npx", ...args],
|
|
1288
|
+
type: "stdio"
|
|
1289
|
+
} : {
|
|
1290
|
+
command: "npx",
|
|
1291
|
+
args,
|
|
1292
|
+
type: "stdio"
|
|
1293
|
+
}
|
|
1294
|
+
}
|
|
1295
|
+
};
|
|
1013
1296
|
}
|
|
1297
|
+
return {
|
|
1298
|
+
mcpServers: {
|
|
1299
|
+
mastra: {
|
|
1300
|
+
command: "npx",
|
|
1301
|
+
args
|
|
1302
|
+
}
|
|
1303
|
+
}
|
|
1304
|
+
};
|
|
1014
1305
|
};
|
|
1015
|
-
function makeConfig(original) {
|
|
1306
|
+
function makeConfig(original, editor) {
|
|
1307
|
+
if (editor === "vscode") {
|
|
1308
|
+
return {
|
|
1309
|
+
...original,
|
|
1310
|
+
servers: {
|
|
1311
|
+
...original?.servers || {},
|
|
1312
|
+
...createMcpConfig(editor).servers
|
|
1313
|
+
}
|
|
1314
|
+
};
|
|
1315
|
+
}
|
|
1016
1316
|
return {
|
|
1017
1317
|
...original,
|
|
1018
1318
|
mcpServers: {
|
|
1019
1319
|
...original?.mcpServers || {},
|
|
1020
|
-
...
|
|
1320
|
+
...createMcpConfig(editor).mcpServers
|
|
1021
1321
|
}
|
|
1022
1322
|
};
|
|
1023
1323
|
}
|
|
1024
|
-
async function writeMergedConfig(configPath) {
|
|
1324
|
+
async function writeMergedConfig(configPath, editor) {
|
|
1025
1325
|
const configExists = existsSync(configPath);
|
|
1026
|
-
const config = makeConfig(configExists ? await readJSON(configPath) : {});
|
|
1326
|
+
const config = makeConfig(configExists ? await readJSON(configPath) : {}, editor);
|
|
1027
1327
|
await ensureFile(configPath);
|
|
1028
1328
|
await writeJSON(configPath, config, {
|
|
1029
1329
|
spaces: 2
|
|
1030
1330
|
});
|
|
1031
1331
|
}
|
|
1032
|
-
var windsurfGlobalMCPConfigPath =
|
|
1033
|
-
|
|
1034
|
-
|
|
1035
|
-
|
|
1036
|
-
|
|
1037
|
-
|
|
1038
|
-
|
|
1039
|
-
|
|
1332
|
+
var windsurfGlobalMCPConfigPath = path2.join(os.homedir(), ".codeium", "windsurf", "mcp_config.json");
|
|
1333
|
+
var cursorGlobalMCPConfigPath = path2.join(os.homedir(), ".cursor", "mcp.json");
|
|
1334
|
+
path2.join(process.cwd(), ".vscode", "mcp.json");
|
|
1335
|
+
var vscodeGlobalMCPConfigPath = path2.join(
|
|
1336
|
+
os.homedir(),
|
|
1337
|
+
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")
|
|
1338
|
+
);
|
|
1339
|
+
async function installMastraDocsMCPServer({ editor, directory }) {
|
|
1340
|
+
if (editor === `cursor`) {
|
|
1341
|
+
await writeMergedConfig(path2.join(directory, ".cursor", "mcp.json"), "cursor");
|
|
1342
|
+
}
|
|
1343
|
+
if (editor === `vscode`) {
|
|
1344
|
+
await writeMergedConfig(path2.join(directory, ".vscode", "mcp.json"), "vscode");
|
|
1345
|
+
}
|
|
1346
|
+
if (editor === `cursor-global`) {
|
|
1347
|
+
const alreadyInstalled = await globalMCPIsAlreadyInstalled(editor);
|
|
1348
|
+
if (alreadyInstalled) {
|
|
1349
|
+
return;
|
|
1350
|
+
}
|
|
1351
|
+
await writeMergedConfig(cursorGlobalMCPConfigPath, "cursor-global");
|
|
1352
|
+
}
|
|
1353
|
+
if (editor === `windsurf`) {
|
|
1354
|
+
const alreadyInstalled = await globalMCPIsAlreadyInstalled(editor);
|
|
1355
|
+
if (alreadyInstalled) {
|
|
1356
|
+
return;
|
|
1357
|
+
}
|
|
1358
|
+
await writeMergedConfig(windsurfGlobalMCPConfigPath, editor);
|
|
1359
|
+
}
|
|
1040
1360
|
}
|
|
1041
|
-
async function
|
|
1042
|
-
|
|
1361
|
+
async function globalMCPIsAlreadyInstalled(editor) {
|
|
1362
|
+
let configPath = ``;
|
|
1363
|
+
if (editor === "windsurf") {
|
|
1364
|
+
configPath = windsurfGlobalMCPConfigPath;
|
|
1365
|
+
} else if (editor === "cursor-global") {
|
|
1366
|
+
configPath = cursorGlobalMCPConfigPath;
|
|
1367
|
+
} else if (editor === "vscode") {
|
|
1368
|
+
configPath = vscodeGlobalMCPConfigPath;
|
|
1369
|
+
}
|
|
1370
|
+
if (!configPath || !existsSync(configPath)) {
|
|
1043
1371
|
return false;
|
|
1044
1372
|
}
|
|
1045
1373
|
try {
|
|
1046
|
-
const configContents = await readJSON(
|
|
1374
|
+
const configContents = await readJSON(configPath);
|
|
1375
|
+
if (!configContents) return false;
|
|
1376
|
+
if (editor === "vscode") {
|
|
1377
|
+
if (!configContents.servers) return false;
|
|
1378
|
+
const hasMastraMCP2 = Object.values(configContents.servers).some(
|
|
1379
|
+
(server) => server?.args?.find((arg) => arg?.includes(`@mastra/mcp-docs-server`))
|
|
1380
|
+
);
|
|
1381
|
+
return hasMastraMCP2;
|
|
1382
|
+
}
|
|
1047
1383
|
if (!configContents?.mcpServers) return false;
|
|
1048
1384
|
const hasMastraMCP = Object.values(configContents.mcpServers).some(
|
|
1049
1385
|
(server) => server?.args?.find((arg) => arg?.includes(`@mastra/mcp-docs-server`))
|
|
1050
1386
|
);
|
|
1051
1387
|
return hasMastraMCP;
|
|
1052
|
-
} catch
|
|
1053
|
-
console.error(e);
|
|
1388
|
+
} catch {
|
|
1054
1389
|
return false;
|
|
1055
1390
|
}
|
|
1056
1391
|
}
|
|
@@ -1125,8 +1460,8 @@ var FileService = class {
|
|
|
1125
1460
|
*/
|
|
1126
1461
|
async copyStarterFile(inputFile, outputFilePath, replaceIfExists) {
|
|
1127
1462
|
const __filename = fileURLToPath(import.meta.url);
|
|
1128
|
-
const __dirname =
|
|
1129
|
-
const filePath =
|
|
1463
|
+
const __dirname = path2.dirname(__filename);
|
|
1464
|
+
const filePath = path2.resolve(__dirname, "starter-files", inputFile);
|
|
1130
1465
|
const fileString = fs3__default__default.readFileSync(filePath, "utf8");
|
|
1131
1466
|
if (fs3__default__default.existsSync(outputFilePath) && !replaceIfExists) {
|
|
1132
1467
|
console.log(`${outputFilePath} already exists`);
|
|
@@ -1136,7 +1471,7 @@ var FileService = class {
|
|
|
1136
1471
|
return true;
|
|
1137
1472
|
}
|
|
1138
1473
|
async setupEnvFile({ dbUrl }) {
|
|
1139
|
-
const envPath =
|
|
1474
|
+
const envPath = path2.join(process.cwd(), ".env.development");
|
|
1140
1475
|
await fsExtra3.ensureFile(envPath);
|
|
1141
1476
|
const fileEnvService = new FileEnvService(envPath);
|
|
1142
1477
|
await fileEnvService.setEnvValue("DB_URL", dbUrl);
|
|
@@ -1160,7 +1495,7 @@ var FileService = class {
|
|
|
1160
1495
|
fs3__default__default.writeFileSync(filePath, fileContent);
|
|
1161
1496
|
}
|
|
1162
1497
|
};
|
|
1163
|
-
|
|
1498
|
+
new PinoLogger({
|
|
1164
1499
|
name: "Mastra CLI",
|
|
1165
1500
|
level: "debug"
|
|
1166
1501
|
});
|
|
@@ -1186,7 +1521,7 @@ var getProviderImportAndModelItem = (llmProvider) => {
|
|
|
1186
1521
|
let modelItem = "";
|
|
1187
1522
|
if (llmProvider === "openai") {
|
|
1188
1523
|
providerImport = `import { openai } from '${getAISDKPackage(llmProvider)}';`;
|
|
1189
|
-
modelItem = `openai('gpt-4o')`;
|
|
1524
|
+
modelItem = `openai('gpt-4o-mini')`;
|
|
1190
1525
|
} else if (llmProvider === "anthropic") {
|
|
1191
1526
|
providerImport = `import { anthropic } from '${getAISDKPackage(llmProvider)}';`;
|
|
1192
1527
|
modelItem = `anthropic('claude-3-5-sonnet-20241022')`;
|
|
@@ -1219,13 +1554,20 @@ async function writeAgentSample(llmProvider, destPath, addExampleTool) {
|
|
|
1219
1554
|
const content = `
|
|
1220
1555
|
${providerImport}
|
|
1221
1556
|
import { Agent } from '@mastra/core/agent';
|
|
1222
|
-
|
|
1557
|
+
import { Memory } from '@mastra/memory';
|
|
1558
|
+
import { LibSQLStore } from '@mastra/libsql';
|
|
1559
|
+
${addExampleTool ? `import { weatherTool } from '../tools/weather-tool';` : ""}
|
|
1223
1560
|
|
|
1224
1561
|
export const weatherAgent = new Agent({
|
|
1225
1562
|
name: 'Weather Agent',
|
|
1226
1563
|
instructions: \`${instructions}\`,
|
|
1227
1564
|
model: ${modelItem},
|
|
1228
1565
|
${addExampleTool ? "tools: { weatherTool }," : ""}
|
|
1566
|
+
memory: new Memory({
|
|
1567
|
+
storage: new LibSQLStore({
|
|
1568
|
+
url: "file:../mastra.db", // path is relative to the .mastra/output directory
|
|
1569
|
+
})
|
|
1570
|
+
})
|
|
1229
1571
|
});
|
|
1230
1572
|
`;
|
|
1231
1573
|
const formattedContent = await prettier.format(content, {
|
|
@@ -1239,7 +1581,7 @@ async function writeWorkflowSample(destPath, llmProvider) {
|
|
|
1239
1581
|
const { providerImport, modelItem } = getProviderImportAndModelItem(llmProvider);
|
|
1240
1582
|
const content = `${providerImport}
|
|
1241
1583
|
import { Agent } from '@mastra/core/agent';
|
|
1242
|
-
import {
|
|
1584
|
+
import { createStep, createWorkflow } from '@mastra/core/workflows';
|
|
1243
1585
|
import { z } from 'zod';
|
|
1244
1586
|
|
|
1245
1587
|
const llm = ${modelItem};
|
|
@@ -1292,80 +1634,107 @@ const agent = new Agent({
|
|
|
1292
1634
|
\`,
|
|
1293
1635
|
});
|
|
1294
1636
|
|
|
1295
|
-
const forecastSchema = z.
|
|
1296
|
-
z.
|
|
1297
|
-
|
|
1298
|
-
|
|
1299
|
-
|
|
1300
|
-
|
|
1301
|
-
|
|
1302
|
-
|
|
1303
|
-
|
|
1304
|
-
)
|
|
1637
|
+
const forecastSchema = z.object({
|
|
1638
|
+
date: z.string(),
|
|
1639
|
+
maxTemp: z.number(),
|
|
1640
|
+
minTemp: z.number(),
|
|
1641
|
+
precipitationChance: z.number(),
|
|
1642
|
+
condition: z.string(),
|
|
1643
|
+
location: z.string(),
|
|
1644
|
+
})
|
|
1645
|
+
|
|
1646
|
+
function getWeatherCondition(code: number): string {
|
|
1647
|
+
const conditions: Record<number, string> = {
|
|
1648
|
+
0: 'Clear sky',
|
|
1649
|
+
1: 'Mainly clear',
|
|
1650
|
+
2: 'Partly cloudy',
|
|
1651
|
+
3: 'Overcast',
|
|
1652
|
+
45: 'Foggy',
|
|
1653
|
+
48: 'Depositing rime fog',
|
|
1654
|
+
51: 'Light drizzle',
|
|
1655
|
+
53: 'Moderate drizzle',
|
|
1656
|
+
55: 'Dense drizzle',
|
|
1657
|
+
61: 'Slight rain',
|
|
1658
|
+
63: 'Moderate rain',
|
|
1659
|
+
65: 'Heavy rain',
|
|
1660
|
+
71: 'Slight snow fall',
|
|
1661
|
+
73: 'Moderate snow fall',
|
|
1662
|
+
75: 'Heavy snow fall',
|
|
1663
|
+
95: 'Thunderstorm',
|
|
1664
|
+
}
|
|
1665
|
+
return conditions[code] || 'Unknown'
|
|
1666
|
+
}
|
|
1305
1667
|
|
|
1306
|
-
const fetchWeather =
|
|
1668
|
+
const fetchWeather = createStep({
|
|
1307
1669
|
id: 'fetch-weather',
|
|
1308
1670
|
description: 'Fetches weather forecast for a given city',
|
|
1309
1671
|
inputSchema: z.object({
|
|
1310
1672
|
city: z.string().describe('The city to get the weather for'),
|
|
1311
1673
|
}),
|
|
1312
1674
|
outputSchema: forecastSchema,
|
|
1313
|
-
execute: async ({
|
|
1314
|
-
|
|
1315
|
-
|
|
1316
|
-
if (!triggerData) {
|
|
1317
|
-
throw new Error('Trigger data not found');
|
|
1675
|
+
execute: async ({ inputData }) => {
|
|
1676
|
+
if (!inputData) {
|
|
1677
|
+
throw new Error('Input data not found');
|
|
1318
1678
|
}
|
|
1319
1679
|
|
|
1320
|
-
const geocodingUrl = \`https://geocoding-api.open-meteo.com/v1/search?name=\${encodeURIComponent(
|
|
1680
|
+
const geocodingUrl = \`https://geocoding-api.open-meteo.com/v1/search?name=\${encodeURIComponent(inputData.city)}&count=1\`;
|
|
1321
1681
|
const geocodingResponse = await fetch(geocodingUrl);
|
|
1322
1682
|
const geocodingData = (await geocodingResponse.json()) as {
|
|
1323
1683
|
results: { latitude: number; longitude: number; name: string }[];
|
|
1324
1684
|
};
|
|
1325
1685
|
|
|
1326
1686
|
if (!geocodingData.results?.[0]) {
|
|
1327
|
-
throw new Error(\`Location '\${
|
|
1687
|
+
throw new Error(\`Location '\${inputData.city}' not found\`);
|
|
1328
1688
|
}
|
|
1329
1689
|
|
|
1330
1690
|
const { latitude, longitude, name } = geocodingData.results[0];
|
|
1331
1691
|
|
|
1332
|
-
const weatherUrl = \`https://api.open-meteo.com/v1/forecast?latitude=\${latitude}&longitude=\${longitude}&
|
|
1692
|
+
const weatherUrl = \`https://api.open-meteo.com/v1/forecast?latitude=\${latitude}&longitude=\${longitude}¤t=precipitation,weathercode&timezone=auto,&hourly=precipitation_probability,temperature_2m\`;
|
|
1333
1693
|
const response = await fetch(weatherUrl);
|
|
1334
1694
|
const data = (await response.json()) as {
|
|
1335
|
-
|
|
1336
|
-
time: string
|
|
1337
|
-
|
|
1338
|
-
|
|
1339
|
-
|
|
1340
|
-
|
|
1341
|
-
|
|
1342
|
-
|
|
1695
|
+
current: {
|
|
1696
|
+
time: string
|
|
1697
|
+
precipitation: number
|
|
1698
|
+
weathercode: number
|
|
1699
|
+
}
|
|
1700
|
+
hourly: {
|
|
1701
|
+
precipitation_probability: number[]
|
|
1702
|
+
temperature_2m: number[]
|
|
1703
|
+
}
|
|
1704
|
+
}
|
|
1343
1705
|
|
|
1344
|
-
const forecast =
|
|
1345
|
-
date,
|
|
1346
|
-
maxTemp: data.
|
|
1347
|
-
minTemp: data.
|
|
1348
|
-
|
|
1349
|
-
|
|
1350
|
-
|
|
1351
|
-
|
|
1706
|
+
const forecast = {
|
|
1707
|
+
date: new Date().toISOString(),
|
|
1708
|
+
maxTemp: Math.max(...data.hourly.temperature_2m),
|
|
1709
|
+
minTemp: Math.min(...data.hourly.temperature_2m),
|
|
1710
|
+
condition: getWeatherCondition(data.current.weathercode),
|
|
1711
|
+
precipitationChance: data.hourly.precipitation_probability.reduce(
|
|
1712
|
+
(acc, curr) => Math.max(acc, curr),
|
|
1713
|
+
0
|
|
1714
|
+
),
|
|
1715
|
+
location: name
|
|
1716
|
+
}
|
|
1352
1717
|
|
|
1353
1718
|
return forecast;
|
|
1354
1719
|
},
|
|
1355
1720
|
});
|
|
1356
1721
|
|
|
1357
1722
|
|
|
1358
|
-
const planActivities =
|
|
1723
|
+
const planActivities = createStep({
|
|
1359
1724
|
id: 'plan-activities',
|
|
1360
1725
|
description: 'Suggests activities based on weather conditions',
|
|
1361
|
-
|
|
1362
|
-
|
|
1726
|
+
inputSchema: forecastSchema,
|
|
1727
|
+
outputSchema: z.object({
|
|
1728
|
+
activities: z.string(),
|
|
1729
|
+
}),
|
|
1730
|
+
execute: async ({ inputData }) => {
|
|
1731
|
+
const forecast = inputData
|
|
1363
1732
|
|
|
1364
|
-
if (!forecast
|
|
1365
|
-
throw new Error('Forecast data not found')
|
|
1733
|
+
if (!forecast) {
|
|
1734
|
+
throw new Error('Forecast data not found')
|
|
1366
1735
|
}
|
|
1367
1736
|
|
|
1368
|
-
const prompt = \`Based on the following weather forecast for \${forecast
|
|
1737
|
+
const prompt = \`Based on the following weather forecast for \${forecast.location}, suggest appropriate activities:
|
|
1369
1738
|
\${JSON.stringify(forecast, null, 2)}
|
|
1370
1739
|
\`;
|
|
1371
1740
|
|
|
@@ -1377,7 +1746,7 @@ const planActivities = new Step({
|
|
|
1377
1746
|
]);
|
|
1378
1747
|
|
|
1379
1748
|
let activitiesText = '';
|
|
1380
|
-
|
|
1749
|
+
|
|
1381
1750
|
for await (const chunk of response.textStream) {
|
|
1382
1751
|
process.stdout.write(chunk);
|
|
1383
1752
|
activitiesText += chunk;
|
|
@@ -1389,35 +1758,16 @@ const planActivities = new Step({
|
|
|
1389
1758
|
},
|
|
1390
1759
|
});
|
|
1391
1760
|
|
|
1392
|
-
|
|
1393
|
-
|
|
1394
|
-
|
|
1395
|
-
1: 'Mainly clear',
|
|
1396
|
-
2: 'Partly cloudy',
|
|
1397
|
-
3: 'Overcast',
|
|
1398
|
-
45: 'Foggy',
|
|
1399
|
-
48: 'Depositing rime fog',
|
|
1400
|
-
51: 'Light drizzle',
|
|
1401
|
-
53: 'Moderate drizzle',
|
|
1402
|
-
55: 'Dense drizzle',
|
|
1403
|
-
61: 'Slight rain',
|
|
1404
|
-
63: 'Moderate rain',
|
|
1405
|
-
65: 'Heavy rain',
|
|
1406
|
-
71: 'Slight snow fall',
|
|
1407
|
-
73: 'Moderate snow fall',
|
|
1408
|
-
75: 'Heavy snow fall',
|
|
1409
|
-
95: 'Thunderstorm',
|
|
1410
|
-
};
|
|
1411
|
-
return conditions[code] || 'Unknown';
|
|
1412
|
-
}
|
|
1413
|
-
|
|
1414
|
-
const weatherWorkflow = new Workflow({
|
|
1415
|
-
name: 'weather-workflow',
|
|
1416
|
-
triggerSchema: z.object({
|
|
1761
|
+
const weatherWorkflow = createWorkflow({
|
|
1762
|
+
id: 'weather-workflow',
|
|
1763
|
+
inputSchema: z.object({
|
|
1417
1764
|
city: z.string().describe('The city to get the weather for'),
|
|
1418
1765
|
}),
|
|
1766
|
+
outputSchema: z.object({
|
|
1767
|
+
activities: z.string(),
|
|
1768
|
+
})
|
|
1419
1769
|
})
|
|
1420
|
-
.
|
|
1770
|
+
.then(fetchWeather)
|
|
1421
1771
|
.then(planActivities);
|
|
1422
1772
|
|
|
1423
1773
|
weatherWorkflow.commit();
|
|
@@ -1457,7 +1807,7 @@ var writeIndexFile = async ({
|
|
|
1457
1807
|
addWorkflow
|
|
1458
1808
|
}) => {
|
|
1459
1809
|
const indexPath = dirPath + "/index.ts";
|
|
1460
|
-
const destPath =
|
|
1810
|
+
const destPath = path2.join(indexPath);
|
|
1461
1811
|
try {
|
|
1462
1812
|
await fs4.writeFile(destPath, "");
|
|
1463
1813
|
const filteredExports = [
|
|
@@ -1479,13 +1829,18 @@ export const mastra = new Mastra()
|
|
|
1479
1829
|
destPath,
|
|
1480
1830
|
`
|
|
1481
1831
|
import { Mastra } from '@mastra/core/mastra';
|
|
1482
|
-
import {
|
|
1483
|
-
|
|
1484
|
-
${
|
|
1832
|
+
import { PinoLogger } from '@mastra/loggers';
|
|
1833
|
+
import { LibSQLStore } from '@mastra/libsql';
|
|
1834
|
+
${addWorkflow ? `import { weatherWorkflow } from './workflows/weather-workflow';` : ""}
|
|
1835
|
+
${addAgent ? `import { weatherAgent } from './agents/weather-agent';` : ""}
|
|
1485
1836
|
|
|
1486
1837
|
export const mastra = new Mastra({
|
|
1487
1838
|
${filteredExports.join("\n ")}
|
|
1488
|
-
|
|
1839
|
+
storage: new LibSQLStore({
|
|
1840
|
+
// stores telemetry, evals, ... into memory storage, if it needs to persist, change to file:../mastra.db
|
|
1841
|
+
url: ":memory:",
|
|
1842
|
+
}),
|
|
1843
|
+
logger: new PinoLogger({
|
|
1489
1844
|
name: 'Mastra',
|
|
1490
1845
|
level: 'info',
|
|
1491
1846
|
}),
|
|
@@ -1521,11 +1876,13 @@ var writeAPIKey = async ({
|
|
|
1521
1876
|
apiKey = "your-api-key"
|
|
1522
1877
|
}) => {
|
|
1523
1878
|
const key = await getAPIKey(provider);
|
|
1524
|
-
|
|
1879
|
+
const escapedKey = shellQuote.quote([key]);
|
|
1880
|
+
const escapedApiKey = shellQuote.quote([apiKey]);
|
|
1881
|
+
await exec(`echo ${escapedKey}=${escapedApiKey} >> .env`);
|
|
1525
1882
|
};
|
|
1526
1883
|
var createMastraDir = async (directory) => {
|
|
1527
1884
|
let dir = directory.trim().split("/").filter((item) => item !== "");
|
|
1528
|
-
const dirPath =
|
|
1885
|
+
const dirPath = path2.join(process.cwd(), ...dir, "mastra");
|
|
1529
1886
|
try {
|
|
1530
1887
|
await fs4.access(dirPath);
|
|
1531
1888
|
return { ok: false };
|
|
@@ -1535,7 +1892,7 @@ var createMastraDir = async (directory) => {
|
|
|
1535
1892
|
}
|
|
1536
1893
|
};
|
|
1537
1894
|
var writeCodeSample = async (dirPath, component, llmProvider, importComponents) => {
|
|
1538
|
-
const destPath = dirPath + `/${component}/
|
|
1895
|
+
const destPath = dirPath + `/${component}/weather-${component.slice(0, -1)}.ts`;
|
|
1539
1896
|
try {
|
|
1540
1897
|
await writeCodeSampleForComponents(llmProvider, component, destPath, importComponents);
|
|
1541
1898
|
} catch (err) {
|
|
@@ -1543,7 +1900,7 @@ var writeCodeSample = async (dirPath, component, llmProvider, importComponents)
|
|
|
1543
1900
|
}
|
|
1544
1901
|
};
|
|
1545
1902
|
var interactivePrompt = async () => {
|
|
1546
|
-
pe(color2.inverse("Mastra Init"));
|
|
1903
|
+
pe(color2.inverse(" Mastra Init "));
|
|
1547
1904
|
const mastraProject = await ve(
|
|
1548
1905
|
{
|
|
1549
1906
|
directory: () => ae({
|
|
@@ -1551,20 +1908,6 @@ var interactivePrompt = async () => {
|
|
|
1551
1908
|
placeholder: "src/",
|
|
1552
1909
|
defaultValue: "src/"
|
|
1553
1910
|
}),
|
|
1554
|
-
components: () => $e({
|
|
1555
|
-
message: "Choose components to install:",
|
|
1556
|
-
options: [
|
|
1557
|
-
{ value: "agents", label: "Agents", hint: "recommended" },
|
|
1558
|
-
{
|
|
1559
|
-
value: "workflows",
|
|
1560
|
-
label: "Workflows"
|
|
1561
|
-
}
|
|
1562
|
-
]
|
|
1563
|
-
}),
|
|
1564
|
-
shouldAddTools: () => ce({
|
|
1565
|
-
message: "Add tools?",
|
|
1566
|
-
initialValue: false
|
|
1567
|
-
}),
|
|
1568
1911
|
llmProvider: () => le({
|
|
1569
1912
|
message: "Select default provider:",
|
|
1570
1913
|
options: [
|
|
@@ -1592,21 +1935,33 @@ var interactivePrompt = async () => {
|
|
|
1592
1935
|
}
|
|
1593
1936
|
return void 0;
|
|
1594
1937
|
},
|
|
1595
|
-
addExample: () => ce({
|
|
1596
|
-
message: "Add example",
|
|
1597
|
-
initialValue: false
|
|
1598
|
-
}),
|
|
1599
1938
|
configureEditorWithDocsMCP: async () => {
|
|
1600
|
-
const windsurfIsAlreadyInstalled = await
|
|
1939
|
+
const windsurfIsAlreadyInstalled = await globalMCPIsAlreadyInstalled(`windsurf`);
|
|
1940
|
+
const cursorIsAlreadyInstalled = await globalMCPIsAlreadyInstalled(`cursor`);
|
|
1941
|
+
const vscodeIsAlreadyInstalled = await globalMCPIsAlreadyInstalled(`vscode`);
|
|
1601
1942
|
const editor = await le({
|
|
1602
1943
|
message: `Make your AI IDE into a Mastra expert? (installs Mastra docs MCP server)`,
|
|
1603
1944
|
options: [
|
|
1604
1945
|
{ value: "skip", label: "Skip for now", hint: "default" },
|
|
1605
|
-
{
|
|
1946
|
+
{
|
|
1947
|
+
value: "cursor",
|
|
1948
|
+
label: "Cursor (project only)",
|
|
1949
|
+
hint: cursorIsAlreadyInstalled ? `Already installed globally` : void 0
|
|
1950
|
+
},
|
|
1951
|
+
{
|
|
1952
|
+
value: "cursor-global",
|
|
1953
|
+
label: "Cursor (global, all projects)",
|
|
1954
|
+
hint: cursorIsAlreadyInstalled ? `Already installed` : void 0
|
|
1955
|
+
},
|
|
1606
1956
|
{
|
|
1607
1957
|
value: "windsurf",
|
|
1608
1958
|
label: "Windsurf",
|
|
1609
1959
|
hint: windsurfIsAlreadyInstalled ? `Already installed` : void 0
|
|
1960
|
+
},
|
|
1961
|
+
{
|
|
1962
|
+
value: "vscode",
|
|
1963
|
+
label: "VSCode",
|
|
1964
|
+
hint: vscodeIsAlreadyInstalled ? `Already installed` : void 0
|
|
1610
1965
|
}
|
|
1611
1966
|
]
|
|
1612
1967
|
});
|
|
@@ -1616,6 +1971,11 @@ var interactivePrompt = async () => {
|
|
|
1616
1971
|
Windsurf is already installed, skipping.`);
|
|
1617
1972
|
return void 0;
|
|
1618
1973
|
}
|
|
1974
|
+
if (editor === `vscode` && vscodeIsAlreadyInstalled) {
|
|
1975
|
+
v.message(`
|
|
1976
|
+
VSCode is already installed, skipping.`);
|
|
1977
|
+
return void 0;
|
|
1978
|
+
}
|
|
1619
1979
|
if (editor === `cursor`) {
|
|
1620
1980
|
v.message(
|
|
1621
1981
|
`
|
|
@@ -1623,6 +1983,18 @@ Note: you will need to go into Cursor Settings -> MCP Settings and manually enab
|
|
|
1623
1983
|
`
|
|
1624
1984
|
);
|
|
1625
1985
|
}
|
|
1986
|
+
if (editor === `cursor-global`) {
|
|
1987
|
+
const confirm2 = await le({
|
|
1988
|
+
message: `Global install will add/update ${cursorGlobalMCPConfigPath} and make the Mastra docs MCP server available in all your Cursor projects. Continue?`,
|
|
1989
|
+
options: [
|
|
1990
|
+
{ value: "yes", label: "Yes, I understand" },
|
|
1991
|
+
{ value: "skip", label: "No, skip for now" }
|
|
1992
|
+
]
|
|
1993
|
+
});
|
|
1994
|
+
if (confirm2 !== `yes`) {
|
|
1995
|
+
return void 0;
|
|
1996
|
+
}
|
|
1997
|
+
}
|
|
1626
1998
|
if (editor === `windsurf`) {
|
|
1627
1999
|
const confirm2 = await le({
|
|
1628
2000
|
message: `Windsurf only supports a global MCP config (at ${windsurfGlobalMCPConfigPath}) is it ok to add/update that global config?
|
|
@@ -1646,9 +2018,7 @@ This means the Mastra docs MCP server will be available in all your Windsurf pro
|
|
|
1646
2018
|
}
|
|
1647
2019
|
}
|
|
1648
2020
|
);
|
|
1649
|
-
|
|
1650
|
-
const mastraComponents = shouldAddTools ? [...components, "tools"] : components;
|
|
1651
|
-
return { ...rest, components: mastraComponents };
|
|
2021
|
+
return mastraProject;
|
|
1652
2022
|
};
|
|
1653
2023
|
var s = _();
|
|
1654
2024
|
var exec2 = util.promisify(child_process.exec);
|
|
@@ -1684,6 +2054,19 @@ var init = async ({
|
|
|
1684
2054
|
(component) => writeCodeSample(dirPath, component, llmProvider, components)
|
|
1685
2055
|
)
|
|
1686
2056
|
]);
|
|
2057
|
+
const depService = new DepsService();
|
|
2058
|
+
const needsLibsql = await depService.checkDependencies(["@mastra/libsql"]) !== `ok`;
|
|
2059
|
+
if (needsLibsql) {
|
|
2060
|
+
await depService.installPackages(["@mastra/libsql"]);
|
|
2061
|
+
}
|
|
2062
|
+
const needsMemory = components.includes(`agents`) && await depService.checkDependencies(["@mastra/memory"]) !== `ok`;
|
|
2063
|
+
if (needsMemory) {
|
|
2064
|
+
await depService.installPackages(["@mastra/memory"]);
|
|
2065
|
+
}
|
|
2066
|
+
const needsLoggers = await depService.checkDependencies(["@mastra/loggers"]) !== `ok`;
|
|
2067
|
+
if (needsLoggers) {
|
|
2068
|
+
await depService.installPackages(["@mastra/loggers"]);
|
|
2069
|
+
}
|
|
1687
2070
|
}
|
|
1688
2071
|
const key = await getAPIKey(llmProvider || "openai");
|
|
1689
2072
|
const aiSdkPackage = getAISDKPackage(llmProvider);
|
|
@@ -1703,7 +2086,7 @@ var init = async ({
|
|
|
1703
2086
|
${color2.green("Mastra initialized successfully!")}
|
|
1704
2087
|
|
|
1705
2088
|
Add your ${color2.cyan(key)} as an environment variable
|
|
1706
|
-
in your ${color2.cyan(".env
|
|
2089
|
+
in your ${color2.cyan(".env")} file
|
|
1707
2090
|
`);
|
|
1708
2091
|
} else {
|
|
1709
2092
|
me(`
|
|
@@ -1764,7 +2147,7 @@ var createMastraProject = async ({
|
|
|
1764
2147
|
createVersionTag,
|
|
1765
2148
|
timeout
|
|
1766
2149
|
}) => {
|
|
1767
|
-
pe(color2.inverse("Mastra Create"));
|
|
2150
|
+
pe(color2.inverse(" Mastra Create "));
|
|
1768
2151
|
const projectName = name ?? await ae({
|
|
1769
2152
|
message: "What do you want to name your project?",
|
|
1770
2153
|
placeholder: "my-mastra-app",
|
|
@@ -1793,10 +2176,12 @@ var createMastraProject = async ({
|
|
|
1793
2176
|
s2.message("Creating project");
|
|
1794
2177
|
await exec3(`npm init -y`);
|
|
1795
2178
|
await exec3(`npm pkg set type="module"`);
|
|
2179
|
+
await exec3(`npm pkg set engines.node=">=20.9.0"`);
|
|
1796
2180
|
const depsService = new DepsService();
|
|
1797
2181
|
await depsService.addScriptsToPackageJson({
|
|
1798
2182
|
dev: "mastra dev",
|
|
1799
|
-
build: "mastra build"
|
|
2183
|
+
build: "mastra build",
|
|
2184
|
+
start: "mastra start"
|
|
1800
2185
|
});
|
|
1801
2186
|
s2.stop("Project created");
|
|
1802
2187
|
s2.start(`Installing ${pm} dependencies`);
|
|
@@ -1823,9 +2208,11 @@ var createMastraProject = async ({
|
|
|
1823
2208
|
const versionTag = createVersionTag ? `@${createVersionTag}` : "@latest";
|
|
1824
2209
|
await installMastraDependency(pm, "mastra", versionTag, true, timeout);
|
|
1825
2210
|
s2.stop("mastra installed");
|
|
1826
|
-
s2.start("Installing
|
|
2211
|
+
s2.start("Installing dependencies");
|
|
1827
2212
|
await installMastraDependency(pm, "@mastra/core", versionTag, false, timeout);
|
|
1828
|
-
|
|
2213
|
+
await installMastraDependency(pm, "@mastra/libsql", versionTag, false, timeout);
|
|
2214
|
+
await installMastraDependency(pm, "@mastra/memory", versionTag, false, timeout);
|
|
2215
|
+
s2.stop("Dependencies installed");
|
|
1829
2216
|
s2.start("Adding .gitignore");
|
|
1830
2217
|
await exec3(`echo output.txt >> .gitignore`);
|
|
1831
2218
|
await exec3(`echo node_modules >> .gitignore`);
|
|
@@ -1846,12 +2233,14 @@ var create = async (args2) => {
|
|
|
1846
2233
|
createVersionTag: args2?.createVersionTag,
|
|
1847
2234
|
timeout: args2?.timeout
|
|
1848
2235
|
});
|
|
1849
|
-
const directory = "/
|
|
1850
|
-
if (
|
|
2236
|
+
const directory = args2.directory || "src/";
|
|
2237
|
+
if (args2.components === void 0 || args2.llmProvider === void 0 || args2.addExample === void 0) {
|
|
1851
2238
|
const result = await interactivePrompt();
|
|
1852
2239
|
await init({
|
|
1853
2240
|
...result,
|
|
1854
|
-
llmApiKey: result?.llmApiKey
|
|
2241
|
+
llmApiKey: result?.llmApiKey,
|
|
2242
|
+
components: ["agents", "tools", "workflows"],
|
|
2243
|
+
addExample: true
|
|
1855
2244
|
});
|
|
1856
2245
|
postCreate({ projectName });
|
|
1857
2246
|
return;
|
|
@@ -1862,23 +2251,25 @@ var create = async (args2) => {
|
|
|
1862
2251
|
components,
|
|
1863
2252
|
llmProvider,
|
|
1864
2253
|
addExample,
|
|
1865
|
-
llmApiKey
|
|
2254
|
+
llmApiKey,
|
|
2255
|
+
configureEditorWithDocsMCP: args2.mcpServer
|
|
1866
2256
|
});
|
|
1867
2257
|
postCreate({ projectName });
|
|
1868
2258
|
};
|
|
1869
2259
|
var postCreate = ({ projectName }) => {
|
|
2260
|
+
const packageManager = getPackageManager();
|
|
1870
2261
|
ge(`
|
|
1871
2262
|
${color2.green("To start your project:")}
|
|
1872
2263
|
|
|
1873
2264
|
${color2.cyan("cd")} ${projectName}
|
|
1874
|
-
${color2.cyan(
|
|
2265
|
+
${color2.cyan(`${packageManager} run dev`)}
|
|
1875
2266
|
`);
|
|
1876
2267
|
};
|
|
1877
2268
|
|
|
1878
2269
|
async function getPackageVersion() {
|
|
1879
2270
|
const __filename = fileURLToPath(import.meta.url);
|
|
1880
2271
|
const __dirname = dirname(__filename);
|
|
1881
|
-
const pkgJsonPath =
|
|
2272
|
+
const pkgJsonPath = path2.join(__dirname, "..", "package.json");
|
|
1882
2273
|
const content = await fsExtra.readJSON(pkgJsonPath);
|
|
1883
2274
|
return content.version;
|
|
1884
2275
|
}
|
|
@@ -1887,7 +2278,7 @@ async function getCreateVersionTag() {
|
|
|
1887
2278
|
const pkgPath = fileURLToPath(import.meta.resolve("create-mastra/package.json"));
|
|
1888
2279
|
const json = await fsExtra.readJSON(pkgPath);
|
|
1889
2280
|
const { stdout } = await execa("npm", ["dist-tag", "create-mastra"]);
|
|
1890
|
-
const tagLine = stdout.split("\n").find((distLine) => distLine.
|
|
2281
|
+
const tagLine = stdout.split("\n").find((distLine) => distLine.endsWith(`: ${json.version}`));
|
|
1891
2282
|
const tag = tagLine ? tagLine.split(":")[0].trim() : "latest";
|
|
1892
2283
|
return tag;
|
|
1893
2284
|
} catch {
|
|
@@ -1913,15 +2304,21 @@ program.version(`${version}`, "-v, --version").description(`create-mastra ${vers
|
|
|
1913
2304
|
} catch {
|
|
1914
2305
|
}
|
|
1915
2306
|
});
|
|
1916
|
-
program.name("create-mastra").description("Create a new Mastra project").argument("[project-name]", "Directory name of the project").option(
|
|
2307
|
+
program.name("create-mastra").description("Create a new Mastra project").argument("[project-name]", "Directory name of the project").option(
|
|
2308
|
+
"-p, --project-name <string>",
|
|
2309
|
+
"Project name that will be used in package.json and as the project directory name."
|
|
2310
|
+
).option("--default", "Quick start with defaults(src, OpenAI, examples)").option("-c, --components <components>", "Comma-separated list of components (agents, tools, workflows)").option("-l, --llm <model-provider>", "Default model provider (openai, anthropic, groq, google, or cerebras)").option("-k, --llm-api-key <api-key>", "API key for the model provider").option("-e, --example", "Include example code").option("-n, --no-example", "Do not include example code").option("-t, --timeout [timeout]", "Configurable timeout for package installation, defaults to 60000 ms").option("-d, --dir <directory>", "Target directory for Mastra source code (default: src/)").option("-m, --mcp <mcp>", "MCP Server for code editor (cursor, cursor-global, windsurf, vscode)").action(async (projectNameArg, args) => {
|
|
2311
|
+
const projectName = projectNameArg || args.projectName;
|
|
1917
2312
|
const timeout = args?.timeout ? args?.timeout === true ? 6e4 : parseInt(args?.timeout, 10) : void 0;
|
|
1918
2313
|
if (args.default) {
|
|
1919
2314
|
await create({
|
|
1920
2315
|
components: ["agents", "tools", "workflows"],
|
|
1921
2316
|
llmProvider: "openai",
|
|
1922
|
-
addExample:
|
|
2317
|
+
addExample: true,
|
|
1923
2318
|
createVersionTag,
|
|
1924
|
-
timeout
|
|
2319
|
+
timeout,
|
|
2320
|
+
mcpServer: args.mcp,
|
|
2321
|
+
directory: "src/"
|
|
1925
2322
|
});
|
|
1926
2323
|
return;
|
|
1927
2324
|
}
|
|
@@ -1932,7 +2329,9 @@ program.name("create-mastra").description("Create a new Mastra project").argumen
|
|
|
1932
2329
|
llmApiKey: args["llm-api-key"],
|
|
1933
2330
|
createVersionTag,
|
|
1934
2331
|
timeout,
|
|
1935
|
-
projectName
|
|
2332
|
+
projectName,
|
|
2333
|
+
directory: args.dir,
|
|
2334
|
+
mcpServer: args.mcp
|
|
1936
2335
|
});
|
|
1937
2336
|
});
|
|
1938
2337
|
program.parse(process.argv);
|