@vfarcic/dot-ai 0.68.0 → 0.70.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.
package/README.md CHANGED
@@ -8,6 +8,7 @@
8
8
 
9
9
  DevOps AI Toolkit is an AI-powered development productivity platform that enhances software development workflows through intelligent automation and AI-driven assistance.
10
10
 
11
+
11
12
  ## Who is this for?
12
13
 
13
14
  ### Kubernetes Deployment
@@ -57,7 +58,7 @@ AI: Gets pre-filtered relevant resources with rich context
57
58
  Result: Finds sqls.devopstoolkit.live as perfect match ✨
58
59
  ```
59
60
 
60
- **Get Started**: See the [Capability Management Guide](./docs/mcp-capability-management-guide.md) for complete workflows including cluster scanning, capability search, and recommendation enhancement.
61
+ **Get Started**: See the [Tools and Features Overview](./docs/mcp-tools-overview.md) for complete guide to all available tools including capability management, deployment recommendations, and workflow integration.
61
62
 
62
63
  ### Documentation Testing & Validation
63
64
  📖 **Automated Testing**: Validates documentation by executing commands and testing examples
@@ -83,6 +84,12 @@ Result: Finds sqls.devopstoolkit.live as perfect match ✨
83
84
 
84
85
  **Setup Required**: See the [MCP Setup Guide](./docs/mcp-setup.md) for complete configuration instructions.
85
86
 
87
+ ## See It In Action
88
+
89
+ [![DevOps AI Toolkit: AI-Powered Application Deployment](https://img.youtube.com/vi/8Yzn-9qQpQI/maxresdefault.jpg)](https://youtu.be/8Yzn-9qQpQI)
90
+
91
+ This video explains the platform engineering problem and demonstrates the Kubernetes deployment recommendation workflow from intent to running applications.
92
+
86
93
  ## Quick Start
87
94
 
88
95
  ### Prerequisites
@@ -108,7 +115,7 @@ Result: Finds sqls.devopstoolkit.live as perfect match ✨
108
115
 
109
116
  **For organizational pattern management:**
110
117
  - **Vector DB service** (Qdrant) for pattern storage and semantic search
111
- - **OpenAI API key** (optional) for semantic pattern matching - falls back to keyword matching if not available
118
+ - **OpenAI API key** (required) for semantic pattern matching and vector operations
112
119
  - See the [Pattern Management Guide](./docs/pattern-management-guide.md) for complete setup
113
120
 
114
121
  ### Installation
@@ -117,58 +124,60 @@ DevOps AI Toolkit is designed to be used through AI development tools via MCP (M
117
124
 
118
125
  ### Usage
119
126
 
120
- **AI Agent Integration (Claude Code Example)**
121
- Perfect for conversational AI-driven workflows:
127
+ **🎯 Recommended: Docker Setup (Complete Stack)**
128
+ Perfect for getting all features working immediately with minimal setup:
122
129
 
123
- 1. **Create `.mcp.json` in your project:**
124
- <!-- dotai-ignore: MCP server binary (dot-ai-mcp) only works through MCP client connections -->
125
- ```json
130
+ 1. **Download Docker Compose configuration:**
131
+ ```bash
132
+ curl -o docker-compose-dot-ai.yaml https://raw.githubusercontent.com/vfarcic/dot-ai/main/docker-compose-dot-ai.yaml
133
+ ```
134
+
135
+ 2. **Set environment variables and create MCP configuration:**
136
+ ```bash
137
+ # Set your API keys
138
+ export ANTHROPIC_API_KEY="sk-ant-api03-your-key-here"
139
+ export OPENAI_API_KEY="sk-proj-your-openai-key-here"
140
+
141
+ # Create MCP configuration for Claude Code
142
+ cat > .mcp.json << 'EOF'
126
143
  {
127
144
  "mcpServers": {
128
145
  "dot-ai": {
129
- "command": "npx",
130
- "args": ["-y", "--package=@vfarcic/dot-ai@latest", "dot-ai-mcp"],
131
- "env": {
132
- "ANTHROPIC_API_KEY": "your_key_here",
133
- "DOT_AI_SESSION_DIR": "./tmp/sessions",
134
- "KUBECONFIG": "~/.kube/config",
135
- "QDRANT_URL": "https://your-cluster.qdrant.io",
136
- "QDRANT_API_KEY": "your_qdrant_key",
137
- "OPENAI_API_KEY": "sk-proj-your_openai_key"
138
- }
146
+ "command": "docker",
147
+ "args": [
148
+ "compose",
149
+ "-f",
150
+ "docker-compose-dot-ai.yaml",
151
+ "--env-file",
152
+ ".env",
153
+ "run",
154
+ "--rm",
155
+ "--remove-orphans",
156
+ "dot-ai"
157
+ ]
139
158
  }
140
159
  }
141
160
  }
161
+ EOF
142
162
  ```
143
163
 
144
- **Note**: Replace all placeholder values (like `your_key_here`, `your-cluster.qdrant.io`) with your actual API keys and service URLs.
164
+ **What you get:**
165
+ - ✅ **Complete Stack**: MCP server + Qdrant vector database included
166
+ - ✅ **All Features Working**: Capability management, pattern storage, semantic search
167
+ - ✅ **No External Dependencies**: Everything runs in containers
168
+ - ✅ **Kubernetes Integration**: Direct kubectl access to your clusters
145
169
 
146
- **Environment Variable Setup**: You can set these variables either:
147
- - **In the `.mcp.json` file** (as shown above in the `env` section), OR
148
- - **As shell environment variables** (e.g., `export ANTHROPIC_API_KEY=your_key_here`), OR
149
- - **A combination of both** (shell variables take precedence)
170
+ **Alternative Methods**: See the [MCP Setup Guide](docs/mcp-setup.md) for NPX (Node.js) and Development setup options.
150
171
 
151
- **Environment Variables:**
152
- - `ANTHROPIC_API_KEY`: Required for AI analysis (Kubernetes deployments, documentation testing, pattern management). Not required for shared prompts library.
153
- - `DOT_AI_SESSION_DIR`: Required session directory (relative paths are relative to where the AI agent is started)
154
- - `KUBECONFIG`: Optional kubeconfig path for Kubernetes deployments (adjust to your actual kubeconfig location, defaults to `~/.kube/config`)
155
- - `QDRANT_URL`: Required for pattern management - Vector DB endpoint
156
- - `QDRANT_API_KEY`: Required for pattern management - Vector DB authentication
157
- - `OPENAI_API_KEY`: Optional for semantic pattern matching - enables enhanced pattern search
158
-
159
- 2. **Start Claude Code with MCP enabled:**
172
+ 3. **Start your MCP client:**
160
173
  ```bash
161
- # Create session directory (relative to the project)
162
- mkdir -p tmp/sessions
163
-
164
- claude
174
+ claude # or your preferred MCP-enabled AI tool
165
175
 
166
- # Verify MCP server connection by running `/mcp` command
167
- # Example: type `/mcp` in Claude Code to see server status
168
- # Expected output shows "dot-ai" server connected with available tools
176
+ # Verify everything works by asking:
177
+ "Show dot-ai status"
169
178
  ```
170
179
 
171
- 3. **Use conversational workflows:**
180
+ 4. **Use conversational workflows:**
172
181
 
173
182
  **Example: Kubernetes Deployment**
174
183
  ```
@@ -270,10 +279,8 @@ Agent: I'm executing the PRD creation workflow. Please describe the feature you
270
279
  ## Documentation
271
280
 
272
281
  ### 🚀 Getting Started
273
- - **[MCP Setup Guide](docs/mcp-setup.md)** - AI tools integration (Claude Code, Cursor)
274
- - **[MCP Recommendation Guide](docs/mcp-recommendation-guide.md)** - Kubernetes deployment recommendations
275
- - **[MCP Documentation Testing Guide](docs/mcp-documentation-testing-guide.md)** - Automated documentation validation
276
- - **[MCP Prompts Guide](docs/mcp-prompts-guide.md)** - Shared prompt library and slash commands
282
+ - **[MCP Setup Guide](docs/mcp-setup.md)** - Complete configuration instructions for AI tools integration
283
+ - **[Tools and Features Overview](docs/mcp-tools-overview.md)** - Comprehensive guide to all available tools and features
277
284
 
278
285
  ## Support
279
286
 
@@ -6,7 +6,7 @@
6
6
  */
7
7
  import { Logger } from '../core/error-handling';
8
8
  export declare const VERSION_TOOL_NAME = "version";
9
- export declare const VERSION_TOOL_DESCRIPTION = "Get comprehensive system status including version information, Vector DB connection status, embedding service capabilities, Anthropic API connectivity, and pattern management health check";
9
+ export declare const VERSION_TOOL_DESCRIPTION = "Get comprehensive system status including version information, Vector DB connection status, embedding service capabilities, Anthropic API connectivity, Kubernetes cluster connectivity, and pattern management health check";
10
10
  export declare const VERSION_TOOL_INPUT_SCHEMA: {};
11
11
  export interface VersionInfo {
12
12
  version: string;
@@ -35,6 +35,17 @@ export interface SystemStatus {
35
35
  keyConfigured: boolean;
36
36
  error?: string;
37
37
  };
38
+ kubernetes: {
39
+ connected: boolean;
40
+ clusterInfo?: {
41
+ endpoint?: string;
42
+ version?: string;
43
+ context?: string;
44
+ };
45
+ kubeconfig: string;
46
+ error?: string;
47
+ errorType?: string;
48
+ };
38
49
  capabilities: {
39
50
  systemReady: boolean;
40
51
  vectorDBHealthy: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/tools/version.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAGhD,eAAO,MAAM,iBAAiB,YAAY,CAAC;AAC3C,eAAO,MAAM,wBAAwB,gMAAgM,CAAC;AACtO,eAAO,MAAM,yBAAyB,IAAK,CAAC;AAE5C,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,WAAW,CAAC;IACrB,QAAQ,EAAE;QACR,SAAS,EAAE,OAAO,CAAC;QACnB,GAAG,EAAE,MAAM,CAAC;QACZ,cAAc,EAAE,MAAM,CAAC;QACvB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,aAAa,CAAC,EAAE,MAAM,CAAC;KACxB,CAAC;IACF,SAAS,EAAE;QACT,SAAS,EAAE,OAAO,CAAC;QACnB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;QACxB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,SAAS,EAAE;QACT,SAAS,EAAE,OAAO,CAAC;QACnB,aAAa,EAAE,OAAO,CAAC;QACvB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,YAAY,EAAE;QACZ,WAAW,EAAE,OAAO,CAAC;QACrB,eAAe,EAAE,OAAO,CAAC;QACzB,oBAAoB,EAAE,OAAO,CAAC;QAC9B,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,aAAa,EAAE,MAAM,CAAC;KACvB,CAAC;CACH;AA+MD;;GAEG;AACH,wBAAgB,cAAc,IAAI,WAAW,CAqB5C;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,GAAG,EACT,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,GAAG,CAAC,CAsEd"}
1
+ {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/tools/version.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAIhD,eAAO,MAAM,iBAAiB,YAAY,CAAC;AAC3C,eAAO,MAAM,wBAAwB,iOAAiO,CAAC;AACvQ,eAAO,MAAM,yBAAyB,IAAK,CAAC;AAE5C,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,WAAW,CAAC;IACrB,QAAQ,EAAE;QACR,SAAS,EAAE,OAAO,CAAC;QACnB,GAAG,EAAE,MAAM,CAAC;QACZ,cAAc,EAAE,MAAM,CAAC;QACvB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,aAAa,CAAC,EAAE,MAAM,CAAC;KACxB,CAAC;IACF,SAAS,EAAE;QACT,SAAS,EAAE,OAAO,CAAC;QACnB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;QACxB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,SAAS,EAAE;QACT,SAAS,EAAE,OAAO,CAAC;QACnB,aAAa,EAAE,OAAO,CAAC;QACvB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,UAAU,EAAE;QACV,SAAS,EAAE,OAAO,CAAC;QACnB,WAAW,CAAC,EAAE;YACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;YAClB,OAAO,CAAC,EAAE,MAAM,CAAC;YACjB,OAAO,CAAC,EAAE,MAAM,CAAC;SAClB,CAAC;QACF,UAAU,EAAE,MAAM,CAAC;QACnB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,YAAY,EAAE;QACZ,WAAW,EAAE,OAAO,CAAC;QACrB,eAAe,EAAE,OAAO,CAAC;QACzB,oBAAoB,EAAE,OAAO,CAAC;QAC9B,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,aAAa,EAAE,MAAM,CAAC;KACvB,CAAC;CACH;AA2QD;;GAEG;AACH,wBAAgB,cAAc,IAAI,WAAW,CAqB5C;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,GAAG,EACT,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,GAAG,CAAC,CA2Ed"}
@@ -45,8 +45,9 @@ exports.handleVersionTool = handleVersionTool;
45
45
  const fs_1 = require("fs");
46
46
  const path_1 = require("path");
47
47
  const index_1 = require("../core/index");
48
+ const kubernetes_utils_1 = require("../core/kubernetes-utils");
48
49
  exports.VERSION_TOOL_NAME = 'version';
49
- exports.VERSION_TOOL_DESCRIPTION = 'Get comprehensive system status including version information, Vector DB connection status, embedding service capabilities, Anthropic API connectivity, and pattern management health check';
50
+ exports.VERSION_TOOL_DESCRIPTION = 'Get comprehensive system status including version information, Vector DB connection status, embedding service capabilities, Anthropic API connectivity, Kubernetes cluster connectivity, and pattern management health check';
50
51
  exports.VERSION_TOOL_INPUT_SCHEMA = {};
51
52
  /**
52
53
  * Test Vector DB connectivity and get status
@@ -195,6 +196,61 @@ async function getCapabilityStatus() {
195
196
  };
196
197
  }
197
198
  }
199
+ /**
200
+ * Test Kubernetes cluster connectivity
201
+ */
202
+ async function getKubernetesStatus() {
203
+ const kubeconfig = process.env.KUBECONFIG || '~/.kube/config';
204
+ try {
205
+ // Test basic connectivity with cluster-info
206
+ const clusterInfo = await (0, kubernetes_utils_1.executeKubectl)(['cluster-info'], {
207
+ kubeconfig: kubeconfig,
208
+ timeout: 10000 // 10 second timeout
209
+ });
210
+ // Parse cluster info to extract endpoint
211
+ const endpointMatch = clusterInfo.match(/Kubernetes control plane is running at (https?:\/\/[^\s]+)/);
212
+ const endpoint = endpointMatch ? endpointMatch[1] : undefined;
213
+ // Get current context
214
+ let context;
215
+ try {
216
+ context = await (0, kubernetes_utils_1.executeKubectl)(['config', 'current-context'], { kubeconfig });
217
+ }
218
+ catch (error) {
219
+ // Context retrieval is optional
220
+ context = undefined;
221
+ }
222
+ // Get server version
223
+ let version;
224
+ try {
225
+ const versionInfo = await (0, kubernetes_utils_1.executeKubectl)(['version', '--short'], { kubeconfig, timeout: 5000 });
226
+ const serverMatch = versionInfo.match(/Server Version: (.+)/);
227
+ version = serverMatch ? serverMatch[1] : undefined;
228
+ }
229
+ catch (error) {
230
+ // Version retrieval is optional
231
+ version = undefined;
232
+ }
233
+ return {
234
+ connected: true,
235
+ clusterInfo: {
236
+ endpoint,
237
+ version,
238
+ context
239
+ },
240
+ kubeconfig
241
+ };
242
+ }
243
+ catch (error) {
244
+ const errorMessage = error instanceof Error ? error.message : String(error);
245
+ const classified = kubernetes_utils_1.ErrorClassifier.classifyError(error);
246
+ return {
247
+ connected: false,
248
+ kubeconfig,
249
+ error: errorMessage,
250
+ errorType: classified.type
251
+ };
252
+ }
253
+ }
198
254
  /**
199
255
  * Test Anthropic API connectivity
200
256
  */
@@ -260,10 +316,11 @@ async function handleVersionTool(args, logger, requestId) {
260
316
  const version = getVersionInfo();
261
317
  // Run all diagnostics in parallel for better performance
262
318
  logger.info('Running system diagnostics...', { requestId });
263
- const [vectorDBStatus, embeddingStatus, anthropicStatus, capabilityStatus] = await Promise.all([
319
+ const [vectorDBStatus, embeddingStatus, anthropicStatus, kubernetesStatus, capabilityStatus] = await Promise.all([
264
320
  getVectorDBStatus(),
265
321
  getEmbeddingStatus(),
266
322
  getAnthropicStatus(),
323
+ getKubernetesStatus(),
267
324
  getCapabilityStatus()
268
325
  ]);
269
326
  const systemStatus = {
@@ -271,6 +328,7 @@ async function handleVersionTool(args, logger, requestId) {
271
328
  vectorDB: vectorDBStatus,
272
329
  embedding: embeddingStatus,
273
330
  anthropic: anthropicStatus,
331
+ kubernetes: kubernetesStatus,
274
332
  capabilities: capabilityStatus
275
333
  };
276
334
  // Log summary of system health
@@ -280,6 +338,7 @@ async function handleVersionTool(args, logger, requestId) {
280
338
  vectorDBConnected: vectorDBStatus.connected,
281
339
  embeddingAvailable: embeddingStatus.available,
282
340
  anthropicConnected: anthropicStatus.connected,
341
+ kubernetesConnected: kubernetesStatus.connected,
283
342
  capabilitySystemReady: capabilityStatus.systemReady
284
343
  });
285
344
  return {
@@ -289,14 +348,16 @@ async function handleVersionTool(args, logger, requestId) {
289
348
  status: 'success',
290
349
  system: systemStatus,
291
350
  summary: {
292
- overall: vectorDBStatus.connected && anthropicStatus.connected && capabilityStatus.systemReady ? 'healthy' : 'degraded',
351
+ overall: vectorDBStatus.connected && anthropicStatus.connected && kubernetesStatus.connected && capabilityStatus.systemReady ? 'healthy' : 'degraded',
293
352
  patternSearch: embeddingStatus.available ? 'semantic+keyword' : 'keyword-only',
294
- capabilityScanning: capabilityStatus.systemReady ? 'ready' : 'not-ready',
353
+ capabilityScanning: capabilityStatus.systemReady && kubernetesStatus.connected ? 'ready' : 'not-ready',
354
+ kubernetesAccess: kubernetesStatus.connected ? 'connected' : 'disconnected',
295
355
  capabilities: [
296
356
  vectorDBStatus.connected ? 'pattern-management' : null,
297
- capabilityStatus.systemReady ? 'capability-scanning' : null,
357
+ capabilityStatus.systemReady && kubernetesStatus.connected ? 'capability-scanning' : null,
298
358
  embeddingStatus.available ? 'semantic-search' : null,
299
- anthropicStatus.connected ? 'ai-recommendations' : null
359
+ anthropicStatus.connected ? 'ai-recommendations' : null,
360
+ kubernetesStatus.connected ? 'kubernetes-integration' : null
300
361
  ].filter(Boolean)
301
362
  },
302
363
  timestamp: new Date().toISOString()
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vfarcic/dot-ai",
3
- "version": "0.68.0",
3
+ "version": "0.70.0",
4
4
  "description": "AI-powered development productivity platform that enhances software development workflows through intelligent automation and AI-driven assistance",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",