@vfarcic/dot-ai 0.69.0 → 0.71.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 +49 -43
- package/dist/tools/version.d.ts +12 -1
- package/dist/tools/version.d.ts.map +1 -1
- package/dist/tools/version.js +67 -6
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -58,7 +58,7 @@ AI: Gets pre-filtered relevant resources with rich context
|
|
|
58
58
|
Result: Finds sqls.devopstoolkit.live as perfect match ✨
|
|
59
59
|
```
|
|
60
60
|
|
|
61
|
-
**Get Started**: See the [
|
|
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.
|
|
62
62
|
|
|
63
63
|
### Documentation Testing & Validation
|
|
64
64
|
📖 **Automated Testing**: Validates documentation by executing commands and testing examples
|
|
@@ -84,6 +84,12 @@ Result: Finds sqls.devopstoolkit.live as perfect match ✨
|
|
|
84
84
|
|
|
85
85
|
**Setup Required**: See the [MCP Setup Guide](./docs/mcp-setup.md) for complete configuration instructions.
|
|
86
86
|
|
|
87
|
+
## See It In Action
|
|
88
|
+
|
|
89
|
+
[](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
|
+
|
|
87
93
|
## Quick Start
|
|
88
94
|
|
|
89
95
|
### Prerequisites
|
|
@@ -109,7 +115,7 @@ Result: Finds sqls.devopstoolkit.live as perfect match ✨
|
|
|
109
115
|
|
|
110
116
|
**For organizational pattern management:**
|
|
111
117
|
- **Vector DB service** (Qdrant) for pattern storage and semantic search
|
|
112
|
-
- **OpenAI API key** (
|
|
118
|
+
- **OpenAI API key** (required) for semantic pattern matching and vector operations
|
|
113
119
|
- See the [Pattern Management Guide](./docs/pattern-management-guide.md) for complete setup
|
|
114
120
|
|
|
115
121
|
### Installation
|
|
@@ -118,58 +124,60 @@ DevOps AI Toolkit is designed to be used through AI development tools via MCP (M
|
|
|
118
124
|
|
|
119
125
|
### Usage
|
|
120
126
|
|
|
121
|
-
|
|
122
|
-
Perfect for
|
|
127
|
+
**🎯 Recommended: Docker Setup (Complete Stack)**
|
|
128
|
+
Perfect for getting all features working immediately with minimal setup:
|
|
129
|
+
|
|
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"
|
|
123
140
|
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
```json
|
|
141
|
+
# Create MCP configuration for Claude Code
|
|
142
|
+
cat > .mcp.json << 'EOF'
|
|
127
143
|
{
|
|
128
144
|
"mcpServers": {
|
|
129
145
|
"dot-ai": {
|
|
130
|
-
"command": "
|
|
131
|
-
"args": [
|
|
132
|
-
|
|
133
|
-
"
|
|
134
|
-
"
|
|
135
|
-
"
|
|
136
|
-
"
|
|
137
|
-
"
|
|
138
|
-
"
|
|
139
|
-
|
|
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
|
+
]
|
|
140
158
|
}
|
|
141
159
|
}
|
|
142
160
|
}
|
|
161
|
+
EOF
|
|
143
162
|
```
|
|
144
163
|
|
|
145
|
-
**
|
|
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
|
|
146
169
|
|
|
147
|
-
**
|
|
148
|
-
- **In the `.mcp.json` file** (as shown above in the `env` section), OR
|
|
149
|
-
- **As shell environment variables** (e.g., `export ANTHROPIC_API_KEY=your_key_here`), OR
|
|
150
|
-
- **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.
|
|
151
171
|
|
|
152
|
-
**
|
|
153
|
-
- `ANTHROPIC_API_KEY`: Required for AI analysis (Kubernetes deployments, documentation testing, pattern management). Not required for shared prompts library.
|
|
154
|
-
- `DOT_AI_SESSION_DIR`: Required session directory (relative paths are relative to where the AI agent is started)
|
|
155
|
-
- `KUBECONFIG`: Optional kubeconfig path for Kubernetes deployments (adjust to your actual kubeconfig location, defaults to `~/.kube/config`)
|
|
156
|
-
- `QDRANT_URL`: Required for pattern management - Vector DB endpoint
|
|
157
|
-
- `QDRANT_API_KEY`: Required for pattern management - Vector DB authentication
|
|
158
|
-
- `OPENAI_API_KEY`: Optional for semantic pattern matching - enables enhanced pattern search
|
|
159
|
-
|
|
160
|
-
2. **Start Claude Code with MCP enabled:**
|
|
172
|
+
3. **Start your MCP client:**
|
|
161
173
|
```bash
|
|
162
|
-
#
|
|
163
|
-
mkdir -p tmp/sessions
|
|
164
|
-
|
|
165
|
-
claude
|
|
174
|
+
claude # or your preferred MCP-enabled AI tool
|
|
166
175
|
|
|
167
|
-
# Verify
|
|
168
|
-
|
|
169
|
-
# Expected output shows "dot-ai" server connected with available tools
|
|
176
|
+
# Verify everything works by asking:
|
|
177
|
+
"Show dot-ai status"
|
|
170
178
|
```
|
|
171
179
|
|
|
172
|
-
|
|
180
|
+
4. **Use conversational workflows:**
|
|
173
181
|
|
|
174
182
|
**Example: Kubernetes Deployment**
|
|
175
183
|
```
|
|
@@ -271,10 +279,8 @@ Agent: I'm executing the PRD creation workflow. Please describe the feature you
|
|
|
271
279
|
## Documentation
|
|
272
280
|
|
|
273
281
|
### 🚀 Getting Started
|
|
274
|
-
- **[MCP Setup Guide](docs/mcp-setup.md)** - AI tools integration
|
|
275
|
-
- **[
|
|
276
|
-
- **[MCP Documentation Testing Guide](docs/mcp-documentation-testing-guide.md)** - Automated documentation validation
|
|
277
|
-
- **[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
|
|
278
284
|
|
|
279
285
|
## Support
|
|
280
286
|
|
package/dist/tools/version.d.ts
CHANGED
|
@@ -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;
|
|
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"}
|
package/dist/tools/version.js
CHANGED
|
@@ -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.
|
|
3
|
+
"version": "0.71.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",
|