@mastra/codemod
Advanced tools
@@ -36,5 +36,7 @@ import { | ||
| registerApiRoute: "@mastra/core/server", | ||
| // Tracing | ||
| // Observability | ||
| DefaultExporter: "@mastra/observability", | ||
| MastraStorageExporter: "@mastra/observability", | ||
| CloudExporter: "@mastra/observability", | ||
| MastraPlatformExporter: "@mastra/observability", | ||
| // Streaming | ||
@@ -41,0 +43,0 @@ ChunkType: "@mastra/core/stream", |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"sources":["../../../src/codemods/v1/mastra-core-imports.ts"],"sourcesContent":["import { createTransformer } from '../lib/create-transformer';\n\n/**\n * For v1 we removed all top-level exports from \"@mastra/core\" except for `Mastra` and `type Config`.\n * All other imports should use subpath imports, e.g. `import { Agent } from \"@mastra/core/agent\"`.\n *\n * This codemod updates all imports from \"@mastra/core\" to use the new subpath imports. It leaves imports to `Mastra` and `Config` unchanged.\n */\n\n// TODO: Do not hardcode this mapping, generate it from the package's exports in the future\nconst EXPORT_TO_SUBPATH: Record<string, string> = {\n // Agent\n Agent: '@mastra/core/agent',\n\n // Tools\n createTool: '@mastra/core/tools',\n Tool: '@mastra/core/tools',\n\n // Workflows\n createWorkflow: '@mastra/core/workflows',\n createStep: '@mastra/core/workflows',\n Workflow: '@mastra/core/workflows',\n Step: '@mastra/core/workflows',\n\n // Request Context\n RequestContext: '@mastra/core/request-context',\n\n // Processors\n BatchPartsProcessor: '@mastra/core/processors',\n PIIDetector: '@mastra/core/processors',\n ModerationProcessor: '@mastra/core/processors',\n TokenLimiterProcessor: '@mastra/core/processors',\n Processor: '@mastra/core/processors',\n UnicodeNormalizer: '@mastra/core/processors',\n SystemPromptScrubber: '@mastra/core/processors',\n PromptInjectionDetector: '@mastra/core/processors',\n LanguageDetector: '@mastra/core/processors',\n\n // Voice\n CompositeVoice: '@mastra/core/voice',\n\n // Scorers/Evals\n runEvals: '@mastra/core/evals',\n createScorer: '@mastra/core/evals',\n\n // Server\n registerApiRoute: '@mastra/core/server',\n\n // Tracing\n DefaultExporter: '@mastra/observability',\n CloudExporter: '@mastra/observability',\n\n // Streaming\n ChunkType: '@mastra/core/stream',\n MastraMessageV2: '@mastra/core/stream',\n\n // LLM/Models\n ModelRouterEmbeddingModel: '@mastra/core/llm',\n};\n\nexport default createTransformer((fileInfo, api, options, context) => {\n const { j, root } = context;\n\n // Find all import declarations from '@mastra/core'\n root\n .find(j.ImportDeclaration, {\n source: { value: '@mastra/core' },\n })\n .forEach(importPath => {\n const node = importPath.node;\n const specifiers = node.specifiers || [];\n const declarationImportKind = node.importKind || 'value';\n\n // Categorize specifiers into those that stay vs those that move\n const { remainingSpecifiers, importsToMove } = categorizeImports(specifiers, declarationImportKind);\n\n // Early return: No imports to move\n if (importsToMove.length === 0) return;\n\n context.hasChanges = true;\n\n // Group imports by their target subpath\n const groupedImports = groupImportsBySubpath(importsToMove);\n\n // Create new import declarations for each subpath\n const newImports = createNewImports(j, groupedImports, context);\n\n // Insert new imports after the current one (in reverse to maintain order)\n insertImports(j, importPath, newImports);\n\n // Update or remove the original import\n updateOriginalImport(j, importPath, node, remainingSpecifiers, context);\n });\n});\n\n/**\n * Categorize import specifiers into those that stay vs those that move\n */\nfunction categorizeImports(specifiers: any[], declarationImportKind: 'type' | 'typeof' | 'value') {\n const remainingSpecifiers: any[] = [];\n const importsToMove: Array<{\n subpath: string;\n localName: string;\n importedName: string;\n importKind: 'type' | 'typeof' | 'value';\n isDeclarationType: boolean;\n }> = [];\n\n specifiers.forEach(specifier => {\n // Keep default and namespace imports as-is\n if (specifier.type !== 'ImportSpecifier') {\n remainingSpecifiers.push(specifier);\n return;\n }\n\n const imported = specifier.imported;\n const importedName = getImportedName(imported);\n const localName = specifier.local?.name || importedName;\n const specifierImportKind = specifier.importKind || 'value';\n\n // Determine effective importKind:\n // - If declaration is \"import type {}\", use 'type' for all specifiers\n // - Otherwise, use the specifier's own importKind\n const effectiveImportKind = declarationImportKind !== 'value' ? declarationImportKind : specifierImportKind;\n const isDeclarationType = declarationImportKind !== 'value';\n\n // Check if this import should be moved to a subpath\n const newSubpath = EXPORT_TO_SUBPATH[importedName];\n\n if (newSubpath) {\n importsToMove.push({\n subpath: newSubpath,\n localName,\n importedName,\n importKind: effectiveImportKind,\n isDeclarationType,\n });\n } else {\n // This import stays at '@mastra/core' (e.g., Mastra, Config)\n remainingSpecifiers.push(specifier);\n }\n });\n\n return { remainingSpecifiers, importsToMove };\n}\n\n/**\n * Extract the imported name from an import specifier\n */\nfunction getImportedName(imported: any): string {\n if (imported.type === 'Identifier') {\n return imported.name;\n }\n // Handle string literal imports (edge case)\n return imported.value || '';\n}\n\n/**\n * Group imports by their target subpath and importKind\n */\nfunction groupImportsBySubpath(\n importsToMove: Array<{\n subpath: string;\n localName: string;\n importedName: string;\n importKind: 'type' | 'typeof' | 'value';\n isDeclarationType: boolean;\n }>,\n) {\n const groupedImports = new Map<\n string,\n Array<{\n localName: string;\n importedName: string;\n importKind: 'type' | 'typeof' | 'value';\n isDeclarationType: boolean;\n }>\n >();\n\n importsToMove.forEach(({ subpath, localName, importedName, importKind, isDeclarationType }) => {\n // Create a key that includes both subpath and importKind to ensure separate import declarations\n const key = `${subpath}::${importKind}::${isDeclarationType}`;\n if (!groupedImports.has(key)) {\n groupedImports.set(key, []);\n }\n groupedImports.get(key)!.push({ localName, importedName, importKind, isDeclarationType });\n });\n\n return groupedImports;\n}\n\n/**\n * Create new import declarations for each subpath and importKind\n */\nfunction createNewImports(\n j: any,\n groupedImports: Map<\n string,\n Array<{\n localName: string;\n importedName: string;\n importKind: 'type' | 'typeof' | 'value';\n isDeclarationType: boolean;\n }>\n >,\n context: any,\n) {\n const newImports: any[] = [];\n\n groupedImports.forEach((imports, key) => {\n // Extract subpath, importKind, and isDeclarationType from the composite key\n const [subpath, importKind] = key.split('::');\n\n const newSpecifiers = imports.map(({ localName, importedName }) => {\n if (localName === importedName) {\n // import { Agent } from '@mastra/core/agent'\n return j.importSpecifier(j.identifier(importedName));\n } else {\n // import { Agent as MastraAgent } from '@mastra/core/agent'\n return j.importSpecifier(j.identifier(importedName), j.identifier(localName));\n }\n // Note: We don't set importKind on specifiers since we're creating\n // separate import declarations for each importKind. All specifiers in a type\n // import group will be in an \"import type\" declaration.\n });\n\n const newImport = j.importDeclaration(newSpecifiers, j.stringLiteral(subpath));\n\n // Set importKind on declaration if this is a type import (either declaration-level or inline)\n if (importKind !== 'value') {\n newImport.importKind = importKind;\n }\n\n newImports.push(newImport);\n\n // Log which imports were moved to which subpath\n const importList = imports.map(i => i.importedName).join(', ');\n const kindLabel = importKind !== 'value' ? ` (${importKind})` : '';\n context.messages.push(`Moved imports to '${subpath}'${kindLabel}: ${importList}`);\n });\n\n return newImports;\n}\n\n/**\n * Insert new imports after the current import (in reverse to maintain order)\n */\nfunction insertImports(j: any, importPath: any, newImports: any[]) {\n newImports.reverse().forEach(newImport => {\n j(importPath).insertAfter(newImport);\n });\n}\n\n/**\n * Update or remove the original import declaration\n */\nfunction updateOriginalImport(j: any, importPath: any, node: any, remainingSpecifiers: any[], context: any) {\n if (remainingSpecifiers.length > 0) {\n // Keep the original import with only the remaining specifiers\n node.specifiers = remainingSpecifiers;\n\n const remainingList = extractRemainingImportNames(remainingSpecifiers);\n if (remainingList) {\n context.messages.push(`Kept at '@mastra/core': ${remainingList}`);\n }\n } else {\n // Remove the original import entirely (all imports moved)\n j(importPath).remove();\n context.messages.push(`Removed original '@mastra/core' import (all imports moved to subpaths)`);\n }\n}\n\n/**\n * Extract the names of remaining imports for logging\n */\nfunction extractRemainingImportNames(remainingSpecifiers: any[]): string {\n return remainingSpecifiers\n .filter(s => s.type === 'ImportSpecifier')\n .map(s => s.imported?.name || s.local?.name)\n .filter(Boolean)\n .join(', ');\n}\n"],"mappings":"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","names":[]} | ||
| {"version":3,"sources":["../../../src/codemods/v1/mastra-core-imports.ts"],"sourcesContent":["import { createTransformer } from '../lib/create-transformer';\n\n/**\n * For v1 we removed all top-level exports from \"@mastra/core\" except for `Mastra` and `type Config`.\n * All other imports should use subpath imports, e.g. `import { Agent } from \"@mastra/core/agent\"`.\n *\n * This codemod updates all imports from \"@mastra/core\" to use the new subpath imports. It leaves imports to `Mastra` and `Config` unchanged.\n */\n\n// TODO: Do not hardcode this mapping, generate it from the package's exports in the future\nconst EXPORT_TO_SUBPATH: Record<string, string> = {\n // Agent\n Agent: '@mastra/core/agent',\n\n // Tools\n createTool: '@mastra/core/tools',\n Tool: '@mastra/core/tools',\n\n // Workflows\n createWorkflow: '@mastra/core/workflows',\n createStep: '@mastra/core/workflows',\n Workflow: '@mastra/core/workflows',\n Step: '@mastra/core/workflows',\n\n // Request Context\n RequestContext: '@mastra/core/request-context',\n\n // Processors\n BatchPartsProcessor: '@mastra/core/processors',\n PIIDetector: '@mastra/core/processors',\n ModerationProcessor: '@mastra/core/processors',\n TokenLimiterProcessor: '@mastra/core/processors',\n Processor: '@mastra/core/processors',\n UnicodeNormalizer: '@mastra/core/processors',\n SystemPromptScrubber: '@mastra/core/processors',\n PromptInjectionDetector: '@mastra/core/processors',\n LanguageDetector: '@mastra/core/processors',\n\n // Voice\n CompositeVoice: '@mastra/core/voice',\n\n // Scorers/Evals\n runEvals: '@mastra/core/evals',\n createScorer: '@mastra/core/evals',\n\n // Server\n registerApiRoute: '@mastra/core/server',\n\n // Observability\n DefaultExporter: '@mastra/observability',\n MastraStorageExporter: '@mastra/observability',\n CloudExporter: '@mastra/observability',\n MastraPlatformExporter: '@mastra/observability',\n\n // Streaming\n ChunkType: '@mastra/core/stream',\n MastraMessageV2: '@mastra/core/stream',\n\n // LLM/Models\n ModelRouterEmbeddingModel: '@mastra/core/llm',\n};\n\nexport default createTransformer((fileInfo, api, options, context) => {\n const { j, root } = context;\n\n // Find all import declarations from '@mastra/core'\n root\n .find(j.ImportDeclaration, {\n source: { value: '@mastra/core' },\n })\n .forEach(importPath => {\n const node = importPath.node;\n const specifiers = node.specifiers || [];\n const declarationImportKind = node.importKind || 'value';\n\n // Categorize specifiers into those that stay vs those that move\n const { remainingSpecifiers, importsToMove } = categorizeImports(specifiers, declarationImportKind);\n\n // Early return: No imports to move\n if (importsToMove.length === 0) return;\n\n context.hasChanges = true;\n\n // Group imports by their target subpath\n const groupedImports = groupImportsBySubpath(importsToMove);\n\n // Create new import declarations for each subpath\n const newImports = createNewImports(j, groupedImports, context);\n\n // Insert new imports after the current one (in reverse to maintain order)\n insertImports(j, importPath, newImports);\n\n // Update or remove the original import\n updateOriginalImport(j, importPath, node, remainingSpecifiers, context);\n });\n});\n\n/**\n * Categorize import specifiers into those that stay vs those that move\n */\nfunction categorizeImports(specifiers: any[], declarationImportKind: 'type' | 'typeof' | 'value') {\n const remainingSpecifiers: any[] = [];\n const importsToMove: Array<{\n subpath: string;\n localName: string;\n importedName: string;\n importKind: 'type' | 'typeof' | 'value';\n isDeclarationType: boolean;\n }> = [];\n\n specifiers.forEach(specifier => {\n // Keep default and namespace imports as-is\n if (specifier.type !== 'ImportSpecifier') {\n remainingSpecifiers.push(specifier);\n return;\n }\n\n const imported = specifier.imported;\n const importedName = getImportedName(imported);\n const localName = specifier.local?.name || importedName;\n const specifierImportKind = specifier.importKind || 'value';\n\n // Determine effective importKind:\n // - If declaration is \"import type {}\", use 'type' for all specifiers\n // - Otherwise, use the specifier's own importKind\n const effectiveImportKind = declarationImportKind !== 'value' ? declarationImportKind : specifierImportKind;\n const isDeclarationType = declarationImportKind !== 'value';\n\n // Check if this import should be moved to a subpath\n const newSubpath = EXPORT_TO_SUBPATH[importedName];\n\n if (newSubpath) {\n importsToMove.push({\n subpath: newSubpath,\n localName,\n importedName,\n importKind: effectiveImportKind,\n isDeclarationType,\n });\n } else {\n // This import stays at '@mastra/core' (e.g., Mastra, Config)\n remainingSpecifiers.push(specifier);\n }\n });\n\n return { remainingSpecifiers, importsToMove };\n}\n\n/**\n * Extract the imported name from an import specifier\n */\nfunction getImportedName(imported: any): string {\n if (imported.type === 'Identifier') {\n return imported.name;\n }\n // Handle string literal imports (edge case)\n return imported.value || '';\n}\n\n/**\n * Group imports by their target subpath and importKind\n */\nfunction groupImportsBySubpath(\n importsToMove: Array<{\n subpath: string;\n localName: string;\n importedName: string;\n importKind: 'type' | 'typeof' | 'value';\n isDeclarationType: boolean;\n }>,\n) {\n const groupedImports = new Map<\n string,\n Array<{\n localName: string;\n importedName: string;\n importKind: 'type' | 'typeof' | 'value';\n isDeclarationType: boolean;\n }>\n >();\n\n importsToMove.forEach(({ subpath, localName, importedName, importKind, isDeclarationType }) => {\n // Create a key that includes both subpath and importKind to ensure separate import declarations\n const key = `${subpath}::${importKind}::${isDeclarationType}`;\n if (!groupedImports.has(key)) {\n groupedImports.set(key, []);\n }\n groupedImports.get(key)!.push({ localName, importedName, importKind, isDeclarationType });\n });\n\n return groupedImports;\n}\n\n/**\n * Create new import declarations for each subpath and importKind\n */\nfunction createNewImports(\n j: any,\n groupedImports: Map<\n string,\n Array<{\n localName: string;\n importedName: string;\n importKind: 'type' | 'typeof' | 'value';\n isDeclarationType: boolean;\n }>\n >,\n context: any,\n) {\n const newImports: any[] = [];\n\n groupedImports.forEach((imports, key) => {\n // Extract subpath, importKind, and isDeclarationType from the composite key\n const [subpath, importKind] = key.split('::');\n\n const newSpecifiers = imports.map(({ localName, importedName }) => {\n if (localName === importedName) {\n // import { Agent } from '@mastra/core/agent'\n return j.importSpecifier(j.identifier(importedName));\n } else {\n // import { Agent as MastraAgent } from '@mastra/core/agent'\n return j.importSpecifier(j.identifier(importedName), j.identifier(localName));\n }\n // Note: We don't set importKind on specifiers since we're creating\n // separate import declarations for each importKind. All specifiers in a type\n // import group will be in an \"import type\" declaration.\n });\n\n const newImport = j.importDeclaration(newSpecifiers, j.stringLiteral(subpath));\n\n // Set importKind on declaration if this is a type import (either declaration-level or inline)\n if (importKind !== 'value') {\n newImport.importKind = importKind;\n }\n\n newImports.push(newImport);\n\n // Log which imports were moved to which subpath\n const importList = imports.map(i => i.importedName).join(', ');\n const kindLabel = importKind !== 'value' ? ` (${importKind})` : '';\n context.messages.push(`Moved imports to '${subpath}'${kindLabel}: ${importList}`);\n });\n\n return newImports;\n}\n\n/**\n * Insert new imports after the current import (in reverse to maintain order)\n */\nfunction insertImports(j: any, importPath: any, newImports: any[]) {\n newImports.reverse().forEach(newImport => {\n j(importPath).insertAfter(newImport);\n });\n}\n\n/**\n * Update or remove the original import declaration\n */\nfunction updateOriginalImport(j: any, importPath: any, node: any, remainingSpecifiers: any[], context: any) {\n if (remainingSpecifiers.length > 0) {\n // Keep the original import with only the remaining specifiers\n node.specifiers = remainingSpecifiers;\n\n const remainingList = extractRemainingImportNames(remainingSpecifiers);\n if (remainingList) {\n context.messages.push(`Kept at '@mastra/core': ${remainingList}`);\n }\n } else {\n // Remove the original import entirely (all imports moved)\n j(importPath).remove();\n context.messages.push(`Removed original '@mastra/core' import (all imports moved to subpaths)`);\n }\n}\n\n/**\n * Extract the names of remaining imports for logging\n */\nfunction extractRemainingImportNames(remainingSpecifiers: any[]): string {\n return remainingSpecifiers\n .filter(s => s.type === 'ImportSpecifier')\n .map(s => s.imported?.name || s.local?.name)\n .filter(Boolean)\n .join(', ');\n}\n"],"mappings":"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","names":[]} |
+15
-0
@@ -0,1 +1,16 @@ | ||
| Portions of this software are licensed as follows: | ||
| - All content that resides under any directory named "ee/" within this | ||
| repository, including but not limited to: | ||
| - `packages/core/src/auth/ee/` | ||
| - `packages/server/src/server/auth/ee/` | ||
| is licensed under the license defined in `ee/LICENSE`. | ||
| - All third-party components incorporated into the Mastra Software are | ||
| licensed under the original license provided by the owner of the | ||
| applicable component. | ||
| - Content outside of the above-mentioned directories or restrictions is | ||
| available under the "Apache License 2.0" as defined below. | ||
| # Apache License 2.0 | ||
@@ -2,0 +17,0 @@ |
+10
-10
| { | ||
| "name": "@mastra/codemod", | ||
| "type": "module", | ||
| "version": "1.0.3", | ||
| "version": "1.0.5", | ||
| "license": "Apache-2.0", | ||
@@ -21,3 +21,3 @@ "description": "Codemod CLI for Mastra", | ||
| "dependencies": { | ||
| "@clack/prompts": "^1.0.1", | ||
| "@clack/prompts": "^1.1.0", | ||
| "commander": "^14.0.3", | ||
@@ -29,12 +29,12 @@ "debug": "^4.4.3", | ||
| "@commander-js/extra-typings": "^14.0.0", | ||
| "@types/debug": "^4.1.12", | ||
| "@types/debug": "^4.1.13", | ||
| "@types/jscodeshift": "^17.3.0", | ||
| "@types/node": "22.19.7", | ||
| "@vitest/coverage-v8": "4.0.12", | ||
| "@vitest/ui": "4.0.12", | ||
| "eslint": "^9.37.0", | ||
| "@types/node": "22.19.21", | ||
| "@vitest/coverage-v8": "4.1.8", | ||
| "@vitest/ui": "4.1.8", | ||
| "eslint": "^10.4.1", | ||
| "tsup": "^8.5.1", | ||
| "typescript": "^5.9.3", | ||
| "vitest": "4.0.16", | ||
| "@internal/lint": "0.0.60" | ||
| "typescript": "^6.0.3", | ||
| "vitest": "4.1.8", | ||
| "@internal/lint": "0.0.105" | ||
| }, | ||
@@ -41,0 +41,0 @@ "homepage": "https://mastra.ai", |
Unidentified License
LicenseSomething that seems like a license was found, but its contents could not be matched with a known license.
Found 1 instance in 1 package
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
Found 1 instance in 1 package
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
Found 1 instance in 1 package
266352
0.32%2127
0.09%1
Infinity%80
-20%Updated