@robinmordasiewicz/f5xc-api-mcp 1.0.82-2512312028 → 1.0.82-2601012247

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 (58) hide show
  1. package/README.md +45 -0
  2. package/dist/auth/credential-manager.d.ts +55 -29
  3. package/dist/auth/credential-manager.d.ts.map +1 -1
  4. package/dist/auth/credential-manager.js +178 -100
  5. package/dist/auth/credential-manager.js.map +1 -1
  6. package/dist/auth/http-client.d.ts +5 -0
  7. package/dist/auth/http-client.d.ts.map +1 -1
  8. package/dist/auth/http-client.js +63 -11
  9. package/dist/auth/http-client.js.map +1 -1
  10. package/dist/auth/index.d.ts +5 -0
  11. package/dist/auth/index.d.ts.map +1 -1
  12. package/dist/auth/index.js +5 -0
  13. package/dist/auth/index.js.map +1 -1
  14. package/dist/config/paths.d.ts +34 -0
  15. package/dist/config/paths.d.ts.map +1 -0
  16. package/dist/config/paths.js +67 -0
  17. package/dist/config/paths.js.map +1 -0
  18. package/dist/index.d.ts +12 -6
  19. package/dist/index.d.ts.map +1 -1
  20. package/dist/index.js +22 -11
  21. package/dist/index.js.map +1 -1
  22. package/dist/profile/index.d.ts +9 -0
  23. package/dist/profile/index.d.ts.map +1 -0
  24. package/dist/profile/index.js +8 -0
  25. package/dist/profile/index.js.map +1 -0
  26. package/dist/profile/manager.d.ts +75 -0
  27. package/dist/profile/manager.d.ts.map +1 -0
  28. package/dist/profile/manager.js +327 -0
  29. package/dist/profile/manager.js.map +1 -0
  30. package/dist/profile/types.d.ts +55 -0
  31. package/dist/profile/types.d.ts.map +1 -0
  32. package/dist/profile/types.js +8 -0
  33. package/dist/profile/types.js.map +1 -0
  34. package/dist/server.d.ts +6 -1
  35. package/dist/server.d.ts.map +1 -1
  36. package/dist/server.js +8 -2
  37. package/dist/server.js.map +1 -1
  38. package/dist/utils/error-handling.d.ts +25 -0
  39. package/dist/utils/error-handling.d.ts.map +1 -1
  40. package/dist/utils/error-handling.js +127 -0
  41. package/dist/utils/error-handling.js.map +1 -1
  42. package/package.json +1 -1
  43. package/dist/config/config-manager.d.ts +0 -72
  44. package/dist/config/config-manager.d.ts.map +0 -1
  45. package/dist/config/config-manager.js +0 -247
  46. package/dist/config/config-manager.js.map +0 -1
  47. package/dist/config/index.d.ts +0 -7
  48. package/dist/config/index.d.ts.map +0 -1
  49. package/dist/config/index.js +0 -7
  50. package/dist/config/index.js.map +0 -1
  51. package/dist/config/schema.d.ts +0 -74
  52. package/dist/config/schema.d.ts.map +0 -1
  53. package/dist/config/schema.js +0 -75
  54. package/dist/config/schema.js.map +0 -1
  55. package/dist/config/types.d.ts +0 -77
  56. package/dist/config/types.d.ts.map +0 -1
  57. package/dist/config/types.js +0 -31
  58. package/dist/config/types.js.map +0 -1
@@ -74,6 +74,28 @@ export class ConfigurationError extends F5XCError {
74
74
  this.name = "ConfigurationError";
75
75
  }
76
76
  }
77
+ /**
78
+ * SSL/TLS certificate validation errors
79
+ */
80
+ export class SSLCertificateError extends F5XCError {
81
+ /** The hostname that failed validation */
82
+ hostname;
83
+ /** Certificate details if available */
84
+ certInfo;
85
+ constructor(message, hostname, certInfo, context) {
86
+ super(message, "SSL_CERT_ERROR", context);
87
+ this.name = "SSLCertificateError";
88
+ this.hostname = hostname;
89
+ this.certInfo = certInfo;
90
+ }
91
+ toJSON() {
92
+ return {
93
+ ...super.toJSON(),
94
+ hostname: this.hostname,
95
+ certInfo: this.certInfo,
96
+ };
97
+ }
98
+ }
77
99
  /**
78
100
  * Validation errors for request parameters
79
101
  */
@@ -134,6 +156,8 @@ export var ErrorCategory;
134
156
  ErrorCategory["NETWORK"] = "network";
135
157
  /** Configuration errors */
136
158
  ErrorCategory["CONFIGURATION"] = "configuration";
159
+ /** SSL/TLS certificate errors */
160
+ ErrorCategory["SSL_CERTIFICATE"] = "ssl_certificate";
137
161
  /** Unknown errors */
138
162
  ErrorCategory["UNKNOWN"] = "unknown";
139
163
  })(ErrorCategory || (ErrorCategory = {}));
@@ -150,6 +174,9 @@ export function categorizeError(error) {
150
174
  if (error instanceof ConfigurationError) {
151
175
  return ErrorCategory.CONFIGURATION;
152
176
  }
177
+ if (error instanceof SSLCertificateError) {
178
+ return ErrorCategory.SSL_CERTIFICATE;
179
+ }
153
180
  if (error instanceof F5XCApiError) {
154
181
  if (error.status !== undefined) {
155
182
  if (error.status === 401 || error.status === 403) {
@@ -166,6 +193,25 @@ export function categorizeError(error) {
166
193
  }
167
194
  if (error instanceof Error) {
168
195
  const message = error.message.toLowerCase();
196
+ const code = error.code?.toLowerCase() ?? "";
197
+ // SSL/TLS certificate errors
198
+ if (message.includes("certificate") ||
199
+ message.includes("ssl") ||
200
+ message.includes("tls") ||
201
+ message.includes("altnames") ||
202
+ message.includes("hostname") && message.includes("match") ||
203
+ message.includes("self signed") ||
204
+ message.includes("self-signed") ||
205
+ message.includes("unable to verify") ||
206
+ code === "cert_has_expired" ||
207
+ code === "depth_zero_self_signed_cert" ||
208
+ code === "unable_to_get_issuer_cert" ||
209
+ code === "unable_to_verify_leaf_signature" ||
210
+ code === "hostname_mismatch" ||
211
+ code === "err_tls_cert_altname_invalid") {
212
+ return ErrorCategory.SSL_CERTIFICATE;
213
+ }
214
+ // Network/connectivity errors
169
215
  if (message.includes("network") ||
170
216
  message.includes("timeout") ||
171
217
  message.includes("econnrefused") ||
@@ -236,4 +282,85 @@ export function withErrorHandling(fn) {
236
282
  }
237
283
  };
238
284
  }
285
+ /**
286
+ * Detect and wrap SSL certificate errors with actionable guidance
287
+ *
288
+ * @param error - Original error to analyze
289
+ * @param apiUrl - Optional API URL for context
290
+ * @returns Wrapped SSLCertificateError with helpful guidance or original error
291
+ */
292
+ export function wrapSSLError(error, apiUrl) {
293
+ if (!(error instanceof Error)) {
294
+ return error instanceof Error ? error : new Error(String(error));
295
+ }
296
+ const message = error.message.toLowerCase();
297
+ let hostname;
298
+ try {
299
+ if (apiUrl) {
300
+ hostname = new URL(apiUrl).hostname;
301
+ }
302
+ }
303
+ catch {
304
+ // Invalid URL, ignore
305
+ }
306
+ // Check for hostname/altname mismatch (the staging certificate issue)
307
+ if (message.includes("altnames") || (message.includes("hostname") && message.includes("match"))) {
308
+ const isStaging = hostname?.includes(".staging.");
309
+ let guidance = `SSL Certificate Error: The server certificate does not cover hostname "${hostname ?? "unknown"}".`;
310
+ if (isStaging) {
311
+ guidance += `
312
+
313
+ This is a known issue with F5 XC staging environments. The wildcard certificate
314
+ *.console.ves.volterra.io does not match multi-level subdomains like
315
+ tenant.staging.console.ves.volterra.io.
316
+
317
+ SOLUTIONS:
318
+ 1. (Recommended) Set F5XC_CA_BUNDLE=/path/to/custom-ca.crt
319
+ 2. (Development only) Set F5XC_TLS_INSECURE=true to bypass verification
320
+ WARNING: Never use insecure mode in production!
321
+
322
+ Example:
323
+ export F5XC_TLS_INSECURE=true`;
324
+ }
325
+ else {
326
+ guidance += `
327
+
328
+ SOLUTIONS:
329
+ 1. Verify the API URL is correct: ${apiUrl ?? "not set"}
330
+ 2. If using a custom CA, set F5XC_CA_BUNDLE=/path/to/ca-bundle.crt
331
+ 3. Check if the certificate has expired or is self-signed`;
332
+ }
333
+ return new SSLCertificateError(guidance, hostname, undefined, {
334
+ originalError: error.message,
335
+ apiUrl,
336
+ });
337
+ }
338
+ // Check for self-signed certificates
339
+ if (message.includes("self signed") || message.includes("self-signed")) {
340
+ return new SSLCertificateError(`SSL Certificate Error: Self-signed certificate detected.
341
+
342
+ SOLUTIONS:
343
+ 1. (Recommended) Add your CA certificate: F5XC_CA_BUNDLE=/path/to/ca.crt
344
+ 2. (Development only) Set F5XC_TLS_INSECURE=true to bypass verification`, hostname, undefined, { originalError: error.message, apiUrl });
345
+ }
346
+ // Check for expired certificates
347
+ if (message.includes("expired") || message.includes("not yet valid")) {
348
+ return new SSLCertificateError(`SSL Certificate Error: Certificate has expired or is not yet valid.
349
+
350
+ Contact your F5 XC administrator to renew the certificate.`, hostname, undefined, { originalError: error.message, apiUrl });
351
+ }
352
+ // Generic SSL error
353
+ if (message.includes("certificate") ||
354
+ message.includes("ssl") ||
355
+ message.includes("tls") ||
356
+ message.includes("unable to verify")) {
357
+ return new SSLCertificateError(`SSL/TLS Error: ${error.message}
358
+
359
+ If this is a staging environment, you may need to:
360
+ 1. Set F5XC_CA_BUNDLE=/path/to/ca.crt for custom CA
361
+ 2. Set F5XC_TLS_INSECURE=true to disable verification (development only)`, hostname, undefined, { originalError: error.message, apiUrl });
362
+ }
363
+ // Not an SSL error, return original
364
+ return error;
365
+ }
239
366
  //# sourceMappingURL=error-handling.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"error-handling.js","sourceRoot":"","sources":["../../src/utils/error-handling.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"error-handling.js","sourceRoot":"","sources":["../../src/utils/error-handling.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@robinmordasiewicz/f5xc-api-mcp",
3
- "version": "1.0.82-2512312028",
3
+ "version": "1.0.82-2601012247",
4
4
  "description": "F5 Distributed Cloud API MCP Server - Exposes F5XC APIs to AI assistants via Model Context Protocol",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -1,72 +0,0 @@
1
- /**
2
- * Configuration Manager for F5XC API MCP
3
- * Handles reading/writing configuration files with proper permissions and atomic operations
4
- */
5
- import { ConfigFile, ProfileCredentials } from "./types.js";
6
- /**
7
- * Manages F5XC API MCP configuration files
8
- */
9
- export declare class ConfigManager {
10
- private configDir;
11
- private configFile;
12
- constructor(configDir?: string, configFile?: string);
13
- /**
14
- * Check if configuration file exists
15
- */
16
- exists(): Promise<boolean>;
17
- /**
18
- * Ensure configuration directory exists with proper permissions
19
- */
20
- private ensureConfigDir;
21
- /**
22
- * Check and fix file permissions
23
- */
24
- private checkAndFixPermissions;
25
- /**
26
- * Read configuration file (async)
27
- */
28
- read(): Promise<ConfigFile>;
29
- /**
30
- * Read configuration file synchronously (for initialization)
31
- * Note: This is used during CredentialManager construction
32
- */
33
- readSync(): ConfigFile;
34
- /**
35
- * Write configuration file with atomic operation
36
- * Uses temp file + rename pattern to ensure consistency
37
- */
38
- write(config: ConfigFile): Promise<void>;
39
- /**
40
- * Get list of all profile names
41
- */
42
- listProfiles(): Promise<string[]>;
43
- /**
44
- * Get a specific profile by name
45
- */
46
- getProfile(name: string): Promise<ProfileCredentials | null>;
47
- /**
48
- * Create or update a profile
49
- */
50
- setProfile(name: string, credentials: ProfileCredentials): Promise<void>;
51
- /**
52
- * Delete a profile by name
53
- */
54
- deleteProfile(name: string): Promise<void>;
55
- /**
56
- * Get the default profile name
57
- */
58
- getDefaultProfile(): Promise<string | null>;
59
- /**
60
- * Set the default profile
61
- */
62
- setDefaultProfile(name: string): Promise<void>;
63
- /**
64
- * Update the lastUsedAt timestamp for a profile
65
- */
66
- touchProfile(name: string): Promise<void>;
67
- /**
68
- * Get the full configuration file
69
- */
70
- getConfig(): Promise<ConfigFile>;
71
- }
72
- //# sourceMappingURL=config-manager.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config-manager.d.ts","sourceRoot":"","sources":["../../src/config/config-manager.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,EACL,UAAU,EACV,kBAAkB,EAMnB,MAAM,YAAY,CAAC;AAGpB;;GAEG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,UAAU,CAAS;gBAEf,SAAS,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM;IAKnD;;OAEG;IACG,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC;IAShC;;OAEG;YACW,eAAe;IAY7B;;OAEG;YACW,sBAAsB;IAsBpC;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,UAAU,CAAC;IAiBjC;;;OAGG;IACH,QAAQ,IAAI,UAAU;IAiCtB;;;OAGG;IACG,KAAK,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAwC9C;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAKvC;;OAEG;IACG,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC;IAKlE;;OAEG;IACG,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAyB9E;;OAEG;IACG,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAkBhD;;OAEG;IACG,iBAAiB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAKjD;;OAEG;IACG,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAYpD;;OAEG;IACG,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAsB/C;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,UAAU,CAAC;CAGvC"}
@@ -1,247 +0,0 @@
1
- /**
2
- * Configuration Manager for F5XC API MCP
3
- * Handles reading/writing configuration files with proper permissions and atomic operations
4
- */
5
- import * as fs from "fs/promises";
6
- import * as fsSync from "fs";
7
- import * as path from "path";
8
- import { DEFAULT_CONFIG, CONFIG_DIR_PERMISSIONS, CONFIG_FILE_PERMISSIONS, getConfigDirPath, getConfigFilePath, } from "./types.js";
9
- import { validateConfigFile, safeValidateConfigFile } from "./schema.js";
10
- /**
11
- * Manages F5XC API MCP configuration files
12
- */
13
- export class ConfigManager {
14
- configDir;
15
- configFile;
16
- constructor(configDir, configFile) {
17
- this.configDir = configDir || getConfigDirPath();
18
- this.configFile = configFile || getConfigFilePath();
19
- }
20
- /**
21
- * Check if configuration file exists
22
- */
23
- async exists() {
24
- try {
25
- await fs.access(this.configFile);
26
- return true;
27
- }
28
- catch {
29
- return false;
30
- }
31
- }
32
- /**
33
- * Ensure configuration directory exists with proper permissions
34
- */
35
- async ensureConfigDir() {
36
- try {
37
- await fs.mkdir(this.configDir, { recursive: true, mode: CONFIG_DIR_PERMISSIONS });
38
- // Fix permissions if directory already exists
39
- await fs.chmod(this.configDir, CONFIG_DIR_PERMISSIONS);
40
- }
41
- catch (error) {
42
- throw new Error(`Failed to create config directory: ${error instanceof Error ? error.message : "Unknown error"}`);
43
- }
44
- }
45
- /**
46
- * Check and fix file permissions
47
- */
48
- async checkAndFixPermissions(filePath, expectedPermissions) {
49
- try {
50
- const stats = await fs.stat(filePath);
51
- const currentMode = stats.mode & 0o777;
52
- if (currentMode !== expectedPermissions) {
53
- console.warn(`Warning: Config file has insecure permissions (${currentMode.toString(8)}). Fixing to ${expectedPermissions.toString(8)}...`);
54
- await fs.chmod(filePath, expectedPermissions);
55
- }
56
- }
57
- catch (error) {
58
- const err = error;
59
- if (err.code !== "ENOENT") {
60
- throw error;
61
- }
62
- }
63
- }
64
- /**
65
- * Read configuration file (async)
66
- */
67
- async read() {
68
- try {
69
- await this.checkAndFixPermissions(this.configFile, CONFIG_FILE_PERMISSIONS);
70
- const content = await fs.readFile(this.configFile, "utf-8");
71
- const data = JSON.parse(content);
72
- return validateConfigFile(data);
73
- }
74
- catch (error) {
75
- const err = error;
76
- if (err.code === "ENOENT") {
77
- return DEFAULT_CONFIG;
78
- }
79
- throw new Error(`Failed to read config file: ${error instanceof Error ? error.message : "Unknown error"}`);
80
- }
81
- }
82
- /**
83
- * Read configuration file synchronously (for initialization)
84
- * Note: This is used during CredentialManager construction
85
- */
86
- readSync() {
87
- try {
88
- if (!fsSync.existsSync(this.configFile)) {
89
- return DEFAULT_CONFIG;
90
- }
91
- // Check permissions
92
- const stats = fsSync.statSync(this.configFile);
93
- const currentMode = stats.mode & 0o777;
94
- if (currentMode !== CONFIG_FILE_PERMISSIONS) {
95
- console.warn(`Warning: Config file has insecure permissions (${currentMode.toString(8)}). Run 'f5xc-api-mcp --setup' to fix.`);
96
- }
97
- const content = fsSync.readFileSync(this.configFile, "utf-8");
98
- const data = JSON.parse(content);
99
- const result = safeValidateConfigFile(data);
100
- if (!result.success) {
101
- console.warn(`Warning: Invalid config file: ${result.error}`);
102
- return DEFAULT_CONFIG;
103
- }
104
- return result.data;
105
- }
106
- catch (error) {
107
- console.warn(`Warning: Failed to read config file: ${error instanceof Error ? error.message : "Unknown error"}`);
108
- return DEFAULT_CONFIG;
109
- }
110
- }
111
- /**
112
- * Write configuration file with atomic operation
113
- * Uses temp file + rename pattern to ensure consistency
114
- */
115
- async write(config) {
116
- await this.ensureConfigDir();
117
- const tempFile = `${this.configFile}.tmp.${Date.now()}`;
118
- try {
119
- // Validate before writing
120
- validateConfigFile(config);
121
- // Write to temporary file
122
- const content = JSON.stringify(config, null, 2);
123
- const tempDir = path.dirname(tempFile);
124
- // Ensure directories exist
125
- await fs.mkdir(tempDir, { recursive: true, mode: CONFIG_DIR_PERMISSIONS });
126
- await fs.writeFile(tempFile, content, { mode: CONFIG_FILE_PERMISSIONS });
127
- // Ensure target directory exists before rename
128
- const targetDir = path.dirname(this.configFile);
129
- await fs.mkdir(targetDir, { recursive: true, mode: CONFIG_DIR_PERMISSIONS });
130
- // Atomic rename
131
- await fs.rename(tempFile, this.configFile);
132
- // Verify permissions
133
- await this.checkAndFixPermissions(this.configFile, CONFIG_FILE_PERMISSIONS);
134
- }
135
- catch (error) {
136
- // Clean up temp file on error
137
- try {
138
- await fs.unlink(tempFile);
139
- }
140
- catch {
141
- // Ignore cleanup errors
142
- }
143
- throw new Error(`Failed to write config file: ${error instanceof Error ? error.message : "Unknown error"}`);
144
- }
145
- }
146
- /**
147
- * Get list of all profile names
148
- */
149
- async listProfiles() {
150
- const config = await this.read();
151
- return Object.keys(config.profiles);
152
- }
153
- /**
154
- * Get a specific profile by name
155
- */
156
- async getProfile(name) {
157
- const config = await this.read();
158
- return config.profiles[name] || null;
159
- }
160
- /**
161
- * Create or update a profile
162
- */
163
- async setProfile(name, credentials) {
164
- const config = await this.read();
165
- // Validate profile name
166
- if (!/^[a-z0-9_-]+$/i.test(name)) {
167
- throw new Error("Profile name must contain only alphanumeric characters, hyphens, and underscores");
168
- }
169
- // Set metadata if not provided
170
- if (!credentials.metadata) {
171
- credentials.metadata = {
172
- createdAt: new Date().toISOString(),
173
- lastModifiedAt: new Date().toISOString(),
174
- };
175
- }
176
- else {
177
- credentials.metadata.lastModifiedAt = new Date().toISOString();
178
- }
179
- config.profiles[name] = credentials;
180
- config.metadata = { lastModifiedAt: new Date().toISOString() };
181
- await this.write(config);
182
- }
183
- /**
184
- * Delete a profile by name
185
- */
186
- async deleteProfile(name) {
187
- const config = await this.read();
188
- if (!config.profiles[name]) {
189
- throw new Error(`Profile "${name}" does not exist`);
190
- }
191
- delete config.profiles[name];
192
- // Clear default profile if it was deleted
193
- if (config.defaultProfile === name) {
194
- config.defaultProfile = undefined;
195
- }
196
- config.metadata = { lastModifiedAt: new Date().toISOString() };
197
- await this.write(config);
198
- }
199
- /**
200
- * Get the default profile name
201
- */
202
- async getDefaultProfile() {
203
- const config = await this.read();
204
- return config.defaultProfile || null;
205
- }
206
- /**
207
- * Set the default profile
208
- */
209
- async setDefaultProfile(name) {
210
- const config = await this.read();
211
- if (!config.profiles[name]) {
212
- throw new Error(`Profile "${name}" does not exist`);
213
- }
214
- config.defaultProfile = name;
215
- config.metadata = { lastModifiedAt: new Date().toISOString() };
216
- await this.write(config);
217
- }
218
- /**
219
- * Update the lastUsedAt timestamp for a profile
220
- */
221
- async touchProfile(name) {
222
- const config = await this.read();
223
- const profile = config.profiles[name];
224
- if (!profile) {
225
- return; // Silently ignore if profile doesn't exist
226
- }
227
- if (!profile.metadata) {
228
- profile.metadata = {
229
- createdAt: new Date().toISOString(),
230
- lastModifiedAt: new Date().toISOString(),
231
- lastUsedAt: new Date().toISOString(),
232
- };
233
- }
234
- else {
235
- profile.metadata.lastUsedAt = new Date().toISOString();
236
- }
237
- config.metadata = { lastModifiedAt: new Date().toISOString() };
238
- await this.write(config);
239
- }
240
- /**
241
- * Get the full configuration file
242
- */
243
- async getConfig() {
244
- return this.read();
245
- }
246
- }
247
- //# sourceMappingURL=config-manager.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config-manager.js","sourceRoot":"","sources":["../../src/config/config-manager.ts"],"names":[],"mappings":"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"}
@@ -1,7 +0,0 @@
1
- /**
2
- * Configuration module exports
3
- */
4
- export * from "./types.js";
5
- export * from "./schema.js";
6
- export { ConfigManager } from "./config-manager.js";
7
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC"}
@@ -1,7 +0,0 @@
1
- /**
2
- * Configuration module exports
3
- */
4
- export * from "./types.js";
5
- export * from "./schema.js";
6
- export { ConfigManager } from "./config-manager.js";
7
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC"}
@@ -1,74 +0,0 @@
1
- /**
2
- * Zod validation schemas for F5XC API MCP configuration
3
- */
4
- import { z } from "zod";
5
- import type { ConfigFile, ProfileCredentials } from "./types.js";
6
- /**
7
- * Schema for profile metadata
8
- */
9
- export declare const ProfileMetadataSchema: z.ZodObject<{
10
- description: z.ZodOptional<z.ZodString>;
11
- createdAt: z.ZodString;
12
- lastUsedAt: z.ZodOptional<z.ZodString>;
13
- lastModifiedAt: z.ZodString;
14
- }, z.core.$strict>;
15
- /**
16
- * Schema for profile credentials
17
- */
18
- export declare const ProfileCredentialsSchema: z.ZodObject<{
19
- apiUrl: z.ZodOptional<z.ZodString>;
20
- apiToken: z.ZodOptional<z.ZodString>;
21
- p12File: z.ZodOptional<z.ZodString>;
22
- p12Password: z.ZodOptional<z.ZodString>;
23
- metadata: z.ZodOptional<z.ZodObject<{
24
- description: z.ZodOptional<z.ZodString>;
25
- createdAt: z.ZodString;
26
- lastUsedAt: z.ZodOptional<z.ZodString>;
27
- lastModifiedAt: z.ZodString;
28
- }, z.core.$strict>>;
29
- }, z.core.$strict>;
30
- /**
31
- * Schema for configuration file
32
- */
33
- export declare const ConfigFileSchema: z.ZodObject<{
34
- version: z.ZodString;
35
- defaultProfile: z.ZodOptional<z.ZodString>;
36
- profiles: z.ZodRecord<z.ZodString, z.ZodObject<{
37
- apiUrl: z.ZodOptional<z.ZodString>;
38
- apiToken: z.ZodOptional<z.ZodString>;
39
- p12File: z.ZodOptional<z.ZodString>;
40
- p12Password: z.ZodOptional<z.ZodString>;
41
- metadata: z.ZodOptional<z.ZodObject<{
42
- description: z.ZodOptional<z.ZodString>;
43
- createdAt: z.ZodString;
44
- lastUsedAt: z.ZodOptional<z.ZodString>;
45
- lastModifiedAt: z.ZodString;
46
- }, z.core.$strict>>;
47
- }, z.core.$strict>>;
48
- metadata: z.ZodOptional<z.ZodObject<{
49
- lastModifiedAt: z.ZodString;
50
- }, z.core.$strict>>;
51
- }, z.core.$strict>;
52
- /**
53
- * Validate a configuration file
54
- * @param data - Data to validate
55
- * @returns Validated ConfigFile or throws ZodError
56
- */
57
- export declare function validateConfigFile(data: unknown): ConfigFile;
58
- /**
59
- * Validate profile credentials
60
- * @param data - Data to validate
61
- * @returns Validated ProfileCredentials or throws ZodError
62
- */
63
- export declare function validateProfileCredentials(data: unknown): ProfileCredentials;
64
- /**
65
- * Safely validate a configuration file
66
- * @param data - Data to validate
67
- * @returns Object with success flag and data or error
68
- */
69
- export declare function safeValidateConfigFile(data: unknown): {
70
- success: boolean;
71
- data?: ConfigFile;
72
- error?: string;
73
- };
74
- //# sourceMappingURL=schema.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAEjE;;GAEG;AACH,eAAO,MAAM,qBAAqB;;;;;kBAOvB,CAAC;AAEZ;;GAEG;AACH,eAAO,MAAM,wBAAwB;;;;;;;;;;;kBAQ1B,CAAC;AAEZ;;GAEG;AACH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;kBAYlB,CAAC;AAEZ;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,OAAO,GAAG,UAAU,CAE5D;AAED;;;;GAIG;AACH,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,OAAO,GAAG,kBAAkB,CAE5E;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,OAAO,GAAG;IACrD,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAQA"}