mastra 0.0.2 → 0.1.1
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 +23 -0
- package/dist/commands/dev.js +119 -4
- package/dist/commands/dev.js.map +1 -0
- package/dist/commands/generate.js +35 -0
- package/dist/commands/generate.js.map +1 -0
- package/dist/commands/init.js +54 -12
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/migrate.js +49 -0
- package/dist/commands/migrate.js.map +1 -0
- package/dist/commands/provision.js +146 -0
- package/dist/commands/provision.js.map +1 -0
- package/dist/index.js +51 -0
- package/dist/index.js.map +1 -0
- package/dist/services/service.env.js +3 -0
- package/dist/services/service.env.js.map +1 -0
- package/dist/services/service.fileEnv.js +63 -0
- package/dist/services/service.fileEnv.js.map +1 -0
- package/dist/starter-files/api.js +5 -0
- package/dist/starter-files/api.js.map +1 -0
- package/dist/starter-files/config.js +17 -0
- package/dist/starter-files/config.js.map +1 -0
- package/dist/utils/getPackageManager.js +30 -0
- package/dist/utils/getPackageManager.js.map +1 -0
- package/dist/utils.js +89 -0
- package/dist/utils.js.map +1 -0
- package/package.json +72 -57
- package/dist/cli.d.ts +0 -2
- package/dist/cli.js +0 -6
- package/dist/commands/dev.d.ts +0 -2
- package/dist/commands/index.d.ts +0 -2
- package/dist/commands/index.js +0 -2
- package/dist/commands/init.d.ts +0 -2
- package/readme.md +0 -25
package/README.md
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
## Installation
|
|
2
|
+
|
|
3
|
+
`npm install -g mastra`
|
|
4
|
+
|
|
5
|
+
## Commands:
|
|
6
|
+
|
|
7
|
+
`mastra init`
|
|
8
|
+
|
|
9
|
+
Initializes a new project.
|
|
10
|
+
|
|
11
|
+
Run this from the root of the Next.js app you want to add Mastra to. This will create a `mastra.config.ts` file in the root of your project, a `docker-compose.yml` file in the root of your project, and a `.env` file in the root of your project.
|
|
12
|
+
|
|
13
|
+
`mastra admin`
|
|
14
|
+
|
|
15
|
+
Starts the admin server
|
|
16
|
+
|
|
17
|
+
`mastra generate`
|
|
18
|
+
|
|
19
|
+
Generates types
|
|
20
|
+
|
|
21
|
+
`mastra migrate`
|
|
22
|
+
|
|
23
|
+
Migrate the mastra database forward
|
package/dist/commands/dev.js
CHANGED
|
@@ -1,5 +1,120 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
import { execa, ExecaError } from 'execa';
|
|
2
|
+
import fs, { existsSync } from 'fs';
|
|
3
|
+
import path from 'path';
|
|
4
|
+
import process from 'process';
|
|
5
|
+
import fse from 'fs-extra/esm';
|
|
6
|
+
async function copyUserEnvFileToAdmin(adminPath) {
|
|
7
|
+
const sourcePath = path.resolve(process.cwd(), '.env');
|
|
8
|
+
const destinationPath = path.resolve(process.cwd(), adminPath, '.env');
|
|
9
|
+
fse.copy(sourcePath, destinationPath, { overwrite: true }, err => {
|
|
10
|
+
if (err) {
|
|
11
|
+
console.log('An error occurred while trying to copy the .env file from ark project directory to admin.');
|
|
12
|
+
console.error(err);
|
|
13
|
+
}
|
|
14
|
+
});
|
|
5
15
|
}
|
|
16
|
+
async function watchUserEnvAndSyncWithAdminEnv(adminPath) {
|
|
17
|
+
const userEnvPath = path.resolve(process.cwd(), '.env');
|
|
18
|
+
try {
|
|
19
|
+
fs.watch(userEnvPath, eventType => {
|
|
20
|
+
if (eventType === 'change') {
|
|
21
|
+
copyUserEnvFileToAdmin(adminPath);
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
catch (err) {
|
|
26
|
+
console.log('An error occurred while trying to watch the .env file in the ark project directory.');
|
|
27
|
+
console.error(err);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
async function generateUserDefinedIntegrations({ adminPath, integrationsPath, }) {
|
|
31
|
+
const buildUserDefinedIntegrationScript = path.resolve(adminPath, 'scripts', 'build-user-defined-integrations.mjs');
|
|
32
|
+
await execa(`node`, [buildUserDefinedIntegrationScript], {
|
|
33
|
+
cwd: adminPath,
|
|
34
|
+
env: {
|
|
35
|
+
...process.env,
|
|
36
|
+
INTEGRATION_PATH: integrationsPath,
|
|
37
|
+
},
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
export async function startNextDevServer() {
|
|
41
|
+
console.log('Starting Next.js dev server...');
|
|
42
|
+
try {
|
|
43
|
+
// TODO: fix cwd so it works from project directory, not just from the cli directory
|
|
44
|
+
const __filename = new URL(import.meta.url).pathname;
|
|
45
|
+
const __dirname = path.dirname(__filename);
|
|
46
|
+
const adminPath = path.resolve(__dirname, '..', '..', 'node_modules', '@mastra', 'admin');
|
|
47
|
+
copyUserEnvFileToAdmin(adminPath);
|
|
48
|
+
watchUserEnvAndSyncWithAdminEnv(adminPath);
|
|
49
|
+
const integrationsPath = path.resolve(process.cwd(), 'integrations');
|
|
50
|
+
if (fs.existsSync(integrationsPath)) {
|
|
51
|
+
generateUserDefinedIntegrations({ adminPath, integrationsPath });
|
|
52
|
+
}
|
|
53
|
+
const nextServer = execa(`npm run dev -- -p 3456`, {
|
|
54
|
+
cwd: adminPath,
|
|
55
|
+
all: true,
|
|
56
|
+
buffer: false,
|
|
57
|
+
env: {
|
|
58
|
+
...process.env,
|
|
59
|
+
ARK_APP_DIR: process.cwd(),
|
|
60
|
+
},
|
|
61
|
+
shell: true,
|
|
62
|
+
stdio: 'inherit', // This will pipe directly to parent process stdout/stderr
|
|
63
|
+
});
|
|
64
|
+
process.on('SIGINT', async () => {
|
|
65
|
+
console.log('Stopping Next.js dev server...');
|
|
66
|
+
nextServer.kill();
|
|
67
|
+
process.exit();
|
|
68
|
+
});
|
|
69
|
+
await nextServer;
|
|
70
|
+
}
|
|
71
|
+
catch (error) {
|
|
72
|
+
if (error instanceof ExecaError) {
|
|
73
|
+
console.error(error);
|
|
74
|
+
}
|
|
75
|
+
console.error(`Error: ${error.message}`);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
export function dev({ integration }) {
|
|
79
|
+
if (integration) {
|
|
80
|
+
console.log('Generating Admin for integration development...');
|
|
81
|
+
const configPath = path.join(process.cwd(), 'mastra.config.ts');
|
|
82
|
+
const dirName = path.basename(process.cwd());
|
|
83
|
+
const capitalized = dirName.charAt(0).toUpperCase() + dirName.slice(1);
|
|
84
|
+
const envPath = path.join(process.cwd(), '.env');
|
|
85
|
+
if (!existsSync(envPath)) {
|
|
86
|
+
fs.writeFileSync(envPath, '');
|
|
87
|
+
}
|
|
88
|
+
fs.writeFileSync(configPath, `
|
|
89
|
+
import { Config } from '@mastra/core';
|
|
90
|
+
import { ${capitalized}Integration } from './src';
|
|
91
|
+
|
|
92
|
+
export const config: Config = {
|
|
93
|
+
name: '${capitalized.toUpperCase()}',
|
|
94
|
+
db: {
|
|
95
|
+
provider: 'postgresql',
|
|
96
|
+
uri: process.env.DATABASE_URL!,
|
|
97
|
+
},
|
|
98
|
+
workflows: {
|
|
99
|
+
blueprintDirPath: '/mock-data/blueprints',
|
|
100
|
+
systemApis: [],
|
|
101
|
+
systemEvents: {},
|
|
102
|
+
},
|
|
103
|
+
routeRegistrationPath: '/api/mastra',
|
|
104
|
+
systemHostURL: process.env.APP_URL!,
|
|
105
|
+
integrations: [
|
|
106
|
+
new ${capitalized}Integration({
|
|
107
|
+
config: {
|
|
108
|
+
CLIENT_ID: process.env.CLIENT_ID!,
|
|
109
|
+
CLIENT_SECRET: process.env.CLIENT_SECRET!,
|
|
110
|
+
REDIRECT_URI: '/api/mastra/callback',
|
|
111
|
+
}
|
|
112
|
+
})
|
|
113
|
+
]
|
|
114
|
+
}
|
|
115
|
+
`);
|
|
116
|
+
}
|
|
117
|
+
startNextDevServer().catch(console.error);
|
|
118
|
+
return;
|
|
119
|
+
}
|
|
120
|
+
//# sourceMappingURL=dev.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dev.js","sourceRoot":"","sources":["../../src/commands/dev.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAC1C,OAAO,EAAE,EAAE,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AACpC,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,OAAO,MAAM,SAAS,CAAC;AAE9B,OAAO,GAAG,MAAM,cAAc,CAAC;AAE/B,KAAK,UAAU,sBAAsB,CAAC,SAAiB;IACrD,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,CAAC;IACvD,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;IAEvE,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,eAAe,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,GAAG,CAAC,EAAE;QAC/D,IAAI,GAAG,EAAE,CAAC;YACR,OAAO,CAAC,GAAG,CAAC,2FAA2F,CAAC,CAAC;YACzG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACrB,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,+BAA+B,CAAC,SAAiB;IAC9D,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,CAAC;IAExD,IAAI,CAAC;QACH,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,SAAS,CAAC,EAAE;YAChC,IAAI,SAAS,KAAK,QAAQ,EAAE,CAAC;gBAC3B,sBAAsB,CAAC,SAAS,CAAC,CAAC;YACpC,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,GAAG,CAAC,qFAAqF,CAAC,CAAC;QACnG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACrB,CAAC;AACH,CAAC;AAED,KAAK,UAAU,+BAA+B,CAAC,EAC7C,SAAS,EACT,gBAAgB,GAIjB;IACC,MAAM,iCAAiC,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,SAAS,EAAE,qCAAqC,CAAC,CAAC;IAEpH,MAAM,KAAK,CAAC,MAAM,EAAE,CAAC,iCAAiC,CAAC,EAAE;QACvD,GAAG,EAAE,SAAS;QACd,GAAG,EAAE;YACH,GAAG,OAAO,CAAC,GAAG;YACd,gBAAgB,EAAE,gBAAgB;SACnC;KACF,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB;IACtC,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;IAE9C,IAAI,CAAC;QACH,oFAAoF;QACpF,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC;QACrD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAC3C,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;QAC1F,sBAAsB,CAAC,SAAS,CAAC,CAAC;QAClC,+BAA+B,CAAC,SAAS,CAAC,CAAC;QAE3C,MAAM,gBAAgB,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,CAAC,CAAC;QACrE,IAAI,EAAE,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;YACpC,+BAA+B,CAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC,CAAC;QACnE,CAAC;QAED,MAAM,UAAU,GAAG,KAAK,CAAC,wBAAwB,EAAE;YACjD,GAAG,EAAE,SAAS;YACd,GAAG,EAAE,IAAI;YACT,MAAM,EAAE,KAAK;YACb,GAAG,EAAE;gBACH,GAAG,OAAO,CAAC,GAAG;gBACd,WAAW,EAAE,OAAO,CAAC,GAAG,EAAE;aAC3B;YACD,KAAK,EAAE,IAAI;YACX,KAAK,EAAE,SAAS,EAAE,0DAA0D;SAC7E,CAAC,CAAC;QAEH,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;YAC9B,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;YAC9C,UAAU,CAAC,IAAI,EAAE,CAAC;YAClB,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,CAAC,CAAC,CAAC;QAEH,MAAM,UAAU,CAAC;IACnB,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,IAAI,KAAK,YAAY,UAAU,EAAE,CAAC;YAChC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACvB,CAAC;QACD,OAAO,CAAC,KAAK,CAAC,UAAU,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IAC3C,CAAC;AACH,CAAC;AAED,MAAM,UAAU,GAAG,CAAC,EAAE,WAAW,EAA4B;IAC3D,IAAI,WAAW,EAAE,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,iDAAiD,CAAC,CAAC;QAC/D,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,kBAAkB,CAAC,CAAC;QAChE,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;QAC7C,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAEvE,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,CAAC;QAEjD,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YACzB,EAAE,CAAC,aAAa,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QAChC,CAAC;QAED,EAAE,CAAC,aAAa,CACd,UAAU,EACV;;eAES,WAAW;;;eAGX,WAAW,CAAC,WAAW,EAAE;;;;;;;;;;;;;cAa1B,WAAW;;;;;;;;;KASpB,CACA,CAAC;IACJ,CAAC;IAED,kBAAkB,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC1C,OAAO;AACT,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import dotenv from 'dotenv';
|
|
2
|
+
import fs from 'fs';
|
|
3
|
+
import path from 'path';
|
|
4
|
+
export async function generate() {
|
|
5
|
+
console.log('Generating types...');
|
|
6
|
+
// Add your code here
|
|
7
|
+
dotenv.config();
|
|
8
|
+
const pkgJson = JSON.parse(fs.readFileSync(path.join(process.cwd(), 'package.json'), 'utf8'));
|
|
9
|
+
const kplDeps = Object.keys(pkgJson.dependencies).filter(k => {
|
|
10
|
+
return k.startsWith(`@mastra`) && !['@mastra/core', '@mastra/cli'].includes(k);
|
|
11
|
+
});
|
|
12
|
+
const corePath = path.join(process.cwd(), 'node_modules/@mastra/core');
|
|
13
|
+
const importConfigMap = [];
|
|
14
|
+
for (const dep of kplDeps) {
|
|
15
|
+
const Int = await import(path.join(process.cwd(), `node_modules/${dep}/dist/index.js`));
|
|
16
|
+
const IntEntry = Object.keys(Int)[0];
|
|
17
|
+
const inst = new Int[IntEntry]({ config: {} });
|
|
18
|
+
const name = inst.name;
|
|
19
|
+
const importName = inst.constructor.name;
|
|
20
|
+
const importStatement = `import { ${importName} } from '../../../${inst.name.toLowerCase()}'`;
|
|
21
|
+
const typeFormatName = `${name.substring(0) + name.slice(1).toLowerCase()}Format`;
|
|
22
|
+
const typeFormat = `type ${typeFormatName} = { name: "${name}" };`;
|
|
23
|
+
importConfigMap.push({ importStatement, typeFormat, typeFormatName, importName, name });
|
|
24
|
+
}
|
|
25
|
+
const writePath = path.join(corePath, 'dist', 'generated-types', 'index.d.ts');
|
|
26
|
+
fs.writeFileSync(writePath, `
|
|
27
|
+
${importConfigMap.map(({ importStatement }) => importStatement).join(`\n`)}
|
|
28
|
+
|
|
29
|
+
export interface IntegrationMap {
|
|
30
|
+
${importConfigMap.map(({ name, importName }) => `"${name}": ${importName};`).join(`\n`)}
|
|
31
|
+
}
|
|
32
|
+
`);
|
|
33
|
+
console.log('Types generated successfully.');
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=generate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../../src/commands/generate.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,MAAM,CAAC,KAAK,UAAU,QAAQ;IAC5B,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;IACnC,qBAAqB;IAErB,MAAM,CAAC,MAAM,EAAE,CAAC;IAChB,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;IAE9F,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;QAC3D,OAAO,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,cAAc,EAAE,aAAa,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IACjF,CAAC,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,2BAA2B,CAAC,CAAC;IAEvE,MAAM,eAAe,GAAG,EAAE,CAAC;IAC3B,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;QAC1B,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,gBAAgB,GAAG,gBAAgB,CAAC,CAAC,CAAC;QACxF,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAErC,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC;QAC/C,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACvB,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;QACzC,MAAM,eAAe,GAAG,YAAY,UAAU,qBAAqB,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC;QAC9F,MAAM,cAAc,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,QAAQ,CAAC;QAClF,MAAM,UAAU,GAAG,QAAQ,cAAc,eAAe,IAAI,MAAM,CAAC;QAEnE,eAAe,CAAC,IAAI,CAAC,EAAE,eAAe,EAAE,UAAU,EAAE,cAAc,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1F,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,iBAAiB,EAAE,YAAY,CAAC,CAAC;IAE/E,EAAE,CAAC,aAAa,CACd,SAAS,EACT;MACE,eAAe,CAAC,GAAG,CAAC,CAAC,EAAE,eAAe,EAAE,EAAE,EAAE,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;;KAGzE,eAAe,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,IAAI,IAAI,MAAM,UAAU,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;KAErF,CACF,CAAC;IAEF,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;AAC/C,CAAC"}
|
package/dist/commands/init.js
CHANGED
|
@@ -1,19 +1,61 @@
|
|
|
1
|
-
import fs from 'fs
|
|
2
|
-
import
|
|
1
|
+
import fs from 'fs';
|
|
2
|
+
import Module from 'node:module';
|
|
3
|
+
import path from 'path';
|
|
3
4
|
import process from 'process';
|
|
4
|
-
import
|
|
5
|
-
import {
|
|
6
|
-
|
|
5
|
+
import { startNextDevServer } from './dev.js';
|
|
6
|
+
import { migrate } from './migrate.js';
|
|
7
|
+
import { provision, setupEnvFile } from './provision.js';
|
|
8
|
+
const require = Module.createRequire(import.meta.url);
|
|
9
|
+
export async function init() {
|
|
10
|
+
console.log('Initializing project...');
|
|
11
|
+
if (!checkDependencies())
|
|
12
|
+
return;
|
|
13
|
+
const projectName = getProjectName();
|
|
14
|
+
const { dbUrl, inngestUrl } = await provision(projectName);
|
|
15
|
+
await migrate(false, dbUrl);
|
|
16
|
+
await setupEnvFile({
|
|
17
|
+
dbUrl,
|
|
18
|
+
inngestUrl,
|
|
19
|
+
});
|
|
20
|
+
createBlueprintDir();
|
|
21
|
+
await startNextDevServer();
|
|
22
|
+
}
|
|
23
|
+
function createBlueprintDir() {
|
|
24
|
+
const dirPath = path.join(process.cwd(), 'mastra-blueprints');
|
|
25
|
+
if (fs.existsSync(dirPath)) {
|
|
26
|
+
console.log(`Blueprint folder already exists`);
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
fs.mkdirSync(dirPath);
|
|
30
|
+
}
|
|
31
|
+
function getProjectName() {
|
|
32
|
+
const packageJsonPath = path.join(process.cwd(), 'package.json');
|
|
33
|
+
const pkg = require(packageJsonPath);
|
|
34
|
+
return pkg.name;
|
|
35
|
+
}
|
|
36
|
+
function checkDependencies() {
|
|
7
37
|
try {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
38
|
+
// Check to make sure a package.json file exists..
|
|
39
|
+
const packageJsonPath = path.join(process.cwd(), 'package.json');
|
|
40
|
+
if (!fs.existsSync(packageJsonPath)) {
|
|
41
|
+
console.log('No package.json file found in the current directory');
|
|
42
|
+
return false;
|
|
43
|
+
}
|
|
44
|
+
// Check to make sure `@mastra/core` is installed.
|
|
45
|
+
const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf-8'));
|
|
46
|
+
if (!packageJson.dependencies || !packageJson.dependencies['@mastra/core']) {
|
|
47
|
+
console.log('Please install @mastra/core before running this command (npm install @mastra/core)');
|
|
48
|
+
return false;
|
|
49
|
+
}
|
|
50
|
+
if (fs.existsSync(path.join(process.cwd(), 'mastra.config.ts'))) {
|
|
51
|
+
console.log('mastra config file already exists');
|
|
52
|
+
return false;
|
|
53
|
+
}
|
|
54
|
+
return true;
|
|
11
55
|
}
|
|
12
56
|
catch (err) {
|
|
13
57
|
console.error(err);
|
|
58
|
+
return false;
|
|
14
59
|
}
|
|
15
60
|
}
|
|
16
|
-
|
|
17
|
-
init(path.join(process.cwd(), 'bfconfig.json'));
|
|
18
|
-
return React.createElement(Text, null, "This should write to bfconfig.json");
|
|
19
|
-
}
|
|
61
|
+
//# sourceMappingURL=init.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,OAAO,MAAM,SAAS,CAAC;AAE9B,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAEzD,MAAM,OAAO,GAAG,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAEtD,MAAM,CAAC,KAAK,UAAU,IAAI;IACxB,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;IAEvC,IAAI,CAAC,iBAAiB,EAAE;QAAE,OAAO;IAEjC,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IAErC,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,MAAM,SAAS,CAAC,WAAW,CAAC,CAAC;IAE3D,MAAM,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAC5B,MAAM,YAAY,CAAC;QACjB,KAAK;QACL,UAAU;KACX,CAAC,CAAC;IAEH,kBAAkB,EAAE,CAAC;IACrB,MAAM,kBAAkB,EAAE,CAAC;AAC7B,CAAC;AAED,SAAS,kBAAkB;IACzB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,mBAAmB,CAAC,CAAC;IAC9D,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3B,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;QAC/C,OAAO;IACT,CAAC;IACD,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;AACxB,CAAC;AAED,SAAS,cAAc;IACrB,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,CAAC,CAAC;IACjE,MAAM,GAAG,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;IACrC,OAAO,GAAG,CAAC,IAAI,CAAC;AAClB,CAAC;AAED,SAAS,iBAAiB;IACxB,IAAI,CAAC;QACH,kDAAkD;QAClD,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,CAAC,CAAC;QACjE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;YACpC,OAAO,CAAC,GAAG,CAAC,qDAAqD,CAAC,CAAC;YACnE,OAAO,KAAK,CAAC;QACf,CAAC;QAED,kDAAkD;QAClD,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC,CAAC;QAC1E,IAAI,CAAC,WAAW,CAAC,YAAY,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,cAAc,CAAC,EAAE,CAAC;YAC3E,OAAO,CAAC,GAAG,CAAC,oFAAoF,CAAC,CAAC;YAClG,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,kBAAkB,CAAC,CAAC,EAAE,CAAC;YAChE,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;YACjD,OAAO,KAAK,CAAC;QACf,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACnB,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { execa, ExecaError } from 'execa';
|
|
2
|
+
import { getPrismaBinPath, getPrismaSchemaPath } from '../utils.js';
|
|
3
|
+
export async function migrate(createOnly = false, dbUrl) {
|
|
4
|
+
console.log('Migrating database...');
|
|
5
|
+
try {
|
|
6
|
+
await checkPostgresReady(dbUrl);
|
|
7
|
+
await _migrate(createOnly, dbUrl);
|
|
8
|
+
console.log('Congrats! Your project is ready to go.');
|
|
9
|
+
return true;
|
|
10
|
+
}
|
|
11
|
+
catch (error) {
|
|
12
|
+
if (error instanceof ExecaError) {
|
|
13
|
+
console.log(error);
|
|
14
|
+
}
|
|
15
|
+
console.log(`Error: ${error.message}`, true);
|
|
16
|
+
if (error.stderr) {
|
|
17
|
+
console.log(`stderr: ${error.stderr}`, true);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
return false;
|
|
21
|
+
}
|
|
22
|
+
export async function _migrate(createOnly = false, dbUrl, swallow = false) {
|
|
23
|
+
const PRISMA_BIN = getPrismaBinPath();
|
|
24
|
+
const PRISMA_SCHEMA = getPrismaSchemaPath();
|
|
25
|
+
const CREATE_ONLY = createOnly ? `--create-only` : ``;
|
|
26
|
+
return execa(`${PRISMA_BIN} migrate dev ${CREATE_ONLY} --schema=${PRISMA_SCHEMA} --name initial_migration`, {
|
|
27
|
+
env: {
|
|
28
|
+
...process.env,
|
|
29
|
+
DB_URL: dbUrl,
|
|
30
|
+
},
|
|
31
|
+
shell: true,
|
|
32
|
+
all: true,
|
|
33
|
+
stdio: swallow ? 'ignore' : 'inherit', // inherit will pipe directly to parent process stdout/stderr
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
async function checkPostgresReady(dbUrl) {
|
|
37
|
+
for (let i = 0; i < 10; i++) {
|
|
38
|
+
try {
|
|
39
|
+
await _migrate(true, dbUrl, true); // attempts to create the migration w/o applying it
|
|
40
|
+
return true;
|
|
41
|
+
}
|
|
42
|
+
catch (error) {
|
|
43
|
+
console.log(`Waiting for postgres to be ready, attempt ${i + 1} of 10`);
|
|
44
|
+
}
|
|
45
|
+
await new Promise(resolve => setTimeout(resolve, 1000));
|
|
46
|
+
}
|
|
47
|
+
throw new Error('Postgres is not ready, aborting');
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=migrate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../src/commands/migrate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAE1C,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAEpE,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,UAAU,GAAG,KAAK,EAAE,KAAa;IAC7D,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;IACrC,IAAI,CAAC;QACH,MAAM,kBAAkB,CAAC,KAAK,CAAC,CAAC;QAChC,MAAM,QAAQ,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;QAElC,OAAO,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC;QACtD,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,IAAI,KAAK,YAAY,UAAU,EAAE,CAAC;YAChC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACrB,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,UAAU,KAAK,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,CAAC;QAC7C,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;YACjB,OAAO,CAAC,GAAG,CAAC,WAAW,KAAK,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,UAAU,GAAG,KAAK,EAAE,KAAa,EAAE,UAAmB,KAAK;IACxF,MAAM,UAAU,GAAG,gBAAgB,EAAE,CAAC;IAEtC,MAAM,aAAa,GAAG,mBAAmB,EAAE,CAAC;IAE5C,MAAM,WAAW,GAAG,UAAU,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC;IAEtD,OAAO,KAAK,CAAC,GAAG,UAAU,gBAAgB,WAAW,aAAa,aAAa,2BAA2B,EAAE;QAC1G,GAAG,EAAE;YACH,GAAG,OAAO,CAAC,GAAG;YACd,MAAM,EAAE,KAAK;SACd;QACD,KAAK,EAAE,IAAI;QACX,GAAG,EAAE,IAAI;QACT,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,EAAE,6DAA6D;KACrG,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,kBAAkB,CAAC,KAAa;IAC7C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5B,IAAI,CAAC;YACH,MAAM,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,mDAAmD;YACtF,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,GAAG,CAAC,6CAA6C,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC1E,CAAC;QACD,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;IAC1D,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;AACrD,CAAC"}
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
import { execa } from 'execa';
|
|
2
|
+
import fs from 'node:fs';
|
|
3
|
+
import path from 'node:path';
|
|
4
|
+
import prompt from 'prompt';
|
|
5
|
+
import fse from 'fs-extra/esm';
|
|
6
|
+
import { FileEnvService } from '../services/service.fileEnv.js';
|
|
7
|
+
import { config as defaultConfig } from '../starter-files/config.js';
|
|
8
|
+
import { replaceValuesInFile, copyStarterFile, sanitizeForDockerName, getInfraPorts } from '../utils.js';
|
|
9
|
+
const DOCKER_COMPOSE_FILE = 'mastra.docker-compose.yaml';
|
|
10
|
+
const KPL_CONFIG_FILE = 'mastra.config.ts';
|
|
11
|
+
export async function provision(projectName) {
|
|
12
|
+
const sanitizedProjectName = sanitizeForDockerName(projectName);
|
|
13
|
+
const { postgresPort, inngestPort } = await getInfraPorts();
|
|
14
|
+
const { userInputDbUrl, userInputInngestUrl } = await promptUserForInfra();
|
|
15
|
+
const shouldRunDocker = userInputDbUrl === '';
|
|
16
|
+
if (shouldRunDocker) {
|
|
17
|
+
try {
|
|
18
|
+
console.log('Checking if Docker is running...');
|
|
19
|
+
await execa('docker', ['info'], { stdio: 'ignore', shell: true });
|
|
20
|
+
}
|
|
21
|
+
catch (error) {
|
|
22
|
+
console.error('Docker is not running. Please start Docker and try again.');
|
|
23
|
+
throw error;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
const { dbUrl, inngestUrl } = prepareDockerComposeFile({
|
|
27
|
+
userInputDbUrl: String(userInputDbUrl),
|
|
28
|
+
userInputInngestUrl: String(userInputInngestUrl),
|
|
29
|
+
sanitizedProjectName,
|
|
30
|
+
postgresPort,
|
|
31
|
+
inngestPort,
|
|
32
|
+
});
|
|
33
|
+
if (shouldRunDocker) {
|
|
34
|
+
try {
|
|
35
|
+
await execa('docker', ['compose', '-f', DOCKER_COMPOSE_FILE, 'up', '-d'], { stdio: 'inherit' });
|
|
36
|
+
console.log('Docker containers started successfully.');
|
|
37
|
+
}
|
|
38
|
+
catch (error) {
|
|
39
|
+
console.error('Failed to start Docker containers:', error);
|
|
40
|
+
throw error;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
await setupConfig({ postgresPort, sanitizedProjectName });
|
|
44
|
+
await setupRoutes();
|
|
45
|
+
return { dbUrl, inngestUrl };
|
|
46
|
+
}
|
|
47
|
+
export function prepareDockerComposeFile({ userInputDbUrl, userInputInngestUrl, sanitizedProjectName, postgresPort, inngestPort, }) {
|
|
48
|
+
let inngestUrl = `http://localhost:${inngestPort}`;
|
|
49
|
+
let dbUrl = `postgresql://postgres:postgres@localhost:${postgresPort}/mastra?schema=mastra`;
|
|
50
|
+
const editDockerComposeFile = () => {
|
|
51
|
+
replaceValuesInFile({
|
|
52
|
+
filePath: DOCKER_COMPOSE_FILE,
|
|
53
|
+
replacements: [
|
|
54
|
+
{ replace: sanitizedProjectName, search: 'REPLACE_PROJECT_NAME' },
|
|
55
|
+
{ replace: `${postgresPort}`, search: 'REPLACE_DB_PORT' },
|
|
56
|
+
{ replace: `${inngestPort}`, search: 'REPLACE_INNGEST_PORT' },
|
|
57
|
+
],
|
|
58
|
+
});
|
|
59
|
+
};
|
|
60
|
+
if (userInputDbUrl === '' && userInputInngestUrl === '') {
|
|
61
|
+
copyStarterFile('docker-compose-pg-inngest.yaml', DOCKER_COMPOSE_FILE);
|
|
62
|
+
editDockerComposeFile();
|
|
63
|
+
}
|
|
64
|
+
else if (userInputDbUrl === '' && userInputInngestUrl !== '') {
|
|
65
|
+
copyStarterFile('docker-compose-pg-only.yaml', DOCKER_COMPOSE_FILE);
|
|
66
|
+
editDockerComposeFile();
|
|
67
|
+
inngestUrl = String(userInputInngestUrl);
|
|
68
|
+
}
|
|
69
|
+
else if (userInputDbUrl !== '' && userInputInngestUrl === '') {
|
|
70
|
+
throw new Error('Remote Inngest cannot reach local database');
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
inngestUrl = String(userInputInngestUrl);
|
|
74
|
+
dbUrl = String(userInputDbUrl);
|
|
75
|
+
}
|
|
76
|
+
return { dbUrl, inngestUrl };
|
|
77
|
+
}
|
|
78
|
+
export async function setupRoutes() {
|
|
79
|
+
const { routeRegistrationPath } = defaultConfig;
|
|
80
|
+
const tsconfigPath = path.resolve(process.cwd(), 'tsconfig.json');
|
|
81
|
+
const tsconfig = JSON.parse(fs.readFileSync(tsconfigPath, 'utf8'));
|
|
82
|
+
const mastraConfigAlias = '@mastra/config';
|
|
83
|
+
if (!tsconfig.compilerOptions) {
|
|
84
|
+
tsconfig.compilerOptions = {};
|
|
85
|
+
}
|
|
86
|
+
if (!tsconfig.compilerOptions.paths) {
|
|
87
|
+
tsconfig.compilerOptions.paths = {};
|
|
88
|
+
}
|
|
89
|
+
if (!(mastraConfigAlias in tsconfig.compilerOptions.paths)) {
|
|
90
|
+
tsconfig.compilerOptions.paths[mastraConfigAlias] = [KPL_CONFIG_FILE];
|
|
91
|
+
fs.writeFileSync('tsconfig.json', JSON.stringify(tsconfig, null, 2));
|
|
92
|
+
}
|
|
93
|
+
const apiPath = path.join(`src/app`, routeRegistrationPath, '[...mastra]/route.ts');
|
|
94
|
+
if (fs.existsSync(apiPath)) {
|
|
95
|
+
console.log('Routes file already exists');
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
copyStarterFile('api.ts', apiPath);
|
|
99
|
+
}
|
|
100
|
+
async function promptUserForInfra() {
|
|
101
|
+
prompt.start();
|
|
102
|
+
const { userInputDbUrl, userInputInngestUrl } = await prompt.get({
|
|
103
|
+
properties: {
|
|
104
|
+
userInputDbUrl: {
|
|
105
|
+
description: 'Enter your PostgreSQL connection string (postgresql://username:password@host:port/database) or press Enter to create a new instance:',
|
|
106
|
+
type: 'string',
|
|
107
|
+
pattern: /^(postgresql:\/\/.*|)$/,
|
|
108
|
+
message: 'Please enter a valid PostgreSQL connection string or leave blank',
|
|
109
|
+
required: false,
|
|
110
|
+
},
|
|
111
|
+
userInputInngestUrl: {
|
|
112
|
+
description: 'Enter your Inngest server URL or press Enter to create a new instance:',
|
|
113
|
+
type: 'string',
|
|
114
|
+
pattern: /^(https?:\/\/.*|)$/,
|
|
115
|
+
message: 'Please enter a valid URL or leave blank',
|
|
116
|
+
required: false,
|
|
117
|
+
},
|
|
118
|
+
},
|
|
119
|
+
});
|
|
120
|
+
return { userInputDbUrl, userInputInngestUrl };
|
|
121
|
+
}
|
|
122
|
+
async function setupConfig({ postgresPort, sanitizedProjectName, }) {
|
|
123
|
+
copyStarterFile('config.ts', KPL_CONFIG_FILE);
|
|
124
|
+
replaceValuesInFile({
|
|
125
|
+
filePath: KPL_CONFIG_FILE,
|
|
126
|
+
replacements: [
|
|
127
|
+
{
|
|
128
|
+
search: 'REPLACE_DB_PORT',
|
|
129
|
+
replace: `${postgresPort}`,
|
|
130
|
+
},
|
|
131
|
+
{
|
|
132
|
+
search: 'PROJECT_NAME',
|
|
133
|
+
replace: `${sanitizedProjectName}`,
|
|
134
|
+
},
|
|
135
|
+
],
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
export async function setupEnvFile({ inngestUrl, dbUrl }) {
|
|
139
|
+
const envPath = path.join(process.cwd(), '.env');
|
|
140
|
+
await fse.ensureFile(envPath);
|
|
141
|
+
const fileEnvService = new FileEnvService(envPath);
|
|
142
|
+
await fileEnvService.setEnvValue('INNGEST_URL', inngestUrl);
|
|
143
|
+
await fileEnvService.setEnvValue('DB_URL', dbUrl);
|
|
144
|
+
await fileEnvService.setEnvValue('APP_URL', 'http://localhost:3000');
|
|
145
|
+
}
|
|
146
|
+
//# sourceMappingURL=provision.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provision.js","sourceRoot":"","sources":["../../src/commands/provision.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import { dev } from './commands/dev.js';
|
|
3
|
+
import { generate } from './commands/generate.js';
|
|
4
|
+
import { init } from './commands/init.js';
|
|
5
|
+
import { migrate } from './commands/migrate.js';
|
|
6
|
+
import { validateNextJsRoot } from './utils.js';
|
|
7
|
+
//add the following line
|
|
8
|
+
const program = new Command();
|
|
9
|
+
program
|
|
10
|
+
.version('1.0.0')
|
|
11
|
+
.description('An example CLI for managing a directory')
|
|
12
|
+
.option('-l, --ls [value]', 'List directory contents')
|
|
13
|
+
.option('-m, --mkdir <value>', 'Create a directory')
|
|
14
|
+
.option('-t, --touch <value>', 'Create a file')
|
|
15
|
+
.action(() => {
|
|
16
|
+
validateNextJsRoot();
|
|
17
|
+
});
|
|
18
|
+
program
|
|
19
|
+
.command('init')
|
|
20
|
+
.description('Initialize a new project')
|
|
21
|
+
.action(() => {
|
|
22
|
+
validateNextJsRoot();
|
|
23
|
+
init();
|
|
24
|
+
});
|
|
25
|
+
program
|
|
26
|
+
.command('dev')
|
|
27
|
+
.description('Start the development server')
|
|
28
|
+
.option('-i, --integration-dev', 'Run in integration dev mode')
|
|
29
|
+
.action(opts => {
|
|
30
|
+
if (!opts?.integrationDev) {
|
|
31
|
+
validateNextJsRoot();
|
|
32
|
+
}
|
|
33
|
+
dev({ integration: opts?.integrationDev });
|
|
34
|
+
});
|
|
35
|
+
program
|
|
36
|
+
.command('generate')
|
|
37
|
+
.description('Generate types')
|
|
38
|
+
.action(() => {
|
|
39
|
+
validateNextJsRoot();
|
|
40
|
+
generate();
|
|
41
|
+
});
|
|
42
|
+
program
|
|
43
|
+
.command('migrate')
|
|
44
|
+
.description('Migrate the mastra database forward')
|
|
45
|
+
.action(() => {
|
|
46
|
+
validateNextJsRoot();
|
|
47
|
+
void migrate(false, process.env.DB_URL);
|
|
48
|
+
});
|
|
49
|
+
program.parse(process.argv);
|
|
50
|
+
const options = program.opts();
|
|
51
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAEhD,wBAAwB;AACxB,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,yCAAyC,CAAC;KACtD,MAAM,CAAC,mBAAmB,EAAE,yBAAyB,CAAC;KACtD,MAAM,CAAC,qBAAqB,EAAE,oBAAoB,CAAC;KACnD,MAAM,CAAC,qBAAqB,EAAE,eAAe,CAAC;KAC9C,MAAM,CAAC,GAAG,EAAE;IACX,kBAAkB,EAAE,CAAC;AACvB,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,0BAA0B,CAAC;KACvC,MAAM,CAAC,GAAG,EAAE;IACX,kBAAkB,EAAE,CAAC;IACrB,IAAI,EAAE,CAAC;AACT,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,KAAK,CAAC;KACd,WAAW,CAAC,8BAA8B,CAAC;KAC3C,MAAM,CAAC,uBAAuB,EAAE,6BAA6B,CAAC;KAC9D,MAAM,CAAC,IAAI,CAAC,EAAE;IACb,IAAI,CAAC,IAAI,EAAE,cAAc,EAAE,CAAC;QAC1B,kBAAkB,EAAE,CAAC;IACvB,CAAC;IACD,GAAG,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,CAAC;AAC7C,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,UAAU,CAAC;KACnB,WAAW,CAAC,gBAAgB,CAAC;KAC7B,MAAM,CAAC,GAAG,EAAE;IACX,kBAAkB,EAAE,CAAC;IACrB,QAAQ,EAAE,CAAC;AACb,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,SAAS,CAAC;KAClB,WAAW,CAAC,qCAAqC,CAAC;KAClD,MAAM,CAAC,GAAG,EAAE;IACX,kBAAkB,EAAE,CAAC;IACrB,KAAK,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,MAAO,CAAC,CAAC;AAC3C,CAAC,CAAC,CAAC;AAEL,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAE5B,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service.env.js","sourceRoot":"","sources":["../../src/services/service.env.ts"],"names":[],"mappings":"AAAA,MAAM,OAAgB,UAAU;CAG/B"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import * as fs from 'fs';
|
|
2
|
+
import { EnvService } from './service.env.js';
|
|
3
|
+
// TODO: Refactor (copied from admin)
|
|
4
|
+
export class FileEnvService extends EnvService {
|
|
5
|
+
constructor(filePath) {
|
|
6
|
+
super();
|
|
7
|
+
this.filePath = filePath;
|
|
8
|
+
}
|
|
9
|
+
readFile(filePath) {
|
|
10
|
+
return new Promise((resolve, reject) => {
|
|
11
|
+
fs.readFile(filePath, 'utf8', (err, data) => {
|
|
12
|
+
if (err)
|
|
13
|
+
reject(err);
|
|
14
|
+
else
|
|
15
|
+
resolve(data);
|
|
16
|
+
});
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
writeFile({ filePath, data }) {
|
|
20
|
+
return new Promise((resolve, reject) => {
|
|
21
|
+
fs.writeFile(filePath, data, 'utf8', (err) => {
|
|
22
|
+
if (err)
|
|
23
|
+
reject(err);
|
|
24
|
+
else
|
|
25
|
+
resolve();
|
|
26
|
+
});
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
async updateEnvData({ key, value, filePath = this.filePath, data, }) {
|
|
30
|
+
const regex = new RegExp(`^${key}=.*$`, 'm');
|
|
31
|
+
if (data.match(regex)) {
|
|
32
|
+
data = data.replace(regex, `${key}=${value}`);
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
data += `\n${key}=${value}`;
|
|
36
|
+
}
|
|
37
|
+
await this.writeFile({ filePath, data });
|
|
38
|
+
console.log(`${key} set to ${value} in ENV file.`);
|
|
39
|
+
return data;
|
|
40
|
+
}
|
|
41
|
+
async getEnvValue(key) {
|
|
42
|
+
try {
|
|
43
|
+
const data = await this.readFile(this.filePath);
|
|
44
|
+
const regex = new RegExp(`^${key}=(.*)$`, 'm');
|
|
45
|
+
const match = data.match(regex);
|
|
46
|
+
return match ? match[1] : null;
|
|
47
|
+
}
|
|
48
|
+
catch (err) {
|
|
49
|
+
console.error(`Error reading ENV value: ${err}`);
|
|
50
|
+
return null;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
async setEnvValue(key, value) {
|
|
54
|
+
try {
|
|
55
|
+
const data = await this.readFile(this.filePath);
|
|
56
|
+
await this.updateEnvData({ key, value, data });
|
|
57
|
+
}
|
|
58
|
+
catch (err) {
|
|
59
|
+
console.error(`Error writing ENV value: ${err}`);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=service.fileEnv.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service.fileEnv.js","sourceRoot":"","sources":["../../src/services/service.fileEnv.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/starter-files/api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAE7C,MAAM,OAAO,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC,cAAc,EAAE,CAAC;AAEzD,OAAO,EAAE,OAAO,IAAI,GAAG,EAAE,OAAO,IAAI,IAAI,EAAE,OAAO,IAAI,GAAG,EAAE,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export const config = {
|
|
2
|
+
name: 'PROJECT_NAME',
|
|
3
|
+
//logConfig: {}, // TODO: Add this
|
|
4
|
+
integrations: [],
|
|
5
|
+
db: {
|
|
6
|
+
provider: 'postgres',
|
|
7
|
+
uri: 'postgresql://postgres:postgres@127.0.0.1:REPLACE_DB_PORT/mastra?schema=mastra',
|
|
8
|
+
},
|
|
9
|
+
workflows: {
|
|
10
|
+
blueprintDirPath: '/mastra-blueprints',
|
|
11
|
+
systemEvents: {},
|
|
12
|
+
systemApis: [],
|
|
13
|
+
},
|
|
14
|
+
systemHostURL: process.env.APP_URL,
|
|
15
|
+
routeRegistrationPath: '/api/mastra',
|
|
16
|
+
};
|
|
17
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/starter-files/config.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,MAAM,GAAW;IAC5B,IAAI,EAAE,cAAc;IACpB,kCAAkC;IAClC,YAAY,EAAE,EAAE;IAChB,EAAE,EAAE;QACF,QAAQ,EAAE,UAAU;QACpB,GAAG,EAAE,+EAA+E;KACrF;IACD,SAAS,EAAE;QACT,gBAAgB,EAAE,oBAAoB;QACtC,YAAY,EAAE,EAAE;QAChB,UAAU,EAAE,EAAE;KACf;IACD,aAAa,EAAE,OAAO,CAAC,GAAG,CAAC,OAAQ;IACnC,qBAAqB,EAAE,aAAa;CACrC,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import fs from 'fs';
|
|
2
|
+
import path from 'path';
|
|
3
|
+
const findLockFile = (dir) => {
|
|
4
|
+
const lockFiles = ['pnpm-lock.yaml', 'package-lock.json', 'yarn.lock'];
|
|
5
|
+
for (const file of lockFiles) {
|
|
6
|
+
if (fs.existsSync(path.join(dir, file))) {
|
|
7
|
+
return file;
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
const parentDir = path.resolve(dir, '..');
|
|
11
|
+
if (parentDir !== dir) {
|
|
12
|
+
return findLockFile(parentDir);
|
|
13
|
+
}
|
|
14
|
+
return null;
|
|
15
|
+
};
|
|
16
|
+
const getPackageManager = () => {
|
|
17
|
+
const lockFile = findLockFile(process.cwd());
|
|
18
|
+
switch (lockFile) {
|
|
19
|
+
case 'pnpm-lock.yaml':
|
|
20
|
+
return 'pnpm';
|
|
21
|
+
case 'package-lock.json':
|
|
22
|
+
return 'npm';
|
|
23
|
+
case 'yarn.lock':
|
|
24
|
+
return 'yarn';
|
|
25
|
+
default: // we will use npm if we can't figure it out
|
|
26
|
+
return 'npm';
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
export default getPackageManager;
|
|
30
|
+
//# sourceMappingURL=getPackageManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getPackageManager.js","sourceRoot":"","sources":["../../src/utils/getPackageManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,MAAM,YAAY,GAAG,CAAC,GAAW,EAAE,EAAE;IACnC,MAAM,SAAS,GAAG,CAAC,gBAAgB,EAAE,mBAAmB,EAAE,WAAW,CAAC,CAAC;IACvE,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;QAC7B,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC;YACxC,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IACD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAC1C,IAAI,SAAS,KAAK,GAAG,EAAE,CAAC;QACtB,OAAO,YAAY,CAAC,SAAS,CAAC,CAAC;IACjC,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF,MAAM,iBAAiB,GAAG,GAAG,EAAE;IAC7B,MAAM,QAAQ,GAAG,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAC7C,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,gBAAgB;YACnB,OAAO,MAAM,CAAC;QAChB,KAAK,mBAAmB;YACtB,OAAO,KAAK,CAAC;QACf,KAAK,WAAW;YACd,OAAO,MAAM,CAAC;QAChB,SAAS,4CAA4C;YACnD,OAAO,KAAK,CAAC;IACjB,CAAC;AACH,CAAC,CAAC;AAEF,eAAe,iBAAiB,CAAC"}
|
package/dist/utils.js
ADDED
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import fs from 'fs';
|
|
2
|
+
import path from 'path';
|
|
3
|
+
import { check } from 'tcp-port-used';
|
|
4
|
+
import fse from 'fs-extra/esm';
|
|
5
|
+
export function replaceValuesInFile({ filePath, replacements, }) {
|
|
6
|
+
let fileContent = fs.readFileSync(filePath, 'utf8');
|
|
7
|
+
replacements.forEach(({ search, replace }) => {
|
|
8
|
+
fileContent = fileContent.replaceAll(search, replace);
|
|
9
|
+
});
|
|
10
|
+
fs.writeFileSync(filePath, fileContent);
|
|
11
|
+
}
|
|
12
|
+
export function getPrismaBinPath() {
|
|
13
|
+
return path.resolve(process.cwd(), 'node_modules', '@mastra/core', 'node_modules', 'prisma', 'node_modules', '.bin', 'prisma');
|
|
14
|
+
}
|
|
15
|
+
export function getPrismaSchemaPath() {
|
|
16
|
+
return path.resolve(process.cwd(), 'node_modules', '@mastra/core', 'src', 'prisma', 'schema.prisma');
|
|
17
|
+
}
|
|
18
|
+
export function copyStarterFile(inputFile, outputFile) {
|
|
19
|
+
const __filename = new URL(import.meta.url).pathname;
|
|
20
|
+
const __dirname = path.dirname(__filename);
|
|
21
|
+
const filePath = path.resolve(__dirname, '..', 'src', 'starter-files', inputFile);
|
|
22
|
+
const fileString = fs.readFileSync(filePath, 'utf8');
|
|
23
|
+
const outputFilePath = path.join(process.cwd(), outputFile);
|
|
24
|
+
if (fs.existsSync(outputFilePath)) {
|
|
25
|
+
console.log(`${outputFile} already exists`);
|
|
26
|
+
return false;
|
|
27
|
+
}
|
|
28
|
+
fse.outputFileSync(outputFilePath, fileString);
|
|
29
|
+
return fileString;
|
|
30
|
+
}
|
|
31
|
+
const isPortOpen = async (port) => {
|
|
32
|
+
return new Promise((resolve, reject) => {
|
|
33
|
+
check(port).then((inUse) => {
|
|
34
|
+
resolve(!inUse);
|
|
35
|
+
});
|
|
36
|
+
});
|
|
37
|
+
};
|
|
38
|
+
const getNextOpenPort = async (startFrom = 2222) => {
|
|
39
|
+
for (const port of Array.from({ length: 20 }, (_, i) => startFrom + i)) {
|
|
40
|
+
const isOpen = await isPortOpen(port);
|
|
41
|
+
if (isOpen) {
|
|
42
|
+
return port;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
throw new Error('No open ports found after 20 attempts');
|
|
46
|
+
};
|
|
47
|
+
export async function getInfraPorts() {
|
|
48
|
+
let postgresPort = 5432;
|
|
49
|
+
let inngestPort = 8288;
|
|
50
|
+
const dbPortOpen = await isPortOpen(postgresPort);
|
|
51
|
+
const inngestPortOpen = await isPortOpen(inngestPort);
|
|
52
|
+
if (!dbPortOpen) {
|
|
53
|
+
postgresPort = (await getNextOpenPort(postgresPort));
|
|
54
|
+
}
|
|
55
|
+
if (!inngestPortOpen) {
|
|
56
|
+
inngestPort = (await getNextOpenPort(inngestPort));
|
|
57
|
+
}
|
|
58
|
+
return { postgresPort, inngestPort };
|
|
59
|
+
}
|
|
60
|
+
export function sanitizeForDockerName(name) {
|
|
61
|
+
// Convert to lowercase
|
|
62
|
+
let sanitized = name.toLowerCase();
|
|
63
|
+
// Replace any non-alphanumeric characters (excluding dashes) with dashes
|
|
64
|
+
sanitized = sanitized.replace(/[^a-z0-9-]/g, '-');
|
|
65
|
+
// Trim dashes from the start and end
|
|
66
|
+
sanitized = sanitized.replace(/^-+|-+$/g, '');
|
|
67
|
+
// Ensure name is between 2 and 255 characters
|
|
68
|
+
if (sanitized.length < 2) {
|
|
69
|
+
throw new Error('Name must be at least 2 characters long.');
|
|
70
|
+
}
|
|
71
|
+
if (sanitized.length > 255) {
|
|
72
|
+
sanitized = sanitized.substring(0, 255);
|
|
73
|
+
}
|
|
74
|
+
return sanitized;
|
|
75
|
+
}
|
|
76
|
+
export const validateNextJsRoot = () => {
|
|
77
|
+
const cwd = process.cwd();
|
|
78
|
+
fs.readdir(cwd, (err, files) => {
|
|
79
|
+
if (err) {
|
|
80
|
+
console.error('Error reading directory:', err);
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
const configFiles = files.filter(file => file.startsWith('next.config'));
|
|
84
|
+
if (configFiles.length === 0) {
|
|
85
|
+
throw new Error('@mastra/cli should only be run at the root of your Next.js project');
|
|
86
|
+
}
|
|
87
|
+
});
|
|
88
|
+
};
|
|
89
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,58 +1,73 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
2
|
+
"name": "mastra",
|
|
3
|
+
"version": "0.1.1",
|
|
4
|
+
"license": "MIT",
|
|
5
|
+
"description": "",
|
|
6
|
+
"main": "index.js",
|
|
7
|
+
"files": [
|
|
8
|
+
"dist"
|
|
9
|
+
],
|
|
10
|
+
"keywords": [],
|
|
11
|
+
"author": "",
|
|
12
|
+
"type": "module",
|
|
13
|
+
"dependencies": {
|
|
14
|
+
"commander": "^12.1.0",
|
|
15
|
+
"execa": "^9.3.1",
|
|
16
|
+
"figlet": "^1.7.0",
|
|
17
|
+
"fs-extra": "^11.2.0",
|
|
18
|
+
"is-port-reachable": "^4.0.0",
|
|
19
|
+
"prompt": "^1.3.0",
|
|
20
|
+
"tcp-port-used": "^1.0.2",
|
|
21
|
+
"@mastra/admin": "0.1.3",
|
|
22
|
+
"@mastra/core": "0.1.1"
|
|
23
|
+
},
|
|
24
|
+
"devDependencies": {
|
|
25
|
+
"@types/fs-extra": "^11.0.4",
|
|
26
|
+
"@types/jest": "^29.5.12",
|
|
27
|
+
"@types/node": "^22.5.0",
|
|
28
|
+
"@types/prompt": "^1.1.8",
|
|
29
|
+
"@types/react": "^18",
|
|
30
|
+
"@types/tcp-port-used": "^1.0.4",
|
|
31
|
+
"dotenv": "^16.3.1",
|
|
32
|
+
"jest": "^29.7.0",
|
|
33
|
+
"ts-jest": "^29.2.4",
|
|
34
|
+
"typescript": "^5.5.4"
|
|
35
|
+
},
|
|
36
|
+
"jest": {
|
|
37
|
+
"preset": "ts-jest/presets/default-esm",
|
|
38
|
+
"moduleNameMapper": {
|
|
39
|
+
"^(\\.{1,2}/.*)\\.js$": "$1"
|
|
40
|
+
},
|
|
41
|
+
"transform": {
|
|
42
|
+
"^.+\\.tsx?$": [
|
|
43
|
+
"ts-jest",
|
|
44
|
+
{
|
|
45
|
+
"useESM": true,
|
|
46
|
+
"tsconfig": {
|
|
47
|
+
"target": "es2021",
|
|
48
|
+
"module": "NodeNext"
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
]
|
|
52
|
+
},
|
|
53
|
+
"extensionsToTreatAsEsm": [
|
|
54
|
+
".ts"
|
|
55
|
+
],
|
|
56
|
+
"moduleFileExtensions": [
|
|
57
|
+
"ts",
|
|
58
|
+
"tsx",
|
|
59
|
+
"js",
|
|
60
|
+
"jsx",
|
|
61
|
+
"json",
|
|
62
|
+
"node"
|
|
63
|
+
]
|
|
64
|
+
},
|
|
65
|
+
"scripts": {
|
|
66
|
+
"build": "npx tsc",
|
|
67
|
+
"build:dev": "npx tsc --watch",
|
|
68
|
+
"init": "npx tsx src/index.ts init",
|
|
69
|
+
"dev": "npx tsx src/index.ts dev",
|
|
70
|
+
"test": "pnpm jest",
|
|
71
|
+
"typecheck": "tsc --noEmit --incremental"
|
|
72
|
+
}
|
|
73
|
+
}
|
package/dist/cli.d.ts
DELETED
package/dist/cli.js
DELETED
package/dist/commands/dev.d.ts
DELETED
package/dist/commands/index.d.ts
DELETED
package/dist/commands/index.js
DELETED
package/dist/commands/init.d.ts
DELETED
package/readme.md
DELETED
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
# bellefond
|
|
2
|
-
|
|
3
|
-
> This readme is automatically generated by [create-pastel-app](https://github.com/vadimdemedes/create-pastel-app)
|
|
4
|
-
|
|
5
|
-
## Install
|
|
6
|
-
|
|
7
|
-
```bash
|
|
8
|
-
$ npm install --global bellefond
|
|
9
|
-
```
|
|
10
|
-
|
|
11
|
-
## CLI
|
|
12
|
-
|
|
13
|
-
```
|
|
14
|
-
$ bellefond --help
|
|
15
|
-
|
|
16
|
-
Usage
|
|
17
|
-
$ bellefond
|
|
18
|
-
|
|
19
|
-
Options
|
|
20
|
-
--name Your name
|
|
21
|
-
|
|
22
|
-
Examples
|
|
23
|
-
$ bellefond2 --name=Jane
|
|
24
|
-
Hello, Jane
|
|
25
|
-
```
|