@vfarcic/dot-ai 0.140.0 → 0.142.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/crd-availability.d.ts +16 -0
- package/dist/core/crd-availability.d.ts.map +1 -0
- package/dist/core/crd-availability.js +108 -0
- package/dist/core/deploy-operation.js +2 -2
- package/dist/core/schema.d.ts +2 -9
- package/dist/core/schema.d.ts.map +1 -1
- package/dist/core/schema.js +1 -2
- package/dist/core/solution-cr.d.ts +21 -0
- package/dist/core/solution-cr.d.ts.map +1 -0
- package/dist/core/solution-cr.js +112 -0
- package/dist/core/solution-utils.d.ts +0 -6
- package/dist/core/solution-utils.d.ts.map +1 -1
- package/dist/core/solution-utils.js +0 -26
- package/dist/core/unified-creation-session.d.ts.map +1 -1
- package/dist/core/unified-creation-session.js +21 -4
- package/dist/core/vector-db-service.d.ts.map +1 -1
- package/dist/core/vector-db-service.js +5 -0
- package/dist/interfaces/rest-registry.d.ts.map +1 -1
- package/dist/interfaces/rest-registry.js +1 -0
- package/dist/tools/answer-question.d.ts +6 -1
- package/dist/tools/answer-question.d.ts.map +1 -1
- package/dist/tools/answer-question.js +1 -1
- package/dist/tools/generate-manifests.d.ts.map +1 -1
- package/dist/tools/generate-manifests.js +34 -55
- package/dist/tools/operate-analysis.d.ts.map +1 -1
- package/dist/tools/operate-analysis.js +9 -15
- package/dist/tools/organizational-data.d.ts +17 -11
- package/dist/tools/organizational-data.d.ts.map +1 -1
- package/dist/tools/project-setup.d.ts +7 -3
- package/dist/tools/project-setup.d.ts.map +1 -1
- package/dist/tools/project-setup.js +1 -1
- package/dist/tools/recommend.d.ts +2 -0
- package/dist/tools/recommend.d.ts.map +1 -1
- package/dist/tools/recommend.js +15 -11
- package/dist/tools/remediate.d.ts +10 -3
- package/dist/tools/remediate.d.ts.map +1 -1
- package/package.json +1 -1
- package/prompts/operate-system.md +4 -3
- package/prompts/question-generation.md +8 -1
- package/prompts/remediate-system.md +10 -1
- package/prompts/resource-selection.md +7 -9
- package/scripts/crossplane.nu +1 -1
- package/scripts/dot-ai.nu +14 -2
- package/shared-prompts/prd-close.md +7 -1
- package/shared-prompts/deploy.md +0 -23
- package/shared-prompts/manage-org-data.md +0 -42
- package/shared-prompts/remediate.md +0 -44
- package/shared-prompts/status.md +0 -19
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CRD Availability Check with Global Caching
|
|
3
|
+
*
|
|
4
|
+
* Checks once per MCP server lifecycle if Solution CRD is available,
|
|
5
|
+
* then caches the result globally to avoid repeated cluster queries.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Helper function for checking CRD availability
|
|
9
|
+
* Use this function throughout the codebase
|
|
10
|
+
*/
|
|
11
|
+
export declare function isSolutionCRDAvailable(): Promise<boolean>;
|
|
12
|
+
/**
|
|
13
|
+
* Reset CRD availability cache (primarily for testing)
|
|
14
|
+
*/
|
|
15
|
+
export declare function resetCRDAvailabilityCache(): void;
|
|
16
|
+
//# sourceMappingURL=crd-availability.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"crd-availability.d.ts","sourceRoot":"","sources":["../../src/core/crd-availability.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AA4DH;;;GAGG;AACH,wBAAsB,sBAAsB,IAAI,OAAO,CAAC,OAAO,CAAC,CAG/D;AAED;;GAEG;AACH,wBAAgB,yBAAyB,IAAI,IAAI,CAGhD"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* CRD Availability Check with Global Caching
|
|
4
|
+
*
|
|
5
|
+
* Checks once per MCP server lifecycle if Solution CRD is available,
|
|
6
|
+
* then caches the result globally to avoid repeated cluster queries.
|
|
7
|
+
*/
|
|
8
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
9
|
+
if (k2 === undefined) k2 = k;
|
|
10
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
11
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
12
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
13
|
+
}
|
|
14
|
+
Object.defineProperty(o, k2, desc);
|
|
15
|
+
}) : (function(o, m, k, k2) {
|
|
16
|
+
if (k2 === undefined) k2 = k;
|
|
17
|
+
o[k2] = m[k];
|
|
18
|
+
}));
|
|
19
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
20
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
21
|
+
}) : function(o, v) {
|
|
22
|
+
o["default"] = v;
|
|
23
|
+
});
|
|
24
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
25
|
+
var ownKeys = function(o) {
|
|
26
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
27
|
+
var ar = [];
|
|
28
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
29
|
+
return ar;
|
|
30
|
+
};
|
|
31
|
+
return ownKeys(o);
|
|
32
|
+
};
|
|
33
|
+
return function (mod) {
|
|
34
|
+
if (mod && mod.__esModule) return mod;
|
|
35
|
+
var result = {};
|
|
36
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
37
|
+
__setModuleDefault(result, mod);
|
|
38
|
+
return result;
|
|
39
|
+
};
|
|
40
|
+
})();
|
|
41
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
42
|
+
exports.isSolutionCRDAvailable = isSolutionCRDAvailable;
|
|
43
|
+
exports.resetCRDAvailabilityCache = resetCRDAvailabilityCache;
|
|
44
|
+
const k8s = __importStar(require("@kubernetes/client-node"));
|
|
45
|
+
/**
|
|
46
|
+
* Singleton cache for CRD availability check
|
|
47
|
+
* Checks once per MCP server lifecycle, caches result globally
|
|
48
|
+
*/
|
|
49
|
+
class CRDAvailabilityCache {
|
|
50
|
+
static instance;
|
|
51
|
+
crdAvailable = null;
|
|
52
|
+
constructor() { }
|
|
53
|
+
static getInstance() {
|
|
54
|
+
if (!CRDAvailabilityCache.instance) {
|
|
55
|
+
CRDAvailabilityCache.instance = new CRDAvailabilityCache();
|
|
56
|
+
}
|
|
57
|
+
return CRDAvailabilityCache.instance;
|
|
58
|
+
}
|
|
59
|
+
async isSolutionCRDAvailable() {
|
|
60
|
+
// Return cached result if available
|
|
61
|
+
if (this.crdAvailable !== null) {
|
|
62
|
+
return this.crdAvailable;
|
|
63
|
+
}
|
|
64
|
+
// Check cluster for Solution CRD
|
|
65
|
+
try {
|
|
66
|
+
const kc = new k8s.KubeConfig();
|
|
67
|
+
kc.loadFromDefault();
|
|
68
|
+
const k8sApi = kc.makeApiClient(k8s.ApiextensionsV1Api);
|
|
69
|
+
const crdName = 'solutions.dot-ai.devopstoolkit.live';
|
|
70
|
+
await k8sApi.readCustomResourceDefinition({ name: crdName });
|
|
71
|
+
// CRD exists, cache result
|
|
72
|
+
this.crdAvailable = true;
|
|
73
|
+
console.log('✅ Solution CRD available - Solution CR generation enabled');
|
|
74
|
+
return true;
|
|
75
|
+
}
|
|
76
|
+
catch (error) {
|
|
77
|
+
if (error.statusCode === 404 || error.response?.statusCode === 404) {
|
|
78
|
+
// CRD not found, cache result
|
|
79
|
+
this.crdAvailable = false;
|
|
80
|
+
console.log('ℹ️ Solution CRD not available - Solution CR generation disabled (graceful degradation)');
|
|
81
|
+
return false;
|
|
82
|
+
}
|
|
83
|
+
// Other errors (cluster unreachable, etc.) - don't cache, throw
|
|
84
|
+
throw new Error(`Failed to check Solution CRD availability: ${error.message || error}`);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Reset cache (for testing or manual refresh)
|
|
89
|
+
*/
|
|
90
|
+
reset() {
|
|
91
|
+
this.crdAvailable = null;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Helper function for checking CRD availability
|
|
96
|
+
* Use this function throughout the codebase
|
|
97
|
+
*/
|
|
98
|
+
async function isSolutionCRDAvailable() {
|
|
99
|
+
const cache = CRDAvailabilityCache.getInstance();
|
|
100
|
+
return cache.isSolutionCRDAvailable();
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Reset CRD availability cache (primarily for testing)
|
|
104
|
+
*/
|
|
105
|
+
function resetCRDAvailabilityCache() {
|
|
106
|
+
const cache = CRDAvailabilityCache.getInstance();
|
|
107
|
+
cache.reset();
|
|
108
|
+
}
|
|
@@ -85,9 +85,9 @@ class DeployOperation {
|
|
|
85
85
|
waitOutput = `\n\nWait output:\n${waitResult}`;
|
|
86
86
|
}
|
|
87
87
|
catch (waitError) {
|
|
88
|
-
// If no deployments found or wait fails, that's OK for
|
|
88
|
+
// If no deployments found or wait fails, that's OK for other resource types (Services, etc.)
|
|
89
89
|
if (waitError.message && waitError.message.includes('no matching resources found')) {
|
|
90
|
-
waitOutput = '\n\nWait output: No deployments found to wait for (likely
|
|
90
|
+
waitOutput = '\n\nWait output: No deployments found to wait for (likely Services, CRs, etc.)';
|
|
91
91
|
}
|
|
92
92
|
else {
|
|
93
93
|
waitOutput = `\n\nWait output: Warning - ${waitError.message}`;
|
package/dist/core/schema.d.ts
CHANGED
|
@@ -79,13 +79,7 @@ export interface QuestionGroup {
|
|
|
79
79
|
placeholder: string;
|
|
80
80
|
answer?: string;
|
|
81
81
|
};
|
|
82
|
-
|
|
83
|
-
export interface PatternInfluence {
|
|
84
|
-
patternId: string;
|
|
85
|
-
description: string;
|
|
86
|
-
influence: 'high' | 'medium' | 'low';
|
|
87
|
-
matchedTriggers: string[];
|
|
88
|
-
matchedConcept?: string;
|
|
82
|
+
relevantPolicies?: string[];
|
|
89
83
|
}
|
|
90
84
|
export interface ResourceSolution {
|
|
91
85
|
type: 'single' | 'combination';
|
|
@@ -95,8 +89,7 @@ export interface ResourceSolution {
|
|
|
95
89
|
reasons: string[];
|
|
96
90
|
analysis: string;
|
|
97
91
|
questions: QuestionGroup;
|
|
98
|
-
|
|
99
|
-
usedPatterns?: boolean;
|
|
92
|
+
appliedPatterns?: string[];
|
|
100
93
|
}
|
|
101
94
|
export interface ClusterOptions {
|
|
102
95
|
namespaces: string[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/core/schema.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/core/schema.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAIlD,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAWrD,MAAM,WAAW,gBAAgB;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,OAAO,CAAC,EAAE,GAAG,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,GAAG,CAAC;IACd,WAAW,CAAC,EAAE,gBAAgB,CAAC;IAC/B,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACrC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,eAAe;IAC9B,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CACnB;AAGD,MAAM,WAAW,SAAS;IACxB,CAAC,UAAU,EAAE,MAAM,GAAG,GAAG,CAAC;CAC3B;AAGD,MAAM,WAAW,gBAAiB,SAAQ,gBAAgB;IACxD,OAAO,EAAE,SAAS,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,aAAa,GAAG,SAAS,GAAG,QAAQ,CAAC;IAC/D,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE;QACX,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,eAAe,CAAC,EAAE,GAAG,CAAC;IACtB,MAAM,CAAC,EAAE,GAAG,CAAC;CAEd;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,QAAQ,EAAE,CAAC;IACrB,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,QAAQ,EAAE,QAAQ,EAAE,CAAC;IACrB,IAAI,EAAE;QACJ,QAAQ,EAAE,MAAM,CAAC;QACjB,WAAW,EAAE,MAAM,CAAC;QACpB,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC7B;AAGD,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,QAAQ,GAAG,aAAa,CAAC;IAC/B,SAAS,EAAE,cAAc,EAAE,CAAC;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,aAAa,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;CAC5B;AAKD,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,eAAe,CAAC,EAAE;QAAE,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;KAAE,CAAC;CACrD;AAED;;GAEG;AACH,qBAAa,YAAY;IACvB;;OAEG;IACH,wBAAwB,CAAC,WAAW,EAAE,mBAAmB,GAAG,cAAc;IAgD1E;;OAEG;IACH,OAAO,CAAC,cAAc;IAoBtB;;OAEG;IACH,OAAO,CAAC,aAAa;IAqBrB;;OAEG;IACH,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,gBAAgB;CAyD3E;AAED;;GAEG;AACH,qBAAa,iBAAiB;IAC5B;;;OAGG;IACG,gBAAgB,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAA;KAAE,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAoD3I;;OAEG;IACH,OAAO,CAAC,uBAAuB;CAWhC;AAED;;GAEG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,cAAc,CAAC,CAAuB;IAC9C,OAAO,CAAC,iBAAiB,CAAC,CAA0B;IACpD,OAAO,CAAC,aAAa,CAAC,CAAsB;gBAEhC,UAAU,CAAC,EAAE,UAAU;IAyCnC;;OAEG;IACG,iBAAiB,CACrB,MAAM,EAAE,MAAM,EACd,gBAAgB,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,GAAG,CAAC,EACpD,cAAc,CAAC,EAAE,MAAM,GACtB,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAyE9B;;OAEG;YACW,wBAAwB;IAqBtC;;OAEG;IACH,OAAO,CAAC,2BAA2B;IA8CnC;;OAEG;YACW,0BAA0B;IA4CxC;;OAEG;YACW,0BAA0B;IA6ExC;;OAEG;IACH,OAAO,CAAC,8BAA8B;IAOtC;;OAEG;IACH,OAAO,CAAC,2BAA2B;IAanC;;OAEG;IACH,OAAO,CAAC,4BAA4B;IAYpC;;;OAGG;YACW,sBAAsB;IAsBpC;;OAEG;YACW,oBAAoB;IAmDlC;;OAEG;YACW,sBAAsB;IAkEpC;;OAEG;YACW,uBAAuB;CAuItC"}
|
package/dist/core/schema.js
CHANGED
|
@@ -412,8 +412,7 @@ class ResourceRecommender {
|
|
|
412
412
|
reasons: solution.reasons || [],
|
|
413
413
|
analysis: solution.analysis || '',
|
|
414
414
|
questions: { required: [], basic: [], advanced: [], open: { question: '', placeholder: '' } },
|
|
415
|
-
|
|
416
|
-
usedPatterns: solution.usedPatterns || false
|
|
415
|
+
appliedPatterns: solution.appliedPatterns || []
|
|
417
416
|
};
|
|
418
417
|
});
|
|
419
418
|
// Sort by score descending
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Solution Custom Resource Generation
|
|
3
|
+
*
|
|
4
|
+
* Generates Solution CR manifests from session data for tracking deployments
|
|
5
|
+
*/
|
|
6
|
+
import type { SolutionData } from '../tools/recommend';
|
|
7
|
+
export interface SolutionCROptions {
|
|
8
|
+
solutionId: string;
|
|
9
|
+
namespace: string;
|
|
10
|
+
solution: SolutionData;
|
|
11
|
+
generatedManifestsYaml: string;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Generate a Solution Custom Resource from solution session data
|
|
15
|
+
* Parses generated manifests to extract actual resource references
|
|
16
|
+
*
|
|
17
|
+
* @param options Configuration containing solution data and generated manifests
|
|
18
|
+
* @returns Solution CR as YAML string
|
|
19
|
+
*/
|
|
20
|
+
export declare function generateSolutionCR(options: SolutionCROptions): string;
|
|
21
|
+
//# sourceMappingURL=solution-cr.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"solution-cr.d.ts","sourceRoot":"","sources":["../../src/core/solution-cr.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEvD,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,YAAY,CAAC;IACvB,sBAAsB,EAAE,MAAM,CAAC;CAChC;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,iBAAiB,GAAG,MAAM,CA2CrE"}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Solution Custom Resource Generation
|
|
4
|
+
*
|
|
5
|
+
* Generates Solution CR manifests from session data for tracking deployments
|
|
6
|
+
*/
|
|
7
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
8
|
+
if (k2 === undefined) k2 = k;
|
|
9
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
10
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
11
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
12
|
+
}
|
|
13
|
+
Object.defineProperty(o, k2, desc);
|
|
14
|
+
}) : (function(o, m, k, k2) {
|
|
15
|
+
if (k2 === undefined) k2 = k;
|
|
16
|
+
o[k2] = m[k];
|
|
17
|
+
}));
|
|
18
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
19
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
20
|
+
}) : function(o, v) {
|
|
21
|
+
o["default"] = v;
|
|
22
|
+
});
|
|
23
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
24
|
+
var ownKeys = function(o) {
|
|
25
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
26
|
+
var ar = [];
|
|
27
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
28
|
+
return ar;
|
|
29
|
+
};
|
|
30
|
+
return ownKeys(o);
|
|
31
|
+
};
|
|
32
|
+
return function (mod) {
|
|
33
|
+
if (mod && mod.__esModule) return mod;
|
|
34
|
+
var result = {};
|
|
35
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
36
|
+
__setModuleDefault(result, mod);
|
|
37
|
+
return result;
|
|
38
|
+
};
|
|
39
|
+
})();
|
|
40
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
41
|
+
exports.generateSolutionCR = generateSolutionCR;
|
|
42
|
+
const yaml = __importStar(require("js-yaml"));
|
|
43
|
+
/**
|
|
44
|
+
* Generate a Solution Custom Resource from solution session data
|
|
45
|
+
* Parses generated manifests to extract actual resource references
|
|
46
|
+
*
|
|
47
|
+
* @param options Configuration containing solution data and generated manifests
|
|
48
|
+
* @returns Solution CR as YAML string
|
|
49
|
+
*/
|
|
50
|
+
function generateSolutionCR(options) {
|
|
51
|
+
const { solutionId, namespace, solution, generatedManifestsYaml } = options;
|
|
52
|
+
// Parse generated manifests to extract actual resource references
|
|
53
|
+
const resourceReferences = extractResourceReferences(generatedManifestsYaml, namespace);
|
|
54
|
+
// Build rationale from solution description, reasons, and analysis
|
|
55
|
+
const rationale = [
|
|
56
|
+
solution.description,
|
|
57
|
+
...solution.reasons,
|
|
58
|
+
solution.analysis
|
|
59
|
+
].filter(Boolean).join('\n\n');
|
|
60
|
+
// Get patterns and policies from session
|
|
61
|
+
const patterns = solution.appliedPatterns || [];
|
|
62
|
+
const policies = solution.questions?.relevantPolicies || [];
|
|
63
|
+
// Create Solution CR object
|
|
64
|
+
const solutionCR = {
|
|
65
|
+
apiVersion: 'dot-ai.devopstoolkit.live/v1alpha1',
|
|
66
|
+
kind: 'Solution',
|
|
67
|
+
metadata: {
|
|
68
|
+
name: `solution-${solutionId}`,
|
|
69
|
+
namespace: namespace,
|
|
70
|
+
labels: {
|
|
71
|
+
'dot-ai.devopstoolkit.live/created-by': 'dot-ai-mcp',
|
|
72
|
+
'dot-ai.devopstoolkit.live/solution-id': solutionId
|
|
73
|
+
}
|
|
74
|
+
},
|
|
75
|
+
spec: {
|
|
76
|
+
intent: solution.intent,
|
|
77
|
+
resources: resourceReferences,
|
|
78
|
+
context: {
|
|
79
|
+
createdBy: 'dot-ai-mcp',
|
|
80
|
+
rationale: rationale,
|
|
81
|
+
patterns: patterns,
|
|
82
|
+
policies: policies
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
};
|
|
86
|
+
// Convert to YAML
|
|
87
|
+
return yaml.dump(solutionCR);
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Extract resource references from generated manifest YAML
|
|
91
|
+
*
|
|
92
|
+
* @param manifestsYaml Generated Kubernetes manifests as YAML string
|
|
93
|
+
* @param defaultNamespace Default namespace if not specified in manifest
|
|
94
|
+
* @returns Array of resource references
|
|
95
|
+
*/
|
|
96
|
+
function extractResourceReferences(manifestsYaml, defaultNamespace) {
|
|
97
|
+
try {
|
|
98
|
+
const manifests = yaml.loadAll(manifestsYaml);
|
|
99
|
+
return manifests
|
|
100
|
+
.filter((manifest) => manifest && manifest.kind && manifest.metadata?.name)
|
|
101
|
+
.map((manifest) => ({
|
|
102
|
+
apiVersion: manifest.apiVersion,
|
|
103
|
+
kind: manifest.kind,
|
|
104
|
+
name: manifest.metadata.name,
|
|
105
|
+
namespace: manifest.metadata.namespace || defaultNamespace
|
|
106
|
+
}));
|
|
107
|
+
}
|
|
108
|
+
catch (error) {
|
|
109
|
+
console.error('Failed to extract resource references from manifests:', error);
|
|
110
|
+
return [];
|
|
111
|
+
}
|
|
112
|
+
}
|
|
@@ -9,12 +9,6 @@ export declare function extractUserAnswers(solution: any): Record<string, any>;
|
|
|
9
9
|
* Sanitize intent string for use as Kubernetes label (63 char limit, alphanumeric + hyphens)
|
|
10
10
|
*/
|
|
11
11
|
export declare function sanitizeIntentForLabel(intent: string): string;
|
|
12
|
-
/**
|
|
13
|
-
* Sanitize string for use as Kubernetes resource name (RFC 1123 subdomain)
|
|
14
|
-
* Names must be lowercase alphanumeric characters, hyphens, or periods
|
|
15
|
-
* Must start and end with alphanumeric character, max 63 characters
|
|
16
|
-
*/
|
|
17
|
-
export declare function sanitizeKubernetesName(name: string): string;
|
|
18
12
|
/**
|
|
19
13
|
* Generate standard dot-ai labels for Kubernetes resources
|
|
20
14
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"solution-utils.d.ts","sourceRoot":"","sources":["../../src/core/solution-utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAoBrE;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAM7D;AAED
|
|
1
|
+
{"version":3,"file":"solution-utils.d.ts","sourceRoot":"","sources":["../../src/core/solution-utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAoBrE;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAM7D;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,QAAQ,EAAE,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAiB3G;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,EAClD,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAChC,QAAQ,EAAE,GAAG,GACZ,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAGxB"}
|
|
@@ -5,7 +5,6 @@
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.extractUserAnswers = extractUserAnswers;
|
|
7
7
|
exports.sanitizeIntentForLabel = sanitizeIntentForLabel;
|
|
8
|
-
exports.sanitizeKubernetesName = sanitizeKubernetesName;
|
|
9
8
|
exports.generateDotAiLabels = generateDotAiLabels;
|
|
10
9
|
exports.addDotAiLabels = addDotAiLabels;
|
|
11
10
|
/**
|
|
@@ -39,31 +38,6 @@ function sanitizeIntentForLabel(intent) {
|
|
|
39
38
|
.substring(0, 63)
|
|
40
39
|
.replace(/^-+|-+$/g, '');
|
|
41
40
|
}
|
|
42
|
-
/**
|
|
43
|
-
* Sanitize string for use as Kubernetes resource name (RFC 1123 subdomain)
|
|
44
|
-
* Names must be lowercase alphanumeric characters, hyphens, or periods
|
|
45
|
-
* Must start and end with alphanumeric character, max 63 characters
|
|
46
|
-
*/
|
|
47
|
-
function sanitizeKubernetesName(name) {
|
|
48
|
-
if (!name) {
|
|
49
|
-
return 'default-name';
|
|
50
|
-
}
|
|
51
|
-
let sanitized = name
|
|
52
|
-
.toLowerCase()
|
|
53
|
-
.replace(/[^a-z0-9.-]/g, '-') // Replace invalid chars with hyphens
|
|
54
|
-
.substring(0, 63); // Enforce max length
|
|
55
|
-
// Remove leading/trailing dots or hyphens
|
|
56
|
-
sanitized = sanitized.replace(/^[.-]+|[.-]+$/g, '');
|
|
57
|
-
// Ensure starts with alphanumeric
|
|
58
|
-
if (sanitized && !/^[a-z0-9]/.test(sanitized)) {
|
|
59
|
-
sanitized = 'a' + sanitized.substring(1);
|
|
60
|
-
}
|
|
61
|
-
// Ensure ends with alphanumeric
|
|
62
|
-
if (sanitized && !/[a-z0-9]$/.test(sanitized)) {
|
|
63
|
-
sanitized = sanitized.substring(0, sanitized.length - 1) + 'z';
|
|
64
|
-
}
|
|
65
|
-
return sanitized || 'default-name';
|
|
66
|
-
}
|
|
67
41
|
/**
|
|
68
42
|
* Generate standard dot-ai labels for Kubernetes resources
|
|
69
43
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"unified-creation-session.d.ts","sourceRoot":"","sources":["../../src/core/unified-creation-session.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AASH,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAKlD,OAAO,EACL,sBAAsB,EAEtB,2BAA2B,EAC3B,iCAAiC,EACjC,UAAU,EAIX,MAAM,0BAA0B,CAAC;AAKlC,qBAAa,6BAA6B;IACxC,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,SAAS,CAAsB;IACvC,OAAO,CAAC,cAAc,CAAoD;gBAE9D,UAAU,EAAE,UAAU,EAAE,SAAS,CAAC,EAAE,mBAAmB;IAMnE;;OAEG;IACH,aAAa,CAAC,IAAI,EAAE,GAAG,GAAG,sBAAsB;IAWhD;;OAEG;IACH,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,sBAAsB,GAAG,IAAI;IAIzE;;OAEG;IACH,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,sBAAsB;IA2GxF;;OAEG;IACG,mBAAmB,CAAC,OAAO,EAAE,sBAAsB,EAAE,IAAI,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,2BAA2B,GAAG,iCAAiC,CAAC;IAoGhJ;;OAEG;YACW,4BAA4B;IA4C1C;;OAEG;YACW,gCAAgC;IAyC9C;;OAEG;IACH,OAAO,CAAC,kBAAkB;IA6E1B;;OAEG;YACW,gBAAgB;IAsF9B;;OAEG;YACW,4BAA4B;IAoH1C;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAY1B;;OAEG;YACW,qBAAqB;IAqCnC;;OAEG;YACW,mBAAmB;IAyLjC;;OAEG;YACW,uBAAuB;
|
|
1
|
+
{"version":3,"file":"unified-creation-session.d.ts","sourceRoot":"","sources":["../../src/core/unified-creation-session.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AASH,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAKlD,OAAO,EACL,sBAAsB,EAEtB,2BAA2B,EAC3B,iCAAiC,EACjC,UAAU,EAIX,MAAM,0BAA0B,CAAC;AAKlC,qBAAa,6BAA6B;IACxC,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,SAAS,CAAsB;IACvC,OAAO,CAAC,cAAc,CAAoD;gBAE9D,UAAU,EAAE,UAAU,EAAE,SAAS,CAAC,EAAE,mBAAmB;IAMnE;;OAEG;IACH,aAAa,CAAC,IAAI,EAAE,GAAG,GAAG,sBAAsB;IAWhD;;OAEG;IACH,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,sBAAsB,GAAG,IAAI;IAIzE;;OAEG;IACH,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,sBAAsB;IA2GxF;;OAEG;IACG,mBAAmB,CAAC,OAAO,EAAE,sBAAsB,EAAE,IAAI,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,2BAA2B,GAAG,iCAAiC,CAAC;IAoGhJ;;OAEG;YACW,4BAA4B;IA4C1C;;OAEG;YACW,gCAAgC;IAyC9C;;OAEG;IACH,OAAO,CAAC,kBAAkB;IA6E1B;;OAEG;YACW,gBAAgB;IAsF9B;;OAEG;YACW,4BAA4B;IAoH1C;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAY1B;;OAEG;YACW,qBAAqB;IAqCnC;;OAEG;YACW,mBAAmB;IAyLjC;;OAEG;YACW,uBAAuB;IAsGrC;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAU5B;;OAEG;IACH,OAAO,CAAC,sBAAsB;CAY/B"}
|
|
@@ -833,23 +833,40 @@ Please try again or modify your policy description.`,
|
|
|
833
833
|
const capabilityService = new capability_vector_service_1.CapabilityVectorService(collection);
|
|
834
834
|
// Use existing searchCapabilities function - no fallback, let it throw if it fails
|
|
835
835
|
const searchResults = await capabilityService.searchCapabilities(searchQuery, {
|
|
836
|
-
limit:
|
|
836
|
+
limit: 40 // Reduced to manage token count
|
|
837
837
|
});
|
|
838
838
|
if (searchResults.length === 0) {
|
|
839
839
|
throw new Error(`No relevant capabilities found for policy description: "${policyDescription}"`);
|
|
840
840
|
}
|
|
841
|
+
// Filter out Kyverno CRDs - we don't need Kyverno's own CRD schemas to generate policies
|
|
842
|
+
// Kyverno CRDs are massive (Policy = 52KB) and irrelevant for policy generation
|
|
843
|
+
const filteredResults = searchResults.filter(result => {
|
|
844
|
+
const resourceName = result.data.resourceName;
|
|
845
|
+
const group = result.data.group || '';
|
|
846
|
+
// Check the API group for kyverno.io (handles all Kyverno CRDs)
|
|
847
|
+
const isKyvernoCRD = group.includes('kyverno.io') || resourceName.includes('.kyverno.io');
|
|
848
|
+
if (isKyvernoCRD) {
|
|
849
|
+
console.debug('Filtering out Kyverno CRD from schema retrieval', { resourceName, group });
|
|
850
|
+
}
|
|
851
|
+
return !isKyvernoCRD;
|
|
852
|
+
});
|
|
853
|
+
console.info('Filtered Kyverno CRDs from results', {
|
|
854
|
+
originalCount: searchResults.length,
|
|
855
|
+
filteredCount: filteredResults.length,
|
|
856
|
+
kyvernoCRDsRemoved: searchResults.length - filteredResults.length
|
|
857
|
+
});
|
|
841
858
|
console.info('Semantic search completed', {
|
|
842
859
|
resultsCount: searchResults.length,
|
|
843
860
|
topScore: searchResults[0]?.score
|
|
844
861
|
});
|
|
845
862
|
// Retrieve schemas for relevant resources
|
|
846
863
|
console.info('Retrieving schemas for relevant resources', {
|
|
847
|
-
resourceCount:
|
|
848
|
-
resources:
|
|
864
|
+
resourceCount: filteredResults.length,
|
|
865
|
+
resources: filteredResults.map(r => r.data.resourceName)
|
|
849
866
|
});
|
|
850
867
|
const schemas = {};
|
|
851
868
|
// Retrieve schema for each relevant resource using existing pattern from generate-manifests.ts
|
|
852
|
-
for (const result of
|
|
869
|
+
for (const result of filteredResults) {
|
|
853
870
|
const resourceName = result.data.resourceName;
|
|
854
871
|
try {
|
|
855
872
|
console.debug('Retrieving schema for resource', {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vector-db-service.d.ts","sourceRoot":"","sources":["../../src/core/vector-db-service.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,MAAM,WAAW,cAAc;IAC7B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC9B;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,qBAAa,eAAe;IAC1B,OAAO,CAAC,MAAM,CAA6B;IAC3C,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,cAAc,CAAS;gBAEnB,MAAM,GAAE,cAAmB;IAsBvC,OAAO,CAAC,cAAc;IAWtB,OAAO,CAAC,sBAAsB;IAM9B;;OAEG;IACG,oBAAoB,CAAC,UAAU,GAAE,MAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAiDnE;;OAEG;YACW,gBAAgB;IAkB9B;;OAEG;IACG,cAAc,CAAC,QAAQ,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAqC7D;;OAEG;IACG,aAAa,CACjB,MAAM,EAAE,MAAM,EAAE,EAChB,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC,YAAY,EAAE,CAAC;IAsC1B;;OAEG;IACG,gBAAgB,CACpB,QAAQ,EAAE,MAAM,EAAE,EAClB,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC,YAAY,EAAE,CAAC;IAuD1B;;OAEG;IACG,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IAqC7D;;OAEG;IACG,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"vector-db-service.d.ts","sourceRoot":"","sources":["../../src/core/vector-db-service.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,MAAM,WAAW,cAAc;IAC7B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC9B;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,qBAAa,eAAe;IAC1B,OAAO,CAAC,MAAM,CAA6B;IAC3C,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,cAAc,CAAS;gBAEnB,MAAM,GAAE,cAAmB;IAsBvC,OAAO,CAAC,cAAc;IAWtB,OAAO,CAAC,sBAAsB;IAM9B;;OAEG;IACG,oBAAoB,CAAC,UAAU,GAAE,MAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAiDnE;;OAEG;YACW,gBAAgB;IAkB9B;;OAEG;IACG,cAAc,CAAC,QAAQ,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAqC7D;;OAEG;IACG,aAAa,CACjB,MAAM,EAAE,MAAM,EAAE,EAChB,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC,YAAY,EAAE,CAAC;IAsC1B;;OAEG;IACG,gBAAgB,CACpB,QAAQ,EAAE,MAAM,EAAE,EAClB,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC,YAAY,EAAE,CAAC;IAuD1B;;OAEG;IACG,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IAqC7D;;OAEG;IACG,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA8B/C;;;;OAIG;IACG,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC;IAuCzC;;;OAGG;IACG,eAAe,CAAC,KAAK,GAAE,MAAc,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAyCvE;;OAEG;IACG,iBAAiB,IAAI,OAAO,CAAC,GAAG,CAAC;IAqBvC;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAsBrC;;OAEG;IACH,aAAa,IAAI,OAAO;IAIxB;;OAEG;IACH,SAAS,IAAI,cAAc;CAG5B"}
|
|
@@ -275,6 +275,11 @@ class VectorDBService {
|
|
|
275
275
|
wait: true,
|
|
276
276
|
points: [id]
|
|
277
277
|
});
|
|
278
|
+
// Qdrant's wait:true ensures the write operation completes, but there can be
|
|
279
|
+
// a brief window where subsequent reads may still return stale data due to
|
|
280
|
+
// internal segment synchronization. This delay ensures consistency for
|
|
281
|
+
// immediate read-after-delete operations in integration tests and workflows.
|
|
282
|
+
await new Promise(resolve => setTimeout(resolve, 100));
|
|
278
283
|
}
|
|
279
284
|
catch (error) {
|
|
280
285
|
throw new Error(`Failed to delete document: ${error}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rest-registry.d.ts","sourceRoot":"","sources":["../../src/interfaces/rest-registry.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAEhD;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC;IACzC,OAAO,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;IAC1C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACjC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAClC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,UAAU,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB;AAED;;GAEG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,KAAK,CAAwC;IACrD,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,WAAW,CAAsC;gBAE7C,MAAM,EAAE,MAAM;IAI1B;;OAEG;IACH,YAAY,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI;IAa1C;;OAEG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IAI/C;;OAEG;IACH,YAAY,IAAI,MAAM,EAAE;IAIxB;;OAEG;IACH,WAAW,IAAI,QAAQ,EAAE;IAazB;;OAEG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI9B;;OAEG;IACH,YAAY,IAAI,MAAM;IAItB;;OAEG;IACH,KAAK,IAAI,IAAI;IAMb;;OAEG;IACH,OAAO,CAAC,4BAA4B;
|
|
1
|
+
{"version":3,"file":"rest-registry.d.ts","sourceRoot":"","sources":["../../src/interfaces/rest-registry.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAEhD;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC;IACzC,OAAO,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;IAC1C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACjC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAClC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,UAAU,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB;AAED;;GAEG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,KAAK,CAAwC;IACrD,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,WAAW,CAAsC;gBAE7C,MAAM,EAAE,MAAM;IAI1B;;OAEG;IACH,YAAY,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI;IAa1C;;OAEG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IAI/C;;OAEG;IACH,YAAY,IAAI,MAAM,EAAE;IAIxB;;OAEG;IACH,WAAW,IAAI,QAAQ,EAAE;IAazB;;OAEG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI9B;;OAEG;IACH,YAAY,IAAI,MAAM;IAItB;;OAEG;IACH,KAAK,IAAI,IAAI;IAMb;;OAEG;IACH,OAAO,CAAC,4BAA4B;IAyDpC;;OAEG;IACH,gBAAgB,CAAC,OAAO,GAAE;QACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,MAAM,CAAC,EAAE,MAAM,CAAC;KACZ,GAAG,QAAQ,EAAE;IAsBnB;;OAEG;IACH,aAAa,IAAI,MAAM,EAAE;IAUzB;;OAEG;IACH,OAAO,IAAI,MAAM,EAAE;IAUnB;;OAEG;IACH,QAAQ,IAAI;QACV,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,EAAE,MAAM,EAAE,CAAC;QACrB,IAAI,EAAE,MAAM,EAAE,CAAC;QACf,SAAS,EAAE,MAAM,CAAC;KACnB;CAQF"}
|
|
@@ -92,6 +92,7 @@ class RestToolRegistry {
|
|
|
92
92
|
// Create a Zod object schema from the individual field schemas
|
|
93
93
|
const zodObjectSchema = zod_1.z.object(zodSchemas);
|
|
94
94
|
// Convert to JSON Schema using OpenAPI3 conventions, inlining all subschemas
|
|
95
|
+
// Type cast needed for Zod v4 compatibility with zod-to-json-schema
|
|
95
96
|
const jsonSchema = (0, zod_to_json_schema_1.zodToJsonSchema)(zodObjectSchema, {
|
|
96
97
|
name: `${toolName}Request`,
|
|
97
98
|
target: 'openApi3',
|
|
@@ -8,7 +8,12 @@ export declare const ANSWERQUESTION_TOOL_NAME = "answerQuestion";
|
|
|
8
8
|
export declare const ANSWERQUESTION_TOOL_DESCRIPTION = "Process user answers and return remaining questions or completion status. For open stage, use \"open\" as the answer key.";
|
|
9
9
|
export declare const ANSWERQUESTION_TOOL_INPUT_SCHEMA: {
|
|
10
10
|
solutionId: z.ZodString;
|
|
11
|
-
stage: z.ZodEnum<
|
|
11
|
+
stage: z.ZodEnum<{
|
|
12
|
+
basic: "basic";
|
|
13
|
+
required: "required";
|
|
14
|
+
advanced: "advanced";
|
|
15
|
+
open: "open";
|
|
16
|
+
}>;
|
|
12
17
|
answers: z.ZodRecord<z.ZodString, z.ZodAny>;
|
|
13
18
|
interaction_id: z.ZodOptional<z.ZodString>;
|
|
14
19
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"answer-question.d.ts","sourceRoot":"","sources":["../../src/tools/answer-question.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAOhD,eAAO,MAAM,wBAAwB,mBAAmB,CAAC;AACzD,eAAO,MAAM,+BAA+B,8HAA4H,CAAC;AAGzK,eAAO,MAAM,gCAAgC
|
|
1
|
+
{"version":3,"file":"answer-question.d.ts","sourceRoot":"","sources":["../../src/tools/answer-question.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAOhD,eAAO,MAAM,wBAAwB,mBAAmB,CAAC;AACzD,eAAO,MAAM,+BAA+B,8HAA4H,CAAC;AAGzK,eAAO,MAAM,gCAAgC;;;;;;;;;;CAK5C,CAAC;AAifF;;GAEG;AACH,wBAAsB,wBAAwB,CAC5C,IAAI,EAAE;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,UAAU,GAAG,OAAO,GAAG,UAAU,GAAG,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAAC,cAAc,CAAC,EAAE,MAAM,CAAA;CAAE,EACtI,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC;IAAE,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;CAAE,CAAC,CAgSxD"}
|
|
@@ -17,7 +17,7 @@ exports.ANSWERQUESTION_TOOL_DESCRIPTION = 'Process user answers and return remai
|
|
|
17
17
|
exports.ANSWERQUESTION_TOOL_INPUT_SCHEMA = {
|
|
18
18
|
solutionId: zod_1.z.string().regex(/^sol-\d+-[a-f0-9]{8}$/).describe('The solution ID to update (e.g., sol-1762983784617-9ddae2b8)'),
|
|
19
19
|
stage: zod_1.z.enum(['required', 'basic', 'advanced', 'open']).describe('The configuration stage being addressed'),
|
|
20
|
-
answers: zod_1.z.record(zod_1.z.any()).describe('User answers to configuration questions for the specified stage. For required/basic/advanced stages, use questionId as key. For open stage, use "open" as key (e.g., {"open": "add persistent storage"})'),
|
|
20
|
+
answers: zod_1.z.record(zod_1.z.string(), zod_1.z.any()).describe('User answers to configuration questions for the specified stage. For required/basic/advanced stages, use questionId as key. For open stage, use "open" as key (e.g., {"open": "add persistent storage"})'),
|
|
21
21
|
interaction_id: zod_1.z.string().optional().describe('INTERNAL ONLY - Do not populate. Used for evaluation dataset generation.')
|
|
22
22
|
};
|
|
23
23
|
// Session management now handled by GenericSessionManager
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate-manifests.d.ts","sourceRoot":"","sources":["../../src/tools/generate-manifests.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"generate-manifests.d.ts","sourceRoot":"","sources":["../../src/tools/generate-manifests.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAehD,eAAO,MAAM,2BAA2B,sBAAsB,CAAC;AAC/D,eAAO,MAAM,kCAAkC,+IAA+I,CAAC;AAG/L,eAAO,MAAM,mCAAmC;;;CAG/C,CAAC;AAsMF;;GAEG;AACH,wBAAsB,2BAA2B,CAC/C,IAAI,EAAE;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,cAAc,CAAC,EAAE,MAAM,CAAA;CAAE,EACrD,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC;IAAE,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;CAAE,CAAC,CAiNxD"}
|