@mastra/deployer 1.52.0-alpha.3 → 1.52.0-alpha.8
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/CHANGELOG.md +48 -0
- package/dist/build/analyze.cjs +2 -2
- package/dist/build/analyze.d.ts.map +1 -1
- package/dist/build/analyze.js +1 -1
- package/dist/build/babel/check-config-export.d.ts +2 -2
- package/dist/build/babel/check-config-export.d.ts.map +1 -1
- package/dist/build/babel/detect-pino-transports.d.ts +2 -2
- package/dist/build/babel/detect-pino-transports.d.ts.map +1 -1
- package/dist/build/babel/remove-all-options-except.d.ts +2 -2
- package/dist/build/babel/remove-all-options-except.d.ts.map +1 -1
- package/dist/build/babel/remove-deployer.d.ts +6 -2
- package/dist/build/babel/remove-deployer.d.ts.map +1 -1
- package/dist/build/babel/remove-non-referenced-nodes.d.ts +2 -2
- package/dist/build/babel/remove-non-referenced-nodes.d.ts.map +1 -1
- package/dist/build/bundler.cjs +5 -5
- package/dist/build/bundler.js +1 -1
- package/dist/build/index.cjs +22 -22
- package/dist/build/index.js +5 -5
- package/dist/build/plugins/remove-all-except.d.ts.map +1 -1
- package/dist/build/plugins/remove-deployer.d.ts.map +1 -1
- package/dist/build/plugins/remove-unused-references.d.ts.map +1 -1
- package/dist/bundler/index.cjs +3 -3
- package/dist/bundler/index.js +1 -1
- package/dist/{chunk-UFIOPABI.cjs → chunk-4XMRN3U4.cjs} +41 -54
- package/dist/chunk-4XMRN3U4.cjs.map +1 -0
- package/dist/{chunk-PLCERTF6.js → chunk-72CHYUGH.js} +6 -6
- package/dist/{chunk-PLCERTF6.js.map → chunk-72CHYUGH.js.map} +1 -1
- package/dist/{chunk-X2ZJLEWO.cjs → chunk-7CT7DAME.cjs} +13 -24
- package/dist/chunk-7CT7DAME.cjs.map +1 -0
- package/dist/{chunk-UY7KZXD2.js → chunk-CBK2CAL4.js} +7 -7
- package/dist/chunk-CBK2CAL4.js.map +1 -0
- package/dist/{chunk-VKAFARW6.cjs → chunk-FKKJQUGR.cjs} +4 -4
- package/dist/{chunk-VKAFARW6.cjs.map → chunk-FKKJQUGR.cjs.map} +1 -1
- package/dist/{chunk-SZ3KU5RT.cjs → chunk-GPKHP7J7.cjs} +12 -12
- package/dist/{chunk-SZ3KU5RT.cjs.map → chunk-GPKHP7J7.cjs.map} +1 -1
- package/dist/{chunk-S32IJ4F6.js → chunk-H6J5QQ45.js} +5 -5
- package/dist/{chunk-S32IJ4F6.js.map → chunk-H6J5QQ45.js.map} +1 -1
- package/dist/{chunk-5K7ECKKW.js → chunk-HPYZGYQL.js} +13 -25
- package/dist/chunk-HPYZGYQL.js.map +1 -0
- package/dist/{chunk-JTWXTX2D.js → chunk-PXUWQC3X.js} +37 -51
- package/dist/chunk-PXUWQC3X.js.map +1 -0
- package/dist/{chunk-2SUO6N5G.cjs → chunk-QGBVR3DR.cjs} +14 -14
- package/dist/{chunk-2SUO6N5G.cjs.map → chunk-QGBVR3DR.cjs.map} +1 -1
- package/dist/{chunk-7BDGRATY.cjs → chunk-XOP6IB66.cjs} +24 -24
- package/dist/chunk-XOP6IB66.cjs.map +1 -0
- package/dist/{chunk-ZL66GDLP.js → chunk-YUBKHO52.js} +2 -2
- package/dist/{chunk-ZL66GDLP.js.map → chunk-YUBKHO52.js.map} +1 -1
- package/dist/docs/SKILL.md +1 -1
- package/dist/docs/assets/SOURCE_MAP.json +5 -5
- package/dist/docs/references/docs-deployment-mastra-server.md +35 -0
- package/dist/docs/references/docs-deployment-monorepo.md +2 -0
- package/dist/docs/references/docs-deployment-overview.md +6 -0
- package/dist/index.cjs +11 -11
- package/dist/index.js +4 -4
- package/dist/server/index.cjs +9 -2
- package/dist/server/index.cjs.map +1 -1
- package/dist/server/index.js +9 -2
- package/dist/server/index.js.map +1 -1
- package/dist/services/index.cjs +4 -4
- package/dist/services/index.js +1 -1
- package/package.json +11 -13
- package/dist/chunk-5K7ECKKW.js.map +0 -1
- package/dist/chunk-7BDGRATY.cjs.map +0 -1
- package/dist/chunk-JTWXTX2D.js.map +0 -1
- package/dist/chunk-UFIOPABI.cjs.map +0 -1
- package/dist/chunk-UY7KZXD2.js.map +0 -1
- package/dist/chunk-X2ZJLEWO.cjs.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/build/watcher.ts","../src/build/serverOptions.ts","../src/build/fs-routing/discover.ts","../src/build/fs-routing/codegen.ts","../src/build/fs-routing/prepare.ts","../src/build/fs-routing/mirror.ts"],"names":["getInputOptions","readFile","join","posix","dirname","lstat","mkdir"],"mappings":"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","file":"chunk-S32IJ4F6.js","sourcesContent":["import { dirname, posix } from 'node:path';\nimport { noopLogger } from '@mastra/core/logger';\nimport * as pkg from 'empathic/package';\nimport type { InputOptions, OutputOptions, Plugin } from 'rollup';\nimport { watch } from 'rollup';\nimport { getWorkspaceInformation } from '../bundler/workspaceDependencies';\nimport { analyzeBundle } from './analyze';\nimport { getInputOptions as getBundlerInputOptions } from './bundler';\nimport { aliasHono } from './plugins/hono-alias';\nimport { nodeModulesExtensionResolver } from './plugins/node-modules-extension-resolver';\nimport { tsConfigPaths } from './plugins/tsconfig-paths';\nimport type { BundlerOptions } from './types';\nimport { getPackageName, slash } from './utils';\nimport type { BundlerPlatform } from './utils';\n\nexport async function getInputOptions(\n entryFile: string,\n platform: BundlerPlatform,\n env?: Record<string, string>,\n {\n sourcemap = false,\n bundlerOptions = {\n enableSourcemap: false,\n enableEsmShim: true,\n externals: true,\n },\n analysisEntries = [entryFile],\n }: { sourcemap?: boolean; bundlerOptions?: BundlerOptions; analysisEntries?: string[] } = {},\n) {\n const closestPkgJson = pkg.up({ cwd: dirname(entryFile) });\n const projectRoot = closestPkgJson ? dirname(slash(closestPkgJson)) : slash(process.cwd());\n const { workspaceMap, workspaceRoot } = await getWorkspaceInformation({ mastraEntryFile: entryFile });\n\n const analyzeEntryResult = await analyzeBundle(\n analysisEntries,\n entryFile,\n {\n outputDir: posix.join(process.cwd(), '.mastra', '.build'),\n projectRoot: workspaceRoot || process.cwd(),\n platform,\n isDev: true,\n bundlerOptions,\n },\n noopLogger,\n );\n\n const deps = /* @__PURE__ */ new Map();\n for (const [dep, metadata] of analyzeEntryResult.dependencies.entries()) {\n const pkgName = getPackageName(dep);\n if (pkgName && workspaceMap.has(pkgName)) {\n deps.set(dep, metadata);\n }\n }\n\n const inputOptions = await getBundlerInputOptions(\n entryFile,\n {\n dependencies: deps,\n externalDependencies: new Map(),\n workspaceMap,\n },\n platform,\n env,\n { sourcemap, isDev: true, workspaceRoot, projectRoot, externalsPreset: bundlerOptions?.externals === true },\n );\n\n if (Array.isArray(inputOptions.plugins)) {\n // filter out node-resolve plugin so all node_modules are external\n // and tsconfig-paths plugin as we are injection a custom one\n const plugins = [] as Plugin[];\n inputOptions.plugins.forEach(plugin => {\n if ((plugin as Plugin | undefined)?.name === 'node-resolve') {\n return;\n }\n\n if ((plugin as Plugin | undefined)?.name === 'tsconfig-paths') {\n plugins.push(\n tsConfigPaths({\n localResolve: true,\n }),\n );\n return;\n }\n\n plugins.push(plugin as Plugin);\n });\n\n inputOptions.plugins = plugins;\n inputOptions.plugins.push(aliasHono());\n // fixes imports like lodash/fp/get\n inputOptions.plugins.push(nodeModulesExtensionResolver());\n }\n\n return inputOptions;\n}\n\nexport async function createWatcher(inputOptions: InputOptions, outputOptions: OutputOptions) {\n const watcher = await watch({\n ...inputOptions,\n output: {\n ...outputOptions,\n format: 'esm',\n entryFileNames: '[name].mjs',\n chunkFileNames: '[name].mjs',\n },\n });\n\n return watcher;\n}\n","import type { IMastraLogger } from '@mastra/core/logger';\nimport type { Config } from '@mastra/core/mastra';\nimport { extractMastraOption, extractMastraOptionBundler } from './shared/extract-mastra-option';\n\nexport function getServerOptionsBundler(\n entryFile: string,\n result: {\n hasCustomConfig: false;\n },\n) {\n return extractMastraOptionBundler('server', entryFile, result);\n}\n\nexport async function getServerOptions(\n entryFile: string,\n outputDir: string,\n logger?: IMastraLogger,\n): Promise<Config['server'] | null> {\n const result = await extractMastraOption('server', entryFile, outputDir, logger);\n if (!result) {\n return null;\n }\n\n return result.getConfig();\n}\n","import { lstat, readdir, readFile } from 'node:fs/promises';\nimport { join } from 'node:path';\nimport { MAX_FS_SUBAGENT_DEPTH } from '@mastra/core/agent';\nimport matter from 'gray-matter';\nimport { slash } from '../utils';\n\n/**\n * A file-system routed agent directory discovered under `<mastraDir>/agents/`.\n * All paths are absolute and slash-normalized so they can be embedded into\n * generated module source on any platform.\n */\nexport interface DiscoveredFsAgent {\n /** Agent directory name. Used as the default `id`/`name`. */\n name: string;\n /** Absolute, slash-normalized path to the agent directory. */\n dir: string;\n /** Absolute path to `config.ts`/`config.js`, if present. */\n configPath?: string;\n /** Absolute path to `instructions.md`, if present. */\n instructionsPath?: string;\n /** Absolute path to `workspace.ts`/`workspace.js`, if present. */\n workspacePath?: string;\n /** Absolute path to `memory.ts`/`memory.js`, if present. */\n memoryPath?: string;\n /**\n * Absolute, slash-normalized path to an authored `workspace/` directory of\n * seed files, if present. These are mirrored into the deployed workspace at\n * build time (Eve parity) so the agent starts with them on disk.\n */\n workspaceSeedDir?: string;\n /** Tools discovered under `tools/`, in stable (sorted) order. */\n tools: { key: string; path: string }[];\n /** Input processors discovered under `processors/input/`, in stable (sorted) order. */\n inputProcessors: { key: string; path: string }[];\n /** Output processors discovered under `processors/output/`, in stable (sorted) order. */\n outputProcessors: { key: string; path: string }[];\n /** Scorers discovered under `scorers/`, in stable (sorted) order. */\n scorers: { key: string; path: string }[];\n /** Skills discovered under `skills/`, in stable (sorted) order. */\n skills: DiscoveredFsSkill[];\n /**\n * Declared subagents discovered under `subagents/`, in stable (sorted) order.\n * Subagents may declare their own `subagents/`, up to `MAX_FS_SUBAGENT_DEPTH`\n * levels below the top-level agent; deeper `subagents/` directories are\n * ignored with a warning.\n */\n subagents: DiscoveredFsAgent[];\n}\n\n/**\n * A skill discovered under `agents/<name>/skills/`.\n *\n * - `kind: 'module'` — a `.ts`/`.js` file whose default export is a `createSkill(...)`\n * result. Codegen imports it directly; `name`/`description`/`instructions` are\n * unknown at discovery time and resolved at runtime from the module.\n * - `kind: 'packaged'` — a `SKILL.md` (optionally with a `references/` subdir) or a\n * flat `<skill>.md`. Codegen inlines it via `createSkill(...)` using the parsed\n * fields below so the deployed bundle carries no filesystem dependency.\n */\nexport type DiscoveredFsSkill =\n | {\n kind: 'module';\n /** Absolute, slash-normalized path to the `.ts`/`.js` skill module. */\n path: string;\n }\n | {\n kind: 'packaged';\n name: string;\n description: string;\n instructions: string;\n /** Reference file contents keyed by relative path (from `references/`). */\n references: Record<string, string>;\n };\n\nconst CONFIG_BASENAMES = ['config.ts', 'config.js'];\nconst WORKSPACE_BASENAMES = ['workspace.ts', 'workspace.js'];\nconst MEMORY_BASENAMES = ['memory.ts', 'memory.js'];\nconst INSTRUCTIONS_BASENAME = 'instructions.md';\nconst TOOL_EXTENSIONS = ['.ts', '.js'];\nconst SKILL_MODULE_EXTENSIONS = ['.ts', '.js'];\nconst SKILL_MD_BASENAME = 'SKILL.md';\n\n/**\n * Presence check that does NOT follow symlinks. Returns `false` for symlinks\n * (and broken links) so a symlinked `config.ts`/`instructions.md`/`workspace.ts`/\n * `memory.ts` is never inlined or imported into the generated bundle.\n */\nasync function exists(path: string): Promise<boolean> {\n try {\n return !(await lstat(path)).isSymbolicLink();\n } catch {\n return false;\n }\n}\n\n/**\n * Returns the slash-normalized path when `path` is a real directory (not a\n * symlink). Symlinked directories are rejected to prevent the build from\n * following links out of the project tree during discovery.\n */\nasync function realDirectory(path: string): Promise<string | undefined> {\n try {\n const info = await lstat(path);\n if (info.isDirectory() && !info.isSymbolicLink()) {\n return slash(path);\n }\n } catch {\n // not present\n }\n return undefined;\n}\n\nasync function directoryExists(path: string): Promise<string | undefined> {\n return realDirectory(path);\n}\n\nasync function firstExisting(dir: string, basenames: string[]): Promise<string | undefined> {\n for (const basename of basenames) {\n const candidate = join(dir, basename);\n if (await exists(candidate)) {\n return slash(candidate);\n }\n }\n return undefined;\n}\n\nfunction isTestFile(basename: string): boolean {\n return /\\.(test|spec)\\.(ts|js)$/.test(basename);\n}\n\nfunction toolKey(basename: string): string {\n return basename.replace(/\\.(ts|js)$/, '');\n}\n\n/**\n * Discover default-exporting `.ts`/`.js` modules directly under `dir`, returning\n * `{ key, path }` entries in stable (sorted) order. Test files, symlinks, and\n * subdirectories are skipped: a symlinked module could point anywhere on the\n * build machine and be embedded into generated import code. Shared by the\n * `tools/` and `scorers/` scanners.\n */\nasync function discoverModuleDir(dir: string): Promise<{ key: string; path: string }[]> {\n if (!(await exists(dir))) {\n return [];\n }\n\n let entries: string[];\n try {\n entries = await readdir(dir);\n } catch {\n return [];\n }\n\n const modules: { key: string; path: string }[] = [];\n for (const basename of entries.sort()) {\n if (isTestFile(basename)) {\n continue;\n }\n if (!TOOL_EXTENSIONS.some(ext => basename.endsWith(ext))) {\n continue;\n }\n const path = join(dir, basename);\n // Use lstat so symlinks are detected (not followed). Skip symlinks and\n // directories: a symlinked module file could point anywhere on the build\n // machine and be embedded into generated import code.\n const stats = await lstat(path);\n if (stats.isSymbolicLink() || stats.isDirectory()) {\n continue;\n }\n modules.push({ key: toolKey(basename), path: slash(path) });\n }\n\n return modules;\n}\n\nasync function discoverTools(toolsDir: string): Promise<DiscoveredFsAgent['tools']> {\n return discoverModuleDir(toolsDir);\n}\n\nasync function discoverProcessors(\n processorsDir: string,\n): Promise<{ input: { key: string; path: string }[]; output: { key: string; path: string }[] }> {\n const result = { input: [] as { key: string; path: string }[], output: [] as { key: string; path: string }[] };\n\n for (const type of ['input', 'output'] as const) {\n const typeDir = join(processorsDir, type);\n if (!(await exists(typeDir))) {\n continue;\n }\n\n let entries: string[];\n try {\n entries = await readdir(typeDir);\n } catch {\n continue;\n }\n\n for (const basename of entries.sort()) {\n if (isTestFile(basename)) {\n continue;\n }\n if (!TOOL_EXTENSIONS.some(ext => basename.endsWith(ext))) {\n continue;\n }\n const path = join(typeDir, basename);\n const stats = await lstat(path);\n if (stats.isSymbolicLink() || stats.isDirectory()) {\n continue;\n }\n result[type].push({ key: toolKey(basename), path: slash(path) });\n }\n }\n\n return result;\n}\n\nasync function readReferences(referencesDir: string): Promise<Record<string, string>> {\n if (!(await exists(referencesDir))) {\n return {};\n }\n const references: Record<string, string> = {};\n let entries: string[];\n try {\n entries = await readdir(referencesDir);\n } catch {\n return {};\n }\n for (const basename of entries.sort()) {\n const path = join(referencesDir, basename);\n // Use lstat so symlinks are detected (not followed). Skip symlinks: a\n // symlink under `references/` could point anywhere on the build machine and\n // silently embed arbitrary file contents into the generated bundle.\n const stats = await lstat(path);\n if (stats.isSymbolicLink() || stats.isDirectory()) {\n continue;\n }\n references[basename] = await readFile(path, 'utf-8');\n }\n return references;\n}\n\nasync function parsePackagedSkill(\n skillMdPath: string,\n fallbackName: string,\n references: Record<string, string> = {},\n): Promise<Extract<DiscoveredFsSkill, { kind: 'packaged' }>> {\n const raw = await readFile(skillMdPath, 'utf-8');\n const parsed = matter(raw);\n const frontmatter = parsed.data as { name?: string; description?: string };\n const name = frontmatter.name ?? fallbackName;\n const description = frontmatter.description;\n\n if (!description) {\n throw new Error(\n `Skill \"${name}\" in ${skillMdPath} is missing a required \"description\". ` +\n `Add a YAML frontmatter block with a \"description:\" field. ` +\n `See https://agentskills.io/specification for the SKILL.md format.`,\n );\n }\n\n const instructions = parsed.content.trim();\n return { kind: 'packaged', name, description, instructions, references };\n}\n\nfunction skillModuleName(basename: string): string {\n return basename.replace(/\\.(ts|js)$/, '');\n}\n\nasync function discoverSkills(skillsDir: string): Promise<DiscoveredFsSkill[]> {\n if (!(await exists(skillsDir))) {\n return [];\n }\n\n let entries: string[];\n try {\n entries = await readdir(skillsDir);\n } catch {\n return [];\n }\n\n const skills: DiscoveredFsSkill[] = [];\n for (const basename of entries.sort()) {\n if (isTestFile(basename)) {\n continue;\n }\n const path = join(skillsDir, basename);\n // Use lstat so symlinks are detected (not followed). Skip symlinks: a\n // symlinked skill module/markdown could point anywhere on the build machine\n // and be bundled or inlined into the generated output.\n const stats = await lstat(path);\n if (stats.isSymbolicLink()) {\n continue;\n }\n const isDir = stats.isDirectory();\n\n // Packaged skill directory: <skill>/SKILL.md (+ references/)\n if (isDir) {\n const skillMd = join(path, SKILL_MD_BASENAME);\n if (await exists(skillMd)) {\n const references = await readReferences(join(path, 'references'));\n skills.push(await parsePackagedSkill(skillMd, skillModuleName(basename), references));\n }\n continue;\n }\n\n // createSkill module: <skill>.ts | <skill>.js\n if (SKILL_MODULE_EXTENSIONS.some(ext => basename.endsWith(ext))) {\n skills.push({ kind: 'module', path: slash(path) });\n continue;\n }\n\n // Flat markdown skill: <skill>.md\n if (basename.endsWith('.md')) {\n const skill = await parsePackagedSkill(path, basename.replace(/\\.md$/, ''));\n skills.push(skill);\n }\n }\n\n return skills;\n}\n\n/**\n * Discover a single agent directory: its `config`/`instructions`/`workspace`\n * files plus `tools/`, `skills/`, and declared `subagents/`. Returns\n * `undefined` when `dir` is not an agent directory (no `config.(ts|js)` and no\n * `instructions.md`).\n *\n * `depth` is the subagent nesting level (`0` for top-level agents). Discovery\n * recurses into `subagents/` until `MAX_FS_SUBAGENT_DEPTH`; deeper directories\n * are ignored with a warning.\n */\nasync function discoverAgentDir(\n dir: string,\n name: string,\n depth: number,\n onWarn?: (message: string) => void,\n): Promise<DiscoveredFsAgent | undefined> {\n const configPath = await firstExisting(dir, CONFIG_BASENAMES);\n const instructionsPath = (await exists(join(dir, INSTRUCTIONS_BASENAME)))\n ? slash(join(dir, INSTRUCTIONS_BASENAME))\n : undefined;\n\n // Not an agent directory unless it has a config or instructions file.\n if (!configPath && !instructionsPath) {\n return undefined;\n }\n\n const workspacePath = await firstExisting(dir, WORKSPACE_BASENAMES);\n const memoryPath = await firstExisting(dir, MEMORY_BASENAMES);\n const workspaceSeedDir = await directoryExists(join(dir, 'workspace'));\n const tools = await discoverTools(join(dir, 'tools'));\n const processors = await discoverProcessors(join(dir, 'processors'));\n const scorers = await discoverModuleDir(join(dir, 'scorers'));\n const skills = await discoverSkills(join(dir, 'skills'));\n const subagents = await discoverSubagents(dir, depth, onWarn);\n\n return {\n name,\n dir: slash(dir),\n configPath,\n instructionsPath,\n workspacePath,\n memoryPath,\n workspaceSeedDir,\n tools,\n inputProcessors: processors.input,\n outputProcessors: processors.output,\n scorers,\n skills,\n subagents,\n };\n}\n\n/**\n * Discover declared subagents under `<dir>/subagents/*`. `parentDepth` is the\n * parent agent's nesting level (`0` for top-level agents). Discovery recurses\n * until `MAX_FS_SUBAGENT_DEPTH` levels of subagents; a `subagents/` directory\n * that would exceed the cap is skipped with a warning.\n */\nasync function discoverSubagents(\n parentDir: string,\n parentDepth: number,\n onWarn?: (message: string) => void,\n): Promise<DiscoveredFsAgent[]> {\n const subagentsDir = join(parentDir, 'subagents');\n if (!(await exists(subagentsDir))) {\n return [];\n }\n\n if (parentDepth >= MAX_FS_SUBAGENT_DEPTH) {\n onWarn?.(\n `Ignoring subagents in \"${slash(subagentsDir)}\": subagents may only nest ${MAX_FS_SUBAGENT_DEPTH} levels below a top-level agent.`,\n );\n return [];\n }\n\n let entries: string[];\n try {\n entries = await readdir(subagentsDir);\n } catch {\n return [];\n }\n\n const subagents: DiscoveredFsAgent[] = [];\n for (const name of entries.sort()) {\n const dir = join(subagentsDir, name);\n if (!(await realDirectory(dir))) {\n continue;\n }\n const child = await discoverAgentDir(dir, name, parentDepth + 1, onWarn);\n if (child) {\n subagents.push(child);\n }\n }\n\n return subagents;\n}\n\n/**\n * Scan `<mastraDir>/agents/*` for file-system routed agents. A directory is\n * treated as an agent only when it contains a `config.(ts|js)` or an\n * `instructions.md`; other directories are ignored. Each agent may declare\n * `subagents/` up to `MAX_FS_SUBAGENT_DEPTH` levels deep. Returns descriptors\n * with absolute, slash-normalized paths ready for codegen. Performs no module\n * evaluation — only filesystem inspection.\n */\nexport async function discoverFsAgents(\n mastraDir: string,\n onWarn?: (message: string) => void,\n): Promise<DiscoveredFsAgent[]> {\n const agentsDir = join(mastraDir, 'agents');\n if (!(await exists(agentsDir))) {\n return [];\n }\n\n let entries: string[];\n try {\n entries = await readdir(agentsDir);\n } catch {\n return [];\n }\n\n const discovered: DiscoveredFsAgent[] = [];\n for (const name of entries.sort()) {\n const dir = join(agentsDir, name);\n if (!(await realDirectory(dir))) {\n continue;\n }\n const agent = await discoverAgentDir(dir, name, 0, onWarn);\n if (agent) {\n discovered.push(agent);\n }\n }\n\n return discovered;\n}\n\n/**\n * A file-system routed workflow file discovered under `<mastraDir>/workflows/`.\n * All paths are absolute and slash-normalized so they can be embedded into\n * generated module source on any platform.\n */\nexport interface DiscoveredFsWorkflow {\n /** Workflow key derived from the filename (without extension). */\n key: string;\n /** Absolute, slash-normalized path to the workflow module. */\n path: string;\n}\n\n/**\n * Scan `<mastraDir>/workflows/` for file-system routed workflow modules. Only\n * files whose source contains an `export default` are treated as fs-routed\n * workflows — this convention distinguishes them from workflow files that are\n * manually imported and registered programmatically. Returns descriptors with\n * absolute, slash-normalized paths ready for codegen. Performs no module\n * evaluation — only filesystem and source-text inspection.\n */\nexport async function discoverFsWorkflows(mastraDir: string): Promise<DiscoveredFsWorkflow[]> {\n const workflowsDir = join(mastraDir, 'workflows');\n if (!(await exists(workflowsDir))) {\n return [];\n }\n\n let entries: string[];\n try {\n entries = await readdir(workflowsDir);\n } catch {\n return [];\n }\n\n const discovered: DiscoveredFsWorkflow[] = [];\n for (const basename of entries.sort()) {\n if (isTestFile(basename)) {\n continue;\n }\n if (!TOOL_EXTENSIONS.some(ext => basename.endsWith(ext))) {\n continue;\n }\n const path = join(workflowsDir, basename);\n const stats = await lstat(path);\n if (stats.isSymbolicLink() || stats.isDirectory()) {\n continue;\n }\n // Convention: only files with `export default` are fs-routed workflows.\n // Files using named exports are assumed to be manually imported.\n const source = await readFile(path, 'utf-8');\n if (!/\\bexport\\s+default\\b/.test(source)) {\n continue;\n }\n discovered.push({ key: toolKey(basename), path: slash(path) });\n }\n\n return discovered;\n}\n\n/**\n * A discovered singleton config file under `<mastraDir>/`. All paths are\n * absolute and slash-normalized so they can be embedded into generated module\n * source on any platform.\n */\nexport interface DiscoveredFsSingleton {\n /** Absolute, slash-normalized path to the singleton module. */\n path: string;\n}\n\nconst SINGLETON_EXTENSIONS = ['.ts', '.js', '.mts', '.mjs'];\n\n/** Safe singleton identifier: no path separators, `..`, or other traversal. */\nconst SINGLETON_NAME_PATTERN = /^[a-zA-Z0-9_-]+$/;\n\n/**\n * Check for a singleton config file (e.g. `storage.ts`, `storage.js`) directly\n * under `<mastraDir>`. Returns the first matching file path or `undefined`.\n * Symlinks are rejected for security.\n *\n * Convention: only files with `export default` are fs-routed singletons. Files\n * using named exports are assumed to be manually imported into the user's\n * `index.ts`, so they are ignored to remain backward-compatible with existing\n * project structures.\n *\n * `name` must be a bare identifier — path separators and traversal sequences are\n * rejected so the lookup can never escape `<mastraDir>`.\n */\nexport async function discoverFsSingleton(mastraDir: string, name: string): Promise<DiscoveredFsSingleton | undefined> {\n if (!SINGLETON_NAME_PATTERN.test(name)) {\n throw new Error(`Invalid fs-singleton name ${JSON.stringify(name)}: expected a bare identifier.`);\n }\n\n for (const ext of SINGLETON_EXTENSIONS) {\n const candidate = join(mastraDir, `${name}${ext}`);\n try {\n const stats = await lstat(candidate);\n if (!stats.isFile() || stats.isSymbolicLink()) {\n continue;\n }\n const source = await readFile(candidate, 'utf-8');\n // Only files with a default export are fs-routed. A named-export file with\n // this name is user-managed, so skip it and keep scanning other extensions.\n if (!/\\bexport\\s+default\\b/.test(source)) {\n continue;\n }\n return { path: slash(candidate) };\n } catch {\n // not present\n }\n }\n return undefined;\n}\n","import { readFile } from 'node:fs/promises';\nimport type { DiscoveredFsAgent, DiscoveredFsSingleton, DiscoveredFsWorkflow } from './discover';\n\nfunction sanitizeIdentifier(name: string, prefix: string, index: string): string {\n const cleaned = name.replace(/[^a-zA-Z0-9_$]/g, '_');\n return `${prefix}_${index}_${cleaned}`;\n}\n\n/**\n * Emit the imports for a single discovered agent into `lines` and return the\n * source of its `assembleAgentFromFsEntry` entry object (the `{ name, config,\n * ... }` argument). `idPath` is a dot-free, unique path index (e.g. `0` for the\n * first top-level agent, `0_1` for its second subagent) used to keep generated\n * identifiers unique across the parent/child tree. `workspaceName` is the\n * slash-joined workspace key (`<parent>/<child>` for subagents) so seed files\n * don't collide. Discovered subagents are emitted recursively as a nested\n * `subagents: [...]` field (discovery already enforces the depth cap).\n */\nasync function emitAgentEntry(\n agent: DiscoveredFsAgent,\n idPath: string,\n workspaceName: string,\n lines: string[],\n): Promise<string> {\n const configIdent = sanitizeIdentifier(agent.name, 'config', idPath);\n const toolIdents: { key: string; ident: string }[] = [];\n\n if (agent.configPath) {\n lines.push(`import ${configIdent} from ${JSON.stringify(agent.configPath)};`);\n }\n\n let workspaceIdent: string | undefined;\n if (agent.workspacePath) {\n workspaceIdent = sanitizeIdentifier(`${agent.name}_workspace`, 'workspace', idPath);\n lines.push(`import ${workspaceIdent} from ${JSON.stringify(agent.workspacePath)};`);\n }\n\n let memoryIdent: string | undefined;\n if (agent.memoryPath) {\n memoryIdent = sanitizeIdentifier(`${agent.name}_memory`, 'memory', idPath);\n lines.push(`import ${memoryIdent} from ${JSON.stringify(agent.memoryPath)};`);\n }\n\n for (let t = 0; t < agent.tools.length; t++) {\n const tool = agent.tools[t]!;\n const ident = sanitizeIdentifier(`${agent.name}_${tool.key}`, 'tool', `${idPath}_${t}`);\n lines.push(`import ${ident} from ${JSON.stringify(tool.path)};`);\n toolIdents.push({ key: tool.key, ident });\n }\n\n const inputProcessorIdents: string[] = [];\n for (let p = 0; p < agent.inputProcessors.length; p++) {\n const proc = agent.inputProcessors[p]!;\n const ident = sanitizeIdentifier(`${agent.name}_inputProc_${proc.key}`, 'proc', `${idPath}_ip${p}`);\n lines.push(`import ${ident} from ${JSON.stringify(proc.path)};`);\n inputProcessorIdents.push(ident);\n }\n\n const outputProcessorIdents: string[] = [];\n for (let p = 0; p < agent.outputProcessors.length; p++) {\n const proc = agent.outputProcessors[p]!;\n const ident = sanitizeIdentifier(`${agent.name}_outputProc_${proc.key}`, 'proc', `${idPath}_op${p}`);\n lines.push(`import ${ident} from ${JSON.stringify(proc.path)};`);\n outputProcessorIdents.push(ident);\n }\n\n const scorerIdents: { key: string; ident: string }[] = [];\n for (let s = 0; s < agent.scorers.length; s++) {\n const scorer = agent.scorers[s]!;\n const ident = sanitizeIdentifier(`${agent.name}_scorer_${scorer.key}`, 'scorer', `${idPath}_${s}`);\n lines.push(`import ${ident} from ${JSON.stringify(scorer.path)};`);\n scorerIdents.push({ key: scorer.key, ident });\n }\n\n // Skills: `createSkill(...)` modules are imported and used directly;\n // packaged `SKILL.md` skills are inlined via `createSkill({...})`.\n const skillExprs: string[] = [];\n const agentSkills = agent.skills ?? [];\n for (let s = 0; s < agentSkills.length; s++) {\n const skill = agentSkills[s]!;\n if (skill.kind === 'module') {\n const ident = sanitizeIdentifier(`${agent.name}_skill`, 'skill', `${idPath}_${s}`);\n lines.push(`import ${ident} from ${JSON.stringify(skill.path)};`);\n skillExprs.push(ident);\n } else {\n const referenceFields = Object.entries(skill.references).map(\n ([key, value]) => `${JSON.stringify(key)}: ${JSON.stringify(value)}`,\n );\n const skillFields = [\n `name: ${JSON.stringify(skill.name)}`,\n `description: ${JSON.stringify(skill.description)}`,\n `instructions: ${JSON.stringify(skill.instructions)}`,\n ];\n if (referenceFields.length > 0) {\n skillFields.push(`references: { ${referenceFields.join(', ')} }`);\n }\n skillExprs.push(`__createSkill({ ${skillFields.join(', ')} })`);\n }\n }\n\n let instructionsMd: string | undefined;\n if (agent.instructionsPath) {\n instructionsMd = await readFile(agent.instructionsPath, 'utf-8');\n }\n\n // Declared subagents. Each is itself an `assembleAgentFromFsEntry` entry\n // object, recursively carrying its own `subagents`.\n const subagentExprs: string[] = [];\n for (let c = 0; c < agent.subagents.length; c++) {\n const child = agent.subagents[c]!;\n const childExpr = await emitAgentEntry(child, `${idPath}_${c}`, `${workspaceName}/${child.name}`, lines);\n subagentExprs.push(childExpr);\n }\n\n const entryFields: string[] = [`name: ${JSON.stringify(agent.name)}`];\n if (agent.configPath) {\n entryFields.push(`config: ${configIdent}`);\n }\n if (instructionsMd !== undefined) {\n entryFields.push(`instructionsMd: ${JSON.stringify(instructionsMd)}`);\n }\n if (toolIdents.length > 0) {\n const toolEntries = toolIdents.map(({ key, ident }) => `{ key: ${JSON.stringify(key)}, tool: ${ident} }`);\n entryFields.push(`tools: [${toolEntries.join(', ')}]`);\n }\n if (skillExprs.length > 0) {\n entryFields.push(`skills: [${skillExprs.join(', ')}]`);\n }\n if (inputProcessorIdents.length > 0) {\n entryFields.push(`inputProcessors: [${inputProcessorIdents.join(', ')}]`);\n }\n if (outputProcessorIdents.length > 0) {\n entryFields.push(`outputProcessors: [${outputProcessorIdents.join(', ')}]`);\n }\n if (scorerIdents.length > 0) {\n const scorerEntries = scorerIdents.map(({ key, ident }) => `{ key: ${JSON.stringify(key)}, scorer: ${ident} }`);\n entryFields.push(`scorers: [${scorerEntries.join(', ')}]`);\n }\n if (subagentExprs.length > 0) {\n entryFields.push(`subagents: [${subagentExprs.join(', ')}]`);\n }\n if (workspaceIdent) {\n entryFields.push(`workspace: ${workspaceIdent}`);\n }\n if (memoryIdent) {\n entryFields.push(`memory: ${memoryIdent}`);\n }\n // Default-on parity: every FS agent gets a default workspace (file + shell\n // tools) rooted at a per-agent `workspace/` dir next to the bundle, unless\n // config.ts or workspace.ts supplies one. Assembly applies the explicit >\n // convention > default precedence. Subagents nest under `<parent>/<child>` so\n // their seed directories never collide with the parent's.\n entryFields.push(`defaultWorkspaceBasePath: __workspaceBasePath(${JSON.stringify(workspaceName)})`);\n\n return `{ ${entryFields.join(', ')} }`;\n}\n\n/**\n * Generate the source of a wrapper module that:\n * 1. imports the user's real Mastra entry,\n * 2. imports each discovered `config.ts`, `tools/*.ts`, `skills/*.ts`\n * (`createSkill(...)` modules), `workspace.ts`, and `memory.ts`, inlining\n * packaged `SKILL.md` skills,\n * 3. assembles `Agent` instances via `assembleAgentFromFsEntry`, wiring any\n * declared `subagents/` into the parent (nested up to `MAX_FS_SUBAGENT_DEPTH`),\n * 4. registers them onto the user's `mastra` instance (code-registered agents\n * win on name collisions), and\n * 5. re-exports everything from the user's entry so this module is a drop-in\n * replacement for the original `#mastra` target.\n *\n * `instructions.md` is read into the generated wrapper. In dev, the CLI watcher\n * regenerates that wrapper when the markdown file changes.\n *\n * @param userEntry slash-normalized absolute path to the user's mastra entry.\n * @param agents discovered fs-routed agents (absolute, slash-normalized paths).\n */\nexport async function generateFsAgentsModule(\n userEntry: string | undefined,\n agents: DiscoveredFsAgent[],\n options?: {\n workflows?: DiscoveredFsWorkflow[];\n storage?: DiscoveredFsSingleton;\n observability?: DiscoveredFsSingleton;\n logger?: DiscoveredFsSingleton;\n server?: DiscoveredFsSingleton;\n studio?: DiscoveredFsSingleton;\n },\n): Promise<string> {\n const workflows = options?.workflows ?? [];\n const storage = options?.storage;\n const observability = options?.observability;\n const logger = options?.logger;\n const server = options?.server;\n const studio = options?.studio;\n const standalone = userEntry === undefined;\n const lines: string[] = [];\n\n const hasInlineSkills = (function check(list: DiscoveredFsAgent[]): boolean {\n return list.some(a => (a.skills ?? []).some(s => s.kind === 'packaged') || check(a.subagents ?? []));\n })(agents);\n\n lines.push(`import { assembleAgentFromFsEntry } from '@mastra/core/agent';`);\n if (hasInlineSkills) {\n lines.push(`import { createSkill as __createSkill } from '@mastra/core/skills';`);\n }\n if (standalone) {\n lines.push(`import { Mastra } from '@mastra/core';`);\n }\n lines.push(`import { fileURLToPath as __fileURLToPath } from 'node:url';`);\n lines.push(`import { dirname as __dirname, join as __join } from 'node:path';`);\n if (userEntry) {\n lines.push(`import * as __userEntry from ${JSON.stringify(userEntry)};`);\n lines.push(`export * from ${JSON.stringify(userEntry)};`);\n }\n lines.push(``);\n // Resolve workspace base paths relative to this bundled module so they point\n // at `<bundle>/workspace/<name>` wherever the bundle is deployed. Seed files\n // authored under `agents/<name>/workspace/**` are mirrored there at build time.\n // `name` may be a slash-joined path (`<parent>/<child>`) for subagents.\n lines.push(`const __bundleDir = __dirname(__fileURLToPath(import.meta.url));`);\n lines.push(`const __workspaceBasePath = name => __join(__bundleDir, 'workspace', ...name.split('/'));`);\n lines.push(``);\n\n // Singleton imports (storage.ts, observability.ts, etc.).\n const singletonImports: string[] = [];\n if (storage) {\n singletonImports.push(`import __fsStorage from ${JSON.stringify(storage.path)};`);\n }\n if (observability) {\n singletonImports.push(`import __fsObservability from ${JSON.stringify(observability.path)};`);\n }\n if (logger) {\n singletonImports.push(`import __fsLogger from ${JSON.stringify(logger.path)};`);\n }\n if (server) {\n singletonImports.push(`import __fsServer from ${JSON.stringify(server.path)};`);\n }\n if (studio) {\n singletonImports.push(`import __fsStudio from ${JSON.stringify(studio.path)};`);\n }\n if (singletonImports.length > 0) {\n lines.push(...singletonImports);\n lines.push(``);\n }\n\n const wfCodegen = workflows.length > 0 ? generateFsWorkflowsCodegen(workflows) : undefined;\n\n // Workflow imports (placed alongside other imports, before agent entries).\n if (wfCodegen) {\n for (const line of wfCodegen.importLines) {\n lines.push(line);\n }\n lines.push(``);\n }\n\n const entryExprs: string[] = [];\n for (let i = 0; i < agents.length; i++) {\n const agent = agents[i]!;\n const expr = await emitAgentEntry(agent, `${i}`, agent.name, lines);\n entryExprs.push(expr);\n }\n\n // In standalone mode (no user entry), auto-construct a Mastra instance.\n // In wrapper mode, reference the user's exported instance.\n if (standalone) {\n lines.push(``);\n lines.push(`const __mastra = new Mastra({});`);\n } else {\n lines.push(``);\n lines.push(`const __mastra = __userEntry.mastra;`);\n }\n\n lines.push(``);\n lines.push(`const __fsAgentEntries = [`);\n for (const expr of entryExprs) {\n lines.push(` ${expr},`);\n }\n lines.push(`];`);\n lines.push(``);\n lines.push(`const __fsAgents = Object.create(null);`);\n lines.push(`for (const __entry of __fsAgentEntries) {`);\n lines.push(` __fsAgents[__entry.name] = assembleAgentFromFsEntry(__entry, {`);\n lines.push(` onWarn: msg => __mastra?.getLogger?.()?.warn?.(msg) ?? console.warn(msg),`);\n lines.push(` });`);\n lines.push(`}`);\n lines.push(``);\n\n // Singleton registration (storage, observability, etc.) MUST run before\n // agents/workflows. `addMemory`/`addAgent` bind the current store to\n // storage-dependent primitives at registration time, so the fs singletons\n // have to be in place first — otherwise fs-discovered agents/workflows would\n // stay bound to the default InMemoryStore.\n\n // Logger is registered before everything else so storage/observability and\n // agents receive the fs-provided logger when they are wired up below.\n if (logger) {\n lines.push(`if (__mastra && typeof __mastra.__registerFsLogger === 'function') {`);\n lines.push(` __mastra.__registerFsLogger(__fsLogger);`);\n lines.push(`}`);\n lines.push(``);\n }\n\n if (storage) {\n lines.push(`if (__mastra && typeof __mastra.__registerFsStorage === 'function') {`);\n lines.push(` __mastra.__registerFsStorage(__fsStorage);`);\n lines.push(`}`);\n lines.push(``);\n }\n\n if (observability) {\n lines.push(`if (__mastra && typeof __mastra.__registerFsObservability === 'function') {`);\n lines.push(` __mastra.__registerFsObservability(__fsObservability);`);\n lines.push(`}`);\n lines.push(``);\n }\n\n if (server) {\n lines.push(`if (__mastra && typeof __mastra.__registerFsServer === 'function') {`);\n lines.push(` __mastra.__registerFsServer(__fsServer);`);\n lines.push(`}`);\n lines.push(``);\n }\n\n if (studio) {\n lines.push(`if (__mastra && typeof __mastra.__registerFsStudio === 'function') {`);\n lines.push(` __mastra.__registerFsStudio(__fsStudio);`);\n lines.push(`}`);\n lines.push(``);\n }\n\n lines.push(`if (__mastra && typeof __mastra.__registerFsAgents === 'function') {`);\n lines.push(` __mastra.__registerFsAgents(__fsAgents);`);\n lines.push(`}`);\n\n // Workflow registration (after agents, before final export).\n if (wfCodegen) {\n lines.push(``);\n\n for (const line of wfCodegen.registrationLines) {\n lines.push(line);\n }\n }\n\n lines.push(``);\n lines.push(`export const mastra = __mastra;`);\n\n return lines.join('\\n');\n}\n\n/**\n * Generate the workflow-registration lines to splice into the generated wrapper\n * module. Emits import statements for each discovered workflow module and a\n * registration block that calls `__registerFsWorkflows` on the user's mastra.\n *\n * Returns `{ importLines, registrationLines }` so the caller can place them at\n * the correct positions in the wrapper source.\n */\nexport function generateFsWorkflowsCodegen(workflows: DiscoveredFsWorkflow[]): {\n importLines: string[];\n registrationLines: string[];\n} {\n const importLines: string[] = [];\n const registrationLines: string[] = [];\n\n for (let i = 0; i < workflows.length; i++) {\n const wf = workflows[i]!;\n const ident = sanitizeIdentifier(wf.key, 'workflow', `${i}`);\n importLines.push(`import ${ident} from ${JSON.stringify(wf.path)};`);\n }\n\n registrationLines.push(`const __fsWorkflows = Object.create(null);`);\n for (let i = 0; i < workflows.length; i++) {\n const wf = workflows[i]!;\n const ident = sanitizeIdentifier(wf.key, 'workflow', `${i}`);\n registrationLines.push(`__fsWorkflows[${JSON.stringify(wf.key)}] = ${ident};`);\n }\n registrationLines.push(``);\n registrationLines.push(`if (__mastra && typeof __mastra.__registerFsWorkflows === 'function') {`);\n registrationLines.push(` __mastra.__registerFsWorkflows(__fsWorkflows);`);\n registrationLines.push(`}`);\n\n return { importLines, registrationLines };\n}\n","import { mkdir, writeFile } from 'node:fs/promises';\nimport { dirname, join, posix } from 'node:path';\nimport { slash } from '../utils';\nimport { generateFsAgentsModule } from './codegen';\nimport { discoverFsAgents, discoverFsSingleton, discoverFsWorkflows } from './discover';\n\nexport interface PrepareFsAgentsEntryResult {\n /**\n * The entry file that should be fed to the bundler/analyzer. When fs-routed\n * primitives (agents, workflows, storage, observability, logger, server,\n * studio) are\n * found this is a generated wrapper module that registers them onto the\n * user's mastra instance; otherwise it is the original entry unchanged.\n * When auto-constructing (no user entry), this is always the generated module.\n */\n entryFile: string;\n /** Whether a standalone Mastra instance was auto-constructed (no index.ts). */\n standalone: boolean;\n /**\n * Glob tool paths for tools defined under `agents/*\\/tools` so they are\n * bundled alongside the top-level `tools/` directory.\n */\n toolPaths: string[];\n /** Number of fs-routed agents discovered. */\n agentCount: number;\n /** Number of fs-routed workflows discovered. */\n workflowCount: number;\n /** Whether a `storage.ts` singleton was discovered. */\n hasStorage: boolean;\n /** Whether an `observability.ts` singleton was discovered. */\n hasObservability: boolean;\n /** Whether a `logger.ts` singleton was discovered. */\n hasLogger: boolean;\n /** Whether a `server.ts` singleton was discovered. */\n hasServer: boolean;\n /** Whether a `studio.ts` singleton was discovered. */\n hasStudio: boolean;\n /**\n * Generated wrapper source to write to {@link entryFile}, or `undefined` when\n * there are no fs-routed primitives. The write is deferred so callers can run\n * it *after* `bundler.prepare()` empties the output directory — otherwise the\n * wrapper is wiped before the bundler reads it.\n */\n moduleSource?: string;\n}\n\n/**\n * Discover fs-routed agents under `<mastraDir>/agents/*`, workflows under\n * `<mastraDir>/workflows/`, and singleton config files (e.g. `storage.ts`,\n * `observability.ts`, `logger.ts`, `server.ts`, `studio.ts`).\n * When any are found, generate a wrapper entry module that registers them onto\n * the user's mastra instance. Returns the entry the bundler should use plus\n * extra tool glob paths so `agents/*\\/tools` are bundled.\n *\n * This does NOT write the wrapper to disk; call {@link writeFsAgentsEntry} with\n * the result after `bundler.prepare()` so the generated file is not wiped when\n * the output directory is emptied.\n *\n * When `entryFile` is `undefined` (no `index.ts`/`index.js`) and fs-routed\n * primitives are found, a standalone Mastra instance is auto-constructed from\n * them — no user code required.\n *\n * When no fs-routed primitives are present the original entry is returned\n * unchanged, so existing code-only projects are completely unaffected.\n */\nexport async function prepareFsAgentsEntry(\n mastraDir: string,\n entryFile: string | undefined,\n outputDirectory: string,\n): Promise<PrepareFsAgentsEntryResult> {\n const [agents, workflows, storage, observability, logger, server, studio] = await Promise.all([\n discoverFsAgents(mastraDir),\n discoverFsWorkflows(mastraDir),\n discoverFsSingleton(mastraDir, 'storage'),\n discoverFsSingleton(mastraDir, 'observability'),\n discoverFsSingleton(mastraDir, 'logger'),\n discoverFsSingleton(mastraDir, 'server'),\n discoverFsSingleton(mastraDir, 'studio'),\n ]);\n\n const standalone = entryFile === undefined;\n const hasFsPrimitives =\n agents.length > 0 || workflows.length > 0 || !!storage || !!observability || !!logger || !!server || !!studio;\n\n if (!hasFsPrimitives && entryFile !== undefined) {\n return {\n entryFile,\n standalone: false,\n toolPaths: [],\n agentCount: 0,\n workflowCount: 0,\n hasStorage: false,\n hasObservability: false,\n hasLogger: false,\n hasServer: false,\n hasStudio: false,\n };\n }\n\n if (!hasFsPrimitives && standalone) {\n throw new Error(\n 'No index.ts and no file-based primitives found. ' +\n 'Create src/mastra/index.ts with a Mastra instance, or add file-based agents/workflows/storage.',\n );\n }\n\n const moduleSource = await generateFsAgentsModule(entryFile ? slash(entryFile) : undefined, agents, {\n workflows,\n storage,\n observability,\n logger,\n server,\n studio,\n });\n const generatedEntry = join(outputDirectory, '.mastra-fs-agents-entry.mjs');\n\n const normalizedMastraDir = slash(mastraDir);\n const toolPaths =\n agents.length > 0\n ? [\n posix.join(normalizedMastraDir, 'agents/*/tools/**/*.{js,ts}'),\n `!${posix.join(normalizedMastraDir, 'agents/*/tools/**/*.{test,spec}.{js,ts}')}`,\n `!${posix.join(normalizedMastraDir, 'agents/*/tools/**/__tests__/**')}`,\n ]\n : [];\n\n return {\n entryFile: generatedEntry,\n standalone,\n toolPaths,\n agentCount: agents.length,\n workflowCount: workflows.length,\n hasStorage: !!storage,\n hasObservability: !!observability,\n hasLogger: !!logger,\n hasServer: !!server,\n hasStudio: !!studio,\n moduleSource,\n };\n}\n\n/**\n * Write the generated fs-agents wrapper produced by {@link prepareFsAgentsEntry}\n * to its `entryFile`. No-op when there are no fs-routed agents. Call this AFTER\n * `bundler.prepare()` (which empties the output directory) so the wrapper\n * survives for the bundler/watcher to read.\n */\nexport async function writeFsAgentsEntry(result: PrepareFsAgentsEntryResult): Promise<void> {\n if (!result.moduleSource) {\n return;\n }\n\n await mkdir(dirname(result.entryFile), { recursive: true });\n await writeFile(result.entryFile, result.moduleSource, 'utf-8');\n}\n","import { cp, lstat, mkdir } from 'node:fs/promises';\nimport { join } from 'node:path';\nimport { discoverFsAgents } from './discover';\nimport type { DiscoveredFsAgent } from './discover';\n\n/**\n * Skip symlinks when copying workspace seeds. A symlink under\n * `agents/<name>/workspace/` could point outside the workspace and be preserved\n * in the bundle, letting the agent read arbitrary files at runtime. We copy only\n * regular files and directories.\n */\nasync function rejectSymlinks(source: string): Promise<boolean> {\n const stats = await lstat(source);\n return !stats.isSymbolicLink();\n}\n\nasync function mirrorAgentSeeds(\n agent: DiscoveredFsAgent,\n workspaceName: string,\n bundleDir: string,\n mirrored: string[],\n): Promise<void> {\n if (agent.workspaceSeedDir) {\n const destination = join(bundleDir, 'workspace', ...workspaceName.split('/'));\n await mkdir(destination, { recursive: true });\n await cp(agent.workspaceSeedDir, destination, { recursive: true, filter: rejectSymlinks });\n mirrored.push(workspaceName);\n }\n\n // Subagents nest under `<parent>/<child>`, matching the codegen workspace key.\n for (const child of agent.subagents ?? []) {\n await mirrorAgentSeeds(child, `${workspaceName}/${child.name}`, bundleDir, mirrored);\n }\n}\n\n/**\n * Mirror authored `agents/<name>/workspace/**` seed files into the bundled\n * output so each fs-routed agent starts with them on disk (Eve parity). Files\n * are copied to `<bundleDir>/workspace/<name>`, which is exactly where the\n * generated entry roots each agent's default workspace at runtime (resolved\n * relative to the bundled module via `import.meta.url`). Declared subagents\n * mirror to the nested `<bundleDir>/workspace/<parent>/<child>` path.\n *\n * Must run AFTER the bundle step, since bundling recreates the output dir.\n *\n * @param mastraDir The user's `src/mastra` directory (source of seeds).\n * @param bundleDir The final bundle directory (e.g. `<outputDirectory>/output`).\n * @returns the workspace names whose seeds were mirrored (`<parent>/<child>` for subagents).\n */\nexport async function mirrorFsAgentWorkspaces(mastraDir: string, bundleDir: string): Promise<string[]> {\n const agents = await discoverFsAgents(mastraDir);\n const mirrored: string[] = [];\n\n for (const agent of agents) {\n await mirrorAgentSeeds(agent, agent.name, bundleDir, mirrored);\n }\n\n return mirrored;\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/build/watcher.ts","../src/build/serverOptions.ts","../src/build/fs-routing/discover.ts","../src/build/fs-routing/codegen.ts","../src/build/fs-routing/prepare.ts","../src/build/fs-routing/mirror.ts"],"names":["getInputOptions","readFile","join","posix","dirname","lstat","mkdir"],"mappings":"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","file":"chunk-H6J5QQ45.js","sourcesContent":["import { dirname, posix } from 'node:path';\nimport { noopLogger } from '@mastra/core/logger';\nimport * as pkg from 'empathic/package';\nimport type { InputOptions, OutputOptions, Plugin } from 'rollup';\nimport { watch } from 'rollup';\nimport { getWorkspaceInformation } from '../bundler/workspaceDependencies';\nimport { analyzeBundle } from './analyze';\nimport { getInputOptions as getBundlerInputOptions } from './bundler';\nimport { aliasHono } from './plugins/hono-alias';\nimport { nodeModulesExtensionResolver } from './plugins/node-modules-extension-resolver';\nimport { tsConfigPaths } from './plugins/tsconfig-paths';\nimport type { BundlerOptions } from './types';\nimport { getPackageName, slash } from './utils';\nimport type { BundlerPlatform } from './utils';\n\nexport async function getInputOptions(\n entryFile: string,\n platform: BundlerPlatform,\n env?: Record<string, string>,\n {\n sourcemap = false,\n bundlerOptions = {\n enableSourcemap: false,\n enableEsmShim: true,\n externals: true,\n },\n analysisEntries = [entryFile],\n }: { sourcemap?: boolean; bundlerOptions?: BundlerOptions; analysisEntries?: string[] } = {},\n) {\n const closestPkgJson = pkg.up({ cwd: dirname(entryFile) });\n const projectRoot = closestPkgJson ? dirname(slash(closestPkgJson)) : slash(process.cwd());\n const { workspaceMap, workspaceRoot } = await getWorkspaceInformation({ mastraEntryFile: entryFile });\n\n const analyzeEntryResult = await analyzeBundle(\n analysisEntries,\n entryFile,\n {\n outputDir: posix.join(process.cwd(), '.mastra', '.build'),\n projectRoot: workspaceRoot || process.cwd(),\n platform,\n isDev: true,\n bundlerOptions,\n },\n noopLogger,\n );\n\n const deps = /* @__PURE__ */ new Map();\n for (const [dep, metadata] of analyzeEntryResult.dependencies.entries()) {\n const pkgName = getPackageName(dep);\n if (pkgName && workspaceMap.has(pkgName)) {\n deps.set(dep, metadata);\n }\n }\n\n const inputOptions = await getBundlerInputOptions(\n entryFile,\n {\n dependencies: deps,\n externalDependencies: new Map(),\n workspaceMap,\n },\n platform,\n env,\n { sourcemap, isDev: true, workspaceRoot, projectRoot, externalsPreset: bundlerOptions?.externals === true },\n );\n\n if (Array.isArray(inputOptions.plugins)) {\n // filter out node-resolve plugin so all node_modules are external\n // and tsconfig-paths plugin as we are injection a custom one\n const plugins = [] as Plugin[];\n inputOptions.plugins.forEach(plugin => {\n if ((plugin as Plugin | undefined)?.name === 'node-resolve') {\n return;\n }\n\n if ((plugin as Plugin | undefined)?.name === 'tsconfig-paths') {\n plugins.push(\n tsConfigPaths({\n localResolve: true,\n }),\n );\n return;\n }\n\n plugins.push(plugin as Plugin);\n });\n\n inputOptions.plugins = plugins;\n inputOptions.plugins.push(aliasHono());\n // fixes imports like lodash/fp/get\n inputOptions.plugins.push(nodeModulesExtensionResolver());\n }\n\n return inputOptions;\n}\n\nexport async function createWatcher(inputOptions: InputOptions, outputOptions: OutputOptions) {\n const watcher = await watch({\n ...inputOptions,\n output: {\n ...outputOptions,\n format: 'esm',\n entryFileNames: '[name].mjs',\n chunkFileNames: '[name].mjs',\n },\n });\n\n return watcher;\n}\n","import type { IMastraLogger } from '@mastra/core/logger';\nimport type { Config } from '@mastra/core/mastra';\nimport { extractMastraOption, extractMastraOptionBundler } from './shared/extract-mastra-option';\n\nexport function getServerOptionsBundler(\n entryFile: string,\n result: {\n hasCustomConfig: false;\n },\n) {\n return extractMastraOptionBundler('server', entryFile, result);\n}\n\nexport async function getServerOptions(\n entryFile: string,\n outputDir: string,\n logger?: IMastraLogger,\n): Promise<Config['server'] | null> {\n const result = await extractMastraOption('server', entryFile, outputDir, logger);\n if (!result) {\n return null;\n }\n\n return result.getConfig();\n}\n","import { lstat, readdir, readFile } from 'node:fs/promises';\nimport { join } from 'node:path';\nimport { MAX_FS_SUBAGENT_DEPTH } from '@mastra/core/agent';\nimport matter from 'gray-matter';\nimport { slash } from '../utils';\n\n/**\n * A file-system routed agent directory discovered under `<mastraDir>/agents/`.\n * All paths are absolute and slash-normalized so they can be embedded into\n * generated module source on any platform.\n */\nexport interface DiscoveredFsAgent {\n /** Agent directory name. Used as the default `id`/`name`. */\n name: string;\n /** Absolute, slash-normalized path to the agent directory. */\n dir: string;\n /** Absolute path to `config.ts`/`config.js`, if present. */\n configPath?: string;\n /** Absolute path to `instructions.md`, if present. */\n instructionsPath?: string;\n /** Absolute path to `workspace.ts`/`workspace.js`, if present. */\n workspacePath?: string;\n /** Absolute path to `memory.ts`/`memory.js`, if present. */\n memoryPath?: string;\n /**\n * Absolute, slash-normalized path to an authored `workspace/` directory of\n * seed files, if present. These are mirrored into the deployed workspace at\n * build time (Eve parity) so the agent starts with them on disk.\n */\n workspaceSeedDir?: string;\n /** Tools discovered under `tools/`, in stable (sorted) order. */\n tools: { key: string; path: string }[];\n /** Input processors discovered under `processors/input/`, in stable (sorted) order. */\n inputProcessors: { key: string; path: string }[];\n /** Output processors discovered under `processors/output/`, in stable (sorted) order. */\n outputProcessors: { key: string; path: string }[];\n /** Scorers discovered under `scorers/`, in stable (sorted) order. */\n scorers: { key: string; path: string }[];\n /** Skills discovered under `skills/`, in stable (sorted) order. */\n skills: DiscoveredFsSkill[];\n /**\n * Declared subagents discovered under `subagents/`, in stable (sorted) order.\n * Subagents may declare their own `subagents/`, up to `MAX_FS_SUBAGENT_DEPTH`\n * levels below the top-level agent; deeper `subagents/` directories are\n * ignored with a warning.\n */\n subagents: DiscoveredFsAgent[];\n}\n\n/**\n * A skill discovered under `agents/<name>/skills/`.\n *\n * - `kind: 'module'` — a `.ts`/`.js` file whose default export is a `createSkill(...)`\n * result. Codegen imports it directly; `name`/`description`/`instructions` are\n * unknown at discovery time and resolved at runtime from the module.\n * - `kind: 'packaged'` — a `SKILL.md` (optionally with a `references/` subdir) or a\n * flat `<skill>.md`. Codegen inlines it via `createSkill(...)` using the parsed\n * fields below so the deployed bundle carries no filesystem dependency.\n */\nexport type DiscoveredFsSkill =\n | {\n kind: 'module';\n /** Absolute, slash-normalized path to the `.ts`/`.js` skill module. */\n path: string;\n }\n | {\n kind: 'packaged';\n name: string;\n description: string;\n instructions: string;\n /** Reference file contents keyed by relative path (from `references/`). */\n references: Record<string, string>;\n };\n\nconst CONFIG_BASENAMES = ['config.ts', 'config.js'];\nconst WORKSPACE_BASENAMES = ['workspace.ts', 'workspace.js'];\nconst MEMORY_BASENAMES = ['memory.ts', 'memory.js'];\nconst INSTRUCTIONS_BASENAME = 'instructions.md';\nconst TOOL_EXTENSIONS = ['.ts', '.js'];\nconst SKILL_MODULE_EXTENSIONS = ['.ts', '.js'];\nconst SKILL_MD_BASENAME = 'SKILL.md';\n\n/**\n * Presence check that does NOT follow symlinks. Returns `false` for symlinks\n * (and broken links) so a symlinked `config.ts`/`instructions.md`/`workspace.ts`/\n * `memory.ts` is never inlined or imported into the generated bundle.\n */\nasync function exists(path: string): Promise<boolean> {\n try {\n return !(await lstat(path)).isSymbolicLink();\n } catch {\n return false;\n }\n}\n\n/**\n * Returns the slash-normalized path when `path` is a real directory (not a\n * symlink). Symlinked directories are rejected to prevent the build from\n * following links out of the project tree during discovery.\n */\nasync function realDirectory(path: string): Promise<string | undefined> {\n try {\n const info = await lstat(path);\n if (info.isDirectory() && !info.isSymbolicLink()) {\n return slash(path);\n }\n } catch {\n // not present\n }\n return undefined;\n}\n\nasync function directoryExists(path: string): Promise<string | undefined> {\n return realDirectory(path);\n}\n\nasync function firstExisting(dir: string, basenames: string[]): Promise<string | undefined> {\n for (const basename of basenames) {\n const candidate = join(dir, basename);\n if (await exists(candidate)) {\n return slash(candidate);\n }\n }\n return undefined;\n}\n\nfunction isTestFile(basename: string): boolean {\n return /\\.(test|spec)\\.(ts|js)$/.test(basename);\n}\n\nfunction toolKey(basename: string): string {\n return basename.replace(/\\.(ts|js)$/, '');\n}\n\n/**\n * Discover default-exporting `.ts`/`.js` modules directly under `dir`, returning\n * `{ key, path }` entries in stable (sorted) order. Test files, symlinks, and\n * subdirectories are skipped: a symlinked module could point anywhere on the\n * build machine and be embedded into generated import code. Shared by the\n * `tools/` and `scorers/` scanners.\n */\nasync function discoverModuleDir(dir: string): Promise<{ key: string; path: string }[]> {\n if (!(await exists(dir))) {\n return [];\n }\n\n let entries: string[];\n try {\n entries = await readdir(dir);\n } catch {\n return [];\n }\n\n const modules: { key: string; path: string }[] = [];\n for (const basename of entries.sort()) {\n if (isTestFile(basename)) {\n continue;\n }\n if (!TOOL_EXTENSIONS.some(ext => basename.endsWith(ext))) {\n continue;\n }\n const path = join(dir, basename);\n // Use lstat so symlinks are detected (not followed). Skip symlinks and\n // directories: a symlinked module file could point anywhere on the build\n // machine and be embedded into generated import code.\n const stats = await lstat(path);\n if (stats.isSymbolicLink() || stats.isDirectory()) {\n continue;\n }\n modules.push({ key: toolKey(basename), path: slash(path) });\n }\n\n return modules;\n}\n\nasync function discoverTools(toolsDir: string): Promise<DiscoveredFsAgent['tools']> {\n return discoverModuleDir(toolsDir);\n}\n\nasync function discoverProcessors(\n processorsDir: string,\n): Promise<{ input: { key: string; path: string }[]; output: { key: string; path: string }[] }> {\n const result = { input: [] as { key: string; path: string }[], output: [] as { key: string; path: string }[] };\n\n for (const type of ['input', 'output'] as const) {\n const typeDir = join(processorsDir, type);\n if (!(await exists(typeDir))) {\n continue;\n }\n\n let entries: string[];\n try {\n entries = await readdir(typeDir);\n } catch {\n continue;\n }\n\n for (const basename of entries.sort()) {\n if (isTestFile(basename)) {\n continue;\n }\n if (!TOOL_EXTENSIONS.some(ext => basename.endsWith(ext))) {\n continue;\n }\n const path = join(typeDir, basename);\n const stats = await lstat(path);\n if (stats.isSymbolicLink() || stats.isDirectory()) {\n continue;\n }\n result[type].push({ key: toolKey(basename), path: slash(path) });\n }\n }\n\n return result;\n}\n\nasync function readReferences(referencesDir: string): Promise<Record<string, string>> {\n if (!(await exists(referencesDir))) {\n return {};\n }\n const references: Record<string, string> = {};\n let entries: string[];\n try {\n entries = await readdir(referencesDir);\n } catch {\n return {};\n }\n for (const basename of entries.sort()) {\n const path = join(referencesDir, basename);\n // Use lstat so symlinks are detected (not followed). Skip symlinks: a\n // symlink under `references/` could point anywhere on the build machine and\n // silently embed arbitrary file contents into the generated bundle.\n const stats = await lstat(path);\n if (stats.isSymbolicLink() || stats.isDirectory()) {\n continue;\n }\n references[basename] = await readFile(path, 'utf-8');\n }\n return references;\n}\n\nasync function parsePackagedSkill(\n skillMdPath: string,\n fallbackName: string,\n references: Record<string, string> = {},\n): Promise<Extract<DiscoveredFsSkill, { kind: 'packaged' }>> {\n const raw = await readFile(skillMdPath, 'utf-8');\n const parsed = matter(raw);\n const frontmatter = parsed.data as { name?: string; description?: string };\n const name = frontmatter.name ?? fallbackName;\n const description = frontmatter.description;\n\n if (!description) {\n throw new Error(\n `Skill \"${name}\" in ${skillMdPath} is missing a required \"description\". ` +\n `Add a YAML frontmatter block with a \"description:\" field. ` +\n `See https://agentskills.io/specification for the SKILL.md format.`,\n );\n }\n\n const instructions = parsed.content.trim();\n return { kind: 'packaged', name, description, instructions, references };\n}\n\nfunction skillModuleName(basename: string): string {\n return basename.replace(/\\.(ts|js)$/, '');\n}\n\nasync function discoverSkills(skillsDir: string): Promise<DiscoveredFsSkill[]> {\n if (!(await exists(skillsDir))) {\n return [];\n }\n\n let entries: string[];\n try {\n entries = await readdir(skillsDir);\n } catch {\n return [];\n }\n\n const skills: DiscoveredFsSkill[] = [];\n for (const basename of entries.sort()) {\n if (isTestFile(basename)) {\n continue;\n }\n const path = join(skillsDir, basename);\n // Use lstat so symlinks are detected (not followed). Skip symlinks: a\n // symlinked skill module/markdown could point anywhere on the build machine\n // and be bundled or inlined into the generated output.\n const stats = await lstat(path);\n if (stats.isSymbolicLink()) {\n continue;\n }\n const isDir = stats.isDirectory();\n\n // Packaged skill directory: <skill>/SKILL.md (+ references/)\n if (isDir) {\n const skillMd = join(path, SKILL_MD_BASENAME);\n if (await exists(skillMd)) {\n const references = await readReferences(join(path, 'references'));\n skills.push(await parsePackagedSkill(skillMd, skillModuleName(basename), references));\n }\n continue;\n }\n\n // createSkill module: <skill>.ts | <skill>.js\n if (SKILL_MODULE_EXTENSIONS.some(ext => basename.endsWith(ext))) {\n skills.push({ kind: 'module', path: slash(path) });\n continue;\n }\n\n // Flat markdown skill: <skill>.md\n if (basename.endsWith('.md')) {\n const skill = await parsePackagedSkill(path, basename.replace(/\\.md$/, ''));\n skills.push(skill);\n }\n }\n\n return skills;\n}\n\n/**\n * Discover a single agent directory: its `config`/`instructions`/`workspace`\n * files plus `tools/`, `skills/`, and declared `subagents/`. Returns\n * `undefined` when `dir` is not an agent directory (no `config.(ts|js)` and no\n * `instructions.md`).\n *\n * `depth` is the subagent nesting level (`0` for top-level agents). Discovery\n * recurses into `subagents/` until `MAX_FS_SUBAGENT_DEPTH`; deeper directories\n * are ignored with a warning.\n */\nasync function discoverAgentDir(\n dir: string,\n name: string,\n depth: number,\n onWarn?: (message: string) => void,\n): Promise<DiscoveredFsAgent | undefined> {\n const configPath = await firstExisting(dir, CONFIG_BASENAMES);\n const instructionsPath = (await exists(join(dir, INSTRUCTIONS_BASENAME)))\n ? slash(join(dir, INSTRUCTIONS_BASENAME))\n : undefined;\n\n // Not an agent directory unless it has a config or instructions file.\n if (!configPath && !instructionsPath) {\n return undefined;\n }\n\n const workspacePath = await firstExisting(dir, WORKSPACE_BASENAMES);\n const memoryPath = await firstExisting(dir, MEMORY_BASENAMES);\n const workspaceSeedDir = await directoryExists(join(dir, 'workspace'));\n const tools = await discoverTools(join(dir, 'tools'));\n const processors = await discoverProcessors(join(dir, 'processors'));\n const scorers = await discoverModuleDir(join(dir, 'scorers'));\n const skills = await discoverSkills(join(dir, 'skills'));\n const subagents = await discoverSubagents(dir, depth, onWarn);\n\n return {\n name,\n dir: slash(dir),\n configPath,\n instructionsPath,\n workspacePath,\n memoryPath,\n workspaceSeedDir,\n tools,\n inputProcessors: processors.input,\n outputProcessors: processors.output,\n scorers,\n skills,\n subagents,\n };\n}\n\n/**\n * Discover declared subagents under `<dir>/subagents/*`. `parentDepth` is the\n * parent agent's nesting level (`0` for top-level agents). Discovery recurses\n * until `MAX_FS_SUBAGENT_DEPTH` levels of subagents; a `subagents/` directory\n * that would exceed the cap is skipped with a warning.\n */\nasync function discoverSubagents(\n parentDir: string,\n parentDepth: number,\n onWarn?: (message: string) => void,\n): Promise<DiscoveredFsAgent[]> {\n const subagentsDir = join(parentDir, 'subagents');\n if (!(await exists(subagentsDir))) {\n return [];\n }\n\n if (parentDepth >= MAX_FS_SUBAGENT_DEPTH) {\n onWarn?.(\n `Ignoring subagents in \"${slash(subagentsDir)}\": subagents may only nest ${MAX_FS_SUBAGENT_DEPTH} levels below a top-level agent.`,\n );\n return [];\n }\n\n let entries: string[];\n try {\n entries = await readdir(subagentsDir);\n } catch {\n return [];\n }\n\n const subagents: DiscoveredFsAgent[] = [];\n for (const name of entries.sort()) {\n const dir = join(subagentsDir, name);\n if (!(await realDirectory(dir))) {\n continue;\n }\n const child = await discoverAgentDir(dir, name, parentDepth + 1, onWarn);\n if (child) {\n subagents.push(child);\n }\n }\n\n return subagents;\n}\n\n/**\n * Scan `<mastraDir>/agents/*` for file-system routed agents. A directory is\n * treated as an agent only when it contains a `config.(ts|js)` or an\n * `instructions.md`; other directories are ignored. Each agent may declare\n * `subagents/` up to `MAX_FS_SUBAGENT_DEPTH` levels deep. Returns descriptors\n * with absolute, slash-normalized paths ready for codegen. Performs no module\n * evaluation — only filesystem inspection.\n */\nexport async function discoverFsAgents(\n mastraDir: string,\n onWarn?: (message: string) => void,\n): Promise<DiscoveredFsAgent[]> {\n const agentsDir = join(mastraDir, 'agents');\n if (!(await exists(agentsDir))) {\n return [];\n }\n\n let entries: string[];\n try {\n entries = await readdir(agentsDir);\n } catch {\n return [];\n }\n\n const discovered: DiscoveredFsAgent[] = [];\n for (const name of entries.sort()) {\n const dir = join(agentsDir, name);\n if (!(await realDirectory(dir))) {\n continue;\n }\n const agent = await discoverAgentDir(dir, name, 0, onWarn);\n if (agent) {\n discovered.push(agent);\n }\n }\n\n return discovered;\n}\n\n/**\n * A file-system routed workflow file discovered under `<mastraDir>/workflows/`.\n * All paths are absolute and slash-normalized so they can be embedded into\n * generated module source on any platform.\n */\nexport interface DiscoveredFsWorkflow {\n /** Workflow key derived from the filename (without extension). */\n key: string;\n /** Absolute, slash-normalized path to the workflow module. */\n path: string;\n}\n\n/**\n * Scan `<mastraDir>/workflows/` for file-system routed workflow modules. Only\n * files whose source contains an `export default` are treated as fs-routed\n * workflows — this convention distinguishes them from workflow files that are\n * manually imported and registered programmatically. Returns descriptors with\n * absolute, slash-normalized paths ready for codegen. Performs no module\n * evaluation — only filesystem and source-text inspection.\n */\nexport async function discoverFsWorkflows(mastraDir: string): Promise<DiscoveredFsWorkflow[]> {\n const workflowsDir = join(mastraDir, 'workflows');\n if (!(await exists(workflowsDir))) {\n return [];\n }\n\n let entries: string[];\n try {\n entries = await readdir(workflowsDir);\n } catch {\n return [];\n }\n\n const discovered: DiscoveredFsWorkflow[] = [];\n for (const basename of entries.sort()) {\n if (isTestFile(basename)) {\n continue;\n }\n if (!TOOL_EXTENSIONS.some(ext => basename.endsWith(ext))) {\n continue;\n }\n const path = join(workflowsDir, basename);\n const stats = await lstat(path);\n if (stats.isSymbolicLink() || stats.isDirectory()) {\n continue;\n }\n // Convention: only files with `export default` are fs-routed workflows.\n // Files using named exports are assumed to be manually imported.\n const source = await readFile(path, 'utf-8');\n if (!/\\bexport\\s+default\\b/.test(source)) {\n continue;\n }\n discovered.push({ key: toolKey(basename), path: slash(path) });\n }\n\n return discovered;\n}\n\n/**\n * A discovered singleton config file under `<mastraDir>/`. All paths are\n * absolute and slash-normalized so they can be embedded into generated module\n * source on any platform.\n */\nexport interface DiscoveredFsSingleton {\n /** Absolute, slash-normalized path to the singleton module. */\n path: string;\n}\n\nconst SINGLETON_EXTENSIONS = ['.ts', '.js', '.mts', '.mjs'];\n\n/** Safe singleton identifier: no path separators, `..`, or other traversal. */\nconst SINGLETON_NAME_PATTERN = /^[a-zA-Z0-9_-]+$/;\n\n/**\n * Check for a singleton config file (e.g. `storage.ts`, `storage.js`) directly\n * under `<mastraDir>`. Returns the first matching file path or `undefined`.\n * Symlinks are rejected for security.\n *\n * Convention: only files with `export default` are fs-routed singletons. Files\n * using named exports are assumed to be manually imported into the user's\n * `index.ts`, so they are ignored to remain backward-compatible with existing\n * project structures.\n *\n * `name` must be a bare identifier — path separators and traversal sequences are\n * rejected so the lookup can never escape `<mastraDir>`.\n */\nexport async function discoverFsSingleton(mastraDir: string, name: string): Promise<DiscoveredFsSingleton | undefined> {\n if (!SINGLETON_NAME_PATTERN.test(name)) {\n throw new Error(`Invalid fs-singleton name ${JSON.stringify(name)}: expected a bare identifier.`);\n }\n\n for (const ext of SINGLETON_EXTENSIONS) {\n const candidate = join(mastraDir, `${name}${ext}`);\n try {\n const stats = await lstat(candidate);\n if (!stats.isFile() || stats.isSymbolicLink()) {\n continue;\n }\n const source = await readFile(candidate, 'utf-8');\n // Only files with a default export are fs-routed. A named-export file with\n // this name is user-managed, so skip it and keep scanning other extensions.\n if (!/\\bexport\\s+default\\b/.test(source)) {\n continue;\n }\n return { path: slash(candidate) };\n } catch {\n // not present\n }\n }\n return undefined;\n}\n","import { readFile } from 'node:fs/promises';\nimport type { DiscoveredFsAgent, DiscoveredFsSingleton, DiscoveredFsWorkflow } from './discover';\n\nfunction sanitizeIdentifier(name: string, prefix: string, index: string): string {\n const cleaned = name.replace(/[^a-zA-Z0-9_$]/g, '_');\n return `${prefix}_${index}_${cleaned}`;\n}\n\n/**\n * Emit the imports for a single discovered agent into `lines` and return the\n * source of its `assembleAgentFromFsEntry` entry object (the `{ name, config,\n * ... }` argument). `idPath` is a dot-free, unique path index (e.g. `0` for the\n * first top-level agent, `0_1` for its second subagent) used to keep generated\n * identifiers unique across the parent/child tree. `workspaceName` is the\n * slash-joined workspace key (`<parent>/<child>` for subagents) so seed files\n * don't collide. Discovered subagents are emitted recursively as a nested\n * `subagents: [...]` field (discovery already enforces the depth cap).\n */\nasync function emitAgentEntry(\n agent: DiscoveredFsAgent,\n idPath: string,\n workspaceName: string,\n lines: string[],\n): Promise<string> {\n const configIdent = sanitizeIdentifier(agent.name, 'config', idPath);\n const toolIdents: { key: string; ident: string }[] = [];\n\n if (agent.configPath) {\n lines.push(`import ${configIdent} from ${JSON.stringify(agent.configPath)};`);\n }\n\n let workspaceIdent: string | undefined;\n if (agent.workspacePath) {\n workspaceIdent = sanitizeIdentifier(`${agent.name}_workspace`, 'workspace', idPath);\n lines.push(`import ${workspaceIdent} from ${JSON.stringify(agent.workspacePath)};`);\n }\n\n let memoryIdent: string | undefined;\n if (agent.memoryPath) {\n memoryIdent = sanitizeIdentifier(`${agent.name}_memory`, 'memory', idPath);\n lines.push(`import ${memoryIdent} from ${JSON.stringify(agent.memoryPath)};`);\n }\n\n for (let t = 0; t < agent.tools.length; t++) {\n const tool = agent.tools[t]!;\n const ident = sanitizeIdentifier(`${agent.name}_${tool.key}`, 'tool', `${idPath}_${t}`);\n lines.push(`import ${ident} from ${JSON.stringify(tool.path)};`);\n toolIdents.push({ key: tool.key, ident });\n }\n\n const inputProcessorIdents: string[] = [];\n for (let p = 0; p < agent.inputProcessors.length; p++) {\n const proc = agent.inputProcessors[p]!;\n const ident = sanitizeIdentifier(`${agent.name}_inputProc_${proc.key}`, 'proc', `${idPath}_ip${p}`);\n lines.push(`import ${ident} from ${JSON.stringify(proc.path)};`);\n inputProcessorIdents.push(ident);\n }\n\n const outputProcessorIdents: string[] = [];\n for (let p = 0; p < agent.outputProcessors.length; p++) {\n const proc = agent.outputProcessors[p]!;\n const ident = sanitizeIdentifier(`${agent.name}_outputProc_${proc.key}`, 'proc', `${idPath}_op${p}`);\n lines.push(`import ${ident} from ${JSON.stringify(proc.path)};`);\n outputProcessorIdents.push(ident);\n }\n\n const scorerIdents: { key: string; ident: string }[] = [];\n for (let s = 0; s < agent.scorers.length; s++) {\n const scorer = agent.scorers[s]!;\n const ident = sanitizeIdentifier(`${agent.name}_scorer_${scorer.key}`, 'scorer', `${idPath}_${s}`);\n lines.push(`import ${ident} from ${JSON.stringify(scorer.path)};`);\n scorerIdents.push({ key: scorer.key, ident });\n }\n\n // Skills: `createSkill(...)` modules are imported and used directly;\n // packaged `SKILL.md` skills are inlined via `createSkill({...})`.\n const skillExprs: string[] = [];\n const agentSkills = agent.skills ?? [];\n for (let s = 0; s < agentSkills.length; s++) {\n const skill = agentSkills[s]!;\n if (skill.kind === 'module') {\n const ident = sanitizeIdentifier(`${agent.name}_skill`, 'skill', `${idPath}_${s}`);\n lines.push(`import ${ident} from ${JSON.stringify(skill.path)};`);\n skillExprs.push(ident);\n } else {\n const referenceFields = Object.entries(skill.references).map(\n ([key, value]) => `${JSON.stringify(key)}: ${JSON.stringify(value)}`,\n );\n const skillFields = [\n `name: ${JSON.stringify(skill.name)}`,\n `description: ${JSON.stringify(skill.description)}`,\n `instructions: ${JSON.stringify(skill.instructions)}`,\n ];\n if (referenceFields.length > 0) {\n skillFields.push(`references: { ${referenceFields.join(', ')} }`);\n }\n skillExprs.push(`__createSkill({ ${skillFields.join(', ')} })`);\n }\n }\n\n let instructionsMd: string | undefined;\n if (agent.instructionsPath) {\n instructionsMd = await readFile(agent.instructionsPath, 'utf-8');\n }\n\n // Declared subagents. Each is itself an `assembleAgentFromFsEntry` entry\n // object, recursively carrying its own `subagents`.\n const subagentExprs: string[] = [];\n for (let c = 0; c < agent.subagents.length; c++) {\n const child = agent.subagents[c]!;\n const childExpr = await emitAgentEntry(child, `${idPath}_${c}`, `${workspaceName}/${child.name}`, lines);\n subagentExprs.push(childExpr);\n }\n\n const entryFields: string[] = [`name: ${JSON.stringify(agent.name)}`];\n if (agent.configPath) {\n entryFields.push(`config: ${configIdent}`);\n }\n if (instructionsMd !== undefined) {\n entryFields.push(`instructionsMd: ${JSON.stringify(instructionsMd)}`);\n }\n if (toolIdents.length > 0) {\n const toolEntries = toolIdents.map(({ key, ident }) => `{ key: ${JSON.stringify(key)}, tool: ${ident} }`);\n entryFields.push(`tools: [${toolEntries.join(', ')}]`);\n }\n if (skillExprs.length > 0) {\n entryFields.push(`skills: [${skillExprs.join(', ')}]`);\n }\n if (inputProcessorIdents.length > 0) {\n entryFields.push(`inputProcessors: [${inputProcessorIdents.join(', ')}]`);\n }\n if (outputProcessorIdents.length > 0) {\n entryFields.push(`outputProcessors: [${outputProcessorIdents.join(', ')}]`);\n }\n if (scorerIdents.length > 0) {\n const scorerEntries = scorerIdents.map(({ key, ident }) => `{ key: ${JSON.stringify(key)}, scorer: ${ident} }`);\n entryFields.push(`scorers: [${scorerEntries.join(', ')}]`);\n }\n if (subagentExprs.length > 0) {\n entryFields.push(`subagents: [${subagentExprs.join(', ')}]`);\n }\n if (workspaceIdent) {\n entryFields.push(`workspace: ${workspaceIdent}`);\n }\n if (memoryIdent) {\n entryFields.push(`memory: ${memoryIdent}`);\n }\n // Default-on parity: every FS agent gets a default workspace (file + shell\n // tools) rooted at a per-agent `workspace/` dir next to the bundle, unless\n // config.ts or workspace.ts supplies one. Assembly applies the explicit >\n // convention > default precedence. Subagents nest under `<parent>/<child>` so\n // their seed directories never collide with the parent's.\n entryFields.push(`defaultWorkspaceBasePath: __workspaceBasePath(${JSON.stringify(workspaceName)})`);\n\n return `{ ${entryFields.join(', ')} }`;\n}\n\n/**\n * Generate the source of a wrapper module that:\n * 1. imports the user's real Mastra entry,\n * 2. imports each discovered `config.ts`, `tools/*.ts`, `skills/*.ts`\n * (`createSkill(...)` modules), `workspace.ts`, and `memory.ts`, inlining\n * packaged `SKILL.md` skills,\n * 3. assembles `Agent` instances via `assembleAgentFromFsEntry`, wiring any\n * declared `subagents/` into the parent (nested up to `MAX_FS_SUBAGENT_DEPTH`),\n * 4. registers them onto the user's `mastra` instance (code-registered agents\n * win on name collisions), and\n * 5. re-exports everything from the user's entry so this module is a drop-in\n * replacement for the original `#mastra` target.\n *\n * `instructions.md` is read into the generated wrapper. In dev, the CLI watcher\n * regenerates that wrapper when the markdown file changes.\n *\n * @param userEntry slash-normalized absolute path to the user's mastra entry.\n * @param agents discovered fs-routed agents (absolute, slash-normalized paths).\n */\nexport async function generateFsAgentsModule(\n userEntry: string | undefined,\n agents: DiscoveredFsAgent[],\n options?: {\n workflows?: DiscoveredFsWorkflow[];\n storage?: DiscoveredFsSingleton;\n observability?: DiscoveredFsSingleton;\n logger?: DiscoveredFsSingleton;\n server?: DiscoveredFsSingleton;\n studio?: DiscoveredFsSingleton;\n },\n): Promise<string> {\n const workflows = options?.workflows ?? [];\n const storage = options?.storage;\n const observability = options?.observability;\n const logger = options?.logger;\n const server = options?.server;\n const studio = options?.studio;\n const standalone = userEntry === undefined;\n const lines: string[] = [];\n\n const hasInlineSkills = (function check(list: DiscoveredFsAgent[]): boolean {\n return list.some(a => (a.skills ?? []).some(s => s.kind === 'packaged') || check(a.subagents ?? []));\n })(agents);\n\n lines.push(`import { assembleAgentFromFsEntry } from '@mastra/core/agent';`);\n if (hasInlineSkills) {\n lines.push(`import { createSkill as __createSkill } from '@mastra/core/skills';`);\n }\n if (standalone) {\n lines.push(`import { Mastra } from '@mastra/core';`);\n }\n lines.push(`import { fileURLToPath as __fileURLToPath } from 'node:url';`);\n lines.push(`import { dirname as __dirname, join as __join } from 'node:path';`);\n if (userEntry) {\n lines.push(`import * as __userEntry from ${JSON.stringify(userEntry)};`);\n lines.push(`export * from ${JSON.stringify(userEntry)};`);\n }\n lines.push(``);\n // Resolve workspace base paths relative to this bundled module so they point\n // at `<bundle>/workspace/<name>` wherever the bundle is deployed. Seed files\n // authored under `agents/<name>/workspace/**` are mirrored there at build time.\n // `name` may be a slash-joined path (`<parent>/<child>`) for subagents.\n lines.push(`const __bundleDir = __dirname(__fileURLToPath(import.meta.url));`);\n lines.push(`const __workspaceBasePath = name => __join(__bundleDir, 'workspace', ...name.split('/'));`);\n lines.push(``);\n\n // Singleton imports (storage.ts, observability.ts, etc.).\n const singletonImports: string[] = [];\n if (storage) {\n singletonImports.push(`import __fsStorage from ${JSON.stringify(storage.path)};`);\n }\n if (observability) {\n singletonImports.push(`import __fsObservability from ${JSON.stringify(observability.path)};`);\n }\n if (logger) {\n singletonImports.push(`import __fsLogger from ${JSON.stringify(logger.path)};`);\n }\n if (server) {\n singletonImports.push(`import __fsServer from ${JSON.stringify(server.path)};`);\n }\n if (studio) {\n singletonImports.push(`import __fsStudio from ${JSON.stringify(studio.path)};`);\n }\n if (singletonImports.length > 0) {\n lines.push(...singletonImports);\n lines.push(``);\n }\n\n const wfCodegen = workflows.length > 0 ? generateFsWorkflowsCodegen(workflows) : undefined;\n\n // Workflow imports (placed alongside other imports, before agent entries).\n if (wfCodegen) {\n for (const line of wfCodegen.importLines) {\n lines.push(line);\n }\n lines.push(``);\n }\n\n const entryExprs: string[] = [];\n for (let i = 0; i < agents.length; i++) {\n const agent = agents[i]!;\n const expr = await emitAgentEntry(agent, `${i}`, agent.name, lines);\n entryExprs.push(expr);\n }\n\n // In standalone mode (no user entry), auto-construct a Mastra instance.\n // In wrapper mode, reference the user's exported instance.\n if (standalone) {\n lines.push(``);\n lines.push(`const __mastra = new Mastra({});`);\n } else {\n lines.push(``);\n lines.push(`const __mastra = __userEntry.mastra;`);\n }\n\n lines.push(``);\n lines.push(`const __fsAgentEntries = [`);\n for (const expr of entryExprs) {\n lines.push(` ${expr},`);\n }\n lines.push(`];`);\n lines.push(``);\n lines.push(`const __fsAgents = Object.create(null);`);\n lines.push(`for (const __entry of __fsAgentEntries) {`);\n lines.push(` __fsAgents[__entry.name] = assembleAgentFromFsEntry(__entry, {`);\n lines.push(` onWarn: msg => __mastra?.getLogger?.()?.warn?.(msg) ?? console.warn(msg),`);\n lines.push(` });`);\n lines.push(`}`);\n lines.push(``);\n\n // Singleton registration (storage, observability, etc.) MUST run before\n // agents/workflows. `addMemory`/`addAgent` bind the current store to\n // storage-dependent primitives at registration time, so the fs singletons\n // have to be in place first — otherwise fs-discovered agents/workflows would\n // stay bound to the default InMemoryStore.\n\n // Logger is registered before everything else so storage/observability and\n // agents receive the fs-provided logger when they are wired up below.\n if (logger) {\n lines.push(`if (__mastra && typeof __mastra.__registerFsLogger === 'function') {`);\n lines.push(` __mastra.__registerFsLogger(__fsLogger);`);\n lines.push(`}`);\n lines.push(``);\n }\n\n if (storage) {\n lines.push(`if (__mastra && typeof __mastra.__registerFsStorage === 'function') {`);\n lines.push(` __mastra.__registerFsStorage(__fsStorage);`);\n lines.push(`}`);\n lines.push(``);\n }\n\n if (observability) {\n lines.push(`if (__mastra && typeof __mastra.__registerFsObservability === 'function') {`);\n lines.push(` __mastra.__registerFsObservability(__fsObservability);`);\n lines.push(`}`);\n lines.push(``);\n }\n\n if (server) {\n lines.push(`if (__mastra && typeof __mastra.__registerFsServer === 'function') {`);\n lines.push(` __mastra.__registerFsServer(__fsServer);`);\n lines.push(`}`);\n lines.push(``);\n }\n\n if (studio) {\n lines.push(`if (__mastra && typeof __mastra.__registerFsStudio === 'function') {`);\n lines.push(` __mastra.__registerFsStudio(__fsStudio);`);\n lines.push(`}`);\n lines.push(``);\n }\n\n lines.push(`if (__mastra && typeof __mastra.__registerFsAgents === 'function') {`);\n lines.push(` __mastra.__registerFsAgents(__fsAgents);`);\n lines.push(`}`);\n\n // Workflow registration (after agents, before final export).\n if (wfCodegen) {\n lines.push(``);\n\n for (const line of wfCodegen.registrationLines) {\n lines.push(line);\n }\n }\n\n lines.push(``);\n lines.push(`export const mastra = __mastra;`);\n\n return lines.join('\\n');\n}\n\n/**\n * Generate the workflow-registration lines to splice into the generated wrapper\n * module. Emits import statements for each discovered workflow module and a\n * registration block that calls `__registerFsWorkflows` on the user's mastra.\n *\n * Returns `{ importLines, registrationLines }` so the caller can place them at\n * the correct positions in the wrapper source.\n */\nexport function generateFsWorkflowsCodegen(workflows: DiscoveredFsWorkflow[]): {\n importLines: string[];\n registrationLines: string[];\n} {\n const importLines: string[] = [];\n const registrationLines: string[] = [];\n\n for (let i = 0; i < workflows.length; i++) {\n const wf = workflows[i]!;\n const ident = sanitizeIdentifier(wf.key, 'workflow', `${i}`);\n importLines.push(`import ${ident} from ${JSON.stringify(wf.path)};`);\n }\n\n registrationLines.push(`const __fsWorkflows = Object.create(null);`);\n for (let i = 0; i < workflows.length; i++) {\n const wf = workflows[i]!;\n const ident = sanitizeIdentifier(wf.key, 'workflow', `${i}`);\n registrationLines.push(`__fsWorkflows[${JSON.stringify(wf.key)}] = ${ident};`);\n }\n registrationLines.push(``);\n registrationLines.push(`if (__mastra && typeof __mastra.__registerFsWorkflows === 'function') {`);\n registrationLines.push(` __mastra.__registerFsWorkflows(__fsWorkflows);`);\n registrationLines.push(`}`);\n\n return { importLines, registrationLines };\n}\n","import { mkdir, writeFile } from 'node:fs/promises';\nimport { dirname, join, posix } from 'node:path';\nimport { slash } from '../utils';\nimport { generateFsAgentsModule } from './codegen';\nimport { discoverFsAgents, discoverFsSingleton, discoverFsWorkflows } from './discover';\n\nexport interface PrepareFsAgentsEntryResult {\n /**\n * The entry file that should be fed to the bundler/analyzer. When fs-routed\n * primitives (agents, workflows, storage, observability, logger, server,\n * studio) are\n * found this is a generated wrapper module that registers them onto the\n * user's mastra instance; otherwise it is the original entry unchanged.\n * When auto-constructing (no user entry), this is always the generated module.\n */\n entryFile: string;\n /** Whether a standalone Mastra instance was auto-constructed (no index.ts). */\n standalone: boolean;\n /**\n * Glob tool paths for tools defined under `agents/*\\/tools` so they are\n * bundled alongside the top-level `tools/` directory.\n */\n toolPaths: string[];\n /** Number of fs-routed agents discovered. */\n agentCount: number;\n /** Number of fs-routed workflows discovered. */\n workflowCount: number;\n /** Whether a `storage.ts` singleton was discovered. */\n hasStorage: boolean;\n /** Whether an `observability.ts` singleton was discovered. */\n hasObservability: boolean;\n /** Whether a `logger.ts` singleton was discovered. */\n hasLogger: boolean;\n /** Whether a `server.ts` singleton was discovered. */\n hasServer: boolean;\n /** Whether a `studio.ts` singleton was discovered. */\n hasStudio: boolean;\n /**\n * Generated wrapper source to write to {@link entryFile}, or `undefined` when\n * there are no fs-routed primitives. The write is deferred so callers can run\n * it *after* `bundler.prepare()` empties the output directory — otherwise the\n * wrapper is wiped before the bundler reads it.\n */\n moduleSource?: string;\n}\n\n/**\n * Discover fs-routed agents under `<mastraDir>/agents/*`, workflows under\n * `<mastraDir>/workflows/`, and singleton config files (e.g. `storage.ts`,\n * `observability.ts`, `logger.ts`, `server.ts`, `studio.ts`).\n * When any are found, generate a wrapper entry module that registers them onto\n * the user's mastra instance. Returns the entry the bundler should use plus\n * extra tool glob paths so `agents/*\\/tools` are bundled.\n *\n * This does NOT write the wrapper to disk; call {@link writeFsAgentsEntry} with\n * the result after `bundler.prepare()` so the generated file is not wiped when\n * the output directory is emptied.\n *\n * When `entryFile` is `undefined` (no `index.ts`/`index.js`) and fs-routed\n * primitives are found, a standalone Mastra instance is auto-constructed from\n * them — no user code required.\n *\n * When no fs-routed primitives are present the original entry is returned\n * unchanged, so existing code-only projects are completely unaffected.\n */\nexport async function prepareFsAgentsEntry(\n mastraDir: string,\n entryFile: string | undefined,\n outputDirectory: string,\n): Promise<PrepareFsAgentsEntryResult> {\n const [agents, workflows, storage, observability, logger, server, studio] = await Promise.all([\n discoverFsAgents(mastraDir),\n discoverFsWorkflows(mastraDir),\n discoverFsSingleton(mastraDir, 'storage'),\n discoverFsSingleton(mastraDir, 'observability'),\n discoverFsSingleton(mastraDir, 'logger'),\n discoverFsSingleton(mastraDir, 'server'),\n discoverFsSingleton(mastraDir, 'studio'),\n ]);\n\n const standalone = entryFile === undefined;\n const hasFsPrimitives =\n agents.length > 0 || workflows.length > 0 || !!storage || !!observability || !!logger || !!server || !!studio;\n\n if (!hasFsPrimitives && entryFile !== undefined) {\n return {\n entryFile,\n standalone: false,\n toolPaths: [],\n agentCount: 0,\n workflowCount: 0,\n hasStorage: false,\n hasObservability: false,\n hasLogger: false,\n hasServer: false,\n hasStudio: false,\n };\n }\n\n if (!hasFsPrimitives && standalone) {\n throw new Error(\n 'No index.ts and no file-based primitives found. ' +\n 'Create src/mastra/index.ts with a Mastra instance, or add file-based agents/workflows/storage.',\n );\n }\n\n const moduleSource = await generateFsAgentsModule(entryFile ? slash(entryFile) : undefined, agents, {\n workflows,\n storage,\n observability,\n logger,\n server,\n studio,\n });\n const generatedEntry = join(outputDirectory, '.mastra-fs-agents-entry.mjs');\n\n const normalizedMastraDir = slash(mastraDir);\n const toolPaths =\n agents.length > 0\n ? [\n posix.join(normalizedMastraDir, 'agents/*/tools/**/*.{js,ts}'),\n `!${posix.join(normalizedMastraDir, 'agents/*/tools/**/*.{test,spec}.{js,ts}')}`,\n `!${posix.join(normalizedMastraDir, 'agents/*/tools/**/__tests__/**')}`,\n ]\n : [];\n\n return {\n entryFile: generatedEntry,\n standalone,\n toolPaths,\n agentCount: agents.length,\n workflowCount: workflows.length,\n hasStorage: !!storage,\n hasObservability: !!observability,\n hasLogger: !!logger,\n hasServer: !!server,\n hasStudio: !!studio,\n moduleSource,\n };\n}\n\n/**\n * Write the generated fs-agents wrapper produced by {@link prepareFsAgentsEntry}\n * to its `entryFile`. No-op when there are no fs-routed agents. Call this AFTER\n * `bundler.prepare()` (which empties the output directory) so the wrapper\n * survives for the bundler/watcher to read.\n */\nexport async function writeFsAgentsEntry(result: PrepareFsAgentsEntryResult): Promise<void> {\n if (!result.moduleSource) {\n return;\n }\n\n await mkdir(dirname(result.entryFile), { recursive: true });\n await writeFile(result.entryFile, result.moduleSource, 'utf-8');\n}\n","import { cp, lstat, mkdir } from 'node:fs/promises';\nimport { join } from 'node:path';\nimport { discoverFsAgents } from './discover';\nimport type { DiscoveredFsAgent } from './discover';\n\n/**\n * Skip symlinks when copying workspace seeds. A symlink under\n * `agents/<name>/workspace/` could point outside the workspace and be preserved\n * in the bundle, letting the agent read arbitrary files at runtime. We copy only\n * regular files and directories.\n */\nasync function rejectSymlinks(source: string): Promise<boolean> {\n const stats = await lstat(source);\n return !stats.isSymbolicLink();\n}\n\nasync function mirrorAgentSeeds(\n agent: DiscoveredFsAgent,\n workspaceName: string,\n bundleDir: string,\n mirrored: string[],\n): Promise<void> {\n if (agent.workspaceSeedDir) {\n const destination = join(bundleDir, 'workspace', ...workspaceName.split('/'));\n await mkdir(destination, { recursive: true });\n await cp(agent.workspaceSeedDir, destination, { recursive: true, filter: rejectSymlinks });\n mirrored.push(workspaceName);\n }\n\n // Subagents nest under `<parent>/<child>`, matching the codegen workspace key.\n for (const child of agent.subagents ?? []) {\n await mirrorAgentSeeds(child, `${workspaceName}/${child.name}`, bundleDir, mirrored);\n }\n}\n\n/**\n * Mirror authored `agents/<name>/workspace/**` seed files into the bundled\n * output so each fs-routed agent starts with them on disk (Eve parity). Files\n * are copied to `<bundleDir>/workspace/<name>`, which is exactly where the\n * generated entry roots each agent's default workspace at runtime (resolved\n * relative to the bundled module via `import.meta.url`). Declared subagents\n * mirror to the nested `<bundleDir>/workspace/<parent>/<child>` path.\n *\n * Must run AFTER the bundle step, since bundling recreates the output dir.\n *\n * @param mastraDir The user's `src/mastra` directory (source of seeds).\n * @param bundleDir The final bundle directory (e.g. `<outputDirectory>/output`).\n * @returns the workspace names whose seeds were mirrored (`<parent>/<child>` for subagents).\n */\nexport async function mirrorFsAgentWorkspaces(mastraDir: string, bundleDir: string): Promise<string[]> {\n const agents = await discoverFsAgents(mastraDir);\n const mirrored: string[] = [];\n\n for (const agent of agents) {\n await mirrorAgentSeeds(agent, agent.name, bundleDir, mirrored);\n }\n\n return mirrored;\n}\n"]}
|
|
@@ -14,7 +14,6 @@ import fs, { statSync } from 'fs';
|
|
|
14
14
|
import { readJSON } from 'fs-extra/esm';
|
|
15
15
|
import { getPackageInfo } from 'local-pkg';
|
|
16
16
|
import * as babel from '@babel/core';
|
|
17
|
-
import babel__default from '@babel/core';
|
|
18
17
|
import stripJsonComments from 'strip-json-comments';
|
|
19
18
|
import { createHandler } from 'typescript-paths';
|
|
20
19
|
|
|
@@ -338,7 +337,7 @@ function protocolExternalResolver({ exclude = ["node:"] } = {}) {
|
|
|
338
337
|
};
|
|
339
338
|
}
|
|
340
339
|
function removeDeployer() {
|
|
341
|
-
const t =
|
|
340
|
+
const t = babel.types;
|
|
342
341
|
function removeDeployerFromObject(objectExpr, scope) {
|
|
343
342
|
const deployerProp = objectExpr.properties.find(
|
|
344
343
|
(prop) => t.isObjectProperty(prop) && t.isIdentifier(prop.key) && prop.key.name === "deployer"
|
|
@@ -408,27 +407,16 @@ function removeDeployer2(mastraEntry, options) {
|
|
|
408
407
|
if (id !== mastraEntry) {
|
|
409
408
|
return;
|
|
410
409
|
}
|
|
411
|
-
return
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
(err, result) => {
|
|
422
|
-
if (err) {
|
|
423
|
-
return reject(err);
|
|
424
|
-
}
|
|
425
|
-
resolve({
|
|
426
|
-
code: result.code,
|
|
427
|
-
map: result.map
|
|
428
|
-
});
|
|
429
|
-
}
|
|
430
|
-
);
|
|
431
|
-
});
|
|
410
|
+
return babel.transformAsync(code, {
|
|
411
|
+
babelrc: false,
|
|
412
|
+
configFile: false,
|
|
413
|
+
filename: id,
|
|
414
|
+
plugins: [removeDeployer],
|
|
415
|
+
sourceMaps: options?.sourcemap
|
|
416
|
+
}).then((result) => ({
|
|
417
|
+
code: result.code,
|
|
418
|
+
map: result.map
|
|
419
|
+
}));
|
|
432
420
|
}
|
|
433
421
|
};
|
|
434
422
|
}
|
|
@@ -748,5 +736,5 @@ async function createBundler(inputOptions, outputOptions) {
|
|
|
748
736
|
}
|
|
749
737
|
|
|
750
738
|
export { createBundler, esbuild, esmShim, getInputOptions, getPackageMetadata, getPackageRootPath, mastraInternalAliasPlugin, mastraToolsAliasPlugin, nodeModulesExtensionResolver, protocolExternalResolver, removeDeployer2 as removeDeployer, subpathExternalsResolver, tsConfigPaths };
|
|
751
|
-
//# sourceMappingURL=chunk-
|
|
752
|
-
//# sourceMappingURL=chunk-
|
|
739
|
+
//# sourceMappingURL=chunk-HPYZGYQL.js.map
|
|
740
|
+
//# sourceMappingURL=chunk-HPYZGYQL.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/build/plugins/esbuild.ts","../src/build/plugins/esm-shim.ts","../src/build/plugins/local-storage-detector.ts","../src/build/package-info.ts","../src/build/plugins/node-modules-extension-resolver.ts","../src/build/plugins/protocol-external-resolver.ts","../src/build/babel/remove-deployer.ts","../src/build/plugins/remove-deployer.ts","../src/build/plugins/subpath-externals-resolver.ts","../src/build/plugins/tsconfig-paths.ts","../src/build/bundler.ts"],"names":["path","removeDeployer","babel2","tsConfigPath","resolved","fileURLToPath","nodeResolve","join","pathToFileURL"],"mappings":"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","file":"chunk-HPYZGYQL.js","sourcesContent":["import originalEsbuild from 'rollup-plugin-esbuild';\n\nexport function esbuild(options: Parameters<typeof originalEsbuild>[0] = {}) {\n return originalEsbuild({\n target: 'node20',\n platform: 'node',\n minify: false,\n ...options,\n });\n}\n","import originalEsmShim from '@rollup/plugin-esm-shim';\nimport type { Plugin } from 'rollup';\n\n// Regex to detect DECLARATIONS of __filename, __dirname\n// Using non-capturing group (?:) for slightly better performance\nconst FilenameDeclarationRegex = /(?:const|let|var)\\s+__filename/;\nconst DirnameDeclarationRegex = /(?:const|let|var)\\s+__dirname/;\n\n/**\n * Custom ESM shim plugin wrapper that respects user-declared __filename/__dirname variables.\n *\n * The original @rollup/plugin-esm-shim would inject shims even when users had already declared\n * their own __filename/__dirname, causing \"Identifier '__filename' has already been declared\" errors.\n *\n * This wrapper checks if the user has already declared these variables and skips the shim injection\n * if so. If either variable is declared, we skip the shim entirely since the original plugin injects\n * both together and we assume users who declare one will also handle the other if needed.\n */\nexport function esmShim(): Plugin {\n const original = originalEsmShim();\n\n return {\n name: 'esm-shim',\n renderChunk(code, chunk, opts, meta) {\n // Fast path: use includes() first to avoid regex if identifiers aren't present\n const hasFilename = code.includes('__filename');\n const hasDirname = code.includes('__dirname');\n\n // If user declared either __filename or __dirname, skip shim injection entirely\n // since the original plugin injects both together\n const userDeclaredFilename = hasFilename && FilenameDeclarationRegex.test(code);\n const userDeclaredDirname = hasDirname && DirnameDeclarationRegex.test(code);\n\n if (userDeclaredFilename || userDeclaredDirname) {\n return null;\n }\n\n // Otherwise, delegate to the original plugin\n if (typeof original.renderChunk === 'function') {\n return original.renderChunk.call(this, code, chunk, opts, meta);\n }\n\n return null;\n },\n };\n}\n\nexport default esmShim;\n","import type { Plugin } from 'rollup';\n\n/**\n * Connection-string-shaped patterns that resolve to the build host and will\n * never work inside the deploy container.\n */\nconst LOCAL_HOST_PATTERNS: Array<{ pattern: RegExp; hint: string }> = [\n {\n pattern: /\\bfile:\\.{1,2}\\/[^\\s'\"`]+\\.(?:db|sqlite)\\b/gi,\n hint: 'LibSQL/SQLite file path relative to the build host',\n },\n {\n pattern: /\\b(?:postgres(?:ql)?|mysql|mongodb|redis|libsql):\\/\\/[^/\\s'\"`]*localhost\\b/gi,\n hint: 'localhost in a connection string',\n },\n {\n pattern: /\\b(?:postgres(?:ql)?|mysql|mongodb|redis|libsql):\\/\\/[^/\\s'\"`]*127\\.0\\.0\\.1\\b/g,\n hint: '127.0.0.1 in a connection string',\n },\n];\n\nexport interface LocalStorageDetection {\n value: string;\n hint: string;\n module: string;\n /**\n * Name of the env var that guards this literal at runtime, when the\n * literal is the fallback arm of a `process.env.X || literal` (or `??`)\n * expression. The CLI preflight uses this to suppress or soften the\n * error when the guarding var is present in the deploy env.\n */\n guardedBy?: string;\n}\n\n/**\n * Unified preflight metadata emitted as `preflight-metadata.json`.\n * Superset of the legacy `preflight-local-paths.json` (which stays emitted\n * for one release so older CLIs keep working with newer deployers).\n */\nexport interface PreflightMetadata {\n version: 1;\n localPaths: LocalStorageDetection[];\n userEnvRefs: string[];\n}\n\n/**\n * Everything under `.mastra/.build/` is deployer-generated pre-bundled\n * dependency code (`@mastra__*.mjs` shims and their shared `chunk-*.mjs`\n * files), never user-authored. These preserve JSDoc examples from the\n * original library source (e.g. `LibSQLStore({ url: 'file:./data.db' })`)\n * which would otherwise trip the host-local detector, and their env var\n * reads are library refs that must not count as user references.\n */\nconst MASTRA_BUILD_DIR = /[\\\\/]\\.mastra[\\\\/]\\.build[\\\\/]/;\n\nconst PROCESS_ENV_DOT = /\\bprocess\\.env\\.([A-Z_][A-Z0-9_]*)\\b/g;\nconst PROCESS_ENV_BRACKET = /\\bprocess\\.env\\[['\"]([A-Z_][A-Z0-9_]*)['\"]\\]/g;\n\n/** Names of the metadata assets emitted into the output dir. */\n// TODO(preflight-metadata): stop emitting the legacy file in the next minor\n// after @mastra/deployer 1.50 — every CLI released alongside 1.50+ reads\n// preflight-metadata.json. Also remove the legacy fallback in the CLI's\n// deploy-preflight.ts at the same time.\nconst LEGACY_LOCAL_PATHS_FILE = 'preflight-local-paths.json';\nconst PREFLIGHT_METADATA_FILE = 'preflight-metadata.json';\n\ninterface ModuleMatch {\n value: string;\n hint: string;\n guardedBy?: string;\n}\n\nfunction collectEnvRefs(code: string): Set<string> {\n const refs = new Set<string>();\n for (const m of code.matchAll(PROCESS_ENV_DOT)) refs.add(m[1]!);\n for (const m of code.matchAll(PROCESS_ENV_BRACKET)) refs.add(m[1]!);\n return refs;\n}\n\n/* ------------------------------------------------------------------ */\n/* AST guard analysis */\n/* ------------------------------------------------------------------ */\n\ninterface AstNode {\n type: string;\n [key: string]: unknown;\n}\n\nfunction isAstNode(v: unknown): v is AstNode {\n return typeof v === 'object' && v !== null && typeof (v as AstNode).type === 'string';\n}\n\nfunction walkAst(node: AstNode, visit: (node: AstNode) => void): void {\n visit(node);\n for (const value of Object.values(node)) {\n if (Array.isArray(value)) {\n for (const item of value) {\n if (isAstNode(item)) walkAst(item, visit);\n }\n } else if (isAstNode(value)) {\n walkAst(value, visit);\n }\n }\n}\n\n/** Find the first `process.env.X` / `process.env['X']` read inside an expression. */\nfunction findFirstEnvRef(node: AstNode): string | undefined {\n let found: string | undefined;\n walkAst(node, n => {\n if (found !== undefined) return;\n if (n.type !== 'MemberExpression') return;\n const object = n.object as AstNode | undefined;\n if (\n !object ||\n object.type !== 'MemberExpression' ||\n (object.object as AstNode | undefined)?.type !== 'Identifier' ||\n ((object.object as AstNode).name as string) !== 'process' ||\n (object.property as AstNode | undefined)?.type !== 'Identifier' ||\n ((object.property as AstNode).name as string) !== 'env'\n ) {\n return;\n }\n const property = n.property as AstNode | undefined;\n if (property?.type === 'Identifier' && !n.computed) {\n found = property.name as string;\n } else if (property?.type === 'Literal' && typeof property.value === 'string') {\n found = property.value;\n }\n });\n return found;\n}\n\n/**\n * Parse a module and figure out, for each detected local-path value, whether\n * every string literal containing it is the fallback arm of a\n * `process.env.X || <literal>` / `??` expression. Returns a map from\n * detected value to guarding env var name. Values with any unguarded\n * occurrence (or inconsistent guards) are absent — the CLI then errors as\n * before, which is the safe default.\n */\nfunction findGuardedValues(ast: AstNode, values: Set<string>): Map<string, string> {\n const stringLiterals: AstNode[] = [];\n const guardedLiterals = new Map<AstNode, string>();\n\n walkAst(ast, node => {\n if (node.type === 'Literal' && typeof node.value === 'string') {\n stringLiterals.push(node);\n return;\n }\n if (node.type === 'LogicalExpression' && (node.operator === '||' || node.operator === '??')) {\n const right = node.right as AstNode | undefined;\n if (right?.type === 'Literal' && typeof right.value === 'string') {\n const envName = findFirstEnvRef(node.left as AstNode);\n if (envName) guardedLiterals.set(right, envName);\n }\n }\n });\n\n const result = new Map<string, string>();\n for (const value of values) {\n const containing = stringLiterals.filter(lit => (lit.value as string).includes(value));\n if (containing.length === 0) continue;\n const guards = containing.map(lit => guardedLiterals.get(lit));\n const first = guards[0];\n if (first !== undefined && guards.every(g => g === first)) {\n result.set(value, first);\n }\n }\n return result;\n}\n\n/**\n * Rollup plugin that detects host-local storage URLs (e.g. `file:./mastra.db`,\n * `postgres://localhost`) in **user source modules** during bundling, and\n * collects the env vars user code reads via `process.env.X`.\n *\n * Only modules outside `node_modules` (and the deployer's own\n * `.mastra/.build/` pre-bundled files) are inspected, so library code\n * (like Agent Builder prompt templates or JSDoc examples in `@mastra/core`)\n * is naturally excluded. When `rootDir` is given, modules outside it are\n * also excluded — symlinked dependencies (pnpm `link:`/`file:`) resolve to\n * real paths that never contain `node_modules`. Tree-shaken modules are\n * excluded via\n * `generateBundle` — only modules that actually contribute rendered code to\n * the output are reported.\n *\n * When a detected literal is the fallback arm of a `process.env.X || literal`\n * expression, `guardedBy: \"X\"` is recorded so the CLI preflight can apply\n * deploy-time env context instead of hard-erroring on a dead fallback.\n *\n * Two assets are emitted into the output directory for the CLI preflight:\n * - `preflight-metadata.json` — unified metadata (local paths + user env refs)\n * - `preflight-local-paths.json` — legacy shape, kept for one release so an\n * older globally-installed CLI paired with a newer project-local deployer\n * doesn't lose the LOCAL_STORAGE_PATH check.\n */\nexport function localStorageDetector(rootDir?: string): Plugin {\n const userModuleMatches = new Map<string, ModuleMatch[]>();\n const userModuleEnvRefs = new Map<string, Set<string>>();\n let normalizedRoot: string | undefined;\n if (rootDir) {\n let root = rootDir.replace(/\\\\/g, '/');\n while (root.endsWith('/')) root = root.slice(0, -1);\n normalizedRoot = root + '/';\n }\n\n return {\n name: 'mastra-local-storage-detector',\n\n transform(_code, id) {\n if (id.includes('node_modules')) return null;\n if (MASTRA_BUILD_DIR.test(id)) return null;\n // Modules outside the project/workspace root are dependencies resolved\n // through symlinks (pnpm `link:`, `file:`, monorepo dev setups) whose\n // real path escapes `node_modules` — library code, not user code.\n if (normalizedRoot && !id.replace(/\\\\/g, '/').startsWith(normalizedRoot)) return null;\n\n const refs = collectEnvRefs(_code);\n if (refs.size > 0) {\n userModuleEnvRefs.set(id, refs);\n }\n\n const matches: ModuleMatch[] = [];\n for (const { pattern, hint } of LOCAL_HOST_PATTERNS) {\n const re = new RegExp(pattern.source, pattern.flags.includes('g') ? pattern.flags : pattern.flags + 'g');\n for (const m of _code.matchAll(re)) {\n matches.push({ value: m[0], hint });\n }\n }\n\n if (matches.length > 0) {\n // Best-effort structural pass: a parse failure (or a non-Rollup test\n // context without `this.parse`) simply means no `guardedBy`, which\n // preserves the previous always-error behavior.\n try {\n const ast = this.parse(_code) as unknown as AstNode;\n const guarded = findGuardedValues(ast, new Set(matches.map(m => m.value)));\n for (const match of matches) {\n const guardedBy = guarded.get(match.value);\n if (guardedBy) match.guardedBy = guardedBy;\n }\n } catch {\n // ignore — fall back to unguarded detections\n }\n\n userModuleMatches.set(id, matches);\n }\n\n return null;\n },\n\n generateBundle(_, bundle) {\n const detections: LocalStorageDetection[] = [];\n const seen = new Set<string>();\n const userEnvRefs = new Set<string>();\n\n for (const chunk of Object.values(bundle)) {\n if (chunk.type !== 'chunk') continue;\n\n for (const [moduleId, moduleInfo] of Object.entries(chunk.modules)) {\n if (moduleInfo.renderedLength === 0) continue;\n\n for (const ref of userModuleEnvRefs.get(moduleId) ?? []) {\n userEnvRefs.add(ref);\n }\n\n const matches = userModuleMatches.get(moduleId);\n if (!matches) continue;\n\n for (const { value, hint, guardedBy } of matches) {\n const key = `${hint}::${value}`;\n if (seen.has(key)) continue;\n seen.add(key);\n\n detections.push({ value, hint, module: moduleId, ...(guardedBy ? { guardedBy } : {}) });\n }\n }\n }\n\n const metadata: PreflightMetadata = {\n version: 1,\n localPaths: detections,\n userEnvRefs: [...userEnvRefs].sort(),\n };\n\n this.emitFile({\n type: 'asset',\n fileName: PREFLIGHT_METADATA_FILE,\n source: JSON.stringify(metadata),\n });\n\n // Legacy asset — shape unchanged (no `guardedBy`) for older CLIs.\n this.emitFile({\n type: 'asset',\n fileName: LEGACY_LOCAL_PATHS_FILE,\n source: JSON.stringify(detections.map(({ value, hint, module }) => ({ value, hint, module }))),\n });\n },\n };\n}\n","/**\n * Note: This function depends on local-pkg and should only be used at build-time.\n * It is in a separate file to avoid including local-pkg in runtime code.\n */\n\nimport { statSync } from 'node:fs';\nimport { dirname } from 'node:path';\nimport { fileURLToPath, pathToFileURL } from 'node:url';\nimport { readJSON } from 'fs-extra/esm';\nimport { getPackageInfo } from 'local-pkg';\nimport { getPackageName } from './utils';\n\n/**\n * Normalize a resolution base path to a directory file URL.\n *\n * Callers often pass a module file path (e.g. a rollup module id like\n * `node_modules/@mastra/core/dist/chunk-XYZ.js`) as the parent path. mlly (used by local-pkg)\n * also treats each resolution base as a directory candidate (`<base>/_index.js`), which makes it\n * try to read `<file>/package.json`. That fails with ENOTDIR, which mlly does not tolerate\n * (only ENOENT) and local-pkg then logs the raw error to the console. Using the file's directory\n * as the base avoids this while resolving identically.\n */\nfunction toParentDirectoryUrl(parentPath: string): string {\n let fsPath = parentPath.startsWith('file://') ? fileURLToPath(parentPath) : parentPath;\n\n try {\n if (statSync(fsPath).isFile()) {\n fsPath = dirname(fsPath);\n }\n } catch {\n // non-existent paths are used as-is\n }\n\n return pathToFileURL(fsPath).href;\n}\n\n/**\n * Get package root path\n */\nexport async function getPackageRootPath(packageName: string, parentPath?: string): Promise<string | null> {\n let rootPath: string | null;\n\n try {\n let options: { paths?: string[] } | undefined = undefined;\n if (parentPath) {\n options = {\n paths: [toParentDirectoryUrl(parentPath)],\n };\n }\n\n const pkg = await getPackageInfo(packageName, options);\n rootPath = pkg?.rootPath ?? null;\n } catch {\n rootPath = null;\n }\n\n return rootPath;\n}\n\nasync function readPackageMetadata(\n rootPath: string,\n requestedPackageName: string | null,\n): Promise<{ rootPath: string; version?: string; packageSpec?: string }> {\n try {\n const pkgJson = await readJSON(`${rootPath}/package.json`);\n const version = pkgJson.version;\n const actualPackageName = pkgJson.name;\n const packageSpec =\n version && actualPackageName && requestedPackageName && requestedPackageName !== actualPackageName\n ? `npm:${actualPackageName}@${version}`\n : undefined;\n\n return { rootPath, version, packageSpec };\n } catch {\n return { rootPath };\n }\n}\n\nexport async function getPackageMetadata(\n packageName: string,\n parentPath?: string,\n): Promise<{ rootPath: string | null; version?: string; packageSpec?: string }> {\n const requestedPackageName = getPackageName(packageName);\n const packageNames = [...new Set([packageName, requestedPackageName].filter(Boolean) as string[])];\n let firstRootPath: string | null = null;\n\n for (const name of packageNames) {\n const rootPath = await getPackageRootPath(name, parentPath);\n firstRootPath ??= rootPath;\n if (!rootPath) {\n continue;\n }\n\n const metadata = await readPackageMetadata(rootPath, requestedPackageName ?? null);\n if (metadata.version || metadata.packageSpec) {\n return metadata;\n }\n }\n\n return { rootPath: firstRootPath };\n}\n","import { readFile } from 'node:fs/promises';\nimport { join, isAbsolute } from 'node:path';\nimport nodeResolve from '@rollup/plugin-node-resolve';\nimport type { Plugin } from 'rollup';\nimport type { PackageJson } from 'type-fest';\nimport { getPackageRootPath } from '../package-info';\nimport { getPackageName, isExternalProtocolImport, isBareModuleSpecifier } from '../utils';\n\n/**\n * Check if a package has an exports field in its package.json.\n * Results are cached to avoid repeated filesystem reads.\n */\nasync function getPackageJSON(pkgName: string, importer: string): Promise<PackageJson> {\n const pkgRoot = await getPackageRootPath(pkgName, importer);\n if (!pkgRoot) {\n throw new Error(`Package ${pkgName} not found`);\n }\n\n const pkgJSON = JSON.parse(await readFile(join(pkgRoot, 'package.json'), 'utf-8')) as PackageJson;\n return pkgJSON;\n}\n\n/**\n * Rollup plugin that resolves module extensions for external dependencies.\n *\n * This plugin handles ESM compatibility for external imports when node-resolve is not used:\n * - Packages WITH exports field (e.g., hono, date-fns): Keep imports as-is or strip redundant extensions\n * - Packages WITHOUT exports field (e.g., lodash): Add .js extension for direct file imports\n */\nexport function nodeModulesExtensionResolver(): Plugin {\n // Create a single instance of node-resolve to reuse\n const nodeResolvePlugin = nodeResolve();\n\n return {\n name: 'node-modules-extension-resolver',\n async resolveId(id, importer, options) {\n // Only bare package imports are relevant here.\n if (!importer || !isBareModuleSpecifier(id) || isExternalProtocolImport(id) || isAbsolute(id)) {\n return null;\n }\n\n // Skip direct package imports (e.g., 'lodash', '@mastra/core')\n const parts = id.split('/');\n const isScoped = id.startsWith('@');\n if ((isScoped && parts.length === 2) || (!isScoped && parts.length === 1)) {\n return null;\n }\n\n const pkgName = getPackageName(id);\n if (!pkgName) {\n return null;\n }\n\n try {\n const packageJSON = await getPackageJSON(pkgName, importer);\n // if it has exports, node should be able to rsolve it, if not the exports map is wrong.\n if (!!packageJSON.exports) {\n return null;\n }\n\n const packageRoot = await getPackageRootPath(pkgName, importer);\n // @ts-expect-error - handle is part of resolveId signature\n const nodeResolved = await nodeResolvePlugin.resolveId?.handler?.call(this, id, importer, options);\n // if we cannot resolve it, it's not a valid import so we let node handle it\n if (!nodeResolved?.id) {\n return null;\n }\n\n let filePath = nodeResolved.id;\n if (nodeResolved.resolvedBy === 'commonjs--resolver') {\n filePath = filePath.substring(1).split('?')[0];\n }\n\n const resolvedImportPath = filePath.replace(packageRoot, pkgName);\n\n return {\n id: resolvedImportPath,\n external: true,\n };\n } catch (err) {\n console.error(err);\n return null;\n }\n },\n };\n}\n","import type { Plugin } from 'rollup';\nimport { isExternalProtocolImport } from '../utils';\n\nexport function protocolExternalResolver({ exclude = ['node:'] }: { exclude?: readonly string[] } = {}): Plugin {\n return {\n name: 'protocol-external-resolver',\n resolveId(id) {\n if (!isExternalProtocolImport(id, exclude)) {\n return null;\n }\n\n return {\n id,\n external: true,\n };\n },\n } satisfies Plugin;\n}\n","import * as babel from '@babel/core';\n\ninterface RemoveDeployerState extends babel.PluginPass {\n hasReplaced?: boolean;\n}\n\nexport function removeDeployer(): babel.PluginObject<RemoveDeployerState> {\n const t = babel.types;\n\n // Helper to remove deployer property from an object and clean up its binding\n function removeDeployerFromObject(\n objectExpr: babel.types.ObjectExpression,\n scope: { getBinding: (name: string) => { path?: babel.NodePath } | undefined },\n ): babel.types.ObjectProperty | undefined {\n const deployerProp = objectExpr.properties.find(\n prop => t.isObjectProperty(prop) && t.isIdentifier(prop.key) && prop.key.name === 'deployer',\n ) as babel.types.ObjectProperty | undefined;\n\n if (deployerProp) {\n objectExpr.properties = objectExpr.properties.filter(prop => prop !== deployerProp);\n\n // Clean up the deployer binding if it's a reference\n if (t.isIdentifier(deployerProp.value)) {\n const deployerBinding = scope.getBinding(deployerProp.value.name);\n if (deployerBinding) {\n deployerBinding.path?.parentPath?.remove();\n }\n }\n }\n\n return deployerProp;\n }\n\n return {\n name: 'remove-deployer',\n visitor: {\n NewExpression(path, state: RemoveDeployerState) {\n // is a variable declaration\n const varDeclaratorPath = path.findParent(path => t.isVariableDeclarator(path.node));\n if (!varDeclaratorPath) {\n return;\n }\n\n const parentNode = path.parentPath.node;\n // check if it's a const of mastra\n if (!t.isVariableDeclarator(parentNode) || !t.isIdentifier(parentNode.id) || parentNode.id.name !== 'mastra') {\n return;\n }\n\n if (!state.hasReplaced) {\n state.hasReplaced = true;\n const newMastraObj = t.cloneNode(path.node);\n if (t.isObjectExpression(newMastraObj.arguments[0]) && newMastraObj.arguments[0].properties?.length) {\n const objectArg = newMastraObj.arguments[0];\n let foundDeployer = false;\n\n // First, check for direct deployer property\n const directDeployer = removeDeployerFromObject(objectArg, state.file.scope);\n if (directDeployer) {\n foundDeployer = true;\n }\n\n // Then, check spread elements for deployer properties\n for (const prop of objectArg.properties) {\n if (t.isSpreadElement(prop) && t.isIdentifier(prop.argument)) {\n const spreadBinding = state.file.scope.getBinding(prop.argument.name);\n if (spreadBinding?.path && t.isVariableDeclarator(spreadBinding.path.node)) {\n const init = spreadBinding.path.node.init;\n if (t.isObjectExpression(init)) {\n const spreadDeployer = removeDeployerFromObject(init, state.file.scope);\n if (spreadDeployer) {\n foundDeployer = true;\n }\n }\n }\n }\n }\n\n if (foundDeployer) {\n path.replaceWith(newMastraObj);\n }\n }\n }\n },\n },\n } as babel.PluginObject;\n}\n","import * as babel from '@babel/core';\nimport type { Plugin, SourceMapInput } from 'rollup';\n\nimport { removeDeployer as removeDeployerBabelPlugin } from '../babel/remove-deployer';\n\nexport function removeDeployer(mastraEntry: string, options?: { sourcemap?: boolean }): Plugin {\n return {\n name: 'remove-deployer',\n transform(code, id) {\n if (id !== mastraEntry) {\n return;\n }\n\n return babel\n .transformAsync(code, {\n babelrc: false,\n configFile: false,\n filename: id,\n plugins: [removeDeployerBabelPlugin],\n sourceMaps: options?.sourcemap,\n })\n .then(result => ({\n code: result!.code!,\n map: result!.map! as SourceMapInput,\n }));\n },\n } satisfies Plugin;\n}\n","import type { Plugin } from 'rollup';\nimport { isDependencyPartOfPackage } from '../utils';\n\nexport function subpathExternalsResolver(externals: string[]): Plugin {\n return {\n name: 'subpath-externals-resolver',\n resolveId(id) {\n if (id.startsWith('.') || id.startsWith('/')) {\n return null;\n }\n\n const isPartOfExternals = externals.some(external => isDependencyPartOfPackage(id, external));\n if (isPartOfExternals) {\n return {\n id,\n external: true,\n };\n }\n },\n } satisfies Plugin;\n}\n","import fs from 'node:fs';\nimport path, { normalize } from 'node:path';\nimport type { Plugin } from 'rollup';\nimport stripJsonComments from 'strip-json-comments';\nimport type { RegisterOptions } from 'typescript-paths';\nimport { createHandler } from 'typescript-paths';\n\nconst PLUGIN_NAME = 'tsconfig-paths';\nconst JS_IMPORT_SOURCE_EXTENSIONS = ['.ts', '.tsx', '.js', '.jsx'];\n\nexport type PluginOptions = Omit<RegisterOptions, 'loggerID'> & { localResolve?: boolean };\n\n/**\n * Check if a tsconfig file has path mappings configured.\n * Exported for testing purposes.\n *\n * @param tsConfigPath - Path to the tsconfig.json file\n * @returns true if the tsconfig has paths configured or extends another config, false otherwise\n */\nexport function hasPaths(tsConfigPath: string): boolean {\n try {\n const content = fs.readFileSync(tsConfigPath, 'utf8');\n const config = JSON.parse(stripJsonComments(content));\n return !!(\n (config.compilerOptions?.paths && Object.keys(config.compilerOptions.paths).length > 0) ||\n (typeof config.extends === 'string' && config.extends.length > 0) ||\n (Array.isArray(config.extends) && config.extends.length > 0)\n );\n } catch {\n return false;\n }\n}\n\nexport function tsConfigPaths({ tsConfigPath, respectCoreModule, localResolve }: PluginOptions = {}): Plugin {\n const handlerCache = new Map<string, ReturnType<typeof createHandler>>();\n\n function resolveJsImportToSourceFile(moduleName: string): string {\n if (fs.existsSync(moduleName)) {\n return moduleName;\n }\n\n const parsed = path.parse(moduleName);\n if (parsed.ext !== '.js') {\n return moduleName;\n }\n\n for (const extension of JS_IMPORT_SOURCE_EXTENSIONS) {\n const candidate = path.join(parsed.dir, `${parsed.name}${extension}`);\n if (fs.existsSync(candidate)) {\n return candidate;\n }\n }\n\n return moduleName;\n }\n\n // Find tsconfig.json file starting from a directory and walking up\n function findTsConfigForFile(filePath: string): string | null {\n let currentDir = path.dirname(filePath);\n const root = path.parse(currentDir).root;\n\n while (currentDir !== root) {\n const tsConfigPath = path.join(currentDir, 'tsconfig.json');\n\n if (fs.existsSync(tsConfigPath)) {\n // Check if this tsconfig has path mappings\n if (hasPaths(tsConfigPath)) {\n return tsConfigPath;\n }\n }\n\n // Also check for tsconfig.base.json (common in NX)\n const tsConfigBasePath = path.join(currentDir, 'tsconfig.base.json');\n if (fs.existsSync(tsConfigBasePath)) {\n if (hasPaths(tsConfigBasePath)) {\n return tsConfigBasePath;\n }\n }\n\n currentDir = path.dirname(currentDir);\n }\n\n return null;\n }\n\n // Get or create handler for a specific tsconfig file\n function getHandlerForFile(filePath: string): ReturnType<typeof createHandler> | null {\n // If a specific tsConfigPath was provided, use it\n if (tsConfigPath && typeof tsConfigPath === 'string') {\n if (!handlerCache.has(tsConfigPath)) {\n handlerCache.set(\n tsConfigPath,\n createHandler({\n log: () => {},\n tsConfigPath,\n respectCoreModule,\n falllback: moduleName => fs.existsSync(moduleName),\n }),\n );\n }\n return handlerCache.get(tsConfigPath)!;\n }\n\n // Find appropriate tsconfig for this file\n const configPath = findTsConfigForFile(filePath);\n if (!configPath) {\n return null;\n }\n\n // Cache handlers to avoid recreation\n if (!handlerCache.has(configPath)) {\n handlerCache.set(\n configPath,\n createHandler({\n log: () => {},\n tsConfigPath: configPath,\n respectCoreModule,\n falllback: moduleName => fs.existsSync(moduleName),\n }),\n );\n }\n\n return handlerCache.get(configPath)!;\n }\n\n // Simple alias resolution using dynamic handler\n function resolveAlias(request: string, importer: string): string | null | undefined {\n // Get the appropriate handler for this file\n const dynamicHandler = getHandlerForFile(importer);\n if (!dynamicHandler) {\n return null;\n }\n\n const resolved = dynamicHandler(request, normalize(importer));\n return resolved;\n }\n\n return {\n name: PLUGIN_NAME,\n resolveId: {\n order: 'pre',\n async handler(request, importer, options) {\n if (!importer || request.startsWith('\\0') || importer.charCodeAt(0) === 0) {\n return null;\n }\n\n // Convert relative paths to absolute to ensure proper tsconfig path resolution\n // This allows path aliases to work regardless of how the importer path is provided\n if (!path.isAbsolute(importer)) {\n importer = path.resolve(process.cwd(), importer);\n }\n\n const moduleName = resolveAlias(request, importer);\n // No tsconfig alias found, so we need to resolve it normally\n if (!moduleName) {\n const resolved = await this.resolve(request, importer, { skipSelf: true, ...options });\n if (!resolved) {\n return null;\n }\n\n // If localResolve is true, we need to check if the importer has been resolved by the tsconfig-paths plugin\n // if so, we need to resolve the request from the importer instead of the root and mark it as external\n if (localResolve) {\n const importerInfo = this.getModuleInfo(importer);\n const importerPluginMeta = importerInfo?.meta?.[PLUGIN_NAME];\n\n if (!request.startsWith('./') && !request.startsWith('../') && importerPluginMeta?.resolved) {\n return {\n ...resolved,\n external: !request.startsWith('hono/') && request !== 'hono',\n };\n }\n }\n\n return {\n ...resolved,\n meta: {\n ...(resolved.meta || {}),\n },\n };\n }\n\n const resolvedModuleName = resolveJsImportToSourceFile(moduleName);\n\n // When a module does not have an extension, we need to resolve it to a file\n if (!path.extname(resolvedModuleName)) {\n const resolved = await this.resolve(resolvedModuleName, importer, { skipSelf: true, ...options });\n\n if (!resolved) {\n return null;\n }\n\n return {\n ...resolved,\n meta: {\n ...resolved.meta,\n [PLUGIN_NAME]: {\n resolved: true,\n },\n },\n };\n }\n\n // Always pass through bundler's resolution to ensure proper path normalization\n const resolved = await this.resolve(resolvedModuleName, importer, { skipSelf: true, ...options });\n\n if (!resolved) {\n return null;\n }\n\n return {\n ...resolved,\n meta: {\n ...resolved.meta,\n [PLUGIN_NAME]: {\n resolved: true,\n },\n },\n };\n },\n },\n } satisfies Plugin;\n}\n","import { join } from 'node:path';\nimport { fileURLToPath, pathToFileURL } from 'node:url';\nimport { optimizeLodashImports } from '@optimize-lodash/rollup-plugin';\nimport alias from '@rollup/plugin-alias';\nimport commonjs from '@rollup/plugin-commonjs';\nimport json from '@rollup/plugin-json';\nimport nodeResolve from '@rollup/plugin-node-resolve';\nimport { rollup } from 'rollup';\nimport type { InputOptions, OutputOptions, Plugin } from 'rollup';\nimport type { analyzeBundle } from './analyze';\nimport { esbuild } from './plugins/esbuild';\nimport { esmShim } from './plugins/esm-shim';\nimport { localStorageDetector } from './plugins/local-storage-detector';\nimport { nodeModulesExtensionResolver } from './plugins/node-modules-extension-resolver';\nimport { protocolExternalResolver } from './plugins/protocol-external-resolver';\nimport { removeDeployer } from './plugins/remove-deployer';\nimport { subpathExternalsResolver } from './plugins/subpath-externals-resolver';\nimport { tsConfigPaths } from './plugins/tsconfig-paths';\nimport { getNodeResolveOptions, slash } from './utils';\nimport type { BundlerPlatform } from './utils';\n\nexport function mastraInternalAliasPlugin(entryFile: string): Plugin {\n const normalizedEntryFile = slash(entryFile);\n\n return alias({\n entries: [\n {\n find: /^\\#server$/,\n replacement: slash(fileURLToPath(import.meta.resolve('@mastra/deployer/server'))),\n },\n {\n find: /^\\@mastra\\/server\\/(.*)/,\n replacement: `@mastra/server/$1`,\n customResolver: id => {\n if (id.startsWith('@mastra/server')) {\n return {\n id: fileURLToPath(import.meta.resolve(id)),\n };\n }\n },\n },\n { find: /^\\#mastra$/, replacement: normalizedEntryFile },\n ],\n });\n}\n\nexport function mastraToolsAliasPlugin(): Plugin {\n return {\n name: 'tools-rewriter',\n resolveId(id: string) {\n if (id === '#tools') {\n return {\n id: './tools.mjs',\n external: true,\n };\n }\n },\n };\n}\n\nexport async function getInputOptions(\n entryFile: string,\n analyzedBundleInfo: Awaited<ReturnType<typeof analyzeBundle>>,\n platform: BundlerPlatform,\n env: Record<string, string> = { 'process.env.NODE_ENV': JSON.stringify('production') },\n {\n sourcemap = false,\n isDev = false,\n projectRoot,\n workspaceRoot = undefined,\n enableEsmShim = true,\n externalsPreset = false,\n }: {\n sourcemap?: boolean;\n isDev?: boolean;\n workspaceRoot?: string;\n projectRoot: string;\n enableEsmShim?: boolean;\n externalsPreset?: boolean;\n },\n): Promise<InputOptions> {\n const nodeResolvePlugin = nodeResolve(getNodeResolveOptions(platform));\n\n const externalsCopy = new Set<string>(analyzedBundleInfo.externalDependencies.keys());\n const externals = externalsPreset ? [] : Array.from(externalsCopy);\n\n return {\n logLevel: process.env.MASTRA_BUNDLER_DEBUG === 'true' ? 'debug' : 'silent',\n treeshake: 'smallest',\n preserveSymlinks: true,\n external: externals,\n plugins: [\n protocolExternalResolver(),\n subpathExternalsResolver(externals),\n {\n name: 'alias-optimized-deps',\n resolveId(id: string) {\n if (!analyzedBundleInfo.dependencies.has(id)) {\n return null;\n }\n\n const filename = analyzedBundleInfo.dependencies.get(id)!;\n const absolutePath = join(workspaceRoot || projectRoot, filename);\n\n // During `mastra dev` we want to keep deps as external\n if (isDev) {\n return {\n id: process.platform === 'win32' ? pathToFileURL(absolutePath).href : absolutePath,\n external: true,\n };\n }\n\n // For production builds return the absolute path as-is so Rollup can handle itself\n return {\n id: absolutePath,\n external: false,\n };\n },\n } satisfies Plugin,\n mastraInternalAliasPlugin(entryFile),\n tsConfigPaths(),\n mastraToolsAliasPlugin(),\n esbuild({\n platform,\n define: env,\n }),\n optimizeLodashImports({\n include: '**/*.{js,ts,mjs,cjs}',\n }),\n externalsPreset\n ? null\n : commonjs({\n extensions: ['.js', '.ts'],\n transformMixedEsModules: true,\n esmExternals(id) {\n return externals.includes(id);\n },\n }),\n enableEsmShim ? esmShim() : undefined,\n externalsPreset ? nodeModulesExtensionResolver() : nodeResolvePlugin,\n // for debugging\n // {\n // name: 'logger',\n // //@ts-expect-error\n // resolveId(id, ...args) {\n // console.log({ id, args });\n // },\n // // @ts-expect-error\n // transform(code, id) {\n // if (code.includes('class Duplexify ')) {\n // console.log({ duplex: id });\n // }\n // },\n // },\n json(),\n localStorageDetector(workspaceRoot || projectRoot),\n removeDeployer(entryFile, { sourcemap }),\n // treeshake unused imports\n esbuild({\n include: entryFile,\n platform,\n }),\n ].filter(Boolean),\n } satisfies InputOptions;\n}\n\nexport async function createBundler(\n inputOptions: InputOptions,\n outputOptions: Partial<OutputOptions> & { dir: string },\n) {\n const bundler = await rollup(inputOptions);\n\n return {\n write: () => {\n return bundler.write({\n ...outputOptions,\n format: 'esm',\n entryFileNames: '[name].mjs',\n chunkFileNames: '[name].mjs',\n });\n },\n close: () => {\n return bundler.close();\n },\n };\n}\n"]}
|