@vfarcic/dot-ai 0.104.0 → 0.105.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 (56) hide show
  1. package/README.md +0 -1
  2. package/dist/core/ai-provider-factory.d.ts +90 -0
  3. package/dist/core/ai-provider-factory.d.ts.map +1 -0
  4. package/dist/core/ai-provider-factory.js +187 -0
  5. package/dist/core/ai-provider.interface.d.ts +116 -0
  6. package/dist/core/ai-provider.interface.d.ts.map +1 -0
  7. package/dist/core/ai-provider.interface.js +14 -0
  8. package/dist/core/capabilities.d.ts +3 -3
  9. package/dist/core/capabilities.d.ts.map +1 -1
  10. package/dist/core/capabilities.js +4 -4
  11. package/dist/core/capability-scan-workflow.d.ts.map +1 -1
  12. package/dist/core/capability-scan-workflow.js +29 -14
  13. package/dist/core/doc-testing-session.d.ts +1 -1
  14. package/dist/core/doc-testing-session.js +1 -1
  15. package/dist/core/error-handling.js +2 -2
  16. package/dist/core/index.d.ts +4 -6
  17. package/dist/core/index.d.ts.map +1 -1
  18. package/dist/core/index.js +11 -22
  19. package/dist/core/platform-operations.d.ts +3 -3
  20. package/dist/core/platform-operations.d.ts.map +1 -1
  21. package/dist/core/platform-operations.js +6 -6
  22. package/dist/core/providers/anthropic-provider.d.ts +32 -0
  23. package/dist/core/providers/anthropic-provider.d.ts.map +1 -0
  24. package/dist/core/providers/anthropic-provider.js +177 -0
  25. package/dist/core/providers/vercel-provider.d.ts +34 -0
  26. package/dist/core/providers/vercel-provider.d.ts.map +1 -0
  27. package/dist/core/providers/vercel-provider.js +202 -0
  28. package/dist/core/schema.d.ts +4 -7
  29. package/dist/core/schema.d.ts.map +1 -1
  30. package/dist/core/schema.js +13 -11
  31. package/dist/core/unified-creation-session.d.ts.map +1 -1
  32. package/dist/core/unified-creation-session.js +13 -14
  33. package/dist/interfaces/mcp.d.ts +1 -1
  34. package/dist/interfaces/mcp.js +1 -1
  35. package/dist/interfaces/rest-api.js +1 -1
  36. package/dist/mcp/server.d.ts +1 -1
  37. package/dist/mcp/server.js +2 -2
  38. package/dist/tools/answer-question.d.ts.map +1 -1
  39. package/dist/tools/answer-question.js +8 -10
  40. package/dist/tools/build-platform.js +3 -3
  41. package/dist/tools/generate-manifests.d.ts.map +1 -1
  42. package/dist/tools/generate-manifests.js +7 -8
  43. package/dist/tools/organizational-data.d.ts.map +1 -1
  44. package/dist/tools/organizational-data.js +3 -2
  45. package/dist/tools/recommend.d.ts.map +1 -1
  46. package/dist/tools/recommend.js +50 -30
  47. package/dist/tools/remediate.d.ts.map +1 -1
  48. package/dist/tools/remediate.js +23 -39
  49. package/dist/tools/version.d.ts +3 -2
  50. package/dist/tools/version.d.ts.map +1 -1
  51. package/dist/tools/version.js +35 -23
  52. package/package.json +5 -2
  53. package/prompts/question-generation.md +31 -3
  54. package/dist/core/claude.d.ts +0 -88
  55. package/dist/core/claude.d.ts.map +0 -1
  56. package/dist/core/claude.js +0 -414
@@ -1 +1 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/core/schema.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/core/schema.ts"],"names":[],"mappings":"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"}
@@ -41,7 +41,6 @@ var __importStar = (this && this.__importStar) || (function () {
41
41
  Object.defineProperty(exports, "__esModule", { value: true });
42
42
  exports.ResourceRecommender = exports.ManifestValidator = exports.SchemaParser = void 0;
43
43
  const kubernetes_utils_1 = require("./kubernetes-utils");
44
- const claude_1 = require("./claude");
45
44
  const pattern_vector_service_1 = require("./pattern-vector-service");
46
45
  const vector_db_service_1 = require("./vector-db-service");
47
46
  const capability_vector_service_1 = require("./capability-vector-service");
@@ -266,14 +265,17 @@ exports.ManifestValidator = ManifestValidator;
266
265
  * ResourceRecommender determines which resources best meet user needs using AI
267
266
  */
268
267
  class ResourceRecommender {
269
- claudeIntegration;
270
- config;
268
+ aiProvider;
271
269
  patternService;
272
270
  capabilityService;
273
271
  policyService;
274
- constructor(config) {
275
- this.config = config;
276
- this.claudeIntegration = new claude_1.ClaudeIntegration(config.claudeApiKey);
272
+ constructor(aiProvider) {
273
+ // Use provided AI provider or create from environment
274
+ this.aiProvider = aiProvider || (() => {
275
+ // Lazy import to avoid circular dependencies
276
+ const { createAIProvider } = require('./ai-provider-factory');
277
+ return createAIProvider();
278
+ })();
277
279
  // Initialize capability service - fail gracefully if Vector DB unavailable
278
280
  try {
279
281
  // Use environment variable for collection name (allows using test data collection)
@@ -311,8 +313,8 @@ class ResourceRecommender {
311
313
  * Find the best resource solution(s) for user intent using two-phase analysis
312
314
  */
313
315
  async findBestSolutions(intent, _explainResource) {
314
- if (!this.claudeIntegration.isInitialized()) {
315
- throw new Error('Claude integration not initialized. API key required for AI-powered resource ranking.');
316
+ if (!this.aiProvider.isInitialized()) {
317
+ throw new Error('AI provider not initialized. API key required for AI-powered resource ranking.');
316
318
  }
317
319
  try {
318
320
  // Phase 0: Search for relevant organizational patterns
@@ -373,7 +375,7 @@ class ResourceRecommender {
373
375
  */
374
376
  async assembleAndRankSolutions(intent, availableResources, patterns) {
375
377
  const prompt = await this.loadSolutionAssemblyPrompt(intent, availableResources, patterns);
376
- const response = await this.claudeIntegration.sendMessage(prompt, 'solution-assembly');
378
+ const response = await this.aiProvider.sendMessage(prompt, 'solution-assembly');
377
379
  return this.parseSimpleSolutionResponse(response.content);
378
380
  }
379
381
  /**
@@ -620,7 +622,7 @@ class ResourceRecommender {
620
622
  .replace('{patterns}', patternsContext);
621
623
 
622
624
 
623
- const response = await this.claudeIntegration.sendMessage(selectionPrompt, 'resource-selection');
625
+ const response = await this.aiProvider.sendMessage(selectionPrompt, 'resource-selection');
624
626
 
625
627
  try {
626
628
  // Extract JSON from response with robust parsing
@@ -901,7 +903,7 @@ Available Node Labels: ${clusterOptions.nodeLabels.length > 0 ? clusterOptions.n
901
903
  .replace('{resource_details}', resourceDetails)
902
904
  .replace('{cluster_options}', clusterOptionsText)
903
905
  .replace('{policy_context}', policyContextText);
904
- const response = await this.claudeIntegration.sendMessage(questionPrompt, 'question-generation');
906
+ const response = await this.aiProvider.sendMessage(questionPrompt, 'question-generation');
905
907
  // Use robust JSON extraction
906
908
  const questions = this.extractJsonFromAIResponse(response.content);
907
909
  // Validate the response structure
@@ -1 +1 @@
1
- {"version":3,"file":"unified-creation-session.d.ts","sourceRoot":"","sources":["../../src/core/unified-creation-session.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAQH,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAKlD,OAAO,EACL,sBAAsB,EACtB,2BAA2B,EAC3B,iCAAiC,EACjC,UAAU,EAIX,MAAM,0BAA0B,CAAC;AAKlC,qBAAa,6BAA6B;IACxC,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,SAAS,CAAsB;gBAE3B,UAAU,EAAE,UAAU,EAAE,SAAS,CAAC,EAAE,mBAAmB;IAKnE;;OAEG;IACH,aAAa,CAAC,IAAI,EAAE,GAAG,GAAG,sBAAsB;IAqBhD;;OAEG;IACH,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,sBAAsB,GAAG,IAAI;IAiBxE;;OAEG;IACH,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,sBAAsB;IA2GvF;;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;IAsC9C;;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;IAqLjC;;OAEG;YACW,uBAAuB;IAmFrC;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAU5B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAY9B;;OAEG;IACH,OAAO,CAAC,WAAW;IAgBnB;;OAEG;IACH,OAAO,CAAC,iBAAiB;CAG1B"}
1
+ {"version":3,"file":"unified-creation-session.d.ts","sourceRoot":"","sources":["../../src/core/unified-creation-session.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAQH,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAIlD,OAAO,EACL,sBAAsB,EACtB,2BAA2B,EAC3B,iCAAiC,EACjC,UAAU,EAIX,MAAM,0BAA0B,CAAC;AAKlC,qBAAa,6BAA6B;IACxC,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,SAAS,CAAsB;gBAE3B,UAAU,EAAE,UAAU,EAAE,SAAS,CAAC,EAAE,mBAAmB;IAKnE;;OAEG;IACH,aAAa,CAAC,IAAI,EAAE,GAAG,GAAG,sBAAsB;IAqBhD;;OAEG;IACH,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,sBAAsB,GAAG,IAAI;IAiBxE;;OAEG;IACH,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,sBAAsB;IA2GvF;;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;IAsC9C;;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;IAqLjC;;OAEG;YACW,uBAAuB;IAmFrC;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAU5B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAY9B;;OAEG;IACH,OAAO,CAAC,WAAW;IAgBnB;;OAEG;IACH,OAAO,CAAC,iBAAiB;CAG1B"}
@@ -48,7 +48,6 @@ const session_utils_1 = require("./session-utils");
48
48
  const shared_prompt_loader_1 = require("./shared-prompt-loader");
49
49
  const capability_vector_service_1 = require("./capability-vector-service");
50
50
  const discovery_1 = require("./discovery");
51
- const claude_1 = require("./claude");
52
51
  const schema_1 = require("./schema");
53
52
  const version_1 = require("../tools/version");
54
53
  const yaml = __importStar(require("js-yaml"));
@@ -335,18 +334,18 @@ class UnifiedCreationSessionManager {
335
334
  * Generate trigger expansion using internal AI
336
335
  */
337
336
  async generateInternalTriggerExpansion(initialTriggers, description) {
338
- const apiKey = process.env.ANTHROPIC_API_KEY;
339
- if (!apiKey || apiKey === 'test-key') {
340
- console.warn('ANTHROPIC_API_KEY not available for trigger expansion');
337
+ const { createAIProvider } = require('./ai-provider-factory');
338
+ const aiProvider = createAIProvider();
339
+ if (!aiProvider.isInitialized()) {
340
+ console.warn('AI provider not available for trigger expansion');
341
341
  return [];
342
342
  }
343
- const claudeIntegration = new claude_1.ClaudeIntegration(apiKey);
344
343
  const prompt = (0, shared_prompt_loader_1.loadPrompt)('infrastructure-trigger-expansion', {
345
344
  initialTriggers: initialTriggers.join(', '),
346
345
  description
347
346
  });
348
347
  try {
349
- const response = await claudeIntegration.sendMessage(prompt, 'trigger-expansion');
348
+ const response = await aiProvider.sendMessage(prompt, 'trigger-expansion');
350
349
  const expandedText = response.content.trim();
351
350
  if (!expandedText || expandedText.toLowerCase().includes('no relevant') || expandedText.toLowerCase().includes('no additional')) {
352
351
  return [];
@@ -354,9 +353,9 @@ class UnifiedCreationSessionManager {
354
353
  // Parse comma-separated response and clean up
355
354
  const expanded = expandedText
356
355
  .split(',')
357
- .map(trigger => trigger.trim())
358
- .filter(trigger => trigger.length > 0)
359
- .filter(trigger => !initialTriggers.some(initial => initial.toLowerCase() === trigger.toLowerCase()));
356
+ .map((trigger) => trigger.trim())
357
+ .filter((trigger) => trigger.length > 0)
358
+ .filter((trigger) => !initialTriggers.some((initial) => initial.toLowerCase() === trigger.toLowerCase()));
360
359
  return expanded;
361
360
  }
362
361
  catch (error) {
@@ -485,7 +484,7 @@ The pattern is now ready to enhance AI recommendations. When users ask for deplo
485
484
  // Create policy intent using the consistent ID generated during kyverno-generation step
486
485
  if (!session.data.policyId) {
487
486
  // In test environment, generate ID if missing (for mocked workflows)
488
- const isTestEnv = process.env.NODE_ENV === 'test' || process.env.ANTHROPIC_API_KEY === 'test-key';
487
+ const isTestEnv = process.env.NODE_ENV === 'test';
489
488
  if (isTestEnv) {
490
489
  session.data.policyId = (0, crypto_1.randomUUID)();
491
490
  }
@@ -733,10 +732,10 @@ The policy intent has been stored in the database. The Kyverno policy was not ap
733
732
  error_details: lastError ? `\n**Attempt**: ${lastError.attempt}\n**Validation Errors**: ${lastError.validationResult.errors.join(', ')}\n**Validation Warnings**: ${lastError.validationResult.warnings.join(', ')}` : 'None - this is the first attempt.'
734
733
  };
735
734
  const prompt = (0, shared_prompt_loader_1.loadPrompt)('kyverno-generation', templateData);
736
- // Call Claude AI internally to generate Kyverno policy
737
- const apiKey = process.env.ANTHROPIC_API_KEY || 'test-key';
738
- const claudeIntegration = new claude_1.ClaudeIntegration(apiKey);
739
- const response = await claudeIntegration.sendMessage(prompt, 'kyverno-generation');
735
+ // Call AI provider internally to generate Kyverno policy
736
+ const { createAIProvider } = require('./ai-provider-factory');
737
+ const aiProvider = createAIProvider();
738
+ const response = await aiProvider.sendMessage(prompt, 'kyverno-generation');
740
739
  // Response should be clean YAML with analysis comments
741
740
  const kyvernoPolicy = response.content.trim();
742
741
  // Save policy to file immediately after generation
@@ -2,7 +2,7 @@
2
2
  * Model Context Protocol (MCP) Interface for DevOps AI Toolkit
3
3
  *
4
4
  * Provides MCP server capabilities that expose DevOps AI Toolkit functionality
5
- * to AI assistants like Claude through standardized protocol
5
+ * to AI assistants through standardized protocol
6
6
  */
7
7
  import { DotAI } from '../core/index';
8
8
  export interface MCPServerConfig {
@@ -3,7 +3,7 @@
3
3
  * Model Context Protocol (MCP) Interface for DevOps AI Toolkit
4
4
  *
5
5
  * Provides MCP server capabilities that expose DevOps AI Toolkit functionality
6
- * to AI assistants like Claude through standardized protocol
6
+ * to AI assistants through standardized protocol
7
7
  */
8
8
  Object.defineProperty(exports, "__esModule", { value: true });
9
9
  exports.MCPServer = void 0;
@@ -38,7 +38,7 @@ class RestApiRouter {
38
38
  basePath: '/api',
39
39
  version: 'v1',
40
40
  enableCors: true,
41
- requestTimeout: 900000, // 15 minutes for long-running operations like remediation
41
+ requestTimeout: 1800000, // 30 minutes for long-running operations (capability scan with slower AI providers)
42
42
  ...config
43
43
  };
44
44
  // Initialize OpenAPI generator
@@ -3,7 +3,7 @@
3
3
  * MCP Server Entry Point for DevOps AI Toolkit
4
4
  *
5
5
  * This server exposes DevOps AI Toolkit functionality through the Model Context Protocol,
6
- * enabling AI assistants like Claude Code to interact with Kubernetes deployment capabilities.
6
+ * enabling AI assistants to interact with Kubernetes deployment capabilities.
7
7
  */
8
8
  export {};
9
9
  //# sourceMappingURL=server.d.ts.map
@@ -4,7 +4,7 @@
4
4
  * MCP Server Entry Point for DevOps AI Toolkit
5
5
  *
6
6
  * This server exposes DevOps AI Toolkit functionality through the Model Context Protocol,
7
- * enabling AI assistants like Claude Code to interact with Kubernetes deployment capabilities.
7
+ * enabling AI assistants to interact with Kubernetes deployment capabilities.
8
8
  */
9
9
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
10
10
  if (k2 === undefined) k2 = k;
@@ -92,7 +92,7 @@ async function main() {
92
92
  process.stderr.write(`FATAL: Session directory validation failed: ${error}\n`);
93
93
  process.exit(1);
94
94
  }
95
- // Initialize DotAI - it will read KUBECONFIG and ANTHROPIC_API_KEY from environment
95
+ // Initialize DotAI - it will read KUBECONFIG and AI provider configuration from environment
96
96
  const dotAI = new index_js_1.DotAI();
97
97
  // Initialize without cluster connection (lazy connection)
98
98
  process.stderr.write('Initializing DevOps AI Toolkit...\n');
@@ -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;AAGxB,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAQhD,eAAO,MAAM,wBAAwB,mBAAmB,CAAC;AACzD,eAAO,MAAM,+BAA+B,8HAA4H,CAAC;AAGzK,eAAO,MAAM,gCAAgC;;;;CAI5C,CAAC;AAgiBF;;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,CAAA;CAAE,EAC7G,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,CAqUxD"}
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;AAQhD,eAAO,MAAM,wBAAwB,mBAAmB,CAAC;AACzD,eAAO,MAAM,+BAA+B,8HAA4H,CAAC;AAGzK,eAAO,MAAM,gCAAgC;;;;CAI5C,CAAC;AAgiBF;;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,CAAA;CAAE,EAC7G,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,CAqUxD"}
@@ -40,7 +40,6 @@ exports.ANSWERQUESTION_TOOL_INPUT_SCHEMA = exports.ANSWERQUESTION_TOOL_DESCRIPTI
40
40
  exports.handleAnswerQuestionTool = handleAnswerQuestionTool;
41
41
  const zod_1 = require("zod");
42
42
  const error_handling_1 = require("../core/error-handling");
43
- const claude_1 = require("../core/claude");
44
43
  const fs = __importStar(require("fs"));
45
44
  const path = __importStar(require("path"));
46
45
  const shared_prompt_loader_1 = require("../core/shared-prompt-loader");
@@ -370,15 +369,14 @@ async function analyzeResourceNeeds(currentSolution, openResponse, context) {
370
369
  .replace('{current_solution}', JSON.stringify(currentSolution, null, 2))
371
370
  .replace('{user_request}', openResponse)
372
371
  .replace('{available_resource_types}', JSON.stringify(availableResourceTypes, null, 2));
373
- // Initialize Claude integration
374
- const apiKey = process.env.ANTHROPIC_API_KEY || 'test-key';
375
- const claudeIntegration = new claude_1.ClaudeIntegration(apiKey);
372
+ // Get AI provider from context
373
+ const aiProvider = context.dotAI.ai;
376
374
  context.logger.info('Analyzing resource needs for open question', {
377
375
  openResponse,
378
376
  availableResourceCount: availableResourceTypes.length
379
377
  });
380
378
  try {
381
- const response = await claudeIntegration.sendMessage(analysisPrompt);
379
+ const response = await aiProvider.sendMessage(analysisPrompt);
382
380
  const analysisResult = parseEnhancementResponse(response.content);
383
381
  // Check for capability gap and throw specific error
384
382
  if (analysisResult.approach === 'capability_gap') {
@@ -411,7 +409,7 @@ async function applySolutionEnhancement(solution, openResponse, analysisResult,
411
409
  approach: analysisResult.approach,
412
410
  reasoning: analysisResult.reasoning
413
411
  });
414
- return autoPopulateQuestions(solution, openResponse, analysisResult);
412
+ return autoPopulateQuestions(solution, openResponse, analysisResult, context);
415
413
  }
416
414
  if (analysisResult.approach === 'add_resources') {
417
415
  // Add new resources and their questions
@@ -427,16 +425,16 @@ async function applySolutionEnhancement(solution, openResponse, analysisResult,
427
425
  /**
428
426
  * Auto-populate existing questions based on user requirements
429
427
  */
430
- async function autoPopulateQuestions(solution, openResponse, analysisResult) {
428
+ async function autoPopulateQuestions(solution, openResponse, analysisResult, context) {
431
429
  const template = (0, shared_prompt_loader_1.loadPrompt)('solution-enhancement');
432
430
  const enhancementPrompt = template
433
431
  .replace('{current_solution}', JSON.stringify(solution, null, 2))
434
432
  .replace('{detailed_schemas}', JSON.stringify(solution.schemas || {}, null, 2))
435
433
  .replace('{analysis_result}', JSON.stringify(analysisResult, null, 2))
436
434
  .replace('{open_response}', openResponse);
437
- const apiKey = process.env.ANTHROPIC_API_KEY || 'test-key';
438
- const claudeIntegration = new claude_1.ClaudeIntegration(apiKey);
439
- const response = await claudeIntegration.sendMessage(enhancementPrompt);
435
+ // Get AI provider from context
436
+ const aiProvider = context.dotAI.ai;
437
+ const response = await aiProvider.sendMessage(enhancementPrompt);
440
438
  const enhancementData = parseEnhancementResponse(response.content);
441
439
  if (enhancementData.enhancedSolution) {
442
440
  return enhancementData.enhancedSolution;
@@ -101,7 +101,7 @@ async function handleBuildPlatformTool(args, dotAI, logger, requestId) {
101
101
  // Phase 2: Handle stage: 'list' - discover all operations
102
102
  if (stage === 'list') {
103
103
  logger.info('Discovering available operations', { requestId });
104
- const operations = await (0, platform_operations_1.discoverOperations)(dotAI.claude, logger);
104
+ const operations = await (0, platform_operations_1.discoverOperations)(dotAI.ai, logger);
105
105
  const result = {
106
106
  success: true,
107
107
  operations,
@@ -171,9 +171,9 @@ async function handleBuildPlatformTool(args, dotAI, logger, requestId) {
171
171
  intent
172
172
  });
173
173
  // Discover operations for intent mapping
174
- const operations = await (0, platform_operations_1.discoverOperations)(dotAI.claude, logger);
174
+ const operations = await (0, platform_operations_1.discoverOperations)(dotAI.ai, logger);
175
175
  // Map intent to operation using AI
176
- const mapping = await (0, platform_operations_1.mapIntentToOperation)(intent, operations, dotAI.claude, logger);
176
+ const mapping = await (0, platform_operations_1.mapIntentToOperation)(intent, operations, dotAI.ai, logger);
177
177
  // Handle no match case
178
178
  if (!mapping.matched) {
179
179
  logger.info('No matching operation found for intent', {
@@ -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;AAGxB,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAWhD,eAAO,MAAM,2BAA2B,sBAAsB,CAAC;AAC/D,eAAO,MAAM,kCAAkC,+IAA+I,CAAC;AAG/L,eAAO,MAAM,mCAAmC;;CAE/C,CAAC;AAgSF;;GAEG;AACH,wBAAsB,2BAA2B,CAC/C,IAAI,EAAE;IAAE,UAAU,EAAE,MAAM,CAAA;CAAE,EAC5B,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,CAoMxD"}
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;AAWhD,eAAO,MAAM,2BAA2B,sBAAsB,CAAC;AAC/D,eAAO,MAAM,kCAAkC,+IAA+I,CAAC;AAG/L,eAAO,MAAM,mCAAmC;;CAE/C,CAAC;AA+RF;;GAEG;AACH,wBAAsB,2BAA2B,CAC/C,IAAI,EAAE;IAAE,UAAU,EAAE,MAAM,CAAA;CAAE,EAC5B,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,CAqMxD"}
@@ -40,7 +40,6 @@ exports.GENERATEMANIFESTS_TOOL_INPUT_SCHEMA = exports.GENERATEMANIFESTS_TOOL_DES
40
40
  exports.handleGenerateManifestsTool = handleGenerateManifestsTool;
41
41
  const zod_1 = require("zod");
42
42
  const error_handling_1 = require("../core/error-handling");
43
- const claude_1 = require("../core/claude");
44
43
  const cluster_utils_1 = require("../core/cluster-utils");
45
44
  const schema_1 = require("../core/schema");
46
45
  const fs = __importStar(require("fs"));
@@ -178,7 +177,7 @@ async function validateManifests(yamlPath) {
178
177
  return await validator.validateManifest(yamlPath, { dryRunMode: 'server' });
179
178
  }
180
179
  /**
181
- * Generate manifests using AI with Claude integration
180
+ * Generate manifests using AI provider
182
181
  */
183
182
  async function generateManifestsWithAI(solution, dotAI, logger, errorContext, dotAiLabels) {
184
183
  // Load prompt template
@@ -214,11 +213,10 @@ ${errorContext.previousManifests}
214
213
  hasErrorContext: !!errorContext,
215
214
  solutionId: solution.solutionId
216
215
  });
217
- // Initialize Claude integration
218
- const apiKey = process.env.ANTHROPIC_API_KEY || 'test-key';
219
- const claudeIntegration = new claude_1.ClaudeIntegration(apiKey);
220
- // Send prompt to Claude
221
- const response = await claudeIntegration.sendMessage(aiPrompt);
216
+ // Get AI provider from dotAI
217
+ const aiProvider = dotAI.ai;
218
+ // Send prompt to AI
219
+ const response = await aiProvider.sendMessage(aiPrompt);
222
220
  // Extract YAML content from response
223
221
  let manifestContent = response.content;
224
222
  // Try to extract YAML from code blocks if wrapped
@@ -401,9 +399,10 @@ async function handleGenerateManifestsTool(args, dotAI, logger, requestId) {
401
399
  };
402
400
  }
403
401
  // Validation failed, prepare error context for next attempt
402
+ // Only pass AI-generated manifests (not ConfigMap) to avoid duplicate ConfigMaps on retry
404
403
  lastError = {
405
404
  attempt,
406
- previousManifests: manifests,
405
+ previousManifests: aiManifests,
407
406
  validationResult: validation
408
407
  };
409
408
  logger.warn('Manifest validation failed', {
@@ -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;AAchD,eAAO,MAAM,6BAA6B,kBAAkB,CAAC;AAC7D,eAAO,MAAM,oCAAoC,+jBAAyjB,CAAC;AAG3mB,eAAO,MAAM,qCAAqC;;;;;;;;;;;;;;;;;;;;;;;CA2BjD,CAAC;AAujBF;;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;;;;;;;;;;;;;;;;;;;;;;;CA2BjD,CAAC;AAujBF;;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"}
@@ -54,6 +54,7 @@ const policy_operations_1 = require("../core/policy-operations");
54
54
  const pattern_operations_1 = require("../core/pattern-operations");
55
55
  const capability_operations_1 = require("../core/capability-operations");
56
56
  const capability_scan_workflow_1 = require("../core/capability-scan-workflow");
57
+ const crypto_1 = require("crypto");
57
58
  const fs = __importStar(require("fs"));
58
59
  const path = __importStar(require("path"));
59
60
  // Tool metadata for MCP registration
@@ -302,8 +303,8 @@ function getOrCreateCapabilitySession(sessionId, args, logger, requestId) {
302
303
  return existing;
303
304
  }
304
305
  }
305
- // Create new session
306
- const newSessionId = sessionId || `cap-scan-${Date.now()}`;
306
+ // Create new session with unique ID (timestamp + UUID for concurrent request safety)
307
+ const newSessionId = sessionId || `cap-scan-${Date.now()}-${(0, crypto_1.randomUUID)().substring(0, 8)}`;
307
308
  const session = {
308
309
  sessionId: newSessionId,
309
310
  currentStep: 'resource-selection',
@@ -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;AAYhD,eAAO,MAAM,mBAAmB,cAAc,CAAC;AAC/C,eAAO,MAAM,0BAA0B,iRAAiR,CAAC;AAGzT,eAAO,MAAM,2BAA2B;;;;;;;CAUvC,CAAC;AA2EF;;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,CAgSxD"}
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;AAahD,eAAO,MAAM,mBAAmB,cAAc,CAAC;AAC/C,eAAO,MAAM,0BAA0B,iRAAiR,CAAC;AAGzT,eAAO,MAAM,2BAA2B;;;;;;;CAUvC,CAAC;AAqHF;;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,CA4QxD"}
@@ -41,7 +41,6 @@ exports.handleRecommendTool = handleRecommendTool;
41
41
  const zod_1 = require("zod");
42
42
  const error_handling_1 = require("../core/error-handling");
43
43
  const schema_1 = require("../core/schema");
44
- const claude_1 = require("../core/claude");
45
44
  const cluster_utils_1 = require("../core/cluster-utils");
46
45
  const fs = __importStar(require("fs"));
47
46
  const path = __importStar(require("path"));
@@ -51,6 +50,7 @@ const choose_solution_1 = require("./choose-solution");
51
50
  const answer_question_1 = require("./answer-question");
52
51
  const generate_manifests_1 = require("./generate-manifests");
53
52
  const deploy_manifests_1 = require("./deploy-manifests");
53
+ const shared_prompt_loader_1 = require("../core/shared-prompt-loader");
54
54
  // Tool metadata for direct MCP registration
55
55
  exports.RECOMMEND_TOOL_NAME = 'recommend';
56
56
  exports.RECOMMEND_TOOL_DESCRIPTION = 'Deploy, create, setup, install, or run applications, infrastructure, and services on Kubernetes with AI recommendations. Describe what you want to deploy. Does NOT handle policy creation, organizational patterns, or resource capabilities - use manageOrgData for those.';
@@ -68,28 +68,62 @@ exports.RECOMMEND_TOOL_INPUT_SCHEMA = {
68
68
  };
69
69
  /**
70
70
  * Analyze intent for clarification opportunities using AI
71
+ *
72
+ * @param intent User's deployment intent
73
+ * @param aiProvider AI provider instance to use for analysis
74
+ * @param logger Logger for error reporting
75
+ * @param organizationalPatterns Optional organizational patterns context
76
+ * @returns Analysis result with clarification opportunities
71
77
  */
72
- async function analyzeIntentForClarification(intent, claudeIntegration, logger) {
78
+ async function analyzeIntentForClarification(intent, aiProvider, logger, organizationalPatterns = '') {
73
79
  try {
74
- // Use the Claude service method for intent analysis
75
- const analysisResult = await claudeIntegration.analyzeIntentForClarification(intent);
80
+ // Load intent analysis prompt template
81
+ const analysisPrompt = (0, shared_prompt_loader_1.loadPrompt)('intent-analysis', {
82
+ intent,
83
+ organizational_patterns: organizationalPatterns || 'No specific organizational patterns available'
84
+ });
85
+ // Send to AI for analysis
86
+ const response = await aiProvider.sendMessage(analysisPrompt, 'intent-analysis');
87
+ // Parse JSON response with robust error handling
88
+ let jsonContent = response.content;
89
+ // Try to find JSON object wrapped in code blocks
90
+ const codeBlockMatch = response.content.match(/```(?:json)?\s*(\{[\s\S]*?\})\s*```/);
91
+ if (codeBlockMatch) {
92
+ jsonContent = codeBlockMatch[1];
93
+ }
94
+ else {
95
+ // Try to find JSON object that starts with { and find the matching closing }
96
+ const jsonMatch = response.content.match(/\{[\s\S]*\}/);
97
+ if (jsonMatch) {
98
+ jsonContent = jsonMatch[0];
99
+ }
100
+ }
101
+ // Parse the JSON
102
+ const analysisResult = JSON.parse(jsonContent);
103
+ // Validate the response structure
104
+ if (!analysisResult.clarificationOpportunities || !Array.isArray(analysisResult.clarificationOpportunities)) {
105
+ throw new Error('Invalid analysis result structure: missing clarificationOpportunities array');
106
+ }
107
+ if (!analysisResult.overallAssessment || !analysisResult.intentQuality) {
108
+ throw new Error('Invalid analysis result structure: missing overallAssessment or intentQuality');
109
+ }
76
110
  return analysisResult;
77
111
  }
78
112
  catch (error) {
79
- logger.warn?.('Intent analysis failed, proceeding without clarification', {
113
+ // If parsing fails or API call fails, return a fallback minimal analysis
114
+ logger.warn?.('Intent analysis failed, returning minimal analysis', {
80
115
  error: error instanceof Error ? error.message : String(error)
81
116
  });
82
- // Return minimal analysis that indicates no clarification available
83
117
  return {
84
118
  clarificationOpportunities: [],
85
119
  overallAssessment: {
86
120
  enhancementPotential: 'LOW',
87
121
  primaryGaps: [],
88
- recommendedFocus: 'Proceeding with original intent - analysis unavailable'
122
+ recommendedFocus: 'Proceed with original intent - analysis unavailable'
89
123
  },
90
124
  intentQuality: {
91
- currentSpecificity: 'Analysis unavailable',
92
- strengthAreas: ['User provided deployment intent'],
125
+ currentSpecificity: 'Unable to analyze - using original intent',
126
+ strengthAreas: ['User provided clear deployment intent'],
93
127
  improvementAreas: []
94
128
  }
95
129
  };
@@ -161,20 +195,7 @@ async function handleRecommendTool(args, dotAI, logger, requestId) {
161
195
  // Default: recommend stage (original recommend logic)
162
196
  // Input validation is handled automatically by MCP SDK with Zod schema
163
197
  // args are already validated and typed when we reach this point
164
- // Check for Claude API key
165
- const claudeApiKey = dotAI.getAnthropicApiKey();
166
- if (!claudeApiKey) {
167
- throw error_handling_1.ErrorHandler.createError(error_handling_1.ErrorCategory.AI_SERVICE, error_handling_1.ErrorSeverity.HIGH, 'ANTHROPIC_API_KEY environment variable must be set for AI-powered resource recommendations', {
168
- operation: 'api_key_check',
169
- component: 'RecommendTool',
170
- requestId,
171
- suggestedActions: [
172
- 'Set ANTHROPIC_API_KEY environment variable',
173
- 'Verify the API key is valid and active',
174
- 'Check that the API key has sufficient credits'
175
- ]
176
- });
177
- }
198
+ // AI provider is already initialized and validated in dotAI.ai
178
199
  // Validate session directory configuration
179
200
  let sessionDir;
180
201
  try {
@@ -196,14 +217,14 @@ async function handleRecommendTool(args, dotAI, logger, requestId) {
196
217
  logger.info('Starting resource recommendation process', {
197
218
  requestId,
198
219
  intent: args.intent,
199
- hasApiKey: !!claudeApiKey
220
+ hasApiProvider: dotAI.ai.isInitialized()
200
221
  });
201
- // Initialize Claude integration for potential clarification analysis
202
- const claudeIntegration = new claude_1.ClaudeIntegration(claudeApiKey);
222
+ // Initialize AI provider for potential clarification analysis
223
+ const aiProvider = dotAI.ai;
203
224
  // Check if intent clarification is needed (unless final=true)
204
225
  if (!args.final) {
205
226
  logger.debug('Analyzing intent for clarification opportunities', { requestId, intent: args.intent });
206
- const analysisResult = await analyzeIntentForClarification(args.intent, claudeIntegration, logger);
227
+ const analysisResult = await analyzeIntentForClarification(args.intent, aiProvider, logger);
207
228
  // If clarification opportunities exist, return them to the client agent
208
229
  if (analysisResult.clarificationOpportunities &&
209
230
  analysisResult.clarificationOpportunities.length > 0 &&
@@ -250,9 +271,8 @@ async function handleRecommendTool(args, dotAI, logger, requestId) {
250
271
  }
251
272
  // Ensure cluster connectivity before proceeding with recommendations
252
273
  await (0, cluster_utils_1.ensureClusterConnection)(dotAI, logger, requestId, 'RecommendTool');
253
- // Initialize AI-powered ResourceRecommender
254
- const rankingConfig = { claudeApiKey };
255
- const recommender = new schema_1.ResourceRecommender(rankingConfig);
274
+ // Initialize AI-powered ResourceRecommender with provider
275
+ const recommender = new schema_1.ResourceRecommender(dotAI.ai);
256
276
  // Create discovery function
257
277
  const explainResourceFn = async (resource) => {
258
278
  logger.debug(`Explaining resource: ${resource}`, { requestId });
@@ -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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"}