@vfarcic/dot-ai 1.3.0 → 1.5.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/core/artifacthub.d.ts.map +1 -1
- package/dist/core/artifacthub.js +16 -10
- package/dist/core/base-vector-service.d.ts.map +1 -1
- package/dist/core/base-vector-service.js +19 -10
- package/dist/core/capabilities.d.ts.map +1 -1
- package/dist/core/capabilities.js +17 -11
- package/dist/core/capability-operations.d.ts.map +1 -1
- package/dist/core/capability-operations.js +118 -98
- package/dist/core/crd-availability.d.ts.map +1 -1
- package/dist/core/crd-availability.js +2 -2
- package/dist/core/deploy-operation.d.ts.map +1 -1
- package/dist/core/deploy-operation.js +9 -6
- package/dist/core/discovery.d.ts.map +1 -1
- package/dist/core/discovery.js +157 -56
- package/dist/core/embedding-service.d.ts.map +1 -1
- package/dist/core/embedding-service.js +11 -7
- package/dist/core/packaging.d.ts.map +1 -1
- package/dist/core/packaging.js +11 -10
- package/dist/core/platform-utils.d.ts.map +1 -1
- package/dist/core/platform-utils.js +6 -2
- package/dist/core/plugin-manager.d.ts.map +1 -1
- package/dist/core/plugin-manager.js +26 -20
- package/dist/core/policy-operations.d.ts.map +1 -1
- package/dist/core/policy-operations.js +111 -65
- package/dist/core/providers/host-provider.d.ts.map +1 -1
- package/dist/core/providers/host-provider.js +12 -5
- package/dist/core/providers/vercel-provider.d.ts.map +1 -1
- package/dist/core/providers/vercel-provider.js +4 -2
- package/dist/core/schema.d.ts.map +1 -1
- package/dist/core/schema.js +173 -95
- package/dist/core/session-utils.d.ts.map +1 -1
- package/dist/core/session-utils.js +3 -3
- package/dist/core/user-prompts-loader.d.ts.map +1 -1
- package/dist/core/user-prompts-loader.js +97 -12
- package/dist/evaluation/datasets/loader.d.ts.map +1 -1
- package/dist/evaluation/datasets/loader.js +7 -3
- package/dist/interfaces/mcp.js +1 -1
- package/dist/interfaces/rest-api.d.ts +4 -0
- package/dist/interfaces/rest-api.d.ts.map +1 -1
- package/dist/interfaces/rest-api.js +35 -0
- package/dist/interfaces/rest-route-registry.js +3 -3
- package/dist/interfaces/routes/index.d.ts.map +1 -1
- package/dist/interfaces/routes/index.js +10 -0
- package/dist/interfaces/schemas/common.d.ts +1 -0
- package/dist/interfaces/schemas/common.d.ts.map +1 -1
- package/dist/interfaces/schemas/common.js +1 -0
- package/dist/interfaces/schemas/index.d.ts +1 -1
- package/dist/interfaces/schemas/index.d.ts.map +1 -1
- package/dist/interfaces/schemas/index.js +6 -2
- package/dist/interfaces/schemas/prompts.d.ts +53 -0
- package/dist/interfaces/schemas/prompts.d.ts.map +1 -1
- package/dist/interfaces/schemas/prompts.js +26 -1
- package/dist/tools/answer-question.d.ts.map +1 -1
- package/dist/tools/answer-question.js +109 -81
- package/dist/tools/generate-manifests.d.ts.map +1 -1
- package/dist/tools/generate-manifests.js +163 -103
- package/dist/tools/operate-analysis.d.ts.map +1 -1
- package/dist/tools/operate-analysis.js +27 -17
- package/dist/tools/operate.d.ts.map +1 -1
- package/dist/tools/operate.js +47 -17
- package/dist/tools/prompts.d.ts +8 -1
- package/dist/tools/prompts.d.ts.map +1 -1
- package/dist/tools/prompts.js +16 -4
- package/dist/tools/remediate.d.ts.map +1 -1
- package/dist/tools/remediate.js +199 -115
- package/package.json +6 -6
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"artifacthub.d.ts","sourceRoot":"","sources":["../../src/core/artifacthub.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,OAAO,CAAC;IAClB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,UAAU,EAAE;QACV,IAAI,EAAE,MAAM,CAAC;QACb,GAAG,EAAE,MAAM,CAAC;QACZ,QAAQ,EAAE,OAAO,CAAC;QAClB,kBAAkB,EAAE,OAAO,CAAC;KAC7B,CAAC;IACF,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACxC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE;QACV,IAAI,EAAE,MAAM,CAAC;QACb,GAAG,EAAE,MAAM,CAAC;KACb,CAAC;IACF,WAAW,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACtD,KAAK,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC9C;AAED;;GAEG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,OAAO,CAAmC;IAClD,OAAO,CAAC,OAAO,CAAS;IAIxB,OAAO,CAAC,aAAa,CAAe;IAEpC;;;;;;OAMG;IACG,YAAY,
|
|
1
|
+
{"version":3,"file":"artifacthub.d.ts","sourceRoot":"","sources":["../../src/core/artifacthub.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,OAAO,CAAC;IAClB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,UAAU,EAAE;QACV,IAAI,EAAE,MAAM,CAAC;QACb,GAAG,EAAE,MAAM,CAAC;QACZ,QAAQ,EAAE,OAAO,CAAC;QAClB,kBAAkB,EAAE,OAAO,CAAC;KAC7B,CAAC;IACF,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACxC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE;QACV,IAAI,EAAE,MAAM,CAAC;QACb,GAAG,EAAE,MAAM,CAAC;KACb,CAAC;IACF,WAAW,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACtD,KAAK,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC9C;AAED;;GAEG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,OAAO,CAAmC;IAClD,OAAO,CAAC,OAAO,CAAS;IAIxB,OAAO,CAAC,aAAa,CAAe;IAEpC;;;;;;OAMG;IACG,YAAY,CAChB,KAAK,EAAE,MAAM,EACb,KAAK,GAAE,MAAW,GACjB,OAAO,CAAC,uBAAuB,EAAE,CAAC;IA+CrC;;;;;;OAMG;IACG,eAAe,CACnB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,yBAAyB,CAAC;IAqCrC;;;;;OAKG;IACH,iBAAiB,CAAC,MAAM,EAAE,uBAAuB,EAAE,GAAG,MAAM;CAe7D"}
|
package/dist/core/artifacthub.js
CHANGED
|
@@ -33,7 +33,7 @@ class ArtifactHubService {
|
|
|
33
33
|
const response = await fetch(url, {
|
|
34
34
|
method: 'GET',
|
|
35
35
|
headers: {
|
|
36
|
-
|
|
36
|
+
Accept: 'application/json',
|
|
37
37
|
},
|
|
38
38
|
signal: controller.signal,
|
|
39
39
|
});
|
|
@@ -41,16 +41,18 @@ class ArtifactHubService {
|
|
|
41
41
|
if (!response.ok) {
|
|
42
42
|
throw new Error(`ArtifactHub API error: ${response.status} ${response.statusText}`);
|
|
43
43
|
}
|
|
44
|
-
const data = await response.json();
|
|
44
|
+
const data = (await response.json());
|
|
45
45
|
// Filter out excluded repositories (e.g., Bitnami)
|
|
46
46
|
const packages = data.packages || [];
|
|
47
47
|
return packages.filter(pkg => !this.excludedRepos.includes(pkg.repository.name.toLowerCase()));
|
|
48
48
|
}
|
|
49
49
|
catch (error) {
|
|
50
50
|
if (error instanceof Error && error.name === 'AbortError') {
|
|
51
|
-
throw new Error(`ArtifactHub API timeout after ${this.timeout}ms
|
|
51
|
+
throw new Error(`ArtifactHub API timeout after ${this.timeout}ms`, {
|
|
52
|
+
cause: error,
|
|
53
|
+
});
|
|
52
54
|
}
|
|
53
|
-
throw new Error(`ArtifactHub search failed: ${error instanceof Error ? error.message : String(error)}
|
|
55
|
+
throw new Error(`ArtifactHub search failed: ${error instanceof Error ? error.message : String(error)}`, { cause: error });
|
|
54
56
|
}
|
|
55
57
|
}
|
|
56
58
|
/**
|
|
@@ -68,7 +70,7 @@ class ArtifactHubService {
|
|
|
68
70
|
const response = await fetch(url, {
|
|
69
71
|
method: 'GET',
|
|
70
72
|
headers: {
|
|
71
|
-
|
|
73
|
+
Accept: 'application/json',
|
|
72
74
|
},
|
|
73
75
|
signal: controller.signal,
|
|
74
76
|
});
|
|
@@ -76,13 +78,15 @@ class ArtifactHubService {
|
|
|
76
78
|
if (!response.ok) {
|
|
77
79
|
throw new Error(`ArtifactHub API error: ${response.status} ${response.statusText}`);
|
|
78
80
|
}
|
|
79
|
-
return await response.json();
|
|
81
|
+
return (await response.json());
|
|
80
82
|
}
|
|
81
83
|
catch (error) {
|
|
82
84
|
if (error instanceof Error && error.name === 'AbortError') {
|
|
83
|
-
throw new Error(`ArtifactHub API timeout after ${this.timeout}ms
|
|
85
|
+
throw new Error(`ArtifactHub API timeout after ${this.timeout}ms`, {
|
|
86
|
+
cause: error,
|
|
87
|
+
});
|
|
84
88
|
}
|
|
85
|
-
throw new Error(`ArtifactHub chart details failed: ${error instanceof Error ? error.message : String(error)}
|
|
89
|
+
throw new Error(`ArtifactHub chart details failed: ${error instanceof Error ? error.message : String(error)}`, { cause: error });
|
|
86
90
|
}
|
|
87
91
|
}
|
|
88
92
|
/**
|
|
@@ -92,7 +96,8 @@ class ArtifactHubService {
|
|
|
92
96
|
* @returns Formatted string for AI prompt
|
|
93
97
|
*/
|
|
94
98
|
formatChartsForAI(charts) {
|
|
95
|
-
return charts
|
|
99
|
+
return charts
|
|
100
|
+
.map((chart, index) => `
|
|
96
101
|
Chart ${index + 1}: ${chart.name}
|
|
97
102
|
Repository: ${chart.repository.name} (${chart.repository.url})
|
|
98
103
|
Version: ${chart.version}${chart.app_version ? ` (App: ${chart.app_version})` : ''}
|
|
@@ -100,7 +105,8 @@ Chart ${index + 1}: ${chart.name}
|
|
|
100
105
|
Official: ${chart.official || chart.repository.official ? 'Yes' : 'No'}
|
|
101
106
|
Verified Publisher: ${chart.verified_publisher || chart.repository.verified_publisher ? 'Yes' : 'No'}
|
|
102
107
|
Stars: ${chart.stars}
|
|
103
|
-
`)
|
|
108
|
+
`)
|
|
109
|
+
.join('\n');
|
|
104
110
|
}
|
|
105
111
|
}
|
|
106
112
|
exports.ArtifactHubService = ArtifactHubService;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-vector-service.d.ts","sourceRoot":"","sources":["../../src/core/base-vector-service.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAKvD,MAAM,WAAW,iBAAiB;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,gBAAgB,CAAC,CAAC;IACjC,IAAI,EAAE,CAAC,CAAC;IACR,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,SAAS,GAAG,UAAU,GAAG,QAAQ,CAAC;CAC9C;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAsBD;;GAEG;AACH,8BAAsB,iBAAiB,CAAC,CAAC;IACvC,SAAS,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;IAC7C,SAAS,CAAC,cAAc,EAAE,MAAM,CAAC;gBAErB,cAAc,EAAE,MAAM,EAAE,gBAAgB,CAAC,EAAE,gBAAgB;IAKvE;;;OAGG;YACW,YAAY;
|
|
1
|
+
{"version":3,"file":"base-vector-service.d.ts","sourceRoot":"","sources":["../../src/core/base-vector-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -30,7 +30,9 @@ class BaseVectorService {
|
|
|
30
30
|
const response = await (0, plugin_registry_1.invokePluginTool)(PLUGIN_NAME, tool, args);
|
|
31
31
|
if (!response.success) {
|
|
32
32
|
const error = response.error;
|
|
33
|
-
const message = typeof error === 'object' && error?.message
|
|
33
|
+
const message = typeof error === 'object' && error?.message
|
|
34
|
+
? error.message
|
|
35
|
+
: String(error || `Plugin tool ${tool} failed`);
|
|
34
36
|
throw new Error(message);
|
|
35
37
|
}
|
|
36
38
|
// Plugin tools return ToolResult: { success, data, message, error? }
|
|
@@ -51,7 +53,9 @@ class BaseVectorService {
|
|
|
51
53
|
*/
|
|
52
54
|
async initialize() {
|
|
53
55
|
// Use embedding dimensions if available, otherwise default to 1536 (OpenAI default)
|
|
54
|
-
const dimensions = this.embeddingService.isAvailable()
|
|
56
|
+
const dimensions = this.embeddingService.isAvailable()
|
|
57
|
+
? this.embeddingService.getDimensions()
|
|
58
|
+
: 1536;
|
|
55
59
|
await this.invokePlugin('collection_initialize', {
|
|
56
60
|
collection: this.collectionName,
|
|
57
61
|
vectorSize: dimensions,
|
|
@@ -103,7 +107,7 @@ class BaseVectorService {
|
|
|
103
107
|
}
|
|
104
108
|
catch (error) {
|
|
105
109
|
// Fail immediately with clear error about embedding generation
|
|
106
|
-
throw new Error(`Embedding generation failed: ${error instanceof Error ? error.message : String(error)}
|
|
110
|
+
throw new Error(`Embedding generation failed: ${error instanceof Error ? error.message : String(error)}`, { cause: error });
|
|
107
111
|
}
|
|
108
112
|
}
|
|
109
113
|
else {
|
|
@@ -138,11 +142,15 @@ class BaseVectorService {
|
|
|
138
142
|
const scoreThreshold = options.scoreThreshold || 0.01;
|
|
139
143
|
// Perform hybrid search (semantic + keyword)
|
|
140
144
|
try {
|
|
141
|
-
return await this.hybridSearch(query, queryKeywords, {
|
|
145
|
+
return await this.hybridSearch(query, queryKeywords, {
|
|
146
|
+
limit,
|
|
147
|
+
scoreThreshold,
|
|
148
|
+
filter: options.filter,
|
|
149
|
+
});
|
|
142
150
|
}
|
|
143
151
|
catch (error) {
|
|
144
152
|
// Fail immediately - no fallback to keyword-only search
|
|
145
|
-
throw new Error(`Semantic search failed: ${error instanceof Error ? error.message : String(error)}
|
|
153
|
+
throw new Error(`Semantic search failed: ${error instanceof Error ? error.message : String(error)}`, { cause: error });
|
|
146
154
|
}
|
|
147
155
|
}
|
|
148
156
|
/**
|
|
@@ -189,7 +197,7 @@ class BaseVectorService {
|
|
|
189
197
|
filter,
|
|
190
198
|
limit,
|
|
191
199
|
});
|
|
192
|
-
return documents.map(
|
|
200
|
+
return documents.map(doc => {
|
|
193
201
|
const data = this.payloadToData(doc.payload);
|
|
194
202
|
data.id = doc.id;
|
|
195
203
|
return data;
|
|
@@ -203,7 +211,7 @@ class BaseVectorService {
|
|
|
203
211
|
collection: this.collectionName,
|
|
204
212
|
limit: limit ?? 10000,
|
|
205
213
|
});
|
|
206
|
-
return documents.map(
|
|
214
|
+
return documents.map(doc => {
|
|
207
215
|
const data = this.payloadToData(doc.payload);
|
|
208
216
|
data.id = doc.id;
|
|
209
217
|
return data;
|
|
@@ -233,7 +241,8 @@ class BaseVectorService {
|
|
|
233
241
|
return {
|
|
234
242
|
semantic: status.available,
|
|
235
243
|
provider: status.provider || undefined,
|
|
236
|
-
reason: status.reason ||
|
|
244
|
+
reason: status.reason ||
|
|
245
|
+
(status.available ? 'Embedding service available' : undefined),
|
|
237
246
|
};
|
|
238
247
|
}
|
|
239
248
|
// Virtual methods that can be overridden by subclasses
|
|
@@ -241,7 +250,7 @@ class BaseVectorService {
|
|
|
241
250
|
return query
|
|
242
251
|
.toLowerCase()
|
|
243
252
|
.split(/\s+/)
|
|
244
|
-
.filter(
|
|
253
|
+
.filter(word => word.length > 2);
|
|
245
254
|
}
|
|
246
255
|
/**
|
|
247
256
|
* Hybrid search combining semantic and keyword matching
|
|
@@ -307,7 +316,7 @@ class BaseVectorService {
|
|
|
307
316
|
}
|
|
308
317
|
// Sort by score and apply limits
|
|
309
318
|
return Array.from(combinedResults.values())
|
|
310
|
-
.filter(
|
|
319
|
+
.filter(result => result.score >= options.scoreThreshold)
|
|
311
320
|
.sort((a, b) => b.score - a.score)
|
|
312
321
|
.slice(0, options.limit);
|
|
313
322
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"capabilities.d.ts","sourceRoot":"","sources":["../../src/core/capabilities.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"capabilities.d.ts","sourceRoot":"","sources":["../../src/core/capabilities.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAIrD;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IAEjC,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IAGf,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,UAAU,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;IAGtC,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAGhB,cAAc,CAAC,EAAE,aAAa,EAAE,CAAC;IAGjC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IAGrB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;;;GAKG;AACH,qBAAa,yBAAyB;IACpC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,UAAU,CAAa;gBAEnB,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM;IAKlD;;;;;;;;;;OAUG;IACG,iBAAiB,CACrB,YAAY,EAAE,MAAM,EACpB,kBAAkB,CAAC,EAAE,MAAM,EAC3B,cAAc,CAAC,EAAE,MAAM,EACvB,UAAU,CAAC,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE,MAAM,EAChB,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,kBAAkB,CAAC;IA2C9B;;;;OAIG;YACW,WAAW;IAqCzB;;;;OAIG;YACW,oBAAoB;IAclC;;;;OAIG;IACH,OAAO,CAAC,uBAAuB;IA0F/B;;OAEG;IACH,OAAO,CAAC,uBAAuB;IA+B/B;;;OAGG;IACH,MAAM,CAAC,oBAAoB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM;CAU1D"}
|
|
@@ -46,7 +46,7 @@ class CapabilityInferenceEngine {
|
|
|
46
46
|
hasDefinition: !!resourceDefinition,
|
|
47
47
|
apiVersion,
|
|
48
48
|
version,
|
|
49
|
-
group
|
|
49
|
+
group,
|
|
50
50
|
});
|
|
51
51
|
// Use AI to analyze all available information
|
|
52
52
|
const aiResult = await this.inferWithAI(resourceName, resourceDefinition, requestId, interaction_id);
|
|
@@ -60,7 +60,7 @@ class CapabilityInferenceEngine {
|
|
|
60
60
|
complexity: finalCapability.complexity,
|
|
61
61
|
confidence: finalCapability.confidence,
|
|
62
62
|
apiVersion,
|
|
63
|
-
version
|
|
63
|
+
version,
|
|
64
64
|
});
|
|
65
65
|
return finalCapability;
|
|
66
66
|
}
|
|
@@ -74,14 +74,14 @@ class CapabilityInferenceEngine {
|
|
|
74
74
|
const prompt = await this.buildInferencePrompt(resourceName, resourceDefinition);
|
|
75
75
|
const response = await this.aiProvider.sendMessage(prompt, 'capability-inference', {
|
|
76
76
|
user_intent: `Analyze capabilities of Kubernetes resource: ${resourceName}`,
|
|
77
|
-
interaction_id: interaction_id || 'inference'
|
|
77
|
+
interaction_id: interaction_id || 'inference',
|
|
78
78
|
});
|
|
79
79
|
return this.parseCapabilitiesFromAI(response.content);
|
|
80
80
|
}
|
|
81
81
|
catch (error) {
|
|
82
82
|
this.logger.error('AI capability inference failed', error, {
|
|
83
83
|
requestId,
|
|
84
|
-
resource: resourceName
|
|
84
|
+
resource: resourceName,
|
|
85
85
|
});
|
|
86
86
|
throw error; // Re-throw to maintain fail-fast behavior
|
|
87
87
|
}
|
|
@@ -95,7 +95,7 @@ class CapabilityInferenceEngine {
|
|
|
95
95
|
// Load prompt template using shared prompt loader
|
|
96
96
|
const finalPrompt = (0, shared_prompt_loader_1.loadPrompt)('capability-inference', {
|
|
97
97
|
resourceName,
|
|
98
|
-
resourceDefinition: resourceDefinition || 'No resource definition provided'
|
|
98
|
+
resourceDefinition: resourceDefinition || 'No resource definition provided',
|
|
99
99
|
});
|
|
100
100
|
return finalPrompt;
|
|
101
101
|
}
|
|
@@ -115,7 +115,7 @@ class CapabilityInferenceEngine {
|
|
|
115
115
|
parsed = JSON.parse(jsonMatch[0]);
|
|
116
116
|
}
|
|
117
117
|
catch (parseError) {
|
|
118
|
-
throw new Error(`Invalid JSON in AI response: ${parseError instanceof Error ? parseError.message : String(parseError)}. JSON: ${jsonMatch[0].substring(0, 200)}
|
|
118
|
+
throw new Error(`Invalid JSON in AI response: ${parseError instanceof Error ? parseError.message : String(parseError)}. JSON: ${jsonMatch[0].substring(0, 200)}...`, { cause: parseError });
|
|
119
119
|
}
|
|
120
120
|
// Validate required fields with detailed error messages
|
|
121
121
|
if (!Array.isArray(parsed.capabilities)) {
|
|
@@ -130,13 +130,16 @@ class CapabilityInferenceEngine {
|
|
|
130
130
|
if (!['low', 'medium', 'high'].includes(parsed.complexity)) {
|
|
131
131
|
throw new Error(`AI response invalid complexity: ${parsed.complexity}. Must be low, medium, or high`);
|
|
132
132
|
}
|
|
133
|
-
if (typeof parsed.description !== 'string' ||
|
|
133
|
+
if (typeof parsed.description !== 'string' ||
|
|
134
|
+
parsed.description.trim() === '') {
|
|
134
135
|
throw new Error(`AI response missing or invalid description. Got: ${typeof parsed.description}`);
|
|
135
136
|
}
|
|
136
137
|
if (typeof parsed.useCase !== 'string' || parsed.useCase.trim() === '') {
|
|
137
138
|
throw new Error(`AI response missing or invalid useCase. Got: ${typeof parsed.useCase}`);
|
|
138
139
|
}
|
|
139
|
-
if (typeof parsed.confidence !== 'number' ||
|
|
140
|
+
if (typeof parsed.confidence !== 'number' ||
|
|
141
|
+
parsed.confidence < 0 ||
|
|
142
|
+
parsed.confidence > 1) {
|
|
140
143
|
throw new Error(`AI response invalid confidence score: ${parsed.confidence}. Must be number between 0-1`);
|
|
141
144
|
}
|
|
142
145
|
return {
|
|
@@ -146,7 +149,7 @@ class CapabilityInferenceEngine {
|
|
|
146
149
|
complexity: parsed.complexity,
|
|
147
150
|
description: parsed.description.trim(),
|
|
148
151
|
useCase: parsed.useCase.trim(),
|
|
149
|
-
confidence: parsed.confidence
|
|
152
|
+
confidence: parsed.confidence,
|
|
150
153
|
};
|
|
151
154
|
}
|
|
152
155
|
/**
|
|
@@ -165,7 +168,7 @@ class CapabilityInferenceEngine {
|
|
|
165
168
|
description: aiResult.description,
|
|
166
169
|
useCase: aiResult.useCase,
|
|
167
170
|
confidence: aiResult.confidence,
|
|
168
|
-
analyzedAt: new Date().toISOString()
|
|
171
|
+
analyzedAt: new Date().toISOString(),
|
|
169
172
|
};
|
|
170
173
|
}
|
|
171
174
|
/**
|
|
@@ -174,7 +177,10 @@ class CapabilityInferenceEngine {
|
|
|
174
177
|
*/
|
|
175
178
|
static generateCapabilityId(resourceName) {
|
|
176
179
|
// Create deterministic UUID from resource name hash
|
|
177
|
-
const hash = crypto_1.default
|
|
180
|
+
const hash = crypto_1.default
|
|
181
|
+
.createHash('sha256')
|
|
182
|
+
.update(`capability-${resourceName}`)
|
|
183
|
+
.digest('hex');
|
|
178
184
|
// Convert to UUID format: 8-4-4-4-12
|
|
179
185
|
return `${hash.substring(0, 8)}-${hash.substring(8, 12)}-${hash.substring(12, 16)}-${hash.substring(16, 20)}-${hash.substring(20, 32)}`;
|
|
180
186
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"capability-operations.d.ts","sourceRoot":"","sources":["../../src/core/capability-operations.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AAUtE;;GAEG;AACH,UAAU,uBAAuB;IAC/B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,UAAU,2BAA2B;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE;QACN,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAClC,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC5C,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC/B,gBAAgB,CAAC,EAAE,MAAM,CAAC;KAC3B,CAAC;IACF,iBAAiB,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,CAAC;IACzD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,kBAAkB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC9C;AAED;;;GAGG;AACH,wBAAsB,oBAAoB,
|
|
1
|
+
{"version":3,"file":"capability-operations.d.ts","sourceRoot":"","sources":["../../src/core/capability-operations.ts"],"names":[],"mappings":"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"}
|