@robinmordasiewicz/f5xc-api-mcp 3.0.0

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 (212) hide show
  1. package/CHANGELOG.md +74 -0
  2. package/README.md +234 -0
  3. package/dist/auth/credential-manager.d.ts +116 -0
  4. package/dist/auth/credential-manager.d.ts.map +1 -0
  5. package/dist/auth/credential-manager.js +208 -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/generator/index.d.ts +7 -0
  16. package/dist/generator/index.d.ts.map +1 -0
  17. package/dist/generator/index.js +7 -0
  18. package/dist/generator/index.js.map +1 -0
  19. package/dist/generator/naming/acronyms.d.ts +81 -0
  20. package/dist/generator/naming/acronyms.d.ts.map +1 -0
  21. package/dist/generator/naming/acronyms.js +253 -0
  22. package/dist/generator/naming/acronyms.js.map +1 -0
  23. package/dist/generator/naming/index.d.ts +6 -0
  24. package/dist/generator/naming/index.d.ts.map +1 -0
  25. package/dist/generator/naming/index.js +6 -0
  26. package/dist/generator/naming/index.js.map +1 -0
  27. package/dist/generator/naming/volterra-mapping.d.ts +102 -0
  28. package/dist/generator/naming/volterra-mapping.d.ts.map +1 -0
  29. package/dist/generator/naming/volterra-mapping.js +259 -0
  30. package/dist/generator/naming/volterra-mapping.js.map +1 -0
  31. package/dist/generator/openapi-parser.d.ts +339 -0
  32. package/dist/generator/openapi-parser.d.ts.map +1 -0
  33. package/dist/generator/openapi-parser.js +463 -0
  34. package/dist/generator/openapi-parser.js.map +1 -0
  35. package/dist/generator/tool-generator.d.ts +74 -0
  36. package/dist/generator/tool-generator.d.ts.map +1 -0
  37. package/dist/generator/tool-generator.js +387 -0
  38. package/dist/generator/tool-generator.js.map +1 -0
  39. package/dist/generator/transformers/index.d.ts +7 -0
  40. package/dist/generator/transformers/index.d.ts.map +1 -0
  41. package/dist/generator/transformers/index.js +7 -0
  42. package/dist/generator/transformers/index.js.map +1 -0
  43. package/dist/generator/transformers/normalize-examples.d.ts +48 -0
  44. package/dist/generator/transformers/normalize-examples.d.ts.map +1 -0
  45. package/dist/generator/transformers/normalize-examples.js +66 -0
  46. package/dist/generator/transformers/normalize-examples.js.map +1 -0
  47. package/dist/index.d.ts +21 -0
  48. package/dist/index.d.ts.map +1 -0
  49. package/dist/index.js +70 -0
  50. package/dist/index.js.map +1 -0
  51. package/dist/prompts/index.d.ts +6 -0
  52. package/dist/prompts/index.d.ts.map +1 -0
  53. package/dist/prompts/index.js +5 -0
  54. package/dist/prompts/index.js.map +1 -0
  55. package/dist/prompts/workflows.d.ts +59 -0
  56. package/dist/prompts/workflows.d.ts.map +1 -0
  57. package/dist/prompts/workflows.js +585 -0
  58. package/dist/prompts/workflows.js.map +1 -0
  59. package/dist/resources/handlers.d.ts +72 -0
  60. package/dist/resources/handlers.d.ts.map +1 -0
  61. package/dist/resources/handlers.js +279 -0
  62. package/dist/resources/handlers.js.map +1 -0
  63. package/dist/resources/index.d.ts +8 -0
  64. package/dist/resources/index.d.ts.map +1 -0
  65. package/dist/resources/index.js +6 -0
  66. package/dist/resources/index.js.map +1 -0
  67. package/dist/resources/templates.d.ts +86 -0
  68. package/dist/resources/templates.d.ts.map +1 -0
  69. package/dist/resources/templates.js +248 -0
  70. package/dist/resources/templates.js.map +1 -0
  71. package/dist/server.d.ts +78 -0
  72. package/dist/server.d.ts.map +1 -0
  73. package/dist/server.js +426 -0
  74. package/dist/server.js.map +1 -0
  75. package/dist/tools/discovery/consolidate.d.ts +97 -0
  76. package/dist/tools/discovery/consolidate.d.ts.map +1 -0
  77. package/dist/tools/discovery/consolidate.js +200 -0
  78. package/dist/tools/discovery/consolidate.js.map +1 -0
  79. package/dist/tools/discovery/describe.d.ts +132 -0
  80. package/dist/tools/discovery/describe.d.ts.map +1 -0
  81. package/dist/tools/discovery/describe.js +206 -0
  82. package/dist/tools/discovery/describe.js.map +1 -0
  83. package/dist/tools/discovery/execute.d.ts +98 -0
  84. package/dist/tools/discovery/execute.d.ts.map +1 -0
  85. package/dist/tools/discovery/execute.js +251 -0
  86. package/dist/tools/discovery/execute.js.map +1 -0
  87. package/dist/tools/discovery/index-loader.d.ts +28 -0
  88. package/dist/tools/discovery/index-loader.d.ts.map +1 -0
  89. package/dist/tools/discovery/index-loader.js +69 -0
  90. package/dist/tools/discovery/index-loader.js.map +1 -0
  91. package/dist/tools/discovery/index.d.ts +185 -0
  92. package/dist/tools/discovery/index.d.ts.map +1 -0
  93. package/dist/tools/discovery/index.js +177 -0
  94. package/dist/tools/discovery/index.js.map +1 -0
  95. package/dist/tools/discovery/search.d.ts +41 -0
  96. package/dist/tools/discovery/search.d.ts.map +1 -0
  97. package/dist/tools/discovery/search.js +155 -0
  98. package/dist/tools/discovery/search.js.map +1 -0
  99. package/dist/tools/discovery/types.d.ts +70 -0
  100. package/dist/tools/discovery/types.d.ts.map +1 -0
  101. package/dist/tools/discovery/types.js +9 -0
  102. package/dist/tools/discovery/types.js.map +1 -0
  103. package/dist/tools/generated/ai_intelligence/index.d.ts +8 -0
  104. package/dist/tools/generated/ai_intelligence/index.d.ts.map +1 -0
  105. package/dist/tools/generated/ai_intelligence/index.js +282 -0
  106. package/dist/tools/generated/ai_intelligence/index.js.map +1 -0
  107. package/dist/tools/generated/api_security/index.d.ts +8 -0
  108. package/dist/tools/generated/api_security/index.d.ts.map +1 -0
  109. package/dist/tools/generated/api_security/index.js +1852 -0
  110. package/dist/tools/generated/api_security/index.js.map +1 -0
  111. package/dist/tools/generated/applications/index.d.ts +8 -0
  112. package/dist/tools/generated/applications/index.d.ts.map +1 -0
  113. package/dist/tools/generated/applications/index.js +1589 -0
  114. package/dist/tools/generated/applications/index.js.map +1 -0
  115. package/dist/tools/generated/bigip/index.d.ts +8 -0
  116. package/dist/tools/generated/bigip/index.d.ts.map +1 -0
  117. package/dist/tools/generated/bigip/index.js +1173 -0
  118. package/dist/tools/generated/bigip/index.js.map +1 -0
  119. package/dist/tools/generated/billing/index.d.ts +8 -0
  120. package/dist/tools/generated/billing/index.d.ts.map +1 -0
  121. package/dist/tools/generated/billing/index.js +759 -0
  122. package/dist/tools/generated/billing/index.js.map +1 -0
  123. package/dist/tools/generated/cdn/index.d.ts +8 -0
  124. package/dist/tools/generated/cdn/index.d.ts.map +1 -0
  125. package/dist/tools/generated/cdn/index.js +841 -0
  126. package/dist/tools/generated/cdn/index.js.map +1 -0
  127. package/dist/tools/generated/config/index.d.ts +8 -0
  128. package/dist/tools/generated/config/index.d.ts.map +1 -0
  129. package/dist/tools/generated/config/index.js +316 -0
  130. package/dist/tools/generated/config/index.js.map +1 -0
  131. package/dist/tools/generated/identity/index.d.ts +8 -0
  132. package/dist/tools/generated/identity/index.d.ts.map +1 -0
  133. package/dist/tools/generated/identity/index.js +5371 -0
  134. package/dist/tools/generated/identity/index.js.map +1 -0
  135. package/dist/tools/generated/infrastructure/index.d.ts +8 -0
  136. package/dist/tools/generated/infrastructure/index.d.ts.map +1 -0
  137. package/dist/tools/generated/infrastructure/index.js +5342 -0
  138. package/dist/tools/generated/infrastructure/index.js.map +1 -0
  139. package/dist/tools/generated/infrastructure_protection/index.d.ts +8 -0
  140. package/dist/tools/generated/infrastructure_protection/index.d.ts.map +1 -0
  141. package/dist/tools/generated/infrastructure_protection/index.js +2919 -0
  142. package/dist/tools/generated/infrastructure_protection/index.js.map +1 -0
  143. package/dist/tools/generated/integrations/index.d.ts +8 -0
  144. package/dist/tools/generated/integrations/index.d.ts.map +1 -0
  145. package/dist/tools/generated/integrations/index.js +1995 -0
  146. package/dist/tools/generated/integrations/index.js.map +1 -0
  147. package/dist/tools/generated/load_balancer/index.d.ts +8 -0
  148. package/dist/tools/generated/load_balancer/index.d.ts.map +1 -0
  149. package/dist/tools/generated/load_balancer/index.js +2269 -0
  150. package/dist/tools/generated/load_balancer/index.js.map +1 -0
  151. package/dist/tools/generated/networking/index.d.ts +8 -0
  152. package/dist/tools/generated/networking/index.d.ts.map +1 -0
  153. package/dist/tools/generated/networking/index.js +11289 -0
  154. package/dist/tools/generated/networking/index.js.map +1 -0
  155. package/dist/tools/generated/nginx/index.d.ts +8 -0
  156. package/dist/tools/generated/nginx/index.d.ts.map +1 -0
  157. package/dist/tools/generated/nginx/index.js +680 -0
  158. package/dist/tools/generated/nginx/index.js.map +1 -0
  159. package/dist/tools/generated/observability/index.d.ts +8 -0
  160. package/dist/tools/generated/observability/index.d.ts.map +1 -0
  161. package/dist/tools/generated/observability/index.js +6140 -0
  162. package/dist/tools/generated/observability/index.js.map +1 -0
  163. package/dist/tools/generated/operations/index.d.ts +8 -0
  164. package/dist/tools/generated/operations/index.d.ts.map +1 -0
  165. package/dist/tools/generated/operations/index.js +1759 -0
  166. package/dist/tools/generated/operations/index.js.map +1 -0
  167. package/dist/tools/generated/security/index.d.ts +8 -0
  168. package/dist/tools/generated/security/index.d.ts.map +1 -0
  169. package/dist/tools/generated/security/index.js +9111 -0
  170. package/dist/tools/generated/security/index.js.map +1 -0
  171. package/dist/tools/generated/service_mesh/index.d.ts +8 -0
  172. package/dist/tools/generated/service_mesh/index.d.ts.map +1 -0
  173. package/dist/tools/generated/service_mesh/index.js +1628 -0
  174. package/dist/tools/generated/service_mesh/index.js.map +1 -0
  175. package/dist/tools/generated/shape_security/index.d.ts +8 -0
  176. package/dist/tools/generated/shape_security/index.d.ts.map +1 -0
  177. package/dist/tools/generated/shape_security/index.js +4121 -0
  178. package/dist/tools/generated/shape_security/index.js.map +1 -0
  179. package/dist/tools/generated/subscriptions/index.d.ts +8 -0
  180. package/dist/tools/generated/subscriptions/index.d.ts.map +1 -0
  181. package/dist/tools/generated/subscriptions/index.js +778 -0
  182. package/dist/tools/generated/subscriptions/index.js.map +1 -0
  183. package/dist/tools/generated/tenant_management/index.d.ts +8 -0
  184. package/dist/tools/generated/tenant_management/index.d.ts.map +1 -0
  185. package/dist/tools/generated/tenant_management/index.js +2292 -0
  186. package/dist/tools/generated/tenant_management/index.js.map +1 -0
  187. package/dist/tools/generated/vpn/index.d.ts +8 -0
  188. package/dist/tools/generated/vpn/index.d.ts.map +1 -0
  189. package/dist/tools/generated/vpn/index.js +1183 -0
  190. package/dist/tools/generated/vpn/index.js.map +1 -0
  191. package/dist/tools/index.d.ts +7 -0
  192. package/dist/tools/index.d.ts.map +1 -0
  193. package/dist/tools/index.js +6 -0
  194. package/dist/tools/index.js.map +1 -0
  195. package/dist/tools/registry.d.ts +27 -0
  196. package/dist/tools/registry.d.ts.map +1 -0
  197. package/dist/tools/registry.js +83 -0
  198. package/dist/tools/registry.js.map +1 -0
  199. package/dist/utils/error-handling.d.ts +109 -0
  200. package/dist/utils/error-handling.d.ts.map +1 -0
  201. package/dist/utils/error-handling.js +239 -0
  202. package/dist/utils/error-handling.js.map +1 -0
  203. package/dist/utils/index.d.ts +7 -0
  204. package/dist/utils/index.d.ts.map +1 -0
  205. package/dist/utils/index.js +6 -0
  206. package/dist/utils/index.js.map +1 -0
  207. package/dist/utils/logging.d.ts +75 -0
  208. package/dist/utils/logging.d.ts.map +1 -0
  209. package/dist/utils/logging.js +131 -0
  210. package/dist/utils/logging.js.map +1 -0
  211. package/manifest.json +143 -0
  212. package/package.json +95 -0
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Prompts Module - Export all prompt utilities
3
+ */
4
+ export { WORKFLOW_PROMPTS, getWorkflowPrompt, processPromptTemplate, deployHttpLoadBalancerPrompt, configureWafPrompt, createMultiCloudSitePrompt, generateTerraformPrompt, } from "./workflows.js";
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/prompts/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,qBAAqB,EACrB,4BAA4B,EAC5B,kBAAkB,EAClB,0BAA0B,EAC1B,uBAAuB,GACxB,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,59 @@
1
+ /**
2
+ * MCP Workflow Prompts
3
+ *
4
+ * Provides guided workflows for common F5XC operations.
5
+ * These prompts help users accomplish complex multi-step tasks.
6
+ */
7
+ /**
8
+ * Workflow prompt definition
9
+ */
10
+ export interface WorkflowPrompt {
11
+ /** Unique prompt identifier */
12
+ name: string;
13
+ /** Human-readable description */
14
+ description: string;
15
+ /** Prompt arguments */
16
+ arguments: WorkflowArgument[];
17
+ /** Prompt template */
18
+ template: string;
19
+ }
20
+ /**
21
+ * Workflow argument
22
+ */
23
+ export interface WorkflowArgument {
24
+ /** Argument name */
25
+ name: string;
26
+ /** Argument description */
27
+ description: string;
28
+ /** Whether argument is required */
29
+ required: boolean;
30
+ }
31
+ /**
32
+ * Deploy HTTP Load Balancer workflow
33
+ */
34
+ export declare const deployHttpLoadBalancerPrompt: WorkflowPrompt;
35
+ /**
36
+ * Configure WAF workflow
37
+ */
38
+ export declare const configureWafPrompt: WorkflowPrompt;
39
+ /**
40
+ * Create Multi-Cloud Site workflow
41
+ */
42
+ export declare const createMultiCloudSitePrompt: WorkflowPrompt;
43
+ /**
44
+ * Generate Terraform from F5XC workflow
45
+ */
46
+ export declare const generateTerraformPrompt: WorkflowPrompt;
47
+ /**
48
+ * All workflow prompts
49
+ */
50
+ export declare const WORKFLOW_PROMPTS: WorkflowPrompt[];
51
+ /**
52
+ * Get workflow prompt by name
53
+ */
54
+ export declare function getWorkflowPrompt(name: string): WorkflowPrompt | undefined;
55
+ /**
56
+ * Process prompt template with arguments
57
+ */
58
+ export declare function processPromptTemplate(template: string, args: Record<string, string>): string;
59
+ //# sourceMappingURL=workflows.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflows.d.ts","sourceRoot":"","sources":["../../src/prompts/workflows.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,+BAA+B;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,iCAAiC;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,uBAAuB;IACvB,SAAS,EAAE,gBAAgB,EAAE,CAAC;IAC9B,sBAAsB;IACtB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,oBAAoB;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,2BAA2B;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,mCAAmC;IACnC,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,eAAO,MAAM,4BAA4B,EAAE,cA8K1C,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,kBAAkB,EAAE,cAuGhC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,0BAA0B,EAAE,cAqJxC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,uBAAuB,EAAE,cAmGrC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,gBAAgB,EAAE,cAAc,EAK5C,CAAC;AAEF;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS,CAE1E;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAuB5F"}
@@ -0,0 +1,585 @@
1
+ /**
2
+ * MCP Workflow Prompts
3
+ *
4
+ * Provides guided workflows for common F5XC operations.
5
+ * These prompts help users accomplish complex multi-step tasks.
6
+ */
7
+ /**
8
+ * Deploy HTTP Load Balancer workflow
9
+ */
10
+ export const deployHttpLoadBalancerPrompt = {
11
+ name: "deploy-http-loadbalancer",
12
+ description: "Guide through deploying an HTTP Load Balancer with origin pool, health checks, and optional WAF",
13
+ arguments: [
14
+ {
15
+ name: "namespace",
16
+ description: "Namespace for the load balancer",
17
+ required: true,
18
+ },
19
+ {
20
+ name: "name",
21
+ description: "Name for the load balancer",
22
+ required: true,
23
+ },
24
+ {
25
+ name: "domain",
26
+ description: "Domain name for the load balancer (e.g., app.example.com)",
27
+ required: true,
28
+ },
29
+ {
30
+ name: "backend_ip",
31
+ description: "IP address of the backend server",
32
+ required: true,
33
+ },
34
+ {
35
+ name: "backend_port",
36
+ description: "Port of the backend server (default: 80)",
37
+ required: false,
38
+ },
39
+ {
40
+ name: "enable_waf",
41
+ description: "Enable Web Application Firewall (true/false)",
42
+ required: false,
43
+ },
44
+ ],
45
+ template: `# Deploy HTTP Load Balancer Workflow
46
+
47
+ I'll help you deploy an HTTP Load Balancer in F5 Distributed Cloud.
48
+
49
+ ## Configuration Summary
50
+ - **Namespace**: {{namespace}}
51
+ - **Load Balancer Name**: {{name}}
52
+ - **Domain**: {{domain}}
53
+ - **Backend**: {{backend_ip}}:{{backend_port}}
54
+ - **WAF Enabled**: {{enable_waf}}
55
+
56
+ ## Steps
57
+
58
+ ### Step 1: Create Origin Pool
59
+ First, create an origin pool to define your backend servers.
60
+
61
+ **f5xcctl command:**
62
+ \`\`\`bash
63
+ f5xcctl apply -f - <<EOF
64
+ apiVersion: config.volterra.io/v1
65
+ kind: origin_pool
66
+ metadata:
67
+ name: {{name}}-origin-pool
68
+ namespace: {{namespace}}
69
+ spec:
70
+ origin_servers:
71
+ - public_ip:
72
+ ip: {{backend_ip}}
73
+ port: {{backend_port}}
74
+ no_tls: {}
75
+ endpoint_selection: LOCAL_PREFERRED
76
+ loadbalancer_algorithm: ROUND_ROBIN
77
+ EOF
78
+ \`\`\`
79
+
80
+ **Terraform:**
81
+ \`\`\`hcl
82
+ resource "volterra_origin_pool" "{{name}}" {
83
+ name = "{{name}}-origin-pool"
84
+ namespace = "{{namespace}}"
85
+
86
+ origin_servers {
87
+ public_ip {
88
+ ip = "{{backend_ip}}"
89
+ }
90
+ }
91
+
92
+ port = {{backend_port}}
93
+ no_tls = true
94
+ endpoint_selection = "LOCAL_PREFERRED"
95
+ loadbalancer_algorithm = "ROUND_ROBIN"
96
+ }
97
+ \`\`\`
98
+
99
+ ### Step 2: Create HTTP Load Balancer
100
+
101
+ **f5xcctl command:**
102
+ \`\`\`bash
103
+ f5xcctl apply -f - <<EOF
104
+ apiVersion: config.volterra.io/v1
105
+ kind: http_loadbalancer
106
+ metadata:
107
+ name: {{name}}
108
+ namespace: {{namespace}}
109
+ spec:
110
+ domains:
111
+ - {{domain}}
112
+ http:
113
+ dns_volterra_managed: true
114
+ default_route_pools:
115
+ - pool:
116
+ tenant: \${F5XC_TENANT}
117
+ namespace: {{namespace}}
118
+ name: {{name}}-origin-pool
119
+ weight: 1
120
+ advertise_on_public_default_vip: {}
121
+ EOF
122
+ \`\`\`
123
+
124
+ **Terraform:**
125
+ \`\`\`hcl
126
+ resource "volterra_http_loadbalancer" "{{name}}" {
127
+ name = "{{name}}"
128
+ namespace = "{{namespace}}"
129
+
130
+ domains = ["{{domain}}"]
131
+
132
+ http {
133
+ dns_volterra_managed = true
134
+ }
135
+
136
+ default_route_pools {
137
+ pool {
138
+ name = volterra_origin_pool.{{name}}.name
139
+ namespace = "{{namespace}}"
140
+ }
141
+ weight = 1
142
+ }
143
+
144
+ advertise_on_public_default_vip = true
145
+ }
146
+ \`\`\`
147
+
148
+ {{#if enable_waf}}
149
+ ### Step 3: Enable WAF Protection
150
+
151
+ **f5xcctl command:**
152
+ \`\`\`bash
153
+ f5xcctl apply -f - <<EOF
154
+ apiVersion: config.volterra.io/v1
155
+ kind: app_firewall
156
+ metadata:
157
+ name: {{name}}-waf
158
+ namespace: {{namespace}}
159
+ spec:
160
+ detection_settings:
161
+ signature_selection_setting:
162
+ default_attack_type_settings: {}
163
+ high_medium_accuracy_signatures: {}
164
+ enable_suppression: {}
165
+ enable_threat_campaigns: {}
166
+ EOF
167
+ \`\`\`
168
+ {{/if}}
169
+
170
+ ## Verification
171
+
172
+ After deployment, verify with:
173
+ \`\`\`bash
174
+ f5xcctl get http_loadbalancer {{name}} -n {{namespace}}
175
+ f5xcctl get origin_pool {{name}}-origin-pool -n {{namespace}}
176
+ \`\`\`
177
+
178
+ ## Next Steps
179
+ - Configure DNS to point {{domain}} to the F5XC VIP
180
+ - Set up monitoring and alerts
181
+ - Consider enabling additional security features
182
+ `,
183
+ };
184
+ /**
185
+ * Configure WAF workflow
186
+ */
187
+ export const configureWafPrompt = {
188
+ name: "configure-waf",
189
+ description: "Guide through configuring Web Application Firewall protection",
190
+ arguments: [
191
+ {
192
+ name: "namespace",
193
+ description: "Namespace for the WAF policy",
194
+ required: true,
195
+ },
196
+ {
197
+ name: "name",
198
+ description: "Name for the WAF policy",
199
+ required: true,
200
+ },
201
+ {
202
+ name: "loadbalancer",
203
+ description: "Name of the HTTP Load Balancer to protect",
204
+ required: true,
205
+ },
206
+ {
207
+ name: "mode",
208
+ description: "WAF mode: blocking or monitoring",
209
+ required: false,
210
+ },
211
+ ],
212
+ template: `# Configure WAF Protection Workflow
213
+
214
+ I'll help you configure Web Application Firewall protection for your application.
215
+
216
+ ## Configuration Summary
217
+ - **Namespace**: {{namespace}}
218
+ - **WAF Policy Name**: {{name}}
219
+ - **Load Balancer**: {{loadbalancer}}
220
+ - **Mode**: {{mode}}
221
+
222
+ ## Steps
223
+
224
+ ### Step 1: Create Application Firewall Policy
225
+
226
+ **f5xcctl command:**
227
+ \`\`\`bash
228
+ f5xcctl apply -f - <<EOF
229
+ apiVersion: config.volterra.io/v1
230
+ kind: app_firewall
231
+ metadata:
232
+ name: {{name}}
233
+ namespace: {{namespace}}
234
+ spec:
235
+ detection_settings:
236
+ signature_selection_setting:
237
+ default_attack_type_settings: {}
238
+ high_medium_accuracy_signatures: {}
239
+ enable_suppression: {}
240
+ enable_threat_campaigns: {}
241
+ bot_protection_setting:
242
+ malicious_bot_action: BLOCK
243
+ suspicious_bot_action: REPORT
244
+ good_bot_action: REPORT
245
+ blocking: {}
246
+ EOF
247
+ \`\`\`
248
+
249
+ **Terraform:**
250
+ \`\`\`hcl
251
+ resource "volterra_app_firewall" "{{name}}" {
252
+ name = "{{name}}"
253
+ namespace = "{{namespace}}"
254
+
255
+ detection_settings {
256
+ signature_selection_setting {
257
+ default_attack_type_settings {}
258
+ high_medium_accuracy_signatures {}
259
+ }
260
+ enable_suppression {}
261
+ enable_threat_campaigns {}
262
+ }
263
+
264
+ bot_protection_setting {
265
+ malicious_bot_action = "BLOCK"
266
+ suspicious_bot_action = "REPORT"
267
+ good_bot_action = "REPORT"
268
+ }
269
+
270
+ blocking {}
271
+ }
272
+ \`\`\`
273
+
274
+ ### Step 2: Attach WAF to Load Balancer
275
+
276
+ Update your HTTP Load Balancer to use the WAF policy.
277
+
278
+ ## Verification
279
+
280
+ \`\`\`bash
281
+ f5xcctl get app_firewall {{name}} -n {{namespace}}
282
+ \`\`\`
283
+
284
+ ## Security Recommendations
285
+ - Start in monitoring mode before enabling blocking
286
+ - Review security events regularly
287
+ - Fine-tune signature settings based on your application
288
+ - Consider enabling bot defense for API endpoints
289
+ `,
290
+ };
291
+ /**
292
+ * Create Multi-Cloud Site workflow
293
+ */
294
+ export const createMultiCloudSitePrompt = {
295
+ name: "create-multicloud-site",
296
+ description: "Guide through deploying an F5XC site in AWS, Azure, or GCP",
297
+ arguments: [
298
+ {
299
+ name: "namespace",
300
+ description: "Namespace for the site",
301
+ required: true,
302
+ },
303
+ {
304
+ name: "name",
305
+ description: "Name for the site",
306
+ required: true,
307
+ },
308
+ {
309
+ name: "cloud",
310
+ description: "Cloud provider: aws, azure, or gcp",
311
+ required: true,
312
+ },
313
+ {
314
+ name: "region",
315
+ description: "Cloud region for deployment",
316
+ required: true,
317
+ },
318
+ {
319
+ name: "vpc_id",
320
+ description: "VPC/VNet ID to deploy into",
321
+ required: true,
322
+ },
323
+ ],
324
+ template: `# Create Multi-Cloud Site Workflow
325
+
326
+ I'll help you deploy an F5 Distributed Cloud site in {{cloud}}.
327
+
328
+ ## Configuration Summary
329
+ - **Namespace**: {{namespace}}
330
+ - **Site Name**: {{name}}
331
+ - **Cloud Provider**: {{cloud}}
332
+ - **Region**: {{region}}
333
+ - **VPC/VNet**: {{vpc_id}}
334
+
335
+ ## Prerequisites
336
+ 1. Cloud credentials configured in F5XC
337
+ 2. Appropriate IAM permissions in {{cloud}}
338
+ 3. VPC/VNet exists and is accessible
339
+
340
+ ## Steps
341
+
342
+ ### Step 1: Verify Cloud Credentials
343
+
344
+ \`\`\`bash
345
+ f5xcctl get cloud_credentials -n {{namespace}}
346
+ \`\`\`
347
+
348
+ ### Step 2: Create Site
349
+
350
+ {{#if (eq cloud "aws")}}
351
+ **AWS VPC Site:**
352
+ \`\`\`bash
353
+ f5xcctl apply -f - <<EOF
354
+ apiVersion: config.volterra.io/v1
355
+ kind: aws_vpc_site
356
+ metadata:
357
+ name: {{name}}
358
+ namespace: {{namespace}}
359
+ spec:
360
+ aws_region: {{region}}
361
+ vpc:
362
+ existing_vpc:
363
+ vpc_id: {{vpc_id}}
364
+ instance_type: t3.xlarge
365
+ ingress_gw:
366
+ aws_certified_hw: aws-byol-voltmesh
367
+ logs_streaming_disabled: {}
368
+ ssh_key: your-ssh-key
369
+ EOF
370
+ \`\`\`
371
+ {{/if}}
372
+
373
+ {{#if (eq cloud "azure")}}
374
+ **Azure VNet Site:**
375
+ \`\`\`bash
376
+ f5xcctl apply -f - <<EOF
377
+ apiVersion: config.volterra.io/v1
378
+ kind: azure_vnet_site
379
+ metadata:
380
+ name: {{name}}
381
+ namespace: {{namespace}}
382
+ spec:
383
+ azure_region: {{region}}
384
+ resource_group: your-resource-group
385
+ vnet:
386
+ existing_vnet:
387
+ resource_group: your-resource-group
388
+ vnet_name: {{vpc_id}}
389
+ machine_type: Standard_D3_v2
390
+ ingress_gw:
391
+ azure_certified_hw: azure-byol-voltmesh
392
+ logs_streaming_disabled: {}
393
+ EOF
394
+ \`\`\`
395
+ {{/if}}
396
+
397
+ {{#if (eq cloud "gcp")}}
398
+ **GCP VPC Site:**
399
+ \`\`\`bash
400
+ f5xcctl apply -f - <<EOF
401
+ apiVersion: config.volterra.io/v1
402
+ kind: gcp_vpc_site
403
+ metadata:
404
+ name: {{name}}
405
+ namespace: {{namespace}}
406
+ spec:
407
+ gcp_region: {{region}}
408
+ vpc_network:
409
+ existing_network:
410
+ name: {{vpc_id}}
411
+ instance_type: n1-standard-4
412
+ ingress_gw:
413
+ gcp_certified_hw: gcp-byol-voltmesh
414
+ logs_streaming_disabled: {}
415
+ EOF
416
+ \`\`\`
417
+ {{/if}}
418
+
419
+ ### Step 3: Apply Terraform Configuration
420
+
421
+ \`\`\`bash
422
+ terraform apply -auto-approve
423
+ \`\`\`
424
+
425
+ ### Step 4: Monitor Site Status
426
+
427
+ \`\`\`bash
428
+ # Wait for site to become online
429
+ f5xcctl get {{cloud}}_vpc_site {{name}} -n {{namespace}} -w
430
+ \`\`\`
431
+
432
+ ## Verification
433
+
434
+ \`\`\`bash
435
+ f5xcctl get sites
436
+ \`\`\`
437
+
438
+ ## Next Steps
439
+ - Configure network policies
440
+ - Set up load balancers to use this site
441
+ - Enable monitoring and logging
442
+ `,
443
+ };
444
+ /**
445
+ * Generate Terraform from F5XC workflow
446
+ */
447
+ export const generateTerraformPrompt = {
448
+ name: "generate-terraform",
449
+ description: "Generate Terraform configuration from existing F5XC resources",
450
+ arguments: [
451
+ {
452
+ name: "namespace",
453
+ description: "Namespace to export",
454
+ required: true,
455
+ },
456
+ {
457
+ name: "resource_type",
458
+ description: "Resource type to export (e.g., http_loadbalancer)",
459
+ required: false,
460
+ },
461
+ {
462
+ name: "name",
463
+ description: "Specific resource name to export",
464
+ required: false,
465
+ },
466
+ ],
467
+ template: `# Generate Terraform Configuration
468
+
469
+ I'll help you export F5XC resources as Terraform configuration.
470
+
471
+ ## Export Parameters
472
+ - **Namespace**: {{namespace}}
473
+ - **Resource Type**: {{resource_type}}
474
+ - **Resource Name**: {{name}}
475
+
476
+ ## Steps
477
+
478
+ ### Step 1: List Resources
479
+
480
+ \`\`\`bash
481
+ {{#if resource_type}}
482
+ f5xcctl get {{resource_type}}s -n {{namespace}} -o json
483
+ {{else}}
484
+ # List all resource types
485
+ f5xcctl get http_loadbalancers -n {{namespace}}
486
+ f5xcctl get origin_pools -n {{namespace}}
487
+ f5xcctl get app_firewalls -n {{namespace}}
488
+ {{/if}}
489
+ \`\`\`
490
+
491
+ ### Step 2: Export to Terraform
492
+
493
+ {{#if name}}
494
+ \`\`\`bash
495
+ f5xcctl get {{resource_type}} {{name}} -n {{namespace}} -o terraform > {{name}}.tf
496
+ \`\`\`
497
+ {{else}}
498
+ \`\`\`bash
499
+ # Export all resources of type
500
+ f5xcctl get {{resource_type}}s -n {{namespace}} -o terraform > {{resource_type}}.tf
501
+ \`\`\`
502
+ {{/if}}
503
+
504
+ ### Step 3: Generate Import Statements
505
+
506
+ \`\`\`bash
507
+ # Generate terraform import commands
508
+ f5xcctl get {{resource_type}} {{name}} -n {{namespace}} --import-cmd
509
+ \`\`\`
510
+
511
+ ## Example Output
512
+
513
+ \`\`\`hcl
514
+ # Generated Terraform configuration
515
+ terraform {
516
+ required_providers {
517
+ volterra = {
518
+ source = "volterraedge/volterra"
519
+ version = "~> 0.11"
520
+ }
521
+ }
522
+ }
523
+
524
+ provider "volterra" {
525
+ api_p12_file = var.api_p12_file
526
+ url = var.api_url
527
+ }
528
+
529
+ # Import command:
530
+ # terraform import volterra_{{resource_type}}.{{name}} {{namespace}}/{{name}}
531
+
532
+ resource "volterra_{{resource_type}}" "{{name}}" {
533
+ name = "{{name}}"
534
+ namespace = "{{namespace}}"
535
+
536
+ # Configuration exported from F5XC
537
+ }
538
+ \`\`\`
539
+
540
+ ## Best Practices
541
+ - Use variables for sensitive values
542
+ - Organize resources by namespace
543
+ - Use modules for reusable configurations
544
+ - Store state in remote backend
545
+ `,
546
+ };
547
+ /**
548
+ * All workflow prompts
549
+ */
550
+ export const WORKFLOW_PROMPTS = [
551
+ deployHttpLoadBalancerPrompt,
552
+ configureWafPrompt,
553
+ createMultiCloudSitePrompt,
554
+ generateTerraformPrompt,
555
+ ];
556
+ /**
557
+ * Get workflow prompt by name
558
+ */
559
+ export function getWorkflowPrompt(name) {
560
+ return WORKFLOW_PROMPTS.find((p) => p.name === name);
561
+ }
562
+ /**
563
+ * Process prompt template with arguments
564
+ */
565
+ export function processPromptTemplate(template, args) {
566
+ let result = template;
567
+ // Replace simple {{variable}} placeholders
568
+ for (const [key, value] of Object.entries(args)) {
569
+ const pattern = new RegExp(`\\{\\{${key}\\}\\}`, "g");
570
+ result = result.replace(pattern, value ?? "");
571
+ }
572
+ // Handle {{#if variable}} ... {{/if}} blocks
573
+ const ifPattern = /\{\{#if\s+(\w+)\}\}([\s\S]*?)\{\{\/if\}\}/g;
574
+ result = result.replace(ifPattern, (_, varName, content) => {
575
+ const value = args[varName];
576
+ return value && value !== "false" ? content : "";
577
+ });
578
+ // Handle {{#if (eq var "value")}} ... {{/if}} blocks
579
+ const eqPattern = /\{\{#if\s+\(eq\s+(\w+)\s+"([^"]+)"\)\}\}([\s\S]*?)\{\{\/if\}\}/g;
580
+ result = result.replace(eqPattern, (_, varName, expected, content) => {
581
+ return args[varName] === expected ? content : "";
582
+ });
583
+ return result;
584
+ }
585
+ //# sourceMappingURL=workflows.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflows.js","sourceRoot":"","sources":["../../src/prompts/workflows.ts"],"names":[],"mappings":"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"}