@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,239 @@
1
+ /**
2
+ * Error handling utilities for F5XC API MCP Server
3
+ *
4
+ * Provides typed error classes for different error scenarios
5
+ * and utilities for error categorization and handling.
6
+ */
7
+ /**
8
+ * Base error class for F5XC API errors
9
+ */
10
+ export class F5XCError extends Error {
11
+ /** Error code for categorization */
12
+ code;
13
+ /** Additional error context */
14
+ context;
15
+ constructor(message, code, context) {
16
+ super(message);
17
+ this.name = "F5XCError";
18
+ this.code = code;
19
+ this.context = context;
20
+ // Maintains proper stack trace for where our error was thrown
21
+ if (Error.captureStackTrace) {
22
+ Error.captureStackTrace(this, F5XCError);
23
+ }
24
+ }
25
+ /**
26
+ * Convert error to JSON representation
27
+ */
28
+ toJSON() {
29
+ return {
30
+ name: this.name,
31
+ message: this.message,
32
+ code: this.code,
33
+ context: this.context,
34
+ };
35
+ }
36
+ }
37
+ /**
38
+ * Authentication-related errors
39
+ */
40
+ export class AuthenticationError extends F5XCError {
41
+ constructor(message, context) {
42
+ super(message, "AUTH_ERROR", context);
43
+ this.name = "AuthenticationError";
44
+ }
45
+ }
46
+ /**
47
+ * API request/response errors
48
+ */
49
+ export class F5XCApiError extends F5XCError {
50
+ /** HTTP status code */
51
+ status;
52
+ /** Raw API response */
53
+ response;
54
+ constructor(message, status, response, context) {
55
+ super(message, "API_ERROR", context);
56
+ this.name = "F5XCApiError";
57
+ this.status = status;
58
+ this.response = response;
59
+ }
60
+ toJSON() {
61
+ return {
62
+ ...super.toJSON(),
63
+ status: this.status,
64
+ response: this.response,
65
+ };
66
+ }
67
+ }
68
+ /**
69
+ * Configuration errors
70
+ */
71
+ export class ConfigurationError extends F5XCError {
72
+ constructor(message, context) {
73
+ super(message, "CONFIG_ERROR", context);
74
+ this.name = "ConfigurationError";
75
+ }
76
+ }
77
+ /**
78
+ * Validation errors for request parameters
79
+ */
80
+ export class ValidationError extends F5XCError {
81
+ /** Field-level validation errors */
82
+ errors;
83
+ constructor(message, errors, context) {
84
+ super(message, "VALIDATION_ERROR", context);
85
+ this.name = "ValidationError";
86
+ this.errors = errors;
87
+ }
88
+ toJSON() {
89
+ return {
90
+ ...super.toJSON(),
91
+ errors: this.errors,
92
+ };
93
+ }
94
+ }
95
+ /**
96
+ * Tool execution errors
97
+ */
98
+ export class ToolExecutionError extends F5XCError {
99
+ /** Name of the tool that failed */
100
+ toolName;
101
+ constructor(toolName, message, context) {
102
+ super(message, "TOOL_ERROR", context);
103
+ this.name = "ToolExecutionError";
104
+ this.toolName = toolName;
105
+ }
106
+ toJSON() {
107
+ return {
108
+ ...super.toJSON(),
109
+ toolName: this.toolName,
110
+ };
111
+ }
112
+ }
113
+ /**
114
+ * OpenAPI specification errors
115
+ */
116
+ export class SpecificationError extends F5XCError {
117
+ constructor(message, context) {
118
+ super(message, "SPEC_ERROR", context);
119
+ this.name = "SpecificationError";
120
+ }
121
+ }
122
+ /**
123
+ * Error categorization for MCP responses
124
+ */
125
+ export var ErrorCategory;
126
+ (function (ErrorCategory) {
127
+ /** User input validation errors */
128
+ ErrorCategory["VALIDATION"] = "validation";
129
+ /** Authentication/authorization errors */
130
+ ErrorCategory["AUTHENTICATION"] = "authentication";
131
+ /** Server-side errors */
132
+ ErrorCategory["SERVER"] = "server";
133
+ /** Network/connectivity errors */
134
+ ErrorCategory["NETWORK"] = "network";
135
+ /** Configuration errors */
136
+ ErrorCategory["CONFIGURATION"] = "configuration";
137
+ /** Unknown errors */
138
+ ErrorCategory["UNKNOWN"] = "unknown";
139
+ })(ErrorCategory || (ErrorCategory = {}));
140
+ /**
141
+ * Categorize an error for appropriate handling
142
+ */
143
+ export function categorizeError(error) {
144
+ if (error instanceof ValidationError) {
145
+ return ErrorCategory.VALIDATION;
146
+ }
147
+ if (error instanceof AuthenticationError) {
148
+ return ErrorCategory.AUTHENTICATION;
149
+ }
150
+ if (error instanceof ConfigurationError) {
151
+ return ErrorCategory.CONFIGURATION;
152
+ }
153
+ if (error instanceof F5XCApiError) {
154
+ if (error.status !== undefined) {
155
+ if (error.status === 401 || error.status === 403) {
156
+ return ErrorCategory.AUTHENTICATION;
157
+ }
158
+ if (error.status >= 400 && error.status < 500) {
159
+ return ErrorCategory.VALIDATION;
160
+ }
161
+ if (error.status >= 500) {
162
+ return ErrorCategory.SERVER;
163
+ }
164
+ }
165
+ return ErrorCategory.SERVER;
166
+ }
167
+ if (error instanceof Error) {
168
+ const message = error.message.toLowerCase();
169
+ if (message.includes("network") ||
170
+ message.includes("timeout") ||
171
+ message.includes("econnrefused") ||
172
+ message.includes("enotfound")) {
173
+ return ErrorCategory.NETWORK;
174
+ }
175
+ }
176
+ return ErrorCategory.UNKNOWN;
177
+ }
178
+ /**
179
+ * Format error for MCP tool response
180
+ */
181
+ export function formatErrorForMcp(error) {
182
+ const category = categorizeError(error);
183
+ let errorMessage;
184
+ let errorCode;
185
+ let details;
186
+ if (error instanceof F5XCError) {
187
+ errorMessage = error.message;
188
+ errorCode = error.code;
189
+ details = error.context;
190
+ }
191
+ else if (error instanceof Error) {
192
+ errorMessage = error.message;
193
+ errorCode = "UNKNOWN_ERROR";
194
+ }
195
+ else {
196
+ errorMessage = String(error);
197
+ errorCode = "UNKNOWN_ERROR";
198
+ }
199
+ const errorResponse = {
200
+ error: {
201
+ category,
202
+ code: errorCode,
203
+ message: errorMessage,
204
+ details,
205
+ },
206
+ };
207
+ return {
208
+ isError: true,
209
+ content: [
210
+ {
211
+ type: "text",
212
+ text: JSON.stringify(errorResponse, null, 2),
213
+ },
214
+ ],
215
+ };
216
+ }
217
+ /**
218
+ * Wrap async function with error handling
219
+ */
220
+ export function withErrorHandling(fn) {
221
+ return async (...args) => {
222
+ try {
223
+ return await fn(...args);
224
+ }
225
+ catch (error) {
226
+ if (error instanceof F5XCError) {
227
+ throw error;
228
+ }
229
+ if (error instanceof Error) {
230
+ throw new F5XCError(error.message, "UNKNOWN_ERROR", {
231
+ originalError: error.name,
232
+ stack: error.stack,
233
+ });
234
+ }
235
+ throw new F5XCError(String(error), "UNKNOWN_ERROR");
236
+ }
237
+ };
238
+ }
239
+ //# sourceMappingURL=error-handling.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error-handling.js","sourceRoot":"","sources":["../../src/utils/error-handling.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;GAEG;AACH,MAAM,OAAO,SAAU,SAAQ,KAAK;IAClC,oCAAoC;IAC3B,IAAI,CAAS;IACtB,+BAA+B;IACtB,OAAO,CAA2B;IAE3C,YAAY,OAAe,EAAE,IAAY,EAAE,OAAiC;QAC1E,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC;QACxB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QAEvB,8DAA8D;QAC9D,IAAI,KAAK,CAAC,iBAAiB,EAAE,CAAC;YAC5B,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC;IAED;;OAEG;IACH,MAAM;QACJ,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,OAAO,EAAE,IAAI,CAAC,OAAO;SACtB,CAAC;IACJ,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,mBAAoB,SAAQ,SAAS;IAChD,YAAY,OAAe,EAAE,OAAiC;QAC5D,KAAK,CAAC,OAAO,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;QACtC,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;IACpC,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,YAAa,SAAQ,SAAS;IACzC,uBAAuB;IACd,MAAM,CAAU;IACzB,uBAAuB;IACd,QAAQ,CAAW;IAE5B,YACE,OAAe,EACf,MAAe,EACf,QAAkB,EAClB,OAAiC;QAEjC,KAAK,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;QACrC,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;QAC3B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;IAED,MAAM;QACJ,OAAO;YACL,GAAG,KAAK,CAAC,MAAM,EAAE;YACjB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,QAAQ,EAAE,IAAI,CAAC,QAAQ;SACxB,CAAC;IACJ,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,kBAAmB,SAAQ,SAAS;IAC/C,YAAY,OAAe,EAAE,OAAiC;QAC5D,KAAK,CAAC,OAAO,EAAE,cAAc,EAAE,OAAO,CAAC,CAAC;QACxC,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;IACnC,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,eAAgB,SAAQ,SAAS;IAC5C,oCAAoC;IAC3B,MAAM,CAGZ;IAEH,YACE,OAAe,EACf,MAAiD,EACjD,OAAiC;QAEjC,KAAK,CAAC,OAAO,EAAE,kBAAkB,EAAE,OAAO,CAAC,CAAC;QAC5C,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;QAC9B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,MAAM;QACJ,OAAO;YACL,GAAG,KAAK,CAAC,MAAM,EAAE;YACjB,MAAM,EAAE,IAAI,CAAC,MAAM;SACpB,CAAC;IACJ,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,kBAAmB,SAAQ,SAAS;IAC/C,mCAAmC;IAC1B,QAAQ,CAAS;IAE1B,YAAY,QAAgB,EAAE,OAAe,EAAE,OAAiC;QAC9E,KAAK,CAAC,OAAO,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;QACtC,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;QACjC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;IAED,MAAM;QACJ,OAAO;YACL,GAAG,KAAK,CAAC,MAAM,EAAE;YACjB,QAAQ,EAAE,IAAI,CAAC,QAAQ;SACxB,CAAC;IACJ,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,kBAAmB,SAAQ,SAAS;IAC/C,YAAY,OAAe,EAAE,OAAiC;QAC5D,KAAK,CAAC,OAAO,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;QACtC,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;IACnC,CAAC;CACF;AAED;;GAEG;AACH,MAAM,CAAN,IAAY,aAaX;AAbD,WAAY,aAAa;IACvB,mCAAmC;IACnC,0CAAyB,CAAA;IACzB,0CAA0C;IAC1C,kDAAiC,CAAA;IACjC,yBAAyB;IACzB,kCAAiB,CAAA;IACjB,kCAAkC;IAClC,oCAAmB,CAAA;IACnB,2BAA2B;IAC3B,gDAA+B,CAAA;IAC/B,qBAAqB;IACrB,oCAAmB,CAAA;AACrB,CAAC,EAbW,aAAa,KAAb,aAAa,QAaxB;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,KAAc;IAC5C,IAAI,KAAK,YAAY,eAAe,EAAE,CAAC;QACrC,OAAO,aAAa,CAAC,UAAU,CAAC;IAClC,CAAC;IACD,IAAI,KAAK,YAAY,mBAAmB,EAAE,CAAC;QACzC,OAAO,aAAa,CAAC,cAAc,CAAC;IACtC,CAAC;IACD,IAAI,KAAK,YAAY,kBAAkB,EAAE,CAAC;QACxC,OAAO,aAAa,CAAC,aAAa,CAAC;IACrC,CAAC;IACD,IAAI,KAAK,YAAY,YAAY,EAAE,CAAC;QAClC,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAC/B,IAAI,KAAK,CAAC,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;gBACjD,OAAO,aAAa,CAAC,cAAc,CAAC;YACtC,CAAC;YACD,IAAI,KAAK,CAAC,MAAM,IAAI,GAAG,IAAI,KAAK,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;gBAC9C,OAAO,aAAa,CAAC,UAAU,CAAC;YAClC,CAAC;YACD,IAAI,KAAK,CAAC,MAAM,IAAI,GAAG,EAAE,CAAC;gBACxB,OAAO,aAAa,CAAC,MAAM,CAAC;YAC9B,CAAC;QACH,CAAC;QACD,OAAO,aAAa,CAAC,MAAM,CAAC;IAC9B,CAAC;IACD,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;QAC3B,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;QAC5C,IACE,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC;YAC3B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC;YAC3B,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC;YAChC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,EAC7B,CAAC;YACD,OAAO,aAAa,CAAC,OAAO,CAAC;QAC/B,CAAC;IACH,CAAC;IACD,OAAO,aAAa,CAAC,OAAO,CAAC;AAC/B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAc;IAI9C,MAAM,QAAQ,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;IAExC,IAAI,YAAoB,CAAC;IACzB,IAAI,SAAiB,CAAC;IACtB,IAAI,OAA4C,CAAC;IAEjD,IAAI,KAAK,YAAY,SAAS,EAAE,CAAC;QAC/B,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC;QAC7B,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC;QACvB,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;IAC1B,CAAC;SAAM,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;QAClC,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC;QAC7B,SAAS,GAAG,eAAe,CAAC;IAC9B,CAAC;SAAM,CAAC;QACN,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QAC7B,SAAS,GAAG,eAAe,CAAC;IAC9B,CAAC;IAED,MAAM,aAAa,GAAG;QACpB,KAAK,EAAE;YACL,QAAQ;YACR,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,YAAY;YACrB,OAAO;SACR;KACF,CAAC;IAEF,OAAO;QACL,OAAO,EAAE,IAAI;QACb,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;aAC7C;SACF;KACF,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAC/B,EAA8B;IAE9B,OAAO,KAAK,EAAE,GAAG,IAAO,EAAc,EAAE;QACtC,IAAI,CAAC;YACH,OAAO,MAAM,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;QAC3B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,SAAS,EAAE,CAAC;gBAC/B,MAAM,KAAK,CAAC;YACd,CAAC;YACD,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;gBAC3B,MAAM,IAAI,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,eAAe,EAAE;oBAClD,aAAa,EAAE,KAAK,CAAC,IAAI;oBACzB,KAAK,EAAE,KAAK,CAAC,KAAK;iBACnB,CAAC,CAAC;YACL,CAAC;YACD,MAAM,IAAI,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,eAAe,CAAC,CAAC;QACtD,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Utils Module - Export all utility functions
3
+ */
4
+ export { logger, createLogger, LogLevel } from "./logging.js";
5
+ export type { LoggerConfig } from "./logging.js";
6
+ export { F5XCError, AuthenticationError, F5XCApiError, ConfigurationError, ValidationError, ToolExecutionError, SpecificationError, ErrorCategory, categorizeError, formatErrorForMcp, withErrorHandling, } from "./error-handling.js";
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAC9D,YAAY,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAEjD,OAAO,EACL,SAAS,EACT,mBAAmB,EACnB,YAAY,EACZ,kBAAkB,EAClB,eAAe,EACf,kBAAkB,EAClB,kBAAkB,EAClB,aAAa,EACb,eAAe,EACf,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Utils Module - Export all utility functions
3
+ */
4
+ export { logger, createLogger, LogLevel } from "./logging.js";
5
+ export { F5XCError, AuthenticationError, F5XCApiError, ConfigurationError, ValidationError, ToolExecutionError, SpecificationError, ErrorCategory, categorizeError, formatErrorForMcp, withErrorHandling, } from "./error-handling.js";
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAG9D,OAAO,EACL,SAAS,EACT,mBAAmB,EACnB,YAAY,EACZ,kBAAkB,EAClB,eAAe,EACf,kBAAkB,EAClB,kBAAkB,EAClB,aAAa,EACb,eAAe,EACf,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,75 @@
1
+ /**
2
+ * Logging utilities for F5XC API MCP Server
3
+ *
4
+ * Uses stderr for logging to avoid interfering with STDIO transport.
5
+ * Provides structured logging with levels and context.
6
+ */
7
+ /**
8
+ * Log levels
9
+ */
10
+ export declare enum LogLevel {
11
+ DEBUG = "debug",
12
+ INFO = "info",
13
+ WARN = "warn",
14
+ ERROR = "error"
15
+ }
16
+ /**
17
+ * Logger configuration
18
+ */
19
+ export interface LoggerConfig {
20
+ /** Minimum log level to output */
21
+ level: LogLevel;
22
+ /** Include timestamp in log output */
23
+ timestamps: boolean;
24
+ /** Enable JSON format for structured logging */
25
+ json: boolean;
26
+ }
27
+ /**
28
+ * Logger class for structured logging to stderr
29
+ */
30
+ declare class Logger {
31
+ private config;
32
+ constructor(config?: Partial<LoggerConfig>);
33
+ /**
34
+ * Check if a log level should be output
35
+ */
36
+ private shouldLog;
37
+ /**
38
+ * Format and output a log entry
39
+ */
40
+ private log;
41
+ /**
42
+ * Log a debug message
43
+ */
44
+ debug(message: string, context?: Record<string, unknown>): void;
45
+ /**
46
+ * Log an info message
47
+ */
48
+ info(message: string, context?: Record<string, unknown>): void;
49
+ /**
50
+ * Log a warning message
51
+ */
52
+ warn(message: string, context?: Record<string, unknown>): void;
53
+ /**
54
+ * Log an error message
55
+ */
56
+ error(message: string, context?: Record<string, unknown>): void;
57
+ /**
58
+ * Set the minimum log level
59
+ */
60
+ setLevel(level: LogLevel): void;
61
+ /**
62
+ * Get current configuration
63
+ */
64
+ getConfig(): Readonly<LoggerConfig>;
65
+ }
66
+ /**
67
+ * Singleton logger instance
68
+ */
69
+ export declare const logger: Logger;
70
+ /**
71
+ * Create a child logger with additional context
72
+ */
73
+ export declare function createLogger(config?: Partial<LoggerConfig>): Logger;
74
+ export {};
75
+ //# sourceMappingURL=logging.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logging.d.ts","sourceRoot":"","sources":["../../src/utils/logging.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;GAEG;AACH,oBAAY,QAAQ;IAClB,KAAK,UAAU;IACf,IAAI,SAAS;IACb,IAAI,SAAS;IACb,KAAK,UAAU;CAChB;AAYD;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,kCAAkC;IAClC,KAAK,EAAE,QAAQ,CAAC;IAChB,sCAAsC;IACtC,UAAU,EAAE,OAAO,CAAC;IACpB,gDAAgD;IAChD,IAAI,EAAE,OAAO,CAAC;CACf;AAqBD;;GAEG;AACH,cAAM,MAAM;IACV,OAAO,CAAC,MAAM,CAAe;gBAEjB,MAAM,GAAE,OAAO,CAAC,YAAY,CAAM;IAc9C;;OAEG;IACH,OAAO,CAAC,SAAS;IAIjB;;OAEG;IACH,OAAO,CAAC,GAAG;IA+BX;;OAEG;IACH,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAI/D;;OAEG;IACH,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAI9D;;OAEG;IACH,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAI9D;;OAEG;IACH,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAI/D;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI;IAI/B;;OAEG;IACH,SAAS,IAAI,QAAQ,CAAC,YAAY,CAAC;CAGpC;AAED;;GAEG;AACH,eAAO,MAAM,MAAM,QAAe,CAAC;AAEnC;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,MAAM,CAEnE"}
@@ -0,0 +1,131 @@
1
+ /**
2
+ * Logging utilities for F5XC API MCP Server
3
+ *
4
+ * Uses stderr for logging to avoid interfering with STDIO transport.
5
+ * Provides structured logging with levels and context.
6
+ */
7
+ /**
8
+ * Log levels
9
+ */
10
+ export var LogLevel;
11
+ (function (LogLevel) {
12
+ LogLevel["DEBUG"] = "debug";
13
+ LogLevel["INFO"] = "info";
14
+ LogLevel["WARN"] = "warn";
15
+ LogLevel["ERROR"] = "error";
16
+ })(LogLevel || (LogLevel = {}));
17
+ /**
18
+ * Log level priority for filtering
19
+ */
20
+ const LOG_LEVEL_PRIORITY = {
21
+ [LogLevel.DEBUG]: 0,
22
+ [LogLevel.INFO]: 1,
23
+ [LogLevel.WARN]: 2,
24
+ [LogLevel.ERROR]: 3,
25
+ };
26
+ /**
27
+ * Default logger configuration
28
+ */
29
+ const DEFAULT_CONFIG = {
30
+ level: LogLevel.INFO,
31
+ timestamps: true,
32
+ json: false,
33
+ };
34
+ /**
35
+ * Logger class for structured logging to stderr
36
+ */
37
+ class Logger {
38
+ config;
39
+ constructor(config = {}) {
40
+ this.config = { ...DEFAULT_CONFIG, ...config };
41
+ // Check for environment variable overrides
42
+ const envLevel = process.env["LOG_LEVEL"]?.toLowerCase();
43
+ if (envLevel && Object.values(LogLevel).includes(envLevel)) {
44
+ this.config.level = envLevel;
45
+ }
46
+ if (process.env["LOG_JSON"] === "true") {
47
+ this.config.json = true;
48
+ }
49
+ }
50
+ /**
51
+ * Check if a log level should be output
52
+ */
53
+ shouldLog(level) {
54
+ return LOG_LEVEL_PRIORITY[level] >= LOG_LEVEL_PRIORITY[this.config.level];
55
+ }
56
+ /**
57
+ * Format and output a log entry
58
+ */
59
+ log(entry) {
60
+ if (!this.shouldLog(entry.level)) {
61
+ return;
62
+ }
63
+ if (this.config.timestamps) {
64
+ entry.timestamp = new Date().toISOString();
65
+ }
66
+ if (this.config.json) {
67
+ // Structured JSON output
68
+ process.stderr.write(JSON.stringify(entry) + "\n");
69
+ }
70
+ else {
71
+ // Human-readable output
72
+ const parts = [];
73
+ if (entry.timestamp) {
74
+ parts.push(`[${entry.timestamp}]`);
75
+ }
76
+ parts.push(`[${entry.level.toUpperCase()}]`);
77
+ parts.push(entry.message);
78
+ if (entry.context && Object.keys(entry.context).length > 0) {
79
+ parts.push(JSON.stringify(entry.context));
80
+ }
81
+ process.stderr.write(parts.join(" ") + "\n");
82
+ }
83
+ }
84
+ /**
85
+ * Log a debug message
86
+ */
87
+ debug(message, context) {
88
+ this.log({ level: LogLevel.DEBUG, message, context });
89
+ }
90
+ /**
91
+ * Log an info message
92
+ */
93
+ info(message, context) {
94
+ this.log({ level: LogLevel.INFO, message, context });
95
+ }
96
+ /**
97
+ * Log a warning message
98
+ */
99
+ warn(message, context) {
100
+ this.log({ level: LogLevel.WARN, message, context });
101
+ }
102
+ /**
103
+ * Log an error message
104
+ */
105
+ error(message, context) {
106
+ this.log({ level: LogLevel.ERROR, message, context });
107
+ }
108
+ /**
109
+ * Set the minimum log level
110
+ */
111
+ setLevel(level) {
112
+ this.config.level = level;
113
+ }
114
+ /**
115
+ * Get current configuration
116
+ */
117
+ getConfig() {
118
+ return Object.freeze({ ...this.config });
119
+ }
120
+ }
121
+ /**
122
+ * Singleton logger instance
123
+ */
124
+ export const logger = new Logger();
125
+ /**
126
+ * Create a child logger with additional context
127
+ */
128
+ export function createLogger(config) {
129
+ return new Logger(config);
130
+ }
131
+ //# sourceMappingURL=logging.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logging.js","sourceRoot":"","sources":["../../src/utils/logging.ts"],"names":[],"mappings":"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"}
package/manifest.json ADDED
@@ -0,0 +1,143 @@
1
+ {
2
+ "manifest_version": "0.3",
3
+ "name": "f5xc-api-mcp",
4
+ "display_name": "F5 Distributed Cloud API",
5
+ "version": "1.0.0",
6
+ "description": "MCP server for F5 Distributed Cloud API - AI-powered infrastructure management with 1500+ tools across 22 domains",
7
+ "long_description": "Enables AI assistants to manage F5 Distributed Cloud resources including HTTP load balancers, origin pools, WAF policies, DNS zones, and multi-cloud sites. Works in dual mode: documentation mode (no auth) or execution mode (with auth). Every response includes equivalent f5xcctl CLI commands and Terraform HCL examples.",
8
+ "author": {
9
+ "name": "Robin Mordasiewicz"
10
+ },
11
+ "repository": {
12
+ "type": "git",
13
+ "url": "https://github.com/robinmordasiewicz/f5xc-api-mcp.git"
14
+ },
15
+ "homepage": "https://github.com/robinmordasiewicz/f5xc-api-mcp",
16
+ "documentation": "https://robinmordasiewicz.github.io/f5xc-api-mcp",
17
+ "support": "https://github.com/robinmordasiewicz/f5xc-api-mcp/issues",
18
+ "keywords": [
19
+ "mcp",
20
+ "f5",
21
+ "f5xc",
22
+ "distributed-cloud",
23
+ "api",
24
+ "infrastructure",
25
+ "load-balancer",
26
+ "waf",
27
+ "dns",
28
+ "terraform",
29
+ "ai"
30
+ ],
31
+ "license": "MIT",
32
+ "compatibility": {
33
+ "claude_desktop": ">=1.0.0",
34
+ "platforms": ["darwin", "win32", "linux"],
35
+ "runtimes": {
36
+ "node": ">=18.0.0"
37
+ }
38
+ },
39
+ "server": {
40
+ "type": "node",
41
+ "entry_point": "dist/index.js",
42
+ "mcp_config": {
43
+ "command": "node",
44
+ "args": ["${__dirname}/dist/index.js"],
45
+ "env": {
46
+ "F5XC_API_URL": "${user_config.f5xc_api_url}",
47
+ "F5XC_API_TOKEN": "${user_config.f5xc_api_token}",
48
+ "F5XC_P12_FILE": "${user_config.f5xc_p12_file}",
49
+ "F5XC_P12_PASSWORD": "${user_config.f5xc_p12_password}",
50
+ "LOG_LEVEL": "${user_config.log_level}"
51
+ }
52
+ }
53
+ },
54
+ "user_config": {
55
+ "f5xc_api_url": {
56
+ "type": "string",
57
+ "title": "F5XC Tenant URL",
58
+ "description": "F5 Distributed Cloud tenant URL (e.g., https://your-tenant.console.ves.volterra.io)",
59
+ "required": false
60
+ },
61
+ "f5xc_api_token": {
62
+ "type": "string",
63
+ "title": "API Token",
64
+ "description": "API token for authentication (optional - runs in documentation mode without)",
65
+ "sensitive": true,
66
+ "required": false
67
+ },
68
+ "f5xc_p12_file": {
69
+ "type": "file",
70
+ "title": "P12 Certificate File",
71
+ "description": "Path to P12 certificate for mTLS authentication (alternative to API token)",
72
+ "required": false
73
+ },
74
+ "f5xc_p12_password": {
75
+ "type": "string",
76
+ "title": "P12 Password",
77
+ "description": "Password for P12 certificate",
78
+ "sensitive": true,
79
+ "required": false
80
+ },
81
+ "log_level": {
82
+ "type": "string",
83
+ "title": "Log Level",
84
+ "description": "Logging verbosity (debug, info, warn, error)",
85
+ "default": "info",
86
+ "required": false
87
+ }
88
+ },
89
+ "tools": [
90
+ {
91
+ "name": "f5xc-api-server-info",
92
+ "description": "Get server information and authentication status"
93
+ },
94
+ {
95
+ "name": "f5xc-api-search-tools",
96
+ "description": "Search for F5XC API tools using natural language"
97
+ },
98
+ {
99
+ "name": "f5xc-api-describe-tool",
100
+ "description": "Get detailed information about a specific tool"
101
+ },
102
+ {
103
+ "name": "f5xc-api-execute-tool",
104
+ "description": "Execute an F5XC API tool"
105
+ },
106
+ {
107
+ "name": "f5xc-api-search-resources",
108
+ "description": "Search for F5XC resources"
109
+ },
110
+ {
111
+ "name": "f5xc-api-execute-resource",
112
+ "description": "Execute CRUD operation on a resource"
113
+ }
114
+ ],
115
+ "tools_generated": true,
116
+ "prompts": [
117
+ {
118
+ "name": "deploy-http-loadbalancer",
119
+ "description": "Guided workflow for deploying HTTP Load Balancer with origin pool",
120
+ "arguments": ["namespace", "name"],
121
+ "text": "Deploy an HTTP Load Balancer named ${arguments.name} in namespace ${arguments.namespace}"
122
+ },
123
+ {
124
+ "name": "configure-waf",
125
+ "description": "Guided workflow for configuring Web Application Firewall",
126
+ "arguments": ["namespace"],
127
+ "text": "Configure WAF protection in namespace ${arguments.namespace}"
128
+ },
129
+ {
130
+ "name": "create-multicloud-site",
131
+ "description": "Guided workflow for deploying F5XC site in AWS/Azure/GCP",
132
+ "arguments": ["provider", "region"],
133
+ "text": "Create a multi-cloud site on ${arguments.provider} in ${arguments.region}"
134
+ },
135
+ {
136
+ "name": "generate-terraform",
137
+ "description": "Export F5XC resources as Terraform configuration",
138
+ "arguments": ["resource_type", "namespace"],
139
+ "text": "Generate Terraform for ${arguments.resource_type} resources in ${arguments.namespace}"
140
+ }
141
+ ],
142
+ "prompts_generated": false
143
+ }