specweave 0.21.1 → 0.21.2
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/package.json +1 -1
- package/dist/locales/de/.gitkeep +0 -0
- package/dist/locales/de/cli.json +0 -108
- package/dist/locales/en/cli.json +0 -287
- package/dist/locales/en/errors.json +0 -7
- package/dist/locales/en/templates.json +0 -6
- package/dist/locales/es/.gitkeep +0 -0
- package/dist/locales/es/cli.json +0 -41
- package/dist/locales/fr/.gitkeep +0 -0
- package/dist/locales/fr/cli.json +0 -108
- package/dist/locales/ja/.gitkeep +0 -0
- package/dist/locales/ja/cli.json +0 -108
- package/dist/locales/ko/.gitkeep +0 -0
- package/dist/locales/ko/cli.json +0 -108
- package/dist/locales/pt/.gitkeep +0 -0
- package/dist/locales/pt/cli.json +0 -108
- package/dist/locales/ru/.gitkeep +0 -0
- package/dist/locales/ru/cli.json +0 -269
- package/dist/locales/zh/.gitkeep +0 -0
- package/dist/locales/zh/cli.json +0 -108
- package/dist/plugins/specweave-ado/lib/enhanced-ado-sync.d.ts +0 -25
- package/dist/plugins/specweave-ado/lib/enhanced-ado-sync.d.ts.map +0 -1
- package/dist/plugins/specweave-ado/lib/enhanced-ado-sync.js +0 -191
- package/dist/plugins/specweave-ado/lib/enhanced-ado-sync.js.map +0 -1
- package/dist/plugins/specweave-kafka/lib/cli/kcat-wrapper.d.ts +0 -57
- package/dist/plugins/specweave-kafka/lib/cli/kcat-wrapper.d.ts.map +0 -1
- package/dist/plugins/specweave-kafka/lib/cli/kcat-wrapper.js +0 -248
- package/dist/plugins/specweave-kafka/lib/cli/kcat-wrapper.js.map +0 -1
- package/dist/plugins/specweave-kafka/lib/cli/types.d.ts +0 -82
- package/dist/plugins/specweave-kafka/lib/cli/types.d.ts.map +0 -1
- package/dist/plugins/specweave-kafka/lib/cli/types.js +0 -13
- package/dist/plugins/specweave-kafka/lib/cli/types.js.map +0 -1
- package/dist/plugins/specweave-kafka/lib/mcp/detector.d.ts +0 -49
- package/dist/plugins/specweave-kafka/lib/mcp/detector.d.ts.map +0 -1
- package/dist/plugins/specweave-kafka/lib/mcp/detector.js +0 -316
- package/dist/plugins/specweave-kafka/lib/mcp/detector.js.map +0 -1
- package/dist/plugins/specweave-kafka/lib/mcp/types.d.ts +0 -70
- package/dist/plugins/specweave-kafka/lib/mcp/types.d.ts.map +0 -1
- package/dist/plugins/specweave-kafka/lib/mcp/types.js +0 -23
- package/dist/plugins/specweave-kafka/lib/mcp/types.js.map +0 -1
- package/dist/plugins/specweave-kafka/lib/utils/partitioning.d.ts +0 -85
- package/dist/plugins/specweave-kafka/lib/utils/partitioning.d.ts.map +0 -1
- package/dist/plugins/specweave-kafka/lib/utils/partitioning.js +0 -281
- package/dist/plugins/specweave-kafka/lib/utils/partitioning.js.map +0 -1
- package/dist/plugins/specweave-kafka/lib/utils/sizing.d.ts +0 -75
- package/dist/plugins/specweave-kafka/lib/utils/sizing.d.ts.map +0 -1
- package/dist/plugins/specweave-kafka/lib/utils/sizing.js +0 -238
- package/dist/plugins/specweave-kafka/lib/utils/sizing.js.map +0 -1
- package/dist/spec-parser.js +0 -629
- package/dist/src/core/sync/spec-content-sync.d.ts +0 -88
- package/dist/src/core/sync/spec-content-sync.d.ts.map +0 -1
- package/dist/src/core/sync/spec-content-sync.js +0 -5
- package/dist/src/core/sync/spec-content-sync.js.map +0 -1
- package/dist/tsconfig.tsbuildinfo +0 -1
- package/plugins/specweave-ado/lib/enhanced-ado-sync.js +0 -170
|
@@ -1,82 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* CLI Tool Types and Interfaces
|
|
3
|
-
*
|
|
4
|
-
* Types for kcat, kcli, kaf, kafkactl wrappers
|
|
5
|
-
*/
|
|
6
|
-
export declare enum CLITool {
|
|
7
|
-
KCAT = "kcat",
|
|
8
|
-
KCLI = "kcli",
|
|
9
|
-
KAF = "kaf",
|
|
10
|
-
KAFKACTL = "kafkactl"
|
|
11
|
-
}
|
|
12
|
-
export interface KcatProduceOptions {
|
|
13
|
-
topic: string;
|
|
14
|
-
brokers: string;
|
|
15
|
-
key?: string;
|
|
16
|
-
partition?: number;
|
|
17
|
-
headers?: Record<string, string>;
|
|
18
|
-
compression?: 'none' | 'gzip' | 'snappy' | 'lz4' | 'zstd';
|
|
19
|
-
acks?: 0 | 1 | 'all';
|
|
20
|
-
}
|
|
21
|
-
export interface KcatConsumeOptions {
|
|
22
|
-
topic: string;
|
|
23
|
-
brokers: string;
|
|
24
|
-
offset?: 'beginning' | 'end' | 'stored' | number;
|
|
25
|
-
partition?: number;
|
|
26
|
-
count?: number;
|
|
27
|
-
format?: 'json' | 'avro' | 'protobuf' | 'string';
|
|
28
|
-
groupId?: string;
|
|
29
|
-
}
|
|
30
|
-
export interface KcatMetadataOptions {
|
|
31
|
-
brokers: string;
|
|
32
|
-
topic?: string;
|
|
33
|
-
}
|
|
34
|
-
export interface KcatQueryOptions {
|
|
35
|
-
brokers: string;
|
|
36
|
-
topic: string;
|
|
37
|
-
partition?: number;
|
|
38
|
-
}
|
|
39
|
-
export interface TopicMetadata {
|
|
40
|
-
name: string;
|
|
41
|
-
partitions: PartitionMetadata[];
|
|
42
|
-
replicationFactor: number;
|
|
43
|
-
configs: Record<string, string>;
|
|
44
|
-
}
|
|
45
|
-
export interface PartitionMetadata {
|
|
46
|
-
id: number;
|
|
47
|
-
leader: number;
|
|
48
|
-
replicas: number[];
|
|
49
|
-
isr: number[];
|
|
50
|
-
earliestOffset: number;
|
|
51
|
-
latestOffset: number;
|
|
52
|
-
}
|
|
53
|
-
export interface BrokerMetadata {
|
|
54
|
-
id: number;
|
|
55
|
-
host: string;
|
|
56
|
-
port: number;
|
|
57
|
-
rack?: string;
|
|
58
|
-
}
|
|
59
|
-
export interface ClusterMetadata {
|
|
60
|
-
brokers: BrokerMetadata[];
|
|
61
|
-
topics: TopicMetadata[];
|
|
62
|
-
clusterId: string;
|
|
63
|
-
controllerId: number;
|
|
64
|
-
}
|
|
65
|
-
export interface ConsumerMessage {
|
|
66
|
-
topic: string;
|
|
67
|
-
partition: number;
|
|
68
|
-
offset: number;
|
|
69
|
-
timestamp: number;
|
|
70
|
-
key?: string;
|
|
71
|
-
value: string;
|
|
72
|
-
headers?: Record<string, string>;
|
|
73
|
-
}
|
|
74
|
-
export interface CLIExecutionResult {
|
|
75
|
-
success: boolean;
|
|
76
|
-
output: string;
|
|
77
|
-
error?: string;
|
|
78
|
-
exitCode: number;
|
|
79
|
-
command: string;
|
|
80
|
-
duration: number;
|
|
81
|
-
}
|
|
82
|
-
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../plugins/specweave-kafka/lib/cli/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,oBAAY,OAAO;IACjB,IAAI,SAAS;IACb,IAAI,SAAS;IACb,GAAG,QAAQ;IACX,QAAQ,aAAa;CACtB;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,GAAG,MAAM,CAAC;IAC1D,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;CACtB;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,WAAW,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;IACjD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,UAAU,GAAG,QAAQ,CAAC;IACjD,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,iBAAiB,EAAE,CAAC;IAChC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACjC;AAED,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,GAAG,EAAE,MAAM,EAAE,CAAC;IACd,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,cAAc,EAAE,CAAC;IAC1B,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;CAClB"}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* CLI Tool Types and Interfaces
|
|
3
|
-
*
|
|
4
|
-
* Types for kcat, kcli, kaf, kafkactl wrappers
|
|
5
|
-
*/
|
|
6
|
-
export var CLITool;
|
|
7
|
-
(function (CLITool) {
|
|
8
|
-
CLITool["KCAT"] = "kcat";
|
|
9
|
-
CLITool["KCLI"] = "kcli";
|
|
10
|
-
CLITool["KAF"] = "kaf";
|
|
11
|
-
CLITool["KAFKACTL"] = "kafkactl";
|
|
12
|
-
})(CLITool || (CLITool = {}));
|
|
13
|
-
//# sourceMappingURL=types.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../plugins/specweave-kafka/lib/cli/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,CAAN,IAAY,OAKX;AALD,WAAY,OAAO;IACjB,wBAAa,CAAA;IACb,wBAAa,CAAA;IACb,sBAAW,CAAA;IACX,gCAAqB,CAAA;AACvB,CAAC,EALW,OAAO,KAAP,OAAO,QAKlB"}
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* MCP Server Detector
|
|
3
|
-
*
|
|
4
|
-
* Auto-detects installed and running MCP servers for Kafka integration.
|
|
5
|
-
* Supports: kanapuli, tuannvm, Joel-hanson, Confluent
|
|
6
|
-
*/
|
|
7
|
-
import { MCPDetectionResult } from './types';
|
|
8
|
-
export declare class MCPServerDetector {
|
|
9
|
-
/**
|
|
10
|
-
* Detect all available MCP servers
|
|
11
|
-
*/
|
|
12
|
-
detectAll(): Promise<MCPDetectionResult>;
|
|
13
|
-
/**
|
|
14
|
-
* Detect kanapuli/mcp-kafka server
|
|
15
|
-
*/
|
|
16
|
-
private detectKanapuli;
|
|
17
|
-
/**
|
|
18
|
-
* Detect tuannvm/kafka-mcp-server (Go implementation)
|
|
19
|
-
*/
|
|
20
|
-
private detectTuannvm;
|
|
21
|
-
/**
|
|
22
|
-
* Detect Joel-hanson/kafka-mcp-server
|
|
23
|
-
*/
|
|
24
|
-
private detectJoelHanson;
|
|
25
|
-
/**
|
|
26
|
-
* Detect Confluent official MCP server
|
|
27
|
-
*/
|
|
28
|
-
private detectConfluent;
|
|
29
|
-
/**
|
|
30
|
-
* Check if process is running
|
|
31
|
-
*/
|
|
32
|
-
private isProcessRunning;
|
|
33
|
-
/**
|
|
34
|
-
* Rank servers by priority (Confluent > tuannvm > kanapuli > Joel-hanson)
|
|
35
|
-
*/
|
|
36
|
-
private rankServers;
|
|
37
|
-
/**
|
|
38
|
-
* Get ranking reason
|
|
39
|
-
*/
|
|
40
|
-
private getRankingReason;
|
|
41
|
-
/**
|
|
42
|
-
* Get capabilities for each MCP server type
|
|
43
|
-
*/
|
|
44
|
-
private getKanapuliCapabilities;
|
|
45
|
-
private getTuannvmCapabilities;
|
|
46
|
-
private getJoelHansonCapabilities;
|
|
47
|
-
private getConfluentCapabilities;
|
|
48
|
-
}
|
|
49
|
-
//# sourceMappingURL=detector.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"detector.d.ts","sourceRoot":"","sources":["../../../../../plugins/specweave-kafka/lib/mcp/detector.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAGL,kBAAkB,EAGnB,MAAM,SAAS,CAAC;AAIjB,qBAAa,iBAAiB;IAC5B;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,kBAAkB,CAAC;IA6B9C;;OAEG;YACW,cAAc;IAyC5B;;OAEG;YACW,aAAa;IA2C3B;;OAEG;YACW,gBAAgB;IAwC9B;;OAEG;YACW,eAAe;IAuC7B;;OAEG;YACW,gBAAgB;IAS9B;;OAEG;IACH,OAAO,CAAC,WAAW;IAiBnB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAexB;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAQ/B,OAAO,CAAC,sBAAsB;IAyB9B,OAAO,CAAC,yBAAyB;IAQjC,OAAO,CAAC,wBAAwB;CA8BjC"}
|
|
@@ -1,316 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* MCP Server Detector
|
|
3
|
-
*
|
|
4
|
-
* Auto-detects installed and running MCP servers for Kafka integration.
|
|
5
|
-
* Supports: kanapuli, tuannvm, Joel-hanson, Confluent
|
|
6
|
-
*/
|
|
7
|
-
import { exec } from 'child_process';
|
|
8
|
-
import { promisify } from 'util';
|
|
9
|
-
import { MCPServerType, AuthMethod } from './types';
|
|
10
|
-
const execAsync = promisify(exec);
|
|
11
|
-
export class MCPServerDetector {
|
|
12
|
-
/**
|
|
13
|
-
* Detect all available MCP servers
|
|
14
|
-
*/
|
|
15
|
-
async detectAll() {
|
|
16
|
-
const servers = [];
|
|
17
|
-
// Check each MCP server type
|
|
18
|
-
const checks = [
|
|
19
|
-
this.detectKanapuli(),
|
|
20
|
-
this.detectTuannvm(),
|
|
21
|
-
this.detectJoelHanson(),
|
|
22
|
-
this.detectConfluent()
|
|
23
|
-
];
|
|
24
|
-
const results = await Promise.allSettled(checks);
|
|
25
|
-
results.forEach((result) => {
|
|
26
|
-
if (result.status === 'fulfilled' && result.value) {
|
|
27
|
-
servers.push(result.value);
|
|
28
|
-
}
|
|
29
|
-
});
|
|
30
|
-
// Rank servers (Confluent > tuannvm > kanapuli > Joel-hanson)
|
|
31
|
-
const recommended = this.rankServers(servers);
|
|
32
|
-
return {
|
|
33
|
-
servers,
|
|
34
|
-
recommended: recommended?.type || null,
|
|
35
|
-
rankingReason: this.getRankingReason(recommended, servers)
|
|
36
|
-
};
|
|
37
|
-
}
|
|
38
|
-
/**
|
|
39
|
-
* Detect kanapuli/mcp-kafka server
|
|
40
|
-
*/
|
|
41
|
-
async detectKanapuli() {
|
|
42
|
-
try {
|
|
43
|
-
// Check if npm package installed
|
|
44
|
-
const { stdout } = await execAsync('npm list -g mcp-kafka --json 2>/dev/null || echo "{}"');
|
|
45
|
-
const packageInfo = JSON.parse(stdout);
|
|
46
|
-
const installed = !!packageInfo.dependencies?.['mcp-kafka'];
|
|
47
|
-
if (!installed) {
|
|
48
|
-
return {
|
|
49
|
-
type: MCPServerType.KANAPULI,
|
|
50
|
-
version: 'unknown',
|
|
51
|
-
installed: false,
|
|
52
|
-
running: false,
|
|
53
|
-
capabilities: this.getKanapuliCapabilities()
|
|
54
|
-
};
|
|
55
|
-
}
|
|
56
|
-
// Check if running (look for process)
|
|
57
|
-
const running = await this.isProcessRunning('mcp-kafka');
|
|
58
|
-
const version = packageInfo.dependencies?.['mcp-kafka']?.version || 'unknown';
|
|
59
|
-
return {
|
|
60
|
-
type: MCPServerType.KANAPULI,
|
|
61
|
-
version,
|
|
62
|
-
installed: true,
|
|
63
|
-
running,
|
|
64
|
-
capabilities: this.getKanapuliCapabilities(),
|
|
65
|
-
connectionDetails: running ? {
|
|
66
|
-
host: 'localhost',
|
|
67
|
-
port: 3000, // Default MCP port
|
|
68
|
-
protocol: 'http',
|
|
69
|
-
healthEndpoint: '/health',
|
|
70
|
-
infoEndpoint: '/info'
|
|
71
|
-
} : undefined
|
|
72
|
-
};
|
|
73
|
-
}
|
|
74
|
-
catch (error) {
|
|
75
|
-
return null;
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
/**
|
|
79
|
-
* Detect tuannvm/kafka-mcp-server (Go implementation)
|
|
80
|
-
*/
|
|
81
|
-
async detectTuannvm() {
|
|
82
|
-
try {
|
|
83
|
-
// Check if binary exists
|
|
84
|
-
const { stdout } = await execAsync('which kafka-mcp-server 2>/dev/null || echo ""');
|
|
85
|
-
const installed = !!stdout.trim();
|
|
86
|
-
if (!installed) {
|
|
87
|
-
return {
|
|
88
|
-
type: MCPServerType.TUANNVM,
|
|
89
|
-
version: 'unknown',
|
|
90
|
-
installed: false,
|
|
91
|
-
running: false,
|
|
92
|
-
capabilities: this.getTuannvmCapabilities()
|
|
93
|
-
};
|
|
94
|
-
}
|
|
95
|
-
// Check if running
|
|
96
|
-
const running = await this.isProcessRunning('kafka-mcp-server');
|
|
97
|
-
// Try to get version
|
|
98
|
-
let version = 'unknown';
|
|
99
|
-
try {
|
|
100
|
-
const { stdout: versionOut } = await execAsync('kafka-mcp-server --version 2>/dev/null');
|
|
101
|
-
version = versionOut.trim();
|
|
102
|
-
}
|
|
103
|
-
catch { }
|
|
104
|
-
return {
|
|
105
|
-
type: MCPServerType.TUANNVM,
|
|
106
|
-
version,
|
|
107
|
-
installed: true,
|
|
108
|
-
running,
|
|
109
|
-
capabilities: this.getTuannvmCapabilities(),
|
|
110
|
-
connectionDetails: running ? {
|
|
111
|
-
host: 'localhost',
|
|
112
|
-
port: 8080, // Default port
|
|
113
|
-
protocol: 'http'
|
|
114
|
-
} : undefined
|
|
115
|
-
};
|
|
116
|
-
}
|
|
117
|
-
catch (error) {
|
|
118
|
-
return null;
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
/**
|
|
122
|
-
* Detect Joel-hanson/kafka-mcp-server
|
|
123
|
-
*/
|
|
124
|
-
async detectJoelHanson() {
|
|
125
|
-
try {
|
|
126
|
-
// Check if Python package installed
|
|
127
|
-
const { stdout } = await execAsync('pip show kafka-mcp-server 2>/dev/null || echo ""');
|
|
128
|
-
const installed = stdout.includes('Name: kafka-mcp-server');
|
|
129
|
-
if (!installed) {
|
|
130
|
-
return {
|
|
131
|
-
type: MCPServerType.JOEL_HANSON,
|
|
132
|
-
version: 'unknown',
|
|
133
|
-
installed: false,
|
|
134
|
-
running: false,
|
|
135
|
-
capabilities: this.getJoelHansonCapabilities()
|
|
136
|
-
};
|
|
137
|
-
}
|
|
138
|
-
// Extract version
|
|
139
|
-
const versionMatch = stdout.match(/Version: ([\d.]+)/);
|
|
140
|
-
const version = versionMatch ? versionMatch[1] : 'unknown';
|
|
141
|
-
// Check if running
|
|
142
|
-
const running = await this.isProcessRunning('kafka-mcp-server');
|
|
143
|
-
return {
|
|
144
|
-
type: MCPServerType.JOEL_HANSON,
|
|
145
|
-
version,
|
|
146
|
-
installed: true,
|
|
147
|
-
running,
|
|
148
|
-
capabilities: this.getJoelHansonCapabilities(),
|
|
149
|
-
connectionDetails: running ? {
|
|
150
|
-
host: 'localhost',
|
|
151
|
-
port: 5000, // Default Python MCP port
|
|
152
|
-
protocol: 'http'
|
|
153
|
-
} : undefined
|
|
154
|
-
};
|
|
155
|
-
}
|
|
156
|
-
catch (error) {
|
|
157
|
-
return null;
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
|
-
/**
|
|
161
|
-
* Detect Confluent official MCP server
|
|
162
|
-
*/
|
|
163
|
-
async detectConfluent() {
|
|
164
|
-
try {
|
|
165
|
-
// Confluent MCP is typically part of Confluent Cloud CLI
|
|
166
|
-
const { stdout } = await execAsync('confluent version 2>/dev/null || echo ""');
|
|
167
|
-
const installed = !!stdout.trim();
|
|
168
|
-
if (!installed) {
|
|
169
|
-
return {
|
|
170
|
-
type: MCPServerType.CONFLUENT,
|
|
171
|
-
version: 'unknown',
|
|
172
|
-
installed: false,
|
|
173
|
-
running: false,
|
|
174
|
-
capabilities: this.getConfluentCapabilities()
|
|
175
|
-
};
|
|
176
|
-
}
|
|
177
|
-
// Extract version
|
|
178
|
-
const versionMatch = stdout.match(/Version:\s+([\d.]+)/);
|
|
179
|
-
const version = versionMatch ? versionMatch[1] : 'unknown';
|
|
180
|
-
// Confluent MCP runs as part of CLI, check if CLI is authenticated
|
|
181
|
-
let running = false;
|
|
182
|
-
try {
|
|
183
|
-
const { stdout: authOut } = await execAsync('confluent auth current 2>/dev/null');
|
|
184
|
-
running = authOut.includes('Logged in as');
|
|
185
|
-
}
|
|
186
|
-
catch { }
|
|
187
|
-
return {
|
|
188
|
-
type: MCPServerType.CONFLUENT,
|
|
189
|
-
version,
|
|
190
|
-
installed: true,
|
|
191
|
-
running,
|
|
192
|
-
capabilities: this.getConfluentCapabilities()
|
|
193
|
-
};
|
|
194
|
-
}
|
|
195
|
-
catch (error) {
|
|
196
|
-
return null;
|
|
197
|
-
}
|
|
198
|
-
}
|
|
199
|
-
/**
|
|
200
|
-
* Check if process is running
|
|
201
|
-
*/
|
|
202
|
-
async isProcessRunning(processName) {
|
|
203
|
-
try {
|
|
204
|
-
const { stdout } = await execAsync(`ps aux | grep "${processName}" | grep -v grep || echo ""`);
|
|
205
|
-
return !!stdout.trim();
|
|
206
|
-
}
|
|
207
|
-
catch {
|
|
208
|
-
return false;
|
|
209
|
-
}
|
|
210
|
-
}
|
|
211
|
-
/**
|
|
212
|
-
* Rank servers by priority (Confluent > tuannvm > kanapuli > Joel-hanson)
|
|
213
|
-
*/
|
|
214
|
-
rankServers(servers) {
|
|
215
|
-
const ranking = [
|
|
216
|
-
MCPServerType.CONFLUENT,
|
|
217
|
-
MCPServerType.TUANNVM,
|
|
218
|
-
MCPServerType.KANAPULI,
|
|
219
|
-
MCPServerType.JOEL_HANSON
|
|
220
|
-
];
|
|
221
|
-
// Find highest-ranked installed server
|
|
222
|
-
for (const type of ranking) {
|
|
223
|
-
const server = servers.find(s => s.type === type && s.installed);
|
|
224
|
-
if (server)
|
|
225
|
-
return server;
|
|
226
|
-
}
|
|
227
|
-
return null;
|
|
228
|
-
}
|
|
229
|
-
/**
|
|
230
|
-
* Get ranking reason
|
|
231
|
-
*/
|
|
232
|
-
getRankingReason(recommended, servers) {
|
|
233
|
-
if (!recommended) {
|
|
234
|
-
return 'No MCP servers installed';
|
|
235
|
-
}
|
|
236
|
-
const reasons = {
|
|
237
|
-
[MCPServerType.CONFLUENT]: 'Confluent official MCP (best features: natural language, Flink SQL)',
|
|
238
|
-
[MCPServerType.TUANNVM]: 'Go implementation (advanced SASL: SCRAM-SHA-256/512)',
|
|
239
|
-
[MCPServerType.KANAPULI]: 'Node.js implementation (basic operations, SASL_PLAINTEXT)',
|
|
240
|
-
[MCPServerType.JOEL_HANSON]: 'Python implementation (Claude Desktop integration)'
|
|
241
|
-
};
|
|
242
|
-
return reasons[recommended.type];
|
|
243
|
-
}
|
|
244
|
-
/**
|
|
245
|
-
* Get capabilities for each MCP server type
|
|
246
|
-
*/
|
|
247
|
-
getKanapuliCapabilities() {
|
|
248
|
-
return {
|
|
249
|
-
authentication: [AuthMethod.SASL_PLAINTEXT, AuthMethod.PLAINTEXT],
|
|
250
|
-
operations: ['produce', 'consume', 'list-topics', 'describe-topic', 'get-offsets'],
|
|
251
|
-
advancedFeatures: []
|
|
252
|
-
};
|
|
253
|
-
}
|
|
254
|
-
getTuannvmCapabilities() {
|
|
255
|
-
return {
|
|
256
|
-
authentication: [
|
|
257
|
-
AuthMethod.SASL_SCRAM_SHA_256,
|
|
258
|
-
AuthMethod.SASL_SCRAM_SHA_512,
|
|
259
|
-
AuthMethod.SASL_PLAINTEXT,
|
|
260
|
-
AuthMethod.SASL_SSL,
|
|
261
|
-
AuthMethod.PLAINTEXT
|
|
262
|
-
],
|
|
263
|
-
operations: [
|
|
264
|
-
'produce',
|
|
265
|
-
'consume',
|
|
266
|
-
'list-topics',
|
|
267
|
-
'create-topic',
|
|
268
|
-
'delete-topic',
|
|
269
|
-
'describe-topic',
|
|
270
|
-
'list-consumer-groups',
|
|
271
|
-
'describe-consumer-group',
|
|
272
|
-
'get-offsets',
|
|
273
|
-
'reset-offsets'
|
|
274
|
-
],
|
|
275
|
-
advancedFeatures: ['consumer-group-management', 'offset-management']
|
|
276
|
-
};
|
|
277
|
-
}
|
|
278
|
-
getJoelHansonCapabilities() {
|
|
279
|
-
return {
|
|
280
|
-
authentication: [AuthMethod.SASL_PLAINTEXT, AuthMethod.PLAINTEXT, AuthMethod.SSL],
|
|
281
|
-
operations: ['produce', 'consume', 'list-topics', 'describe-topic'],
|
|
282
|
-
advancedFeatures: ['claude-desktop-integration']
|
|
283
|
-
};
|
|
284
|
-
}
|
|
285
|
-
getConfluentCapabilities() {
|
|
286
|
-
return {
|
|
287
|
-
authentication: [
|
|
288
|
-
AuthMethod.OAUTH,
|
|
289
|
-
AuthMethod.SASL_SCRAM_SHA_256,
|
|
290
|
-
AuthMethod.SASL_SCRAM_SHA_512,
|
|
291
|
-
AuthMethod.SASL_SSL
|
|
292
|
-
],
|
|
293
|
-
operations: [
|
|
294
|
-
'produce',
|
|
295
|
-
'consume',
|
|
296
|
-
'list-topics',
|
|
297
|
-
'create-topic',
|
|
298
|
-
'delete-topic',
|
|
299
|
-
'describe-topic',
|
|
300
|
-
'list-consumer-groups',
|
|
301
|
-
'describe-consumer-group',
|
|
302
|
-
'schema-registry-operations',
|
|
303
|
-
'ksqldb-query',
|
|
304
|
-
'flink-sql-query'
|
|
305
|
-
],
|
|
306
|
-
advancedFeatures: [
|
|
307
|
-
'natural-language-interface',
|
|
308
|
-
'schema-registry',
|
|
309
|
-
'ksqldb',
|
|
310
|
-
'flink-sql',
|
|
311
|
-
'cloud-managed'
|
|
312
|
-
]
|
|
313
|
-
};
|
|
314
|
-
}
|
|
315
|
-
}
|
|
316
|
-
//# sourceMappingURL=detector.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"detector.js","sourceRoot":"","sources":["../../../../../plugins/specweave-kafka/lib/mcp/detector.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* MCP Server Types and Interfaces
|
|
3
|
-
*
|
|
4
|
-
* Defines types for MCP server detection, configuration, and operations.
|
|
5
|
-
*/
|
|
6
|
-
export declare enum MCPServerType {
|
|
7
|
-
KANAPULI = "kanapuli",
|
|
8
|
-
TUANNVM = "tuannvm",
|
|
9
|
-
JOEL_HANSON = "joel-hanson",
|
|
10
|
-
CONFLUENT = "confluent"
|
|
11
|
-
}
|
|
12
|
-
export interface MCPServerInfo {
|
|
13
|
-
type: MCPServerType;
|
|
14
|
-
version: string;
|
|
15
|
-
installed: boolean;
|
|
16
|
-
running: boolean;
|
|
17
|
-
capabilities: MCPServerCapabilities;
|
|
18
|
-
connectionDetails?: MCPConnectionDetails;
|
|
19
|
-
}
|
|
20
|
-
export interface MCPServerCapabilities {
|
|
21
|
-
authentication: AuthMethod[];
|
|
22
|
-
operations: string[];
|
|
23
|
-
advancedFeatures: string[];
|
|
24
|
-
}
|
|
25
|
-
export declare enum AuthMethod {
|
|
26
|
-
SASL_PLAINTEXT = "SASL_PLAINTEXT",
|
|
27
|
-
SASL_SCRAM_SHA_256 = "SASL/SCRAM-SHA-256",
|
|
28
|
-
SASL_SCRAM_SHA_512 = "SASL/SCRAM-SHA-512",
|
|
29
|
-
SASL_SSL = "SASL_SSL",
|
|
30
|
-
SSL = "SSL",
|
|
31
|
-
PLAINTEXT = "PLAINTEXT",
|
|
32
|
-
OAUTH = "OAUTH"
|
|
33
|
-
}
|
|
34
|
-
export interface MCPConnectionDetails {
|
|
35
|
-
host: string;
|
|
36
|
-
port: number;
|
|
37
|
-
protocol: string;
|
|
38
|
-
healthEndpoint?: string;
|
|
39
|
-
infoEndpoint?: string;
|
|
40
|
-
}
|
|
41
|
-
export interface MCPServerConfig {
|
|
42
|
-
serverType: MCPServerType;
|
|
43
|
-
brokerUrls: string[];
|
|
44
|
-
authentication: {
|
|
45
|
-
mechanism: AuthMethod;
|
|
46
|
-
username?: string;
|
|
47
|
-
password?: string;
|
|
48
|
-
saslMechanism?: string;
|
|
49
|
-
sslCertPath?: string;
|
|
50
|
-
sslKeyPath?: string;
|
|
51
|
-
sslCaPath?: string;
|
|
52
|
-
};
|
|
53
|
-
options?: Record<string, any>;
|
|
54
|
-
}
|
|
55
|
-
export interface MCPDetectionResult {
|
|
56
|
-
servers: MCPServerInfo[];
|
|
57
|
-
recommended: MCPServerType | null;
|
|
58
|
-
rankingReason: string;
|
|
59
|
-
}
|
|
60
|
-
export interface MCPOperationResult {
|
|
61
|
-
success: boolean;
|
|
62
|
-
data?: any;
|
|
63
|
-
error?: string;
|
|
64
|
-
metadata?: {
|
|
65
|
-
serverType: MCPServerType;
|
|
66
|
-
operation: string;
|
|
67
|
-
duration: number;
|
|
68
|
-
};
|
|
69
|
-
}
|
|
70
|
-
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../plugins/specweave-kafka/lib/mcp/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,oBAAY,aAAa;IACvB,QAAQ,aAAa;IACrB,OAAO,YAAY;IACnB,WAAW,gBAAgB;IAC3B,SAAS,cAAc;CACxB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,aAAa,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,qBAAqB,CAAC;IACpC,iBAAiB,CAAC,EAAE,oBAAoB,CAAC;CAC1C;AAED,MAAM,WAAW,qBAAqB;IACpC,cAAc,EAAE,UAAU,EAAE,CAAC;IAC7B,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,gBAAgB,EAAE,MAAM,EAAE,CAAC;CAC5B;AAED,oBAAY,UAAU;IACpB,cAAc,mBAAmB;IACjC,kBAAkB,uBAAuB;IACzC,kBAAkB,uBAAuB;IACzC,QAAQ,aAAa;IACrB,GAAG,QAAQ;IACX,SAAS,cAAc;IACvB,KAAK,UAAU;CAChB;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,aAAa,CAAC;IAC1B,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,cAAc,EAAE;QACd,SAAS,EAAE,UAAU,CAAC;QACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC/B;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,aAAa,EAAE,CAAC;IACzB,WAAW,EAAE,aAAa,GAAG,IAAI,CAAC;IAClC,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,GAAG,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE;QACT,UAAU,EAAE,aAAa,CAAC;QAC1B,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;CACH"}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* MCP Server Types and Interfaces
|
|
3
|
-
*
|
|
4
|
-
* Defines types for MCP server detection, configuration, and operations.
|
|
5
|
-
*/
|
|
6
|
-
export var MCPServerType;
|
|
7
|
-
(function (MCPServerType) {
|
|
8
|
-
MCPServerType["KANAPULI"] = "kanapuli";
|
|
9
|
-
MCPServerType["TUANNVM"] = "tuannvm";
|
|
10
|
-
MCPServerType["JOEL_HANSON"] = "joel-hanson";
|
|
11
|
-
MCPServerType["CONFLUENT"] = "confluent";
|
|
12
|
-
})(MCPServerType || (MCPServerType = {}));
|
|
13
|
-
export var AuthMethod;
|
|
14
|
-
(function (AuthMethod) {
|
|
15
|
-
AuthMethod["SASL_PLAINTEXT"] = "SASL_PLAINTEXT";
|
|
16
|
-
AuthMethod["SASL_SCRAM_SHA_256"] = "SASL/SCRAM-SHA-256";
|
|
17
|
-
AuthMethod["SASL_SCRAM_SHA_512"] = "SASL/SCRAM-SHA-512";
|
|
18
|
-
AuthMethod["SASL_SSL"] = "SASL_SSL";
|
|
19
|
-
AuthMethod["SSL"] = "SSL";
|
|
20
|
-
AuthMethod["PLAINTEXT"] = "PLAINTEXT";
|
|
21
|
-
AuthMethod["OAUTH"] = "OAUTH";
|
|
22
|
-
})(AuthMethod || (AuthMethod = {}));
|
|
23
|
-
//# sourceMappingURL=types.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../plugins/specweave-kafka/lib/mcp/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,CAAN,IAAY,aAKX;AALD,WAAY,aAAa;IACvB,sCAAqB,CAAA;IACrB,oCAAmB,CAAA;IACnB,4CAA2B,CAAA;IAC3B,wCAAuB,CAAA;AACzB,CAAC,EALW,aAAa,KAAb,aAAa,QAKxB;AAiBD,MAAM,CAAN,IAAY,UAQX;AARD,WAAY,UAAU;IACpB,+CAAiC,CAAA;IACjC,uDAAyC,CAAA;IACzC,uDAAyC,CAAA;IACzC,mCAAqB,CAAA;IACrB,yBAAW,CAAA;IACX,qCAAuB,CAAA;IACvB,6BAAe,CAAA;AACjB,CAAC,EARW,UAAU,KAAV,UAAU,QAQrB"}
|
|
@@ -1,85 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Partitioning Strategy Analyzer
|
|
3
|
-
*
|
|
4
|
-
* Analyzes partition key distribution and provides recommendations
|
|
5
|
-
* for optimal Kafka topic partitioning strategies.
|
|
6
|
-
*/
|
|
7
|
-
export interface PartitionKeyAnalysis {
|
|
8
|
-
key: string;
|
|
9
|
-
sampleValues: string[];
|
|
10
|
-
estimatedCardinality: number;
|
|
11
|
-
distribution: 'uniform' | 'skewed' | 'severely-skewed';
|
|
12
|
-
hotspotRisk: 'low' | 'medium' | 'high';
|
|
13
|
-
}
|
|
14
|
-
export interface PartitioningRecommendation {
|
|
15
|
-
recommendedPartitions: number;
|
|
16
|
-
keyStrategy: 'simple-hash' | 'compound-hash' | 'custom-partitioner' | 'round-robin';
|
|
17
|
-
keyField: string | null;
|
|
18
|
-
reasoning: string;
|
|
19
|
-
warnings: string[];
|
|
20
|
-
examples: string[];
|
|
21
|
-
}
|
|
22
|
-
export interface PartitionAnalysisRequest {
|
|
23
|
-
topicName: string;
|
|
24
|
-
currentPartitionCount?: number;
|
|
25
|
-
expectedMessagesPerSecond: number;
|
|
26
|
-
peakMultiplier?: number;
|
|
27
|
-
potentialKeys: Array<{
|
|
28
|
-
fieldName: string;
|
|
29
|
-
sampleValues: string[];
|
|
30
|
-
estimatedUniqueCount: number;
|
|
31
|
-
}>;
|
|
32
|
-
orderingRequired: boolean;
|
|
33
|
-
targetLatencyMs?: number;
|
|
34
|
-
targetThroughputMBps?: number;
|
|
35
|
-
}
|
|
36
|
-
export declare class PartitioningStrategyAnalyzer {
|
|
37
|
-
private readonly MAX_PARTITION_THROUGHPUT_MBPS;
|
|
38
|
-
private readonly MAX_PARTITION_MSG_PER_SEC;
|
|
39
|
-
private readonly IDEAL_PARTITIONS_PER_CONSUMER;
|
|
40
|
-
/**
|
|
41
|
-
* Analyze partition key candidates and recommend strategy
|
|
42
|
-
*/
|
|
43
|
-
analyze(req: PartitionAnalysisRequest): PartitioningRecommendation;
|
|
44
|
-
/**
|
|
45
|
-
* Analyze a single partition key candidate
|
|
46
|
-
*/
|
|
47
|
-
private analyzeKey;
|
|
48
|
-
/**
|
|
49
|
-
* Select best partition key from candidates
|
|
50
|
-
*/
|
|
51
|
-
private selectBestKey;
|
|
52
|
-
/**
|
|
53
|
-
* Determine optimal partitioning key strategy
|
|
54
|
-
*/
|
|
55
|
-
private determineKeyStrategy;
|
|
56
|
-
/**
|
|
57
|
-
* Generate warnings for partitioning strategy
|
|
58
|
-
*/
|
|
59
|
-
private generateWarnings;
|
|
60
|
-
/**
|
|
61
|
-
* Generate usage examples for the recommended strategy
|
|
62
|
-
*/
|
|
63
|
-
private generateExamples;
|
|
64
|
-
/**
|
|
65
|
-
* Helper: Next power of 2
|
|
66
|
-
*/
|
|
67
|
-
private nextPowerOfTwo;
|
|
68
|
-
/**
|
|
69
|
-
* Helper: Capitalize first letter
|
|
70
|
-
*/
|
|
71
|
-
private capitalize;
|
|
72
|
-
/**
|
|
73
|
-
* Calculate partition distribution for a given key
|
|
74
|
-
*/
|
|
75
|
-
calculateDistribution(sampleValues: string[], partitionCount: number): {
|
|
76
|
-
partition: number;
|
|
77
|
-
count: number;
|
|
78
|
-
percentage: number;
|
|
79
|
-
}[];
|
|
80
|
-
/**
|
|
81
|
-
* Simple MurmurHash2 implementation (matches Kafka's DefaultPartitioner)
|
|
82
|
-
*/
|
|
83
|
-
private murmur2Hash;
|
|
84
|
-
}
|
|
85
|
-
//# sourceMappingURL=partitioning.d.ts.map
|