@robinmordasiewicz/f5xc-api-mcp 3.4.0 → 3.5.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 (150) hide show
  1. package/dist/generator/openapi-parser.d.ts +14 -77
  2. package/dist/generator/openapi-parser.d.ts.map +1 -1
  3. package/dist/generator/openapi-parser.js +85 -17
  4. package/dist/generator/openapi-parser.js.map +1 -1
  5. package/dist/generator/tool-generator.d.ts +2 -3
  6. package/dist/generator/tool-generator.d.ts.map +1 -1
  7. package/dist/generator/tool-generator.js +1 -28
  8. package/dist/generator/tool-generator.js.map +1 -1
  9. package/dist/index.d.ts +2 -10
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/index.js +28 -33
  12. package/dist/index.js.map +1 -1
  13. package/dist/prompts/workflows.d.ts.map +1 -1
  14. package/dist/prompts/workflows.js +30 -174
  15. package/dist/prompts/workflows.js.map +1 -1
  16. package/dist/resources/handlers.d.ts +0 -2
  17. package/dist/resources/handlers.d.ts.map +1 -1
  18. package/dist/resources/handlers.js +0 -51
  19. package/dist/resources/handlers.js.map +1 -1
  20. package/dist/server.d.ts +1 -1
  21. package/dist/server.d.ts.map +1 -1
  22. package/dist/server.js +1 -2
  23. package/dist/server.js.map +1 -1
  24. package/dist/tools/discovery/execute.d.ts +1 -3
  25. package/dist/tools/discovery/execute.d.ts.map +1 -1
  26. package/dist/tools/discovery/execute.js +1 -34
  27. package/dist/tools/discovery/execute.js.map +1 -1
  28. package/dist/tools/generated/admin_console_and_ui/index.d.ts.map +1 -1
  29. package/dist/tools/generated/admin_console_and_ui/index.js +2 -28
  30. package/dist/tools/generated/admin_console_and_ui/index.js.map +1 -1
  31. package/dist/tools/generated/api/index.d.ts.map +1 -1
  32. package/dist/tools/generated/api/index.js +52 -908
  33. package/dist/tools/generated/api/index.js.map +1 -1
  34. package/dist/tools/generated/authentication/index.d.ts.map +1 -1
  35. package/dist/tools/generated/authentication/index.js +9 -156
  36. package/dist/tools/generated/authentication/index.js.map +1 -1
  37. package/dist/tools/generated/bigip/index.d.ts.map +1 -1
  38. package/dist/tools/generated/bigip/index.js +25 -410
  39. package/dist/tools/generated/bigip/index.js.map +1 -1
  40. package/dist/tools/generated/billing_and_usage/index.d.ts.map +1 -1
  41. package/dist/tools/generated/billing_and_usage/index.js +23 -442
  42. package/dist/tools/generated/billing_and_usage/index.js.map +1 -1
  43. package/dist/tools/generated/blindfold/index.d.ts.map +1 -1
  44. package/dist/tools/generated/blindfold/index.js +32 -568
  45. package/dist/tools/generated/blindfold/index.js.map +1 -1
  46. package/dist/tools/generated/bot_and_threat_defense/index.d.ts.map +1 -1
  47. package/dist/tools/generated/bot_and_threat_defense/index.js +20 -340
  48. package/dist/tools/generated/bot_and_threat_defense/index.js.map +1 -1
  49. package/dist/tools/generated/cdn/index.d.ts.map +1 -1
  50. package/dist/tools/generated/cdn/index.js +22 -428
  51. package/dist/tools/generated/cdn/index.js.map +1 -1
  52. package/dist/tools/generated/ce_management/index.d.ts.map +1 -1
  53. package/dist/tools/generated/ce_management/index.js +32 -558
  54. package/dist/tools/generated/ce_management/index.js.map +1 -1
  55. package/dist/tools/generated/certificates/index.d.ts.map +1 -1
  56. package/dist/tools/generated/certificates/index.js +20 -320
  57. package/dist/tools/generated/certificates/index.js.map +1 -1
  58. package/dist/tools/generated/cloud_infrastructure/index.d.ts.map +1 -1
  59. package/dist/tools/generated/cloud_infrastructure/index.js +33 -572
  60. package/dist/tools/generated/cloud_infrastructure/index.js.map +1 -1
  61. package/dist/tools/generated/container_services/index.d.ts.map +1 -1
  62. package/dist/tools/generated/container_services/index.js +16 -264
  63. package/dist/tools/generated/container_services/index.js.map +1 -1
  64. package/dist/tools/generated/data_and_privacy_security/index.d.ts.map +1 -1
  65. package/dist/tools/generated/data_and_privacy_security/index.js +13 -202
  66. package/dist/tools/generated/data_and_privacy_security/index.js.map +1 -1
  67. package/dist/tools/generated/data_intelligence/index.d.ts.map +1 -1
  68. package/dist/tools/generated/data_intelligence/index.js +15 -290
  69. package/dist/tools/generated/data_intelligence/index.js.map +1 -1
  70. package/dist/tools/generated/ddos/index.d.ts.map +1 -1
  71. package/dist/tools/generated/ddos/index.js +68 -1152
  72. package/dist/tools/generated/ddos/index.js.map +1 -1
  73. package/dist/tools/generated/dns/index.d.ts.map +1 -1
  74. package/dist/tools/generated/dns/index.js +52 -908
  75. package/dist/tools/generated/dns/index.js.map +1 -1
  76. package/dist/tools/generated/generative_ai/index.d.ts.map +1 -1
  77. package/dist/tools/generated/generative_ai/index.js +11 -254
  78. package/dist/tools/generated/generative_ai/index.js.map +1 -1
  79. package/dist/tools/generated/managed_kubernetes/index.d.ts.map +1 -1
  80. package/dist/tools/generated/managed_kubernetes/index.js +25 -400
  81. package/dist/tools/generated/managed_kubernetes/index.js.map +1 -1
  82. package/dist/tools/generated/marketplace/index.d.ts.map +1 -1
  83. package/dist/tools/generated/marketplace/index.js +36 -594
  84. package/dist/tools/generated/marketplace/index.js.map +1 -1
  85. package/dist/tools/generated/network/index.d.ts.map +1 -1
  86. package/dist/tools/generated/network/index.js +98 -1582
  87. package/dist/tools/generated/network/index.js.map +1 -1
  88. package/dist/tools/generated/network_security/index.d.ts.map +1 -1
  89. package/dist/tools/generated/network_security/index.js +69 -1126
  90. package/dist/tools/generated/network_security/index.js.map +1 -1
  91. package/dist/tools/generated/nginx_one/index.d.ts.map +1 -1
  92. package/dist/tools/generated/nginx_one/index.js +14 -236
  93. package/dist/tools/generated/nginx_one/index.js.map +1 -1
  94. package/dist/tools/generated/object_storage/index.d.ts.map +1 -1
  95. package/dist/tools/generated/object_storage/index.js +7 -98
  96. package/dist/tools/generated/object_storage/index.js.map +1 -1
  97. package/dist/tools/generated/observability/index.d.ts.map +1 -1
  98. package/dist/tools/generated/observability/index.js +45 -790
  99. package/dist/tools/generated/observability/index.js.map +1 -1
  100. package/dist/tools/generated/rate_limiting/index.d.ts.map +1 -1
  101. package/dist/tools/generated/rate_limiting/index.js +15 -240
  102. package/dist/tools/generated/rate_limiting/index.js.map +1 -1
  103. package/dist/tools/generated/secops_and_incident_response/index.d.ts.map +1 -1
  104. package/dist/tools/generated/secops_and_incident_response/index.js +5 -80
  105. package/dist/tools/generated/secops_and_incident_response/index.js.map +1 -1
  106. package/dist/tools/generated/service_mesh/index.d.ts.map +1 -1
  107. package/dist/tools/generated/service_mesh/index.js +44 -766
  108. package/dist/tools/generated/service_mesh/index.js.map +1 -1
  109. package/dist/tools/generated/shape/index.d.ts.map +1 -1
  110. package/dist/tools/generated/shape/index.js +182 -3502
  111. package/dist/tools/generated/shape/index.js.map +1 -1
  112. package/dist/tools/generated/sites/index.d.ts.map +1 -1
  113. package/dist/tools/generated/sites/index.js +106 -1864
  114. package/dist/tools/generated/sites/index.js.map +1 -1
  115. package/dist/tools/generated/statistics/index.d.ts.map +1 -1
  116. package/dist/tools/generated/statistics/index.js +70 -1350
  117. package/dist/tools/generated/statistics/index.js.map +1 -1
  118. package/dist/tools/generated/support/index.d.ts.map +1 -1
  119. package/dist/tools/generated/support/index.js +47 -928
  120. package/dist/tools/generated/support/index.js.map +1 -1
  121. package/dist/tools/generated/telemetry_and_insights/index.d.ts.map +1 -1
  122. package/dist/tools/generated/telemetry_and_insights/index.js +23 -492
  123. package/dist/tools/generated/telemetry_and_insights/index.js.map +1 -1
  124. package/dist/tools/generated/tenant_and_identity/index.d.ts.map +1 -1
  125. package/dist/tools/generated/tenant_and_identity/index.js +185 -3081
  126. package/dist/tools/generated/tenant_and_identity/index.js.map +1 -1
  127. package/dist/tools/generated/threat_campaign/index.d.ts.map +1 -1
  128. package/dist/tools/generated/threat_campaign/index.js +1 -14
  129. package/dist/tools/generated/threat_campaign/index.js.map +1 -1
  130. package/dist/tools/generated/users/index.d.ts.map +1 -1
  131. package/dist/tools/generated/users/index.js +12 -208
  132. package/dist/tools/generated/users/index.js.map +1 -1
  133. package/dist/tools/generated/virtual/index.d.ts.map +1 -1
  134. package/dist/tools/generated/virtual/index.js +89 -1526
  135. package/dist/tools/generated/virtual/index.js.map +1 -1
  136. package/dist/tools/generated/vpm_and_node_management/index.d.ts.map +1 -1
  137. package/dist/tools/generated/vpm_and_node_management/index.js +1 -14
  138. package/dist/tools/generated/vpm_and_node_management/index.js.map +1 -1
  139. package/dist/tools/generated/waf/index.d.ts.map +1 -1
  140. package/dist/tools/generated/waf/index.js +36 -674
  141. package/dist/tools/generated/waf/index.js.map +1 -1
  142. package/package.json +1 -1
  143. package/dist/cli/index.d.ts +0 -16
  144. package/dist/cli/index.d.ts.map +0 -1
  145. package/dist/cli/index.js +0 -116
  146. package/dist/cli/index.js.map +0 -1
  147. package/dist/cli/setup.d.ts +0 -54
  148. package/dist/cli/setup.d.ts.map +0 -1
  149. package/dist/cli/setup.js +0 -347
  150. package/dist/cli/setup.js.map +0 -1
package/dist/cli/setup.js DELETED
@@ -1,347 +0,0 @@
1
- /**
2
- * Interactive CLI setup wizard for F5XC API MCP credentials
3
- *
4
- * Features:
5
- * - Auto-detection of existing environment variables
6
- * - Interactive profile creation with validation
7
- * - Profile management (list, delete, set default)
8
- */
9
- import * as readline from "readline";
10
- import { ConfigManager } from "../config/index.js";
11
- import { AUTH_ENV_VARS } from "../auth/credential-manager.js";
12
- import { logger } from "../utils/logging.js";
13
- /**
14
- * Detect existing environment variables
15
- */
16
- export function detectEnvironmentCredentials() {
17
- const apiUrl = process.env[AUTH_ENV_VARS.API_URL];
18
- const apiToken = process.env[AUTH_ENV_VARS.API_TOKEN];
19
- const p12File = process.env[AUTH_ENV_VARS.P12_FILE];
20
- const p12Password = process.env[AUTH_ENV_VARS.P12_PASSWORD];
21
- return {
22
- hasCredentials: Boolean(apiUrl && (apiToken || p12File)),
23
- apiUrl,
24
- apiToken,
25
- p12File,
26
- p12Password,
27
- };
28
- }
29
- /**
30
- * Create a readline interface for user input
31
- */
32
- function createReadlineInterface() {
33
- return readline.createInterface({
34
- input: process.stdin,
35
- output: process.stdout,
36
- });
37
- }
38
- /**
39
- * Prompt user with a question
40
- */
41
- async function prompt(rl, question) {
42
- return new Promise((resolve) => {
43
- rl.question(question, (answer) => {
44
- resolve(answer.trim());
45
- });
46
- });
47
- }
48
- /**
49
- * Validate profile name format
50
- */
51
- export function validateProfileName(name) {
52
- if (!name) {
53
- return { valid: false, error: "Profile name cannot be empty" };
54
- }
55
- if (!/^[a-z0-9_-]+$/i.test(name)) {
56
- return {
57
- valid: false,
58
- error: "Profile name must contain only alphanumeric characters, hyphens, and underscores",
59
- };
60
- }
61
- return { valid: true };
62
- }
63
- /**
64
- * Create a profile from detected environment variables
65
- */
66
- async function createProfileFromEnv(rl, configManager, envCreds) {
67
- console.log();
68
- // Get profile name
69
- let profileName = "";
70
- while (!profileName) {
71
- const answer = await prompt(rl, "Profile name [production]: ");
72
- profileName = answer || "production";
73
- const validation = validateProfileName(profileName);
74
- if (!validation.valid) {
75
- console.log(`❌ ${validation.error}`);
76
- profileName = "";
77
- }
78
- }
79
- // Get optional description
80
- const description = await prompt(rl, "Description [Environment credentials]: ");
81
- // Create profile
82
- const profile = {
83
- apiUrl: envCreds.apiUrl,
84
- apiToken: envCreds.apiToken,
85
- p12File: envCreds.p12File,
86
- p12Password: envCreds.p12Password,
87
- metadata: {
88
- description: description || "Environment credentials",
89
- createdAt: new Date().toISOString(),
90
- lastModifiedAt: new Date().toISOString(),
91
- },
92
- };
93
- await configManager.setProfile(profileName, profile);
94
- console.log(`\n✅ Profile "${profileName}" created from environment variables!\n`);
95
- // Ask if user wants to set as default
96
- const setDefault = await prompt(rl, "Set as default profile? (Y/n): ");
97
- if (setDefault.toLowerCase() !== "n") {
98
- await configManager.setDefaultProfile(profileName);
99
- console.log(`✅ "${profileName}" set as default profile\n`);
100
- }
101
- console.log("Next steps:");
102
- console.log(" • Run 'f5xc-api-mcp' to start with this profile");
103
- console.log(" • Or use 'F5XC_PROFILE=staging f5xc-api-mcp' for other profiles");
104
- console.log(" • Environment variables still override profile settings\n");
105
- }
106
- /**
107
- * Create a profile manually
108
- */
109
- async function addProfile(rl, configManager) {
110
- console.log("\nLet's create a new profile.\n");
111
- // Get profile name
112
- let profileName = "";
113
- while (!profileName) {
114
- const answer = await prompt(rl, "Profile name: ");
115
- profileName = answer;
116
- if (!profileName) {
117
- console.log("❌ Profile name cannot be empty");
118
- }
119
- else {
120
- const validation = validateProfileName(profileName);
121
- if (!validation.valid) {
122
- console.log(`❌ ${validation.error}`);
123
- profileName = "";
124
- }
125
- }
126
- }
127
- // Get description
128
- const description = await prompt(rl, "Description (optional): ");
129
- // Get API URL
130
- let apiUrl = "";
131
- while (!apiUrl) {
132
- const answer = await prompt(rl, "F5XC API URL: ");
133
- apiUrl = answer;
134
- if (!apiUrl) {
135
- console.log("❌ API URL cannot be empty");
136
- }
137
- else if (!apiUrl.startsWith("http://") && !apiUrl.startsWith("https://")) {
138
- console.log("❌ API URL must start with http:// or https://");
139
- apiUrl = "";
140
- }
141
- }
142
- // Get authentication method
143
- console.log("\nAuthentication method:");
144
- console.log(" 1) API Token");
145
- console.log(" 2) P12 Certificate");
146
- let authMethod = "";
147
- while (authMethod !== "1" && authMethod !== "2") {
148
- authMethod = await prompt(rl, "Select (1-2) [1]: ");
149
- authMethod = authMethod || "1";
150
- if (authMethod !== "1" && authMethod !== "2") {
151
- console.log("❌ Please select 1 or 2");
152
- authMethod = "";
153
- }
154
- }
155
- let apiToken;
156
- let p12File;
157
- let p12Password;
158
- if (authMethod === "1") {
159
- // Token authentication
160
- apiToken = await prompt(rl, "API Token: ");
161
- if (!apiToken) {
162
- console.log("❌ API Token cannot be empty");
163
- return;
164
- }
165
- }
166
- else {
167
- // Certificate authentication
168
- p12File = await prompt(rl, "Path to P12 certificate file: ");
169
- if (!p12File) {
170
- console.log("❌ P12 file path cannot be empty");
171
- return;
172
- }
173
- p12Password = await prompt(rl, "P12 certificate password (optional): ");
174
- }
175
- // Create profile
176
- const profile = {
177
- apiUrl,
178
- apiToken,
179
- p12File,
180
- p12Password: p12Password || undefined,
181
- metadata: {
182
- description: description || undefined,
183
- createdAt: new Date().toISOString(),
184
- lastModifiedAt: new Date().toISOString(),
185
- },
186
- };
187
- await configManager.setProfile(profileName, profile);
188
- console.log(`\n✅ Profile "${profileName}" created successfully!\n`);
189
- // Ask if user wants to set as default
190
- const setDefault = await prompt(rl, "Set as default profile? (Y/n): ");
191
- if (setDefault.toLowerCase() !== "n") {
192
- await configManager.setDefaultProfile(profileName);
193
- console.log(`✅ "${profileName}" set as default profile\n`);
194
- }
195
- }
196
- /**
197
- * Run the interactive setup wizard
198
- */
199
- export async function runSetupWizard() {
200
- const rl = createReadlineInterface();
201
- const configManager = new ConfigManager();
202
- try {
203
- console.log("\n🔧 F5XC API MCP Server - Credential Setup\n");
204
- // Check for existing environment variables
205
- const envCreds = detectEnvironmentCredentials();
206
- if (envCreds.hasCredentials) {
207
- console.log("✅ Detected existing environment variables:");
208
- if (envCreds.apiUrl) {
209
- console.log(` F5XC_API_URL: ${envCreds.apiUrl}`);
210
- }
211
- if (envCreds.apiToken) {
212
- console.log(` F5XC_API_TOKEN: ******* (configured)`);
213
- }
214
- if (envCreds.p12File) {
215
- console.log(` F5XC_P12_FILE: ${envCreds.p12File}`);
216
- }
217
- console.log();
218
- const useEnv = await prompt(rl, "Create profile from environment variables? (Y/n): ");
219
- if (useEnv.toLowerCase() !== "n") {
220
- await createProfileFromEnv(rl, configManager, envCreds);
221
- return;
222
- }
223
- }
224
- // Manual profile creation
225
- await addProfile(rl, configManager);
226
- }
227
- catch (error) {
228
- logger.error("Setup wizard error", {
229
- error: error instanceof Error ? error.message : String(error),
230
- });
231
- process.exit(1);
232
- }
233
- finally {
234
- rl.close();
235
- }
236
- }
237
- /**
238
- * List all configured profiles
239
- */
240
- export async function listProfiles() {
241
- const configManager = new ConfigManager();
242
- try {
243
- const profiles = await configManager.listProfiles();
244
- const defaultProfile = await configManager.getDefaultProfile();
245
- if (profiles.length === 0) {
246
- console.log("No profiles configured. Run 'f5xc-api-mcp --setup' to create one.\n");
247
- return;
248
- }
249
- console.log("Configured profiles:\n");
250
- for (const profile of profiles) {
251
- const creds = await configManager.getProfile(profile);
252
- const isDefault = profile === defaultProfile ? " (default)" : "";
253
- console.log(` • ${profile}${isDefault}`);
254
- if (creds?.metadata?.description) {
255
- console.log(` ${creds.metadata.description}`);
256
- }
257
- if (creds?.apiUrl) {
258
- console.log(` URL: ${creds.apiUrl}`);
259
- }
260
- console.log();
261
- }
262
- }
263
- catch (error) {
264
- logger.error("Failed to list profiles", {
265
- error: error instanceof Error ? error.message : String(error),
266
- });
267
- process.exit(1);
268
- }
269
- }
270
- /**
271
- * Delete a profile
272
- */
273
- export async function deleteProfile(name) {
274
- const configManager = new ConfigManager();
275
- try {
276
- await configManager.deleteProfile(name);
277
- console.log(`✅ Profile "${name}" deleted.\n`);
278
- }
279
- catch (error) {
280
- console.log(`❌ ${error instanceof Error ? error.message : String(error)}\n`);
281
- process.exit(1);
282
- }
283
- }
284
- /**
285
- * Set default profile
286
- */
287
- export async function setDefaultProfile(name) {
288
- const configManager = new ConfigManager();
289
- try {
290
- await configManager.setDefaultProfile(name);
291
- console.log(`✅ Default profile set to "${name}".\n`);
292
- }
293
- catch (error) {
294
- console.log(`❌ ${error instanceof Error ? error.message : String(error)}\n`);
295
- process.exit(1);
296
- }
297
- }
298
- /**
299
- * Show current configuration
300
- */
301
- export async function showConfig() {
302
- const configManager = new ConfigManager();
303
- try {
304
- const config = await configManager.getConfig();
305
- console.log("\nConfiguration:\n");
306
- console.log(JSON.stringify(config, null, 2));
307
- console.log();
308
- }
309
- catch (error) {
310
- logger.error("Failed to read configuration", {
311
- error: error instanceof Error ? error.message : String(error),
312
- });
313
- process.exit(1);
314
- }
315
- }
316
- /**
317
- * Test connection with a specific profile
318
- */
319
- export async function testProfile(name) {
320
- const configManager = new ConfigManager();
321
- try {
322
- const profile = await configManager.getProfile(name);
323
- if (!profile) {
324
- console.log(`❌ Profile "${name}" not found.\n`);
325
- process.exit(1);
326
- }
327
- console.log(`\nTesting profile "${name}"...\n`);
328
- if (!profile.apiUrl) {
329
- console.log("❌ No API URL configured for this profile.\n");
330
- process.exit(1);
331
- }
332
- if (!profile.apiToken && !profile.p12File) {
333
- console.log("❌ No authentication configured for this profile.\n");
334
- process.exit(1);
335
- }
336
- // TODO: Implement actual connection test
337
- console.log("✅ Profile configuration is valid.\n");
338
- console.log("Note: Full connection testing not yet implemented.\n");
339
- }
340
- catch (error) {
341
- logger.error("Failed to test profile", {
342
- error: error instanceof Error ? error.message : String(error),
343
- });
344
- process.exit(1);
345
- }
346
- }
347
- //# sourceMappingURL=setup.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/cli/setup.ts"],"names":[],"mappings":"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"}