@mcp-consultant-tools/azure-devops-admin 28.0.0 → 29.0.0-beta.2
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.
- package/build/ado-auth-provider.d.ts +32 -0
- package/build/ado-auth-provider.d.ts.map +1 -0
- package/build/ado-auth-provider.js +92 -0
- package/build/ado-auth-provider.js.map +1 -0
- package/build/context-factory.d.ts.map +1 -1
- package/build/context-factory.js +7 -5
- package/build/context-factory.js.map +1 -1
- package/build/index.d.ts +2 -0
- package/build/index.d.ts.map +1 -1
- package/build/index.js +9 -6
- package/build/index.js.map +1 -1
- package/build/services/admin-client.d.ts +5 -2
- package/build/services/admin-client.d.ts.map +1 -1
- package/build/services/admin-client.js +9 -5
- package/build/services/admin-client.js.map +1 -1
- package/build/types.d.ts +2 -1
- package/build/types.d.ts.map +1 -1
- package/package.json +3 -2
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
export type AuthMode = 'pat' | 'entra-id';
|
|
2
|
+
export interface PatAuthConfig {
|
|
3
|
+
mode: 'pat';
|
|
4
|
+
pat: string;
|
|
5
|
+
}
|
|
6
|
+
export interface EntraIdAuthConfig {
|
|
7
|
+
mode: 'entra-id';
|
|
8
|
+
tenantId: string;
|
|
9
|
+
clientId: string;
|
|
10
|
+
clientSecret: string;
|
|
11
|
+
}
|
|
12
|
+
export type AdoAuthConfig = PatAuthConfig | EntraIdAuthConfig;
|
|
13
|
+
export declare class AdoAuthProvider {
|
|
14
|
+
private readonly config;
|
|
15
|
+
private readonly patHeader;
|
|
16
|
+
private credential;
|
|
17
|
+
private tokenCache;
|
|
18
|
+
constructor(config: AdoAuthConfig);
|
|
19
|
+
get mode(): AuthMode;
|
|
20
|
+
/**
|
|
21
|
+
* Get the Authorization header value.
|
|
22
|
+
* PAT mode: returns cached "Basic <base64>" header.
|
|
23
|
+
* Entra ID mode: returns "Bearer <token>" (acquires/caches token).
|
|
24
|
+
*/
|
|
25
|
+
getAuthHeader(): Promise<string>;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Detect auth mode from environment variables and build config.
|
|
29
|
+
* Priority: Entra ID > PAT. If both set, Entra ID wins (PAT ignored with warning).
|
|
30
|
+
*/
|
|
31
|
+
export declare function resolveAuthConfig(): AdoAuthConfig;
|
|
32
|
+
//# sourceMappingURL=ado-auth-provider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ado-auth-provider.d.ts","sourceRoot":"","sources":["../src/ado-auth-provider.ts"],"names":[],"mappings":"AAYA,MAAM,MAAM,QAAQ,GAAG,KAAK,GAAG,UAAU,CAAC;AAE1C,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,KAAK,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,UAAU,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,MAAM,aAAa,GAAG,aAAa,GAAG,iBAAiB,CAAC;AAE9D,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgB;IACvC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAuB;IACjD,OAAO,CAAC,UAAU,CAAuC;IACzD,OAAO,CAAC,UAAU,CAAqD;gBAE3D,MAAM,EAAE,aAAa;IAajC,IAAI,IAAI,IAAI,QAAQ,CAEnB;IAED;;;;OAIG;IACG,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC;CA4BvC;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI,aAAa,CA4CjD"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Authentication provider for Azure DevOps.
|
|
3
|
+
* Supports PAT (Basic) and Entra ID (Bearer) authentication.
|
|
4
|
+
*/
|
|
5
|
+
import { ClientSecretCredential } from '@azure/identity';
|
|
6
|
+
/** Azure DevOps resource ID for OAuth2 scope */
|
|
7
|
+
const ADO_RESOURCE_SCOPE = '499b84ac-1321-427f-aa17-267ca6975798/.default';
|
|
8
|
+
/** Refresh token 5 minutes before expiry */
|
|
9
|
+
const TOKEN_REFRESH_BUFFER_MS = 5 * 60 * 1000;
|
|
10
|
+
export class AdoAuthProvider {
|
|
11
|
+
config;
|
|
12
|
+
patHeader = null;
|
|
13
|
+
credential = null;
|
|
14
|
+
tokenCache = null;
|
|
15
|
+
constructor(config) {
|
|
16
|
+
this.config = config;
|
|
17
|
+
if (config.mode === 'pat') {
|
|
18
|
+
this.patHeader = `Basic ${Buffer.from(`:${config.pat}`).toString('base64')}`;
|
|
19
|
+
}
|
|
20
|
+
else {
|
|
21
|
+
this.credential = new ClientSecretCredential(config.tenantId, config.clientId, config.clientSecret);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
get mode() {
|
|
25
|
+
return this.config.mode;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Get the Authorization header value.
|
|
29
|
+
* PAT mode: returns cached "Basic <base64>" header.
|
|
30
|
+
* Entra ID mode: returns "Bearer <token>" (acquires/caches token).
|
|
31
|
+
*/
|
|
32
|
+
async getAuthHeader() {
|
|
33
|
+
if (this.config.mode === 'pat') {
|
|
34
|
+
return this.patHeader;
|
|
35
|
+
}
|
|
36
|
+
// Entra ID mode — return cached token if still valid
|
|
37
|
+
const now = Date.now();
|
|
38
|
+
if (this.tokenCache && this.tokenCache.expiresOn > now + TOKEN_REFRESH_BUFFER_MS) {
|
|
39
|
+
return `Bearer ${this.tokenCache.token}`;
|
|
40
|
+
}
|
|
41
|
+
// Acquire new token
|
|
42
|
+
const tokenResponse = await this.credential.getToken(ADO_RESOURCE_SCOPE);
|
|
43
|
+
if (!tokenResponse || !tokenResponse.token) {
|
|
44
|
+
throw new Error('Failed to acquire Azure DevOps access token via Entra ID');
|
|
45
|
+
}
|
|
46
|
+
this.tokenCache = {
|
|
47
|
+
token: tokenResponse.token,
|
|
48
|
+
expiresOn: tokenResponse.expiresOnTimestamp,
|
|
49
|
+
};
|
|
50
|
+
console.error(`Azure DevOps Entra ID token acquired, expires at ${new Date(tokenResponse.expiresOnTimestamp).toISOString()}`);
|
|
51
|
+
return `Bearer ${this.tokenCache.token}`;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Detect auth mode from environment variables and build config.
|
|
56
|
+
* Priority: Entra ID > PAT. If both set, Entra ID wins (PAT ignored with warning).
|
|
57
|
+
*/
|
|
58
|
+
export function resolveAuthConfig() {
|
|
59
|
+
const entraIdVars = [
|
|
60
|
+
process.env.AZUREDEVOPS_TENANT_ID,
|
|
61
|
+
process.env.AZUREDEVOPS_CLIENT_ID,
|
|
62
|
+
process.env.AZUREDEVOPS_CLIENT_SECRET,
|
|
63
|
+
];
|
|
64
|
+
const entraIdSetCount = entraIdVars.filter(Boolean).length;
|
|
65
|
+
const hasEntraId = entraIdSetCount === 3;
|
|
66
|
+
const hasPat = !!process.env.AZUREDEVOPS_PAT;
|
|
67
|
+
if (entraIdSetCount > 0 && entraIdSetCount < 3) {
|
|
68
|
+
throw new Error('Incomplete Entra ID configuration. All three variables are required: ' +
|
|
69
|
+
'AZUREDEVOPS_TENANT_ID, AZUREDEVOPS_CLIENT_ID, AZUREDEVOPS_CLIENT_SECRET');
|
|
70
|
+
}
|
|
71
|
+
if (hasEntraId && hasPat) {
|
|
72
|
+
console.error('Both Entra ID credentials and PAT are configured. Using Entra ID; PAT will be ignored.');
|
|
73
|
+
}
|
|
74
|
+
if (hasEntraId) {
|
|
75
|
+
return {
|
|
76
|
+
mode: 'entra-id',
|
|
77
|
+
tenantId: process.env.AZUREDEVOPS_TENANT_ID,
|
|
78
|
+
clientId: process.env.AZUREDEVOPS_CLIENT_ID,
|
|
79
|
+
clientSecret: process.env.AZUREDEVOPS_CLIENT_SECRET,
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
if (hasPat) {
|
|
83
|
+
return {
|
|
84
|
+
mode: 'pat',
|
|
85
|
+
pat: process.env.AZUREDEVOPS_PAT,
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
throw new Error('Missing Azure DevOps authentication. Provide either:\n' +
|
|
89
|
+
' - AZUREDEVOPS_PAT (Personal Access Token), or\n' +
|
|
90
|
+
' - AZUREDEVOPS_TENANT_ID + AZUREDEVOPS_CLIENT_ID + AZUREDEVOPS_CLIENT_SECRET (Entra ID)');
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=ado-auth-provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ado-auth-provider.js","sourceRoot":"","sources":["../src/ado-auth-provider.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context-factory.d.ts","sourceRoot":"","sources":["../src/context-factory.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,cAAc,EAAqC,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"context-factory.d.ts","sourceRoot":"","sources":["../src/context-factory.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,cAAc,EAAqC,MAAM,YAAY,CAAC;AAGpF,YAAY,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5D,wBAAgB,oBAAoB,IAAI,cAAc,CA8ErD"}
|
package/build/context-factory.js
CHANGED
|
@@ -10,6 +10,7 @@ import { EnvironmentService } from './services/environment-service.js';
|
|
|
10
10
|
import { ClassificationService } from './services/classification-service.js';
|
|
11
11
|
import { ArtifactFeedService } from './services/artifact-feed-service.js';
|
|
12
12
|
import { ProjectService } from './services/project-service.js';
|
|
13
|
+
import { resolveAuthConfig } from './ado-auth-provider.js';
|
|
13
14
|
export function createServiceContext() {
|
|
14
15
|
let client = null;
|
|
15
16
|
function getClient() {
|
|
@@ -17,16 +18,17 @@ export function createServiceContext() {
|
|
|
17
18
|
const missingConfig = [];
|
|
18
19
|
if (!process.env.AZUREDEVOPS_ORGANIZATION)
|
|
19
20
|
missingConfig.push('AZUREDEVOPS_ORGANIZATION');
|
|
20
|
-
if (!process.env.AZUREDEVOPS_PAT)
|
|
21
|
-
missingConfig.push('AZUREDEVOPS_PAT');
|
|
22
21
|
if (!process.env.AZUREDEVOPS_PROJECTS)
|
|
23
22
|
missingConfig.push('AZUREDEVOPS_PROJECTS');
|
|
24
23
|
if (missingConfig.length > 0) {
|
|
25
24
|
throw new Error(`Missing required Azure DevOps configuration: ${missingConfig.join(', ')}`);
|
|
26
25
|
}
|
|
26
|
+
// Resolve auth mode (Entra ID or PAT) from environment variables
|
|
27
|
+
const authConfig = resolveAuthConfig();
|
|
27
28
|
const config = {
|
|
28
29
|
organization: process.env.AZUREDEVOPS_ORGANIZATION,
|
|
29
|
-
pat:
|
|
30
|
+
pat: authConfig.mode === 'pat' ? authConfig.pat : undefined,
|
|
31
|
+
authMode: authConfig.mode,
|
|
30
32
|
projects: process.env.AZUREDEVOPS_PROJECTS.split(',').map(p => p.trim()).filter(p => p),
|
|
31
33
|
apiVersion: process.env.AZUREDEVOPS_API_VERSION || '7.1',
|
|
32
34
|
enablePipelineUpsert: process.env.AZUREDEVOPS_ENABLE_PIPELINE_UPSERT === 'true',
|
|
@@ -47,8 +49,8 @@ export function createServiceContext() {
|
|
|
47
49
|
? process.env.AZUREDEVOPS_FEEDS.split(',').map(f => f.trim()).filter(f => f)
|
|
48
50
|
: undefined,
|
|
49
51
|
};
|
|
50
|
-
client = new AdminClient(config);
|
|
51
|
-
console.error(
|
|
52
|
+
client = new AdminClient(config, authConfig);
|
|
53
|
+
console.error(`Azure DevOps Admin service initialized (auth: ${authConfig.mode})`);
|
|
52
54
|
}
|
|
53
55
|
return client;
|
|
54
56
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context-factory.js","sourceRoot":"","sources":["../src/context-factory.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,EAAE,wBAAwB,EAAE,MAAM,0CAA0C,CAAC;AACpF,OAAO,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AAC5E,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AACvE,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAC7E,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAC1E,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"context-factory.js","sourceRoot":"","sources":["../src/context-factory.ts"],"names":[],"mappings":"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"}
|
package/build/index.d.ts
CHANGED
|
@@ -13,4 +13,6 @@
|
|
|
13
13
|
export declare function registerAzureDevOpsAdminTools(server: any): void;
|
|
14
14
|
export { AdminClient } from './services/admin-client.js';
|
|
15
15
|
export type { AzureDevOpsAdminConfig, ServiceContext, TierFlags } from './types.js';
|
|
16
|
+
export { AdoAuthProvider, resolveAuthConfig } from './ado-auth-provider.js';
|
|
17
|
+
export type { AdoAuthConfig, AuthMode } from './ado-auth-provider.js';
|
|
16
18
|
//# sourceMappingURL=index.d.ts.map
|
package/build/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;;;;GAMG;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;;;;GAMG;AAwGH;;;GAGG;AACH,wBAAgB,6BAA6B,CAAC,MAAM,EAAE,GAAG,GAAG,IAAI,CAG/D;AAGD,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,YAAY,EAAE,sBAAsB,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACpF,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC5E,YAAY,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC"}
|
package/build/index.js
CHANGED
|
@@ -20,6 +20,7 @@ import { ClassificationService } from './services/classification-service.js';
|
|
|
20
20
|
import { ArtifactFeedService } from './services/artifact-feed-service.js';
|
|
21
21
|
import { ProjectService } from './services/project-service.js';
|
|
22
22
|
import { registerAllTools } from './tools/index.js';
|
|
23
|
+
import { resolveAuthConfig } from './ado-auth-provider.js';
|
|
23
24
|
/**
|
|
24
25
|
* Build a ServiceContext from environment variables (lazy service initialization).
|
|
25
26
|
*/
|
|
@@ -30,17 +31,18 @@ function createServiceContext() {
|
|
|
30
31
|
const missingConfig = [];
|
|
31
32
|
if (!process.env.AZUREDEVOPS_ORGANIZATION)
|
|
32
33
|
missingConfig.push("AZUREDEVOPS_ORGANIZATION");
|
|
33
|
-
if (!process.env.AZUREDEVOPS_PAT)
|
|
34
|
-
missingConfig.push("AZUREDEVOPS_PAT");
|
|
35
34
|
if (!process.env.AZUREDEVOPS_PROJECTS)
|
|
36
35
|
missingConfig.push("AZUREDEVOPS_PROJECTS");
|
|
37
36
|
if (missingConfig.length > 0) {
|
|
38
37
|
throw new Error(`Missing required Azure DevOps configuration: ${missingConfig.join(", ")}. ` +
|
|
39
|
-
`Set environment variables for organization
|
|
38
|
+
`Set environment variables for organization and allowed projects.`);
|
|
40
39
|
}
|
|
40
|
+
// Resolve auth mode (Entra ID or PAT) from environment variables
|
|
41
|
+
const authConfig = resolveAuthConfig();
|
|
41
42
|
const config = {
|
|
42
43
|
organization: process.env.AZUREDEVOPS_ORGANIZATION,
|
|
43
|
-
pat:
|
|
44
|
+
pat: authConfig.mode === 'pat' ? authConfig.pat : undefined,
|
|
45
|
+
authMode: authConfig.mode,
|
|
44
46
|
projects: process.env.AZUREDEVOPS_PROJECTS.split(",").map(p => p.trim()).filter(p => p),
|
|
45
47
|
apiVersion: process.env.AZUREDEVOPS_API_VERSION || "7.1",
|
|
46
48
|
enablePipelineUpsert: process.env.AZUREDEVOPS_ENABLE_PIPELINE_UPSERT === "true",
|
|
@@ -61,8 +63,8 @@ function createServiceContext() {
|
|
|
61
63
|
? process.env.AZUREDEVOPS_FEEDS.split(",").map(f => f.trim()).filter(f => f)
|
|
62
64
|
: undefined,
|
|
63
65
|
};
|
|
64
|
-
client = new AdminClient(config);
|
|
65
|
-
console.error(
|
|
66
|
+
client = new AdminClient(config, authConfig);
|
|
67
|
+
console.error(`Azure DevOps Admin service initialized (auth: ${authConfig.mode})`);
|
|
66
68
|
}
|
|
67
69
|
return client;
|
|
68
70
|
}
|
|
@@ -105,6 +107,7 @@ export function registerAzureDevOpsAdminTools(server) {
|
|
|
105
107
|
}
|
|
106
108
|
// Backward-compatible exports
|
|
107
109
|
export { AdminClient } from './services/admin-client.js';
|
|
110
|
+
export { AdoAuthProvider, resolveAuthConfig } from './ado-auth-provider.js';
|
|
108
111
|
/**
|
|
109
112
|
* Standalone CLI server (when run directly)
|
|
110
113
|
* Uses realpathSync to resolve symlinks created by npx
|
package/build/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;;;;GAMG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAE9E,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,EAAE,wBAAwB,EAAE,MAAM,0CAA0C,CAAC;AACpF,OAAO,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AAC5E,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AACvE,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAC7E,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAC1E,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAE/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;;;;GAMG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAE9E,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,EAAE,wBAAwB,EAAE,MAAM,0CAA0C,CAAC;AACpF,OAAO,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AAC5E,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AACvE,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAC7E,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAC1E,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAE/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE3D;;GAEG;AACH,SAAS,oBAAoB;IAC3B,IAAI,MAAM,GAAuB,IAAI,CAAC;IAEtC,SAAS,SAAS;QAChB,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,aAAa,GAAa,EAAE,CAAC;YACnC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,wBAAwB;gBAAE,aAAa,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;YAC1F,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB;gBAAE,aAAa,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;YAElF,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC7B,MAAM,IAAI,KAAK,CACb,gDAAgD,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;oBAC5E,kEAAkE,CACnE,CAAC;YACJ,CAAC;YAED,iEAAiE;YACjE,MAAM,UAAU,GAAG,iBAAiB,EAAE,CAAC;YAEvC,MAAM,MAAM,GAA2B;gBACrC,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,wBAAyB;gBACnD,GAAG,EAAE,UAAU,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS;gBAC3D,QAAQ,EAAE,UAAU,CAAC,IAAI;gBACzB,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,oBAAqB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBACxF,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,uBAAuB,IAAI,KAAK;gBACxD,oBAAoB,EAAE,OAAO,CAAC,GAAG,CAAC,kCAAkC,KAAK,MAAM;gBAC/E,oBAAoB,EAAE,OAAO,CAAC,GAAG,CAAC,kCAAkC,KAAK,MAAM;gBAC/E,uBAAuB,EAAE,OAAO,CAAC,GAAG,CAAC,sCAAsC,KAAK,MAAM;gBACtF,uBAAuB,EAAE,OAAO,CAAC,GAAG,CAAC,sCAAsC,KAAK,MAAM;gBACtF,yBAAyB,EAAE,OAAO,CAAC,GAAG,CAAC,wCAAwC,KAAK,MAAM;gBAC1F,yBAAyB,EAAE,OAAO,CAAC,GAAG,CAAC,wCAAwC,KAAK,MAAM;gBAC1F,qBAAqB,EAAE,OAAO,CAAC,GAAG,CAAC,oCAAoC,KAAK,MAAM;gBAClF,sBAAsB,EAAE,OAAO,CAAC,GAAG,CAAC,qCAAqC,KAAK,MAAM;gBACpF,uBAAuB,EAAE,OAAO,CAAC,GAAG,CAAC,qCAAqC,KAAK,MAAM;gBACrF,uBAAuB,EAAE,OAAO,CAAC,GAAG,CAAC,qCAAqC,KAAK,MAAM;gBACrF,8BAA8B,EAAE,OAAO,CAAC,GAAG,CAAC,6CAA6C,KAAK,MAAM;gBACpG,8BAA8B,EAAE,OAAO,CAAC,GAAG,CAAC,6CAA6C,KAAK,MAAM;gBACpG,mBAAmB,EAAE,OAAO,CAAC,GAAG,CAAC,iCAAiC,KAAK,MAAM;gBAC7E,mBAAmB,EAAE,OAAO,CAAC,GAAG,CAAC,iCAAiC,KAAK,MAAM;gBAC7E,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB;oBAClC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;oBAC5E,CAAC,CAAC,SAAS;aACd,CAAC;YAEF,MAAM,GAAG,IAAI,WAAW,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;YAC7C,OAAO,CAAC,KAAK,CAAC,iDAAiD,UAAU,CAAC,IAAI,GAAG,CAAC,CAAC;QACrF,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM,SAAS,GAAc;QAC3B,oBAAoB,EAAE,OAAO,CAAC,GAAG,CAAC,kCAAkC,KAAK,MAAM;QAC/E,oBAAoB,EAAE,OAAO,CAAC,GAAG,CAAC,kCAAkC,KAAK,MAAM;QAC/E,uBAAuB,EAAE,OAAO,CAAC,GAAG,CAAC,sCAAsC,KAAK,MAAM;QACtF,uBAAuB,EAAE,OAAO,CAAC,GAAG,CAAC,sCAAsC,KAAK,MAAM;QACtF,yBAAyB,EAAE,OAAO,CAAC,GAAG,CAAC,wCAAwC,KAAK,MAAM;QAC1F,yBAAyB,EAAE,OAAO,CAAC,GAAG,CAAC,wCAAwC,KAAK,MAAM;QAC1F,qBAAqB,EAAE,OAAO,CAAC,GAAG,CAAC,oCAAoC,KAAK,MAAM;QAClF,sBAAsB,EAAE,OAAO,CAAC,GAAG,CAAC,qCAAqC,KAAK,MAAM;QACpF,uBAAuB,EAAE,OAAO,CAAC,GAAG,CAAC,qCAAqC,KAAK,MAAM;QACrF,uBAAuB,EAAE,OAAO,CAAC,GAAG,CAAC,qCAAqC,KAAK,MAAM;QACrF,8BAA8B,EAAE,OAAO,CAAC,GAAG,CAAC,6CAA6C,KAAK,MAAM;QACpG,8BAA8B,EAAE,OAAO,CAAC,GAAG,CAAC,6CAA6C,KAAK,MAAM;QACpG,mBAAmB,EAAE,OAAO,CAAC,GAAG,CAAC,iCAAiC,KAAK,MAAM;QAC7E,mBAAmB,EAAE,OAAO,CAAC,GAAG,CAAC,iCAAiC,KAAK,MAAM;KAC9E,CAAC;IAEF,OAAO;QACL,IAAI,MAAM,KAAK,OAAO,SAAS,EAAE,CAAC,CAAC,CAAC;QACpC,IAAI,SAAS,KAAK,OAAO,IAAI,eAAe,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC;QAC5D,IAAI,kBAAkB,KAAK,OAAO,IAAI,wBAAwB,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC;QAC9E,IAAI,cAAc,KAAK,OAAO,IAAI,oBAAoB,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC;QACtE,IAAI,UAAU,KAAK,OAAO,IAAI,gBAAgB,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC;QAC9D,IAAI,YAAY,KAAK,OAAO,IAAI,kBAAkB,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC;QAClE,IAAI,cAAc,KAAK,OAAO,IAAI,qBAAqB,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC;QACvE,IAAI,aAAa,KAAK,OAAO,IAAI,mBAAmB,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC;QACpE,IAAI,QAAQ,KAAK,OAAO,IAAI,cAAc,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC;QAC1D,SAAS;KACV,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,6BAA6B,CAAC,MAAW;IACvD,MAAM,GAAG,GAAG,oBAAoB,EAAE,CAAC;IACnC,gBAAgB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAChC,CAAC;AAED,8BAA8B;AAC9B,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAEzD,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAG5E;;;GAGG;AACH,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,aAAa,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC1E,MAAM,OAAO,GAAG,eAAe,EAAE,CAAC;IAClC,OAAO,EAAE,CAAC;IAEV,MAAM,MAAM,GAAG,eAAe,CAAC;QAC7B,IAAI,EAAE,0CAA0C;QAChD,OAAO,EAAE,OAAO;QAChB,YAAY,EAAE;YACZ,KAAK,EAAE,EAAE;SACV;KACF,CAAC,CAAC;IAEH,6BAA6B,CAAC,MAAM,CAAC,CAAC;IAEtC,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,CAAC,KAAY,EAAE,EAAE;QAC/C,OAAO,CAAC,KAAK,CAAC,sEAAsE,EAAE,KAAK,CAAC,CAAC;QAC7F,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,KAAK,CAAC,kEAAkE,CAAC,CAAC;AACpF,CAAC"}
|
|
@@ -1,13 +1,16 @@
|
|
|
1
1
|
import type { AzureDevOpsAdminConfig } from '../types.js';
|
|
2
|
+
import { type AdoAuthConfig } from '../ado-auth-provider.js';
|
|
2
3
|
export declare class AdminClient {
|
|
3
4
|
readonly config: AzureDevOpsAdminConfig;
|
|
4
5
|
readonly baseUrl: string;
|
|
5
6
|
readonly feedsUrl: string;
|
|
6
7
|
readonly apiVersion: string;
|
|
7
|
-
private readonly
|
|
8
|
-
constructor(config: AzureDevOpsAdminConfig);
|
|
8
|
+
private readonly authProvider;
|
|
9
|
+
constructor(config: AzureDevOpsAdminConfig, authConfig: AdoAuthConfig);
|
|
9
10
|
validateProject(project: string): void;
|
|
10
11
|
validateFeed(feedName: string): void;
|
|
12
|
+
/** Authentication mode (pat or entra-id) */
|
|
13
|
+
get authMode(): string;
|
|
11
14
|
/**
|
|
12
15
|
* Converts a date string to ISO 8601 format with time component.
|
|
13
16
|
* Azure DevOps Classification Nodes API requires full ISO 8601 format.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin-client.d.ts","sourceRoot":"","sources":["../../src/services/admin-client.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,sBAAsB,EAA4B,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"admin-client.d.ts","sourceRoot":"","sources":["../../src/services/admin-client.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,sBAAsB,EAA4B,MAAM,aAAa,CAAC;AACpF,OAAO,EAAmB,KAAK,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAE9E,qBAAa,WAAW;IACtB,QAAQ,CAAC,MAAM,EAAE,sBAAsB,CAAC;IACxC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAkB;gBAEnC,MAAM,EAAE,sBAAsB,EAAE,UAAU,EAAE,aAAa;IA0BrE,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAOtC,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAUpC,4CAA4C;IAC5C,IAAI,QAAQ,IAAI,MAAM,CAAmC;IAEzD;;;;OAIG;IACH,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAOnC,WAAW,CAAC,CAAC,EACjB,QAAQ,EAAE,MAAM,EAChB,MAAM,GAAE,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,GAAG,QAAgB,EAC3D,IAAI,CAAC,EAAE,GAAG,EACV,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACtC,WAAW,CAAC,EAAE,MAAM,EACpB,eAAe,CAAC,EAAE,MAAM,GACvB,OAAO,CAAC,CAAC,CAAC;CA4Cd"}
|
|
@@ -3,13 +3,14 @@
|
|
|
3
3
|
* Provides authenticated request methods, project/feed validation, and date formatting.
|
|
4
4
|
*/
|
|
5
5
|
import axios from 'axios';
|
|
6
|
+
import { AdoAuthProvider } from '../ado-auth-provider.js';
|
|
6
7
|
export class AdminClient {
|
|
7
8
|
config;
|
|
8
9
|
baseUrl;
|
|
9
10
|
feedsUrl;
|
|
10
11
|
apiVersion;
|
|
11
|
-
|
|
12
|
-
constructor(config) {
|
|
12
|
+
authProvider;
|
|
13
|
+
constructor(config, authConfig) {
|
|
13
14
|
this.config = {
|
|
14
15
|
...config,
|
|
15
16
|
apiVersion: config.apiVersion || '7.1',
|
|
@@ -31,7 +32,7 @@ export class AdminClient {
|
|
|
31
32
|
this.baseUrl = `https://dev.azure.com/${this.config.organization}`;
|
|
32
33
|
this.feedsUrl = `https://feeds.dev.azure.com/${this.config.organization}`;
|
|
33
34
|
this.apiVersion = this.config.apiVersion;
|
|
34
|
-
this.
|
|
35
|
+
this.authProvider = new AdoAuthProvider(authConfig);
|
|
35
36
|
}
|
|
36
37
|
validateProject(project) {
|
|
37
38
|
if (this.config.projects.includes('*'))
|
|
@@ -47,6 +48,8 @@ export class AdminClient {
|
|
|
47
48
|
`Allowed feeds: ${this.config.feeds.join(', ')}`);
|
|
48
49
|
}
|
|
49
50
|
}
|
|
51
|
+
/** Authentication mode (pat or entra-id) */
|
|
52
|
+
get authMode() { return this.authProvider.mode; }
|
|
50
53
|
/**
|
|
51
54
|
* Converts a date string to ISO 8601 format with time component.
|
|
52
55
|
* Azure DevOps Classification Nodes API requires full ISO 8601 format.
|
|
@@ -60,13 +63,14 @@ export class AdminClient {
|
|
|
60
63
|
}
|
|
61
64
|
async makeRequest(endpoint, method = 'GET', data, customHeaders, contentType, baseUrlOverride) {
|
|
62
65
|
try {
|
|
66
|
+
const authHeader = await this.authProvider.getAuthHeader();
|
|
63
67
|
const url = `${baseUrlOverride || this.baseUrl}/${endpoint}`;
|
|
64
68
|
const defaultContentType = method === 'PATCH' ? 'application/json-patch+json' : 'application/json';
|
|
65
69
|
const response = await axios({
|
|
66
70
|
method,
|
|
67
71
|
url,
|
|
68
72
|
headers: {
|
|
69
|
-
'Authorization':
|
|
73
|
+
'Authorization': authHeader,
|
|
70
74
|
'Content-Type': contentType || defaultContentType,
|
|
71
75
|
'Accept': 'application/json',
|
|
72
76
|
...customHeaders
|
|
@@ -85,7 +89,7 @@ export class AdminClient {
|
|
|
85
89
|
error: errorDetails
|
|
86
90
|
});
|
|
87
91
|
if (error.response?.status === 401) {
|
|
88
|
-
throw new Error('Azure DevOps authentication failed. Please check your PAT token and permissions.');
|
|
92
|
+
throw new Error('Azure DevOps authentication failed. Please check your PAT token or Entra ID credentials and permissions.');
|
|
89
93
|
}
|
|
90
94
|
if (error.response?.status === 403) {
|
|
91
95
|
const detail = typeof errorDetails === 'string' ? errorDetails : '';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin-client.js","sourceRoot":"","sources":["../../src/services/admin-client.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"admin-client.js","sourceRoot":"","sources":["../../src/services/admin-client.ts"],"names":[],"mappings":"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"}
|
package/build/types.d.ts
CHANGED
|
@@ -13,7 +13,8 @@ import type { ArtifactFeedService } from './services/artifact-feed-service.js';
|
|
|
13
13
|
import type { ProjectService } from './services/project-service.js';
|
|
14
14
|
export interface AzureDevOpsAdminConfig {
|
|
15
15
|
organization: string;
|
|
16
|
-
pat
|
|
16
|
+
pat?: string;
|
|
17
|
+
authMode?: 'pat' | 'entra-id';
|
|
17
18
|
projects: string[];
|
|
18
19
|
apiVersion?: string;
|
|
19
20
|
enablePipelineUpsert?: boolean;
|
package/build/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,0CAA0C,CAAC;AACzF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AACjF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AAC5E,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAClF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAC/E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAEpE,MAAM,WAAW,sBAAsB;IACrC,YAAY,EAAE,MAAM,CAAC;IACrB,GAAG,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,0CAA0C,CAAC;AACzF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AACjF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AAC5E,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAClF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAC/E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAEpE,MAAM,WAAW,sBAAsB;IACrC,YAAY,EAAE,MAAM,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,KAAK,GAAG,UAAU,CAAC;IAC9B,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IAGpB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAG/B,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAGlC,yBAAyB,CAAC,EAAE,OAAO,CAAC;IACpC,yBAAyB,CAAC,EAAE,OAAO,CAAC;IAGpC,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,sBAAsB,CAAC,EAAE,OAAO,CAAC;IAGjC,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAGlC,8BAA8B,CAAC,EAAE,OAAO,CAAC;IACzC,8BAA8B,CAAC,EAAE,OAAO,CAAC;IAGzC,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAG9B,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,SAAS;IAExB,oBAAoB,EAAE,OAAO,CAAC;IAC9B,uBAAuB,EAAE,OAAO,CAAC;IACjC,yBAAyB,EAAE,OAAO,CAAC;IACnC,qBAAqB,EAAE,OAAO,CAAC;IAC/B,uBAAuB,EAAE,OAAO,CAAC;IACjC,8BAA8B,EAAE,OAAO,CAAC;IAGxC,oBAAoB,EAAE,OAAO,CAAC;IAC9B,uBAAuB,EAAE,OAAO,CAAC;IACjC,yBAAyB,EAAE,OAAO,CAAC;IACnC,sBAAsB,EAAE,OAAO,CAAC;IAChC,uBAAuB,EAAE,OAAO,CAAC;IACjC,8BAA8B,EAAE,OAAO,CAAC;IACxC,mBAAmB,EAAE,OAAO,CAAC;IAC7B,mBAAmB,EAAE,OAAO,CAAC;CAC9B;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,SAAS,EAAE,eAAe,CAAC;IACpC,QAAQ,CAAC,kBAAkB,EAAE,wBAAwB,CAAC;IACtD,QAAQ,CAAC,cAAc,EAAE,oBAAoB,CAAC;IAC9C,QAAQ,CAAC,UAAU,EAAE,gBAAgB,CAAC;IACtC,QAAQ,CAAC,YAAY,EAAE,kBAAkB,CAAC;IAC1C,QAAQ,CAAC,cAAc,EAAE,qBAAqB,CAAC;IAC/C,QAAQ,CAAC,aAAa,EAAE,mBAAmB,CAAC;IAC5C,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC;IAClC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;CAC/B;AAGD,MAAM,WAAW,wBAAwB,CAAC,CAAC;IACzC,KAAK,EAAE,CAAC,EAAE,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mcp-consultant-tools/azure-devops-admin",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "29.0.0-beta.2",
|
|
4
4
|
"description": "MCP server for Azure DevOps admin operations - pipelines, service connections, agent pools, and environments",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./build/index.js",
|
|
@@ -40,7 +40,8 @@
|
|
|
40
40
|
"node": ">=16.0.0"
|
|
41
41
|
},
|
|
42
42
|
"dependencies": {
|
|
43
|
-
"@
|
|
43
|
+
"@azure/identity": "^4.13.0",
|
|
44
|
+
"@mcp-consultant-tools/core": "29.0.0-beta.1",
|
|
44
45
|
"@modelcontextprotocol/sdk": "^1.0.4",
|
|
45
46
|
"axios": "^1.8.3",
|
|
46
47
|
"commander": "^14.0.3",
|