@mcp-consultant-tools/azure-devops 29.0.0-beta.8 → 29.0.0
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/azure-devops-client.d.ts +5 -2
- package/build/azure-devops-client.d.ts.map +1 -1
- package/build/azure-devops-client.js +18 -13
- package/build/azure-devops-client.js.map +1 -1
- package/build/context-factory.d.ts.map +1 -1
- package/build/context-factory.js +8 -6
- 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 +2 -0
- package/build/index.js.map +1 -1
- package/build/models/api-types.d.ts +2 -1
- package/build/models/api-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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"}
|
|
@@ -6,14 +6,15 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import { type AxiosResponse } from 'axios';
|
|
8
8
|
import type { AzureDevOpsConfig } from './models/index.js';
|
|
9
|
+
import { type AdoAuthConfig } from './ado-auth-provider.js';
|
|
9
10
|
export declare class AzureDevOpsClient {
|
|
10
11
|
private readonly _config;
|
|
11
12
|
private readonly _baseUrl;
|
|
12
13
|
private readonly _searchUrl;
|
|
13
14
|
private readonly _extMgmtUrl;
|
|
14
|
-
private readonly
|
|
15
|
+
private readonly _authProvider;
|
|
15
16
|
private readonly _apiVersion;
|
|
16
|
-
constructor(config: AzureDevOpsConfig);
|
|
17
|
+
constructor(config: AzureDevOpsConfig, authConfig: AdoAuthConfig);
|
|
17
18
|
/** Read-only access to config */
|
|
18
19
|
get config(): AzureDevOpsConfig;
|
|
19
20
|
/** Read-only access to organization name */
|
|
@@ -24,6 +25,8 @@ export declare class AzureDevOpsClient {
|
|
|
24
25
|
get baseUrl(): string;
|
|
25
26
|
/** Read-only access to extension management URL */
|
|
26
27
|
get extMgmtUrl(): string;
|
|
28
|
+
/** Authentication mode (pat or entra-id) */
|
|
29
|
+
get authMode(): string;
|
|
27
30
|
/**
|
|
28
31
|
* Validate that a project is in the allowed list
|
|
29
32
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"azure-devops-client.d.ts","sourceRoot":"","sources":["../src/azure-devops-client.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAc,EAAE,KAAK,aAAa,EAAE,MAAM,OAAO,CAAC;AAClD,OAAO,KAAK,EAAE,iBAAiB,EAA4B,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"azure-devops-client.d.ts","sourceRoot":"","sources":["../src/azure-devops-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,14 +5,15 @@
|
|
|
5
5
|
* Extracted from AzureDevOpsService constructor + makeRequest().
|
|
6
6
|
*/
|
|
7
7
|
import axios from 'axios';
|
|
8
|
+
import { AdoAuthProvider } from './ado-auth-provider.js';
|
|
8
9
|
export class AzureDevOpsClient {
|
|
9
10
|
_config;
|
|
10
11
|
_baseUrl;
|
|
11
12
|
_searchUrl;
|
|
12
13
|
_extMgmtUrl;
|
|
13
|
-
|
|
14
|
+
_authProvider;
|
|
14
15
|
_apiVersion;
|
|
15
|
-
constructor(config) {
|
|
16
|
+
constructor(config, authConfig) {
|
|
16
17
|
this._config = {
|
|
17
18
|
...config,
|
|
18
19
|
apiVersion: config.apiVersion || '7.1',
|
|
@@ -26,8 +27,7 @@ export class AzureDevOpsClient {
|
|
|
26
27
|
this._searchUrl = `https://almsearch.dev.azure.com/${this._config.organization}`;
|
|
27
28
|
this._extMgmtUrl = `https://extmgmt.dev.azure.com/${this._config.organization}`;
|
|
28
29
|
this._apiVersion = this._config.apiVersion;
|
|
29
|
-
|
|
30
|
-
this._authHeader = `Basic ${Buffer.from(`:${this._config.pat}`).toString('base64')}`;
|
|
30
|
+
this._authProvider = new AdoAuthProvider(authConfig);
|
|
31
31
|
}
|
|
32
32
|
/** Read-only access to config */
|
|
33
33
|
get config() { return this._config; }
|
|
@@ -39,6 +39,8 @@ export class AzureDevOpsClient {
|
|
|
39
39
|
get baseUrl() { return this._baseUrl; }
|
|
40
40
|
/** Read-only access to extension management URL */
|
|
41
41
|
get extMgmtUrl() { return this._extMgmtUrl; }
|
|
42
|
+
/** Authentication mode (pat or entra-id) */
|
|
43
|
+
get authMode() { return this._authProvider.mode; }
|
|
42
44
|
/**
|
|
43
45
|
* Validate that a project is in the allowed list
|
|
44
46
|
*/
|
|
@@ -54,13 +56,14 @@ export class AzureDevOpsClient {
|
|
|
54
56
|
*/
|
|
55
57
|
async request(endpoint, method = 'GET', data, useSearchUrl = false, customHeaders) {
|
|
56
58
|
try {
|
|
59
|
+
const authHeader = await this._authProvider.getAuthHeader();
|
|
57
60
|
const baseUrl = useSearchUrl ? this._searchUrl : this._baseUrl;
|
|
58
61
|
const url = `${baseUrl}/${endpoint}`;
|
|
59
62
|
const response = await axios({
|
|
60
63
|
method,
|
|
61
64
|
url,
|
|
62
65
|
headers: {
|
|
63
|
-
'Authorization':
|
|
66
|
+
'Authorization': authHeader,
|
|
64
67
|
'Content-Type': method === 'PATCH' ? 'application/json-patch+json' : 'application/json',
|
|
65
68
|
'Accept': 'application/json',
|
|
66
69
|
...customHeaders // Merge custom headers (can override defaults)
|
|
@@ -80,10 +83,10 @@ export class AzureDevOpsClient {
|
|
|
80
83
|
});
|
|
81
84
|
// Provide user-friendly error messages
|
|
82
85
|
if (error.response?.status === 401) {
|
|
83
|
-
throw new Error('Azure DevOps authentication failed. Please check your PAT
|
|
86
|
+
throw new Error('Azure DevOps authentication failed. Please check your credentials (PAT or Entra ID app registration) and permissions.');
|
|
84
87
|
}
|
|
85
88
|
if (error.response?.status === 403) {
|
|
86
|
-
throw new Error('Azure DevOps access denied. Please check your
|
|
89
|
+
throw new Error('Azure DevOps access denied. Please check your credential scopes and project permissions.');
|
|
87
90
|
}
|
|
88
91
|
if (error.response?.status === 404) {
|
|
89
92
|
throw new Error(`Azure DevOps resource not found: ${endpoint}`);
|
|
@@ -96,12 +99,13 @@ export class AzureDevOpsClient {
|
|
|
96
99
|
*/
|
|
97
100
|
async requestRaw(endpoint, method = 'GET', data, customHeaders, responseType) {
|
|
98
101
|
try {
|
|
102
|
+
const authHeader = await this._authProvider.getAuthHeader();
|
|
99
103
|
const url = `${this._baseUrl}/${endpoint}`;
|
|
100
104
|
return await axios({
|
|
101
105
|
method,
|
|
102
106
|
url,
|
|
103
107
|
headers: {
|
|
104
|
-
'Authorization':
|
|
108
|
+
'Authorization': authHeader,
|
|
105
109
|
'Content-Type': method === 'PATCH' ? 'application/json-patch+json' : 'application/json',
|
|
106
110
|
'Accept': responseType === 'arraybuffer' ? 'application/octet-stream' : 'application/json',
|
|
107
111
|
...customHeaders
|
|
@@ -119,10 +123,10 @@ export class AzureDevOpsClient {
|
|
|
119
123
|
error: errorDetails
|
|
120
124
|
});
|
|
121
125
|
if (error.response?.status === 401) {
|
|
122
|
-
throw new Error('Azure DevOps authentication failed. Please check your PAT
|
|
126
|
+
throw new Error('Azure DevOps authentication failed. Please check your credentials (PAT or Entra ID app registration) and permissions.');
|
|
123
127
|
}
|
|
124
128
|
if (error.response?.status === 403) {
|
|
125
|
-
throw new Error('Azure DevOps access denied. Please check your
|
|
129
|
+
throw new Error('Azure DevOps access denied. Please check your credential scopes and project permissions.');
|
|
126
130
|
}
|
|
127
131
|
if (error.response?.status === 404) {
|
|
128
132
|
throw new Error(`Azure DevOps resource not found: ${endpoint}`);
|
|
@@ -136,12 +140,13 @@ export class AzureDevOpsClient {
|
|
|
136
140
|
*/
|
|
137
141
|
async extRequest(endpoint, method = 'GET', data, customHeaders) {
|
|
138
142
|
try {
|
|
143
|
+
const authHeader = await this._authProvider.getAuthHeader();
|
|
139
144
|
const url = `${this._extMgmtUrl}/${endpoint}`;
|
|
140
145
|
const response = await axios({
|
|
141
146
|
method,
|
|
142
147
|
url,
|
|
143
148
|
headers: {
|
|
144
|
-
'Authorization':
|
|
149
|
+
'Authorization': authHeader,
|
|
145
150
|
'Content-Type': 'application/json',
|
|
146
151
|
'Accept': 'application/json',
|
|
147
152
|
...customHeaders
|
|
@@ -160,10 +165,10 @@ export class AzureDevOpsClient {
|
|
|
160
165
|
error: errorDetails
|
|
161
166
|
});
|
|
162
167
|
if (error.response?.status === 401) {
|
|
163
|
-
throw new Error('Azure DevOps authentication failed. Please check your PAT
|
|
168
|
+
throw new Error('Azure DevOps authentication failed. Please check your credentials (PAT or Entra ID app registration) and permissions.');
|
|
164
169
|
}
|
|
165
170
|
if (error.response?.status === 403) {
|
|
166
|
-
throw new Error('Azure DevOps access denied. Please check your
|
|
171
|
+
throw new Error('Azure DevOps access denied. Please check your credential scopes and project permissions.');
|
|
167
172
|
}
|
|
168
173
|
if (error.response?.status === 404) {
|
|
169
174
|
throw new Error(`Azure DevOps extension resource not found: ${endpoint}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"azure-devops-client.js","sourceRoot":"","sources":["../src/azure-devops-client.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAA6B,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"azure-devops-client.js","sourceRoot":"","sources":["../src/azure-devops-client.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":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"context-factory.d.ts","sourceRoot":"","sources":["../src/context-factory.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAajD;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,cAAc,CA4DrD"}
|
package/build/context-factory.js
CHANGED
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
* Used by both MCP server (index.ts) and CLI (cli.ts).
|
|
4
4
|
*/
|
|
5
5
|
import { AzureDevOpsClient } from './azure-devops-client.js';
|
|
6
|
+
import { resolveAuthConfig } from './ado-auth-provider.js';
|
|
6
7
|
import { WikiService, WorkItemService, PullRequestService, BuildService, VariableGroupService, SyncService, ConfigurationService, ChecklistService, } from './services/index.js';
|
|
7
8
|
/**
|
|
8
9
|
* Build a ServiceContext from environment variables (lazy client initialization).
|
|
@@ -14,17 +15,18 @@ export function createServiceContext() {
|
|
|
14
15
|
const missingConfig = [];
|
|
15
16
|
if (!process.env.AZUREDEVOPS_ORGANIZATION)
|
|
16
17
|
missingConfig.push("AZUREDEVOPS_ORGANIZATION");
|
|
17
|
-
if (!process.env.AZUREDEVOPS_PAT)
|
|
18
|
-
missingConfig.push("AZUREDEVOPS_PAT");
|
|
19
18
|
if (!process.env.AZUREDEVOPS_PROJECTS)
|
|
20
19
|
missingConfig.push("AZUREDEVOPS_PROJECTS");
|
|
21
20
|
if (missingConfig.length > 0) {
|
|
22
21
|
throw new Error(`Missing required Azure DevOps configuration: ${missingConfig.join(", ")}. ` +
|
|
23
|
-
`Set environment variables for organization
|
|
22
|
+
`Set environment variables for organization and allowed projects.`);
|
|
24
23
|
}
|
|
24
|
+
// Resolve auth mode (Entra ID or PAT) from environment variables
|
|
25
|
+
const authConfig = resolveAuthConfig();
|
|
25
26
|
const config = {
|
|
26
27
|
organization: process.env.AZUREDEVOPS_ORGANIZATION,
|
|
27
|
-
pat:
|
|
28
|
+
pat: authConfig.mode === 'pat' ? authConfig.pat : undefined,
|
|
29
|
+
authMode: authConfig.mode,
|
|
28
30
|
projects: process.env.AZUREDEVOPS_PROJECTS.split(",").map(p => p.trim()).filter(p => p),
|
|
29
31
|
apiVersion: process.env.AZUREDEVOPS_API_VERSION || "7.1",
|
|
30
32
|
enableWorkItemWrite: process.env.AZUREDEVOPS_ENABLE_WORK_ITEM_WRITE === "true",
|
|
@@ -34,8 +36,8 @@ export function createServiceContext() {
|
|
|
34
36
|
enablePullRequestWrite: process.env.AZUREDEVOPS_ENABLE_PR_WRITE === "true",
|
|
35
37
|
commentFormat: process.env.AZUREDEVOPS_COMMENT_FORMAT || 'markdown',
|
|
36
38
|
};
|
|
37
|
-
client = new AzureDevOpsClient(config);
|
|
38
|
-
console.error(
|
|
39
|
+
client = new AzureDevOpsClient(config, authConfig);
|
|
40
|
+
console.error(`Azure DevOps service initialized (auth: ${authConfig.mode})`);
|
|
39
41
|
}
|
|
40
42
|
return client;
|
|
41
43
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context-factory.js","sourceRoot":"","sources":["../src/context-factory.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAG7D,OAAO,EACL,WAAW,EACX,eAAe,EACf,kBAAkB,EAClB,YAAY,EACZ,oBAAoB,EACpB,WAAW,EACX,oBAAoB,EACpB,gBAAgB,GACjB,MAAM,qBAAqB,CAAC;AAE7B;;GAEG;AACH,MAAM,UAAU,oBAAoB;IAClC,IAAI,MAAM,GAA6B,IAAI,CAAC;IAE5C,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,
|
|
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
|
@@ -14,4 +14,6 @@ export { AzureDevOpsClient } from './azure-devops-client.js';
|
|
|
14
14
|
export { createServiceContext } from './context-factory.js';
|
|
15
15
|
export type { AzureDevOpsConfig } from './models/index.js';
|
|
16
16
|
export type { ServiceContext } from './types.js';
|
|
17
|
+
export { AdoAuthProvider, resolveAuthConfig } from './ado-auth-provider.js';
|
|
18
|
+
export type { AdoAuthConfig, AuthMode } from './ado-auth-provider.js';
|
|
17
19
|
//# 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;;;;;GAKG;AAsCH;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,GAAG,GAAG,IAAI,CAK1D;AAGD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,YAAY,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC3D,YAAY,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;;;GAKG;AAsCH;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,GAAG,GAAG,IAAI,CAK1D;AAGD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,YAAY,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC3D,YAAY,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAGjD,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC5E,YAAY,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC"}
|
package/build/index.js
CHANGED
|
@@ -44,6 +44,8 @@ export function registerAzureDevOpsTools(server) {
|
|
|
44
44
|
// Backward-compatible exports
|
|
45
45
|
export { AzureDevOpsClient } from './azure-devops-client.js';
|
|
46
46
|
export { createServiceContext } from './context-factory.js';
|
|
47
|
+
// Auth provider exports
|
|
48
|
+
export { AdoAuthProvider, resolveAuthConfig } from './ado-auth-provider.js';
|
|
47
49
|
/**
|
|
48
50
|
* Standalone CLI server (when run directly)
|
|
49
51
|
* 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;;;;;GAKG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAC;AAChG,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAE9E,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAExD;;GAEG;AACH,SAAS,mBAAmB,CAAC,MAAW;IACtC,MAAM,WAAW,GAAG,qBAAqB,CAAC;IAC1C,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,qBAAqB,CAAC,CAAC;IAE7E,mBAAmB,CACjB,MAAM,EACN,WAAW,EACX,WAAW,EACX,EAAE,QAAQ,EAAE,kBAAkB,EAAE,EAChC,KAAK,IAAI,EAAE,CAAC,CAAC;QACX,QAAQ,EAAE;YACR;gBACE,GAAG,EAAE,WAAW;gBAChB,QAAQ,EAAE,kBAAkB;gBAC5B,IAAI,EAAE,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;aAC3C;SACF;KACF,CAAC,CACH,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,wBAAwB,CAAC,MAAW;IAClD,MAAM,GAAG,GAAG,oBAAoB,EAAE,CAAC;IACnC,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAC5B,gBAAgB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC9B,kBAAkB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAClC,CAAC;AAED,8BAA8B;AAC9B,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAI5D;;;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,oCAAoC;QAC1C,OAAO,EAAE,OAAO;QAChB,YAAY,EAAE;YACZ,KAAK,EAAE,EAAE;YACT,OAAO,EAAE,EAAE;YACX,SAAS,EAAE,EAAE;SACd;KACF,CAAC,CAAC;IAEH,wBAAwB,CAAC,MAAM,CAAC,CAAC;IAEjC,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,gEAAgE,EAAE,KAAK,CAAC,CAAC;QACvF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,KAAK,CAAC,4DAA4D,CAAC,CAAC;AAC9E,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;;;GAKG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAC;AAChG,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAE9E,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAExD;;GAEG;AACH,SAAS,mBAAmB,CAAC,MAAW;IACtC,MAAM,WAAW,GAAG,qBAAqB,CAAC;IAC1C,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,qBAAqB,CAAC,CAAC;IAE7E,mBAAmB,CACjB,MAAM,EACN,WAAW,EACX,WAAW,EACX,EAAE,QAAQ,EAAE,kBAAkB,EAAE,EAChC,KAAK,IAAI,EAAE,CAAC,CAAC;QACX,QAAQ,EAAE;YACR;gBACE,GAAG,EAAE,WAAW;gBAChB,QAAQ,EAAE,kBAAkB;gBAC5B,IAAI,EAAE,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;aAC3C;SACF;KACF,CAAC,CACH,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,wBAAwB,CAAC,MAAW;IAClD,MAAM,GAAG,GAAG,oBAAoB,EAAE,CAAC;IACnC,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAC5B,gBAAgB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC9B,kBAAkB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAClC,CAAC;AAED,8BAA8B;AAC9B,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAI5D,wBAAwB;AACxB,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,oCAAoC;QAC1C,OAAO,EAAE,OAAO;QAChB,YAAY,EAAE;YACZ,KAAK,EAAE,EAAE;YACT,OAAO,EAAE,EAAE;YACX,SAAS,EAAE,EAAE;SACd;KACF,CAAC,CAAC;IAEH,wBAAwB,CAAC,MAAM,CAAC,CAAC;IAEjC,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,gEAAgE,EAAE,KAAK,CAAC,CAAC;QACvF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,KAAK,CAAC,4DAA4D,CAAC,CAAC;AAC9E,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-types.d.ts","sourceRoot":"","sources":["../../src/models/api-types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,iBAAiB;IAChC,YAAY,EAAE,MAAM,CAAC;IACrB,GAAG,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"api-types.d.ts","sourceRoot":"","sources":["../../src/models/api-types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mcp-consultant-tools/azure-devops",
|
|
3
|
-
"version": "29.0.0
|
|
3
|
+
"version": "29.0.0",
|
|
4
4
|
"description": "MCP server for Azure DevOps integration - wikis, work items, pull requests, and variable group read access",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./build/index.js",
|
|
@@ -41,7 +41,8 @@
|
|
|
41
41
|
"node": ">=16.0.0"
|
|
42
42
|
},
|
|
43
43
|
"dependencies": {
|
|
44
|
-
"@
|
|
44
|
+
"@azure/identity": "^4.13.0",
|
|
45
|
+
"@mcp-consultant-tools/core": "29.0.0",
|
|
45
46
|
"@modelcontextprotocol/ext-apps": "^1.1.2",
|
|
46
47
|
"@modelcontextprotocol/sdk": "^1.0.4",
|
|
47
48
|
"axios": "^1.8.3",
|