@mcp-consultant-tools/azure-devops-admin 27.0.0-beta.4 → 28.0.0-beta.10

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.
Files changed (105) hide show
  1. package/build/AzureDevOpsAdminService.d.ts +47 -1
  2. package/build/AzureDevOpsAdminService.d.ts.map +1 -1
  3. package/build/AzureDevOpsAdminService.js +345 -11
  4. package/build/AzureDevOpsAdminService.js.map +1 -1
  5. package/build/cli/commands/index.d.ts +8 -0
  6. package/build/cli/commands/index.d.ts.map +1 -0
  7. package/build/cli/commands/index.js +9 -0
  8. package/build/cli/commands/index.js.map +1 -0
  9. package/build/cli/commands/pipeline-commands.d.ts +7 -0
  10. package/build/cli/commands/pipeline-commands.d.ts.map +1 -0
  11. package/build/cli/commands/pipeline-commands.js +191 -0
  12. package/build/cli/commands/pipeline-commands.js.map +1 -0
  13. package/build/cli/output.d.ts +11 -0
  14. package/build/cli/output.d.ts.map +1 -0
  15. package/build/cli/output.js +10 -0
  16. package/build/cli/output.js.map +1 -0
  17. package/build/cli.d.ts +9 -0
  18. package/build/cli.d.ts.map +1 -0
  19. package/build/cli.js +27 -0
  20. package/build/cli.js.map +1 -0
  21. package/build/context-factory.d.ts +4 -0
  22. package/build/context-factory.d.ts.map +1 -0
  23. package/build/context-factory.js +78 -0
  24. package/build/context-factory.js.map +1 -0
  25. package/build/index.d.ts +7 -11
  26. package/build/index.d.ts.map +1 -1
  27. package/build/index.js +60 -924
  28. package/build/index.js.map +1 -1
  29. package/build/services/admin-client.d.ts +19 -0
  30. package/build/services/admin-client.d.ts.map +1 -0
  31. package/build/services/admin-client.js +97 -0
  32. package/build/services/admin-client.js.map +1 -0
  33. package/build/services/agent-pool-service.d.ts +21 -0
  34. package/build/services/agent-pool-service.d.ts.map +1 -0
  35. package/build/services/agent-pool-service.js +118 -0
  36. package/build/services/agent-pool-service.js.map +1 -0
  37. package/build/services/artifact-feed-service.d.ts +21 -0
  38. package/build/services/artifact-feed-service.d.ts.map +1 -0
  39. package/build/services/artifact-feed-service.js +83 -0
  40. package/build/services/artifact-feed-service.js.map +1 -0
  41. package/build/services/classification-service.d.ts +23 -0
  42. package/build/services/classification-service.d.ts.map +1 -0
  43. package/build/services/classification-service.js +163 -0
  44. package/build/services/classification-service.js.map +1 -0
  45. package/build/services/environment-service.d.ts +25 -0
  46. package/build/services/environment-service.d.ts.map +1 -0
  47. package/build/services/environment-service.js +160 -0
  48. package/build/services/environment-service.js.map +1 -0
  49. package/build/services/index.d.ts +12 -0
  50. package/build/services/index.d.ts.map +1 -0
  51. package/build/services/index.js +12 -0
  52. package/build/services/index.js.map +1 -0
  53. package/build/services/pipeline-service.d.ts +37 -0
  54. package/build/services/pipeline-service.d.ts.map +1 -0
  55. package/build/services/pipeline-service.js +500 -0
  56. package/build/services/pipeline-service.js.map +1 -0
  57. package/build/services/service-connection-service.d.ts +29 -0
  58. package/build/services/service-connection-service.d.ts.map +1 -0
  59. package/build/services/service-connection-service.js +147 -0
  60. package/build/services/service-connection-service.js.map +1 -0
  61. package/build/services/variable-group-service.d.ts +22 -0
  62. package/build/services/variable-group-service.d.ts.map +1 -0
  63. package/build/services/variable-group-service.js +136 -0
  64. package/build/services/variable-group-service.js.map +1 -0
  65. package/build/tool-examples.d.ts +83 -0
  66. package/build/tool-examples.d.ts.map +1 -0
  67. package/build/tool-examples.js +106 -0
  68. package/build/tool-examples.js.map +1 -0
  69. package/build/tools/agent-pool-tools.d.ts +7 -0
  70. package/build/tools/agent-pool-tools.d.ts.map +1 -0
  71. package/build/tools/agent-pool-tools.js +133 -0
  72. package/build/tools/agent-pool-tools.js.map +1 -0
  73. package/build/tools/artifact-feed-tools.d.ts +7 -0
  74. package/build/tools/artifact-feed-tools.d.ts.map +1 -0
  75. package/build/tools/artifact-feed-tools.js +47 -0
  76. package/build/tools/artifact-feed-tools.js.map +1 -0
  77. package/build/tools/classification-tools.d.ts +7 -0
  78. package/build/tools/classification-tools.d.ts.map +1 -0
  79. package/build/tools/classification-tools.js +202 -0
  80. package/build/tools/classification-tools.js.map +1 -0
  81. package/build/tools/environment-tools.d.ts +7 -0
  82. package/build/tools/environment-tools.d.ts.map +1 -0
  83. package/build/tools/environment-tools.js +194 -0
  84. package/build/tools/environment-tools.js.map +1 -0
  85. package/build/tools/index.d.ts +13 -0
  86. package/build/tools/index.d.ts.map +1 -0
  87. package/build/tools/index.js +36 -0
  88. package/build/tools/index.js.map +1 -0
  89. package/build/tools/pipeline-tools.d.ts +7 -0
  90. package/build/tools/pipeline-tools.d.ts.map +1 -0
  91. package/build/tools/pipeline-tools.js +292 -0
  92. package/build/tools/pipeline-tools.js.map +1 -0
  93. package/build/tools/service-connection-tools.d.ts +7 -0
  94. package/build/tools/service-connection-tools.d.ts.map +1 -0
  95. package/build/tools/service-connection-tools.js +140 -0
  96. package/build/tools/service-connection-tools.js.map +1 -0
  97. package/build/tools/variable-group-tools.d.ts +7 -0
  98. package/build/tools/variable-group-tools.d.ts.map +1 -0
  99. package/build/tools/variable-group-tools.js +138 -0
  100. package/build/tools/variable-group-tools.js.map +1 -0
  101. package/build/types.d.ts +62 -0
  102. package/build/types.d.ts.map +1 -0
  103. package/build/types.js +2 -0
  104. package/build/types.js.map +1 -0
  105. package/package.json +5 -3
@@ -0,0 +1,133 @@
1
+ /**
2
+ * Agent pool tools - read-only, upsert (Tier 2), and disable (Tier 3).
3
+ */
4
+ import { z } from 'zod';
5
+ import { descWithExamples, POOL_TYPE_EXAMPLES } from '../tool-examples.js';
6
+ export function registerAgentPoolTools(server, ctx) {
7
+ let readonlyCount = 0;
8
+ let upsertCount = 0;
9
+ let deleteCount = 0;
10
+ // ========================================
11
+ // AGENT POOL READ-ONLY TOOLS
12
+ // ========================================
13
+ server.tool("list-agent-pools", "List all agent pools in the organization. Shows pool type (automation for build/release, deployment for environment groups), size, hosted status, and auto-provision settings.", {
14
+ poolType: z.enum(["automation", "deployment"]).optional().describe(descWithExamples("Filter by pool type", POOL_TYPE_EXAMPLES)),
15
+ }, async ({ poolType }) => {
16
+ try {
17
+ const result = await ctx.agentPools.listAgentPools(poolType);
18
+ return { content: [{ type: "text", text: `Agent pools:\n\n${JSON.stringify(result, null, 2)}` }] };
19
+ }
20
+ catch (error) {
21
+ console.error("Error listing agent pools:", error);
22
+ return { content: [{ type: "text", text: `Failed to list agent pools: ${error.message}` }] };
23
+ }
24
+ });
25
+ readonlyCount++;
26
+ server.tool("get-agent-pool", "Get detailed agent pool configuration including auto-provision, auto-update, auto-size settings, and owner information.", {
27
+ poolId: z.number().describe("The agent pool ID"),
28
+ }, async ({ poolId }) => {
29
+ try {
30
+ const result = await ctx.agentPools.getAgentPool(poolId);
31
+ return { content: [{ type: "text", text: `Agent pool ${poolId}:\n\n${JSON.stringify(result, null, 2)}` }] };
32
+ }
33
+ catch (error) {
34
+ console.error("Error getting agent pool:", error);
35
+ return { content: [{ type: "text", text: `Failed to get agent pool: ${error.message}` }] };
36
+ }
37
+ });
38
+ readonlyCount++;
39
+ server.tool("list-agents", "List all agents in a pool. Shows agent name, version, OS, enabled status, and current status (online/offline).", {
40
+ poolId: z.number().describe("The agent pool ID"),
41
+ includeCapabilities: z.boolean().optional().describe("Include system and user capabilities (default: false)"),
42
+ }, async ({ poolId, includeCapabilities }) => {
43
+ try {
44
+ const result = await ctx.agentPools.listAgents(poolId, includeCapabilities || false);
45
+ return { content: [{ type: "text", text: `Agents in pool ${poolId}:\n\n${JSON.stringify(result, null, 2)}` }] };
46
+ }
47
+ catch (error) {
48
+ console.error("Error listing agents:", error);
49
+ return { content: [{ type: "text", text: `Failed to list agents: ${error.message}` }] };
50
+ }
51
+ });
52
+ readonlyCount++;
53
+ server.tool("get-agent", "Get detailed agent information including capabilities, current assignment, and last completed request.", {
54
+ poolId: z.number().describe("The agent pool ID"),
55
+ agentId: z.number().describe("The agent ID"),
56
+ }, async ({ poolId, agentId }) => {
57
+ try {
58
+ const result = await ctx.agentPools.getAgent(poolId, agentId);
59
+ return { content: [{ type: "text", text: `Agent ${agentId} in pool ${poolId}:\n\n${JSON.stringify(result, null, 2)}` }] };
60
+ }
61
+ catch (error) {
62
+ console.error("Error getting agent:", error);
63
+ return { content: [{ type: "text", text: `Failed to get agent: ${error.message}` }] };
64
+ }
65
+ });
66
+ readonlyCount++;
67
+ // ========================================
68
+ // AGENT POOL UPSERT TOOLS (Tier 2)
69
+ // ========================================
70
+ if (ctx.tierFlags.enableAgentPoolUpsert) {
71
+ server.tool("update-agent-pool", "Update agent pool settings (auto-provision, auto-update, auto-size, target size). (requires AZUREDEVOPS_ENABLE_AGENT_POOL_UPSERT=true)", {
72
+ poolId: z.number().describe("The agent pool ID"),
73
+ autoProvision: z.boolean().optional().describe("Auto-provision pool to new projects"),
74
+ autoUpdate: z.boolean().optional().describe("Auto-update agents"),
75
+ autoSize: z.boolean().optional().describe("Auto-size pool based on demand"),
76
+ targetSize: z.number().optional().describe("Target pool size for auto-scaling"),
77
+ }, async ({ poolId, autoProvision, autoUpdate, autoSize, targetSize }) => {
78
+ try {
79
+ const updates = {};
80
+ if (autoProvision !== undefined)
81
+ updates.autoProvision = autoProvision;
82
+ if (autoUpdate !== undefined)
83
+ updates.autoUpdate = autoUpdate;
84
+ if (autoSize !== undefined)
85
+ updates.autoSize = autoSize;
86
+ if (targetSize !== undefined)
87
+ updates.targetSize = targetSize;
88
+ const result = await ctx.agentPools.updateAgentPool(poolId, updates);
89
+ return { content: [{ type: "text", text: `Updated agent pool ${poolId}:\n\n${JSON.stringify(result, null, 2)}` }] };
90
+ }
91
+ catch (error) {
92
+ console.error("Error updating agent pool:", error);
93
+ return { content: [{ type: "text", text: `Failed to update agent pool: ${error.message}` }] };
94
+ }
95
+ });
96
+ upsertCount++;
97
+ server.tool("enable-agent", "Enable a disabled agent to accept new jobs. (requires AZUREDEVOPS_ENABLE_AGENT_POOL_UPSERT=true)", {
98
+ poolId: z.number().describe("The agent pool ID"),
99
+ agentId: z.number().describe("The agent ID"),
100
+ }, async ({ poolId, agentId }) => {
101
+ try {
102
+ const result = await ctx.agentPools.enableAgent(poolId, agentId);
103
+ return { content: [{ type: "text", text: `Enabled agent ${agentId} in pool ${poolId}:\n\n${JSON.stringify(result, null, 2)}` }] };
104
+ }
105
+ catch (error) {
106
+ console.error("Error enabling agent:", error);
107
+ return { content: [{ type: "text", text: `Failed to enable agent: ${error.message}` }] };
108
+ }
109
+ });
110
+ upsertCount++;
111
+ }
112
+ // ========================================
113
+ // AGENT POOL DISABLE TOOLS (Tier 3)
114
+ // ========================================
115
+ if (ctx.tierFlags.enableAgentPoolDisable) {
116
+ server.tool("disable-agent", "Disable an agent. It will complete current job then stop accepting new jobs. (requires AZUREDEVOPS_ENABLE_AGENT_POOL_DISABLE=true)", {
117
+ poolId: z.number().describe("The agent pool ID"),
118
+ agentId: z.number().describe("The agent ID to disable"),
119
+ }, async ({ poolId, agentId }) => {
120
+ try {
121
+ const result = await ctx.agentPools.disableAgent(poolId, agentId);
122
+ return { content: [{ type: "text", text: `Disabled agent ${agentId} in pool ${poolId}:\n\n${JSON.stringify(result, null, 2)}` }] };
123
+ }
124
+ catch (error) {
125
+ console.error("Error disabling agent:", error);
126
+ return { content: [{ type: "text", text: `Failed to disable agent: ${error.message}` }] };
127
+ }
128
+ });
129
+ deleteCount++;
130
+ }
131
+ return { readonly: readonlyCount, upsert: upsertCount, delete: deleteCount };
132
+ }
133
+ //# 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,7 @@
1
+ import type { ServiceContext } from '../types.js';
2
+ export declare function registerArtifactFeedTools(server: any, ctx: ServiceContext): {
3
+ readonly: number;
4
+ upsert: number;
5
+ delete: number;
6
+ };
7
+ //# sourceMappingURL=artifact-feed-tools.d.ts.map
@@ -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;AAGlD,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,CAyDhI"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Artifact feed tools - read-only only (no upsert/delete tiers).
3
+ */
4
+ import { z } from 'zod';
5
+ import { descWithExamples, PACKAGE_TYPE_EXAMPLES, FEED_SCOPE_EXAMPLES } from '../tool-examples.js';
6
+ export function registerArtifactFeedTools(server, ctx) {
7
+ let readonlyCount = 0;
8
+ 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.", {
9
+ feedName: z.string().describe("Feed name (e.g., 'SmartProducts')"),
10
+ project: z.string().optional().describe(descWithExamples("Project name for project-scoped feeds. Omit for org-scoped feeds", FEED_SCOPE_EXAMPLES)),
11
+ namePrefix: z.string().optional().describe("Filter packages by name prefix (e.g., 'pp-solution-')"),
12
+ packageType: z.enum(["nuget", "npm", "maven", "upack", "pypi"]).optional().describe(descWithExamples("Filter by package protocol type", PACKAGE_TYPE_EXAMPLES)),
13
+ top: z.number().optional().describe("Maximum number of packages to return (default: 50)"),
14
+ }, async ({ feedName, project, namePrefix, packageType, top }) => {
15
+ try {
16
+ const result = await ctx.artifactFeeds.listFeedPackages(feedName, { project, namePrefix, packageType, top: top || 50 });
17
+ return { content: [{ type: "text", text: `Packages in feed '${feedName}':\n\n${JSON.stringify(result, null, 2)}` }] };
18
+ }
19
+ catch (error) {
20
+ console.error("Error listing feed packages:", error);
21
+ return { content: [{ type: "text", text: `Failed to list feed packages: ${error.message}` }] };
22
+ }
23
+ });
24
+ readonlyCount++;
25
+ 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.", {
26
+ feedName: z.string().describe("Feed name (e.g., 'SmartProducts')"),
27
+ packageName: z.string().describe("Full package name (e.g., 'pp-solution-smartproductscore')"),
28
+ project: z.string().optional().describe("Project name for project-scoped feeds. Omit for org-scoped feeds."),
29
+ packageType: z.enum(["nuget", "npm", "maven", "upack", "pypi"]).optional().describe(descWithExamples("Protocol type hint for faster lookup", PACKAGE_TYPE_EXAMPLES)),
30
+ top: z.number().optional().describe("Maximum number of versions to return (default: 10)"),
31
+ includeDelisted: z.boolean().optional().describe("Include delisted/deprecated versions (default: false)"),
32
+ }, async ({ feedName, packageName, project, packageType, top, includeDelisted }) => {
33
+ try {
34
+ const result = await ctx.artifactFeeds.getPackageVersions(feedName, packageName, {
35
+ project, packageType, top: top || 10, includeDelisted: includeDelisted || false
36
+ });
37
+ return { content: [{ type: "text", text: `Versions for '${packageName}' in feed '${feedName}':\n\n${JSON.stringify(result, null, 2)}` }] };
38
+ }
39
+ catch (error) {
40
+ console.error("Error getting package versions:", error);
41
+ return { content: [{ type: "text", text: `Failed to get package versions: ${error.message}` }] };
42
+ }
43
+ });
44
+ readonlyCount++;
45
+ return { readonly: readonlyCount, upsert: 0, delete: 0 };
46
+ }
47
+ //# 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,7 @@
1
+ import type { ServiceContext } from '../types.js';
2
+ export declare function registerClassificationTools(server: any, ctx: ServiceContext): {
3
+ readonly: number;
4
+ upsert: number;
5
+ delete: number;
6
+ };
7
+ //# sourceMappingURL=classification-tools.d.ts.map
@@ -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"}
@@ -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,7 @@
1
+ import type { ServiceContext } from '../types.js';
2
+ export declare function registerEnvironmentTools(server: any, ctx: ServiceContext): {
3
+ readonly: number;
4
+ upsert: number;
5
+ delete: number;
6
+ };
7
+ //# sourceMappingURL=environment-tools.d.ts.map
@@ -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;AAGlD,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,CA6O/H"}