UNPKG

@vfarcic/dot-ai

Version:

Universal Kubernetes application deployment agent with CLI and MCP interfaces

162 lines 4.36 kB
/** * Kubernetes Discovery Module * * Handles cluster connection, resource discovery, and capability detection */ import { KubectlConfig } from './kubernetes-utils'; export interface ClusterInfo { type: string; version: string; capabilities: string[]; } export interface ResourceMap { resources: EnhancedResource[]; custom: EnhancedCRD[]; } export interface CRD { name: string; group: string; version: string; schema: any; } export interface EnhancedCRD { name: string; group: string; version: string; kind: string; scope: 'Namespaced' | 'Cluster'; versions: Array<{ name: string; served: boolean; storage: boolean; schema?: any; }>; schema?: any; } export interface EnhancedResource { name: string; namespaced: boolean; kind: string; shortNames: string[]; apiVersion: string; group: string; } export interface ResourceExplanation { kind: string; version: string; group: string; description: string; fields: Array<{ name: string; type: string; description: string; required: boolean; }>; } export interface ClusterFingerprint { version: string; platform: string; nodeCount: number; namespaceCount: number; crdCount: number; capabilities: string[]; features: { deployments: number; services: number; pods: number; configMaps: number; secrets: number; }; networking: { cni: string; serviceSubnet: string; podSubnet: string; dnsProvider: string; }; security: { rbacEnabled: boolean; podSecurityPolicy: boolean; networkPolicies: boolean; admissionControllers: string[]; }; storage: { storageClasses: string[]; persistentVolumes: number; csiDrivers: string[]; }; } export interface KubernetesDiscoveryConfig { kubeconfigPath?: string; } export declare class KubernetesDiscovery { private kc; private k8sApi; private connected; private kubeconfigPath; constructor(config?: KubernetesDiscoveryConfig); /** * Resolves kubeconfig path following priority order: * 1. Custom path provided in constructor * 2. KUBECONFIG environment variable (first path if multiple) * 3. Default ~/.kube/config */ private resolveKubeconfigPath; /** * Get the current kubeconfig path being used */ getKubeconfigPath(): string; /** * Set a new kubeconfig path (will require reconnection) */ setKubeconfigPath(newPath: string): void; connect(): Promise<void>; isConnected(): boolean; getClusterInfo(): Promise<ClusterInfo>; private detectClusterType; private detectCapabilities; discoverResources(): Promise<ResourceMap>; /** * Execute kubectl command with proper configuration */ /** * Execute kubectl command with proper configuration * Delegates to shared utility function */ executeKubectl(args: string[], config?: KubectlConfig): Promise<string>; discoverCRDs(options?: { group?: string; }): Promise<EnhancedCRD[]>; discoverCRDDetails(): Promise<CRD[]>; getAPIResources(options?: { group?: string; }): Promise<EnhancedResource[]>; explainResource(resource: string, options?: { field?: string; }): Promise<string>; fingerprintCluster(): Promise<ClusterFingerprint>; private getResourceCounts; private getNetworkingInfo; private getSecurityInfo; private getStorageInfo; private extractSubnet; getResourceSchema(_kind: string, _apiVersion: string): Promise<any>; getNamespaces(): Promise<string[]>; namespaceExists(namespace: string): Promise<boolean>; /** * Discover what capabilities a CRD provides by analyzing related resources */ private discoverCRDCapabilities; /** * Find Compositions associated with this CRD */ private discoverAssociatedCompositions; /** * Analyze what resources a Composition creates */ private analyzeCompositionCapabilities; /** * Build an enhanced description that includes discovered capabilities */ private buildEnhancedDescription; } //# sourceMappingURL=discovery.d.ts.map