@achieveai/azuredevops-mcp 1.3.16 → 1.3.18

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.
@@ -17,9 +17,13 @@ function formatMcpResponse(data, message, isError = false, includeStructuredCont
17
17
  // When a message is provided, use it as the sole content (markdown-formatted tools)
18
18
  // Only fall back to JSON dump when no message is provided at all
19
19
  const hasMessage = message && message.length > 0;
20
+ const throttleInfo = data?.throttleInfo;
21
+ const throttleBanner = throttleInfo?.throttled
22
+ ? `Warning: Azure DevOps throttled this operation. Waited ${(throttleInfo.totalWaitMs / 1000).toFixed(1)}s across ${throttleInfo.retryCount} retr${throttleInfo.retryCount === 1 ? 'y' : 'ies'} before continuing. This usually means too many requests are being sent in a short period.\n\n---\n\n`
23
+ : '';
20
24
  const response = {
21
25
  content: hasMessage
22
- ? [{ type: "text", text: message }]
26
+ ? [{ type: "text", text: `${throttleBanner}${message}` }]
23
27
  : [
24
28
  { type: "text", text: isError ? "Error occurred" : "Request successful" },
25
29
  { type: "text", text: typeof data === 'string' ? data : JSON.stringify(data, null, 2) }
@@ -81,7 +85,12 @@ function setErrorContext(context) {
81
85
  function formatErrorResponse(error) {
82
86
  const errorMessage = error instanceof Error ? error.message : String(error);
83
87
  let md = `Error: ${errorMessage}`;
88
+ const throttleInfo = error?.throttleInfo;
84
89
  const lower = errorMessage.toLowerCase();
90
+ if (throttleInfo?.throttled || error?.statusCode === 429 || lower.includes('too many requests') || lower.includes('rate limit') || lower.includes('throttle')) {
91
+ const totalWait = throttleInfo?.totalWaitMs ? `${(throttleInfo.totalWaitMs / 1000).toFixed(1)}s` : 'a retry window';
92
+ md += `\n\n**Azure DevOps is throttling requests.** The server waited for ${totalWait} before giving up. This indicates too many requests are being sent in a short period.`;
93
+ }
85
94
  // Auth error hints
86
95
  const statusCode = error?.statusCode || error?.status;
87
96
  if (statusCode === 401 || statusCode === 403 || lower.includes('unauthorized') || lower.includes('authentication failed')) {
@@ -1 +1 @@
1
- {"version":3,"file":"Common.js","sourceRoot":"","sources":["../../src/Interfaces/Common.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Common.js","sourceRoot":"","sources":["../../src/Interfaces/Common.ts"],"names":[],"mappings":"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"}
@@ -35,11 +35,26 @@ var __importStar = (this && this.__importStar) || (function () {
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
36
  exports.AzureDevOpsService = void 0;
37
37
  const azdev = __importStar(require("azure-devops-node-api"));
38
+ const fs = __importStar(require("fs"));
39
+ const os = __importStar(require("os"));
40
+ const path = __importStar(require("path"));
38
41
  const WebApi_1 = require("azure-devops-node-api/WebApi");
39
42
  const EntraAuthHandler_1 = require("./EntraAuthHandler");
40
43
  const repositoryResolver_1 = require("../utils/repositoryResolver");
44
+ const PACKAGE_VERSION = (() => {
45
+ try {
46
+ const packageJsonPath = path.resolve(__dirname, "../../package.json");
47
+ const packageJsonContent = fs.readFileSync(packageJsonPath, "utf8");
48
+ const packageJson = JSON.parse(packageJsonContent);
49
+ return packageJson.version || "0.0.0";
50
+ }
51
+ catch {
52
+ return "0.0.0";
53
+ }
54
+ })();
41
55
  class AzureDevOpsService {
42
56
  constructor(config) {
57
+ this.throttleNotices = [];
43
58
  this.config = config;
44
59
  // Get the appropriate authentication handler
45
60
  const tokenCredentialAuthTypes = ["entra", "azcli", "interactive"];
@@ -96,9 +111,22 @@ class AzureDevOpsService {
96
111
  }
97
112
  // Create options for the WebApi
98
113
  const requestOptions = {};
114
+ const hostName = os.hostname().replace(/[^A-Za-z0-9._-]/g, '_');
115
+ let userName = 'unknown-user';
116
+ try {
117
+ userName = os.userInfo().username.replace(/[^A-Za-z0-9._-]/g, '_');
118
+ }
119
+ catch {
120
+ // Best effort only; keep the client traceable even if user info is unavailable.
121
+ }
122
+ const userAgent = `azuredevops-mcp/${PACKAGE_VERSION} (${hostName}; ${userName})`;
123
+ requestOptions.headers = {
124
+ 'User-Agent': userAgent,
125
+ };
99
126
  // For on-premises with API version specification, we'll add it to request headers
100
127
  if (config.isOnPremises && config.apiVersion) {
101
128
  requestOptions.headers = {
129
+ ...requestOptions.headers,
102
130
  Accept: `application/json;api-version=${config.apiVersion}`,
103
131
  };
104
132
  }
@@ -117,45 +145,201 @@ class AzureDevOpsService {
117
145
  * Catches auth errors (401/403) at the service layer even if the HTTP-level
118
146
  * retry in TokenCredentialAuthHandler didn't fire (e.g. SDK swallowed it).
119
147
  */
120
- async withAuthRetry(operation) {
121
- try {
122
- return await operation();
123
- }
124
- catch (error) {
125
- const statusCode = error?.statusCode || error?.status;
126
- const message = (error?.message || '').toLowerCase();
127
- const isAuthError = statusCode === 401 || statusCode === 403
128
- || message.includes('unauthorized') || message.includes('authentication failed');
129
- if (isAuthError && this.authHandler instanceof EntraAuthHandler_1.TokenCredentialAuthHandler) {
130
- console.error(`[Auth] Service-layer auth retry: refreshing token...`);
131
- await this.authHandler.forceRefresh();
148
+ async withAuthRetry(operation, context, throttleAccumulator) {
149
+ let authRetried = false;
150
+ let throttleRetried = 0;
151
+ const contextLabel = this.formatRetryContext(context);
152
+ const notices = throttleAccumulator ?? this.throttleNotices;
153
+ while (true) {
154
+ try {
132
155
  return await operation();
133
156
  }
134
- throw error;
157
+ catch (error) {
158
+ const statusCode = error?.statusCode || error?.status;
159
+ const message = (error?.message || '').toLowerCase();
160
+ const isAuthError = statusCode === 401 || statusCode === 403
161
+ || message.includes('unauthorized') || message.includes('authentication failed');
162
+ if (isAuthError && !authRetried && this.authHandler instanceof EntraAuthHandler_1.TokenCredentialAuthHandler) {
163
+ authRetried = true;
164
+ console.error(`[Auth] Service-layer auth retry: refreshing token${contextLabel ? ` for ${contextLabel}` : ''}...`);
165
+ await this.authHandler.forceRefresh();
166
+ continue;
167
+ }
168
+ const throttleInfo = this.getThrottleInfo(error);
169
+ if (throttleInfo && throttleRetried < 2) {
170
+ throttleRetried += 1;
171
+ notices.push({
172
+ ...throttleInfo,
173
+ observedAt: new Date().toISOString(),
174
+ });
175
+ console.error(`[Throttle] Azure DevOps throttled request${contextLabel ? ` for ${contextLabel}` : ''}. Waiting ${throttleInfo.waitMs}ms before retry ${throttleRetried}.`);
176
+ await this.sleep(throttleInfo.waitMs);
177
+ continue;
178
+ }
179
+ if (throttleInfo) {
180
+ error.throttleInfo = {
181
+ throttled: true,
182
+ retryCount: throttleRetried,
183
+ totalWaitMs: notices.reduce((sum, notice) => sum + notice.waitMs, 0),
184
+ notices: [...notices, { ...throttleInfo, observedAt: new Date().toISOString() }],
185
+ context,
186
+ };
187
+ }
188
+ throw error;
189
+ }
190
+ }
191
+ }
192
+ static buildThrottleInfo(notices) {
193
+ if (notices.length === 0) {
194
+ return undefined;
195
+ }
196
+ return {
197
+ throttled: true,
198
+ retryCount: notices.length,
199
+ totalWaitMs: notices.reduce((sum, notice) => sum + notice.waitMs, 0),
200
+ notices,
201
+ };
202
+ }
203
+ drainThrottleInfo() {
204
+ if (this.throttleNotices.length === 0) {
205
+ return undefined;
135
206
  }
207
+ const notices = [...this.throttleNotices];
208
+ this.throttleNotices = [];
209
+ return AzureDevOpsService.buildThrottleInfo(notices);
210
+ }
211
+ async sleep(waitMs) {
212
+ await new Promise((resolve) => setTimeout(resolve, waitMs));
213
+ }
214
+ getThrottleInfo(error) {
215
+ const statusCode = error?.statusCode || error?.status;
216
+ const message = String(error?.message || '').toLowerCase();
217
+ const isThrottle = statusCode === 429
218
+ || message.includes('rate limit')
219
+ || message.includes('too many requests')
220
+ || message.includes('throttle');
221
+ if (!isThrottle) {
222
+ return undefined;
223
+ }
224
+ const headers = error?.response?.headers || error?.headers || error?.result?.headers || error?.response?.message?.headers;
225
+ const retryAfter = this.getHeaderValue(headers, 'retry-after');
226
+ const rateLimitDelay = this.getHeaderValue(headers, 'x-ratelimit-delay');
227
+ let waitMs = 15000;
228
+ let reason = 'Azure DevOps is throttling requests.';
229
+ if (retryAfter) {
230
+ const retryAfterSeconds = Number(retryAfter);
231
+ if (!Number.isNaN(retryAfterSeconds)) {
232
+ waitMs = Math.max(1, Math.ceil(retryAfterSeconds)) * 1000;
233
+ }
234
+ else {
235
+ const retryDate = Date.parse(retryAfter);
236
+ if (!Number.isNaN(retryDate)) {
237
+ waitMs = Math.max(1000, retryDate - Date.now());
238
+ }
239
+ }
240
+ reason = `Azure DevOps requested a retry after ${retryAfter}.`;
241
+ }
242
+ else if (rateLimitDelay) {
243
+ const delaySeconds = Number(rateLimitDelay);
244
+ if (!Number.isNaN(delaySeconds)) {
245
+ waitMs = Math.max(1, Math.ceil(delaySeconds)) * 1000;
246
+ }
247
+ reason = `Azure DevOps returned X-RateLimit-Delay=${rateLimitDelay}.`;
248
+ }
249
+ return {
250
+ waitMs,
251
+ statusCode,
252
+ reason,
253
+ };
254
+ }
255
+ getHeaderValue(headers, name) {
256
+ if (!headers) {
257
+ return undefined;
258
+ }
259
+ if (typeof headers.get === 'function') {
260
+ return headers.get(name) || headers.get(name.toLowerCase()) || undefined;
261
+ }
262
+ if (Array.isArray(headers)) {
263
+ const match = headers.find((entry) => Array.isArray(entry) && String(entry[0]).toLowerCase() === name.toLowerCase());
264
+ return match ? String(match[1]) : undefined;
265
+ }
266
+ if (typeof headers === 'object') {
267
+ const key = Object.keys(headers).find((headerName) => headerName.toLowerCase() === name.toLowerCase());
268
+ if (key) {
269
+ const value = headers[key];
270
+ return Array.isArray(value) ? String(value[0]) : String(value);
271
+ }
272
+ }
273
+ return undefined;
274
+ }
275
+ formatRetryContext(context) {
276
+ if (!context?.operationName) {
277
+ return '';
278
+ }
279
+ const details = context.details
280
+ ? Object.entries(context.details)
281
+ .filter(([, value]) => value !== undefined)
282
+ .map(([key, value]) => `${key}=${value}`)
283
+ .join(', ')
284
+ : '';
285
+ return details ? `${context.operationName} (${details})` : context.operationName;
286
+ }
287
+ getRequestedFields(fields, defaults) {
288
+ const selected = fields && fields.length > 0 ? fields : (defaults || AzureDevOpsService.BASE_SUMMARY_FIELDS);
289
+ return Array.from(new Set(selected));
290
+ }
291
+ transformSummaryWorkItem(workItem) {
292
+ const fields = workItem.fields || {};
293
+ return {
294
+ id: workItem.id,
295
+ url: workItem.url,
296
+ title: fields['System.Title'],
297
+ teamProject: fields['System.TeamProject'],
298
+ workItemType: fields['System.WorkItemType'],
299
+ state: fields['System.State'],
300
+ assignedTo: fields['System.AssignedTo'] ? {
301
+ displayName: fields['System.AssignedTo'].displayName,
302
+ uniqueName: fields['System.AssignedTo'].uniqueName,
303
+ } : null,
304
+ createdBy: fields['System.CreatedBy'] ? {
305
+ displayName: fields['System.CreatedBy'].displayName,
306
+ uniqueName: fields['System.CreatedBy'].uniqueName,
307
+ } : null,
308
+ createdDate: fields['System.CreatedDate'],
309
+ changedDate: fields['System.ChangedDate'],
310
+ areaPath: fields['System.AreaPath'],
311
+ iterationPath: fields['System.IterationPath'],
312
+ priority: fields['Microsoft.VSTS.Common.Priority'],
313
+ originalEstimate: fields['Microsoft.VSTS.Scheduling.OriginalEstimate'],
314
+ completedWork: fields['Microsoft.VSTS.Scheduling.CompletedWork'],
315
+ remainingWork: fields['Microsoft.VSTS.Scheduling.RemainingWork'],
316
+ fields,
317
+ };
136
318
  }
137
319
  /**
138
- * List work items based on a WIQL query
320
+ * Batch-fetch work item details for an array of refs (IDs or relation objects).
321
+ * Handles the ADO 200-ID-per-call limit automatically.
139
322
  */
140
- async listWorkItems(wiqlQuery) {
141
- try {
142
- const witApi = await this.getWorkItemTrackingApi();
143
- // Execute the WIQL query
144
- const queryResult = await witApi.queryByWiql({
145
- query: wiqlQuery,
146
- }, {
147
- project: this.config.project,
148
- });
149
- // Return the work items
150
- return {
151
- workItems: queryResult.workItems || [],
152
- count: queryResult.workItems?.length || 0,
153
- };
323
+ async hydrateWorkItemRefs(refs, options) {
324
+ const extractId = options?.extractId ?? ((ref) => ref?.id);
325
+ const project = options?.project ?? this.config.project;
326
+ const operationName = options?.operationName ?? 'batchHydrate';
327
+ const ids = (refs || [])
328
+ .map(extractId)
329
+ .filter((id) => typeof id === 'number');
330
+ if (ids.length === 0) {
331
+ return [];
154
332
  }
155
- catch (error) {
156
- console.error("Error listing work items:", error);
157
- throw error;
333
+ const witApi = await this.getWorkItemTrackingApi();
334
+ const requestedFields = this.getRequestedFields(options?.fields, options?.defaults);
335
+ const BATCH_SIZE = 200;
336
+ const allWorkItems = [];
337
+ for (let i = 0; i < ids.length; i += BATCH_SIZE) {
338
+ const batch = ids.slice(i, i + BATCH_SIZE);
339
+ const batchResult = await this.withAuthRetry(() => witApi.getWorkItems(batch, requestedFields, undefined, undefined, undefined, project), { operationName, details: { project, ids: batch.length, fields: requestedFields.length } }, options?.throttleAccumulator);
340
+ allWorkItems.push(...(batchResult || []));
158
341
  }
342
+ return allWorkItems.map((workItem) => this.transformSummaryWorkItem(workItem));
159
343
  }
160
344
  /**
161
345
  * Get the authenticated user's ID, cached after first resolution.
@@ -188,4 +372,23 @@ class AzureDevOpsService {
188
372
  }
189
373
  }
190
374
  exports.AzureDevOpsService = AzureDevOpsService;
375
+ AzureDevOpsService.BASE_SUMMARY_FIELDS = [
376
+ 'System.Id',
377
+ 'System.Title',
378
+ 'System.TeamProject',
379
+ 'System.WorkItemType',
380
+ 'System.State',
381
+ 'System.AssignedTo',
382
+ 'System.CreatedBy',
383
+ 'System.CreatedDate',
384
+ 'System.ChangedDate',
385
+ 'System.AreaPath',
386
+ 'System.IterationPath',
387
+ 'Microsoft.VSTS.Common.Priority',
388
+ ];
389
+ AzureDevOpsService.SCHEDULING_FIELDS = [
390
+ 'Microsoft.VSTS.Scheduling.OriginalEstimate',
391
+ 'Microsoft.VSTS.Scheduling.CompletedWork',
392
+ 'Microsoft.VSTS.Scheduling.RemainingWork',
393
+ ];
191
394
  //# sourceMappingURL=AzureDevOpsService.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AzureDevOpsService.js","sourceRoot":"","sources":["../../src/Services/AzureDevOpsService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AzureDevOpsService.js","sourceRoot":"","sources":["../../src/Services/AzureDevOpsService.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,6DAA+C;AAC/C,uCAAyB;AACzB,uCAAyB;AACzB,2CAA6B;AAK7B,yDAIsC;AAKtC,yDAAgE;AAChE,oEAA6D;AAE7D,MAAM,eAAe,GAAG,CAAC,GAAG,EAAE;IAC5B,IAAI,CAAC;QACH,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,oBAAoB,CAAC,CAAC;QACtE,MAAM,kBAAkB,GAAG,EAAE,CAAC,YAAY,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;QACpE,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAyB,CAAC;QAC3E,OAAO,WAAW,CAAC,OAAO,IAAI,OAAO,CAAC;IACxC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,OAAO,CAAC;IACjB,CAAC;AACH,CAAC,CAAC,EAAE,CAAC;AAqBL,MAAa,kBAAkB;IA4B7B,YAAY,MAAyB;QAvB7B,oBAAe,GAAqB,EAAE,CAAC;QAwB7C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QAErB,6CAA6C;QAE7C,MAAM,wBAAwB,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC;QACnE,IAAI,MAAM,CAAC,IAAI,EAAE,IAAI,IAAI,wBAAwB,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7E,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;gBACxB,MAAM,IAAI,KAAK,CACb,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,gEAAgE,CACpF,CAAC;YACJ,CAAC;YACD,IAAG,CAAC,MAAM,CAAC,0BAA0B,EAAE,CAAC;gBACtC,MAAM,IAAI,KAAK,CACb,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,2EAA2E,CAC/F,CAAC;YACJ,CAAC;YACD,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,0BAA0B,CAAC;QACvD,CAAC;aAAM,IAAI,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;YAC9C,QAAQ,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;gBACzB,KAAK,MAAM;oBACT,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;wBACnD,MAAM,IAAI,KAAK,CACb,oDAAoD,CACrD,CAAC;oBACJ,CAAC;oBACD,IAAI,CAAC,WAAW,GAAG,IAAA,uBAAc,EAC/B,MAAM,CAAC,IAAI,CAAC,QAAQ,EACpB,MAAM,CAAC,IAAI,CAAC,QAAQ,EACpB,MAAM,CAAC,IAAI,CAAC,MAAM,CACnB,CAAC;oBACF,MAAM;gBACR,KAAK,OAAO;oBACV,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;wBACnD,MAAM,IAAI,KAAK,CACb,qDAAqD,CACtD,CAAC;oBACJ,CAAC;oBACD,IAAI,CAAC,WAAW,GAAG,IAAA,wBAAe,EAChC,MAAM,CAAC,IAAI,CAAC,QAAQ,EACpB,MAAM,CAAC,IAAI,CAAC,QAAQ,CACrB,CAAC;oBACF,MAAM;gBACR,KAAK,KAAK,CAAC;gBACX,SAAS,yEAAyE;oBAChF,IAAI,CAAC,MAAM,CAAC,mBAAmB,EAAE,CAAC;wBAChC,MAAM,IAAI,KAAK,CACb,kGAAkG,CACnG,CAAC;oBACJ,CAAC;oBACD,IAAI,CAAC,WAAW,GAAG,IAAA,sCAA6B,EAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;YACjF,CAAC;QACH,CAAC;aAAM,CAAC;YACN,qCAAqC;YACrC,IAAI,MAAM,CAAC,IAAI,EAAE,IAAI,KAAK,KAAK,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;gBAChD,kEAAkE;gBAClE,IAAI,CAAC,MAAM,CAAC,mBAAmB,EAAE,CAAC;oBAChC,MAAM,IAAI,KAAK,CACb,oGAAoG,CACrG,CAAC;gBACJ,CAAC;gBACD,IAAI,CAAC,WAAW,GAAG,IAAA,sCAA6B,EAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;YAC/E,CAAC;iBAAM,CAAC;gBACN,2EAA2E;gBAC3E,MAAM,IAAI,KAAK,CACb,oCAAoC,MAAM,CAAC,IAAI,EAAE,IAAI,2BAA2B,CACjF,CAAC;YACJ,CAAC;QACH,CAAC;QAED,sDAAsD;QACtD,IAAI,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC;QAC5B,IAAI,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;YAC7C,gEAAgE;YAChE,OAAO,GAAG,GAAG,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;QACpD,CAAC;QAED,gCAAgC;QAChC,MAAM,cAAc,GAAsC,EAAE,CAAC;QAC7D,MAAM,QAAQ,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;QAChE,IAAI,QAAQ,GAAG,cAAc,CAAC;QAC9B,IAAI,CAAC;YACH,QAAQ,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;QACrE,CAAC;QAAC,MAAM,CAAC;YACP,gFAAgF;QAClF,CAAC;QACD,MAAM,SAAS,GAAG,mBAAmB,eAAe,KAAK,QAAQ,KAAK,QAAQ,GAAG,CAAC;QAClF,cAAc,CAAC,OAAO,GAAG;YACvB,YAAY,EAAE,SAAS;SACxB,CAAC;QAEF,kFAAkF;QAClF,IAAI,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;YAC7C,cAAc,CAAC,OAAO,GAAG;gBACvB,GAAG,cAAc,CAAC,OAAO;gBACzB,MAAM,EAAE,gCAAgC,MAAM,CAAC,UAAU,EAAE;aAC5D,CAAC;QACJ,CAAC;QAED,6BAA6B;QAC7B,6FAA6F;QAC7F,IAAI,CAAC,UAAU,GAAG,IAAI,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;IAChF,CAAC;IAED;;OAEG;IACO,KAAK,CAAC,sBAAsB;QACpC,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,sBAAsB,EAAE,CAAC;IACxD,CAAC;IAED;;;;OAIG;IACO,KAAK,CAAC,aAAa,CAAI,SAA2B,EAAE,OAAsB,EAAE,mBAAsC;QAC1H,IAAI,WAAW,GAAG,KAAK,CAAC;QACxB,IAAI,eAAe,GAAG,CAAC,CAAC;QACxB,MAAM,YAAY,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;QACtD,MAAM,OAAO,GAAG,mBAAmB,IAAI,IAAI,CAAC,eAAe,CAAC;QAE5D,OAAO,IAAI,EAAE,CAAC;YACZ,IAAI,CAAC;gBACH,OAAO,MAAM,SAAS,EAAE,CAAC;YAC3B,CAAC;YAAC,OAAO,KAAU,EAAE,CAAC;gBACpB,MAAM,UAAU,GAAG,KAAK,EAAE,UAAU,IAAI,KAAK,EAAE,MAAM,CAAC;gBACtD,MAAM,OAAO,GAAG,CAAC,KAAK,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;gBACrD,MAAM,WAAW,GAAG,UAAU,KAAK,GAAG,IAAI,UAAU,KAAK,GAAG;uBACvD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAC,CAAC;gBAEnF,IAAI,WAAW,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,YAAY,6CAA0B,EAAE,CAAC;oBAC1F,WAAW,GAAG,IAAI,CAAC;oBACnB,OAAO,CAAC,KAAK,CAAC,oDAAoD,YAAY,CAAC,CAAC,CAAC,QAAQ,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;oBACnH,MAAM,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC;oBACtC,SAAS;gBACX,CAAC;gBAED,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;gBACjD,IAAI,YAAY,IAAI,eAAe,GAAG,CAAC,EAAE,CAAC;oBACxC,eAAe,IAAI,CAAC,CAAC;oBACrB,OAAO,CAAC,IAAI,CAAC;wBACX,GAAG,YAAY;wBACf,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;qBACrC,CAAC,CAAC;oBACH,OAAO,CAAC,KAAK,CAAC,4CAA4C,YAAY,CAAC,CAAC,CAAC,QAAQ,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,aAAa,YAAY,CAAC,MAAM,mBAAmB,eAAe,GAAG,CAAC,CAAC;oBAC3K,MAAM,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;oBACtC,SAAS;gBACX,CAAC;gBAED,IAAI,YAAY,EAAE,CAAC;oBACjB,KAAK,CAAC,YAAY,GAAG;wBACnB,SAAS,EAAE,IAAI;wBACf,UAAU,EAAE,eAAe;wBAC3B,WAAW,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;wBACpE,OAAO,EAAE,CAAC,GAAG,OAAO,EAAE,EAAE,GAAG,YAAY,EAAE,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC;wBAChF,OAAO;qBACR,CAAC;gBACJ,CAAC;gBAED,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC;IACH,CAAC;IAES,MAAM,CAAC,iBAAiB,CAAC,OAAyB;QAC1D,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,OAAO;YACL,SAAS,EAAE,IAAI;YACf,UAAU,EAAE,OAAO,CAAC,MAAM;YAC1B,WAAW,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;YACpE,OAAO;SACR,CAAC;IACJ,CAAC;IAES,iBAAiB;QACzB,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtC,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC;QAC1C,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC;QAE1B,OAAO,kBAAkB,CAAC,iBAAiB,CAAC,OAAO,CAAE,CAAC;IACxD,CAAC;IAEO,KAAK,CAAC,KAAK,CAAC,MAAc;QAChC,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;IAC9D,CAAC;IAEO,eAAe,CAAC,KAAU;QAChC,MAAM,UAAU,GAAG,KAAK,EAAE,UAAU,IAAI,KAAK,EAAE,MAAM,CAAC;QACtD,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;QAC3D,MAAM,UAAU,GAAG,UAAU,KAAK,GAAG;eAChC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC;eAC9B,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAC;eACrC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QAElC,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,MAAM,OAAO,GAAG,KAAK,EAAE,QAAQ,EAAE,OAAO,IAAI,KAAK,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,EAAE,OAAO,IAAI,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC;QAC1H,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;QAC/D,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,mBAAmB,CAAC,CAAC;QAEzE,IAAI,MAAM,GAAG,KAAM,CAAC;QACpB,IAAI,MAAM,GAAG,sCAAsC,CAAC;QAEpD,IAAI,UAAU,EAAE,CAAC;YACf,MAAM,iBAAiB,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;YAC7C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,iBAAiB,CAAC,EAAE,CAAC;gBACrC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,GAAG,IAAI,CAAC;YAC5D,CAAC;iBAAM,CAAC;gBACN,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;gBACzC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;oBAC7B,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;gBAClD,CAAC;YACH,CAAC;YACD,MAAM,GAAG,wCAAwC,UAAU,GAAG,CAAC;QACjE,CAAC;aAAM,IAAI,cAAc,EAAE,CAAC;YAC1B,MAAM,YAAY,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;YAC5C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC;gBAChC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,GAAG,IAAI,CAAC;YACvD,CAAC;YACD,MAAM,GAAG,2CAA2C,cAAc,GAAG,CAAC;QACxE,CAAC;QAED,OAAO;YACL,MAAM;YACN,UAAU;YACV,MAAM;SACP,CAAC;IACJ,CAAC;IAEO,cAAc,CAAC,OAAY,EAAE,IAAY;QAC/C,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,IAAI,OAAO,OAAO,CAAC,GAAG,KAAK,UAAU,EAAE,CAAC;YACtC,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,IAAI,SAAS,CAAC;QAC3E,CAAC;QAED,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3B,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,KAAU,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;YAC1H,OAAO,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC9C,CAAC;QAED,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YAChC,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;YACvG,IAAI,GAAG,EAAE,CAAC;gBACR,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;gBAC3B,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACjE,CAAC;QACH,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAEO,kBAAkB,CAAC,OAAsB;QAC/C,IAAI,CAAC,OAAO,EAAE,aAAa,EAAE,CAAC;YAC5B,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO;YAC7B,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC;iBAC5B,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,KAAK,SAAS,CAAC;iBAC1C,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,KAAK,EAAE,CAAC;iBACxC,IAAI,CAAC,IAAI,CAAC;YACf,CAAC,CAAC,EAAE,CAAC;QAEP,OAAO,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,aAAa,KAAK,OAAO,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC;IACnF,CAAC;IAES,kBAAkB,CAAC,MAAiB,EAAE,QAA4B;QAC1E,MAAM,QAAQ,GAAG,MAAM,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,IAAI,kBAAkB,CAAC,mBAAmB,CAAC,CAAC;QAC7G,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;IACvC,CAAC;IAES,wBAAwB,CAAC,QAAa;QAC9C,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,IAAI,EAAE,CAAC;QACrC,OAAO;YACL,EAAE,EAAE,QAAQ,CAAC,EAAE;YACf,GAAG,EAAE,QAAQ,CAAC,GAAG;YACjB,KAAK,EAAE,MAAM,CAAC,cAAc,CAAC;YAC7B,WAAW,EAAE,MAAM,CAAC,oBAAoB,CAAC;YACzC,YAAY,EAAE,MAAM,CAAC,qBAAqB,CAAC;YAC3C,KAAK,EAAE,MAAM,CAAC,cAAc,CAAC;YAC7B,UAAU,EAAE,MAAM,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC;gBACxC,WAAW,EAAE,MAAM,CAAC,mBAAmB,CAAC,CAAC,WAAW;gBACpD,UAAU,EAAE,MAAM,CAAC,mBAAmB,CAAC,CAAC,UAAU;aACnD,CAAC,CAAC,CAAC,IAAI;YACR,SAAS,EAAE,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;gBACtC,WAAW,EAAE,MAAM,CAAC,kBAAkB,CAAC,CAAC,WAAW;gBACnD,UAAU,EAAE,MAAM,CAAC,kBAAkB,CAAC,CAAC,UAAU;aAClD,CAAC,CAAC,CAAC,IAAI;YACR,WAAW,EAAE,MAAM,CAAC,oBAAoB,CAAC;YACzC,WAAW,EAAE,MAAM,CAAC,oBAAoB,CAAC;YACzC,QAAQ,EAAE,MAAM,CAAC,iBAAiB,CAAC;YACnC,aAAa,EAAE,MAAM,CAAC,sBAAsB,CAAC;YAC7C,QAAQ,EAAE,MAAM,CAAC,gCAAgC,CAAC;YAClD,gBAAgB,EAAE,MAAM,CAAC,4CAA4C,CAAC;YACtE,aAAa,EAAE,MAAM,CAAC,yCAAyC,CAAC;YAChE,aAAa,EAAE,MAAM,CAAC,yCAAyC,CAAC;YAChE,MAAM;SACP,CAAC;IACJ,CAAC;IAED;;;OAGG;IACO,KAAK,CAAC,mBAAmB,CACjC,IAAW,EACX,OAOC;QAED,MAAM,SAAS,GAAG,OAAO,EAAE,SAAS,IAAI,CAAC,CAAC,GAAQ,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QAChE,MAAM,OAAO,GAAG,OAAO,EAAE,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;QACxD,MAAM,aAAa,GAAG,OAAO,EAAE,aAAa,IAAI,cAAc,CAAC;QAE/D,MAAM,GAAG,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;aACrB,GAAG,CAAC,SAAS,CAAC;aACd,MAAM,CAAC,CAAC,EAAsB,EAAgB,EAAE,CAAC,OAAO,EAAE,KAAK,QAAQ,CAAC,CAAC;QAE5E,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACrB,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,sBAAsB,EAAE,CAAC;QACnD,MAAM,eAAe,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;QAEpF,MAAM,UAAU,GAAG,GAAG,CAAC;QACvB,MAAM,YAAY,GAAU,EAAE,CAAC;QAE/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,UAAU,EAAE,CAAC;YAChD,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,CAAC;YAC3C,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,aAAa,CAC1C,GAAG,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,eAAe,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC,EAC3F,EAAE,aAAa,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,eAAe,CAAC,MAAM,EAAE,EAAE,EAC1F,OAAO,EAAE,mBAAmB,CAC7B,CAAC;YACF,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,CAAC;QAC5C,CAAC;QAED,OAAO,YAAY,CAAC,GAAG,CAAC,CAAC,QAAa,EAAE,EAAE,CAAC,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,CAAC,CAAC;IACtF,CAAC;IAED;;OAEG;IACO,KAAK,CAAC,sBAAsB;QACpC,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC/B,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;YACvD,IAAI,CAAC,oBAAoB,GAAG,cAAc,CAAC,iBAAiB,EAAE,EAAE,CAAC;QACnE,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC/B,MAAM,IAAI,KAAK,CAAC,qFAAqF,CAAC,CAAC;QACzG,CAAC;QACD,OAAO,IAAI,CAAC,oBAAoB,CAAC;IACnC,CAAC;IAED;;;;OAIG;IACO,KAAK,CAAC,mBAAmB,CAAC,UAAkB,EAAE,OAAgB;QACtE,IAAI,IAAA,mCAAc,EAAC,UAAU,CAAC,EAAE,CAAC;YAC/B,OAAO,UAAU,CAAC;QACpB,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC;QACjD,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,UAAU,EAAE,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACpF,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CAAC,iCAAiC,UAAU,iBAAiB,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC;QACjH,CAAC;QACD,OAAO,IAAI,CAAC,EAAE,CAAC;IACjB,CAAC;;AA9ZH,gDA+ZC;AAxZ2B,sCAAmB,GAAsB;IACjE,WAAW;IACX,cAAc;IACd,oBAAoB;IACpB,qBAAqB;IACrB,cAAc;IACd,mBAAmB;IACnB,kBAAkB;IAClB,oBAAoB;IACpB,oBAAoB;IACpB,iBAAiB;IACjB,sBAAsB;IACtB,gCAAgC;CACjC,AAb4C,CAa3C;AAEwB,oCAAiB,GAAsB;IAC/D,4CAA4C;IAC5C,yCAAyC;IACzC,yCAAyC;CAC1C,AAJ0C,CAIzC"}
@@ -34,7 +34,13 @@ class BoardsSprintsService extends AzureDevOpsService_1.AzureDevOpsService {
34
34
  try {
35
35
  const workApi = await this.getWorkApi();
36
36
  const teamContext = this.getTeamContext(params.teamId);
37
- const boards = await workApi.getBoards(teamContext);
37
+ const boards = await this.withAuthRetry(() => workApi.getBoards(teamContext), {
38
+ operationName: 'boards.list',
39
+ details: {
40
+ project: this.config.project,
41
+ teamId: params.teamId,
42
+ },
43
+ });
38
44
  return boards;
39
45
  }
40
46
  catch (error) {
@@ -49,7 +55,14 @@ class BoardsSprintsService extends AzureDevOpsService_1.AzureDevOpsService {
49
55
  try {
50
56
  const workApi = await this.getWorkApi();
51
57
  const teamContext = this.getTeamContext(params.teamId);
52
- const columns = await workApi.getBoardColumns(teamContext, params.boardId);
58
+ const columns = await this.withAuthRetry(() => workApi.getBoardColumns(teamContext, params.boardId), {
59
+ operationName: 'boards.columns.list',
60
+ details: {
61
+ project: this.config.project,
62
+ teamId: params.teamId,
63
+ boardId: params.boardId,
64
+ },
65
+ });
53
66
  return columns;
54
67
  }
55
68
  catch (error) {
@@ -66,9 +79,23 @@ class BoardsSprintsService extends AzureDevOpsService_1.AzureDevOpsService {
66
79
  const teamContext = this.getTeamContext(params.teamId);
67
80
  // Get board cards - use a different approach since getCardsBySettings doesn't exist
68
81
  // First get the board
69
- const board = await workApi.getBoard(teamContext, params.boardId);
82
+ const board = await this.withAuthRetry(() => workApi.getBoard(teamContext, params.boardId), {
83
+ operationName: 'boards.get',
84
+ details: {
85
+ project: this.config.project,
86
+ teamId: params.teamId,
87
+ boardId: params.boardId,
88
+ },
89
+ });
70
90
  // Then get the board columns
71
- const columns = await workApi.getBoardColumns(teamContext, params.boardId);
91
+ const columns = await this.withAuthRetry(() => workApi.getBoardColumns(teamContext, params.boardId), {
92
+ operationName: 'boards.items.columns',
93
+ details: {
94
+ project: this.config.project,
95
+ teamId: params.teamId,
96
+ boardId: params.boardId,
97
+ },
98
+ });
72
99
  // Combine the data
73
100
  return {
74
101
  board,
@@ -112,7 +139,13 @@ class BoardsSprintsService extends AzureDevOpsService_1.AzureDevOpsService {
112
139
  try {
113
140
  const workApi = await this.getWorkApi();
114
141
  const teamContext = this.getTeamContext(params.teamId);
115
- const sprints = await workApi.getTeamIterations(teamContext);
142
+ const sprints = await this.withAuthRetry(() => workApi.getTeamIterations(teamContext), {
143
+ operationName: 'sprints.list',
144
+ details: {
145
+ project: this.config.project,
146
+ teamId: params.teamId,
147
+ },
148
+ });
116
149
  return sprints;
117
150
  }
118
151
  catch (error) {
@@ -127,7 +160,13 @@ class BoardsSprintsService extends AzureDevOpsService_1.AzureDevOpsService {
127
160
  try {
128
161
  const workApi = await this.getWorkApi();
129
162
  const teamContext = this.getTeamContext(params.teamId);
130
- const currentIterations = await workApi.getTeamIterations(teamContext, "current");
163
+ const currentIterations = await this.withAuthRetry(() => workApi.getTeamIterations(teamContext, "current"), {
164
+ operationName: 'sprints.current',
165
+ details: {
166
+ project: this.config.project,
167
+ teamId: params.teamId,
168
+ },
169
+ });
131
170
  return currentIterations && currentIterations.length > 0 ? currentIterations[0] : null;
132
171
  }
133
172
  catch (error) {
@@ -142,8 +181,29 @@ class BoardsSprintsService extends AzureDevOpsService_1.AzureDevOpsService {
142
181
  try {
143
182
  const workApi = await this.getWorkApi();
144
183
  const teamContext = this.getTeamContext(params.teamId);
145
- const workItems = await workApi.getIterationWorkItems(teamContext, params.sprintId);
146
- return workItems;
184
+ const throttleNotices = [];
185
+ const workItems = await this.withAuthRetry(() => workApi.getIterationWorkItems(teamContext, params.sprintId), {
186
+ operationName: 'boards.sprint.getIterationWorkItems',
187
+ details: {
188
+ project: this.config.project,
189
+ sprintId: params.sprintId,
190
+ teamId: params.teamId,
191
+ },
192
+ }, throttleNotices);
193
+ const sprintItems = workItems;
194
+ const itemRefs = sprintItems?.workItems || sprintItems?.workItemRelations || [];
195
+ const hydratedWorkItems = await this.hydrateWorkItemRefs(Array.isArray(itemRefs) ? itemRefs : [], {
196
+ fields: params.fields,
197
+ extractId: (item) => item?.target?.id || item?.id || item?.workItem?.id,
198
+ operationName: 'boards.sprint.batchHydrate',
199
+ throttleAccumulator: throttleNotices,
200
+ });
201
+ return {
202
+ ...workItems,
203
+ workItems: hydratedWorkItems,
204
+ count: hydratedWorkItems.length,
205
+ throttleInfo: AzureDevOpsService_1.AzureDevOpsService.buildThrottleInfo(throttleNotices),
206
+ };
147
207
  }
148
208
  catch (error) {
149
209
  console.error(`Error getting work items for sprint ${params.sprintId}:`, error);
@@ -158,7 +218,14 @@ class BoardsSprintsService extends AzureDevOpsService_1.AzureDevOpsService {
158
218
  const workApi = await this.getWorkApi();
159
219
  const teamContext = this.getTeamContext(params.teamId);
160
220
  // Get board charts instead of cards since getBoardCards doesn't exist
161
- const charts = await workApi.getBoardCharts(teamContext, params.boardId);
221
+ const charts = await this.withAuthRetry(() => workApi.getBoardCharts(teamContext, params.boardId), {
222
+ operationName: 'boards.charts.list',
223
+ details: {
224
+ project: this.config.project,
225
+ teamId: params.teamId,
226
+ boardId: params.boardId,
227
+ },
228
+ });
162
229
  return charts;
163
230
  }
164
231
  catch (error) {
@@ -174,7 +241,14 @@ class BoardsSprintsService extends AzureDevOpsService_1.AzureDevOpsService {
174
241
  const workApi = await this.getWorkApi();
175
242
  const teamContext = this.getTeamContext(params.teamId);
176
243
  // Get team settings instead of capacities since getCapacities doesn't exist
177
- const teamSettings = await workApi.getTeamSettings(teamContext);
244
+ const teamSettings = await this.withAuthRetry(() => workApi.getTeamSettings(teamContext), {
245
+ operationName: 'sprints.capacity.teamSettings',
246
+ details: {
247
+ project: this.config.project,
248
+ teamId: params.teamId,
249
+ sprintId: params.sprintId,
250
+ },
251
+ });
178
252
  // Return team settings as a workaround
179
253
  return {
180
254
  teamSettings,
@@ -195,7 +269,13 @@ class BoardsSprintsService extends AzureDevOpsService_1.AzureDevOpsService {
195
269
  const coreApi = await this.getCoreApi();
196
270
  const teamId = params.teamId || this.config.project;
197
271
  // Get team members with extended properties
198
- const members = await coreApi.getTeamMembersWithExtendedProperties(this.config.project, teamId);
272
+ const members = await this.withAuthRetry(() => coreApi.getTeamMembersWithExtendedProperties(this.config.project, teamId), {
273
+ operationName: 'teams.members.list',
274
+ details: {
275
+ project: this.config.project,
276
+ teamId,
277
+ },
278
+ });
199
279
  // Transform to streamlined format for MCP tool consumption
200
280
  if (members && Array.isArray(members)) {
201
281
  const streamlined = members.map((member) => ({
@@ -218,7 +298,14 @@ class BoardsSprintsService extends AzureDevOpsService_1.AzureDevOpsService {
218
298
  async getTeams(top, skip) {
219
299
  try {
220
300
  const coreApi = await this.getCoreApi();
221
- const teams = await coreApi.getTeams(this.config.project, undefined, top ?? 100, skip);
301
+ const teams = await this.withAuthRetry(() => coreApi.getTeams(this.config.project, undefined, top ?? 100, skip), {
302
+ operationName: 'teams.list',
303
+ details: {
304
+ project: this.config.project,
305
+ top: top ?? 100,
306
+ skip,
307
+ },
308
+ });
222
309
  return teams;
223
310
  }
224
311
  catch (error) {
@@ -232,7 +319,12 @@ class BoardsSprintsService extends AzureDevOpsService_1.AzureDevOpsService {
232
319
  async getDefaultTeamId() {
233
320
  try {
234
321
  const coreApi = await this.getCoreApi();
235
- const teams = await coreApi.getTeams(this.config.project);
322
+ const teams = await this.withAuthRetry(() => coreApi.getTeams(this.config.project), {
323
+ operationName: 'teams.default.lookup',
324
+ details: {
325
+ project: this.config.project,
326
+ },
327
+ });
236
328
  // Find the default team, which often has the same name as the project
237
329
  const defaultTeam = teams.find(team => team.name === this.config.project) || teams[0];
238
330
  return defaultTeam.id;
@@ -1 +1 @@
1
- {"version":3,"file":"BoardsSprintsService.js","sourceRoot":"","sources":["../../src/Services/BoardsSprintsService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BoardsSprintsService.js","sourceRoot":"","sources":["../../src/Services/BoardsSprintsService.ts"],"names":[],"mappings":";;;AAIA,6DAA0E;AAmB1E,MAAa,oBAAqB,SAAQ,uCAAkB;IAC1D,YAAY,MAAyB;QACnC,KAAK,CAAC,MAAM,CAAC,CAAC;IAChB,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,UAAU;QACtB,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC;IAC5C,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,UAAU;QACtB,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC;IAC5C,CAAC;IAED;;OAEG;IACK,cAAc,CAAC,MAAe;QACpC,OAAO;YACL,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO;YAC5B,IAAI,EAAE,MAAM;SACb,CAAC;IACJ,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,SAAS,CAAC,MAAuB;QAC5C,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;YACxC,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAEvD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE;gBAC5E,aAAa,EAAE,aAAa;gBAC5B,OAAO,EAAE;oBACP,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO;oBAC5B,MAAM,EAAE,MAAM,CAAC,MAAM;iBACtB;aACF,CAAC,CAAC;YACH,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,uBAAuB,EAAE,KAAK,CAAC,CAAC;YAC9C,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,eAAe,CAAC,MAA6B;QACxD,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;YACxC,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAEvD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,eAAe,CAAC,WAAW,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE;gBACnG,aAAa,EAAE,qBAAqB;gBACpC,OAAO,EAAE;oBACP,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO;oBAC5B,MAAM,EAAE,MAAM,CAAC,MAAM;oBACrB,OAAO,EAAE,MAAM,CAAC,OAAO;iBACxB;aACF,CAAC,CAAC;YACH,OAAO,OAAO,CAAC;QACjB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,mCAAmC,MAAM,CAAC,OAAO,GAAG,EAAE,KAAK,CAAC,CAAC;YAC3E,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,aAAa,CAAC,MAA2B;QACpD,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;YACxC,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAEvD,oFAAoF;YACpF,sBAAsB;YACtB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE;gBAC1F,aAAa,EAAE,YAAY;gBAC3B,OAAO,EAAE;oBACP,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO;oBAC5B,MAAM,EAAE,MAAM,CAAC,MAAM;oBACrB,OAAO,EAAE,MAAM,CAAC,OAAO;iBACxB;aACF,CAAC,CAAC;YAEH,6BAA6B;YAC7B,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,eAAe,CAAC,WAAW,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE;gBACnG,aAAa,EAAE,sBAAsB;gBACrC,OAAO,EAAE;oBACP,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO;oBAC5B,MAAM,EAAE,MAAM,CAAC,MAAM;oBACrB,OAAO,EAAE,MAAM,CAAC,OAAO;iBACxB;aACF,CAAC,CAAC;YAEH,mBAAmB;YACnB,OAAO;gBACL,KAAK;gBACL,OAAO;aACR,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,uCAAuC,MAAM,CAAC,OAAO,GAAG,EAAE,KAAK,CAAC,CAAC;YAC/E,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,eAAe,CAAC,MAA6B;QACxD,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;YACxC,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAEvD,6DAA6D;YAC7D,+DAA+D;YAC/D,qEAAqE;YACrE,MAAM,UAAU,GAAG;gBACjB,EAAE,EAAE,MAAM,CAAC,UAAU;gBACrB,MAAM,EAAE;oBACN,oBAAoB,EAAE,MAAM,CAAC,QAAQ;iBACtC;aACF,CAAC;YAEF,kEAAkE;YAClE,qDAAqD;YACrD,OAAO,UAAU,CAAC;QACpB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,qBAAqB,MAAM,CAAC,UAAU,aAAa,MAAM,CAAC,OAAO,GAAG,EAAE,KAAK,CAAC,CAAC;YAC3F,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,UAAU,CAAC,MAAwB;QAC9C,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;YACxC,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAEvD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,iBAAiB,CAAC,WAAW,CAAC,EAAE;gBACrF,aAAa,EAAE,cAAc;gBAC7B,OAAO,EAAE;oBACP,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO;oBAC5B,MAAM,EAAE,MAAM,CAAC,MAAM;iBACtB;aACF,CAAC,CAAC;YACH,OAAO,OAAO,CAAC;QACjB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAC;YAC/C,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,gBAAgB,CAAC,MAA8B;QAC1D,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;YACxC,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAEvD,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,iBAAiB,CAAC,WAAW,EAAE,SAAS,CAAC,EAAE;gBAC1G,aAAa,EAAE,iBAAiB;gBAChC,OAAO,EAAE;oBACP,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO;oBAC5B,MAAM,EAAE,MAAM,CAAC,MAAM;iBACtB;aACF,CAAC,CAAC;YACH,OAAO,iBAAiB,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACzF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,+BAA+B,EAAE,KAAK,CAAC,CAAC;YACtD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,kBAAkB,CAAC,MAAgC;QAC9D,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;YACxC,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAEvD,MAAM,eAAe,GAAqB,EAAE,CAAC;YAC7C,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,qBAAqB,CAAC,WAAW,EAAE,MAAM,CAAC,QAAQ,CAAC,EAAE;gBAC5G,aAAa,EAAE,qCAAqC;gBACpD,OAAO,EAAE;oBACP,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO;oBAC5B,QAAQ,EAAE,MAAM,CAAC,QAAQ;oBACzB,MAAM,EAAE,MAAM,CAAC,MAAM;iBACtB;aACF,EAAE,eAAe,CAAC,CAAC;YACpB,MAAM,WAAW,GAAQ,SAAS,CAAC;YACnC,MAAM,QAAQ,GAAG,WAAW,EAAE,SAAS,IAAI,WAAW,EAAE,iBAAiB,IAAI,EAAE,CAAC;YAChF,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE;gBAChG,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,SAAS,EAAE,CAAC,IAAS,EAAE,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,IAAI,EAAE,EAAE,IAAI,IAAI,EAAE,QAAQ,EAAE,EAAE;gBAC5E,aAAa,EAAE,4BAA4B;gBAC3C,mBAAmB,EAAE,eAAe;aACrC,CAAC,CAAC;YAEH,OAAO;gBACL,GAAG,SAAS;gBACZ,SAAS,EAAE,iBAAiB;gBAC5B,KAAK,EAAE,iBAAiB,CAAC,MAAM;gBAC/B,YAAY,EAAE,uCAAkB,CAAC,iBAAiB,CAAC,eAAe,CAAC;aACpE,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,uCAAuC,MAAM,CAAC,QAAQ,GAAG,EAAE,KAAK,CAAC,CAAC;YAChF,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,aAAa,CAAC,MAA2B;QACpD,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;YACxC,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAEvD,sEAAsE;YACtE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,cAAc,CAAC,WAAW,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE;gBACjG,aAAa,EAAE,oBAAoB;gBACnC,OAAO,EAAE;oBACP,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO;oBAC5B,MAAM,EAAE,MAAM,CAAC,MAAM;oBACrB,OAAO,EAAE,MAAM,CAAC,OAAO;iBACxB;aACF,CAAC,CAAC;YAEH,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,wCAAwC,MAAM,CAAC,OAAO,GAAG,EAAE,KAAK,CAAC,CAAC;YAChF,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,iBAAiB,CAAC,MAA+B;QAC5D,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;YACxC,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAEvD,4EAA4E;YAC5E,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,eAAe,CAAC,WAAW,CAAC,EAAE;gBACxF,aAAa,EAAE,+BAA+B;gBAC9C,OAAO,EAAE;oBACP,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO;oBAC5B,MAAM,EAAE,MAAM,CAAC,MAAM;oBACrB,QAAQ,EAAE,MAAM,CAAC,QAAQ;iBAC1B;aACF,CAAC,CAAC;YAEH,uCAAuC;YACvC,OAAO;gBACL,YAAY;gBACZ,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,OAAO,EAAE,oEAAoE;aAC9E,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,qCAAqC,MAAM,CAAC,QAAQ,GAAG,EAAE,KAAK,CAAC,CAAC;YAC9E,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,cAAc,CAAC,MAA4B;QACtD,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;YACxC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;YAEpD,4CAA4C;YAC5C,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,oCAAoC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE;gBACxH,aAAa,EAAE,oBAAoB;gBACnC,OAAO,EAAE;oBACP,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO;oBAC5B,MAAM;iBACP;aACF,CAAC,CAAC;YAEH,2DAA2D;YAC3D,IAAI,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;gBACtC,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,MAAW,EAAE,EAAE,CAAC,CAAC;oBAChD,WAAW,EAAE,MAAM,CAAC,QAAQ,EAAE,WAAW;oBACzC,UAAU,EAAE,MAAM,CAAC,QAAQ,EAAE,UAAU;oBACvC,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,KAAK;iBACzC,CAAC,CAAC,CAAC;gBAEJ,OAAO,WAAW,CAAC;YACrB,CAAC;YAED,OAAO,OAAO,CAAC;QACjB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,uCAAuC,MAAM,CAAC,MAAM,GAAG,EAAE,KAAK,CAAC,CAAC;YAC9E,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,QAAQ,CAAC,GAAY,EAAE,IAAa;QAC/C,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;YACxC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,SAAS,EAAE,GAAG,IAAI,GAAG,EAAE,IAAI,CAAC,EAAE;gBAC/G,aAAa,EAAE,YAAY;gBAC3B,OAAO,EAAE;oBACP,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO;oBAC5B,GAAG,EAAE,GAAG,IAAI,GAAG;oBACf,IAAI;iBACL;aACF,CAAC,CAAC;YACH,OAAO,KAAK,CAAC;QACf,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,sBAAsB,EAAE,KAAK,CAAC,CAAC;YAC7C,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,gBAAgB;QAC5B,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;YACxC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;gBAClF,aAAa,EAAE,sBAAsB;gBACrC,OAAO,EAAE;oBACP,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO;iBAC7B;aACF,CAAC,CAAC;YAEH,sEAAsE;YACtE,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;YAEtF,OAAO,WAAW,CAAC,EAAG,CAAC;QACzB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,gCAAgC,EAAE,KAAK,CAAC,CAAC;YACvD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;CACF;AApWD,oDAoWC"}