mastra 1.3.13 → 1.3.14-alpha.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.
Files changed (37) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/dist/{chunk-5UFTTBNF.js → chunk-W5DIKM6F.js} +3 -3
  3. package/dist/chunk-W5DIKM6F.js.map +1 -0
  4. package/dist/commands/create/create.js +1 -1
  5. package/dist/docs/SKILL.md +1 -1
  6. package/dist/docs/assets/SOURCE_MAP.json +2 -2
  7. package/dist/docs/references/docs-deployment-studio.md +2 -0
  8. package/dist/index.js +2 -2
  9. package/dist/studio/assets/{chunk-ZCJMLMGS-ZB2AsrPy.js → chunk-ZCJMLMGS-B8s68hbM.js} +1 -1
  10. package/dist/studio/assets/{index-B9sIWxCb.js → index-3wuT4-Zo.js} +1 -1
  11. package/dist/studio/assets/{index-DVFwTsmo.js → index-B2--yw3G.js} +1 -1
  12. package/dist/studio/assets/{index-C9S55UPA.js → index-BFvh6-U2.js} +1 -1
  13. package/dist/studio/assets/{index-7JzeIw6j.js → index-BQT7RpxW.js} +1 -1
  14. package/dist/studio/assets/{index-Bws6h8zh.js → index-BS3PmBMq.js} +1 -1
  15. package/dist/studio/assets/{index-Cybhg02z.js → index-C93jhRms.js} +1 -1
  16. package/dist/studio/assets/index-CG0vMVJ9.js +1 -0
  17. package/dist/studio/assets/{index-DJcdllIq.js → index-CXhhwb7x.js} +1 -1
  18. package/dist/studio/assets/{index-_8NoumZr.js → index-C_E3ZBMF.js} +1 -1
  19. package/dist/studio/assets/{index-D3R8jf3S.js → index-CnMQHa3E.js} +1 -1
  20. package/dist/studio/assets/index-CxWc4NO7.js +1 -0
  21. package/dist/studio/assets/{index-bVmkXXht.js → index-CzMzz9sh.js} +1 -1
  22. package/dist/studio/assets/{index-BjBnqw7U.js → index-DLWbAQuV.js} +1 -1
  23. package/dist/studio/assets/{index-DbwCqAat.js → index-DltnHUMJ.js} +1 -1
  24. package/dist/studio/assets/{index-D6XvDS9z.js → index-Dw-49iad.js} +1 -1
  25. package/dist/studio/assets/{index-B0qS5zwY.js → index-YA_UIt8M.js} +1 -1
  26. package/dist/studio/assets/{index-CHBd6ZIY.js → index-cNiK9-nY.js} +1 -1
  27. package/dist/studio/assets/index-yuNLyhUG.js +1 -0
  28. package/dist/studio/assets/{main-BPrjA9bP.js → main-Cm2bdPHp.js} +179 -179
  29. package/dist/studio/assets/{token-APYSY3BW-RPVF55TR-DRGipSP9.js → token-APYSY3BW-RPVF55TR-HaJL13Ao.js} +1 -1
  30. package/dist/studio/assets/token-util-RMHT2CPJ-VVUHOXBL-CuZqurmC.js +1 -0
  31. package/dist/studio/index.html +1 -1
  32. package/package.json +5 -5
  33. package/dist/chunk-5UFTTBNF.js.map +0 -1
  34. package/dist/studio/assets/index-C0Gc2y_K.js +0 -1
  35. package/dist/studio/assets/index-DDxT2xjh.js +0 -1
  36. package/dist/studio/assets/index-DekoNIHO.js +0 -1
  37. package/dist/studio/assets/token-util-RMHT2CPJ-VVUHOXBL-Dex8PWl0.js +0 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,21 @@
1
1
  # mastra
2
2
 
3
+ ## 1.3.14-alpha.1
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies [[`681ee1c`](https://github.com/mastra-ai/mastra/commit/681ee1c811359efd1b8bebc4bce35b9bb7b14bec)]:
8
+ - @mastra/core@1.15.0-alpha.1
9
+ - @mastra/deployer@1.15.0-alpha.1
10
+
11
+ ## 1.3.14-alpha.0
12
+
13
+ ### Patch Changes
14
+
15
+ - Updated dependencies [[`fa99b06`](https://github.com/mastra-ai/mastra/commit/fa99b06835ff9a674b37a5442351de3f704c5de0), [`cb611a1`](https://github.com/mastra-ai/mastra/commit/cb611a1e89a4f4cf74c97b57e0c27bb56f2eceb5), [`62d1d3c`](https://github.com/mastra-ai/mastra/commit/62d1d3cc08fe8182e7080237fd975de862ec8c91), [`8681ecb`](https://github.com/mastra-ai/mastra/commit/8681ecb86184d5907267000e4576cc442a9a83fc), [`28d0249`](https://github.com/mastra-ai/mastra/commit/28d0249295782277040ad1e0d243e695b7ab1ce4), [`bb0f09d`](https://github.com/mastra-ai/mastra/commit/bb0f09dbac58401b36069f483acf5673202db5b5), [`5f7e9d0`](https://github.com/mastra-ai/mastra/commit/5f7e9d0db664020e1f3d97d7d18c6b0b9d4843d0)]:
16
+ - @mastra/deployer@1.15.0-alpha.0
17
+ - @mastra/core@1.15.0-alpha.0
18
+
3
19
  ## 1.3.13
4
20
 
5
21
  ### Patch Changes
@@ -15,7 +15,7 @@ import prettier from 'prettier';
15
15
  // package.json
16
16
  var package_default = {
17
17
  name: "mastra",
18
- version: "1.3.13",
18
+ version: "1.3.14-alpha.1",
19
19
  license: "Apache-2.0",
20
20
  description: "cli for mastra",
21
21
  type: "module",
@@ -1030,5 +1030,5 @@ async function createFromTemplate(args) {
1030
1030
  }
1031
1031
 
1032
1032
  export { create, createLogger, init, logger, package_default };
1033
- //# sourceMappingURL=chunk-5UFTTBNF.js.map
1034
- //# sourceMappingURL=chunk-5UFTTBNF.js.map
1033
+ //# sourceMappingURL=chunk-W5DIKM6F.js.map
1034
+ //# sourceMappingURL=chunk-W5DIKM6F.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../package.json","../src/utils/logger.ts","../src/utils/clone-template.ts","../src/utils/template-utils.ts","../src/commands/init/skills-install.ts","../src/commands/init/init.ts","../src/commands/create/utils.ts","../src/commands/create/create.ts"],"names":["spinner","p","p2","exec","util","child_process","path","fs","p3","color","s","fsSync"],"mappings":"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","file":"chunk-W5DIKM6F.js","sourcesContent":["{\n \"name\": \"mastra\",\n \"version\": \"1.3.14-alpha.1\",\n \"license\": \"Apache-2.0\",\n \"description\": \"cli for mastra\",\n \"type\": \"module\",\n \"main\": \"dist/index.js\",\n \"types\": \"dist/index.d.ts\",\n \"bin\": {\n \"mastra\": \"./dist/index.js\"\n },\n \"exports\": {\n \".\": \"./dist/index.js\",\n \"./package.json\": \"./package.json\",\n \"./telemetry-loader\": \"./dist/commands/dev/telemetry-loader.js\",\n \"./dist/*\": [\n \"./dist/*\",\n \"./dist/*.js\"\n ]\n },\n \"files\": [\n \"dist\",\n \"CHANGELOG.md\"\n ],\n \"scripts\": {\n \"build:lib\": \"tsup --silent --config tsup.config.ts\",\n \"prepack\": \"pnpx tsx ../../scripts/generate-package-docs.ts\",\n \"test\": \"vitest run\",\n \"test:watch\": \"vitest watch\",\n \"clean\": \"rm -rf dist && rm -rf node_modules\",\n \"typecheck\": \"tsc --noEmit --incremental\",\n \"lint\": \"eslint .\"\n },\n \"keywords\": [\n \"mastra\",\n \"cli\",\n \"ai\",\n \"llm\",\n \"llms\",\n \"agent\",\n \"agents\",\n \"dev\",\n \"development\",\n \"deploy\",\n \"deployment\",\n \"build\",\n \"workflow\",\n \"typescript\",\n \"command-line\",\n \"devtools\"\n ],\n \"dependencies\": {\n \"@clack/prompts\": \"^1.1.0\",\n \"@expo/devcert\": \"^1.2.1\",\n \"@mastra/deployer\": \"workspace:^\",\n \"@mastra/loggers\": \"workspace:^\",\n \"commander\": \"^14.0.3\",\n \"dotenv\": \"^17.3.1\",\n \"execa\": \"^9.6.1\",\n \"fs-extra\": \"^11.3.4\",\n \"get-port\": \"^7.1.0\",\n \"local-pkg\": \"^1.1.2\",\n \"picocolors\": \"^1.1.1\",\n \"posthog-node\": \"5.17.2\",\n \"prettier\": \"^3.8.1\",\n \"semver\": \"^7.7.4\",\n \"serve\": \"^14.2.6\",\n \"serve-handler\": \"^6.1.7\",\n \"shell-quote\": \"^1.8.3\",\n \"strip-json-comments\": \"^5.0.3\",\n \"yocto-spinner\": \"^1.1.0\"\n },\n \"devDependencies\": {\n \"@commander-js/extra-typings\": \"^14.0.0\",\n \"@internal/lint\": \"workspace:*\",\n \"@internal/playground\": \"workspace:*\",\n \"@internal/types-builder\": \"workspace:*\",\n \"@mastra/core\": \"workspace:*\",\n \"@types/fs-extra\": \"^11.0.4\",\n \"@types/node\": \"22.19.15\",\n \"@types/semver\": \"^7.7.1\",\n \"@types/serve-handler\": \"^6.1.4\",\n \"@types/shell-quote\": \"^1.7.5\",\n \"@vitest/coverage-v8\": \"catalog:\",\n \"@vitest/ui\": \"catalog:\",\n \"eslint\": \"^9.39.4\",\n \"memfs\": \"^4.56.11\",\n \"rollup\": \"^4.59.0\",\n \"tsup\": \"^8.5.1\",\n \"type-fest\": \"^5.4.4\",\n \"typescript\": \"catalog:\",\n \"vitest\": \"catalog:\"\n },\n \"peerDependencies\": {\n \"@mastra/core\": \">=1.1.0-0 <2.0.0-0\",\n \"zod\": \"^3.25.0 || ^4.0.0\"\n },\n \"homepage\": \"https://mastra.ai\",\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/mastra-ai/mastra.git\",\n \"directory\": \"packages/cli\"\n },\n \"bugs\": {\n \"url\": \"https://github.com/mastra-ai/mastra/issues\"\n },\n \"engines\": {\n \"node\": \">=22.13.0\"\n }\n}\n","import { PinoLogger } from '@mastra/loggers';\n\nexport const logger = createLogger(false);\n\nexport function createLogger(debug: boolean = false) {\n return new PinoLogger({\n name: 'Mastra CLI',\n level: debug ? 'debug' : 'info',\n });\n}\n","import child_process from 'node:child_process';\nimport fs from 'node:fs/promises';\nimport path from 'node:path';\nimport util from 'node:util';\nimport shellQuote from 'shell-quote';\nimport yoctoSpinner from 'yocto-spinner';\n\nimport type { LLMProvider } from '../commands/init/utils';\nimport { getModelIdentifier } from '../commands/init/utils';\nimport { getPackageManager } from '../commands/utils';\n\nimport { logger } from './logger';\nimport type { Template } from './template-utils';\n\nconst exec = util.promisify(child_process.exec);\n\nexport interface CloneTemplateOptions {\n template: Template;\n projectName: string;\n targetDir?: string;\n branch?: string;\n llmProvider?: LLMProvider;\n}\n\nexport async function cloneTemplate(options: CloneTemplateOptions): Promise<string> {\n const { template, projectName, targetDir, branch, llmProvider } = options;\n const projectPath = targetDir ? path.resolve(targetDir, projectName) : path.resolve(projectName);\n\n const spinner = yoctoSpinner({ text: `Cloning template \"${template.title}\"...` }).start();\n\n try {\n // Check if directory already exists\n if (await directoryExists(projectPath)) {\n spinner.error(`Directory ${projectName} already exists`);\n throw new Error(`Directory ${projectName} already exists`);\n }\n\n // Clone the repository without git history\n await cloneRepositoryWithoutGit(template.githubUrl, projectPath, branch);\n\n // Update package.json with new project name\n await updatePackageJson(projectPath, projectName);\n\n // Copy .env.example to .env if it exists, and update MODEL if llmProvider is specified\n const envExamplePath = path.join(projectPath, '.env.example');\n if (await fileExists(envExamplePath)) {\n const envPath = path.join(projectPath, '.env');\n await fs.copyFile(envExamplePath, envPath);\n\n // Update MODEL in .env if llmProvider is specified\n if (llmProvider) {\n await updateEnvFile(envPath, llmProvider);\n }\n }\n\n spinner.success(`Template \"${template.title}\" cloned successfully to ${projectName}`);\n return projectPath;\n } catch (error) {\n spinner.error(`Failed to clone template: ${error instanceof Error ? error.message : 'Unknown error'}`);\n throw error;\n }\n}\n\nasync function directoryExists(dirPath: string): Promise<boolean> {\n try {\n const stat = await fs.stat(dirPath);\n return stat.isDirectory();\n } catch {\n return false;\n }\n}\n\nasync function fileExists(filePath: string): Promise<boolean> {\n try {\n const stat = await fs.stat(filePath);\n return stat.isFile();\n } catch {\n return false;\n }\n}\n\nasync function cloneRepositoryWithoutGit(repoUrl: string, targetPath: string, branch?: string): Promise<void> {\n // Create target directory\n await fs.mkdir(targetPath, { recursive: true });\n\n try {\n // First try using degit if available (similar to Next.js)\n const degitRepo = repoUrl.replace('https://github.com/', '');\n // If branch is specified, append it to the degit repo (format: owner/repo#branch)\n const degitRepoWithBranch = branch ? `${degitRepo}#${branch}` : degitRepo;\n const degitCommand = shellQuote.quote(['npx', 'degit', degitRepoWithBranch, targetPath]);\n await exec(degitCommand, {\n cwd: process.cwd(),\n });\n } catch {\n // Fallback to git clone + remove .git\n try {\n const gitArgs = ['git', 'clone'];\n // Add branch flag if specified\n if (branch) {\n gitArgs.push('--branch', branch);\n }\n gitArgs.push(repoUrl, targetPath);\n\n const gitCommand = shellQuote.quote(gitArgs);\n await exec(gitCommand, {\n cwd: process.cwd(),\n });\n\n // Remove .git directory\n const gitDir = path.join(targetPath, '.git');\n if (await directoryExists(gitDir)) {\n await fs.rm(gitDir, { recursive: true, force: true });\n }\n } catch (gitError) {\n throw new Error(`Failed to clone repository: ${gitError instanceof Error ? gitError.message : 'Unknown error'}`);\n }\n }\n}\n\nasync function updatePackageJson(projectPath: string, projectName: string): Promise<void> {\n const packageJsonPath = path.join(projectPath, 'package.json');\n\n try {\n const packageJsonContent = await fs.readFile(packageJsonPath, 'utf-8');\n const packageJson = JSON.parse(packageJsonContent);\n\n // Update the name field\n packageJson.name = projectName;\n\n // Write back the updated package.json\n await fs.writeFile(packageJsonPath, JSON.stringify(packageJson, null, 2), 'utf-8');\n } catch (error) {\n // It's okay if package.json doesn't exist or can't be updated\n logger.warn(`Could not update package.json: ${error instanceof Error ? error.message : 'Unknown error'}`);\n }\n}\n\nasync function updateEnvFile(envPath: string, llmProvider: LLMProvider): Promise<void> {\n try {\n const envContent = await fs.readFile(envPath, 'utf-8');\n const modelString = getModelIdentifier(llmProvider);\n\n if (!modelString) {\n logger.warn(`Could not get model identifier for provider: ${llmProvider}`);\n return;\n }\n\n // Remove quotes from modelString (it comes as 'provider/model')\n const modelValue = modelString.replace(/'/g, '');\n\n // Replace the MODEL line with the selected provider's model\n const updatedContent = envContent.replace(/^MODEL=.*/m, `MODEL=${modelValue}`);\n\n await fs.writeFile(envPath, updatedContent, 'utf-8');\n logger.info(`Updated MODEL in .env to ${modelValue}`);\n } catch (error) {\n // It's okay if .env can't be updated\n logger.warn(`Could not update .env file: ${error instanceof Error ? error.message : 'Unknown error'}`);\n }\n}\n\nexport async function installDependencies(projectPath: string, packageManager?: string): Promise<void> {\n const spinner = yoctoSpinner({ text: 'Installing dependencies...' }).start();\n\n try {\n // Use provided package manager or detect from environment/globally\n const pm = packageManager || getPackageManager();\n\n const installCommand = shellQuote.quote([pm, 'install']);\n\n await exec(installCommand, {\n cwd: projectPath,\n });\n\n spinner.success('Dependencies installed successfully');\n } catch (error) {\n spinner.error(`Failed to install dependencies: ${error instanceof Error ? error.message : 'Unknown error'}`);\n throw error;\n }\n}\n","import * as p from '@clack/prompts';\n\nexport interface Template {\n githubUrl: string;\n title: string;\n slug: string;\n agents: string[];\n mcp: string[];\n tools: string[];\n networks: string[];\n workflows: string[];\n}\n\nconst TEMPLATES_API_URL = process.env.MASTRA_TEMPLATES_API_URL || 'https://mastra.ai/api/templates.json';\n\nexport async function loadTemplates(): Promise<Template[]> {\n try {\n const response = await fetch(TEMPLATES_API_URL);\n if (!response.ok) {\n throw new Error(`Failed to fetch templates: ${response.statusText}`);\n }\n const templates = (await response.json()) as Template[];\n return templates;\n } catch (error) {\n console.error('Error loading templates:', error);\n throw new Error('Failed to load templates. Please check your internet connection and try again.');\n }\n}\n\nfunction pluralize(count: number, singular: string, plural?: string): string {\n return count === 1 ? singular : plural || `${singular}s`;\n}\n\nexport async function selectTemplate(templates: Template[]): Promise<Template | null> {\n const choices = templates.map(template => {\n const parts = [];\n if (template.agents?.length) {\n parts.push(`${template.agents.length} ${pluralize(template.agents.length, 'agent')}`);\n }\n if (template.tools?.length) {\n parts.push(`${template.tools.length} ${pluralize(template.tools.length, 'tool')}`);\n }\n if (template.workflows?.length) {\n parts.push(`${template.workflows.length} ${pluralize(template.workflows.length, 'workflow')}`);\n }\n if (template.mcp?.length) {\n parts.push(`${template.mcp.length} ${pluralize(template.mcp.length, 'MCP server')}`);\n }\n if (template.networks?.length) {\n parts.push(`${template.networks.length} ${pluralize(template.networks.length, 'agent network')}`);\n }\n\n return {\n value: template,\n label: template.title,\n hint: parts.join(', ') || 'Template components',\n };\n });\n\n const selected = await p.select({\n message: 'Select a template:',\n options: choices,\n });\n\n if (p.isCancel(selected)) {\n return null;\n }\n\n return selected as Template;\n}\n\nexport function findTemplateByName(templates: Template[], templateName: string): Template | null {\n // First try to find by exact slug match\n let template = templates.find(t => t.slug === templateName);\n if (template) return template;\n\n // Then try to find by slug without \"template-\" prefix\n const slugWithPrefix = `template-${templateName}`;\n template = templates.find(t => t.slug === slugWithPrefix);\n if (template) return template;\n\n // Finally try case-insensitive name match\n template = templates.find(t => t.title.toLowerCase() === templateName.toLowerCase());\n if (template) return template;\n\n return null;\n}\n\nexport function getDefaultProjectName(template: Template): string {\n // Remove \"template-\" prefix from slug if it exists\n return template.slug.replace(/^template-/, '');\n}\n","import { execa } from 'execa';\n\nexport async function installMastraSkills({\n directory,\n agents,\n}: {\n directory: string;\n agents: string[];\n}): Promise<{ success: boolean; error?: string; agents: string[] }> {\n try {\n // Build args: --agent takes space-separated agent names\n const args = ['skills', 'add', 'mastra-ai/skills', '--agent', ...agents, '-y'];\n\n await execa('npx', args, {\n cwd: directory,\n stdio: 'pipe', // Hide verbose output\n });\n\n return { success: true, agents };\n } catch (error) {\n return {\n success: false,\n error: error instanceof Error ? error.message : 'Unknown error',\n agents,\n };\n }\n}\n","import * as p from '@clack/prompts';\nimport color from 'picocolors';\n\nimport { DepsService } from '../../services/service.deps';\n\nimport { gitInit } from '../utils';\nimport { installMastraDocsMCPServer } from './mcp-docs-server-install';\nimport type { Editor } from './mcp-docs-server-install';\nimport { installMastraSkills } from './skills-install';\nimport {\n createComponentsDir,\n createMastraDir,\n getAPIKey,\n writeAgentsMarkdown,\n writeAPIKey,\n writeClaudeMarkdown,\n writeCodeSample,\n writeIndexFile,\n} from './utils';\nimport type { Component, LLMProvider } from './utils';\n\nconst s = p.spinner();\n\nexport const init = async ({\n directory = 'src/',\n components,\n llmProvider = 'openai',\n llmApiKey,\n addExample = false,\n skills,\n mcpServer,\n versionTag,\n initGit = false,\n}: {\n directory?: string;\n components: Component[];\n llmProvider?: LLMProvider;\n llmApiKey?: string;\n addExample?: boolean;\n skills?: string[];\n mcpServer?: Editor;\n versionTag?: string;\n initGit?: boolean;\n}) => {\n s.start('Initializing Mastra');\n const packageVersionTag = versionTag ? `@${versionTag}` : '';\n\n try {\n const result = await createMastraDir(directory);\n\n if (!result.ok) {\n s.stop(color.inverse(' Mastra already initialized '));\n return { success: false };\n }\n\n const dirPath = result.dirPath;\n\n await Promise.all([\n writeIndexFile({\n dirPath,\n addExample,\n addWorkflow: components.includes('workflows'),\n addAgent: components.includes('agents'),\n addScorers: components.includes('scorers'),\n }),\n ...components.map(component => createComponentsDir(dirPath, component)),\n writeAPIKey({ provider: llmProvider, apiKey: llmApiKey }),\n ]);\n\n if (addExample) {\n await Promise.all([\n ...components.map(component =>\n writeCodeSample(dirPath, component as Component, llmProvider, components as Component[]),\n ),\n ]);\n\n const depService = new DepsService();\n\n const needsLibsql = (await depService.checkDependencies(['@mastra/libsql'])) !== `ok`;\n if (needsLibsql) {\n await depService.installPackages([`@mastra/libsql${packageVersionTag}`]);\n }\n const needsMemory =\n components.includes(`agents`) && (await depService.checkDependencies(['@mastra/memory'])) !== `ok`;\n if (needsMemory) {\n await depService.installPackages([`@mastra/memory${packageVersionTag}`]);\n }\n\n const needsLoggers = (await depService.checkDependencies(['@mastra/loggers'])) !== `ok`;\n if (needsLoggers) {\n await depService.installPackages([`@mastra/loggers${packageVersionTag}`]);\n }\n\n const needsObservability = (await depService.checkDependencies(['@mastra/observability'])) !== `ok`;\n if (needsObservability) {\n await depService.installPackages([`@mastra/observability${packageVersionTag}`]);\n }\n\n const needsEvals =\n components.includes(`scorers`) && (await depService.checkDependencies(['@mastra/evals'])) !== `ok`;\n if (needsEvals) {\n await depService.installPackages([`@mastra/evals${packageVersionTag}`]);\n }\n }\n\n const key = await getAPIKey(llmProvider || 'openai');\n\n s.stop('Mastra initialized');\n\n // Install skills if selected\n if (skills && skills.length > 0) {\n try {\n s.start('Installing Mastra agent skills');\n const skillsResult = await installMastraSkills({\n directory: process.cwd(),\n agents: skills,\n });\n if (skillsResult.success) {\n // Format agent names nicely\n const agentNames = skillsResult.agents\n .map(agent => {\n // Convert kebab-case to Title Case\n return agent\n .split('-')\n .map(word => word.charAt(0).toUpperCase() + word.slice(1))\n .join(' ');\n })\n .join(', ');\n s.stop(`Mastra agent skills installed (in ${agentNames})`);\n } else {\n s.stop('Skills installation failed');\n console.warn(color.yellow(`\\nWarning: ${skillsResult.error}`));\n }\n } catch (error) {\n s.stop('Skills installation failed');\n console.warn(color.yellow(`\\nWarning: ${error instanceof Error ? error.message : 'Unknown error'}`));\n }\n }\n\n // Install MCP if an editor was selected\n if (mcpServer) {\n await installMastraDocsMCPServer({\n editor: mcpServer,\n directory: process.cwd(),\n versionTag,\n });\n }\n\n // Write AGENTS.md and CLAUDE.md if skills or MCP were configured\n if ((skills && skills.length > 0) || mcpServer) {\n try {\n // Always write AGENTS.md\n await writeAgentsMarkdown({ skills, mcpServer });\n\n // Write CLAUDE.md only if claude-code is in skills list\n const shouldWriteClaudeMd = skills?.includes('claude-code');\n if (shouldWriteClaudeMd) {\n await writeClaudeMarkdown({ skills, mcpServer });\n }\n } catch (error) {\n // Don't fail initialization if markdown files fail to write\n console.warn(\n color.yellow(\n `\\nWarning: Failed to create agent guide files: ${error instanceof Error ? error.message : 'Unknown error'}`,\n ),\n );\n }\n }\n\n if (initGit) {\n s.start('Initializing git repository');\n try {\n await gitInit({ cwd: process.cwd() });\n s.stop('Git repository initialized');\n } catch {\n s.stop();\n }\n }\n\n if (!llmApiKey) {\n p.note(`\n ${color.green('Mastra initialized successfully!')}\n\n Add your ${color.cyan(key)} as an environment variable\n in your ${color.cyan('.env')} file\n `);\n } else {\n p.note(`\n ${color.green('Mastra initialized successfully!')}\n `);\n }\n return { success: true };\n } catch (err) {\n s.stop(color.inverse('An error occurred while initializing Mastra'));\n console.error(err);\n return { success: false };\n }\n};\n","import child_process from 'node:child_process';\nimport fsSync from 'node:fs';\nimport fs from 'node:fs/promises';\nimport path from 'node:path';\nimport util from 'node:util';\nimport * as p from '@clack/prompts';\nimport color from 'picocolors';\nimport prettier from 'prettier';\n\nimport { DepsService } from '../../services/service.deps.js';\nimport { getPackageManagerAddCommand } from '../../utils/package-manager.js';\nimport type { PackageManager } from '../../utils/package-manager.js';\nimport { interactivePrompt } from '../init/utils.js';\nimport type { LLMProvider } from '../init/utils.js';\nimport { getPackageManager } from '../utils.js';\n\nconst exec = util.promisify(child_process.exec);\n\nconst execWithTimeout = async (command: string, timeoutMs?: number) => {\n try {\n const promise = exec(command, { killSignal: 'SIGTERM' });\n\n if (!timeoutMs) {\n return await promise;\n }\n\n let timeoutId: NodeJS.Timeout;\n const timeout = new Promise((_, reject) => {\n timeoutId = setTimeout(() => reject(new Error('Command timed out')), timeoutMs);\n });\n\n try {\n const result = await Promise.race([promise, timeout]);\n clearTimeout(timeoutId!);\n return result;\n } catch (error) {\n clearTimeout(timeoutId!);\n if (error instanceof Error && error.message === 'Command timed out') {\n throw new Error('Something went wrong during installation, please try again.');\n }\n throw error;\n }\n } catch (error: unknown) {\n throw error;\n }\n};\n\nasync function getInitCommand(pm: PackageManager): Promise<string> {\n switch (pm) {\n case 'npm':\n return 'npm init -y';\n case 'pnpm':\n return 'pnpm init';\n case 'yarn':\n return 'yarn init -y';\n case 'bun':\n return 'bun init -y';\n default:\n return 'npm init -y';\n }\n}\n\nasync function initializePackageJson(pm: PackageManager): Promise<void> {\n // Run the init command\n const initCommand = await getInitCommand(pm);\n await exec(initCommand);\n\n // Read and update package.json directly (more reliable than pkg set)\n const packageJsonPath = path.join(process.cwd(), 'package.json');\n const packageJson = JSON.parse(await fs.readFile(packageJsonPath, 'utf-8'));\n\n packageJson.type = 'module';\n packageJson.engines = {\n ...packageJson.engines,\n node: '>=22.13.0',\n };\n\n await fs.writeFile(packageJsonPath, JSON.stringify(packageJson, null, 2));\n}\n\nconst writeReadmeFile = async ({ dirPath, projectName }: { dirPath: string; projectName: string }) => {\n const packageManager = getPackageManager();\n const readmePath = path.join(dirPath, 'README.md');\n\n const content = `# ${projectName}\n\nWelcome to your new [Mastra](https://mastra.ai/) project! We're excited to see what you'll build.\n\n## Getting Started\n\nStart the development server:\n\n\\`\\`\\`shell\n${packageManager} run dev\n\\`\\`\\`\n\nOpen [http://localhost:4111](http://localhost:4111) in your browser to access [Mastra Studio](https://mastra.ai/docs/getting-started/studio). It provides an interactive UI for building and testing your agents, along with a REST API that exposes your Mastra application as a local service. This lets you start building without worrying about integration right away.\n\nYou can start editing files inside the \\`src/mastra\\` directory. The development server will automatically reload whenever you make changes.\n\n## Learn more\n\nTo learn more about Mastra, visit our [documentation](https://mastra.ai/docs/). Your bootstrapped project includes example code for [agents](https://mastra.ai/docs/agents/overview), [tools](https://mastra.ai/docs/agents/using-tools), [workflows](https://mastra.ai/docs/workflows/overview), [scorers](https://mastra.ai/docs/evals/overview), and [observability](https://mastra.ai/docs/observability/overview).\n\nIf you're new to AI agents, check out our [course](https://mastra.ai/course) and [YouTube videos](https://youtube.com/@mastra-ai). You can also join our [Discord](https://discord.gg/BTYqqHKUrf) community to get help and share your projects.\n\n## Deploy on Mastra Cloud\n\n[Mastra Cloud](https://cloud.mastra.ai/) gives you a serverless agent environment with atomic deployments. Access your agents from anywhere and monitor performance. Make sure they don't go off the rails with evals and tracing.\n\nCheck out the [deployment guide](https://mastra.ai/docs/deployment/overview) for more details.`;\n\n const formattedContent = await prettier.format(content, {\n parser: 'markdown',\n singleQuote: true,\n });\n\n await fs.writeFile(readmePath, formattedContent);\n};\n\nasync function installMastraDependency(\n pm: PackageManager,\n dependency: string,\n versionTag: string,\n isDev: boolean,\n timeout?: number,\n) {\n let installCommand = getPackageManagerAddCommand(pm);\n\n if (isDev) {\n /**\n * All our package managers support -D for devDependencies. We can't use --save-dev across the board because yarn and bun don't alias it.\n * npm: -D, --save-dev. pnpm: -D, --save-dev. yarn: -D, --dev. bun: -D, --dev\n */\n installCommand = `${installCommand} -D`;\n }\n\n try {\n await execWithTimeout(`${pm} ${installCommand} ${dependency}${versionTag}`, timeout);\n } catch (err) {\n if (versionTag === '@latest') {\n throw new Error(\n `Failed to install ${dependency}@latest: ${err instanceof Error ? err.message : 'Unknown error'}`,\n );\n }\n try {\n await execWithTimeout(`${pm} ${installCommand} ${dependency}@latest`, timeout);\n } catch (fallbackErr) {\n throw new Error(\n `Failed to install ${dependency} (tried ${versionTag} and @latest): ${fallbackErr instanceof Error ? fallbackErr.message : 'Unknown error'}`,\n );\n }\n }\n}\n\nexport const createMastraProject = async ({\n projectName: name,\n createVersionTag,\n timeout,\n llmProvider,\n llmApiKey,\n skills,\n mcpServer,\n needsInteractive,\n}: {\n projectName?: string;\n createVersionTag?: string;\n timeout?: number;\n llmProvider?: LLMProvider;\n llmApiKey?: string;\n skills?: string[];\n mcpServer?: string;\n needsInteractive?: boolean;\n}) => {\n p.intro(color.inverse(' Mastra Create '));\n\n const projectName =\n name ??\n (await p.text({\n message: 'What do you want to name your project?',\n placeholder: 'my-mastra-app',\n defaultValue: 'my-mastra-app',\n validate: value => {\n if (!value || value.length === 0) return 'Project name cannot be empty';\n if (fsSync.existsSync(value)) {\n return `A directory named \"${value}\" already exists. Please choose a different name.`;\n }\n },\n }));\n\n if (p.isCancel(projectName)) {\n p.cancel('Operation cancelled');\n process.exit(0);\n }\n\n let result: Awaited<ReturnType<typeof interactivePrompt>> | undefined = undefined;\n\n if (needsInteractive) {\n result = await interactivePrompt({\n options: { showBanner: false },\n skip: {\n llmProvider: llmProvider !== undefined,\n llmApiKey: llmApiKey !== undefined,\n skills: skills !== undefined && skills.length > 0,\n mcpServer: mcpServer !== undefined,\n },\n });\n }\n const s = p.spinner();\n const originalCwd = process.cwd();\n let projectPath: string | null = null;\n\n try {\n s.start('Creating project');\n try {\n await fs.mkdir(projectName);\n projectPath = path.resolve(originalCwd, projectName);\n } catch (error) {\n if (error instanceof Error && 'code' in error && error.code === 'EEXIST') {\n s.stop(`A directory named \"${projectName}\" already exists. Please choose a different name.`);\n process.exit(1);\n }\n throw new Error(\n `Failed to create project directory: ${error instanceof Error ? error.message : 'Unknown error'}`,\n );\n }\n\n process.chdir(projectName);\n const pm = getPackageManager();\n const installCommand = getPackageManagerAddCommand(pm);\n\n s.message('Initializing project structure');\n try {\n await initializePackageJson(pm);\n const depsService = new DepsService();\n await depsService.addScriptsToPackageJson({\n dev: 'mastra dev',\n build: 'mastra build',\n start: 'mastra start',\n });\n await writeReadmeFile({ dirPath: process.cwd(), projectName });\n } catch (error) {\n throw new Error(\n `Failed to initialize project structure: ${error instanceof Error ? error.message : 'Unknown error'}`,\n );\n }\n\n s.stop('Project structure created');\n\n s.start(`Installing ${pm} dependencies`);\n try {\n await exec(`${pm} ${installCommand} zod@^4`);\n await exec(`${pm} ${installCommand} -D typescript @types/node`);\n await exec(`echo '{\n \"compilerOptions\": {\n \"target\": \"ES2022\",\n \"module\": \"ES2022\",\n \"moduleResolution\": \"bundler\",\n \"esModuleInterop\": true,\n \"forceConsistentCasingInFileNames\": true,\n \"strict\": true,\n \"skipLibCheck\": true,\n \"noEmit\": true,\n \"outDir\": \"dist\"\n },\n \"include\": [\n \"src/**/*\"\n ]\n}' > tsconfig.json`);\n } catch (error) {\n throw new Error(\n `Failed to install basic dependencies: ${error instanceof Error ? error.message : 'Unknown error'}`,\n );\n }\n\n s.stop(`${pm} dependencies installed`);\n\n s.start('Installing Mastra CLI');\n const versionTag = createVersionTag ? `@${createVersionTag}` : '@latest';\n\n try {\n await installMastraDependency(pm, 'mastra', versionTag, true, timeout);\n } catch (error) {\n throw new Error(`Failed to install Mastra CLI: ${error instanceof Error ? error.message : 'Unknown error'}`);\n }\n s.stop('Mastra CLI installed');\n\n s.start('Installing Mastra dependencies');\n try {\n await installMastraDependency(pm, '@mastra/core', versionTag, false, timeout);\n await installMastraDependency(pm, '@mastra/libsql', versionTag, false, timeout);\n await installMastraDependency(pm, '@mastra/memory', versionTag, false, timeout);\n } catch (error) {\n throw new Error(\n `Failed to install Mastra dependencies: ${error instanceof Error ? error.message : 'Unknown error'}`,\n );\n }\n s.stop('Mastra dependencies installed');\n\n s.start('Adding .gitignore');\n try {\n await exec(`echo output.txt >> .gitignore`);\n await exec(`echo node_modules >> .gitignore`);\n await exec(`echo dist >> .gitignore`);\n await exec(`echo .mastra >> .gitignore`);\n await exec(`echo .env.development >> .gitignore`);\n await exec(`echo .env >> .gitignore`);\n await exec(`echo *.db >> .gitignore`);\n await exec(`echo *.db-* >> .gitignore`);\n await exec(`echo .netlify >> .gitignore`);\n await exec(`echo .vercel >> .gitignore`);\n } catch (error) {\n throw new Error(`Failed to create .gitignore: ${error instanceof Error ? error.message : 'Unknown error'}`);\n }\n s.stop('.gitignore added');\n\n p.outro('Project created successfully');\n console.info('');\n\n return { projectName, result };\n } catch (error) {\n s.stop();\n\n const errorMessage = error instanceof Error ? error.message : 'An unexpected error occurred';\n p.cancel(`Project creation failed: ${errorMessage}`);\n\n // Clean up: remove the created directory on failure\n if (projectPath && fsSync.existsSync(projectPath)) {\n try {\n // Change back to original directory before cleanup\n process.chdir(originalCwd);\n await fs.rm(projectPath, { recursive: true, force: true });\n } catch (cleanupError) {\n // Log but don't throw - we want to exit with the original error\n console.error(\n `Warning: Failed to clean up project directory: ${cleanupError instanceof Error ? cleanupError.message : 'Unknown error'}`,\n );\n }\n }\n\n process.exit(1);\n }\n};\n","import fsSync from 'node:fs';\nimport fs from 'node:fs/promises';\nimport * as p from '@clack/prompts';\nimport color from 'picocolors';\nimport pkgJson from '../../../package.json';\nimport type { PosthogAnalytics } from '../../analytics/index';\nimport { getAnalytics } from '../../analytics/index';\nimport { cloneTemplate, installDependencies } from '../../utils/clone-template';\nimport { loadTemplates, selectTemplate, findTemplateByName, getDefaultProjectName } from '../../utils/template-utils';\nimport type { Template } from '../../utils/template-utils';\nimport { init } from '../init/init';\nimport type { Editor } from '../init/mcp-docs-server-install';\nimport type { Component, LLMProvider } from '../init/utils';\nimport { LLM_PROVIDERS } from '../init/utils';\nimport { getPackageManager, gitInit } from '../utils.js';\n\nimport { createMastraProject } from './utils';\n\nconst version = pkgJson.version;\n\nexport const create = async (args: {\n projectName?: string;\n components?: Component[];\n llmProvider?: LLMProvider;\n addExample?: boolean;\n llmApiKey?: string;\n createVersionTag?: string;\n timeout?: number;\n directory?: string;\n mcpServer?: Editor;\n skills?: string[];\n template?: string | boolean;\n analytics?: PosthogAnalytics;\n}) => {\n if (args.template !== undefined) {\n await createFromTemplate({\n projectName: args.projectName,\n template: args.template,\n timeout: args.timeout,\n injectedAnalytics: args.analytics,\n llmProvider: args.llmProvider,\n });\n return;\n }\n\n /**\n * We need to explicitly check for undefined instead of using the falsy (!) check because the user might have passed args that are explicitly set to false (in this case, no example code) and we need to distinguish between those and the case where the args were not passed at all.\n */\n const needsInteractive =\n args.components === undefined || args.llmProvider === undefined || args.addExample === undefined;\n\n const { projectName, result } = await createMastraProject({\n projectName: args?.projectName,\n createVersionTag: args?.createVersionTag,\n timeout: args?.timeout,\n llmProvider: args?.llmProvider,\n llmApiKey: args?.llmApiKey,\n skills: args?.skills,\n mcpServer: args?.mcpServer,\n needsInteractive,\n });\n const directory = args.directory || 'src/';\n\n if (needsInteractive && result) {\n // Track model provider selection from interactive prompt\n const analytics = getAnalytics();\n if (analytics && result?.llmProvider) {\n analytics.trackEvent('cli_model_provider_selected', {\n provider: result.llmProvider,\n selection_method: 'interactive',\n });\n }\n\n const interactiveComponents: Component[] = ['agents', 'tools', 'workflows', 'scorers'];\n\n if (analytics) {\n analytics.trackEvent('cli_components_selected', {\n components: interactiveComponents,\n selection_method: 'interactive',\n });\n }\n\n await init({\n ...result,\n llmApiKey: result?.llmApiKey as string | undefined,\n components: interactiveComponents,\n addExample: true,\n skills: result?.skills || args.skills,\n mcpServer: result?.mcpServer || args.mcpServer,\n versionTag: args.createVersionTag,\n });\n postCreate({ projectName });\n return;\n }\n\n const { components = [], llmProvider = 'openai', addExample = false, llmApiKey } = args;\n\n // Track model provider selection from CLI args\n const cliAnalytics = getAnalytics();\n if (cliAnalytics) {\n cliAnalytics.trackEvent('cli_model_provider_selected', {\n provider: llmProvider,\n selection_method: 'cli_args',\n });\n\n cliAnalytics.trackEvent('cli_components_selected', {\n components,\n has_agents: components.includes('agents'),\n has_tools: components.includes('tools'),\n has_workflows: components.includes('workflows'),\n has_scorers: components.includes('scorers'),\n selection_method: 'cli_args',\n });\n }\n\n await init({\n directory,\n components,\n llmProvider,\n addExample,\n llmApiKey,\n skills: args.skills,\n mcpServer: args.mcpServer,\n versionTag: args.createVersionTag,\n });\n\n postCreate({ projectName });\n};\n\nconst postCreate = ({ projectName }: { projectName: string }) => {\n const packageManager = getPackageManager();\n p.outro(`\n ${color.green('To start your project:')}\n\n ${color.cyan('cd')} ${projectName}\n ${color.cyan(`${packageManager} run dev`)}\n `);\n};\n\nfunction isGitHubUrl(url: string): boolean {\n try {\n const parsedUrl = new URL(url);\n return parsedUrl.hostname === 'github.com' && parsedUrl.pathname.split('/').length >= 3;\n } catch {\n return false;\n }\n}\n\nasync function validateGitHubProject(githubUrl: string): Promise<{ isValid: boolean; errors: string[] }> {\n const errors: string[] = [];\n\n try {\n // Extract owner and repo from GitHub URL\n const urlParts = new URL(githubUrl).pathname.split('/').filter(Boolean);\n const owner = urlParts[0];\n const repo = urlParts[1]?.replace('.git', ''); // Remove .git if present\n\n if (!owner || !repo) {\n throw new Error('Invalid GitHub URL format');\n }\n\n // Try to fetch from main branch first, fallback to master\n const branches = ['main', 'master'];\n let packageJsonContent: string | null = null;\n let indexContent: string | null = null;\n\n for (const branch of branches) {\n try {\n // Fetch package.json\n const packageJsonUrl = `https://raw.githubusercontent.com/${owner}/${repo}/${branch}/package.json`;\n const packageJsonResponse = await fetch(packageJsonUrl);\n\n if (packageJsonResponse.ok) {\n packageJsonContent = await packageJsonResponse.text();\n\n // If package.json found, try to fetch index.ts from same branch\n const indexUrl = `https://raw.githubusercontent.com/${owner}/${repo}/${branch}/src/mastra/index.ts`;\n const indexResponse = await fetch(indexUrl);\n\n if (indexResponse.ok) {\n indexContent = await indexResponse.text();\n }\n\n break; // Found files, no need to check other branches\n }\n } catch {\n // Continue to next branch\n }\n }\n\n if (!packageJsonContent) {\n errors.push('Could not fetch package.json from repository');\n return { isValid: false, errors };\n }\n\n // Check for @mastra/core dependency\n try {\n const packageJson = JSON.parse(packageJsonContent);\n const hasMastraCore =\n packageJson.dependencies?.['@mastra/core'] ||\n packageJson.devDependencies?.['@mastra/core'] ||\n packageJson.peerDependencies?.['@mastra/core'];\n\n if (!hasMastraCore) {\n errors.push('Missing @mastra/core dependency in package.json');\n }\n } catch {\n errors.push('Invalid package.json format');\n }\n\n // Check for src/mastra/index.ts\n if (!indexContent) {\n errors.push('Missing src/mastra/index.ts file');\n } else {\n // Check if it exports a Mastra instance\n const hasMastraExport =\n indexContent.includes('export') && (indexContent.includes('new Mastra') || indexContent.includes('Mastra('));\n\n if (!hasMastraExport) {\n errors.push('src/mastra/index.ts does not export a Mastra instance');\n }\n }\n\n return { isValid: errors.length === 0, errors };\n } catch (error) {\n errors.push(`Failed to validate GitHub repository: ${error instanceof Error ? error.message : 'Unknown error'}`);\n return { isValid: false, errors };\n }\n}\n\nasync function createFromGitHubUrl(url: string): Promise<Template> {\n // Extract owner and repo from GitHub URL\n const urlParts = new URL(url).pathname.split('/').filter(Boolean);\n const owner = urlParts[0] || 'unknown';\n const repo = urlParts[1] || 'unknown';\n\n // Create a temporary Template object for GitHub URLs\n return {\n githubUrl: url,\n title: `${owner}/${repo}`,\n slug: repo,\n agents: [],\n mcp: [],\n tools: [],\n networks: [],\n workflows: [],\n };\n}\n\nasync function createFromTemplate(args: {\n projectName?: string;\n template?: string | boolean;\n timeout?: number;\n injectedAnalytics?: PosthogAnalytics;\n llmProvider?: LLMProvider;\n}) {\n let selectedTemplate: Template | undefined;\n\n if (args.template === true) {\n // Interactive template selection\n const templates = await loadTemplates();\n const selected = await selectTemplate(templates);\n if (!selected) {\n p.log.info('No template selected. Exiting.');\n return;\n }\n selectedTemplate = selected;\n } else if (args.template && typeof args.template === 'string') {\n // Check if it's a GitHub URL\n if (isGitHubUrl(args.template)) {\n // Validate GitHub project before cloning\n const spinner = p.spinner();\n spinner.start('Validating GitHub repository...');\n\n const validation = await validateGitHubProject(args.template);\n\n if (!validation.isValid) {\n spinner.stop('Validation failed');\n p.log.error('This does not appear to be a valid Mastra project:');\n validation.errors.forEach(error => p.log.error(` - ${error}`));\n throw new Error('Invalid Mastra project');\n }\n\n spinner.stop('Valid Mastra project ✓');\n selectedTemplate = await createFromGitHubUrl(args.template);\n } else {\n // Template name provided, find it from the list\n const templates = await loadTemplates();\n const found = findTemplateByName(templates, args.template);\n if (!found) {\n p.log.error(`Template \"${args.template}\" not found. Available templates:`);\n templates.forEach((t: Template) => p.log.info(` - ${t.title} (use: ${t.slug.replace('template-', '')})`));\n throw new Error(`Template \"${args.template}\" not found`);\n }\n selectedTemplate = found;\n }\n }\n\n if (!selectedTemplate) {\n throw new Error('No template selected');\n }\n\n // Get project name\n let projectName = args.projectName;\n if (!projectName) {\n const defaultName = getDefaultProjectName(selectedTemplate);\n const response = await p.text({\n message: 'What is your project name?',\n defaultValue: defaultName,\n placeholder: defaultName,\n });\n\n if (p.isCancel(response)) {\n p.log.info('Project creation cancelled.');\n return;\n }\n\n projectName = response as string;\n }\n\n // Get LLM provider if not specified\n let llmProvider = args.llmProvider;\n if (!llmProvider) {\n const providerResponse = await p.select({\n message: 'Select a default provider:',\n options: LLM_PROVIDERS,\n });\n\n if (p.isCancel(providerResponse)) {\n p.log.info('Project creation cancelled.');\n return;\n }\n\n llmProvider = providerResponse as LLMProvider;\n }\n\n // Handle git initialization for templates\n let initGit = false;\n const gitConfirmResult = await p.confirm({\n message: 'Initialize a new git repository?',\n initialValue: true,\n });\n\n if (!p.isCancel(gitConfirmResult)) {\n initGit = gitConfirmResult;\n }\n\n let projectPath: string | null = null;\n\n try {\n // Track template usage\n const analytics = args.injectedAnalytics || getAnalytics();\n if (analytics) {\n analytics.trackEvent('cli_template_used', {\n template_slug: selectedTemplate.slug,\n template_title: selectedTemplate.title,\n });\n\n // Track model provider selection\n if (llmProvider) {\n analytics.trackEvent('cli_model_provider_selected', {\n provider: llmProvider,\n selection_method: args.llmProvider ? 'cli_args' : 'interactive',\n });\n }\n }\n\n const isBeta = version?.includes('beta') ?? false;\n const isMastraTemplate = selectedTemplate.githubUrl.includes('github.com/mastra-ai/');\n const branch = isBeta && isMastraTemplate ? 'beta' : undefined;\n\n // Clone the template\n projectPath = await cloneTemplate({\n template: selectedTemplate,\n projectName,\n branch,\n llmProvider,\n });\n\n // Install dependencies\n await installDependencies(projectPath);\n\n if (initGit) {\n const s = p.spinner();\n try {\n s.start('Initializing git repository');\n\n await gitInit({ cwd: projectPath });\n\n s.stop('Git repository initialized');\n } catch {\n s.stop();\n }\n }\n\n p.note(`\n ${color.green('Mastra template installed!')}\n\n Add the necessary environment\n variables in your ${color.cyan('.env')} file\n `);\n\n // Show completion message\n postCreate({ projectName });\n } catch (error) {\n // Clean up: remove the created directory on failure\n if (projectPath) {\n try {\n if (fsSync.existsSync(projectPath)) {\n await fs.rm(projectPath, { recursive: true, force: true });\n }\n } catch (cleanupError) {\n // Log but don't throw - we want to exit with the original error\n console.error(\n `Warning: Failed to clean up project directory: ${cleanupError instanceof Error ? cleanupError.message : 'Unknown error'}`,\n );\n }\n }\n p.log.error(`Failed to create project from template: ${error instanceof Error ? error.message : 'Unknown error'}`);\n throw error;\n }\n}\n"]}
@@ -1,4 +1,4 @@
1
- export { create } from '../../chunk-5UFTTBNF.js';
1
+ export { create } from '../../chunk-W5DIKM6F.js';
2
2
  import '../../chunk-X6S75F7L.js';
3
3
  //# sourceMappingURL=create.js.map
4
4
  //# sourceMappingURL=create.js.map
@@ -3,7 +3,7 @@ name: mastra
3
3
  description: Documentation for mastra. Use when working with mastra APIs, configuration, or implementation.
4
4
  metadata:
5
5
  package: "mastra"
6
- version: "1.3.13"
6
+ version: "1.3.14-alpha.1"
7
7
  ---
8
8
 
9
9
  ## When to use
@@ -1,10 +1,10 @@
1
1
  {
2
- "version": "1.3.13",
2
+ "version": "1.3.14-alpha.1",
3
3
  "package": "mastra",
4
4
  "exports": {
5
5
  "create": {
6
6
  "types": "dist/index.d.ts",
7
- "implementation": "dist/chunk-5UFTTBNF.js"
7
+ "implementation": "dist/chunk-W5DIKM6F.js"
8
8
  },
9
9
  "PosthogAnalytics": {
10
10
  "types": "dist/index.d.ts",
@@ -64,6 +64,8 @@ The command uses Node's built-in `http` module and [`serve-handler`](https://www
64
64
  Running `mastra studio` as a long-running process is no different from running any other Node.js service. All the best practices, tools, and options for deployment apply here as well. You can use process managers like PM2, use Docker, or cloud services that support Node.js applications. You'll need to ensure CORS is configured correctly and errors are monitored, as with any web service.
65
65
 
66
66
  > **Warning:** Once Studio is connected to your Mastra server, it has full access to your agents, workflows, and tools. Be sure to secure it properly in production (e.g. behind authentication, VPN, etc.) to prevent unauthorized access.
67
+ >
68
+ > Visit the [Authentication](https://mastra.ai/docs/server/auth) docs to learn more.
67
69
 
68
70
  ### Alongside your API
69
71
 
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  #! /usr/bin/env node
2
- import { package_default, create, init, logger, createLogger } from './chunk-5UFTTBNF.js';
3
- export { create } from './chunk-5UFTTBNF.js';
2
+ import { package_default, create, init, logger, createLogger } from './chunk-W5DIKM6F.js';
3
+ export { create } from './chunk-W5DIKM6F.js';
4
4
  import { PosthogAnalytics, setAnalytics, COMPONENTS, parseComponents, LLMProvider, parseLlmProvider, parseMcp, parseSkills, checkForPkgJson, getVersionTag, isGitInitialized, checkAndInstallCoreDeps, interactivePrompt, FileService, shouldSkipDotenvLoading, DepsService, getAnalytics } from './chunk-X6S75F7L.js';
5
5
  export { PosthogAnalytics } from './chunk-X6S75F7L.js';
6
6
  import { Command } from 'commander';
@@ -1 +1 @@
1
- import{_ as A,G as O,H as M}from"./main-BPrjA9bP.js";var V={env:{}},S={},U=A({"../../../node_modules/.pnpm/@vercel+oidc@3.1.0/node_modules/@vercel/oidc/dist/token-io.js"(C,P){var g=Object.create,l=Object.defineProperty,j=Object.getOwnPropertyDescriptor,b=Object.getOwnPropertyNames,m=Object.getPrototypeOf,T=Object.prototype.hasOwnProperty,D=(r,e)=>{for(var o in e)l(r,o,{get:e[o],enumerable:!0})},h=(r,e,o,a)=>{if(e&&typeof e=="object"||typeof e=="function")for(let w of b(e))!T.call(r,w)&&w!==o&&l(r,w,{get:()=>e[w],enumerable:!(a=j(e,w))||a.enumerable});return r},_=(r,e,o)=>(o=r!=null?g(m(r)):{},h(!r||!r.__esModule?l(o,"default",{value:r,enumerable:!0}):o,r)),E=r=>h(l({},"__esModule",{value:!0}),r),k={};D(k,{findRootDir:()=>v,getUserDataDir:()=>s}),P.exports=E(k);var c=_(O("path")),p=_(O("fs")),d=_(O("os")),y=M();function v(){try{let r=V.cwd();for(;r!==c.default.dirname(r);){const e=c.default.join(r,".vercel");if(p.default.existsSync(e))return r;r=c.default.dirname(r)}}catch{throw new y.VercelOidcTokenError("Token refresh only supported in node server environments")}return null}function s(){if(S.XDG_DATA_HOME)return S.XDG_DATA_HOME;switch(d.default.platform()){case"darwin":return c.default.join(d.default.homedir(),"Library/Application Support");case"linux":return c.default.join(d.default.homedir(),".local/share");case"win32":return S.LOCALAPPDATA?S.LOCALAPPDATA:null;default:return null}}}}),J=A({"../../../node_modules/.pnpm/@vercel+oidc@3.1.0/node_modules/@vercel/oidc/dist/auth-config.js"(C,P){var g=Object.create,l=Object.defineProperty,j=Object.getOwnPropertyDescriptor,b=Object.getOwnPropertyNames,m=Object.getPrototypeOf,T=Object.prototype.hasOwnProperty,D=(e,o)=>{for(var a in o)l(e,a,{get:o[a],enumerable:!0})},h=(e,o,a,w)=>{if(o&&typeof o=="object"||typeof o=="function")for(let x of b(o))!T.call(e,x)&&x!==a&&l(e,x,{get:()=>o[x],enumerable:!(w=j(o,x))||w.enumerable});return e},_=(e,o,a)=>(a=e!=null?g(m(e)):{},h(!e||!e.__esModule?l(a,"default",{value:e,enumerable:!0}):a,e)),E=e=>h(l({},"__esModule",{value:!0}),e),k={};D(k,{isValidAccessToken:()=>r,readAuthConfig:()=>v,writeAuthConfig:()=>s}),P.exports=E(k);var c=_(O("fs")),p=_(O("path")),d=q();function y(){const e=(0,d.getVercelDataDir)();if(!e)throw new Error(`Unable to find Vercel CLI data directory. Your platform: ${V.platform}. Supported: darwin, linux, win32.`);return p.join(e,"auth.json")}function v(){try{const e=y();if(!c.existsSync(e))return null;const o=c.readFileSync(e,"utf8");return o?JSON.parse(o):null}catch{return null}}function s(e){const o=y(),a=p.dirname(o);c.existsSync(a)||c.mkdirSync(a,{mode:504,recursive:!0}),c.writeFileSync(o,JSON.stringify(e,null,2),{mode:384})}function r(e){if(!e.token)return!1;if(typeof e.expiresAt!="number")return!0;const o=Math.floor(Date.now()/1e3);return e.expiresAt>=o}}}),L=A({"../../../node_modules/.pnpm/@vercel+oidc@3.1.0/node_modules/@vercel/oidc/dist/oauth.js"(C,P){var g=Object.defineProperty,l=Object.getOwnPropertyDescriptor,j=Object.getOwnPropertyNames,b=Object.prototype.hasOwnProperty,m=(s,r)=>{for(var e in r)g(s,e,{get:r[e],enumerable:!0})},T=(s,r,e,o)=>{if(r&&typeof r=="object"||typeof r=="function")for(let a of j(r))!b.call(s,a)&&a!==e&&g(s,a,{get:()=>r[a],enumerable:!(o=l(r,a))||o.enumerable});return s},D=s=>T(g({},"__esModule",{value:!0}),s),h={};m(h,{processTokenResponse:()=>v,refreshTokenRequest:()=>y}),P.exports=D(h);var _=O("os"),E="https://vercel.com",k="cl_HYyOPBNtFMfHhaUn9L4QPfTZz6TP47bp",c=`@vercel/oidc node-${V.version} ${(0,_.platform)()} (${(0,_.arch)()}) ${(0,_.hostname)()}`,p=null;async function d(){if(p)return p;const s=`${E}/.well-known/openid-configuration`,r=await fetch(s,{headers:{"user-agent":c}});if(!r.ok)throw new Error("Failed to discover OAuth endpoints");const e=await r.json();if(!e||typeof e.token_endpoint!="string")throw new Error("Invalid OAuth discovery response");const o=e.token_endpoint;return p=o,o}async function y(s){const r=await d();return await fetch(r,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded","user-agent":c},body:new URLSearchParams({client_id:k,grant_type:"refresh_token",...s})})}async function v(s){const r=await s.json();if(!s.ok){const e=typeof r=="object"&&r&&"error"in r?String(r.error):"Token refresh failed";return[new Error(e)]}return typeof r!="object"||r===null?[new Error("Invalid token response")]:typeof r.access_token!="string"?[new Error("Missing access_token in response")]:r.token_type!=="Bearer"?[new Error("Invalid token_type in response")]:typeof r.expires_in!="number"?[new Error("Missing expires_in in response")]:[null,r]}}}),q=A({"../../../node_modules/.pnpm/@vercel+oidc@3.1.0/node_modules/@vercel/oidc/dist/token-util.js"(C,P){var g=Object.create,l=Object.defineProperty,j=Object.getOwnPropertyDescriptor,b=Object.getOwnPropertyNames,m=Object.getPrototypeOf,T=Object.prototype.hasOwnProperty,D=(t,n)=>{for(var i in n)l(t,i,{get:n[i],enumerable:!0})},h=(t,n,i,u)=>{if(n&&typeof n=="object"||typeof n=="function")for(let f of b(n))!T.call(t,f)&&f!==i&&l(t,f,{get:()=>n[f],enumerable:!(u=j(n,f))||u.enumerable});return t},_=(t,n,i)=>(i=t!=null?g(m(t)):{},h(!t||!t.__esModule?l(i,"default",{value:t,enumerable:!0}):i,t)),E=t=>h(l({},"__esModule",{value:!0}),t),k={};D(k,{assertVercelOidcTokenResponse:()=>a,findProjectInfo:()=>w,getTokenPayload:()=>R,getVercelCliToken:()=>e,getVercelDataDir:()=>r,getVercelOidcToken:()=>o,isExpired:()=>$,loadToken:()=>N,saveToken:()=>x}),P.exports=E(k);var c=_(O("path")),p=_(O("fs")),d=M(),y=U(),v=J(),s=L();function r(){const t="com.vercel.cli",n=(0,y.getUserDataDir)();return n?c.join(n,t):null}async function e(){const t=(0,v.readAuthConfig)();if(!t)return null;if((0,v.isValidAccessToken)(t))return t.token||null;if(!t.refreshToken)return(0,v.writeAuthConfig)({}),null;try{const n=await(0,s.refreshTokenRequest)({refresh_token:t.refreshToken}),[i,u]=await(0,s.processTokenResponse)(n);if(i||!u)return(0,v.writeAuthConfig)({}),null;const f={token:u.access_token,expiresAt:Math.floor(Date.now()/1e3)+u.expires_in};return u.refresh_token&&(f.refreshToken=u.refresh_token),(0,v.writeAuthConfig)(f),f.token??null}catch{return(0,v.writeAuthConfig)({}),null}}async function o(t,n,i){const u=`https://api.vercel.com/v1/projects/${n}/token?source=vercel-oidc-refresh${i?`&teamId=${i}`:""}`,f=await fetch(u,{method:"POST",headers:{Authorization:`Bearer ${t}`}});if(!f.ok)throw new d.VercelOidcTokenError(`Failed to refresh OIDC token: ${f.statusText}`);const I=await f.json();return a(I),I}function a(t){if(!t||typeof t!="object")throw new TypeError("Vercel OIDC token is malformed. Expected an object. Please run `vc env pull` and try again");if(!("token"in t)||typeof t.token!="string")throw new TypeError("Vercel OIDC token is malformed. Expected a string-valued token property. Please run `vc env pull` and try again")}function w(){const t=(0,y.findRootDir)();if(!t)throw new d.VercelOidcTokenError("Unable to find project root directory. Have you linked your project with `vc link?`");const n=c.join(t,".vercel","project.json");if(!p.existsSync(n))throw new d.VercelOidcTokenError("project.json not found, have you linked your project with `vc link?`");const i=JSON.parse(p.readFileSync(n,"utf8"));if(typeof i.projectId!="string"&&typeof i.orgId!="string")throw new TypeError("Expected a string-valued projectId property. Try running `vc link` to re-link your project.");return{projectId:i.projectId,teamId:i.orgId}}function x(t,n){const i=(0,y.getUserDataDir)();if(!i)throw new d.VercelOidcTokenError("Unable to find user data directory. Please reach out to Vercel support.");const u=c.join(i,"com.vercel.token",`${n}.json`),f=JSON.stringify(t);p.mkdirSync(c.dirname(u),{mode:504,recursive:!0}),p.writeFileSync(u,f),p.chmodSync(u,432)}function N(t){const n=(0,y.getUserDataDir)();if(!n)throw new d.VercelOidcTokenError("Unable to find user data directory. Please reach out to Vercel support.");const i=c.join(n,"com.vercel.token",`${t}.json`);if(!p.existsSync(i))return null;const u=JSON.parse(p.readFileSync(i,"utf8"));return a(u),u}function R(t){const n=t.split(".");if(n.length!==3)throw new d.VercelOidcTokenError("Invalid token. Please run `vc env pull` and try again");const i=n[1].replace(/-/g,"+").replace(/_/g,"/"),u=i.padEnd(i.length+(4-i.length%4)%4,"=");return JSON.parse(Buffer.from(u,"base64").toString("utf8"))}function $(t){return t.exp*1e3<Date.now()}}});export{q as r};
1
+ import{_ as A,G as O,H as M}from"./main-Cm2bdPHp.js";var V={env:{}},S={},U=A({"../../../node_modules/.pnpm/@vercel+oidc@3.1.0/node_modules/@vercel/oidc/dist/token-io.js"(C,P){var g=Object.create,l=Object.defineProperty,j=Object.getOwnPropertyDescriptor,b=Object.getOwnPropertyNames,m=Object.getPrototypeOf,T=Object.prototype.hasOwnProperty,D=(r,e)=>{for(var o in e)l(r,o,{get:e[o],enumerable:!0})},h=(r,e,o,a)=>{if(e&&typeof e=="object"||typeof e=="function")for(let w of b(e))!T.call(r,w)&&w!==o&&l(r,w,{get:()=>e[w],enumerable:!(a=j(e,w))||a.enumerable});return r},_=(r,e,o)=>(o=r!=null?g(m(r)):{},h(!r||!r.__esModule?l(o,"default",{value:r,enumerable:!0}):o,r)),E=r=>h(l({},"__esModule",{value:!0}),r),k={};D(k,{findRootDir:()=>v,getUserDataDir:()=>s}),P.exports=E(k);var c=_(O("path")),p=_(O("fs")),d=_(O("os")),y=M();function v(){try{let r=V.cwd();for(;r!==c.default.dirname(r);){const e=c.default.join(r,".vercel");if(p.default.existsSync(e))return r;r=c.default.dirname(r)}}catch{throw new y.VercelOidcTokenError("Token refresh only supported in node server environments")}return null}function s(){if(S.XDG_DATA_HOME)return S.XDG_DATA_HOME;switch(d.default.platform()){case"darwin":return c.default.join(d.default.homedir(),"Library/Application Support");case"linux":return c.default.join(d.default.homedir(),".local/share");case"win32":return S.LOCALAPPDATA?S.LOCALAPPDATA:null;default:return null}}}}),J=A({"../../../node_modules/.pnpm/@vercel+oidc@3.1.0/node_modules/@vercel/oidc/dist/auth-config.js"(C,P){var g=Object.create,l=Object.defineProperty,j=Object.getOwnPropertyDescriptor,b=Object.getOwnPropertyNames,m=Object.getPrototypeOf,T=Object.prototype.hasOwnProperty,D=(e,o)=>{for(var a in o)l(e,a,{get:o[a],enumerable:!0})},h=(e,o,a,w)=>{if(o&&typeof o=="object"||typeof o=="function")for(let x of b(o))!T.call(e,x)&&x!==a&&l(e,x,{get:()=>o[x],enumerable:!(w=j(o,x))||w.enumerable});return e},_=(e,o,a)=>(a=e!=null?g(m(e)):{},h(!e||!e.__esModule?l(a,"default",{value:e,enumerable:!0}):a,e)),E=e=>h(l({},"__esModule",{value:!0}),e),k={};D(k,{isValidAccessToken:()=>r,readAuthConfig:()=>v,writeAuthConfig:()=>s}),P.exports=E(k);var c=_(O("fs")),p=_(O("path")),d=q();function y(){const e=(0,d.getVercelDataDir)();if(!e)throw new Error(`Unable to find Vercel CLI data directory. Your platform: ${V.platform}. Supported: darwin, linux, win32.`);return p.join(e,"auth.json")}function v(){try{const e=y();if(!c.existsSync(e))return null;const o=c.readFileSync(e,"utf8");return o?JSON.parse(o):null}catch{return null}}function s(e){const o=y(),a=p.dirname(o);c.existsSync(a)||c.mkdirSync(a,{mode:504,recursive:!0}),c.writeFileSync(o,JSON.stringify(e,null,2),{mode:384})}function r(e){if(!e.token)return!1;if(typeof e.expiresAt!="number")return!0;const o=Math.floor(Date.now()/1e3);return e.expiresAt>=o}}}),L=A({"../../../node_modules/.pnpm/@vercel+oidc@3.1.0/node_modules/@vercel/oidc/dist/oauth.js"(C,P){var g=Object.defineProperty,l=Object.getOwnPropertyDescriptor,j=Object.getOwnPropertyNames,b=Object.prototype.hasOwnProperty,m=(s,r)=>{for(var e in r)g(s,e,{get:r[e],enumerable:!0})},T=(s,r,e,o)=>{if(r&&typeof r=="object"||typeof r=="function")for(let a of j(r))!b.call(s,a)&&a!==e&&g(s,a,{get:()=>r[a],enumerable:!(o=l(r,a))||o.enumerable});return s},D=s=>T(g({},"__esModule",{value:!0}),s),h={};m(h,{processTokenResponse:()=>v,refreshTokenRequest:()=>y}),P.exports=D(h);var _=O("os"),E="https://vercel.com",k="cl_HYyOPBNtFMfHhaUn9L4QPfTZz6TP47bp",c=`@vercel/oidc node-${V.version} ${(0,_.platform)()} (${(0,_.arch)()}) ${(0,_.hostname)()}`,p=null;async function d(){if(p)return p;const s=`${E}/.well-known/openid-configuration`,r=await fetch(s,{headers:{"user-agent":c}});if(!r.ok)throw new Error("Failed to discover OAuth endpoints");const e=await r.json();if(!e||typeof e.token_endpoint!="string")throw new Error("Invalid OAuth discovery response");const o=e.token_endpoint;return p=o,o}async function y(s){const r=await d();return await fetch(r,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded","user-agent":c},body:new URLSearchParams({client_id:k,grant_type:"refresh_token",...s})})}async function v(s){const r=await s.json();if(!s.ok){const e=typeof r=="object"&&r&&"error"in r?String(r.error):"Token refresh failed";return[new Error(e)]}return typeof r!="object"||r===null?[new Error("Invalid token response")]:typeof r.access_token!="string"?[new Error("Missing access_token in response")]:r.token_type!=="Bearer"?[new Error("Invalid token_type in response")]:typeof r.expires_in!="number"?[new Error("Missing expires_in in response")]:[null,r]}}}),q=A({"../../../node_modules/.pnpm/@vercel+oidc@3.1.0/node_modules/@vercel/oidc/dist/token-util.js"(C,P){var g=Object.create,l=Object.defineProperty,j=Object.getOwnPropertyDescriptor,b=Object.getOwnPropertyNames,m=Object.getPrototypeOf,T=Object.prototype.hasOwnProperty,D=(t,n)=>{for(var i in n)l(t,i,{get:n[i],enumerable:!0})},h=(t,n,i,u)=>{if(n&&typeof n=="object"||typeof n=="function")for(let f of b(n))!T.call(t,f)&&f!==i&&l(t,f,{get:()=>n[f],enumerable:!(u=j(n,f))||u.enumerable});return t},_=(t,n,i)=>(i=t!=null?g(m(t)):{},h(!t||!t.__esModule?l(i,"default",{value:t,enumerable:!0}):i,t)),E=t=>h(l({},"__esModule",{value:!0}),t),k={};D(k,{assertVercelOidcTokenResponse:()=>a,findProjectInfo:()=>w,getTokenPayload:()=>R,getVercelCliToken:()=>e,getVercelDataDir:()=>r,getVercelOidcToken:()=>o,isExpired:()=>$,loadToken:()=>N,saveToken:()=>x}),P.exports=E(k);var c=_(O("path")),p=_(O("fs")),d=M(),y=U(),v=J(),s=L();function r(){const t="com.vercel.cli",n=(0,y.getUserDataDir)();return n?c.join(n,t):null}async function e(){const t=(0,v.readAuthConfig)();if(!t)return null;if((0,v.isValidAccessToken)(t))return t.token||null;if(!t.refreshToken)return(0,v.writeAuthConfig)({}),null;try{const n=await(0,s.refreshTokenRequest)({refresh_token:t.refreshToken}),[i,u]=await(0,s.processTokenResponse)(n);if(i||!u)return(0,v.writeAuthConfig)({}),null;const f={token:u.access_token,expiresAt:Math.floor(Date.now()/1e3)+u.expires_in};return u.refresh_token&&(f.refreshToken=u.refresh_token),(0,v.writeAuthConfig)(f),f.token??null}catch{return(0,v.writeAuthConfig)({}),null}}async function o(t,n,i){const u=`https://api.vercel.com/v1/projects/${n}/token?source=vercel-oidc-refresh${i?`&teamId=${i}`:""}`,f=await fetch(u,{method:"POST",headers:{Authorization:`Bearer ${t}`}});if(!f.ok)throw new d.VercelOidcTokenError(`Failed to refresh OIDC token: ${f.statusText}`);const I=await f.json();return a(I),I}function a(t){if(!t||typeof t!="object")throw new TypeError("Vercel OIDC token is malformed. Expected an object. Please run `vc env pull` and try again");if(!("token"in t)||typeof t.token!="string")throw new TypeError("Vercel OIDC token is malformed. Expected a string-valued token property. Please run `vc env pull` and try again")}function w(){const t=(0,y.findRootDir)();if(!t)throw new d.VercelOidcTokenError("Unable to find project root directory. Have you linked your project with `vc link?`");const n=c.join(t,".vercel","project.json");if(!p.existsSync(n))throw new d.VercelOidcTokenError("project.json not found, have you linked your project with `vc link?`");const i=JSON.parse(p.readFileSync(n,"utf8"));if(typeof i.projectId!="string"&&typeof i.orgId!="string")throw new TypeError("Expected a string-valued projectId property. Try running `vc link` to re-link your project.");return{projectId:i.projectId,teamId:i.orgId}}function x(t,n){const i=(0,y.getUserDataDir)();if(!i)throw new d.VercelOidcTokenError("Unable to find user data directory. Please reach out to Vercel support.");const u=c.join(i,"com.vercel.token",`${n}.json`),f=JSON.stringify(t);p.mkdirSync(c.dirname(u),{mode:504,recursive:!0}),p.writeFileSync(u,f),p.chmodSync(u,432)}function N(t){const n=(0,y.getUserDataDir)();if(!n)throw new d.VercelOidcTokenError("Unable to find user data directory. Please reach out to Vercel support.");const i=c.join(n,"com.vercel.token",`${t}.json`);if(!p.existsSync(i))return null;const u=JSON.parse(p.readFileSync(i,"utf8"));return a(u),u}function R(t){const n=t.split(".");if(n.length!==3)throw new d.VercelOidcTokenError("Invalid token. Please run `vc env pull` and try again");const i=n[1].replace(/-/g,"+").replace(/_/g,"/"),u=i.padEnd(i.length+(4-i.length%4)%4,"=");return JSON.parse(Buffer.from(u,"base64").toString("utf8"))}function $(t){return t.exp*1e3<Date.now()}}});export{q as r};