@salesforce/b2c-dx-mcp 0.4.5 → 0.4.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -53,7 +53,7 @@ Always set `--project-directory` (or `SFCC_PROJECT_DIRECTORY`). MCP clients spaw
53
53
  | `SFCC_PASSWORD` | Password/access key for WebDAV |
54
54
  | `SFCC_CLIENT_ID` | OAuth client ID |
55
55
  | `SFCC_CLIENT_SECRET` | OAuth client secret |
56
- | `SFCC_MRT_API_KEY` | MRT API key |
56
+ | `MRT_API_KEY` | MRT API key (`SFCC_MRT_API_KEY` also supported) |
57
57
 
58
58
  See the [Configuration Guide](https://salesforcecommercecloud.github.io/b2c-developer-tooling/mcp/configuration) for credentials, flags, and toolset selection.
59
59
 
@@ -50,10 +50,10 @@ export default class McpServerCommand extends BaseCommand<typeof McpServerComman
50
50
  'extra-query': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
51
51
  'extra-body': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
52
52
  'extra-headers': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
53
- 'api-key': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
53
+ 'api-key': import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
54
54
  project: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
55
55
  environment: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
56
- 'cloud-origin': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
56
+ 'cloud-origin': import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
57
57
  'credentials-file': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
58
58
  };
59
59
  /** Signal that triggered shutdown (if any) - used to exit process after finally() */
@@ -77,7 +77,7 @@ export default class McpServerCommand extends BaseCommand<typeof McpServerComman
77
77
  *
78
78
  * Priority (highest to lowest):
79
79
  * 1. CLI flags (--server, --username, --api-key, etc.)
80
- * 2. Environment variables (SFCC_SERVER, SFCC_USERNAME, SFCC_MRT_API_KEY, etc.)
80
+ * 2. Environment variables (SFCC_SERVER, SFCC_USERNAME, MRT_API_KEY, etc.)
81
81
  * 3. dw.json file (via --config flag or auto-discovered from --project-directory)
82
82
  * 4. ~/.mobify file (for MRT API key)
83
83
  */
@@ -29,10 +29,10 @@
29
29
  * ### MRT Flags (from MrtCommand.baseFlags)
30
30
  * | Flag | Env Variable | Description |
31
31
  * |------|--------------|-------------|
32
- * | `--api-key` | `SFCC_MRT_API_KEY` | MRT API key for Managed Runtime operations |
33
- * | `--project` | `SFCC_MRT_PROJECT` | MRT project slug (required for MRT tools) |
34
- * | `--environment` | `SFCC_MRT_ENVIRONMENT` | MRT environment (e.g., staging, production) |
35
- * | `--cloud-origin` | `SFCC_MRT_CLOUD_ORIGIN` | MRT cloud origin URL for environment-specific ~/.mobify config |
32
+ * | `--api-key` | `MRT_API_KEY` | MRT API key for Managed Runtime operations |
33
+ * | `--project` | `MRT_PROJECT` | MRT project slug (required for MRT tools) |
34
+ * | `--environment` | `MRT_ENVIRONMENT` | MRT environment (e.g., staging, production) |
35
+ * | `--cloud-origin` | `MRT_CLOUD_ORIGIN` | MRT cloud origin URL for environment-specific ~/.mobify config |
36
36
  *
37
37
  * ### B2C Instance Flags (from InstanceCommand.baseFlags)
38
38
  * | Flag | Env Variable | Description |
@@ -79,7 +79,7 @@
79
79
  * ### MRT API Key
80
80
  * Priority (highest to lowest):
81
81
  * 1. `--api-key` flag
82
- * 2. `SFCC_MRT_API_KEY` environment variable
82
+ * 2. `MRT_API_KEY` environment variable (SFCC_MRT_API_KEY also supported)
83
83
  * 3. `~/.mobify` config file (or `~/.mobify--[hostname]` if `--cloud-origin` is set)
84
84
  *
85
85
  * ## Toolset Validation
@@ -101,7 +101,7 @@
101
101
  * ```json
102
102
  * {
103
103
  * "args": ["--toolsets", "MRT", "--project", "my-project", "--environment", "staging", "--allow-non-ga-tools"],
104
- * "env": { "SFCC_MRT_API_KEY": "your-api-key" }
104
+ * "env": { "MRT_API_KEY": "your-api-key" }
105
105
  * }
106
106
  * ```
107
107
  *
@@ -232,7 +232,7 @@ export default class McpServerCommand extends BaseCommand {
232
232
  *
233
233
  * Priority (highest to lowest):
234
234
  * 1. CLI flags (--server, --username, --api-key, etc.)
235
- * 2. Environment variables (SFCC_SERVER, SFCC_USERNAME, SFCC_MRT_API_KEY, etc.)
235
+ * 2. Environment variables (SFCC_SERVER, SFCC_USERNAME, MRT_API_KEY, etc.)
236
236
  * 3. dw.json file (via --config flag or auto-discovered from --project-directory)
237
237
  * 4. ~/.mobify file (for MRT API key)
238
238
  */
@@ -26,11 +26,11 @@
26
26
  * - Flags (highest priority) merged with dw.json (auto-discovered or via --config)
27
27
  *
28
28
  * **MRT Auth** (for Managed Runtime tools):
29
- * 1. `--api-key` flag (oclif also checks `SFCC_MRT_API_KEY` env var)
29
+ * 1. `--api-key` flag (oclif also checks `MRT_API_KEY` env var; `SFCC_MRT_API_KEY` also supported)
30
30
  * 2. `~/.mobify` config file (or `~/.mobify--[hostname]` if `--cloud-origin` is set)
31
31
  *
32
32
  * **MRT Origin** (for Managed Runtime API URL):
33
- * 1. `--cloud-origin` flag (oclif also checks `SFCC_MRT_CLOUD_ORIGIN` env var)
33
+ * 1. `--cloud-origin` flag (oclif also checks `MRT_CLOUD_ORIGIN` env var; `SFCC_MRT_CLOUD_ORIGIN` also supported)
34
34
  * 2. `mrtOrigin` field in dw.json
35
35
  * 3. Default: `https://cloud.mobify.com`
36
36
  *
@@ -48,11 +48,11 @@ import { WebDavClient, type CustomApisClient, type ScapiSchemasClient } from '@s
48
48
  export interface MrtConfig {
49
49
  /** Pre-resolved auth strategy for MRT API operations */
50
50
  auth?: AuthStrategy;
51
- /** MRT project slug from --project flag or SFCC_MRT_PROJECT env var */
51
+ /** MRT project slug from --project flag or MRT_PROJECT env var */
52
52
  project?: string;
53
- /** MRT environment from --environment flag or SFCC_MRT_ENVIRONMENT env var */
53
+ /** MRT environment from --environment flag or MRT_ENVIRONMENT env var */
54
54
  environment?: string;
55
- /** MRT API origin URL from --cloud-origin flag, SFCC_MRT_CLOUD_ORIGIN env var, or mrtOrigin in dw.json */
55
+ /** MRT API origin URL from --cloud-origin flag, MRT_CLOUD_ORIGIN env var, or mrtOrigin in dw.json */
56
56
  origin?: string;
57
57
  }
58
58
  /**
package/dist/services.js CHANGED
@@ -31,11 +31,11 @@
31
31
  * - Flags (highest priority) merged with dw.json (auto-discovered or via --config)
32
32
  *
33
33
  * **MRT Auth** (for Managed Runtime tools):
34
- * 1. `--api-key` flag (oclif also checks `SFCC_MRT_API_KEY` env var)
34
+ * 1. `--api-key` flag (oclif also checks `MRT_API_KEY` env var; `SFCC_MRT_API_KEY` also supported)
35
35
  * 2. `~/.mobify` config file (or `~/.mobify--[hostname]` if `--cloud-origin` is set)
36
36
  *
37
37
  * **MRT Origin** (for Managed Runtime API URL):
38
- * 1. `--cloud-origin` flag (oclif also checks `SFCC_MRT_CLOUD_ORIGIN` env var)
38
+ * 1. `--cloud-origin` flag (oclif also checks `MRT_CLOUD_ORIGIN` env var; `SFCC_MRT_CLOUD_ORIGIN` also supported)
39
39
  * 2. `mrtOrigin` field in dw.json
40
40
  * 3. Default: `https://cloud.mobify.com`
41
41
  *
@@ -13,7 +13,7 @@
13
13
  * a loader function that calls {@link Services.fromResolvedConfig}:
14
14
  *
15
15
  * - **B2CInstance**: Loaded from flags + dw.json on each call. Available when `requiresInstance: true`.
16
- * - **MRT Auth**: Loaded from --api-key → SFCC_MRT_API_KEY → ~/.mobify on each call. Available when `requiresMrtAuth: true`.
16
+ * - **MRT Auth**: Loaded from --api-key → MRT_API_KEY → ~/.mobify on each call. Available when `requiresMrtAuth: true`.
17
17
  *
18
18
  * This "load on each call" pattern provides:
19
19
  * - Fresh configuration on each tool invocation (picks up changes to config files)
@@ -115,7 +115,7 @@ export interface ToolAdapterOptions<TInput, TOutput> {
115
115
  requiresInstance?: boolean;
116
116
  /**
117
117
  * Whether this tool requires MRT API authentication.
118
- * When true, creates an ApiKeyStrategy from SFCC_MRT_API_KEY environment variable.
118
+ * When true, creates an ApiKeyStrategy from MRT_API_KEY environment variable.
119
119
  * Defaults to false.
120
120
  */
121
121
  requiresMrtAuth?: boolean;
@@ -18,7 +18,7 @@
18
18
  * a loader function that calls {@link Services.fromResolvedConfig}:
19
19
  *
20
20
  * - **B2CInstance**: Loaded from flags + dw.json on each call. Available when `requiresInstance: true`.
21
- * - **MRT Auth**: Loaded from --api-key → SFCC_MRT_API_KEY → ~/.mobify on each call. Available when `requiresMrtAuth: true`.
21
+ * - **MRT Auth**: Loaded from --api-key → MRT_API_KEY → ~/.mobify on each call. Available when `requiresMrtAuth: true`.
22
22
  *
23
23
  * This "load on each call" pattern provides:
24
24
  * - Fresh configuration on each tool invocation (picks up changes to config files)
@@ -200,7 +200,7 @@ export function createToolAdapter(options, loadServices) {
200
200
  let mrtConfig;
201
201
  if (requiresMrtAuth) {
202
202
  if (!services.mrtConfig.auth) {
203
- return errorResult('MRT auth error: MRT API key required. Provide --api-key, set SFCC_MRT_API_KEY environment variable, or configure ~/.mobify');
203
+ return errorResult('MRT auth error: MRT API key required. Provide --api-key, set MRT_API_KEY environment variable, or configure ~/.mobify');
204
204
  }
205
205
  mrtConfig = {
206
206
  auth: services.mrtConfig.auth,
@@ -14,6 +14,9 @@ import { z } from 'zod';
14
14
  import { createToolAdapter, jsonResult } from '../adapter.js';
15
15
  import { findAndDeployCartridges, getActiveCodeVersion } from '@salesforce/b2c-tooling-sdk/operations/code';
16
16
  import { getLogger } from '@salesforce/b2c-tooling-sdk/logging';
17
+ /** Reminder shown after deploy so users add cartridges to the site cartridge path. */
18
+ const CARTRIDGE_PATH_REMINDER = "If this is a new or updated cartridge, add it to your site's cartridge path in Business Manager: " +
19
+ 'Sites → Manage Sites → [your site] → Settings tab → Cartridges field.';
17
20
  /**
18
21
  * Creates the cartridge_deploy tool.
19
22
  *
@@ -36,7 +39,8 @@ function createCartridgeDeployTool(loadServices, injections) {
36
39
  'Searches the directory for cartridges (by .project files), applies include/exclude filters, ' +
37
40
  'creates a zip archive, uploads via WebDAV, and optionally reloads the code version. ' +
38
41
  'Use this tool to deploy custom code cartridges for SFRA or other B2C Commerce code. ' +
39
- 'Requires the instance to have a code version configured.',
42
+ 'Requires the instance to have a code version configured. ' +
43
+ "After deploy, add new cartridges to your site's cartridge path in Business Manager: Sites → Manage Sites → [site] → Settings tab → Cartridges.",
40
44
  toolsets: ['CARTRIDGES'],
41
45
  isGA: false,
42
46
  requiresInstance: true,
@@ -100,7 +104,10 @@ function createCartridgeDeployTool(loadServices, injections) {
100
104
  }, '[Cartridges] Deploying cartridges with computed options');
101
105
  // Deploy cartridges
102
106
  const result = await findAndDeployCartridgesFn(instance, directory, options);
103
- return result;
107
+ return {
108
+ ...result,
109
+ postInstructions: CARTRIDGE_PATH_REMINDER,
110
+ };
104
111
  }
105
112
  catch (error) {
106
113
  // Handle communication and authentication errors
@@ -2,12 +2,17 @@ import type { McpTool } from '../../utils/index.js';
2
2
  import type { Services } from '../../services.js';
3
3
  import type { PushResult, PushOptions } from '@salesforce/b2c-tooling-sdk/operations/mrt';
4
4
  import type { AuthStrategy } from '@salesforce/b2c-tooling-sdk/auth';
5
+ import { type ProjectType } from '@salesforce/b2c-tooling-sdk/discovery';
5
6
  /**
6
7
  * Optional dependency injections for testing.
7
8
  */
8
9
  interface MrtToolInjections {
9
10
  /** Mock pushBundle function for testing */
10
11
  pushBundle?: (options: PushOptions, auth: AuthStrategy) => Promise<PushResult>;
12
+ /** Mock detectWorkspaceType function for testing */
13
+ detectWorkspaceType?: (path: string) => Promise<{
14
+ projectTypes: ProjectType[];
15
+ }>;
11
16
  }
12
17
  /**
13
18
  * Creates all tools for the MRT toolset.
@@ -13,7 +13,98 @@
13
13
  import { z } from 'zod';
14
14
  import { createToolAdapter, jsonResult } from '../adapter.js';
15
15
  import { pushBundle } from '@salesforce/b2c-tooling-sdk/operations/mrt';
16
+ import { detectWorkspaceType } from '@salesforce/b2c-tooling-sdk/discovery';
16
17
  import { getLogger } from '@salesforce/b2c-tooling-sdk/logging';
18
+ /**
19
+ * Parses a glob pattern string into an array of patterns.
20
+ * Accepts either a JSON array (e.g. '["server/**\/*", "ssr.{js,mjs}"]')
21
+ * or a comma-separated string (e.g. 'server/**\/*,ssr.js').
22
+ * JSON array format supports brace expansion in individual patterns.
23
+ */
24
+ function parseGlobPatterns(value) {
25
+ const trimmed = value.trim();
26
+ if (trimmed.startsWith('[')) {
27
+ const parsed = JSON.parse(trimmed);
28
+ if (!Array.isArray(parsed) || !parsed.every((item) => typeof item === 'string')) {
29
+ throw new Error('Invalid glob pattern array: expected an array of strings');
30
+ }
31
+ return parsed.map((s) => s.trim()).filter(Boolean);
32
+ }
33
+ return trimmed
34
+ .split(',')
35
+ .map((s) => s.trim())
36
+ .filter(Boolean);
37
+ }
38
+ const MRT_DEFAULTS = {
39
+ 'storefront-next': {
40
+ // ssrEntryPoint is 'streamingHandler' (production + MRT_BUNDLE_TYPE!=='ssr') or 'ssr' otherwise.
41
+ // Include both patterns so the bundle works regardless of MRT_BUNDLE_TYPE / mode.
42
+ ssrOnly: [
43
+ 'server/**/*',
44
+ 'loader.js',
45
+ 'streamingHandler.{js,mjs,cjs}',
46
+ 'streamingHandler.{js,mjs,cjs}.map',
47
+ 'ssr.{js,mjs,cjs}',
48
+ 'ssr.{js,mjs,cjs}.map',
49
+ '!static/**/*',
50
+ 'sfnext-server-*.mjs',
51
+ '!**/*.stories.tsx',
52
+ '!**/*.stories.ts',
53
+ '!**/*-snapshot.tsx',
54
+ '!.storybook/**/*',
55
+ '!storybook-static/**/*',
56
+ '!**/__mocks__/**/*',
57
+ '!**/__snapshots__/**/*',
58
+ ],
59
+ ssrShared: [
60
+ 'client/**/*',
61
+ 'static/**/*',
62
+ '**/*.css',
63
+ '**/*.png',
64
+ '**/*.jpg',
65
+ '**/*.jpeg',
66
+ '**/*.gif',
67
+ '**/*.svg',
68
+ '**/*.ico',
69
+ '**/*.woff',
70
+ '**/*.woff2',
71
+ '**/*.ttf',
72
+ '**/*.eot',
73
+ '!**/*.stories.tsx',
74
+ '!**/*.stories.ts',
75
+ '!**/*-snapshot.tsx',
76
+ '!.storybook/**/*',
77
+ '!storybook-static/**/*',
78
+ '!**/__mocks__/**/*',
79
+ '!**/__snapshots__/**/*',
80
+ ],
81
+ buildDirectory: 'build',
82
+ },
83
+ 'pwa-kit-v3': {
84
+ ssrOnly: ['ssr.js', 'ssr.js.map', 'node_modules/**/*.*'],
85
+ ssrShared: ['static/ico/favicon.ico', 'static/robots.txt', '**/*.js', '**/*.js.map', '**/*.json'],
86
+ buildDirectory: 'build',
87
+ },
88
+ default: {
89
+ ssrOnly: ['ssr.js', 'ssr.mjs', 'server/**/*'],
90
+ ssrShared: ['static/**/*', 'client/**/*'],
91
+ buildDirectory: 'build',
92
+ },
93
+ };
94
+ /**
95
+ * Returns MRT bundle defaults for the given project types.
96
+ * For hybrid projects (multiple types detected), prefers storefront-next over pwa-kit-v3.
97
+ *
98
+ * @param projectTypes - Detected project types from workspace discovery
99
+ * @returns Defaults for ssrOnly, ssrShared, and buildDirectory
100
+ */
101
+ function getDefaultsForProjectTypes(projectTypes) {
102
+ if (projectTypes.includes('storefront-next'))
103
+ return MRT_DEFAULTS['storefront-next'];
104
+ if (projectTypes.includes('pwa-kit-v3'))
105
+ return MRT_DEFAULTS['pwa-kit-v3'];
106
+ return MRT_DEFAULTS.default;
107
+ }
17
108
  /**
18
109
  * Creates the mrt_bundle_push tool.
19
110
  *
@@ -28,24 +119,28 @@ import { getLogger } from '@salesforce/b2c-tooling-sdk/logging';
28
119
  */
29
120
  function createMrtBundlePushTool(loadServices, injections) {
30
121
  const pushBundleFn = injections?.pushBundle || pushBundle;
122
+ const detectWorkspaceTypeFn = injections?.detectWorkspaceType ?? detectWorkspaceType;
31
123
  return createToolAdapter({
32
124
  name: 'mrt_bundle_push',
33
125
  description: 'Bundle a pre-built PWA Kit or Storefront Next project and push to Managed Runtime. Optionally deploy to a target environment.',
34
126
  toolsets: ['MRT', 'PWAV3', 'STOREFRONTNEXT'],
35
127
  isGA: false,
36
- // MRT operations use ApiKeyStrategy from SFCC_MRT_API_KEY or ~/.mobify
128
+ // MRT operations use ApiKeyStrategy from MRT_API_KEY or ~/.mobify
37
129
  requiresMrtAuth: true,
38
130
  inputSchema: {
39
- buildDirectory: z.string().optional().describe('Path to build directory (default: ./build)'),
131
+ buildDirectory: z
132
+ .string()
133
+ .optional()
134
+ .describe('Path to build directory. Defaults vary by project type: Storefront Next, PWA Kit v3, or generic (./build).'),
40
135
  message: z.string().optional().describe('Deployment message'),
41
136
  ssrOnly: z
42
137
  .string()
43
138
  .optional()
44
- .describe('Glob patterns for server-only files, comma-separated (default: ssr.js,ssr.mjs,server/**/*)'),
139
+ .describe('Glob patterns for server-only files (comma-separated or JSON array). Defaults vary by project type: Storefront Next, PWA Kit v3, or generic.'),
45
140
  ssrShared: z
46
141
  .string()
47
142
  .optional()
48
- .describe('Glob patterns for shared files, comma-separated (default: static/**/*,client/**/*)'),
143
+ .describe('Glob patterns for shared files (comma-separated or JSON array). Defaults vary by project type: Storefront Next, PWA Kit v3, or generic.'),
49
144
  deploy: z
50
145
  .boolean()
51
146
  .optional()
@@ -56,7 +151,7 @@ function createMrtBundlePushTool(loadServices, injections) {
56
151
  // Get project from --project flag (required)
57
152
  const project = context.mrtConfig?.project;
58
153
  if (!project) {
59
- throw new Error('MRT project error: Project is required. Provide --project flag or set SFCC_MRT_PROJECT environment variable.');
154
+ throw new Error('MRT project error: Project is required. Provide --project flag or set MRT_PROJECT environment variable.');
60
155
  }
61
156
  // Get environment from --environment flag (optional)
62
157
  // When deploy is false, environment is undefined (bundle push only, no deployment)
@@ -66,15 +161,18 @@ function createMrtBundlePushTool(loadServices, injections) {
66
161
  environment = context.mrtConfig?.environment;
67
162
  if (!environment) {
68
163
  throw new Error('MRT deployment error: Environment is required when deploy=true. ' +
69
- 'Provide --environment flag, set SFCC_MRT_ENVIRONMENT environment variable, or set mrtEnvironment in dw.json.');
164
+ 'Provide --environment flag, set MRT_ENVIRONMENT environment variable, or set mrtEnvironment in dw.json.');
70
165
  }
71
166
  }
72
167
  // Get origin from --cloud-origin flag or mrtOrigin config (optional)
73
168
  const origin = context.mrtConfig?.origin;
74
- // Parse comma-separated glob patterns (same as CLI defaults)
75
- const ssrOnly = (args.ssrOnly || 'ssr.js,ssr.mjs,server/**/*').split(',').map((s) => s.trim());
76
- const ssrShared = (args.ssrShared || 'static/**/*,client/**/*').split(',').map((s) => s.trim());
77
- const buildDirectory = context.services.resolveWithProjectDirectory(args.buildDirectory || 'build');
169
+ // Detect project type and get project-type-aware defaults
170
+ const projectDir = context.services.resolveWithProjectDirectory();
171
+ const { projectTypes } = await detectWorkspaceTypeFn(projectDir);
172
+ const defaults = getDefaultsForProjectTypes(projectTypes);
173
+ const ssrOnly = args.ssrOnly ? parseGlobPatterns(args.ssrOnly) : defaults.ssrOnly;
174
+ const ssrShared = args.ssrShared ? parseGlobPatterns(args.ssrShared) : defaults.ssrShared;
175
+ const buildDirectory = context.services.resolveWithProjectDirectory(args.buildDirectory ?? defaults.buildDirectory);
78
176
  // Log all computed variables before pushing bundle
79
177
  const logger = getLogger();
80
178
  logger.debug({
@@ -83,6 +181,7 @@ function createMrtBundlePushTool(loadServices, injections) {
83
181
  origin,
84
182
  buildDirectory,
85
183
  message: args.message,
184
+ projectTypes,
86
185
  ssrOnly,
87
186
  ssrShared,
88
187
  }, '[MRT] Pushing bundle with computed options');
@@ -143,7 +143,7 @@
143
143
  },
144
144
  "api-key": {
145
145
  "description": "MRT API key",
146
- "env": "SFCC_MRT_API_KEY",
146
+ "env": "MRT_API_KEY",
147
147
  "helpGroup": "AUTH",
148
148
  "name": "api-key",
149
149
  "hasDynamicHelp": false,
@@ -153,16 +153,19 @@
153
153
  "project": {
154
154
  "char": "p",
155
155
  "description": "MRT project slug (or set mrtProject in dw.json)",
156
- "env": "SFCC_MRT_PROJECT",
156
+ "env": "MRT_PROJECT",
157
157
  "name": "project",
158
158
  "hasDynamicHelp": false,
159
159
  "multiple": false,
160
160
  "type": "option"
161
161
  },
162
162
  "environment": {
163
+ "aliases": [
164
+ "target"
165
+ ],
163
166
  "char": "e",
164
167
  "description": "MRT environment (e.g., staging, production; or set mrtEnvironment in dw.json)",
165
- "env": "SFCC_MRT_ENVIRONMENT",
168
+ "env": "MRT_ENVIRONMENT",
166
169
  "name": "environment",
167
170
  "hasDynamicHelp": false,
168
171
  "multiple": false,
@@ -170,7 +173,7 @@
170
173
  },
171
174
  "cloud-origin": {
172
175
  "description": "MRT cloud origin URL (or set mrtOrigin in dw.json; default: https://cloud.mobify.com)",
173
- "env": "SFCC_MRT_CLOUD_ORIGIN",
176
+ "env": "MRT_CLOUD_ORIGIN",
174
177
  "name": "cloud-origin",
175
178
  "hasDynamicHelp": false,
176
179
  "multiple": false,
@@ -387,5 +390,5 @@
387
390
  "enableJsonFlag": false
388
391
  }
389
392
  },
390
- "version": "0.4.5"
393
+ "version": "0.4.7"
391
394
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@salesforce/b2c-dx-mcp",
3
3
  "description": "MCP server for B2C Commerce developer experience tools",
4
- "version": "0.4.5",
4
+ "version": "0.4.7",
5
5
  "author": "Salesforce",
6
6
  "license": "Apache-2.0",
7
7
  "repository": "SalesforceCommerceCloud/b2c-developer-tooling",
@@ -80,7 +80,7 @@
80
80
  "yaml": "2.8.1",
81
81
  "postcss": "8.5.6",
82
82
  "zod": "3.25.76",
83
- "@salesforce/b2c-tooling-sdk": "0.5.4"
83
+ "@salesforce/b2c-tooling-sdk": "0.6.0"
84
84
  },
85
85
  "devDependencies": {
86
86
  "@eslint/compat": "^1",