@mcp-consultant-tools/azure-devops-admin 27.0.0 → 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 +16 -0
- package/build/AzureDevOpsAdminService.d.ts.map +1 -1
- package/build/AzureDevOpsAdminService.js +117 -8
- 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 +58 -1110
- 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,202 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Classification node tools (iterations & areas) - read-only, upsert (Tier 2), and delete (Tier 3).
|
|
3
|
+
*/
|
|
4
|
+
import { z } from 'zod';
|
|
5
|
+
export function registerClassificationTools(server, ctx) {
|
|
6
|
+
let readonlyCount = 0;
|
|
7
|
+
let upsertCount = 0;
|
|
8
|
+
let deleteCount = 0;
|
|
9
|
+
// ========================================
|
|
10
|
+
// CLASSIFICATION NODE READ-ONLY TOOLS
|
|
11
|
+
// ========================================
|
|
12
|
+
server.tool("list-iterations", "List all iterations (sprints) in a project with their hierarchy, dates, and time frame. Returns flattened list with full paths.", {
|
|
13
|
+
project: z.string().describe("The project name"),
|
|
14
|
+
depth: z.number().optional().describe("How deep to traverse the hierarchy (default: 10)"),
|
|
15
|
+
}, async ({ project, depth }) => {
|
|
16
|
+
try {
|
|
17
|
+
const result = await ctx.classification.listClassificationNodes(project, 'iterations', depth || 10);
|
|
18
|
+
return { content: [{ type: "text", text: `Iterations in project '${project}':\n\n${JSON.stringify(result, null, 2)}` }] };
|
|
19
|
+
}
|
|
20
|
+
catch (error) {
|
|
21
|
+
console.error("Error listing iterations:", error);
|
|
22
|
+
return { content: [{ type: "text", text: `Failed to list iterations: ${error.message}` }] };
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
readonlyCount++;
|
|
26
|
+
server.tool("get-iteration", "Get details of a specific iteration including start/finish dates and time frame.", {
|
|
27
|
+
project: z.string().describe("The project name"),
|
|
28
|
+
path: z.string().describe("Iteration path (e.g., 'Sprint 1' or 'Release 1\\Sprint 1'). Use backslash for hierarchy."),
|
|
29
|
+
}, async ({ project, path }) => {
|
|
30
|
+
try {
|
|
31
|
+
const result = await ctx.classification.getClassificationNode(project, 'iterations', path);
|
|
32
|
+
return { content: [{ type: "text", text: `Iteration '${path}':\n\n${JSON.stringify(result, null, 2)}` }] };
|
|
33
|
+
}
|
|
34
|
+
catch (error) {
|
|
35
|
+
console.error("Error getting iteration:", error);
|
|
36
|
+
return { content: [{ type: "text", text: `Failed to get iteration: ${error.message}` }] };
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
readonlyCount++;
|
|
40
|
+
server.tool("list-areas", "List all area paths in a project with their hierarchy. Returns flattened list with full paths.", {
|
|
41
|
+
project: z.string().describe("The project name"),
|
|
42
|
+
depth: z.number().optional().describe("How deep to traverse the hierarchy (default: 10)"),
|
|
43
|
+
}, async ({ project, depth }) => {
|
|
44
|
+
try {
|
|
45
|
+
const result = await ctx.classification.listClassificationNodes(project, 'areas', depth || 10);
|
|
46
|
+
return { content: [{ type: "text", text: `Areas in project '${project}':\n\n${JSON.stringify(result, null, 2)}` }] };
|
|
47
|
+
}
|
|
48
|
+
catch (error) {
|
|
49
|
+
console.error("Error listing areas:", error);
|
|
50
|
+
return { content: [{ type: "text", text: `Failed to list areas: ${error.message}` }] };
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
readonlyCount++;
|
|
54
|
+
server.tool("get-area", "Get details of a specific area path.", {
|
|
55
|
+
project: z.string().describe("The project name"),
|
|
56
|
+
path: z.string().describe("Area path (e.g., 'Backend' or 'Product\\Backend'). Use backslash for hierarchy."),
|
|
57
|
+
}, async ({ project, path }) => {
|
|
58
|
+
try {
|
|
59
|
+
const result = await ctx.classification.getClassificationNode(project, 'areas', path);
|
|
60
|
+
return { content: [{ type: "text", text: `Area '${path}':\n\n${JSON.stringify(result, null, 2)}` }] };
|
|
61
|
+
}
|
|
62
|
+
catch (error) {
|
|
63
|
+
console.error("Error getting area:", error);
|
|
64
|
+
return { content: [{ type: "text", text: `Failed to get area: ${error.message}` }] };
|
|
65
|
+
}
|
|
66
|
+
});
|
|
67
|
+
readonlyCount++;
|
|
68
|
+
// ========================================
|
|
69
|
+
// CLASSIFICATION NODE UPSERT TOOLS (Tier 2)
|
|
70
|
+
// ========================================
|
|
71
|
+
if (ctx.tierFlags.enableClassificationNodeUpsert) {
|
|
72
|
+
server.tool("create-iteration", "Create a new iteration (sprint) with optional start and finish dates. (requires AZUREDEVOPS_ENABLE_CLASSIFICATION_NODE_UPSERT=true)", {
|
|
73
|
+
project: z.string().describe("The project name"),
|
|
74
|
+
name: z.string().describe("Iteration name (e.g., 'Sprint 1')"),
|
|
75
|
+
parentPath: z.string().optional().describe("Parent iteration path to create under (e.g., 'Release 1'). If not specified, creates at root."),
|
|
76
|
+
startDate: z.string().optional().describe("Start date in ISO format (e.g., '2024-01-01')"),
|
|
77
|
+
finishDate: z.string().optional().describe("Finish date in ISO format (e.g., '2024-01-14')"),
|
|
78
|
+
team: z.string().optional().describe("Team name to subscribe the iteration to (e.g., 'My Team'). If provided, the iteration will be automatically added to the team's sprint view."),
|
|
79
|
+
}, async ({ project, name, parentPath, startDate, finishDate, team }) => {
|
|
80
|
+
try {
|
|
81
|
+
const attributes = (startDate || finishDate) ? { startDate, finishDate } : undefined;
|
|
82
|
+
const result = await ctx.classification.createClassificationNode(project, 'iterations', name, parentPath, attributes);
|
|
83
|
+
if (team) {
|
|
84
|
+
const teamResult = await ctx.classification.addIterationToTeam(project, team, result.identifier);
|
|
85
|
+
return { content: [{ type: "text", text: `Created iteration '${name}' and subscribed to team '${team}':\n\n${JSON.stringify({ ...result, teamSubscription: teamResult }, null, 2)}` }] };
|
|
86
|
+
}
|
|
87
|
+
return { content: [{ type: "text", text: `Created iteration '${name}':\n\n${JSON.stringify(result, null, 2)}` }] };
|
|
88
|
+
}
|
|
89
|
+
catch (error) {
|
|
90
|
+
console.error("Error creating iteration:", error);
|
|
91
|
+
return { content: [{ type: "text", text: `Failed to create iteration: ${error.message}` }] };
|
|
92
|
+
}
|
|
93
|
+
});
|
|
94
|
+
upsertCount++;
|
|
95
|
+
server.tool("update-iteration", "Update an iteration's name or dates. (requires AZUREDEVOPS_ENABLE_CLASSIFICATION_NODE_UPSERT=true)", {
|
|
96
|
+
project: z.string().describe("The project name"),
|
|
97
|
+
path: z.string().describe("Iteration path to update (e.g., 'Sprint 1' or 'Release 1\\Sprint 1')"),
|
|
98
|
+
name: z.string().optional().describe("New iteration name"),
|
|
99
|
+
startDate: z.string().optional().describe("New start date in ISO format (e.g., '2024-01-01')"),
|
|
100
|
+
finishDate: z.string().optional().describe("New finish date in ISO format (e.g., '2024-01-14')"),
|
|
101
|
+
}, async ({ project, path, name, startDate, finishDate }) => {
|
|
102
|
+
try {
|
|
103
|
+
const updates = {};
|
|
104
|
+
if (name)
|
|
105
|
+
updates.name = name;
|
|
106
|
+
if (startDate !== undefined)
|
|
107
|
+
updates.startDate = startDate;
|
|
108
|
+
if (finishDate !== undefined)
|
|
109
|
+
updates.finishDate = finishDate;
|
|
110
|
+
const result = await ctx.classification.updateClassificationNode(project, 'iterations', path, updates);
|
|
111
|
+
return { content: [{ type: "text", text: `Updated iteration '${path}':\n\n${JSON.stringify(result, null, 2)}` }] };
|
|
112
|
+
}
|
|
113
|
+
catch (error) {
|
|
114
|
+
console.error("Error updating iteration:", error);
|
|
115
|
+
return { content: [{ type: "text", text: `Failed to update iteration: ${error.message}` }] };
|
|
116
|
+
}
|
|
117
|
+
});
|
|
118
|
+
upsertCount++;
|
|
119
|
+
server.tool("create-area", "Create a new area path. (requires AZUREDEVOPS_ENABLE_CLASSIFICATION_NODE_UPSERT=true)", {
|
|
120
|
+
project: z.string().describe("The project name"),
|
|
121
|
+
name: z.string().describe("Area name (e.g., 'Backend')"),
|
|
122
|
+
parentPath: z.string().optional().describe("Parent area path to create under (e.g., 'Product'). If not specified, creates at root."),
|
|
123
|
+
}, async ({ project, name, parentPath }) => {
|
|
124
|
+
try {
|
|
125
|
+
const result = await ctx.classification.createClassificationNode(project, 'areas', name, parentPath);
|
|
126
|
+
return { content: [{ type: "text", text: `Created area '${name}':\n\n${JSON.stringify(result, null, 2)}` }] };
|
|
127
|
+
}
|
|
128
|
+
catch (error) {
|
|
129
|
+
console.error("Error creating area:", error);
|
|
130
|
+
return { content: [{ type: "text", text: `Failed to create area: ${error.message}` }] };
|
|
131
|
+
}
|
|
132
|
+
});
|
|
133
|
+
upsertCount++;
|
|
134
|
+
server.tool("update-area", "Rename an area path. (requires AZUREDEVOPS_ENABLE_CLASSIFICATION_NODE_UPSERT=true)", {
|
|
135
|
+
project: z.string().describe("The project name"),
|
|
136
|
+
path: z.string().describe("Area path to update (e.g., 'Backend' or 'Product\\Backend')"),
|
|
137
|
+
name: z.string().describe("New area name"),
|
|
138
|
+
}, async ({ project, path, name }) => {
|
|
139
|
+
try {
|
|
140
|
+
const result = await ctx.classification.updateClassificationNode(project, 'areas', path, { name });
|
|
141
|
+
return { content: [{ type: "text", text: `Updated area '${path}':\n\n${JSON.stringify(result, null, 2)}` }] };
|
|
142
|
+
}
|
|
143
|
+
catch (error) {
|
|
144
|
+
console.error("Error updating area:", error);
|
|
145
|
+
return { content: [{ type: "text", text: `Failed to update area: ${error.message}` }] };
|
|
146
|
+
}
|
|
147
|
+
});
|
|
148
|
+
upsertCount++;
|
|
149
|
+
server.tool("add-iteration-to-team", "Subscribe an existing iteration to a team so it appears in their sprint planning view. (requires AZUREDEVOPS_ENABLE_CLASSIFICATION_NODE_UPSERT=true)", {
|
|
150
|
+
project: z.string().describe("The project name"),
|
|
151
|
+
team: z.string().describe("The team name (e.g., 'My Team')"),
|
|
152
|
+
iterationId: z.string().describe("The iteration identifier GUID (returned by create-iteration or get-iteration as 'identifier')"),
|
|
153
|
+
}, async ({ project, team, iterationId }) => {
|
|
154
|
+
try {
|
|
155
|
+
const result = await ctx.classification.addIterationToTeam(project, team, iterationId);
|
|
156
|
+
return { content: [{ type: "text", text: `Subscribed iteration to team '${team}':\n\n${JSON.stringify(result, null, 2)}` }] };
|
|
157
|
+
}
|
|
158
|
+
catch (error) {
|
|
159
|
+
console.error("Error subscribing iteration to team:", error);
|
|
160
|
+
return { content: [{ type: "text", text: `Failed to subscribe iteration to team: ${error.message}` }] };
|
|
161
|
+
}
|
|
162
|
+
});
|
|
163
|
+
upsertCount++;
|
|
164
|
+
}
|
|
165
|
+
// ========================================
|
|
166
|
+
// CLASSIFICATION NODE DELETE TOOLS (Tier 3)
|
|
167
|
+
// ========================================
|
|
168
|
+
if (ctx.tierFlags.enableClassificationNodeDelete) {
|
|
169
|
+
server.tool("delete-iteration", "DESTRUCTIVE: Delete an iteration. Work items in this iteration will be reclassified to the target iteration. (requires AZUREDEVOPS_ENABLE_CLASSIFICATION_NODE_DELETE=true)", {
|
|
170
|
+
project: z.string().describe("The project name"),
|
|
171
|
+
path: z.string().describe("Iteration path to delete (e.g., 'Sprint 1' or 'Release 1\\Sprint 1')"),
|
|
172
|
+
reclassifyId: z.number().describe("ID of the iteration to move work items to. Get IDs from list-iterations."),
|
|
173
|
+
}, async ({ project, path, reclassifyId }) => {
|
|
174
|
+
try {
|
|
175
|
+
const result = await ctx.classification.deleteClassificationNode(project, 'iterations', path, reclassifyId);
|
|
176
|
+
return { content: [{ type: "text", text: `Deleted iteration '${path}':\n\n${JSON.stringify(result, null, 2)}` }] };
|
|
177
|
+
}
|
|
178
|
+
catch (error) {
|
|
179
|
+
console.error("Error deleting iteration:", error);
|
|
180
|
+
return { content: [{ type: "text", text: `Failed to delete iteration: ${error.message}` }] };
|
|
181
|
+
}
|
|
182
|
+
});
|
|
183
|
+
deleteCount++;
|
|
184
|
+
server.tool("delete-area", "DESTRUCTIVE: Delete an area path. Work items in this area will be reclassified to the target area. (requires AZUREDEVOPS_ENABLE_CLASSIFICATION_NODE_DELETE=true)", {
|
|
185
|
+
project: z.string().describe("The project name"),
|
|
186
|
+
path: z.string().describe("Area path to delete (e.g., 'Backend' or 'Product\\Backend')"),
|
|
187
|
+
reclassifyId: z.number().describe("ID of the area to move work items to. Get IDs from list-areas."),
|
|
188
|
+
}, async ({ project, path, reclassifyId }) => {
|
|
189
|
+
try {
|
|
190
|
+
const result = await ctx.classification.deleteClassificationNode(project, 'areas', path, reclassifyId);
|
|
191
|
+
return { content: [{ type: "text", text: `Deleted area '${path}':\n\n${JSON.stringify(result, null, 2)}` }] };
|
|
192
|
+
}
|
|
193
|
+
catch (error) {
|
|
194
|
+
console.error("Error deleting area:", error);
|
|
195
|
+
return { content: [{ type: "text", text: `Failed to delete area: ${error.message}` }] };
|
|
196
|
+
}
|
|
197
|
+
});
|
|
198
|
+
deleteCount++;
|
|
199
|
+
}
|
|
200
|
+
return { readonly: readonlyCount, upsert: upsertCount, delete: deleteCount };
|
|
201
|
+
}
|
|
202
|
+
//# sourceMappingURL=classification-tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"classification-tools.js","sourceRoot":"","sources":["../../src/tools/classification-tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"environment-tools.d.ts","sourceRoot":"","sources":["../../src/tools/environment-tools.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD,wBAAgB,wBAAwB,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,CAyO/H"}
|
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Environment tools - read-only, upsert (Tier 2), and delete (Tier 3).
|
|
3
|
+
*/
|
|
4
|
+
import { z } from 'zod';
|
|
5
|
+
export function registerEnvironmentTools(server, ctx) {
|
|
6
|
+
let readonlyCount = 0;
|
|
7
|
+
let upsertCount = 0;
|
|
8
|
+
let deleteCount = 0;
|
|
9
|
+
// ========================================
|
|
10
|
+
// ENVIRONMENT READ-ONLY TOOLS
|
|
11
|
+
// ========================================
|
|
12
|
+
server.tool("list-environments", "List all deployment environments in a project. Shows environment name, description, and modification info.", {
|
|
13
|
+
project: z.string().describe("The project name"),
|
|
14
|
+
}, async ({ project }) => {
|
|
15
|
+
try {
|
|
16
|
+
const result = await ctx.environments.listEnvironments(project);
|
|
17
|
+
return { content: [{ type: "text", text: `Environments in project '${project}':\n\n${JSON.stringify(result, null, 2)}` }] };
|
|
18
|
+
}
|
|
19
|
+
catch (error) {
|
|
20
|
+
console.error("Error listing environments:", error);
|
|
21
|
+
return { content: [{ type: "text", text: `Failed to list environments: ${error.message}` }] };
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
readonlyCount++;
|
|
25
|
+
server.tool("get-environment", "Get detailed environment configuration including associated resources (Kubernetes, VMs, etc.).", {
|
|
26
|
+
project: z.string().describe("The project name"),
|
|
27
|
+
environmentId: z.number().describe("The environment ID"),
|
|
28
|
+
}, async ({ project, environmentId }) => {
|
|
29
|
+
try {
|
|
30
|
+
const result = await ctx.environments.getEnvironment(project, environmentId);
|
|
31
|
+
return { content: [{ type: "text", text: `Environment ${environmentId}:\n\n${JSON.stringify(result, null, 2)}` }] };
|
|
32
|
+
}
|
|
33
|
+
catch (error) {
|
|
34
|
+
console.error("Error getting environment:", error);
|
|
35
|
+
return { content: [{ type: "text", text: `Failed to get environment: ${error.message}` }] };
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
readonlyCount++;
|
|
39
|
+
server.tool("get-env-deployments", "Get deployment history for an environment. Shows pipeline, owner, start/finish times, and result.", {
|
|
40
|
+
project: z.string().describe("The project name"),
|
|
41
|
+
environmentId: z.number().describe("The environment ID"),
|
|
42
|
+
top: z.number().optional().describe("Maximum number of results (default: 10)"),
|
|
43
|
+
}, async ({ project, environmentId, top }) => {
|
|
44
|
+
try {
|
|
45
|
+
const result = await ctx.environments.getEnvironmentDeployments(project, environmentId, top || 10);
|
|
46
|
+
return { content: [{ type: "text", text: `Deployments to environment ${environmentId}:\n\n${JSON.stringify(result, null, 2)}` }] };
|
|
47
|
+
}
|
|
48
|
+
catch (error) {
|
|
49
|
+
console.error("Error getting environment deployments:", error);
|
|
50
|
+
return { content: [{ type: "text", text: `Failed to get environment deployments: ${error.message}` }] };
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
readonlyCount++;
|
|
54
|
+
server.tool("get-env-checks", "Get all checks (approvals, business hours, branch control, etc.) configured for an environment. Essential for understanding pipeline approval requirements.", {
|
|
55
|
+
project: z.string().describe("The project name"),
|
|
56
|
+
environmentId: z.number().describe("The environment ID"),
|
|
57
|
+
}, async ({ project, environmentId }) => {
|
|
58
|
+
try {
|
|
59
|
+
const result = await ctx.environments.getEnvironmentChecks(project, environmentId);
|
|
60
|
+
return { content: [{ type: "text", text: `Checks for environment ${environmentId}:\n\n${JSON.stringify(result, null, 2)}` }] };
|
|
61
|
+
}
|
|
62
|
+
catch (error) {
|
|
63
|
+
console.error("Error getting environment checks:", error);
|
|
64
|
+
return { content: [{ type: "text", text: `Failed to get environment checks: ${error.message}` }] };
|
|
65
|
+
}
|
|
66
|
+
});
|
|
67
|
+
readonlyCount++;
|
|
68
|
+
// ========================================
|
|
69
|
+
// ENVIRONMENT UPSERT TOOLS (Tier 2)
|
|
70
|
+
// ========================================
|
|
71
|
+
if (ctx.tierFlags.enableEnvironmentUpsert) {
|
|
72
|
+
server.tool("create-environment", "Create a new deployment environment. (requires AZUREDEVOPS_ENABLE_ENVIRONMENT_UPSERT=true)", {
|
|
73
|
+
project: z.string().describe("The project name"),
|
|
74
|
+
name: z.string().describe("Environment name"),
|
|
75
|
+
description: z.string().optional().describe("Environment description"),
|
|
76
|
+
}, async ({ project, name, description }) => {
|
|
77
|
+
try {
|
|
78
|
+
const result = await ctx.environments.createEnvironment(project, name, description);
|
|
79
|
+
return { content: [{ type: "text", text: `Created environment '${name}':\n\n${JSON.stringify(result, null, 2)}` }] };
|
|
80
|
+
}
|
|
81
|
+
catch (error) {
|
|
82
|
+
console.error("Error creating environment:", error);
|
|
83
|
+
return { content: [{ type: "text", text: `Failed to create environment: ${error.message}` }] };
|
|
84
|
+
}
|
|
85
|
+
});
|
|
86
|
+
upsertCount++;
|
|
87
|
+
server.tool("update-environment", "Update an environment's name or description. (requires AZUREDEVOPS_ENABLE_ENVIRONMENT_UPSERT=true)", {
|
|
88
|
+
project: z.string().describe("The project name"),
|
|
89
|
+
environmentId: z.number().describe("The environment ID"),
|
|
90
|
+
name: z.string().optional().describe("New name"),
|
|
91
|
+
description: z.string().optional().describe("New description"),
|
|
92
|
+
}, async ({ project, environmentId, name, description }) => {
|
|
93
|
+
try {
|
|
94
|
+
const updates = {};
|
|
95
|
+
if (name)
|
|
96
|
+
updates.name = name;
|
|
97
|
+
if (description)
|
|
98
|
+
updates.description = description;
|
|
99
|
+
const result = await ctx.environments.updateEnvironment(project, environmentId, updates);
|
|
100
|
+
return { content: [{ type: "text", text: `Updated environment ${environmentId}:\n\n${JSON.stringify(result, null, 2)}` }] };
|
|
101
|
+
}
|
|
102
|
+
catch (error) {
|
|
103
|
+
console.error("Error updating environment:", error);
|
|
104
|
+
return { content: [{ type: "text", text: `Failed to update environment: ${error.message}` }] };
|
|
105
|
+
}
|
|
106
|
+
});
|
|
107
|
+
upsertCount++;
|
|
108
|
+
server.tool("create-env-check", "Add an approval, business hours, branch control, or other check to an environment. Supports all Azure DevOps check types. (requires AZUREDEVOPS_ENABLE_ENVIRONMENT_UPSERT=true)", {
|
|
109
|
+
project: z.string().describe("The project name"),
|
|
110
|
+
environmentId: z.number().describe("The environment ID"),
|
|
111
|
+
checkType: z.enum([
|
|
112
|
+
"Approval",
|
|
113
|
+
"BusinessHours",
|
|
114
|
+
"BranchControl",
|
|
115
|
+
"InvokeRESTAPI",
|
|
116
|
+
"InvokeAzureFunction",
|
|
117
|
+
"ExclusiveLock",
|
|
118
|
+
"RequiredTemplate"
|
|
119
|
+
]).describe("Check type"),
|
|
120
|
+
settings: z.any().describe("Check-specific settings. For Approval: {approvers: [{id: 'user-guid'}], minRequiredApprovers: 1, instructions: '...'}. For BusinessHours: {businessHours: {startTime: '09:00', endTime: '17:00', timeZoneId: 'UTC'}}. For BranchControl: {allowedBranches: ['refs/heads/main']}"),
|
|
121
|
+
timeout: z.number().optional().describe("Timeout in minutes (default: 43200 = 30 days)"),
|
|
122
|
+
}, async ({ project, environmentId, checkType, settings, timeout }) => {
|
|
123
|
+
try {
|
|
124
|
+
const configuration = { ...settings };
|
|
125
|
+
if (timeout)
|
|
126
|
+
configuration.timeout = timeout;
|
|
127
|
+
const result = await ctx.environments.addEnvironmentCheck(project, environmentId, checkType, configuration);
|
|
128
|
+
return { content: [{ type: "text", text: `Created ${checkType} check on environment ${environmentId}:\n\n${JSON.stringify(result, null, 2)}` }] };
|
|
129
|
+
}
|
|
130
|
+
catch (error) {
|
|
131
|
+
console.error("Error creating environment check:", error);
|
|
132
|
+
return { content: [{ type: "text", text: `Failed to create environment check: ${error.message}` }] };
|
|
133
|
+
}
|
|
134
|
+
});
|
|
135
|
+
upsertCount++;
|
|
136
|
+
server.tool("update-env-check", "Update an existing environment check's settings or timeout. (requires AZUREDEVOPS_ENABLE_ENVIRONMENT_UPSERT=true)", {
|
|
137
|
+
project: z.string().describe("The project name"),
|
|
138
|
+
checkId: z.number().describe("The check configuration ID to update"),
|
|
139
|
+
settings: z.any().optional().describe("Updated check-specific settings"),
|
|
140
|
+
timeout: z.number().optional().describe("Updated timeout in minutes"),
|
|
141
|
+
}, async ({ project, checkId, settings, timeout }) => {
|
|
142
|
+
try {
|
|
143
|
+
const updates = {};
|
|
144
|
+
if (settings !== undefined)
|
|
145
|
+
updates.settings = settings;
|
|
146
|
+
if (timeout !== undefined)
|
|
147
|
+
updates.timeout = timeout;
|
|
148
|
+
const result = await ctx.environments.updateEnvironmentCheck(project, checkId, updates);
|
|
149
|
+
return { content: [{ type: "text", text: `Updated check ${checkId}:\n\n${JSON.stringify(result, null, 2)}` }] };
|
|
150
|
+
}
|
|
151
|
+
catch (error) {
|
|
152
|
+
console.error("Error updating environment check:", error);
|
|
153
|
+
return { content: [{ type: "text", text: `Failed to update environment check: ${error.message}` }] };
|
|
154
|
+
}
|
|
155
|
+
});
|
|
156
|
+
upsertCount++;
|
|
157
|
+
}
|
|
158
|
+
// ========================================
|
|
159
|
+
// ENVIRONMENT DELETE TOOLS (Tier 3)
|
|
160
|
+
// ========================================
|
|
161
|
+
if (ctx.tierFlags.enableEnvironmentDelete) {
|
|
162
|
+
server.tool("delete-environment", "DESTRUCTIVE: Delete a deployment environment. Pipelines targeting this environment will fail. (requires AZUREDEVOPS_ENABLE_ENVIRONMENT_DELETE=true)", {
|
|
163
|
+
project: z.string().describe("The project name"),
|
|
164
|
+
environmentId: z.number().describe("The environment ID to delete"),
|
|
165
|
+
}, async ({ project, environmentId }) => {
|
|
166
|
+
try {
|
|
167
|
+
const result = await ctx.environments.deleteEnvironment(project, environmentId);
|
|
168
|
+
return { content: [{ type: "text", text: `Deleted environment ${environmentId}:\n\n${JSON.stringify(result, null, 2)}` }] };
|
|
169
|
+
}
|
|
170
|
+
catch (error) {
|
|
171
|
+
console.error("Error deleting environment:", error);
|
|
172
|
+
return { content: [{ type: "text", text: `Failed to delete environment: ${error.message}` }] };
|
|
173
|
+
}
|
|
174
|
+
});
|
|
175
|
+
deleteCount++;
|
|
176
|
+
server.tool("delete-env-check", "Delete an approval, business hours, branch control, or other check from an environment. (requires AZUREDEVOPS_ENABLE_ENVIRONMENT_DELETE=true)", {
|
|
177
|
+
project: z.string().describe("The project name"),
|
|
178
|
+
checkId: z.number().describe("The check configuration ID to delete (get from get-env-checks)"),
|
|
179
|
+
}, async ({ project, checkId }) => {
|
|
180
|
+
try {
|
|
181
|
+
const result = await ctx.environments.removeEnvironmentCheck(project, checkId);
|
|
182
|
+
return { content: [{ type: "text", text: `Deleted check ${checkId}:\n\n${JSON.stringify(result, null, 2)}` }] };
|
|
183
|
+
}
|
|
184
|
+
catch (error) {
|
|
185
|
+
console.error("Error deleting environment check:", error);
|
|
186
|
+
return { content: [{ type: "text", text: `Failed to delete environment check: ${error.message}` }] };
|
|
187
|
+
}
|
|
188
|
+
});
|
|
189
|
+
deleteCount++;
|
|
190
|
+
}
|
|
191
|
+
return { readonly: readonlyCount, upsert: upsertCount, delete: deleteCount };
|
|
192
|
+
}
|
|
193
|
+
//# sourceMappingURL=environment-tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"environment-tools.js","sourceRoot":"","sources":["../../src/tools/environment-tools.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,MAAM,UAAU,wBAAwB,CAAC,MAAW,EAAE,GAAmB;IACvE,IAAI,aAAa,GAAG,CAAC,CAAC;IACtB,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,IAAI,WAAW,GAAG,CAAC,CAAC;IAEpB,2CAA2C;IAC3C,8BAA8B;IAC9B,2CAA2C;IAC3C,MAAM,CAAC,IAAI,CACT,mBAAmB,EACnB,4GAA4G,EAC5G;QACE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC;KACjD,EACD,KAAK,EAAE,EAAE,OAAO,EAAO,EAAE,EAAE;QACzB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,YAAY,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;YAChE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,4BAA4B,OAAO,SAAS,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;QAC9H,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO,CAAC,KAAK,CAAC,6BAA6B,EAAE,KAAK,CAAC,CAAC;YACpD,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,gCAAgC,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC;QAChG,CAAC;IACH,CAAC,CACF,CAAC;IACF,aAAa,EAAE,CAAC;IAEhB,MAAM,CAAC,IAAI,CACT,iBAAiB,EACjB,gGAAgG,EAChG;QACE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC;QAChD,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC;KACzD,EACD,KAAK,EAAE,EAAE,OAAO,EAAE,aAAa,EAAO,EAAE,EAAE;QACxC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,YAAY,CAAC,cAAc,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;YAC7E,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,aAAa,QAAQ,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;QACtH,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAE,KAAK,CAAC,CAAC;YACnD,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,8BAA8B,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC;QAC9F,CAAC;IACH,CAAC,CACF,CAAC;IACF,aAAa,EAAE,CAAC;IAEhB,MAAM,CAAC,IAAI,CACT,qBAAqB,EACrB,mGAAmG,EACnG;QACE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC;QAChD,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC;QACxD,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yCAAyC,CAAC;KAC/E,EACD,KAAK,EAAE,EAAE,OAAO,EAAE,aAAa,EAAE,GAAG,EAAO,EAAE,EAAE;QAC7C,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,YAAY,CAAC,yBAAyB,CAAC,OAAO,EAAE,aAAa,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC;YACnG,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,8BAA8B,aAAa,QAAQ,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;QACrI,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO,CAAC,KAAK,CAAC,wCAAwC,EAAE,KAAK,CAAC,CAAC;YAC/D,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,0CAA0C,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC;QAC1G,CAAC;IACH,CAAC,CACF,CAAC;IACF,aAAa,EAAE,CAAC;IAEhB,MAAM,CAAC,IAAI,CACT,gBAAgB,EAChB,6JAA6J,EAC7J;QACE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC;QAChD,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC;KACzD,EACD,KAAK,EAAE,EAAE,OAAO,EAAE,aAAa,EAAO,EAAE,EAAE;QACxC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,YAAY,CAAC,oBAAoB,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;YACnF,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,0BAA0B,aAAa,QAAQ,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;QACjI,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO,CAAC,KAAK,CAAC,mCAAmC,EAAE,KAAK,CAAC,CAAC;YAC1D,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,qCAAqC,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC;QACrG,CAAC;IACH,CAAC,CACF,CAAC;IACF,aAAa,EAAE,CAAC;IAEhB,2CAA2C;IAC3C,oCAAoC;IACpC,2CAA2C;IAC3C,IAAI,GAAG,CAAC,SAAS,CAAC,uBAAuB,EAAE,CAAC;QAC1C,MAAM,CAAC,IAAI,CACT,oBAAoB,EACpB,4FAA4F,EAC5F;YACE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC;YAChD,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC;YAC7C,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC;SACvE,EACD,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAO,EAAE,EAAE;YAC5C,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,YAAY,CAAC,iBAAiB,CAAC,OAAO,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;gBACpF,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,wBAAwB,IAAI,SAAS,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;YACvH,CAAC;YAAC,OAAO,KAAU,EAAE,CAAC;gBACpB,OAAO,CAAC,KAAK,CAAC,6BAA6B,EAAE,KAAK,CAAC,CAAC;gBACpD,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,iCAAiC,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC;YACjG,CAAC;QACH,CAAC,CACF,CAAC;QACF,WAAW,EAAE,CAAC;QAEd,MAAM,CAAC,IAAI,CACT,oBAAoB,EACpB,oGAAoG,EACpG;YACE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC;YAChD,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC;YACxD,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC;YAChD,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;SAC/D,EACD,KAAK,EAAE,EAAE,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,WAAW,EAAO,EAAE,EAAE;YAC3D,IAAI,CAAC;gBACH,MAAM,OAAO,GAAQ,EAAE,CAAC;gBACxB,IAAI,IAAI;oBAAE,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;gBAC9B,IAAI,WAAW;oBAAE,OAAO,CAAC,WAAW,GAAG,WAAW,CAAC;gBACnD,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,YAAY,CAAC,iBAAiB,CAAC,OAAO,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;gBACzF,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,uBAAuB,aAAa,QAAQ,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;YAC9H,CAAC;YAAC,OAAO,KAAU,EAAE,CAAC;gBACpB,OAAO,CAAC,KAAK,CAAC,6BAA6B,EAAE,KAAK,CAAC,CAAC;gBACpD,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,iCAAiC,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC;YACjG,CAAC;QACH,CAAC,CACF,CAAC;QACF,WAAW,EAAE,CAAC;QAEd,MAAM,CAAC,IAAI,CACT,kBAAkB,EAClB,iLAAiL,EACjL;YACE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC;YAChD,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC;YACxD,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC;gBAChB,UAAU;gBACV,eAAe;gBACf,eAAe;gBACf,eAAe;gBACf,qBAAqB;gBACrB,eAAe;gBACf,kBAAkB;aACnB,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC;YACzB,QAAQ,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,iRAAiR,CAAC;YAC7S,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,+CAA+C,CAAC;SACzF,EACD,KAAK,EAAE,EAAE,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAO,EAAE,EAAE;YACtE,IAAI,CAAC;gBACH,MAAM,aAAa,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;gBACtC,IAAI,OAAO;oBAAE,aAAa,CAAC,OAAO,GAAG,OAAO,CAAC;gBAC7C,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,YAAY,CAAC,mBAAmB,CAAC,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC;gBAC5G,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,SAAS,yBAAyB,aAAa,QAAQ,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;YACpJ,CAAC;YAAC,OAAO,KAAU,EAAE,CAAC;gBACpB,OAAO,CAAC,KAAK,CAAC,mCAAmC,EAAE,KAAK,CAAC,CAAC;gBAC1D,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,uCAAuC,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC;YACvG,CAAC;QACH,CAAC,CACF,CAAC;QACF,WAAW,EAAE,CAAC;QAEd,MAAM,CAAC,IAAI,CACT,kBAAkB,EAClB,mHAAmH,EACnH;YACE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC;YAChD,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,sCAAsC,CAAC;YACpE,QAAQ,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iCAAiC,CAAC;YACxE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4BAA4B,CAAC;SACtE,EACD,KAAK,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAO,EAAE,EAAE;YACrD,IAAI,CAAC;gBACH,MAAM,OAAO,GAAQ,EAAE,CAAC;gBACxB,IAAI,QAAQ,KAAK,SAAS;oBAAE,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAC;gBACxD,IAAI,OAAO,KAAK,SAAS;oBAAE,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC;gBACrD,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,YAAY,CAAC,sBAAsB,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;gBACxF,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,OAAO,QAAQ,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;YAClH,CAAC;YAAC,OAAO,KAAU,EAAE,CAAC;gBACpB,OAAO,CAAC,KAAK,CAAC,mCAAmC,EAAE,KAAK,CAAC,CAAC;gBAC1D,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,uCAAuC,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC;YACvG,CAAC;QACH,CAAC,CACF,CAAC;QACF,WAAW,EAAE,CAAC;IAChB,CAAC;IAED,2CAA2C;IAC3C,oCAAoC;IACpC,2CAA2C;IAC3C,IAAI,GAAG,CAAC,SAAS,CAAC,uBAAuB,EAAE,CAAC;QAC1C,MAAM,CAAC,IAAI,CACT,oBAAoB,EACpB,qJAAqJ,EACrJ;YACE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC;YAChD,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,8BAA8B,CAAC;SACnE,EACD,KAAK,EAAE,EAAE,OAAO,EAAE,aAAa,EAAO,EAAE,EAAE;YACxC,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,YAAY,CAAC,iBAAiB,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;gBAChF,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,uBAAuB,aAAa,QAAQ,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;YAC9H,CAAC;YAAC,OAAO,KAAU,EAAE,CAAC;gBACpB,OAAO,CAAC,KAAK,CAAC,6BAA6B,EAAE,KAAK,CAAC,CAAC;gBACpD,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,iCAAiC,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC;YACjG,CAAC;QACH,CAAC,CACF,CAAC;QACF,WAAW,EAAE,CAAC;QAEd,MAAM,CAAC,IAAI,CACT,kBAAkB,EAClB,+IAA+I,EAC/I;YACE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC;YAChD,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gEAAgE,CAAC;SAC/F,EACD,KAAK,EAAE,EAAE,OAAO,EAAE,OAAO,EAAO,EAAE,EAAE;YAClC,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,YAAY,CAAC,sBAAsB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;gBAC/E,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,OAAO,QAAQ,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;YAClH,CAAC;YAAC,OAAO,KAAU,EAAE,CAAC;gBACpB,OAAO,CAAC,KAAK,CAAC,mCAAmC,EAAE,KAAK,CAAC,CAAC;gBAC1D,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,uCAAuC,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC;YACvG,CAAC;QACH,CAAC,CACF,CAAC;QACF,WAAW,EAAE,CAAC;IAChB,CAAC;IAED,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;AAC/E,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tools barrel export + combined registration with tier-based counting.
|
|
3
|
+
*/
|
|
4
|
+
import type { ServiceContext } from '../types.js';
|
|
5
|
+
export declare function registerAllTools(server: any, ctx: ServiceContext): void;
|
|
6
|
+
export { registerPipelineTools } from './pipeline-tools.js';
|
|
7
|
+
export { registerServiceConnectionTools } from './service-connection-tools.js';
|
|
8
|
+
export { registerVariableGroupTools } from './variable-group-tools.js';
|
|
9
|
+
export { registerAgentPoolTools } from './agent-pool-tools.js';
|
|
10
|
+
export { registerEnvironmentTools } from './environment-tools.js';
|
|
11
|
+
export { registerClassificationTools } from './classification-tools.js';
|
|
12
|
+
export { registerArtifactFeedTools } from './artifact-feed-tools.js';
|
|
13
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AASlD,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,cAAc,GAAG,IAAI,CAuBvE;AAED,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,8BAA8B,EAAE,MAAM,+BAA+B,CAAC;AAC/E,OAAO,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAE,2BAA2B,EAAE,MAAM,2BAA2B,CAAC;AACxE,OAAO,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { registerPipelineTools } from './pipeline-tools.js';
|
|
2
|
+
import { registerServiceConnectionTools } from './service-connection-tools.js';
|
|
3
|
+
import { registerVariableGroupTools } from './variable-group-tools.js';
|
|
4
|
+
import { registerAgentPoolTools } from './agent-pool-tools.js';
|
|
5
|
+
import { registerEnvironmentTools } from './environment-tools.js';
|
|
6
|
+
import { registerClassificationTools } from './classification-tools.js';
|
|
7
|
+
import { registerArtifactFeedTools } from './artifact-feed-tools.js';
|
|
8
|
+
export function registerAllTools(server, ctx) {
|
|
9
|
+
let totalReadonly = 0;
|
|
10
|
+
let totalUpsert = 0;
|
|
11
|
+
let totalDelete = 0;
|
|
12
|
+
const groups = [
|
|
13
|
+
registerPipelineTools(server, ctx),
|
|
14
|
+
registerServiceConnectionTools(server, ctx),
|
|
15
|
+
registerVariableGroupTools(server, ctx),
|
|
16
|
+
registerAgentPoolTools(server, ctx),
|
|
17
|
+
registerEnvironmentTools(server, ctx),
|
|
18
|
+
registerClassificationTools(server, ctx),
|
|
19
|
+
registerArtifactFeedTools(server, ctx),
|
|
20
|
+
];
|
|
21
|
+
for (const g of groups) {
|
|
22
|
+
totalReadonly += g.readonly;
|
|
23
|
+
totalUpsert += g.upsert;
|
|
24
|
+
totalDelete += g.delete;
|
|
25
|
+
}
|
|
26
|
+
const total = totalReadonly + totalUpsert + totalDelete;
|
|
27
|
+
console.error(`azure-devops-admin tools registered: ${total} tools (${totalReadonly} readonly + ${totalUpsert} upsert + ${totalDelete} delete)`);
|
|
28
|
+
}
|
|
29
|
+
export { registerPipelineTools } from './pipeline-tools.js';
|
|
30
|
+
export { registerServiceConnectionTools } from './service-connection-tools.js';
|
|
31
|
+
export { registerVariableGroupTools } from './variable-group-tools.js';
|
|
32
|
+
export { registerAgentPoolTools } from './agent-pool-tools.js';
|
|
33
|
+
export { registerEnvironmentTools } from './environment-tools.js';
|
|
34
|
+
export { registerClassificationTools } from './classification-tools.js';
|
|
35
|
+
export { registerArtifactFeedTools } from './artifact-feed-tools.js';
|
|
36
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,8BAA8B,EAAE,MAAM,+BAA+B,CAAC;AAC/E,OAAO,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAE,2BAA2B,EAAE,MAAM,2BAA2B,CAAC;AACxE,OAAO,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AAErE,MAAM,UAAU,gBAAgB,CAAC,MAAW,EAAE,GAAmB;IAC/D,IAAI,aAAa,GAAG,CAAC,CAAC;IACtB,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,IAAI,WAAW,GAAG,CAAC,CAAC;IAEpB,MAAM,MAAM,GAAG;QACb,qBAAqB,CAAC,MAAM,EAAE,GAAG,CAAC;QAClC,8BAA8B,CAAC,MAAM,EAAE,GAAG,CAAC;QAC3C,0BAA0B,CAAC,MAAM,EAAE,GAAG,CAAC;QACvC,sBAAsB,CAAC,MAAM,EAAE,GAAG,CAAC;QACnC,wBAAwB,CAAC,MAAM,EAAE,GAAG,CAAC;QACrC,2BAA2B,CAAC,MAAM,EAAE,GAAG,CAAC;QACxC,yBAAyB,CAAC,MAAM,EAAE,GAAG,CAAC;KACvC,CAAC;IAEF,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QACvB,aAAa,IAAI,CAAC,CAAC,QAAQ,CAAC;QAC5B,WAAW,IAAI,CAAC,CAAC,MAAM,CAAC;QACxB,WAAW,IAAI,CAAC,CAAC,MAAM,CAAC;IAC1B,CAAC;IAED,MAAM,KAAK,GAAG,aAAa,GAAG,WAAW,GAAG,WAAW,CAAC;IACxD,OAAO,CAAC,KAAK,CAAC,wCAAwC,KAAK,WAAW,aAAa,eAAe,WAAW,aAAa,WAAW,UAAU,CAAC,CAAC;AACnJ,CAAC;AAED,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,8BAA8B,EAAE,MAAM,+BAA+B,CAAC;AAC/E,OAAO,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAE,2BAA2B,EAAE,MAAM,2BAA2B,CAAC;AACxE,OAAO,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pipeline-tools.d.ts","sourceRoot":"","sources":["../../src/tools/pipeline-tools.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD,wBAAgB,qBAAqB,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,CAqX5H"}
|