@vfarcic/dot-ai 0.1.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 (73) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +203 -0
  3. package/dist/cli.d.ts +3 -0
  4. package/dist/cli.d.ts.map +1 -0
  5. package/dist/cli.js +51 -0
  6. package/dist/core/claude.d.ts +42 -0
  7. package/dist/core/claude.d.ts.map +1 -0
  8. package/dist/core/claude.js +229 -0
  9. package/dist/core/deploy-operation.d.ts +38 -0
  10. package/dist/core/deploy-operation.d.ts.map +1 -0
  11. package/dist/core/deploy-operation.js +101 -0
  12. package/dist/core/discovery.d.ts +162 -0
  13. package/dist/core/discovery.d.ts.map +1 -0
  14. package/dist/core/discovery.js +758 -0
  15. package/dist/core/error-handling.d.ts +167 -0
  16. package/dist/core/error-handling.d.ts.map +1 -0
  17. package/dist/core/error-handling.js +399 -0
  18. package/dist/core/index.d.ts +42 -0
  19. package/dist/core/index.d.ts.map +1 -0
  20. package/dist/core/index.js +123 -0
  21. package/dist/core/kubernetes-utils.d.ts +38 -0
  22. package/dist/core/kubernetes-utils.d.ts.map +1 -0
  23. package/dist/core/kubernetes-utils.js +177 -0
  24. package/dist/core/memory.d.ts +45 -0
  25. package/dist/core/memory.d.ts.map +1 -0
  26. package/dist/core/memory.js +113 -0
  27. package/dist/core/schema.d.ts +187 -0
  28. package/dist/core/schema.d.ts.map +1 -0
  29. package/dist/core/schema.js +655 -0
  30. package/dist/core/session-utils.d.ts +29 -0
  31. package/dist/core/session-utils.d.ts.map +1 -0
  32. package/dist/core/session-utils.js +121 -0
  33. package/dist/core/workflow.d.ts +70 -0
  34. package/dist/core/workflow.d.ts.map +1 -0
  35. package/dist/core/workflow.js +161 -0
  36. package/dist/index.d.ts +15 -0
  37. package/dist/index.d.ts.map +1 -0
  38. package/dist/index.js +32 -0
  39. package/dist/interfaces/cli.d.ts +74 -0
  40. package/dist/interfaces/cli.d.ts.map +1 -0
  41. package/dist/interfaces/cli.js +769 -0
  42. package/dist/interfaces/mcp.d.ts +30 -0
  43. package/dist/interfaces/mcp.d.ts.map +1 -0
  44. package/dist/interfaces/mcp.js +105 -0
  45. package/dist/mcp/server.d.ts +9 -0
  46. package/dist/mcp/server.d.ts.map +1 -0
  47. package/dist/mcp/server.js +151 -0
  48. package/dist/tools/answer-question.d.ts +27 -0
  49. package/dist/tools/answer-question.d.ts.map +1 -0
  50. package/dist/tools/answer-question.js +696 -0
  51. package/dist/tools/choose-solution.d.ts +23 -0
  52. package/dist/tools/choose-solution.d.ts.map +1 -0
  53. package/dist/tools/choose-solution.js +171 -0
  54. package/dist/tools/deploy-manifests.d.ts +25 -0
  55. package/dist/tools/deploy-manifests.d.ts.map +1 -0
  56. package/dist/tools/deploy-manifests.js +74 -0
  57. package/dist/tools/generate-manifests.d.ts +23 -0
  58. package/dist/tools/generate-manifests.d.ts.map +1 -0
  59. package/dist/tools/generate-manifests.js +424 -0
  60. package/dist/tools/index.d.ts +11 -0
  61. package/dist/tools/index.d.ts.map +1 -0
  62. package/dist/tools/index.js +34 -0
  63. package/dist/tools/recommend.d.ts +23 -0
  64. package/dist/tools/recommend.d.ts.map +1 -0
  65. package/dist/tools/recommend.js +332 -0
  66. package/package.json +124 -0
  67. package/prompts/intent-validation.md +65 -0
  68. package/prompts/manifest-generation.md +79 -0
  69. package/prompts/question-generation.md +128 -0
  70. package/prompts/resource-analysis.md +127 -0
  71. package/prompts/resource-selection.md +55 -0
  72. package/prompts/resource-solution-ranking.md +77 -0
  73. package/prompts/solution-enhancement.md +129 -0
@@ -0,0 +1,101 @@
1
+ "use strict";
2
+ /**
3
+ * Deploy Operation - Handles Kubernetes manifest deployment with readiness checking
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.DeployOperation = void 0;
7
+ const promises_1 = require("fs/promises");
8
+ const path_1 = require("path");
9
+ const error_handling_1 = require("./error-handling");
10
+ const kubernetes_utils_1 = require("./kubernetes-utils");
11
+ class DeployOperation {
12
+ kubectlConfig;
13
+ constructor(kubeconfig) {
14
+ this.kubectlConfig = {
15
+ kubeconfig: kubeconfig || process.env.KUBECONFIG
16
+ };
17
+ }
18
+ /**
19
+ * Deploy Kubernetes manifests from generated solution
20
+ */
21
+ async deploy(options) {
22
+ return error_handling_1.ErrorHandler.withErrorHandling(async () => {
23
+ const manifestPath = this.getManifestPath(options);
24
+ // Verify manifest file exists
25
+ await this.verifyManifestExists(manifestPath);
26
+ // Update kubeconfig if provided in options
27
+ const kubectlConfig = {
28
+ ...this.kubectlConfig,
29
+ kubeconfig: options.kubeconfig || this.kubectlConfig.kubeconfig
30
+ };
31
+ // Apply manifests with kubectl
32
+ const kubectlOutput = await this.applyManifests(manifestPath, options.timeout || 30, kubectlConfig);
33
+ return {
34
+ success: true,
35
+ solutionId: options.solutionId,
36
+ manifestPath,
37
+ readinessTimeout: false,
38
+ message: 'Deployment completed successfully',
39
+ kubectlOutput
40
+ };
41
+ }, {
42
+ operation: 'deploy',
43
+ component: 'deploy-operation'
44
+ });
45
+ }
46
+ /**
47
+ * Get the manifest file path for the solution
48
+ */
49
+ getManifestPath(options) {
50
+ const sessionDir = options.sessionDir || process.env.DOT_AI_SESSION_DIR;
51
+ if (!sessionDir) {
52
+ throw new Error('Session directory not configured. Set DOT_AI_SESSION_DIR environment variable or provide sessionDir parameter.');
53
+ }
54
+ return (0, path_1.join)(sessionDir, `${options.solutionId}.yaml`);
55
+ }
56
+ /**
57
+ * Verify that the manifest file exists
58
+ */
59
+ async verifyManifestExists(manifestPath) {
60
+ try {
61
+ await (0, promises_1.access)(manifestPath);
62
+ }
63
+ catch (error) {
64
+ throw new Error(`Manifest file not found: ${manifestPath}`);
65
+ }
66
+ }
67
+ /**
68
+ * Apply manifests using kubectl with readiness checking
69
+ */
70
+ async applyManifests(manifestPath, timeout, kubectlConfig) {
71
+ // First, apply the manifests
72
+ const applyResult = await (0, kubernetes_utils_1.executeKubectl)(['apply', '-f', `"${manifestPath}"`], kubectlConfig);
73
+ // Try to wait for deployments to be ready (ignore failures for other resource types)
74
+ let waitOutput = '';
75
+ try {
76
+ const waitResult = await (0, kubernetes_utils_1.executeKubectl)([
77
+ 'wait',
78
+ '--for=condition=available',
79
+ 'deployments',
80
+ '--all',
81
+ `--timeout=${timeout}s`,
82
+ '--all-namespaces'
83
+ ], {
84
+ ...kubectlConfig,
85
+ timeout: (timeout + 10) * 1000 // Add 10 seconds buffer for kubectl command itself
86
+ });
87
+ waitOutput = `\n\nWait output:\n${waitResult}`;
88
+ }
89
+ catch (waitError) {
90
+ // If no deployments found or wait fails, that's OK for ConfigMaps, Services, etc.
91
+ if (waitError.message && waitError.message.includes('no matching resources found')) {
92
+ waitOutput = '\n\nWait output: No deployments found to wait for (likely ConfigMaps, Services, etc.)';
93
+ }
94
+ else {
95
+ waitOutput = `\n\nWait output: Warning - ${waitError.message}`;
96
+ }
97
+ }
98
+ return `Apply output:\n${applyResult}${waitOutput}`;
99
+ }
100
+ }
101
+ exports.DeployOperation = DeployOperation;
@@ -0,0 +1,162 @@
1
+ /**
2
+ * Kubernetes Discovery Module
3
+ *
4
+ * Handles cluster connection, resource discovery, and capability detection
5
+ */
6
+ import { KubectlConfig } from './kubernetes-utils';
7
+ export interface ClusterInfo {
8
+ type: string;
9
+ version: string;
10
+ capabilities: string[];
11
+ }
12
+ export interface ResourceMap {
13
+ resources: EnhancedResource[];
14
+ custom: EnhancedCRD[];
15
+ }
16
+ export interface CRD {
17
+ name: string;
18
+ group: string;
19
+ version: string;
20
+ schema: any;
21
+ }
22
+ export interface EnhancedCRD {
23
+ name: string;
24
+ group: string;
25
+ version: string;
26
+ kind: string;
27
+ scope: 'Namespaced' | 'Cluster';
28
+ versions: Array<{
29
+ name: string;
30
+ served: boolean;
31
+ storage: boolean;
32
+ schema?: any;
33
+ }>;
34
+ schema?: any;
35
+ }
36
+ export interface EnhancedResource {
37
+ name: string;
38
+ namespaced: boolean;
39
+ kind: string;
40
+ shortNames: string[];
41
+ apiVersion: string;
42
+ group: string;
43
+ }
44
+ export interface ResourceExplanation {
45
+ kind: string;
46
+ version: string;
47
+ group: string;
48
+ description: string;
49
+ fields: Array<{
50
+ name: string;
51
+ type: string;
52
+ description: string;
53
+ required: boolean;
54
+ }>;
55
+ }
56
+ export interface ClusterFingerprint {
57
+ version: string;
58
+ platform: string;
59
+ nodeCount: number;
60
+ namespaceCount: number;
61
+ crdCount: number;
62
+ capabilities: string[];
63
+ features: {
64
+ deployments: number;
65
+ services: number;
66
+ pods: number;
67
+ configMaps: number;
68
+ secrets: number;
69
+ };
70
+ networking: {
71
+ cni: string;
72
+ serviceSubnet: string;
73
+ podSubnet: string;
74
+ dnsProvider: string;
75
+ };
76
+ security: {
77
+ rbacEnabled: boolean;
78
+ podSecurityPolicy: boolean;
79
+ networkPolicies: boolean;
80
+ admissionControllers: string[];
81
+ };
82
+ storage: {
83
+ storageClasses: string[];
84
+ persistentVolumes: number;
85
+ csiDrivers: string[];
86
+ };
87
+ }
88
+ export interface KubernetesDiscoveryConfig {
89
+ kubeconfigPath?: string;
90
+ }
91
+ export declare class KubernetesDiscovery {
92
+ private kc;
93
+ private k8sApi;
94
+ private connected;
95
+ private kubeconfigPath;
96
+ constructor(config?: KubernetesDiscoveryConfig);
97
+ /**
98
+ * Resolves kubeconfig path following priority order:
99
+ * 1. Custom path provided in constructor
100
+ * 2. KUBECONFIG environment variable (first path if multiple)
101
+ * 3. Default ~/.kube/config
102
+ */
103
+ private resolveKubeconfigPath;
104
+ /**
105
+ * Get the current kubeconfig path being used
106
+ */
107
+ getKubeconfigPath(): string;
108
+ /**
109
+ * Set a new kubeconfig path (will require reconnection)
110
+ */
111
+ setKubeconfigPath(newPath: string): void;
112
+ connect(): Promise<void>;
113
+ isConnected(): boolean;
114
+ getClusterInfo(): Promise<ClusterInfo>;
115
+ private detectClusterType;
116
+ private detectCapabilities;
117
+ discoverResources(): Promise<ResourceMap>;
118
+ /**
119
+ * Execute kubectl command with proper configuration
120
+ */
121
+ /**
122
+ * Execute kubectl command with proper configuration
123
+ * Delegates to shared utility function
124
+ */
125
+ executeKubectl(args: string[], config?: KubectlConfig): Promise<string>;
126
+ discoverCRDs(options?: {
127
+ group?: string;
128
+ }): Promise<EnhancedCRD[]>;
129
+ discoverCRDDetails(): Promise<CRD[]>;
130
+ getAPIResources(options?: {
131
+ group?: string;
132
+ }): Promise<EnhancedResource[]>;
133
+ explainResource(resource: string, options?: {
134
+ field?: string;
135
+ }): Promise<string>;
136
+ fingerprintCluster(): Promise<ClusterFingerprint>;
137
+ private getResourceCounts;
138
+ private getNetworkingInfo;
139
+ private getSecurityInfo;
140
+ private getStorageInfo;
141
+ private extractSubnet;
142
+ getResourceSchema(_kind: string, _apiVersion: string): Promise<any>;
143
+ getNamespaces(): Promise<string[]>;
144
+ namespaceExists(namespace: string): Promise<boolean>;
145
+ /**
146
+ * Discover what capabilities a CRD provides by analyzing related resources
147
+ */
148
+ private discoverCRDCapabilities;
149
+ /**
150
+ * Find Compositions associated with this CRD
151
+ */
152
+ private discoverAssociatedCompositions;
153
+ /**
154
+ * Analyze what resources a Composition creates
155
+ */
156
+ private analyzeCompositionCapabilities;
157
+ /**
158
+ * Build an enhanced description that includes discovered capabilities
159
+ */
160
+ private buildEnhancedDescription;
161
+ }
162
+ //# sourceMappingURL=discovery.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"discovery.d.ts","sourceRoot":"","sources":["../../src/core/discovery.ts"],"names":[],"mappings":"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"}