@achieveai/azuredevops-mcp 1.3.16 → 1.3.17

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 (94) hide show
  1. package/dist/Services/AzureDevOpsService.js +4 -3
  2. package/dist/Services/AzureDevOpsService.js.map +1 -1
  3. package/dist/Services/WorkItemService.js +105 -25
  4. package/dist/Services/WorkItemService.js.map +1 -1
  5. package/dist/Tools/WorkItemTools.js +1 -1
  6. package/dist/Tools/WorkItemTools.js.map +1 -1
  7. package/dist/index.js +5 -3
  8. package/dist/index.js.map +1 -1
  9. package/dist/package.json +59 -0
  10. package/dist/src/Interfaces/AIAssisted.js +3 -0
  11. package/dist/src/Interfaces/AIAssisted.js.map +1 -0
  12. package/dist/src/Interfaces/ArtifactManagement.js +3 -0
  13. package/dist/src/Interfaces/ArtifactManagement.js.map +1 -0
  14. package/dist/src/Interfaces/AzureDevOps.js +3 -0
  15. package/dist/src/Interfaces/AzureDevOps.js.map +1 -0
  16. package/dist/src/Interfaces/BoardsAndSprints.js +3 -0
  17. package/dist/src/Interfaces/BoardsAndSprints.js.map +1 -0
  18. package/dist/src/Interfaces/CodeAndRepositories.js +3 -0
  19. package/dist/src/Interfaces/CodeAndRepositories.js.map +1 -0
  20. package/dist/src/Interfaces/Common.js +134 -0
  21. package/dist/src/Interfaces/Common.js.map +1 -0
  22. package/dist/src/Interfaces/CostResourceManagement.js +3 -0
  23. package/dist/src/Interfaces/CostResourceManagement.js.map +1 -0
  24. package/dist/src/Interfaces/DevSecOps.js +3 -0
  25. package/dist/src/Interfaces/DevSecOps.js.map +1 -0
  26. package/dist/src/Interfaces/ExternalIntegrations.js +3 -0
  27. package/dist/src/Interfaces/ExternalIntegrations.js.map +1 -0
  28. package/dist/src/Interfaces/HybridCrossPlatform.js +3 -0
  29. package/dist/src/Interfaces/HybridCrossPlatform.js.map +1 -0
  30. package/dist/src/Interfaces/Pipelines.js +3 -0
  31. package/dist/src/Interfaces/Pipelines.js.map +1 -0
  32. package/dist/src/Interfaces/ProjectManagement.js +3 -0
  33. package/dist/src/Interfaces/ProjectManagement.js.map +1 -0
  34. package/dist/src/Interfaces/TestingCapabilities.js +3 -0
  35. package/dist/src/Interfaces/TestingCapabilities.js.map +1 -0
  36. package/dist/src/Interfaces/Wiki.js +3 -0
  37. package/dist/src/Interfaces/Wiki.js.map +1 -0
  38. package/dist/src/Interfaces/WorkItems.js +3 -0
  39. package/dist/src/Interfaces/WorkItems.js.map +1 -0
  40. package/dist/src/Services/AIAssistedDevelopmentService.js +195 -0
  41. package/dist/src/Services/AIAssistedDevelopmentService.js.map +1 -0
  42. package/dist/src/Services/ArtifactManagementService.js +346 -0
  43. package/dist/src/Services/ArtifactManagementService.js.map +1 -0
  44. package/dist/src/Services/AzureDevOpsService.js +385 -0
  45. package/dist/src/Services/AzureDevOpsService.js.map +1 -0
  46. package/dist/src/Services/BoardsSprintsService.js +339 -0
  47. package/dist/src/Services/BoardsSprintsService.js.map +1 -0
  48. package/dist/src/Services/BuildService.js +405 -0
  49. package/dist/src/Services/BuildService.js.map +1 -0
  50. package/dist/src/Services/DevSecOpsService.js +307 -0
  51. package/dist/src/Services/DevSecOpsService.js.map +1 -0
  52. package/dist/src/Services/EntraAuthHandler.js +337 -0
  53. package/dist/src/Services/EntraAuthHandler.js.map +1 -0
  54. package/dist/src/Services/GitService.js +1595 -0
  55. package/dist/src/Services/GitService.js.map +1 -0
  56. package/dist/src/Services/ProjectService.js +257 -0
  57. package/dist/src/Services/ProjectService.js.map +1 -0
  58. package/dist/src/Services/TestingCapabilitiesService.js +149 -0
  59. package/dist/src/Services/TestingCapabilitiesService.js.map +1 -0
  60. package/dist/src/Services/WikiService.js +90 -0
  61. package/dist/src/Services/WikiService.js.map +1 -0
  62. package/dist/src/Services/WorkItemService.js +885 -0
  63. package/dist/src/Services/WorkItemService.js.map +1 -0
  64. package/dist/src/Tools/AIAssistedDevelopmentTools.js +137 -0
  65. package/dist/src/Tools/AIAssistedDevelopmentTools.js.map +1 -0
  66. package/dist/src/Tools/ArtifactManagementTools.js +140 -0
  67. package/dist/src/Tools/ArtifactManagementTools.js.map +1 -0
  68. package/dist/src/Tools/BoardsSprintsTools.js +338 -0
  69. package/dist/src/Tools/BoardsSprintsTools.js.map +1 -0
  70. package/dist/src/Tools/BuildTools.js +468 -0
  71. package/dist/src/Tools/BuildTools.js.map +1 -0
  72. package/dist/src/Tools/DevSecOpsTools.js +147 -0
  73. package/dist/src/Tools/DevSecOpsTools.js.map +1 -0
  74. package/dist/src/Tools/GitTools.js +1475 -0
  75. package/dist/src/Tools/GitTools.js.map +1 -0
  76. package/dist/src/Tools/ProjectTools.js +360 -0
  77. package/dist/src/Tools/ProjectTools.js.map +1 -0
  78. package/dist/src/Tools/TestingCapabilitiesTools.js +157 -0
  79. package/dist/src/Tools/TestingCapabilitiesTools.js.map +1 -0
  80. package/dist/src/Tools/WikiTools.js +137 -0
  81. package/dist/src/Tools/WikiTools.js.map +1 -0
  82. package/dist/src/Tools/WorkItemTools.js +862 -0
  83. package/dist/src/Tools/WorkItemTools.js.map +1 -0
  84. package/dist/src/config.js +176 -0
  85. package/dist/src/config.js.map +1 -0
  86. package/dist/src/index.js +1716 -0
  87. package/dist/src/index.js.map +1 -0
  88. package/dist/src/utils/formatHelpers.js +257 -0
  89. package/dist/src/utils/formatHelpers.js.map +1 -0
  90. package/dist/src/utils/getClassMethods.js +8 -0
  91. package/dist/src/utils/getClassMethods.js.map +1 -0
  92. package/dist/src/utils/repositoryResolver.js +40 -0
  93. package/dist/src/utils/repositoryResolver.js.map +1 -0
  94. package/package.json +1 -1
@@ -0,0 +1,468 @@
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 result = await this.buildService.getBuildWorkItems(params);
276
+ const workItems = result.workItems || [];
277
+ if (workItems.length === 0) {
278
+ return (0, Common_1.formatMcpResponse)(result, `## Build #${params.buildId} - Work Items\n\nNo associated work items found.`);
279
+ }
280
+ let md = `## Build #${params.buildId} - Work Items\n\n`;
281
+ md += `**${workItems.length} work item${workItems.length !== 1 ? 's' : ''}**\n\n`;
282
+ md += (0, formatHelpers_1.buildWorkItemSummaryTable)(workItems);
283
+ return (0, Common_1.formatMcpResponse)(result, md, false, true);
284
+ }
285
+ catch (error) {
286
+ return (0, Common_1.formatErrorResponse)(error);
287
+ }
288
+ }
289
+ // ── Get Pull Request Builds ─────────────────────────────────────
290
+ async getPullRequestBuilds(params) {
291
+ try {
292
+ const result = await this.buildService.getPullRequestBuilds(params);
293
+ const builds = result.builds || [];
294
+ if (builds.length === 0) {
295
+ return (0, Common_1.formatMcpResponse)(result, `## PR #${params.pullRequestId} - Builds\n\nNo builds found associated with this pull request.`);
296
+ }
297
+ let md = `## PR #${params.pullRequestId} - Builds\n\n`;
298
+ md += `**${builds.length} build${builds.length !== 1 ? 's' : ''}** found from policy evaluations\n\n`;
299
+ for (const build of builds) {
300
+ if (build.error) {
301
+ md += `### ❓ ${build.policyDefinitionName} (Build #${build.buildId})\n`;
302
+ md += `Error: ${build.error}\n\n`;
303
+ continue;
304
+ }
305
+ md += `### ${getBuildResultEmoji(build.result)} ${build.policyDefinitionName || build.definition?.name || 'Unknown'}\n\n`;
306
+ md += `| Property | Value |\n|---|---|\n`;
307
+ md += `| **Build ID** | ${build.id} |\n`;
308
+ md += `| **Build Number** | ${build.buildNumber || '-'} |\n`;
309
+ md += `| **Status** | ${getBuildStatusEmoji(build.status)} ${getBuildStatusLabel(build.status)} |\n`;
310
+ md += `| **Result** | ${getBuildResultEmoji(build.result)} ${getBuildResultLabel(build.result)} |\n`;
311
+ md += `| **Policy Status** | ${build.policyStatus || '-'} |\n`;
312
+ md += `| **Branch** | \`${build.sourceBranch?.replace('refs/heads/', '') || '-'}\` |\n`;
313
+ md += `| **Started** | ${build.startTime ? (0, formatHelpers_1.formatFullDate)(build.startTime) : 'Not started'} |\n`;
314
+ md += `| **Finished** | ${build.finishTime ? (0, formatHelpers_1.formatFullDate)(build.finishTime) : 'In progress'} |\n`;
315
+ md += `| **Duration** | ${formatDuration(build.startTime, build.finishTime)} |\n`;
316
+ md += '\n';
317
+ // Timeline summary if included
318
+ if (build.timeline?.records) {
319
+ const records = build.timeline.records;
320
+ const stages = records.filter((r) => r.type === 'Stage');
321
+ const failedTasks = records.filter((r) => r.type === 'Task' && (r.result === 2 || r.result === 'failed'));
322
+ if (stages.length > 0) {
323
+ md += '**Stages:**\n\n';
324
+ const stageRows = stages.map((s) => [
325
+ getTimelineResultEmoji(s.result),
326
+ (0, formatHelpers_1.truncateText)(s.name || 'Unknown', 40),
327
+ formatTimelineResult(s.result),
328
+ formatDuration(s.startTime, s.finishTime),
329
+ ]);
330
+ md += (0, formatHelpers_1.markdownTable)(['', 'Stage', 'Result', 'Duration'], stageRows);
331
+ md += '\n\n';
332
+ }
333
+ if (failedTasks.length > 0) {
334
+ md += '**Failed Tasks:**\n\n';
335
+ const taskRows = failedTasks.map((t) => [
336
+ '❌',
337
+ (0, formatHelpers_1.truncateText)(t.name || 'Unknown', 40),
338
+ `Log #${t.log?.id || 'N/A'}`,
339
+ (0, formatHelpers_1.truncateText)(t.issues?.map((i) => i.message).join('; ') || '-', 80),
340
+ ]);
341
+ md += (0, formatHelpers_1.markdownTable)(['', 'Task', 'Log ID', 'Issues'], taskRows);
342
+ md += '\n\n';
343
+ }
344
+ }
345
+ // Log metadata summary if included
346
+ if (build.logMetadata) {
347
+ md += `**${build.logMetadata.length} log entries available.** Use \`getBuildLog\` with buildId=${build.id} and a logId to view specific logs.\n\n`;
348
+ }
349
+ md += '---\n\n';
350
+ }
351
+ md += `\n> **Tip:** Use \`getBuildTimeline\` with a buildId to see detailed stage/job/task breakdown, or \`getBuildLog\` with buildId and logId to read specific log content.`;
352
+ return (0, Common_1.formatMcpResponse)(result, md, false, true);
353
+ }
354
+ catch (error) {
355
+ return (0, Common_1.formatErrorResponse)(error);
356
+ }
357
+ }
358
+ }
359
+ exports.BuildTools = BuildTools;
360
+ // ── Export tool method names ──────────────────────────────────────
361
+ exports.BuildToolMethods = (0, getClassMethods_1.default)(BuildTools.prototype);
362
+ // ── Helper Functions ─────────────────────────────────────────────
363
+ function getBuildStatusEmoji(status) {
364
+ switch (status) {
365
+ case 1: return '🔄'; // InProgress
366
+ case 2: return '✅'; // Completed
367
+ case 4: return '⏸️'; // Cancelling
368
+ case 8: return '⏳'; // Postponed
369
+ case 32: return '🆕'; // NotStarted
370
+ default: return '❓';
371
+ }
372
+ }
373
+ function getBuildStatusLabel(status) {
374
+ switch (status) {
375
+ case 1: return 'In Progress';
376
+ case 2: return 'Completed';
377
+ case 4: return 'Cancelling';
378
+ case 8: return 'Postponed';
379
+ case 32: return 'Not Started';
380
+ default: return 'None';
381
+ }
382
+ }
383
+ function getBuildResultEmoji(result) {
384
+ switch (result) {
385
+ case 2: return '✅'; // Succeeded
386
+ case 4: return '⚠️'; // PartiallySucceeded
387
+ case 8: return '❌'; // Failed
388
+ case 32: return '🚫'; // Canceled
389
+ default: return '➖';
390
+ }
391
+ }
392
+ function getBuildResultLabel(result) {
393
+ switch (result) {
394
+ case 2: return 'Succeeded';
395
+ case 4: return 'Partially Succeeded';
396
+ case 8: return 'Failed';
397
+ case 32: return 'Canceled';
398
+ default: return 'None';
399
+ }
400
+ }
401
+ function getBuildReasonLabel(reason) {
402
+ switch (reason) {
403
+ case 1: return 'Manual';
404
+ case 2: return 'Individual CI';
405
+ case 4: return 'Batch CI';
406
+ case 8: return 'Schedule';
407
+ case 16: return 'Schedule Forced';
408
+ case 32: return 'User Created';
409
+ case 64: return 'Validate Shelveset';
410
+ case 128: return 'Check-in Shelveset';
411
+ case 256: return 'Pull Request';
412
+ case 512: return 'Build Completion';
413
+ case 1024: return 'Resource Trigger';
414
+ default: return `${reason || 'Unknown'}`;
415
+ }
416
+ }
417
+ function getTimelineResultEmoji(result) {
418
+ if (result === undefined || result === null)
419
+ return '🔄';
420
+ const r = typeof result === 'number' ? result : String(result).toLowerCase();
421
+ if (r === 0 || r === 'succeeded')
422
+ return '✅';
423
+ if (r === 1 || r === 'succeededwithissues')
424
+ return '⚠️';
425
+ if (r === 2 || r === 'failed')
426
+ return '❌';
427
+ if (r === 3 || r === 'canceled')
428
+ return '🚫';
429
+ if (r === 4 || r === 'skipped')
430
+ return '⏭️';
431
+ return '🔄';
432
+ }
433
+ function formatDuration(start, end) {
434
+ if (!start)
435
+ return '-';
436
+ const startTime = new Date(start).getTime();
437
+ const endTime = end ? new Date(end).getTime() : Date.now();
438
+ const diffMs = endTime - startTime;
439
+ if (diffMs < 0)
440
+ return '-';
441
+ if (diffMs < 1000)
442
+ return '<1s';
443
+ const seconds = Math.floor(diffMs / 1000);
444
+ const minutes = Math.floor(seconds / 60);
445
+ const hours = Math.floor(minutes / 60);
446
+ if (hours > 0)
447
+ return `${hours}h ${minutes % 60}m`;
448
+ if (minutes > 0)
449
+ return `${minutes}m ${seconds % 60}s`;
450
+ return `${seconds}s`;
451
+ }
452
+ function formatTimelineState(state) {
453
+ if (state === undefined || state === null)
454
+ return '-';
455
+ const stateMap = { 0: 'Pending', 1: 'In Progress', 2: 'Completed' };
456
+ if (typeof state === 'number')
457
+ return stateMap[state] || `${state}`;
458
+ return String(state);
459
+ }
460
+ function formatTimelineResult(result) {
461
+ if (result === undefined || result === null)
462
+ return '-';
463
+ const resultMap = { 0: 'Succeeded', 1: 'Succeeded with Issues', 2: 'Failed', 3: 'Canceled', 4: 'Skipped', 5: 'Abandoned' };
464
+ if (typeof result === 'number')
465
+ return resultMap[result] || `${result}`;
466
+ return String(result);
467
+ }
468
+ //# 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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"}