@sfdxy/anypoint-connect 0.14.0 → 0.16.2

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 (278) hide show
  1. package/README.md +39 -16
  2. package/dist/analysis/LogAnalyzer.d.ts +10 -4
  3. package/dist/analysis/LogAnalyzer.d.ts.map +1 -1
  4. package/dist/analysis/LogAnalyzer.js +29 -18
  5. package/dist/analysis/LogAnalyzer.js.map +1 -1
  6. package/dist/analysis/error-context.d.ts +2 -0
  7. package/dist/analysis/error-context.d.ts.map +1 -1
  8. package/dist/analysis/error-context.js +2 -1
  9. package/dist/analysis/error-context.js.map +1 -1
  10. package/dist/analysis/error-grouper.js +1 -1
  11. package/dist/analysis/error-grouper.js.map +1 -1
  12. package/dist/analysis/filter.d.ts +54 -0
  13. package/dist/analysis/filter.d.ts.map +1 -0
  14. package/dist/analysis/filter.js +100 -0
  15. package/dist/analysis/filter.js.map +1 -0
  16. package/dist/analysis/{utils.d.ts → normalize.d.ts} +1 -1
  17. package/dist/analysis/normalize.d.ts.map +1 -0
  18. package/dist/analysis/{utils.js → normalize.js} +2 -2
  19. package/dist/analysis/normalize.js.map +1 -0
  20. package/dist/analysis/parser.d.ts.map +1 -1
  21. package/dist/analysis/parser.js +45 -17
  22. package/dist/analysis/parser.js.map +1 -1
  23. package/dist/analysis/pattern-detector.js +1 -1
  24. package/dist/analysis/pattern-detector.js.map +1 -1
  25. package/dist/analysis/stats.d.ts +25 -0
  26. package/dist/analysis/stats.d.ts.map +1 -1
  27. package/dist/analysis/stats.js +35 -1
  28. package/dist/analysis/stats.js.map +1 -1
  29. package/dist/analysis/summary.d.ts +51 -0
  30. package/dist/analysis/summary.d.ts.map +1 -0
  31. package/dist/analysis/summary.js +47 -0
  32. package/dist/analysis/summary.js.map +1 -0
  33. package/dist/analysis/types.d.ts +14 -0
  34. package/dist/analysis/types.d.ts.map +1 -1
  35. package/dist/api/ApiManagerApi.d.ts +53 -0
  36. package/dist/api/ApiManagerApi.d.ts.map +1 -1
  37. package/dist/api/ApiManagerApi.js +53 -2
  38. package/dist/api/ApiManagerApi.js.map +1 -1
  39. package/dist/api/CloudHub2Api.d.ts +24 -4
  40. package/dist/api/CloudHub2Api.d.ts.map +1 -1
  41. package/dist/api/CloudHub2Api.js +10 -22
  42. package/dist/api/CloudHub2Api.js.map +1 -1
  43. package/dist/api/DesignCenterApi.d.ts +0 -20
  44. package/dist/api/DesignCenterApi.d.ts.map +1 -1
  45. package/dist/api/DesignCenterApi.js +0 -22
  46. package/dist/api/DesignCenterApi.js.map +1 -1
  47. package/dist/api/ExchangeApi.d.ts +15 -0
  48. package/dist/api/ExchangeApi.d.ts.map +1 -1
  49. package/dist/api/ExchangeApi.js +51 -0
  50. package/dist/api/ExchangeApi.js.map +1 -1
  51. package/dist/api/LogsApi.d.ts +50 -18
  52. package/dist/api/LogsApi.d.ts.map +1 -1
  53. package/dist/api/LogsApi.js +69 -98
  54. package/dist/api/LogsApi.js.map +1 -1
  55. package/dist/api/MonitoringApi.d.ts +137 -93
  56. package/dist/api/MonitoringApi.d.ts.map +1 -1
  57. package/dist/api/MonitoringApi.js +471 -204
  58. package/dist/api/MonitoringApi.js.map +1 -1
  59. package/dist/api/RuntimesApi.d.ts +56 -0
  60. package/dist/api/RuntimesApi.d.ts.map +1 -0
  61. package/dist/api/RuntimesApi.js +58 -0
  62. package/dist/api/RuntimesApi.js.map +1 -0
  63. package/dist/auth/FileStore.js +1 -1
  64. package/dist/auth/FileStore.js.map +1 -1
  65. package/dist/cli.js +4 -2
  66. package/dist/cli.js.map +1 -1
  67. package/dist/client/AnypointClient.d.ts +3 -1
  68. package/dist/client/AnypointClient.d.ts.map +1 -1
  69. package/dist/client/AnypointClient.js +5 -2
  70. package/dist/client/AnypointClient.js.map +1 -1
  71. package/dist/client/smoke-test.d.ts +111 -0
  72. package/dist/client/smoke-test.d.ts.map +1 -0
  73. package/dist/client/smoke-test.js +275 -0
  74. package/dist/client/smoke-test.js.map +1 -0
  75. package/dist/commands/api.d.ts +1 -1
  76. package/dist/commands/api.d.ts.map +1 -1
  77. package/dist/commands/api.js +175 -30
  78. package/dist/commands/api.js.map +1 -1
  79. package/dist/commands/app-change-cli.d.ts +52 -0
  80. package/dist/commands/app-change-cli.d.ts.map +1 -0
  81. package/dist/commands/app-change-cli.js +149 -0
  82. package/dist/commands/app-change-cli.js.map +1 -0
  83. package/dist/commands/apps.d.ts +1 -1
  84. package/dist/commands/apps.d.ts.map +1 -1
  85. package/dist/commands/apps.js +199 -18
  86. package/dist/commands/apps.js.map +1 -1
  87. package/dist/commands/auth.js +1 -1
  88. package/dist/commands/auth.js.map +1 -1
  89. package/dist/commands/compare.d.ts +8 -0
  90. package/dist/commands/compare.d.ts.map +1 -0
  91. package/dist/commands/compare.js +104 -0
  92. package/dist/commands/compare.js.map +1 -0
  93. package/dist/commands/config.js +1 -1
  94. package/dist/commands/config.js.map +1 -1
  95. package/dist/commands/deploy.d.ts +6 -1
  96. package/dist/commands/deploy.d.ts.map +1 -1
  97. package/dist/commands/deploy.js +89 -91
  98. package/dist/commands/deploy.js.map +1 -1
  99. package/dist/commands/design-center.d.ts +1 -1
  100. package/dist/commands/design-center.d.ts.map +1 -1
  101. package/dist/commands/design-center.js +36 -25
  102. package/dist/commands/design-center.js.map +1 -1
  103. package/dist/commands/index.d.ts +1 -0
  104. package/dist/commands/index.d.ts.map +1 -1
  105. package/dist/commands/index.js +1 -0
  106. package/dist/commands/index.js.map +1 -1
  107. package/dist/commands/logs.d.ts +3 -2
  108. package/dist/commands/logs.d.ts.map +1 -1
  109. package/dist/commands/logs.js +142 -17
  110. package/dist/commands/logs.js.map +1 -1
  111. package/dist/commands/monitor.d.ts +5 -6
  112. package/dist/commands/monitor.d.ts.map +1 -1
  113. package/dist/commands/monitor.js +210 -230
  114. package/dist/commands/monitor.js.map +1 -1
  115. package/dist/commands/runtimes.d.ts +7 -0
  116. package/dist/commands/runtimes.d.ts.map +1 -0
  117. package/dist/commands/runtimes.js +66 -0
  118. package/dist/commands/runtimes.js.map +1 -0
  119. package/dist/commands/shared.d.ts +2 -0
  120. package/dist/commands/shared.d.ts.map +1 -1
  121. package/dist/commands/shared.js +16 -1
  122. package/dist/commands/shared.js.map +1 -1
  123. package/dist/{utils/config.d.ts → config/profiles.d.ts} +9 -1
  124. package/dist/config/profiles.d.ts.map +1 -0
  125. package/dist/{utils/config.js → config/profiles.js} +1 -1
  126. package/dist/config/profiles.js.map +1 -0
  127. package/dist/index.d.ts +12 -3
  128. package/dist/index.d.ts.map +1 -1
  129. package/dist/index.js +12 -2
  130. package/dist/index.js.map +1 -1
  131. package/dist/mcp/prompts.js +7 -7
  132. package/dist/mcp/prompts.js.map +1 -1
  133. package/dist/mcp/server.d.ts +14 -0
  134. package/dist/mcp/server.d.ts.map +1 -0
  135. package/dist/mcp/server.js +61 -0
  136. package/dist/mcp/server.js.map +1 -0
  137. package/dist/mcp/tools/analysis.d.ts.map +1 -1
  138. package/dist/mcp/tools/analysis.js +74 -46
  139. package/dist/mcp/tools/analysis.js.map +1 -1
  140. package/dist/mcp/tools/anypoint-mq.d.ts.map +1 -1
  141. package/dist/mcp/tools/anypoint-mq.js +25 -54
  142. package/dist/mcp/tools/anypoint-mq.js.map +1 -1
  143. package/dist/mcp/tools/api-manager.d.ts +2 -1
  144. package/dist/mcp/tools/api-manager.d.ts.map +1 -1
  145. package/dist/mcp/tools/api-manager.js +154 -89
  146. package/dist/mcp/tools/api-manager.js.map +1 -1
  147. package/dist/mcp/tools/app-inputs.d.ts +92 -0
  148. package/dist/mcp/tools/app-inputs.d.ts.map +1 -0
  149. package/dist/mcp/tools/app-inputs.js +142 -0
  150. package/dist/mcp/tools/app-inputs.js.map +1 -0
  151. package/dist/mcp/tools/apps-deploy.d.ts +13 -0
  152. package/dist/mcp/tools/apps-deploy.d.ts.map +1 -0
  153. package/dist/mcp/tools/apps-deploy.js +358 -0
  154. package/dist/mcp/tools/apps-deploy.js.map +1 -0
  155. package/dist/mcp/tools/apps-lifecycle.d.ts +11 -0
  156. package/dist/mcp/tools/apps-lifecycle.d.ts.map +1 -0
  157. package/dist/mcp/tools/apps-lifecycle.js +244 -0
  158. package/dist/mcp/tools/apps-lifecycle.js.map +1 -0
  159. package/dist/mcp/tools/apps-read.d.ts +9 -0
  160. package/dist/mcp/tools/apps-read.d.ts.map +1 -0
  161. package/dist/mcp/tools/apps-read.js +414 -0
  162. package/dist/mcp/tools/apps-read.js.map +1 -0
  163. package/dist/mcp/tools/artifacts.d.ts +8 -0
  164. package/dist/mcp/tools/artifacts.d.ts.map +1 -0
  165. package/dist/mcp/tools/artifacts.js +81 -0
  166. package/dist/mcp/tools/artifacts.js.map +1 -0
  167. package/dist/mcp/tools/audit.d.ts.map +1 -1
  168. package/dist/mcp/tools/audit.js +9 -17
  169. package/dist/mcp/tools/audit.js.map +1 -1
  170. package/dist/mcp/tools/design-center.d.ts +2 -3
  171. package/dist/mcp/tools/design-center.d.ts.map +1 -1
  172. package/dist/mcp/tools/design-center.js +41 -185
  173. package/dist/mcp/tools/design-center.js.map +1 -1
  174. package/dist/mcp/tools/exchange.d.ts +1 -2
  175. package/dist/mcp/tools/exchange.d.ts.map +1 -1
  176. package/dist/mcp/tools/exchange.js +51 -312
  177. package/dist/mcp/tools/exchange.js.map +1 -1
  178. package/dist/mcp/tools/governance.d.ts +8 -0
  179. package/dist/mcp/tools/governance.d.ts.map +1 -0
  180. package/dist/mcp/tools/governance.js +59 -0
  181. package/dist/mcp/tools/governance.js.map +1 -0
  182. package/dist/mcp/tools/identity.d.ts.map +1 -1
  183. package/dist/mcp/tools/identity.js +15 -36
  184. package/dist/mcp/tools/identity.js.map +1 -1
  185. package/dist/mcp/tools/index.d.ts +5 -1
  186. package/dist/mcp/tools/index.d.ts.map +1 -1
  187. package/dist/mcp/tools/index.js +5 -1
  188. package/dist/mcp/tools/index.js.map +1 -1
  189. package/dist/mcp/tools/logs.d.ts +48 -2
  190. package/dist/mcp/tools/logs.d.ts.map +1 -1
  191. package/dist/mcp/tools/logs.js +204 -54
  192. package/dist/mcp/tools/logs.js.map +1 -1
  193. package/dist/mcp/tools/monitoring.d.ts +1 -2
  194. package/dist/mcp/tools/monitoring.d.ts.map +1 -1
  195. package/dist/mcp/tools/monitoring.js +78 -285
  196. package/dist/mcp/tools/monitoring.js.map +1 -1
  197. package/dist/mcp/tools/object-store.d.ts +1 -1
  198. package/dist/mcp/tools/object-store.d.ts.map +1 -1
  199. package/dist/mcp/tools/object-store.js +19 -59
  200. package/dist/mcp/tools/object-store.js.map +1 -1
  201. package/dist/mcp/tools/profile.d.ts.map +1 -1
  202. package/dist/mcp/tools/profile.js +15 -35
  203. package/dist/mcp/tools/profile.js.map +1 -1
  204. package/dist/mcp/tools/shared.d.ts +43 -0
  205. package/dist/mcp/tools/shared.d.ts.map +1 -1
  206. package/dist/mcp/tools/shared.js +54 -0
  207. package/dist/mcp/tools/shared.js.map +1 -1
  208. package/dist/mcp.d.ts +3 -11
  209. package/dist/mcp.d.ts.map +1 -1
  210. package/dist/mcp.js +4 -56
  211. package/dist/mcp.js.map +1 -1
  212. package/dist/safety/deployment.d.ts +47 -2
  213. package/dist/safety/deployment.d.ts.map +1 -1
  214. package/dist/safety/deployment.js +139 -6
  215. package/dist/safety/deployment.js.map +1 -1
  216. package/dist/safety/guards.d.ts +2 -2
  217. package/dist/safety/guards.d.ts.map +1 -1
  218. package/dist/safety/guards.js +4 -4
  219. package/dist/safety/guards.js.map +1 -1
  220. package/dist/safety/paths.d.ts +29 -0
  221. package/dist/safety/paths.d.ts.map +1 -0
  222. package/dist/safety/paths.js +76 -0
  223. package/dist/safety/paths.js.map +1 -0
  224. package/dist/safety/runtime.d.ts +24 -0
  225. package/dist/safety/runtime.d.ts.map +1 -0
  226. package/dist/safety/runtime.js +59 -0
  227. package/dist/safety/runtime.js.map +1 -0
  228. package/dist/safety/secret-sources.d.ts +51 -0
  229. package/dist/safety/secret-sources.d.ts.map +1 -0
  230. package/dist/safety/secret-sources.js +124 -0
  231. package/dist/safety/secret-sources.js.map +1 -0
  232. package/dist/safety/secrets.d.ts +32 -0
  233. package/dist/safety/secrets.d.ts.map +1 -0
  234. package/dist/safety/secrets.js +91 -0
  235. package/dist/safety/secrets.js.map +1 -0
  236. package/dist/utils/errors.d.ts +14 -1
  237. package/dist/utils/errors.d.ts.map +1 -1
  238. package/dist/utils/errors.js +31 -3
  239. package/dist/utils/errors.js.map +1 -1
  240. package/dist/workflows/app-change.d.ts +124 -0
  241. package/dist/workflows/app-change.d.ts.map +1 -0
  242. package/dist/workflows/app-change.js +305 -0
  243. package/dist/workflows/app-change.js.map +1 -0
  244. package/dist/workflows/app-state.d.ts +60 -0
  245. package/dist/workflows/app-state.d.ts.map +1 -0
  246. package/dist/workflows/app-state.js +95 -0
  247. package/dist/workflows/app-state.js.map +1 -0
  248. package/dist/workflows/artifact-compare.d.ts +134 -0
  249. package/dist/workflows/artifact-compare.d.ts.map +1 -0
  250. package/dist/workflows/artifact-compare.js +419 -0
  251. package/dist/workflows/artifact-compare.js.map +1 -0
  252. package/dist/workflows/asset-naming.d.ts +72 -0
  253. package/dist/workflows/asset-naming.d.ts.map +1 -0
  254. package/dist/workflows/asset-naming.js +116 -0
  255. package/dist/workflows/asset-naming.js.map +1 -0
  256. package/dist/{api/DesignCenterWorkflow.d.ts → workflows/design-center.d.ts} +4 -4
  257. package/dist/workflows/design-center.d.ts.map +1 -0
  258. package/dist/{api/DesignCenterWorkflow.js → workflows/design-center.js} +1 -1
  259. package/dist/workflows/design-center.js.map +1 -0
  260. package/dist/workflows/jar-deployment.d.ts +156 -0
  261. package/dist/workflows/jar-deployment.d.ts.map +1 -0
  262. package/dist/workflows/jar-deployment.js +178 -0
  263. package/dist/workflows/jar-deployment.js.map +1 -0
  264. package/package.json +12 -4
  265. package/dist/analysis/utils.d.ts.map +0 -1
  266. package/dist/analysis/utils.js.map +0 -1
  267. package/dist/api/DesignCenterWorkflow.d.ts.map +0 -1
  268. package/dist/api/DesignCenterWorkflow.js.map +0 -1
  269. package/dist/api/index.d.ts +0 -13
  270. package/dist/api/index.d.ts.map +0 -1
  271. package/dist/api/index.js +0 -13
  272. package/dist/api/index.js.map +0 -1
  273. package/dist/mcp/tools/applications.d.ts +0 -4
  274. package/dist/mcp/tools/applications.d.ts.map +0 -1
  275. package/dist/mcp/tools/applications.js +0 -815
  276. package/dist/mcp/tools/applications.js.map +0 -1
  277. package/dist/utils/config.d.ts.map +0 -1
  278. package/dist/utils/config.js.map +0 -1
@@ -1,9 +1,14 @@
1
1
  /**
2
2
  * MCP Tool Registrar — API Manager tools
3
- * list_api_instances, get_api_policies
3
+ * list_api_instances, get_api_policies, get_api_alerts, list_api_contracts,
4
+ * get_client_application, smoke_test_api
4
5
  */
5
6
  import { z } from 'zod';
6
- import { mcpError } from './shared.js';
7
+ import { guardWrite, mcpError, mcpText, resolveEnvironment, writeInputs } from './shared.js';
8
+ import { SAFE_METHODS, credentialVariants, describeClientApplication, executeSmokeTest, planSmokeTest, writeCredentialsFile, } from '../../client/smoke-test.js';
9
+ import { redactText } from '../../safety/secrets.js';
10
+ import { errorMessage } from '../../utils/errors.js';
11
+ const apiRefSchema = z.string().describe('API name (partial match) or numeric API instance ID from list_api_instances');
7
12
  export function registerApiManagerTools(server, client) {
8
13
  server.registerTool('list_api_instances', {
9
14
  title: 'List API Instances',
@@ -14,8 +19,7 @@ export function registerApiManagerTools(server, client) {
14
19
  annotations: { readOnlyHint: true },
15
20
  }, async ({ environment }) => {
16
21
  try {
17
- const orgId = await client.getDefaultOrgId();
18
- const env = await client.accessManagement.resolveEnvironment(orgId, environment);
22
+ const { orgId, env } = await resolveEnvironment(client, environment);
19
23
  const assets = await client.apiManager.getApis(orgId, env.id);
20
24
  const instances = assets.flatMap((asset) => asset.apis.map((api) => ({
21
25
  apiName: asset.exchangeAssetName,
@@ -27,14 +31,7 @@ export function registerApiManagerTools(server, client) {
27
31
  deprecated: api.deprecated,
28
32
  contracts: api.activeContractsCount,
29
33
  })));
30
- return {
31
- content: [
32
- {
33
- type: 'text',
34
- text: JSON.stringify({ environment: env.name, instances }, null, 2),
35
- },
36
- ],
37
- };
34
+ return mcpText({ environment: env.name, instances });
38
35
  }
39
36
  catch (error) {
40
37
  return mcpError(error);
@@ -44,60 +41,36 @@ export function registerApiManagerTools(server, client) {
44
41
  title: 'Get API Policies & SLA Tiers',
45
42
  description: 'Returns the full policy chain and SLA tier configuration for a managed API instance. For each policy, shows the template name (e.g. "client-id-enforcement", "rate-limiting"), version, execution order, whether it is disabled, and its configuration. For each SLA tier, shows the name, rate limits, auto-approve setting, and how many client apps have contracted it. Use this to audit API security and rate-limiting configuration.',
46
43
  inputSchema: {
47
- apiName: z
48
- .string()
49
- .describe('API name (partial match) or numeric API instance ID from list_api_instances'),
44
+ apiName: apiRefSchema,
50
45
  environment: z.string().describe('Environment name or ID'),
51
46
  },
52
47
  annotations: { readOnlyHint: true },
53
48
  }, async ({ apiName, environment }) => {
54
49
  try {
55
- const orgId = await client.getDefaultOrgId();
56
- const env = await client.accessManagement.resolveEnvironment(orgId, environment);
57
- let apiId;
58
- const numId = parseInt(apiName);
59
- if (!isNaN(numId)) {
60
- apiId = numId;
61
- }
62
- else {
63
- const found = await client.apiManager.findByName(orgId, env.id, apiName);
64
- if (!found) {
65
- return {
66
- content: [{ type: 'text', text: `API "${apiName}" not found in ${env.name}` }],
67
- isError: true,
68
- };
69
- }
70
- apiId = found.instance.id;
71
- }
50
+ const { orgId, env } = await resolveEnvironment(client, environment);
51
+ const { apiId } = await client.apiManager.resolveApiInstance(orgId, env, apiName);
72
52
  const [policies, tiers] = await Promise.all([
73
53
  client.apiManager.getPolicies(orgId, env.id, apiId),
74
54
  client.apiManager.getSlaTiers(orgId, env.id, apiId),
75
55
  ]);
76
- return {
77
- content: [
78
- {
79
- type: 'text',
80
- text: JSON.stringify({
81
- apiId,
82
- policies: policies.map((p) => ({
83
- id: p.id,
84
- template: p.template?.assetId || p.policyTemplateId,
85
- version: p.template?.assetVersion,
86
- order: p.order,
87
- disabled: p.disabled,
88
- config: p.configurationData,
89
- })),
90
- slaTiers: tiers.map((t) => ({
91
- name: t.name,
92
- status: t.status,
93
- autoApprove: t.autoApprove,
94
- limits: t.limits,
95
- appCount: t.applicationCount,
96
- })),
97
- }, null, 2),
98
- },
99
- ],
100
- };
56
+ return mcpText({
57
+ apiId,
58
+ policies: policies.map((p) => ({
59
+ id: p.id,
60
+ template: p.template?.assetId || p.policyTemplateId,
61
+ version: p.template?.assetVersion,
62
+ order: p.order,
63
+ disabled: p.disabled,
64
+ config: p.configurationData,
65
+ })),
66
+ slaTiers: tiers.map((t) => ({
67
+ name: t.name,
68
+ status: t.status,
69
+ autoApprove: t.autoApprove,
70
+ limits: t.limits,
71
+ appCount: t.applicationCount,
72
+ })),
73
+ });
101
74
  }
102
75
  catch (error) {
103
76
  return mcpError(error);
@@ -107,45 +80,137 @@ export function registerApiManagerTools(server, client) {
107
80
  title: 'Get API Alerts',
108
81
  description: 'Returns the configured alerts for a managed API instance. Shows alert conditions, thresholds, notification settings, and enabled/disabled status. Use this to audit monitoring coverage, verify alerting is configured for critical APIs, or troubleshoot why alerts are not firing.',
109
82
  inputSchema: {
110
- apiName: z
111
- .string()
112
- .describe('API name (partial match) or numeric API instance ID from list_api_instances'),
83
+ apiName: apiRefSchema,
113
84
  environment: z.string().describe('Environment name or ID'),
114
85
  },
115
86
  annotations: { readOnlyHint: true },
116
87
  }, async ({ apiName, environment }) => {
117
88
  try {
118
- const orgId = await client.getDefaultOrgId();
119
- const env = await client.accessManagement.resolveEnvironment(orgId, environment);
120
- let apiId;
121
- const numId = parseInt(apiName);
122
- if (!isNaN(numId)) {
123
- apiId = numId;
124
- }
125
- else {
126
- const found = await client.apiManager.findByName(orgId, env.id, apiName);
127
- if (!found) {
128
- return {
129
- content: [{ type: 'text', text: `API "${apiName}" not found in ${env.name}` }],
130
- isError: true,
131
- };
132
- }
133
- apiId = found.instance.id;
134
- }
89
+ const { orgId, env } = await resolveEnvironment(client, environment);
90
+ const { apiId } = await client.apiManager.resolveApiInstance(orgId, env, apiName);
135
91
  const alerts = await client.apiManager.getAlerts(orgId, env.id, apiId);
136
- return {
137
- content: [
138
- {
139
- type: 'text',
140
- text: JSON.stringify({
141
- apiId,
142
- environment: env.name,
143
- alertCount: alerts.length,
144
- alerts,
145
- }, null, 2),
92
+ return mcpText({
93
+ apiId,
94
+ environment: env.name,
95
+ alertCount: alerts.length,
96
+ alerts,
97
+ });
98
+ }
99
+ catch (error) {
100
+ return mcpError(error);
101
+ }
102
+ });
103
+ server.registerTool('list_api_contracts', {
104
+ title: 'List API Contracts',
105
+ description: 'Lists the contracts on a managed API instance: which client applications may call it, on which SLA tier, and whether each contract is approved, pending or revoked. Returns the contract ID, client application name and ID, tier and status. Never returns credentials; use get_client_application for a masked view of one app.',
106
+ inputSchema: {
107
+ environment: z.string().describe('Environment name or ID'),
108
+ api: apiRefSchema,
109
+ },
110
+ annotations: { readOnlyHint: true },
111
+ }, async ({ environment, api }) => {
112
+ try {
113
+ const { orgId, env } = await resolveEnvironment(client, environment);
114
+ const resolved = await client.apiManager.resolveApiInstance(orgId, env, api);
115
+ const contracts = await client.apiManager.getContracts(orgId, env.id, resolved.apiId);
116
+ return mcpText({
117
+ environment: env.name,
118
+ apiId: resolved.apiId,
119
+ apiName: resolved.asset?.exchangeAssetName,
120
+ total: contracts.length,
121
+ contracts: contracts.map((c) => ({
122
+ contractId: c.id,
123
+ clientAppId: c.application?.id ?? c.applicationId,
124
+ clientAppName: c.application?.name,
125
+ tier: c.tier?.name ?? null,
126
+ status: c.status,
127
+ })),
128
+ });
129
+ }
130
+ catch (error) {
131
+ return mcpError(error);
132
+ }
133
+ });
134
+ server.registerTool('get_client_application', {
135
+ title: 'Get Client Application',
136
+ description: 'Returns a client application from the API Platform: name, client ID and the client secret masked as "******…last4". The full secret is never returned. To use the credentials, pass writeCredentialsTo: the server writes CLIENT_ID and CLIENT_SECRET in .env format to that file inside the project root (mode 0600) and returns only the path. That file then works as a secret source for other tools.',
137
+ inputSchema: {
138
+ appId: z
139
+ .union([z.number().int(), z.string()])
140
+ .describe('Client application ID (see list_api_contracts)'),
141
+ writeCredentialsTo: z
142
+ .string()
143
+ .optional()
144
+ .describe('Path inside the project root to write CLIENT_ID/CLIENT_SECRET (.env format, mode 0600)'),
145
+ overwrite: z.boolean().optional().describe('Replace writeCredentialsTo when it already exists'),
146
+ },
147
+ annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: true },
148
+ }, async ({ appId, writeCredentialsTo, overwrite }) => {
149
+ let secrets = [];
150
+ try {
151
+ const orgId = await client.getDefaultOrgId();
152
+ const app = await client.apiManager.getClientApplication(orgId, appId);
153
+ secrets = credentialVariants(undefined, app.clientSecret);
154
+ const credentialsWrittenTo = writeCredentialsTo
155
+ ? writeCredentialsFile(writeCredentialsTo, app, { overwrite })
156
+ : undefined;
157
+ const text = JSON.stringify({
158
+ ...describeClientApplication(app),
159
+ ...(credentialsWrittenTo ? { credentialsWrittenTo, fileMode: '0600' } : {}),
160
+ }, null, 2);
161
+ return mcpText(redactText(text, secrets));
162
+ }
163
+ catch (error) {
164
+ return mcpError(redactText(errorMessage(error), secrets));
165
+ }
166
+ });
167
+ server.registerTool('smoke_test_api', {
168
+ title: 'Smoke Test API',
169
+ description: "Sends one HTTP request to a managed API and reports the status, latency, a few response headers and a body excerpt (4 KB at most). The server resolves the client credentials: from clientAppId, or from the API's only approved contract. They are sent as client_id/client_secret headers, or as HTTP basic auth when the API's client-id-enforcement policy reads credentials from the basic auth header, and are scrubbed from every output and error. The URL is the API instance's endpoint plus path, or url when given. GET, HEAD and OPTIONS run directly; other methods return a preview until confirm is true (plus confirmProduction in production).",
170
+ inputSchema: {
171
+ environment: z.string().describe('Environment name or ID'),
172
+ api: apiRefSchema,
173
+ path: z.string().optional().describe('Path appended to the API endpoint URI, e.g. /api/orders?limit=1'),
174
+ url: z
175
+ .string()
176
+ .optional()
177
+ .describe('Absolute URL to call instead of the endpoint URI (required when the API has none)'),
178
+ method: z.string().optional().describe('HTTP method (default GET)'),
179
+ clientAppId: z
180
+ .union([z.number().int(), z.string()])
181
+ .optional()
182
+ .describe('Client application whose credentials to send (default: the only approved contract)'),
183
+ headers: z.record(z.string(), z.string()).optional().describe('Extra request headers'),
184
+ body: z.unknown().optional().describe('Request body: a string or a JSON value'),
185
+ expectStatus: z.number().int().optional().describe('Expected status code; passed reflects it'),
186
+ timeoutMs: z.number().int().min(100).max(120000).optional().describe('Request timeout (default 30000)'),
187
+ ...writeInputs,
188
+ },
189
+ annotations: { readOnlyHint: false, destructiveHint: false, openWorldHint: true },
190
+ }, async (input) => {
191
+ try {
192
+ const { orgId, env } = await resolveEnvironment(client, input.environment);
193
+ const plan = await planSmokeTest(client, orgId, env, input);
194
+ if (!SAFE_METHODS.has(plan.method)) {
195
+ const blocked = guardWrite({
196
+ env,
197
+ confirm: input.confirm,
198
+ confirmProduction: input.confirmProduction,
199
+ preview: {
200
+ action: 'smoke_test_api',
201
+ environment: env.name,
202
+ api: plan.api,
203
+ method: plan.method,
204
+ url: plan.url,
205
+ clientApp: plan.clientApp,
206
+ note: `${plan.method} may change data in the API's backend`,
146
207
  },
147
- ],
148
- };
208
+ });
209
+ if (blocked)
210
+ return blocked;
211
+ }
212
+ const result = await executeSmokeTest(client, orgId, plan, input);
213
+ return mcpText({ environment: env.name, ...result });
149
214
  }
150
215
  catch (error) {
151
216
  return mcpError(error);
@@ -1 +1 @@
1
- {"version":3,"file":"api-manager.js","sourceRoot":"","sources":["../../../src/mcp/tools/api-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"api-manager.js","sourceRoot":"","sources":["../../../src/mcp/tools/api-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,92 @@
1
+ /**
2
+ * Shared input fragments for application change tools
3
+ * Settings, runtime and wait inputs used by update_app, update_app_settings, update_app_artifact,
4
+ * restart_app and the deploy tools, so every tool describes them the same way.
5
+ */
6
+ import { z } from 'zod';
7
+ import type { AnypointClient } from '../../client/AnypointClient.js';
8
+ import { type AppChangeRequest, type SettingsChangeInput } from '../../workflows/app-change.js';
9
+ import type { RuntimeSpec } from '../../safety/runtime.js';
10
+ export declare const settingsInputs: {
11
+ properties: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
12
+ secureProperties: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
13
+ propertiesFrom: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
14
+ file: z.ZodString;
15
+ format: z.ZodOptional<z.ZodEnum<{
16
+ env: "env";
17
+ json: "json";
18
+ properties: "properties";
19
+ }>>;
20
+ keys: z.ZodOptional<z.ZodArray<z.ZodString>>;
21
+ rename: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
22
+ prefix: z.ZodOptional<z.ZodString>;
23
+ }, z.core.$strip>, z.ZodObject<{
24
+ env: z.ZodRecord<z.ZodString, z.ZodString>;
25
+ }, z.core.$strip>]>>>;
26
+ securePropertiesFrom: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
27
+ file: z.ZodString;
28
+ format: z.ZodOptional<z.ZodEnum<{
29
+ env: "env";
30
+ json: "json";
31
+ properties: "properties";
32
+ }>>;
33
+ keys: z.ZodOptional<z.ZodArray<z.ZodString>>;
34
+ rename: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
35
+ prefix: z.ZodOptional<z.ZodString>;
36
+ }, z.core.$strip>, z.ZodObject<{
37
+ env: z.ZodRecord<z.ZodString, z.ZodString>;
38
+ }, z.core.$strip>]>>>;
39
+ removeProperties: z.ZodOptional<z.ZodArray<z.ZodString>>;
40
+ removeSecureProperties: z.ZodOptional<z.ZodArray<z.ZodString>>;
41
+ moveToSecure: z.ZodOptional<z.ZodArray<z.ZodString>>;
42
+ };
43
+ export declare const runtimeInputs: {
44
+ runtime: z.ZodOptional<z.ZodString>;
45
+ javaVersion: z.ZodOptional<z.ZodString>;
46
+ releaseChannel: z.ZodOptional<z.ZodString>;
47
+ };
48
+ export declare const waitInputs: {
49
+ wait: z.ZodOptional<z.ZodBoolean>;
50
+ waitTimeoutSeconds: z.ZodOptional<z.ZodNumber>;
51
+ };
52
+ export declare const modeInput: z.ZodOptional<z.ZodEnum<{
53
+ inPlace: "inPlace";
54
+ stopStart: "stopStart";
55
+ }>>;
56
+ export declare const updateStrategyInput: z.ZodOptional<z.ZodEnum<{
57
+ rolling: "rolling";
58
+ recreate: "recreate";
59
+ }>>;
60
+ type SettingsArgs = {
61
+ [K in keyof typeof settingsInputs]?: z.infer<(typeof settingsInputs)[K]>;
62
+ };
63
+ export declare function settingsFromArgs(args: SettingsArgs): SettingsChangeInput;
64
+ export declare function runtimeFromArgs(args: {
65
+ runtime?: string;
66
+ javaVersion?: string;
67
+ releaseChannel?: string;
68
+ }): RuntimeSpec | undefined;
69
+ export interface AppChangeToolArgs {
70
+ appName: string;
71
+ environment: string;
72
+ confirm?: boolean;
73
+ confirmProduction?: boolean;
74
+ wait?: boolean;
75
+ waitTimeoutSeconds?: number;
76
+ }
77
+ /**
78
+ * Plan, guard and apply an application change for an MCP tool. Previews by default, refuses
79
+ * production without confirmProduction, and scrubs secret values from every response.
80
+ */
81
+ export declare function runAppChangeTool(client: AnypointClient, args: AppChangeToolArgs, change: Omit<AppChangeRequest, 'orgId' | 'env' | 'appName' | 'secretValues' | 'settings'> & {
82
+ settings?: SettingsChangeInput;
83
+ }, labels: {
84
+ done: string;
85
+ }): Promise<{
86
+ content: {
87
+ type: "text";
88
+ text: string;
89
+ }[];
90
+ }>;
91
+ export {};
92
+ //# sourceMappingURL=app-inputs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app-inputs.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/app-inputs.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAGrE,OAAO,EAKH,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,EAC3B,MAAM,+BAA+B,CAAC;AACvC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAI3D,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2B1B,CAAC;AAEF,eAAO,MAAM,aAAa;;;;CAYzB,CAAC;AAEF,eAAO,MAAM,UAAU;;;CAGtB,CAAC;AAEF,eAAO,MAAM,SAAS;;;GAKjB,CAAC;AAEN,eAAO,MAAM,mBAAmB;;;GAGwE,CAAC;AAEzG,KAAK,YAAY,GAAG;KACf,CAAC,IAAI,MAAM,OAAO,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;CAC3E,CAAC;AAEF,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,YAAY,GAAG,mBAAmB,CAUxE;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE;IAClC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;CAC3B,GAAG,WAAW,GAAG,SAAS,CAO1B;AAED,MAAM,WAAW,iBAAiB;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CAClC,MAAM,EAAE,cAAc,EACtB,IAAI,EAAE,iBAAiB,EACvB,MAAM,EAAE,IAAI,CAAC,gBAAgB,EAAE,OAAO,GAAG,KAAK,GAAG,SAAS,GAAG,cAAc,GAAG,UAAU,CAAC,GAAG;IACxF,QAAQ,CAAC,EAAE,mBAAmB,CAAC;CAClC,EACD,MAAM,EAAE;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE;;;;;GA0D3B"}
@@ -0,0 +1,142 @@
1
+ /**
2
+ * Shared input fragments for application change tools
3
+ * Settings, runtime and wait inputs used by update_app, update_app_settings, update_app_artifact,
4
+ * restart_app and the deploy tools, so every tool describes them the same way.
5
+ */
6
+ import { z } from 'zod';
7
+ import { secretSourceSchema } from '../../safety/secret-sources.js';
8
+ import { redactText } from '../../safety/secrets.js';
9
+ import { describeAppChange, executeAppChange, planAppChange, resolveSettingsInput, } from '../../workflows/app-change.js';
10
+ import { errorMessage } from '../../utils/errors.js';
11
+ import { guardWrite, mcpText, resolveEnvironment } from './shared.js';
12
+ export const settingsInputs = {
13
+ properties: z
14
+ .record(z.string(), z.string())
15
+ .optional()
16
+ .describe('Plain properties to add or change. Do not put secrets here; use securePropertiesFrom'),
17
+ secureProperties: z
18
+ .record(z.string(), z.string())
19
+ .optional()
20
+ .describe('Secure properties to add or change inline. Prefer securePropertiesFrom so values stay out of the conversation'),
21
+ propertiesFrom: z
22
+ .array(secretSourceSchema)
23
+ .optional()
24
+ .describe('Plain properties read on the server from a project file or environment variables'),
25
+ securePropertiesFrom: z
26
+ .array(secretSourceSchema)
27
+ .optional()
28
+ .describe('Secure properties read on the server: {file, format?, keys?, rename?, prefix?} for a .env/.properties/JSON file inside the project, or {env: {propertyName: ENV_VAR}}. Values never appear in the conversation'),
29
+ removeProperties: z.array(z.string()).optional().describe('Plain property names to delete'),
30
+ removeSecureProperties: z.array(z.string()).optional().describe('Secure property names to delete'),
31
+ moveToSecure: z
32
+ .array(z.string())
33
+ .optional()
34
+ .describe('Plain property names whose current value moves to secure properties on the server'),
35
+ };
36
+ export const runtimeInputs = {
37
+ runtime: z
38
+ .string()
39
+ .optional()
40
+ .describe('Mule runtime version to move to, e.g. "4.9.0" or "4.9" for the newest 4.9 patch. Checked against the target first'),
41
+ javaVersion: z
42
+ .string()
43
+ .optional()
44
+ .describe('Java version for the runtime, e.g. "17". Default: keep the current one if offered'),
45
+ releaseChannel: z.string().optional().describe('Release channel, e.g. "LTS" or "EDGE"'),
46
+ };
47
+ export const waitInputs = {
48
+ wait: z.boolean().optional().describe('Wait until every replica runs the new spec, or the change fails'),
49
+ waitTimeoutSeconds: z.number().min(10).max(1800).optional().describe('Wait limit in seconds (default 300)'),
50
+ };
51
+ export const modeInput = z
52
+ .enum(['inPlace', 'stopStart'])
53
+ .optional()
54
+ .describe('inPlace (default): one update with the platform update strategy. stopStart: stop, apply, start, so old and new replicas never run together. Use stopStart for apps with streaming, subscription or polling listeners');
55
+ export const updateStrategyInput = z
56
+ .enum(['rolling', 'recreate'])
57
+ .optional()
58
+ .describe('Persistently set the update strategy. recreate stops old replicas before new ones start');
59
+ export function settingsFromArgs(args) {
60
+ return {
61
+ properties: args.properties,
62
+ secureProperties: args.secureProperties,
63
+ propertiesFrom: args.propertiesFrom,
64
+ securePropertiesFrom: args.securePropertiesFrom,
65
+ removeProperties: args.removeProperties,
66
+ removeSecureProperties: args.removeSecureProperties,
67
+ moveToSecure: args.moveToSecure,
68
+ };
69
+ }
70
+ export function runtimeFromArgs(args) {
71
+ if (!args.runtime)
72
+ return undefined;
73
+ return {
74
+ version: args.runtime,
75
+ ...(args.javaVersion ? { java: args.javaVersion } : {}),
76
+ ...(args.releaseChannel ? { releaseChannel: args.releaseChannel } : {}),
77
+ };
78
+ }
79
+ /**
80
+ * Plan, guard and apply an application change for an MCP tool. Previews by default, refuses
81
+ * production without confirmProduction, and scrubs secret values from every response.
82
+ */
83
+ export async function runAppChangeTool(client, args, change, labels) {
84
+ let secretValues = [];
85
+ try {
86
+ const { orgId, env } = await resolveEnvironment(client, args.environment);
87
+ const resolved = resolveSettingsInput(change.settings);
88
+ secretValues = resolved.secretValues;
89
+ const plan = await planAppChange(client, {
90
+ ...change,
91
+ orgId,
92
+ env,
93
+ appName: args.appName,
94
+ settings: resolved.change,
95
+ secretValues,
96
+ });
97
+ const preview = describeAppChange(plan);
98
+ if (plan.noop)
99
+ return mcpText({ noop: true, message: 'Nothing to change.', ...preview });
100
+ if (plan.blockers.length) {
101
+ return {
102
+ ...mcpText({ refused: true, message: 'The change cannot be applied.', ...preview }),
103
+ isError: true,
104
+ };
105
+ }
106
+ const gate = guardWrite({ env, confirm: args.confirm, confirmProduction: args.confirmProduction, preview });
107
+ if (gate)
108
+ return gate;
109
+ const result = await executeAppChange(client, plan, {
110
+ wait: args.wait,
111
+ timeoutMs: args.waitTimeoutSeconds ? args.waitTimeoutSeconds * 1000 : undefined,
112
+ });
113
+ const response = {
114
+ message: `${labels.done} "${plan.existing.name}" in ${env.name}`,
115
+ deploymentId: result.deployment.id,
116
+ performed: result.performed,
117
+ changes: plan.changes,
118
+ ...(plan.settings ? { settings: plan.settings.diff } : {}),
119
+ ...(result.snapshot
120
+ ? {
121
+ phase: result.snapshot.phase,
122
+ settled: result.snapshot.settled,
123
+ ...(result.snapshot.reason ? { reason: result.snapshot.reason } : {}),
124
+ ...(result.timedOut ? { timedOut: true } : {}),
125
+ }
126
+ : { tip: 'Pass wait: true, or call get_app_status with wait: true, to follow the rollout.' }),
127
+ ...(plan.warnings.length ? { warnings: plan.warnings } : {}),
128
+ };
129
+ const failed = result.snapshot && result.snapshot.terminal && !result.snapshot.settled;
130
+ return {
131
+ ...mcpText(JSON.parse(redactText(JSON.stringify(response), secretValues))),
132
+ ...(failed ? { isError: true } : {}),
133
+ };
134
+ }
135
+ catch (error) {
136
+ return {
137
+ content: [{ type: 'text', text: `Error: ${redactText(errorMessage(error), secretValues)}` }],
138
+ isError: true,
139
+ };
140
+ }
141
+ }
142
+ //# sourceMappingURL=app-inputs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app-inputs.js","sourceRoot":"","sources":["../../../src/mcp/tools/app-inputs.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * MCP Tool Registrar — Application deployment tools (production-guarded)
3
+ * deploy_jar, deploy_app, update_app, update_app_artifact, rollback_app
4
+ *
5
+ * Every tool previews by default and applies on confirm: true; production also needs
6
+ * confirmProduction: true. Changes to an existing app go through one workflow
7
+ * (src/workflows/app-change.ts): one PATCH, a runtime check against the target, and
8
+ * an optional stop, change, start sequence.
9
+ */
10
+ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
11
+ import type { AnypointClient } from '../../client/AnypointClient.js';
12
+ export declare function registerAppDeployTools(server: McpServer, client: AnypointClient): void;
13
+ //# sourceMappingURL=apps-deploy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apps-deploy.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/apps-deploy.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AA0CrE,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,cAAc,QA+X/E"}