@mcp-consultant-tools/azure-devops 27.0.0 → 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.
- package/build/azure-devops-client.d.ts +42 -0
- package/build/azure-devops-client.d.ts.map +1 -0
- package/build/azure-devops-client.js +144 -0
- package/build/azure-devops-client.js.map +1 -0
- package/build/cli/commands/build-commands.d.ts +7 -0
- package/build/cli/commands/build-commands.d.ts.map +1 -0
- package/build/cli/commands/build-commands.js +59 -0
- package/build/cli/commands/build-commands.js.map +1 -0
- package/build/cli/commands/configuration-commands.d.ts +7 -0
- package/build/cli/commands/configuration-commands.d.ts.map +1 -0
- package/build/cli/commands/configuration-commands.js +24 -0
- package/build/cli/commands/configuration-commands.js.map +1 -0
- package/build/cli/commands/index.d.ts +14 -0
- package/build/cli/commands/index.d.ts.map +1 -0
- package/build/cli/commands/index.js +27 -0
- package/build/cli/commands/index.js.map +1 -0
- package/build/cli/commands/pull-request-commands.d.ts +7 -0
- package/build/cli/commands/pull-request-commands.d.ts.map +1 -0
- package/build/cli/commands/pull-request-commands.js +234 -0
- package/build/cli/commands/pull-request-commands.js.map +1 -0
- package/build/cli/commands/sync-commands.d.ts +7 -0
- package/build/cli/commands/sync-commands.d.ts.map +1 -0
- package/build/cli/commands/sync-commands.js +148 -0
- package/build/cli/commands/sync-commands.js.map +1 -0
- package/build/cli/commands/variable-group-commands.d.ts +7 -0
- package/build/cli/commands/variable-group-commands.d.ts.map +1 -0
- package/build/cli/commands/variable-group-commands.js +36 -0
- package/build/cli/commands/variable-group-commands.js.map +1 -0
- package/build/cli/commands/wiki-commands.d.ts +7 -0
- package/build/cli/commands/wiki-commands.d.ts.map +1 -0
- package/build/cli/commands/wiki-commands.js +152 -0
- package/build/cli/commands/wiki-commands.js.map +1 -0
- package/build/cli/commands/work-item-commands.d.ts +7 -0
- package/build/cli/commands/work-item-commands.d.ts.map +1 -0
- package/build/cli/commands/work-item-commands.js +169 -0
- package/build/cli/commands/work-item-commands.js.map +1 -0
- package/build/cli/output.d.ts +11 -0
- package/build/cli/output.d.ts.map +1 -0
- package/build/cli/output.js +10 -0
- package/build/cli/output.js.map +1 -0
- package/build/cli.d.ts +9 -0
- package/build/cli.d.ts.map +1 -0
- package/build/cli.js +27 -0
- package/build/cli.js.map +1 -0
- package/build/context-factory.d.ts +10 -0
- package/build/context-factory.d.ts.map +1 -0
- package/build/context-factory.js +61 -0
- package/build/context-factory.js.map +1 -0
- package/build/index.d.ts +9 -11
- package/build/index.d.ts.map +1 -1
- package/build/index.js +14 -1906
- package/build/index.js.map +1 -1
- package/build/models/api-types.d.ts +159 -0
- package/build/models/api-types.d.ts.map +1 -0
- package/build/models/api-types.js +5 -0
- package/build/models/api-types.js.map +1 -0
- package/build/models/index.d.ts +5 -0
- package/build/models/index.d.ts.map +1 -0
- package/build/models/index.js +5 -0
- package/build/models/index.js.map +1 -0
- package/build/prompts/index.d.ts +3 -0
- package/build/prompts/index.d.ts.map +1 -0
- package/build/prompts/index.js +83 -0
- package/build/prompts/index.js.map +1 -0
- package/build/prompts/templates.d.ts +8 -0
- package/build/prompts/templates.d.ts.map +1 -0
- package/build/prompts/templates.js +126 -0
- package/build/prompts/templates.js.map +1 -0
- package/build/services/build-service.d.ts +16 -0
- package/build/services/build-service.d.ts.map +1 -0
- package/build/services/build-service.js +195 -0
- package/build/services/build-service.js.map +1 -0
- package/build/services/configuration-service.d.ts +7 -0
- package/build/services/configuration-service.d.ts.map +1 -0
- package/build/services/configuration-service.js +24 -0
- package/build/services/configuration-service.js.map +1 -0
- package/build/services/index.d.ts +11 -0
- package/build/services/index.d.ts.map +1 -0
- package/build/services/index.js +11 -0
- package/build/services/index.js.map +1 -0
- package/build/services/pull-request-service.d.ts +29 -0
- package/build/services/pull-request-service.d.ts.map +1 -0
- package/build/services/pull-request-service.js +390 -0
- package/build/services/pull-request-service.js.map +1 -0
- package/build/services/sync-service.d.ts +19 -0
- package/build/services/sync-service.d.ts.map +1 -0
- package/build/services/sync-service.js +463 -0
- package/build/services/sync-service.js.map +1 -0
- package/build/services/variable-group-service.d.ts +11 -0
- package/build/services/variable-group-service.d.ts.map +1 -0
- package/build/services/variable-group-service.js +62 -0
- package/build/services/variable-group-service.js.map +1 -0
- package/build/services/wiki-service.d.ts +41 -0
- package/build/services/wiki-service.d.ts.map +1 -0
- package/build/services/wiki-service.js +346 -0
- package/build/services/wiki-service.js.map +1 -0
- package/build/services/work-item-service.d.ts +22 -0
- package/build/services/work-item-service.d.ts.map +1 -0
- package/build/services/work-item-service.js +285 -0
- package/build/services/work-item-service.js.map +1 -0
- package/build/sync/file-utils.d.ts +7 -5
- package/build/sync/file-utils.d.ts.map +1 -1
- package/build/sync/file-utils.js +17 -8
- package/build/sync/file-utils.js.map +1 -1
- package/build/sync/markdown-serializer.d.ts +19 -4
- package/build/sync/markdown-serializer.d.ts.map +1 -1
- package/build/sync/markdown-serializer.js +48 -31
- package/build/sync/markdown-serializer.js.map +1 -1
- package/build/tool-examples.d.ts +9 -8
- package/build/tool-examples.d.ts.map +1 -1
- package/build/tool-examples.js +29 -12
- package/build/tool-examples.js.map +1 -1
- package/build/tools/build-tools.d.ts +3 -0
- package/build/tools/build-tools.d.ts.map +1 -0
- package/build/tools/build-tools.js +56 -0
- package/build/tools/build-tools.js.map +1 -0
- package/build/tools/configuration-tools.d.ts +6 -0
- package/build/tools/configuration-tools.d.ts.map +1 -0
- package/build/tools/configuration-tools.js +30 -0
- package/build/tools/configuration-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 +30 -0
- package/build/tools/index.js.map +1 -0
- package/build/tools/pull-request-tools.d.ts +5 -0
- package/build/tools/pull-request-tools.d.ts.map +1 -0
- package/build/tools/pull-request-tools.js +227 -0
- package/build/tools/pull-request-tools.js.map +1 -0
- package/build/tools/sync-tools.d.ts +3 -0
- package/build/tools/sync-tools.d.ts.map +1 -0
- package/build/tools/sync-tools.js +146 -0
- package/build/tools/sync-tools.js.map +1 -0
- package/build/tools/variable-group-tools.d.ts +3 -0
- package/build/tools/variable-group-tools.d.ts.map +1 -0
- package/build/tools/variable-group-tools.js +32 -0
- package/build/tools/variable-group-tools.js.map +1 -0
- package/build/tools/wiki-tools.d.ts +3 -0
- package/build/tools/wiki-tools.d.ts.map +1 -0
- package/build/tools/wiki-tools.js +151 -0
- package/build/tools/wiki-tools.js.map +1 -0
- package/build/tools/work-item-tools.d.ts +3 -0
- package/build/tools/work-item-tools.d.ts.map +1 -0
- package/build/tools/work-item-tools.js +188 -0
- package/build/tools/work-item-tools.js.map +1 -0
- package/build/types.d.ts +23 -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 +5 -3
- package/build/AzureDevOpsService.d.ts +0 -489
- package/build/AzureDevOpsService.d.ts.map +0 -1
- package/build/AzureDevOpsService.js +0 -1558
- package/build/AzureDevOpsService.js.map +0 -1
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pull Request Tools - 6 read-only + 7 conditional write tools
|
|
3
|
+
*/
|
|
4
|
+
import { z } from 'zod';
|
|
5
|
+
import { descWithExamples, PR_BRANCH_REF_EXAMPLES, PR_MERGE_STRATEGY_EXAMPLES, PR_VOTE_EXAMPLES } from '../tool-examples.js';
|
|
6
|
+
export function registerPullRequestTools(server, ctx) {
|
|
7
|
+
// ========================================
|
|
8
|
+
// READ-ONLY TOOLS (always available)
|
|
9
|
+
// ========================================
|
|
10
|
+
server.tool("list-repositories", "List all Git repositories in an Azure DevOps project. Returns repository ID, name, default branch, and URLs.", { project: z.string().describe("The project name") }, async ({ project }) => {
|
|
11
|
+
try {
|
|
12
|
+
const result = await ctx.pullRequest.listRepositories(project);
|
|
13
|
+
return { content: [{ type: "text", text: `Repositories in project '${project}':\n\n${JSON.stringify(result, null, 2)}` }] };
|
|
14
|
+
}
|
|
15
|
+
catch (error) {
|
|
16
|
+
console.error("Error listing repositories:", error);
|
|
17
|
+
return { content: [{ type: "text", text: `Failed to list repositories: ${error.message}` }] };
|
|
18
|
+
}
|
|
19
|
+
});
|
|
20
|
+
server.tool("list-pull-requests", "List pull requests in a Git repository. Filter by status (active, completed, abandoned, all). Returns PR ID, title, author, branches, and review status.", {
|
|
21
|
+
project: z.string().describe("The project name"),
|
|
22
|
+
repositoryId: z.string().describe("Repository ID (GUID) or name"),
|
|
23
|
+
status: z.enum(["active", "completed", "abandoned", "all"]).optional().describe("Filter by PR status (default: active)"),
|
|
24
|
+
top: z.number().optional().describe("Maximum results (default: 25)"),
|
|
25
|
+
}, async ({ project, repositoryId, status, top }) => {
|
|
26
|
+
try {
|
|
27
|
+
const result = await ctx.pullRequest.listPullRequests(project, repositoryId, status || 'active', top || 25);
|
|
28
|
+
return { content: [{ type: "text", text: `Pull requests in '${repositoryId}':\n\n${JSON.stringify(result, null, 2)}` }] };
|
|
29
|
+
}
|
|
30
|
+
catch (error) {
|
|
31
|
+
console.error("Error listing pull requests:", error);
|
|
32
|
+
return { content: [{ type: "text", text: `Failed to list pull requests: ${error.message}` }] };
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
server.tool("get-pull-request", "Get details of a specific pull request including title, description, author, reviewers with votes, and merge status.", {
|
|
36
|
+
project: z.string().describe("The project name"),
|
|
37
|
+
repositoryId: z.string().describe("Repository ID (GUID) or name"),
|
|
38
|
+
pullRequestId: z.number().describe("The pull request ID"),
|
|
39
|
+
}, async ({ project, repositoryId, pullRequestId }) => {
|
|
40
|
+
try {
|
|
41
|
+
const result = await ctx.pullRequest.getPullRequest(project, repositoryId, pullRequestId);
|
|
42
|
+
return { content: [{ type: "text", text: `Pull request #${pullRequestId}:\n\n${JSON.stringify(result, null, 2)}` }] };
|
|
43
|
+
}
|
|
44
|
+
catch (error) {
|
|
45
|
+
console.error("Error getting pull request:", error);
|
|
46
|
+
return { content: [{ type: "text", text: `Failed to get pull request: ${error.message}` }] };
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
server.tool("get-pull-request-threads", "Get all comment threads and discussions on a pull request. Includes inline code comments with file paths and line numbers.", {
|
|
50
|
+
project: z.string().describe("The project name"),
|
|
51
|
+
repositoryId: z.string().describe("Repository ID (GUID) or name"),
|
|
52
|
+
pullRequestId: z.number().describe("The pull request ID"),
|
|
53
|
+
}, async ({ project, repositoryId, pullRequestId }) => {
|
|
54
|
+
try {
|
|
55
|
+
const result = await ctx.pullRequest.getPullRequestThreads(project, repositoryId, pullRequestId);
|
|
56
|
+
return { content: [{ type: "text", text: `Threads for PR #${pullRequestId}:\n\n${JSON.stringify(result, null, 2)}` }] };
|
|
57
|
+
}
|
|
58
|
+
catch (error) {
|
|
59
|
+
console.error("Error getting pull request threads:", error);
|
|
60
|
+
return { content: [{ type: "text", text: `Failed to get pull request threads: ${error.message}` }] };
|
|
61
|
+
}
|
|
62
|
+
});
|
|
63
|
+
server.tool("get-pull-request-commits", "Get all commits included in a pull request. Shows commit ID, message, author, and date.", {
|
|
64
|
+
project: z.string().describe("The project name"),
|
|
65
|
+
repositoryId: z.string().describe("Repository ID (GUID) or name"),
|
|
66
|
+
pullRequestId: z.number().describe("The pull request ID"),
|
|
67
|
+
}, async ({ project, repositoryId, pullRequestId }) => {
|
|
68
|
+
try {
|
|
69
|
+
const result = await ctx.pullRequest.getPullRequestCommits(project, repositoryId, pullRequestId);
|
|
70
|
+
return { content: [{ type: "text", text: `Commits for PR #${pullRequestId}:\n\n${JSON.stringify(result, null, 2)}` }] };
|
|
71
|
+
}
|
|
72
|
+
catch (error) {
|
|
73
|
+
console.error("Error getting pull request commits:", error);
|
|
74
|
+
return { content: [{ type: "text", text: `Failed to get pull request commits: ${error.message}` }] };
|
|
75
|
+
}
|
|
76
|
+
});
|
|
77
|
+
server.tool("get-pull-request-changes", "Get file changes (diffs) in a pull request. Shows added, modified, deleted, and renamed files with their paths.", {
|
|
78
|
+
project: z.string().describe("The project name"),
|
|
79
|
+
repositoryId: z.string().describe("Repository ID (GUID) or name"),
|
|
80
|
+
pullRequestId: z.number().describe("The pull request ID"),
|
|
81
|
+
iterationId: z.number().optional().describe("Iteration ID (default: latest)"),
|
|
82
|
+
}, async ({ project, repositoryId, pullRequestId, iterationId }) => {
|
|
83
|
+
try {
|
|
84
|
+
const result = await ctx.pullRequest.getPullRequestChanges(project, repositoryId, pullRequestId, iterationId);
|
|
85
|
+
return { content: [{ type: "text", text: `Changes for PR #${pullRequestId}:\n\n${JSON.stringify(result, null, 2)}` }] };
|
|
86
|
+
}
|
|
87
|
+
catch (error) {
|
|
88
|
+
console.error("Error getting pull request changes:", error);
|
|
89
|
+
return { content: [{ type: "text", text: `Failed to get pull request changes: ${error.message}` }] };
|
|
90
|
+
}
|
|
91
|
+
});
|
|
92
|
+
// ========================================
|
|
93
|
+
// WRITE TOOLS (conditional on AZUREDEVOPS_ENABLE_PR_WRITE)
|
|
94
|
+
// ========================================
|
|
95
|
+
const enablePullRequestWrite = process.env.AZUREDEVOPS_ENABLE_PR_WRITE === "true";
|
|
96
|
+
if (enablePullRequestWrite) {
|
|
97
|
+
server.tool("add-pull-request-thread", "Add a comment or code review feedback to a pull request. Supports both general comments and inline comments on specific files/lines. (requires AZUREDEVOPS_ENABLE_PR_WRITE=true)", {
|
|
98
|
+
project: z.string().describe("The project name"),
|
|
99
|
+
repositoryId: z.string().describe("Repository ID (GUID) or name"),
|
|
100
|
+
pullRequestId: z.number().describe("The pull request ID"),
|
|
101
|
+
content: z.string().describe("Comment content (markdown supported)"),
|
|
102
|
+
filePath: z.string().optional().describe("File path for inline comment (e.g., '/src/file.ts')"),
|
|
103
|
+
lineNumber: z.number().optional().describe("Line number for inline comment (right side of diff)"),
|
|
104
|
+
status: z.enum(["active", "fixed", "wontFix", "closed", "byDesign", "pending"]).optional().describe("Thread status (default: active)"),
|
|
105
|
+
}, async ({ project, repositoryId, pullRequestId, content, filePath, lineNumber, status }) => {
|
|
106
|
+
try {
|
|
107
|
+
const result = await ctx.pullRequest.addPullRequestThread(project, repositoryId, pullRequestId, content, filePath, lineNumber, status || 'active');
|
|
108
|
+
return { content: [{ type: "text", text: `Added comment to PR #${pullRequestId}:\n\n${JSON.stringify(result, null, 2)}` }] };
|
|
109
|
+
}
|
|
110
|
+
catch (error) {
|
|
111
|
+
console.error("Error adding pull request thread:", error);
|
|
112
|
+
return { content: [{ type: "text", text: `Failed to add pull request thread: ${error.message}` }] };
|
|
113
|
+
}
|
|
114
|
+
});
|
|
115
|
+
server.tool("create-pull-request", "Create a new pull request in a Git repository. (requires AZUREDEVOPS_ENABLE_PR_WRITE=true)", {
|
|
116
|
+
project: z.string().describe("The project name"),
|
|
117
|
+
repositoryId: z.string().describe("Repository ID (GUID) or name"),
|
|
118
|
+
sourceRefName: z.string().describe(descWithExamples("Source branch full ref name", PR_BRANCH_REF_EXAMPLES)),
|
|
119
|
+
targetRefName: z.string().describe(descWithExamples("Target branch full ref name", PR_BRANCH_REF_EXAMPLES)),
|
|
120
|
+
title: z.string().describe("Pull request title"),
|
|
121
|
+
description: z.string().optional().describe("Pull request description (markdown supported)"),
|
|
122
|
+
reviewerIds: z.array(z.string()).optional().describe("Reviewer GUIDs or unique names"),
|
|
123
|
+
isDraft: z.boolean().optional().describe("Create as draft PR (default: false)"),
|
|
124
|
+
}, async ({ project, repositoryId, sourceRefName, targetRefName, title, description, reviewerIds, isDraft }) => {
|
|
125
|
+
try {
|
|
126
|
+
const result = await ctx.pullRequest.createPullRequest(project, repositoryId, sourceRefName, targetRefName, title, description, reviewerIds, isDraft);
|
|
127
|
+
return { content: [{ type: "text", text: `Created PR #${result.pullRequestId}:\n\n${JSON.stringify(result, null, 2)}` }] };
|
|
128
|
+
}
|
|
129
|
+
catch (error) {
|
|
130
|
+
console.error("Error creating pull request:", error);
|
|
131
|
+
return { content: [{ type: "text", text: `Failed to create pull request: ${error.message}` }] };
|
|
132
|
+
}
|
|
133
|
+
});
|
|
134
|
+
server.tool("update-pull-request", "Update a pull request's title, description, status, or draft state. (requires AZUREDEVOPS_ENABLE_PR_WRITE=true)", {
|
|
135
|
+
project: z.string().describe("The project name"),
|
|
136
|
+
repositoryId: z.string().describe("Repository ID (GUID) or name"),
|
|
137
|
+
pullRequestId: z.number().describe("The pull request ID"),
|
|
138
|
+
title: z.string().optional().describe("New title"),
|
|
139
|
+
description: z.string().optional().describe("New description"),
|
|
140
|
+
status: z.enum(["abandoned", "active"]).optional().describe("Set PR status (abandoned or active)"),
|
|
141
|
+
isDraft: z.boolean().optional().describe("Set draft state"),
|
|
142
|
+
}, async ({ project, repositoryId, pullRequestId, title, description, status, isDraft }) => {
|
|
143
|
+
try {
|
|
144
|
+
const result = await ctx.pullRequest.updatePullRequest(project, repositoryId, pullRequestId, { title, description, status, isDraft });
|
|
145
|
+
return { content: [{ type: "text", text: `Updated PR #${pullRequestId}:\n\n${JSON.stringify(result, null, 2)}` }] };
|
|
146
|
+
}
|
|
147
|
+
catch (error) {
|
|
148
|
+
console.error("Error updating pull request:", error);
|
|
149
|
+
return { content: [{ type: "text", text: `Failed to update pull request: ${error.message}` }] };
|
|
150
|
+
}
|
|
151
|
+
});
|
|
152
|
+
server.tool("complete-pull-request", "Complete (merge) a pull request with configurable merge strategy. (requires AZUREDEVOPS_ENABLE_PR_WRITE=true)", {
|
|
153
|
+
project: z.string().describe("The project name"),
|
|
154
|
+
repositoryId: z.string().describe("Repository ID (GUID) or name"),
|
|
155
|
+
pullRequestId: z.number().describe("The pull request ID"),
|
|
156
|
+
mergeStrategy: z.enum(["squash", "noFastForward", "rebase", "rebaseMerge"]).optional().describe(descWithExamples("Merge strategy (default: squash)", PR_MERGE_STRATEGY_EXAMPLES)),
|
|
157
|
+
deleteSourceBranch: z.boolean().optional().describe("Delete source branch after merge (default: true)"),
|
|
158
|
+
transitionWorkItems: z.boolean().optional().describe("Transition linked work items (default: true)"),
|
|
159
|
+
mergeCommitMessage: z.string().optional().describe("Custom merge commit message"),
|
|
160
|
+
}, async ({ project, repositoryId, pullRequestId, mergeStrategy, deleteSourceBranch, transitionWorkItems, mergeCommitMessage }) => {
|
|
161
|
+
try {
|
|
162
|
+
const result = await ctx.pullRequest.completePullRequest(project, repositoryId, pullRequestId, mergeStrategy || 'squash', deleteSourceBranch !== undefined ? deleteSourceBranch : true, transitionWorkItems !== undefined ? transitionWorkItems : true, mergeCommitMessage);
|
|
163
|
+
return { content: [{ type: "text", text: `Completed PR #${pullRequestId}:\n\n${JSON.stringify(result, null, 2)}` }] };
|
|
164
|
+
}
|
|
165
|
+
catch (error) {
|
|
166
|
+
console.error("Error completing pull request:", error);
|
|
167
|
+
return { content: [{ type: "text", text: `Failed to complete pull request: ${error.message}` }] };
|
|
168
|
+
}
|
|
169
|
+
});
|
|
170
|
+
server.tool("add-pr-reviewer", "Add or remove a reviewer from a pull request. (requires AZUREDEVOPS_ENABLE_PR_WRITE=true)", {
|
|
171
|
+
project: z.string().describe("The project name"),
|
|
172
|
+
repositoryId: z.string().describe("Repository ID (GUID) or name"),
|
|
173
|
+
pullRequestId: z.number().describe("The pull request ID"),
|
|
174
|
+
reviewerId: z.string().describe("Reviewer GUID or unique name"),
|
|
175
|
+
isRequired: z.boolean().optional().describe("Whether the reviewer is required (default: false)"),
|
|
176
|
+
remove: z.boolean().optional().describe("Set to true to remove the reviewer instead of adding"),
|
|
177
|
+
}, async ({ project, repositoryId, pullRequestId, reviewerId, isRequired, remove }) => {
|
|
178
|
+
try {
|
|
179
|
+
const result = await ctx.pullRequest.addOrRemovePrReviewer(project, repositoryId, pullRequestId, reviewerId, isRequired, remove);
|
|
180
|
+
return { content: [{ type: "text", text: `${remove ? 'Removed' : 'Added'} reviewer on PR #${pullRequestId}:\n\n${JSON.stringify(result, null, 2)}` }] };
|
|
181
|
+
}
|
|
182
|
+
catch (error) {
|
|
183
|
+
console.error("Error managing PR reviewer:", error);
|
|
184
|
+
return { content: [{ type: "text", text: `Failed to manage PR reviewer: ${error.message}` }] };
|
|
185
|
+
}
|
|
186
|
+
});
|
|
187
|
+
server.tool("vote-pull-request", "Submit a vote (approve, reject, etc.) on a pull request. Defaults to authenticated user. (requires AZUREDEVOPS_ENABLE_PR_WRITE=true)", {
|
|
188
|
+
project: z.string().describe("The project name"),
|
|
189
|
+
repositoryId: z.string().describe("Repository ID (GUID) or name"),
|
|
190
|
+
pullRequestId: z.number().describe("The pull request ID"),
|
|
191
|
+
vote: z.enum(["approve", "approveWithSuggestions", "noResponse", "waitForAuthor", "reject"]).describe(descWithExamples("Vote to submit", PR_VOTE_EXAMPLES)),
|
|
192
|
+
reviewerId: z.string().optional().describe("Reviewer GUID (defaults to authenticated user)"),
|
|
193
|
+
}, async ({ project, repositoryId, pullRequestId, vote, reviewerId }) => {
|
|
194
|
+
try {
|
|
195
|
+
const result = await ctx.pullRequest.votePullRequest(project, repositoryId, pullRequestId, vote, reviewerId);
|
|
196
|
+
return { content: [{ type: "text", text: `Voted '${vote}' on PR #${pullRequestId}:\n\n${JSON.stringify(result, null, 2)}` }] };
|
|
197
|
+
}
|
|
198
|
+
catch (error) {
|
|
199
|
+
console.error("Error voting on pull request:", error);
|
|
200
|
+
return { content: [{ type: "text", text: `Failed to vote on pull request: ${error.message}` }] };
|
|
201
|
+
}
|
|
202
|
+
});
|
|
203
|
+
server.tool("reply-to-pr-thread", "Reply to a pull request comment thread and/or update thread status (e.g., resolve). (requires AZUREDEVOPS_ENABLE_PR_WRITE=true)", {
|
|
204
|
+
project: z.string().describe("The project name"),
|
|
205
|
+
repositoryId: z.string().describe("Repository ID (GUID) or name"),
|
|
206
|
+
pullRequestId: z.number().describe("The pull request ID"),
|
|
207
|
+
threadId: z.number().describe("The thread ID to reply to"),
|
|
208
|
+
content: z.string().optional().describe("Reply text (markdown supported)"),
|
|
209
|
+
status: z.enum(["active", "fixed", "wontFix", "closed", "byDesign", "pending"]).optional().describe("Update thread status (e.g., 'fixed' to resolve)"),
|
|
210
|
+
}, async ({ project, repositoryId, pullRequestId, threadId, content, status }) => {
|
|
211
|
+
try {
|
|
212
|
+
const result = await ctx.pullRequest.replyToPrThread(project, repositoryId, pullRequestId, threadId, content, status);
|
|
213
|
+
return { content: [{ type: "text", text: `Reply to thread #${threadId} on PR #${pullRequestId}:\n\n${JSON.stringify(result, null, 2)}` }] };
|
|
214
|
+
}
|
|
215
|
+
catch (error) {
|
|
216
|
+
console.error("Error replying to PR thread:", error);
|
|
217
|
+
return { content: [{ type: "text", text: `Failed to reply to PR thread: ${error.message}` }] };
|
|
218
|
+
}
|
|
219
|
+
});
|
|
220
|
+
}
|
|
221
|
+
return;
|
|
222
|
+
}
|
|
223
|
+
/** Returns the count of PR write tools registered (for logging) */
|
|
224
|
+
export function getPrWriteToolCount() {
|
|
225
|
+
return process.env.AZUREDEVOPS_ENABLE_PR_WRITE === "true" ? 7 : 0;
|
|
226
|
+
}
|
|
227
|
+
//# sourceMappingURL=pull-request-tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pull-request-tools.js","sourceRoot":"","sources":["../../src/tools/pull-request-tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync-tools.d.ts","sourceRoot":"","sources":["../../src/tools/sync-tools.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,cAAc,GAAG,IAAI,CAiMxE"}
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Sync Tools - 8 tools for work item sync and task sync operations
|
|
3
|
+
*/
|
|
4
|
+
import { z } from 'zod';
|
|
5
|
+
import { descWithExamples, SYNC_TO_FILE_EXAMPLES, SYNC_FROM_FILE_EXAMPLES, SYNC_TASKS_TO_FILE_EXAMPLES, SYNC_TASKS_FROM_FILE_EXAMPLES, CREATE_WORK_ITEM_FILE_EXAMPLES, } from '../tool-examples.js';
|
|
6
|
+
export function registerSyncTools(server, ctx) {
|
|
7
|
+
server.tool("sync-work-item-to-file", descWithExamples("Download work item(s) from ADO and save as local markdown file(s). Token-efficient for editing. Auto-converts HTML fields to markdown. Can also pull all child work items under a parent (e.g., all User Stories under a Feature).", SYNC_TO_FILE_EXAMPLES), {
|
|
8
|
+
project: z.string().describe("The project name"),
|
|
9
|
+
workItemIds: z.array(z.number()).default([]).describe("Work item IDs to pull (optional if using parentId)"),
|
|
10
|
+
parentId: z.number().optional().describe("Pull all child work items of this parent (e.g., Feature ID to pull all User Stories)"),
|
|
11
|
+
childType: z.string().optional().describe("Filter by work item type when using parentId (default: 'User Story'). Common values: 'User Story', 'Bug', 'Task'"),
|
|
12
|
+
folder: z.string().optional().describe("Override folder path (default: docs/user-stories or AZUREDEVOPS_SYNC_FOLDER)"),
|
|
13
|
+
includeComments: z.boolean().optional().describe("Also save comments to {id}-comments.md (default: false)"),
|
|
14
|
+
skipAutoConvert: z.boolean().optional().describe("Skip automatic HTML-to-markdown conversion. Only use when explicitly requested. Default: false (auto-convert enabled)"),
|
|
15
|
+
}, async ({ project, workItemIds, parentId, childType, folder, includeComments, skipAutoConvert }) => {
|
|
16
|
+
try {
|
|
17
|
+
const result = await ctx.sync.syncWorkItemsToFile(project, workItemIds || [], parentId, childType, folder, includeComments, skipAutoConvert);
|
|
18
|
+
if (result.message) {
|
|
19
|
+
return { content: [{ type: "text", text: result.message }] };
|
|
20
|
+
}
|
|
21
|
+
return {
|
|
22
|
+
content: [{ type: "text", text: `Synced ${result.pulled.length} work item(s) to local files:\n\n${JSON.stringify(result, null, 2)}` }],
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
catch (error) {
|
|
26
|
+
console.error("Error syncing work items to files:", error);
|
|
27
|
+
return { content: [{ type: "text", text: `Failed to sync work items: ${error.message}` }] };
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
server.tool("sync-work-item-from-file", descWithExamples("Upload local markdown changes back to ADO. Auto-detects new_*.md files and creates them as new work items. Auto-converts HTML fields to markdown. Requires AZUREDEVOPS_ENABLE_WORK_ITEM_WRITE=true.", SYNC_FROM_FILE_EXAMPLES), {
|
|
31
|
+
project: z.string().describe("The project name"),
|
|
32
|
+
workItemIds: z.array(z.number()).default([]).describe("Work item IDs to push (optional - new_*.md files are auto-detected)"),
|
|
33
|
+
folder: z.string().optional().describe("Override folder path (default: docs/user-stories or AZUREDEVOPS_SYNC_FOLDER)"),
|
|
34
|
+
skipAutoConvert: z.boolean().optional().describe("Skip automatic HTML-to-markdown conversion. Only use when explicitly requested. Default: false (auto-convert enabled)"),
|
|
35
|
+
}, async ({ project, workItemIds, folder, skipAutoConvert }) => {
|
|
36
|
+
try {
|
|
37
|
+
const result = await ctx.sync.syncWorkItemsFromFile(project, workItemIds || [], folder, skipAutoConvert);
|
|
38
|
+
const summary = [];
|
|
39
|
+
if (result.created.length > 0)
|
|
40
|
+
summary.push(`Created ${result.created.length} new work item(s)`);
|
|
41
|
+
if (result.pushed.length > 0)
|
|
42
|
+
summary.push(`Updated ${result.pushed.length} work item(s)`);
|
|
43
|
+
if (result.partial.length > 0)
|
|
44
|
+
summary.push(`Partially updated ${result.partial.length} work item(s)`);
|
|
45
|
+
if (result.failed.length > 0)
|
|
46
|
+
summary.push(`Failed: ${result.failed.length}`);
|
|
47
|
+
return {
|
|
48
|
+
content: [{ type: "text", text: `${summary.join(', ')}:\n\n${JSON.stringify(result, null, 2)}` }],
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
catch (error) {
|
|
52
|
+
console.error("Error syncing work items from files:", error);
|
|
53
|
+
return { content: [{ type: "text", text: `Failed to push work items: ${error.message}` }] };
|
|
54
|
+
}
|
|
55
|
+
});
|
|
56
|
+
server.tool("check-work-item-markdown", "Check if work item fields are markdown (required for sync) or HTML format.", {
|
|
57
|
+
project: z.string().describe("The project name"),
|
|
58
|
+
workItemIds: z.array(z.number()).describe("Work item IDs to check"),
|
|
59
|
+
}, async ({ project, workItemIds }) => {
|
|
60
|
+
try {
|
|
61
|
+
const result = await ctx.sync.checkWorkItemMarkdown(project, workItemIds);
|
|
62
|
+
return { content: [{ type: "text", text: `Work item format check:\n\n${JSON.stringify(result, null, 2)}` }] };
|
|
63
|
+
}
|
|
64
|
+
catch (error) {
|
|
65
|
+
console.error("Error checking work item formats:", error);
|
|
66
|
+
return { content: [{ type: "text", text: `Failed to check work item formats: ${error.message}` }] };
|
|
67
|
+
}
|
|
68
|
+
});
|
|
69
|
+
server.tool("list-synced-work-items", "List work items that have been synced to local markdown files.", {
|
|
70
|
+
folder: z.string().optional().describe("Override folder path (default: docs/user-stories or AZUREDEVOPS_SYNC_FOLDER)"),
|
|
71
|
+
}, async ({ folder }) => {
|
|
72
|
+
try {
|
|
73
|
+
const result = await ctx.sync.listSyncedWorkItems(folder);
|
|
74
|
+
return { content: [{ type: "text", text: `Synced work items in ${result.folder}:\n\n${JSON.stringify(result, null, 2)}` }] };
|
|
75
|
+
}
|
|
76
|
+
catch (error) {
|
|
77
|
+
console.error("Error listing synced work items:", error);
|
|
78
|
+
return { content: [{ type: "text", text: `Failed to list synced work items: ${error.message}` }] };
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
server.tool("create-work-item-file", descWithExamples("Create a new work item template file locally for any type (User Story, Bug, Feature, Epic, Task, etc.). The file can be edited and then pushed to ADO using sync-work-item-from-file. Parent is optional - omit for standalone items like Features or Epics.", CREATE_WORK_ITEM_FILE_EXAMPLES), {
|
|
82
|
+
project: z.string().describe("The project name"),
|
|
83
|
+
parentId: z.number().optional().describe("Parent work item ID. Omit for standalone items (Features, Epics)"),
|
|
84
|
+
workItemType: z.string().default("User Story").describe("Work item type: 'User Story', 'Bug', 'Feature', 'Epic', 'Task', etc."),
|
|
85
|
+
folder: z.string().optional().describe("Override folder path (default: docs/user-stories or AZUREDEVOPS_SYNC_FOLDER)"),
|
|
86
|
+
}, async ({ project, parentId, workItemType, folder }) => {
|
|
87
|
+
try {
|
|
88
|
+
const result = await ctx.sync.createWorkItemFile(project, parentId, workItemType || 'User Story', folder);
|
|
89
|
+
return { content: [{ type: "text", text: `Created new ${workItemType || 'User Story'} template:\n\n${JSON.stringify(result, null, 2)}` }] };
|
|
90
|
+
}
|
|
91
|
+
catch (error) {
|
|
92
|
+
console.error("Error creating work item file:", error);
|
|
93
|
+
return { content: [{ type: "text", text: `Failed to create work item file: ${error.message}` }] };
|
|
94
|
+
}
|
|
95
|
+
});
|
|
96
|
+
// Backward-compatible alias
|
|
97
|
+
server.tool("create-user-story-file", "Create a new user story template file locally. Alias for create-work-item-file with type='User Story'. The file can be edited and then pushed to ADO using sync-work-item-from-file.", {
|
|
98
|
+
project: z.string().describe("The project name"),
|
|
99
|
+
parentId: z.number().describe("Parent Feature ID - the new user story will be created under this feature"),
|
|
100
|
+
folder: z.string().optional().describe("Override folder path (default: docs/user-stories or AZUREDEVOPS_SYNC_FOLDER)"),
|
|
101
|
+
}, async ({ project, parentId, folder }) => {
|
|
102
|
+
try {
|
|
103
|
+
const result = await ctx.sync.createWorkItemFile(project, parentId, 'User Story', folder);
|
|
104
|
+
return { content: [{ type: "text", text: `Created new User Story template:\n\n${JSON.stringify(result, null, 2)}` }] };
|
|
105
|
+
}
|
|
106
|
+
catch (error) {
|
|
107
|
+
console.error("Error creating user story file:", error);
|
|
108
|
+
return { content: [{ type: "text", text: `Failed to create user story file: ${error.message}` }] };
|
|
109
|
+
}
|
|
110
|
+
});
|
|
111
|
+
server.tool("sync-tasks-to-file", descWithExamples("Download all tasks under a parent work item (User Story) to a local markdown file. Auto-converts HTML descriptions to markdown. Supports pulling tasks for multiple parents at once.", SYNC_TASKS_TO_FILE_EXAMPLES), {
|
|
112
|
+
project: z.string().describe("The project name"),
|
|
113
|
+
parentIds: z.array(z.number()).describe("Parent work item IDs (User Stories) to fetch tasks for"),
|
|
114
|
+
folder: z.string().optional().describe("Override folder path (default: docs/user-stories or AZUREDEVOPS_SYNC_FOLDER)"),
|
|
115
|
+
skipAutoConvert: z.boolean().optional().describe("Skip automatic HTML-to-markdown conversion for task descriptions. Only use when explicitly requested. Default: false"),
|
|
116
|
+
}, async ({ project, parentIds, folder, skipAutoConvert }) => {
|
|
117
|
+
try {
|
|
118
|
+
const result = await ctx.sync.syncTasksToFile(project, parentIds, folder, skipAutoConvert);
|
|
119
|
+
return {
|
|
120
|
+
content: [{ type: "text", text: `Synced tasks for ${result.pulled.length} parent(s) to local files:\n\n${JSON.stringify(result, null, 2)}` }],
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
catch (error) {
|
|
124
|
+
console.error("Error syncing tasks to files:", error);
|
|
125
|
+
return { content: [{ type: "text", text: `Failed to sync tasks: ${error.message}` }] };
|
|
126
|
+
}
|
|
127
|
+
});
|
|
128
|
+
server.tool("sync-tasks-from-file", descWithExamples("Push local task changes back to ADO with upsert semantics. Existing tasks (## Task #ID) are updated, new tasks (## NEW TASK) are created. Auto-converts HTML fields to markdown. Requires AZUREDEVOPS_ENABLE_WORK_ITEM_WRITE=true.", SYNC_TASKS_FROM_FILE_EXAMPLES), {
|
|
129
|
+
project: z.string().describe("The project name"),
|
|
130
|
+
parentIds: z.array(z.number()).describe("Parent work item IDs to sync tasks for"),
|
|
131
|
+
folder: z.string().optional().describe("Override folder path (default: docs/user-stories or AZUREDEVOPS_SYNC_FOLDER)"),
|
|
132
|
+
skipAutoConvert: z.boolean().optional().describe("Skip automatic HTML-to-markdown conversion for task descriptions. Only use when explicitly requested. Default: false"),
|
|
133
|
+
}, async ({ project, parentIds, folder, skipAutoConvert }) => {
|
|
134
|
+
try {
|
|
135
|
+
const result = await ctx.sync.syncTasksFromFile(project, parentIds, folder, skipAutoConvert);
|
|
136
|
+
return {
|
|
137
|
+
content: [{ type: "text", text: `Pushed tasks to ADO (${result.updated.length} updated, ${result.created.length} created):\n\n${JSON.stringify(result, null, 2)}` }],
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
catch (error) {
|
|
141
|
+
console.error("Error syncing tasks from files:", error);
|
|
142
|
+
return { content: [{ type: "text", text: `Failed to push tasks: ${error.message}` }] };
|
|
143
|
+
}
|
|
144
|
+
});
|
|
145
|
+
}
|
|
146
|
+
//# sourceMappingURL=sync-tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync-tools.js","sourceRoot":"","sources":["../../src/tools/sync-tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"variable-group-tools.d.ts","sourceRoot":"","sources":["../../src/tools/variable-group-tools.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,cAAc,GAAG,IAAI,CAmCjF"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Variable Group Tools - 2 tools for variable group operations
|
|
3
|
+
*/
|
|
4
|
+
import { z } from 'zod';
|
|
5
|
+
export function registerVariableGroupTools(server, ctx) {
|
|
6
|
+
server.tool("list-variable-groups", "List all variable groups in an Azure DevOps project. Variable groups store values and secrets used in pipelines.", {
|
|
7
|
+
project: z.string().describe("The project name"),
|
|
8
|
+
}, async ({ project }) => {
|
|
9
|
+
try {
|
|
10
|
+
const result = await ctx.variableGroup.getVariableGroups(project);
|
|
11
|
+
return { content: [{ type: "text", text: `Variable groups in project '${project}':\n\n${JSON.stringify(result, null, 2)}` }] };
|
|
12
|
+
}
|
|
13
|
+
catch (error) {
|
|
14
|
+
console.error("Error listing variable groups:", error);
|
|
15
|
+
return { content: [{ type: "text", text: `Failed to list variable groups: ${error.message}` }] };
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
server.tool("get-variable-group", "Get a specific variable group by ID from Azure DevOps. Returns all variables (secrets are masked).", {
|
|
19
|
+
project: z.string().describe("The project name"),
|
|
20
|
+
groupId: z.number().describe("The variable group ID"),
|
|
21
|
+
}, async ({ project, groupId }) => {
|
|
22
|
+
try {
|
|
23
|
+
const result = await ctx.variableGroup.getVariableGroup(project, groupId);
|
|
24
|
+
return { content: [{ type: "text", text: `Variable group ${groupId} in project '${project}':\n\n${JSON.stringify(result, null, 2)}` }] };
|
|
25
|
+
}
|
|
26
|
+
catch (error) {
|
|
27
|
+
console.error("Error getting variable group:", error);
|
|
28
|
+
return { content: [{ type: "text", text: `Failed to get variable group: ${error.message}` }] };
|
|
29
|
+
}
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=variable-group-tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"variable-group-tools.js","sourceRoot":"","sources":["../../src/tools/variable-group-tools.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,MAAM,UAAU,0BAA0B,CAAC,MAAW,EAAE,GAAmB;IACzE,MAAM,CAAC,IAAI,CACT,sBAAsB,EACtB,kHAAkH,EAClH;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,aAAa,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;YAClE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,+BAA+B,OAAO,SAAS,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,gCAAgC,EAAE,KAAK,CAAC,CAAC;YACvD,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,mCAAmC,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC;QACnG,CAAC;IACH,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,oBAAoB,EACpB,oGAAoG,EACpG;QACE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC;QAChD,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;KACtD,EACD,KAAK,EAAE,EAAE,OAAO,EAAE,OAAO,EAAO,EAAE,EAAE;QAClC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,aAAa,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAC1E,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAkB,OAAO,gBAAgB,OAAO,SAAS,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;QAC3I,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO,CAAC,KAAK,CAAC,+BAA+B,EAAE,KAAK,CAAC,CAAC;YACtD,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,iCAAiC,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC;QACjG,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wiki-tools.d.ts","sourceRoot":"","sources":["../../src/tools/wiki-tools.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,cAAc,GAAG,IAAI,CAmMxE"}
|