@robinmordasiewicz/f5xc-terraform-mcp 3.8.28 → 3.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,364 @@
1
+ /**
2
+ * Authentication Tool Handler
3
+ *
4
+ * Provides authentication status, profile management, and credential validation
5
+ * for the F5XC Terraform MCP server.
6
+ *
7
+ * Uses the shared @robinmordasiewicz/f5xc-auth package for unified authentication
8
+ * across F5XC MCP servers.
9
+ *
10
+ * Tool: f5xc_terraform_auth
11
+ */
12
+ import axios from 'axios';
13
+ import { ResponseFormat } from '../types.js';
14
+ import { CredentialManager, AuthMode, getProfileManager, } from '@robinmordasiewicz/f5xc-auth';
15
+ // =============================================================================
16
+ // TOOL DEFINITION
17
+ // =============================================================================
18
+ export const AUTH_TOOL_DEFINITION = {
19
+ name: 'f5xc_terraform_auth',
20
+ description: 'Check authentication status, list/switch profiles, validate credentials',
21
+ };
22
+ // =============================================================================
23
+ // MODULE-LEVEL STATE
24
+ // =============================================================================
25
+ let credentialManager = null;
26
+ /**
27
+ * Initialize the credential manager (called from server startup)
28
+ */
29
+ export async function initializeAuth() {
30
+ credentialManager = new CredentialManager();
31
+ await credentialManager.initialize();
32
+ return credentialManager;
33
+ }
34
+ /**
35
+ * Get the current credential manager instance
36
+ */
37
+ export function getCredentialManager() {
38
+ return credentialManager;
39
+ }
40
+ // =============================================================================
41
+ // HANDLER
42
+ // =============================================================================
43
+ /**
44
+ * Handles the f5xc_terraform_auth tool invocation
45
+ */
46
+ export async function handleAuth(input) {
47
+ const { operation, profile_name, response_format } = input;
48
+ switch (operation) {
49
+ case 'status':
50
+ return handleStatus(response_format);
51
+ case 'list':
52
+ return handleList(response_format);
53
+ case 'switch':
54
+ return handleSwitch(profile_name, response_format);
55
+ case 'validate':
56
+ return handleValidate(response_format);
57
+ default:
58
+ throw new Error(`Unknown operation: ${operation}`);
59
+ }
60
+ }
61
+ // =============================================================================
62
+ // OPERATION HANDLERS
63
+ // =============================================================================
64
+ /**
65
+ * Handle 'status' operation - show current auth state
66
+ */
67
+ async function handleStatus(format) {
68
+ if (!credentialManager) {
69
+ throw new Error('Auth not initialized. Server startup issue.');
70
+ }
71
+ const profileManager = getProfileManager();
72
+ const activeProfile = await profileManager.getActive();
73
+ const status = {
74
+ mode: credentialManager.getAuthMode(),
75
+ authenticated: credentialManager.isAuthenticated(),
76
+ tenant: credentialManager.getTenant(),
77
+ api_url: credentialManager.getApiUrl(),
78
+ namespace: credentialManager.getNamespace(),
79
+ active_profile: activeProfile,
80
+ source: getAuthSource(credentialManager),
81
+ };
82
+ if (format === ResponseFormat.JSON) {
83
+ return JSON.stringify(status, null, 2);
84
+ }
85
+ return formatStatusMarkdown(status);
86
+ }
87
+ function getAuthSource(cm) {
88
+ if (cm.getAuthMode() === AuthMode.NONE) {
89
+ return 'none (documentation mode)';
90
+ }
91
+ // Check for environment variables
92
+ if (process.env.F5XC_API_TOKEN || process.env.F5XC_P12_FILE || process.env.F5XC_CERT) {
93
+ return 'environment variables';
94
+ }
95
+ return 'profile';
96
+ }
97
+ function formatStatusMarkdown(status) {
98
+ const lines = [
99
+ '# F5XC Authentication Status',
100
+ '',
101
+ '| Property | Value |',
102
+ '|----------|-------|',
103
+ `| **Mode** | ${status.mode} |`,
104
+ `| **Authenticated** | ${status.authenticated ? 'Yes' : 'No'} |`,
105
+ `| **Source** | ${status.source} |`,
106
+ ];
107
+ if (status.tenant) {
108
+ lines.push(`| **Tenant** | ${status.tenant} |`);
109
+ }
110
+ if (status.api_url) {
111
+ lines.push(`| **API URL** | ${status.api_url} |`);
112
+ }
113
+ if (status.namespace) {
114
+ lines.push(`| **Default Namespace** | ${status.namespace} |`);
115
+ }
116
+ if (status.active_profile) {
117
+ lines.push(`| **Active Profile** | ${status.active_profile} |`);
118
+ }
119
+ lines.push('');
120
+ if (!status.authenticated) {
121
+ lines.push('> **Documentation Mode**: No credentials configured.');
122
+ lines.push('> The MCP server is operating in documentation-only mode.');
123
+ lines.push('> To enable API access, configure credentials via environment variables or profiles.');
124
+ lines.push('');
125
+ lines.push('## Configuration Options');
126
+ lines.push('');
127
+ lines.push('### Environment Variables');
128
+ lines.push('```bash');
129
+ lines.push('export F5XC_API_URL="https://your-tenant.console.ves.volterra.io"');
130
+ lines.push('export F5XC_API_TOKEN="your-api-token"');
131
+ lines.push('```');
132
+ lines.push('');
133
+ lines.push('### Profile Configuration');
134
+ lines.push('```bash');
135
+ lines.push('# Create profile at ~/.config/f5xc/profiles/<name>.json');
136
+ lines.push('```');
137
+ }
138
+ return lines.join('\n');
139
+ }
140
+ /**
141
+ * Handle 'list' operation - list available profiles
142
+ */
143
+ async function handleList(format) {
144
+ const profileManager = getProfileManager();
145
+ const profiles = await profileManager.list();
146
+ const activeProfile = await profileManager.getActive();
147
+ const profileList = profiles.map((p) => ({
148
+ name: p.name,
149
+ api_url: p.apiUrl,
150
+ tenant: extractTenant(p.apiUrl),
151
+ namespace: p.defaultNamespace || null,
152
+ auth_method: getProfileAuthMethod(p),
153
+ is_active: p.name === activeProfile,
154
+ }));
155
+ if (format === ResponseFormat.JSON) {
156
+ return JSON.stringify({ profiles: profileList, active: activeProfile }, null, 2);
157
+ }
158
+ return formatProfileListMarkdown(profileList, activeProfile);
159
+ }
160
+ function extractTenant(apiUrl) {
161
+ const match = apiUrl.match(/https:\/\/([^.]+)\.console\.ves\.volterra\.io/);
162
+ return match ? match[1] : null;
163
+ }
164
+ function getProfileAuthMethod(profile) {
165
+ if (profile.apiToken)
166
+ return 'token';
167
+ if (profile.p12Bundle)
168
+ return 'p12';
169
+ if (profile.cert && profile.key)
170
+ return 'cert';
171
+ return 'none';
172
+ }
173
+ function formatProfileListMarkdown(profiles, activeProfile) {
174
+ if (profiles.length === 0) {
175
+ return [
176
+ '# F5XC Profiles',
177
+ '',
178
+ 'No profiles configured.',
179
+ '',
180
+ 'Create a profile at `~/.config/f5xc/profiles/<name>.json`:',
181
+ '',
182
+ '```json',
183
+ '{',
184
+ ' "name": "production",',
185
+ ' "apiUrl": "https://your-tenant.console.ves.volterra.io/api",',
186
+ ' "apiToken": "your-api-token",',
187
+ ' "defaultNamespace": "my-namespace"',
188
+ '}',
189
+ '```',
190
+ ].join('\n');
191
+ }
192
+ const lines = [
193
+ '# F5XC Profiles',
194
+ '',
195
+ `Active: ${activeProfile || 'none'}`,
196
+ '',
197
+ '| Profile | Tenant | Namespace | Auth | Active |',
198
+ '|---------|--------|-----------|------|--------|',
199
+ ];
200
+ for (const p of profiles) {
201
+ const active = p.is_active ? '**Yes**' : 'No';
202
+ lines.push(`| ${p.name} | ${p.tenant || '-'} | ${p.namespace || '-'} | ${p.auth_method} | ${active} |`);
203
+ }
204
+ lines.push('');
205
+ lines.push('> Use `operation: "switch", profile_name: "<name>"` to change the active profile.');
206
+ return lines.join('\n');
207
+ }
208
+ /**
209
+ * Handle 'switch' operation - switch to a different profile
210
+ */
211
+ async function handleSwitch(profileName, format) {
212
+ if (!profileName) {
213
+ throw new Error('profile_name is required for switch operation');
214
+ }
215
+ const profileManager = getProfileManager();
216
+ // Check if profile exists
217
+ const profile = await profileManager.get(profileName);
218
+ if (!profile) {
219
+ throw new Error(`Profile '${profileName}' not found`);
220
+ }
221
+ // Set as active profile
222
+ const result = await profileManager.setActive(profileName);
223
+ if (!result.success) {
224
+ throw new Error(`Failed to switch profile: ${result.message}`);
225
+ }
226
+ // Reload credential manager with new profile
227
+ if (credentialManager) {
228
+ await credentialManager.reload();
229
+ }
230
+ const response = {
231
+ success: true,
232
+ profile: profileName,
233
+ message: `Switched to profile '${profileName}'`,
234
+ tenant: credentialManager?.getTenant() || null,
235
+ authenticated: credentialManager?.isAuthenticated() || false,
236
+ };
237
+ if (format === ResponseFormat.JSON) {
238
+ return JSON.stringify(response, null, 2);
239
+ }
240
+ const lines = [
241
+ '# Profile Switched',
242
+ '',
243
+ `Successfully switched to profile: **${profileName}**`,
244
+ '',
245
+ ];
246
+ if (response.authenticated) {
247
+ lines.push(`- Tenant: ${response.tenant}`);
248
+ lines.push('- Status: Authenticated');
249
+ }
250
+ else {
251
+ lines.push('- Status: Not authenticated (check credentials)');
252
+ }
253
+ return lines.join('\n');
254
+ }
255
+ /**
256
+ * Handle 'validate' operation - test API connectivity
257
+ */
258
+ async function handleValidate(format) {
259
+ if (!credentialManager) {
260
+ throw new Error('Auth not initialized. Server startup issue.');
261
+ }
262
+ if (!credentialManager.isAuthenticated()) {
263
+ const response = {
264
+ valid: false,
265
+ mode: credentialManager.getAuthMode(),
266
+ error: 'No credentials configured (documentation mode)',
267
+ suggestion: 'Configure F5XC_API_TOKEN environment variable or create a profile',
268
+ };
269
+ if (format === ResponseFormat.JSON) {
270
+ return JSON.stringify(response, null, 2);
271
+ }
272
+ return [
273
+ '# Credential Validation',
274
+ '',
275
+ '**Result**: Not validated',
276
+ '',
277
+ 'No credentials are configured. The MCP server is operating in documentation mode.',
278
+ '',
279
+ '## To enable API access:',
280
+ '',
281
+ '1. Set environment variables:',
282
+ ' ```bash',
283
+ ' export F5XC_API_URL="https://your-tenant.console.ves.volterra.io"',
284
+ ' export F5XC_API_TOKEN="your-api-token"',
285
+ ' ```',
286
+ '',
287
+ '2. Or create a profile at `~/.config/f5xc/profiles/<name>.json`',
288
+ ].join('\n');
289
+ }
290
+ // Test API connectivity
291
+ const apiUrl = credentialManager.getApiUrl();
292
+ const token = credentialManager.getToken();
293
+ if (!apiUrl || !token) {
294
+ throw new Error('Missing API URL or token');
295
+ }
296
+ try {
297
+ // Make a simple API call to verify credentials
298
+ const response = await axios.get(`${apiUrl}/web/namespaces`, {
299
+ headers: {
300
+ Authorization: `APIToken ${token}`,
301
+ 'Content-Type': 'application/json',
302
+ },
303
+ timeout: 10000,
304
+ });
305
+ const namespaceCount = response.data?.items?.length || 0;
306
+ const result = {
307
+ valid: true,
308
+ tenant: credentialManager.getTenant(),
309
+ api_url: apiUrl,
310
+ namespaces_found: namespaceCount,
311
+ message: `Successfully connected to F5XC API. Found ${namespaceCount} namespace(s).`,
312
+ };
313
+ if (format === ResponseFormat.JSON) {
314
+ return JSON.stringify(result, null, 2);
315
+ }
316
+ return [
317
+ '# Credential Validation',
318
+ '',
319
+ '**Result**: Valid',
320
+ '',
321
+ '| Property | Value |',
322
+ '|----------|-------|',
323
+ `| **Tenant** | ${result.tenant} |`,
324
+ `| **API URL** | ${result.api_url} |`,
325
+ `| **Namespaces Found** | ${result.namespaces_found} |`,
326
+ '',
327
+ 'Credentials are valid and API is accessible.',
328
+ ].join('\n');
329
+ }
330
+ catch (error) {
331
+ const axiosError = error;
332
+ const result = {
333
+ valid: false,
334
+ tenant: credentialManager.getTenant(),
335
+ api_url: apiUrl,
336
+ error: axiosError.response?.data?.message || axiosError.message || 'Unknown error',
337
+ status_code: axiosError.response?.status || null,
338
+ };
339
+ if (format === ResponseFormat.JSON) {
340
+ return JSON.stringify(result, null, 2);
341
+ }
342
+ return [
343
+ '# Credential Validation',
344
+ '',
345
+ '**Result**: Failed',
346
+ '',
347
+ '| Property | Value |',
348
+ '|----------|-------|',
349
+ `| **Tenant** | ${result.tenant} |`,
350
+ `| **API URL** | ${result.api_url} |`,
351
+ `| **Error** | ${result.error} |`,
352
+ result.status_code ? `| **Status Code** | ${result.status_code} |` : '',
353
+ '',
354
+ '## Troubleshooting',
355
+ '',
356
+ '- Verify your API token is valid and not expired',
357
+ '- Check that the API URL is correct',
358
+ '- Ensure network connectivity to F5 Distributed Cloud',
359
+ ]
360
+ .filter((l) => l)
361
+ .join('\n');
362
+ }
363
+ }
364
+ //# sourceMappingURL=auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/tools/auth.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EACL,iBAAiB,EACjB,QAAQ,EACR,iBAAiB,GAElB,MAAM,8BAA8B,CAAC;AAEtC,gFAAgF;AAChF,kBAAkB;AAClB,gFAAgF;AAEhF,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,IAAI,EAAE,qBAAqB;IAC3B,WAAW,EAAE,yEAAyE;CACvF,CAAC;AAEF,gFAAgF;AAChF,qBAAqB;AACrB,gFAAgF;AAEhF,IAAI,iBAAiB,GAA6B,IAAI,CAAC;AAEvD;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc;IAClC,iBAAiB,GAAG,IAAI,iBAAiB,EAAE,CAAC;IAC5C,MAAM,iBAAiB,CAAC,UAAU,EAAE,CAAC;IACrC,OAAO,iBAAiB,CAAC;AAC3B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB;IAClC,OAAO,iBAAiB,CAAC;AAC3B,CAAC;AAED,gFAAgF;AAChF,UAAU;AACV,gFAAgF;AAEhF;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,KAAgB;IAC/C,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,eAAe,EAAE,GAAG,KAAK,CAAC;IAE3D,QAAQ,SAAS,EAAE,CAAC;QAClB,KAAK,QAAQ;YACX,OAAO,YAAY,CAAC,eAAe,CAAC,CAAC;QACvC,KAAK,MAAM;YACT,OAAO,UAAU,CAAC,eAAe,CAAC,CAAC;QACrC,KAAK,QAAQ;YACX,OAAO,YAAY,CAAC,YAAY,EAAE,eAAe,CAAC,CAAC;QACrD,KAAK,UAAU;YACb,OAAO,cAAc,CAAC,eAAe,CAAC,CAAC;QACzC;YACE,MAAM,IAAI,KAAK,CAAC,sBAAsB,SAAS,EAAE,CAAC,CAAC;IACvD,CAAC;AACH,CAAC;AAED,gFAAgF;AAChF,qBAAqB;AACrB,gFAAgF;AAEhF;;GAEG;AACH,KAAK,UAAU,YAAY,CAAC,MAAsB;IAChD,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;IACjE,CAAC;IAED,MAAM,cAAc,GAAG,iBAAiB,EAAE,CAAC;IAC3C,MAAM,aAAa,GAAG,MAAM,cAAc,CAAC,SAAS,EAAE,CAAC;IAEvD,MAAM,MAAM,GAAG;QACb,IAAI,EAAE,iBAAiB,CAAC,WAAW,EAAE;QACrC,aAAa,EAAE,iBAAiB,CAAC,eAAe,EAAE;QAClD,MAAM,EAAE,iBAAiB,CAAC,SAAS,EAAE;QACrC,OAAO,EAAE,iBAAiB,CAAC,SAAS,EAAE;QACtC,SAAS,EAAE,iBAAiB,CAAC,YAAY,EAAE;QAC3C,cAAc,EAAE,aAAa;QAC7B,MAAM,EAAE,aAAa,CAAC,iBAAiB,CAAC;KACzC,CAAC;IAEF,IAAI,MAAM,KAAK,cAAc,CAAC,IAAI,EAAE,CAAC;QACnC,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IACzC,CAAC;IAED,OAAO,oBAAoB,CAAC,MAAM,CAAC,CAAC;AACtC,CAAC;AAED,SAAS,aAAa,CAAC,EAAqB;IAC1C,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,QAAQ,CAAC,IAAI,EAAE,CAAC;QACvC,OAAO,2BAA2B,CAAC;IACrC,CAAC;IAED,kCAAkC;IAClC,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;QACrF,OAAO,uBAAuB,CAAC;IACjC,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,oBAAoB,CAAC,MAQ7B;IACC,MAAM,KAAK,GAAG;QACZ,8BAA8B;QAC9B,EAAE;QACF,sBAAsB;QACtB,sBAAsB;QACtB,gBAAgB,MAAM,CAAC,IAAI,IAAI;QAC/B,yBAAyB,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI;QAChE,kBAAkB,MAAM,CAAC,MAAM,IAAI;KACpC,CAAC;IAEF,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClB,KAAK,CAAC,IAAI,CAAC,kBAAkB,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC;IAClD,CAAC;IAED,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,KAAK,CAAC,IAAI,CAAC,mBAAmB,MAAM,CAAC,OAAO,IAAI,CAAC,CAAC;IACpD,CAAC;IAED,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;QACrB,KAAK,CAAC,IAAI,CAAC,6BAA6B,MAAM,CAAC,SAAS,IAAI,CAAC,CAAC;IAChE,CAAC;IAED,IAAI,MAAM,CAAC,cAAc,EAAE,CAAC;QAC1B,KAAK,CAAC,IAAI,CAAC,0BAA0B,MAAM,CAAC,cAAc,IAAI,CAAC,CAAC;IAClE,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;QAC1B,KAAK,CAAC,IAAI,CAAC,sDAAsD,CAAC,CAAC;QACnE,KAAK,CAAC,IAAI,CAAC,2DAA2D,CAAC,CAAC;QACxE,KAAK,CAAC,IAAI,CAAC,sFAAsF,CAAC,CAAC;QACnG,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;QACvC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;QACxC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACtB,KAAK,CAAC,IAAI,CAAC,mEAAmE,CAAC,CAAC;QAChF,KAAK,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC;QACrD,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;QACxC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACtB,KAAK,CAAC,IAAI,CAAC,yDAAyD,CAAC,CAAC;QACtE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACpB,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,UAAU,CAAC,MAAsB;IAC9C,MAAM,cAAc,GAAG,iBAAiB,EAAE,CAAC;IAC3C,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,IAAI,EAAE,CAAC;IAC7C,MAAM,aAAa,GAAG,MAAM,cAAc,CAAC,SAAS,EAAE,CAAC;IAEvD,MAAM,WAAW,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACvC,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,OAAO,EAAE,CAAC,CAAC,MAAM;QACjB,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC;QAC/B,SAAS,EAAE,CAAC,CAAC,gBAAgB,IAAI,IAAI;QACrC,WAAW,EAAE,oBAAoB,CAAC,CAAC,CAAC;QACpC,SAAS,EAAE,CAAC,CAAC,IAAI,KAAK,aAAa;KACpC,CAAC,CAAC,CAAC;IAEJ,IAAI,MAAM,KAAK,cAAc,CAAC,IAAI,EAAE,CAAC;QACnC,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,aAAa,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IACnF,CAAC;IAED,OAAO,yBAAyB,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;AAC/D,CAAC;AAED,SAAS,aAAa,CAAC,MAAc;IACnC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,+CAA+C,CAAC,CAAC;IAC5E,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACjC,CAAC;AAED,SAAS,oBAAoB,CAAC,OAAgB;IAC5C,IAAI,OAAO,CAAC,QAAQ;QAAE,OAAO,OAAO,CAAC;IACrC,IAAI,OAAO,CAAC,SAAS;QAAE,OAAO,KAAK,CAAC;IACpC,IAAI,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG;QAAE,OAAO,MAAM,CAAC;IAC/C,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,yBAAyB,CAChC,QAOE,EACF,aAA4B;IAE5B,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO;YACL,iBAAiB;YACjB,EAAE;YACF,yBAAyB;YACzB,EAAE;YACF,4DAA4D;YAC5D,EAAE;YACF,SAAS;YACT,GAAG;YACH,yBAAyB;YACzB,gEAAgE;YAChE,iCAAiC;YACjC,sCAAsC;YACtC,GAAG;YACH,KAAK;SACN,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACf,CAAC;IAED,MAAM,KAAK,GAAG;QACZ,iBAAiB;QACjB,EAAE;QACF,WAAW,aAAa,IAAI,MAAM,EAAE;QACpC,EAAE;QACF,kDAAkD;QAClD,kDAAkD;KACnD,CAAC;IAEF,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;QAC9C,KAAK,CAAC,IAAI,CACR,KAAK,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,SAAS,IAAI,GAAG,MAAM,CAAC,CAAC,WAAW,MAAM,MAAM,IAAI,CAC5F,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CACR,mFAAmF,CACpF,CAAC;IAEF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,YAAY,CACzB,WAA+B,EAC/B,MAAsB;IAEtB,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;IACnE,CAAC;IAED,MAAM,cAAc,GAAG,iBAAiB,EAAE,CAAC;IAE3C,0BAA0B;IAC1B,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IACtD,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,YAAY,WAAW,aAAa,CAAC,CAAC;IACxD,CAAC;IAED,wBAAwB;IACxB,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IAC3D,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,6BAA6B,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;IACjE,CAAC;IAED,6CAA6C;IAC7C,IAAI,iBAAiB,EAAE,CAAC;QACtB,MAAM,iBAAiB,CAAC,MAAM,EAAE,CAAC;IACnC,CAAC;IAED,MAAM,QAAQ,GAAG;QACf,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,WAAW;QACpB,OAAO,EAAE,wBAAwB,WAAW,GAAG;QAC/C,MAAM,EAAE,iBAAiB,EAAE,SAAS,EAAE,IAAI,IAAI;QAC9C,aAAa,EAAE,iBAAiB,EAAE,eAAe,EAAE,IAAI,KAAK;KAC7D,CAAC;IAEF,IAAI,MAAM,KAAK,cAAc,CAAC,IAAI,EAAE,CAAC;QACnC,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAC3C,CAAC;IAED,MAAM,KAAK,GAAG;QACZ,oBAAoB;QACpB,EAAE;QACF,uCAAuC,WAAW,IAAI;QACtD,EAAE;KACH,CAAC;IAEF,IAAI,QAAQ,CAAC,aAAa,EAAE,CAAC;QAC3B,KAAK,CAAC,IAAI,CAAC,aAAa,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QAC3C,KAAK,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;IACxC,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC;IAChE,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,cAAc,CAAC,MAAsB;IAClD,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;IACjE,CAAC;IAED,IAAI,CAAC,iBAAiB,CAAC,eAAe,EAAE,EAAE,CAAC;QACzC,MAAM,QAAQ,GAAG;YACf,KAAK,EAAE,KAAK;YACZ,IAAI,EAAE,iBAAiB,CAAC,WAAW,EAAE;YACrC,KAAK,EAAE,gDAAgD;YACvD,UAAU,EAAE,mEAAmE;SAChF,CAAC;QAEF,IAAI,MAAM,KAAK,cAAc,CAAC,IAAI,EAAE,CAAC;YACnC,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAC3C,CAAC;QAED,OAAO;YACL,yBAAyB;YACzB,EAAE;YACF,2BAA2B;YAC3B,EAAE;YACF,mFAAmF;YACnF,EAAE;YACF,0BAA0B;YAC1B,EAAE;YACF,+BAA+B;YAC/B,YAAY;YACZ,sEAAsE;YACtE,2CAA2C;YAC3C,QAAQ;YACR,EAAE;YACF,iEAAiE;SAClE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACf,CAAC;IAED,wBAAwB;IACxB,MAAM,MAAM,GAAG,iBAAiB,CAAC,SAAS,EAAE,CAAC;IAC7C,MAAM,KAAK,GAAG,iBAAiB,CAAC,QAAQ,EAAE,CAAC;IAE3C,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAC9C,CAAC;IAED,IAAI,CAAC;QACH,+CAA+C;QAC/C,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,MAAM,iBAAiB,EAAE;YAC3D,OAAO,EAAE;gBACP,aAAa,EAAE,YAAY,KAAK,EAAE;gBAClC,cAAc,EAAE,kBAAkB;aACnC;YACD,OAAO,EAAE,KAAK;SACf,CAAC,CAAC;QAEH,MAAM,cAAc,GAAG,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,IAAI,CAAC,CAAC;QAEzD,MAAM,MAAM,GAAG;YACb,KAAK,EAAE,IAAI;YACX,MAAM,EAAE,iBAAiB,CAAC,SAAS,EAAE;YACrC,OAAO,EAAE,MAAM;YACf,gBAAgB,EAAE,cAAc;YAChC,OAAO,EAAE,6CAA6C,cAAc,gBAAgB;SACrF,CAAC;QAEF,IAAI,MAAM,KAAK,cAAc,CAAC,IAAI,EAAE,CAAC;YACnC,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QACzC,CAAC;QAED,OAAO;YACL,yBAAyB;YACzB,EAAE;YACF,mBAAmB;YACnB,EAAE;YACF,sBAAsB;YACtB,sBAAsB;YACtB,kBAAkB,MAAM,CAAC,MAAM,IAAI;YACnC,mBAAmB,MAAM,CAAC,OAAO,IAAI;YACrC,4BAA4B,MAAM,CAAC,gBAAgB,IAAI;YACvD,EAAE;YACF,8CAA8C;SAC/C,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACf,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,UAAU,GAAG,KAAyF,CAAC;QAE7G,MAAM,MAAM,GAAG;YACb,KAAK,EAAE,KAAK;YACZ,MAAM,EAAE,iBAAiB,CAAC,SAAS,EAAE;YACrC,OAAO,EAAE,MAAM;YACf,KAAK,EAAE,UAAU,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,IAAI,UAAU,CAAC,OAAO,IAAI,eAAe;YAClF,WAAW,EAAE,UAAU,CAAC,QAAQ,EAAE,MAAM,IAAI,IAAI;SACjD,CAAC;QAEF,IAAI,MAAM,KAAK,cAAc,CAAC,IAAI,EAAE,CAAC;YACnC,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QACzC,CAAC;QAED,OAAO;YACL,yBAAyB;YACzB,EAAE;YACF,oBAAoB;YACpB,EAAE;YACF,sBAAsB;YACtB,sBAAsB;YACtB,kBAAkB,MAAM,CAAC,MAAM,IAAI;YACnC,mBAAmB,MAAM,CAAC,OAAO,IAAI;YACrC,iBAAiB,MAAM,CAAC,KAAK,IAAI;YACjC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,uBAAuB,MAAM,CAAC,WAAW,IAAI,CAAC,CAAC,CAAC,EAAE;YACvE,EAAE;YACF,oBAAoB;YACpB,EAAE;YACF,kDAAkD;YAClD,qCAAqC;YACrC,uDAAuD;SACxD;aACE,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;aAChB,IAAI,CAAC,IAAI,CAAC,CAAC;IAChB,CAAC;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"discover.d.ts","sourceRoot":"","sources":["../../src/tools/discover.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAmDrD;;GAEG;AACH,wBAAsB,cAAc,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,CAY1E;AAuLD,eAAO,MAAM,wBAAwB;;;CAGpC,CAAC"}
1
+ {"version":3,"file":"discover.d.ts","sourceRoot":"","sources":["../../src/tools/discover.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAyDrD;;GAEG;AACH,wBAAsB,cAAc,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,CAY1E;AAyOD,eAAO,MAAM,wBAAwB;;;CAGpC,CAAC"}
@@ -7,7 +7,7 @@
7
7
  * Tool: f5xc_terraform_discover
8
8
  */
9
9
  import { ResponseFormat } from '../types.js';
10
- import { DocsSchema, ApiSchema, SubscriptionSchema, AddonSchema } from '../schemas/common.js';
10
+ import { DocsSchema, ApiSchema, SubscriptionSchema, AddonSchema, AuthSchema } from '../schemas/common.js';
11
11
  const TOOL_REGISTRY = [
12
12
  {
13
13
  name: 'f5xc_terraform_docs',
@@ -38,6 +38,12 @@ const TOOL_REGISTRY = [
38
38
  description: 'Get provider documentation summary',
39
39
  category: 'summary',
40
40
  },
41
+ {
42
+ name: 'f5xc_terraform_auth',
43
+ description: 'Authentication status, profiles, and validation',
44
+ category: 'auth',
45
+ operations: ['status', 'list', 'switch', 'validate'],
46
+ },
41
47
  ];
42
48
  // =============================================================================
43
49
  // HANDLER
@@ -63,6 +69,12 @@ function buildResponse(tools, verbose, format) {
63
69
  }
64
70
  function buildJsonResponse(tools, verbose) {
65
71
  return {
72
+ critical_syntax_warning: {
73
+ message: 'This provider uses empty blocks {} for mutually exclusive options, NOT boolean values',
74
+ common_mistake: 'no_tls = true, advertise_on_public_default_vip = true, round_robin = true',
75
+ correct_syntax: 'no_tls {}, advertise_on_public_default_vip {}, round_robin {}',
76
+ recommendation: 'Always query f5xc_terraform_metadata(operation="syntax", resource="...") BEFORE writing Terraform config',
77
+ },
66
78
  provider: {
67
79
  name: 'robinmordasiewicz/f5xc',
68
80
  registry_url: 'https://registry.terraform.io/providers/robinmordasiewicz/f5xc/latest',
@@ -93,6 +105,42 @@ function buildMarkdownResponse(tools, verbose) {
93
105
  '**Provider**: `robinmordasiewicz/f5xc`',
94
106
  '**Registry**: https://registry.terraform.io/providers/robinmordasiewicz/f5xc/latest',
95
107
  '',
108
+ // ==========================================================================
109
+ // CRITICAL SYNTAX PATTERN WARNING - MUST READ FIRST
110
+ // ==========================================================================
111
+ '---',
112
+ '',
113
+ '## ⚠️ CRITICAL: Empty Block Syntax Pattern',
114
+ '',
115
+ 'This provider uses **empty blocks** `{}` for mutually exclusive options, NOT boolean values.',
116
+ '',
117
+ '### Common AI Mistake (WRONG):',
118
+ '```hcl',
119
+ '# WRONG - These are NOT boolean attributes!',
120
+ 'no_tls = true # ERROR',
121
+ 'advertise_on_public_default_vip = true # ERROR',
122
+ 'round_robin = true # ERROR',
123
+ 'disable_api_definition = true # ERROR',
124
+ 'no_challenge = true # ERROR',
125
+ '```',
126
+ '',
127
+ '### Correct Syntax:',
128
+ '```hcl',
129
+ '# CORRECT - Use empty block syntax for OneOf choices',
130
+ 'no_tls {}',
131
+ 'advertise_on_public_default_vip {}',
132
+ 'round_robin {}',
133
+ 'disable_api_definition {}',
134
+ 'no_challenge {}',
135
+ '```',
136
+ '',
137
+ '### Before Writing ANY Resource:',
138
+ '1. Query `f5xc_terraform_metadata(operation="syntax", resource="<name>")` to get correct syntax',
139
+ '2. Query `f5xc_terraform_metadata(operation="example", resource="<name>")` to get complete examples',
140
+ '3. Use `f5xc_terraform_metadata(operation="validate", resource="<name>", config="...")` to check your config',
141
+ '',
142
+ '---',
143
+ '',
96
144
  `**Available Tools**: ${tools.length}`,
97
145
  `**Token Estimate**: ${verbose ? '~2,000' : '~150'} tokens`,
98
146
  '',
@@ -132,6 +180,8 @@ function getSchemaForTool(toolName) {
132
180
  return schemaToJson(AddonSchema);
133
181
  case 'f5xc_terraform_get_summary':
134
182
  return { response_format: { type: 'string', enum: ['markdown', 'json'] } };
183
+ case 'f5xc_terraform_auth':
184
+ return schemaToJson(AuthSchema);
135
185
  default:
136
186
  return {};
137
187
  }
@@ -1 +1 @@
1
- {"version":3,"file":"discover.js","sourceRoot":"","sources":["../../src/tools/discover.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"discover.js","sourceRoot":"","sources":["../../src/tools/discover.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,kBAAkB,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAa1G,MAAM,aAAa,GAAe;IAChC;QACE,IAAI,EAAE,qBAAqB;QAC3B,WAAW,EAAE,uCAAuC;QACpD,QAAQ,EAAE,MAAM;QAChB,UAAU,EAAE,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC;KACtC;IACD;QACE,IAAI,EAAE,oBAAoB;QAC1B,WAAW,EAAE,sCAAsC;QACnD,QAAQ,EAAE,KAAK;QACf,UAAU,EAAE,CAAC,QAAQ,EAAE,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,kBAAkB,CAAC;KACtF;IACD;QACE,IAAI,EAAE,6BAA6B;QACnC,WAAW,EAAE,mCAAmC;QAChD,QAAQ,EAAE,cAAc;QACxB,UAAU,EAAE,CAAC,UAAU,EAAE,UAAU,CAAC;KACrC;IACD;QACE,IAAI,EAAE,sBAAsB;QAC5B,WAAW,EAAE,oCAAoC;QACjD,QAAQ,EAAE,OAAO;QACjB,UAAU,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,UAAU,CAAC;KAC1C;IACD;QACE,IAAI,EAAE,4BAA4B;QAClC,WAAW,EAAE,oCAAoC;QACjD,QAAQ,EAAE,SAAS;KACpB;IACD;QACE,IAAI,EAAE,qBAAqB;QAC3B,WAAW,EAAE,iDAAiD;QAC9D,QAAQ,EAAE,MAAM;QAChB,UAAU,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,CAAC;KACrD;CACF,CAAC;AAEF,gFAAgF;AAChF,UAAU;AACV,gFAAgF;AAEhF;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,KAAoB;IACvD,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,eAAe,EAAE,GAAG,KAAK,CAAC;IAErD,2BAA2B;IAC3B,MAAM,KAAK,GAAG,QAAQ,KAAK,KAAK;QAC9B,CAAC,CAAC,aAAa;QACf,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC;IAEzD,iBAAiB;IACjB,MAAM,QAAQ,GAAG,aAAa,CAAC,KAAK,EAAE,OAAO,EAAE,eAAe,CAAC,CAAC;IAEhE,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,aAAa,CACpB,KAAiB,EACjB,OAAgB,EAChB,MAAsB;IAEtB,IAAI,MAAM,KAAK,cAAc,CAAC,IAAI,EAAE,CAAC;QACnC,OAAO,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IACpE,CAAC;IAED,OAAO,qBAAqB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AAC/C,CAAC;AAyBD,SAAS,iBAAiB,CAAC,KAAiB,EAAE,OAAgB;IAC5D,OAAO;QACL,uBAAuB,EAAE;YACvB,OAAO,EAAE,uFAAuF;YAChG,cAAc,EAAE,2EAA2E;YAC3F,cAAc,EAAE,+DAA+D;YAC/E,cAAc,EAAE,0GAA0G;SAC3H;QACD,QAAQ,EAAE;YACR,IAAI,EAAE,wBAAwB;YAC9B,YAAY,EAAE,uEAAuE;YACrF,UAAU,EAAE,8DAA8D;SAC3E;QACD,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YACrB,MAAM,IAAI,GAAiC;gBACzC,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,WAAW,EAAE,CAAC,CAAC,WAAW;aAC3B,CAAC;YAEF,IAAI,OAAO,EAAE,CAAC;gBACZ,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,CAAC;gBAC/B,IAAI,CAAC,MAAM,GAAG,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACzC,CAAC;YAED,OAAO,IAAI,CAAC;QACd,CAAC,CAAC;QACF,WAAW,EAAE,KAAK,CAAC,MAAM;QACzB,cAAc,EAAE,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,aAAa;QACzD,UAAU,EAAE,OAAO;YACjB,CAAC,CAAC,qCAAqC;YACvC,CAAC,CAAC,mCAAmC;KACxC,CAAC;AACJ,CAAC;AAED,SAAS,qBAAqB,CAAC,KAAiB,EAAE,OAAgB;IAChE,MAAM,KAAK,GAAa;QACtB,4BAA4B;QAC5B,EAAE;QACF,wCAAwC;QACxC,qFAAqF;QACrF,EAAE;QACF,6EAA6E;QAC7E,oDAAoD;QACpD,6EAA6E;QAC7E,KAAK;QACL,EAAE;QACF,4CAA4C;QAC5C,EAAE;QACF,8FAA8F;QAC9F,EAAE;QACF,gCAAgC;QAChC,QAAQ;QACR,6CAA6C;QAC7C,gDAAgD;QAChD,gDAAgD;QAChD,gDAAgD;QAChD,gDAAgD;QAChD,gDAAgD;QAChD,KAAK;QACL,EAAE;QACF,qBAAqB;QACrB,QAAQ;QACR,sDAAsD;QACtD,WAAW;QACX,oCAAoC;QACpC,gBAAgB;QAChB,2BAA2B;QAC3B,iBAAiB;QACjB,KAAK;QACL,EAAE;QACF,kCAAkC;QAClC,iGAAiG;QACjG,qGAAqG;QACrG,8GAA8G;QAC9G,EAAE;QACF,KAAK;QACL,EAAE;QACF,wBAAwB,KAAK,CAAC,MAAM,EAAE;QACtC,uBAAuB,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,SAAS;QAC3D,EAAE;QACF,UAAU;QACV,EAAE;KACH,CAAC;IAEF,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,KAAK,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QAC/B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAE7B,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,KAAK,CAAC,IAAI,CAAC,qBAAqB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAChE,CAAC;QAED,IAAI,OAAO,EAAE,CAAC;YACZ,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACf,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAC1B,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACtB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YACjE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACpB,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClB,KAAK,CAAC,IAAI,CAAC,yDAAyD,CAAC,CAAC;IACxE,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,SAAS,gBAAgB,CAAC,QAAgB;IACxC,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,qBAAqB;YACxB,OAAO,YAAY,CAAC,UAAU,CAAC,CAAC;QAClC,KAAK,oBAAoB;YACvB,OAAO,YAAY,CAAC,SAAS,CAAC,CAAC;QACjC,KAAK,6BAA6B;YAChC,OAAO,YAAY,CAAC,kBAAkB,CAAC,CAAC;QAC1C,KAAK,sBAAsB;YACzB,OAAO,YAAY,CAAC,WAAW,CAAC,CAAC;QACnC,KAAK,4BAA4B;YAC/B,OAAO,EAAE,eAAe,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,UAAU,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC;QAC7E,KAAK,qBAAqB;YACxB,OAAO,YAAY,CAAC,UAAU,CAAC,CAAC;QAClC;YACE,OAAO,EAAE,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,SAAS,YAAY,CAAC,MAA0B;IAC9C,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QAClB,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;IAC5B,CAAC;IAED,MAAM,MAAM,GAA2B,EAAE,CAAC;IAE1C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;QACxD,MAAM,CAAC,GAAG,CAAC,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;IACvC,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,eAAe,CAAC,OAAgB;IACvC,oCAAoC;IACpC,MAAM,IAAI,GAAI,OAAoC,CAAC,WAAW,CAAC;IAC/D,MAAM,OAAO,GAAI,OAAoF,CAAC,IAAI,CAAC;IAE3G,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;IAC7B,CAAC;IAED,MAAM,MAAM,GAA4B,EAAE,CAAC;IAE3C,QAAQ,OAAO,CAAC,QAAQ,EAAE,CAAC;QACzB,KAAK,WAAW;YACd,MAAM,CAAC,IAAI,GAAG,QAAQ,CAAC;YACvB,MAAM;QACR,KAAK,WAAW;YACd,MAAM,CAAC,IAAI,GAAG,QAAQ,CAAC;YACvB,MAAM;QACR,KAAK,YAAY;YACf,MAAM,CAAC,IAAI,GAAG,SAAS,CAAC;YACxB,MAAM;QACR,KAAK,SAAS;YACZ,MAAM,CAAC,IAAI,GAAG,QAAQ,CAAC;YACvB,MAAM,CAAC,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC;YAC7B,MAAM;QACR,KAAK,eAAe;YAClB,MAAM,CAAC,IAAI,GAAG,QAAQ,CAAC;YACvB,MAAM,CAAC,IAAI,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;YACnC,MAAM;QACR,KAAK,aAAa;YAChB,OAAO,EAAE,GAAG,eAAe,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QACnE,KAAK,YAAY;YACf,OAAO,EAAE,GAAG,eAAe,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;QACnD;YACE,MAAM,CAAC,IAAI,GAAG,SAAS,CAAC;IAC5B,CAAC;IAED,IAAI,IAAI,EAAE,CAAC;QACT,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC;IAC5B,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,gFAAgF;AAChF,kBAAkB;AAClB,gFAAgF;AAEhF,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC,IAAI,EAAE,yBAAyB;IAC/B,WAAW,EAAE,0EAA0E;CACxF,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"metadata.d.ts","sourceRoot":"","sources":["../../src/tools/metadata.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAkCrD;;;GAGG;AACH,wBAAsB,cAAc,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,CAsC1E;AAg7BD,eAAO,MAAM,wBAAwB;;;CAGpC,CAAC"}
1
+ {"version":3,"file":"metadata.d.ts","sourceRoot":"","sources":["../../src/tools/metadata.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAkCrD;;;GAGG;AACH,wBAAsB,cAAc,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,CA4C1E;AA2uED,eAAO,MAAM,wBAAwB;;;CAGpC,CAAC"}