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.
- package/.claude-flow/queen/queen-memory.db +0 -0
- package/CLAUDE.md +34 -5
- package/README.md +256 -384
- package/dist/agents/base-agent.d.ts +92 -0
- package/dist/agents/base-agent.d.ts.map +1 -0
- package/dist/agents/base-agent.js +228 -0
- package/dist/agents/base-agent.js.map +1 -0
- package/dist/agents/coordinator.d.ts +200 -0
- package/dist/agents/coordinator.d.ts.map +1 -0
- package/dist/agents/coordinator.js +775 -0
- package/dist/agents/coordinator.js.map +1 -0
- package/dist/agents/flow-builder-agent.d.ts +18 -0
- package/dist/agents/flow-builder-agent.d.ts.map +1 -0
- package/dist/agents/flow-builder-agent.js +536 -0
- package/dist/agents/flow-builder-agent.js.map +1 -0
- package/dist/agents/index.d.ts +18 -0
- package/dist/agents/index.d.ts.map +1 -0
- package/dist/agents/index.js +61 -0
- package/dist/agents/index.js.map +1 -0
- package/dist/agents/queen-agent-example.d.ts +23 -0
- package/dist/agents/queen-agent-example.d.ts.map +1 -0
- package/dist/agents/queen-agent-example.js +241 -0
- package/dist/agents/queen-agent-example.js.map +1 -0
- package/dist/agents/queen-agent.d.ts +180 -0
- package/dist/agents/queen-agent.d.ts.map +1 -0
- package/dist/agents/queen-agent.js +909 -0
- package/dist/agents/queen-agent.js.map +1 -0
- package/dist/agents/queen-agent.test.d.ts +6 -0
- package/dist/agents/queen-agent.test.d.ts.map +1 -0
- package/dist/agents/queen-agent.test.js.map +1 -0
- package/dist/agents/script-writer-agent.d.ts +22 -0
- package/dist/agents/script-writer-agent.d.ts.map +1 -0
- package/dist/agents/script-writer-agent.js +695 -0
- package/dist/agents/script-writer-agent.js.map +1 -0
- package/dist/agents/security-agent.d.ts +23 -0
- package/dist/agents/security-agent.d.ts.map +1 -0
- package/dist/agents/security-agent.js +619 -0
- package/dist/agents/security-agent.js.map +1 -0
- package/dist/agents/test-agent.d.ts +26 -0
- package/dist/agents/test-agent.d.ts.map +1 -0
- package/dist/agents/test-agent.js +735 -0
- package/dist/agents/test-agent.js.map +1 -0
- package/dist/agents/test-agents.d.ts +7 -0
- package/dist/agents/test-agents.d.ts.map +1 -0
- package/dist/agents/test-agents.js +65 -0
- package/dist/agents/test-agents.js.map +1 -0
- package/dist/agents/widget-creator-agent.d.ts +18 -0
- package/dist/agents/widget-creator-agent.d.ts.map +1 -0
- package/dist/agents/widget-creator-agent.js +440 -0
- package/dist/agents/widget-creator-agent.js.map +1 -0
- package/dist/cli/snow-flow-cli-integration.d.ts +30 -0
- package/dist/cli/snow-flow-cli-integration.d.ts.map +1 -0
- package/dist/cli/snow-flow-cli-integration.js +385 -0
- package/dist/cli/snow-flow-cli-integration.js.map +1 -0
- package/dist/cli.js +466 -150
- package/dist/cli.js.map +1 -1
- package/dist/config/snow-flow-config.d.ts +1454 -0
- package/dist/config/snow-flow-config.d.ts.map +1 -0
- package/dist/config/snow-flow-config.js +403 -0
- package/dist/config/snow-flow-config.js.map +1 -0
- package/dist/health/system-health.d.ts +123 -0
- package/dist/health/system-health.d.ts.map +1 -0
- package/dist/health/system-health.js +580 -0
- package/dist/health/system-health.js.map +1 -0
- package/dist/index.d.ts +12 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +19 -3
- package/dist/index.js.map +1 -1
- package/dist/mcp/servicenow-deployment-mcp-refactored.d.ts +58 -0
- package/dist/mcp/servicenow-deployment-mcp-refactored.d.ts.map +1 -0
- package/dist/mcp/servicenow-deployment-mcp-refactored.js +651 -0
- package/dist/mcp/servicenow-deployment-mcp-refactored.js.map +1 -0
- package/dist/mcp/servicenow-intelligent-mcp-refactored.d.ts +43 -0
- package/dist/mcp/servicenow-intelligent-mcp-refactored.d.ts.map +1 -0
- package/dist/mcp/servicenow-intelligent-mcp-refactored.js +576 -0
- package/dist/mcp/servicenow-intelligent-mcp-refactored.js.map +1 -0
- package/dist/mcp/servicenow-intelligent-mcp.d.ts +102 -1
- package/dist/mcp/servicenow-intelligent-mcp.d.ts.map +1 -1
- package/dist/mcp/servicenow-intelligent-mcp.js +2 -0
- package/dist/mcp/servicenow-intelligent-mcp.js.map +1 -1
- package/dist/mcp/shared/agent-context-provider.d.ts +77 -0
- package/dist/mcp/shared/agent-context-provider.d.ts.map +1 -0
- package/dist/mcp/shared/agent-context-provider.js +292 -0
- package/dist/mcp/shared/agent-context-provider.js.map +1 -0
- package/dist/mcp/shared/base-mcp-server.d.ts +97 -0
- package/dist/mcp/shared/base-mcp-server.d.ts.map +1 -0
- package/dist/mcp/shared/base-mcp-server.js +216 -0
- package/dist/mcp/shared/base-mcp-server.js.map +1 -0
- package/dist/mcp/shared/mcp-memory-manager.d.ts +87 -0
- package/dist/mcp/shared/mcp-memory-manager.d.ts.map +1 -0
- package/dist/mcp/shared/mcp-memory-manager.js +423 -0
- package/dist/mcp/shared/mcp-memory-manager.js.map +1 -0
- package/dist/memory/index.d.ts +9 -0
- package/dist/memory/index.d.ts.map +1 -0
- package/dist/memory/index.js +20 -0
- package/dist/memory/index.js.map +1 -0
- package/dist/memory/mcp-integration-example.d.ts +6 -0
- package/dist/memory/mcp-integration-example.d.ts.map +1 -0
- package/dist/memory/mcp-integration-example.js +282 -0
- package/dist/memory/mcp-integration-example.js.map +1 -0
- package/dist/memory/memory-client.d.ts +184 -0
- package/dist/memory/memory-client.d.ts.map +1 -0
- package/dist/memory/memory-client.js +325 -0
- package/dist/memory/memory-client.js.map +1 -0
- package/dist/memory/memory-operations.d.ts +170 -0
- package/dist/memory/memory-operations.d.ts.map +1 -0
- package/dist/memory/memory-operations.js +639 -0
- package/dist/memory/memory-operations.js.map +1 -0
- package/dist/memory/memory-system.d.ts +118 -0
- package/dist/memory/memory-system.d.ts.map +1 -0
- package/dist/memory/memory-system.js +477 -0
- package/dist/memory/memory-system.js.map +1 -0
- package/dist/memory/memory-test.d.ts +6 -0
- package/dist/memory/memory-test.d.ts.map +1 -0
- package/dist/memory/memory-test.js +162 -0
- package/dist/memory/memory-test.js.map +1 -0
- package/dist/memory/swarm-memory.d.ts +135 -0
- package/dist/memory/swarm-memory.d.ts.map +1 -0
- package/dist/memory/swarm-memory.js +378 -0
- package/dist/memory/swarm-memory.js.map +1 -0
- package/dist/monitoring/performance-tracker.d.ts +157 -0
- package/dist/monitoring/performance-tracker.d.ts.map +1 -0
- package/dist/monitoring/performance-tracker.js +571 -0
- package/dist/monitoring/performance-tracker.js.map +1 -0
- package/dist/queen/agent-factory.d.ts +3 -0
- package/dist/queen/agent-factory.d.ts.map +1 -1
- package/dist/queen/agent-factory.js +52 -0
- package/dist/queen/agent-factory.js.map +1 -1
- package/dist/queen/queen-memory.d.ts +8 -2
- package/dist/queen/queen-memory.d.ts.map +1 -1
- package/dist/queen/queen-memory.js +46 -4
- package/dist/queen/queen-memory.js.map +1 -1
- package/dist/snow-flow-system.d.ts +132 -0
- package/dist/snow-flow-system.d.ts.map +1 -0
- package/dist/snow-flow-system.js +396 -0
- package/dist/snow-flow-system.js.map +1 -0
- package/dist/types/todo.types.d.ts +61 -0
- package/dist/types/todo.types.d.ts.map +1 -0
- package/dist/types/todo.types.js +7 -0
- package/dist/types/todo.types.js.map +1 -0
- package/dist/utils/error-recovery.d.ts +101 -0
- package/dist/utils/error-recovery.d.ts.map +1 -0
- package/dist/utils/error-recovery.js +548 -0
- package/dist/utils/error-recovery.js.map +1 -0
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +7 -2
- package/deploy.sh +0 -366
- package/docker/base/Dockerfile.base +0 -45
- package/docker/generate-services.js +0 -244
- package/docker/nginx/Dockerfile +0 -71
- package/docker/nginx/consul-template.hcl +0 -64
- package/docker/nginx/healthcheck.sh +0 -178
- package/docker/nginx/nginx.conf +0 -210
- package/docker/nginx/supervisord.conf +0 -57
- package/docker/nginx/templates/upstreams.conf.tpl +0 -48
- package/docker/services/automation-mcp/Dockerfile +0 -32
- package/docker/services/automation-mcp/config/service.json +0 -28
- package/docker/services/automation-mcp/entrypoint.js +0 -51
- package/docker/services/deployment-mcp/Dockerfile +0 -32
- package/docker/services/deployment-mcp/entrypoint.js +0 -51
- package/docker/services/flow-composer-mcp/Dockerfile +0 -32
- package/docker/services/flow-composer-mcp/config/service.json +0 -28
- package/docker/services/flow-composer-mcp/entrypoint.js +0 -51
- package/docker/services/graph-memory-mcp/Dockerfile +0 -32
- package/docker/services/graph-memory-mcp/config/service.json +0 -28
- package/docker/services/graph-memory-mcp/entrypoint.js +0 -51
- package/docker/services/integration-mcp/Dockerfile +0 -32
- package/docker/services/integration-mcp/config/service.json +0 -28
- package/docker/services/integration-mcp/entrypoint.js +0 -51
- package/docker/services/intelligent-mcp/Dockerfile +0 -32
- package/docker/services/intelligent-mcp/config/service.json +0 -28
- package/docker/services/intelligent-mcp/entrypoint.js +0 -51
- package/docker/services/operations-mcp/Dockerfile +0 -32
- package/docker/services/operations-mcp/config/service.json +0 -28
- package/docker/services/operations-mcp/entrypoint.js +0 -51
- package/docker/services/platform-development-mcp/Dockerfile +0 -32
- package/docker/services/platform-development-mcp/config/service.json +0 -28
- package/docker/services/platform-development-mcp/entrypoint.js +0 -51
- package/docker/services/reporting-analytics-mcp/Dockerfile +0 -32
- package/docker/services/reporting-analytics-mcp/config/service.json +0 -28
- package/docker/services/reporting-analytics-mcp/entrypoint.js +0 -51
- package/docker/services/security-compliance-mcp/Dockerfile +0 -32
- package/docker/services/security-compliance-mcp/config/service.json +0 -28
- package/docker/services/security-compliance-mcp/entrypoint.js +0 -51
- package/docker/services/update-set-mcp/Dockerfile +0 -32
- package/docker/services/update-set-mcp/config/service.json +0 -28
- package/docker/services/update-set-mcp/entrypoint.js +0 -51
- package/docker-compose.override.yml +0 -132
- package/docker-compose.prod.yml +0 -340
- package/docker-compose.yml +0 -579
- package/k8s/automation-mcp.yaml +0 -232
- package/k8s/configmap.yaml +0 -237
- package/k8s/deployment-mcp.yaml +0 -232
- package/k8s/flow-composer-mcp.yaml +0 -232
- package/k8s/generate-k8s-manifests.js +0 -453
- package/k8s/graph-memory-mcp.yaml +0 -232
- package/k8s/infrastructure.yaml +0 -456
- package/k8s/ingress.yaml +0 -361
- package/k8s/integration-mcp.yaml +0 -232
- package/k8s/intelligent-mcp.yaml +0 -232
- package/k8s/kustomization.yaml +0 -111
- package/k8s/mcp-services.yaml +0 -2552
- package/k8s/monitoring.yaml +0 -515
- package/k8s/namespace.yaml +0 -80
- package/k8s/operations-mcp.yaml +0 -232
- package/k8s/platform-development-mcp.yaml +0 -232
- package/k8s/rbac.yaml +0 -140
- package/k8s/reporting-analytics-mcp.yaml +0 -232
- package/k8s/security-compliance-mcp.yaml +0 -232
- package/k8s/update-set-mcp.yaml +0 -232
- package/test-clean-install/.claude/config.json +0 -12
- package/test-clean-install/.env.example +0 -49
- package/test-clean-install/CLAUDE.md +0 -26
- package/test-clean-install/README.md +0 -23
- package/test-global-install/.claude/config.json +0 -12
- package/test-global-install/CLAUDE.md +0 -26
- package/test-global-install/README.md +0 -23
- package/test-global-install/test-global-install/.claude/config.json +0 -12
- package/test-global-install/test-global-install/CLAUDE.md +0 -26
- package/test-global-install/test-global-install/README.md +0 -23
- package/test-global-install/test-global-install/test-global-install/.claude/config.json +0 -12
- package/test-global-install/test-global-install/test-global-install/.env.example +0 -49
- package/test-global-install/test-global-install/test-global-install/CLAUDE.md +0 -26
- package/test-global-install/test-global-install/test-global-install/README.md +0 -23
- package/test-init-debug/.claude/config.json +0 -12
- package/test-init-debug/CLAUDE.md +0 -693
- package/test-init-debug/README.md +0 -392
- package/test-init-real/.claude/config.json +0 -12
- package/test-init-real/.claude/mcp-config.json +0 -128
- package/test-init-real/.claude/settings.json +0 -37
- package/test-init-real/CLAUDE.md +0 -693
- package/test-init-real/README.md +0 -392
- 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);
|