@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.
Files changed (61) hide show
  1. package/dist/core/ai-provider-factory.d.ts.map +1 -1
  2. package/dist/core/ai-provider-factory.js +4 -6
  3. package/dist/core/ai-provider.interface.d.ts +2 -2
  4. package/dist/core/ai-provider.interface.js +1 -1
  5. package/dist/core/crd-availability.d.ts +16 -0
  6. package/dist/core/crd-availability.d.ts.map +1 -0
  7. package/dist/core/crd-availability.js +108 -0
  8. package/dist/core/deploy-operation.js +2 -2
  9. package/dist/core/embedding-service.d.ts +8 -3
  10. package/dist/core/embedding-service.d.ts.map +1 -1
  11. package/dist/core/embedding-service.js +8 -16
  12. package/dist/core/model-config.d.ts +6 -8
  13. package/dist/core/model-config.d.ts.map +1 -1
  14. package/dist/core/model-config.js +6 -8
  15. package/dist/core/providers/vercel-provider.d.ts.map +1 -1
  16. package/dist/core/providers/vercel-provider.js +12 -11
  17. package/dist/core/schema.d.ts +2 -9
  18. package/dist/core/schema.d.ts.map +1 -1
  19. package/dist/core/schema.js +1 -2
  20. package/dist/core/solution-cr.d.ts +21 -0
  21. package/dist/core/solution-cr.d.ts.map +1 -0
  22. package/dist/core/solution-cr.js +112 -0
  23. package/dist/core/solution-utils.d.ts +0 -6
  24. package/dist/core/solution-utils.d.ts.map +1 -1
  25. package/dist/core/solution-utils.js +0 -26
  26. package/dist/core/unified-creation-session.d.ts.map +1 -1
  27. package/dist/core/unified-creation-session.js +21 -4
  28. package/dist/core/vector-db-service.d.ts.map +1 -1
  29. package/dist/core/vector-db-service.js +5 -0
  30. package/dist/interfaces/rest-registry.d.ts.map +1 -1
  31. package/dist/interfaces/rest-registry.js +1 -0
  32. package/dist/tools/answer-question.d.ts +6 -1
  33. package/dist/tools/answer-question.d.ts.map +1 -1
  34. package/dist/tools/answer-question.js +1 -1
  35. package/dist/tools/generate-manifests.d.ts.map +1 -1
  36. package/dist/tools/generate-manifests.js +34 -55
  37. package/dist/tools/operate-analysis.d.ts.map +1 -1
  38. package/dist/tools/operate-analysis.js +9 -15
  39. package/dist/tools/organizational-data.d.ts +17 -11
  40. package/dist/tools/organizational-data.d.ts.map +1 -1
  41. package/dist/tools/project-setup.d.ts +7 -3
  42. package/dist/tools/project-setup.d.ts.map +1 -1
  43. package/dist/tools/project-setup.js +1 -1
  44. package/dist/tools/recommend.d.ts +2 -0
  45. package/dist/tools/recommend.d.ts.map +1 -1
  46. package/dist/tools/recommend.js +15 -11
  47. package/dist/tools/remediate.d.ts +10 -3
  48. package/dist/tools/remediate.d.ts.map +1 -1
  49. package/dist/tools/remediate.js +1 -1
  50. package/package.json +4 -8
  51. package/prompts/operate-system.md +4 -3
  52. package/prompts/question-generation.md +8 -1
  53. package/prompts/remediate-system.md +10 -1
  54. package/prompts/resource-selection.md +7 -9
  55. package/scripts/crossplane.nu +1 -1
  56. package/scripts/dot-ai.nu +14 -2
  57. package/shared-prompts/prd-close.md +7 -1
  58. package/shared-prompts/deploy.md +0 -23
  59. package/shared-prompts/manage-org-data.md +0 -42
  60. package/shared-prompts/remediate.md +0 -44
  61. 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;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAwB3D;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"}
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;IAmFrC;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAU5B;;OAEG;IACH,OAAO,CAAC,sBAAsB;CAY/B"}
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: 30 // Reduced from 50 to stay within 200K token context limit (testing shows 35 still exceeds)
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: searchResults.length,
848
- resources: searchResults.map(r => r.data.resourceName)
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 searchResults) {
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;IAyB/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"}
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;IAwDpC;;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"}
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<["required", "basic", "advanced", "open"]>;
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;;;;;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"}
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;AAahD,eAAO,MAAM,2BAA2B,sBAAsB,CAAC;AAC/D,eAAO,MAAM,kCAAkC,+IAA+I,CAAC;AAG/L,eAAO,MAAM,mCAAmC;;;CAG/C,CAAC;AA2PF;;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,CAwLxD"}
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
- // Generate metadata ConfigMap
322
- const metadataConfigMap = generateMetadataConfigMap(solution, args.solutionId, userAnswers, logger);
323
- // Combine ConfigMap with AI-generated manifests
324
- const manifests = metadataConfigMap + '---\n' + aiManifests;
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 (not ConfigMap) to avoid duplicate ConfigMaps on retry
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":"AAEA,OAAO,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AAGxE,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,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
+ {"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
- const promptPath = path_1.default.join(process.cwd(), 'prompts', 'operate-system.md');
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
- // Replace template placeholders (use double braces to match template syntax)
76
- return template
77
- .replace('{{intent}}', intent)
78
- .replace('{{patterns}}', patternsText)
79
- .replace('{{policies}}', policiesText)
80
- .replace('{{capabilities}}', capabilitiesText);
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<["pattern", "policy", "capabilities"]>;
17
- operation: z.ZodEnum<["create", "list", "get", "delete", "deleteAll", "scan", "analyze", "progress", "search"]>;
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
- }, "strip", z.ZodTypeAny, {
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;;;;;;;;;;;;;;;;;;;;;;;;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"}
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<["discover", "reportScan", "generateScope"]>>;
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, "many">>;
14
- selectedScopes: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
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;;;;;;;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"}
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;KACZ,CAAC;IACF,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC7B,SAAS,EAAE,MAAM,CAAC;CACnB;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,CA4OxD"}
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"}
@@ -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
- usedPatterns: solution.usedPatterns || false,
240
- patternInfluences: solution.patternInfluences || []
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.usedPatterns).length;
245
- const totalPatternInfluences = solutionSummaries.reduce((count, s) => count + (s.patternInfluences?.length || 0), 0);
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
- patternSummary: {
252
+ organizationalContext: {
251
253
  solutionsUsingPatterns: patternsUsedCount,
252
254
  totalSolutions: solutionSummaries.length,
253
- totalPatternInfluences: totalPatternInfluences,
254
- patternsAvailable: totalPatternInfluences > 0 ? "Yes" : "None found or pattern search failed"
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<["manual", "automatic"]>>>;
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<["low", "medium", "high"]>>>;
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, "many">>;
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":"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"}
1
+ {"version":3,"file":"remediate.d.ts","sourceRoot":"","sources":["../../src/tools/remediate.ts"],"names":[],"mappings":"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"}
@@ -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 models like Mistral
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,