@robinmordasiewicz/f5xc-api-mcp 3.4.0 → 3.6.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 (170) hide show
  1. package/dist/generator/dependency-extractor.d.ts +103 -0
  2. package/dist/generator/dependency-extractor.d.ts.map +1 -0
  3. package/dist/generator/dependency-extractor.js +473 -0
  4. package/dist/generator/dependency-extractor.js.map +1 -0
  5. package/dist/generator/dependency-graph.d.ts +67 -0
  6. package/dist/generator/dependency-graph.d.ts.map +1 -0
  7. package/dist/generator/dependency-graph.js +330 -0
  8. package/dist/generator/dependency-graph.js.map +1 -0
  9. package/dist/generator/dependency-types.d.ts +206 -0
  10. package/dist/generator/dependency-types.d.ts.map +1 -0
  11. package/dist/generator/dependency-types.js +37 -0
  12. package/dist/generator/dependency-types.js.map +1 -0
  13. package/dist/generator/openapi-parser.d.ts +21 -77
  14. package/dist/generator/openapi-parser.d.ts.map +1 -1
  15. package/dist/generator/openapi-parser.js +126 -17
  16. package/dist/generator/openapi-parser.js.map +1 -1
  17. package/dist/generator/tool-generator.d.ts +19 -3
  18. package/dist/generator/tool-generator.d.ts.map +1 -1
  19. package/dist/generator/tool-generator.js +26 -28
  20. package/dist/generator/tool-generator.js.map +1 -1
  21. package/dist/index.d.ts +2 -10
  22. package/dist/index.d.ts.map +1 -1
  23. package/dist/index.js +28 -33
  24. package/dist/index.js.map +1 -1
  25. package/dist/prompts/workflows.d.ts.map +1 -1
  26. package/dist/prompts/workflows.js +30 -174
  27. package/dist/prompts/workflows.js.map +1 -1
  28. package/dist/resources/handlers.d.ts +0 -2
  29. package/dist/resources/handlers.d.ts.map +1 -1
  30. package/dist/resources/handlers.js +0 -51
  31. package/dist/resources/handlers.js.map +1 -1
  32. package/dist/server.d.ts +1 -1
  33. package/dist/server.d.ts.map +1 -1
  34. package/dist/server.js +1 -2
  35. package/dist/server.js.map +1 -1
  36. package/dist/tools/discovery/dependencies.d.ts +113 -0
  37. package/dist/tools/discovery/dependencies.d.ts.map +1 -0
  38. package/dist/tools/discovery/dependencies.js +258 -0
  39. package/dist/tools/discovery/dependencies.js.map +1 -0
  40. package/dist/tools/discovery/execute.d.ts +1 -3
  41. package/dist/tools/discovery/execute.d.ts.map +1 -1
  42. package/dist/tools/discovery/execute.js +1 -34
  43. package/dist/tools/discovery/execute.js.map +1 -1
  44. package/dist/tools/discovery/index.d.ts +33 -0
  45. package/dist/tools/discovery/index.d.ts.map +1 -1
  46. package/dist/tools/discovery/index.js +43 -0
  47. package/dist/tools/discovery/index.js.map +1 -1
  48. package/dist/tools/generated/admin_console_and_ui/index.d.ts.map +1 -1
  49. package/dist/tools/generated/admin_console_and_ui/index.js +8 -28
  50. package/dist/tools/generated/admin_console_and_ui/index.js.map +1 -1
  51. package/dist/tools/generated/api/index.d.ts.map +1 -1
  52. package/dist/tools/generated/api/index.js +1256 -908
  53. package/dist/tools/generated/api/index.js.map +1 -1
  54. package/dist/tools/generated/authentication/index.d.ts.map +1 -1
  55. package/dist/tools/generated/authentication/index.js +58 -156
  56. package/dist/tools/generated/authentication/index.js.map +1 -1
  57. package/dist/tools/generated/bigip/index.d.ts.map +1 -1
  58. package/dist/tools/generated/bigip/index.js +344 -410
  59. package/dist/tools/generated/bigip/index.js.map +1 -1
  60. package/dist/tools/generated/billing_and_usage/index.d.ts.map +1 -1
  61. package/dist/tools/generated/billing_and_usage/index.js +192 -442
  62. package/dist/tools/generated/billing_and_usage/index.js.map +1 -1
  63. package/dist/tools/generated/blindfold/index.d.ts.map +1 -1
  64. package/dist/tools/generated/blindfold/index.js +360 -568
  65. package/dist/tools/generated/blindfold/index.js.map +1 -1
  66. package/dist/tools/generated/bot_and_threat_defense/index.d.ts.map +1 -1
  67. package/dist/tools/generated/bot_and_threat_defense/index.js +502 -340
  68. package/dist/tools/generated/bot_and_threat_defense/index.js.map +1 -1
  69. package/dist/tools/generated/cdn/index.d.ts.map +1 -1
  70. package/dist/tools/generated/cdn/index.js +369 -428
  71. package/dist/tools/generated/cdn/index.js.map +1 -1
  72. package/dist/tools/generated/ce_management/index.d.ts.map +1 -1
  73. package/dist/tools/generated/ce_management/index.js +407 -558
  74. package/dist/tools/generated/ce_management/index.js.map +1 -1
  75. package/dist/tools/generated/certificates/index.d.ts.map +1 -1
  76. package/dist/tools/generated/certificates/index.js +288 -320
  77. package/dist/tools/generated/certificates/index.js.map +1 -1
  78. package/dist/tools/generated/cloud_infrastructure/index.d.ts.map +1 -1
  79. package/dist/tools/generated/cloud_infrastructure/index.js +407 -572
  80. package/dist/tools/generated/cloud_infrastructure/index.js.map +1 -1
  81. package/dist/tools/generated/container_services/index.d.ts.map +1 -1
  82. package/dist/tools/generated/container_services/index.js +228 -264
  83. package/dist/tools/generated/container_services/index.js.map +1 -1
  84. package/dist/tools/generated/data_and_privacy_security/index.d.ts.map +1 -1
  85. package/dist/tools/generated/data_and_privacy_security/index.js +156 -202
  86. package/dist/tools/generated/data_and_privacy_security/index.js.map +1 -1
  87. package/dist/tools/generated/data_intelligence/index.d.ts.map +1 -1
  88. package/dist/tools/generated/data_intelligence/index.js +120 -290
  89. package/dist/tools/generated/data_intelligence/index.js.map +1 -1
  90. package/dist/tools/generated/ddos/index.d.ts.map +1 -1
  91. package/dist/tools/generated/ddos/index.js +732 -1152
  92. package/dist/tools/generated/ddos/index.js.map +1 -1
  93. package/dist/tools/generated/dns/index.d.ts.map +1 -1
  94. package/dist/tools/generated/dns/index.js +544 -908
  95. package/dist/tools/generated/dns/index.js.map +1 -1
  96. package/dist/tools/generated/generative_ai/index.d.ts.map +1 -1
  97. package/dist/tools/generated/generative_ai/index.js +58 -254
  98. package/dist/tools/generated/generative_ai/index.js.map +1 -1
  99. package/dist/tools/generated/managed_kubernetes/index.d.ts.map +1 -1
  100. package/dist/tools/generated/managed_kubernetes/index.js +535 -400
  101. package/dist/tools/generated/managed_kubernetes/index.js.map +1 -1
  102. package/dist/tools/generated/marketplace/index.d.ts.map +1 -1
  103. package/dist/tools/generated/marketplace/index.js +343 -594
  104. package/dist/tools/generated/marketplace/index.js.map +1 -1
  105. package/dist/tools/generated/network/index.d.ts.map +1 -1
  106. package/dist/tools/generated/network/index.js +1398 -1590
  107. package/dist/tools/generated/network/index.js.map +1 -1
  108. package/dist/tools/generated/network_security/index.d.ts.map +1 -1
  109. package/dist/tools/generated/network_security/index.js +1879 -1126
  110. package/dist/tools/generated/network_security/index.js.map +1 -1
  111. package/dist/tools/generated/nginx_one/index.d.ts.map +1 -1
  112. package/dist/tools/generated/nginx_one/index.js +108 -236
  113. package/dist/tools/generated/nginx_one/index.js.map +1 -1
  114. package/dist/tools/generated/object_storage/index.d.ts.map +1 -1
  115. package/dist/tools/generated/object_storage/index.js +39 -98
  116. package/dist/tools/generated/object_storage/index.js.map +1 -1
  117. package/dist/tools/generated/observability/index.d.ts.map +1 -1
  118. package/dist/tools/generated/observability/index.js +310 -790
  119. package/dist/tools/generated/observability/index.js.map +1 -1
  120. package/dist/tools/generated/rate_limiting/index.d.ts.map +1 -1
  121. package/dist/tools/generated/rate_limiting/index.js +411 -240
  122. package/dist/tools/generated/rate_limiting/index.js.map +1 -1
  123. package/dist/tools/generated/secops_and_incident_response/index.d.ts.map +1 -1
  124. package/dist/tools/generated/secops_and_incident_response/index.js +137 -80
  125. package/dist/tools/generated/secops_and_incident_response/index.js.map +1 -1
  126. package/dist/tools/generated/service_mesh/index.d.ts.map +1 -1
  127. package/dist/tools/generated/service_mesh/index.js +1118 -778
  128. package/dist/tools/generated/service_mesh/index.js.map +1 -1
  129. package/dist/tools/generated/shape/index.d.ts.map +1 -1
  130. package/dist/tools/generated/shape/index.js +1101 -3504
  131. package/dist/tools/generated/shape/index.js.map +1 -1
  132. package/dist/tools/generated/sites/index.d.ts.map +1 -1
  133. package/dist/tools/generated/sites/index.js +1780 -1872
  134. package/dist/tools/generated/sites/index.js.map +1 -1
  135. package/dist/tools/generated/statistics/index.d.ts.map +1 -1
  136. package/dist/tools/generated/statistics/index.js +644 -1350
  137. package/dist/tools/generated/statistics/index.js.map +1 -1
  138. package/dist/tools/generated/support/index.d.ts.map +1 -1
  139. package/dist/tools/generated/support/index.js +321 -928
  140. package/dist/tools/generated/support/index.js.map +1 -1
  141. package/dist/tools/generated/telemetry_and_insights/index.d.ts.map +1 -1
  142. package/dist/tools/generated/telemetry_and_insights/index.js +123 -492
  143. package/dist/tools/generated/telemetry_and_insights/index.js.map +1 -1
  144. package/dist/tools/generated/tenant_and_identity/index.d.ts.map +1 -1
  145. package/dist/tools/generated/tenant_and_identity/index.js +1568 -3086
  146. package/dist/tools/generated/tenant_and_identity/index.js.map +1 -1
  147. package/dist/tools/generated/threat_campaign/index.d.ts.map +1 -1
  148. package/dist/tools/generated/threat_campaign/index.js +4 -14
  149. package/dist/tools/generated/threat_campaign/index.js.map +1 -1
  150. package/dist/tools/generated/users/index.d.ts.map +1 -1
  151. package/dist/tools/generated/users/index.js +151 -208
  152. package/dist/tools/generated/users/index.js.map +1 -1
  153. package/dist/tools/generated/virtual/index.d.ts.map +1 -1
  154. package/dist/tools/generated/virtual/index.js +1256 -1533
  155. package/dist/tools/generated/virtual/index.js.map +1 -1
  156. package/dist/tools/generated/vpm_and_node_management/index.d.ts.map +1 -1
  157. package/dist/tools/generated/vpm_and_node_management/index.js +4 -14
  158. package/dist/tools/generated/vpm_and_node_management/index.js.map +1 -1
  159. package/dist/tools/generated/waf/index.d.ts.map +1 -1
  160. package/dist/tools/generated/waf/index.js +821 -675
  161. package/dist/tools/generated/waf/index.js.map +1 -1
  162. package/package.json +1 -1
  163. package/dist/cli/index.d.ts +0 -16
  164. package/dist/cli/index.d.ts.map +0 -1
  165. package/dist/cli/index.js +0 -116
  166. package/dist/cli/index.js.map +0 -1
  167. package/dist/cli/setup.d.ts +0 -54
  168. package/dist/cli/setup.d.ts.map +0 -1
  169. package/dist/cli/setup.js +0 -347
  170. 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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"}