@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.
Files changed (329) hide show
  1. package/CHANGELOG.md +74 -0
  2. package/README.md +415 -0
  3. package/dist/auth/credential-manager.d.ts +151 -0
  4. package/dist/auth/credential-manager.d.ts.map +1 -0
  5. package/dist/auth/credential-manager.js +330 -0
  6. package/dist/auth/credential-manager.js.map +1 -0
  7. package/dist/auth/http-client.d.ts +81 -0
  8. package/dist/auth/http-client.d.ts.map +1 -0
  9. package/dist/auth/http-client.js +197 -0
  10. package/dist/auth/http-client.js.map +1 -0
  11. package/dist/auth/index.d.ts +8 -0
  12. package/dist/auth/index.d.ts.map +1 -0
  13. package/dist/auth/index.js +6 -0
  14. package/dist/auth/index.js.map +1 -0
  15. package/dist/config/config-manager.d.ts +72 -0
  16. package/dist/config/config-manager.d.ts.map +1 -0
  17. package/dist/config/config-manager.js +247 -0
  18. package/dist/config/config-manager.js.map +1 -0
  19. package/dist/config/index.d.ts +7 -0
  20. package/dist/config/index.d.ts.map +1 -0
  21. package/dist/config/index.js +7 -0
  22. package/dist/config/index.js.map +1 -0
  23. package/dist/config/schema.d.ts +74 -0
  24. package/dist/config/schema.d.ts.map +1 -0
  25. package/dist/config/schema.js +75 -0
  26. package/dist/config/schema.js.map +1 -0
  27. package/dist/config/types.d.ts +77 -0
  28. package/dist/config/types.d.ts.map +1 -0
  29. package/dist/config/types.js +31 -0
  30. package/dist/config/types.js.map +1 -0
  31. package/dist/generator/dependency-extractor.d.ts +103 -0
  32. package/dist/generator/dependency-extractor.d.ts.map +1 -0
  33. package/dist/generator/dependency-extractor.js +473 -0
  34. package/dist/generator/dependency-extractor.js.map +1 -0
  35. package/dist/generator/dependency-graph.d.ts +67 -0
  36. package/dist/generator/dependency-graph.d.ts.map +1 -0
  37. package/dist/generator/dependency-graph.js +330 -0
  38. package/dist/generator/dependency-graph.js.map +1 -0
  39. package/dist/generator/dependency-types.d.ts +206 -0
  40. package/dist/generator/dependency-types.d.ts.map +1 -0
  41. package/dist/generator/dependency-types.js +37 -0
  42. package/dist/generator/dependency-types.js.map +1 -0
  43. package/dist/generator/index.d.ts +7 -0
  44. package/dist/generator/index.d.ts.map +1 -0
  45. package/dist/generator/index.js +7 -0
  46. package/dist/generator/index.js.map +1 -0
  47. package/dist/generator/naming/acronyms.d.ts +81 -0
  48. package/dist/generator/naming/acronyms.d.ts.map +1 -0
  49. package/dist/generator/naming/acronyms.js +253 -0
  50. package/dist/generator/naming/acronyms.js.map +1 -0
  51. package/dist/generator/naming/index.d.ts +6 -0
  52. package/dist/generator/naming/index.d.ts.map +1 -0
  53. package/dist/generator/naming/index.js +6 -0
  54. package/dist/generator/naming/index.js.map +1 -0
  55. package/dist/generator/naming/volterra-mapping.d.ts +102 -0
  56. package/dist/generator/naming/volterra-mapping.d.ts.map +1 -0
  57. package/dist/generator/naming/volterra-mapping.js +259 -0
  58. package/dist/generator/naming/volterra-mapping.js.map +1 -0
  59. package/dist/generator/openapi-parser.d.ts +701 -0
  60. package/dist/generator/openapi-parser.d.ts.map +1 -0
  61. package/dist/generator/openapi-parser.js +704 -0
  62. package/dist/generator/openapi-parser.js.map +1 -0
  63. package/dist/generator/tool-generator.d.ts +118 -0
  64. package/dist/generator/tool-generator.d.ts.map +1 -0
  65. package/dist/generator/tool-generator.js +529 -0
  66. package/dist/generator/tool-generator.js.map +1 -0
  67. package/dist/generator/transformers/index.d.ts +7 -0
  68. package/dist/generator/transformers/index.d.ts.map +1 -0
  69. package/dist/generator/transformers/index.js +7 -0
  70. package/dist/generator/transformers/index.js.map +1 -0
  71. package/dist/generator/transformers/normalize-examples.d.ts +48 -0
  72. package/dist/generator/transformers/normalize-examples.d.ts.map +1 -0
  73. package/dist/generator/transformers/normalize-examples.js +66 -0
  74. package/dist/generator/transformers/normalize-examples.js.map +1 -0
  75. package/dist/index.d.ts +22 -0
  76. package/dist/index.d.ts.map +1 -0
  77. package/dist/index.js +101 -0
  78. package/dist/index.js.map +1 -0
  79. package/dist/prompts/error-resolution.d.ts +70 -0
  80. package/dist/prompts/error-resolution.d.ts.map +1 -0
  81. package/dist/prompts/error-resolution.js +350 -0
  82. package/dist/prompts/error-resolution.js.map +1 -0
  83. package/dist/prompts/index.d.ts +8 -0
  84. package/dist/prompts/index.d.ts.map +1 -0
  85. package/dist/prompts/index.js +7 -0
  86. package/dist/prompts/index.js.map +1 -0
  87. package/dist/prompts/workflows.d.ts +59 -0
  88. package/dist/prompts/workflows.d.ts.map +1 -0
  89. package/dist/prompts/workflows.js +441 -0
  90. package/dist/prompts/workflows.js.map +1 -0
  91. package/dist/resources/handlers.d.ts +70 -0
  92. package/dist/resources/handlers.d.ts.map +1 -0
  93. package/dist/resources/handlers.js +270 -0
  94. package/dist/resources/handlers.js.map +1 -0
  95. package/dist/resources/index.d.ts +8 -0
  96. package/dist/resources/index.d.ts.map +1 -0
  97. package/dist/resources/index.js +6 -0
  98. package/dist/resources/index.js.map +1 -0
  99. package/dist/resources/templates.d.ts +86 -0
  100. package/dist/resources/templates.d.ts.map +1 -0
  101. package/dist/resources/templates.js +248 -0
  102. package/dist/resources/templates.js.map +1 -0
  103. package/dist/server.d.ts +78 -0
  104. package/dist/server.d.ts.map +1 -0
  105. package/dist/server.js +721 -0
  106. package/dist/server.js.map +1 -0
  107. package/dist/tools/discovery/best-practices.d.ts +140 -0
  108. package/dist/tools/discovery/best-practices.d.ts.map +1 -0
  109. package/dist/tools/discovery/best-practices.js +499 -0
  110. package/dist/tools/discovery/best-practices.js.map +1 -0
  111. package/dist/tools/discovery/consolidate.d.ts +97 -0
  112. package/dist/tools/discovery/consolidate.d.ts.map +1 -0
  113. package/dist/tools/discovery/consolidate.js +200 -0
  114. package/dist/tools/discovery/consolidate.js.map +1 -0
  115. package/dist/tools/discovery/cost-estimator.d.ts +114 -0
  116. package/dist/tools/discovery/cost-estimator.d.ts.map +1 -0
  117. package/dist/tools/discovery/cost-estimator.js +273 -0
  118. package/dist/tools/discovery/cost-estimator.js.map +1 -0
  119. package/dist/tools/discovery/dependencies.d.ts +113 -0
  120. package/dist/tools/discovery/dependencies.d.ts.map +1 -0
  121. package/dist/tools/discovery/dependencies.js +258 -0
  122. package/dist/tools/discovery/dependencies.js.map +1 -0
  123. package/dist/tools/discovery/describe.d.ts +133 -0
  124. package/dist/tools/discovery/describe.d.ts.map +1 -0
  125. package/dist/tools/discovery/describe.js +208 -0
  126. package/dist/tools/discovery/describe.js.map +1 -0
  127. package/dist/tools/discovery/execute.d.ts +96 -0
  128. package/dist/tools/discovery/execute.d.ts.map +1 -0
  129. package/dist/tools/discovery/execute.js +220 -0
  130. package/dist/tools/discovery/execute.js.map +1 -0
  131. package/dist/tools/discovery/index-loader.d.ts +28 -0
  132. package/dist/tools/discovery/index-loader.d.ts.map +1 -0
  133. package/dist/tools/discovery/index-loader.js +72 -0
  134. package/dist/tools/discovery/index-loader.js.map +1 -0
  135. package/dist/tools/discovery/index.d.ts +363 -0
  136. package/dist/tools/discovery/index.d.ts.map +1 -0
  137. package/dist/tools/discovery/index.js +361 -0
  138. package/dist/tools/discovery/index.js.map +1 -0
  139. package/dist/tools/discovery/resolver.d.ts +119 -0
  140. package/dist/tools/discovery/resolver.d.ts.map +1 -0
  141. package/dist/tools/discovery/resolver.js +369 -0
  142. package/dist/tools/discovery/resolver.js.map +1 -0
  143. package/dist/tools/discovery/search.d.ts +41 -0
  144. package/dist/tools/discovery/search.d.ts.map +1 -0
  145. package/dist/tools/discovery/search.js +176 -0
  146. package/dist/tools/discovery/search.js.map +1 -0
  147. package/dist/tools/discovery/types.d.ts +91 -0
  148. package/dist/tools/discovery/types.d.ts.map +1 -0
  149. package/dist/tools/discovery/types.js +9 -0
  150. package/dist/tools/discovery/types.js.map +1 -0
  151. package/dist/tools/discovery/validate.d.ts +63 -0
  152. package/dist/tools/discovery/validate.d.ts.map +1 -0
  153. package/dist/tools/discovery/validate.js +239 -0
  154. package/dist/tools/discovery/validate.js.map +1 -0
  155. package/dist/tools/generated/admin_console_and_ui/index.d.ts +8 -0
  156. package/dist/tools/generated/admin_console_and_ui/index.d.ts.map +1 -0
  157. package/dist/tools/generated/admin_console_and_ui/index.js +265 -0
  158. package/dist/tools/generated/admin_console_and_ui/index.js.map +1 -0
  159. package/dist/tools/generated/api/index.d.ts +8 -0
  160. package/dist/tools/generated/api/index.d.ts.map +1 -0
  161. package/dist/tools/generated/api/index.js +7016 -0
  162. package/dist/tools/generated/api/index.js.map +1 -0
  163. package/dist/tools/generated/authentication/index.d.ts +8 -0
  164. package/dist/tools/generated/authentication/index.d.ts.map +1 -0
  165. package/dist/tools/generated/authentication/index.js +907 -0
  166. package/dist/tools/generated/authentication/index.js.map +1 -0
  167. package/dist/tools/generated/bigip/index.d.ts +8 -0
  168. package/dist/tools/generated/bigip/index.d.ts.map +1 -0
  169. package/dist/tools/generated/bigip/index.js +3152 -0
  170. package/dist/tools/generated/bigip/index.js.map +1 -0
  171. package/dist/tools/generated/billing_and_usage/index.d.ts +8 -0
  172. package/dist/tools/generated/billing_and_usage/index.d.ts.map +1 -0
  173. package/dist/tools/generated/billing_and_usage/index.js +2452 -0
  174. package/dist/tools/generated/billing_and_usage/index.js.map +1 -0
  175. package/dist/tools/generated/blindfold/index.d.ts +8 -0
  176. package/dist/tools/generated/blindfold/index.d.ts.map +1 -0
  177. package/dist/tools/generated/blindfold/index.js +3790 -0
  178. package/dist/tools/generated/blindfold/index.js.map +1 -0
  179. package/dist/tools/generated/bot_and_threat_defense/index.d.ts +8 -0
  180. package/dist/tools/generated/bot_and_threat_defense/index.d.ts.map +1 -0
  181. package/dist/tools/generated/bot_and_threat_defense/index.js +2746 -0
  182. package/dist/tools/generated/bot_and_threat_defense/index.js.map +1 -0
  183. package/dist/tools/generated/cdn/index.d.ts +8 -0
  184. package/dist/tools/generated/cdn/index.d.ts.map +1 -0
  185. package/dist/tools/generated/cdn/index.js +2686 -0
  186. package/dist/tools/generated/cdn/index.js.map +1 -0
  187. package/dist/tools/generated/ce_management/index.d.ts +8 -0
  188. package/dist/tools/generated/ce_management/index.d.ts.map +1 -0
  189. package/dist/tools/generated/ce_management/index.js +3812 -0
  190. package/dist/tools/generated/ce_management/index.js.map +1 -0
  191. package/dist/tools/generated/certificates/index.d.ts +8 -0
  192. package/dist/tools/generated/certificates/index.d.ts.map +1 -0
  193. package/dist/tools/generated/certificates/index.js +2547 -0
  194. package/dist/tools/generated/certificates/index.js.map +1 -0
  195. package/dist/tools/generated/cloud_infrastructure/index.d.ts +8 -0
  196. package/dist/tools/generated/cloud_infrastructure/index.d.ts.map +1 -0
  197. package/dist/tools/generated/cloud_infrastructure/index.js +3959 -0
  198. package/dist/tools/generated/cloud_infrastructure/index.js.map +1 -0
  199. package/dist/tools/generated/container_services/index.d.ts +8 -0
  200. package/dist/tools/generated/container_services/index.d.ts.map +1 -0
  201. package/dist/tools/generated/container_services/index.js +2018 -0
  202. package/dist/tools/generated/container_services/index.js.map +1 -0
  203. package/dist/tools/generated/data_and_privacy_security/index.d.ts +8 -0
  204. package/dist/tools/generated/data_and_privacy_security/index.d.ts.map +1 -0
  205. package/dist/tools/generated/data_and_privacy_security/index.js +1662 -0
  206. package/dist/tools/generated/data_and_privacy_security/index.js.map +1 -0
  207. package/dist/tools/generated/data_intelligence/index.d.ts +8 -0
  208. package/dist/tools/generated/data_intelligence/index.d.ts.map +1 -0
  209. package/dist/tools/generated/data_intelligence/index.js +1600 -0
  210. package/dist/tools/generated/data_intelligence/index.js.map +1 -0
  211. package/dist/tools/generated/ddos/index.d.ts +8 -0
  212. package/dist/tools/generated/ddos/index.d.ts.map +1 -0
  213. package/dist/tools/generated/ddos/index.js +8091 -0
  214. package/dist/tools/generated/ddos/index.js.map +1 -0
  215. package/dist/tools/generated/dependency-graph.json +26358 -0
  216. package/dist/tools/generated/dns/index.d.ts +8 -0
  217. package/dist/tools/generated/dns/index.d.ts.map +1 -0
  218. package/dist/tools/generated/dns/index.js +6096 -0
  219. package/dist/tools/generated/dns/index.js.map +1 -0
  220. package/dist/tools/generated/generative_ai/index.d.ts +8 -0
  221. package/dist/tools/generated/generative_ai/index.d.ts.map +1 -0
  222. package/dist/tools/generated/generative_ai/index.js +1019 -0
  223. package/dist/tools/generated/generative_ai/index.js.map +1 -0
  224. package/dist/tools/generated/managed_kubernetes/index.d.ts +8 -0
  225. package/dist/tools/generated/managed_kubernetes/index.d.ts.map +1 -0
  226. package/dist/tools/generated/managed_kubernetes/index.js +3368 -0
  227. package/dist/tools/generated/managed_kubernetes/index.js.map +1 -0
  228. package/dist/tools/generated/marketplace/index.d.ts +8 -0
  229. package/dist/tools/generated/marketplace/index.d.ts.map +1 -0
  230. package/dist/tools/generated/marketplace/index.js +4329 -0
  231. package/dist/tools/generated/marketplace/index.js.map +1 -0
  232. package/dist/tools/generated/network/index.d.ts +8 -0
  233. package/dist/tools/generated/network/index.d.ts.map +1 -0
  234. package/dist/tools/generated/network/index.js +12424 -0
  235. package/dist/tools/generated/network/index.js.map +1 -0
  236. package/dist/tools/generated/network_security/index.d.ts +8 -0
  237. package/dist/tools/generated/network_security/index.d.ts.map +1 -0
  238. package/dist/tools/generated/network_security/index.js +9637 -0
  239. package/dist/tools/generated/network_security/index.js.map +1 -0
  240. package/dist/tools/generated/nginx_one/index.d.ts +8 -0
  241. package/dist/tools/generated/nginx_one/index.d.ts.map +1 -0
  242. package/dist/tools/generated/nginx_one/index.js +1692 -0
  243. package/dist/tools/generated/nginx_one/index.js.map +1 -0
  244. package/dist/tools/generated/object_storage/index.d.ts +8 -0
  245. package/dist/tools/generated/object_storage/index.d.ts.map +1 -0
  246. package/dist/tools/generated/object_storage/index.js +996 -0
  247. package/dist/tools/generated/object_storage/index.js.map +1 -0
  248. package/dist/tools/generated/observability/index.d.ts +8 -0
  249. package/dist/tools/generated/observability/index.d.ts.map +1 -0
  250. package/dist/tools/generated/observability/index.js +5285 -0
  251. package/dist/tools/generated/observability/index.js.map +1 -0
  252. package/dist/tools/generated/rate_limiting/index.d.ts +8 -0
  253. package/dist/tools/generated/rate_limiting/index.d.ts.map +1 -0
  254. package/dist/tools/generated/rate_limiting/index.js +2108 -0
  255. package/dist/tools/generated/rate_limiting/index.js.map +1 -0
  256. package/dist/tools/generated/secops_and_incident_response/index.d.ts +8 -0
  257. package/dist/tools/generated/secops_and_incident_response/index.d.ts.map +1 -0
  258. package/dist/tools/generated/secops_and_incident_response/index.js +710 -0
  259. package/dist/tools/generated/secops_and_incident_response/index.js.map +1 -0
  260. package/dist/tools/generated/service_mesh/index.d.ts +8 -0
  261. package/dist/tools/generated/service_mesh/index.d.ts.map +1 -0
  262. package/dist/tools/generated/service_mesh/index.js +6062 -0
  263. package/dist/tools/generated/service_mesh/index.js.map +1 -0
  264. package/dist/tools/generated/shape/index.d.ts +8 -0
  265. package/dist/tools/generated/shape/index.d.ts.map +1 -0
  266. package/dist/tools/generated/shape/index.js +19381 -0
  267. package/dist/tools/generated/shape/index.js.map +1 -0
  268. package/dist/tools/generated/sites/index.d.ts +8 -0
  269. package/dist/tools/generated/sites/index.d.ts.map +1 -0
  270. package/dist/tools/generated/sites/index.js +13160 -0
  271. package/dist/tools/generated/sites/index.js.map +1 -0
  272. package/dist/tools/generated/statistics/index.d.ts +8 -0
  273. package/dist/tools/generated/statistics/index.d.ts.map +1 -0
  274. package/dist/tools/generated/statistics/index.js +8131 -0
  275. package/dist/tools/generated/statistics/index.js.map +1 -0
  276. package/dist/tools/generated/support/index.d.ts +8 -0
  277. package/dist/tools/generated/support/index.d.ts.map +1 -0
  278. package/dist/tools/generated/support/index.js +5608 -0
  279. package/dist/tools/generated/support/index.js.map +1 -0
  280. package/dist/tools/generated/telemetry_and_insights/index.d.ts +8 -0
  281. package/dist/tools/generated/telemetry_and_insights/index.d.ts.map +1 -0
  282. package/dist/tools/generated/telemetry_and_insights/index.js +2404 -0
  283. package/dist/tools/generated/telemetry_and_insights/index.js.map +1 -0
  284. package/dist/tools/generated/tenant_and_identity/index.d.ts +8 -0
  285. package/dist/tools/generated/tenant_and_identity/index.d.ts.map +1 -0
  286. package/dist/tools/generated/tenant_and_identity/index.js +18938 -0
  287. package/dist/tools/generated/tenant_and_identity/index.js.map +1 -0
  288. package/dist/tools/generated/threat_campaign/index.d.ts +8 -0
  289. package/dist/tools/generated/threat_campaign/index.d.ts.map +1 -0
  290. package/dist/tools/generated/threat_campaign/index.js +102 -0
  291. package/dist/tools/generated/threat_campaign/index.js.map +1 -0
  292. package/dist/tools/generated/users/index.d.ts +8 -0
  293. package/dist/tools/generated/users/index.d.ts.map +1 -0
  294. package/dist/tools/generated/users/index.js +1515 -0
  295. package/dist/tools/generated/users/index.js.map +1 -0
  296. package/dist/tools/generated/virtual/index.d.ts +8 -0
  297. package/dist/tools/generated/virtual/index.d.ts.map +1 -0
  298. package/dist/tools/generated/virtual/index.js +11263 -0
  299. package/dist/tools/generated/virtual/index.js.map +1 -0
  300. package/dist/tools/generated/vpm_and_node_management/index.d.ts +8 -0
  301. package/dist/tools/generated/vpm_and_node_management/index.d.ts.map +1 -0
  302. package/dist/tools/generated/vpm_and_node_management/index.js +88 -0
  303. package/dist/tools/generated/vpm_and_node_management/index.js.map +1 -0
  304. package/dist/tools/generated/waf/index.d.ts +8 -0
  305. package/dist/tools/generated/waf/index.d.ts.map +1 -0
  306. package/dist/tools/generated/waf/index.js +4586 -0
  307. package/dist/tools/generated/waf/index.js.map +1 -0
  308. package/dist/tools/index.d.ts +7 -0
  309. package/dist/tools/index.d.ts.map +1 -0
  310. package/dist/tools/index.js +6 -0
  311. package/dist/tools/index.js.map +1 -0
  312. package/dist/tools/registry.d.ts +27 -0
  313. package/dist/tools/registry.d.ts.map +1 -0
  314. package/dist/tools/registry.js +115 -0
  315. package/dist/tools/registry.js.map +1 -0
  316. package/dist/utils/error-handling.d.ts +109 -0
  317. package/dist/utils/error-handling.d.ts.map +1 -0
  318. package/dist/utils/error-handling.js +239 -0
  319. package/dist/utils/error-handling.js.map +1 -0
  320. package/dist/utils/index.d.ts +7 -0
  321. package/dist/utils/index.d.ts.map +1 -0
  322. package/dist/utils/index.js +6 -0
  323. package/dist/utils/index.js.map +1 -0
  324. package/dist/utils/logging.d.ts +75 -0
  325. package/dist/utils/logging.d.ts.map +1 -0
  326. package/dist/utils/logging.js +131 -0
  327. package/dist/utils/logging.js.map +1 -0
  328. package/manifest.json +143 -0
  329. package/package.json +110 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,140 @@
1
+ /**
2
+ * Best Practices Discovery
3
+ *
4
+ * Generates domain-specific best practices from tool metadata including:
5
+ * - Common errors and resolutions
6
+ * - Danger level analysis
7
+ * - Recommended workflows
8
+ * - Security considerations
9
+ */
10
+ /**
11
+ * Common error pattern with resolution guidance
12
+ */
13
+ export interface CommonError {
14
+ /** HTTP status code */
15
+ statusCode: number;
16
+ /** Error type/category */
17
+ errorType: string;
18
+ /** Error description */
19
+ description: string;
20
+ /** Resolution steps */
21
+ resolution: string[];
22
+ /** Related tools for diagnosis */
23
+ relatedTools?: string[];
24
+ }
25
+ /**
26
+ * Danger level summary for a domain
27
+ */
28
+ export interface DangerAnalysis {
29
+ /** Number of low-danger operations */
30
+ low: number;
31
+ /** Number of medium-danger operations */
32
+ medium: number;
33
+ /** Number of high-danger operations */
34
+ high: number;
35
+ /** High-danger tool names for reference */
36
+ highDangerTools: string[];
37
+ /** Percentage of safe (low/medium) operations */
38
+ safePercentage: number;
39
+ }
40
+ /**
41
+ * Recommended workflow for common operations
42
+ */
43
+ export interface RecommendedWorkflow {
44
+ /** Workflow name */
45
+ name: string;
46
+ /** Workflow description */
47
+ description: string;
48
+ /** Ordered steps */
49
+ steps: Array<{
50
+ stepNumber: number;
51
+ action: string;
52
+ toolName?: string;
53
+ note?: string;
54
+ }>;
55
+ /** Prerequisites */
56
+ prerequisites?: string[];
57
+ /** Estimated complexity */
58
+ complexity: "low" | "medium" | "high";
59
+ }
60
+ /**
61
+ * Domain-specific best practices
62
+ */
63
+ export interface DomainBestPractices {
64
+ /** Domain name */
65
+ domain: string;
66
+ /** Display name for the domain */
67
+ displayName: string;
68
+ /** Domain description */
69
+ description: string;
70
+ /** Total tools in domain */
71
+ totalTools: number;
72
+ /** Operation breakdown */
73
+ operations: {
74
+ create: number;
75
+ get: number;
76
+ list: number;
77
+ update: number;
78
+ delete: number;
79
+ other: number;
80
+ };
81
+ /** Danger level analysis */
82
+ dangerAnalysis: DangerAnalysis;
83
+ /** Common errors in this domain */
84
+ commonErrors: CommonError[];
85
+ /** Recommended workflows */
86
+ workflows: RecommendedWorkflow[];
87
+ /** Security considerations */
88
+ securityNotes: string[];
89
+ /** Performance tips */
90
+ performanceTips: string[];
91
+ }
92
+ /**
93
+ * Query parameters for best practices
94
+ */
95
+ export interface BestPracticesQuery {
96
+ /** Domain to query */
97
+ domain?: string;
98
+ /** Specific aspect to retrieve */
99
+ aspect?: "errors" | "workflows" | "danger" | "security" | "performance" | "all";
100
+ /** Include detailed breakdowns */
101
+ detailed?: boolean;
102
+ }
103
+ /**
104
+ * Best practices query result
105
+ */
106
+ export interface BestPracticesResult {
107
+ /** Whether query was successful */
108
+ success: boolean;
109
+ /** Domain-specific best practices */
110
+ practices?: DomainBestPractices;
111
+ /** Available domains if no domain specified */
112
+ availableDomains?: string[];
113
+ /** Error message if failed */
114
+ error?: string;
115
+ }
116
+ /**
117
+ * Get best practices for a specific domain
118
+ */
119
+ export declare function getDomainBestPractices(domain: string): DomainBestPractices | null;
120
+ /**
121
+ * Query best practices
122
+ */
123
+ export declare function queryBestPractices(query: BestPracticesQuery): BestPracticesResult;
124
+ /**
125
+ * Get summary of all domains with their danger levels
126
+ */
127
+ export declare function getAllDomainsSummary(): Array<{
128
+ domain: string;
129
+ displayName: string;
130
+ toolCount: number;
131
+ dangerSummary: {
132
+ safe: number;
133
+ dangerous: number;
134
+ };
135
+ }>;
136
+ /**
137
+ * Format best practices for human-readable output
138
+ */
139
+ export declare function formatBestPractices(practices: DomainBestPractices): string;
140
+ //# sourceMappingURL=best-practices.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"best-practices.d.ts","sourceRoot":"","sources":["../../../src/tools/discovery/best-practices.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,499 @@
1
+ /**
2
+ * Best Practices Discovery
3
+ *
4
+ * Generates domain-specific best practices from tool metadata including:
5
+ * - Common errors and resolutions
6
+ * - Danger level analysis
7
+ * - Recommended workflows
8
+ * - Security considerations
9
+ */
10
+ import { getToolIndex } from "./index-loader.js";
11
+ import { getResourcesInDomain, getAllDependencyDomains } from "./dependencies.js";
12
+ /**
13
+ * Domain display names and descriptions
14
+ */
15
+ const DOMAIN_INFO = {
16
+ virtual: {
17
+ displayName: "Virtual Services (WAAP)",
18
+ description: "HTTP load balancers, origin pools, and web application protection",
19
+ },
20
+ network: {
21
+ displayName: "Network Infrastructure",
22
+ description: "Network policies, cloud connectors, and routing configuration",
23
+ },
24
+ dns: {
25
+ displayName: "DNS Management",
26
+ description: "DNS zones, records, and domain management",
27
+ },
28
+ certificates: {
29
+ displayName: "Certificate Management",
30
+ description: "TLS certificates, CA management, and certificate lifecycle",
31
+ },
32
+ waf: {
33
+ displayName: "Web Application Firewall",
34
+ description: "WAF policies, rule sets, and security configurations",
35
+ },
36
+ sites: {
37
+ displayName: "Site Management",
38
+ description: "F5XC site deployment and configuration across cloud providers",
39
+ },
40
+ api: {
41
+ displayName: "API Security",
42
+ description: "API definitions, discovery, and protection policies",
43
+ },
44
+ bot_and_threat_defense: {
45
+ displayName: "Bot & Threat Defense",
46
+ description: "Bot detection, threat intelligence, and automated defense",
47
+ },
48
+ authentication: {
49
+ displayName: "Authentication",
50
+ description: "Identity providers, OIDC, and authentication policies",
51
+ },
52
+ users: {
53
+ displayName: "User Management",
54
+ description: "User accounts, roles, and access control",
55
+ },
56
+ tenant_and_identity: {
57
+ displayName: "Tenant & Identity",
58
+ description: "Tenant configuration and identity management",
59
+ },
60
+ };
61
+ /**
62
+ * Common errors by domain
63
+ */
64
+ const DOMAIN_COMMON_ERRORS = {
65
+ virtual: [
66
+ {
67
+ statusCode: 404,
68
+ errorType: "NotFound",
69
+ description: "Origin pool or referenced resource not found",
70
+ resolution: [
71
+ "Verify the origin pool exists using f5xc-api-network-origin-pool-list",
72
+ "Check namespace is correct",
73
+ "Ensure referenced certificates exist",
74
+ ],
75
+ relatedTools: ["f5xc-api-network-origin-pool-list", "f5xc-api-certificates-certificate-list"],
76
+ },
77
+ {
78
+ statusCode: 409,
79
+ errorType: "Conflict",
80
+ description: "Load balancer with same name already exists",
81
+ resolution: [
82
+ "Use a unique name for the load balancer",
83
+ "Delete existing resource if replacement is intended",
84
+ "Check for naming conflicts across namespaces",
85
+ ],
86
+ },
87
+ ],
88
+ dns: [
89
+ {
90
+ statusCode: 400,
91
+ errorType: "ValidationError",
92
+ description: "Invalid DNS record format or TTL",
93
+ resolution: [
94
+ "Verify record type matches the data format",
95
+ "Check TTL is within valid range (60-86400)",
96
+ "Ensure FQDN is properly formatted",
97
+ ],
98
+ },
99
+ ],
100
+ certificates: [
101
+ {
102
+ statusCode: 400,
103
+ errorType: "CertificateError",
104
+ description: "Invalid certificate chain or format",
105
+ resolution: [
106
+ "Verify certificate is in PEM format",
107
+ "Ensure full chain is included",
108
+ "Check certificate is not expired",
109
+ "Verify private key matches certificate",
110
+ ],
111
+ },
112
+ ],
113
+ };
114
+ /**
115
+ * Security notes by domain
116
+ */
117
+ const DOMAIN_SECURITY_NOTES = {
118
+ virtual: [
119
+ "Always enable WAF policies for production load balancers",
120
+ "Use TLS 1.2 or higher for all HTTPS listeners",
121
+ "Configure rate limiting to prevent DoS attacks",
122
+ "Review origin pool health check configurations",
123
+ ],
124
+ certificates: [
125
+ "Never expose private keys in API responses",
126
+ "Use certificate chains for proper validation",
127
+ "Set up certificate expiration alerts",
128
+ "Prefer automatic certificate management when available",
129
+ ],
130
+ authentication: [
131
+ "Use short-lived API tokens when possible",
132
+ "Implement token rotation policies",
133
+ "Audit authentication logs regularly",
134
+ "Use certificate-based authentication for automation",
135
+ ],
136
+ users: [
137
+ "Follow principle of least privilege",
138
+ "Regularly audit user access and roles",
139
+ "Use namespaces to isolate resources",
140
+ "Enable MFA for console access",
141
+ ],
142
+ };
143
+ /**
144
+ * Performance tips by domain
145
+ */
146
+ const DOMAIN_PERFORMANCE_TIPS = {
147
+ virtual: [
148
+ "Use appropriate health check intervals to balance detection vs overhead",
149
+ "Configure connection pooling for origin servers",
150
+ "Enable response caching where appropriate",
151
+ "Use regional deployments for latency-sensitive applications",
152
+ ],
153
+ dns: [
154
+ "Set appropriate TTLs based on update frequency",
155
+ "Use ALIAS records for apex domains when possible",
156
+ "Configure health-based routing for failover",
157
+ ],
158
+ sites: [
159
+ "Pre-configure site templates for faster deployments",
160
+ "Use site mesh groups for efficient routing",
161
+ "Monitor site health metrics proactively",
162
+ ],
163
+ };
164
+ /**
165
+ * Analyze danger levels for a domain
166
+ */
167
+ function analyzeDangerLevels(domain) {
168
+ const index = getToolIndex();
169
+ const domainTools = index.tools.filter((t) => t.domain === domain);
170
+ const analysis = {
171
+ low: 0,
172
+ medium: 0,
173
+ high: 0,
174
+ highDangerTools: [],
175
+ safePercentage: 0,
176
+ };
177
+ for (const tool of domainTools) {
178
+ switch (tool.dangerLevel) {
179
+ case "low":
180
+ analysis.low++;
181
+ break;
182
+ case "medium":
183
+ analysis.medium++;
184
+ break;
185
+ case "high":
186
+ analysis.high++;
187
+ analysis.highDangerTools.push(tool.name);
188
+ break;
189
+ }
190
+ }
191
+ const total = domainTools.length;
192
+ if (total > 0) {
193
+ analysis.safePercentage = Math.round(((analysis.low + analysis.medium) / total) * 100);
194
+ }
195
+ return analysis;
196
+ }
197
+ /**
198
+ * Count operations by type for a domain
199
+ */
200
+ function countOperations(domain) {
201
+ const index = getToolIndex();
202
+ const domainTools = index.tools.filter((t) => t.domain === domain);
203
+ const ops = {
204
+ create: 0,
205
+ get: 0,
206
+ list: 0,
207
+ update: 0,
208
+ delete: 0,
209
+ other: 0,
210
+ };
211
+ for (const tool of domainTools) {
212
+ switch (tool.operation) {
213
+ case "create":
214
+ ops.create++;
215
+ break;
216
+ case "get":
217
+ ops.get++;
218
+ break;
219
+ case "list":
220
+ ops.list++;
221
+ break;
222
+ case "update":
223
+ ops.update++;
224
+ break;
225
+ case "delete":
226
+ ops.delete++;
227
+ break;
228
+ default:
229
+ ops.other++;
230
+ }
231
+ }
232
+ return ops;
233
+ }
234
+ /**
235
+ * Generate recommended workflows for a domain
236
+ */
237
+ function generateWorkflows(domain) {
238
+ const workflows = [];
239
+ // Get resources in the domain from dependency graph
240
+ const resources = getResourcesInDomain(domain);
241
+ // Create a basic CRUD workflow for the domain
242
+ if (resources.length > 0) {
243
+ workflows.push({
244
+ name: `List ${domain} resources`,
245
+ description: `Discover existing resources in the ${domain} domain`,
246
+ steps: [
247
+ {
248
+ stepNumber: 1,
249
+ action: "Search for list operations",
250
+ note: `Use f5xc-api-search-tools with query '${domain} list'`,
251
+ },
252
+ {
253
+ stepNumber: 2,
254
+ action: "Execute list operation",
255
+ note: "Provide namespace parameter to scope results",
256
+ },
257
+ {
258
+ stepNumber: 3,
259
+ action: "Review results",
260
+ note: "Check resource metadata and dependencies",
261
+ },
262
+ ],
263
+ complexity: "low",
264
+ });
265
+ }
266
+ // Domain-specific workflows
267
+ if (domain === "virtual") {
268
+ workflows.push({
269
+ name: "Deploy HTTP Load Balancer",
270
+ description: "Complete workflow to deploy an HTTP load balancer with WAF protection",
271
+ steps: [
272
+ {
273
+ stepNumber: 1,
274
+ action: "Create origin pool",
275
+ toolName: "f5xc-api-network-origin-pool-create",
276
+ },
277
+ {
278
+ stepNumber: 2,
279
+ action: "Create WAF policy (optional)",
280
+ toolName: "f5xc-api-waf-app-firewall-create",
281
+ },
282
+ {
283
+ stepNumber: 3,
284
+ action: "Create HTTP load balancer",
285
+ toolName: "f5xc-api-virtual-http-loadbalancer-create",
286
+ },
287
+ {
288
+ stepNumber: 4,
289
+ action: "Verify deployment",
290
+ toolName: "f5xc-api-virtual-http-loadbalancer-get",
291
+ },
292
+ ],
293
+ prerequisites: ["Certificate (if using HTTPS)", "Namespace"],
294
+ complexity: "medium",
295
+ });
296
+ }
297
+ if (domain === "dns") {
298
+ workflows.push({
299
+ name: "Configure DNS Zone",
300
+ description: "Set up a DNS zone with common record types",
301
+ steps: [
302
+ { stepNumber: 1, action: "Create DNS zone", toolName: "f5xc-api-dns-dns-zone-create" },
303
+ { stepNumber: 2, action: "Add A/AAAA records", note: "Create records for your services" },
304
+ { stepNumber: 3, action: "Add CNAME records (optional)", note: "Set up aliases" },
305
+ { stepNumber: 4, action: "Verify propagation", note: "Use dig or nslookup to verify" },
306
+ ],
307
+ complexity: "low",
308
+ });
309
+ }
310
+ return workflows;
311
+ }
312
+ /**
313
+ * Get best practices for a specific domain
314
+ */
315
+ export function getDomainBestPractices(domain) {
316
+ const index = getToolIndex();
317
+ const domainTools = index.tools.filter((t) => t.domain === domain);
318
+ if (domainTools.length === 0) {
319
+ return null;
320
+ }
321
+ const info = DOMAIN_INFO[domain] ?? {
322
+ displayName: domain.replace(/_/g, " ").replace(/\b\w/g, (l) => l.toUpperCase()),
323
+ description: `Operations for ${domain} resources`,
324
+ };
325
+ return {
326
+ domain,
327
+ displayName: info.displayName,
328
+ description: info.description,
329
+ totalTools: domainTools.length,
330
+ operations: countOperations(domain),
331
+ dangerAnalysis: analyzeDangerLevels(domain),
332
+ commonErrors: DOMAIN_COMMON_ERRORS[domain] ?? [],
333
+ workflows: generateWorkflows(domain),
334
+ securityNotes: DOMAIN_SECURITY_NOTES[domain] ?? [],
335
+ performanceTips: DOMAIN_PERFORMANCE_TIPS[domain] ?? [],
336
+ };
337
+ }
338
+ /**
339
+ * Query best practices
340
+ */
341
+ export function queryBestPractices(query) {
342
+ // If no domain specified, return available domains
343
+ if (!query.domain) {
344
+ const domains = getAllDependencyDomains();
345
+ return {
346
+ success: true,
347
+ availableDomains: domains,
348
+ };
349
+ }
350
+ // Get best practices for specified domain
351
+ const practices = getDomainBestPractices(query.domain);
352
+ if (!practices) {
353
+ return {
354
+ success: false,
355
+ error: `Domain '${query.domain}' not found. Use without domain parameter to see available domains.`,
356
+ };
357
+ }
358
+ // Filter by aspect if specified
359
+ if (query.aspect && query.aspect !== "all") {
360
+ const filtered = { ...practices };
361
+ switch (query.aspect) {
362
+ case "errors":
363
+ filtered.workflows = [];
364
+ filtered.securityNotes = [];
365
+ filtered.performanceTips = [];
366
+ break;
367
+ case "workflows":
368
+ filtered.commonErrors = [];
369
+ filtered.securityNotes = [];
370
+ filtered.performanceTips = [];
371
+ break;
372
+ case "danger":
373
+ filtered.commonErrors = [];
374
+ filtered.workflows = [];
375
+ filtered.securityNotes = [];
376
+ filtered.performanceTips = [];
377
+ break;
378
+ case "security":
379
+ filtered.commonErrors = [];
380
+ filtered.workflows = [];
381
+ filtered.performanceTips = [];
382
+ break;
383
+ case "performance":
384
+ filtered.commonErrors = [];
385
+ filtered.workflows = [];
386
+ filtered.securityNotes = [];
387
+ break;
388
+ }
389
+ return {
390
+ success: true,
391
+ practices: filtered,
392
+ };
393
+ }
394
+ return {
395
+ success: true,
396
+ practices,
397
+ };
398
+ }
399
+ /**
400
+ * Get summary of all domains with their danger levels
401
+ */
402
+ export function getAllDomainsSummary() {
403
+ const index = getToolIndex();
404
+ const domains = new Map();
405
+ for (const tool of index.tools) {
406
+ const existing = domains.get(tool.domain) ?? { count: 0, safe: 0, dangerous: 0 };
407
+ existing.count++;
408
+ if (tool.dangerLevel === "low" || tool.dangerLevel === "medium") {
409
+ existing.safe++;
410
+ }
411
+ else {
412
+ existing.dangerous++;
413
+ }
414
+ domains.set(tool.domain, existing);
415
+ }
416
+ return Array.from(domains.entries())
417
+ .map(([domain, stats]) => {
418
+ const info = DOMAIN_INFO[domain];
419
+ return {
420
+ domain,
421
+ displayName: info?.displayName ?? domain.replace(/_/g, " ").replace(/\b\w/g, (l) => l.toUpperCase()),
422
+ toolCount: stats.count,
423
+ dangerSummary: { safe: stats.safe, dangerous: stats.dangerous },
424
+ };
425
+ })
426
+ .sort((a, b) => b.toolCount - a.toolCount);
427
+ }
428
+ /**
429
+ * Format best practices for human-readable output
430
+ */
431
+ export function formatBestPractices(practices) {
432
+ const lines = [];
433
+ lines.push(`# Best Practices: ${practices.displayName}`);
434
+ lines.push("");
435
+ lines.push(`**Description**: ${practices.description}`);
436
+ lines.push(`**Total Tools**: ${practices.totalTools}`);
437
+ lines.push("");
438
+ lines.push("## Operations");
439
+ lines.push(`- Create: ${practices.operations.create}`);
440
+ lines.push(`- Get: ${practices.operations.get}`);
441
+ lines.push(`- List: ${practices.operations.list}`);
442
+ lines.push(`- Update: ${practices.operations.update}`);
443
+ lines.push(`- Delete: ${practices.operations.delete}`);
444
+ lines.push("");
445
+ lines.push("## Danger Analysis");
446
+ lines.push(`- Safe Operations: ${practices.dangerAnalysis.safePercentage}%`);
447
+ lines.push(`- Low: ${practices.dangerAnalysis.low}`);
448
+ lines.push(`- Medium: ${practices.dangerAnalysis.medium}`);
449
+ lines.push(`- High: ${practices.dangerAnalysis.high}`);
450
+ if (practices.dangerAnalysis.highDangerTools.length > 0) {
451
+ lines.push(`- High-risk tools: ${practices.dangerAnalysis.highDangerTools.slice(0, 5).join(", ")}${practices.dangerAnalysis.highDangerTools.length > 5 ? "..." : ""}`);
452
+ }
453
+ lines.push("");
454
+ if (practices.commonErrors.length > 0) {
455
+ lines.push("## Common Errors");
456
+ for (const error of practices.commonErrors) {
457
+ lines.push(`### ${error.statusCode} - ${error.errorType}`);
458
+ lines.push(error.description);
459
+ lines.push("**Resolution**:");
460
+ for (const step of error.resolution) {
461
+ lines.push(`- ${step}`);
462
+ }
463
+ lines.push("");
464
+ }
465
+ }
466
+ if (practices.workflows.length > 0) {
467
+ lines.push("## Recommended Workflows");
468
+ for (const workflow of practices.workflows) {
469
+ lines.push(`### ${workflow.name}`);
470
+ lines.push(`*${workflow.description}* (Complexity: ${workflow.complexity})`);
471
+ if (workflow.prerequisites && workflow.prerequisites.length > 0) {
472
+ lines.push(`**Prerequisites**: ${workflow.prerequisites.join(", ")}`);
473
+ }
474
+ lines.push("**Steps**:");
475
+ for (const step of workflow.steps) {
476
+ const toolInfo = step.toolName ? ` (\`${step.toolName}\`)` : "";
477
+ const noteInfo = step.note ? ` - ${step.note}` : "";
478
+ lines.push(`${step.stepNumber}. ${step.action}${toolInfo}${noteInfo}`);
479
+ }
480
+ lines.push("");
481
+ }
482
+ }
483
+ if (practices.securityNotes.length > 0) {
484
+ lines.push("## Security Notes");
485
+ for (const note of practices.securityNotes) {
486
+ lines.push(`- ${note}`);
487
+ }
488
+ lines.push("");
489
+ }
490
+ if (practices.performanceTips.length > 0) {
491
+ lines.push("## Performance Tips");
492
+ for (const tip of practices.performanceTips) {
493
+ lines.push(`- ${tip}`);
494
+ }
495
+ lines.push("");
496
+ }
497
+ return lines.join("\n");
498
+ }
499
+ //# sourceMappingURL=best-practices.js.map