@mcp-consultant-tools/azure-devops-admin 27.0.0-beta.4 → 28.0.0-beta.3
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/AzureDevOpsAdminService.d.ts +47 -1
- package/build/AzureDevOpsAdminService.d.ts.map +1 -1
- package/build/AzureDevOpsAdminService.js +345 -11
- package/build/AzureDevOpsAdminService.js.map +1 -1
- package/build/index.d.ts +7 -11
- package/build/index.d.ts.map +1 -1
- package/build/index.js +60 -924
- package/build/index.js.map +1 -1
- package/build/services/admin-client.d.ts +19 -0
- package/build/services/admin-client.d.ts.map +1 -0
- package/build/services/admin-client.js +97 -0
- package/build/services/admin-client.js.map +1 -0
- package/build/services/agent-pool-service.d.ts +21 -0
- package/build/services/agent-pool-service.d.ts.map +1 -0
- package/build/services/agent-pool-service.js +118 -0
- package/build/services/agent-pool-service.js.map +1 -0
- package/build/services/artifact-feed-service.d.ts +21 -0
- package/build/services/artifact-feed-service.d.ts.map +1 -0
- package/build/services/artifact-feed-service.js +83 -0
- package/build/services/artifact-feed-service.js.map +1 -0
- package/build/services/classification-service.d.ts +23 -0
- package/build/services/classification-service.d.ts.map +1 -0
- package/build/services/classification-service.js +163 -0
- package/build/services/classification-service.js.map +1 -0
- package/build/services/environment-service.d.ts +25 -0
- package/build/services/environment-service.d.ts.map +1 -0
- package/build/services/environment-service.js +160 -0
- package/build/services/environment-service.js.map +1 -0
- package/build/services/index.d.ts +12 -0
- package/build/services/index.d.ts.map +1 -0
- package/build/services/index.js +12 -0
- package/build/services/index.js.map +1 -0
- package/build/services/pipeline-service.d.ts +37 -0
- package/build/services/pipeline-service.d.ts.map +1 -0
- package/build/services/pipeline-service.js +500 -0
- package/build/services/pipeline-service.js.map +1 -0
- package/build/services/service-connection-service.d.ts +29 -0
- package/build/services/service-connection-service.d.ts.map +1 -0
- package/build/services/service-connection-service.js +147 -0
- package/build/services/service-connection-service.js.map +1 -0
- package/build/services/variable-group-service.d.ts +22 -0
- package/build/services/variable-group-service.d.ts.map +1 -0
- package/build/services/variable-group-service.js +136 -0
- package/build/services/variable-group-service.js.map +1 -0
- package/build/tools/agent-pool-tools.d.ts +7 -0
- package/build/tools/agent-pool-tools.d.ts.map +1 -0
- package/build/tools/agent-pool-tools.js +132 -0
- package/build/tools/agent-pool-tools.js.map +1 -0
- package/build/tools/artifact-feed-tools.d.ts +7 -0
- package/build/tools/artifact-feed-tools.d.ts.map +1 -0
- package/build/tools/artifact-feed-tools.js +46 -0
- package/build/tools/artifact-feed-tools.js.map +1 -0
- package/build/tools/classification-tools.d.ts +7 -0
- package/build/tools/classification-tools.d.ts.map +1 -0
- package/build/tools/classification-tools.js +202 -0
- package/build/tools/classification-tools.js.map +1 -0
- package/build/tools/environment-tools.d.ts +7 -0
- package/build/tools/environment-tools.d.ts.map +1 -0
- package/build/tools/environment-tools.js +193 -0
- package/build/tools/environment-tools.js.map +1 -0
- package/build/tools/index.d.ts +13 -0
- package/build/tools/index.d.ts.map +1 -0
- package/build/tools/index.js +36 -0
- package/build/tools/index.js.map +1 -0
- package/build/tools/pipeline-tools.d.ts +7 -0
- package/build/tools/pipeline-tools.d.ts.map +1 -0
- package/build/tools/pipeline-tools.js +291 -0
- package/build/tools/pipeline-tools.js.map +1 -0
- package/build/tools/service-connection-tools.d.ts +7 -0
- package/build/tools/service-connection-tools.d.ts.map +1 -0
- package/build/tools/service-connection-tools.js +139 -0
- package/build/tools/service-connection-tools.js.map +1 -0
- package/build/tools/variable-group-tools.d.ts +7 -0
- package/build/tools/variable-group-tools.d.ts.map +1 -0
- package/build/tools/variable-group-tools.js +137 -0
- package/build/tools/variable-group-tools.js.map +1 -0
- package/build/types.d.ts +62 -0
- package/build/types.d.ts.map +1 -0
- package/build/types.js +2 -0
- package/build/types.js.map +1 -0
- package/package.json +2 -2
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
export class ServiceConnectionService {
|
|
2
|
+
client;
|
|
3
|
+
constructor(client) {
|
|
4
|
+
this.client = client;
|
|
5
|
+
}
|
|
6
|
+
async listServiceConnections(project) {
|
|
7
|
+
this.client.validateProject(project);
|
|
8
|
+
const response = await this.client.makeRequest(`${project}/_apis/serviceendpoint/endpoints?api-version=${this.client.apiVersion}`);
|
|
9
|
+
return {
|
|
10
|
+
project,
|
|
11
|
+
totalCount: response.value.length,
|
|
12
|
+
serviceConnections: response.value.map((conn) => ({
|
|
13
|
+
id: conn.id,
|
|
14
|
+
name: conn.name,
|
|
15
|
+
type: conn.type,
|
|
16
|
+
url: conn.url,
|
|
17
|
+
description: conn.description,
|
|
18
|
+
isShared: conn.isShared,
|
|
19
|
+
isReady: conn.isReady,
|
|
20
|
+
owner: conn.owner,
|
|
21
|
+
createdBy: conn.createdBy?.displayName,
|
|
22
|
+
authorization: conn.authorization ? {
|
|
23
|
+
scheme: conn.authorization.scheme,
|
|
24
|
+
parameters: conn.authorization.parameters ?
|
|
25
|
+
Object.keys(conn.authorization.parameters).reduce((acc, key) => {
|
|
26
|
+
acc[key] = key.toLowerCase().includes('password') ||
|
|
27
|
+
key.toLowerCase().includes('secret') ||
|
|
28
|
+
key.toLowerCase().includes('key') ||
|
|
29
|
+
key.toLowerCase().includes('token')
|
|
30
|
+
? '***SECRET***'
|
|
31
|
+
: conn.authorization.parameters[key];
|
|
32
|
+
return acc;
|
|
33
|
+
}, {}) : {}
|
|
34
|
+
} : null
|
|
35
|
+
}))
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
async getServiceConnection(project, connectionId) {
|
|
39
|
+
this.client.validateProject(project);
|
|
40
|
+
const response = await this.client.makeRequest(`${project}/_apis/serviceendpoint/endpoints/${connectionId}?api-version=${this.client.apiVersion}`);
|
|
41
|
+
return {
|
|
42
|
+
id: response.id,
|
|
43
|
+
name: response.name,
|
|
44
|
+
type: response.type,
|
|
45
|
+
url: response.url,
|
|
46
|
+
description: response.description,
|
|
47
|
+
isShared: response.isShared,
|
|
48
|
+
isReady: response.isReady,
|
|
49
|
+
owner: response.owner,
|
|
50
|
+
createdBy: response.createdBy?.displayName,
|
|
51
|
+
project,
|
|
52
|
+
authorization: response.authorization ? {
|
|
53
|
+
scheme: response.authorization.scheme,
|
|
54
|
+
parameters: response.authorization.parameters ?
|
|
55
|
+
Object.keys(response.authorization.parameters).reduce((acc, key) => {
|
|
56
|
+
acc[key] = key.toLowerCase().includes('password') ||
|
|
57
|
+
key.toLowerCase().includes('secret') ||
|
|
58
|
+
key.toLowerCase().includes('key') ||
|
|
59
|
+
key.toLowerCase().includes('token')
|
|
60
|
+
? '***SECRET***'
|
|
61
|
+
: response.authorization.parameters[key];
|
|
62
|
+
return acc;
|
|
63
|
+
}, {}) : {}
|
|
64
|
+
} : null,
|
|
65
|
+
data: response.data || {},
|
|
66
|
+
serviceEndpointProjectReferences: response.serviceEndpointProjectReferences
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
async getServiceConnectionTypes() {
|
|
70
|
+
const response = await this.client.makeRequest(`_apis/serviceendpoint/types?api-version=${this.client.apiVersion}`);
|
|
71
|
+
return {
|
|
72
|
+
totalCount: response.value.length,
|
|
73
|
+
types: response.value.map((type) => ({
|
|
74
|
+
name: type.name,
|
|
75
|
+
displayName: type.displayName,
|
|
76
|
+
description: type.description,
|
|
77
|
+
helpMarkDown: type.helpMarkDown,
|
|
78
|
+
authenticationSchemes: type.authenticationSchemes?.map((scheme) => ({
|
|
79
|
+
scheme: scheme.scheme,
|
|
80
|
+
displayName: scheme.displayName
|
|
81
|
+
})) || []
|
|
82
|
+
}))
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
async createServiceConnection(project, name, type, configuration) {
|
|
86
|
+
this.client.validateProject(project);
|
|
87
|
+
const endpoint = {
|
|
88
|
+
name,
|
|
89
|
+
type,
|
|
90
|
+
url: configuration.url || '',
|
|
91
|
+
description: configuration.description || '',
|
|
92
|
+
authorization: configuration.authorization,
|
|
93
|
+
data: configuration.data || {},
|
|
94
|
+
isShared: false,
|
|
95
|
+
isReady: true
|
|
96
|
+
};
|
|
97
|
+
const response = await this.client.makeRequest(`${project}/_apis/serviceendpoint/endpoints?api-version=${this.client.apiVersion}`, 'POST', endpoint);
|
|
98
|
+
return {
|
|
99
|
+
id: response.id,
|
|
100
|
+
name: response.name,
|
|
101
|
+
type: response.type,
|
|
102
|
+
isReady: response.isReady,
|
|
103
|
+
project
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
async updateServiceConnection(project, connectionId, updates) {
|
|
107
|
+
this.client.validateProject(project);
|
|
108
|
+
const current = await this.client.makeRequest(`${project}/_apis/serviceendpoint/endpoints/${connectionId}?api-version=${this.client.apiVersion}`);
|
|
109
|
+
const updated = {
|
|
110
|
+
...current,
|
|
111
|
+
name: updates.name || current.name,
|
|
112
|
+
description: updates.description || current.description,
|
|
113
|
+
url: updates.url || current.url,
|
|
114
|
+
data: updates.data ? { ...current.data, ...updates.data } : current.data
|
|
115
|
+
};
|
|
116
|
+
const response = await this.client.makeRequest(`${project}/_apis/serviceendpoint/endpoints/${connectionId}?api-version=${this.client.apiVersion}`, 'PUT', updated);
|
|
117
|
+
return {
|
|
118
|
+
id: response.id,
|
|
119
|
+
name: response.name,
|
|
120
|
+
type: response.type,
|
|
121
|
+
isReady: response.isReady,
|
|
122
|
+
project
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
async shareServiceConnection(connectionId, projectIds) {
|
|
126
|
+
const shareRequest = projectIds.map(projectId => ({
|
|
127
|
+
projectReference: { id: projectId },
|
|
128
|
+
name: ''
|
|
129
|
+
}));
|
|
130
|
+
const response = await this.client.makeRequest(`_apis/serviceendpoint/endpoints/${connectionId}?api-version=${this.client.apiVersion}`, 'PATCH', { serviceEndpointProjectReferences: shareRequest });
|
|
131
|
+
return {
|
|
132
|
+
id: response.id,
|
|
133
|
+
name: response.name,
|
|
134
|
+
sharedWith: projectIds
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
async deleteServiceConnection(project, connectionId) {
|
|
138
|
+
this.client.validateProject(project);
|
|
139
|
+
await this.client.makeRequest(`${project}/_apis/serviceendpoint/endpoints/${connectionId}?api-version=${this.client.apiVersion}`, 'DELETE');
|
|
140
|
+
return {
|
|
141
|
+
connectionId,
|
|
142
|
+
project,
|
|
143
|
+
deleted: true
|
|
144
|
+
};
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
//# sourceMappingURL=service-connection-service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service-connection-service.js","sourceRoot":"","sources":["../../src/services/service-connection-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Variable group operations for Azure DevOps Admin.
|
|
3
|
+
*/
|
|
4
|
+
import type { AdminClient } from './admin-client.js';
|
|
5
|
+
export declare class VariableGroupService {
|
|
6
|
+
private client;
|
|
7
|
+
constructor(client: AdminClient);
|
|
8
|
+
getVariableGroups(project: string): Promise<any>;
|
|
9
|
+
getVariableGroup(project: string, groupId: number): Promise<any>;
|
|
10
|
+
createVariableGroup(project: string, name: string, description?: string, variables?: Record<string, {
|
|
11
|
+
value: string;
|
|
12
|
+
isSecret?: boolean;
|
|
13
|
+
}>): Promise<any>;
|
|
14
|
+
updateVariableGroupMetadata(project: string, groupId: number, updates: {
|
|
15
|
+
name?: string;
|
|
16
|
+
description?: string;
|
|
17
|
+
}): Promise<any>;
|
|
18
|
+
setVariable(project: string, groupId: number, variableName: string, value: string, isSecret?: boolean): Promise<any>;
|
|
19
|
+
removeVariable(project: string, groupId: number, variableName: string): Promise<any>;
|
|
20
|
+
deleteVariableGroup(project: string, groupId: number): Promise<any>;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=variable-group-service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"variable-group-service.d.ts","sourceRoot":"","sources":["../../src/services/variable-group-service.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGrD,qBAAa,oBAAoB;IACnB,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,WAAW;IAEjC,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAiChD,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IA+BhE,mBAAmB,CACvB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EACZ,WAAW,CAAC,EAAE,MAAM,EACpB,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC,GAChE,OAAO,CAAC,GAAG,CAAC;IA4BT,2BAA2B,CAC/B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,OAAO,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,GAC/C,OAAO,CAAC,GAAG,CAAC;IA2BT,WAAW,CACf,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,MAAM,EACb,QAAQ,GAAE,OAAe,GACxB,OAAO,CAAC,GAAG,CAAC;IAwBT,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IA2BpF,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;CAc1E"}
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
export class VariableGroupService {
|
|
2
|
+
client;
|
|
3
|
+
constructor(client) {
|
|
4
|
+
this.client = client;
|
|
5
|
+
}
|
|
6
|
+
async getVariableGroups(project) {
|
|
7
|
+
this.client.validateProject(project);
|
|
8
|
+
const response = await this.client.makeRequest(`${project}/_apis/distributedtask/variablegroups?api-version=${this.client.apiVersion}`);
|
|
9
|
+
return {
|
|
10
|
+
project,
|
|
11
|
+
totalCount: response.value.length,
|
|
12
|
+
variableGroups: response.value.map((group) => ({
|
|
13
|
+
id: group.id,
|
|
14
|
+
name: group.name,
|
|
15
|
+
description: group.description,
|
|
16
|
+
type: group.type,
|
|
17
|
+
createdBy: group.createdBy?.displayName,
|
|
18
|
+
createdOn: group.createdOn,
|
|
19
|
+
modifiedBy: group.modifiedBy?.displayName,
|
|
20
|
+
modifiedOn: group.modifiedOn,
|
|
21
|
+
isShared: group.isShared,
|
|
22
|
+
variables: group.variables ? Object.keys(group.variables).reduce((acc, key) => {
|
|
23
|
+
const v = group.variables[key];
|
|
24
|
+
acc[key] = {
|
|
25
|
+
value: v.isSecret ? '***SECRET***' : v.value,
|
|
26
|
+
isSecret: v.isSecret || false,
|
|
27
|
+
isReadOnly: v.isReadOnly || false
|
|
28
|
+
};
|
|
29
|
+
return acc;
|
|
30
|
+
}, {}) : {}
|
|
31
|
+
}))
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
async getVariableGroup(project, groupId) {
|
|
35
|
+
this.client.validateProject(project);
|
|
36
|
+
const response = await this.client.makeRequest(`${project}/_apis/distributedtask/variablegroups/${groupId}?api-version=${this.client.apiVersion}`);
|
|
37
|
+
return {
|
|
38
|
+
id: response.id,
|
|
39
|
+
name: response.name,
|
|
40
|
+
description: response.description,
|
|
41
|
+
type: response.type,
|
|
42
|
+
createdBy: response.createdBy?.displayName,
|
|
43
|
+
createdOn: response.createdOn,
|
|
44
|
+
modifiedBy: response.modifiedBy?.displayName,
|
|
45
|
+
modifiedOn: response.modifiedOn,
|
|
46
|
+
isShared: response.isShared,
|
|
47
|
+
project,
|
|
48
|
+
variables: response.variables ? Object.keys(response.variables).reduce((acc, key) => {
|
|
49
|
+
const v = response.variables[key];
|
|
50
|
+
acc[key] = {
|
|
51
|
+
value: v.isSecret ? '***SECRET***' : v.value,
|
|
52
|
+
isSecret: v.isSecret || false,
|
|
53
|
+
isReadOnly: v.isReadOnly || false
|
|
54
|
+
};
|
|
55
|
+
return acc;
|
|
56
|
+
}, {}) : {},
|
|
57
|
+
variableGroupProjectReferences: response.variableGroupProjectReferences
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
async createVariableGroup(project, name, description, variables) {
|
|
61
|
+
this.client.validateProject(project);
|
|
62
|
+
const variableGroup = {
|
|
63
|
+
name,
|
|
64
|
+
description: description || '',
|
|
65
|
+
type: 'Vsts',
|
|
66
|
+
variables: variables || {},
|
|
67
|
+
variableGroupProjectReferences: [{
|
|
68
|
+
projectReference: { name: project },
|
|
69
|
+
name: name
|
|
70
|
+
}]
|
|
71
|
+
};
|
|
72
|
+
const response = await this.client.makeRequest(`_apis/distributedtask/variablegroups?api-version=${this.client.apiVersion}`, 'POST', variableGroup);
|
|
73
|
+
return {
|
|
74
|
+
id: response.id,
|
|
75
|
+
name: response.name,
|
|
76
|
+
project,
|
|
77
|
+
variableCount: Object.keys(response.variables || {}).length
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
async updateVariableGroupMetadata(project, groupId, updates) {
|
|
81
|
+
this.client.validateProject(project);
|
|
82
|
+
const current = await this.client.makeRequest(`${project}/_apis/distributedtask/variablegroups/${groupId}?api-version=${this.client.apiVersion}`);
|
|
83
|
+
const updated = {
|
|
84
|
+
...current,
|
|
85
|
+
name: updates.name || current.name,
|
|
86
|
+
description: updates.description || current.description
|
|
87
|
+
};
|
|
88
|
+
const response = await this.client.makeRequest(`_apis/distributedtask/variablegroups/${groupId}?api-version=${this.client.apiVersion}`, 'PUT', updated);
|
|
89
|
+
return {
|
|
90
|
+
id: response.id,
|
|
91
|
+
name: response.name,
|
|
92
|
+
description: response.description,
|
|
93
|
+
project
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
async setVariable(project, groupId, variableName, value, isSecret = false) {
|
|
97
|
+
this.client.validateProject(project);
|
|
98
|
+
const current = await this.client.makeRequest(`${project}/_apis/distributedtask/variablegroups/${groupId}?api-version=${this.client.apiVersion}`);
|
|
99
|
+
current.variables[variableName] = { value, isSecret };
|
|
100
|
+
const response = await this.client.makeRequest(`_apis/distributedtask/variablegroups/${groupId}?api-version=${this.client.apiVersion}`, 'PUT', current);
|
|
101
|
+
return {
|
|
102
|
+
id: response.id,
|
|
103
|
+
name: response.name,
|
|
104
|
+
project,
|
|
105
|
+
variableSet: variableName,
|
|
106
|
+
isSecret
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
async removeVariable(project, groupId, variableName) {
|
|
110
|
+
this.client.validateProject(project);
|
|
111
|
+
const current = await this.client.makeRequest(`${project}/_apis/distributedtask/variablegroups/${groupId}?api-version=${this.client.apiVersion}`);
|
|
112
|
+
if (current.variables[variableName]) {
|
|
113
|
+
delete current.variables[variableName];
|
|
114
|
+
}
|
|
115
|
+
else {
|
|
116
|
+
throw new Error(`Variable '${variableName}' not found in group ${groupId}`);
|
|
117
|
+
}
|
|
118
|
+
const response = await this.client.makeRequest(`_apis/distributedtask/variablegroups/${groupId}?api-version=${this.client.apiVersion}`, 'PUT', current);
|
|
119
|
+
return {
|
|
120
|
+
id: response.id,
|
|
121
|
+
name: response.name,
|
|
122
|
+
project,
|
|
123
|
+
variableRemoved: variableName
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
async deleteVariableGroup(project, groupId) {
|
|
127
|
+
this.client.validateProject(project);
|
|
128
|
+
await this.client.makeRequest(`_apis/distributedtask/variablegroups/${groupId}?api-version=${this.client.apiVersion}`, 'DELETE');
|
|
129
|
+
return {
|
|
130
|
+
groupId,
|
|
131
|
+
project,
|
|
132
|
+
deleted: true
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
//# sourceMappingURL=variable-group-service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"variable-group-service.js","sourceRoot":"","sources":["../../src/services/variable-group-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-pool-tools.d.ts","sourceRoot":"","sources":["../../src/tools/agent-pool-tools.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,cAAc,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CA8J7H"}
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent pool tools - read-only, upsert (Tier 2), and disable (Tier 3).
|
|
3
|
+
*/
|
|
4
|
+
import { z } from 'zod';
|
|
5
|
+
export function registerAgentPoolTools(server, ctx) {
|
|
6
|
+
let readonlyCount = 0;
|
|
7
|
+
let upsertCount = 0;
|
|
8
|
+
let deleteCount = 0;
|
|
9
|
+
// ========================================
|
|
10
|
+
// AGENT POOL READ-ONLY TOOLS
|
|
11
|
+
// ========================================
|
|
12
|
+
server.tool("list-agent-pools", "List all agent pools in the organization. Shows pool type (automation/deployment), size, hosted status, and auto-provision settings.", {
|
|
13
|
+
poolType: z.enum(["automation", "deployment"]).optional().describe("Optional filter: 'automation' or 'deployment'"),
|
|
14
|
+
}, async ({ poolType }) => {
|
|
15
|
+
try {
|
|
16
|
+
const result = await ctx.agentPools.listAgentPools(poolType);
|
|
17
|
+
return { content: [{ type: "text", text: `Agent pools:\n\n${JSON.stringify(result, null, 2)}` }] };
|
|
18
|
+
}
|
|
19
|
+
catch (error) {
|
|
20
|
+
console.error("Error listing agent pools:", error);
|
|
21
|
+
return { content: [{ type: "text", text: `Failed to list agent pools: ${error.message}` }] };
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
readonlyCount++;
|
|
25
|
+
server.tool("get-agent-pool", "Get detailed agent pool configuration including auto-provision, auto-update, auto-size settings, and owner information.", {
|
|
26
|
+
poolId: z.number().describe("The agent pool ID"),
|
|
27
|
+
}, async ({ poolId }) => {
|
|
28
|
+
try {
|
|
29
|
+
const result = await ctx.agentPools.getAgentPool(poolId);
|
|
30
|
+
return { content: [{ type: "text", text: `Agent pool ${poolId}:\n\n${JSON.stringify(result, null, 2)}` }] };
|
|
31
|
+
}
|
|
32
|
+
catch (error) {
|
|
33
|
+
console.error("Error getting agent pool:", error);
|
|
34
|
+
return { content: [{ type: "text", text: `Failed to get agent pool: ${error.message}` }] };
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
readonlyCount++;
|
|
38
|
+
server.tool("list-agents", "List all agents in a pool. Shows agent name, version, OS, enabled status, and current status (online/offline).", {
|
|
39
|
+
poolId: z.number().describe("The agent pool ID"),
|
|
40
|
+
includeCapabilities: z.boolean().optional().describe("Include system and user capabilities (default: false)"),
|
|
41
|
+
}, async ({ poolId, includeCapabilities }) => {
|
|
42
|
+
try {
|
|
43
|
+
const result = await ctx.agentPools.listAgents(poolId, includeCapabilities || false);
|
|
44
|
+
return { content: [{ type: "text", text: `Agents in pool ${poolId}:\n\n${JSON.stringify(result, null, 2)}` }] };
|
|
45
|
+
}
|
|
46
|
+
catch (error) {
|
|
47
|
+
console.error("Error listing agents:", error);
|
|
48
|
+
return { content: [{ type: "text", text: `Failed to list agents: ${error.message}` }] };
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
readonlyCount++;
|
|
52
|
+
server.tool("get-agent", "Get detailed agent information including capabilities, current assignment, and last completed request.", {
|
|
53
|
+
poolId: z.number().describe("The agent pool ID"),
|
|
54
|
+
agentId: z.number().describe("The agent ID"),
|
|
55
|
+
}, async ({ poolId, agentId }) => {
|
|
56
|
+
try {
|
|
57
|
+
const result = await ctx.agentPools.getAgent(poolId, agentId);
|
|
58
|
+
return { content: [{ type: "text", text: `Agent ${agentId} in pool ${poolId}:\n\n${JSON.stringify(result, null, 2)}` }] };
|
|
59
|
+
}
|
|
60
|
+
catch (error) {
|
|
61
|
+
console.error("Error getting agent:", error);
|
|
62
|
+
return { content: [{ type: "text", text: `Failed to get agent: ${error.message}` }] };
|
|
63
|
+
}
|
|
64
|
+
});
|
|
65
|
+
readonlyCount++;
|
|
66
|
+
// ========================================
|
|
67
|
+
// AGENT POOL UPSERT TOOLS (Tier 2)
|
|
68
|
+
// ========================================
|
|
69
|
+
if (ctx.tierFlags.enableAgentPoolUpsert) {
|
|
70
|
+
server.tool("update-agent-pool", "Update agent pool settings (auto-provision, auto-update, auto-size, target size). (requires AZUREDEVOPS_ENABLE_AGENT_POOL_UPSERT=true)", {
|
|
71
|
+
poolId: z.number().describe("The agent pool ID"),
|
|
72
|
+
autoProvision: z.boolean().optional().describe("Auto-provision pool to new projects"),
|
|
73
|
+
autoUpdate: z.boolean().optional().describe("Auto-update agents"),
|
|
74
|
+
autoSize: z.boolean().optional().describe("Auto-size pool based on demand"),
|
|
75
|
+
targetSize: z.number().optional().describe("Target pool size for auto-scaling"),
|
|
76
|
+
}, async ({ poolId, autoProvision, autoUpdate, autoSize, targetSize }) => {
|
|
77
|
+
try {
|
|
78
|
+
const updates = {};
|
|
79
|
+
if (autoProvision !== undefined)
|
|
80
|
+
updates.autoProvision = autoProvision;
|
|
81
|
+
if (autoUpdate !== undefined)
|
|
82
|
+
updates.autoUpdate = autoUpdate;
|
|
83
|
+
if (autoSize !== undefined)
|
|
84
|
+
updates.autoSize = autoSize;
|
|
85
|
+
if (targetSize !== undefined)
|
|
86
|
+
updates.targetSize = targetSize;
|
|
87
|
+
const result = await ctx.agentPools.updateAgentPool(poolId, updates);
|
|
88
|
+
return { content: [{ type: "text", text: `Updated agent pool ${poolId}:\n\n${JSON.stringify(result, null, 2)}` }] };
|
|
89
|
+
}
|
|
90
|
+
catch (error) {
|
|
91
|
+
console.error("Error updating agent pool:", error);
|
|
92
|
+
return { content: [{ type: "text", text: `Failed to update agent pool: ${error.message}` }] };
|
|
93
|
+
}
|
|
94
|
+
});
|
|
95
|
+
upsertCount++;
|
|
96
|
+
server.tool("enable-agent", "Enable a disabled agent to accept new jobs. (requires AZUREDEVOPS_ENABLE_AGENT_POOL_UPSERT=true)", {
|
|
97
|
+
poolId: z.number().describe("The agent pool ID"),
|
|
98
|
+
agentId: z.number().describe("The agent ID"),
|
|
99
|
+
}, async ({ poolId, agentId }) => {
|
|
100
|
+
try {
|
|
101
|
+
const result = await ctx.agentPools.enableAgent(poolId, agentId);
|
|
102
|
+
return { content: [{ type: "text", text: `Enabled agent ${agentId} in pool ${poolId}:\n\n${JSON.stringify(result, null, 2)}` }] };
|
|
103
|
+
}
|
|
104
|
+
catch (error) {
|
|
105
|
+
console.error("Error enabling agent:", error);
|
|
106
|
+
return { content: [{ type: "text", text: `Failed to enable agent: ${error.message}` }] };
|
|
107
|
+
}
|
|
108
|
+
});
|
|
109
|
+
upsertCount++;
|
|
110
|
+
}
|
|
111
|
+
// ========================================
|
|
112
|
+
// AGENT POOL DISABLE TOOLS (Tier 3)
|
|
113
|
+
// ========================================
|
|
114
|
+
if (ctx.tierFlags.enableAgentPoolDisable) {
|
|
115
|
+
server.tool("disable-agent", "Disable an agent. It will complete current job then stop accepting new jobs. (requires AZUREDEVOPS_ENABLE_AGENT_POOL_DISABLE=true)", {
|
|
116
|
+
poolId: z.number().describe("The agent pool ID"),
|
|
117
|
+
agentId: z.number().describe("The agent ID to disable"),
|
|
118
|
+
}, async ({ poolId, agentId }) => {
|
|
119
|
+
try {
|
|
120
|
+
const result = await ctx.agentPools.disableAgent(poolId, agentId);
|
|
121
|
+
return { content: [{ type: "text", text: `Disabled agent ${agentId} in pool ${poolId}:\n\n${JSON.stringify(result, null, 2)}` }] };
|
|
122
|
+
}
|
|
123
|
+
catch (error) {
|
|
124
|
+
console.error("Error disabling agent:", error);
|
|
125
|
+
return { content: [{ type: "text", text: `Failed to disable agent: ${error.message}` }] };
|
|
126
|
+
}
|
|
127
|
+
});
|
|
128
|
+
deleteCount++;
|
|
129
|
+
}
|
|
130
|
+
return { readonly: readonlyCount, upsert: upsertCount, delete: deleteCount };
|
|
131
|
+
}
|
|
132
|
+
//# sourceMappingURL=agent-pool-tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-pool-tools.js","sourceRoot":"","sources":["../../src/tools/agent-pool-tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"artifact-feed-tools.d.ts","sourceRoot":"","sources":["../../src/tools/artifact-feed-tools.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,cAAc,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAmDhI"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Artifact feed tools - read-only only (no upsert/delete tiers).
|
|
3
|
+
*/
|
|
4
|
+
import { z } from 'zod';
|
|
5
|
+
export function registerArtifactFeedTools(server, ctx) {
|
|
6
|
+
let readonlyCount = 0;
|
|
7
|
+
server.tool("list-feed-packages", "List packages in an Azure Artifacts feed. Returns package names, latest versions, and publish dates. Use to discover available packages before querying specific versions.", {
|
|
8
|
+
feedName: z.string().describe("Feed name (e.g., 'SmartProducts')"),
|
|
9
|
+
project: z.string().optional().describe("Project name for project-scoped feeds. Omit for org-scoped feeds."),
|
|
10
|
+
namePrefix: z.string().optional().describe("Filter packages by name prefix (e.g., 'pp-solution-')"),
|
|
11
|
+
packageType: z.enum(["nuget", "npm", "maven", "upack", "pypi"]).optional().describe("Filter by package protocol type"),
|
|
12
|
+
top: z.number().optional().describe("Maximum number of packages to return (default: 50)"),
|
|
13
|
+
}, async ({ feedName, project, namePrefix, packageType, top }) => {
|
|
14
|
+
try {
|
|
15
|
+
const result = await ctx.artifactFeeds.listFeedPackages(feedName, { project, namePrefix, packageType, top: top || 50 });
|
|
16
|
+
return { content: [{ type: "text", text: `Packages in feed '${feedName}':\n\n${JSON.stringify(result, null, 2)}` }] };
|
|
17
|
+
}
|
|
18
|
+
catch (error) {
|
|
19
|
+
console.error("Error listing feed packages:", error);
|
|
20
|
+
return { content: [{ type: "text", text: `Failed to list feed packages: ${error.message}` }] };
|
|
21
|
+
}
|
|
22
|
+
});
|
|
23
|
+
readonlyCount++;
|
|
24
|
+
server.tool("get-package-versions", "Get version history for a specific package in an Azure Artifacts feed. Returns versions sorted by publish date, useful for finding the latest version before queuing a deployment pipeline.", {
|
|
25
|
+
feedName: z.string().describe("Feed name (e.g., 'SmartProducts')"),
|
|
26
|
+
packageName: z.string().describe("Full package name (e.g., 'pp-solution-smartproductscore')"),
|
|
27
|
+
project: z.string().optional().describe("Project name for project-scoped feeds. Omit for org-scoped feeds."),
|
|
28
|
+
packageType: z.enum(["nuget", "npm", "maven", "upack", "pypi"]).optional().describe("Protocol type hint for faster lookup"),
|
|
29
|
+
top: z.number().optional().describe("Maximum number of versions to return (default: 10)"),
|
|
30
|
+
includeDelisted: z.boolean().optional().describe("Include delisted/deprecated versions (default: false)"),
|
|
31
|
+
}, async ({ feedName, packageName, project, packageType, top, includeDelisted }) => {
|
|
32
|
+
try {
|
|
33
|
+
const result = await ctx.artifactFeeds.getPackageVersions(feedName, packageName, {
|
|
34
|
+
project, packageType, top: top || 10, includeDelisted: includeDelisted || false
|
|
35
|
+
});
|
|
36
|
+
return { content: [{ type: "text", text: `Versions for '${packageName}' in feed '${feedName}':\n\n${JSON.stringify(result, null, 2)}` }] };
|
|
37
|
+
}
|
|
38
|
+
catch (error) {
|
|
39
|
+
console.error("Error getting package versions:", error);
|
|
40
|
+
return { content: [{ type: "text", text: `Failed to get package versions: ${error.message}` }] };
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
readonlyCount++;
|
|
44
|
+
return { readonly: readonlyCount, upsert: 0, delete: 0 };
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=artifact-feed-tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"artifact-feed-tools.js","sourceRoot":"","sources":["../../src/tools/artifact-feed-tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"classification-tools.d.ts","sourceRoot":"","sources":["../../src/tools/classification-tools.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,cAAc,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CA2PlI"}
|