@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.
- package/README.md +1 -1
- package/dist/index.js +34 -4
- package/dist/index.js.map +1 -1
- package/dist/metadata/resource-metadata.json +1 -1
- package/dist/metadata/validation-patterns.json +1 -1
- package/dist/schemas/common.d.ts +24 -3
- package/dist/schemas/common.d.ts.map +1 -1
- package/dist/schemas/common.js +18 -2
- package/dist/schemas/common.js.map +1 -1
- package/dist/tools/auth.d.ts +30 -0
- package/dist/tools/auth.d.ts.map +1 -0
- package/dist/tools/auth.js +364 -0
- package/dist/tools/auth.js.map +1 -0
- package/dist/tools/discover.d.ts.map +1 -1
- package/dist/tools/discover.js +51 -1
- package/dist/tools/discover.js.map +1 -1
- package/dist/tools/metadata.d.ts.map +1 -1
- package/dist/tools/metadata.js +1162 -1
- package/dist/tools/metadata.js.map +1 -1
- package/package.json +4 -2
|
@@ -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":"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"}
|
|
@@ -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;
|
|
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"}
|
package/dist/tools/discover.js
CHANGED
|
@@ -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":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"discover.js","sourceRoot":"","sources":["../../src/tools/discover.ts"],"names":[],"mappings":"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"}
|
|
@@ -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,
|
|
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"}
|