@vfarcic/dot-ai 0.185.0 → 0.186.0
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/tools/version.d.ts +6 -0
- package/dist/tools/version.d.ts.map +1 -1
- package/dist/tools/version.js +43 -3
- package/package.json +1 -1
- package/scripts/dot-ai.nu +23 -76
package/dist/tools/version.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/tools/version.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/tools/version.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/version.js
CHANGED
|
@@ -49,6 +49,7 @@ const path_1 = require("path");
|
|
|
49
49
|
const zod_1 = require("zod");
|
|
50
50
|
const k8s = __importStar(require("@kubernetes/client-node"));
|
|
51
51
|
const index_1 = require("../core/index");
|
|
52
|
+
const resource_vector_service_1 = require("../core/resource-vector-service");
|
|
52
53
|
const discovery_1 = require("../core/discovery");
|
|
53
54
|
const kubernetes_utils_1 = require("../core/kubernetes-utils");
|
|
54
55
|
const tracing_1 = require("../core/tracing");
|
|
@@ -78,7 +79,8 @@ async function getVectorDBStatus() {
|
|
|
78
79
|
collections: {
|
|
79
80
|
patterns: { exists: false, error: 'Vector DB not accessible' },
|
|
80
81
|
policies: { exists: false, error: 'Vector DB not accessible' },
|
|
81
|
-
capabilities: { exists: false, error: 'Vector DB not accessible' }
|
|
82
|
+
capabilities: { exists: false, error: 'Vector DB not accessible' },
|
|
83
|
+
resources: { exists: false, error: 'Vector DB not accessible' }
|
|
82
84
|
}
|
|
83
85
|
};
|
|
84
86
|
}
|
|
@@ -101,13 +103,16 @@ async function getVectorDBStatus() {
|
|
|
101
103
|
const capabilityService = new index_1.CapabilityVectorService();
|
|
102
104
|
return capabilityService.getCapabilitiesCount();
|
|
103
105
|
});
|
|
106
|
+
// Test resources collection and get synced types
|
|
107
|
+
const resourcesStatus = await testResourcesCollectionStatus(embeddingService);
|
|
104
108
|
return {
|
|
105
109
|
connected: true,
|
|
106
110
|
url: config.url || 'unknown',
|
|
107
111
|
collections: {
|
|
108
112
|
patterns: patternsStatus,
|
|
109
113
|
policies: policiesStatus,
|
|
110
|
-
capabilities: capabilitiesStatus
|
|
114
|
+
capabilities: capabilitiesStatus,
|
|
115
|
+
resources: resourcesStatus
|
|
111
116
|
}
|
|
112
117
|
};
|
|
113
118
|
}
|
|
@@ -119,7 +124,8 @@ async function getVectorDBStatus() {
|
|
|
119
124
|
collections: {
|
|
120
125
|
patterns: { exists: false, error: 'Vector DB connection failed' },
|
|
121
126
|
policies: { exists: false, error: 'Vector DB connection failed' },
|
|
122
|
-
capabilities: { exists: false, error: 'Vector DB connection failed' }
|
|
127
|
+
capabilities: { exists: false, error: 'Vector DB connection failed' },
|
|
128
|
+
resources: { exists: false, error: 'Vector DB connection failed' }
|
|
123
129
|
}
|
|
124
130
|
};
|
|
125
131
|
}
|
|
@@ -147,6 +153,40 @@ async function testCollectionStatus(collectionName, getCountFn) {
|
|
|
147
153
|
};
|
|
148
154
|
}
|
|
149
155
|
}
|
|
156
|
+
/**
|
|
157
|
+
* Test resources collection status and get unique synced resource types
|
|
158
|
+
*/
|
|
159
|
+
async function testResourcesCollectionStatus(embeddingService) {
|
|
160
|
+
try {
|
|
161
|
+
const resourceVectorDB = new index_1.VectorDBService({ collectionName: 'resources' });
|
|
162
|
+
const resourceService = new resource_vector_service_1.ResourceVectorService('resources', resourceVectorDB, embeddingService);
|
|
163
|
+
const resources = await resourceService.listResources();
|
|
164
|
+
const documentsCount = resources.length;
|
|
165
|
+
// Extract unique resource types as "kind.group" (e.g., "Deployment.apps", "Service.")
|
|
166
|
+
const typeSet = new Set();
|
|
167
|
+
for (const resource of resources) {
|
|
168
|
+
const group = resource.apiGroup || '';
|
|
169
|
+
const syncedType = group ? `${resource.kind}.${group}` : resource.kind;
|
|
170
|
+
typeSet.add(syncedType);
|
|
171
|
+
}
|
|
172
|
+
const syncedTypes = Array.from(typeSet).sort();
|
|
173
|
+
return {
|
|
174
|
+
exists: true,
|
|
175
|
+
documentsCount,
|
|
176
|
+
syncedTypes
|
|
177
|
+
};
|
|
178
|
+
}
|
|
179
|
+
catch (error) {
|
|
180
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
181
|
+
const collectionNotExists = errorMessage.toLowerCase().includes('collection') &&
|
|
182
|
+
(errorMessage.toLowerCase().includes('not exist') ||
|
|
183
|
+
errorMessage.toLowerCase().includes('does not exist'));
|
|
184
|
+
return {
|
|
185
|
+
exists: false,
|
|
186
|
+
error: collectionNotExists ? 'resources collection does not exist' : errorMessage
|
|
187
|
+
};
|
|
188
|
+
}
|
|
189
|
+
}
|
|
150
190
|
/**
|
|
151
191
|
* Test embedding service status
|
|
152
192
|
* Performs actual embedding generation test to verify service works
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vfarcic/dot-ai",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.186.0",
|
|
4
4
|
"description": "AI-powered development productivity platform that enhances software development workflows through intelligent automation and AI-driven assistance",
|
|
5
5
|
"mcpName": "io.github.vfarcic/dot-ai",
|
|
6
6
|
"main": "dist/index.js",
|
package/scripts/dot-ai.nu
CHANGED
|
@@ -1,57 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env nu
|
|
2
2
|
|
|
3
|
-
# Installs DevOps AI
|
|
4
|
-
#
|
|
5
|
-
# Examples:
|
|
6
|
-
# > main apply dot-ai-controller
|
|
7
|
-
# > main apply dot-ai-controller --controller-version 0.17.0
|
|
8
|
-
def "main apply dot-ai-controller" [
|
|
9
|
-
--controller-version = "0.39.0"
|
|
10
|
-
] {
|
|
11
|
-
|
|
12
|
-
(
|
|
13
|
-
helm upgrade --install dot-ai-controller
|
|
14
|
-
$"oci://ghcr.io/vfarcic/dot-ai-controller/charts/dot-ai-controller:($controller_version)"
|
|
15
|
-
--namespace dot-ai --create-namespace
|
|
16
|
-
--wait
|
|
17
|
-
)
|
|
18
|
-
|
|
19
|
-
# Create CapabilityScanConfig for autonomous capability discovery
|
|
20
|
-
"apiVersion: dot-ai.devopstoolkit.live/v1alpha1
|
|
21
|
-
kind: CapabilityScanConfig
|
|
22
|
-
metadata:
|
|
23
|
-
name: default-scan
|
|
24
|
-
namespace: dot-ai
|
|
25
|
-
spec:
|
|
26
|
-
mcp:
|
|
27
|
-
endpoint: http://dot-ai-mcp.dot-ai.svc.cluster.local:3456/api/v1/tools/manageOrgData
|
|
28
|
-
authSecretRef:
|
|
29
|
-
name: dot-ai-secrets
|
|
30
|
-
key: auth-token
|
|
31
|
-
" | kubectl apply --filename -
|
|
32
|
-
|
|
33
|
-
# Create ResourceSyncConfig for semantic search across cluster resources
|
|
34
|
-
"apiVersion: dot-ai.devopstoolkit.live/v1alpha1
|
|
35
|
-
kind: ResourceSyncConfig
|
|
36
|
-
metadata:
|
|
37
|
-
name: default-sync
|
|
38
|
-
namespace: dot-ai
|
|
39
|
-
spec:
|
|
40
|
-
mcpEndpoint: http://dot-ai-mcp.dot-ai.svc.cluster.local:3456/api/v1/resources/sync
|
|
41
|
-
mcpAuthSecretRef:
|
|
42
|
-
name: dot-ai-secrets
|
|
43
|
-
key: auth-token
|
|
44
|
-
debounceWindowSeconds: 10
|
|
45
|
-
resyncIntervalMinutes: 60
|
|
46
|
-
" | kubectl apply --filename -
|
|
47
|
-
|
|
48
|
-
print $"DevOps AI Controller (ansi yellow_bold)($controller_version)(ansi reset) installed in (ansi yellow_bold)dot-ai(ansi reset) namespace"
|
|
49
|
-
print $"CapabilityScanConfig created for autonomous capability discovery"
|
|
50
|
-
print $"ResourceSyncConfig created for semantic search across cluster resources"
|
|
51
|
-
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
# Installs DevOps AI Toolkit with MCP server support and controller
|
|
3
|
+
# Installs DevOps AI Toolkit stack (MCP server, controller, and UI)
|
|
55
4
|
#
|
|
56
5
|
# Examples:
|
|
57
6
|
# > main apply dot-ai --host dot-ai.127.0.0.1.nip.io
|
|
@@ -66,8 +15,8 @@ def "main apply dot-ai" [
|
|
|
66
15
|
--ingress-enabled = true,
|
|
67
16
|
--ingress-class = "nginx",
|
|
68
17
|
--host = "dot-ai.127.0.0.1.nip.io",
|
|
69
|
-
--
|
|
70
|
-
--
|
|
18
|
+
--ui-host = "dot-ai-ui.127.0.0.1.nip.io",
|
|
19
|
+
--stack-version = "0.9.0",
|
|
71
20
|
--enable-tracing = false
|
|
72
21
|
] {
|
|
73
22
|
|
|
@@ -85,42 +34,40 @@ def "main apply dot-ai" [
|
|
|
85
34
|
|
|
86
35
|
let tracing_flags = if $enable_tracing {
|
|
87
36
|
[
|
|
88
|
-
--set 'extraEnv[0].name=OTEL_TRACING_ENABLED'
|
|
89
|
-
--set-string 'extraEnv[0].value=true'
|
|
90
|
-
--set 'extraEnv[1].name=OTEL_EXPORTER_OTLP_ENDPOINT'
|
|
91
|
-
--set 'extraEnv[1].value=http://jaeger-collector.observability.svc.cluster.local:4318/v1/traces'
|
|
92
|
-
--set 'extraEnv[2].name=OTEL_SERVICE_NAME'
|
|
93
|
-
--set 'extraEnv[2].value=dot-ai-mcp'
|
|
37
|
+
--set 'dot-ai.extraEnv[0].name=OTEL_TRACING_ENABLED'
|
|
38
|
+
--set-string 'dot-ai.extraEnv[0].value=true'
|
|
39
|
+
--set 'dot-ai.extraEnv[1].name=OTEL_EXPORTER_OTLP_ENDPOINT'
|
|
40
|
+
--set 'dot-ai.extraEnv[1].value=http://jaeger-collector.observability.svc.cluster.local:4318/v1/traces'
|
|
41
|
+
--set 'dot-ai.extraEnv[2].name=OTEL_SERVICE_NAME'
|
|
42
|
+
--set 'dot-ai.extraEnv[2].value=dot-ai-mcp'
|
|
94
43
|
]
|
|
95
44
|
} else {
|
|
96
45
|
[]
|
|
97
46
|
}
|
|
98
47
|
|
|
99
|
-
# Install MCP first (creates service and secrets needed by controller's CapabilityScanConfig)
|
|
100
48
|
(
|
|
101
|
-
helm upgrade --install dot-ai-
|
|
102
|
-
$"oci://ghcr.io/vfarcic/dot-ai/charts/dot-ai:($
|
|
103
|
-
--set $"secrets.anthropic.apiKey=($anthropic_key)"
|
|
104
|
-
--set $"secrets.openai.apiKey=($openai_key)"
|
|
105
|
-
--set $"secrets.auth.token=($auth_token)"
|
|
106
|
-
--set $"ai.provider=($provider)"
|
|
107
|
-
--set $"ai.model=($model)"
|
|
108
|
-
--set $"ingress.enabled=($ingress_enabled)"
|
|
109
|
-
--set $"ingress.className=($ingress_class)"
|
|
110
|
-
--set $"ingress.host=($host)"
|
|
111
|
-
--set "
|
|
49
|
+
helm upgrade --install dot-ai-stack
|
|
50
|
+
$"oci://ghcr.io/vfarcic/dot-ai-stack/charts/dot-ai-stack:($stack_version)"
|
|
51
|
+
--set $"dot-ai.secrets.anthropic.apiKey=($anthropic_key)"
|
|
52
|
+
--set $"dot-ai.secrets.openai.apiKey=($openai_key)"
|
|
53
|
+
--set $"dot-ai.secrets.auth.token=($auth_token)"
|
|
54
|
+
--set $"dot-ai.ai.provider=($provider)"
|
|
55
|
+
--set $"dot-ai.ai.model=($model)"
|
|
56
|
+
--set $"dot-ai.ingress.enabled=($ingress_enabled)"
|
|
57
|
+
--set $"dot-ai.ingress.className=($ingress_class)"
|
|
58
|
+
--set $"dot-ai.ingress.host=($host)"
|
|
59
|
+
--set $"dot-ai-ui.ingress.enabled=($ingress_enabled)"
|
|
60
|
+
--set $"dot-ai-ui.ingress.host=($ui_host)"
|
|
112
61
|
...$tracing_flags
|
|
113
62
|
--namespace dot-ai --create-namespace
|
|
114
63
|
--wait
|
|
115
64
|
)
|
|
116
65
|
|
|
117
|
-
# Install controller after MCP (CapabilityScanConfig references MCP service and secrets)
|
|
118
|
-
main apply dot-ai-controller --controller-version $controller_version
|
|
119
|
-
|
|
120
66
|
print $"DevOps AI Toolkit is available at (ansi yellow_bold)http://($host)(ansi reset)"
|
|
67
|
+
print $"DevOps AI UI is available at (ansi yellow_bold)http://($ui_host)(ansi reset)"
|
|
121
68
|
|
|
122
69
|
# Update .env with auth token for MCP clients
|
|
123
|
-
$"DOT_AI_AUTH_TOKEN=($auth_token)\n" | save --
|
|
70
|
+
$"DOT_AI_AUTH_TOKEN=($auth_token)\n" | save --append .env
|
|
124
71
|
|
|
125
72
|
if $enable_tracing {
|
|
126
73
|
print $"Tracing enabled: Traces will be sent to (ansi yellow_bold)Jaeger in observability namespace(ansi reset)"
|