@robinmordasiewicz/f5xc-terraform-mcp 2.14.11 → 2.15.1
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/docs/data-sources/dns_zone.md +2 -2
- package/dist/docs/resources/api_credential.md +2 -2
- package/dist/docs/resources/child_tenant.md +2 -2
- package/dist/docs/resources/dns_zone.md +443 -306
- package/dist/index.d.ts +14 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +83 -1058
- package/dist/index.js.map +1 -1
- package/dist/schemas/common.d.ts +180 -0
- package/dist/schemas/common.d.ts.map +1 -0
- package/dist/schemas/common.js +230 -0
- package/dist/schemas/common.js.map +1 -0
- package/dist/schemas/index.d.ts +13 -13
- package/dist/tools/addon.d.ts +19 -0
- package/dist/tools/addon.d.ts.map +1 -0
- package/dist/tools/addon.js +219 -0
- package/dist/tools/addon.js.map +1 -0
- package/dist/tools/api.d.ts +20 -0
- package/dist/tools/api.d.ts.map +1 -0
- package/dist/tools/api.js +281 -0
- package/dist/tools/api.js.map +1 -0
- package/dist/tools/discover.d.ts +18 -0
- package/dist/tools/discover.d.ts.map +1 -0
- package/dist/tools/discover.js +190 -0
- package/dist/tools/discover.js.map +1 -0
- package/dist/tools/docs.d.ts +18 -0
- package/dist/tools/docs.d.ts.map +1 -0
- package/dist/tools/docs.js +158 -0
- package/dist/tools/docs.js.map +1 -0
- package/dist/tools/subscription.d.ts +18 -0
- package/dist/tools/subscription.d.ts.map +1 -0
- package/dist/tools/subscription.js +225 -0
- package/dist/tools/subscription.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Discovery Meta-Tool Handler
|
|
3
|
+
*
|
|
4
|
+
* Enables lazy loading of tool schemas for token efficiency.
|
|
5
|
+
* AI assistants can discover available tools without loading full schemas.
|
|
6
|
+
*
|
|
7
|
+
* Tool: f5xc_terraform_discover
|
|
8
|
+
*/
|
|
9
|
+
import { ResponseFormat } from '../types.js';
|
|
10
|
+
import { DocsSchema, ApiSchema, SubscriptionSchema, AddonSchema } from '../schemas/common.js';
|
|
11
|
+
const TOOL_REGISTRY = [
|
|
12
|
+
{
|
|
13
|
+
name: 'f5xc_terraform_docs',
|
|
14
|
+
description: 'Search, get, list F5XC Terraform docs',
|
|
15
|
+
category: 'docs',
|
|
16
|
+
operations: ['search', 'get', 'list'],
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
name: 'f5xc_terraform_api',
|
|
20
|
+
description: 'Query 270+ OpenAPI specs and schemas',
|
|
21
|
+
category: 'api',
|
|
22
|
+
operations: ['search', 'get', 'find_endpoints', 'get_definition', 'list_definitions'],
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
name: 'f5xc_terraform_subscription',
|
|
26
|
+
description: 'Check resource subscription tiers',
|
|
27
|
+
category: 'subscription',
|
|
28
|
+
operations: ['resource', 'property'],
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
name: 'f5xc_terraform_addon',
|
|
32
|
+
description: 'List/check/activate addon services',
|
|
33
|
+
category: 'addon',
|
|
34
|
+
operations: ['list', 'check', 'workflow'],
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
name: 'f5xc_terraform_get_summary',
|
|
38
|
+
description: 'Get provider documentation summary',
|
|
39
|
+
category: 'summary',
|
|
40
|
+
},
|
|
41
|
+
];
|
|
42
|
+
// =============================================================================
|
|
43
|
+
// HANDLER
|
|
44
|
+
// =============================================================================
|
|
45
|
+
/**
|
|
46
|
+
* Handles the f5xc_terraform_discover tool invocation
|
|
47
|
+
*/
|
|
48
|
+
export async function handleDiscover(input) {
|
|
49
|
+
const { category, verbose, response_format } = input;
|
|
50
|
+
// Filter tools by category
|
|
51
|
+
const tools = category === 'all'
|
|
52
|
+
? TOOL_REGISTRY
|
|
53
|
+
: TOOL_REGISTRY.filter((t) => t.category === category);
|
|
54
|
+
// Build response
|
|
55
|
+
const response = buildResponse(tools, verbose, response_format);
|
|
56
|
+
return response;
|
|
57
|
+
}
|
|
58
|
+
function buildResponse(tools, verbose, format) {
|
|
59
|
+
if (format === ResponseFormat.JSON) {
|
|
60
|
+
return JSON.stringify(buildJsonResponse(tools, verbose), null, 2);
|
|
61
|
+
}
|
|
62
|
+
return buildMarkdownResponse(tools, verbose);
|
|
63
|
+
}
|
|
64
|
+
function buildJsonResponse(tools, verbose) {
|
|
65
|
+
return {
|
|
66
|
+
tools: tools.map((t) => {
|
|
67
|
+
const tool = {
|
|
68
|
+
name: t.name,
|
|
69
|
+
description: t.description,
|
|
70
|
+
};
|
|
71
|
+
if (verbose) {
|
|
72
|
+
tool.operations = t.operations;
|
|
73
|
+
tool.schema = getSchemaForTool(t.name);
|
|
74
|
+
}
|
|
75
|
+
return tool;
|
|
76
|
+
}),
|
|
77
|
+
total_tools: tools.length,
|
|
78
|
+
token_estimate: verbose ? '~2,000 tokens' : '~150 tokens',
|
|
79
|
+
usage_hint: verbose
|
|
80
|
+
? 'Full schemas included for reference'
|
|
81
|
+
: 'Use verbose=true for full schemas',
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
function buildMarkdownResponse(tools, verbose) {
|
|
85
|
+
const lines = [
|
|
86
|
+
'# F5XC Terraform MCP Tools',
|
|
87
|
+
'',
|
|
88
|
+
`**Available Tools**: ${tools.length}`,
|
|
89
|
+
`**Token Estimate**: ${verbose ? '~2,000' : '~150'} tokens`,
|
|
90
|
+
'',
|
|
91
|
+
'## Tools',
|
|
92
|
+
'',
|
|
93
|
+
];
|
|
94
|
+
for (const tool of tools) {
|
|
95
|
+
lines.push(`### ${tool.name}`);
|
|
96
|
+
lines.push(tool.description);
|
|
97
|
+
if (tool.operations) {
|
|
98
|
+
lines.push(`- **Operations**: ${tool.operations.join(', ')}`);
|
|
99
|
+
}
|
|
100
|
+
if (verbose) {
|
|
101
|
+
lines.push('');
|
|
102
|
+
lines.push('**Schema**:');
|
|
103
|
+
lines.push('```json');
|
|
104
|
+
lines.push(JSON.stringify(getSchemaForTool(tool.name), null, 2));
|
|
105
|
+
lines.push('```');
|
|
106
|
+
}
|
|
107
|
+
lines.push('');
|
|
108
|
+
}
|
|
109
|
+
if (!verbose) {
|
|
110
|
+
lines.push('---');
|
|
111
|
+
lines.push('*Use `verbose=true` to see full schemas for each tool.*');
|
|
112
|
+
}
|
|
113
|
+
return lines.join('\n');
|
|
114
|
+
}
|
|
115
|
+
function getSchemaForTool(toolName) {
|
|
116
|
+
switch (toolName) {
|
|
117
|
+
case 'f5xc_terraform_docs':
|
|
118
|
+
return schemaToJson(DocsSchema);
|
|
119
|
+
case 'f5xc_terraform_api':
|
|
120
|
+
return schemaToJson(ApiSchema);
|
|
121
|
+
case 'f5xc_terraform_subscription':
|
|
122
|
+
return schemaToJson(SubscriptionSchema);
|
|
123
|
+
case 'f5xc_terraform_addon':
|
|
124
|
+
return schemaToJson(AddonSchema);
|
|
125
|
+
case 'f5xc_terraform_get_summary':
|
|
126
|
+
return { response_format: { type: 'string', enum: ['markdown', 'json'] } };
|
|
127
|
+
default:
|
|
128
|
+
return {};
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Converts a Zod schema to a simplified JSON representation
|
|
133
|
+
* for documentation purposes
|
|
134
|
+
*/
|
|
135
|
+
function schemaToJson(schema) {
|
|
136
|
+
if (!schema.shape) {
|
|
137
|
+
return { type: 'object' };
|
|
138
|
+
}
|
|
139
|
+
const result = {};
|
|
140
|
+
for (const [key, value] of Object.entries(schema.shape)) {
|
|
141
|
+
result[key] = describeZodType(value);
|
|
142
|
+
}
|
|
143
|
+
return result;
|
|
144
|
+
}
|
|
145
|
+
function describeZodType(zodType) {
|
|
146
|
+
// Extract type info from Zod schema
|
|
147
|
+
const desc = zodType.description;
|
|
148
|
+
const typeDef = zodType._def;
|
|
149
|
+
if (!typeDef) {
|
|
150
|
+
return { type: 'unknown' };
|
|
151
|
+
}
|
|
152
|
+
const result = {};
|
|
153
|
+
switch (typeDef.typeName) {
|
|
154
|
+
case 'ZodString':
|
|
155
|
+
result.type = 'string';
|
|
156
|
+
break;
|
|
157
|
+
case 'ZodNumber':
|
|
158
|
+
result.type = 'number';
|
|
159
|
+
break;
|
|
160
|
+
case 'ZodBoolean':
|
|
161
|
+
result.type = 'boolean';
|
|
162
|
+
break;
|
|
163
|
+
case 'ZodEnum':
|
|
164
|
+
result.type = 'string';
|
|
165
|
+
result.enum = typeDef.values;
|
|
166
|
+
break;
|
|
167
|
+
case 'ZodNativeEnum':
|
|
168
|
+
result.type = 'string';
|
|
169
|
+
result.enum = ['markdown', 'json'];
|
|
170
|
+
break;
|
|
171
|
+
case 'ZodOptional':
|
|
172
|
+
return { ...describeZodType(typeDef.innerType), optional: true };
|
|
173
|
+
case 'ZodDefault':
|
|
174
|
+
return { ...describeZodType(typeDef.innerType) };
|
|
175
|
+
default:
|
|
176
|
+
result.type = 'unknown';
|
|
177
|
+
}
|
|
178
|
+
if (desc) {
|
|
179
|
+
result.description = desc;
|
|
180
|
+
}
|
|
181
|
+
return result;
|
|
182
|
+
}
|
|
183
|
+
// =============================================================================
|
|
184
|
+
// TOOL DEFINITION
|
|
185
|
+
// =============================================================================
|
|
186
|
+
export const DISCOVER_TOOL_DEFINITION = {
|
|
187
|
+
name: 'f5xc_terraform_discover',
|
|
188
|
+
description: 'Discover available F5XC Terraform MCP tools with optional schema details',
|
|
189
|
+
};
|
|
190
|
+
//# sourceMappingURL=discover.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"discover.js","sourceRoot":"","sources":["../../src/tools/discover.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Consolidated Documentation Tool Handler
|
|
3
|
+
*
|
|
4
|
+
* Replaces: f5xc_terraform_search_docs, f5xc_terraform_get_doc, f5xc_terraform_list_docs
|
|
5
|
+
*
|
|
6
|
+
* Tool: f5xc_terraform_docs
|
|
7
|
+
*/
|
|
8
|
+
import { DocsInput } from '../schemas/common.js';
|
|
9
|
+
/**
|
|
10
|
+
* Handles the f5xc_terraform_docs tool invocation
|
|
11
|
+
* Routes to appropriate operation based on input.operation
|
|
12
|
+
*/
|
|
13
|
+
export declare function handleDocs(input: DocsInput): Promise<string>;
|
|
14
|
+
export declare const DOCS_TOOL_DEFINITION: {
|
|
15
|
+
name: string;
|
|
16
|
+
description: string;
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=docs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docs.d.ts","sourceRoot":"","sources":["../../src/tools/docs.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAYjD;;;GAGG;AACH,wBAAsB,UAAU,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,CAalE;AAiKD,eAAO,MAAM,oBAAoB;;;CAGhC,CAAC"}
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Consolidated Documentation Tool Handler
|
|
3
|
+
*
|
|
4
|
+
* Replaces: f5xc_terraform_search_docs, f5xc_terraform_get_doc, f5xc_terraform_list_docs
|
|
5
|
+
*
|
|
6
|
+
* Tool: f5xc_terraform_docs
|
|
7
|
+
*/
|
|
8
|
+
import { ResponseFormat } from '../types.js';
|
|
9
|
+
import { searchDocumentation, getDocumentation, listDocumentation, } from '../services/documentation.js';
|
|
10
|
+
// =============================================================================
|
|
11
|
+
// HANDLER
|
|
12
|
+
// =============================================================================
|
|
13
|
+
/**
|
|
14
|
+
* Handles the f5xc_terraform_docs tool invocation
|
|
15
|
+
* Routes to appropriate operation based on input.operation
|
|
16
|
+
*/
|
|
17
|
+
export async function handleDocs(input) {
|
|
18
|
+
const { operation, response_format } = input;
|
|
19
|
+
switch (operation) {
|
|
20
|
+
case 'search':
|
|
21
|
+
return handleSearch(input, response_format);
|
|
22
|
+
case 'get':
|
|
23
|
+
return handleGet(input, response_format);
|
|
24
|
+
case 'list':
|
|
25
|
+
return handleList(input, response_format);
|
|
26
|
+
default:
|
|
27
|
+
throw new Error(`Unknown operation: ${operation}`);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
// =============================================================================
|
|
31
|
+
// OPERATION HANDLERS
|
|
32
|
+
// =============================================================================
|
|
33
|
+
function handleSearch(input, format) {
|
|
34
|
+
const { query, type, limit = 20 } = input;
|
|
35
|
+
if (!query) {
|
|
36
|
+
throw new Error('query is required for search operation');
|
|
37
|
+
}
|
|
38
|
+
const results = searchDocumentation(query, type, limit);
|
|
39
|
+
if (format === ResponseFormat.JSON) {
|
|
40
|
+
return JSON.stringify({
|
|
41
|
+
operation: 'search',
|
|
42
|
+
query,
|
|
43
|
+
type: type || 'all',
|
|
44
|
+
results_count: results.length,
|
|
45
|
+
results,
|
|
46
|
+
}, null, 2);
|
|
47
|
+
}
|
|
48
|
+
// Markdown format
|
|
49
|
+
const lines = [
|
|
50
|
+
`# Search Results: "${query}"`,
|
|
51
|
+
'',
|
|
52
|
+
`**Found**: ${results.length} result(s)`,
|
|
53
|
+
type ? `**Type Filter**: ${type}` : '',
|
|
54
|
+
'',
|
|
55
|
+
];
|
|
56
|
+
if (results.length === 0) {
|
|
57
|
+
lines.push('No matching documentation found.');
|
|
58
|
+
lines.push('');
|
|
59
|
+
lines.push('**Suggestions**:');
|
|
60
|
+
lines.push('- Try different search terms');
|
|
61
|
+
lines.push("- Use `operation: 'list'` to see all available documentation");
|
|
62
|
+
return lines.join('\n');
|
|
63
|
+
}
|
|
64
|
+
for (const result of results) {
|
|
65
|
+
lines.push(`## ${result.name}`);
|
|
66
|
+
lines.push(`- **Type**: ${result.type}`);
|
|
67
|
+
lines.push(`- **Score**: ${result.score.toFixed(2)}`);
|
|
68
|
+
if (result.snippet) {
|
|
69
|
+
lines.push(`- **Snippet**: ${result.snippet.slice(0, 100)}...`);
|
|
70
|
+
}
|
|
71
|
+
lines.push('');
|
|
72
|
+
}
|
|
73
|
+
return lines.join('\n');
|
|
74
|
+
}
|
|
75
|
+
function handleGet(input, format) {
|
|
76
|
+
const { name, type } = input;
|
|
77
|
+
if (!name) {
|
|
78
|
+
throw new Error('name is required for get operation');
|
|
79
|
+
}
|
|
80
|
+
const doc = getDocumentation(name, type);
|
|
81
|
+
if (!doc) {
|
|
82
|
+
const error = {
|
|
83
|
+
error: 'Documentation not found',
|
|
84
|
+
resource: name,
|
|
85
|
+
type: type || 'any',
|
|
86
|
+
suggestion: "Use operation: 'search' or 'list' to find available documentation",
|
|
87
|
+
};
|
|
88
|
+
return format === ResponseFormat.JSON
|
|
89
|
+
? JSON.stringify(error, null, 2)
|
|
90
|
+
: `# Error: Documentation Not Found\n\n**Resource**: ${name}\n**Type**: ${type || 'any'}\n\nUse \`operation: 'list'\` to see available documentation.`;
|
|
91
|
+
}
|
|
92
|
+
if (format === ResponseFormat.JSON) {
|
|
93
|
+
return JSON.stringify({
|
|
94
|
+
operation: 'get',
|
|
95
|
+
name: doc.name,
|
|
96
|
+
type: doc.type,
|
|
97
|
+
path: doc.path,
|
|
98
|
+
content: doc.content,
|
|
99
|
+
}, null, 2);
|
|
100
|
+
}
|
|
101
|
+
// Return the full markdown content
|
|
102
|
+
return doc.content || `# ${doc.name}\n\nNo content available.`;
|
|
103
|
+
}
|
|
104
|
+
function handleList(input, format) {
|
|
105
|
+
const { type } = input;
|
|
106
|
+
const docs = listDocumentation(type);
|
|
107
|
+
if (format === ResponseFormat.JSON) {
|
|
108
|
+
return JSON.stringify({
|
|
109
|
+
operation: 'list',
|
|
110
|
+
type: type || 'all',
|
|
111
|
+
total: docs.length,
|
|
112
|
+
items: docs.map((d) => ({
|
|
113
|
+
name: d.name,
|
|
114
|
+
type: d.type,
|
|
115
|
+
subscriptionTier: d.subscriptionTier,
|
|
116
|
+
})),
|
|
117
|
+
}, null, 2);
|
|
118
|
+
}
|
|
119
|
+
// Markdown format
|
|
120
|
+
const lines = [
|
|
121
|
+
`# F5XC Terraform Documentation`,
|
|
122
|
+
'',
|
|
123
|
+
`**Total**: ${docs.length} items`,
|
|
124
|
+
type ? `**Type Filter**: ${type}` : '',
|
|
125
|
+
'',
|
|
126
|
+
];
|
|
127
|
+
// Group by type
|
|
128
|
+
const byType = new Map();
|
|
129
|
+
for (const doc of docs) {
|
|
130
|
+
const t = doc.type;
|
|
131
|
+
if (!byType.has(t)) {
|
|
132
|
+
byType.set(t, []);
|
|
133
|
+
}
|
|
134
|
+
byType.get(t).push(doc);
|
|
135
|
+
}
|
|
136
|
+
for (const [docType, typeDocs] of byType) {
|
|
137
|
+
lines.push(`## ${docType}s (${typeDocs.length})`);
|
|
138
|
+
lines.push('');
|
|
139
|
+
for (const doc of typeDocs.slice(0, 20)) {
|
|
140
|
+
// Limit to 20 per type for readability
|
|
141
|
+
const tierInfo = doc.subscriptionTier ? ` [${doc.subscriptionTier}]` : '';
|
|
142
|
+
lines.push(`- **${doc.name}**${tierInfo}`);
|
|
143
|
+
}
|
|
144
|
+
if (typeDocs.length > 20) {
|
|
145
|
+
lines.push(`- *... and ${typeDocs.length - 20} more*`);
|
|
146
|
+
}
|
|
147
|
+
lines.push('');
|
|
148
|
+
}
|
|
149
|
+
return lines.join('\n');
|
|
150
|
+
}
|
|
151
|
+
// =============================================================================
|
|
152
|
+
// TOOL DEFINITION
|
|
153
|
+
// =============================================================================
|
|
154
|
+
export const DOCS_TOOL_DEFINITION = {
|
|
155
|
+
name: 'f5xc_terraform_docs',
|
|
156
|
+
description: 'F5XC Terraform docs - search, get, or list resources/data-sources/functions/guides',
|
|
157
|
+
};
|
|
158
|
+
//# sourceMappingURL=docs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docs.js","sourceRoot":"","sources":["../../src/tools/docs.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Consolidated Subscription Tool Handler
|
|
3
|
+
*
|
|
4
|
+
* Replaces: f5xc_terraform_get_subscription_info, f5xc_terraform_get_property_subscription_info
|
|
5
|
+
*
|
|
6
|
+
* Tool: f5xc_terraform_subscription
|
|
7
|
+
*/
|
|
8
|
+
import { SubscriptionInput } from '../schemas/common.js';
|
|
9
|
+
/**
|
|
10
|
+
* Handles the f5xc_terraform_subscription tool invocation
|
|
11
|
+
* Routes to appropriate operation based on input.operation
|
|
12
|
+
*/
|
|
13
|
+
export declare function handleSubscription(input: SubscriptionInput): Promise<string>;
|
|
14
|
+
export declare const SUBSCRIPTION_TOOL_DEFINITION: {
|
|
15
|
+
name: string;
|
|
16
|
+
description: string;
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=subscription.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"subscription.d.ts","sourceRoot":"","sources":["../../src/tools/subscription.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAazD;;;GAGG;AACH,wBAAsB,kBAAkB,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC,CAWlF;AAkPD,eAAO,MAAM,4BAA4B;;;CAGxC,CAAC"}
|
|
@@ -0,0 +1,225 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Consolidated Subscription Tool Handler
|
|
3
|
+
*
|
|
4
|
+
* Replaces: f5xc_terraform_get_subscription_info, f5xc_terraform_get_property_subscription_info
|
|
5
|
+
*
|
|
6
|
+
* Tool: f5xc_terraform_subscription
|
|
7
|
+
*/
|
|
8
|
+
import { ResponseFormat } from '../types.js';
|
|
9
|
+
import { getResourceSubscriptionInfo, getPropertySubscriptionInfo, getAdvancedTierResources, getSubscriptionSummary, } from '../services/documentation.js';
|
|
10
|
+
// =============================================================================
|
|
11
|
+
// HANDLER
|
|
12
|
+
// =============================================================================
|
|
13
|
+
/**
|
|
14
|
+
* Handles the f5xc_terraform_subscription tool invocation
|
|
15
|
+
* Routes to appropriate operation based on input.operation
|
|
16
|
+
*/
|
|
17
|
+
export async function handleSubscription(input) {
|
|
18
|
+
const { operation, response_format } = input;
|
|
19
|
+
switch (operation) {
|
|
20
|
+
case 'resource':
|
|
21
|
+
return handleResource(input, response_format);
|
|
22
|
+
case 'property':
|
|
23
|
+
return handleProperty(input, response_format);
|
|
24
|
+
default:
|
|
25
|
+
throw new Error(`Unknown operation: ${operation}`);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
// =============================================================================
|
|
29
|
+
// OPERATION HANDLERS
|
|
30
|
+
// =============================================================================
|
|
31
|
+
function handleResource(input, format) {
|
|
32
|
+
const { resource_name, tier } = input;
|
|
33
|
+
// If no resource specified, return summary or filtered list
|
|
34
|
+
if (!resource_name) {
|
|
35
|
+
return handleResourceSummary(tier, format);
|
|
36
|
+
}
|
|
37
|
+
const info = getResourceSubscriptionInfo(resource_name);
|
|
38
|
+
if (!info) {
|
|
39
|
+
const error = {
|
|
40
|
+
error: 'Resource not found in subscription metadata',
|
|
41
|
+
resource: resource_name,
|
|
42
|
+
suggestion: 'Use operation: "resource" without resource_name to see all resources',
|
|
43
|
+
};
|
|
44
|
+
return format === ResponseFormat.JSON
|
|
45
|
+
? JSON.stringify(error, null, 2)
|
|
46
|
+
: `# Error: Resource Not Found\n\n**Resource**: ${resource_name}\n\nUse \`operation: 'resource'\` without resource_name to see all resources.`;
|
|
47
|
+
}
|
|
48
|
+
if (format === ResponseFormat.JSON) {
|
|
49
|
+
return JSON.stringify({
|
|
50
|
+
operation: 'resource',
|
|
51
|
+
resource_name,
|
|
52
|
+
tier: info.tier,
|
|
53
|
+
service: info.service,
|
|
54
|
+
advanced_features: info.advancedFeatures,
|
|
55
|
+
requires_advanced: info.tier === 'ADVANCED',
|
|
56
|
+
}, null, 2);
|
|
57
|
+
}
|
|
58
|
+
// Markdown format
|
|
59
|
+
const lines = [
|
|
60
|
+
`# Subscription Info: ${resource_name}`,
|
|
61
|
+
'',
|
|
62
|
+
`**Tier**: ${info.tier}`,
|
|
63
|
+
`**Service**: ${info.service}`,
|
|
64
|
+
'',
|
|
65
|
+
];
|
|
66
|
+
if (info.tier === 'ADVANCED') {
|
|
67
|
+
lines.push('> ⚠️ This resource requires an **Advanced** subscription tier.');
|
|
68
|
+
lines.push('');
|
|
69
|
+
}
|
|
70
|
+
if (info.advancedFeatures && info.advancedFeatures.length > 0) {
|
|
71
|
+
lines.push('## Advanced Features');
|
|
72
|
+
lines.push('');
|
|
73
|
+
lines.push('The following features require Advanced tier:');
|
|
74
|
+
for (const feature of info.advancedFeatures) {
|
|
75
|
+
lines.push(`- ${feature}`);
|
|
76
|
+
}
|
|
77
|
+
lines.push('');
|
|
78
|
+
}
|
|
79
|
+
return lines.join('\n');
|
|
80
|
+
}
|
|
81
|
+
function handleResourceSummary(tier, format) {
|
|
82
|
+
const summary = getSubscriptionSummary();
|
|
83
|
+
const advancedResources = getAdvancedTierResources();
|
|
84
|
+
if (format === ResponseFormat.JSON) {
|
|
85
|
+
return JSON.stringify({
|
|
86
|
+
operation: 'resource',
|
|
87
|
+
filter: tier || 'all',
|
|
88
|
+
summary: {
|
|
89
|
+
total_resources: summary.totalResources,
|
|
90
|
+
advanced_only: summary.advancedOnlyResources,
|
|
91
|
+
with_advanced_features: summary.resourcesWithAdvancedFeatures,
|
|
92
|
+
},
|
|
93
|
+
advanced_resources: !tier || tier === 'ADVANCED'
|
|
94
|
+
? advancedResources.map((r) => ({
|
|
95
|
+
name: r.name,
|
|
96
|
+
type: r.type,
|
|
97
|
+
}))
|
|
98
|
+
: undefined,
|
|
99
|
+
}, null, 2);
|
|
100
|
+
}
|
|
101
|
+
// Markdown format
|
|
102
|
+
const lines = [
|
|
103
|
+
'# F5XC Subscription Tiers Overview',
|
|
104
|
+
'',
|
|
105
|
+
'## Summary',
|
|
106
|
+
'',
|
|
107
|
+
`- **Total Resources**: ${summary.totalResources}`,
|
|
108
|
+
`- **Advanced Only**: ${summary.advancedOnlyResources} resources`,
|
|
109
|
+
`- **With Advanced Features**: ${summary.resourcesWithAdvancedFeatures} resources`,
|
|
110
|
+
'',
|
|
111
|
+
];
|
|
112
|
+
if (!tier || tier === 'ADVANCED') {
|
|
113
|
+
lines.push('## Advanced Tier Resources');
|
|
114
|
+
lines.push('');
|
|
115
|
+
lines.push('These resources require an Advanced subscription:');
|
|
116
|
+
lines.push('');
|
|
117
|
+
for (const resource of advancedResources.slice(0, 30)) {
|
|
118
|
+
lines.push(`- **${resource.name}** (${resource.type})`);
|
|
119
|
+
}
|
|
120
|
+
if (advancedResources.length > 30) {
|
|
121
|
+
lines.push(`- *... and ${advancedResources.length - 30} more*`);
|
|
122
|
+
}
|
|
123
|
+
lines.push('');
|
|
124
|
+
}
|
|
125
|
+
return lines.join('\n');
|
|
126
|
+
}
|
|
127
|
+
function handleProperty(input, format) {
|
|
128
|
+
const { resource_name, property_path } = input;
|
|
129
|
+
if (!resource_name) {
|
|
130
|
+
throw new Error('resource_name is required for property operation');
|
|
131
|
+
}
|
|
132
|
+
// If no property specified, get all advanced properties for the resource
|
|
133
|
+
if (!property_path) {
|
|
134
|
+
return handleResourceProperties(resource_name, format);
|
|
135
|
+
}
|
|
136
|
+
const info = getPropertySubscriptionInfo(resource_name, property_path);
|
|
137
|
+
if (!info) {
|
|
138
|
+
const error = {
|
|
139
|
+
error: 'Resource not found in subscription metadata',
|
|
140
|
+
resource: resource_name,
|
|
141
|
+
property: property_path,
|
|
142
|
+
};
|
|
143
|
+
return format === ResponseFormat.JSON
|
|
144
|
+
? JSON.stringify(error, null, 2)
|
|
145
|
+
: `# Error: Resource Not Found\n\n**Resource**: ${resource_name}`;
|
|
146
|
+
}
|
|
147
|
+
if (format === ResponseFormat.JSON) {
|
|
148
|
+
return JSON.stringify({
|
|
149
|
+
operation: 'property',
|
|
150
|
+
resource_name: info.resourceName,
|
|
151
|
+
property_path: info.propertyName,
|
|
152
|
+
requires_advanced: info.requiresAdvanced,
|
|
153
|
+
matched_feature: info.matchedFeature,
|
|
154
|
+
resource_tier: info.resourceTier,
|
|
155
|
+
service: info.service,
|
|
156
|
+
}, null, 2);
|
|
157
|
+
}
|
|
158
|
+
// Markdown format
|
|
159
|
+
const lines = [
|
|
160
|
+
`# Property Subscription Info`,
|
|
161
|
+
'',
|
|
162
|
+
`**Resource**: ${resource_name}`,
|
|
163
|
+
`**Property**: ${property_path}`,
|
|
164
|
+
'',
|
|
165
|
+
];
|
|
166
|
+
if (info.requiresAdvanced) {
|
|
167
|
+
lines.push('> ⚠️ This property requires an **Advanced** subscription tier.');
|
|
168
|
+
lines.push('');
|
|
169
|
+
lines.push(`**Feature**: ${info.matchedFeature || property_path}`);
|
|
170
|
+
}
|
|
171
|
+
else {
|
|
172
|
+
lines.push('✅ This property is available on **Standard** tier.');
|
|
173
|
+
}
|
|
174
|
+
return lines.join('\n');
|
|
175
|
+
}
|
|
176
|
+
function handleResourceProperties(resourceName, format) {
|
|
177
|
+
const info = getResourceSubscriptionInfo(resourceName);
|
|
178
|
+
if (!info) {
|
|
179
|
+
const error = {
|
|
180
|
+
error: 'Resource not found',
|
|
181
|
+
resource: resourceName,
|
|
182
|
+
};
|
|
183
|
+
return format === ResponseFormat.JSON
|
|
184
|
+
? JSON.stringify(error, null, 2)
|
|
185
|
+
: `# Error: Resource Not Found\n\n**Resource**: ${resourceName}`;
|
|
186
|
+
}
|
|
187
|
+
const advancedFeatures = info.advancedFeatures || [];
|
|
188
|
+
if (format === ResponseFormat.JSON) {
|
|
189
|
+
return JSON.stringify({
|
|
190
|
+
operation: 'property',
|
|
191
|
+
resource_name: resourceName,
|
|
192
|
+
resource_tier: info.tier,
|
|
193
|
+
advanced_properties: advancedFeatures,
|
|
194
|
+
advanced_count: advancedFeatures.length,
|
|
195
|
+
}, null, 2);
|
|
196
|
+
}
|
|
197
|
+
// Markdown format
|
|
198
|
+
const lines = [
|
|
199
|
+
`# Advanced Properties: ${resourceName}`,
|
|
200
|
+
'',
|
|
201
|
+
`**Resource Tier**: ${info.tier}`,
|
|
202
|
+
`**Advanced Properties**: ${advancedFeatures.length}`,
|
|
203
|
+
'',
|
|
204
|
+
];
|
|
205
|
+
if (advancedFeatures.length === 0) {
|
|
206
|
+
lines.push('No advanced-tier properties found for this resource.');
|
|
207
|
+
lines.push('All properties are available on Standard tier.');
|
|
208
|
+
}
|
|
209
|
+
else {
|
|
210
|
+
lines.push('## Properties Requiring Advanced Tier');
|
|
211
|
+
lines.push('');
|
|
212
|
+
for (const feature of advancedFeatures) {
|
|
213
|
+
lines.push(`- ${feature}`);
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
return lines.join('\n');
|
|
217
|
+
}
|
|
218
|
+
// =============================================================================
|
|
219
|
+
// TOOL DEFINITION
|
|
220
|
+
// =============================================================================
|
|
221
|
+
export const SUBSCRIPTION_TOOL_DEFINITION = {
|
|
222
|
+
name: 'f5xc_terraform_subscription',
|
|
223
|
+
description: 'Check F5XC resource subscription tiers and advanced feature requirements',
|
|
224
|
+
};
|
|
225
|
+
//# sourceMappingURL=subscription.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"subscription.js","sourceRoot":"","sources":["../../src/tools/subscription.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@robinmordasiewicz/f5xc-terraform-mcp",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.15.1",
|
|
4
4
|
"description": "MCP server for F5 Distributed Cloud Terraform provider - documentation, 270+ OpenAPI specs, subscription info, and addon activation workflows for AI assistants",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|