UNPKG

@vfarcic/dot-ai

Version:

AI-powered development productivity platform that enhances software development workflows through intelligent automation and AI-driven assistance

168 lines (167 loc) 11.3 kB
"use strict"; /** * Core Intelligence Module * * Shared intelligence for both CLI and MCP interfaces */ Object.defineProperty(exports, "__esModule", { value: true }); exports.invokePluginTool = exports.isPluginInitialized = exports.getPluginManager = exports.initializePluginRegistry = exports.PluginClientError = exports.PluginClient = exports.PluginDiscoveryError = exports.PluginManager = exports.CircuitOpenError = exports.CircuitState = exports.CircuitBreakerFactory = exports.CircuitBreaker = exports.buildAgentDisplayBlock = exports.VercelEmbeddingProvider = exports.EmbeddingService = exports.CapabilityVectorService = exports.PolicyVectorService = exports.PatternVectorService = exports.BaseVectorService = exports.deserializePattern = exports.serializePattern = exports.createPattern = exports.validatePattern = exports.ResourceRecommender = exports.ManifestValidator = exports.SchemaParser = exports.AIProviderFactory = exports.createAIProvider = exports.WorkflowEngine = exports.MemorySystem = exports.KubernetesDiscovery = exports.DotAI = void 0; const discovery_1 = require("./discovery"); const memory_1 = require("./memory"); const workflow_1 = require("./workflow"); const ai_provider_factory_1 = require("./ai-provider-factory"); const schema_1 = require("./schema"); const constants_1 = require("./constants"); class DotAI { config; initialized = false; discovery; memory; workflow; ai; schema; constructor() { this.config = {}; // Initialize modules // PRD #343: KubernetesDiscovery no longer needs kubeconfig - all K8s ops go through plugin this.discovery = new discovery_1.KubernetesDiscovery(); this.memory = new memory_1.MemorySystem(); this.workflow = new workflow_1.WorkflowEngine(); this.ai = (0, ai_provider_factory_1.createAIProvider)(); // Initialize schema components const parser = new schema_1.SchemaParser(); const validator = new schema_1.ManifestValidator(); // ResourceRecommender uses the AI provider directly const ranker = new schema_1.ResourceRecommender(this.ai); this.schema = { parser, validator, ranker, parseResource: async (resourceName) => { // Get raw resource explanation from discovery const explanation = await this.discovery.explainResource(resourceName); // Parse GROUP, KIND, VERSION from kubectl explain output const lines = explanation.split('\n'); const groupLine = lines.find((line) => line.startsWith('GROUP:')); const kindLine = lines.find((line) => line.startsWith('KIND:')); const versionLine = lines.find((line) => line.startsWith('VERSION:')); const group = groupLine ? groupLine.replace('GROUP:', '').trim() : ''; const kind = kindLine ? kindLine.replace('KIND:', '').trim() : resourceName; const version = versionLine ? versionLine.replace('VERSION:', '').trim() : 'v1'; // Build apiVersion from group and version const apiVersion = group ? `${group}/${version}` : version; // Return raw explanation for AI processing return { kind: kind, rawExplanation: explanation, apiVersion: apiVersion, group: group, description: explanation.split('\n').find((line) => line.startsWith('DESCRIPTION:'))?.replace('DESCRIPTION:', '').trim() || '', properties: new Map() // Raw explanation contains all field info for AI }; }, rankResources: async (intent) => { if (!ranker) { throw new Error(constants_1.AI_SERVICE_ERROR_TEMPLATES.RESOURCE_RANKER_UNAVAILABLE('AI-powered ranking')); } // Create discovery function with proper binding const explainResourceFn = async (resource) => await this.discovery.explainResource(resource); return await ranker.findBestSolutions(intent, explainResourceFn); }, generateQuestionsForHelmChart: async (intent, chart, description, interaction_id) => { if (!ranker) { throw new Error(constants_1.AI_SERVICE_ERROR_TEMPLATES.RESOURCE_RANKER_UNAVAILABLE('question generation')); } return await ranker.generateQuestionsForHelmChart(intent, chart, description, interaction_id); }, fetchHelmChartContent: async (chart) => { if (!ranker) { throw new Error(constants_1.AI_SERVICE_ERROR_TEMPLATES.RESOURCE_RANKER_UNAVAILABLE('fetching Helm chart content')); } return await ranker.fetchHelmChartContent(chart); } }; } async initialize() { try { // Initialize all modules // PRD #343: K8s access via plugin - no connect() needed await this.memory.initialize(); await this.workflow.initialize(); this.initialized = true; } catch (error) { this.initialized = false; throw error; } } async initializeWithoutCluster() { try { // Initialize non-cluster modules only await this.memory.initialize(); await this.workflow.initialize(); this.initialized = true; } catch (error) { this.initialized = false; throw error; } } isInitialized() { return this.initialized; } } exports.DotAI = DotAI; // Re-export all modules for convenience var discovery_2 = require("./discovery"); Object.defineProperty(exports, "KubernetesDiscovery", { enumerable: true, get: function () { return discovery_2.KubernetesDiscovery; } }); var memory_2 = require("./memory"); Object.defineProperty(exports, "MemorySystem", { enumerable: true, get: function () { return memory_2.MemorySystem; } }); var workflow_2 = require("./workflow"); Object.defineProperty(exports, "WorkflowEngine", { enumerable: true, get: function () { return workflow_2.WorkflowEngine; } }); var ai_provider_factory_2 = require("./ai-provider-factory"); Object.defineProperty(exports, "createAIProvider", { enumerable: true, get: function () { return ai_provider_factory_2.createAIProvider; } }); Object.defineProperty(exports, "AIProviderFactory", { enumerable: true, get: function () { return ai_provider_factory_2.AIProviderFactory; } }); var schema_2 = require("./schema"); Object.defineProperty(exports, "SchemaParser", { enumerable: true, get: function () { return schema_2.SchemaParser; } }); Object.defineProperty(exports, "ManifestValidator", { enumerable: true, get: function () { return schema_2.ManifestValidator; } }); Object.defineProperty(exports, "ResourceRecommender", { enumerable: true, get: function () { return schema_2.ResourceRecommender; } }); var pattern_operations_1 = require("./pattern-operations"); Object.defineProperty(exports, "validatePattern", { enumerable: true, get: function () { return pattern_operations_1.validatePattern; } }); Object.defineProperty(exports, "createPattern", { enumerable: true, get: function () { return pattern_operations_1.createPattern; } }); Object.defineProperty(exports, "serializePattern", { enumerable: true, get: function () { return pattern_operations_1.serializePattern; } }); Object.defineProperty(exports, "deserializePattern", { enumerable: true, get: function () { return pattern_operations_1.deserializePattern; } }); // Removed obsolete pattern creation types - now using unified creation system var base_vector_service_1 = require("./base-vector-service"); Object.defineProperty(exports, "BaseVectorService", { enumerable: true, get: function () { return base_vector_service_1.BaseVectorService; } }); var pattern_vector_service_1 = require("./pattern-vector-service"); Object.defineProperty(exports, "PatternVectorService", { enumerable: true, get: function () { return pattern_vector_service_1.PatternVectorService; } }); var policy_vector_service_1 = require("./policy-vector-service"); Object.defineProperty(exports, "PolicyVectorService", { enumerable: true, get: function () { return policy_vector_service_1.PolicyVectorService; } }); var capability_vector_service_1 = require("./capability-vector-service"); Object.defineProperty(exports, "CapabilityVectorService", { enumerable: true, get: function () { return capability_vector_service_1.CapabilityVectorService; } }); var embedding_service_1 = require("./embedding-service"); Object.defineProperty(exports, "EmbeddingService", { enumerable: true, get: function () { return embedding_service_1.EmbeddingService; } }); Object.defineProperty(exports, "VercelEmbeddingProvider", { enumerable: true, get: function () { return embedding_service_1.VercelEmbeddingProvider; } }); var agent_display_1 = require("./agent-display"); Object.defineProperty(exports, "buildAgentDisplayBlock", { enumerable: true, get: function () { return agent_display_1.buildAgentDisplayBlock; } }); var circuit_breaker_1 = require("./circuit-breaker"); Object.defineProperty(exports, "CircuitBreaker", { enumerable: true, get: function () { return circuit_breaker_1.CircuitBreaker; } }); Object.defineProperty(exports, "CircuitBreakerFactory", { enumerable: true, get: function () { return circuit_breaker_1.CircuitBreakerFactory; } }); Object.defineProperty(exports, "CircuitState", { enumerable: true, get: function () { return circuit_breaker_1.CircuitState; } }); Object.defineProperty(exports, "CircuitOpenError", { enumerable: true, get: function () { return circuit_breaker_1.CircuitOpenError; } }); // Plugin system (PRD #343, #359) var plugin_manager_1 = require("./plugin-manager"); Object.defineProperty(exports, "PluginManager", { enumerable: true, get: function () { return plugin_manager_1.PluginManager; } }); Object.defineProperty(exports, "PluginDiscoveryError", { enumerable: true, get: function () { return plugin_manager_1.PluginDiscoveryError; } }); var plugin_client_1 = require("./plugin-client"); Object.defineProperty(exports, "PluginClient", { enumerable: true, get: function () { return plugin_client_1.PluginClient; } }); Object.defineProperty(exports, "PluginClientError", { enumerable: true, get: function () { return plugin_client_1.PluginClientError; } }); // Unified plugin registry (PRD #359) var plugin_registry_1 = require("./plugin-registry"); Object.defineProperty(exports, "initializePluginRegistry", { enumerable: true, get: function () { return plugin_registry_1.initializePluginRegistry; } }); Object.defineProperty(exports, "getPluginManager", { enumerable: true, get: function () { return plugin_registry_1.getPluginManager; } }); Object.defineProperty(exports, "isPluginInitialized", { enumerable: true, get: function () { return plugin_registry_1.isPluginInitialized; } }); Object.defineProperty(exports, "invokePluginTool", { enumerable: true, get: function () { return plugin_registry_1.invokePluginTool; } }); // Default export exports.default = DotAI;