@achieveai/azuredevops-mcp 1.3.17 → 1.3.19

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 (119) hide show
  1. package/README.md +76 -0
  2. package/dist/Interfaces/Common.js +37 -1
  3. package/dist/Interfaces/Common.js.map +1 -1
  4. package/dist/Services/AzureDevOpsService.js +234 -32
  5. package/dist/Services/AzureDevOpsService.js.map +1 -1
  6. package/dist/Services/BoardsSprintsService.js +111 -13
  7. package/dist/Services/BoardsSprintsService.js.map +1 -1
  8. package/dist/Services/BuildService.js +157 -24
  9. package/dist/Services/BuildService.js.map +1 -1
  10. package/dist/Services/GitService.js +26 -3
  11. package/dist/Services/GitService.js.map +1 -1
  12. package/dist/Services/ProjectService.js +47 -6
  13. package/dist/Services/ProjectService.js.map +1 -1
  14. package/dist/Services/WorkItemService.js +183 -170
  15. package/dist/Services/WorkItemService.js.map +1 -1
  16. package/dist/Tools/BoardsSprintsTools.js +2 -8
  17. package/dist/Tools/BoardsSprintsTools.js.map +1 -1
  18. package/dist/Tools/BuildTools.js +5 -8
  19. package/dist/Tools/BuildTools.js.map +1 -1
  20. package/dist/Tools/GitTools.js +177 -62
  21. package/dist/Tools/GitTools.js.map +1 -1
  22. package/dist/Tools/WorkItemTools.js +110 -172
  23. package/dist/Tools/WorkItemTools.js.map +1 -1
  24. package/dist/index.js +31 -26
  25. package/dist/index.js.map +1 -1
  26. package/dist/utils/apiUsageGuidance.js +336 -0
  27. package/dist/utils/apiUsageGuidance.js.map +1 -0
  28. package/dist/utils/formatHelpers.js +15 -0
  29. package/dist/utils/formatHelpers.js.map +1 -1
  30. package/package.json +3 -3
  31. package/dist/Services/BuildService.project.test.js +0 -91
  32. package/dist/Services/BuildService.project.test.js.map +0 -1
  33. package/dist/Services/GitService.project.test.js +0 -407
  34. package/dist/Services/GitService.project.test.js.map +0 -1
  35. package/dist/package.json +0 -59
  36. package/dist/src/Interfaces/AIAssisted.js +0 -3
  37. package/dist/src/Interfaces/AIAssisted.js.map +0 -1
  38. package/dist/src/Interfaces/ArtifactManagement.js +0 -3
  39. package/dist/src/Interfaces/ArtifactManagement.js.map +0 -1
  40. package/dist/src/Interfaces/AzureDevOps.js +0 -3
  41. package/dist/src/Interfaces/AzureDevOps.js.map +0 -1
  42. package/dist/src/Interfaces/BoardsAndSprints.js +0 -3
  43. package/dist/src/Interfaces/BoardsAndSprints.js.map +0 -1
  44. package/dist/src/Interfaces/CodeAndRepositories.js +0 -3
  45. package/dist/src/Interfaces/CodeAndRepositories.js.map +0 -1
  46. package/dist/src/Interfaces/Common.js +0 -134
  47. package/dist/src/Interfaces/Common.js.map +0 -1
  48. package/dist/src/Interfaces/CostResourceManagement.js +0 -3
  49. package/dist/src/Interfaces/CostResourceManagement.js.map +0 -1
  50. package/dist/src/Interfaces/DevSecOps.js +0 -3
  51. package/dist/src/Interfaces/DevSecOps.js.map +0 -1
  52. package/dist/src/Interfaces/ExternalIntegrations.js +0 -3
  53. package/dist/src/Interfaces/ExternalIntegrations.js.map +0 -1
  54. package/dist/src/Interfaces/HybridCrossPlatform.js +0 -3
  55. package/dist/src/Interfaces/HybridCrossPlatform.js.map +0 -1
  56. package/dist/src/Interfaces/Pipelines.js +0 -3
  57. package/dist/src/Interfaces/Pipelines.js.map +0 -1
  58. package/dist/src/Interfaces/ProjectManagement.js +0 -3
  59. package/dist/src/Interfaces/ProjectManagement.js.map +0 -1
  60. package/dist/src/Interfaces/TestingCapabilities.js +0 -3
  61. package/dist/src/Interfaces/TestingCapabilities.js.map +0 -1
  62. package/dist/src/Interfaces/Wiki.js +0 -3
  63. package/dist/src/Interfaces/Wiki.js.map +0 -1
  64. package/dist/src/Interfaces/WorkItems.js +0 -3
  65. package/dist/src/Interfaces/WorkItems.js.map +0 -1
  66. package/dist/src/Services/AIAssistedDevelopmentService.js +0 -195
  67. package/dist/src/Services/AIAssistedDevelopmentService.js.map +0 -1
  68. package/dist/src/Services/ArtifactManagementService.js +0 -346
  69. package/dist/src/Services/ArtifactManagementService.js.map +0 -1
  70. package/dist/src/Services/AzureDevOpsService.js +0 -385
  71. package/dist/src/Services/AzureDevOpsService.js.map +0 -1
  72. package/dist/src/Services/BoardsSprintsService.js +0 -339
  73. package/dist/src/Services/BoardsSprintsService.js.map +0 -1
  74. package/dist/src/Services/BuildService.js +0 -405
  75. package/dist/src/Services/BuildService.js.map +0 -1
  76. package/dist/src/Services/DevSecOpsService.js +0 -307
  77. package/dist/src/Services/DevSecOpsService.js.map +0 -1
  78. package/dist/src/Services/EntraAuthHandler.js +0 -337
  79. package/dist/src/Services/EntraAuthHandler.js.map +0 -1
  80. package/dist/src/Services/GitService.js +0 -1595
  81. package/dist/src/Services/GitService.js.map +0 -1
  82. package/dist/src/Services/ProjectService.js +0 -257
  83. package/dist/src/Services/ProjectService.js.map +0 -1
  84. package/dist/src/Services/TestingCapabilitiesService.js +0 -149
  85. package/dist/src/Services/TestingCapabilitiesService.js.map +0 -1
  86. package/dist/src/Services/WikiService.js +0 -90
  87. package/dist/src/Services/WikiService.js.map +0 -1
  88. package/dist/src/Services/WorkItemService.js +0 -885
  89. package/dist/src/Services/WorkItemService.js.map +0 -1
  90. package/dist/src/Tools/AIAssistedDevelopmentTools.js +0 -137
  91. package/dist/src/Tools/AIAssistedDevelopmentTools.js.map +0 -1
  92. package/dist/src/Tools/ArtifactManagementTools.js +0 -140
  93. package/dist/src/Tools/ArtifactManagementTools.js.map +0 -1
  94. package/dist/src/Tools/BoardsSprintsTools.js +0 -338
  95. package/dist/src/Tools/BoardsSprintsTools.js.map +0 -1
  96. package/dist/src/Tools/BuildTools.js +0 -468
  97. package/dist/src/Tools/BuildTools.js.map +0 -1
  98. package/dist/src/Tools/DevSecOpsTools.js +0 -147
  99. package/dist/src/Tools/DevSecOpsTools.js.map +0 -1
  100. package/dist/src/Tools/GitTools.js +0 -1475
  101. package/dist/src/Tools/GitTools.js.map +0 -1
  102. package/dist/src/Tools/ProjectTools.js +0 -360
  103. package/dist/src/Tools/ProjectTools.js.map +0 -1
  104. package/dist/src/Tools/TestingCapabilitiesTools.js +0 -157
  105. package/dist/src/Tools/TestingCapabilitiesTools.js.map +0 -1
  106. package/dist/src/Tools/WikiTools.js +0 -137
  107. package/dist/src/Tools/WikiTools.js.map +0 -1
  108. package/dist/src/Tools/WorkItemTools.js +0 -862
  109. package/dist/src/Tools/WorkItemTools.js.map +0 -1
  110. package/dist/src/config.js +0 -176
  111. package/dist/src/config.js.map +0 -1
  112. package/dist/src/index.js +0 -1716
  113. package/dist/src/index.js.map +0 -1
  114. package/dist/src/utils/formatHelpers.js +0 -257
  115. package/dist/src/utils/formatHelpers.js.map +0 -1
  116. package/dist/src/utils/getClassMethods.js +0 -8
  117. package/dist/src/utils/getClassMethods.js.map +0 -1
  118. package/dist/src/utils/repositoryResolver.js +0 -40
  119. package/dist/src/utils/repositoryResolver.js.map +0 -1
@@ -1,468 +0,0 @@
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
@@ -1 +0,0 @@
1
- {"version":3,"file":"BuildTools.js","sourceRoot":"","sources":["../../../src/Tools/BuildTools.ts"],"names":[],"mappings":"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"}