@vfarcic/dot-ai 0.140.0 → 0.143.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/ai-provider-factory.d.ts.map +1 -1
- package/dist/core/ai-provider-factory.js +4 -6
- package/dist/core/ai-provider.interface.d.ts +2 -2
- package/dist/core/ai-provider.interface.js +1 -1
- 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/embedding-service.d.ts +8 -3
- package/dist/core/embedding-service.d.ts.map +1 -1
- package/dist/core/embedding-service.js +8 -16
- package/dist/core/model-config.d.ts +6 -8
- package/dist/core/model-config.d.ts.map +1 -1
- package/dist/core/model-config.js +6 -8
- package/dist/core/providers/vercel-provider.d.ts.map +1 -1
- package/dist/core/providers/vercel-provider.js +12 -11
- 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/dist/tools/remediate.js +1 -1
- package/package.json +4 -8
- 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
|
@@ -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"}
|
|
@@ -49,6 +49,8 @@ const yaml = __importStar(require("js-yaml"));
|
|
|
49
49
|
const generic_session_manager_1 = require("../core/generic-session-manager");
|
|
50
50
|
const solution_utils_1 = require("../core/solution-utils");
|
|
51
51
|
const platform_utils_1 = require("../core/platform-utils");
|
|
52
|
+
const crd_availability_1 = require("../core/crd-availability");
|
|
53
|
+
const solution_cr_1 = require("../core/solution-cr");
|
|
52
54
|
// Tool metadata for direct MCP registration
|
|
53
55
|
exports.GENERATEMANIFESTS_TOOL_NAME = 'generateManifests';
|
|
54
56
|
exports.GENERATEMANIFESTS_TOOL_DESCRIPTION = 'Generate final Kubernetes manifests from fully configured solution (ONLY after completing ALL stages: required, basic, advanced, and open)';
|
|
@@ -208,56 +210,6 @@ ${errorContext.previousManifests}
|
|
|
208
210
|
});
|
|
209
211
|
return manifestContent;
|
|
210
212
|
}
|
|
211
|
-
/**
|
|
212
|
-
* Generate dot-ai application metadata ConfigMap
|
|
213
|
-
*/
|
|
214
|
-
function generateMetadataConfigMap(solution, solutionId, userAnswers, logger) {
|
|
215
|
-
const appName = userAnswers.name;
|
|
216
|
-
const namespace = userAnswers.namespace || 'default';
|
|
217
|
-
const originalIntent = solution.intent;
|
|
218
|
-
// Validate required fields (will throw if missing)
|
|
219
|
-
const dotAiLabels = (0, solution_utils_1.addDotAiLabels)(undefined, userAnswers, solution);
|
|
220
|
-
// Extract resource references from solution
|
|
221
|
-
const resources = (solution.resources || []).map((resource) => ({
|
|
222
|
-
apiVersion: resource.apiVersion,
|
|
223
|
-
kind: resource.kind,
|
|
224
|
-
name: resource.name || appName, // Use app name as fallback
|
|
225
|
-
namespace: resource.namespace || namespace
|
|
226
|
-
}));
|
|
227
|
-
// Create ConfigMap object
|
|
228
|
-
const configMap = {
|
|
229
|
-
apiVersion: 'v1',
|
|
230
|
-
kind: 'ConfigMap',
|
|
231
|
-
metadata: {
|
|
232
|
-
name: (0, solution_utils_1.sanitizeKubernetesName)(`dot-ai-app-${appName}-${solutionId}`),
|
|
233
|
-
namespace: namespace,
|
|
234
|
-
labels: dotAiLabels,
|
|
235
|
-
annotations: {
|
|
236
|
-
'dot-ai.io/original-intent': originalIntent
|
|
237
|
-
}
|
|
238
|
-
},
|
|
239
|
-
data: {
|
|
240
|
-
'deployment-info.yaml': yaml.dump({
|
|
241
|
-
appName,
|
|
242
|
-
deployedAt: new Date().toISOString(),
|
|
243
|
-
originalIntent,
|
|
244
|
-
resources
|
|
245
|
-
})
|
|
246
|
-
}
|
|
247
|
-
};
|
|
248
|
-
try {
|
|
249
|
-
return yaml.dump(configMap);
|
|
250
|
-
}
|
|
251
|
-
catch (error) {
|
|
252
|
-
logger.error('Failed to generate YAML for ConfigMap', error, {
|
|
253
|
-
configMap,
|
|
254
|
-
appName,
|
|
255
|
-
solutionId,
|
|
256
|
-
namespace
|
|
257
|
-
});
|
|
258
|
-
throw new Error(`ConfigMap YAML generation failed: ${error instanceof Error ? error.message : String(error)}`);
|
|
259
|
-
}
|
|
260
|
-
}
|
|
261
213
|
/**
|
|
262
214
|
* Direct MCP tool handler for generateManifests functionality
|
|
263
215
|
*/
|
|
@@ -318,10 +270,37 @@ async function handleGenerateManifestsTool(args, dotAI, logger, requestId) {
|
|
|
318
270
|
const dotAiLabels = (0, solution_utils_1.addDotAiLabels)(undefined, userAnswers, solution);
|
|
319
271
|
// Generate manifests with AI (including labels)
|
|
320
272
|
const aiManifests = await generateManifestsWithAI(solution, args.solutionId, dotAI, logger, lastError, dotAiLabels, args.interaction_id);
|
|
321
|
-
//
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
273
|
+
// Check if Solution CRD is available and generate Solution CR if present
|
|
274
|
+
let solutionCR = '';
|
|
275
|
+
try {
|
|
276
|
+
const crdAvailable = await (0, crd_availability_1.isSolutionCRDAvailable)();
|
|
277
|
+
if (crdAvailable) {
|
|
278
|
+
solutionCR = (0, solution_cr_1.generateSolutionCR)({
|
|
279
|
+
solutionId: args.solutionId,
|
|
280
|
+
namespace: userAnswers.namespace || 'default',
|
|
281
|
+
solution: solution,
|
|
282
|
+
generatedManifestsYaml: aiManifests
|
|
283
|
+
});
|
|
284
|
+
logger.info('Solution CR generated successfully', { solutionId: args.solutionId });
|
|
285
|
+
}
|
|
286
|
+
else {
|
|
287
|
+
logger.info('Solution CRD not available, skipping Solution CR generation (graceful degradation)', { solutionId: args.solutionId });
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
catch (error) {
|
|
291
|
+
logger.warn('Failed to check CRD availability or generate Solution CR, skipping', {
|
|
292
|
+
solutionId: args.solutionId,
|
|
293
|
+
error: error instanceof Error ? error.message : String(error)
|
|
294
|
+
});
|
|
295
|
+
// Graceful degradation - continue without Solution CR
|
|
296
|
+
}
|
|
297
|
+
// Combine all manifests (Solution CR + AI manifests)
|
|
298
|
+
const manifestParts = [];
|
|
299
|
+
if (solutionCR) {
|
|
300
|
+
manifestParts.push(solutionCR);
|
|
301
|
+
}
|
|
302
|
+
manifestParts.push(aiManifests);
|
|
303
|
+
const manifests = manifestParts.length > 1 ? manifestParts.join('---\n') : manifestParts[0];
|
|
325
304
|
// Save manifests to file
|
|
326
305
|
fs.writeFileSync(yamlPath, manifests, 'utf8');
|
|
327
306
|
logger.info('Manifests saved to file', { yamlPath, attempt, requestId });
|
|
@@ -359,7 +338,7 @@ async function handleGenerateManifestsTool(args, dotAI, logger, requestId) {
|
|
|
359
338
|
};
|
|
360
339
|
}
|
|
361
340
|
// Validation failed, prepare error context for next attempt
|
|
362
|
-
// Only pass AI-generated manifests
|
|
341
|
+
// Only pass AI-generated manifests to avoid duplicates on retry
|
|
363
342
|
lastError = {
|
|
364
343
|
attempt,
|
|
365
344
|
previousManifests: aiManifests,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"operate-analysis.d.ts","sourceRoot":"","sources":["../../src/tools/operate-analysis.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"operate-analysis.d.ts","sourceRoot":"","sources":["../../src/tools/operate-analysis.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AAGxE,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAEhD,OAAO,EAEL,kBAAkB,EAMnB,MAAM,WAAW,CAAC;AAEnB;;;;;;;;;GASG;AACH,wBAAsB,aAAa,CACjC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,qBAAqB,CAAC,kBAAkB,CAAC,EACzD,SAAS,CAAC,EAAE,MAAM,EAClB,cAAc,CAAC,EAAE,MAAM,GACtB,OAAO,CAAC,GAAG,CAAC,CAgDd"}
|
|
@@ -1,13 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
3
|
exports.analyzeIntent = analyzeIntent;
|
|
7
|
-
const fs_1 = __importDefault(require("fs"));
|
|
8
|
-
const path_1 = __importDefault(require("path"));
|
|
9
4
|
const kubectl_tools_1 = require("../core/kubectl-tools");
|
|
10
5
|
const ai_provider_factory_1 = require("../core/ai-provider-factory");
|
|
6
|
+
const shared_prompt_loader_1 = require("../core/shared-prompt-loader");
|
|
11
7
|
const operate_1 = require("./operate");
|
|
12
8
|
/**
|
|
13
9
|
* Analyzes user intent and generates operational proposal using AI tool loop
|
|
@@ -58,26 +54,24 @@ async function analyzeIntent(intent, logger, sessionManager, sessionId, interact
|
|
|
58
54
|
* This prompt is cacheable across all operate calls
|
|
59
55
|
*/
|
|
60
56
|
function loadSystemPrompt() {
|
|
61
|
-
|
|
62
|
-
return fs_1.default.readFileSync(promptPath, 'utf8');
|
|
57
|
+
return (0, shared_prompt_loader_1.loadPrompt)('operate-system');
|
|
63
58
|
}
|
|
64
59
|
/**
|
|
65
60
|
* Builds dynamic user message with intent and embedded context
|
|
66
61
|
* Uses template from prompts/operate-user.md and formatting functions from operate.ts
|
|
67
62
|
*/
|
|
68
63
|
function buildUserMessage(intent, context) {
|
|
69
|
-
const templatePath = path_1.default.join(process.cwd(), 'prompts', 'operate-user.md');
|
|
70
|
-
const template = fs_1.default.readFileSync(templatePath, 'utf8');
|
|
71
64
|
// Format context sections using shared formatting functions
|
|
72
65
|
const patternsText = (0, operate_1.formatPatterns)(context.patterns);
|
|
73
66
|
const policiesText = (0, operate_1.formatPolicies)(context.policies);
|
|
74
67
|
const capabilitiesText = (0, operate_1.formatCapabilities)(context.capabilities);
|
|
75
|
-
//
|
|
76
|
-
return
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
68
|
+
// Use loadPrompt with Handlebars template variables
|
|
69
|
+
return (0, shared_prompt_loader_1.loadPrompt)('operate-user', {
|
|
70
|
+
intent,
|
|
71
|
+
patterns: patternsText,
|
|
72
|
+
policies: policiesText,
|
|
73
|
+
capabilities: capabilitiesText
|
|
74
|
+
});
|
|
81
75
|
}
|
|
82
76
|
/**
|
|
83
77
|
* Executes AI tool loop with kubectl investigation tools
|
|
@@ -13,8 +13,22 @@ import { Logger } from '../core/error-handling';
|
|
|
13
13
|
export declare const ORGANIZATIONAL_DATA_TOOL_NAME = "manageOrgData";
|
|
14
14
|
export declare const ORGANIZATIONAL_DATA_TOOL_DESCRIPTION = "Unified tool for managing cluster data: organizational patterns, policy intents, and resource capabilities. For patterns and policies: supports create, list, get, delete, deleteAll, and search operations (patterns also support step-by-step creation workflow). For capabilities: supports scan, list, get, delete, deleteAll, and progress operations for cluster resource capability discovery and management. Use dataType parameter to specify what to manage: \"pattern\" for organizational patterns, \"policy\" for policy intents, \"capabilities\" for resource capabilities.";
|
|
15
15
|
export declare const ORGANIZATIONAL_DATA_TOOL_INPUT_SCHEMA: {
|
|
16
|
-
dataType: z.ZodEnum<
|
|
17
|
-
|
|
16
|
+
dataType: z.ZodEnum<{
|
|
17
|
+
capabilities: "capabilities";
|
|
18
|
+
pattern: "pattern";
|
|
19
|
+
policy: "policy";
|
|
20
|
+
}>;
|
|
21
|
+
operation: z.ZodEnum<{
|
|
22
|
+
search: "search";
|
|
23
|
+
get: "get";
|
|
24
|
+
create: "create";
|
|
25
|
+
list: "list";
|
|
26
|
+
delete: "delete";
|
|
27
|
+
deleteAll: "deleteAll";
|
|
28
|
+
progress: "progress";
|
|
29
|
+
scan: "scan";
|
|
30
|
+
analyze: "analyze";
|
|
31
|
+
}>;
|
|
18
32
|
sessionId: z.ZodOptional<z.ZodString>;
|
|
19
33
|
step: z.ZodOptional<z.ZodString>;
|
|
20
34
|
response: z.ZodOptional<z.ZodString>;
|
|
@@ -24,15 +38,7 @@ export declare const ORGANIZATIONAL_DATA_TOOL_INPUT_SCHEMA: {
|
|
|
24
38
|
kind: z.ZodString;
|
|
25
39
|
group: z.ZodString;
|
|
26
40
|
apiVersion: z.ZodString;
|
|
27
|
-
},
|
|
28
|
-
kind: string;
|
|
29
|
-
group: string;
|
|
30
|
-
apiVersion: string;
|
|
31
|
-
}, {
|
|
32
|
-
kind: string;
|
|
33
|
-
group: string;
|
|
34
|
-
apiVersion: string;
|
|
35
|
-
}>>;
|
|
41
|
+
}, z.core.$strip>>;
|
|
36
42
|
resourceList: z.ZodOptional<z.ZodString>;
|
|
37
43
|
collection: z.ZodOptional<z.ZodString>;
|
|
38
44
|
interaction_id: z.ZodOptional<z.ZodString>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"organizational-data.d.ts","sourceRoot":"","sources":["../../src/tools/organizational-data.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;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,6BAA6B,kBAAkB,CAAC;AAC7D,eAAO,MAAM,oCAAoC,+jBAAyjB,CAAC;AAG3mB,eAAO,MAAM,qCAAqC
|
|
1
|
+
{"version":3,"file":"organizational-data.d.ts","sourceRoot":"","sources":["../../src/tools/organizational-data.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;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,6BAA6B,kBAAkB,CAAC;AAC7D,eAAO,MAAM,oCAAoC,+jBAAyjB,CAAC;AAG3mB,eAAO,MAAM,qCAAqC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4BjD,CAAC;AAklBF;;GAEG;AACH,wBAAsB,4BAA4B,CAChD,IAAI,EAAE,GAAG,EACT,MAAM,EAAE,KAAK,GAAG,IAAI,EACpB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,GAAG,CAAC,CA0Hd"}
|
|
@@ -8,10 +8,14 @@ import { ProjectSetupParams } from './project-setup/types';
|
|
|
8
8
|
export declare const PROJECT_SETUP_TOOL_NAME = "projectSetup";
|
|
9
9
|
export declare const PROJECT_SETUP_TOOL_DESCRIPTION = "Setup project, audit repository, or generate repository files. Use this when user wants to: setup project, audit repo, check missing files, create README, add LICENSE, generate CONTRIBUTING.md, add CI/CD workflows, initialize documentation, setup governance files. Analyzes local repositories and generates missing configuration, documentation, and governance files. Does NOT handle Kubernetes deployments - use recommend for those.";
|
|
10
10
|
export declare const PROJECT_SETUP_TOOL_INPUT_SCHEMA: {
|
|
11
|
-
step: z.ZodOptional<z.ZodEnum<
|
|
11
|
+
step: z.ZodOptional<z.ZodEnum<{
|
|
12
|
+
discover: "discover";
|
|
13
|
+
reportScan: "reportScan";
|
|
14
|
+
generateScope: "generateScope";
|
|
15
|
+
}>>;
|
|
12
16
|
sessionId: z.ZodOptional<z.ZodString>;
|
|
13
|
-
existingFiles: z.ZodOptional<z.ZodArray<z.ZodString
|
|
14
|
-
selectedScopes: z.ZodOptional<z.ZodArray<z.ZodString
|
|
17
|
+
existingFiles: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
18
|
+
selectedScopes: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
15
19
|
scope: z.ZodOptional<z.ZodString>;
|
|
16
20
|
answers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>;
|
|
17
21
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project-setup.d.ts","sourceRoot":"","sources":["../../src/tools/project-setup.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAiB,MAAM,uBAAuB,CAAC;AAO1E,eAAO,MAAM,uBAAuB,iBAAiB,CAAC;AACtD,eAAO,MAAM,8BAA8B,qbAAqb,CAAC;AAGje,eAAO,MAAM,+BAA+B
|
|
1
|
+
{"version":3,"file":"project-setup.d.ts","sourceRoot":"","sources":["../../src/tools/project-setup.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAiB,MAAM,uBAAuB,CAAC;AAO1E,eAAO,MAAM,uBAAuB,iBAAiB,CAAC;AACtD,eAAO,MAAM,8BAA8B,qbAAqb,CAAC;AAGje,eAAO,MAAM,+BAA+B;;;;;;;;;;;CAO3C,CAAC;AAEF;;;GAGG;AACH,wBAAsB,sBAAsB,CAC1C,IAAI,EAAE,kBAAkB,EACxB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAAC,CA2C7D"}
|
|
@@ -21,7 +21,7 @@ exports.PROJECT_SETUP_TOOL_INPUT_SCHEMA = {
|
|
|
21
21
|
existingFiles: zod_1.z.array(zod_1.z.string()).optional().describe('List of files that exist in the repository (required for first reportScan call, optional for subsequent calls with selectedScopes)'),
|
|
22
22
|
selectedScopes: zod_1.z.array(zod_1.z.string()).optional().describe('Scopes user chose to setup (e.g., ["readme", "legal", "github-community"]) (required for reportScan step after initial scan)'),
|
|
23
23
|
scope: zod_1.z.string().optional().describe('Scope to generate (e.g., "github-community") (required for generateScope step)'),
|
|
24
|
-
answers: zod_1.z.record(zod_1.z.any()).optional().describe('Answers to ALL questions for the scope (required for generateScope step)')
|
|
24
|
+
answers: zod_1.z.record(zod_1.z.string(), zod_1.z.any()).optional().describe('Answers to ALL questions for the scope (required for generateScope step)')
|
|
25
25
|
};
|
|
26
26
|
/**
|
|
27
27
|
* Main handler for Project Setup Tool
|
|
@@ -33,9 +33,11 @@ export interface SolutionData {
|
|
|
33
33
|
basic?: any[];
|
|
34
34
|
advanced?: any[];
|
|
35
35
|
open?: any;
|
|
36
|
+
relevantPolicies?: string[];
|
|
36
37
|
};
|
|
37
38
|
answers: Record<string, any>;
|
|
38
39
|
timestamp: string;
|
|
40
|
+
appliedPatterns?: string[];
|
|
39
41
|
}
|
|
40
42
|
/**
|
|
41
43
|
* Direct MCP tool handler for recommend functionality (unified with stage routing)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recommend.d.ts","sourceRoot":"","sources":["../../src/tools/recommend.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAWhD,eAAO,MAAM,mBAAmB,cAAc,CAAC;AAC/C,eAAO,MAAM,0BAA0B,yXAAyX,CAAC;AAGja,eAAO,MAAM,2BAA2B;;;;;;;;CAWvC,CAAC;AAGF,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,KAAK,CAAC;QACf,IAAI,EAAE,MAAM,CAAC;QACb,UAAU,EAAE,MAAM,CAAC;QACnB,KAAK,EAAE,MAAM,CAAC;QACd,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC,CAAC;IACH,SAAS,EAAE;QACT,QAAQ,CAAC,EAAE,GAAG,EAAE,CAAC;QACjB,KAAK,CAAC,EAAE,GAAG,EAAE,CAAC;QACd,QAAQ,CAAC,EAAE,GAAG,EAAE,CAAC;QACjB,IAAI,CAAC,EAAE,GAAG,CAAC;
|
|
1
|
+
{"version":3,"file":"recommend.d.ts","sourceRoot":"","sources":["../../src/tools/recommend.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAWhD,eAAO,MAAM,mBAAmB,cAAc,CAAC;AAC/C,eAAO,MAAM,0BAA0B,yXAAyX,CAAC;AAGja,eAAO,MAAM,2BAA2B;;;;;;;;CAWvC,CAAC;AAGF,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,KAAK,CAAC;QACf,IAAI,EAAE,MAAM,CAAC;QACb,UAAU,EAAE,MAAM,CAAC;QACnB,KAAK,EAAE,MAAM,CAAC;QACd,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC,CAAC;IACH,SAAS,EAAE;QACT,QAAQ,CAAC,EAAE,GAAG,EAAE,CAAC;QACjB,KAAK,CAAC,EAAE,GAAG,EAAE,CAAC;QACd,QAAQ,CAAC,EAAE,GAAG,EAAE,CAAC;QACjB,IAAI,CAAC,EAAE,GAAG,CAAC;QACX,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;KAC7B,CAAC;IACF,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;CAC5B;AAuED;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,GAAG,EACT,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,CAgPxD"}
|
package/dist/tools/recommend.js
CHANGED
|
@@ -27,7 +27,7 @@ exports.RECOMMEND_TOOL_INPUT_SCHEMA = {
|
|
|
27
27
|
// Parameters for chooseSolution stage
|
|
28
28
|
solutionId: zod_1.z.string().optional().describe('Solution ID for chooseSolution, answerQuestion, generateManifests, and deployManifests stages'),
|
|
29
29
|
// Parameters for answerQuestion stage (stage parameter contains the config stage like "answerQuestion:required")
|
|
30
|
-
answers: zod_1.z.record(zod_1.z.any()).optional().describe('User answers for answerQuestion stage'),
|
|
30
|
+
answers: zod_1.z.record(zod_1.z.string(), zod_1.z.any()).optional().describe('User answers for answerQuestion stage'),
|
|
31
31
|
// Parameters for deployManifests stage
|
|
32
32
|
timeout: zod_1.z.number().optional().describe('Deployment timeout in seconds for deployManifests stage'),
|
|
33
33
|
interaction_id: zod_1.z.string().optional().describe('INTERNAL ONLY - Do not populate. Used for evaluation dataset generation.')
|
|
@@ -213,9 +213,10 @@ async function handleRecommendTool(args, dotAI, logger, requestId) {
|
|
|
213
213
|
group: r.group,
|
|
214
214
|
description: r.description
|
|
215
215
|
})),
|
|
216
|
-
questions: solution.questions,
|
|
216
|
+
questions: solution.questions, // Includes relevantPolicies from question generation
|
|
217
217
|
answers: {}, // Empty initially - will be filled by answerQuestion tool
|
|
218
|
-
timestamp
|
|
218
|
+
timestamp,
|
|
219
|
+
appliedPatterns: solution.appliedPatterns || []
|
|
219
220
|
};
|
|
220
221
|
// Create solution session
|
|
221
222
|
const session = sessionManager.createSession(solutionData);
|
|
@@ -236,22 +237,25 @@ async function handleRecommendTool(args, dotAI, logger, requestId) {
|
|
|
236
237
|
})),
|
|
237
238
|
reasons: solution.reasons,
|
|
238
239
|
analysis: solution.analysis,
|
|
239
|
-
|
|
240
|
-
|
|
240
|
+
appliedPatterns: solution.appliedPatterns || [],
|
|
241
|
+
relevantPolicies: solution.questions?.relevantPolicies || []
|
|
241
242
|
});
|
|
242
243
|
}
|
|
243
|
-
// Analyze pattern usage across all solutions
|
|
244
|
-
const patternsUsedCount = solutionSummaries.filter(s => s.
|
|
245
|
-
const
|
|
244
|
+
// Analyze pattern/policy usage across all solutions
|
|
245
|
+
const patternsUsedCount = solutionSummaries.filter(s => s.appliedPatterns && s.appliedPatterns.length > 0).length;
|
|
246
|
+
const totalPatterns = solutionSummaries.reduce((count, s) => count + (s.appliedPatterns?.length || 0), 0);
|
|
247
|
+
const totalPolicies = solutionSummaries.reduce((count, s) => count + (s.relevantPolicies?.length || 0), 0);
|
|
246
248
|
// Build new response format
|
|
247
249
|
const response = {
|
|
248
250
|
intent: args.intent,
|
|
249
251
|
solutions: solutionSummaries,
|
|
250
|
-
|
|
252
|
+
organizationalContext: {
|
|
251
253
|
solutionsUsingPatterns: patternsUsedCount,
|
|
252
254
|
totalSolutions: solutionSummaries.length,
|
|
253
|
-
|
|
254
|
-
|
|
255
|
+
totalPatterns: totalPatterns,
|
|
256
|
+
totalPolicies: totalPolicies,
|
|
257
|
+
patternsAvailable: totalPatterns > 0 ? "Yes" : "None found or pattern search failed",
|
|
258
|
+
policiesAvailable: totalPolicies > 0 ? "Yes" : "None found or policy search failed"
|
|
255
259
|
},
|
|
256
260
|
nextAction: "Call recommend tool with stage: chooseSolution and your preferred solutionId",
|
|
257
261
|
guidance: "🔴 CRITICAL: You MUST present these solutions to the user and ask them to choose. DO NOT automatically call chooseSolution() without user input. Stop here and wait for user selection. IMPORTANT: Show the list of Kubernetes resources (from the 'resources' field) that each solution will use - this helps users understand what gets deployed. ALSO: Include pattern usage information in your response - show which solutions used organizational patterns and which did not.",
|
|
@@ -6,12 +6,19 @@ export declare const REMEDIATE_TOOL_NAME = "remediate";
|
|
|
6
6
|
export declare const REMEDIATE_TOOL_DESCRIPTION = "AI-powered Kubernetes issue analysis that provides root cause identification and actionable remediation steps. Unlike basic kubectl commands, this tool performs multi-step investigation, correlates cluster data, and generates intelligent solutions. Use when users want to understand WHY something is broken, not just see raw status. Ideal for: troubleshooting failures, diagnosing performance issues, analyzing pod problems, investigating networking/storage issues, or any \"what's wrong\" questions.";
|
|
7
7
|
export declare const REMEDIATE_TOOL_INPUT_SCHEMA: {
|
|
8
8
|
issue: z.ZodOptional<z.ZodString>;
|
|
9
|
-
mode: z.ZodDefault<z.ZodOptional<z.ZodEnum<
|
|
9
|
+
mode: z.ZodDefault<z.ZodOptional<z.ZodEnum<{
|
|
10
|
+
manual: "manual";
|
|
11
|
+
automatic: "automatic";
|
|
12
|
+
}>>>;
|
|
10
13
|
confidenceThreshold: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
|
|
11
|
-
maxRiskLevel: z.ZodDefault<z.ZodOptional<z.ZodEnum<
|
|
14
|
+
maxRiskLevel: z.ZodDefault<z.ZodOptional<z.ZodEnum<{
|
|
15
|
+
medium: "medium";
|
|
16
|
+
low: "low";
|
|
17
|
+
high: "high";
|
|
18
|
+
}>>>;
|
|
12
19
|
executeChoice: z.ZodOptional<z.ZodNumber>;
|
|
13
20
|
sessionId: z.ZodOptional<z.ZodString>;
|
|
14
|
-
executedCommands: z.ZodOptional<z.ZodArray<z.ZodString
|
|
21
|
+
executedCommands: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
15
22
|
interaction_id: z.ZodOptional<z.ZodString>;
|
|
16
23
|
};
|
|
17
24
|
export interface RemediateInput {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remediate.d.ts","sourceRoot":"","sources":["../../src/tools/remediate.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAYxB,eAAO,MAAM,mBAAmB,cAAc,CAAC;AAC/C,eAAO,MAAM,0BAA0B,yfAAwf,CAAC;AAIhiB,eAAO,MAAM,2BAA2B
|
|
1
|
+
{"version":3,"file":"remediate.d.ts","sourceRoot":"","sources":["../../src/tools/remediate.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/remediate.js
CHANGED
|
@@ -66,7 +66,7 @@ exports.REMEDIATE_TOOL_INPUT_SCHEMA = {
|
|
|
66
66
|
* AI-driven investigation - uses toolLoop for single-phase investigation and analysis
|
|
67
67
|
*/
|
|
68
68
|
async function conductInvestigation(session, sessionManager, aiProvider, logger, requestId, isValidation = false, interactionId) {
|
|
69
|
-
const maxIterations = 30; // Increased for thorough
|
|
69
|
+
const maxIterations = 30; // Increased for thorough investigation workflows
|
|
70
70
|
logger.info('Starting AI investigation with toolLoop', {
|
|
71
71
|
requestId,
|
|
72
72
|
sessionId: session.sessionId,
|