snow-flow 1.1.76 → 1.1.78

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 (234) hide show
  1. package/.claude-flow/queen/queen-memory.db +0 -0
  2. package/CLAUDE.md +34 -5
  3. package/README.md +256 -384
  4. package/dist/agents/base-agent.d.ts +92 -0
  5. package/dist/agents/base-agent.d.ts.map +1 -0
  6. package/dist/agents/base-agent.js +228 -0
  7. package/dist/agents/base-agent.js.map +1 -0
  8. package/dist/agents/coordinator.d.ts +200 -0
  9. package/dist/agents/coordinator.d.ts.map +1 -0
  10. package/dist/agents/coordinator.js +775 -0
  11. package/dist/agents/coordinator.js.map +1 -0
  12. package/dist/agents/flow-builder-agent.d.ts +18 -0
  13. package/dist/agents/flow-builder-agent.d.ts.map +1 -0
  14. package/dist/agents/flow-builder-agent.js +536 -0
  15. package/dist/agents/flow-builder-agent.js.map +1 -0
  16. package/dist/agents/index.d.ts +18 -0
  17. package/dist/agents/index.d.ts.map +1 -0
  18. package/dist/agents/index.js +61 -0
  19. package/dist/agents/index.js.map +1 -0
  20. package/dist/agents/queen-agent-example.d.ts +23 -0
  21. package/dist/agents/queen-agent-example.d.ts.map +1 -0
  22. package/dist/agents/queen-agent-example.js +241 -0
  23. package/dist/agents/queen-agent-example.js.map +1 -0
  24. package/dist/agents/queen-agent.d.ts +180 -0
  25. package/dist/agents/queen-agent.d.ts.map +1 -0
  26. package/dist/agents/queen-agent.js +909 -0
  27. package/dist/agents/queen-agent.js.map +1 -0
  28. package/dist/agents/queen-agent.test.d.ts +6 -0
  29. package/dist/agents/queen-agent.test.d.ts.map +1 -0
  30. package/dist/agents/queen-agent.test.js.map +1 -0
  31. package/dist/agents/script-writer-agent.d.ts +22 -0
  32. package/dist/agents/script-writer-agent.d.ts.map +1 -0
  33. package/dist/agents/script-writer-agent.js +695 -0
  34. package/dist/agents/script-writer-agent.js.map +1 -0
  35. package/dist/agents/security-agent.d.ts +23 -0
  36. package/dist/agents/security-agent.d.ts.map +1 -0
  37. package/dist/agents/security-agent.js +619 -0
  38. package/dist/agents/security-agent.js.map +1 -0
  39. package/dist/agents/test-agent.d.ts +26 -0
  40. package/dist/agents/test-agent.d.ts.map +1 -0
  41. package/dist/agents/test-agent.js +735 -0
  42. package/dist/agents/test-agent.js.map +1 -0
  43. package/dist/agents/test-agents.d.ts +7 -0
  44. package/dist/agents/test-agents.d.ts.map +1 -0
  45. package/dist/agents/test-agents.js +65 -0
  46. package/dist/agents/test-agents.js.map +1 -0
  47. package/dist/agents/widget-creator-agent.d.ts +18 -0
  48. package/dist/agents/widget-creator-agent.d.ts.map +1 -0
  49. package/dist/agents/widget-creator-agent.js +440 -0
  50. package/dist/agents/widget-creator-agent.js.map +1 -0
  51. package/dist/cli/snow-flow-cli-integration.d.ts +30 -0
  52. package/dist/cli/snow-flow-cli-integration.d.ts.map +1 -0
  53. package/dist/cli/snow-flow-cli-integration.js +385 -0
  54. package/dist/cli/snow-flow-cli-integration.js.map +1 -0
  55. package/dist/cli.js +466 -150
  56. package/dist/cli.js.map +1 -1
  57. package/dist/config/snow-flow-config.d.ts +1454 -0
  58. package/dist/config/snow-flow-config.d.ts.map +1 -0
  59. package/dist/config/snow-flow-config.js +403 -0
  60. package/dist/config/snow-flow-config.js.map +1 -0
  61. package/dist/health/system-health.d.ts +123 -0
  62. package/dist/health/system-health.d.ts.map +1 -0
  63. package/dist/health/system-health.js +580 -0
  64. package/dist/health/system-health.js.map +1 -0
  65. package/dist/index.d.ts +12 -1
  66. package/dist/index.d.ts.map +1 -1
  67. package/dist/index.js +19 -3
  68. package/dist/index.js.map +1 -1
  69. package/dist/mcp/servicenow-deployment-mcp-refactored.d.ts +58 -0
  70. package/dist/mcp/servicenow-deployment-mcp-refactored.d.ts.map +1 -0
  71. package/dist/mcp/servicenow-deployment-mcp-refactored.js +651 -0
  72. package/dist/mcp/servicenow-deployment-mcp-refactored.js.map +1 -0
  73. package/dist/mcp/servicenow-intelligent-mcp-refactored.d.ts +43 -0
  74. package/dist/mcp/servicenow-intelligent-mcp-refactored.d.ts.map +1 -0
  75. package/dist/mcp/servicenow-intelligent-mcp-refactored.js +576 -0
  76. package/dist/mcp/servicenow-intelligent-mcp-refactored.js.map +1 -0
  77. package/dist/mcp/servicenow-intelligent-mcp.d.ts +102 -1
  78. package/dist/mcp/servicenow-intelligent-mcp.d.ts.map +1 -1
  79. package/dist/mcp/servicenow-intelligent-mcp.js +2 -0
  80. package/dist/mcp/servicenow-intelligent-mcp.js.map +1 -1
  81. package/dist/mcp/shared/agent-context-provider.d.ts +77 -0
  82. package/dist/mcp/shared/agent-context-provider.d.ts.map +1 -0
  83. package/dist/mcp/shared/agent-context-provider.js +292 -0
  84. package/dist/mcp/shared/agent-context-provider.js.map +1 -0
  85. package/dist/mcp/shared/base-mcp-server.d.ts +97 -0
  86. package/dist/mcp/shared/base-mcp-server.d.ts.map +1 -0
  87. package/dist/mcp/shared/base-mcp-server.js +216 -0
  88. package/dist/mcp/shared/base-mcp-server.js.map +1 -0
  89. package/dist/mcp/shared/mcp-memory-manager.d.ts +87 -0
  90. package/dist/mcp/shared/mcp-memory-manager.d.ts.map +1 -0
  91. package/dist/mcp/shared/mcp-memory-manager.js +423 -0
  92. package/dist/mcp/shared/mcp-memory-manager.js.map +1 -0
  93. package/dist/memory/index.d.ts +9 -0
  94. package/dist/memory/index.d.ts.map +1 -0
  95. package/dist/memory/index.js +20 -0
  96. package/dist/memory/index.js.map +1 -0
  97. package/dist/memory/mcp-integration-example.d.ts +6 -0
  98. package/dist/memory/mcp-integration-example.d.ts.map +1 -0
  99. package/dist/memory/mcp-integration-example.js +282 -0
  100. package/dist/memory/mcp-integration-example.js.map +1 -0
  101. package/dist/memory/memory-client.d.ts +184 -0
  102. package/dist/memory/memory-client.d.ts.map +1 -0
  103. package/dist/memory/memory-client.js +325 -0
  104. package/dist/memory/memory-client.js.map +1 -0
  105. package/dist/memory/memory-operations.d.ts +170 -0
  106. package/dist/memory/memory-operations.d.ts.map +1 -0
  107. package/dist/memory/memory-operations.js +639 -0
  108. package/dist/memory/memory-operations.js.map +1 -0
  109. package/dist/memory/memory-system.d.ts +118 -0
  110. package/dist/memory/memory-system.d.ts.map +1 -0
  111. package/dist/memory/memory-system.js +477 -0
  112. package/dist/memory/memory-system.js.map +1 -0
  113. package/dist/memory/memory-test.d.ts +6 -0
  114. package/dist/memory/memory-test.d.ts.map +1 -0
  115. package/dist/memory/memory-test.js +162 -0
  116. package/dist/memory/memory-test.js.map +1 -0
  117. package/dist/memory/swarm-memory.d.ts +135 -0
  118. package/dist/memory/swarm-memory.d.ts.map +1 -0
  119. package/dist/memory/swarm-memory.js +378 -0
  120. package/dist/memory/swarm-memory.js.map +1 -0
  121. package/dist/monitoring/performance-tracker.d.ts +157 -0
  122. package/dist/monitoring/performance-tracker.d.ts.map +1 -0
  123. package/dist/monitoring/performance-tracker.js +571 -0
  124. package/dist/monitoring/performance-tracker.js.map +1 -0
  125. package/dist/queen/agent-factory.d.ts +3 -0
  126. package/dist/queen/agent-factory.d.ts.map +1 -1
  127. package/dist/queen/agent-factory.js +52 -0
  128. package/dist/queen/agent-factory.js.map +1 -1
  129. package/dist/queen/queen-memory.d.ts +8 -2
  130. package/dist/queen/queen-memory.d.ts.map +1 -1
  131. package/dist/queen/queen-memory.js +46 -4
  132. package/dist/queen/queen-memory.js.map +1 -1
  133. package/dist/snow-flow-system.d.ts +132 -0
  134. package/dist/snow-flow-system.d.ts.map +1 -0
  135. package/dist/snow-flow-system.js +396 -0
  136. package/dist/snow-flow-system.js.map +1 -0
  137. package/dist/types/todo.types.d.ts +61 -0
  138. package/dist/types/todo.types.d.ts.map +1 -0
  139. package/dist/types/todo.types.js +7 -0
  140. package/dist/types/todo.types.js.map +1 -0
  141. package/dist/utils/error-recovery.d.ts +101 -0
  142. package/dist/utils/error-recovery.d.ts.map +1 -0
  143. package/dist/utils/error-recovery.js +548 -0
  144. package/dist/utils/error-recovery.js.map +1 -0
  145. package/dist/version.d.ts +1 -1
  146. package/dist/version.js +1 -1
  147. package/package.json +7 -2
  148. package/deploy.sh +0 -366
  149. package/docker/base/Dockerfile.base +0 -45
  150. package/docker/generate-services.js +0 -244
  151. package/docker/nginx/Dockerfile +0 -71
  152. package/docker/nginx/consul-template.hcl +0 -64
  153. package/docker/nginx/healthcheck.sh +0 -178
  154. package/docker/nginx/nginx.conf +0 -210
  155. package/docker/nginx/supervisord.conf +0 -57
  156. package/docker/nginx/templates/upstreams.conf.tpl +0 -48
  157. package/docker/services/automation-mcp/Dockerfile +0 -32
  158. package/docker/services/automation-mcp/config/service.json +0 -28
  159. package/docker/services/automation-mcp/entrypoint.js +0 -51
  160. package/docker/services/deployment-mcp/Dockerfile +0 -32
  161. package/docker/services/deployment-mcp/entrypoint.js +0 -51
  162. package/docker/services/flow-composer-mcp/Dockerfile +0 -32
  163. package/docker/services/flow-composer-mcp/config/service.json +0 -28
  164. package/docker/services/flow-composer-mcp/entrypoint.js +0 -51
  165. package/docker/services/graph-memory-mcp/Dockerfile +0 -32
  166. package/docker/services/graph-memory-mcp/config/service.json +0 -28
  167. package/docker/services/graph-memory-mcp/entrypoint.js +0 -51
  168. package/docker/services/integration-mcp/Dockerfile +0 -32
  169. package/docker/services/integration-mcp/config/service.json +0 -28
  170. package/docker/services/integration-mcp/entrypoint.js +0 -51
  171. package/docker/services/intelligent-mcp/Dockerfile +0 -32
  172. package/docker/services/intelligent-mcp/config/service.json +0 -28
  173. package/docker/services/intelligent-mcp/entrypoint.js +0 -51
  174. package/docker/services/operations-mcp/Dockerfile +0 -32
  175. package/docker/services/operations-mcp/config/service.json +0 -28
  176. package/docker/services/operations-mcp/entrypoint.js +0 -51
  177. package/docker/services/platform-development-mcp/Dockerfile +0 -32
  178. package/docker/services/platform-development-mcp/config/service.json +0 -28
  179. package/docker/services/platform-development-mcp/entrypoint.js +0 -51
  180. package/docker/services/reporting-analytics-mcp/Dockerfile +0 -32
  181. package/docker/services/reporting-analytics-mcp/config/service.json +0 -28
  182. package/docker/services/reporting-analytics-mcp/entrypoint.js +0 -51
  183. package/docker/services/security-compliance-mcp/Dockerfile +0 -32
  184. package/docker/services/security-compliance-mcp/config/service.json +0 -28
  185. package/docker/services/security-compliance-mcp/entrypoint.js +0 -51
  186. package/docker/services/update-set-mcp/Dockerfile +0 -32
  187. package/docker/services/update-set-mcp/config/service.json +0 -28
  188. package/docker/services/update-set-mcp/entrypoint.js +0 -51
  189. package/docker-compose.override.yml +0 -132
  190. package/docker-compose.prod.yml +0 -340
  191. package/docker-compose.yml +0 -579
  192. package/k8s/automation-mcp.yaml +0 -232
  193. package/k8s/configmap.yaml +0 -237
  194. package/k8s/deployment-mcp.yaml +0 -232
  195. package/k8s/flow-composer-mcp.yaml +0 -232
  196. package/k8s/generate-k8s-manifests.js +0 -453
  197. package/k8s/graph-memory-mcp.yaml +0 -232
  198. package/k8s/infrastructure.yaml +0 -456
  199. package/k8s/ingress.yaml +0 -361
  200. package/k8s/integration-mcp.yaml +0 -232
  201. package/k8s/intelligent-mcp.yaml +0 -232
  202. package/k8s/kustomization.yaml +0 -111
  203. package/k8s/mcp-services.yaml +0 -2552
  204. package/k8s/monitoring.yaml +0 -515
  205. package/k8s/namespace.yaml +0 -80
  206. package/k8s/operations-mcp.yaml +0 -232
  207. package/k8s/platform-development-mcp.yaml +0 -232
  208. package/k8s/rbac.yaml +0 -140
  209. package/k8s/reporting-analytics-mcp.yaml +0 -232
  210. package/k8s/security-compliance-mcp.yaml +0 -232
  211. package/k8s/update-set-mcp.yaml +0 -232
  212. package/test-clean-install/.claude/config.json +0 -12
  213. package/test-clean-install/.env.example +0 -49
  214. package/test-clean-install/CLAUDE.md +0 -26
  215. package/test-clean-install/README.md +0 -23
  216. package/test-global-install/.claude/config.json +0 -12
  217. package/test-global-install/CLAUDE.md +0 -26
  218. package/test-global-install/README.md +0 -23
  219. package/test-global-install/test-global-install/.claude/config.json +0 -12
  220. package/test-global-install/test-global-install/CLAUDE.md +0 -26
  221. package/test-global-install/test-global-install/README.md +0 -23
  222. package/test-global-install/test-global-install/test-global-install/.claude/config.json +0 -12
  223. package/test-global-install/test-global-install/test-global-install/.env.example +0 -49
  224. package/test-global-install/test-global-install/test-global-install/CLAUDE.md +0 -26
  225. package/test-global-install/test-global-install/test-global-install/README.md +0 -23
  226. package/test-init-debug/.claude/config.json +0 -12
  227. package/test-init-debug/CLAUDE.md +0 -693
  228. package/test-init-debug/README.md +0 -392
  229. package/test-init-real/.claude/config.json +0 -12
  230. package/test-init-real/.claude/mcp-config.json +0 -128
  231. package/test-init-real/.claude/settings.json +0 -37
  232. package/test-init-real/CLAUDE.md +0 -693
  233. package/test-init-real/README.md +0 -392
  234. package/test-init-real/activate-mcp.sh +0 -15
@@ -1,232 +0,0 @@
1
- # ServiceNow Flow Composer MCP Deployment
2
- apiVersion: apps/v1
3
- kind: Deployment
4
- metadata:
5
- name: flow-composer-mcp
6
- namespace: servicenow-mcp
7
- labels:
8
- app.kubernetes.io/name: flow-composer-mcp
9
- app.kubernetes.io/instance: flow-composer-mcp
10
- app.kubernetes.io/version: "1.0.0"
11
- app.kubernetes.io/component: mcp-service
12
- app.kubernetes.io/part-of: servicenow-mcp
13
- app.kubernetes.io/managed-by: kubectl
14
- spec:
15
- replicas: 2
16
- strategy:
17
- type: RollingUpdate
18
- rollingUpdate:
19
- maxSurge: 1
20
- maxUnavailable: 0
21
- selector:
22
- matchLabels:
23
- app.kubernetes.io/name: flow-composer-mcp
24
- app.kubernetes.io/instance: flow-composer-mcp
25
- template:
26
- metadata:
27
- labels:
28
- app.kubernetes.io/name: flow-composer-mcp
29
- app.kubernetes.io/instance: flow-composer-mcp
30
- app.kubernetes.io/version: "1.0.0"
31
- app.kubernetes.io/component: mcp-service
32
- annotations:
33
- prometheus.io/scrape: "true"
34
- prometheus.io/port: "3002"
35
- prometheus.io/path: "/metrics"
36
- spec:
37
- serviceAccountName: mcp-service-account
38
- securityContext:
39
- runAsNonRoot: true
40
- runAsUser: 1001
41
- runAsGroup: 1001
42
- fsGroup: 1001
43
- containers:
44
- - name: flow-composer-mcp
45
- image: servicenow-mcp/flow-composer-mcp:latest
46
- imagePullPolicy: IfNotPresent
47
- ports:
48
- - name: http
49
- containerPort: 3002
50
- protocol: TCP
51
- env:
52
- - name: SERVICE_NAME
53
- value: "flow-composer-mcp"
54
- - name: SERVER_PORT
55
- value: "3002"
56
- - name: SERVICE_IP
57
- valueFrom:
58
- fieldRef:
59
- fieldPath: status.podIP
60
- - name: HOSTNAME
61
- valueFrom:
62
- fieldRef:
63
- fieldPath: metadata.name
64
- envFrom:
65
- - configMapRef:
66
- name: mcp-config
67
- - secretRef:
68
- name: servicenow-credentials
69
- - secretRef:
70
- name: neo4j-credentials
71
- livenessProbe:
72
- httpGet:
73
- path: /health
74
- port: http
75
- initialDelaySeconds: 30
76
- periodSeconds: 30
77
- timeoutSeconds: 10
78
- failureThreshold: 3
79
- successThreshold: 1
80
- readinessProbe:
81
- httpGet:
82
- path: /ready
83
- port: http
84
- initialDelaySeconds: 15
85
- periodSeconds: 10
86
- timeoutSeconds: 5
87
- failureThreshold: 3
88
- successThreshold: 1
89
- resources:
90
- requests:
91
- memory: "256Mi"
92
- cpu: "250m"
93
- limits:
94
- memory: "512Mi"
95
- cpu: "500m"
96
- securityContext:
97
- allowPrivilegeEscalation: false
98
- readOnlyRootFilesystem: true
99
- capabilities:
100
- drop:
101
- - ALL
102
- volumeMounts:
103
- - name: tmp
104
- mountPath: /tmp
105
- - name: logs
106
- mountPath: /app/logs
107
- volumes:
108
- - name: tmp
109
- emptyDir: {}
110
- - name: logs
111
- emptyDir: {}
112
- affinity:
113
- podAntiAffinity:
114
- preferredDuringSchedulingIgnoredDuringExecution:
115
- - weight: 100
116
- podAffinityTerm:
117
- labelSelector:
118
- matchExpressions:
119
- - key: app.kubernetes.io/name
120
- operator: In
121
- values:
122
- - flow-composer-mcp
123
- topologyKey: kubernetes.io/hostname
124
- terminationGracePeriodSeconds: 30
125
- ---
126
- # ServiceNow Flow Composer MCP Service
127
- apiVersion: v1
128
- kind: Service
129
- metadata:
130
- name: flow-composer-mcp
131
- namespace: servicenow-mcp
132
- labels:
133
- app.kubernetes.io/name: flow-composer-mcp
134
- app.kubernetes.io/instance: flow-composer-mcp
135
- app.kubernetes.io/version: "1.0.0"
136
- app.kubernetes.io/component: mcp-service
137
- app.kubernetes.io/part-of: servicenow-mcp
138
- annotations:
139
- service.alpha.kubernetes.io/tolerate-unready-endpoints: "true"
140
- spec:
141
- type: ClusterIP
142
- ports:
143
- - port: 3002
144
- targetPort: http
145
- protocol: TCP
146
- name: http
147
- selector:
148
- app.kubernetes.io/name: flow-composer-mcp
149
- app.kubernetes.io/instance: flow-composer-mcp
150
- ---
151
- # ServiceNow Flow Composer MCP Horizontal Pod Autoscaler
152
- apiVersion: autoscaling/v2
153
- kind: HorizontalPodAutoscaler
154
- metadata:
155
- name: flow-composer-mcp-hpa
156
- namespace: servicenow-mcp
157
- labels:
158
- app.kubernetes.io/name: flow-composer-mcp
159
- app.kubernetes.io/instance: flow-composer-mcp
160
- app.kubernetes.io/component: autoscaler
161
- spec:
162
- scaleTargetRef:
163
- apiVersion: apps/v1
164
- kind: Deployment
165
- name: flow-composer-mcp
166
- minReplicas: 2
167
- maxReplicas: 6
168
- metrics:
169
- - type: Resource
170
- resource:
171
- name: cpu
172
- target:
173
- type: Utilization
174
- averageUtilization: 70
175
- - type: Resource
176
- resource:
177
- name: memory
178
- target:
179
- type: Utilization
180
- averageUtilization: 80
181
- behavior:
182
- scaleUp:
183
- stabilizationWindowSeconds: 60
184
- policies:
185
- - type: Percent
186
- value: 50
187
- periodSeconds: 60
188
- scaleDown:
189
- stabilizationWindowSeconds: 300
190
- policies:
191
- - type: Percent
192
- value: 25
193
- periodSeconds: 60
194
- ---
195
- # ServiceNow Flow Composer MCP ServiceMonitor for Prometheus
196
- apiVersion: monitoring.coreos.com/v1
197
- kind: ServiceMonitor
198
- metadata:
199
- name: flow-composer-mcp
200
- namespace: servicenow-mcp
201
- labels:
202
- app.kubernetes.io/name: flow-composer-mcp
203
- app.kubernetes.io/instance: flow-composer-mcp
204
- app.kubernetes.io/component: monitoring
205
- spec:
206
- selector:
207
- matchLabels:
208
- app.kubernetes.io/name: flow-composer-mcp
209
- app.kubernetes.io/instance: flow-composer-mcp
210
- endpoints:
211
- - port: http
212
- interval: 30s
213
- path: /metrics
214
- scrapeTimeout: 10s
215
- ---
216
- # ServiceNow Flow Composer MCP Pod Disruption Budget
217
- apiVersion: policy/v1
218
- kind: PodDisruptionBudget
219
- metadata:
220
- name: flow-composer-mcp-pdb
221
- namespace: servicenow-mcp
222
- labels:
223
- app.kubernetes.io/name: flow-composer-mcp
224
- app.kubernetes.io/instance: flow-composer-mcp
225
- app.kubernetes.io/component: availability
226
- spec:
227
- minAvailable: 1
228
- selector:
229
- matchLabels:
230
- app.kubernetes.io/name: flow-composer-mcp
231
- app.kubernetes.io/instance: flow-composer-mcp
232
- ---
@@ -1,453 +0,0 @@
1
- #!/usr/bin/env node
2
- /**
3
- * Generate Kubernetes deployment manifests for all MCP services
4
- */
5
-
6
- const fs = require('fs').promises;
7
- const path = require('path');
8
-
9
- const SERVICES = [
10
- {
11
- name: 'deployment-mcp',
12
- displayName: 'ServiceNow Deployment MCP',
13
- port: 3001,
14
- replicas: 2,
15
- resources: {
16
- requests: { memory: '256Mi', cpu: '250m' },
17
- limits: { memory: '512Mi', cpu: '500m' }
18
- }
19
- },
20
- {
21
- name: 'flow-composer-mcp',
22
- displayName: 'ServiceNow Flow Composer MCP',
23
- port: 3002,
24
- replicas: 2,
25
- resources: {
26
- requests: { memory: '256Mi', cpu: '250m' },
27
- limits: { memory: '512Mi', cpu: '500m' }
28
- }
29
- },
30
- {
31
- name: 'intelligent-mcp',
32
- displayName: 'ServiceNow Intelligent MCP',
33
- port: 3003,
34
- replicas: 3, // Higher load expected
35
- resources: {
36
- requests: { memory: '512Mi', cpu: '500m' },
37
- limits: { memory: '1Gi', cpu: '1000m' }
38
- }
39
- },
40
- {
41
- name: 'update-set-mcp',
42
- displayName: 'ServiceNow Update Set MCP',
43
- port: 3004,
44
- replicas: 2,
45
- resources: {
46
- requests: { memory: '256Mi', cpu: '250m' },
47
- limits: { memory: '512Mi', cpu: '500m' }
48
- }
49
- },
50
- {
51
- name: 'graph-memory-mcp',
52
- displayName: 'ServiceNow Graph Memory MCP',
53
- port: 3005,
54
- replicas: 2,
55
- resources: {
56
- requests: { memory: '512Mi', cpu: '500m' },
57
- limits: { memory: '1Gi', cpu: '1000m' }
58
- }
59
- },
60
- {
61
- name: 'operations-mcp',
62
- displayName: 'ServiceNow Operations MCP',
63
- port: 3006,
64
- replicas: 3, // High availability for operations
65
- resources: {
66
- requests: { memory: '256Mi', cpu: '250m' },
67
- limits: { memory: '512Mi', cpu: '500m' }
68
- }
69
- },
70
- {
71
- name: 'platform-development-mcp',
72
- displayName: 'ServiceNow Platform Development MCP',
73
- port: 3007,
74
- replicas: 2,
75
- resources: {
76
- requests: { memory: '256Mi', cpu: '250m' },
77
- limits: { memory: '512Mi', cpu: '500m' }
78
- }
79
- },
80
- {
81
- name: 'integration-mcp',
82
- displayName: 'ServiceNow Integration MCP',
83
- port: 3008,
84
- replicas: 2,
85
- resources: {
86
- requests: { memory: '256Mi', cpu: '250m' },
87
- limits: { memory: '512Mi', cpu: '500m' }
88
- }
89
- },
90
- {
91
- name: 'automation-mcp',
92
- displayName: 'ServiceNow Automation MCP',
93
- port: 3009,
94
- replicas: 2,
95
- resources: {
96
- requests: { memory: '256Mi', cpu: '250m' },
97
- limits: { memory: '512Mi', cpu: '500m' }
98
- }
99
- },
100
- {
101
- name: 'security-compliance-mcp',
102
- displayName: 'ServiceNow Security & Compliance MCP',
103
- port: 3010,
104
- replicas: 2,
105
- resources: {
106
- requests: { memory: '256Mi', cpu: '250m' },
107
- limits: { memory: '512Mi', cpu: '500m' }
108
- }
109
- },
110
- {
111
- name: 'reporting-analytics-mcp',
112
- displayName: 'ServiceNow Reporting & Analytics MCP',
113
- port: 3011,
114
- replicas: 2,
115
- resources: {
116
- requests: { memory: '384Mi', cpu: '375m' }, // Analytics may need more resources
117
- limits: { memory: '768Mi', cpu: '750m' }
118
- }
119
- }
120
- ];
121
-
122
- function generateDeployment(service) {
123
- return `# ${service.displayName} Deployment
124
- apiVersion: apps/v1
125
- kind: Deployment
126
- metadata:
127
- name: ${service.name}
128
- namespace: servicenow-mcp
129
- labels:
130
- app.kubernetes.io/name: ${service.name}
131
- app.kubernetes.io/instance: ${service.name}
132
- app.kubernetes.io/version: "1.0.0"
133
- app.kubernetes.io/component: mcp-service
134
- app.kubernetes.io/part-of: servicenow-mcp
135
- app.kubernetes.io/managed-by: kubectl
136
- spec:
137
- replicas: ${service.replicas}
138
- strategy:
139
- type: RollingUpdate
140
- rollingUpdate:
141
- maxSurge: 1
142
- maxUnavailable: 0
143
- selector:
144
- matchLabels:
145
- app.kubernetes.io/name: ${service.name}
146
- app.kubernetes.io/instance: ${service.name}
147
- template:
148
- metadata:
149
- labels:
150
- app.kubernetes.io/name: ${service.name}
151
- app.kubernetes.io/instance: ${service.name}
152
- app.kubernetes.io/version: "1.0.0"
153
- app.kubernetes.io/component: mcp-service
154
- annotations:
155
- prometheus.io/scrape: "true"
156
- prometheus.io/port: "${service.port}"
157
- prometheus.io/path: "/metrics"
158
- spec:
159
- serviceAccountName: mcp-service-account
160
- securityContext:
161
- runAsNonRoot: true
162
- runAsUser: 1001
163
- runAsGroup: 1001
164
- fsGroup: 1001
165
- containers:
166
- - name: ${service.name}
167
- image: servicenow-mcp/${service.name}:latest
168
- imagePullPolicy: IfNotPresent
169
- ports:
170
- - name: http
171
- containerPort: ${service.port}
172
- protocol: TCP
173
- env:
174
- - name: SERVICE_NAME
175
- value: "${service.name}"
176
- - name: SERVER_PORT
177
- value: "${service.port}"
178
- - name: SERVICE_IP
179
- valueFrom:
180
- fieldRef:
181
- fieldPath: status.podIP
182
- - name: HOSTNAME
183
- valueFrom:
184
- fieldRef:
185
- fieldPath: metadata.name
186
- envFrom:
187
- - configMapRef:
188
- name: mcp-config
189
- - secretRef:
190
- name: servicenow-credentials
191
- - secretRef:
192
- name: neo4j-credentials
193
- livenessProbe:
194
- httpGet:
195
- path: /health
196
- port: http
197
- initialDelaySeconds: 30
198
- periodSeconds: 30
199
- timeoutSeconds: 10
200
- failureThreshold: 3
201
- successThreshold: 1
202
- readinessProbe:
203
- httpGet:
204
- path: /ready
205
- port: http
206
- initialDelaySeconds: 15
207
- periodSeconds: 10
208
- timeoutSeconds: 5
209
- failureThreshold: 3
210
- successThreshold: 1
211
- resources:
212
- requests:
213
- memory: "${service.resources.requests.memory}"
214
- cpu: "${service.resources.requests.cpu}"
215
- limits:
216
- memory: "${service.resources.limits.memory}"
217
- cpu: "${service.resources.limits.cpu}"
218
- securityContext:
219
- allowPrivilegeEscalation: false
220
- readOnlyRootFilesystem: true
221
- capabilities:
222
- drop:
223
- - ALL
224
- volumeMounts:
225
- - name: tmp
226
- mountPath: /tmp
227
- - name: logs
228
- mountPath: /app/logs
229
- volumes:
230
- - name: tmp
231
- emptyDir: {}
232
- - name: logs
233
- emptyDir: {}
234
- affinity:
235
- podAntiAffinity:
236
- preferredDuringSchedulingIgnoredDuringExecution:
237
- - weight: 100
238
- podAffinityTerm:
239
- labelSelector:
240
- matchExpressions:
241
- - key: app.kubernetes.io/name
242
- operator: In
243
- values:
244
- - ${service.name}
245
- topologyKey: kubernetes.io/hostname
246
- terminationGracePeriodSeconds: 30
247
- ---`;
248
- }
249
-
250
- function generateService(service) {
251
- return `# ${service.displayName} Service
252
- apiVersion: v1
253
- kind: Service
254
- metadata:
255
- name: ${service.name}
256
- namespace: servicenow-mcp
257
- labels:
258
- app.kubernetes.io/name: ${service.name}
259
- app.kubernetes.io/instance: ${service.name}
260
- app.kubernetes.io/version: "1.0.0"
261
- app.kubernetes.io/component: mcp-service
262
- app.kubernetes.io/part-of: servicenow-mcp
263
- annotations:
264
- service.alpha.kubernetes.io/tolerate-unready-endpoints: "true"
265
- spec:
266
- type: ClusterIP
267
- ports:
268
- - port: ${service.port}
269
- targetPort: http
270
- protocol: TCP
271
- name: http
272
- selector:
273
- app.kubernetes.io/name: ${service.name}
274
- app.kubernetes.io/instance: ${service.name}
275
- ---`;
276
- }
277
-
278
- function generateHPA(service) {
279
- return `# ${service.displayName} Horizontal Pod Autoscaler
280
- apiVersion: autoscaling/v2
281
- kind: HorizontalPodAutoscaler
282
- metadata:
283
- name: ${service.name}-hpa
284
- namespace: servicenow-mcp
285
- labels:
286
- app.kubernetes.io/name: ${service.name}
287
- app.kubernetes.io/instance: ${service.name}
288
- app.kubernetes.io/component: autoscaler
289
- spec:
290
- scaleTargetRef:
291
- apiVersion: apps/v1
292
- kind: Deployment
293
- name: ${service.name}
294
- minReplicas: ${service.replicas}
295
- maxReplicas: ${service.replicas * 3}
296
- metrics:
297
- - type: Resource
298
- resource:
299
- name: cpu
300
- target:
301
- type: Utilization
302
- averageUtilization: 70
303
- - type: Resource
304
- resource:
305
- name: memory
306
- target:
307
- type: Utilization
308
- averageUtilization: 80
309
- behavior:
310
- scaleUp:
311
- stabilizationWindowSeconds: 60
312
- policies:
313
- - type: Percent
314
- value: 50
315
- periodSeconds: 60
316
- scaleDown:
317
- stabilizationWindowSeconds: 300
318
- policies:
319
- - type: Percent
320
- value: 25
321
- periodSeconds: 60
322
- ---`;
323
- }
324
-
325
- function generateServiceMonitor(service) {
326
- return `# ${service.displayName} ServiceMonitor for Prometheus
327
- apiVersion: monitoring.coreos.com/v1
328
- kind: ServiceMonitor
329
- metadata:
330
- name: ${service.name}
331
- namespace: servicenow-mcp
332
- labels:
333
- app.kubernetes.io/name: ${service.name}
334
- app.kubernetes.io/instance: ${service.name}
335
- app.kubernetes.io/component: monitoring
336
- spec:
337
- selector:
338
- matchLabels:
339
- app.kubernetes.io/name: ${service.name}
340
- app.kubernetes.io/instance: ${service.name}
341
- endpoints:
342
- - port: http
343
- interval: 30s
344
- path: /metrics
345
- scrapeTimeout: 10s
346
- ---`;
347
- }
348
-
349
- function generatePodDisruptionBudget(service) {
350
- return `# ${service.displayName} Pod Disruption Budget
351
- apiVersion: policy/v1
352
- kind: PodDisruptionBudget
353
- metadata:
354
- name: ${service.name}-pdb
355
- namespace: servicenow-mcp
356
- labels:
357
- app.kubernetes.io/name: ${service.name}
358
- app.kubernetes.io/instance: ${service.name}
359
- app.kubernetes.io/component: availability
360
- spec:
361
- minAvailable: 1
362
- selector:
363
- matchLabels:
364
- app.kubernetes.io/name: ${service.name}
365
- app.kubernetes.io/instance: ${service.name}
366
- ---`;
367
- }
368
-
369
- async function generateAllManifests() {
370
- console.log('Generating Kubernetes manifests for all MCP services...');
371
-
372
- // Generate individual service manifests
373
- for (const service of SERVICES) {
374
- const manifest = [
375
- generateDeployment(service),
376
- generateService(service),
377
- generateHPA(service),
378
- generateServiceMonitor(service),
379
- generatePodDisruptionBudget(service)
380
- ].join('\n');
381
-
382
- const filename = path.join(__dirname, `${service.name}.yaml`);
383
- await fs.writeFile(filename, manifest);
384
- console.log(`✅ Generated manifest for ${service.name}`);
385
- }
386
-
387
- // Generate combined manifest
388
- const allManifests = SERVICES.flatMap(service => [
389
- generateDeployment(service),
390
- generateService(service),
391
- generateHPA(service),
392
- generateServiceMonitor(service),
393
- generatePodDisruptionBudget(service)
394
- ]).join('\n');
395
-
396
- const combinedFilename = path.join(__dirname, 'mcp-services.yaml');
397
- await fs.writeFile(combinedFilename, allManifests);
398
- console.log('✅ Generated combined manifest: mcp-services.yaml');
399
-
400
- // Generate kustomization.yaml
401
- const kustomization = {
402
- apiVersion: 'kustomize.config.k8s.io/v1beta1',
403
- kind: 'Kustomization',
404
- namespace: 'servicenow-mcp',
405
- resources: [
406
- 'namespace.yaml',
407
- 'configmap.yaml',
408
- 'rbac.yaml',
409
- 'infrastructure.yaml',
410
- 'mcp-services.yaml',
411
- 'monitoring.yaml',
412
- 'ingress.yaml'
413
- ],
414
- images: SERVICES.map(service => ({
415
- name: `servicenow-mcp/${service.name}`,
416
- newTag: 'latest'
417
- })),
418
- replicas: SERVICES.map(service => ({
419
- name: service.name,
420
- count: service.replicas
421
- })),
422
- commonLabels: {
423
- 'app.kubernetes.io/part-of': 'servicenow-mcp',
424
- 'app.kubernetes.io/managed-by': 'kustomize'
425
- }
426
- };
427
-
428
- await fs.writeFile(
429
- path.join(__dirname, 'kustomization.yaml'),
430
- `# Kustomization configuration for ServiceNow MCP services
431
- ${JSON.stringify(kustomization, null, 2)}`
432
- );
433
- console.log('✅ Generated kustomization.yaml');
434
-
435
- console.log('\n🎉 All Kubernetes manifests generated successfully!');
436
- console.log('\nGenerated files:');
437
- SERVICES.forEach(service => {
438
- console.log(` - ${service.name}.yaml`);
439
- });
440
- console.log(' - mcp-services.yaml (combined)');
441
- console.log(' - kustomization.yaml');
442
-
443
- console.log('\nDeployment summary:');
444
- SERVICES.forEach(service => {
445
- console.log(` - ${service.displayName}: ${service.replicas} replicas on port ${service.port}`);
446
- });
447
-
448
- const totalReplicas = SERVICES.reduce((sum, service) => sum + service.replicas, 0);
449
- console.log(`\nTotal replicas: ${totalReplicas}`);
450
- }
451
-
452
- // Run the generator
453
- generateAllManifests().catch(console.error);