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
package/deploy.sh DELETED
@@ -1,366 +0,0 @@
1
- #!/bin/bash
2
- # Deployment script for ServiceNow MCP containerized services
3
-
4
- set -euo pipefail
5
-
6
- # Colors for output
7
- RED='\033[0;31m'
8
- GREEN='\033[0;32m'
9
- YELLOW='\033[1;33m'
10
- BLUE='\033[0;34m'
11
- NC='\033[0m' # No Color
12
-
13
- # Configuration
14
- DOCKER_REGISTRY=${DOCKER_REGISTRY:-"servicenow-mcp"}
15
- TAG=${TAG:-"latest"}
16
- ENVIRONMENT=${ENVIRONMENT:-"development"}
17
- NAMESPACE=${NAMESPACE:-"servicenow-mcp"}
18
-
19
- # Function to print colored output
20
- print_status() {
21
- echo -e "${BLUE}[INFO]${NC} $1"
22
- }
23
-
24
- print_success() {
25
- echo -e "${GREEN}[SUCCESS]${NC} $1"
26
- }
27
-
28
- print_warning() {
29
- echo -e "${YELLOW}[WARNING]${NC} $1"
30
- }
31
-
32
- print_error() {
33
- echo -e "${RED}[ERROR]${NC} $1"
34
- }
35
-
36
- # Function to check prerequisites
37
- check_prerequisites() {
38
- print_status "Checking prerequisites..."
39
-
40
- # Check if Docker is installed and running
41
- if ! command -v docker &> /dev/null; then
42
- print_error "Docker is not installed or not in PATH"
43
- exit 1
44
- fi
45
-
46
- if ! docker info &> /dev/null; then
47
- print_error "Docker daemon is not running"
48
- exit 1
49
- fi
50
-
51
- # Check if Docker Compose is available
52
- if ! command -v docker-compose &> /dev/null; then
53
- print_error "Docker Compose is not installed or not in PATH"
54
- exit 1
55
- fi
56
-
57
- # Check for Kubernetes tools if deploying to K8s
58
- if [[ "$ENVIRONMENT" == "production" ]]; then
59
- if ! command -v kubectl &> /dev/null; then
60
- print_error "kubectl is not installed or not in PATH"
61
- exit 1
62
- fi
63
-
64
- if ! kubectl cluster-info &> /dev/null; then
65
- print_error "Unable to connect to Kubernetes cluster"
66
- exit 1
67
- fi
68
- fi
69
-
70
- print_success "Prerequisites check passed"
71
- }
72
-
73
- # Function to build Docker images
74
- build_images() {
75
- print_status "Building Docker images..."
76
-
77
- # Build base image first
78
- print_status "Building base image..."
79
- docker build -f docker/base/Dockerfile.base -t ${DOCKER_REGISTRY}/base:${TAG} .
80
-
81
- # Build all MCP service images
82
- services=(
83
- "deployment-mcp"
84
- "flow-composer-mcp"
85
- "intelligent-mcp"
86
- "update-set-mcp"
87
- "graph-memory-mcp"
88
- "operations-mcp"
89
- "platform-development-mcp"
90
- "integration-mcp"
91
- "automation-mcp"
92
- "security-compliance-mcp"
93
- "reporting-analytics-mcp"
94
- )
95
-
96
- for service in "${services[@]}"; do
97
- print_status "Building ${service} image..."
98
- docker build \
99
- --build-arg BASE_IMAGE=${DOCKER_REGISTRY}/base:${TAG} \
100
- -f docker/services/${service}/Dockerfile \
101
- -t ${DOCKER_REGISTRY}/${service}:${TAG} \
102
- .
103
- done
104
-
105
- # Build nginx load balancer
106
- print_status "Building nginx load balancer image..."
107
- docker build \
108
- -f docker/nginx/Dockerfile \
109
- -t ${DOCKER_REGISTRY}/nginx-lb:${TAG} \
110
- docker/nginx/
111
-
112
- print_success "All images built successfully"
113
- }
114
-
115
- # Function to deploy using Docker Compose
116
- deploy_compose() {
117
- local compose_file="docker-compose.yml"
118
- local override_file=""
119
-
120
- case "$ENVIRONMENT" in
121
- "development")
122
- override_file="docker-compose.override.yml"
123
- ;;
124
- "staging")
125
- override_file="docker-compose.staging.yml"
126
- ;;
127
- "production")
128
- override_file="docker-compose.prod.yml"
129
- ;;
130
- esac
131
-
132
- print_status "Deploying with Docker Compose (Environment: $ENVIRONMENT)..."
133
-
134
- # Create .env file if it doesn't exist
135
- if [[ ! -f .env ]]; then
136
- print_warning ".env file not found. Creating template..."
137
- cat > .env << EOF
138
- # ServiceNow Configuration
139
- SERVICENOW_INSTANCE_URL=https://your-instance.service-now.com
140
- SERVICENOW_CLIENT_ID=your-client-id
141
- SERVICENOW_CLIENT_SECRET=your-client-secret
142
-
143
- # Neo4j Configuration
144
- NEO4J_PASSWORD=your-neo4j-password
145
-
146
- # Monitoring Configuration
147
- GRAFANA_ADMIN_PASSWORD=your-grafana-password
148
- EOF
149
- print_warning "Please update the .env file with your actual values before running again"
150
- exit 1
151
- fi
152
-
153
- # Deploy services
154
- if [[ -n "$override_file" && -f "$override_file" ]]; then
155
- docker-compose -f "$compose_file" -f "$override_file" up -d
156
- else
157
- docker-compose -f "$compose_file" up -d
158
- fi
159
-
160
- print_success "Docker Compose deployment completed"
161
- }
162
-
163
- # Function to deploy to Kubernetes
164
- deploy_kubernetes() {
165
- print_status "Deploying to Kubernetes (Environment: $ENVIRONMENT)..."
166
-
167
- # Create namespace if it doesn't exist
168
- kubectl create namespace "$NAMESPACE" --dry-run=client -o yaml | kubectl apply -f -
169
-
170
- # Apply configurations in order
171
- print_status "Applying namespace and RBAC configurations..."
172
- kubectl apply -f k8s/namespace.yaml
173
- kubectl apply -f k8s/rbac.yaml
174
-
175
- print_status "Applying configuration maps and secrets..."
176
- kubectl apply -f k8s/configmap.yaml
177
-
178
- print_status "Deploying infrastructure services..."
179
- kubectl apply -f k8s/infrastructure.yaml
180
-
181
- print_status "Waiting for infrastructure services to be ready..."
182
- kubectl -n "$NAMESPACE" wait --for=condition=available --timeout=300s deployment/consul
183
- kubectl -n "$NAMESPACE" wait --for=condition=available --timeout=300s deployment/redis
184
- kubectl -n "$NAMESPACE" wait --for=condition=available --timeout=300s deployment/neo4j
185
-
186
- print_status "Deploying MCP services..."
187
- kubectl apply -f k8s/mcp-services.yaml
188
-
189
- print_status "Waiting for MCP services to be ready..."
190
- kubectl -n "$NAMESPACE" wait --for=condition=available --timeout=300s deployment --all
191
-
192
- print_status "Deploying monitoring stack..."
193
- kubectl apply -f k8s/monitoring.yaml
194
-
195
- print_status "Configuring ingress..."
196
- kubectl apply -f k8s/ingress.yaml
197
-
198
- print_success "Kubernetes deployment completed"
199
- }
200
-
201
- # Function to verify deployment
202
- verify_deployment() {
203
- print_status "Verifying deployment..."
204
-
205
- if [[ "$ENVIRONMENT" == "production" ]]; then
206
- # Verify Kubernetes deployment
207
- print_status "Checking Kubernetes pod status..."
208
- kubectl -n "$NAMESPACE" get pods
209
-
210
- print_status "Checking service endpoints..."
211
- kubectl -n "$NAMESPACE" get services
212
-
213
- # Test service connectivity
214
- print_status "Testing service connectivity..."
215
- services=("deployment-mcp" "flow-composer-mcp" "intelligent-mcp" "operations-mcp")
216
-
217
- for service in "${services[@]}"; do
218
- if kubectl -n "$NAMESPACE" get service "$service" &> /dev/null; then
219
- print_status "✓ Service $service is accessible"
220
- else
221
- print_warning "✗ Service $service is not accessible"
222
- fi
223
- done
224
-
225
- else
226
- # Verify Docker Compose deployment
227
- print_status "Checking Docker Compose services..."
228
- docker-compose ps
229
-
230
- # Test basic connectivity
231
- print_status "Testing service connectivity..."
232
-
233
- if curl -f -s http://localhost/health &> /dev/null; then
234
- print_success "✓ Load balancer health check passed"
235
- else
236
- print_warning "✗ Load balancer health check failed"
237
- fi
238
-
239
- if curl -f -s http://localhost:8500/v1/status/leader &> /dev/null; then
240
- print_success "✓ Consul is accessible"
241
- else
242
- print_warning "✗ Consul is not accessible"
243
- fi
244
- fi
245
-
246
- print_success "Deployment verification completed"
247
- }
248
-
249
- # Function to show deployment info
250
- show_info() {
251
- print_status "Deployment Information"
252
- echo "========================"
253
- echo "Environment: $ENVIRONMENT"
254
- echo "Docker Registry: $DOCKER_REGISTRY"
255
- echo "Tag: $TAG"
256
-
257
- if [[ "$ENVIRONMENT" == "production" ]]; then
258
- echo "Namespace: $NAMESPACE"
259
- echo ""
260
- echo "Access URLs:"
261
- echo " - Main API: https://mcp.servicenow.local"
262
- echo " - Monitoring: https://monitoring.servicenow.local"
263
- echo " - Direct Access: https://direct.mcp.servicenow.local"
264
- else
265
- echo ""
266
- echo "Access URLs:"
267
- echo " - Load Balancer: http://localhost"
268
- echo " - Consul UI: http://localhost:8500"
269
- echo " - Grafana: http://localhost:3000 (admin/admin)"
270
- echo " - Prometheus: http://localhost:9090"
271
- echo ""
272
- echo "Individual Services:"
273
- for i in {1..11}; do
274
- port=$((3000 + i))
275
- echo " - Service on port $port: http://localhost:$port"
276
- done
277
- fi
278
- }
279
-
280
- # Function to stop deployment
281
- stop_deployment() {
282
- print_status "Stopping deployment..."
283
-
284
- if [[ "$ENVIRONMENT" == "production" ]]; then
285
- # Stop Kubernetes deployment
286
- kubectl delete namespace "$NAMESPACE" --ignore-not-found=true
287
- print_success "Kubernetes deployment stopped"
288
- else
289
- # Stop Docker Compose deployment
290
- docker-compose down -v
291
- print_success "Docker Compose deployment stopped"
292
- fi
293
- }
294
-
295
- # Function to show logs
296
- show_logs() {
297
- if [[ "$ENVIRONMENT" == "production" ]]; then
298
- # Show Kubernetes logs
299
- print_status "Showing recent logs from all pods..."
300
- kubectl -n "$NAMESPACE" logs --tail=50 -l app.kubernetes.io/part-of=servicenow-mcp
301
- else
302
- # Show Docker Compose logs
303
- docker-compose logs --tail=50 -f
304
- fi
305
- }
306
-
307
- # Main execution
308
- case "${1:-}" in
309
- "build")
310
- check_prerequisites
311
- build_images
312
- ;;
313
- "deploy")
314
- check_prerequisites
315
- build_images
316
- if [[ "$ENVIRONMENT" == "production" ]]; then
317
- deploy_kubernetes
318
- else
319
- deploy_compose
320
- fi
321
- verify_deployment
322
- show_info
323
- ;;
324
- "verify")
325
- verify_deployment
326
- ;;
327
- "info")
328
- show_info
329
- ;;
330
- "stop")
331
- stop_deployment
332
- ;;
333
- "logs")
334
- show_logs
335
- ;;
336
- "clean")
337
- stop_deployment
338
- print_status "Cleaning up Docker images..."
339
- docker system prune -f
340
- print_success "Cleanup completed"
341
- ;;
342
- *)
343
- echo "Usage: $0 {build|deploy|verify|info|stop|logs|clean}"
344
- echo ""
345
- echo "Commands:"
346
- echo " build - Build all Docker images"
347
- echo " deploy - Deploy the complete stack"
348
- echo " verify - Verify deployment health"
349
- echo " info - Show deployment information"
350
- echo " stop - Stop the deployment"
351
- echo " logs - Show service logs"
352
- echo " clean - Stop deployment and clean up"
353
- echo ""
354
- echo "Environment Variables:"
355
- echo " ENVIRONMENT - deployment environment (development|staging|production)"
356
- echo " DOCKER_REGISTRY - Docker registry prefix"
357
- echo " TAG - Docker image tag"
358
- echo " NAMESPACE - Kubernetes namespace (production only)"
359
- echo ""
360
- echo "Examples:"
361
- echo " ./deploy.sh build"
362
- echo " ENVIRONMENT=staging ./deploy.sh deploy"
363
- echo " ENVIRONMENT=production NAMESPACE=prod-mcp ./deploy.sh deploy"
364
- exit 1
365
- ;;
366
- esac
@@ -1,45 +0,0 @@
1
- # Base image for all ServiceNow MCP servers
2
- FROM node:20-alpine AS base
3
-
4
- # Install security updates and necessary tools
5
- RUN apk update && apk upgrade && \
6
- apk add --no-cache \
7
- curl \
8
- ca-certificates \
9
- tzdata \
10
- tini
11
-
12
- # Create app user for security
13
- RUN addgroup -g 1001 -S nodejs && \
14
- adduser -S nodejs -u 1001
15
-
16
- # Set working directory
17
- WORKDIR /app
18
-
19
- # Copy package files
20
- COPY package*.json ./
21
- COPY tsconfig.json ./
22
-
23
- # Install dependencies
24
- RUN npm ci --only=production && \
25
- npm cache clean --force
26
-
27
- # Copy source code (will be overridden by specific services)
28
- COPY src/ ./src/
29
-
30
- # Build TypeScript
31
- RUN npm run build
32
-
33
- # Create logs and temp directories with proper permissions
34
- RUN mkdir -p /app/logs /app/temp && \
35
- chown -R nodejs:nodejs /app
36
-
37
- # Switch to non-root user
38
- USER nodejs
39
-
40
- # Health check endpoint
41
- HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \
42
- CMD curl -f http://localhost:${SERVER_PORT:-3000}/health || exit 1
43
-
44
- # Use tini as entrypoint for proper signal handling
45
- ENTRYPOINT ["/sbin/tini", "--"]
@@ -1,244 +0,0 @@
1
- #!/usr/bin/env node
2
- /**
3
- * Generate Docker configurations for all MCP servers
4
- */
5
-
6
- const fs = require('fs').promises;
7
- const path = require('path');
8
-
9
- const SERVICES = [
10
- {
11
- name: 'flow-composer-mcp',
12
- displayName: 'ServiceNow Flow Composer MCP Server',
13
- port: 3002,
14
- sourceFile: 'servicenow-flow-composer-mcp.ts',
15
- className: 'ServiceNowFlowComposerMCP'
16
- },
17
- {
18
- name: 'intelligent-mcp',
19
- displayName: 'ServiceNow Intelligent MCP Server',
20
- port: 3003,
21
- sourceFile: 'servicenow-intelligent-mcp.ts',
22
- className: 'ServiceNowIntelligentMCP'
23
- },
24
- {
25
- name: 'update-set-mcp',
26
- displayName: 'ServiceNow Update Set MCP Server',
27
- port: 3004,
28
- sourceFile: 'servicenow-update-set-mcp.ts',
29
- className: 'ServiceNowUpdateSetMCP'
30
- },
31
- {
32
- name: 'graph-memory-mcp',
33
- displayName: 'ServiceNow Graph Memory MCP Server',
34
- port: 3005,
35
- sourceFile: 'servicenow-graph-memory-mcp.ts',
36
- className: 'ServiceNowGraphMemoryMCP'
37
- },
38
- {
39
- name: 'operations-mcp',
40
- displayName: 'ServiceNow Operations MCP Server',
41
- port: 3006,
42
- sourceFile: 'servicenow-operations-mcp.ts',
43
- className: 'ServiceNowOperationsMCP'
44
- },
45
- {
46
- name: 'platform-development-mcp',
47
- displayName: 'ServiceNow Platform Development MCP Server',
48
- port: 3007,
49
- sourceFile: 'servicenow-platform-development-mcp.ts',
50
- className: 'ServiceNowPlatformDevelopmentMCP'
51
- },
52
- {
53
- name: 'integration-mcp',
54
- displayName: 'ServiceNow Integration MCP Server',
55
- port: 3008,
56
- sourceFile: 'servicenow-integration-mcp.ts',
57
- className: 'ServiceNowIntegrationMCP'
58
- },
59
- {
60
- name: 'automation-mcp',
61
- displayName: 'ServiceNow Automation MCP Server',
62
- port: 3009,
63
- sourceFile: 'servicenow-automation-mcp.ts',
64
- className: 'ServiceNowAutomationMCP'
65
- },
66
- {
67
- name: 'security-compliance-mcp',
68
- displayName: 'ServiceNow Security & Compliance MCP Server',
69
- port: 3010,
70
- sourceFile: 'servicenow-security-compliance-mcp.ts',
71
- className: 'ServiceNowSecurityComplianceMCP'
72
- },
73
- {
74
- name: 'reporting-analytics-mcp',
75
- displayName: 'ServiceNow Reporting & Analytics MCP Server',
76
- port: 3011,
77
- sourceFile: 'servicenow-reporting-analytics-mcp.ts',
78
- className: 'ServiceNowReportingAnalyticsMCP'
79
- }
80
- ];
81
-
82
- function generateDockerfile(service) {
83
- return `# ${service.displayName}
84
- FROM ../base/Dockerfile.base AS ${service.name}
85
-
86
- LABEL service="${service.name}" \\
87
- version="1.0.0" \\
88
- description="${service.displayName}" \\
89
- port="${service.port}"
90
-
91
- # Set service-specific environment
92
- ENV SERVICE_NAME=${service.name} \\
93
- SERVER_PORT=${service.port} \\
94
- NODE_ENV=production
95
-
96
- # Copy service-specific configuration
97
- COPY docker/services/${service.name}/config/ ./config/
98
-
99
- # Copy only the necessary service files
100
- COPY src/mcp/${service.sourceFile} ./src/mcp/
101
- COPY src/mcp/http-transport-wrapper.ts ./src/mcp/
102
- COPY src/mcp/service-discovery-client.ts ./src/mcp/
103
-
104
- # Copy service entry point
105
- COPY docker/services/${service.name}/entrypoint.js ./
106
-
107
- # Rebuild for this specific service
108
- RUN npm run build
109
-
110
- # Expose port
111
- EXPOSE ${service.port}
112
-
113
- # Start the service
114
- CMD ["node", "entrypoint.js"]`;
115
- }
116
-
117
- function generateEntrypoint(service) {
118
- return `#!/usr/bin/env node
119
- /**
120
- * ${service.displayName} Entry Point
121
- * Initializes the server with HTTP transport for containerization
122
- */
123
-
124
- import { ${service.className} } from '../dist/mcp/${service.sourceFile.replace('.ts', '.js')}';
125
- import { HttpTransportWrapper } from '../dist/mcp/http-transport-wrapper.js';
126
- import { Logger } from '../dist/utils/logger.js';
127
-
128
- const logger = new Logger('${service.className}Container');
129
-
130
- async function start() {
131
- try {
132
- logger.info('Starting ${service.displayName}...');
133
-
134
- // Initialize the MCP server
135
- const serverInstance = new ${service.className}();
136
-
137
- // Wrap with HTTP transport
138
- const httpWrapper = new HttpTransportWrapper(serverInstance, {
139
- name: '${service.name}',
140
- version: '1.0.0',
141
- port: parseInt(process.env.SERVER_PORT || '${service.port}'),
142
- healthCheckPath: '/health',
143
- metricsPath: '/metrics'
144
- });
145
-
146
- // Start the HTTP server
147
- await httpWrapper.start();
148
-
149
- logger.info('${service.displayName} started successfully');
150
-
151
- } catch (error) {
152
- logger.error('Failed to start ${service.displayName}:', error);
153
- process.exit(1);
154
- }
155
- }
156
-
157
- // Handle process signals
158
- process.on('SIGINT', () => {
159
- logger.info('Received SIGINT, shutting down gracefully');
160
- process.exit(0);
161
- });
162
-
163
- process.on('SIGTERM', () => {
164
- logger.info('Received SIGTERM, shutting down gracefully');
165
- process.exit(0);
166
- });
167
-
168
- start();`;
169
- }
170
-
171
- function generateServiceConfig(service) {
172
- return {
173
- service: {
174
- name: service.name,
175
- displayName: service.displayName,
176
- port: service.port,
177
- healthCheck: {
178
- path: '/health',
179
- interval: '30s',
180
- timeout: '10s',
181
- retries: 3
182
- },
183
- resources: {
184
- limits: {
185
- memory: '512Mi',
186
- cpu: '500m'
187
- },
188
- requests: {
189
- memory: '256Mi',
190
- cpu: '250m'
191
- }
192
- },
193
- scaling: {
194
- minReplicas: 1,
195
- maxReplicas: 3,
196
- targetCPU: 70
197
- }
198
- }
199
- };
200
- }
201
-
202
- async function generateAllServices() {
203
- console.log('Generating Docker configurations for all MCP services...');
204
-
205
- for (const service of SERVICES) {
206
- const servicePath = path.join(__dirname, 'services', service.name);
207
-
208
- try {
209
- // Create service directory
210
- await fs.mkdir(servicePath, { recursive: true });
211
-
212
- // Create config directory
213
- await fs.mkdir(path.join(servicePath, 'config'), { recursive: true });
214
-
215
- // Generate Dockerfile
216
- const dockerfileContent = generateDockerfile(service);
217
- await fs.writeFile(path.join(servicePath, 'Dockerfile'), dockerfileContent);
218
-
219
- // Generate entrypoint
220
- const entrypointContent = generateEntrypoint(service);
221
- await fs.writeFile(path.join(servicePath, 'entrypoint.js'), entrypointContent);
222
-
223
- // Generate service configuration
224
- const configContent = generateServiceConfig(service);
225
- await fs.writeFile(
226
- path.join(servicePath, 'config', 'service.json'),
227
- JSON.stringify(configContent, null, 2)
228
- );
229
-
230
- console.log(`✅ Generated configuration for ${service.name}`);
231
- } catch (error) {
232
- console.error(`❌ Failed to generate ${service.name}:`, error);
233
- }
234
- }
235
-
236
- console.log('\\n🎉 All service configurations generated successfully!');
237
- console.log('\\nServices created:');
238
- SERVICES.forEach(service => {
239
- console.log(` - ${service.name} (${service.displayName}) - Port: ${service.port}`);
240
- });
241
- }
242
-
243
- // Run the generator
244
- generateAllServices().catch(console.error);