Back to Mastra

Mastra Codemods

packages/codemod/README.md

2025-12-187.5 KB
Original Source

Mastra Codemods

Mastra provides automated code transformations (codemods) to help upgrade your codebase when features are deprecated, removed, or changed between versions.

Codemods are transformations that run on your codebase programmatically, allowing you to apply many changes without manually editing every file.

Quick Start

Run Version-Specific Codemods

sh
npx @mastra/codemod v1

Run Individual Codemods

To run a specific codemod:

sh
npx @mastra/codemod <codemod-name> <path>

Examples:

sh
# Transform a specific file
npx @mastra/codemod v1/mastra-core-imports src/mastra.ts

# Transform a directory
npx @mastra/codemod v1/mastra-core-imports src/lib/

# Transform entire project
npx @mastra/codemod v1/mastra-core-imports .

Available Codemods

v1 Codemods (v0 → v1 Migration)

CodemodDescription
v1/agent-abort-signalMoves abortSignal from modelSettings to top-level options in agent method calls
v1/agent-generate-stream-v-nextRenames agent.generateVNext()agent.generate() and agent.streamVNext()agent.stream()
v1/agent-processor-methodsRenames agent.getInputProcessors()agent.listInputProcessors() and similar output processor methods
v1/agent-property-accessTransforms agent property access to method calls: agent.llmagent.getLLM()
v1/agent-voiceMoves agent voice methods to namespace: agent.speak()agent.voice.speak()
v1/client-get-memory-threadUpdates client.getMemoryThread(threadId, agentId) to use object parameter
v1/client-msg-function-argsTransforms MastraClient agent method calls to use messages as the first argument
v1/client-offset-limitRenames pagination properties from offset/limit to page/perPage
v1/client-sdk-typesRenames Client SDK types from Get* to List* pattern
v1/client-to-ai-sdk-formatRenames toAISdkFormat to toAISdkStream
v1/evals-prebuilt-importsUpdates prebuilt scorer imports from scorers/llm and scorers/code to scorers/prebuilt
v1/evals-run-experimentRenames runExperiment()runEvals() in imports and usages
v1/evals-scorer-by-nameRenames mastra.getScorerByName()mastra.getScorerById()
v1/experimental-authRenames experimental_auth to auth in Mastra configuration
v1/mastra-core-importsUpdates imports from @mastra/core to use new subpath imports
v1/mastra-plural-apisRenames Mastra plural API methods from get* to list*
v1/mcp-get-toolsRenames mcp.getTools()mcp.listTools()
v1/mcp-get-toolsetsRenames mcp.getToolsets()mcp.listToolsets()
v1/memory-message-v2-typeRenames MastraMessageV2 type → MastraDBMessage in imports and usages
v1/memory-query-to-recallRenames memory.query()memory.recall()
v1/memory-vector-search-paramRenames vectorMessageSearch parameter → vectorSearchString in memory.recall() calls
v1/memory-readonly-to-optionsMoves memory.readOnly to memory.options.readOnly in agent method calls
v1/runtime-contextRenames RuntimeContext to RequestContext and updates parameter names from runtimeContext to requestContext
v1/storage-get-messages-paginatedRenames storage.getMessagesPaginated()storage.listMessages() and offset/limitpage/perPage
v1/storage-get-threads-by-resourceRenames storage.getThreadsByResourceId()storage.listThreadsByResourceId()
v1/storage-list-messages-by-idRenames storage.getMessagesById()storage.listMessagesById()
v1/storage-list-workflow-runsRenames storage.getWorkflowRuns()storage.listWorkflowRuns()
v1/storage-postgres-schema-nameRenames schema property → schemaName in PostgresStore constructor
v1/vector-pg-constructorConverts new PgVector(connectionString) to new PgVector({ connectionString })
v1/voice-property-namesRenames voice property names in Agent configuration: speakProvideroutput
v1/workflow-create-run-asyncRenames workflow.createRunAsync()workflow.createRun()
v1/workflow-list-runsRenames workflow.getWorkflowRuns()workflow.listWorkflowRuns()
v1/workflow-run-countRenames context.runCountcontext.retryCount in step execution functions
v1/workflow-stream-vnextRenames streamVNext(), resumeStreamVNext(), and observeStreamVNext()

CLI Options

Commands

sh
npx @mastra/codemod <command> [options]

Available Commands:

  • <codemod-name> <path> - Apply specific codemod

Global Options

  • --dry - Preview changes without applying them
  • --print - Print transformed code to stdout
  • --verbose - Show detailed transformation logs

Examples

sh
# Show verbose output for specific codemod
npx @mastra/codemod --verbose v1/mastra-core-imports src/

# Print transformed code for specific codemod
npx @mastra/codemod --print v1/mastra-core-imports src/mastra.ts

Contributing

Adding New Codemods

  1. Create the codemod in src/codemods/<version>

  2. Add test fixtures in src/test/__fixtures__/

  3. Create tests in src/test/

  4. Use the scaffold script to generate boilerplate:

    sh
    pnpm scaffold
    

Testing Codemods

First, navigate to the codemod directory:

sh
cd packages/codemod

Then run the tests:

sh
# Run all tests
pnpm test

# Run specific codemod tests
pnpm test mastra-core-imports

# Test in development
pnpm test:watch