@agents-at-scale/ark 0.1.37 → 0.1.38

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 (95) hide show
  1. package/dist/commands/chat/index.js +1 -2
  2. package/dist/commands/generate/generators/project.js +33 -26
  3. package/dist/commands/generate/index.js +2 -2
  4. package/dist/commands/generate/templateDiscovery.js +13 -4
  5. package/dist/components/AsyncOperation.d.ts +54 -0
  6. package/dist/components/AsyncOperation.js +110 -0
  7. package/dist/components/ChatUI.js +21 -72
  8. package/dist/components/SelectMenu.d.ts +17 -0
  9. package/dist/components/SelectMenu.js +21 -0
  10. package/dist/components/StatusMessage.d.ts +20 -0
  11. package/dist/components/StatusMessage.js +13 -0
  12. package/dist/ui/asyncOperations/connectingToArk.d.ts +15 -0
  13. package/dist/ui/asyncOperations/connectingToArk.js +63 -0
  14. package/package.json +5 -3
  15. package/templates/agent/agent.template.yaml +27 -0
  16. package/templates/marketplace/.editorconfig +24 -0
  17. package/templates/marketplace/.github/.keep +11 -0
  18. package/templates/marketplace/.github/workflows/.keep +16 -0
  19. package/templates/marketplace/.helmignore +23 -0
  20. package/templates/marketplace/.prettierrc.json +20 -0
  21. package/templates/marketplace/.yamllint.yml +53 -0
  22. package/templates/marketplace/README.md +197 -0
  23. package/templates/marketplace/agents/.keep +29 -0
  24. package/templates/marketplace/docs/.keep +19 -0
  25. package/templates/marketplace/mcp-servers/.keep +32 -0
  26. package/templates/marketplace/models/.keep +23 -0
  27. package/templates/marketplace/projects/.keep +43 -0
  28. package/templates/marketplace/queries/.keep +25 -0
  29. package/templates/marketplace/teams/.keep +29 -0
  30. package/templates/marketplace/tools/.keep +32 -0
  31. package/templates/marketplace/tools/examples/.keep +17 -0
  32. package/templates/mcp-server/Dockerfile +133 -0
  33. package/templates/mcp-server/Makefile +186 -0
  34. package/templates/mcp-server/README.md +178 -0
  35. package/templates/mcp-server/build.sh +76 -0
  36. package/templates/mcp-server/chart/Chart.yaml +22 -0
  37. package/templates/mcp-server/chart/templates/_helpers.tpl +62 -0
  38. package/templates/mcp-server/chart/templates/deployment.yaml +80 -0
  39. package/templates/mcp-server/chart/templates/hpa.yaml +32 -0
  40. package/templates/mcp-server/chart/templates/mcpserver.yaml +21 -0
  41. package/templates/mcp-server/chart/templates/secret.yaml +11 -0
  42. package/templates/mcp-server/chart/templates/service.yaml +15 -0
  43. package/templates/mcp-server/chart/templates/serviceaccount.yaml +13 -0
  44. package/templates/mcp-server/chart/values.yaml +84 -0
  45. package/templates/mcp-server/example-values.yaml +74 -0
  46. package/templates/mcp-server/examples/{{ .Values.mcpServerName }}-agent.yaml +33 -0
  47. package/templates/mcp-server/examples/{{ .Values.mcpServerName }}-query.yaml +24 -0
  48. package/templates/models/azure.yaml +33 -0
  49. package/templates/models/claude.yaml +28 -0
  50. package/templates/models/gemini.yaml +28 -0
  51. package/templates/models/openai.yaml +39 -0
  52. package/templates/project/.editorconfig +24 -0
  53. package/templates/project/.helmignore +24 -0
  54. package/templates/project/.prettierrc.json +16 -0
  55. package/templates/project/.yamllint.yml +50 -0
  56. package/templates/project/Chart.yaml +19 -0
  57. package/templates/project/Makefile +360 -0
  58. package/templates/project/README.md +377 -0
  59. package/templates/project/agents/.keep +11 -0
  60. package/templates/project/docs/.keep +14 -0
  61. package/templates/project/mcp-servers/.keep +34 -0
  62. package/templates/project/models/.keep +17 -0
  63. package/templates/project/queries/.keep +11 -0
  64. package/templates/project/scripts/setup.sh +108 -0
  65. package/templates/project/teams/.keep +11 -0
  66. package/templates/project/templates/00-rbac.yaml +168 -0
  67. package/templates/project/templates/01-models.yaml +11 -0
  68. package/templates/project/templates/02-mcp-servers.yaml +22 -0
  69. package/templates/project/templates/03-tools.yaml +12 -0
  70. package/templates/project/templates/04-agents.yaml +12 -0
  71. package/templates/project/templates/05-teams.yaml +11 -0
  72. package/templates/project/templates/06-queries.yaml +11 -0
  73. package/templates/project/templates/_helpers.tpl +91 -0
  74. package/templates/project/tests/e2e/.keep +10 -0
  75. package/templates/project/tests/unit/.keep +10 -0
  76. package/templates/project/tools/.keep +25 -0
  77. package/templates/project/tools/example-tool.yaml.disabled +94 -0
  78. package/templates/project/tools/examples/data-tool/Dockerfile +32 -0
  79. package/templates/project/values.yaml +141 -0
  80. package/templates/query/query.template.yaml +13 -0
  81. package/templates/team/team.template.yaml +17 -0
  82. package/templates/tool/.python-version +1 -0
  83. package/templates/tool/Dockerfile +23 -0
  84. package/templates/tool/README.md +238 -0
  85. package/templates/tool/agent.yaml +19 -0
  86. package/templates/tool/deploy.sh +10 -0
  87. package/templates/tool/deployment/deployment.yaml +31 -0
  88. package/templates/tool/deployment/kustomization.yaml +7 -0
  89. package/templates/tool/deployment/mcpserver.yaml +12 -0
  90. package/templates/tool/deployment/service.yaml +12 -0
  91. package/templates/tool/deployment/serviceaccount.yaml +8 -0
  92. package/templates/tool/deployment/values.yaml +3 -0
  93. package/templates/tool/pyproject.toml +9 -0
  94. package/templates/tool/src/main.py +36 -0
  95. 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