@sfdxy/anypoint-connect 0.8.1 → 0.9.0

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 (36) hide show
  1. package/README.md +51 -1
  2. package/dist/api/CloudHub2Api.d.ts +43 -32
  3. package/dist/api/CloudHub2Api.d.ts.map +1 -1
  4. package/dist/api/CloudHub2Api.js +17 -0
  5. package/dist/api/CloudHub2Api.js.map +1 -1
  6. package/dist/api/ExchangeApi.d.ts +17 -0
  7. package/dist/api/ExchangeApi.d.ts.map +1 -1
  8. package/dist/api/ExchangeApi.js +30 -0
  9. package/dist/api/ExchangeApi.js.map +1 -1
  10. package/dist/api/index.d.ts +2 -2
  11. package/dist/api/index.d.ts.map +1 -1
  12. package/dist/api/index.js +1 -1
  13. package/dist/api/index.js.map +1 -1
  14. package/dist/client/HttpClient.d.ts +8 -0
  15. package/dist/client/HttpClient.d.ts.map +1 -1
  16. package/dist/client/HttpClient.js +16 -0
  17. package/dist/client/HttpClient.js.map +1 -1
  18. package/dist/commands/deploy.d.ts.map +1 -1
  19. package/dist/commands/deploy.js +16 -47
  20. package/dist/commands/deploy.js.map +1 -1
  21. package/dist/mcp/tools/applications.d.ts.map +1 -1
  22. package/dist/mcp/tools/applications.js +292 -67
  23. package/dist/mcp/tools/applications.js.map +1 -1
  24. package/dist/mcp/tools/exchange.d.ts +2 -1
  25. package/dist/mcp/tools/exchange.d.ts.map +1 -1
  26. package/dist/mcp/tools/exchange.js +225 -2
  27. package/dist/mcp/tools/exchange.js.map +1 -1
  28. package/dist/mcp/tools/shared.d.ts +18 -0
  29. package/dist/mcp/tools/shared.d.ts.map +1 -1
  30. package/dist/mcp/tools/shared.js +17 -0
  31. package/dist/mcp/tools/shared.js.map +1 -1
  32. package/dist/safety/deployment.d.ts +77 -0
  33. package/dist/safety/deployment.d.ts.map +1 -0
  34. package/dist/safety/deployment.js +132 -0
  35. package/dist/safety/deployment.js.map +1 -0
  36. package/package.json +1 -1
@@ -1,9 +1,14 @@
1
1
  /**
2
2
  * MCP Tool Registrar — Exchange tools
3
- * search_exchange, download_api_spec, compare_environments
3
+ * search_exchange, download_api_spec, compare_environments, get_exchange_asset,
4
+ * publish_app_jar, deploy_jar
4
5
  */
6
+ import * as path from 'path';
5
7
  import { z } from 'zod';
6
- import { mcpError } from './shared.js';
8
+ import { mcpError, mcpText, dryRunPreview } from './shared.js';
9
+ import { validateJarFile } from '../../safety/guards.js';
10
+ import { buildCreatePayload, mergeForArtifactUpdate } from '../../safety/deployment.js';
11
+ import { errorMessage } from '../../utils/errors.js';
7
12
  export function registerExchangeTools(server, client) {
8
13
  server.registerTool('search_exchange', {
9
14
  title: 'Search Exchange',
@@ -182,5 +187,223 @@ export function registerExchangeTools(server, client) {
182
187
  return mcpError(error);
183
188
  }
184
189
  });
190
+ server.registerTool('publish_app_jar', {
191
+ title: 'Publish Application JAR to Exchange',
192
+ description: 'Uploads a locally built Mule application JAR to Anypoint Exchange as a type "app" asset, using the Exchange v2 publication API (multipart, classifier mule-application). This is the missing first step for deploying a freshly built artifact: CloudHub 2.0 deployments reference an artifact already in Exchange, and this tool puts it there. Returns the published coordinates (groupId, assetId, version) ready to feed into deploy_app / update_app_artifact. Destructive: publishing a version that already exists may be rejected by Exchange. Pass confirm:true to upload.',
193
+ inputSchema: {
194
+ jarPath: z
195
+ .string()
196
+ .describe('Path to the built .jar file (e.g. "target/example-api-1.0.0-mule-application.jar")'),
197
+ assetId: z
198
+ .string()
199
+ .optional()
200
+ .describe('Exchange asset ID. Default: the jar filename without the .jar extension.'),
201
+ assetVersion: z.string().optional().describe('Exchange asset version (default: "1.0.0").'),
202
+ groupId: z.string().optional().describe('Exchange group ID (default: the organization ID).'),
203
+ confirm: z
204
+ .boolean()
205
+ .optional()
206
+ .describe('Set true to upload. When omitted/false, returns a dry-run preview and uploads nothing.'),
207
+ },
208
+ annotations: { readOnlyHint: false, destructiveHint: true, idempotentHint: false },
209
+ }, async ({ jarPath, assetId, assetVersion, groupId, confirm }) => {
210
+ try {
211
+ const check = validateJarFile(jarPath);
212
+ if (!check.valid) {
213
+ return mcpText(`❌ ${check.error}`);
214
+ }
215
+ const orgId = await client.getDefaultOrgId();
216
+ const resolvedGroupId = groupId || orgId;
217
+ const resolvedAssetId = assetId || path.basename(jarPath).replace(/\.jar$/, '');
218
+ const resolvedVersion = assetVersion || '1.0.0';
219
+ if (!confirm) {
220
+ return dryRunPreview({
221
+ action: 'publish app jar to Exchange',
222
+ jarPath,
223
+ coordinates: {
224
+ groupId: resolvedGroupId,
225
+ assetId: resolvedAssetId,
226
+ version: resolvedVersion,
227
+ classifier: 'mule-application',
228
+ },
229
+ });
230
+ }
231
+ const result = await client.exchange.publishAppAsset(orgId, resolvedGroupId, resolvedAssetId, resolvedVersion, jarPath);
232
+ return mcpText({
233
+ message: `✅ Published "${result.assetId}" v${result.version} to Exchange`,
234
+ coordinates: {
235
+ groupId: result.groupId,
236
+ assetId: result.assetId,
237
+ version: result.version,
238
+ packaging: 'jar',
239
+ },
240
+ tip: 'Deploy it with deploy_app (new app) or update_app_artifact (existing app).',
241
+ });
242
+ }
243
+ catch (error) {
244
+ return mcpError(error);
245
+ }
246
+ });
247
+ server.registerTool('deploy_jar', {
248
+ title: 'Deploy JAR (Publish + Deploy)',
249
+ description: 'One-call deploy of a locally built Mule application JAR: publishes it to Exchange, then deploys it to CloudHub 2.0 — creating the app if it does not exist, or safely updating just the artifact ref if it does. For an existing app, create-only settings (runtime, region, vcores, replicas, jvmArgs, properties) are rejected, because an update must not restate infrastructure. Pass confirm:true to run; without it you get a dry-run preview and nothing is published or deployed.',
250
+ inputSchema: {
251
+ jarPath: z
252
+ .string()
253
+ .describe('Path to the built .jar file (e.g. "target/example-api-1.0.0-mule-application.jar")'),
254
+ appName: z.string().describe('CloudHub 2.0 application name'),
255
+ environment: z.string().describe('Environment name (e.g. "Sandbox", "Production") or environment ID'),
256
+ assetId: z
257
+ .string()
258
+ .optional()
259
+ .describe('Exchange asset ID (also used as the deployment artifactId). Default: jar filename without .jar.'),
260
+ assetVersion: z
261
+ .string()
262
+ .optional()
263
+ .describe('Exchange asset version and deployment version (default: "1.0.0").'),
264
+ groupId: z.string().optional().describe('Exchange/Maven group ID (default: the organization ID).'),
265
+ // create-only settings (rejected when the app already exists)
266
+ runtime: z.string().optional().describe('[new app only] Mule runtime version (default: "4.8.0").'),
267
+ replicas: z
268
+ .number()
269
+ .min(1)
270
+ .max(8)
271
+ .optional()
272
+ .describe('[new app only] Number of replicas (default: 1).'),
273
+ region: z
274
+ .string()
275
+ .optional()
276
+ .describe('[new app only] CloudHub 2.0 target region (default: "cloudhub-us-east-2").'),
277
+ vcores: z.string().optional().describe('[new app only] vCore size (default: "0.1").'),
278
+ properties: z.record(z.string()).optional().describe('[new app only] Application properties.'),
279
+ secureProperties: z
280
+ .record(z.string())
281
+ .optional()
282
+ .describe('[new app only] Secure application properties.'),
283
+ jvmArgs: z.string().optional().describe('[new app only] JVM arguments.'),
284
+ wait: z
285
+ .boolean()
286
+ .optional()
287
+ .describe('Wait for the deployment to reach a running state (default: false).'),
288
+ confirm: z
289
+ .boolean()
290
+ .optional()
291
+ .describe('Set true to publish and deploy. When omitted/false, returns a dry-run preview only.'),
292
+ },
293
+ annotations: { readOnlyHint: false, destructiveHint: true, idempotentHint: false },
294
+ }, async ({ jarPath, appName, environment, assetId, assetVersion, groupId, runtime, replicas, region, vcores, properties, secureProperties, jvmArgs, wait, confirm, }) => {
295
+ try {
296
+ const check = validateJarFile(jarPath);
297
+ if (!check.valid) {
298
+ return mcpText(`❌ ${check.error}`);
299
+ }
300
+ const orgId = await client.getDefaultOrgId();
301
+ const env = await client.accessManagement.resolveEnvironment(orgId, environment);
302
+ const existing = await client.cloudHub2.findByName(orgId, env.id, appName);
303
+ const resolvedGroupId = groupId || orgId;
304
+ const resolvedAssetId = assetId || path.basename(jarPath).replace(/\.jar$/, '');
305
+ const resolvedVersion = assetVersion || '1.0.0';
306
+ // An update must not restate infra — reject create-only settings for an existing app.
307
+ if (existing) {
308
+ const rejected = [
309
+ runtime && 'runtime',
310
+ region && 'region',
311
+ vcores && 'vcores',
312
+ replicas && 'replicas',
313
+ jvmArgs && 'jvmArgs',
314
+ properties && 'properties',
315
+ secureProperties && 'secureProperties',
316
+ ].filter(Boolean);
317
+ if (rejected.length) {
318
+ return mcpText(`❌ "${appName}" already exists in ${env.name}; deploy_jar updates only the artifact ref and cannot change infrastructure. ` +
319
+ `Remove these settings (${rejected.join(', ')}), or use update_app_settings / a fresh deploy to change them.`);
320
+ }
321
+ }
322
+ const ref = {
323
+ groupId: resolvedGroupId,
324
+ artifactId: resolvedAssetId,
325
+ version: resolvedVersion,
326
+ packaging: 'jar',
327
+ };
328
+ const action = existing ? 'publish + update artifact ref' : 'publish + create deployment';
329
+ if (!confirm) {
330
+ return dryRunPreview({
331
+ action,
332
+ app: appName,
333
+ environment: env.name,
334
+ publish: {
335
+ groupId: resolvedGroupId,
336
+ assetId: resolvedAssetId,
337
+ version: resolvedVersion,
338
+ classifier: 'mule-application',
339
+ },
340
+ deploy: existing
341
+ ? {
342
+ mode: 'update',
343
+ from: existing.application?.ref,
344
+ to: ref,
345
+ preserved: 'runtime, target/space, replicas, resources, settings',
346
+ }
347
+ : {
348
+ mode: 'create',
349
+ ref,
350
+ runtime: runtime || '4.8.0',
351
+ region: region || 'cloudhub-us-east-2',
352
+ vcores: vcores || '0.1',
353
+ replicas: replicas || 1,
354
+ },
355
+ });
356
+ }
357
+ // 1) Publish the jar to Exchange.
358
+ const published = await client.exchange.publishAppAsset(orgId, resolvedGroupId, resolvedAssetId, resolvedVersion, jarPath);
359
+ // 2) Deploy: safe ref-only update for an existing app, full create otherwise.
360
+ let deployment;
361
+ if (existing) {
362
+ const merged = mergeForArtifactUpdate(existing, ref);
363
+ deployment = await client.cloudHub2.updateArtifactRef(orgId, env.id, existing.id, merged.application.ref);
364
+ }
365
+ else {
366
+ const payload = buildCreatePayload({
367
+ appName,
368
+ groupId: resolvedGroupId,
369
+ artifactId: resolvedAssetId,
370
+ version: resolvedVersion,
371
+ runtime,
372
+ replicas,
373
+ region,
374
+ vcores,
375
+ properties,
376
+ secureProperties,
377
+ jvmArgs,
378
+ });
379
+ deployment = await client.cloudHub2.createDeployment(orgId, env.id, payload);
380
+ }
381
+ let waitResult;
382
+ if (wait) {
383
+ try {
384
+ deployment = await client.cloudHub2.waitForDeployment(orgId, env.id, deployment.id);
385
+ waitResult = deployment.status;
386
+ }
387
+ catch (waitErr) {
388
+ waitResult = `did not settle: ${errorMessage(waitErr)}`;
389
+ }
390
+ }
391
+ return mcpText({
392
+ message: `✅ Deployed "${appName}" to ${env.name} (${existing ? 'updated' : 'created'})`,
393
+ published: {
394
+ groupId: published.groupId,
395
+ assetId: published.assetId,
396
+ version: published.version,
397
+ },
398
+ deploymentId: deployment.id,
399
+ status: deployment.status,
400
+ ...(existing ? { previousVersion: existing.application?.ref?.version } : {}),
401
+ ...(wait ? { waitResult } : { tip: 'Use get_app_status to monitor progress.' }),
402
+ });
403
+ }
404
+ catch (error) {
405
+ return mcpError(error);
406
+ }
407
+ });
185
408
  }
186
409
  //# sourceMappingURL=exchange.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"exchange.js","sourceRoot":"","sources":["../../../src/mcp/tools/exchange.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"exchange.js","sourceRoot":"","sources":["../../../src/mcp/tools/exchange.ts"],"names":[],"mappings":"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"}
@@ -13,4 +13,22 @@ export declare function mcpError(error: unknown): {
13
13
  }[];
14
14
  isError: true;
15
15
  };
16
+ /** Build a standard MCP text response from a string or a JSON-serializable value. */
17
+ export declare function mcpText(payload: unknown): {
18
+ content: {
19
+ type: "text";
20
+ text: string;
21
+ }[];
22
+ };
23
+ /**
24
+ * Build the dry-run preview response returned by a mutating deploy tool when the caller
25
+ * has not passed `confirm: true`. Over stdio there is no interactive prompt, so the
26
+ * safety model is: preview by default, mutate only on explicit confirm.
27
+ */
28
+ export declare function dryRunPreview(preview: Record<string, unknown>): {
29
+ content: {
30
+ type: "text";
31
+ text: string;
32
+ }[];
33
+ };
16
34
  //# sourceMappingURL=shared.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/shared.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO;;;;;;EAKtC"}
1
+ {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/shared.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO;;;;;;EAKtC;AAED,qFAAqF;AACrF,wBAAgB,OAAO,CAAC,OAAO,EAAE,OAAO;;;;;EAGvC;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;;;;;EAM7D"}
@@ -13,4 +13,21 @@ export function mcpError(error) {
13
13
  isError: true,
14
14
  };
15
15
  }
16
+ /** Build a standard MCP text response from a string or a JSON-serializable value. */
17
+ export function mcpText(payload) {
18
+ const text = typeof payload === 'string' ? payload : JSON.stringify(payload, null, 2);
19
+ return { content: [{ type: 'text', text }] };
20
+ }
21
+ /**
22
+ * Build the dry-run preview response returned by a mutating deploy tool when the caller
23
+ * has not passed `confirm: true`. Over stdio there is no interactive prompt, so the
24
+ * safety model is: preview by default, mutate only on explicit confirm.
25
+ */
26
+ export function dryRunPreview(preview) {
27
+ return mcpText({
28
+ dryRun: true,
29
+ message: '⚠️ Dry run — nothing was changed. Review the preview and re-call with confirm: true to apply.',
30
+ ...preview,
31
+ });
32
+ }
16
33
  //# sourceMappingURL=shared.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../src/mcp/tools/shared.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErD;;;GAGG;AACH,MAAM,UAAU,QAAQ,CAAC,KAAc;IACnC,OAAO;QACH,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,UAAU,YAAY,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;QAC3E,OAAO,EAAE,IAAa;KACzB,CAAC;AACN,CAAC"}
1
+ {"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../src/mcp/tools/shared.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErD;;;GAGG;AACH,MAAM,UAAU,QAAQ,CAAC,KAAc;IACnC,OAAO;QACH,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,UAAU,YAAY,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;QAC3E,OAAO,EAAE,IAAa;KACzB,CAAC;AACN,CAAC;AAED,qFAAqF;AACrF,MAAM,UAAU,OAAO,CAAC,OAAgB;IACpC,MAAM,IAAI,GAAG,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IACtF,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;AAC1D,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,OAAgC;IAC1D,OAAO,OAAO,CAAC;QACX,MAAM,EAAE,IAAI;QACZ,OAAO,EAAE,+FAA+F;QACxG,GAAG,OAAO;KACb,CAAC,CAAC;AACP,CAAC"}
@@ -0,0 +1,77 @@
1
+ /**
2
+ * Shared deployment payload logic
3
+ *
4
+ * Single source of truth for building CloudHub 2.0 deployment payloads, used by BOTH
5
+ * the MCP `deploy_app`/`deploy_jar` tools and the CLI `deploy` command. Keeping the
6
+ * create-path builder and the safe artifact-update merge here means the two surfaces
7
+ * cannot drift — in particular, the update path can never re-emit defaulted infra
8
+ * (runtime, target, replicas) and silently downgrade or relocate a running app.
9
+ *
10
+ * These are pure functions (no I/O) so they unit-test cleanly.
11
+ */
12
+ import type { ArtifactRef, CH2Deployment, CreateDeploymentPayload } from '../api/CloudHub2Api.js';
13
+ export declare const DEFAULT_RUNTIME = "4.8.0";
14
+ export declare const DEFAULT_REGION = "cloudhub-us-east-2";
15
+ export declare const DEFAULT_VCORES = "0.1";
16
+ /** Allowed CloudHub 2.0 replica (vCore) sizes. */
17
+ export declare const VALID_VCORES: readonly ["0.1", "0.2", "0.5", "1", "1.5", "2", "2.5", "3", "4"];
18
+ /**
19
+ * Inputs for a create-path deployment. The MCP zod schema and the CLI `commander`
20
+ * options both map into this one shape, so neither carries its own inline arg type.
21
+ */
22
+ export interface DeploymentInput {
23
+ appName: string;
24
+ groupId: string;
25
+ artifactId: string;
26
+ version: string;
27
+ runtime?: string;
28
+ replicas?: number;
29
+ region?: string;
30
+ vcores?: string;
31
+ properties?: Record<string, string>;
32
+ secureProperties?: Record<string, string>;
33
+ jvmArgs?: string;
34
+ }
35
+ /** Map a CloudHub 2.0 target ID to its public-URL subdomain. */
36
+ export declare function regionToSubdomain(region: string): string;
37
+ /**
38
+ * Parse and validate a vCore size string into the numeric value CloudHub 2.0 expects
39
+ * on `application.vCores`. Returns undefined for undefined input; throws on an invalid
40
+ * size so a typo fails loudly instead of silently deploying the wrong allocation.
41
+ */
42
+ export declare function parseVcores(vcores?: string): number | undefined;
43
+ /**
44
+ * Build the payload for CREATING a new deployment. All defaults live here (and only
45
+ * here). This must NOT be used to update an existing deployment — see
46
+ * `mergeForArtifactUpdate` for the safe redeploy path.
47
+ */
48
+ export declare function buildCreatePayload(input: DeploymentInput): CreateDeploymentPayload;
49
+ /** The PATCH body for a safe redeploy: an artifact ref and nothing else. */
50
+ export interface ArtifactRefUpdate {
51
+ application: {
52
+ ref: ArtifactRef;
53
+ };
54
+ }
55
+ /**
56
+ * Build the body for a SAFE redeploy / rollback of an existing app: it carries ONLY
57
+ * the artifact reference, so the server preserves the live runtime, target/space,
58
+ * replicas, resources, and settings. Any ref field the caller omits is filled from the
59
+ * existing deployment (so callers can pass just a new `version`).
60
+ *
61
+ * The returned object's only key is `application.ref` — this is the invariant the
62
+ * regression test guards. The resolved ref is passed to `CloudHub2Api.updateArtifactRef`.
63
+ */
64
+ export declare function mergeForArtifactUpdate(existing: CH2Deployment, ref: Partial<ArtifactRef>): ArtifactRefUpdate;
65
+ /** A single field that would change between the live deployment and a proposed payload. */
66
+ export interface DeploymentChange {
67
+ field: string;
68
+ from: unknown;
69
+ to: unknown;
70
+ }
71
+ /**
72
+ * Compare a live deployment against a proposed full payload and list the infra fields
73
+ * that would change. Powers the dry-run preview and flags accidental
74
+ * runtime/target/replica changes even on paths that shouldn't touch them.
75
+ */
76
+ export declare function diffDeployment(existing: CH2Deployment, next: CreateDeploymentPayload): DeploymentChange[];
77
+ //# sourceMappingURL=deployment.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deployment.d.ts","sourceRoot":"","sources":["../../src/safety/deployment.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAElG,eAAO,MAAM,eAAe,UAAU,CAAC;AACvC,eAAO,MAAM,cAAc,uBAAuB,CAAC;AACnD,eAAO,MAAM,cAAc,QAAQ,CAAC;AAEpC,kDAAkD;AAClD,eAAO,MAAM,YAAY,kEAAmE,CAAC;AAE7F;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1C,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,gEAAgE;AAChE,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAexD;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAM/D;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,eAAe,GAAG,uBAAuB,CA4ClF;AAED,4EAA4E;AAC5E,MAAM,WAAW,iBAAiB;IAC9B,WAAW,EAAE;QAAE,GAAG,EAAE,WAAW,CAAA;KAAE,CAAC;CACrC;AAED;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,aAAa,EAAE,GAAG,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,iBAAiB,CAS5G;AAED,2FAA2F;AAC3F,MAAM,WAAW,gBAAgB;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,OAAO,CAAC;IACd,EAAE,EAAE,OAAO,CAAC;CACf;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,aAAa,EAAE,IAAI,EAAE,uBAAuB,GAAG,gBAAgB,EAAE,CAiBzG"}
@@ -0,0 +1,132 @@
1
+ /**
2
+ * Shared deployment payload logic
3
+ *
4
+ * Single source of truth for building CloudHub 2.0 deployment payloads, used by BOTH
5
+ * the MCP `deploy_app`/`deploy_jar` tools and the CLI `deploy` command. Keeping the
6
+ * create-path builder and the safe artifact-update merge here means the two surfaces
7
+ * cannot drift — in particular, the update path can never re-emit defaulted infra
8
+ * (runtime, target, replicas) and silently downgrade or relocate a running app.
9
+ *
10
+ * These are pure functions (no I/O) so they unit-test cleanly.
11
+ */
12
+ export const DEFAULT_RUNTIME = '4.8.0';
13
+ export const DEFAULT_REGION = 'cloudhub-us-east-2';
14
+ export const DEFAULT_VCORES = '0.1';
15
+ /** Allowed CloudHub 2.0 replica (vCore) sizes. */
16
+ export const VALID_VCORES = ['0.1', '0.2', '0.5', '1', '1.5', '2', '2.5', '3', '4'];
17
+ /** Map a CloudHub 2.0 target ID to its public-URL subdomain. */
18
+ export function regionToSubdomain(region) {
19
+ const map = {
20
+ 'cloudhub-us-east-1': 'us-e1',
21
+ 'cloudhub-us-east-2': 'us-e2',
22
+ 'cloudhub-us-west-2': 'us-w2',
23
+ 'cloudhub-eu-west-1': 'eu-w1',
24
+ 'cloudhub-eu-west-2': 'eu-w2',
25
+ 'cloudhub-eu-central-1': 'eu-c1',
26
+ 'cloudhub-ap-southeast-1': 'ap-se1',
27
+ 'cloudhub-ap-southeast-2': 'ap-se2',
28
+ 'cloudhub-ap-northeast-1': 'ap-ne1',
29
+ 'cloudhub-sa-east-1': 'sa-e1',
30
+ 'cloudhub-ca-central-1': 'ca-c1',
31
+ };
32
+ return map[region] || region.replace('cloudhub-', '').replace(/-/g, '');
33
+ }
34
+ /**
35
+ * Parse and validate a vCore size string into the numeric value CloudHub 2.0 expects
36
+ * on `application.vCores`. Returns undefined for undefined input; throws on an invalid
37
+ * size so a typo fails loudly instead of silently deploying the wrong allocation.
38
+ */
39
+ export function parseVcores(vcores) {
40
+ if (vcores === undefined)
41
+ return undefined;
42
+ if (!VALID_VCORES.includes(vcores)) {
43
+ throw new Error(`Invalid vCore size "${vcores}". Valid sizes: ${VALID_VCORES.join(', ')}`);
44
+ }
45
+ return parseFloat(vcores);
46
+ }
47
+ /**
48
+ * Build the payload for CREATING a new deployment. All defaults live here (and only
49
+ * here). This must NOT be used to update an existing deployment — see
50
+ * `mergeForArtifactUpdate` for the safe redeploy path.
51
+ */
52
+ export function buildCreatePayload(input) {
53
+ const region = input.region || DEFAULT_REGION;
54
+ const vCores = parseVcores(input.vcores ?? DEFAULT_VCORES);
55
+ const configuration = {};
56
+ if (input.properties || input.secureProperties) {
57
+ configuration['mule.agent.application.properties.service'] = {
58
+ applicationName: input.appName,
59
+ ...(input.properties ? { properties: input.properties } : {}),
60
+ ...(input.secureProperties ? { secureProperties: input.secureProperties } : {}),
61
+ };
62
+ }
63
+ return {
64
+ name: input.appName,
65
+ application: {
66
+ ref: {
67
+ groupId: input.groupId,
68
+ artifactId: input.artifactId,
69
+ version: input.version,
70
+ packaging: 'jar',
71
+ },
72
+ desiredState: 'STARTED',
73
+ ...(vCores !== undefined ? { vCores } : {}),
74
+ ...(Object.keys(configuration).length > 0 ? { configuration } : {}),
75
+ },
76
+ target: {
77
+ provider: 'MC',
78
+ targetId: region,
79
+ deploymentSettings: {
80
+ runtime: { version: input.runtime || DEFAULT_RUNTIME },
81
+ http: {
82
+ inbound: {
83
+ publicUrl: `${input.appName}.${regionToSubdomain(region)}.cloudhub.io`,
84
+ },
85
+ },
86
+ clustered: false,
87
+ enforceDeployingReplicasAcrossNodes: false,
88
+ updateStrategy: 'rolling',
89
+ ...(input.jvmArgs ? { jvm: { args: input.jvmArgs } } : {}),
90
+ },
91
+ replicas: input.replicas || 1,
92
+ },
93
+ };
94
+ }
95
+ /**
96
+ * Build the body for a SAFE redeploy / rollback of an existing app: it carries ONLY
97
+ * the artifact reference, so the server preserves the live runtime, target/space,
98
+ * replicas, resources, and settings. Any ref field the caller omits is filled from the
99
+ * existing deployment (so callers can pass just a new `version`).
100
+ *
101
+ * The returned object's only key is `application.ref` — this is the invariant the
102
+ * regression test guards. The resolved ref is passed to `CloudHub2Api.updateArtifactRef`.
103
+ */
104
+ export function mergeForArtifactUpdate(existing, ref) {
105
+ const current = existing.application.ref;
106
+ const merged = {
107
+ groupId: ref.groupId ?? current.groupId,
108
+ artifactId: ref.artifactId ?? current.artifactId,
109
+ version: ref.version ?? current.version,
110
+ packaging: ref.packaging ?? current.packaging ?? 'jar',
111
+ };
112
+ return { application: { ref: merged } };
113
+ }
114
+ /**
115
+ * Compare a live deployment against a proposed full payload and list the infra fields
116
+ * that would change. Powers the dry-run preview and flags accidental
117
+ * runtime/target/replica changes even on paths that shouldn't touch them.
118
+ */
119
+ export function diffDeployment(existing, next) {
120
+ const changes = [];
121
+ const push = (field, from, to) => {
122
+ if (to !== undefined && from !== to)
123
+ changes.push({ field, from, to });
124
+ };
125
+ push('version', existing.application?.ref?.version, next.application?.ref?.version);
126
+ push('runtime', existing.target?.deploymentSettings?.runtime?.version, next.target?.deploymentSettings?.runtime?.version);
127
+ push('targetId', existing.target?.targetId, next.target?.targetId);
128
+ push('vCores', existing.application?.vCores, next.application?.vCores);
129
+ push('replicas', existing.target?.replicas?.length, next.target?.replicas);
130
+ return changes;
131
+ }
132
+ //# sourceMappingURL=deployment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deployment.js","sourceRoot":"","sources":["../../src/safety/deployment.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sfdxy/anypoint-connect",
3
- "version": "0.8.1",
3
+ "version": "0.9.0",
4
4
  "description": "CLI + MCP toolkit for Anypoint Platform — deploy, tail logs, pull metrics, manage API specs, with production safety nets",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",