@nxuss/lemma 1.1.1 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (142) hide show
  1. package/README.md +148 -9
  2. package/dist/cjs/cli/lemma-proxy.d.ts.map +1 -1
  3. package/dist/cjs/cli/lemma-proxy.js +2 -0
  4. package/dist/cjs/cli/lemma-proxy.js.map +1 -1
  5. package/dist/cjs/infra/analyzers/DriftDetector.d.ts +4 -0
  6. package/dist/cjs/infra/analyzers/DriftDetector.d.ts.map +1 -0
  7. package/dist/cjs/infra/analyzers/DriftDetector.js +88 -0
  8. package/dist/cjs/infra/analyzers/DriftDetector.js.map +1 -0
  9. package/dist/cjs/infra/analyzers/InfraAnalyzer.d.ts +3 -0
  10. package/dist/cjs/infra/analyzers/InfraAnalyzer.d.ts.map +1 -0
  11. package/dist/cjs/infra/analyzers/InfraAnalyzer.js +73 -0
  12. package/dist/cjs/infra/analyzers/InfraAnalyzer.js.map +1 -0
  13. package/dist/cjs/infra/analyzers/MonolithAnalyzer.d.ts +3 -0
  14. package/dist/cjs/infra/analyzers/MonolithAnalyzer.d.ts.map +1 -0
  15. package/dist/cjs/infra/analyzers/MonolithAnalyzer.js +180 -0
  16. package/dist/cjs/infra/analyzers/MonolithAnalyzer.js.map +1 -0
  17. package/dist/cjs/infra/analyzers/index.d.ts +4 -0
  18. package/dist/cjs/infra/analyzers/index.d.ts.map +1 -0
  19. package/dist/cjs/infra/analyzers/index.js +11 -0
  20. package/dist/cjs/infra/analyzers/index.js.map +1 -0
  21. package/dist/cjs/infra/cli.d.ts +2 -0
  22. package/dist/cjs/infra/cli.d.ts.map +1 -0
  23. package/dist/cjs/infra/cli.js +221 -0
  24. package/dist/cjs/infra/cli.js.map +1 -0
  25. package/dist/cjs/infra/config.d.ts +17 -0
  26. package/dist/cjs/infra/config.d.ts.map +1 -0
  27. package/dist/cjs/infra/config.js +111 -0
  28. package/dist/cjs/infra/config.js.map +1 -0
  29. package/dist/cjs/infra/index.d.ts +8 -0
  30. package/dist/cjs/infra/index.d.ts.map +1 -0
  31. package/dist/cjs/infra/index.js +28 -0
  32. package/dist/cjs/infra/index.js.map +1 -0
  33. package/dist/cjs/infra/mcp-tools.d.ts +16 -0
  34. package/dist/cjs/infra/mcp-tools.d.ts.map +1 -0
  35. package/dist/cjs/infra/mcp-tools.js +456 -0
  36. package/dist/cjs/infra/mcp-tools.js.map +1 -0
  37. package/dist/cjs/infra/providers/InfraProvider.d.ts +9 -0
  38. package/dist/cjs/infra/providers/InfraProvider.d.ts.map +1 -0
  39. package/dist/cjs/infra/providers/InfraProvider.js +3 -0
  40. package/dist/cjs/infra/providers/InfraProvider.js.map +1 -0
  41. package/dist/cjs/infra/providers/JenkinsProvider.d.ts +16 -0
  42. package/dist/cjs/infra/providers/JenkinsProvider.d.ts.map +1 -0
  43. package/dist/cjs/infra/providers/JenkinsProvider.js +188 -0
  44. package/dist/cjs/infra/providers/JenkinsProvider.js.map +1 -0
  45. package/dist/cjs/infra/providers/OKDProvider.d.ts +24 -0
  46. package/dist/cjs/infra/providers/OKDProvider.d.ts.map +1 -0
  47. package/dist/cjs/infra/providers/OKDProvider.js +292 -0
  48. package/dist/cjs/infra/providers/OKDProvider.js.map +1 -0
  49. package/dist/cjs/infra/providers/TerraformProvider.d.ts +17 -0
  50. package/dist/cjs/infra/providers/TerraformProvider.d.ts.map +1 -0
  51. package/dist/cjs/infra/providers/TerraformProvider.js +109 -0
  52. package/dist/cjs/infra/providers/TerraformProvider.js.map +1 -0
  53. package/dist/cjs/infra/providers/index.d.ts +9 -0
  54. package/dist/cjs/infra/providers/index.d.ts.map +1 -0
  55. package/dist/cjs/infra/providers/index.js +34 -0
  56. package/dist/cjs/infra/providers/index.js.map +1 -0
  57. package/dist/cjs/infra/templates/jenkins/index.d.ts +15 -0
  58. package/dist/cjs/infra/templates/jenkins/index.d.ts.map +1 -0
  59. package/dist/cjs/infra/templates/jenkins/index.js +124 -0
  60. package/dist/cjs/infra/templates/jenkins/index.js.map +1 -0
  61. package/dist/cjs/infra/templates/okd/index.d.ts +31 -0
  62. package/dist/cjs/infra/templates/okd/index.d.ts.map +1 -0
  63. package/dist/cjs/infra/templates/okd/index.js +149 -0
  64. package/dist/cjs/infra/templates/okd/index.js.map +1 -0
  65. package/dist/cjs/infra/types.d.ts +128 -0
  66. package/dist/cjs/infra/types.d.ts.map +1 -0
  67. package/dist/cjs/infra/types.js +4 -0
  68. package/dist/cjs/infra/types.js.map +1 -0
  69. package/dist/cjs/mcp/tools.d.ts.map +1 -1
  70. package/dist/cjs/mcp/tools.js +9 -1
  71. package/dist/cjs/mcp/tools.js.map +1 -1
  72. package/dist/esm/cli/lemma-proxy.d.ts.map +1 -1
  73. package/dist/esm/cli/lemma-proxy.js +2 -0
  74. package/dist/esm/cli/lemma-proxy.js.map +1 -1
  75. package/dist/esm/infra/analyzers/DriftDetector.d.ts +4 -0
  76. package/dist/esm/infra/analyzers/DriftDetector.d.ts.map +1 -0
  77. package/dist/esm/infra/analyzers/DriftDetector.js +84 -0
  78. package/dist/esm/infra/analyzers/DriftDetector.js.map +1 -0
  79. package/dist/esm/infra/analyzers/InfraAnalyzer.d.ts +3 -0
  80. package/dist/esm/infra/analyzers/InfraAnalyzer.d.ts.map +1 -0
  81. package/dist/esm/infra/analyzers/InfraAnalyzer.js +70 -0
  82. package/dist/esm/infra/analyzers/InfraAnalyzer.js.map +1 -0
  83. package/dist/esm/infra/analyzers/MonolithAnalyzer.d.ts +3 -0
  84. package/dist/esm/infra/analyzers/MonolithAnalyzer.d.ts.map +1 -0
  85. package/dist/esm/infra/analyzers/MonolithAnalyzer.js +174 -0
  86. package/dist/esm/infra/analyzers/MonolithAnalyzer.js.map +1 -0
  87. package/dist/esm/infra/analyzers/index.d.ts +4 -0
  88. package/dist/esm/infra/analyzers/index.d.ts.map +1 -0
  89. package/dist/esm/infra/analyzers/index.js +4 -0
  90. package/dist/esm/infra/analyzers/index.js.map +1 -0
  91. package/dist/esm/infra/cli.d.ts +2 -0
  92. package/dist/esm/infra/cli.d.ts.map +1 -0
  93. package/dist/esm/infra/cli.js +218 -0
  94. package/dist/esm/infra/cli.js.map +1 -0
  95. package/dist/esm/infra/config.d.ts +17 -0
  96. package/dist/esm/infra/config.d.ts.map +1 -0
  97. package/dist/esm/infra/config.js +101 -0
  98. package/dist/esm/infra/config.js.map +1 -0
  99. package/dist/esm/infra/index.d.ts +8 -0
  100. package/dist/esm/infra/index.d.ts.map +1 -0
  101. package/dist/esm/infra/index.js +9 -0
  102. package/dist/esm/infra/index.js.map +1 -0
  103. package/dist/esm/infra/mcp-tools.d.ts +16 -0
  104. package/dist/esm/infra/mcp-tools.d.ts.map +1 -0
  105. package/dist/esm/infra/mcp-tools.js +451 -0
  106. package/dist/esm/infra/mcp-tools.js.map +1 -0
  107. package/dist/esm/infra/providers/InfraProvider.d.ts +9 -0
  108. package/dist/esm/infra/providers/InfraProvider.d.ts.map +1 -0
  109. package/dist/esm/infra/providers/InfraProvider.js +2 -0
  110. package/dist/esm/infra/providers/InfraProvider.js.map +1 -0
  111. package/dist/esm/infra/providers/JenkinsProvider.d.ts +16 -0
  112. package/dist/esm/infra/providers/JenkinsProvider.d.ts.map +1 -0
  113. package/dist/esm/infra/providers/JenkinsProvider.js +181 -0
  114. package/dist/esm/infra/providers/JenkinsProvider.js.map +1 -0
  115. package/dist/esm/infra/providers/OKDProvider.d.ts +24 -0
  116. package/dist/esm/infra/providers/OKDProvider.d.ts.map +1 -0
  117. package/dist/esm/infra/providers/OKDProvider.js +288 -0
  118. package/dist/esm/infra/providers/OKDProvider.js.map +1 -0
  119. package/dist/esm/infra/providers/TerraformProvider.d.ts +17 -0
  120. package/dist/esm/infra/providers/TerraformProvider.d.ts.map +1 -0
  121. package/dist/esm/infra/providers/TerraformProvider.js +105 -0
  122. package/dist/esm/infra/providers/TerraformProvider.js.map +1 -0
  123. package/dist/esm/infra/providers/index.d.ts +9 -0
  124. package/dist/esm/infra/providers/index.d.ts.map +1 -0
  125. package/dist/esm/infra/providers/index.js +27 -0
  126. package/dist/esm/infra/providers/index.js.map +1 -0
  127. package/dist/esm/infra/templates/jenkins/index.d.ts +15 -0
  128. package/dist/esm/infra/templates/jenkins/index.d.ts.map +1 -0
  129. package/dist/esm/infra/templates/jenkins/index.js +120 -0
  130. package/dist/esm/infra/templates/jenkins/index.js.map +1 -0
  131. package/dist/esm/infra/templates/okd/index.d.ts +31 -0
  132. package/dist/esm/infra/templates/okd/index.d.ts.map +1 -0
  133. package/dist/esm/infra/templates/okd/index.js +142 -0
  134. package/dist/esm/infra/templates/okd/index.js.map +1 -0
  135. package/dist/esm/infra/types.d.ts +128 -0
  136. package/dist/esm/infra/types.d.ts.map +1 -0
  137. package/dist/esm/infra/types.js +3 -0
  138. package/dist/esm/infra/types.js.map +1 -0
  139. package/dist/esm/mcp/tools.d.ts.map +1 -1
  140. package/dist/esm/mcp/tools.js +9 -1
  141. package/dist/esm/mcp/tools.js.map +1 -1
  142. package/package.json +3 -2
@@ -0,0 +1,456 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.INFRA_TOOL_NAMES = exports.infraToolDefinitions = void 0;
4
+ exports.getInfraToolDefinitions = getInfraToolDefinitions;
5
+ exports.getInfraToolHandlers = getInfraToolHandlers;
6
+ const providers_1 = require("./providers");
7
+ const config_1 = require("./config");
8
+ const analyzers_1 = require("./analyzers");
9
+ const jenkins_1 = require("./templates/jenkins");
10
+ const TheBrainV2_1 = require("../subconscious/TheBrainV2");
11
+ // ── Tool Definitions ──────────────────────────────────────────────────────────
12
+ exports.infraToolDefinitions = [
13
+ {
14
+ name: 'infra_discover',
15
+ description: 'Auto-detect Jenkins, OKD, and Terraform in the environment. Returns connectivity status and config requirements.',
16
+ inputSchema: { type: 'object', properties: {} },
17
+ },
18
+ {
19
+ name: 'infra_connect',
20
+ description: 'Connect to an infrastructure provider with credentials. Credentials are stored locally in ~/.lemma-cache/infra/.',
21
+ inputSchema: {
22
+ type: 'object',
23
+ properties: {
24
+ provider: { type: 'string', enum: ['jenkins', 'okd', 'terraform'], description: 'Provider to connect' },
25
+ url: { type: 'string', description: 'Provider URL/endpoint' },
26
+ token: { type: 'string', description: 'Auth token or API key' },
27
+ username: { type: 'string', description: 'Username (Jenkins)' },
28
+ project: { type: 'string', description: 'OKD project/namespace' },
29
+ },
30
+ required: ['provider'],
31
+ },
32
+ },
33
+ {
34
+ name: 'infra_status',
35
+ description: 'Get consolidated status of all connected infrastructure providers. Token-optimized: returns only anomalies.',
36
+ inputSchema: { type: 'object', properties: {} },
37
+ },
38
+ {
39
+ name: 'infra_health_check',
40
+ description: 'Detailed health check for all providers. Returns latency, version, and connectivity details.',
41
+ inputSchema: { type: 'object', properties: {} },
42
+ },
43
+ {
44
+ name: 'infra_diagnose',
45
+ description: 'Analyze infrastructure issues and suggest fixes. Caches successful solutions in TheBrain for future sessions.',
46
+ inputSchema: {
47
+ type: 'object',
48
+ properties: {
49
+ provider: { type: 'string', enum: ['jenkins', 'okd', 'terraform'], description: 'Provider to diagnose' },
50
+ },
51
+ },
52
+ },
53
+ {
54
+ name: 'infra_analyze_monolith',
55
+ description: 'Analyze monolith codebase for microservice migration. Identifies modules, coupling, and suggests split points.',
56
+ inputSchema: { type: 'object', properties: {} },
57
+ },
58
+ {
59
+ name: 'infra_suggest_split',
60
+ description: 'Suggest microservice split points based on module coupling analysis.',
61
+ inputSchema: { type: 'object', properties: {} },
62
+ },
63
+ {
64
+ name: 'jenkins_generate_pipeline',
65
+ description: 'Generate a Jenkinsfile for CI/CD pipeline. Supports standard and multibranch patterns.',
66
+ inputSchema: {
67
+ type: 'object',
68
+ properties: {
69
+ name: { type: 'string', description: 'Project/app name' },
70
+ branch: { type: 'string', description: 'Branch pattern', default: 'main' },
71
+ dockerImage: { type: 'string', description: 'Docker image name' },
72
+ registry: { type: 'string', description: 'Container registry' },
73
+ namespace: { type: 'string', description: 'OKD namespace' },
74
+ multibranch: { type: 'boolean', description: 'Use multibranch template', default: false },
75
+ repoUrl: { type: 'string', description: 'Git repo URL (for multibranch)' },
76
+ },
77
+ required: ['name'],
78
+ },
79
+ },
80
+ {
81
+ name: 'jenkins_trigger_build',
82
+ description: 'Trigger a Jenkins build. Semi-automated: returns what will be built, requires confirmation.',
83
+ inputSchema: {
84
+ type: 'object',
85
+ properties: {
86
+ jobName: { type: 'string', description: 'Jenkins job name' },
87
+ params: { type: 'object', description: 'Build parameters as key-value pairs' },
88
+ },
89
+ required: ['jobName'],
90
+ },
91
+ },
92
+ {
93
+ name: 'jenkins_build_status',
94
+ description: 'Get status of a Jenkins build. Returns result, duration, and URL.',
95
+ inputSchema: {
96
+ type: 'object',
97
+ properties: {
98
+ jobName: { type: 'string', description: 'Jenkins job name' },
99
+ buildNumber: { type: 'number', description: 'Build number (omit for last build)' },
100
+ },
101
+ required: ['jobName'],
102
+ },
103
+ },
104
+ {
105
+ name: 'jenkins_logs',
106
+ description: 'Get last 80 lines of Jenkins build console output. Token-optimized.',
107
+ inputSchema: {
108
+ type: 'object',
109
+ properties: {
110
+ jobName: { type: 'string', description: 'Jenkins job name' },
111
+ buildNumber: { type: 'number', description: 'Build number' },
112
+ },
113
+ required: ['jobName', 'buildNumber'],
114
+ },
115
+ },
116
+ {
117
+ name: 'okd_generate_manifests',
118
+ description: 'Generate OKD/OpenShift manifests (DeploymentConfig, BuildConfig, ImageStream, Route, Service).',
119
+ inputSchema: {
120
+ type: 'object',
121
+ properties: {
122
+ name: { type: 'string', description: 'Application name' },
123
+ image: { type: 'string', description: 'Container image' },
124
+ port: { type: 'number', description: 'Container port', default: 8080 },
125
+ replicas: { type: 'number', description: 'Number of replicas', default: 2 },
126
+ envVars: { type: 'object', description: 'Environment variables' },
127
+ },
128
+ required: ['name'],
129
+ },
130
+ },
131
+ {
132
+ name: 'okd_apply',
133
+ description: 'Apply OKD manifests. Semi-automated: generates manifests, shows preview, then applies on confirmation.',
134
+ inputSchema: {
135
+ type: 'object',
136
+ properties: {
137
+ name: { type: 'string', description: 'Application name' },
138
+ image: { type: 'string', description: 'Container image' },
139
+ port: { type: 'number', description: 'Container port', default: 8080 },
140
+ replicas: { type: 'number', description: 'Replicas', default: 2 },
141
+ dryRun: { type: 'boolean', description: 'Only generate, do not apply', default: false },
142
+ envVars: { type: 'object', description: 'Environment variables' },
143
+ },
144
+ required: ['name'],
145
+ },
146
+ },
147
+ {
148
+ name: 'okd_status',
149
+ description: 'Get status of pods, builds, and routes in OKD project. Token-optimized: compact summary.',
150
+ inputSchema: { type: 'object', properties: {} },
151
+ },
152
+ {
153
+ name: 'okd_logs',
154
+ description: 'Get logs from an OKD pod. Returns last N lines (default 50).',
155
+ inputSchema: {
156
+ type: 'object',
157
+ properties: {
158
+ podName: { type: 'string', description: 'Pod name' },
159
+ lines: { type: 'number', description: 'Number of lines', default: 50 },
160
+ },
161
+ required: ['podName'],
162
+ },
163
+ },
164
+ {
165
+ name: 'okd_events',
166
+ description: 'Get recent OKD cluster events (sorted by timestamp). Useful for troubleshooting.',
167
+ inputSchema: { type: 'object', properties: {} },
168
+ },
169
+ {
170
+ name: 'okd_describe',
171
+ description: 'Describe an OKD resource (pod, dc, bc, route, etc.) for debugging.',
172
+ inputSchema: {
173
+ type: 'object',
174
+ properties: {
175
+ resource: { type: 'string', description: 'Resource type (pod, dc, bc, route, service)' },
176
+ name: { type: 'string', description: 'Resource name' },
177
+ },
178
+ required: ['resource', 'name'],
179
+ },
180
+ },
181
+ {
182
+ name: 'okd_route_url',
183
+ description: 'Get the external URL for an OKD route.',
184
+ inputSchema: {
185
+ type: 'object',
186
+ properties: {
187
+ routeName: { type: 'string', description: 'Route name' },
188
+ },
189
+ required: ['routeName'],
190
+ },
191
+ },
192
+ {
193
+ name: 'terraform_plan',
194
+ description: 'Run terraform plan and return the output. Token-optimized: returns only changes.',
195
+ inputSchema: { type: 'object', properties: {} },
196
+ },
197
+ {
198
+ name: 'terraform_apply',
199
+ description: 'Run terraform apply. Semi-automated: shows plan first, requires confirmation.',
200
+ inputSchema: {
201
+ type: 'object',
202
+ properties: {
203
+ autoApprove: { type: 'boolean', description: 'Skip confirmation prompt', default: false },
204
+ },
205
+ },
206
+ },
207
+ {
208
+ name: 'terraform_state_list',
209
+ description: 'List all resources in Terraform state.',
210
+ inputSchema: { type: 'object', properties: {} },
211
+ },
212
+ {
213
+ name: 'terraform_drift',
214
+ description: 'Detect configuration drift between Terraform state and actual infrastructure.',
215
+ inputSchema: { type: 'object', properties: {} },
216
+ },
217
+ ];
218
+ // ── Handler Implementations ───────────────────────────────────────────────────
219
+ function ok() {
220
+ return (text) => ({ content: [{ type: 'text', text }] });
221
+ }
222
+ const jenkins = () => (0, providers_1.getProvider)('jenkins');
223
+ const okd = () => (0, providers_1.getProvider)('okd');
224
+ const tf = () => (0, providers_1.getProvider)('terraform');
225
+ const handlers = {
226
+ infra_discover: async () => {
227
+ const results = [];
228
+ const connected = (0, config_1.getConnectedProviders)();
229
+ for (const name of ['jenkins', 'okd', 'terraform']) {
230
+ const status = connected[name] ? `CONNECTED (since ${connected[name].connectedAt})` : 'NOT CONNECTED';
231
+ results.push(`[${name.toUpperCase()}] ${status}`);
232
+ }
233
+ const cfg = (0, config_1.getInfraConfig)();
234
+ if (cfg.jenkins?.url)
235
+ results.push(`Jenkins URL: ${cfg.jenkins.url}`);
236
+ if (cfg.okd?.server)
237
+ results.push(`OKD Server: ${cfg.okd.server}`);
238
+ if (cfg.terraform?.backend)
239
+ results.push(`Terraform Backend: ${cfg.terraform.backend}`);
240
+ return ok()(results.join('\n'));
241
+ },
242
+ infra_connect: async (args) => {
243
+ const provider = args.provider;
244
+ try {
245
+ const p = (0, providers_1.getProvider)(provider);
246
+ let config = {};
247
+ if (provider === 'jenkins') {
248
+ config = { url: args.url, username: args.username, apiToken: args.token };
249
+ }
250
+ else if (provider === 'okd') {
251
+ config = { server: args.url, token: args.token, project: args.project || '' };
252
+ }
253
+ else if (provider === 'terraform') {
254
+ config = { backend: 's3', workDir: process.cwd() };
255
+ }
256
+ const ok2 = await p.connect(config);
257
+ if (ok2) {
258
+ (0, config_1.markProviderConnected)(provider, { url: args.url });
259
+ return ok()(`Connected to ${provider} successfully.`);
260
+ }
261
+ return ok()(`Failed to connect to ${provider}. Check credentials and URL.`);
262
+ }
263
+ catch (err) {
264
+ return ok()(`Error connecting to ${provider}: ${err.message}`);
265
+ }
266
+ },
267
+ infra_status: async () => {
268
+ const connected = (0, config_1.getConnectedProviders)();
269
+ const lines = [];
270
+ for (const name of Object.keys(connected)) {
271
+ try {
272
+ const p = (0, providers_1.getProvider)(name);
273
+ const health = await p.healthCheck();
274
+ const icon = health.status === 'healthy' ? 'OK' : health.status === 'degraded' ? 'WARN' : 'DOWN';
275
+ lines.push(`[${icon}] ${name}: ${health.status} (${health.latency}ms)`);
276
+ }
277
+ catch {
278
+ lines.push(`[DOWN] ${name}: unreachable`);
279
+ }
280
+ }
281
+ if (lines.length === 0) {
282
+ return ok()('No providers connected. Use infra_connect to connect one.');
283
+ }
284
+ return ok()(lines.join('\n'));
285
+ },
286
+ infra_health_check: async () => {
287
+ const connected = (0, config_1.getConnectedProviders)();
288
+ const results = [];
289
+ for (const name of Object.keys(connected)) {
290
+ try {
291
+ const p = (0, providers_1.getProvider)(name);
292
+ const health = await p.healthCheck();
293
+ results.push({ provider: name, ...health });
294
+ }
295
+ catch (err) {
296
+ results.push({ provider: name, status: 'down', error: err.message });
297
+ }
298
+ }
299
+ return ok()(JSON.stringify(results, null, 2));
300
+ },
301
+ infra_diagnose: async (args) => {
302
+ const provider = args.provider;
303
+ const brain = (0, TheBrainV2_1.getBrain)();
304
+ const cached = brain.search(`troubleshoot ${provider} infrastructure`, 3);
305
+ if (cached.length > 0 && cached[0].similarity > 0.8) {
306
+ return ok()(`Cached solution found (similarity: ${(cached[0].similarity * 100).toFixed(0)}%):\n${cached[0].response}`);
307
+ }
308
+ try {
309
+ const p = (0, providers_1.getProvider)(provider);
310
+ const status = await p.getStatus();
311
+ const analysis = (0, analyzers_1.analyzeInfra)(provider, status);
312
+ const response = `Diagnosis for ${provider}:\nScore: ${analysis.score}/100\n\n${analysis.findings.map((f) => `[${f.severity}] ${f.resource}: ${f.message}\n Fix: ${f.suggestion}`).join('\n\n')}`;
313
+ if (analysis.findings.length > 0) {
314
+ brain.store(`${provider} infrastructure diagnosis: ${analysis.findings.map((f) => f.ruleId).join(', ')}`, response, 'infra');
315
+ }
316
+ return ok()(response);
317
+ }
318
+ catch (err) {
319
+ return ok()(`Diagnosis failed for ${provider}: ${err.message}`);
320
+ }
321
+ },
322
+ infra_analyze_monolith: async () => {
323
+ const analysis = (0, analyzers_1.analyzeMonolith)(process.cwd());
324
+ const response = `Monolith Analysis:\nModules: ${analysis.modules.length}\nCoupling: ${analysis.couplingScore}%\n\n` +
325
+ analysis.modules.map((m) => ` ${m.name}: ${m.files} files, ${m.complexity} LOC, deps: [${m.dependencies.join(', ')}]`).join('\n') +
326
+ `\n\nSuggested Splits:\n${analysis.suggestedSplits.map((s) => ` ${s.name}: ${s.rationale} (effort: ${s.estimatedEffort})`).join('\n')}`;
327
+ return ok()(response);
328
+ },
329
+ infra_suggest_split: async () => {
330
+ const analysis = (0, analyzers_1.analyzeMonolith)(process.cwd());
331
+ if (analysis.suggestedSplits.length === 0) {
332
+ return ok()('No clear split points found. The codebase may already be well-modularized.');
333
+ }
334
+ return ok()(analysis.suggestedSplits.map((s) => `${s.name}: includes [${s.includes.join(', ')}]\n Rationale: ${s.rationale}\n Effort: ${s.estimatedEffort}`).join('\n\n'));
335
+ },
336
+ jenkins_generate_pipeline: async (args) => {
337
+ const config = (0, config_1.getInfraConfig)();
338
+ const content = args.multibranch
339
+ ? (0, jenkins_1.multibranchTemplate)({ name: args.name, repoUrl: args.repoUrl || '' })
340
+ : (0, jenkins_1.jenkinsfileTemplate)({
341
+ name: args.name,
342
+ dockerImage: args.dockerImage,
343
+ registry: args.registry || config.jenkins?.url ? new URL(config.jenkins.url).hostname : undefined,
344
+ namespace: args.namespace || config.okd?.project,
345
+ });
346
+ return ok()(`Generated Jenkinsfile for ${args.name}:\n\n${content}`);
347
+ },
348
+ jenkins_trigger_build: async (args) => {
349
+ const p = jenkins();
350
+ const result = await p.triggerBuild(args.jobName, args.params);
351
+ return ok()(`Build ${result.success ? 'triggered' : 'failed'} for ${args.jobName}\n${result.logs.join('\n')}`);
352
+ },
353
+ jenkins_build_status: async (args) => {
354
+ const p = jenkins();
355
+ const status = await p.getBuildStatus(args.jobName, args.buildNumber);
356
+ return ok()(`Build #${status.number}: ${status.result || 'BUILDING'} (${status.duration || 0}ms)\nURL: ${status.url}`);
357
+ },
358
+ jenkins_logs: async (args) => {
359
+ const p = jenkins();
360
+ const logs = await p.getBuildLogs(args.jobName, args.buildNumber);
361
+ return ok()(logs);
362
+ },
363
+ okd_generate_manifests: async (args) => {
364
+ const config = (0, config_1.getInfraConfig)();
365
+ const p = okd();
366
+ const manifests = p.generateManifests({
367
+ name: args.name,
368
+ image: args.image,
369
+ port: args.port || 8080,
370
+ replicas: args.replicas || 2,
371
+ envVars: args.envVars,
372
+ });
373
+ const output = Object.entries(manifests)
374
+ .map(([k, v]) => `--- ${k} ---\n${v}`)
375
+ .join('\n\n');
376
+ return ok()(`Generated OKD manifests for ${args.name}:\n\n${output}`);
377
+ },
378
+ okd_apply: async (args) => {
379
+ const p = okd();
380
+ const manifests = p.generateManifests({
381
+ name: args.name,
382
+ image: args.image,
383
+ port: args.port || 8080,
384
+ replicas: args.replicas || 2,
385
+ envVars: args.envVars,
386
+ });
387
+ const result = await p.apply(manifests, args.dryRun);
388
+ (0, config_1.recordDeploy)('okd', args.name, result.success, result.logs.join('; '));
389
+ const brain = (0, TheBrainV2_1.getBrain)();
390
+ if (result.success) {
391
+ brain.store(`OKD deploy ${args.name} succeeded`, `Applied manifests for ${args.name}: ${result.artifacts.join(', ')}`, 'infra');
392
+ }
393
+ return ok()(`${result.success ? 'Applied' : 'Dry-run'} for ${args.name}:\n${result.logs.join('\n')}\n\nNext:\n${result.nextSteps.join('\n')}`);
394
+ },
395
+ okd_status: async () => {
396
+ const p = okd();
397
+ const status = await p.getStatus();
398
+ const pods = (status.podList || []).map((pod) => `${pod.name}: ${pod.status}${pod.ready ? '' : ' (not ready)'}`).join('\n');
399
+ return ok()(`OKD Status: ${status.pods} pods, ${status.builds} builds, ${status.routes} routes\n\n${pods || 'No pods found'}`);
400
+ },
401
+ okd_logs: async (args) => {
402
+ const p = okd();
403
+ const logs = await p.getLogs(args.podName, args.lines || 50);
404
+ return ok()(logs);
405
+ },
406
+ okd_events: async () => {
407
+ const p = okd();
408
+ const events = await p.getEvents();
409
+ return ok()(events);
410
+ },
411
+ okd_describe: async (args) => {
412
+ const p = okd();
413
+ const output = await p.describe(args.resource, args.name);
414
+ return ok()(output);
415
+ },
416
+ okd_route_url: async (args) => {
417
+ const p = okd();
418
+ const url = await p.getRouteURL(args.routeName);
419
+ return ok()(`Route URL: https://${url}`);
420
+ },
421
+ terraform_plan: async () => {
422
+ const p = tf();
423
+ const plan = await p.plan();
424
+ const lines = plan.split('\n');
425
+ const changes = lines.filter((l) => l.startsWith(' ~ ') || l.startsWith(' - ') || l.startsWith(' + '));
426
+ if (changes.length === 0)
427
+ return ok()('No changes detected.');
428
+ return ok()(`Terraform plan changes:\n${changes.join('\n')}`);
429
+ },
430
+ terraform_apply: async (args) => {
431
+ const p = tf();
432
+ const result = await p.apply(args.autoApprove);
433
+ return ok()(`Terraform apply:\n${result}`);
434
+ },
435
+ terraform_state_list: async () => {
436
+ const p = tf();
437
+ const resources = await p.stateList();
438
+ return ok()(`Resources in state (${resources.length}):\n${resources.join('\n')}`);
439
+ },
440
+ terraform_drift: async () => {
441
+ const p = tf();
442
+ const drifts = await p.detectDrift();
443
+ if (drifts.length === 0)
444
+ return ok()('No drift detected.');
445
+ return ok()(`Drift detected (${drifts.length} resources):\n${drifts.map((d) => `[${d.severity}] ${d.resource}: ${d.actual}`).join('\n')}`);
446
+ },
447
+ };
448
+ // ── Exports ───────────────────────────────────────────────────────────────────
449
+ function getInfraToolDefinitions() {
450
+ return exports.infraToolDefinitions;
451
+ }
452
+ function getInfraToolHandlers() {
453
+ return handlers;
454
+ }
455
+ exports.INFRA_TOOL_NAMES = exports.infraToolDefinitions.map((d) => d.name);
456
+ //# sourceMappingURL=mcp-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-tools.js","sourceRoot":"","sources":["../../../src/infra/mcp-tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import type { HealthStatus } from '../types';
2
+ export interface InfraProvider {
3
+ readonly name: string;
4
+ readonly type: 'jenkins' | 'okd' | 'terraform';
5
+ connect(config: any): Promise<boolean>;
6
+ healthCheck(): Promise<HealthStatus>;
7
+ getStatus(): Promise<Record<string, any>>;
8
+ }
9
+ //# sourceMappingURL=InfraProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InfraProvider.d.ts","sourceRoot":"","sources":["../../../../src/infra/providers/InfraProvider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAgB,MAAM,UAAU,CAAC;AAE3D,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,KAAK,GAAG,WAAW,CAAC;IAE/C,OAAO,CAAC,MAAM,EAAE,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACvC,WAAW,IAAI,OAAO,CAAC,YAAY,CAAC,CAAC;IACrC,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;CAC3C"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=InfraProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InfraProvider.js","sourceRoot":"","sources":["../../../../src/infra/providers/InfraProvider.ts"],"names":[],"mappings":""}
@@ -0,0 +1,16 @@
1
+ import type { InfraProvider } from './InfraProvider';
2
+ import type { HealthStatus, PipelineConfig, DeployResult, JenkinsConfig } from '../types';
3
+ export declare class JenkinsProvider implements InfraProvider {
4
+ readonly name = "jenkins";
5
+ readonly type: "jenkins";
6
+ private client;
7
+ private config;
8
+ connect(config: JenkinsConfig): Promise<boolean>;
9
+ healthCheck(): Promise<HealthStatus>;
10
+ getStatus(): Promise<Record<string, any>>;
11
+ generatePipeline(cfg: PipelineConfig): Promise<string>;
12
+ triggerBuild(jobName: string, params?: Record<string, string>): Promise<DeployResult>;
13
+ getBuildStatus(jobName: string, buildNumber?: number): Promise<Record<string, any>>;
14
+ getBuildLogs(jobName: string, buildNumber: number): Promise<string>;
15
+ }
16
+ //# sourceMappingURL=JenkinsProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JenkinsProvider.d.ts","sourceRoot":"","sources":["../../../../src/infra/providers/JenkinsProvider.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAE1F,qBAAa,eAAgB,YAAW,aAAa;IACnD,QAAQ,CAAC,IAAI,aAAa;IAC1B,QAAQ,CAAC,IAAI,EAAG,SAAS,CAAU;IACnC,OAAO,CAAC,MAAM,CAA8B;IAC5C,OAAO,CAAC,MAAM,CAA8B;IAEtC,OAAO,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC;IAsBhD,WAAW,IAAI,OAAO,CAAC,YAAY,CAAC;IAqBpC,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAUzC,gBAAgB,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC;IA6DtD,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC;IAgCrF,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAgBnF,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAW1E"}