@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,529 @@
1
+ /**
2
+ * MCP Tool Generator
3
+ *
4
+ * Generates MCP tool definitions from parsed OpenAPI operations.
5
+ * Handles both documentation mode and execution mode tool behaviors.
6
+ */
7
+ import { z } from "zod";
8
+ import { AuthMode } from "../auth/credential-manager.js";
9
+ import { formatErrorForMcp } from "../utils/error-handling.js";
10
+ import { logger } from "../utils/logging.js";
11
+ /**
12
+ * Validate parameters against x-ves-validation-rules
13
+ */
14
+ export function validateParameters(params, rules) {
15
+ const errors = [];
16
+ for (const [paramName, paramRules] of Object.entries(rules)) {
17
+ const value = params[paramName];
18
+ // Check max_len for strings
19
+ if (paramRules["ves.io.schema.rules.string.max_len"]) {
20
+ const maxLen = parseInt(paramRules["ves.io.schema.rules.string.max_len"]);
21
+ if (typeof value === "string" && value.length > maxLen) {
22
+ errors.push(`${paramName} exceeds max length of ${maxLen}`);
23
+ }
24
+ }
25
+ // Check min_len for strings
26
+ if (paramRules["ves.io.schema.rules.string.min_len"]) {
27
+ const minLen = parseInt(paramRules["ves.io.schema.rules.string.min_len"]);
28
+ if (typeof value === "string" && value.length < minLen) {
29
+ errors.push(`${paramName} must be at least ${minLen} characters`);
30
+ }
31
+ }
32
+ // Check required
33
+ if (paramRules["ves.io.schema.rules.message.required"] === "true") {
34
+ if (value === undefined || value === null || value === "") {
35
+ errors.push(`${paramName} is required`);
36
+ }
37
+ }
38
+ // Check max_items for arrays
39
+ if (paramRules["ves.io.schema.rules.repeated.max_items"]) {
40
+ const maxItems = parseInt(paramRules["ves.io.schema.rules.repeated.max_items"]);
41
+ if (Array.isArray(value) && value.length > maxItems) {
42
+ errors.push(`${paramName} exceeds max items of ${maxItems}`);
43
+ }
44
+ }
45
+ // Check unique for arrays
46
+ if (paramRules["ves.io.schema.rules.repeated.unique"] === "true") {
47
+ if (Array.isArray(value)) {
48
+ const uniqueSet = new Set(value.map((v) => JSON.stringify(v)));
49
+ if (uniqueSet.size !== value.length) {
50
+ errors.push(`${paramName} must contain unique items`);
51
+ }
52
+ }
53
+ }
54
+ }
55
+ return { valid: errors.length === 0, errors };
56
+ }
57
+ /**
58
+ * Generate danger level warning message
59
+ */
60
+ export function getDangerWarning(level) {
61
+ switch (level) {
62
+ case "high":
63
+ return "⚠️ HIGH RISK: This operation may cause significant changes. Confirm before proceeding.";
64
+ case "medium":
65
+ return "⚡ MEDIUM RISK: This operation will modify resources. Review parameters carefully.";
66
+ case "low":
67
+ return null;
68
+ default:
69
+ return null;
70
+ }
71
+ }
72
+ /**
73
+ * Subscription tier constants
74
+ */
75
+ export const SUBSCRIPTION_TIERS = {
76
+ NO_TIER: "NO_TIER",
77
+ STANDARD: "STANDARD",
78
+ ADVANCED: "ADVANCED",
79
+ };
80
+ /**
81
+ * Map resource types to subscription tiers
82
+ */
83
+ const RESOURCE_TIER_MAP = {
84
+ // Standard tier resources
85
+ http_loadbalancer: SUBSCRIPTION_TIERS.STANDARD,
86
+ origin_pool: SUBSCRIPTION_TIERS.STANDARD,
87
+ dns_zone: SUBSCRIPTION_TIERS.STANDARD,
88
+ healthcheck: SUBSCRIPTION_TIERS.STANDARD,
89
+ // Advanced tier resources
90
+ app_firewall: SUBSCRIPTION_TIERS.ADVANCED,
91
+ bot_defense: SUBSCRIPTION_TIERS.ADVANCED,
92
+ api_discovery: SUBSCRIPTION_TIERS.ADVANCED,
93
+ malicious_user_detection: SUBSCRIPTION_TIERS.ADVANCED,
94
+ // Core resources (no tier)
95
+ namespace: SUBSCRIPTION_TIERS.NO_TIER,
96
+ certificate: SUBSCRIPTION_TIERS.NO_TIER,
97
+ secret: SUBSCRIPTION_TIERS.NO_TIER,
98
+ };
99
+ /**
100
+ * Get subscription tier for a resource type
101
+ */
102
+ function getSubscriptionTier(resource) {
103
+ const normalizedResource = resource.toLowerCase().replace(/-/g, "_");
104
+ return RESOURCE_TIER_MAP[normalizedResource] ?? SUBSCRIPTION_TIERS.NO_TIER;
105
+ }
106
+ /**
107
+ * Generate Terraform resource name
108
+ */
109
+ function generateTerraformResource(operation) {
110
+ const resource = operation.resource.replace(/-/g, "_");
111
+ return `volterra_${resource}`;
112
+ }
113
+ /**
114
+ * Generate Terraform example
115
+ */
116
+ function generateTerraformExample(operation) {
117
+ const resource = operation.resource.replace(/-/g, "_");
118
+ const terraformResource = `volterra_${resource}`;
119
+ if (operation.operation !== "create" && operation.operation !== "update") {
120
+ return `# Use data source for ${operation.operation} operations\ndata "${terraformResource}" "example" {\n name = "example"\n namespace = "default"\n}`;
121
+ }
122
+ return `resource "${terraformResource}" "example" {
123
+ name = "example"
124
+ namespace = "default"
125
+
126
+ # Add resource-specific configuration here
127
+ # See F5XC Terraform Provider documentation for details
128
+ }`;
129
+ }
130
+ /**
131
+ * Generate prerequisites based on resource type
132
+ */
133
+ function generatePrerequisites(operation) {
134
+ const prerequisites = [];
135
+ // Common prerequisites
136
+ if (operation.path.includes("{namespace}")) {
137
+ prerequisites.push("Namespace must exist");
138
+ }
139
+ // Resource-specific prerequisites
140
+ const resource = operation.resource.toLowerCase();
141
+ if (resource.includes("loadbalancer") || resource.includes("lb")) {
142
+ prerequisites.push("Origin pool required for backend configuration");
143
+ prerequisites.push("DNS zone required for automatic DNS management (optional)");
144
+ }
145
+ if (resource.includes("origin") && resource.includes("pool")) {
146
+ prerequisites.push("Backend servers must be accessible");
147
+ prerequisites.push("Health check configuration recommended");
148
+ }
149
+ if (resource.includes("site")) {
150
+ prerequisites.push("Cloud credentials must be configured");
151
+ prerequisites.push("VPC/VNet must exist in target cloud");
152
+ }
153
+ if (resource.includes("waf") || resource.includes("firewall")) {
154
+ prerequisites.push("WAAP subscription required");
155
+ }
156
+ return prerequisites;
157
+ }
158
+ /**
159
+ * Convert OpenAPI parameter to Zod schema
160
+ */
161
+ function parameterToZodSchema(param) {
162
+ const schema = param.schema;
163
+ const type = schema?.type;
164
+ let zodSchema;
165
+ switch (type) {
166
+ case "integer":
167
+ zodSchema = z.number().int();
168
+ break;
169
+ case "number":
170
+ zodSchema = z.number();
171
+ break;
172
+ case "boolean":
173
+ zodSchema = z.boolean();
174
+ break;
175
+ case "array":
176
+ zodSchema = z.array(z.unknown());
177
+ break;
178
+ case "object":
179
+ zodSchema = z.record(z.string(), z.unknown());
180
+ break;
181
+ default:
182
+ zodSchema = z.string();
183
+ }
184
+ if (!param.required) {
185
+ zodSchema = zodSchema.optional();
186
+ }
187
+ if (param.description) {
188
+ zodSchema = zodSchema.describe(param.description);
189
+ }
190
+ return zodSchema;
191
+ }
192
+ /**
193
+ * Build Zod schema for tool parameters
194
+ */
195
+ function buildToolSchema(operation) {
196
+ const shape = {};
197
+ // Add path parameters
198
+ for (const param of operation.pathParameters) {
199
+ shape[param.name] = parameterToZodSchema(param);
200
+ }
201
+ // Add query parameters
202
+ for (const param of operation.queryParameters) {
203
+ shape[param.name] = parameterToZodSchema(param);
204
+ }
205
+ // Add body parameter for create/update operations
206
+ if (operation.requestBodySchema &&
207
+ (operation.operation === "create" || operation.operation === "update")) {
208
+ shape["body"] = z
209
+ .record(z.string(), z.unknown())
210
+ .optional()
211
+ .describe("Request body (JSON object)");
212
+ }
213
+ return z.object(shape);
214
+ }
215
+ /**
216
+ * Build documentation response for a tool
217
+ */
218
+ function buildDocumentationResponse(operation) {
219
+ const parameters = [];
220
+ // Add path parameters with rich metadata
221
+ for (const param of operation.pathParameters) {
222
+ parameters.push({
223
+ name: param.name,
224
+ location: "path",
225
+ type: param.schema?.type ?? "string",
226
+ required: param.required ?? true,
227
+ description: param.description ?? "",
228
+ displayName: param["x-displayname"] ?? null,
229
+ example: operation.parameterExamples[param.name] ?? null,
230
+ validationRules: operation.validationRules[param.name] ?? null,
231
+ });
232
+ }
233
+ // Add query parameters with rich metadata
234
+ for (const param of operation.queryParameters) {
235
+ parameters.push({
236
+ name: param.name,
237
+ location: "query",
238
+ type: param.schema?.type ?? "string",
239
+ required: param.required ?? false,
240
+ description: param.description ?? "",
241
+ displayName: param["x-displayname"] ?? null,
242
+ example: operation.parameterExamples[param.name] ?? null,
243
+ validationRules: operation.validationRules[param.name] ?? null,
244
+ });
245
+ }
246
+ // Add body info
247
+ let requestBody = null;
248
+ if (operation.requestBodySchema) {
249
+ requestBody = {
250
+ required: operation.requiredParams.includes("body"),
251
+ contentType: "application/json",
252
+ schema: operation.requestBodySchema,
253
+ };
254
+ parameters.push({
255
+ name: "body",
256
+ location: "body",
257
+ type: "object",
258
+ required: operation.requiredParams.includes("body"),
259
+ description: "Request body as JSON object",
260
+ displayName: null,
261
+ example: null,
262
+ validationRules: null,
263
+ });
264
+ }
265
+ // Generate danger warning if applicable
266
+ const dangerWarning = getDangerWarning(operation.dangerLevel);
267
+ // Use prerequisites from operation metadata if available
268
+ const prerequisites = operation.operationMetadata?.conditions?.prerequisites ?? generatePrerequisites(operation);
269
+ // Build dependency intelligence from parsed operation
270
+ const dependencies = operation.dependencies.length > 0
271
+ ? {
272
+ requires: operation.dependencies.map((dep) => ({
273
+ resource: dep.resourceType,
274
+ domain: dep.domain || "unknown",
275
+ required: dep.required,
276
+ })),
277
+ requiredBy: [], // Populated from dependency graph at runtime
278
+ }
279
+ : null;
280
+ const oneOfFields = operation.oneOfGroups.length > 0
281
+ ? operation.oneOfGroups.map((group) => ({
282
+ field: group.choiceField,
283
+ options: group.options,
284
+ }))
285
+ : null;
286
+ const subscriptionRequirements = operation.subscriptionRequirements.length > 0
287
+ ? operation.subscriptionRequirements.map((sub) => `${sub.displayName} (${sub.tier})${sub.required ? " - required" : ""}`)
288
+ : null;
289
+ return {
290
+ mode: "documentation",
291
+ tool: operation.toolName,
292
+ description: operation.displayName ?? operation.summary,
293
+ httpMethod: operation.method,
294
+ apiPath: operation.path,
295
+ parameters,
296
+ requestBody,
297
+ exampleRequest: generateExampleRequest(operation),
298
+ terraformResource: generateTerraformResource(operation),
299
+ terraformExample: generateTerraformExample(operation),
300
+ prerequisites,
301
+ subscriptionTier: getSubscriptionTier(operation.resource),
302
+ // Rich metadata from enriched specs
303
+ displayName: operation.displayName,
304
+ dangerLevel: operation.dangerLevel,
305
+ dangerWarning,
306
+ sideEffects: operation.sideEffects,
307
+ confirmationRequired: operation.confirmationRequired,
308
+ parameterExamples: operation.parameterExamples,
309
+ validationRules: operation.validationRules,
310
+ requiredFields: operation.requiredFields,
311
+ operationMetadata: operation.operationMetadata,
312
+ curlExample: operation.curlExample,
313
+ // Dependency intelligence from enriched specs v1.0.67
314
+ dependencies,
315
+ oneOfFields,
316
+ subscriptionRequirements,
317
+ creationOrder: null, // Populated from dependency graph at runtime
318
+ };
319
+ }
320
+ /**
321
+ * Generate example request for documentation
322
+ * Uses x-ves-example values from enriched specs when available
323
+ */
324
+ function generateExampleRequest(operation) {
325
+ if (operation.operation !== "create" && operation.operation !== "update") {
326
+ return null;
327
+ }
328
+ const resource = operation.resource.toLowerCase();
329
+ const examples = operation.parameterExamples;
330
+ // If we have parameter examples from the spec, use them
331
+ if (Object.keys(examples).length > 0) {
332
+ return {
333
+ metadata: {
334
+ name: examples["name"] ?? examples["metadata.name"] ?? `example-${resource}`,
335
+ namespace: examples["namespace"] ?? examples["metadata.namespace"] ?? "default",
336
+ },
337
+ spec: {},
338
+ };
339
+ }
340
+ // Fallback to resource-specific examples
341
+ if (resource.includes("loadbalancer") || resource.includes("lb")) {
342
+ return {
343
+ metadata: {
344
+ name: "example-lb",
345
+ namespace: "default",
346
+ },
347
+ spec: {
348
+ domains: ["app.example.com"],
349
+ default_route_pools: [
350
+ {
351
+ pool: {
352
+ tenant: "your-tenant",
353
+ namespace: "default",
354
+ name: "example-origin-pool",
355
+ },
356
+ },
357
+ ],
358
+ },
359
+ };
360
+ }
361
+ if (resource.includes("origin") && resource.includes("pool")) {
362
+ return {
363
+ metadata: {
364
+ name: "example-origin-pool",
365
+ namespace: "default",
366
+ },
367
+ spec: {
368
+ origin_servers: [
369
+ {
370
+ public_ip: {
371
+ ip: "10.0.0.1",
372
+ },
373
+ },
374
+ ],
375
+ port: 80,
376
+ no_tls: {},
377
+ },
378
+ };
379
+ }
380
+ // Generic example
381
+ return {
382
+ metadata: {
383
+ name: `example-${resource}`,
384
+ namespace: "default",
385
+ },
386
+ spec: {},
387
+ };
388
+ }
389
+ /**
390
+ * Build tool description with rich metadata
391
+ */
392
+ function buildToolDescription(operation) {
393
+ const parts = [];
394
+ // Use displayName if available, otherwise summary
395
+ parts.push(operation.displayName ?? operation.summary);
396
+ // Add danger warning if applicable
397
+ const dangerWarning = getDangerWarning(operation.dangerLevel);
398
+ if (dangerWarning) {
399
+ parts.push("");
400
+ parts.push(dangerWarning);
401
+ }
402
+ // Add confirmation required notice
403
+ if (operation.confirmationRequired) {
404
+ parts.push("🔒 Confirmation required before execution.");
405
+ }
406
+ // Add side effects info
407
+ if (operation.sideEffects) {
408
+ const effects = [];
409
+ if (operation.sideEffects.creates?.length) {
410
+ effects.push(`Creates: ${operation.sideEffects.creates.join(", ")}`);
411
+ }
412
+ if (operation.sideEffects.modifies?.length) {
413
+ effects.push(`Modifies: ${operation.sideEffects.modifies.join(", ")}`);
414
+ }
415
+ if (operation.sideEffects.deletes?.length) {
416
+ effects.push(`Deletes: ${operation.sideEffects.deletes.join(", ")}`);
417
+ }
418
+ if (effects.length) {
419
+ parts.push("");
420
+ parts.push(`Side Effects: ${effects.join("; ")}`);
421
+ }
422
+ }
423
+ // Add standard metadata
424
+ parts.push("");
425
+ parts.push(`Domain: ${operation.domain}`);
426
+ parts.push(`Resource: ${operation.resource}`);
427
+ parts.push(`HTTP: ${operation.method} ${operation.path}`);
428
+ return parts.join("\n");
429
+ }
430
+ /**
431
+ * Register a tool on the MCP server
432
+ */
433
+ export function registerTool(server, operation, credentialManager, httpClient) {
434
+ const schema = buildToolSchema(operation);
435
+ const description = buildToolDescription(operation);
436
+ server.tool(operation.toolName, description, schema.shape, async (params) => {
437
+ try {
438
+ // Check authentication mode
439
+ if (credentialManager.getAuthMode() === AuthMode.NONE || !httpClient) {
440
+ // Documentation mode - return API documentation
441
+ const docResponse = buildDocumentationResponse(operation);
442
+ return {
443
+ content: [
444
+ {
445
+ type: "text",
446
+ text: JSON.stringify(docResponse, null, 2),
447
+ },
448
+ ],
449
+ };
450
+ }
451
+ // Execution mode - make actual API call
452
+ const startTime = Date.now();
453
+ // Build API path with parameters
454
+ let apiPath = operation.path;
455
+ for (const param of operation.pathParameters) {
456
+ const value = params[param.name];
457
+ if (value !== undefined) {
458
+ apiPath = apiPath.replace(`{${param.name}}`, String(value));
459
+ }
460
+ }
461
+ // Build query string
462
+ const queryParams = new URLSearchParams();
463
+ for (const param of operation.queryParameters) {
464
+ const value = params[param.name];
465
+ if (value !== undefined) {
466
+ queryParams.append(param.name, String(value));
467
+ }
468
+ }
469
+ if (queryParams.toString()) {
470
+ apiPath += `?${queryParams.toString()}`;
471
+ }
472
+ // Execute request
473
+ let response;
474
+ const body = params["body"];
475
+ switch (operation.method) {
476
+ case "GET":
477
+ response = await httpClient.get(apiPath);
478
+ break;
479
+ case "POST":
480
+ response = await httpClient.post(apiPath, body);
481
+ break;
482
+ case "PUT":
483
+ response = await httpClient.put(apiPath, body);
484
+ break;
485
+ case "DELETE":
486
+ response = await httpClient.delete(apiPath);
487
+ break;
488
+ default:
489
+ throw new Error(`Unsupported HTTP method: ${operation.method}`);
490
+ }
491
+ const duration = Date.now() - startTime;
492
+ const tenant = credentialManager.getTenant();
493
+ const resourceUrl = tenant ? `https://${tenant}.console.ves.volterra.io${apiPath}` : null;
494
+ const execResponse = {
495
+ mode: "execution",
496
+ tool: operation.toolName,
497
+ status: "success",
498
+ response: response.data,
499
+ resourceUrl,
500
+ duration,
501
+ };
502
+ return {
503
+ content: [
504
+ {
505
+ type: "text",
506
+ text: JSON.stringify(execResponse, null, 2),
507
+ },
508
+ ],
509
+ };
510
+ }
511
+ catch (error) {
512
+ logger.error(`Tool execution failed: ${operation.toolName}`, {
513
+ error: error instanceof Error ? error.message : String(error),
514
+ });
515
+ return formatErrorForMcp(error);
516
+ }
517
+ });
518
+ logger.debug(`Registered tool: ${operation.toolName}`);
519
+ }
520
+ /**
521
+ * Register all tools from parsed operations
522
+ */
523
+ export function registerAllTools(server, operations, credentialManager, httpClient) {
524
+ for (const operation of operations) {
525
+ registerTool(server, operation, credentialManager, httpClient);
526
+ }
527
+ logger.info(`Registered ${operations.length} tools`);
528
+ }
529
+ //# sourceMappingURL=tool-generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-generator.js","sourceRoot":"","sources":["../../src/generator/tool-generator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Transformers Module
3
+ *
4
+ * Exports text and schema transformation utilities for OpenAPI processing.
5
+ */
6
+ export { normalizeExamples, normalizeParameterExamples, hasMyPrefixExamples, } from "./normalize-examples.js";
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/generator/transformers/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,iBAAiB,EACjB,0BAA0B,EAC1B,mBAAmB,GACpB,MAAM,yBAAyB,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Transformers Module
3
+ *
4
+ * Exports text and schema transformation utilities for OpenAPI processing.
5
+ */
6
+ export { normalizeExamples, normalizeParameterExamples, hasMyPrefixExamples, } from "./normalize-examples.js";
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/generator/transformers/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,iBAAiB,EACjB,0BAA0B,EAC1B,mBAAmB,GACpB,MAAM,yBAAyB,CAAC"}
@@ -0,0 +1,48 @@
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
+ * Normalize examples in a description string
12
+ *
13
+ * Replaces "my-" prefixed example names with "example-" prefix
14
+ * to maintain consistent naming conventions throughout the codebase.
15
+ *
16
+ * @param description - The description text to normalize
17
+ * @returns Normalized description with "example-" prefixes
18
+ *
19
+ * @example
20
+ * ```typescript
21
+ * normalizeExamples("my-file, shared/my-file, my-ns/my-file")
22
+ * // Returns: "example-file, shared/example-file, example-ns/example-file"
23
+ *
24
+ * normalizeExamples("Use namespace 'my-namespace' with resource 'my-lb'")
25
+ * // Returns: "Use namespace 'example-namespace' with resource 'example-lb'"
26
+ * ```
27
+ * @deprecated Pre-enriched specs already have normalized examples
28
+ */
29
+ export declare function normalizeExamples(description: string): string;
30
+ /**
31
+ * Normalize examples in a parameter object
32
+ *
33
+ * Creates a new parameter object with normalized description
34
+ *
35
+ * @param param - The parameter object to normalize
36
+ * @returns New parameter object with normalized description
37
+ */
38
+ export declare function normalizeParameterExamples<T extends {
39
+ description?: string;
40
+ }>(param: T): T;
41
+ /**
42
+ * Check if a string contains "my-" prefixed examples
43
+ *
44
+ * @param text - Text to check
45
+ * @returns True if "my-" prefixed examples are found
46
+ */
47
+ export declare function hasMyPrefixExamples(text: string): boolean;
48
+ //# sourceMappingURL=normalize-examples.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"normalize-examples.d.ts","sourceRoot":"","sources":["../../../src/generator/transformers/normalize-examples.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAQH;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAK7D;AAED;;;;;;;GAOG;AACH,wBAAgB,0BAA0B,CAAC,CAAC,SAAS;IAAE,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CAQ1F;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEzD"}