@mastra/codemod 0.0.0-main-test-05-11-2025-2-20251106053353 → 0.1.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (95) hide show
  1. package/CHANGELOG.md +9 -1
  2. package/README.md +41 -24
  3. package/dist/codemods/chunk-JNFQ6J6B.js +21 -0
  4. package/dist/codemods/chunk-JNFQ6J6B.js.map +1 -0
  5. package/dist/codemods/chunk-LGW3NUAJ.js +32 -0
  6. package/dist/codemods/chunk-LGW3NUAJ.js.map +1 -0
  7. package/dist/codemods/chunk-PKCFDS7J.js +177 -0
  8. package/dist/codemods/chunk-PKCFDS7J.js.map +1 -0
  9. package/dist/codemods/lib/add-comment.js +6 -54
  10. package/dist/codemods/lib/add-comment.js.map +1 -1
  11. package/dist/codemods/lib/create-transformer.js +5 -43
  12. package/dist/codemods/lib/create-transformer.js.map +1 -1
  13. package/dist/codemods/lib/utils.js +23 -0
  14. package/dist/codemods/lib/utils.js.map +1 -0
  15. package/dist/codemods/v1/agent-abort-signal.js +61 -0
  16. package/dist/codemods/v1/agent-abort-signal.js.map +1 -0
  17. package/dist/codemods/v1/agent-generate-stream-v-next.js +13 -70
  18. package/dist/codemods/v1/agent-generate-stream-v-next.js.map +1 -1
  19. package/dist/codemods/v1/agent-processor-methods.js +14 -71
  20. package/dist/codemods/v1/agent-processor-methods.js.map +1 -1
  21. package/dist/codemods/v1/agent-property-access.js +11 -50
  22. package/dist/codemods/v1/agent-property-access.js.map +1 -1
  23. package/dist/codemods/v1/agent-voice.js +10 -49
  24. package/dist/codemods/v1/agent-voice.js.map +1 -1
  25. package/dist/codemods/v1/client-get-memory-thread.js +58 -0
  26. package/dist/codemods/v1/client-get-memory-thread.js.map +1 -0
  27. package/dist/codemods/v1/client-offset-limit.js +49 -0
  28. package/dist/codemods/v1/client-offset-limit.js.map +1 -0
  29. package/dist/codemods/v1/client-sdk-types.js +56 -0
  30. package/dist/codemods/v1/client-sdk-types.js.map +1 -0
  31. package/dist/codemods/v1/client-to-ai-sdk-format.js +20 -0
  32. package/dist/codemods/v1/client-to-ai-sdk-format.js.map +1 -0
  33. package/dist/codemods/v1/evals-prebuilt-imports.js +24 -0
  34. package/dist/codemods/v1/evals-prebuilt-imports.js.map +1 -0
  35. package/dist/codemods/v1/evals-run-experiment.js +20 -0
  36. package/dist/codemods/v1/evals-run-experiment.js.map +1 -0
  37. package/dist/codemods/v1/evals-scorer-by-name.js +22 -0
  38. package/dist/codemods/v1/evals-scorer-by-name.js.map +1 -0
  39. package/dist/codemods/v1/experimental-auth.js +7 -43
  40. package/dist/codemods/v1/experimental-auth.js.map +1 -1
  41. package/dist/codemods/v1/mastra-core-imports.js +8 -44
  42. package/dist/codemods/v1/mastra-core-imports.js.map +1 -1
  43. package/dist/codemods/v1/mastra-plural-apis.js +31 -0
  44. package/dist/codemods/v1/mastra-plural-apis.js.map +1 -0
  45. package/dist/codemods/v1/mcp-get-tools.js +14 -66
  46. package/dist/codemods/v1/mcp-get-tools.js.map +1 -1
  47. package/dist/codemods/v1/mcp-get-toolsets.js +14 -66
  48. package/dist/codemods/v1/mcp-get-toolsets.js.map +1 -1
  49. package/dist/codemods/v1/memory-message-v2-type.js +50 -0
  50. package/dist/codemods/v1/memory-message-v2-type.js.map +1 -0
  51. package/dist/codemods/v1/memory-query-to-recall.js +22 -0
  52. package/dist/codemods/v1/memory-query-to-recall.js.map +1 -0
  53. package/dist/codemods/v1/memory-vector-search-param.js +31 -0
  54. package/dist/codemods/v1/memory-vector-search-param.js.map +1 -0
  55. package/dist/codemods/v1/not-implemented/agent-format-parameter.js +53 -0
  56. package/dist/codemods/v1/not-implemented/agent-format-parameter.js.map +1 -0
  57. package/dist/codemods/v1/not-implemented/agent-to-step.js +54 -0
  58. package/dist/codemods/v1/not-implemented/agent-to-step.js.map +1 -0
  59. package/dist/codemods/v1/not-implemented/mastra-memory.js +50 -0
  60. package/dist/codemods/v1/not-implemented/mastra-memory.js.map +1 -0
  61. package/dist/codemods/v1/not-implemented/mastra-required-id.js +112 -0
  62. package/dist/codemods/v1/not-implemented/mastra-required-id.js.map +1 -0
  63. package/dist/codemods/v1/runtime-context.js +6 -42
  64. package/dist/codemods/v1/runtime-context.js.map +1 -1
  65. package/dist/codemods/v1/storage-get-messages-paginated.js +41 -0
  66. package/dist/codemods/v1/storage-get-messages-paginated.js.map +1 -0
  67. package/dist/codemods/v1/storage-get-threads-by-resource.js +23 -0
  68. package/dist/codemods/v1/storage-get-threads-by-resource.js.map +1 -0
  69. package/dist/codemods/v1/storage-list-messages-by-id.js +23 -0
  70. package/dist/codemods/v1/storage-list-messages-by-id.js.map +1 -0
  71. package/dist/codemods/v1/storage-list-workflow-runs.js +23 -0
  72. package/dist/codemods/v1/storage-list-workflow-runs.js.map +1 -0
  73. package/dist/codemods/v1/storage-postgres-schema-name.js +20 -0
  74. package/dist/codemods/v1/storage-postgres-schema-name.js.map +1 -0
  75. package/dist/codemods/v1/vector-pg-constructor.js +27 -0
  76. package/dist/codemods/v1/vector-pg-constructor.js.map +1 -0
  77. package/dist/codemods/v1/voice-property-names.js +12 -48
  78. package/dist/codemods/v1/voice-property-names.js.map +1 -1
  79. package/dist/codemods/v1/workflow-create-run-async.js +22 -0
  80. package/dist/codemods/v1/workflow-create-run-async.js.map +1 -0
  81. package/dist/codemods/v1/workflow-list-runs.js +22 -0
  82. package/dist/codemods/v1/workflow-list-runs.js.map +1 -0
  83. package/dist/codemods/v1/workflow-run-count.js +53 -0
  84. package/dist/codemods/v1/workflow-run-count.js.map +1 -0
  85. package/dist/index.js +66 -46
  86. package/dist/index.js.map +1 -1
  87. package/package.json +4 -3
  88. package/dist/codemods/v1/agent-get-agents.js +0 -74
  89. package/dist/codemods/v1/agent-get-agents.js.map +0 -1
  90. package/dist/codemods/v1/evals-get-scorers.js +0 -74
  91. package/dist/codemods/v1/evals-get-scorers.js.map +0 -1
  92. package/dist/codemods/v1/mcp-get-mcp-servers.js +0 -74
  93. package/dist/codemods/v1/mcp-get-mcp-servers.js.map +0 -1
  94. package/dist/codemods/v1/workflows-get-workflows.js +0 -74
  95. package/dist/codemods/v1/workflows-get-workflows.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/codemods/v1/client-sdk-types.ts"],"sourcesContent":["import { createTransformer } from '../lib/create-transformer';\n\n/**\n * Renames Client SDK types from Get* to List* pattern.\n * This aligns type names with the method naming convention.\n *\n * Before:\n * import type { GetWorkflowRunsParams, GetMemoryThreadParams } from '@mastra/client-js';\n *\n * After:\n * import type { ListWorkflowRunsParams, ListMemoryThreadsParams } from '@mastra/client-js';\n */\nexport default createTransformer((fileInfo, api, options, context) => {\n const { j, root } = context;\n\n // Map of old type names to new type names\n const typeRenames: Record<string, string> = {\n GetWorkflowRunsParams: 'ListWorkflowRunsParams',\n GetWorkflowRunsResponse: 'ListWorkflowRunsResponse',\n GetMemoryThreadParams: 'ListMemoryThreadsParams',\n };\n\n // Track which types were actually imported from @mastra/client-js\n const importedTypes = new Set<string>();\n\n // Transform import specifiers and track what was imported\n root\n .find(j.ImportDeclaration)\n .filter(path => {\n const source = path.value.source.value;\n return typeof source === 'string' && source === '@mastra/client-js';\n })\n .forEach(path => {\n path.value.specifiers?.forEach(specifier => {\n if (specifier.type === 'ImportSpecifier' && specifier.imported.type === 'Identifier') {\n const oldName = specifier.imported.name;\n const newName = typeRenames[oldName];\n\n if (newName) {\n // Track the local name that was imported (could be aliased)\n const localName = typeof specifier.local?.name === 'string' ? specifier.local.name : oldName;\n importedTypes.add(localName);\n\n specifier.imported.name = newName;\n // Also update the local name if it matches the imported name\n if (specifier.local && specifier.local.name === oldName) {\n specifier.local.name = newName;\n }\n context.hasChanges = true;\n }\n }\n });\n });\n\n // Only transform type references if they were imported from @mastra/client-js\n if (importedTypes.size > 0) {\n root.find(j.Identifier).forEach(path => {\n const name = path.value.name;\n\n // Only transform if this identifier was imported from @mastra/client-js\n if (importedTypes.has(name)) {\n const newName = typeRenames[name];\n\n if (newName) {\n // Check if this identifier is a type reference (not a variable declaration)\n const parent = path.parent.value;\n\n // Only rename if it's used as a type reference, not a variable name\n if (parent.type === 'TSTypeReference' || parent.type === 'TSTypeAnnotation') {\n path.value.name = newName;\n context.hasChanges = true;\n }\n }\n }\n });\n }\n\n if (context.hasChanges) {\n context.messages.push('Renamed Client SDK types from Get* to List* pattern');\n }\n});\n"],"mappings":";;;;;AAYA,IAAO,2BAAQ,kBAAkB,CAAC,UAAU,KAAK,SAAS,YAAY;AACpE,QAAM,EAAE,GAAG,KAAK,IAAI;AAGpB,QAAM,cAAsC;AAAA,IAC1C,uBAAuB;AAAA,IACvB,yBAAyB;AAAA,IACzB,uBAAuB;AAAA,EACzB;AAGA,QAAM,gBAAgB,oBAAI,IAAY;AAGtC,OACG,KAAK,EAAE,iBAAiB,EACxB,OAAO,UAAQ;AACd,UAAM,SAAS,KAAK,MAAM,OAAO;AACjC,WAAO,OAAO,WAAW,YAAY,WAAW;AAAA,EAClD,CAAC,EACA,QAAQ,UAAQ;AACf,SAAK,MAAM,YAAY,QAAQ,eAAa;AAC1C,UAAI,UAAU,SAAS,qBAAqB,UAAU,SAAS,SAAS,cAAc;AACpF,cAAM,UAAU,UAAU,SAAS;AACnC,cAAM,UAAU,YAAY,OAAO;AAEnC,YAAI,SAAS;AAEX,gBAAM,YAAY,OAAO,UAAU,OAAO,SAAS,WAAW,UAAU,MAAM,OAAO;AACrF,wBAAc,IAAI,SAAS;AAE3B,oBAAU,SAAS,OAAO;AAE1B,cAAI,UAAU,SAAS,UAAU,MAAM,SAAS,SAAS;AACvD,sBAAU,MAAM,OAAO;AAAA,UACzB;AACA,kBAAQ,aAAa;AAAA,QACvB;AAAA,MACF;AAAA,IACF,CAAC;AAAA,EACH,CAAC;AAGH,MAAI,cAAc,OAAO,GAAG;AAC1B,SAAK,KAAK,EAAE,UAAU,EAAE,QAAQ,UAAQ;AACtC,YAAM,OAAO,KAAK,MAAM;AAGxB,UAAI,cAAc,IAAI,IAAI,GAAG;AAC3B,cAAM,UAAU,YAAY,IAAI;AAEhC,YAAI,SAAS;AAEX,gBAAM,SAAS,KAAK,OAAO;AAG3B,cAAI,OAAO,SAAS,qBAAqB,OAAO,SAAS,oBAAoB;AAC3E,iBAAK,MAAM,OAAO;AAClB,oBAAQ,aAAa;AAAA,UACvB;AAAA,QACF;AAAA,MACF;AAAA,IACF,CAAC;AAAA,EACH;AAEA,MAAI,QAAQ,YAAY;AACtB,YAAQ,SAAS,KAAK,qDAAqD;AAAA,EAC7E;AACF,CAAC;","names":[]}
@@ -0,0 +1,20 @@
1
+ import {
2
+ createTransformer
3
+ } from "../chunk-JNFQ6J6B.js";
4
+ import {
5
+ renameImportAndUsages
6
+ } from "../chunk-PKCFDS7J.js";
7
+
8
+ // src/codemods/v1/client-to-ai-sdk-format.ts
9
+ var client_to_ai_sdk_format_default = createTransformer((_fileInfo, _api, _options, context) => {
10
+ const { j, root } = context;
11
+ const count = renameImportAndUsages(j, root, "@mastra/ai-sdk", "toAISdkFormat", "toAISdkStream");
12
+ if (count > 0) {
13
+ context.hasChanges = true;
14
+ context.messages.push("Renamed toAISdkFormat to toAISdkStream");
15
+ }
16
+ });
17
+ export {
18
+ client_to_ai_sdk_format_default as default
19
+ };
20
+ //# sourceMappingURL=client-to-ai-sdk-format.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/codemods/v1/client-to-ai-sdk-format.ts"],"sourcesContent":["import { createTransformer } from '../lib/create-transformer';\nimport { renameImportAndUsages } from '../lib/utils';\n\n/**\n * Renames toAISdkFormat to toAISdkStream in imports and usages.\n * This aligns the function name with its actual behavior.\n *\n * Before:\n * import { toAISdkFormat } from '@mastra/ai-sdk';\n * const stream = toAISdkFormat(agentStream);\n *\n * After:\n * import { toAISdkStream } from '@mastra/ai-sdk';\n * const stream = toAISdkStream(agentStream);\n */\nexport default createTransformer((_fileInfo, _api, _options, context) => {\n const { j, root } = context;\n\n const count = renameImportAndUsages(j, root, '@mastra/ai-sdk', 'toAISdkFormat', 'toAISdkStream');\n\n if (count > 0) {\n context.hasChanges = true;\n context.messages.push('Renamed toAISdkFormat to toAISdkStream');\n }\n});\n"],"mappings":";;;;;;;;AAeA,IAAO,kCAAQ,kBAAkB,CAAC,WAAW,MAAM,UAAU,YAAY;AACvE,QAAM,EAAE,GAAG,KAAK,IAAI;AAEpB,QAAM,QAAQ,sBAAsB,GAAG,MAAM,kBAAkB,iBAAiB,eAAe;AAE/F,MAAI,QAAQ,GAAG;AACb,YAAQ,aAAa;AACrB,YAAQ,SAAS,KAAK,wCAAwC;AAAA,EAChE;AACF,CAAC;","names":[]}
@@ -0,0 +1,24 @@
1
+ import {
2
+ createTransformer
3
+ } from "../chunk-JNFQ6J6B.js";
4
+
5
+ // src/codemods/v1/evals-prebuilt-imports.ts
6
+ var evals_prebuilt_imports_default = createTransformer((fileInfo, api, options, context) => {
7
+ const { j, root } = context;
8
+ const oldPaths = ["@mastra/evals/scorers/llm", "@mastra/evals/scorers/code"];
9
+ const newPath = "@mastra/evals/scorers/prebuilt";
10
+ root.find(j.ImportDeclaration).forEach((path) => {
11
+ const source = path.value.source.value;
12
+ if (typeof source === "string" && oldPaths.includes(source)) {
13
+ path.value.source.value = newPath;
14
+ context.hasChanges = true;
15
+ }
16
+ });
17
+ if (context.hasChanges) {
18
+ context.messages.push("Updated prebuilt scorer imports from scorers/llm and scorers/code to scorers/prebuilt");
19
+ }
20
+ });
21
+ export {
22
+ evals_prebuilt_imports_default as default
23
+ };
24
+ //# sourceMappingURL=evals-prebuilt-imports.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/codemods/v1/evals-prebuilt-imports.ts"],"sourcesContent":["import { createTransformer } from '../lib/create-transformer';\n\n/**\n * Updates prebuilt scorer imports to use the consolidated scorers/prebuilt path.\n * Replaces both scorers/llm and scorers/code with scorers/prebuilt.\n *\n * Before:\n * import { createHallucinationScorer } from '@mastra/evals/scorers/llm';\n * import { createContentSimilarityScorer } from '@mastra/evals/scorers/code';\n *\n * After:\n * import { createHallucinationScorer } from '@mastra/evals/scorers/prebuilt';\n * import { createContentSimilarityScorer } from '@mastra/evals/scorers/prebuilt';\n */\nexport default createTransformer((fileInfo, api, options, context) => {\n const { j, root } = context;\n\n const oldPaths = ['@mastra/evals/scorers/llm', '@mastra/evals/scorers/code'];\n const newPath = '@mastra/evals/scorers/prebuilt';\n\n // Find and update import declarations\n root.find(j.ImportDeclaration).forEach(path => {\n const source = path.value.source.value;\n\n // Check if this import is from one of the old paths\n if (typeof source === 'string' && oldPaths.includes(source)) {\n // Update the import path\n path.value.source.value = newPath;\n context.hasChanges = true;\n }\n });\n\n if (context.hasChanges) {\n context.messages.push('Updated prebuilt scorer imports from scorers/llm and scorers/code to scorers/prebuilt');\n }\n});\n"],"mappings":";;;;;AAcA,IAAO,iCAAQ,kBAAkB,CAAC,UAAU,KAAK,SAAS,YAAY;AACpE,QAAM,EAAE,GAAG,KAAK,IAAI;AAEpB,QAAM,WAAW,CAAC,6BAA6B,4BAA4B;AAC3E,QAAM,UAAU;AAGhB,OAAK,KAAK,EAAE,iBAAiB,EAAE,QAAQ,UAAQ;AAC7C,UAAM,SAAS,KAAK,MAAM,OAAO;AAGjC,QAAI,OAAO,WAAW,YAAY,SAAS,SAAS,MAAM,GAAG;AAE3D,WAAK,MAAM,OAAO,QAAQ;AAC1B,cAAQ,aAAa;AAAA,IACvB;AAAA,EACF,CAAC;AAED,MAAI,QAAQ,YAAY;AACtB,YAAQ,SAAS,KAAK,uFAAuF;AAAA,EAC/G;AACF,CAAC;","names":[]}
@@ -0,0 +1,20 @@
1
+ import {
2
+ createTransformer
3
+ } from "../chunk-JNFQ6J6B.js";
4
+ import {
5
+ renameImportAndUsages
6
+ } from "../chunk-PKCFDS7J.js";
7
+
8
+ // src/codemods/v1/evals-run-experiment.ts
9
+ var evals_run_experiment_default = createTransformer((_fileInfo, _api, _options, context) => {
10
+ const { j, root } = context;
11
+ const count = renameImportAndUsages(j, root, "@mastra/core/evals", "runExperiment", "runEvals");
12
+ if (count > 0) {
13
+ context.hasChanges = true;
14
+ context.messages.push("Renamed runExperiment to runEvals");
15
+ }
16
+ });
17
+ export {
18
+ evals_run_experiment_default as default
19
+ };
20
+ //# sourceMappingURL=evals-run-experiment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/codemods/v1/evals-run-experiment.ts"],"sourcesContent":["import { createTransformer } from '../lib/create-transformer';\nimport { renameImportAndUsages } from '../lib/utils';\n\n/**\n * Renames runExperiment to runEvals in imports and usages.\n * This provides clearer naming that better describes the evaluation functionality.\n *\n * Before:\n * import { runExperiment } from '@mastra/core/evals';\n * const result = await runExperiment({ target, scorers, data });\n *\n * After:\n * import { runEvals } from '@mastra/core/evals';\n * const result = await runEvals({ target, scorers, data });\n */\nexport default createTransformer((_fileInfo, _api, _options, context) => {\n const { j, root } = context;\n\n const count = renameImportAndUsages(j, root, '@mastra/core/evals', 'runExperiment', 'runEvals');\n\n if (count > 0) {\n context.hasChanges = true;\n context.messages.push('Renamed runExperiment to runEvals');\n }\n});\n"],"mappings":";;;;;;;;AAeA,IAAO,+BAAQ,kBAAkB,CAAC,WAAW,MAAM,UAAU,YAAY;AACvE,QAAM,EAAE,GAAG,KAAK,IAAI;AAEpB,QAAM,QAAQ,sBAAsB,GAAG,MAAM,sBAAsB,iBAAiB,UAAU;AAE9F,MAAI,QAAQ,GAAG;AACb,YAAQ,aAAa;AACrB,YAAQ,SAAS,KAAK,mCAAmC;AAAA,EAC3D;AACF,CAAC;","names":[]}
@@ -0,0 +1,22 @@
1
+ import {
2
+ createTransformer
3
+ } from "../chunk-JNFQ6J6B.js";
4
+ import {
5
+ renameMethod,
6
+ trackClassInstances
7
+ } from "../chunk-PKCFDS7J.js";
8
+
9
+ // src/codemods/v1/evals-scorer-by-name.ts
10
+ var evals_scorer_by_name_default = createTransformer((_fileInfo, _api, _options, context) => {
11
+ const { j, root } = context;
12
+ const mastraInstances = trackClassInstances(j, root, "Mastra");
13
+ const count = renameMethod(j, root, mastraInstances, "getScorerByName", "getScorerById");
14
+ if (count > 0) {
15
+ context.hasChanges = true;
16
+ context.messages.push("Renamed getScorerByName to getScorerById on Mastra instances");
17
+ }
18
+ });
19
+ export {
20
+ evals_scorer_by_name_default as default
21
+ };
22
+ //# sourceMappingURL=evals-scorer-by-name.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/codemods/v1/evals-scorer-by-name.ts"],"sourcesContent":["import { createTransformer } from '../lib/create-transformer';\nimport { trackClassInstances, renameMethod } from '../lib/utils';\n\n/**\n * Renames mastra.getScorerByName() to mastra.getScorerById().\n * This aligns with the broader API pattern of using 'id' for entity identification.\n *\n * Before:\n * const scorer = mastra.getScorerByName('helpfulness-scorer');\n *\n * After:\n * const scorer = mastra.getScorerById('helpfulness-scorer');\n */\nexport default createTransformer((_fileInfo, _api, _options, context) => {\n const { j, root } = context;\n\n // Track Mastra instances and rename method in a single optimized pass\n const mastraInstances = trackClassInstances(j, root, 'Mastra');\n const count = renameMethod(j, root, mastraInstances, 'getScorerByName', 'getScorerById');\n\n if (count > 0) {\n context.hasChanges = true;\n context.messages.push('Renamed getScorerByName to getScorerById on Mastra instances');\n }\n});\n"],"mappings":";;;;;;;;;AAaA,IAAO,+BAAQ,kBAAkB,CAAC,WAAW,MAAM,UAAU,YAAY;AACvE,QAAM,EAAE,GAAG,KAAK,IAAI;AAGpB,QAAM,kBAAkB,oBAAoB,GAAG,MAAM,QAAQ;AAC7D,QAAM,QAAQ,aAAa,GAAG,MAAM,iBAAiB,mBAAmB,eAAe;AAEvF,MAAI,QAAQ,GAAG;AACb,YAAQ,aAAa;AACrB,YAAQ,SAAS,KAAK,8DAA8D;AAAA,EACtF;AACF,CAAC;","names":[]}
@@ -1,45 +1,6 @@
1
- "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __export = (target, all) => {
7
- for (var name in all)
8
- __defProp(target, name, { get: all[name], enumerable: true });
9
- };
10
- var __copyProps = (to, from, except, desc) => {
11
- if (from && typeof from === "object" || typeof from === "function") {
12
- for (let key of __getOwnPropNames(from))
13
- if (!__hasOwnProp.call(to, key) && key !== except)
14
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
- }
16
- return to;
17
- };
18
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
-
20
- // src/codemods/v1/experimental-auth.ts
21
- var experimental_auth_exports = {};
22
- __export(experimental_auth_exports, {
23
- default: () => experimental_auth_default
24
- });
25
- module.exports = __toCommonJS(experimental_auth_exports);
26
-
27
- // src/codemods/lib/create-transformer.ts
28
- function createTransformer(transformFn) {
29
- return function transformer(fileInfo, api, options) {
30
- const j = api.jscodeshift;
31
- const root = j(fileInfo.source);
32
- const context = {
33
- j,
34
- root,
35
- hasChanges: false,
36
- messages: []
37
- };
38
- transformFn(fileInfo, api, options, context);
39
- context.messages.forEach((message) => api.report(message));
40
- return context.hasChanges ? root.toSource({ quote: "single" }) : null;
41
- };
42
- }
1
+ import {
2
+ createTransformer
3
+ } from "../chunk-JNFQ6J6B.js";
43
4
 
44
5
  // src/codemods/v1/experimental-auth.ts
45
6
  var experimental_auth_default = createTransformer((fileInfo, api, options, context) => {
@@ -50,7 +11,7 @@ var experimental_auth_default = createTransformer((fileInfo, api, options, conte
50
11
  const configArg = mastraPath.node.arguments[0];
51
12
  if (!configArg || configArg.type !== "ObjectExpression") return;
52
13
  configArg.properties?.forEach((prop) => {
53
- if ((prop.type === "Property" || prop.type === "ObjectProperty") && prop.key.type === "Identifier" && prop.key.name === "experimental_auth") {
14
+ if ((prop.type === "Property" || prop.type === "ObjectProperty") && prop.key && prop.key.type === "Identifier" && prop.key.name === "experimental_auth") {
54
15
  prop.key.name = "auth";
55
16
  context.hasChanges = true;
56
17
  }
@@ -60,4 +21,7 @@ var experimental_auth_default = createTransformer((fileInfo, api, options, conte
60
21
  context.messages.push(`Renamed experimental_auth to auth in Mastra configuration`);
61
22
  }
62
23
  });
24
+ export {
25
+ experimental_auth_default as default
26
+ };
63
27
  //# sourceMappingURL=experimental-auth.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/codemods/v1/experimental-auth.ts","../../../src/codemods/lib/create-transformer.ts"],"sourcesContent":["import { createTransformer } from '../lib/create-transformer';\n\n/**\n * Renames experimental_auth to auth in Mastra configuration.\n */\nexport default createTransformer((fileInfo, api, options, context) => {\n const { j, root } = context;\n\n // Find all new Mastra({ ... }) expressions\n root\n .find(j.NewExpression, {\n callee: { type: 'Identifier', name: 'Mastra' },\n })\n .forEach(mastraPath => {\n const configArg = mastraPath.node.arguments[0];\n if (!configArg || configArg.type !== 'ObjectExpression') return;\n\n // Find experimental_auth property in the Mastra config object\n configArg.properties?.forEach((prop: any) => {\n if (\n (prop.type === 'Property' || prop.type === 'ObjectProperty') &&\n prop.key.type === 'Identifier' &&\n prop.key.name === 'experimental_auth'\n ) {\n // Rename to 'auth'\n prop.key.name = 'auth';\n context.hasChanges = true;\n }\n });\n });\n\n if (context.hasChanges) {\n context.messages.push(`Renamed experimental_auth to auth in Mastra configuration`);\n }\n});\n","// Copied from https://github.com/vercel/ai/blob/main/packages/codemod/src/codemods/lib/create-transformer.ts\n// License: Apache-2.0\n\nimport type { FileInfo, API, JSCodeshift, Collection } from 'jscodeshift';\n\ntype TransformerFunction = (fileInfo: FileInfo, api: API, options: any, context: TransformContext) => void;\n\nexport interface TransformContext {\n /**\n * The jscodeshift API object.\n */\n j: JSCodeshift;\n\n /**\n * The root collection of the AST.\n */\n root: Collection<any>;\n\n /**\n * Codemods should set this to true if they make any changes to the AST.\n */\n hasChanges: boolean;\n\n /**\n * Codemods can append messages to this array to report information to the user.\n */\n messages: string[];\n}\n\nexport function createTransformer(transformFn: TransformerFunction) {\n // Note the return type of this function is explicitly designed to conform to\n // the signature expected by jscodeshift. For more see\n // https://github.com/facebook/jscodeshift\n return function transformer(fileInfo: FileInfo, api: API, options: any) {\n const j = api.jscodeshift;\n const root = j(fileInfo.source);\n const context: TransformContext = {\n j,\n root,\n hasChanges: false,\n messages: [],\n };\n\n // Execute the transformation\n transformFn(fileInfo, api, options, context);\n\n // Report any messages\n context.messages.forEach(message => api.report(message));\n\n // Return the transformed source code if changes were made\n return context.hasChanges ? root.toSource({ quote: 'single' }) : null;\n };\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;;;AC6BO,SAAS,kBAAkB,aAAkC;AAIlE,SAAO,SAAS,YAAY,UAAoB,KAAU,SAAc;AACtE,UAAM,IAAI,IAAI;AACd,UAAM,OAAO,EAAE,SAAS,MAAM;AAC9B,UAAM,UAA4B;AAAA,MAChC;AAAA,MACA;AAAA,MACA,YAAY;AAAA,MACZ,UAAU,CAAC;AAAA,IACb;AAGA,gBAAY,UAAU,KAAK,SAAS,OAAO;AAG3C,YAAQ,SAAS,QAAQ,aAAW,IAAI,OAAO,OAAO,CAAC;AAGvD,WAAO,QAAQ,aAAa,KAAK,SAAS,EAAE,OAAO,SAAS,CAAC,IAAI;AAAA,EACnE;AACF;;;AD/CA,IAAO,4BAAQ,kBAAkB,CAAC,UAAU,KAAK,SAAS,YAAY;AACpE,QAAM,EAAE,GAAG,KAAK,IAAI;AAGpB,OACG,KAAK,EAAE,eAAe;AAAA,IACrB,QAAQ,EAAE,MAAM,cAAc,MAAM,SAAS;AAAA,EAC/C,CAAC,EACA,QAAQ,gBAAc;AACrB,UAAM,YAAY,WAAW,KAAK,UAAU,CAAC;AAC7C,QAAI,CAAC,aAAa,UAAU,SAAS,mBAAoB;AAGzD,cAAU,YAAY,QAAQ,CAAC,SAAc;AAC3C,WACG,KAAK,SAAS,cAAc,KAAK,SAAS,qBAC3C,KAAK,IAAI,SAAS,gBAClB,KAAK,IAAI,SAAS,qBAClB;AAEA,aAAK,IAAI,OAAO;AAChB,gBAAQ,aAAa;AAAA,MACvB;AAAA,IACF,CAAC;AAAA,EACH,CAAC;AAEH,MAAI,QAAQ,YAAY;AACtB,YAAQ,SAAS,KAAK,2DAA2D;AAAA,EACnF;AACF,CAAC;","names":[]}
1
+ {"version":3,"sources":["../../../src/codemods/v1/experimental-auth.ts"],"sourcesContent":["import { createTransformer } from '../lib/create-transformer';\n\n/**\n * Renames experimental_auth to auth in Mastra configuration.\n */\nexport default createTransformer((fileInfo, api, options, context) => {\n const { j, root } = context;\n\n // Find all new Mastra({ ... }) expressions\n root\n .find(j.NewExpression, {\n callee: { type: 'Identifier', name: 'Mastra' },\n })\n .forEach(mastraPath => {\n const configArg = mastraPath.node.arguments[0];\n if (!configArg || configArg.type !== 'ObjectExpression') return;\n\n // Find experimental_auth property in the Mastra config object\n configArg.properties?.forEach(prop => {\n if (\n (prop.type === 'Property' || prop.type === 'ObjectProperty') &&\n prop.key &&\n prop.key.type === 'Identifier' &&\n prop.key.name === 'experimental_auth'\n ) {\n // Rename to 'auth'\n prop.key.name = 'auth';\n context.hasChanges = true;\n }\n });\n });\n\n if (context.hasChanges) {\n context.messages.push(`Renamed experimental_auth to auth in Mastra configuration`);\n }\n});\n"],"mappings":";;;;;AAKA,IAAO,4BAAQ,kBAAkB,CAAC,UAAU,KAAK,SAAS,YAAY;AACpE,QAAM,EAAE,GAAG,KAAK,IAAI;AAGpB,OACG,KAAK,EAAE,eAAe;AAAA,IACrB,QAAQ,EAAE,MAAM,cAAc,MAAM,SAAS;AAAA,EAC/C,CAAC,EACA,QAAQ,gBAAc;AACrB,UAAM,YAAY,WAAW,KAAK,UAAU,CAAC;AAC7C,QAAI,CAAC,aAAa,UAAU,SAAS,mBAAoB;AAGzD,cAAU,YAAY,QAAQ,UAAQ;AACpC,WACG,KAAK,SAAS,cAAc,KAAK,SAAS,qBAC3C,KAAK,OACL,KAAK,IAAI,SAAS,gBAClB,KAAK,IAAI,SAAS,qBAClB;AAEA,aAAK,IAAI,OAAO;AAChB,gBAAQ,aAAa;AAAA,MACvB;AAAA,IACF,CAAC;AAAA,EACH,CAAC;AAEH,MAAI,QAAQ,YAAY;AACtB,YAAQ,SAAS,KAAK,2DAA2D;AAAA,EACnF;AACF,CAAC;","names":[]}
@@ -1,45 +1,6 @@
1
- "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __export = (target, all) => {
7
- for (var name in all)
8
- __defProp(target, name, { get: all[name], enumerable: true });
9
- };
10
- var __copyProps = (to, from, except, desc) => {
11
- if (from && typeof from === "object" || typeof from === "function") {
12
- for (let key of __getOwnPropNames(from))
13
- if (!__hasOwnProp.call(to, key) && key !== except)
14
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
- }
16
- return to;
17
- };
18
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
-
20
- // src/codemods/v1/mastra-core-imports.ts
21
- var mastra_core_imports_exports = {};
22
- __export(mastra_core_imports_exports, {
23
- default: () => mastra_core_imports_default
24
- });
25
- module.exports = __toCommonJS(mastra_core_imports_exports);
26
-
27
- // src/codemods/lib/create-transformer.ts
28
- function createTransformer(transformFn) {
29
- return function transformer(fileInfo, api, options) {
30
- const j = api.jscodeshift;
31
- const root = j(fileInfo.source);
32
- const context = {
33
- j,
34
- root,
35
- hasChanges: false,
36
- messages: []
37
- };
38
- transformFn(fileInfo, api, options, context);
39
- context.messages.forEach((message) => api.report(message));
40
- return context.hasChanges ? root.toSource({ quote: "single" }) : null;
41
- };
42
- }
1
+ import {
2
+ createTransformer
3
+ } from "../chunk-JNFQ6J6B.js";
43
4
 
44
5
  // src/codemods/v1/mastra-core-imports.ts
45
6
  var EXPORT_TO_SUBPATH = {
@@ -68,8 +29,8 @@ var EXPORT_TO_SUBPATH = {
68
29
  // Voice
69
30
  CompositeVoice: "@mastra/core/voice",
70
31
  // Scorers/Evals
71
- runEvals: "@mastra/core/scores",
72
- createScorer: "@mastra/core/scores",
32
+ runEvals: "@mastra/core/evals",
33
+ createScorer: "@mastra/core/evals",
73
34
  // Server
74
35
  registerApiRoute: "@mastra/core/server",
75
36
  // Tracing
@@ -186,4 +147,7 @@ function updateOriginalImport(j, importPath, node, remainingSpecifiers, context)
186
147
  function extractRemainingImportNames(remainingSpecifiers) {
187
148
  return remainingSpecifiers.filter((s) => s.type === "ImportSpecifier").map((s) => s.imported?.name || s.local?.name).filter(Boolean).join(", ");
188
149
  }
150
+ export {
151
+ mastra_core_imports_default as default
152
+ };
189
153
  //# sourceMappingURL=mastra-core-imports.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/codemods/v1/mastra-core-imports.ts","../../../src/codemods/lib/create-transformer.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/scores',\n createScorer: '@mastra/core/scores',\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","// Copied from https://github.com/vercel/ai/blob/main/packages/codemod/src/codemods/lib/create-transformer.ts\n// License: Apache-2.0\n\nimport type { FileInfo, API, JSCodeshift, Collection } from 'jscodeshift';\n\ntype TransformerFunction = (fileInfo: FileInfo, api: API, options: any, context: TransformContext) => void;\n\nexport interface TransformContext {\n /**\n * The jscodeshift API object.\n */\n j: JSCodeshift;\n\n /**\n * The root collection of the AST.\n */\n root: Collection<any>;\n\n /**\n * Codemods should set this to true if they make any changes to the AST.\n */\n hasChanges: boolean;\n\n /**\n * Codemods can append messages to this array to report information to the user.\n */\n messages: string[];\n}\n\nexport function createTransformer(transformFn: TransformerFunction) {\n // Note the return type of this function is explicitly designed to conform to\n // the signature expected by jscodeshift. For more see\n // https://github.com/facebook/jscodeshift\n return function transformer(fileInfo: FileInfo, api: API, options: any) {\n const j = api.jscodeshift;\n const root = j(fileInfo.source);\n const context: TransformContext = {\n j,\n root,\n hasChanges: false,\n messages: [],\n };\n\n // Execute the transformation\n transformFn(fileInfo, api, options, context);\n\n // Report any messages\n context.messages.forEach(message => api.report(message));\n\n // Return the transformed source code if changes were made\n return context.hasChanges ? root.toSource({ quote: 'single' }) : null;\n };\n}\n"],"mappings":"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","names":[]}
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":[]}
@@ -0,0 +1,31 @@
1
+ import {
2
+ createTransformer
3
+ } from "../chunk-JNFQ6J6B.js";
4
+ import {
5
+ renameMethods,
6
+ trackClassInstances
7
+ } from "../chunk-PKCFDS7J.js";
8
+
9
+ // src/codemods/v1/mastra-plural-apis.ts
10
+ var mastra_plural_apis_default = createTransformer((_fileInfo, _api, _options, context) => {
11
+ const { j, root } = context;
12
+ const methodRenames = {
13
+ getAgents: "listAgents",
14
+ getVectors: "listVectors",
15
+ getWorkflows: "listWorkflows",
16
+ getScorers: "listScorers",
17
+ getMCPServers: "listMCPServers",
18
+ getLogsByRunId: "listLogsByRunId",
19
+ getLogs: "listLogs"
20
+ };
21
+ const mastraInstances = trackClassInstances(j, root, "Mastra");
22
+ const count = renameMethods(j, root, mastraInstances, methodRenames);
23
+ if (count > 0) {
24
+ context.hasChanges = true;
25
+ context.messages.push("Renamed Mastra plural API methods from get* to list*");
26
+ }
27
+ });
28
+ export {
29
+ mastra_plural_apis_default as default
30
+ };
31
+ //# sourceMappingURL=mastra-plural-apis.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/codemods/v1/mastra-plural-apis.ts"],"sourcesContent":["import { createTransformer } from '../lib/create-transformer';\nimport { trackClassInstances, renameMethods } from '../lib/utils';\n\n/**\n * Renames Mastra plural API methods from get* to list*.\n * This provides a consistent naming convention across all plural APIs.\n *\n * Before:\n * const agents = mastra.getAgents();\n * const workflows = mastra.getWorkflows();\n * const logs = await mastra.getLogs('transportId');\n *\n * After:\n * const agents = mastra.listAgents();\n * const workflows = mastra.listWorkflows();\n * const logs = await mastra.listLogs('transportId');\n */\nexport default createTransformer((_fileInfo, _api, _options, context) => {\n const { j, root } = context;\n\n // Map of old method names to new method names\n const methodRenames: Record<string, string> = {\n getAgents: 'listAgents',\n getVectors: 'listVectors',\n getWorkflows: 'listWorkflows',\n getScorers: 'listScorers',\n getMCPServers: 'listMCPServers',\n getLogsByRunId: 'listLogsByRunId',\n getLogs: 'listLogs',\n };\n\n // Track Mastra instances and rename all methods in a single optimized pass\n const mastraInstances = trackClassInstances(j, root, 'Mastra');\n const count = renameMethods(j, root, mastraInstances, methodRenames);\n\n if (count > 0) {\n context.hasChanges = true;\n context.messages.push('Renamed Mastra plural API methods from get* to list*');\n }\n});\n"],"mappings":";;;;;;;;;AAiBA,IAAO,6BAAQ,kBAAkB,CAAC,WAAW,MAAM,UAAU,YAAY;AACvE,QAAM,EAAE,GAAG,KAAK,IAAI;AAGpB,QAAM,gBAAwC;AAAA,IAC5C,WAAW;AAAA,IACX,YAAY;AAAA,IACZ,cAAc;AAAA,IACd,YAAY;AAAA,IACZ,eAAe;AAAA,IACf,gBAAgB;AAAA,IAChB,SAAS;AAAA,EACX;AAGA,QAAM,kBAAkB,oBAAoB,GAAG,MAAM,QAAQ;AAC7D,QAAM,QAAQ,cAAc,GAAG,MAAM,iBAAiB,aAAa;AAEnE,MAAI,QAAQ,GAAG;AACb,YAAQ,aAAa;AACrB,YAAQ,SAAS,KAAK,sDAAsD;AAAA,EAC9E;AACF,CAAC;","names":[]}
@@ -1,74 +1,22 @@
1
- "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __export = (target, all) => {
7
- for (var name in all)
8
- __defProp(target, name, { get: all[name], enumerable: true });
9
- };
10
- var __copyProps = (to, from, except, desc) => {
11
- if (from && typeof from === "object" || typeof from === "function") {
12
- for (let key of __getOwnPropNames(from))
13
- if (!__hasOwnProp.call(to, key) && key !== except)
14
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
- }
16
- return to;
17
- };
18
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
-
20
- // src/codemods/v1/mcp-get-tools.ts
21
- var mcp_get_tools_exports = {};
22
- __export(mcp_get_tools_exports, {
23
- default: () => mcp_get_tools_default
24
- });
25
- module.exports = __toCommonJS(mcp_get_tools_exports);
26
-
27
- // src/codemods/lib/create-transformer.ts
28
- function createTransformer(transformFn) {
29
- return function transformer(fileInfo, api, options) {
30
- const j = api.jscodeshift;
31
- const root = j(fileInfo.source);
32
- const context = {
33
- j,
34
- root,
35
- hasChanges: false,
36
- messages: []
37
- };
38
- transformFn(fileInfo, api, options, context);
39
- context.messages.forEach((message) => api.report(message));
40
- return context.hasChanges ? root.toSource({ quote: "single" }) : null;
41
- };
42
- }
1
+ import {
2
+ createTransformer
3
+ } from "../chunk-JNFQ6J6B.js";
4
+ import {
5
+ renameMethod,
6
+ trackClassInstances
7
+ } from "../chunk-PKCFDS7J.js";
43
8
 
44
9
  // src/codemods/v1/mcp-get-tools.ts
45
- var mcp_get_tools_default = createTransformer((fileInfo, api, options, context) => {
10
+ var mcp_get_tools_default = createTransformer((_fileInfo, _api, _options, context) => {
46
11
  const { j, root } = context;
47
- const mcpVariables = /* @__PURE__ */ new Set();
48
- root.find(j.VariableDeclarator).forEach((path) => {
49
- const node = path.node;
50
- if (node.init && node.init.type === "NewExpression" && node.init.callee.type === "Identifier" && node.init.callee.name === "MCPServer" && node.id.type === "Identifier") {
51
- mcpVariables.add(node.id.name);
52
- }
53
- });
54
- if (mcpVariables.size === 0) return;
55
- root.find(j.CallExpression).forEach((path) => {
56
- const node = path.node;
57
- if (node.callee.type !== "MemberExpression") {
58
- return;
59
- }
60
- const callee = node.callee;
61
- if (callee.object.type !== "Identifier" || !mcpVariables.has(callee.object.name)) {
62
- return;
63
- }
64
- if (callee.property.type !== "Identifier" || callee.property.name !== "getTools") {
65
- return;
66
- }
67
- callee.property.name = "listTools";
12
+ const mcpInstances = trackClassInstances(j, root, "MCPServer");
13
+ const count = renameMethod(j, root, mcpInstances, "getTools", "listTools");
14
+ if (count > 0) {
68
15
  context.hasChanges = true;
69
- });
70
- if (context.hasChanges) {
71
16
  context.messages.push(`Transformed MCPServer method: getTools \u2192 listTools`);
72
17
  }
73
18
  });
19
+ export {
20
+ mcp_get_tools_default as default
21
+ };
74
22
  //# sourceMappingURL=mcp-get-tools.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/codemods/v1/mcp-get-tools.ts","../../../src/codemods/lib/create-transformer.ts"],"sourcesContent":["import { createTransformer } from '../lib/create-transformer';\n\n/**\n * Transforms MCPServer getTools method to listTools:\n * - mcp.getTools() → mcp.listTools()\n *\n * Only transforms methods on variables that were instantiated with `new MCPServer(...)`\n */\nexport default createTransformer((fileInfo, api, options, context) => {\n const { j, root } = context;\n\n // Track variable names that are MCPServer instances\n const mcpVariables = new Set<string>();\n\n // Find all variable declarations with new MCPServer() assignments\n root.find(j.VariableDeclarator).forEach(path => {\n const node = path.node;\n\n // Check if the init is a new MCPServer() expression\n if (\n node.init &&\n node.init.type === 'NewExpression' &&\n node.init.callee.type === 'Identifier' &&\n node.init.callee.name === 'MCPServer' &&\n node.id.type === 'Identifier'\n ) {\n mcpVariables.add(node.id.name);\n }\n });\n\n // Early return if no MCPServer instances found\n if (mcpVariables.size === 0) return;\n\n // Find all call expressions where the callee is mcp.getTools\n root.find(j.CallExpression).forEach(path => {\n const node = path.node;\n\n // Check if callee is a member expression (e.g., mcp.getTools)\n if (node.callee.type !== 'MemberExpression') {\n return;\n }\n\n const callee = node.callee;\n\n // Check if the object is a MCPServer variable\n if (callee.object.type !== 'Identifier' || !mcpVariables.has(callee.object.name)) {\n return;\n }\n\n // Check if the property is 'getTools'\n if (callee.property.type !== 'Identifier' || callee.property.name !== 'getTools') {\n return;\n }\n\n // Rename the method to 'listTools'\n callee.property.name = 'listTools';\n context.hasChanges = true;\n });\n\n if (context.hasChanges) {\n context.messages.push(`Transformed MCPServer method: getTools → listTools`);\n }\n});\n","// Copied from https://github.com/vercel/ai/blob/main/packages/codemod/src/codemods/lib/create-transformer.ts\n// License: Apache-2.0\n\nimport type { FileInfo, API, JSCodeshift, Collection } from 'jscodeshift';\n\ntype TransformerFunction = (fileInfo: FileInfo, api: API, options: any, context: TransformContext) => void;\n\nexport interface TransformContext {\n /**\n * The jscodeshift API object.\n */\n j: JSCodeshift;\n\n /**\n * The root collection of the AST.\n */\n root: Collection<any>;\n\n /**\n * Codemods should set this to true if they make any changes to the AST.\n */\n hasChanges: boolean;\n\n /**\n * Codemods can append messages to this array to report information to the user.\n */\n messages: string[];\n}\n\nexport function createTransformer(transformFn: TransformerFunction) {\n // Note the return type of this function is explicitly designed to conform to\n // the signature expected by jscodeshift. For more see\n // https://github.com/facebook/jscodeshift\n return function transformer(fileInfo: FileInfo, api: API, options: any) {\n const j = api.jscodeshift;\n const root = j(fileInfo.source);\n const context: TransformContext = {\n j,\n root,\n hasChanges: false,\n messages: [],\n };\n\n // Execute the transformation\n transformFn(fileInfo, api, options, context);\n\n // Report any messages\n context.messages.forEach(message => api.report(message));\n\n // Return the transformed source code if changes were made\n return context.hasChanges ? root.toSource({ quote: 'single' }) : null;\n };\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;;;AC6BO,SAAS,kBAAkB,aAAkC;AAIlE,SAAO,SAAS,YAAY,UAAoB,KAAU,SAAc;AACtE,UAAM,IAAI,IAAI;AACd,UAAM,OAAO,EAAE,SAAS,MAAM;AAC9B,UAAM,UAA4B;AAAA,MAChC;AAAA,MACA;AAAA,MACA,YAAY;AAAA,MACZ,UAAU,CAAC;AAAA,IACb;AAGA,gBAAY,UAAU,KAAK,SAAS,OAAO;AAG3C,YAAQ,SAAS,QAAQ,aAAW,IAAI,OAAO,OAAO,CAAC;AAGvD,WAAO,QAAQ,aAAa,KAAK,SAAS,EAAE,OAAO,SAAS,CAAC,IAAI;AAAA,EACnE;AACF;;;AD5CA,IAAO,wBAAQ,kBAAkB,CAAC,UAAU,KAAK,SAAS,YAAY;AACpE,QAAM,EAAE,GAAG,KAAK,IAAI;AAGpB,QAAM,eAAe,oBAAI,IAAY;AAGrC,OAAK,KAAK,EAAE,kBAAkB,EAAE,QAAQ,UAAQ;AAC9C,UAAM,OAAO,KAAK;AAGlB,QACE,KAAK,QACL,KAAK,KAAK,SAAS,mBACnB,KAAK,KAAK,OAAO,SAAS,gBAC1B,KAAK,KAAK,OAAO,SAAS,eAC1B,KAAK,GAAG,SAAS,cACjB;AACA,mBAAa,IAAI,KAAK,GAAG,IAAI;AAAA,IAC/B;AAAA,EACF,CAAC;AAGD,MAAI,aAAa,SAAS,EAAG;AAG7B,OAAK,KAAK,EAAE,cAAc,EAAE,QAAQ,UAAQ;AAC1C,UAAM,OAAO,KAAK;AAGlB,QAAI,KAAK,OAAO,SAAS,oBAAoB;AAC3C;AAAA,IACF;AAEA,UAAM,SAAS,KAAK;AAGpB,QAAI,OAAO,OAAO,SAAS,gBAAgB,CAAC,aAAa,IAAI,OAAO,OAAO,IAAI,GAAG;AAChF;AAAA,IACF;AAGA,QAAI,OAAO,SAAS,SAAS,gBAAgB,OAAO,SAAS,SAAS,YAAY;AAChF;AAAA,IACF;AAGA,WAAO,SAAS,OAAO;AACvB,YAAQ,aAAa;AAAA,EACvB,CAAC;AAED,MAAI,QAAQ,YAAY;AACtB,YAAQ,SAAS,KAAK,yDAAoD;AAAA,EAC5E;AACF,CAAC;","names":[]}
1
+ {"version":3,"sources":["../../../src/codemods/v1/mcp-get-tools.ts"],"sourcesContent":["import { createTransformer } from '../lib/create-transformer';\nimport { trackClassInstances, renameMethod } from '../lib/utils';\n\n/**\n * Transforms MCPServer getTools method to listTools:\n * - mcp.getTools() → mcp.listTools()\n *\n * Only transforms methods on variables that were instantiated with `new MCPServer(...)`\n */\nexport default createTransformer((_fileInfo, _api, _options, context) => {\n const { j, root } = context;\n\n // Track MCPServer instances and rename method in a single optimized pass\n const mcpInstances = trackClassInstances(j, root, 'MCPServer');\n const count = renameMethod(j, root, mcpInstances, 'getTools', 'listTools');\n\n if (count > 0) {\n context.hasChanges = true;\n context.messages.push(`Transformed MCPServer method: getTools → listTools`);\n }\n});\n"],"mappings":";;;;;;;;;AASA,IAAO,wBAAQ,kBAAkB,CAAC,WAAW,MAAM,UAAU,YAAY;AACvE,QAAM,EAAE,GAAG,KAAK,IAAI;AAGpB,QAAM,eAAe,oBAAoB,GAAG,MAAM,WAAW;AAC7D,QAAM,QAAQ,aAAa,GAAG,MAAM,cAAc,YAAY,WAAW;AAEzE,MAAI,QAAQ,GAAG;AACb,YAAQ,aAAa;AACrB,YAAQ,SAAS,KAAK,yDAAoD;AAAA,EAC5E;AACF,CAAC;","names":[]}
@@ -1,74 +1,22 @@
1
- "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __export = (target, all) => {
7
- for (var name in all)
8
- __defProp(target, name, { get: all[name], enumerable: true });
9
- };
10
- var __copyProps = (to, from, except, desc) => {
11
- if (from && typeof from === "object" || typeof from === "function") {
12
- for (let key of __getOwnPropNames(from))
13
- if (!__hasOwnProp.call(to, key) && key !== except)
14
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
- }
16
- return to;
17
- };
18
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
-
20
- // src/codemods/v1/mcp-get-toolsets.ts
21
- var mcp_get_toolsets_exports = {};
22
- __export(mcp_get_toolsets_exports, {
23
- default: () => mcp_get_toolsets_default
24
- });
25
- module.exports = __toCommonJS(mcp_get_toolsets_exports);
26
-
27
- // src/codemods/lib/create-transformer.ts
28
- function createTransformer(transformFn) {
29
- return function transformer(fileInfo, api, options) {
30
- const j = api.jscodeshift;
31
- const root = j(fileInfo.source);
32
- const context = {
33
- j,
34
- root,
35
- hasChanges: false,
36
- messages: []
37
- };
38
- transformFn(fileInfo, api, options, context);
39
- context.messages.forEach((message) => api.report(message));
40
- return context.hasChanges ? root.toSource({ quote: "single" }) : null;
41
- };
42
- }
1
+ import {
2
+ createTransformer
3
+ } from "../chunk-JNFQ6J6B.js";
4
+ import {
5
+ renameMethod,
6
+ trackClassInstances
7
+ } from "../chunk-PKCFDS7J.js";
43
8
 
44
9
  // src/codemods/v1/mcp-get-toolsets.ts
45
- var mcp_get_toolsets_default = createTransformer((fileInfo, api, options, context) => {
10
+ var mcp_get_toolsets_default = createTransformer((_fileInfo, _api, _options, context) => {
46
11
  const { j, root } = context;
47
- const mcpVariables = /* @__PURE__ */ new Set();
48
- root.find(j.VariableDeclarator).forEach((path) => {
49
- const node = path.node;
50
- if (node.init && node.init.type === "NewExpression" && node.init.callee.type === "Identifier" && node.init.callee.name === "MCPServer" && node.id.type === "Identifier") {
51
- mcpVariables.add(node.id.name);
52
- }
53
- });
54
- if (mcpVariables.size === 0) return;
55
- root.find(j.CallExpression).forEach((path) => {
56
- const node = path.node;
57
- if (node.callee.type !== "MemberExpression") {
58
- return;
59
- }
60
- const callee = node.callee;
61
- if (callee.object.type !== "Identifier" || !mcpVariables.has(callee.object.name)) {
62
- return;
63
- }
64
- if (callee.property.type !== "Identifier" || callee.property.name !== "getToolsets") {
65
- return;
66
- }
67
- callee.property.name = "listToolsets";
12
+ const mcpInstances = trackClassInstances(j, root, "MCPServer");
13
+ const count = renameMethod(j, root, mcpInstances, "getToolsets", "listToolsets");
14
+ if (count > 0) {
68
15
  context.hasChanges = true;
69
- });
70
- if (context.hasChanges) {
71
16
  context.messages.push(`Transformed MCPServer method: getToolsets \u2192 listToolsets`);
72
17
  }
73
18
  });
19
+ export {
20
+ mcp_get_toolsets_default as default
21
+ };
74
22
  //# sourceMappingURL=mcp-get-toolsets.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/codemods/v1/mcp-get-toolsets.ts","../../../src/codemods/lib/create-transformer.ts"],"sourcesContent":["import { createTransformer } from '../lib/create-transformer';\n\n/**\n * Transforms MCPServer getToolsets method to listToolsets:\n * - mcp.getToolsets() → mcp.listToolsets()\n *\n * Only transforms methods on variables that were instantiated with `new MCPServer(...)`\n */\nexport default createTransformer((fileInfo, api, options, context) => {\n const { j, root } = context;\n\n // Track variable names that are MCPServer instances\n const mcpVariables = new Set<string>();\n\n // Find all variable declarations with new MCPServer() assignments\n root.find(j.VariableDeclarator).forEach(path => {\n const node = path.node;\n\n // Check if the init is a new MCPServer() expression\n if (\n node.init &&\n node.init.type === 'NewExpression' &&\n node.init.callee.type === 'Identifier' &&\n node.init.callee.name === 'MCPServer' &&\n node.id.type === 'Identifier'\n ) {\n mcpVariables.add(node.id.name);\n }\n });\n\n // Early return if no MCPServer instances found\n if (mcpVariables.size === 0) return;\n\n // Find all call expressions where the callee is mcp.getToolsets\n root.find(j.CallExpression).forEach(path => {\n const node = path.node;\n\n // Check if callee is a member expression (e.g., mcp.getToolsets)\n if (node.callee.type !== 'MemberExpression') {\n return;\n }\n\n const callee = node.callee;\n\n // Check if the object is a MCPServer variable\n if (callee.object.type !== 'Identifier' || !mcpVariables.has(callee.object.name)) {\n return;\n }\n\n // Check if the property is 'getToolsets'\n if (callee.property.type !== 'Identifier' || callee.property.name !== 'getToolsets') {\n return;\n }\n\n // Rename the method to 'listToolsets'\n callee.property.name = 'listToolsets';\n context.hasChanges = true;\n });\n\n if (context.hasChanges) {\n context.messages.push(`Transformed MCPServer method: getToolsets → listToolsets`);\n }\n});\n","// Copied from https://github.com/vercel/ai/blob/main/packages/codemod/src/codemods/lib/create-transformer.ts\n// License: Apache-2.0\n\nimport type { FileInfo, API, JSCodeshift, Collection } from 'jscodeshift';\n\ntype TransformerFunction = (fileInfo: FileInfo, api: API, options: any, context: TransformContext) => void;\n\nexport interface TransformContext {\n /**\n * The jscodeshift API object.\n */\n j: JSCodeshift;\n\n /**\n * The root collection of the AST.\n */\n root: Collection<any>;\n\n /**\n * Codemods should set this to true if they make any changes to the AST.\n */\n hasChanges: boolean;\n\n /**\n * Codemods can append messages to this array to report information to the user.\n */\n messages: string[];\n}\n\nexport function createTransformer(transformFn: TransformerFunction) {\n // Note the return type of this function is explicitly designed to conform to\n // the signature expected by jscodeshift. For more see\n // https://github.com/facebook/jscodeshift\n return function transformer(fileInfo: FileInfo, api: API, options: any) {\n const j = api.jscodeshift;\n const root = j(fileInfo.source);\n const context: TransformContext = {\n j,\n root,\n hasChanges: false,\n messages: [],\n };\n\n // Execute the transformation\n transformFn(fileInfo, api, options, context);\n\n // Report any messages\n context.messages.forEach(message => api.report(message));\n\n // Return the transformed source code if changes were made\n return context.hasChanges ? root.toSource({ quote: 'single' }) : null;\n };\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;;;AC6BO,SAAS,kBAAkB,aAAkC;AAIlE,SAAO,SAAS,YAAY,UAAoB,KAAU,SAAc;AACtE,UAAM,IAAI,IAAI;AACd,UAAM,OAAO,EAAE,SAAS,MAAM;AAC9B,UAAM,UAA4B;AAAA,MAChC;AAAA,MACA;AAAA,MACA,YAAY;AAAA,MACZ,UAAU,CAAC;AAAA,IACb;AAGA,gBAAY,UAAU,KAAK,SAAS,OAAO;AAG3C,YAAQ,SAAS,QAAQ,aAAW,IAAI,OAAO,OAAO,CAAC;AAGvD,WAAO,QAAQ,aAAa,KAAK,SAAS,EAAE,OAAO,SAAS,CAAC,IAAI;AAAA,EACnE;AACF;;;AD5CA,IAAO,2BAAQ,kBAAkB,CAAC,UAAU,KAAK,SAAS,YAAY;AACpE,QAAM,EAAE,GAAG,KAAK,IAAI;AAGpB,QAAM,eAAe,oBAAI,IAAY;AAGrC,OAAK,KAAK,EAAE,kBAAkB,EAAE,QAAQ,UAAQ;AAC9C,UAAM,OAAO,KAAK;AAGlB,QACE,KAAK,QACL,KAAK,KAAK,SAAS,mBACnB,KAAK,KAAK,OAAO,SAAS,gBAC1B,KAAK,KAAK,OAAO,SAAS,eAC1B,KAAK,GAAG,SAAS,cACjB;AACA,mBAAa,IAAI,KAAK,GAAG,IAAI;AAAA,IAC/B;AAAA,EACF,CAAC;AAGD,MAAI,aAAa,SAAS,EAAG;AAG7B,OAAK,KAAK,EAAE,cAAc,EAAE,QAAQ,UAAQ;AAC1C,UAAM,OAAO,KAAK;AAGlB,QAAI,KAAK,OAAO,SAAS,oBAAoB;AAC3C;AAAA,IACF;AAEA,UAAM,SAAS,KAAK;AAGpB,QAAI,OAAO,OAAO,SAAS,gBAAgB,CAAC,aAAa,IAAI,OAAO,OAAO,IAAI,GAAG;AAChF;AAAA,IACF;AAGA,QAAI,OAAO,SAAS,SAAS,gBAAgB,OAAO,SAAS,SAAS,eAAe;AACnF;AAAA,IACF;AAGA,WAAO,SAAS,OAAO;AACvB,YAAQ,aAAa;AAAA,EACvB,CAAC;AAED,MAAI,QAAQ,YAAY;AACtB,YAAQ,SAAS,KAAK,+DAA0D;AAAA,EAClF;AACF,CAAC;","names":[]}
1
+ {"version":3,"sources":["../../../src/codemods/v1/mcp-get-toolsets.ts"],"sourcesContent":["import { createTransformer } from '../lib/create-transformer';\nimport { trackClassInstances, renameMethod } from '../lib/utils';\n\n/**\n * Transforms MCPServer getToolsets method to listToolsets:\n * - mcp.getToolsets() → mcp.listToolsets()\n *\n * Only transforms methods on variables that were instantiated with `new MCPServer(...)`\n */\nexport default createTransformer((_fileInfo, _api, _options, context) => {\n const { j, root } = context;\n\n // Track MCPServer instances and rename method in a single optimized pass\n const mcpInstances = trackClassInstances(j, root, 'MCPServer');\n const count = renameMethod(j, root, mcpInstances, 'getToolsets', 'listToolsets');\n\n if (count > 0) {\n context.hasChanges = true;\n context.messages.push(`Transformed MCPServer method: getToolsets → listToolsets`);\n }\n});\n"],"mappings":";;;;;;;;;AASA,IAAO,2BAAQ,kBAAkB,CAAC,WAAW,MAAM,UAAU,YAAY;AACvE,QAAM,EAAE,GAAG,KAAK,IAAI;AAGpB,QAAM,eAAe,oBAAoB,GAAG,MAAM,WAAW;AAC7D,QAAM,QAAQ,aAAa,GAAG,MAAM,cAAc,eAAe,cAAc;AAE/E,MAAI,QAAQ,GAAG;AACb,YAAQ,aAAa;AACrB,YAAQ,SAAS,KAAK,+DAA0D;AAAA,EAClF;AACF,CAAC;","names":[]}