@achieveai/azuredevops-mcp 1.2.1 → 1.2.3

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.
@@ -0,0 +1,402 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.BuildToolMethods = exports.BuildTools = void 0;
7
+ const BuildService_1 = require("../Services/BuildService");
8
+ const Common_1 = require("../Interfaces/Common");
9
+ const getClassMethods_1 = __importDefault(require("../utils/getClassMethods"));
10
+ const formatHelpers_1 = require("../utils/formatHelpers");
11
+ class BuildTools {
12
+ constructor(config) {
13
+ this.buildService = new BuildService_1.BuildService(config);
14
+ }
15
+ // ── List Builds ──────────────────────────────────────────────────
16
+ async getBuilds(params) {
17
+ try {
18
+ const builds = await this.buildService.getBuilds(params);
19
+ if (builds.length === 0) {
20
+ return (0, Common_1.formatMcpResponse)(builds, `## Builds\n\nNo builds found matching the specified filters.`);
21
+ }
22
+ let md = `## Builds\n\n**${builds.length} build${builds.length !== 1 ? 's' : ''}** found\n\n`;
23
+ const rows = builds.map((b) => [
24
+ `#${b.id || 'N/A'}`,
25
+ (0, formatHelpers_1.truncateText)(b.definition?.name || 'Unknown', 30),
26
+ b.buildNumber || '-',
27
+ getBuildStatusEmoji(b.status) + ' ' + getBuildStatusLabel(b.status),
28
+ getBuildResultEmoji(b.result) + ' ' + getBuildResultLabel(b.result),
29
+ (0, formatHelpers_1.truncateText)(b.sourceBranch?.replace('refs/heads/', '') || '-', 25),
30
+ b.requestedFor?.displayName || '-',
31
+ b.startTime ? (0, formatHelpers_1.formatRelativeDate)(b.startTime) : '-',
32
+ formatDuration(b.startTime, b.finishTime),
33
+ ]);
34
+ md += (0, formatHelpers_1.markdownTable)(['ID', 'Pipeline', 'Build #', 'Status', 'Result', 'Branch', 'Requested By', 'Started', 'Duration'], rows);
35
+ return (0, Common_1.formatMcpResponse)(builds, md, false, true);
36
+ }
37
+ catch (error) {
38
+ return (0, Common_1.formatErrorResponse)(error);
39
+ }
40
+ }
41
+ // ── Get Build ────────────────────────────────────────────────────
42
+ async getBuild(params) {
43
+ try {
44
+ const build = await this.buildService.getBuild(params);
45
+ let md = `## Build #${build.id}\n\n`;
46
+ md += `| Property | Value |\n|---|---|\n`;
47
+ md += `| **Pipeline** | ${build.definition?.name || 'Unknown'} |\n`;
48
+ md += `| **Build Number** | ${build.buildNumber || '-'} |\n`;
49
+ md += `| **Status** | ${getBuildStatusEmoji(build.status)} ${getBuildStatusLabel(build.status)} |\n`;
50
+ md += `| **Result** | ${getBuildResultEmoji(build.result)} ${getBuildResultLabel(build.result)} |\n`;
51
+ md += `| **Branch** | \`${build.sourceBranch?.replace('refs/heads/', '') || '-'}\` |\n`;
52
+ md += `| **Source Version** | \`${(0, formatHelpers_1.truncateText)(build.sourceVersion || '-', 12)}\` |\n`;
53
+ md += `| **Requested By** | ${build.requestedFor?.displayName || '-'} |\n`;
54
+ md += `| **Requested For** | ${build.requestedFor?.displayName || '-'} |\n`;
55
+ md += `| **Queue** | ${build.queue?.name || '-'} |\n`;
56
+ md += `| **Start Time** | ${build.startTime ? (0, formatHelpers_1.formatFullDate)(build.startTime) : 'Not started'} |\n`;
57
+ md += `| **Finish Time** | ${build.finishTime ? (0, formatHelpers_1.formatFullDate)(build.finishTime) : 'In progress'} |\n`;
58
+ md += `| **Duration** | ${formatDuration(build.startTime, build.finishTime)} |\n`;
59
+ md += `| **Reason** | ${getBuildReasonLabel(build.reason)} |\n`;
60
+ if (build.tags && build.tags.length > 0) {
61
+ md += `| **Tags** | ${build.tags.join(', ')} |\n`;
62
+ }
63
+ if (build.triggerInfo) {
64
+ md += `\n### Trigger Info\n`;
65
+ md += `| Key | Value |\n|---|---|\n`;
66
+ for (const [key, value] of Object.entries(build.triggerInfo)) {
67
+ md += `| ${key} | ${value} |\n`;
68
+ }
69
+ }
70
+ return (0, Common_1.formatMcpResponse)(build, md, false, true);
71
+ }
72
+ catch (error) {
73
+ return (0, Common_1.formatErrorResponse)(error);
74
+ }
75
+ }
76
+ // ── Get Build Logs ───────────────────────────────────────────────
77
+ async getBuildLog(params) {
78
+ try {
79
+ const result = await this.buildService.getBuildLogs(params);
80
+ if (params.logId !== undefined) {
81
+ // Specific log content
82
+ const lines = result.lines || [];
83
+ let md = `## Build #${params.buildId} - Log #${params.logId}\n\n`;
84
+ md += `**${lines.length} line${lines.length !== 1 ? 's' : ''}**\n\n`;
85
+ md += '```\n';
86
+ md += lines.join('\n');
87
+ md += '\n```';
88
+ return (0, Common_1.formatMcpResponse)(result, md, false, true);
89
+ }
90
+ // Log metadata list
91
+ const logs = result;
92
+ let md = `## Build #${params.buildId} - Logs\n\n`;
93
+ md += `**${logs.length} log${logs.length !== 1 ? 's' : ''}** available\n\n`;
94
+ if (logs.length > 0) {
95
+ const rows = logs.map((log) => [
96
+ `${log.id || 'N/A'}`,
97
+ log.type || '-',
98
+ `${log.lineCount || 0}`,
99
+ ]);
100
+ md += (0, formatHelpers_1.markdownTable)(['Log ID', 'Type', 'Lines'], rows);
101
+ md += `\n\nUse \`getBuildLog\` with a specific \`logId\` to view log content.`;
102
+ }
103
+ return (0, Common_1.formatMcpResponse)(result, md, false, true);
104
+ }
105
+ catch (error) {
106
+ return (0, Common_1.formatErrorResponse)(error);
107
+ }
108
+ }
109
+ // ── Get Build Changes ────────────────────────────────────────────
110
+ async getBuildChanges(params) {
111
+ try {
112
+ const changes = await this.buildService.getBuildChanges(params);
113
+ if (changes.length === 0) {
114
+ return (0, Common_1.formatMcpResponse)(changes, `## Build #${params.buildId} - Changes\n\nNo changes found.`);
115
+ }
116
+ let md = `## Build #${params.buildId} - Changes\n\n`;
117
+ md += `**${changes.length} change${changes.length !== 1 ? 's' : ''}**\n\n`;
118
+ const rows = changes.map((c) => [
119
+ (0, formatHelpers_1.truncateText)(c.id || '-', 12),
120
+ c.author?.displayName || '-',
121
+ (0, formatHelpers_1.truncateText)(c.message || '-', 60),
122
+ c.timestamp ? (0, formatHelpers_1.formatRelativeDate)(c.timestamp) : '-',
123
+ ]);
124
+ md += (0, formatHelpers_1.markdownTable)(['Commit', 'Author', 'Message', 'Date'], rows);
125
+ return (0, Common_1.formatMcpResponse)(changes, md, false, true);
126
+ }
127
+ catch (error) {
128
+ return (0, Common_1.formatErrorResponse)(error);
129
+ }
130
+ }
131
+ // ── List Definitions ─────────────────────────────────────────────
132
+ async getDefinitions(params) {
133
+ try {
134
+ const definitions = await this.buildService.getDefinitions(params);
135
+ if (definitions.length === 0) {
136
+ return (0, Common_1.formatMcpResponse)(definitions, `## Pipeline Definitions\n\nNo definitions found.`);
137
+ }
138
+ let md = `## Pipeline Definitions\n\n`;
139
+ md += `**${definitions.length} definition${definitions.length !== 1 ? 's' : ''}** found\n\n`;
140
+ const rows = definitions.map((d) => [
141
+ `${d.id || 'N/A'}`,
142
+ d.name || 'Unknown',
143
+ d.path || '\\',
144
+ d.type === 2 ? 'YAML' : d.type === 1 ? 'Designer' : `${d.type || '-'}`,
145
+ d.queueStatus === 0 ? 'Enabled' : d.queueStatus === 1 ? 'Paused' : d.queueStatus === 2 ? 'Disabled' : '-',
146
+ d.latestBuild ? `#${d.latestBuild.id} (${getBuildResultLabel(d.latestBuild.result)})` : '-',
147
+ ]);
148
+ md += (0, formatHelpers_1.markdownTable)(['ID', 'Name', 'Path', 'Type', 'Status', 'Latest Build'], rows);
149
+ return (0, Common_1.formatMcpResponse)(definitions, md, false, true);
150
+ }
151
+ catch (error) {
152
+ return (0, Common_1.formatErrorResponse)(error);
153
+ }
154
+ }
155
+ // ── Get Definition ───────────────────────────────────────────────
156
+ async getDefinition(params) {
157
+ try {
158
+ const def = await this.buildService.getDefinition(params);
159
+ let md = `## Pipeline Definition #${def.id}\n\n`;
160
+ md += `| Property | Value |\n|---|---|\n`;
161
+ md += `| **Name** | ${def.name || 'Unknown'} |\n`;
162
+ md += `| **Path** | ${def.path || '\\'} |\n`;
163
+ md += `| **Type** | ${def.type === 2 ? 'YAML' : def.type === 1 ? 'Designer' : `${def.type || '-'}`} |\n`;
164
+ md += `| **Queue Status** | ${def.queueStatus === 0 ? 'Enabled' : def.queueStatus === 1 ? 'Paused' : 'Disabled'} |\n`;
165
+ md += `| **Default Branch** | \`${def.repository?.defaultBranch?.replace('refs/heads/', '') || '-'}\` |\n`;
166
+ md += `| **Repository** | ${def.repository?.name || '-'} |\n`;
167
+ if (def.process?.yamlFilename) {
168
+ md += `| **YAML File** | \`${def.process.yamlFilename}\` |\n`;
169
+ }
170
+ if (def.latestBuild) {
171
+ md += `\n### Latest Build\n`;
172
+ md += `| Property | Value |\n|---|---|\n`;
173
+ md += `| **Build #** | ${def.latestBuild.buildNumber || '-'} |\n`;
174
+ md += `| **Result** | ${getBuildResultEmoji(def.latestBuild.result)} ${getBuildResultLabel(def.latestBuild.result)} |\n`;
175
+ md += `| **Date** | ${def.latestBuild.finishTime ? (0, formatHelpers_1.formatFullDate)(def.latestBuild.finishTime) : '-'} |\n`;
176
+ }
177
+ return (0, Common_1.formatMcpResponse)(def, md, false, true);
178
+ }
179
+ catch (error) {
180
+ return (0, Common_1.formatErrorResponse)(error);
181
+ }
182
+ }
183
+ // ── Run Pipeline ─────────────────────────────────────────────────
184
+ async runPipeline(params) {
185
+ try {
186
+ const build = await this.buildService.runPipeline(params);
187
+ let md = `## Pipeline Run Queued\n\n`;
188
+ md += `Build **#${build.id}** has been queued successfully.\n\n`;
189
+ md += `| Property | Value |\n|---|---|\n`;
190
+ md += `| **Build ID** | ${build.id} |\n`;
191
+ md += `| **Build Number** | ${build.buildNumber || 'Pending'} |\n`;
192
+ md += `| **Pipeline** | ${build.definition?.name || 'Unknown'} |\n`;
193
+ md += `| **Status** | ${getBuildStatusEmoji(build.status)} ${getBuildStatusLabel(build.status)} |\n`;
194
+ md += `| **Branch** | \`${build.sourceBranch?.replace('refs/heads/', '') || '-'}\` |\n`;
195
+ md += `| **Requested By** | ${build.requestedBy?.displayName || '-'} |\n`;
196
+ return (0, Common_1.formatMcpResponse)(build, md, false, true);
197
+ }
198
+ catch (error) {
199
+ return (0, Common_1.formatErrorResponse)(error);
200
+ }
201
+ }
202
+ // ── List Build Artifacts ─────────────────────────────────────────
203
+ async getBuildArtifacts(params) {
204
+ try {
205
+ const artifacts = await this.buildService.getBuildArtifacts(params);
206
+ if (artifacts.length === 0) {
207
+ return (0, Common_1.formatMcpResponse)(artifacts, `## Build #${params.buildId} - Artifacts\n\nNo artifacts found.`);
208
+ }
209
+ let md = `## Build #${params.buildId} - Artifacts\n\n`;
210
+ md += `**${artifacts.length} artifact${artifacts.length !== 1 ? 's' : ''}**\n\n`;
211
+ const rows = artifacts.map((a) => [
212
+ `${a.id || 'N/A'}`,
213
+ a.name || 'Unknown',
214
+ a.resource?.type || '-',
215
+ a.resource?.url ? '[Download](' + a.resource.url + ')' : '-',
216
+ ]);
217
+ md += (0, formatHelpers_1.markdownTable)(['ID', 'Name', 'Type', 'Link'], rows);
218
+ return (0, Common_1.formatMcpResponse)(artifacts, md, false, true);
219
+ }
220
+ catch (error) {
221
+ return (0, Common_1.formatErrorResponse)(error);
222
+ }
223
+ }
224
+ // ── Get Build Timeline ───────────────────────────────────────────
225
+ async getBuildTimeline(params) {
226
+ try {
227
+ const timeline = await this.buildService.getBuildTimeline(params);
228
+ const records = timeline?.records || [];
229
+ if (records.length === 0) {
230
+ return (0, Common_1.formatMcpResponse)(timeline, `## Build #${params.buildId} - Timeline\n\nNo timeline records found.`);
231
+ }
232
+ // Group by type: Stage > Job > Task
233
+ // Azure DevOps uses "Phase" for job-level and "Job" for the actual job record
234
+ const stages = records.filter((r) => r.type === 'Stage');
235
+ const phases = records.filter((r) => r.type === 'Phase');
236
+ const jobs = records.filter((r) => r.type === 'Job');
237
+ const tasks = records.filter((r) => r.type === 'Task');
238
+ let md = `## Build #${params.buildId} - Timeline\n\n`;
239
+ md += `**${stages.length} stage(s), ${phases.length + jobs.length} job(s), ${tasks.length} task(s)**\n\n`;
240
+ for (const stage of stages) {
241
+ md += `### ${getTimelineResultEmoji(stage.result)} Stage: ${stage.name || 'Unknown'}\n`;
242
+ md += `Status: ${formatTimelineState(stage.state)} | Result: ${formatTimelineResult(stage.result)} | Duration: ${formatDuration(stage.startTime, stage.finishTime)}\n\n`;
243
+ const stagePhases = phases.filter((p) => p.parentId === stage.id);
244
+ // If no phases, fall back to jobs directly under the stage
245
+ const stageJobs = stagePhases.length > 0 ? stagePhases : jobs.filter((j) => j.parentId === stage.id);
246
+ for (const job of stageJobs) {
247
+ md += `#### ${getTimelineResultEmoji(job.result)} Job: ${job.name || 'Unknown'}\n`;
248
+ md += `Status: ${formatTimelineState(job.state)} | Result: ${formatTimelineResult(job.result)} | Duration: ${formatDuration(job.startTime, job.finishTime)}\n\n`;
249
+ // Tasks may be under Job records (children of Phase), or directly under Phase
250
+ const childJobIds = jobs.filter((j) => j.parentId === job.id).map((j) => j.id);
251
+ const taskParentIds = childJobIds.length > 0 ? childJobIds : [job.id];
252
+ const jobTasks = tasks.filter((t) => taskParentIds.includes(t.parentId));
253
+ if (jobTasks.length > 0) {
254
+ const taskRows = jobTasks.map((t) => [
255
+ getTimelineResultEmoji(t.result),
256
+ (0, formatHelpers_1.truncateText)(t.name || 'Unknown', 40),
257
+ formatTimelineState(t.state),
258
+ formatTimelineResult(t.result),
259
+ formatDuration(t.startTime, t.finishTime),
260
+ ]);
261
+ md += (0, formatHelpers_1.markdownTable)(['', 'Task', 'State', 'Result', 'Duration'], taskRows);
262
+ md += '\n\n';
263
+ }
264
+ }
265
+ }
266
+ return (0, Common_1.formatMcpResponse)(timeline, md, false, true);
267
+ }
268
+ catch (error) {
269
+ return (0, Common_1.formatErrorResponse)(error);
270
+ }
271
+ }
272
+ // ── Get Build Work Items ─────────────────────────────────────────
273
+ async getBuildWorkItems(params) {
274
+ try {
275
+ const workItems = await this.buildService.getBuildWorkItems(params);
276
+ if (workItems.length === 0) {
277
+ return (0, Common_1.formatMcpResponse)(workItems, `## Build #${params.buildId} - Work Items\n\nNo associated work items found.`);
278
+ }
279
+ let md = `## Build #${params.buildId} - Work Items\n\n`;
280
+ md += `**${workItems.length} work item${workItems.length !== 1 ? 's' : ''}**\n\n`;
281
+ const rows = workItems.map((wi) => [
282
+ `#${wi.id || 'N/A'}`,
283
+ wi.url ? `[View](${wi.url})` : '-',
284
+ ]);
285
+ md += (0, formatHelpers_1.markdownTable)(['ID', 'Link'], rows);
286
+ return (0, Common_1.formatMcpResponse)(workItems, md, false, true);
287
+ }
288
+ catch (error) {
289
+ return (0, Common_1.formatErrorResponse)(error);
290
+ }
291
+ }
292
+ }
293
+ exports.BuildTools = BuildTools;
294
+ // ── Export tool method names ──────────────────────────────────────
295
+ exports.BuildToolMethods = (0, getClassMethods_1.default)(BuildTools);
296
+ // ── Helper Functions ─────────────────────────────────────────────
297
+ function getBuildStatusEmoji(status) {
298
+ switch (status) {
299
+ case 1: return '🔄'; // InProgress
300
+ case 2: return '✅'; // Completed
301
+ case 4: return '⏸️'; // Cancelling
302
+ case 8: return '⏳'; // Postponed
303
+ case 32: return '🆕'; // NotStarted
304
+ default: return '❓';
305
+ }
306
+ }
307
+ function getBuildStatusLabel(status) {
308
+ switch (status) {
309
+ case 1: return 'In Progress';
310
+ case 2: return 'Completed';
311
+ case 4: return 'Cancelling';
312
+ case 8: return 'Postponed';
313
+ case 32: return 'Not Started';
314
+ default: return 'None';
315
+ }
316
+ }
317
+ function getBuildResultEmoji(result) {
318
+ switch (result) {
319
+ case 2: return '✅'; // Succeeded
320
+ case 4: return '⚠️'; // PartiallySucceeded
321
+ case 8: return '❌'; // Failed
322
+ case 32: return '🚫'; // Canceled
323
+ default: return '➖';
324
+ }
325
+ }
326
+ function getBuildResultLabel(result) {
327
+ switch (result) {
328
+ case 2: return 'Succeeded';
329
+ case 4: return 'Partially Succeeded';
330
+ case 8: return 'Failed';
331
+ case 32: return 'Canceled';
332
+ default: return 'None';
333
+ }
334
+ }
335
+ function getBuildReasonLabel(reason) {
336
+ switch (reason) {
337
+ case 1: return 'Manual';
338
+ case 2: return 'Individual CI';
339
+ case 4: return 'Batch CI';
340
+ case 8: return 'Schedule';
341
+ case 16: return 'Schedule Forced';
342
+ case 32: return 'User Created';
343
+ case 64: return 'Validate Shelveset';
344
+ case 128: return 'Check-in Shelveset';
345
+ case 256: return 'Pull Request';
346
+ case 512: return 'Build Completion';
347
+ case 1024: return 'Resource Trigger';
348
+ default: return `${reason || 'Unknown'}`;
349
+ }
350
+ }
351
+ function getTimelineResultEmoji(result) {
352
+ if (result === undefined || result === null)
353
+ return '🔄';
354
+ const r = typeof result === 'number' ? result : String(result).toLowerCase();
355
+ if (r === 0 || r === 'succeeded')
356
+ return '✅';
357
+ if (r === 1 || r === 'succeededwithissues')
358
+ return '⚠️';
359
+ if (r === 2 || r === 'failed')
360
+ return '❌';
361
+ if (r === 3 || r === 'canceled')
362
+ return '🚫';
363
+ if (r === 4 || r === 'skipped')
364
+ return '⏭️';
365
+ return '🔄';
366
+ }
367
+ function formatDuration(start, end) {
368
+ if (!start)
369
+ return '-';
370
+ const startTime = new Date(start).getTime();
371
+ const endTime = end ? new Date(end).getTime() : Date.now();
372
+ const diffMs = endTime - startTime;
373
+ if (diffMs < 0)
374
+ return '-';
375
+ if (diffMs < 1000)
376
+ return '<1s';
377
+ const seconds = Math.floor(diffMs / 1000);
378
+ const minutes = Math.floor(seconds / 60);
379
+ const hours = Math.floor(minutes / 60);
380
+ if (hours > 0)
381
+ return `${hours}h ${minutes % 60}m`;
382
+ if (minutes > 0)
383
+ return `${minutes}m ${seconds % 60}s`;
384
+ return `${seconds}s`;
385
+ }
386
+ function formatTimelineState(state) {
387
+ if (state === undefined || state === null)
388
+ return '-';
389
+ const stateMap = { 0: 'Pending', 1: 'In Progress', 2: 'Completed' };
390
+ if (typeof state === 'number')
391
+ return stateMap[state] || `${state}`;
392
+ return String(state);
393
+ }
394
+ function formatTimelineResult(result) {
395
+ if (result === undefined || result === null)
396
+ return '-';
397
+ const resultMap = { 0: 'Succeeded', 1: 'Succeeded with Issues', 2: 'Failed', 3: 'Canceled', 4: 'Skipped', 5: 'Abandoned' };
398
+ if (typeof result === 'number')
399
+ return resultMap[result] || `${result}`;
400
+ return String(result);
401
+ }
402
+ //# sourceMappingURL=BuildTools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BuildTools.js","sourceRoot":"","sources":["../../src/Tools/BuildTools.ts"],"names":[],"mappings":"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"}