@robinmordasiewicz/f5xc-api-mcp 1.0.82-2512312028
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/CHANGELOG.md +74 -0
- package/README.md +415 -0
- package/dist/auth/credential-manager.d.ts +151 -0
- package/dist/auth/credential-manager.d.ts.map +1 -0
- package/dist/auth/credential-manager.js +330 -0
- package/dist/auth/credential-manager.js.map +1 -0
- package/dist/auth/http-client.d.ts +81 -0
- package/dist/auth/http-client.d.ts.map +1 -0
- package/dist/auth/http-client.js +197 -0
- package/dist/auth/http-client.js.map +1 -0
- package/dist/auth/index.d.ts +8 -0
- package/dist/auth/index.d.ts.map +1 -0
- package/dist/auth/index.js +6 -0
- package/dist/auth/index.js.map +1 -0
- package/dist/config/config-manager.d.ts +72 -0
- package/dist/config/config-manager.d.ts.map +1 -0
- package/dist/config/config-manager.js +247 -0
- package/dist/config/config-manager.js.map +1 -0
- package/dist/config/index.d.ts +7 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +7 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/schema.d.ts +74 -0
- package/dist/config/schema.d.ts.map +1 -0
- package/dist/config/schema.js +75 -0
- package/dist/config/schema.js.map +1 -0
- package/dist/config/types.d.ts +77 -0
- package/dist/config/types.d.ts.map +1 -0
- package/dist/config/types.js +31 -0
- package/dist/config/types.js.map +1 -0
- package/dist/generator/dependency-extractor.d.ts +103 -0
- package/dist/generator/dependency-extractor.d.ts.map +1 -0
- package/dist/generator/dependency-extractor.js +473 -0
- package/dist/generator/dependency-extractor.js.map +1 -0
- package/dist/generator/dependency-graph.d.ts +67 -0
- package/dist/generator/dependency-graph.d.ts.map +1 -0
- package/dist/generator/dependency-graph.js +330 -0
- package/dist/generator/dependency-graph.js.map +1 -0
- package/dist/generator/dependency-types.d.ts +206 -0
- package/dist/generator/dependency-types.d.ts.map +1 -0
- package/dist/generator/dependency-types.js +37 -0
- package/dist/generator/dependency-types.js.map +1 -0
- package/dist/generator/index.d.ts +7 -0
- package/dist/generator/index.d.ts.map +1 -0
- package/dist/generator/index.js +7 -0
- package/dist/generator/index.js.map +1 -0
- package/dist/generator/naming/acronyms.d.ts +81 -0
- package/dist/generator/naming/acronyms.d.ts.map +1 -0
- package/dist/generator/naming/acronyms.js +253 -0
- package/dist/generator/naming/acronyms.js.map +1 -0
- package/dist/generator/naming/index.d.ts +6 -0
- package/dist/generator/naming/index.d.ts.map +1 -0
- package/dist/generator/naming/index.js +6 -0
- package/dist/generator/naming/index.js.map +1 -0
- package/dist/generator/naming/volterra-mapping.d.ts +102 -0
- package/dist/generator/naming/volterra-mapping.d.ts.map +1 -0
- package/dist/generator/naming/volterra-mapping.js +259 -0
- package/dist/generator/naming/volterra-mapping.js.map +1 -0
- package/dist/generator/openapi-parser.d.ts +701 -0
- package/dist/generator/openapi-parser.d.ts.map +1 -0
- package/dist/generator/openapi-parser.js +704 -0
- package/dist/generator/openapi-parser.js.map +1 -0
- package/dist/generator/tool-generator.d.ts +118 -0
- package/dist/generator/tool-generator.d.ts.map +1 -0
- package/dist/generator/tool-generator.js +529 -0
- package/dist/generator/tool-generator.js.map +1 -0
- package/dist/generator/transformers/index.d.ts +7 -0
- package/dist/generator/transformers/index.d.ts.map +1 -0
- package/dist/generator/transformers/index.js +7 -0
- package/dist/generator/transformers/index.js.map +1 -0
- package/dist/generator/transformers/normalize-examples.d.ts +48 -0
- package/dist/generator/transformers/normalize-examples.d.ts.map +1 -0
- package/dist/generator/transformers/normalize-examples.js +66 -0
- package/dist/generator/transformers/normalize-examples.js.map +1 -0
- package/dist/index.d.ts +22 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +101 -0
- package/dist/index.js.map +1 -0
- package/dist/prompts/error-resolution.d.ts +70 -0
- package/dist/prompts/error-resolution.d.ts.map +1 -0
- package/dist/prompts/error-resolution.js +350 -0
- package/dist/prompts/error-resolution.js.map +1 -0
- package/dist/prompts/index.d.ts +8 -0
- package/dist/prompts/index.d.ts.map +1 -0
- package/dist/prompts/index.js +7 -0
- package/dist/prompts/index.js.map +1 -0
- package/dist/prompts/workflows.d.ts +59 -0
- package/dist/prompts/workflows.d.ts.map +1 -0
- package/dist/prompts/workflows.js +441 -0
- package/dist/prompts/workflows.js.map +1 -0
- package/dist/resources/handlers.d.ts +70 -0
- package/dist/resources/handlers.d.ts.map +1 -0
- package/dist/resources/handlers.js +270 -0
- package/dist/resources/handlers.js.map +1 -0
- package/dist/resources/index.d.ts +8 -0
- package/dist/resources/index.d.ts.map +1 -0
- package/dist/resources/index.js +6 -0
- package/dist/resources/index.js.map +1 -0
- package/dist/resources/templates.d.ts +86 -0
- package/dist/resources/templates.d.ts.map +1 -0
- package/dist/resources/templates.js +248 -0
- package/dist/resources/templates.js.map +1 -0
- package/dist/server.d.ts +78 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +721 -0
- package/dist/server.js.map +1 -0
- package/dist/tools/discovery/best-practices.d.ts +140 -0
- package/dist/tools/discovery/best-practices.d.ts.map +1 -0
- package/dist/tools/discovery/best-practices.js +499 -0
- package/dist/tools/discovery/best-practices.js.map +1 -0
- package/dist/tools/discovery/consolidate.d.ts +97 -0
- package/dist/tools/discovery/consolidate.d.ts.map +1 -0
- package/dist/tools/discovery/consolidate.js +200 -0
- package/dist/tools/discovery/consolidate.js.map +1 -0
- package/dist/tools/discovery/cost-estimator.d.ts +114 -0
- package/dist/tools/discovery/cost-estimator.d.ts.map +1 -0
- package/dist/tools/discovery/cost-estimator.js +273 -0
- package/dist/tools/discovery/cost-estimator.js.map +1 -0
- package/dist/tools/discovery/dependencies.d.ts +113 -0
- package/dist/tools/discovery/dependencies.d.ts.map +1 -0
- package/dist/tools/discovery/dependencies.js +258 -0
- package/dist/tools/discovery/dependencies.js.map +1 -0
- package/dist/tools/discovery/describe.d.ts +133 -0
- package/dist/tools/discovery/describe.d.ts.map +1 -0
- package/dist/tools/discovery/describe.js +208 -0
- package/dist/tools/discovery/describe.js.map +1 -0
- package/dist/tools/discovery/execute.d.ts +96 -0
- package/dist/tools/discovery/execute.d.ts.map +1 -0
- package/dist/tools/discovery/execute.js +220 -0
- package/dist/tools/discovery/execute.js.map +1 -0
- package/dist/tools/discovery/index-loader.d.ts +28 -0
- package/dist/tools/discovery/index-loader.d.ts.map +1 -0
- package/dist/tools/discovery/index-loader.js +72 -0
- package/dist/tools/discovery/index-loader.js.map +1 -0
- package/dist/tools/discovery/index.d.ts +363 -0
- package/dist/tools/discovery/index.d.ts.map +1 -0
- package/dist/tools/discovery/index.js +361 -0
- package/dist/tools/discovery/index.js.map +1 -0
- package/dist/tools/discovery/resolver.d.ts +119 -0
- package/dist/tools/discovery/resolver.d.ts.map +1 -0
- package/dist/tools/discovery/resolver.js +369 -0
- package/dist/tools/discovery/resolver.js.map +1 -0
- package/dist/tools/discovery/search.d.ts +41 -0
- package/dist/tools/discovery/search.d.ts.map +1 -0
- package/dist/tools/discovery/search.js +176 -0
- package/dist/tools/discovery/search.js.map +1 -0
- package/dist/tools/discovery/types.d.ts +91 -0
- package/dist/tools/discovery/types.d.ts.map +1 -0
- package/dist/tools/discovery/types.js +9 -0
- package/dist/tools/discovery/types.js.map +1 -0
- package/dist/tools/discovery/validate.d.ts +63 -0
- package/dist/tools/discovery/validate.d.ts.map +1 -0
- package/dist/tools/discovery/validate.js +239 -0
- package/dist/tools/discovery/validate.js.map +1 -0
- package/dist/tools/generated/admin_console_and_ui/index.d.ts +8 -0
- package/dist/tools/generated/admin_console_and_ui/index.d.ts.map +1 -0
- package/dist/tools/generated/admin_console_and_ui/index.js +265 -0
- package/dist/tools/generated/admin_console_and_ui/index.js.map +1 -0
- package/dist/tools/generated/api/index.d.ts +8 -0
- package/dist/tools/generated/api/index.d.ts.map +1 -0
- package/dist/tools/generated/api/index.js +7016 -0
- package/dist/tools/generated/api/index.js.map +1 -0
- package/dist/tools/generated/authentication/index.d.ts +8 -0
- package/dist/tools/generated/authentication/index.d.ts.map +1 -0
- package/dist/tools/generated/authentication/index.js +907 -0
- package/dist/tools/generated/authentication/index.js.map +1 -0
- package/dist/tools/generated/bigip/index.d.ts +8 -0
- package/dist/tools/generated/bigip/index.d.ts.map +1 -0
- package/dist/tools/generated/bigip/index.js +3152 -0
- package/dist/tools/generated/bigip/index.js.map +1 -0
- package/dist/tools/generated/billing_and_usage/index.d.ts +8 -0
- package/dist/tools/generated/billing_and_usage/index.d.ts.map +1 -0
- package/dist/tools/generated/billing_and_usage/index.js +2452 -0
- package/dist/tools/generated/billing_and_usage/index.js.map +1 -0
- package/dist/tools/generated/blindfold/index.d.ts +8 -0
- package/dist/tools/generated/blindfold/index.d.ts.map +1 -0
- package/dist/tools/generated/blindfold/index.js +3790 -0
- package/dist/tools/generated/blindfold/index.js.map +1 -0
- package/dist/tools/generated/bot_and_threat_defense/index.d.ts +8 -0
- package/dist/tools/generated/bot_and_threat_defense/index.d.ts.map +1 -0
- package/dist/tools/generated/bot_and_threat_defense/index.js +2746 -0
- package/dist/tools/generated/bot_and_threat_defense/index.js.map +1 -0
- package/dist/tools/generated/cdn/index.d.ts +8 -0
- package/dist/tools/generated/cdn/index.d.ts.map +1 -0
- package/dist/tools/generated/cdn/index.js +2686 -0
- package/dist/tools/generated/cdn/index.js.map +1 -0
- package/dist/tools/generated/ce_management/index.d.ts +8 -0
- package/dist/tools/generated/ce_management/index.d.ts.map +1 -0
- package/dist/tools/generated/ce_management/index.js +3812 -0
- package/dist/tools/generated/ce_management/index.js.map +1 -0
- package/dist/tools/generated/certificates/index.d.ts +8 -0
- package/dist/tools/generated/certificates/index.d.ts.map +1 -0
- package/dist/tools/generated/certificates/index.js +2547 -0
- package/dist/tools/generated/certificates/index.js.map +1 -0
- package/dist/tools/generated/cloud_infrastructure/index.d.ts +8 -0
- package/dist/tools/generated/cloud_infrastructure/index.d.ts.map +1 -0
- package/dist/tools/generated/cloud_infrastructure/index.js +3959 -0
- package/dist/tools/generated/cloud_infrastructure/index.js.map +1 -0
- package/dist/tools/generated/container_services/index.d.ts +8 -0
- package/dist/tools/generated/container_services/index.d.ts.map +1 -0
- package/dist/tools/generated/container_services/index.js +2018 -0
- package/dist/tools/generated/container_services/index.js.map +1 -0
- package/dist/tools/generated/data_and_privacy_security/index.d.ts +8 -0
- package/dist/tools/generated/data_and_privacy_security/index.d.ts.map +1 -0
- package/dist/tools/generated/data_and_privacy_security/index.js +1662 -0
- package/dist/tools/generated/data_and_privacy_security/index.js.map +1 -0
- package/dist/tools/generated/data_intelligence/index.d.ts +8 -0
- package/dist/tools/generated/data_intelligence/index.d.ts.map +1 -0
- package/dist/tools/generated/data_intelligence/index.js +1600 -0
- package/dist/tools/generated/data_intelligence/index.js.map +1 -0
- package/dist/tools/generated/ddos/index.d.ts +8 -0
- package/dist/tools/generated/ddos/index.d.ts.map +1 -0
- package/dist/tools/generated/ddos/index.js +8091 -0
- package/dist/tools/generated/ddos/index.js.map +1 -0
- package/dist/tools/generated/dependency-graph.json +26358 -0
- package/dist/tools/generated/dns/index.d.ts +8 -0
- package/dist/tools/generated/dns/index.d.ts.map +1 -0
- package/dist/tools/generated/dns/index.js +6096 -0
- package/dist/tools/generated/dns/index.js.map +1 -0
- package/dist/tools/generated/generative_ai/index.d.ts +8 -0
- package/dist/tools/generated/generative_ai/index.d.ts.map +1 -0
- package/dist/tools/generated/generative_ai/index.js +1019 -0
- package/dist/tools/generated/generative_ai/index.js.map +1 -0
- package/dist/tools/generated/managed_kubernetes/index.d.ts +8 -0
- package/dist/tools/generated/managed_kubernetes/index.d.ts.map +1 -0
- package/dist/tools/generated/managed_kubernetes/index.js +3368 -0
- package/dist/tools/generated/managed_kubernetes/index.js.map +1 -0
- package/dist/tools/generated/marketplace/index.d.ts +8 -0
- package/dist/tools/generated/marketplace/index.d.ts.map +1 -0
- package/dist/tools/generated/marketplace/index.js +4329 -0
- package/dist/tools/generated/marketplace/index.js.map +1 -0
- package/dist/tools/generated/network/index.d.ts +8 -0
- package/dist/tools/generated/network/index.d.ts.map +1 -0
- package/dist/tools/generated/network/index.js +12424 -0
- package/dist/tools/generated/network/index.js.map +1 -0
- package/dist/tools/generated/network_security/index.d.ts +8 -0
- package/dist/tools/generated/network_security/index.d.ts.map +1 -0
- package/dist/tools/generated/network_security/index.js +9637 -0
- package/dist/tools/generated/network_security/index.js.map +1 -0
- package/dist/tools/generated/nginx_one/index.d.ts +8 -0
- package/dist/tools/generated/nginx_one/index.d.ts.map +1 -0
- package/dist/tools/generated/nginx_one/index.js +1692 -0
- package/dist/tools/generated/nginx_one/index.js.map +1 -0
- package/dist/tools/generated/object_storage/index.d.ts +8 -0
- package/dist/tools/generated/object_storage/index.d.ts.map +1 -0
- package/dist/tools/generated/object_storage/index.js +996 -0
- package/dist/tools/generated/object_storage/index.js.map +1 -0
- package/dist/tools/generated/observability/index.d.ts +8 -0
- package/dist/tools/generated/observability/index.d.ts.map +1 -0
- package/dist/tools/generated/observability/index.js +5285 -0
- package/dist/tools/generated/observability/index.js.map +1 -0
- package/dist/tools/generated/rate_limiting/index.d.ts +8 -0
- package/dist/tools/generated/rate_limiting/index.d.ts.map +1 -0
- package/dist/tools/generated/rate_limiting/index.js +2108 -0
- package/dist/tools/generated/rate_limiting/index.js.map +1 -0
- package/dist/tools/generated/secops_and_incident_response/index.d.ts +8 -0
- package/dist/tools/generated/secops_and_incident_response/index.d.ts.map +1 -0
- package/dist/tools/generated/secops_and_incident_response/index.js +710 -0
- package/dist/tools/generated/secops_and_incident_response/index.js.map +1 -0
- package/dist/tools/generated/service_mesh/index.d.ts +8 -0
- package/dist/tools/generated/service_mesh/index.d.ts.map +1 -0
- package/dist/tools/generated/service_mesh/index.js +6062 -0
- package/dist/tools/generated/service_mesh/index.js.map +1 -0
- package/dist/tools/generated/shape/index.d.ts +8 -0
- package/dist/tools/generated/shape/index.d.ts.map +1 -0
- package/dist/tools/generated/shape/index.js +19381 -0
- package/dist/tools/generated/shape/index.js.map +1 -0
- package/dist/tools/generated/sites/index.d.ts +8 -0
- package/dist/tools/generated/sites/index.d.ts.map +1 -0
- package/dist/tools/generated/sites/index.js +13160 -0
- package/dist/tools/generated/sites/index.js.map +1 -0
- package/dist/tools/generated/statistics/index.d.ts +8 -0
- package/dist/tools/generated/statistics/index.d.ts.map +1 -0
- package/dist/tools/generated/statistics/index.js +8131 -0
- package/dist/tools/generated/statistics/index.js.map +1 -0
- package/dist/tools/generated/support/index.d.ts +8 -0
- package/dist/tools/generated/support/index.d.ts.map +1 -0
- package/dist/tools/generated/support/index.js +5608 -0
- package/dist/tools/generated/support/index.js.map +1 -0
- package/dist/tools/generated/telemetry_and_insights/index.d.ts +8 -0
- package/dist/tools/generated/telemetry_and_insights/index.d.ts.map +1 -0
- package/dist/tools/generated/telemetry_and_insights/index.js +2404 -0
- package/dist/tools/generated/telemetry_and_insights/index.js.map +1 -0
- package/dist/tools/generated/tenant_and_identity/index.d.ts +8 -0
- package/dist/tools/generated/tenant_and_identity/index.d.ts.map +1 -0
- package/dist/tools/generated/tenant_and_identity/index.js +18938 -0
- package/dist/tools/generated/tenant_and_identity/index.js.map +1 -0
- package/dist/tools/generated/threat_campaign/index.d.ts +8 -0
- package/dist/tools/generated/threat_campaign/index.d.ts.map +1 -0
- package/dist/tools/generated/threat_campaign/index.js +102 -0
- package/dist/tools/generated/threat_campaign/index.js.map +1 -0
- package/dist/tools/generated/users/index.d.ts +8 -0
- package/dist/tools/generated/users/index.d.ts.map +1 -0
- package/dist/tools/generated/users/index.js +1515 -0
- package/dist/tools/generated/users/index.js.map +1 -0
- package/dist/tools/generated/virtual/index.d.ts +8 -0
- package/dist/tools/generated/virtual/index.d.ts.map +1 -0
- package/dist/tools/generated/virtual/index.js +11263 -0
- package/dist/tools/generated/virtual/index.js.map +1 -0
- package/dist/tools/generated/vpm_and_node_management/index.d.ts +8 -0
- package/dist/tools/generated/vpm_and_node_management/index.d.ts.map +1 -0
- package/dist/tools/generated/vpm_and_node_management/index.js +88 -0
- package/dist/tools/generated/vpm_and_node_management/index.js.map +1 -0
- package/dist/tools/generated/waf/index.d.ts +8 -0
- package/dist/tools/generated/waf/index.d.ts.map +1 -0
- package/dist/tools/generated/waf/index.js +4586 -0
- package/dist/tools/generated/waf/index.js.map +1 -0
- package/dist/tools/index.d.ts +7 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +6 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/registry.d.ts +27 -0
- package/dist/tools/registry.d.ts.map +1 -0
- package/dist/tools/registry.js +115 -0
- package/dist/tools/registry.js.map +1 -0
- package/dist/utils/error-handling.d.ts +109 -0
- package/dist/utils/error-handling.d.ts.map +1 -0
- package/dist/utils/error-handling.js +239 -0
- package/dist/utils/error-handling.js.map +1 -0
- package/dist/utils/index.d.ts +7 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +6 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/logging.d.ts +75 -0
- package/dist/utils/logging.d.ts.map +1 -0
- package/dist/utils/logging.js +131 -0
- package/dist/utils/logging.js.map +1 -0
- package/manifest.json +143 -0
- package/package.json +110 -0
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Example Normalization Transformer
|
|
3
|
+
*
|
|
4
|
+
* Normalizes example names in OpenAPI descriptions to follow
|
|
5
|
+
* the project's naming convention (using "example-" prefix).
|
|
6
|
+
*
|
|
7
|
+
* @deprecated Pre-enriched specs already have normalized examples.
|
|
8
|
+
* This module is only used by the deprecated parseSpecDirectory() function.
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* Pattern to match "my-" prefixed example names
|
|
12
|
+
* Matches whole words only to avoid partial replacements
|
|
13
|
+
*/
|
|
14
|
+
const MY_PREFIX_PATTERN = /\bmy-(\w+)/g;
|
|
15
|
+
/**
|
|
16
|
+
* Normalize examples in a description string
|
|
17
|
+
*
|
|
18
|
+
* Replaces "my-" prefixed example names with "example-" prefix
|
|
19
|
+
* to maintain consistent naming conventions throughout the codebase.
|
|
20
|
+
*
|
|
21
|
+
* @param description - The description text to normalize
|
|
22
|
+
* @returns Normalized description with "example-" prefixes
|
|
23
|
+
*
|
|
24
|
+
* @example
|
|
25
|
+
* ```typescript
|
|
26
|
+
* normalizeExamples("my-file, shared/my-file, my-ns/my-file")
|
|
27
|
+
* // Returns: "example-file, shared/example-file, example-ns/example-file"
|
|
28
|
+
*
|
|
29
|
+
* normalizeExamples("Use namespace 'my-namespace' with resource 'my-lb'")
|
|
30
|
+
* // Returns: "Use namespace 'example-namespace' with resource 'example-lb'"
|
|
31
|
+
* ```
|
|
32
|
+
* @deprecated Pre-enriched specs already have normalized examples
|
|
33
|
+
*/
|
|
34
|
+
export function normalizeExamples(description) {
|
|
35
|
+
if (!description) {
|
|
36
|
+
return description;
|
|
37
|
+
}
|
|
38
|
+
return description.replace(MY_PREFIX_PATTERN, "example-$1");
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Normalize examples in a parameter object
|
|
42
|
+
*
|
|
43
|
+
* Creates a new parameter object with normalized description
|
|
44
|
+
*
|
|
45
|
+
* @param param - The parameter object to normalize
|
|
46
|
+
* @returns New parameter object with normalized description
|
|
47
|
+
*/
|
|
48
|
+
export function normalizeParameterExamples(param) {
|
|
49
|
+
if (!param.description) {
|
|
50
|
+
return param;
|
|
51
|
+
}
|
|
52
|
+
return {
|
|
53
|
+
...param,
|
|
54
|
+
description: normalizeExamples(param.description),
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Check if a string contains "my-" prefixed examples
|
|
59
|
+
*
|
|
60
|
+
* @param text - Text to check
|
|
61
|
+
* @returns True if "my-" prefixed examples are found
|
|
62
|
+
*/
|
|
63
|
+
export function hasMyPrefixExamples(text) {
|
|
64
|
+
return MY_PREFIX_PATTERN.test(text);
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=normalize-examples.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"normalize-examples.js","sourceRoot":"","sources":["../../../src/generator/transformers/normalize-examples.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH;;;GAGG;AACH,MAAM,iBAAiB,GAAG,aAAa,CAAC;AAExC;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,iBAAiB,CAAC,WAAmB;IACnD,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO,WAAW,CAAC;IACrB,CAAC;IACD,OAAO,WAAW,CAAC,OAAO,CAAC,iBAAiB,EAAE,YAAY,CAAC,CAAC;AAC9D,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,0BAA0B,CAAqC,KAAQ;IACrF,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;QACvB,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO;QACL,GAAG,KAAK;QACR,WAAW,EAAE,iBAAiB,CAAC,KAAK,CAAC,WAAW,CAAC;KAClD,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAY;IAC9C,OAAO,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACtC,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* F5 Distributed Cloud API MCP Server
|
|
4
|
+
*
|
|
5
|
+
* Entry point for the MCP server that provides tools for interacting
|
|
6
|
+
* with F5 XC APIs via Model Context Protocol.
|
|
7
|
+
*
|
|
8
|
+
* Supports dual-mode operation:
|
|
9
|
+
* - Documentation mode: No credentials required - provides API documentation
|
|
10
|
+
* and Terraform examples
|
|
11
|
+
* - Execution mode: When F5XC credentials are provided, enables direct API calls
|
|
12
|
+
*
|
|
13
|
+
* Environment Variables:
|
|
14
|
+
* - F5XC_API_URL: Tenant URL (auto-normalized)
|
|
15
|
+
* - F5XC_API_TOKEN: API token for authentication
|
|
16
|
+
* - F5XC_P12_FILE: Path to P12 certificate file (alternative to token)
|
|
17
|
+
* - F5XC_P12_PASSWORD: Password for P12 certificate
|
|
18
|
+
* - F5XC_PROFILE: Profile name to use (default: F5XC_DEFAULT_PROFILE)
|
|
19
|
+
*/
|
|
20
|
+
/** Server version - synchronized with package.json */
|
|
21
|
+
export declare const VERSION = "0.1.0";
|
|
22
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;;;;;;;;GAiBG;AAKH,sDAAsD;AACtD,eAAO,MAAM,OAAO,UAAU,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* F5 Distributed Cloud API MCP Server
|
|
4
|
+
*
|
|
5
|
+
* Entry point for the MCP server that provides tools for interacting
|
|
6
|
+
* with F5 XC APIs via Model Context Protocol.
|
|
7
|
+
*
|
|
8
|
+
* Supports dual-mode operation:
|
|
9
|
+
* - Documentation mode: No credentials required - provides API documentation
|
|
10
|
+
* and Terraform examples
|
|
11
|
+
* - Execution mode: When F5XC credentials are provided, enables direct API calls
|
|
12
|
+
*
|
|
13
|
+
* Environment Variables:
|
|
14
|
+
* - F5XC_API_URL: Tenant URL (auto-normalized)
|
|
15
|
+
* - F5XC_API_TOKEN: API token for authentication
|
|
16
|
+
* - F5XC_P12_FILE: Path to P12 certificate file (alternative to token)
|
|
17
|
+
* - F5XC_P12_PASSWORD: Password for P12 certificate
|
|
18
|
+
* - F5XC_PROFILE: Profile name to use (default: F5XC_DEFAULT_PROFILE)
|
|
19
|
+
*/
|
|
20
|
+
import { createServer } from "./server.js";
|
|
21
|
+
import { logger } from "./utils/logging.js";
|
|
22
|
+
/** Server version - synchronized with package.json */
|
|
23
|
+
export const VERSION = "0.1.0";
|
|
24
|
+
/**
|
|
25
|
+
* Main entry point
|
|
26
|
+
*/
|
|
27
|
+
async function main() {
|
|
28
|
+
try {
|
|
29
|
+
// Get command-line arguments (skip node executable and script name)
|
|
30
|
+
const args = process.argv.slice(2);
|
|
31
|
+
// Handle version flag
|
|
32
|
+
if (args.includes("--version") || args.includes("-v")) {
|
|
33
|
+
console.log(`f5xc-api-mcp v${VERSION}\n`);
|
|
34
|
+
process.exit(0);
|
|
35
|
+
}
|
|
36
|
+
// Handle help flag
|
|
37
|
+
if (args.includes("--help") || args.includes("-h")) {
|
|
38
|
+
console.log(`F5 Distributed Cloud API MCP Server v${VERSION}
|
|
39
|
+
|
|
40
|
+
Usage: f5xc-api-mcp [options]
|
|
41
|
+
|
|
42
|
+
Options:
|
|
43
|
+
-v, --version Show version number
|
|
44
|
+
-h, --help Show help
|
|
45
|
+
|
|
46
|
+
Environment Variables:
|
|
47
|
+
F5XC_API_URL Tenant URL (e.g., https://tenant.console.ves.volterra.io)
|
|
48
|
+
F5XC_API_TOKEN API token for authentication
|
|
49
|
+
F5XC_P12_FILE Path to P12 certificate file (alternative to token)
|
|
50
|
+
F5XC_P12_PASSWORD Password for P12 certificate
|
|
51
|
+
F5XC_PROFILE Profile name to use
|
|
52
|
+
|
|
53
|
+
The server runs in documentation mode when no credentials are provided,
|
|
54
|
+
allowing exploration of the API without authentication.
|
|
55
|
+
`);
|
|
56
|
+
process.exit(0);
|
|
57
|
+
}
|
|
58
|
+
// Start MCP server (default behavior)
|
|
59
|
+
const server = createServer();
|
|
60
|
+
await server.start();
|
|
61
|
+
// Handle graceful shutdown
|
|
62
|
+
const shutdown = async (signal) => {
|
|
63
|
+
logger.info(`Received ${signal}, shutting down gracefully`);
|
|
64
|
+
await server.stop();
|
|
65
|
+
process.exit(0);
|
|
66
|
+
};
|
|
67
|
+
process.on("SIGINT", () => void shutdown("SIGINT"));
|
|
68
|
+
process.on("SIGTERM", () => void shutdown("SIGTERM"));
|
|
69
|
+
// Handle uncaught errors
|
|
70
|
+
process.on("uncaughtException", (error) => {
|
|
71
|
+
logger.error("Uncaught exception", {
|
|
72
|
+
error: error.message,
|
|
73
|
+
stack: error.stack,
|
|
74
|
+
});
|
|
75
|
+
process.exit(1);
|
|
76
|
+
});
|
|
77
|
+
process.on("unhandledRejection", (reason) => {
|
|
78
|
+
logger.error("Unhandled rejection", {
|
|
79
|
+
reason: reason instanceof Error ? reason.message : String(reason),
|
|
80
|
+
});
|
|
81
|
+
process.exit(1);
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
catch (error) {
|
|
85
|
+
logger.error("Failed to start server", {
|
|
86
|
+
error: error instanceof Error ? error.message : String(error),
|
|
87
|
+
});
|
|
88
|
+
process.exit(1);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
// Only run main when executed directly, not when imported (e.g., during tests)
|
|
92
|
+
const isMainModule = import.meta.url === `file://${process.argv[1]}` || process.argv[1]?.endsWith("f5xc-api-mcp");
|
|
93
|
+
if (isMainModule) {
|
|
94
|
+
main().catch((error) => {
|
|
95
|
+
logger.error("Fatal error", {
|
|
96
|
+
error: error instanceof Error ? error.message : String(error),
|
|
97
|
+
});
|
|
98
|
+
process.exit(1);
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Error Resolution Prompts (Phase B)
|
|
3
|
+
*
|
|
4
|
+
* Provides guided diagnosis and resolution workflows for common
|
|
5
|
+
* F5XC API errors. These prompts help users troubleshoot issues
|
|
6
|
+
* systematically with framework-specific guidance.
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* Error resolution prompt definition
|
|
10
|
+
*/
|
|
11
|
+
export interface ErrorPrompt {
|
|
12
|
+
/** HTTP status code */
|
|
13
|
+
code: number;
|
|
14
|
+
/** Error type name */
|
|
15
|
+
name: string;
|
|
16
|
+
/** Human-readable description */
|
|
17
|
+
description: string;
|
|
18
|
+
/** Prompt arguments */
|
|
19
|
+
arguments: ErrorPromptArgument[];
|
|
20
|
+
/** Prompt template */
|
|
21
|
+
template: string;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Error prompt argument
|
|
25
|
+
*/
|
|
26
|
+
export interface ErrorPromptArgument {
|
|
27
|
+
/** Argument name */
|
|
28
|
+
name: string;
|
|
29
|
+
/** Argument description */
|
|
30
|
+
description: string;
|
|
31
|
+
/** Whether argument is required */
|
|
32
|
+
required: boolean;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* 401 Unauthorized - Authentication Issues
|
|
36
|
+
*/
|
|
37
|
+
export declare const error401Prompt: ErrorPrompt;
|
|
38
|
+
/**
|
|
39
|
+
* 403 Forbidden - Authorization Issues
|
|
40
|
+
*/
|
|
41
|
+
export declare const error403Prompt: ErrorPrompt;
|
|
42
|
+
/**
|
|
43
|
+
* 404 Not Found - Resource Issues
|
|
44
|
+
*/
|
|
45
|
+
export declare const error404Prompt: ErrorPrompt;
|
|
46
|
+
/**
|
|
47
|
+
* 409 Conflict - Resource Conflict Issues
|
|
48
|
+
*/
|
|
49
|
+
export declare const error409Prompt: ErrorPrompt;
|
|
50
|
+
/**
|
|
51
|
+
* 500 Internal Server Error - Server Issues
|
|
52
|
+
*/
|
|
53
|
+
export declare const error500Prompt: ErrorPrompt;
|
|
54
|
+
/**
|
|
55
|
+
* All error resolution prompts
|
|
56
|
+
*/
|
|
57
|
+
export declare const ERROR_PROMPTS: ErrorPrompt[];
|
|
58
|
+
/**
|
|
59
|
+
* Get error prompt by HTTP status code
|
|
60
|
+
*/
|
|
61
|
+
export declare function getErrorPrompt(code: number): ErrorPrompt | undefined;
|
|
62
|
+
/**
|
|
63
|
+
* Get error prompt by name
|
|
64
|
+
*/
|
|
65
|
+
export declare function getErrorPromptByName(name: string): ErrorPrompt | undefined;
|
|
66
|
+
/**
|
|
67
|
+
* Process error prompt template with arguments
|
|
68
|
+
*/
|
|
69
|
+
export declare function processErrorTemplate(prompt: ErrorPrompt, args: Record<string, string>): string;
|
|
70
|
+
//# sourceMappingURL=error-resolution.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error-resolution.d.ts","sourceRoot":"","sources":["../../src/prompts/error-resolution.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,uBAAuB;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,sBAAsB;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,iCAAiC;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,uBAAuB;IACvB,SAAS,EAAE,mBAAmB,EAAE,CAAC;IACjC,sBAAsB;IACtB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,oBAAoB;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,2BAA2B;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,mCAAmC;IACnC,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,WAoD5B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,WA2D5B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,WAyD5B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,WA2D5B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,WA8D5B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,WAAW,EAMtC,CAAC;AAEF;;GAEG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS,CAEpE;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS,CAE1E;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAS9F"}
|
|
@@ -0,0 +1,350 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Error Resolution Prompts (Phase B)
|
|
3
|
+
*
|
|
4
|
+
* Provides guided diagnosis and resolution workflows for common
|
|
5
|
+
* F5XC API errors. These prompts help users troubleshoot issues
|
|
6
|
+
* systematically with framework-specific guidance.
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* 401 Unauthorized - Authentication Issues
|
|
10
|
+
*/
|
|
11
|
+
export const error401Prompt = {
|
|
12
|
+
code: 401,
|
|
13
|
+
name: "resolve-401-unauthorized",
|
|
14
|
+
description: "Diagnose and resolve authentication failures (401 Unauthorized)",
|
|
15
|
+
arguments: [
|
|
16
|
+
{
|
|
17
|
+
name: "operation",
|
|
18
|
+
description: "The API operation that failed (e.g., 'create http-loadbalancer')",
|
|
19
|
+
required: false,
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
name: "error_message",
|
|
23
|
+
description: "The specific error message received",
|
|
24
|
+
required: false,
|
|
25
|
+
},
|
|
26
|
+
],
|
|
27
|
+
template: `# 401 Unauthorized - Authentication Resolution
|
|
28
|
+
|
|
29
|
+
## Common Causes
|
|
30
|
+
1. **Missing API Token**: F5XC_API_TOKEN environment variable not set
|
|
31
|
+
2. **Expired Token**: API token has expired and needs regeneration
|
|
32
|
+
3. **Invalid Token**: Token was revoked or is malformed
|
|
33
|
+
4. **Wrong Tenant**: Token is for a different F5XC tenant
|
|
34
|
+
|
|
35
|
+
## Diagnosis Steps
|
|
36
|
+
|
|
37
|
+
### Step 1: Verify Token Configuration
|
|
38
|
+
Check if the API token is properly configured:
|
|
39
|
+
- Environment variable: F5XC_API_TOKEN
|
|
40
|
+
- Tenant URL: F5XC_API_URL
|
|
41
|
+
|
|
42
|
+
### Step 2: Validate Token
|
|
43
|
+
Use f5xc-api-server-info to check authentication status.
|
|
44
|
+
If not authenticated, the token needs to be set or refreshed.
|
|
45
|
+
|
|
46
|
+
### Step 3: Token Regeneration
|
|
47
|
+
If the token is expired:
|
|
48
|
+
1. Log into F5 Distributed Cloud Console
|
|
49
|
+
2. Navigate to Account Settings → Credentials
|
|
50
|
+
3. Generate a new API Token
|
|
51
|
+
4. Set F5XC_API_TOKEN with the new value
|
|
52
|
+
|
|
53
|
+
## Related Tools
|
|
54
|
+
- f5xc-api-server-info: Check current authentication status
|
|
55
|
+
- f5xc-api-search-tools: Find authentication-related operations
|
|
56
|
+
|
|
57
|
+
## Resolution Checklist
|
|
58
|
+
- [ ] Verify F5XC_API_TOKEN is set
|
|
59
|
+
- [ ] Verify F5XC_API_URL points to correct tenant
|
|
60
|
+
- [ ] Check token expiration in Console
|
|
61
|
+
- [ ] Regenerate token if needed
|
|
62
|
+
`,
|
|
63
|
+
};
|
|
64
|
+
/**
|
|
65
|
+
* 403 Forbidden - Authorization Issues
|
|
66
|
+
*/
|
|
67
|
+
export const error403Prompt = {
|
|
68
|
+
code: 403,
|
|
69
|
+
name: "resolve-403-forbidden",
|
|
70
|
+
description: "Diagnose and resolve authorization failures (403 Forbidden)",
|
|
71
|
+
arguments: [
|
|
72
|
+
{
|
|
73
|
+
name: "operation",
|
|
74
|
+
description: "The API operation that failed",
|
|
75
|
+
required: false,
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
name: "namespace",
|
|
79
|
+
description: "The namespace where the operation was attempted",
|
|
80
|
+
required: false,
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
name: "resource",
|
|
84
|
+
description: "The resource type being accessed",
|
|
85
|
+
required: false,
|
|
86
|
+
},
|
|
87
|
+
],
|
|
88
|
+
template: `# 403 Forbidden - Authorization Resolution
|
|
89
|
+
|
|
90
|
+
## Common Causes
|
|
91
|
+
1. **Insufficient Permissions**: User lacks RBAC permissions for this operation
|
|
92
|
+
2. **Namespace Restrictions**: User cannot access resources in this namespace
|
|
93
|
+
3. **Resource-Level Policies**: Resource has access restrictions
|
|
94
|
+
4. **Subscription Required**: Operation requires an addon service subscription
|
|
95
|
+
|
|
96
|
+
## Diagnosis Steps
|
|
97
|
+
|
|
98
|
+
### Step 1: Check User Roles
|
|
99
|
+
Verify your user account has appropriate roles:
|
|
100
|
+
- Namespace Admin: Full access within namespace
|
|
101
|
+
- Tenant Admin: Full access across tenant
|
|
102
|
+
- Custom roles: Check specific permissions
|
|
103
|
+
|
|
104
|
+
### Step 2: Verify Namespace Access
|
|
105
|
+
Ensure you have access to the target namespace.
|
|
106
|
+
Use f5xc-api-search-tools with query "namespace" to find namespace operations.
|
|
107
|
+
|
|
108
|
+
### Step 3: Check Subscription Requirements
|
|
109
|
+
Some features require addon subscriptions:
|
|
110
|
+
- WAAP Advanced features
|
|
111
|
+
- Bot Defense
|
|
112
|
+
- API Security
|
|
113
|
+
|
|
114
|
+
Use f5xc-api-dependencies with action="subscriptions" to check requirements.
|
|
115
|
+
|
|
116
|
+
## Related Tools
|
|
117
|
+
- f5xc-api-dependencies: Check subscription requirements
|
|
118
|
+
- f5xc-api-search-tools: Find user/role operations
|
|
119
|
+
|
|
120
|
+
## Resolution Checklist
|
|
121
|
+
- [ ] Verify user role includes required permissions
|
|
122
|
+
- [ ] Confirm namespace access is granted
|
|
123
|
+
- [ ] Check if addon subscription is required
|
|
124
|
+
- [ ] Contact tenant admin if permissions needed
|
|
125
|
+
`,
|
|
126
|
+
};
|
|
127
|
+
/**
|
|
128
|
+
* 404 Not Found - Resource Issues
|
|
129
|
+
*/
|
|
130
|
+
export const error404Prompt = {
|
|
131
|
+
code: 404,
|
|
132
|
+
name: "resolve-404-not-found",
|
|
133
|
+
description: "Diagnose and resolve resource not found errors (404 Not Found)",
|
|
134
|
+
arguments: [
|
|
135
|
+
{
|
|
136
|
+
name: "resource_type",
|
|
137
|
+
description: "The type of resource (e.g., 'http-loadbalancer')",
|
|
138
|
+
required: false,
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
name: "resource_name",
|
|
142
|
+
description: "The name of the missing resource",
|
|
143
|
+
required: false,
|
|
144
|
+
},
|
|
145
|
+
{
|
|
146
|
+
name: "namespace",
|
|
147
|
+
description: "The namespace being searched",
|
|
148
|
+
required: false,
|
|
149
|
+
},
|
|
150
|
+
],
|
|
151
|
+
template: `# 404 Not Found - Resource Resolution
|
|
152
|
+
|
|
153
|
+
## Common Causes
|
|
154
|
+
1. **Resource Doesn't Exist**: The specified resource hasn't been created
|
|
155
|
+
2. **Wrong Namespace**: Resource exists in a different namespace
|
|
156
|
+
3. **Typo in Name**: Resource name is misspelled
|
|
157
|
+
4. **Deleted Resource**: Resource was previously deleted
|
|
158
|
+
5. **Wrong Domain**: Using incorrect API domain for this resource type
|
|
159
|
+
|
|
160
|
+
## Diagnosis Steps
|
|
161
|
+
|
|
162
|
+
### Step 1: Verify Resource Exists
|
|
163
|
+
Use the list operation to check if the resource exists:
|
|
164
|
+
- Search for list operations: f5xc-api-search-tools with query "list [resource_type]"
|
|
165
|
+
- Execute list in the target namespace
|
|
166
|
+
|
|
167
|
+
### Step 2: Check Other Namespaces
|
|
168
|
+
The resource might exist in a different namespace:
|
|
169
|
+
- List all namespaces
|
|
170
|
+
- Search for resource in each namespace
|
|
171
|
+
|
|
172
|
+
### Step 3: Verify Resource Type
|
|
173
|
+
Ensure you're using the correct resource type and API domain:
|
|
174
|
+
- Use f5xc-api-search-resources to find the correct resource
|
|
175
|
+
- Check domain matches (e.g., 'virtual' for load balancers)
|
|
176
|
+
|
|
177
|
+
## Related Tools
|
|
178
|
+
- f5xc-api-search-resources: Find resources by name
|
|
179
|
+
- f5xc-api-search-tools: Find list operations
|
|
180
|
+
|
|
181
|
+
## Resolution Checklist
|
|
182
|
+
- [ ] Verify resource name spelling
|
|
183
|
+
- [ ] Check correct namespace is specified
|
|
184
|
+
- [ ] Use list operation to find existing resources
|
|
185
|
+
- [ ] Create resource if it doesn't exist
|
|
186
|
+
`,
|
|
187
|
+
};
|
|
188
|
+
/**
|
|
189
|
+
* 409 Conflict - Resource Conflict Issues
|
|
190
|
+
*/
|
|
191
|
+
export const error409Prompt = {
|
|
192
|
+
code: 409,
|
|
193
|
+
name: "resolve-409-conflict",
|
|
194
|
+
description: "Diagnose and resolve resource conflict errors (409 Conflict)",
|
|
195
|
+
arguments: [
|
|
196
|
+
{
|
|
197
|
+
name: "resource_type",
|
|
198
|
+
description: "The type of resource involved",
|
|
199
|
+
required: false,
|
|
200
|
+
},
|
|
201
|
+
{
|
|
202
|
+
name: "resource_name",
|
|
203
|
+
description: "The name of the conflicting resource",
|
|
204
|
+
required: false,
|
|
205
|
+
},
|
|
206
|
+
{
|
|
207
|
+
name: "operation",
|
|
208
|
+
description: "The operation attempted (create/update/delete)",
|
|
209
|
+
required: false,
|
|
210
|
+
},
|
|
211
|
+
],
|
|
212
|
+
template: `# 409 Conflict - Resource Conflict Resolution
|
|
213
|
+
|
|
214
|
+
## Common Causes
|
|
215
|
+
1. **Duplicate Name**: Resource with same name already exists
|
|
216
|
+
2. **Version Conflict**: Resource was modified by another operation
|
|
217
|
+
3. **State Conflict**: Resource is in a transitional state
|
|
218
|
+
4. **Dependency Conflict**: Operation conflicts with dependent resources
|
|
219
|
+
5. **Concurrent Modification**: Race condition with another update
|
|
220
|
+
|
|
221
|
+
## Diagnosis Steps
|
|
222
|
+
|
|
223
|
+
### Step 1: Check for Existing Resource
|
|
224
|
+
Use get/list operations to check current resource state:
|
|
225
|
+
- If creating: resource may already exist
|
|
226
|
+
- If updating: resource may have been modified
|
|
227
|
+
|
|
228
|
+
### Step 2: Check Resource Dependencies
|
|
229
|
+
Use f5xc-api-dependencies to understand relationships:
|
|
230
|
+
- Check what depends on this resource
|
|
231
|
+
- Check what this resource depends on
|
|
232
|
+
|
|
233
|
+
### Step 3: Handle Version Conflicts
|
|
234
|
+
For update operations:
|
|
235
|
+
- Fetch latest version of resource
|
|
236
|
+
- Apply changes to fresh copy
|
|
237
|
+
- Retry update with current version
|
|
238
|
+
|
|
239
|
+
## Related Tools
|
|
240
|
+
- f5xc-api-dependencies: Check resource relationships
|
|
241
|
+
- f5xc-api-describe-tool: Get full schema for retry
|
|
242
|
+
|
|
243
|
+
## Resolution Checklist
|
|
244
|
+
- [ ] Check if resource already exists (for creates)
|
|
245
|
+
- [ ] Fetch latest resource version (for updates)
|
|
246
|
+
- [ ] Wait for transitional states to complete
|
|
247
|
+
- [ ] Resolve dependency conflicts first
|
|
248
|
+
- [ ] Retry operation with fresh data
|
|
249
|
+
`,
|
|
250
|
+
};
|
|
251
|
+
/**
|
|
252
|
+
* 500 Internal Server Error - Server Issues
|
|
253
|
+
*/
|
|
254
|
+
export const error500Prompt = {
|
|
255
|
+
code: 500,
|
|
256
|
+
name: "resolve-500-internal-error",
|
|
257
|
+
description: "Diagnose and handle internal server errors (500 Internal Server Error)",
|
|
258
|
+
arguments: [
|
|
259
|
+
{
|
|
260
|
+
name: "operation",
|
|
261
|
+
description: "The operation that triggered the error",
|
|
262
|
+
required: false,
|
|
263
|
+
},
|
|
264
|
+
{
|
|
265
|
+
name: "error_message",
|
|
266
|
+
description: "Any specific error message received",
|
|
267
|
+
required: false,
|
|
268
|
+
},
|
|
269
|
+
],
|
|
270
|
+
template: `# 500 Internal Server Error - Resolution Guide
|
|
271
|
+
|
|
272
|
+
## Common Causes
|
|
273
|
+
1. **Transient Service Issue**: Temporary backend problem
|
|
274
|
+
2. **Invalid Request Body**: Malformed or invalid request data
|
|
275
|
+
3. **Backend Timeout**: Long-running operation timed out
|
|
276
|
+
4. **Service Maintenance**: Planned or unplanned maintenance
|
|
277
|
+
5. **Rate Limiting**: Too many requests in short period
|
|
278
|
+
|
|
279
|
+
## Diagnosis Steps
|
|
280
|
+
|
|
281
|
+
### Step 1: Validate Request
|
|
282
|
+
Check if request body is valid:
|
|
283
|
+
- Use f5xc-api-describe-tool to verify parameter requirements
|
|
284
|
+
- Check required fields and formats
|
|
285
|
+
- Validate JSON structure
|
|
286
|
+
|
|
287
|
+
### Step 2: Retry with Exponential Backoff
|
|
288
|
+
For transient issues:
|
|
289
|
+
- Wait 1 second, retry
|
|
290
|
+
- If fails, wait 2 seconds, retry
|
|
291
|
+
- Continue doubling wait time (max 30 seconds)
|
|
292
|
+
|
|
293
|
+
### Step 3: Simplify Operation
|
|
294
|
+
Try breaking complex operations into simpler steps:
|
|
295
|
+
- Create dependencies separately
|
|
296
|
+
- Reduce request complexity
|
|
297
|
+
- Check for optional fields causing issues
|
|
298
|
+
|
|
299
|
+
### Step 4: Check Service Status
|
|
300
|
+
If errors persist:
|
|
301
|
+
- Check F5 Distributed Cloud status page
|
|
302
|
+
- Review system announcements
|
|
303
|
+
- Contact F5 support if widespread issue
|
|
304
|
+
|
|
305
|
+
## Related Tools
|
|
306
|
+
- f5xc-api-describe-tool: Validate request schema
|
|
307
|
+
- f5xc-api-dependencies: Check prerequisites
|
|
308
|
+
|
|
309
|
+
## Resolution Checklist
|
|
310
|
+
- [ ] Validate request body against schema
|
|
311
|
+
- [ ] Retry with exponential backoff
|
|
312
|
+
- [ ] Simplify request if complex
|
|
313
|
+
- [ ] Check F5 service status
|
|
314
|
+
- [ ] Contact support if persistent
|
|
315
|
+
`,
|
|
316
|
+
};
|
|
317
|
+
/**
|
|
318
|
+
* All error resolution prompts
|
|
319
|
+
*/
|
|
320
|
+
export const ERROR_PROMPTS = [
|
|
321
|
+
error401Prompt,
|
|
322
|
+
error403Prompt,
|
|
323
|
+
error404Prompt,
|
|
324
|
+
error409Prompt,
|
|
325
|
+
error500Prompt,
|
|
326
|
+
];
|
|
327
|
+
/**
|
|
328
|
+
* Get error prompt by HTTP status code
|
|
329
|
+
*/
|
|
330
|
+
export function getErrorPrompt(code) {
|
|
331
|
+
return ERROR_PROMPTS.find((p) => p.code === code);
|
|
332
|
+
}
|
|
333
|
+
/**
|
|
334
|
+
* Get error prompt by name
|
|
335
|
+
*/
|
|
336
|
+
export function getErrorPromptByName(name) {
|
|
337
|
+
return ERROR_PROMPTS.find((p) => p.name === name);
|
|
338
|
+
}
|
|
339
|
+
/**
|
|
340
|
+
* Process error prompt template with arguments
|
|
341
|
+
*/
|
|
342
|
+
export function processErrorTemplate(prompt, args) {
|
|
343
|
+
let processed = prompt.template;
|
|
344
|
+
for (const [key, value] of Object.entries(args)) {
|
|
345
|
+
const placeholder = new RegExp(`\\{\\{${key}\\}\\}`, "g");
|
|
346
|
+
processed = processed.replace(placeholder, value || `[${key}]`);
|
|
347
|
+
}
|
|
348
|
+
return processed;
|
|
349
|
+
}
|
|
350
|
+
//# sourceMappingURL=error-resolution.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error-resolution.js","sourceRoot":"","sources":["../../src/prompts/error-resolution.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Prompts Module - Export all prompt utilities
|
|
3
|
+
*/
|
|
4
|
+
export { WORKFLOW_PROMPTS, getWorkflowPrompt, processPromptTemplate, deployHttpLoadBalancerPrompt, configureWafPrompt, createMultiCloudSitePrompt, generateTerraformPrompt, } from "./workflows.js";
|
|
5
|
+
export type { WorkflowPrompt, WorkflowArgument } from "./workflows.js";
|
|
6
|
+
export { ERROR_PROMPTS, getErrorPrompt, getErrorPromptByName, processErrorTemplate, error401Prompt, error403Prompt, error404Prompt, error409Prompt, error500Prompt, } from "./error-resolution.js";
|
|
7
|
+
export type { ErrorPrompt, ErrorPromptArgument } from "./error-resolution.js";
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/prompts/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,qBAAqB,EACrB,4BAA4B,EAC5B,kBAAkB,EAClB,0BAA0B,EAC1B,uBAAuB,GACxB,MAAM,gBAAgB,CAAC;AAExB,YAAY,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAGvE,OAAO,EACL,aAAa,EACb,cAAc,EACd,oBAAoB,EACpB,oBAAoB,EACpB,cAAc,EACd,cAAc,EACd,cAAc,EACd,cAAc,EACd,cAAc,GACf,MAAM,uBAAuB,CAAC;AAE/B,YAAY,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Prompts Module - Export all prompt utilities
|
|
3
|
+
*/
|
|
4
|
+
export { WORKFLOW_PROMPTS, getWorkflowPrompt, processPromptTemplate, deployHttpLoadBalancerPrompt, configureWafPrompt, createMultiCloudSitePrompt, generateTerraformPrompt, } from "./workflows.js";
|
|
5
|
+
// Phase B: Error resolution prompts
|
|
6
|
+
export { ERROR_PROMPTS, getErrorPrompt, getErrorPromptByName, processErrorTemplate, error401Prompt, error403Prompt, error404Prompt, error409Prompt, error500Prompt, } from "./error-resolution.js";
|
|
7
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/prompts/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,qBAAqB,EACrB,4BAA4B,EAC5B,kBAAkB,EAClB,0BAA0B,EAC1B,uBAAuB,GACxB,MAAM,gBAAgB,CAAC;AAIxB,oCAAoC;AACpC,OAAO,EACL,aAAa,EACb,cAAc,EACd,oBAAoB,EACpB,oBAAoB,EACpB,cAAc,EACd,cAAc,EACd,cAAc,EACd,cAAc,EACd,cAAc,GACf,MAAM,uBAAuB,CAAC"}
|