@agents-at-scale/ark 0.1.37 → 0.1.39
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/dist/arkServices.js +9 -0
- package/dist/commands/chat/index.js +1 -2
- package/dist/commands/generate/generators/project.js +33 -26
- package/dist/commands/generate/index.js +2 -2
- package/dist/commands/generate/templateDiscovery.js +13 -4
- package/dist/components/AsyncOperation.d.ts +54 -0
- package/dist/components/AsyncOperation.js +110 -0
- package/dist/components/ChatUI.js +21 -72
- package/dist/components/SelectMenu.d.ts +17 -0
- package/dist/components/SelectMenu.js +21 -0
- package/dist/components/StatusMessage.d.ts +20 -0
- package/dist/components/StatusMessage.js +13 -0
- package/dist/ui/asyncOperations/connectingToArk.d.ts +15 -0
- package/dist/ui/asyncOperations/connectingToArk.js +63 -0
- package/package.json +5 -3
- package/templates/agent/agent.template.yaml +27 -0
- package/templates/marketplace/.editorconfig +24 -0
- package/templates/marketplace/.github/.keep +11 -0
- package/templates/marketplace/.github/workflows/.keep +16 -0
- package/templates/marketplace/.helmignore +23 -0
- package/templates/marketplace/.prettierrc.json +20 -0
- package/templates/marketplace/.yamllint.yml +53 -0
- package/templates/marketplace/README.md +197 -0
- package/templates/marketplace/agents/.keep +29 -0
- package/templates/marketplace/docs/.keep +19 -0
- package/templates/marketplace/mcp-servers/.keep +32 -0
- package/templates/marketplace/models/.keep +23 -0
- package/templates/marketplace/projects/.keep +43 -0
- package/templates/marketplace/queries/.keep +25 -0
- package/templates/marketplace/teams/.keep +29 -0
- package/templates/marketplace/tools/.keep +32 -0
- package/templates/marketplace/tools/examples/.keep +17 -0
- package/templates/mcp-server/Dockerfile +133 -0
- package/templates/mcp-server/Makefile +186 -0
- package/templates/mcp-server/README.md +178 -0
- package/templates/mcp-server/build.sh +76 -0
- package/templates/mcp-server/chart/Chart.yaml +22 -0
- package/templates/mcp-server/chart/templates/_helpers.tpl +62 -0
- package/templates/mcp-server/chart/templates/deployment.yaml +80 -0
- package/templates/mcp-server/chart/templates/hpa.yaml +32 -0
- package/templates/mcp-server/chart/templates/mcpserver.yaml +21 -0
- package/templates/mcp-server/chart/templates/secret.yaml +11 -0
- package/templates/mcp-server/chart/templates/service.yaml +15 -0
- package/templates/mcp-server/chart/templates/serviceaccount.yaml +13 -0
- package/templates/mcp-server/chart/values.yaml +84 -0
- package/templates/mcp-server/example-values.yaml +74 -0
- package/templates/mcp-server/examples/{{ .Values.mcpServerName }}-agent.yaml +33 -0
- package/templates/mcp-server/examples/{{ .Values.mcpServerName }}-query.yaml +24 -0
- package/templates/models/azure.yaml +33 -0
- package/templates/models/claude.yaml +28 -0
- package/templates/models/gemini.yaml +28 -0
- package/templates/models/openai.yaml +39 -0
- package/templates/project/.editorconfig +24 -0
- package/templates/project/.helmignore +24 -0
- package/templates/project/.prettierrc.json +16 -0
- package/templates/project/.yamllint.yml +50 -0
- package/templates/project/Chart.yaml +19 -0
- package/templates/project/Makefile +360 -0
- package/templates/project/README.md +377 -0
- package/templates/project/agents/.keep +11 -0
- package/templates/project/docs/.keep +14 -0
- package/templates/project/mcp-servers/.keep +34 -0
- package/templates/project/models/.keep +17 -0
- package/templates/project/queries/.keep +11 -0
- package/templates/project/scripts/setup.sh +108 -0
- package/templates/project/teams/.keep +11 -0
- package/templates/project/templates/00-rbac.yaml +168 -0
- package/templates/project/templates/01-models.yaml +11 -0
- package/templates/project/templates/02-mcp-servers.yaml +22 -0
- package/templates/project/templates/03-tools.yaml +12 -0
- package/templates/project/templates/04-agents.yaml +12 -0
- package/templates/project/templates/05-teams.yaml +11 -0
- package/templates/project/templates/06-queries.yaml +11 -0
- package/templates/project/templates/_helpers.tpl +91 -0
- package/templates/project/tests/e2e/.keep +10 -0
- package/templates/project/tests/unit/.keep +10 -0
- package/templates/project/tools/.keep +25 -0
- package/templates/project/tools/example-tool.yaml.disabled +94 -0
- package/templates/project/tools/examples/data-tool/Dockerfile +32 -0
- package/templates/project/values.yaml +141 -0
- package/templates/query/query.template.yaml +13 -0
- package/templates/team/team.template.yaml +17 -0
- package/templates/tool/.python-version +1 -0
- package/templates/tool/Dockerfile +23 -0
- package/templates/tool/README.md +238 -0
- package/templates/tool/agent.yaml +19 -0
- package/templates/tool/deploy.sh +10 -0
- package/templates/tool/deployment/deployment.yaml +31 -0
- package/templates/tool/deployment/kustomization.yaml +7 -0
- package/templates/tool/deployment/mcpserver.yaml +12 -0
- package/templates/tool/deployment/service.yaml +12 -0
- package/templates/tool/deployment/serviceaccount.yaml +8 -0
- package/templates/tool/deployment/values.yaml +3 -0
- package/templates/tool/pyproject.toml +9 -0
- package/templates/tool/src/main.py +36 -0
- package/templates/tool/uv.lock +498 -0
|
@@ -0,0 +1,360 @@
|
|
|
1
|
+
# Makefile for Agent Project Template
|
|
2
|
+
#
|
|
3
|
+
# This Makefile provides commands for building, testing, and deploying
|
|
4
|
+
# your agent project to the Agents at Scale platform.
|
|
5
|
+
|
|
6
|
+
# Load environment variables from .env file if it exists
|
|
7
|
+
-include .env
|
|
8
|
+
export
|
|
9
|
+
|
|
10
|
+
# Configuration
|
|
11
|
+
PROJECT_NAME ?= {{ .Values.projectName }}
|
|
12
|
+
NAMESPACE ?= $(PROJECT_NAME)
|
|
13
|
+
CHART_VERSION ?= 0.1.0
|
|
14
|
+
IMAGE_TAG ?= latest
|
|
15
|
+
REGISTRY ?= localhost:5000
|
|
16
|
+
|
|
17
|
+
# Helm and kubectl
|
|
18
|
+
HELM := helm
|
|
19
|
+
KUBECTL := kubectl
|
|
20
|
+
|
|
21
|
+
# Tool directories
|
|
22
|
+
TOOLS_DIR := tools
|
|
23
|
+
CHART_DIR := .
|
|
24
|
+
|
|
25
|
+
# Build output
|
|
26
|
+
OUT_DIR := out
|
|
27
|
+
DOCKER_BUILD_DIR := $(OUT_DIR)/docker
|
|
28
|
+
|
|
29
|
+
.PHONY: help
|
|
30
|
+
help: ## Show this help message
|
|
31
|
+
@echo "🚀 Quick Commands:"
|
|
32
|
+
@echo " make quickstart # 5-minute setup with proper resource dependency handling"
|
|
33
|
+
@echo " make resources-apply # Apply all custom resources in correct order"
|
|
34
|
+
@echo " make fix-models # Fix broken models (if you have query errors)"
|
|
35
|
+
@echo ""
|
|
36
|
+
@echo "📚 All Commands:"
|
|
37
|
+
@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf " \033[36m%-20s\033[0m %s\n", $$1, $$2}'
|
|
38
|
+
|
|
39
|
+
.PHONY: quickstart
|
|
40
|
+
quickstart: ## 5-minute setup and deploy to ARK
|
|
41
|
+
@echo "🚀 Quick Start - Deploying to Agents at Scale..."
|
|
42
|
+
@echo "📋 Checking prerequisites..."
|
|
43
|
+
@if [ -z "$$OPENAI_API_KEY" ] && [ -z "$$AZURE_API_KEY" ] && [ -z "$$AZURE_OPENAI_API_KEY" ]; then echo "❌ Please set OPENAI_API_KEY, AZURE_API_KEY, or AZURE_OPENAI_API_KEY in .env file"; exit 1; fi
|
|
44
|
+
@$(KUBECTL) version --client > /dev/null || (echo "❌ kubectl not found" && exit 1)
|
|
45
|
+
@$(HELM) version > /dev/null || (echo "❌ helm not found" && exit 1)
|
|
46
|
+
@command -v envsubst >/dev/null 2>&1 || (echo "❌ envsubst not found (install gettext package)" && exit 1)
|
|
47
|
+
@echo "✅ Prerequisites check passed"
|
|
48
|
+
@echo "🔐 Creating namespace..."
|
|
49
|
+
@$(KUBECTL) create namespace $(NAMESPACE) --dry-run=client -o yaml | $(KUBECTL) apply -f -
|
|
50
|
+
@echo "🚀 Deploying infrastructure (without custom resources)..."
|
|
51
|
+
@$(MAKE) build install-no-resources
|
|
52
|
+
@echo "🚀 Deploying custom resources in dependency order..."
|
|
53
|
+
@$(MAKE) resources-apply
|
|
54
|
+
@echo "✅ Quick start complete! Your agents are running on Kubernetes."
|
|
55
|
+
@if [ -d queries ] && [ -n "$$(find queries -name "*.yaml" -type f | head -1)" ]; then \
|
|
56
|
+
FIRST_QUERY=$$(find queries -name "*.yaml" -type f | head -1); \
|
|
57
|
+
QUERY_NAME=$$(grep -E "^[[:space:]]*name:" $$FIRST_QUERY | head -1 | sed 's/.*name:[[:space:]]*//'); \
|
|
58
|
+
echo " Try: fark query $$QUERY_NAME --namespace $(NAMESPACE)"; \
|
|
59
|
+
fi
|
|
60
|
+
|
|
61
|
+
.PHONY: all
|
|
62
|
+
all: build test ## Build and test everything
|
|
63
|
+
|
|
64
|
+
# Setup and initialization
|
|
65
|
+
.PHONY: init
|
|
66
|
+
init: ## Initialize project dependencies
|
|
67
|
+
@echo "Initializing project..."
|
|
68
|
+
@mkdir -p $(OUT_DIR) $(DOCKER_BUILD_DIR)
|
|
69
|
+
@if [ -f scripts/setup.sh ]; then ./scripts/setup.sh; fi
|
|
70
|
+
|
|
71
|
+
.PHONY: clean
|
|
72
|
+
clean: ## Clean build artifacts
|
|
73
|
+
@echo "Cleaning build artifacts..."
|
|
74
|
+
@rm -rf $(OUT_DIR)
|
|
75
|
+
@docker system prune -f
|
|
76
|
+
|
|
77
|
+
# Building
|
|
78
|
+
.PHONY: build
|
|
79
|
+
build: tools-build chart-package ## Build all components
|
|
80
|
+
|
|
81
|
+
.PHONY: tools-build
|
|
82
|
+
tools-build: ## Build all custom tools
|
|
83
|
+
@echo "Building custom tools..."
|
|
84
|
+
@for tool in $(shell find $(TOOLS_DIR) -mindepth 1 -maxdepth 1 -type d -not -name examples); do \
|
|
85
|
+
if [ -f "$$tool/Dockerfile" ]; then \
|
|
86
|
+
echo "Building tool: $$(basename $$tool)"; \
|
|
87
|
+
docker build -t $(REGISTRY)/$(PROJECT_NAME)-$$(basename $$tool):$(IMAGE_TAG) $$tool; \
|
|
88
|
+
fi; \
|
|
89
|
+
done
|
|
90
|
+
|
|
91
|
+
.PHONY: chart-package
|
|
92
|
+
chart-package: ## Package Helm chart
|
|
93
|
+
@echo "Packaging Helm chart..."
|
|
94
|
+
@$(HELM) package $(CHART_DIR) -d $(OUT_DIR) --version $(CHART_VERSION)
|
|
95
|
+
|
|
96
|
+
# Testing
|
|
97
|
+
.PHONY: test
|
|
98
|
+
test: test-lint test-tools test-manifests ## Run all tests
|
|
99
|
+
|
|
100
|
+
.PHONY: test-lint
|
|
101
|
+
test-lint: ## Run linting on YAML files
|
|
102
|
+
@echo "Linting YAML files..."
|
|
103
|
+
@find agents teams queries models -name "*.yaml" -exec yamllint {} \; || true
|
|
104
|
+
|
|
105
|
+
.PHONY: test-tools
|
|
106
|
+
test-tools: ## Test custom tools
|
|
107
|
+
@echo "Testing custom tools..."
|
|
108
|
+
@for tool in $(shell find $(TOOLS_DIR) -mindepth 1 -maxdepth 1 -type d -not -name examples); do \
|
|
109
|
+
if [ -f "$$tool/test.py" ]; then \
|
|
110
|
+
echo "Testing tool: $$(basename $$tool)"; \
|
|
111
|
+
cd $$tool && python test.py; \
|
|
112
|
+
fi; \
|
|
113
|
+
done
|
|
114
|
+
|
|
115
|
+
.PHONY: test-manifests
|
|
116
|
+
test-manifests: ## Validate Kubernetes manifests
|
|
117
|
+
@echo "Validating Kubernetes manifests..."
|
|
118
|
+
@find agents teams queries models -name "*.yaml" -exec $(KUBECTL) apply --dry-run=client -f {} \; || true
|
|
119
|
+
|
|
120
|
+
.PHONY: test-e2e
|
|
121
|
+
test-e2e: ## Run end-to-end tests
|
|
122
|
+
@echo "Running end-to-end tests..."
|
|
123
|
+
@if [ -d tests/e2e ]; then \
|
|
124
|
+
$(KUBECTL) apply -f tests/e2e/; \
|
|
125
|
+
echo "E2E tests applied. Check results with: kubectl get queries -w"; \
|
|
126
|
+
fi
|
|
127
|
+
|
|
128
|
+
# Development
|
|
129
|
+
.PHONY: dev
|
|
130
|
+
dev: dev-tools ## Run in development mode
|
|
131
|
+
@echo "Running in development mode..."
|
|
132
|
+
@echo "Use 'make dev-apply' to deploy manifests for testing"
|
|
133
|
+
|
|
134
|
+
.PHONY: dev-tools
|
|
135
|
+
dev-tools: ## Start tools in development mode
|
|
136
|
+
@echo "Starting tools in development mode..."
|
|
137
|
+
@for tool in $(shell find $(TOOLS_DIR) -mindepth 1 -maxdepth 1 -type d -not -name examples); do \
|
|
138
|
+
if [ -f "$$tool/main.py" ]; then \
|
|
139
|
+
echo "Starting tool: $$(basename $$tool) on port $$(( 8000 + $$(basename $$tool | wc -c) ))"; \
|
|
140
|
+
cd $$tool && python main.py --port $$(( 8000 + $$(basename $$tool | wc -c) )) & \
|
|
141
|
+
fi; \
|
|
142
|
+
done
|
|
143
|
+
|
|
144
|
+
.PHONY: dev-apply
|
|
145
|
+
dev-apply: ## Apply manifests for development testing
|
|
146
|
+
@echo "Applying development manifests..."
|
|
147
|
+
@find agents teams queries models -name "*.yaml" -exec $(KUBECTL) apply -f {} \;
|
|
148
|
+
|
|
149
|
+
.PHONY: dev-clean
|
|
150
|
+
dev-clean: ## Clean development resources
|
|
151
|
+
@echo "Cleaning development resources..."
|
|
152
|
+
@find agents teams queries models -name "*.yaml" -exec $(KUBECTL) delete -f {} \; || true
|
|
153
|
+
|
|
154
|
+
# Deployment
|
|
155
|
+
.PHONY: install
|
|
156
|
+
install: check-env build ## Deploy to ARK cluster
|
|
157
|
+
@echo "Deploying to ARK cluster..."
|
|
158
|
+
@$(HELM) upgrade --install $(PROJECT_NAME) $(CHART_DIR) \
|
|
159
|
+
--namespace $(NAMESPACE) \
|
|
160
|
+
--create-namespace \
|
|
161
|
+
--set image.tag=$(IMAGE_TAG) \
|
|
162
|
+
--set project.name=$(PROJECT_NAME) \
|
|
163
|
+
--wait
|
|
164
|
+
|
|
165
|
+
.PHONY: install-no-resources
|
|
166
|
+
install-no-resources: check-env build ## Deploy to ARK cluster without custom resources (resources handled separately)
|
|
167
|
+
@echo "Deploying to ARK cluster (excluding custom resources)..."
|
|
168
|
+
@$(HELM) upgrade --install $(PROJECT_NAME) $(CHART_DIR) \
|
|
169
|
+
--namespace $(NAMESPACE) \
|
|
170
|
+
--create-namespace \
|
|
171
|
+
--set image.tag=$(IMAGE_TAG) \
|
|
172
|
+
--set project.name=$(PROJECT_NAME) \
|
|
173
|
+
--set excludeResources=true \
|
|
174
|
+
--wait
|
|
175
|
+
|
|
176
|
+
.PHONY: uninstall
|
|
177
|
+
uninstall: ## Remove from ARK cluster
|
|
178
|
+
@echo "Removing from ARK cluster..."
|
|
179
|
+
@$(HELM) uninstall $(PROJECT_NAME) --namespace $(NAMESPACE) || true
|
|
180
|
+
|
|
181
|
+
.PHONY: upgrade
|
|
182
|
+
upgrade: build ## Upgrade deployment
|
|
183
|
+
@echo "Upgrading deployment..."
|
|
184
|
+
@$(HELM) upgrade $(PROJECT_NAME) $(CHART_DIR) \
|
|
185
|
+
--namespace $(NAMESPACE) \
|
|
186
|
+
--set image.tag=$(IMAGE_TAG) \
|
|
187
|
+
--set project.name=$(PROJECT_NAME) \
|
|
188
|
+
--wait
|
|
189
|
+
|
|
190
|
+
.PHONY: status
|
|
191
|
+
status: ## Check deployment status
|
|
192
|
+
@echo "Deployment status:"
|
|
193
|
+
@$(HELM) status $(PROJECT_NAME) --namespace $(NAMESPACE) || echo "Not deployed"
|
|
194
|
+
@echo "\nResources:"
|
|
195
|
+
@$(KUBECTL) get agents,teams,queries,models,mcpservers -n $(NAMESPACE) -l project=$(PROJECT_NAME) || true
|
|
196
|
+
|
|
197
|
+
# Image management
|
|
198
|
+
.PHONY: images-push
|
|
199
|
+
images-push: tools-build ## Push images to registry
|
|
200
|
+
@echo "Pushing images to registry..."
|
|
201
|
+
@for tool in $(shell find $(TOOLS_DIR) -mindepth 1 -maxdepth 1 -type d -not -name examples); do \
|
|
202
|
+
if [ -f "$$tool/Dockerfile" ]; then \
|
|
203
|
+
echo "Pushing: $(REGISTRY)/$(PROJECT_NAME)-$$(basename $$tool):$(IMAGE_TAG)"; \
|
|
204
|
+
docker push $(REGISTRY)/$(PROJECT_NAME)-$$(basename $$tool):$(IMAGE_TAG); \
|
|
205
|
+
fi; \
|
|
206
|
+
done
|
|
207
|
+
|
|
208
|
+
.PHONY: images-load
|
|
209
|
+
images-load: tools-build ## Load images into local cluster (kind/minikube)
|
|
210
|
+
@echo "Loading images into local cluster..."
|
|
211
|
+
@for tool in $(shell find $(TOOLS_DIR) -mindepth 1 -maxdepth 1 -type d -not -name examples); do \
|
|
212
|
+
if [ -f "$$tool/Dockerfile" ]; then \
|
|
213
|
+
echo "Loading: $(REGISTRY)/$(PROJECT_NAME)-$$(basename $$tool):$(IMAGE_TAG)"; \
|
|
214
|
+
kind load docker-image $(REGISTRY)/$(PROJECT_NAME)-$$(basename $$tool):$(IMAGE_TAG) || \
|
|
215
|
+
minikube image load $(REGISTRY)/$(PROJECT_NAME)-$$(basename $$tool):$(IMAGE_TAG) || \
|
|
216
|
+
echo "Could not load image (not using kind or minikube?)"; \
|
|
217
|
+
fi; \
|
|
218
|
+
done
|
|
219
|
+
|
|
220
|
+
# Utilities
|
|
221
|
+
.PHONY: check-env
|
|
222
|
+
check-env: ## Check required environment variables
|
|
223
|
+
@echo "Checking environment..."
|
|
224
|
+
@if [ -z "$$OPENAI_API_KEY" ] && [ -z "$$AZURE_API_KEY" ] && [ -z "$$AZURE_OPENAI_API_KEY" ] && [ -z "$$ANTHROPIC_API_KEY" ]; then \
|
|
225
|
+
echo "Warning: No model API keys set. Set at least one of:"; \
|
|
226
|
+
echo " AZURE_API_KEY, OPENAI_API_KEY, AZURE_OPENAI_API_KEY, ANTHROPIC_API_KEY"; \
|
|
227
|
+
echo " (preferably in .env file)"; \
|
|
228
|
+
fi
|
|
229
|
+
@$(KUBECTL) version --client > /dev/null || (echo "Error: kubectl not found" && exit 1)
|
|
230
|
+
@$(HELM) version > /dev/null || (echo "Error: helm not found" && exit 1)
|
|
231
|
+
@command -v envsubst >/dev/null 2>&1 || (echo "Warning: envsubst not found (install gettext package for .env substitution)")
|
|
232
|
+
|
|
233
|
+
.PHONY: models-apply
|
|
234
|
+
models-apply: ## Apply model configurations with environment variable substitution (requires .env file)
|
|
235
|
+
@echo "Applying models with environment variable substitution..."
|
|
236
|
+
@echo "ℹ️ This substitutes environment variables like \$$AZURE_BASE_URL, \$$AZURE_API_VERSION from .env file"
|
|
237
|
+
@for model_file in models/*.yaml; do \
|
|
238
|
+
if [ -f "$$model_file" ]; then \
|
|
239
|
+
echo "Applying $$model_file..."; \
|
|
240
|
+
envsubst < "$$model_file" | $(KUBECTL) apply -f - --namespace=$(NAMESPACE); \
|
|
241
|
+
fi; \
|
|
242
|
+
done
|
|
243
|
+
@echo "✅ Models applied successfully. Any existing queries will need to be recreated to use the updated models."
|
|
244
|
+
|
|
245
|
+
.PHONY: models-delete
|
|
246
|
+
models-delete: ## Delete model configurations
|
|
247
|
+
@echo "Deleting model configurations..."
|
|
248
|
+
@for model_file in models/*.yaml; do \
|
|
249
|
+
if [ -f "$$model_file" ]; then \
|
|
250
|
+
echo "Deleting resources from $$model_file..."; \
|
|
251
|
+
envsubst < "$$model_file" | $(KUBECTL) delete -f - --namespace=$(NAMESPACE) || true; \
|
|
252
|
+
fi; \
|
|
253
|
+
done
|
|
254
|
+
|
|
255
|
+
.PHONY: fix-models
|
|
256
|
+
fix-models: ## Fix models with proper environment variable substitution and restart queries
|
|
257
|
+
@echo "🔧 Fixing model configurations..."
|
|
258
|
+
@$(MAKE) models-apply
|
|
259
|
+
@echo "🔄 Restarting any existing queries to use updated models..."
|
|
260
|
+
@$(KUBECTL) get queries -n $(NAMESPACE) --no-headers -o custom-columns=NAME:.metadata.name 2>/dev/null | xargs -r -I {} $(KUBECTL) delete query {} -n $(NAMESPACE) --ignore-not-found=true || true
|
|
261
|
+
@echo "✅ Models fixed! You can now recreate your queries and they should work properly."
|
|
262
|
+
|
|
263
|
+
.PHONY: resources-apply
|
|
264
|
+
resources-apply: ## Apply all custom resources in dependency order (models → mcp-servers → tools → agents → teams → queries)
|
|
265
|
+
@echo "🚀 Applying custom resources in dependency order..."
|
|
266
|
+
@echo "📋 Step 1: Applying models with environment substitution..."
|
|
267
|
+
@for model_file in models/*.yaml; do \
|
|
268
|
+
if [ -f "$$model_file" ]; then \
|
|
269
|
+
echo "Applying $$model_file..."; \
|
|
270
|
+
envsubst < "$$model_file" | $(KUBECTL) apply -f - --namespace=$(NAMESPACE); \
|
|
271
|
+
fi; \
|
|
272
|
+
done
|
|
273
|
+
@echo "📋 Step 2: Applying MCP servers with environment substitution..."
|
|
274
|
+
@for mcp_file in mcp-servers/*.yaml; do \
|
|
275
|
+
if [ -f "$$mcp_file" ]; then \
|
|
276
|
+
echo "Applying $$mcp_file..."; \
|
|
277
|
+
envsubst < "$$mcp_file" | $(KUBECTL) apply -f - --namespace=$(NAMESPACE); \
|
|
278
|
+
fi; \
|
|
279
|
+
done
|
|
280
|
+
@echo "📋 Step 3: Applying tools with environment substitution..."
|
|
281
|
+
@for tool_file in tools/*.yaml; do \
|
|
282
|
+
if [ -f "$$tool_file" ]; then \
|
|
283
|
+
echo "Applying $$tool_file..."; \
|
|
284
|
+
envsubst < "$$tool_file" | $(KUBECTL) apply -f - --namespace=$(NAMESPACE); \
|
|
285
|
+
fi; \
|
|
286
|
+
done
|
|
287
|
+
@echo "📋 Step 4: Applying agents..."
|
|
288
|
+
@for agent_file in agents/*.yaml; do \
|
|
289
|
+
if [ -f "$$agent_file" ]; then \
|
|
290
|
+
echo "Applying $$agent_file..."; \
|
|
291
|
+
$(KUBECTL) apply -f "$$agent_file" --namespace=$(NAMESPACE); \
|
|
292
|
+
fi; \
|
|
293
|
+
done
|
|
294
|
+
@echo "📋 Step 5: Applying teams..."
|
|
295
|
+
@for team_file in teams/*.yaml; do \
|
|
296
|
+
if [ -f "$$team_file" ]; then \
|
|
297
|
+
echo "Applying $$team_file..."; \
|
|
298
|
+
$(KUBECTL) apply -f "$$team_file" --namespace=$(NAMESPACE); \
|
|
299
|
+
fi; \
|
|
300
|
+
done
|
|
301
|
+
@echo "📋 Step 6: Applying queries..."
|
|
302
|
+
@for query_file in queries/*.yaml; do \
|
|
303
|
+
if [ -f "$$query_file" ]; then \
|
|
304
|
+
echo "Applying $$query_file..."; \
|
|
305
|
+
$(KUBECTL) apply -f "$$query_file" --namespace=$(NAMESPACE); \
|
|
306
|
+
fi; \
|
|
307
|
+
done
|
|
308
|
+
@echo "✅ All custom resources applied successfully in dependency order."
|
|
309
|
+
|
|
310
|
+
.PHONY: logs
|
|
311
|
+
logs: ## Show logs from deployed components
|
|
312
|
+
@echo "Showing logs..."
|
|
313
|
+
@$(KUBECTL) logs -l project=$(PROJECT_NAME) -n $(NAMESPACE) --tail=100 -f
|
|
314
|
+
|
|
315
|
+
.PHONY: shell
|
|
316
|
+
shell: ## Open shell in a tool pod
|
|
317
|
+
@echo "Opening shell in tool pod..."
|
|
318
|
+
@$(KUBECTL) exec -it -n $(NAMESPACE) $$($(KUBECTL) get pods -l project=$(PROJECT_NAME) -n $(NAMESPACE) -o jsonpath='{.items[0].metadata.name}') -- /bin/bash
|
|
319
|
+
|
|
320
|
+
.PHONY: port-forward
|
|
321
|
+
port-forward: ## Forward ports for local development
|
|
322
|
+
@echo "Setting up port forwarding..."
|
|
323
|
+
@$(KUBECTL) port-forward -n $(NAMESPACE) svc/$(PROJECT_NAME)-tools 8000:8000 &
|
|
324
|
+
@echo "Tools available at http://localhost:8000"
|
|
325
|
+
|
|
326
|
+
# Documentation
|
|
327
|
+
.PHONY: docs
|
|
328
|
+
docs: ## Generate documentation
|
|
329
|
+
@echo "Generating documentation..."
|
|
330
|
+
@if [ -f scripts/generate-docs.sh ]; then ./scripts/generate-docs.sh; fi
|
|
331
|
+
|
|
332
|
+
.PHONY: examples
|
|
333
|
+
examples: ## Deploy example configurations
|
|
334
|
+
@echo "Deploying examples..."
|
|
335
|
+
@find agents teams queries models -name "*.yaml" -exec $(KUBECTL) apply -f {} \;
|
|
336
|
+
|
|
337
|
+
# Monitoring and debugging
|
|
338
|
+
.PHONY: debug
|
|
339
|
+
debug: ## Show debugging information
|
|
340
|
+
@echo "=== Debugging Information ==="
|
|
341
|
+
@echo "Project: $(PROJECT_NAME)"
|
|
342
|
+
@echo "Namespace: $(NAMESPACE)"
|
|
343
|
+
@echo "Chart Version: $(CHART_VERSION)"
|
|
344
|
+
@echo "Image Tag: $(IMAGE_TAG)"
|
|
345
|
+
@echo ""
|
|
346
|
+
@echo "=== Kubernetes Resources ==="
|
|
347
|
+
@$(KUBECTL) get agents,teams,queries,models,mcpservers -n $(NAMESPACE) || true
|
|
348
|
+
@echo ""
|
|
349
|
+
@echo "=== Recent Events ==="
|
|
350
|
+
@$(KUBECTL) get events -n $(NAMESPACE) --sort-by='.lastTimestamp' | tail -10 || true
|
|
351
|
+
|
|
352
|
+
.PHONY: validate
|
|
353
|
+
validate: ## Validate all configurations
|
|
354
|
+
@echo "Validating configurations..."
|
|
355
|
+
@$(HELM) lint $(CHART_DIR)
|
|
356
|
+
@find agents teams queries models -name "*.yaml" -exec $(KUBECTL) apply --dry-run=server -f {} \;
|
|
357
|
+
|
|
358
|
+
# Include custom makefiles if they exist
|
|
359
|
+
-include Makefile.local
|
|
360
|
+
-include scripts/Makefile.custom
|