mastra 0.1.57-unstable.57 → 0.1.57-unstable.88
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/commands/create/create.d.ts +8 -0
- package/dist/commands/create/create.d.ts.map +1 -0
- package/dist/commands/create/create.js +35 -0
- package/dist/commands/create/utils.d.ts +4 -0
- package/dist/commands/create/utils.d.ts.map +1 -0
- package/dist/commands/create/utils.js +58 -0
- package/dist/commands/deploy/cloudflare/index.d.ts.map +1 -1
- package/dist/commands/deploy/cloudflare/index.js +2 -0
- package/dist/commands/deploy/netlify/index.d.ts.map +1 -1
- package/dist/commands/deploy/netlify/index.js +2 -0
- package/dist/commands/deploy/vercel/index.d.ts.map +1 -1
- package/dist/commands/deploy/vercel/index.js +2 -0
- package/dist/commands/dev.d.ts.map +1 -1
- package/dist/commands/dev.js +97 -10
- package/dist/commands/engine/down.d.ts +1 -1
- package/dist/commands/engine/down.d.ts.map +1 -1
- package/dist/commands/engine/down.js +3 -2
- package/dist/commands/engine/up.d.ts +1 -1
- package/dist/commands/engine/up.d.ts.map +1 -1
- package/dist/commands/engine/up.js +3 -2
- package/dist/commands/init/init.d.ts +2 -2
- package/dist/commands/init/init.d.ts.map +1 -1
- package/dist/commands/init/init.js +33 -9
- package/dist/commands/init/utils.d.ts +21 -9
- package/dist/commands/init/utils.d.ts.map +1 -1
- package/dist/commands/init/utils.js +64 -74
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +54 -56
- package/dist/services/service.deps.d.ts +1 -0
- package/dist/services/service.deps.d.ts.map +1 -1
- package/dist/services/service.deps.js +8 -0
- package/dist/services/service.docker.d.ts +1 -0
- package/dist/services/service.docker.d.ts.map +1 -1
- package/dist/services/service.docker.js +20 -0
- package/dist/src/starter-files/config.ts +28 -0
- package/dist/src/starter-files/mastra-pg.docker-compose.yaml +15 -0
- package/dist/src/starter-files/tools.ts +95 -0
- package/dist/src/starter-files/workflow.ts +173 -0
- package/dist/templates/express-server.d.ts.map +1 -1
- package/dist/templates/express-server.js +30 -31
- package/dist/templates/netlify.d.ts.map +1 -1
- package/dist/templates/netlify.js +199 -34
- package/dist/templates/worker.d.ts.map +1 -1
- package/dist/templates/worker.js +255 -35
- package/dist/utils/bundle.d.ts +1 -0
- package/dist/utils/bundle.d.ts.map +1 -1
- package/dist/utils/bundle.js +8 -8
- package/package.json +5 -3
- package/src/playground/dist/assets/{hcl-Cztwc-HH.js → hcl-_Zu0RE-q.js} +1 -1
- package/src/playground/dist/assets/index-BiEU7Tmg.js +389 -0
- package/src/playground/dist/assets/{index-Dx4A5Op9.js → index-Cke4BidO.js} +2 -2
- package/src/playground/dist/assets/{vue-html-x3hEOujm.js → vue-html-59TQSa_j.js} +1 -1
- package/src/playground/dist/assets/vue-srE0XGv_.js +1 -0
- package/src/playground/dist/index.html +1 -1
- package/src/starter-files/tools.ts +88 -14
- package/src/starter-files/workflow.ts +160 -21
- package/src/playground/dist/assets/index-DY22QVI1.js +0 -389
- package/src/playground/dist/assets/vue-xldAUJov.js +0 -1
- package/src/starter-files/api.ts +0 -11
- package/src/starter-files/framework-utils.ts +0 -33
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../../src/commands/create/create.ts"],"names":[],"mappings":"AAIA,OAAO,EAAqB,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAIlE,eAAO,MAAM,MAAM,SAAgB;IACjC,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,kBAyBA,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import * as p from '@clack/prompts';
|
|
2
|
+
import color from 'picocolors';
|
|
3
|
+
import { init } from '../init/init.js';
|
|
4
|
+
import { interactivePrompt } from '../init/utils.js';
|
|
5
|
+
import { createMastraProject } from './utils.js';
|
|
6
|
+
export const create = async (args) => {
|
|
7
|
+
const { projectName } = await createMastraProject();
|
|
8
|
+
const directory = '/src';
|
|
9
|
+
if (!args.components || !args.llmProvider || !args.addExample) {
|
|
10
|
+
const result = await interactivePrompt();
|
|
11
|
+
await init({
|
|
12
|
+
...result,
|
|
13
|
+
llmApiKey: result?.llmApiKey,
|
|
14
|
+
});
|
|
15
|
+
postCreate({ projectName });
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
18
|
+
const { components = [], llmProvider = 'openai', addExample = false, llmApiKey } = args;
|
|
19
|
+
await init({
|
|
20
|
+
directory,
|
|
21
|
+
components,
|
|
22
|
+
llmProvider,
|
|
23
|
+
addExample,
|
|
24
|
+
llmApiKey,
|
|
25
|
+
});
|
|
26
|
+
postCreate({ projectName });
|
|
27
|
+
};
|
|
28
|
+
const postCreate = ({ projectName }) => {
|
|
29
|
+
p.outro(`
|
|
30
|
+
${color.green('To start your project:')}
|
|
31
|
+
|
|
32
|
+
${color.cyan('cd')} ${projectName}
|
|
33
|
+
${color.cyan('npm run dev')}
|
|
34
|
+
`);
|
|
35
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/commands/create/utils.ts"],"names":[],"mappings":"AAYA,eAAO,MAAM,mBAAmB;;EA6D/B,CAAC"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import * as p from '@clack/prompts';
|
|
2
|
+
import child_process from 'node:child_process';
|
|
3
|
+
import util from 'node:util';
|
|
4
|
+
import color from 'picocolors';
|
|
5
|
+
import fs from 'fs/promises';
|
|
6
|
+
import { DepsService } from '../../services/service.deps.js';
|
|
7
|
+
import { logger } from '../../utils/logger.js';
|
|
8
|
+
const exec = util.promisify(child_process.exec);
|
|
9
|
+
export const createMastraProject = async () => {
|
|
10
|
+
p.intro(color.inverse('Mastra Create'));
|
|
11
|
+
const projectName = await p.text({
|
|
12
|
+
message: 'What do you want to name your project?',
|
|
13
|
+
placeholder: 'my-mastra-app',
|
|
14
|
+
defaultValue: 'my-mastra-app',
|
|
15
|
+
});
|
|
16
|
+
if (p.isCancel(projectName)) {
|
|
17
|
+
p.cancel('Operation cancelled');
|
|
18
|
+
process.exit(0);
|
|
19
|
+
}
|
|
20
|
+
const s = p.spinner();
|
|
21
|
+
s.start('Creating project');
|
|
22
|
+
try {
|
|
23
|
+
await fs.mkdir(projectName);
|
|
24
|
+
}
|
|
25
|
+
catch (error) {
|
|
26
|
+
if (error instanceof Error && 'code' in error && error.code === 'EEXIST') {
|
|
27
|
+
s.stop(`A directory named "${projectName}" already exists. Please choose a different name or delete the existing directory.`);
|
|
28
|
+
process.exit(1);
|
|
29
|
+
}
|
|
30
|
+
throw error;
|
|
31
|
+
}
|
|
32
|
+
process.chdir(projectName);
|
|
33
|
+
s.message('Creating project');
|
|
34
|
+
await exec(`npm init -y`);
|
|
35
|
+
const depsService = new DepsService();
|
|
36
|
+
await depsService.addScriptsToPackageJson({
|
|
37
|
+
dev: 'mastra dev',
|
|
38
|
+
});
|
|
39
|
+
s.stop('Project created');
|
|
40
|
+
s.start('Installing npm dependencies');
|
|
41
|
+
await exec(`npm i zod`);
|
|
42
|
+
await exec(`npm i typescript tsx @types/node --save-dev`);
|
|
43
|
+
s.stop('NPM dependencies installed');
|
|
44
|
+
s.start('Installing mastra');
|
|
45
|
+
await exec(`npm i -D mastra`);
|
|
46
|
+
s.stop('mastra installed');
|
|
47
|
+
s.start('Installing @mastra/core');
|
|
48
|
+
await exec(`npm i @mastra/core@alpha`);
|
|
49
|
+
s.stop('@mastra/core installed');
|
|
50
|
+
s.start('Adding .gitignore');
|
|
51
|
+
await exec(`echo output.txt >> .gitignore`);
|
|
52
|
+
await exec(`echo node_modules >> .gitignore`);
|
|
53
|
+
await exec(`echo dist >> .gitignore`);
|
|
54
|
+
s.stop('.gitignore added');
|
|
55
|
+
p.outro('Project created successfully');
|
|
56
|
+
logger.break();
|
|
57
|
+
return { projectName };
|
|
58
|
+
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/commands/deploy/cloudflare/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG1C,qBAAa,kBAAmB,SAAQ,QAAQ;IAC9C,IAAI,SAAgB;IAEd,UAAU;IAMV,YAAY;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/commands/deploy/cloudflare/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG1C,qBAAa,kBAAmB,SAAQ,QAAQ;IAC9C,IAAI,SAAgB;IAEd,UAAU;IAMV,YAAY;IA2BlB,UAAU,IAAI,IAAI;IA+BZ,aAAa,CAAC,EAAE,KAAK,EAAE,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;CAajE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/commands/deploy/netlify/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG1C,qBAAa,eAAgB,SAAQ,QAAQ;IAC3C,IAAI,SAAa;IAEjB,mBAAmB;IAMb,UAAU;IAMV,YAAY;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/commands/deploy/netlify/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG1C,qBAAa,eAAgB,SAAQ,QAAQ;IAC3C,IAAI,SAAa;IAEjB,mBAAmB;IAMb,UAAU;IAMV,YAAY;IA8BlB,UAAU,IAAI,IAAI;IAoBZ,aAAa,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;CASzF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/commands/deploy/vercel/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAe1C,qBAAa,cAAe,SAAQ,QAAQ;IAC1C,IAAI,SAAY;IACV,UAAU;IAMV,YAAY;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/commands/deploy/vercel/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAe1C,qBAAa,cAAe,SAAQ,QAAQ;IAC1C,IAAI,SAAY;IACV,UAAU;IAMV,YAAY;IA8BlB,UAAU;IA4BV,OAAO,CAAC,YAAY;IAUd,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE;IAqDpC,aAAa,CAAC,EAClB,KAAK,EACL,WAA8B,GAC/B,EAAE;QACD,KAAK,EAAE,MAAM,CAAC;QACd,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,GAAG,OAAO,CAAC,IAAI,CAAC;CA6ClB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dev.d.ts","sourceRoot":"","sources":["../../src/commands/dev.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"dev.d.ts","sourceRoot":"","sources":["../../src/commands/dev.ts"],"names":[],"mappings":"AAqGA,wBAAsB,GAAG,CAAC,EACxB,IAAI,EACJ,GAAG,EACH,GAAG,EACH,SAAS,GACV,EAAE;IACD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,iBA4HA"}
|
package/dist/commands/dev.js
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
|
+
import { watch } from 'chokidar';
|
|
1
2
|
import { config } from 'dotenv';
|
|
2
3
|
import { execa } from 'execa';
|
|
3
4
|
import { writeFileSync } from 'fs';
|
|
4
5
|
import { join } from 'path';
|
|
5
6
|
import path from 'path';
|
|
6
|
-
import { fileURLToPath
|
|
7
|
+
import { fileURLToPath } from 'url';
|
|
7
8
|
import fsExtra from 'fs-extra/esm';
|
|
8
9
|
import fs from 'fs/promises';
|
|
9
10
|
import { FileService } from '../services/service.file.js';
|
|
@@ -11,6 +12,78 @@ import { bundle, bundleServer } from '../utils/bundle.js';
|
|
|
11
12
|
import { EXPRESS_SERVER } from './deploy/server.js';
|
|
12
13
|
const __filename = fileURLToPath(import.meta.url);
|
|
13
14
|
const __dirname = path.dirname(__filename);
|
|
15
|
+
let currentServerProcess;
|
|
16
|
+
async function rebundleAndRestart(dirPath, dotMastraPath, port, toolsDirs) {
|
|
17
|
+
if (currentServerProcess) {
|
|
18
|
+
console.log('Stopping current server...');
|
|
19
|
+
currentServerProcess.kill();
|
|
20
|
+
await new Promise(resolve => setTimeout(resolve, 1000));
|
|
21
|
+
}
|
|
22
|
+
/*
|
|
23
|
+
Bundle mastra
|
|
24
|
+
*/
|
|
25
|
+
await bundle(dirPath, { buildName: 'Mastra' });
|
|
26
|
+
/*
|
|
27
|
+
Bundle tools
|
|
28
|
+
*/
|
|
29
|
+
const defaultToolsPath = path.join(dirPath, 'tools');
|
|
30
|
+
const toolsPaths = [...(toolsDirs?.split(',').map(tool => path.join(process.cwd(), tool)) || []), defaultToolsPath];
|
|
31
|
+
const toolPathsWithFileNames = (await Promise.all(toolsPaths.map(async (toolPath) => {
|
|
32
|
+
try {
|
|
33
|
+
const files = await fs.readdir(toolPath);
|
|
34
|
+
return files.map(file => {
|
|
35
|
+
const fullPath = path.join(toolPath, file);
|
|
36
|
+
const fileName = path.parse(file).name;
|
|
37
|
+
const name = fileName === 'index' ? path.basename(path.dirname(fullPath)) : fileName;
|
|
38
|
+
return {
|
|
39
|
+
path: toolPath,
|
|
40
|
+
name,
|
|
41
|
+
fileName,
|
|
42
|
+
};
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
catch (err) {
|
|
46
|
+
if (toolPath === defaultToolsPath) {
|
|
47
|
+
return [];
|
|
48
|
+
}
|
|
49
|
+
console.warn(`Error reading tools directory ${toolPath}:`, err);
|
|
50
|
+
return [];
|
|
51
|
+
}
|
|
52
|
+
}))).flat();
|
|
53
|
+
for (const { path, name, fileName } of toolPathsWithFileNames) {
|
|
54
|
+
await bundle(path, {
|
|
55
|
+
outfile: join(dotMastraPath, 'tools', `${name}.mjs`),
|
|
56
|
+
entryFile: fileName,
|
|
57
|
+
buildName: `${name}`,
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
const MASTRA_TOOLS_PATH = toolPathsWithFileNames?.length
|
|
61
|
+
? toolPathsWithFileNames.map(tool => path.join(dotMastraPath, 'tools', `${tool.name}.mjs`)).join(',')
|
|
62
|
+
: undefined;
|
|
63
|
+
try {
|
|
64
|
+
console.log('Restarting server...');
|
|
65
|
+
currentServerProcess = execa('node', ['server.mjs'], {
|
|
66
|
+
cwd: dotMastraPath,
|
|
67
|
+
env: {
|
|
68
|
+
PORT: port.toString() || '4111',
|
|
69
|
+
MASTRA_TOOLS_PATH,
|
|
70
|
+
},
|
|
71
|
+
stdio: 'inherit',
|
|
72
|
+
reject: false,
|
|
73
|
+
});
|
|
74
|
+
if (currentServerProcess.failed) {
|
|
75
|
+
console.error('Server failed to restart with error:', currentServerProcess.stderr);
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
catch (err) {
|
|
80
|
+
const execaError = err;
|
|
81
|
+
if (execaError.stderr)
|
|
82
|
+
console.error('Server error output:', execaError.stderr);
|
|
83
|
+
if (execaError.stdout)
|
|
84
|
+
console.error('Server output:', execaError.stdout);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
14
87
|
export async function dev({ port, env, dir, toolsDirs, }) {
|
|
15
88
|
const dotMastraPath = join(process.cwd(), '.mastra');
|
|
16
89
|
const playgroundServePath = join(dotMastraPath, 'playground');
|
|
@@ -39,7 +112,7 @@ export async function dev({ port, env, dir, toolsDirs, }) {
|
|
|
39
112
|
Bundle mastra
|
|
40
113
|
*/
|
|
41
114
|
const dirPath = dir || path.join(process.cwd(), 'src/mastra');
|
|
42
|
-
await bundle(dirPath);
|
|
115
|
+
await bundle(dirPath, { buildName: 'Mastra' });
|
|
43
116
|
/*
|
|
44
117
|
Bundle tools
|
|
45
118
|
*/
|
|
@@ -71,20 +144,20 @@ export async function dev({ port, env, dir, toolsDirs, }) {
|
|
|
71
144
|
await bundle(path, {
|
|
72
145
|
outfile: join(dotMastraPath, 'tools', `${name}.mjs`),
|
|
73
146
|
entryFile: fileName,
|
|
147
|
+
buildName: `${name}`,
|
|
74
148
|
});
|
|
75
149
|
}
|
|
76
150
|
/*
|
|
77
151
|
Bundle server
|
|
78
152
|
*/
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
await bundleServer(serverPath);
|
|
153
|
+
writeFileSync(join(dotMastraPath, 'index.mjs'), EXPRESS_SERVER);
|
|
154
|
+
await bundleServer(join(dotMastraPath, 'index.mjs'));
|
|
82
155
|
const MASTRA_TOOLS_PATH = toolPathsWithFileNames?.length
|
|
83
|
-
? toolPathsWithFileNames.map(tool =>
|
|
156
|
+
? toolPathsWithFileNames.map(tool => path.join(dotMastraPath, 'tools', `${tool.name}.mjs`)).join(',')
|
|
84
157
|
: undefined;
|
|
85
158
|
try {
|
|
86
159
|
console.log('Starting server...');
|
|
87
|
-
|
|
160
|
+
currentServerProcess = execa('node', ['server.mjs'], {
|
|
88
161
|
cwd: dotMastraPath,
|
|
89
162
|
env: {
|
|
90
163
|
PORT: port.toString() || '4111',
|
|
@@ -93,11 +166,25 @@ export async function dev({ port, env, dir, toolsDirs, }) {
|
|
|
93
166
|
stdio: 'inherit',
|
|
94
167
|
reject: false,
|
|
95
168
|
});
|
|
96
|
-
if (
|
|
97
|
-
console.error('Server failed to start with error:',
|
|
169
|
+
if (currentServerProcess.failed) {
|
|
170
|
+
console.error('Server failed to start with error:', currentServerProcess.stderr);
|
|
98
171
|
process.exit(1);
|
|
99
172
|
}
|
|
100
|
-
|
|
173
|
+
const watcher = watch(dirPath, {
|
|
174
|
+
persistent: true,
|
|
175
|
+
});
|
|
176
|
+
watcher.on('change', async () => {
|
|
177
|
+
console.log(`Changes detected`);
|
|
178
|
+
await rebundleAndRestart(dirPath, dotMastraPath, port, toolsDirs);
|
|
179
|
+
});
|
|
180
|
+
process.on('SIGINT', () => {
|
|
181
|
+
console.log('Stopping server...');
|
|
182
|
+
if (currentServerProcess) {
|
|
183
|
+
currentServerProcess.kill();
|
|
184
|
+
}
|
|
185
|
+
watcher.close();
|
|
186
|
+
process.exit(0);
|
|
187
|
+
});
|
|
101
188
|
}
|
|
102
189
|
catch (err) {
|
|
103
190
|
const execaError = err;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare function down(): Promise<void>;
|
|
1
|
+
export declare function down(composePath?: string): Promise<void>;
|
|
2
2
|
//# sourceMappingURL=down.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"down.d.ts","sourceRoot":"","sources":["../../../src/commands/engine/down.ts"],"names":[],"mappings":"AAIA,wBAAsB,IAAI,
|
|
1
|
+
{"version":3,"file":"down.d.ts","sourceRoot":"","sources":["../../../src/commands/engine/down.ts"],"names":[],"mappings":"AAIA,wBAAsB,IAAI,CAAC,WAAW,CAAC,EAAE,MAAM,iBAY9C"}
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import yoctoSpinner from 'yocto-spinner';
|
|
2
2
|
import { DockerService } from '../../services/service.docker.js';
|
|
3
|
-
export async function down() {
|
|
3
|
+
export async function down(composePath) {
|
|
4
4
|
const spinner = yoctoSpinner({ text: 'Shutting down docker container\n' });
|
|
5
5
|
spinner.start();
|
|
6
6
|
try {
|
|
7
7
|
const dockerService = new DockerService();
|
|
8
|
-
|
|
8
|
+
const composeFile = dockerService.getComposeFile(composePath);
|
|
9
|
+
await dockerService.stopDockerContainer(composeFile);
|
|
9
10
|
spinner.success('Docker container shut down successfully\n');
|
|
10
11
|
}
|
|
11
12
|
catch (error) {
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare function up(): Promise<void>;
|
|
1
|
+
export declare function up(composePath?: string): Promise<void>;
|
|
2
2
|
//# sourceMappingURL=up.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"up.d.ts","sourceRoot":"","sources":["../../../src/commands/engine/up.ts"],"names":[],"mappings":"AAIA,wBAAsB,EAAE,
|
|
1
|
+
{"version":3,"file":"up.d.ts","sourceRoot":"","sources":["../../../src/commands/engine/up.ts"],"names":[],"mappings":"AAIA,wBAAsB,EAAE,CAAC,WAAW,CAAC,EAAE,MAAM,iBAY5C"}
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import yoctoSpinner from 'yocto-spinner';
|
|
2
2
|
import { DockerService } from '../../services/service.docker.js';
|
|
3
|
-
export async function up() {
|
|
3
|
+
export async function up(composePath) {
|
|
4
4
|
const spinner = yoctoSpinner({ text: 'Starting docker container\n' });
|
|
5
5
|
spinner.start();
|
|
6
6
|
try {
|
|
7
7
|
const dockerService = new DockerService();
|
|
8
|
-
|
|
8
|
+
const composeFile = dockerService.getComposeFile(composePath);
|
|
9
|
+
await dockerService.startDockerContainer(composeFile);
|
|
9
10
|
spinner.success('Docker containers started successfully\n');
|
|
10
11
|
}
|
|
11
12
|
catch (error) {
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { LLMProvider } from './utils.js';
|
|
2
|
-
export declare const init: ({ directory, addExample, components, llmProvider,
|
|
2
|
+
export declare const init: ({ directory, addExample, components, llmProvider, llmApiKey, }: {
|
|
3
3
|
directory: string;
|
|
4
4
|
components: string[];
|
|
5
5
|
llmProvider: LLMProvider;
|
|
6
6
|
addExample: boolean;
|
|
7
|
-
|
|
7
|
+
llmApiKey?: string;
|
|
8
8
|
}) => Promise<{
|
|
9
9
|
success: boolean;
|
|
10
10
|
}>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/commands/init/init.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/commands/init/init.ts"],"names":[],"mappings":"AAGA,OAAO,EAKL,WAAW,EAIZ,MAAM,YAAY,CAAC;AAIpB,eAAO,MAAM,IAAI,mEAMd;IACD,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,WAAW,EAAE,WAAW,CAAC;IACzB,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;;EAqDA,CAAC"}
|
|
@@ -1,26 +1,50 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
|
|
1
|
+
import * as p from '@clack/prompts';
|
|
2
|
+
import color from 'picocolors';
|
|
3
|
+
import { createComponentsDir, createMastraDir, getAPIKey, writeAPIKey, writeCodeSample, writeIndexFile, } from './utils.js';
|
|
4
|
+
const s = p.spinner();
|
|
5
|
+
export const init = async ({ directory, addExample = false, components, llmProvider = 'openai', llmApiKey, }) => {
|
|
6
|
+
s.start('Initializing Mastra');
|
|
4
7
|
try {
|
|
5
8
|
const result = await createMastraDir(directory);
|
|
6
9
|
if (!result.ok) {
|
|
7
|
-
|
|
10
|
+
s.stop(color.inverse(' Mastra already initialized '));
|
|
8
11
|
return { success: false };
|
|
9
12
|
}
|
|
10
13
|
const dirPath = result.dirPath;
|
|
11
14
|
await Promise.all([
|
|
12
|
-
writeIndexFile(
|
|
15
|
+
writeIndexFile({
|
|
16
|
+
dirPath,
|
|
17
|
+
addExample,
|
|
18
|
+
addWorkflow: components.includes('workflows'),
|
|
19
|
+
addAgent: components.includes('agents'),
|
|
20
|
+
}),
|
|
13
21
|
...components.map(component => createComponentsDir(dirPath, component)),
|
|
14
|
-
writeAPIKey(llmProvider),
|
|
22
|
+
writeAPIKey({ provider: llmProvider, apiKey: llmApiKey }),
|
|
15
23
|
]);
|
|
16
24
|
if (addExample) {
|
|
17
|
-
await Promise.all([
|
|
25
|
+
await Promise.all([
|
|
26
|
+
components.map(component => writeCodeSample(dirPath, component, llmProvider, components)),
|
|
27
|
+
]);
|
|
28
|
+
}
|
|
29
|
+
const key = await getAPIKey(llmProvider || 'openai');
|
|
30
|
+
s.stop();
|
|
31
|
+
if (!llmApiKey) {
|
|
32
|
+
p.note(`
|
|
33
|
+
${color.green('Mastra initialized successfully!')}
|
|
34
|
+
|
|
35
|
+
Add your ${color.cyan(key)} as an environment variable
|
|
36
|
+
in your ${color.cyan('.env.development')} file
|
|
37
|
+
`);
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
p.note(`
|
|
41
|
+
${color.green('Mastra initialized successfully!')}
|
|
42
|
+
`);
|
|
18
43
|
}
|
|
19
|
-
showSpinner && logger.success('Mastra initialized successfully');
|
|
20
44
|
return { success: true };
|
|
21
45
|
}
|
|
22
46
|
catch (err) {
|
|
23
|
-
|
|
47
|
+
s.stop(color.inverse('An error occurred while initializing Mastra'));
|
|
24
48
|
console.error(err);
|
|
25
49
|
return { success: false };
|
|
26
50
|
}
|
|
@@ -2,26 +2,38 @@ import { ModelConfig } from '@mastra/core';
|
|
|
2
2
|
export type LLMProvider = 'openai' | 'anthropic' | 'groq';
|
|
3
3
|
export type Components = 'agents' | 'workflows' | 'tools';
|
|
4
4
|
export declare const modelToConfigMap: Record<LLMProvider, ModelConfig>;
|
|
5
|
-
export declare function writeAgentSample(llmProvider: LLMProvider, destPath: string): Promise<void>;
|
|
5
|
+
export declare function writeAgentSample(llmProvider: LLMProvider, destPath: string, addExampleTool: boolean): Promise<void>;
|
|
6
6
|
export declare function writeWorkflowSample(destPath: string): Promise<void>;
|
|
7
7
|
export declare function writeToolSample(destPath: string): Promise<void>;
|
|
8
|
-
export declare function writeCodeSampleForComponents(llmprovider: LLMProvider, component: Components, destPath: string): Promise<void | "">;
|
|
8
|
+
export declare function writeCodeSampleForComponents(llmprovider: LLMProvider, component: Components, destPath: string, components: Components[]): Promise<void | "">;
|
|
9
9
|
export declare const createComponentsDir: (dirPath: string, component: string) => Promise<void>;
|
|
10
|
-
export declare const writeIndexFile: (dirPath
|
|
10
|
+
export declare const writeIndexFile: ({ dirPath, addAgent, addExample, addWorkflow, }: {
|
|
11
|
+
dirPath: string;
|
|
12
|
+
addExample: boolean;
|
|
13
|
+
addWorkflow: boolean;
|
|
14
|
+
addAgent: boolean;
|
|
15
|
+
}) => Promise<void>;
|
|
11
16
|
export declare const checkInitialization: (dirPath: string) => Promise<boolean>;
|
|
12
17
|
export declare const checkAndInstallCoreDeps: () => Promise<void>;
|
|
13
18
|
export declare function installCoreDeps(): Promise<void>;
|
|
14
|
-
export declare const
|
|
19
|
+
export declare const getAPIKey: (provider: LLMProvider) => Promise<string>;
|
|
20
|
+
export declare const writeAPIKey: ({ provider, apiKey, }: {
|
|
21
|
+
provider: LLMProvider;
|
|
22
|
+
apiKey?: string;
|
|
23
|
+
}) => Promise<void>;
|
|
15
24
|
export declare const createMastraDir: (directory: string) => Promise<{
|
|
16
25
|
ok: true;
|
|
17
26
|
dirPath: string;
|
|
18
27
|
} | {
|
|
19
28
|
ok: false;
|
|
20
29
|
}>;
|
|
21
|
-
export declare const writeCodeSample: (dirPath: string, component: Components, llmProvider: LLMProvider) => Promise<void>;
|
|
22
|
-
export declare const interactivePrompt: () => Promise<
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
30
|
+
export declare const writeCodeSample: (dirPath: string, component: Components, llmProvider: LLMProvider, components: Components[]) => Promise<void>;
|
|
31
|
+
export declare const interactivePrompt: () => Promise<{
|
|
32
|
+
components: string[];
|
|
33
|
+
directory: string;
|
|
34
|
+
llmProvider: "openai" | "anthropic" | "groq";
|
|
35
|
+
llmApiKey: unknown;
|
|
36
|
+
addExample: boolean;
|
|
26
37
|
}>;
|
|
38
|
+
export declare const checkPkgJson: () => Promise<void>;
|
|
27
39
|
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/commands/init/utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/commands/init/utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAiB3C,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,WAAW,GAAG,MAAM,CAAC;AAC1D,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,WAAW,GAAG,OAAO,CAAC;AAE1D,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,WAAW,EAAE,WAAW,CAI7D,CAAC;AAEF,wBAAsB,gBAAgB,CAAC,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,EAAE,cAAc,EAAE,OAAO,iBA8BzG;AAED,wBAAsB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,iBAGzD;AAED,wBAAsB,eAAe,CAAC,QAAQ,EAAE,MAAM,iBAGrD;AAED,wBAAsB,4BAA4B,CAChD,WAAW,EAAE,WAAW,EACxB,SAAS,EAAE,UAAU,EACrB,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,UAAU,EAAE,sBAYzB;AAED,eAAO,MAAM,mBAAmB,YAAmB,MAAM,aAAa,MAAM,kBAI3E,CAAC;AAEF,eAAO,MAAM,cAAc,oDAKxB;IACD,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,OAAO,CAAC;IACpB,WAAW,EAAE,OAAO,CAAC;IACrB,QAAQ,EAAE,OAAO,CAAC;CACnB,kBAwCA,CAAC;AAEF,eAAO,MAAM,mBAAmB,YAAmB,MAAM,qBAOxD,CAAC;AAEF,eAAO,MAAM,uBAAuB,qBAOnC,CAAC;AAGF,wBAAsB,eAAe,kBA0BpC;AAED,eAAO,MAAM,SAAS,aAAoB,WAAW,oBAYpD,CAAC;AAEF,eAAO,MAAM,WAAW,0BAGrB;IACD,QAAQ,EAAE,WAAW,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,kBAGA,CAAC;AACF,eAAO,MAAM,eAAe,cAAqB,MAAM,KAAG,OAAO,CAAC;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAA;CAAE,CAe9G,CAAC;AAEF,eAAO,MAAM,eAAe,YACjB,MAAM,aACJ,UAAU,eACR,WAAW,cACZ,UAAU,EAAE,kBASzB,CAAC;AAEF,eAAO,MAAM,iBAAiB;;;;;;EAuE7B,CAAC;AAEF,eAAO,MAAM,YAAY,qBAmBxB,CAAC"}
|