@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,80 @@
|
|
|
1
|
+
apiVersion: apps/v1
|
|
2
|
+
kind: Deployment
|
|
3
|
+
metadata:
|
|
4
|
+
name: {{ include "{{ .Values.mcpServerName }}.fullname" . }}
|
|
5
|
+
labels:
|
|
6
|
+
{{- include "{{ .Values.mcpServerName }}.labels" . | nindent 4 }}
|
|
7
|
+
spec:
|
|
8
|
+
{{- if not .Values.autoscaling.enabled }}
|
|
9
|
+
replicas: {{ .Values.replicaCount }}
|
|
10
|
+
{{- end }}
|
|
11
|
+
selector:
|
|
12
|
+
matchLabels:
|
|
13
|
+
{{- include "{{ .Values.mcpServerName }}.selectorLabels" . | nindent 6 }}
|
|
14
|
+
template:
|
|
15
|
+
metadata:
|
|
16
|
+
{{- with .Values.podAnnotations }}
|
|
17
|
+
annotations:
|
|
18
|
+
{{- toYaml . | nindent 8 }}
|
|
19
|
+
{{- end }}
|
|
20
|
+
labels:
|
|
21
|
+
{{- include "{{ .Values.mcpServerName }}.selectorLabels" . | nindent 8 }}
|
|
22
|
+
{{- with .Values.podLabels }}
|
|
23
|
+
{{- toYaml . | nindent 8 }}
|
|
24
|
+
{{- end }}
|
|
25
|
+
spec:
|
|
26
|
+
{{- with .Values.imagePullSecrets }}
|
|
27
|
+
imagePullSecrets:
|
|
28
|
+
{{- toYaml . | nindent 8 }}
|
|
29
|
+
{{- end }}
|
|
30
|
+
serviceAccountName: {{ include "{{ .Values.mcpServerName }}.serviceAccountName" . }}
|
|
31
|
+
securityContext:
|
|
32
|
+
{{- toYaml .Values.podSecurityContext | nindent 8 }}
|
|
33
|
+
containers:
|
|
34
|
+
- name: {{ .Chart.Name }}
|
|
35
|
+
securityContext:
|
|
36
|
+
{{- toYaml .Values.securityContext | nindent 12 }}
|
|
37
|
+
image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}"
|
|
38
|
+
imagePullPolicy: {{ .Values.image.pullPolicy }}
|
|
39
|
+
ports:
|
|
40
|
+
- name: http
|
|
41
|
+
containerPort: 8080
|
|
42
|
+
protocol: TCP
|
|
43
|
+
livenessProbe:
|
|
44
|
+
{{- toYaml .Values.livenessProbe | nindent 12 }}
|
|
45
|
+
readinessProbe:
|
|
46
|
+
{{- toYaml .Values.readinessProbe | nindent 12 }}
|
|
47
|
+
resources:
|
|
48
|
+
{{- toYaml .Values.resources | nindent 12 }}
|
|
49
|
+
env:
|
|
50
|
+
{{- if .Values.requiresAuth }}
|
|
51
|
+
- name: AUTH_TOKEN
|
|
52
|
+
valueFrom:
|
|
53
|
+
secretKeyRef:
|
|
54
|
+
name: {{ .Values.auth.existingSecret | default (include "{{ .Values.mcpServerName }}.fullname" .) }}
|
|
55
|
+
key: {{ .Values.auth.existingSecretKey }}
|
|
56
|
+
{{- end }}
|
|
57
|
+
{{- if .Values.hasCustomConfig }}
|
|
58
|
+
- name: CUSTOM_CONFIG
|
|
59
|
+
value: {{ .Values.config.customValue | quote }}
|
|
60
|
+
{{- end }}
|
|
61
|
+
{{- with .Values.volumeMounts }}
|
|
62
|
+
volumeMounts:
|
|
63
|
+
{{- toYaml . | nindent 12 }}
|
|
64
|
+
{{- end }}
|
|
65
|
+
{{- with .Values.volumes }}
|
|
66
|
+
volumes:
|
|
67
|
+
{{- toYaml . | nindent 8 }}
|
|
68
|
+
{{- end }}
|
|
69
|
+
{{- with .Values.nodeSelector }}
|
|
70
|
+
nodeSelector:
|
|
71
|
+
{{- toYaml . | nindent 8 }}
|
|
72
|
+
{{- end }}
|
|
73
|
+
{{- with .Values.affinity }}
|
|
74
|
+
affinity:
|
|
75
|
+
{{- toYaml . | nindent 8 }}
|
|
76
|
+
{{- end }}
|
|
77
|
+
{{- with .Values.tolerations }}
|
|
78
|
+
tolerations:
|
|
79
|
+
{{- toYaml . | nindent 8 }}
|
|
80
|
+
{{- end }}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
{{- if .Values.autoscaling.enabled }}
|
|
2
|
+
apiVersion: autoscaling/v2
|
|
3
|
+
kind: HorizontalPodAutoscaler
|
|
4
|
+
metadata:
|
|
5
|
+
name: {{ include "{{ .Values.mcpServerName }}.fullname" . }}
|
|
6
|
+
labels:
|
|
7
|
+
{{- include "{{ .Values.mcpServerName }}.labels" . | nindent 4 }}
|
|
8
|
+
spec:
|
|
9
|
+
scaleTargetRef:
|
|
10
|
+
apiVersion: apps/v1
|
|
11
|
+
kind: Deployment
|
|
12
|
+
name: {{ include "{{ .Values.mcpServerName }}.fullname" . }}
|
|
13
|
+
minReplicas: {{ .Values.autoscaling.minReplicas }}
|
|
14
|
+
maxReplicas: {{ .Values.autoscaling.maxReplicas }}
|
|
15
|
+
metrics:
|
|
16
|
+
{{- if .Values.autoscaling.targetCPUUtilizationPercentage }}
|
|
17
|
+
- type: Resource
|
|
18
|
+
resource:
|
|
19
|
+
name: cpu
|
|
20
|
+
target:
|
|
21
|
+
type: Utilization
|
|
22
|
+
averageUtilization: {{ .Values.autoscaling.targetCPUUtilizationPercentage }}
|
|
23
|
+
{{- end }}
|
|
24
|
+
{{- if .Values.autoscaling.targetMemoryUtilizationPercentage }}
|
|
25
|
+
- type: Resource
|
|
26
|
+
resource:
|
|
27
|
+
name: memory
|
|
28
|
+
target:
|
|
29
|
+
type: Utilization
|
|
30
|
+
averageUtilization: {{ .Values.autoscaling.targetMemoryUtilizationPercentage }}
|
|
31
|
+
{{- end }}
|
|
32
|
+
{{- end }}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
{{- if .Values.mcpServer.create }}
|
|
2
|
+
apiVersion: ark.mckinsey.com/v1alpha1
|
|
3
|
+
kind: MCPServer
|
|
4
|
+
metadata:
|
|
5
|
+
name: {{ .Values.mcpServer.name | default (include "{{ .Values.mcpServerName }}.fullname" .) }}
|
|
6
|
+
labels:
|
|
7
|
+
{{- include "{{ .Values.mcpServerName }}.labels" . | nindent 4 }}
|
|
8
|
+
spec:
|
|
9
|
+
address:
|
|
10
|
+
valueFrom:
|
|
11
|
+
serviceRef:
|
|
12
|
+
name: {{ include "{{ .Values.mcpServerName }}.fullname" . }}
|
|
13
|
+
port: http
|
|
14
|
+
{{- if .Values.mcpServer.path }}
|
|
15
|
+
path: {{ .Values.mcpServer.path }}
|
|
16
|
+
{{- end }}
|
|
17
|
+
transport: sse
|
|
18
|
+
{{- if .Values.mcpServer.description }}
|
|
19
|
+
description: {{ .Values.mcpServer.description | quote }}
|
|
20
|
+
{{- end }}
|
|
21
|
+
{{- end }}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
{{- if and .Values.requiresAuth (not .Values.auth.existingSecret) }}
|
|
2
|
+
apiVersion: v1
|
|
3
|
+
kind: Secret
|
|
4
|
+
metadata:
|
|
5
|
+
name: {{ include "{{ .Values.mcpServerName }}.fullname" . }}
|
|
6
|
+
labels:
|
|
7
|
+
{{- include "{{ .Values.mcpServerName }}.labels" . | nindent 4 }}
|
|
8
|
+
type: Opaque
|
|
9
|
+
data:
|
|
10
|
+
{{ .Values.auth.existingSecretKey }}: {{ .Values.auth.token | b64enc }}
|
|
11
|
+
{{- end }}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
apiVersion: v1
|
|
2
|
+
kind: Service
|
|
3
|
+
metadata:
|
|
4
|
+
name: {{ include "{{ .Values.mcpServerName }}.fullname" . }}
|
|
5
|
+
labels:
|
|
6
|
+
{{- include "{{ .Values.mcpServerName }}.labels" . | nindent 4 }}
|
|
7
|
+
spec:
|
|
8
|
+
type: {{ .Values.service.type }}
|
|
9
|
+
ports:
|
|
10
|
+
- port: {{ .Values.service.port }}
|
|
11
|
+
targetPort: {{ .Values.service.targetPort }}
|
|
12
|
+
protocol: TCP
|
|
13
|
+
name: http
|
|
14
|
+
selector:
|
|
15
|
+
{{- include "{{ .Values.mcpServerName }}.selectorLabels" . | nindent 4 }}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
{{- if .Values.serviceAccount.create -}}
|
|
2
|
+
apiVersion: v1
|
|
3
|
+
kind: ServiceAccount
|
|
4
|
+
metadata:
|
|
5
|
+
name: {{ include "{{ .Values.mcpServerName }}.serviceAccountName" . }}
|
|
6
|
+
labels:
|
|
7
|
+
{{- include "{{ .Values.mcpServerName }}.labels" . | nindent 4 }}
|
|
8
|
+
{{- with .Values.serviceAccount.annotations }}
|
|
9
|
+
annotations:
|
|
10
|
+
{{- toYaml . | nindent 4 }}
|
|
11
|
+
{{- end }}
|
|
12
|
+
automountServiceAccountToken: {{ .Values.serviceAccount.automount }}
|
|
13
|
+
{{- end }}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
replicaCount: 1
|
|
2
|
+
|
|
3
|
+
image:
|
|
4
|
+
repository: {{ .Values.mcpServerName }}
|
|
5
|
+
pullPolicy: IfNotPresent
|
|
6
|
+
tag: "latest"
|
|
7
|
+
|
|
8
|
+
imagePullSecrets: []
|
|
9
|
+
nameOverride: ""
|
|
10
|
+
fullnameOverride: ""
|
|
11
|
+
|
|
12
|
+
serviceAccount:
|
|
13
|
+
create: true
|
|
14
|
+
automount: true
|
|
15
|
+
annotations: {}
|
|
16
|
+
name: ""
|
|
17
|
+
|
|
18
|
+
podAnnotations: {}
|
|
19
|
+
podLabels: {}
|
|
20
|
+
|
|
21
|
+
podSecurityContext:
|
|
22
|
+
fsGroup: 2000
|
|
23
|
+
|
|
24
|
+
securityContext:
|
|
25
|
+
capabilities:
|
|
26
|
+
drop:
|
|
27
|
+
- ALL
|
|
28
|
+
readOnlyRootFilesystem: true
|
|
29
|
+
runAsNonRoot: true
|
|
30
|
+
runAsUser: 1000
|
|
31
|
+
|
|
32
|
+
service:
|
|
33
|
+
type: ClusterIP
|
|
34
|
+
port: 8080
|
|
35
|
+
targetPort: 8080
|
|
36
|
+
|
|
37
|
+
resources:
|
|
38
|
+
limits:
|
|
39
|
+
cpu: 500m
|
|
40
|
+
memory: 512Mi
|
|
41
|
+
requests:
|
|
42
|
+
cpu: 100m
|
|
43
|
+
memory: 128Mi
|
|
44
|
+
|
|
45
|
+
livenessProbe:
|
|
46
|
+
tcpSocket:
|
|
47
|
+
port: http
|
|
48
|
+
readinessProbe:
|
|
49
|
+
tcpSocket:
|
|
50
|
+
port: http
|
|
51
|
+
|
|
52
|
+
autoscaling:
|
|
53
|
+
enabled: false
|
|
54
|
+
minReplicas: 1
|
|
55
|
+
maxReplicas: 100
|
|
56
|
+
targetCPUUtilizationPercentage: 80
|
|
57
|
+
# targetMemoryUtilizationPercentage: 80
|
|
58
|
+
|
|
59
|
+
nodeSelector: {}
|
|
60
|
+
|
|
61
|
+
tolerations: []
|
|
62
|
+
|
|
63
|
+
affinity: {}
|
|
64
|
+
|
|
65
|
+
{{- if .Values.requiresAuth }}
|
|
66
|
+
# Authentication configuration
|
|
67
|
+
auth:
|
|
68
|
+
token: ""
|
|
69
|
+
existingSecret: ""
|
|
70
|
+
existingSecretKey: "token"
|
|
71
|
+
{{- end }}
|
|
72
|
+
|
|
73
|
+
{{- if .Values.hasCustomConfig }}
|
|
74
|
+
# Custom configuration
|
|
75
|
+
config:
|
|
76
|
+
customValue: ""
|
|
77
|
+
{{- end }}
|
|
78
|
+
|
|
79
|
+
# MCP Server configuration
|
|
80
|
+
mcpServer:
|
|
81
|
+
create: true
|
|
82
|
+
name: ""
|
|
83
|
+
description: "{{ .Values.description }}"
|
|
84
|
+
path: "/mcp"
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
# Example values for {{ .Values.mcpServerName }} MCP Server
|
|
2
|
+
|
|
3
|
+
replicaCount: 2
|
|
4
|
+
|
|
5
|
+
image:
|
|
6
|
+
repository: {{ .Values.mcpServerName }}
|
|
7
|
+
pullPolicy: Always
|
|
8
|
+
tag: "v1.0.0"
|
|
9
|
+
|
|
10
|
+
service:
|
|
11
|
+
type: ClusterIP
|
|
12
|
+
port: 8080
|
|
13
|
+
|
|
14
|
+
resources:
|
|
15
|
+
limits:
|
|
16
|
+
cpu: 1000m
|
|
17
|
+
memory: 1Gi
|
|
18
|
+
requests:
|
|
19
|
+
cpu: 250m
|
|
20
|
+
memory: 256Mi
|
|
21
|
+
|
|
22
|
+
{{- if .Values.requiresAuth }}
|
|
23
|
+
# Authentication configuration
|
|
24
|
+
auth:
|
|
25
|
+
token: "your-auth-token-here"
|
|
26
|
+
# Or use existing secret:
|
|
27
|
+
# existingSecret: "my-auth-secret"
|
|
28
|
+
# existingSecretKey: "token"
|
|
29
|
+
{{- end }}
|
|
30
|
+
|
|
31
|
+
{{- if .Values.hasCustomConfig }}
|
|
32
|
+
# Custom configuration
|
|
33
|
+
config:
|
|
34
|
+
customValue: "custom-configuration-value"
|
|
35
|
+
{{- end }}
|
|
36
|
+
|
|
37
|
+
# MCP Server configuration
|
|
38
|
+
mcpServer:
|
|
39
|
+
create: true
|
|
40
|
+
name: "{{ .Values.mcpServerName }}-server"
|
|
41
|
+
description: "{{ .Values.description }}"
|
|
42
|
+
path: "/mcp"
|
|
43
|
+
|
|
44
|
+
# Enable autoscaling
|
|
45
|
+
autoscaling:
|
|
46
|
+
enabled: true
|
|
47
|
+
minReplicas: 2
|
|
48
|
+
maxReplicas: 10
|
|
49
|
+
targetCPUUtilizationPercentage: 70
|
|
50
|
+
targetMemoryUtilizationPercentage: 80
|
|
51
|
+
|
|
52
|
+
# Node selection
|
|
53
|
+
nodeSelector:
|
|
54
|
+
kubernetes.io/arch: amd64
|
|
55
|
+
|
|
56
|
+
# Tolerations
|
|
57
|
+
tolerations:
|
|
58
|
+
- key: "node-role.kubernetes.io/worker"
|
|
59
|
+
operator: "Exists"
|
|
60
|
+
effect: "NoSchedule"
|
|
61
|
+
|
|
62
|
+
# Affinity rules
|
|
63
|
+
affinity:
|
|
64
|
+
podAntiAffinity:
|
|
65
|
+
preferredDuringSchedulingIgnoredDuringExecution:
|
|
66
|
+
- weight: 100
|
|
67
|
+
podAffinityTerm:
|
|
68
|
+
labelSelector:
|
|
69
|
+
matchExpressions:
|
|
70
|
+
- key: app.kubernetes.io/name
|
|
71
|
+
operator: In
|
|
72
|
+
values:
|
|
73
|
+
- {{ .Values.mcpServerName }}
|
|
74
|
+
topologyKey: kubernetes.io/hostname
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
apiVersion: ark.mckinsey.com/v1alpha1
|
|
2
|
+
kind: Agent
|
|
3
|
+
metadata:
|
|
4
|
+
name: sample-{{ .Values.mcpServerName }}-agent
|
|
5
|
+
labels:
|
|
6
|
+
app.kubernetes.io/name: {{ .Values.mcpServerName }}
|
|
7
|
+
app.kubernetes.io/component: agent
|
|
8
|
+
spec:
|
|
9
|
+
model:
|
|
10
|
+
name: default
|
|
11
|
+
system: |
|
|
12
|
+
You are an AI assistant that can use {{ .Values.mcpServerName }} tools to help users.
|
|
13
|
+
|
|
14
|
+
Available tools from {{ .Values.mcpServerName }}:
|
|
15
|
+
{{- range .Values.tools }}
|
|
16
|
+
- {{ .name }}: {{ .description }}
|
|
17
|
+
{{- end }}
|
|
18
|
+
|
|
19
|
+
Use these tools when appropriate to help users with their requests.
|
|
20
|
+
|
|
21
|
+
tools:
|
|
22
|
+
- mcpServers:
|
|
23
|
+
- name: {{ .Values.mcpServerName }}-server
|
|
24
|
+
{{- if .Values.toolConfigurations }}
|
|
25
|
+
{{- range .Values.toolConfigurations }}
|
|
26
|
+
- name: {{ .name }}
|
|
27
|
+
description: {{ .description }}
|
|
28
|
+
{{- if .parameters }}
|
|
29
|
+
parameters:
|
|
30
|
+
{{- toYaml .parameters | nindent 8 }}
|
|
31
|
+
{{- end }}
|
|
32
|
+
{{- end }}
|
|
33
|
+
{{- end }}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
apiVersion: ark.mckinsey.com/v1alpha1
|
|
2
|
+
kind: Query
|
|
3
|
+
metadata:
|
|
4
|
+
name: test-{{ .Values.mcpServerName }}-query
|
|
5
|
+
labels:
|
|
6
|
+
app.kubernetes.io/name: {{ .Values.mcpServerName }}
|
|
7
|
+
app.kubernetes.io/component: query
|
|
8
|
+
spec:
|
|
9
|
+
agents:
|
|
10
|
+
- name: sample-{{ .Values.mcpServerName }}-agent
|
|
11
|
+
|
|
12
|
+
query: |
|
|
13
|
+
{{- if .Values.sampleQuery }}
|
|
14
|
+
{{ .Values.sampleQuery }}
|
|
15
|
+
{{- else }}
|
|
16
|
+
Test the {{ .Values.mcpServerName }} MCP server by using its available tools.
|
|
17
|
+
{{- range .Values.tools }}
|
|
18
|
+
Please try using the {{ .name }} tool.
|
|
19
|
+
{{- end }}
|
|
20
|
+
{{- end }}
|
|
21
|
+
|
|
22
|
+
parameters:
|
|
23
|
+
timeout: "5m"
|
|
24
|
+
maxTokens: 1000
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
apiVersion: v1
|
|
2
|
+
kind: Secret
|
|
3
|
+
metadata:
|
|
4
|
+
name: {{ .Values.modelName }}-model-token
|
|
5
|
+
type: Opaque
|
|
6
|
+
stringData:
|
|
7
|
+
# IMPORTANT: Environment variables must be substituted before applying
|
|
8
|
+
# Use one of these methods:
|
|
9
|
+
# 1. make models-apply (recommended)
|
|
10
|
+
# 2. make quickstart (full deployment)
|
|
11
|
+
# 3. make fix-models (if you have broken queries)
|
|
12
|
+
# Manual: export AZURE_API_KEY="key" && envsubst < models/{{ .Values.modelName }}.yaml | kubectl apply -f -
|
|
13
|
+
token: ${AZURE_API_KEY}
|
|
14
|
+
---
|
|
15
|
+
apiVersion: ark.mckinsey.com/v1alpha1
|
|
16
|
+
kind: Model
|
|
17
|
+
metadata:
|
|
18
|
+
name: {{ .Values.modelName }}
|
|
19
|
+
spec:
|
|
20
|
+
type: azure
|
|
21
|
+
model:
|
|
22
|
+
value: gpt-4.1-mini
|
|
23
|
+
config:
|
|
24
|
+
azure:
|
|
25
|
+
baseUrl:
|
|
26
|
+
value: ${AZURE_BASE_URL}
|
|
27
|
+
apiKey:
|
|
28
|
+
valueFrom:
|
|
29
|
+
secretKeyRef:
|
|
30
|
+
name: {{ .Values.modelName }}-model-token
|
|
31
|
+
key: token
|
|
32
|
+
apiVersion:
|
|
33
|
+
value: ${AZURE_API_VERSION}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
apiVersion: v1
|
|
2
|
+
kind: Secret
|
|
3
|
+
metadata:
|
|
4
|
+
name: {{ .Values.modelName }}-api-key
|
|
5
|
+
type: Opaque
|
|
6
|
+
stringData:
|
|
7
|
+
# Make sure to use
|
|
8
|
+
# export CLAUDE_API_KEY="key"
|
|
9
|
+
# envsubst < models/{{ .Values.modelName }}.yaml | kubectl apply -f -
|
|
10
|
+
apiKey: ${CLAUDE_API_KEY}
|
|
11
|
+
---
|
|
12
|
+
apiVersion: ark.mckinsey.com/v1alpha1
|
|
13
|
+
kind: Model
|
|
14
|
+
metadata:
|
|
15
|
+
name: {{ .Values.modelName }}
|
|
16
|
+
spec:
|
|
17
|
+
type: openai
|
|
18
|
+
model:
|
|
19
|
+
value: claude-opus-4-20250514
|
|
20
|
+
config:
|
|
21
|
+
openai:
|
|
22
|
+
baseUrl:
|
|
23
|
+
value: ${CLAUDE_BASE_URL}
|
|
24
|
+
apiKey:
|
|
25
|
+
valueFrom:
|
|
26
|
+
secretKeyRef:
|
|
27
|
+
name: {{ .Values.modelName }}-api-key
|
|
28
|
+
key: apiKey
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
apiVersion: v1
|
|
2
|
+
kind: Secret
|
|
3
|
+
metadata:
|
|
4
|
+
name: {{ .Values.modelName }}-model-token
|
|
5
|
+
type: Opaque
|
|
6
|
+
stringData:
|
|
7
|
+
# Make sure to use
|
|
8
|
+
# export GEMINI_API_KEY="key"
|
|
9
|
+
# envsubst < models/{{ .Values.modelName }}.yaml | kubectl apply -f -
|
|
10
|
+
token: ${GEMINI_API_KEY}
|
|
11
|
+
---
|
|
12
|
+
apiVersion: ark.mckinsey.com/v1alpha1
|
|
13
|
+
kind: Model
|
|
14
|
+
metadata:
|
|
15
|
+
name: {{ .Values.modelName }}
|
|
16
|
+
spec:
|
|
17
|
+
type: openai
|
|
18
|
+
model:
|
|
19
|
+
value: gemini-2.0-flash
|
|
20
|
+
config:
|
|
21
|
+
openai:
|
|
22
|
+
baseUrl:
|
|
23
|
+
value: ${GEMINI_BASE_URL}
|
|
24
|
+
apiKey:
|
|
25
|
+
valueFrom:
|
|
26
|
+
secretKeyRef:
|
|
27
|
+
name: {{ .Values.modelName }}-model-token
|
|
28
|
+
key: token
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
apiVersion: v1
|
|
2
|
+
kind: Secret
|
|
3
|
+
metadata:
|
|
4
|
+
name: {{ .Values.modelName }}-secret
|
|
5
|
+
type: Opaque
|
|
6
|
+
stringData:
|
|
7
|
+
# Make sure to use
|
|
8
|
+
# export OPENAI_API_KEY="key"
|
|
9
|
+
# envsubst < models/{{ .Values.modelName }}.yaml | kubectl apply -f -
|
|
10
|
+
token: ${OPENAI_API_KEY}
|
|
11
|
+
---
|
|
12
|
+
apiVersion: ark.mckinsey.com/v1alpha1
|
|
13
|
+
kind: Model
|
|
14
|
+
metadata:
|
|
15
|
+
name: {{ .Values.modelName }}
|
|
16
|
+
spec:
|
|
17
|
+
type: openai
|
|
18
|
+
model:
|
|
19
|
+
value: gpt-4.1-mini
|
|
20
|
+
config:
|
|
21
|
+
openai:
|
|
22
|
+
properties:
|
|
23
|
+
temperature:
|
|
24
|
+
value: "0.7"
|
|
25
|
+
max_tokens:
|
|
26
|
+
value: "2000"
|
|
27
|
+
top_p:
|
|
28
|
+
value: "0.95"
|
|
29
|
+
logprobs:
|
|
30
|
+
value: "true"
|
|
31
|
+
top_logprobs:
|
|
32
|
+
value: "5"
|
|
33
|
+
baseUrl:
|
|
34
|
+
value: ${OPENAI_BASE_URL}
|
|
35
|
+
apiKey:
|
|
36
|
+
valueFrom:
|
|
37
|
+
secretKeyRef:
|
|
38
|
+
name: {{ .Values.modelName }}-secret
|
|
39
|
+
key: token
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# EditorConfig is awesome: https://EditorConfig.org
|
|
2
|
+
|
|
3
|
+
# top-most EditorConfig file
|
|
4
|
+
root = true
|
|
5
|
+
|
|
6
|
+
[*]
|
|
7
|
+
indent_style = space
|
|
8
|
+
indent_size = 2
|
|
9
|
+
end_of_line = lf
|
|
10
|
+
charset = utf-8
|
|
11
|
+
trim_trailing_whitespace = true
|
|
12
|
+
insert_final_newline = true
|
|
13
|
+
|
|
14
|
+
[*.md]
|
|
15
|
+
trim_trailing_whitespace = false
|
|
16
|
+
|
|
17
|
+
[*.{yaml,yml}]
|
|
18
|
+
indent_size = 2
|
|
19
|
+
|
|
20
|
+
[*.{js,ts,jsx,tsx}]
|
|
21
|
+
indent_size = 2
|
|
22
|
+
|
|
23
|
+
[Makefile]
|
|
24
|
+
indent_style = tab
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# Patterns to ignore when building packages.
|
|
2
|
+
# This supports shell glob matching, relative path matching, and
|
|
3
|
+
# negation (prefixed with !). Only one pattern per line.
|
|
4
|
+
.DS_Store
|
|
5
|
+
# Common VCS dirs
|
|
6
|
+
.git/
|
|
7
|
+
.gitignore
|
|
8
|
+
.bzr/
|
|
9
|
+
.bzrignore
|
|
10
|
+
.hg/
|
|
11
|
+
.hgignore
|
|
12
|
+
.svn/
|
|
13
|
+
# Common backup files
|
|
14
|
+
*.swp
|
|
15
|
+
*.bak
|
|
16
|
+
*.tmp
|
|
17
|
+
*~
|
|
18
|
+
# Various IDEs
|
|
19
|
+
.project
|
|
20
|
+
.idea/
|
|
21
|
+
*.tmproj
|
|
22
|
+
.vscode/
|
|
23
|
+
# Build artifacts
|
|
24
|
+
resources/
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
{
|
|
2
|
+
"semi": true,
|
|
3
|
+
"singleQuote": true,
|
|
4
|
+
"tabWidth": 2,
|
|
5
|
+
"trailingComma": "es5",
|
|
6
|
+
"bracketSpacing": false,
|
|
7
|
+
"overrides": [
|
|
8
|
+
{
|
|
9
|
+
"files": ["*.yaml", "*.yml"],
|
|
10
|
+
"options": {
|
|
11
|
+
"bracketSpacing": false,
|
|
12
|
+
"singleQuote": false
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
]
|
|
16
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# YAML Lint configuration for agent project
|
|
2
|
+
|
|
3
|
+
extends: default
|
|
4
|
+
|
|
5
|
+
rules:
|
|
6
|
+
# Allow longer lines for readability
|
|
7
|
+
line-length:
|
|
8
|
+
max: 120
|
|
9
|
+
level: warning
|
|
10
|
+
|
|
11
|
+
# Allow indentation for readability in YAML
|
|
12
|
+
indentation:
|
|
13
|
+
spaces: 2
|
|
14
|
+
indent-sequences: true
|
|
15
|
+
check-multi-line-strings: false
|
|
16
|
+
|
|
17
|
+
# Be more flexible with comments
|
|
18
|
+
comments:
|
|
19
|
+
min-spaces-from-content: 1
|
|
20
|
+
|
|
21
|
+
# Allow empty values for optional fields
|
|
22
|
+
empty-values:
|
|
23
|
+
forbid-in-block-mappings: false
|
|
24
|
+
forbid-in-flow-mappings: true
|
|
25
|
+
|
|
26
|
+
# Allow truthy values (on/off, yes/no)
|
|
27
|
+
truthy:
|
|
28
|
+
allowed-values: ["true", "false", "on", "off", "yes", "no"]
|
|
29
|
+
|
|
30
|
+
# Allow document start/end markers
|
|
31
|
+
document-start:
|
|
32
|
+
present: false
|
|
33
|
+
|
|
34
|
+
# Allow multiple documents in one file
|
|
35
|
+
document-end:
|
|
36
|
+
present: false
|
|
37
|
+
|
|
38
|
+
# Allow braces for Golang template syntax (Helm templates)
|
|
39
|
+
braces:
|
|
40
|
+
min-spaces-inside: 0
|
|
41
|
+
max-spaces-inside: 1
|
|
42
|
+
min-spaces-inside-empty: 0
|
|
43
|
+
max-spaces-inside-empty: 0
|
|
44
|
+
|
|
45
|
+
# Don't enforce bracket spacing for template syntax
|
|
46
|
+
brackets:
|
|
47
|
+
min-spaces-inside: 0
|
|
48
|
+
max-spaces-inside: 1
|
|
49
|
+
min-spaces-inside-empty: 0
|
|
50
|
+
max-spaces-inside-empty: 0
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
apiVersion: v2
|
|
2
|
+
name: {{.Values.projectName}}
|
|
3
|
+
description: A Helm chart for {{ .Values.projectName }} - Agents at Scale project
|
|
4
|
+
type: application
|
|
5
|
+
version: 0.1.0
|
|
6
|
+
appVersion: "1.0.0"
|
|
7
|
+
home: https://github.com/your-org/{{ .Values.projectName }}
|
|
8
|
+
sources:
|
|
9
|
+
- https://github.com/your-org/{{ .Values.projectName }}
|
|
10
|
+
maintainers:
|
|
11
|
+
- name: {{.Values.authorName}}
|
|
12
|
+
email: {{.Values.authorEmail}}
|
|
13
|
+
keywords:
|
|
14
|
+
- agents
|
|
15
|
+
- ai
|
|
16
|
+
- automation
|
|
17
|
+
- ark
|
|
18
|
+
annotations:
|
|
19
|
+
category: AI/ML
|