specweave 0.20.1 → 0.21.1

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 (60) hide show
  1. package/.claude-plugin/marketplace.json +44 -0
  2. package/dist/locales/de/.gitkeep +0 -0
  3. package/dist/locales/de/cli.json +108 -0
  4. package/dist/locales/en/cli.json +287 -0
  5. package/dist/locales/en/errors.json +7 -0
  6. package/dist/locales/en/templates.json +6 -0
  7. package/dist/locales/es/.gitkeep +0 -0
  8. package/dist/locales/es/cli.json +41 -0
  9. package/dist/locales/fr/.gitkeep +0 -0
  10. package/dist/locales/fr/cli.json +108 -0
  11. package/dist/locales/ja/.gitkeep +0 -0
  12. package/dist/locales/ja/cli.json +108 -0
  13. package/dist/locales/ko/.gitkeep +0 -0
  14. package/dist/locales/ko/cli.json +108 -0
  15. package/dist/locales/pt/.gitkeep +0 -0
  16. package/dist/locales/pt/cli.json +108 -0
  17. package/dist/locales/ru/.gitkeep +0 -0
  18. package/dist/locales/ru/cli.json +269 -0
  19. package/dist/locales/zh/.gitkeep +0 -0
  20. package/dist/locales/zh/cli.json +108 -0
  21. package/dist/plugins/specweave-ado/lib/enhanced-ado-sync.d.ts +25 -0
  22. package/dist/plugins/specweave-ado/lib/enhanced-ado-sync.d.ts.map +1 -0
  23. package/dist/plugins/specweave-ado/lib/enhanced-ado-sync.js +191 -0
  24. package/dist/plugins/specweave-ado/lib/enhanced-ado-sync.js.map +1 -0
  25. package/dist/plugins/specweave-kafka/lib/cli/kcat-wrapper.d.ts +57 -0
  26. package/dist/plugins/specweave-kafka/lib/cli/kcat-wrapper.d.ts.map +1 -0
  27. package/dist/plugins/specweave-kafka/lib/cli/kcat-wrapper.js +248 -0
  28. package/dist/plugins/specweave-kafka/lib/cli/kcat-wrapper.js.map +1 -0
  29. package/dist/plugins/specweave-kafka/lib/cli/types.d.ts +82 -0
  30. package/dist/plugins/specweave-kafka/lib/cli/types.d.ts.map +1 -0
  31. package/dist/plugins/specweave-kafka/lib/cli/types.js +13 -0
  32. package/dist/plugins/specweave-kafka/lib/cli/types.js.map +1 -0
  33. package/dist/plugins/specweave-kafka/lib/mcp/detector.d.ts +49 -0
  34. package/dist/plugins/specweave-kafka/lib/mcp/detector.d.ts.map +1 -0
  35. package/dist/plugins/specweave-kafka/lib/mcp/detector.js +316 -0
  36. package/dist/plugins/specweave-kafka/lib/mcp/detector.js.map +1 -0
  37. package/dist/plugins/specweave-kafka/lib/mcp/types.d.ts +70 -0
  38. package/dist/plugins/specweave-kafka/lib/mcp/types.d.ts.map +1 -0
  39. package/dist/plugins/specweave-kafka/lib/mcp/types.js +23 -0
  40. package/dist/plugins/specweave-kafka/lib/mcp/types.js.map +1 -0
  41. package/dist/plugins/specweave-kafka/lib/utils/partitioning.d.ts +85 -0
  42. package/dist/plugins/specweave-kafka/lib/utils/partitioning.d.ts.map +1 -0
  43. package/dist/plugins/specweave-kafka/lib/utils/partitioning.js +281 -0
  44. package/dist/plugins/specweave-kafka/lib/utils/partitioning.js.map +1 -0
  45. package/dist/plugins/specweave-kafka/lib/utils/sizing.d.ts +75 -0
  46. package/dist/plugins/specweave-kafka/lib/utils/sizing.d.ts.map +1 -0
  47. package/dist/plugins/specweave-kafka/lib/utils/sizing.js +238 -0
  48. package/dist/plugins/specweave-kafka/lib/utils/sizing.js.map +1 -0
  49. package/dist/spec-parser.js +629 -0
  50. package/dist/src/core/increment/conflict-resolver.d.ts.map +1 -1
  51. package/dist/src/core/increment/conflict-resolver.js +4 -1
  52. package/dist/src/core/increment/conflict-resolver.js.map +1 -1
  53. package/dist/src/core/sync/spec-content-sync.d.ts +88 -0
  54. package/dist/src/core/sync/spec-content-sync.d.ts.map +1 -0
  55. package/dist/src/core/sync/spec-content-sync.js +5 -0
  56. package/dist/src/core/sync/spec-content-sync.js.map +1 -0
  57. package/dist/tsconfig.tsbuildinfo +1 -0
  58. package/package.json +1 -1
  59. package/plugins/specweave-ado/lib/enhanced-ado-sync.js +170 -0
  60. package/src/templates/AGENTS.md.template +41 -6
@@ -0,0 +1,82 @@
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
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,13 @@
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
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,49 @@
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
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,316 @@
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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"detector.js","sourceRoot":"","sources":["../../../../../plugins/specweave-kafka/lib/mcp/detector.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,70 @@
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
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,23 @@
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
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,85 @@
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