@mcp-consultant-tools/azure-devops 28.0.0-beta.7 → 28.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (98) hide show
  1. package/build/azure-devops-client.d.ts +8 -0
  2. package/build/azure-devops-client.d.ts.map +1 -1
  3. package/build/azure-devops-client.js +47 -0
  4. package/build/azure-devops-client.js.map +1 -1
  5. package/build/cli/commands/build-commands.d.ts +7 -0
  6. package/build/cli/commands/build-commands.d.ts.map +1 -0
  7. package/build/cli/commands/build-commands.js +59 -0
  8. package/build/cli/commands/build-commands.js.map +1 -0
  9. package/build/cli/commands/checklist-commands.d.ts +7 -0
  10. package/build/cli/commands/checklist-commands.d.ts.map +1 -0
  11. package/build/cli/commands/checklist-commands.js +141 -0
  12. package/build/cli/commands/checklist-commands.js.map +1 -0
  13. package/build/cli/commands/configuration-commands.d.ts +7 -0
  14. package/build/cli/commands/configuration-commands.d.ts.map +1 -0
  15. package/build/cli/commands/configuration-commands.js +24 -0
  16. package/build/cli/commands/configuration-commands.js.map +1 -0
  17. package/build/cli/commands/index.d.ts +15 -0
  18. package/build/cli/commands/index.d.ts.map +1 -0
  19. package/build/cli/commands/index.js +30 -0
  20. package/build/cli/commands/index.js.map +1 -0
  21. package/build/cli/commands/pull-request-commands.d.ts +7 -0
  22. package/build/cli/commands/pull-request-commands.d.ts.map +1 -0
  23. package/build/cli/commands/pull-request-commands.js +234 -0
  24. package/build/cli/commands/pull-request-commands.js.map +1 -0
  25. package/build/cli/commands/sync-commands.d.ts +7 -0
  26. package/build/cli/commands/sync-commands.d.ts.map +1 -0
  27. package/build/cli/commands/sync-commands.js +148 -0
  28. package/build/cli/commands/sync-commands.js.map +1 -0
  29. package/build/cli/commands/variable-group-commands.d.ts +7 -0
  30. package/build/cli/commands/variable-group-commands.d.ts.map +1 -0
  31. package/build/cli/commands/variable-group-commands.js +36 -0
  32. package/build/cli/commands/variable-group-commands.js.map +1 -0
  33. package/build/cli/commands/wiki-commands.d.ts +7 -0
  34. package/build/cli/commands/wiki-commands.d.ts.map +1 -0
  35. package/build/cli/commands/wiki-commands.js +152 -0
  36. package/build/cli/commands/wiki-commands.js.map +1 -0
  37. package/build/cli/commands/work-item-commands.d.ts +7 -0
  38. package/build/cli/commands/work-item-commands.d.ts.map +1 -0
  39. package/build/cli/commands/work-item-commands.js +169 -0
  40. package/build/cli/commands/work-item-commands.js.map +1 -0
  41. package/build/cli/output.d.ts +11 -0
  42. package/build/cli/output.d.ts.map +1 -0
  43. package/build/cli/output.js +10 -0
  44. package/build/cli/output.js.map +1 -0
  45. package/build/cli.d.ts +9 -0
  46. package/build/cli.d.ts.map +1 -0
  47. package/build/cli.js +27 -0
  48. package/build/cli.js.map +1 -0
  49. package/build/context-factory.d.ts +10 -0
  50. package/build/context-factory.d.ts.map +1 -0
  51. package/build/context-factory.js +63 -0
  52. package/build/context-factory.js.map +1 -0
  53. package/build/index.d.ts +1 -0
  54. package/build/index.d.ts.map +1 -1
  55. package/build/index.js +20 -53
  56. package/build/index.js.map +1 -1
  57. package/build/models/api-types.d.ts +62 -0
  58. package/build/models/api-types.d.ts.map +1 -1
  59. package/build/services/checklist-service.d.ts +42 -0
  60. package/build/services/checklist-service.d.ts.map +1 -0
  61. package/build/services/checklist-service.js +326 -0
  62. package/build/services/checklist-service.js.map +1 -0
  63. package/build/services/index.d.ts +1 -0
  64. package/build/services/index.d.ts.map +1 -1
  65. package/build/services/index.js +1 -0
  66. package/build/services/index.js.map +1 -1
  67. package/build/services/sync-service.d.ts.map +1 -1
  68. package/build/services/sync-service.js +28 -4
  69. package/build/services/sync-service.js.map +1 -1
  70. package/build/services/work-item-service.d.ts.map +1 -1
  71. package/build/services/work-item-service.js +2 -1
  72. package/build/services/work-item-service.js.map +1 -1
  73. package/build/sync/markdown-serializer.d.ts +15 -1
  74. package/build/sync/markdown-serializer.d.ts.map +1 -1
  75. package/build/sync/markdown-serializer.js +121 -56
  76. package/build/sync/markdown-serializer.js.map +1 -1
  77. package/build/sync/task-serializer.d.ts.map +1 -1
  78. package/build/sync/task-serializer.js +21 -12
  79. package/build/sync/task-serializer.js.map +1 -1
  80. package/build/tool-examples.d.ts +16 -0
  81. package/build/tool-examples.d.ts.map +1 -1
  82. package/build/tool-examples.js +34 -0
  83. package/build/tool-examples.js.map +1 -1
  84. package/build/tools/checklist-tools.d.ts +3 -0
  85. package/build/tools/checklist-tools.d.ts.map +1 -0
  86. package/build/tools/checklist-tools.js +197 -0
  87. package/build/tools/checklist-tools.js.map +1 -0
  88. package/build/tools/index.d.ts +1 -0
  89. package/build/tools/index.d.ts.map +1 -1
  90. package/build/tools/index.js +5 -2
  91. package/build/tools/index.js.map +1 -1
  92. package/build/tools/work-item-tools.d.ts.map +1 -1
  93. package/build/tools/work-item-tools.js +52 -24
  94. package/build/tools/work-item-tools.js.map +1 -1
  95. package/build/types.d.ts +2 -0
  96. package/build/types.d.ts.map +1 -1
  97. package/build/ui/work-items-app.html +236 -0
  98. package/package.json +10 -5
@@ -0,0 +1,234 @@
1
+ /**
2
+ * Pull Request CLI Commands - 6 read-only + 7 write commands
3
+ */
4
+ import { getGlobalFlags, handleCliError } from '@mcp-consultant-tools/core';
5
+ import { outputResult } from '../output.js';
6
+ export function registerPullRequestCommands(program, ctx) {
7
+ const pr = program.command('pr').description('Pull request operations');
8
+ // --- Read-only commands ---
9
+ pr
10
+ .command('list-repos')
11
+ .description('List all Git repositories in a project')
12
+ .argument('<project>', 'Project name')
13
+ .action(async (project) => {
14
+ try {
15
+ const result = await ctx.pullRequest.listRepositories(project);
16
+ outputResult({ fileName: `repos-${project}`, data: result, summary: `Found ${Array.isArray(result) ? result.length : 0} repositories in '${project}'` }, getGlobalFlags(program));
17
+ }
18
+ catch (error) {
19
+ handleCliError(error, 'list repositories');
20
+ }
21
+ });
22
+ pr
23
+ .command('list')
24
+ .description('List pull requests in a repository')
25
+ .argument('<project>', 'Project name')
26
+ .argument('<repositoryId>', 'Repository ID or name')
27
+ .option('-s, --status <status>', 'Filter by status: active, completed, abandoned, all', 'active')
28
+ .option('-t, --top <n>', 'Maximum results', '25')
29
+ .action(async (project, repositoryId, opts) => {
30
+ try {
31
+ const result = await ctx.pullRequest.listPullRequests(project, repositoryId, opts.status, parseInt(opts.top));
32
+ outputResult({ fileName: `prs-${repositoryId}`, data: result, summary: `Pull requests in '${repositoryId}' (${opts.status})` }, getGlobalFlags(program));
33
+ }
34
+ catch (error) {
35
+ handleCliError(error, 'list pull requests');
36
+ }
37
+ });
38
+ pr
39
+ .command('get')
40
+ .description('Get pull request details')
41
+ .argument('<project>', 'Project name')
42
+ .argument('<repositoryId>', 'Repository ID or name')
43
+ .argument('<pullRequestId>', 'Pull request ID')
44
+ .action(async (project, repositoryId, pullRequestId) => {
45
+ try {
46
+ const result = await ctx.pullRequest.getPullRequest(project, repositoryId, parseInt(pullRequestId));
47
+ outputResult({ fileName: `pr-${pullRequestId}`, data: result, summary: `Pull request #${pullRequestId}` }, getGlobalFlags(program));
48
+ }
49
+ catch (error) {
50
+ handleCliError(error, 'get pull request');
51
+ }
52
+ });
53
+ pr
54
+ .command('threads')
55
+ .description('Get comment threads on a pull request')
56
+ .argument('<project>', 'Project name')
57
+ .argument('<repositoryId>', 'Repository ID or name')
58
+ .argument('<pullRequestId>', 'Pull request ID')
59
+ .action(async (project, repositoryId, pullRequestId) => {
60
+ try {
61
+ const result = await ctx.pullRequest.getPullRequestThreads(project, repositoryId, parseInt(pullRequestId));
62
+ outputResult({ fileName: `pr-${pullRequestId}-threads`, data: result, summary: `Threads for PR #${pullRequestId}` }, getGlobalFlags(program));
63
+ }
64
+ catch (error) {
65
+ handleCliError(error, 'get PR threads');
66
+ }
67
+ });
68
+ pr
69
+ .command('commits')
70
+ .description('Get commits in a pull request')
71
+ .argument('<project>', 'Project name')
72
+ .argument('<repositoryId>', 'Repository ID or name')
73
+ .argument('<pullRequestId>', 'Pull request ID')
74
+ .action(async (project, repositoryId, pullRequestId) => {
75
+ try {
76
+ const result = await ctx.pullRequest.getPullRequestCommits(project, repositoryId, parseInt(pullRequestId));
77
+ outputResult({ fileName: `pr-${pullRequestId}-commits`, data: result, summary: `Commits for PR #${pullRequestId}` }, getGlobalFlags(program));
78
+ }
79
+ catch (error) {
80
+ handleCliError(error, 'get PR commits');
81
+ }
82
+ });
83
+ pr
84
+ .command('changes')
85
+ .description('Get file changes in a pull request')
86
+ .argument('<project>', 'Project name')
87
+ .argument('<repositoryId>', 'Repository ID or name')
88
+ .argument('<pullRequestId>', 'Pull request ID')
89
+ .option('-i, --iteration-id <n>', 'Iteration ID (default: latest)')
90
+ .action(async (project, repositoryId, pullRequestId, opts) => {
91
+ try {
92
+ const iterationId = opts.iterationId ? parseInt(opts.iterationId) : undefined;
93
+ const result = await ctx.pullRequest.getPullRequestChanges(project, repositoryId, parseInt(pullRequestId), iterationId);
94
+ outputResult({ fileName: `pr-${pullRequestId}-changes`, data: result, summary: `Changes for PR #${pullRequestId}` }, getGlobalFlags(program));
95
+ }
96
+ catch (error) {
97
+ handleCliError(error, 'get PR changes');
98
+ }
99
+ });
100
+ // --- Write commands (require AZUREDEVOPS_ENABLE_PR_WRITE=true) ---
101
+ pr
102
+ .command('add-thread')
103
+ .description('Add a comment thread to a PR (requires AZUREDEVOPS_ENABLE_PR_WRITE=true)')
104
+ .argument('<project>', 'Project name')
105
+ .argument('<repositoryId>', 'Repository ID or name')
106
+ .argument('<pullRequestId>', 'Pull request ID')
107
+ .argument('<content>', 'Comment content (markdown)')
108
+ .option('-f, --file-path <path>', 'File path for inline comment')
109
+ .option('-l, --line-number <n>', 'Line number for inline comment')
110
+ .option('-s, --status <status>', 'Thread status', 'active')
111
+ .action(async (project, repositoryId, pullRequestId, content, opts) => {
112
+ try {
113
+ const lineNumber = opts.lineNumber ? parseInt(opts.lineNumber) : undefined;
114
+ const result = await ctx.pullRequest.addPullRequestThread(project, repositoryId, parseInt(pullRequestId), content, opts.filePath, lineNumber, opts.status);
115
+ outputResult({ fileName: `pr-${pullRequestId}-thread-added`, data: result, summary: `Added comment to PR #${pullRequestId}` }, getGlobalFlags(program));
116
+ }
117
+ catch (error) {
118
+ handleCliError(error, 'add PR thread');
119
+ }
120
+ });
121
+ pr
122
+ .command('create')
123
+ .description('Create a new pull request (requires AZUREDEVOPS_ENABLE_PR_WRITE=true)')
124
+ .argument('<project>', 'Project name')
125
+ .argument('<repositoryId>', 'Repository ID or name')
126
+ .requiredOption('--source <ref>', 'Source branch ref (e.g., refs/heads/feature)')
127
+ .requiredOption('--target <ref>', 'Target branch ref (e.g., refs/heads/main)')
128
+ .requiredOption('--title <title>', 'PR title')
129
+ .option('-d, --description <text>', 'PR description')
130
+ .option('--reviewers <ids...>', 'Reviewer GUIDs')
131
+ .option('--draft', 'Create as draft PR', false)
132
+ .action(async (project, repositoryId, opts) => {
133
+ try {
134
+ const result = await ctx.pullRequest.createPullRequest(project, repositoryId, opts.source, opts.target, opts.title, opts.description, opts.reviewers, opts.draft);
135
+ outputResult({ fileName: `pr-created`, data: result, summary: `Created PR #${result?.pullRequestId}` }, getGlobalFlags(program));
136
+ }
137
+ catch (error) {
138
+ handleCliError(error, 'create pull request');
139
+ }
140
+ });
141
+ pr
142
+ .command('update')
143
+ .description('Update a pull request (requires AZUREDEVOPS_ENABLE_PR_WRITE=true)')
144
+ .argument('<project>', 'Project name')
145
+ .argument('<repositoryId>', 'Repository ID or name')
146
+ .argument('<pullRequestId>', 'Pull request ID')
147
+ .option('--title <title>', 'New title')
148
+ .option('-d, --description <text>', 'New description')
149
+ .option('-s, --status <status>', 'Set status: abandoned or active')
150
+ .option('--draft <bool>', 'Set draft state')
151
+ .action(async (project, repositoryId, pullRequestId, opts) => {
152
+ try {
153
+ const isDraft = opts.draft !== undefined ? opts.draft === 'true' : undefined;
154
+ const result = await ctx.pullRequest.updatePullRequest(project, repositoryId, parseInt(pullRequestId), { title: opts.title, description: opts.description, status: opts.status, isDraft });
155
+ outputResult({ fileName: `pr-${pullRequestId}-updated`, data: result, summary: `Updated PR #${pullRequestId}` }, getGlobalFlags(program));
156
+ }
157
+ catch (error) {
158
+ handleCliError(error, 'update pull request');
159
+ }
160
+ });
161
+ pr
162
+ .command('complete')
163
+ .description('Complete (merge) a pull request (requires AZUREDEVOPS_ENABLE_PR_WRITE=true)')
164
+ .argument('<project>', 'Project name')
165
+ .argument('<repositoryId>', 'Repository ID or name')
166
+ .argument('<pullRequestId>', 'Pull request ID')
167
+ .option('--strategy <strategy>', 'Merge strategy: squash, noFastForward, rebase, rebaseMerge', 'squash')
168
+ .option('--no-delete-branch', 'Keep source branch after merge')
169
+ .option('--no-transition-work-items', 'Do not transition linked work items')
170
+ .option('--commit-message <msg>', 'Custom merge commit message')
171
+ .action(async (project, repositoryId, pullRequestId, opts) => {
172
+ try {
173
+ const result = await ctx.pullRequest.completePullRequest(project, repositoryId, parseInt(pullRequestId), opts.strategy, opts.deleteBranch ?? true, opts.transitionWorkItems ?? true, opts.commitMessage);
174
+ outputResult({ fileName: `pr-${pullRequestId}-completed`, data: result, summary: `Completed PR #${pullRequestId}` }, getGlobalFlags(program));
175
+ }
176
+ catch (error) {
177
+ handleCliError(error, 'complete pull request');
178
+ }
179
+ });
180
+ pr
181
+ .command('add-reviewer')
182
+ .description('Add or remove a reviewer (requires AZUREDEVOPS_ENABLE_PR_WRITE=true)')
183
+ .argument('<project>', 'Project name')
184
+ .argument('<repositoryId>', 'Repository ID or name')
185
+ .argument('<pullRequestId>', 'Pull request ID')
186
+ .argument('<reviewerId>', 'Reviewer GUID or unique name')
187
+ .option('--required', 'Mark as required reviewer', false)
188
+ .option('--remove', 'Remove reviewer instead of adding', false)
189
+ .action(async (project, repositoryId, pullRequestId, reviewerId, opts) => {
190
+ try {
191
+ const result = await ctx.pullRequest.addOrRemovePrReviewer(project, repositoryId, parseInt(pullRequestId), reviewerId, opts.required, opts.remove);
192
+ outputResult({ fileName: `pr-${pullRequestId}-reviewer`, data: result, summary: `${opts.remove ? 'Removed' : 'Added'} reviewer on PR #${pullRequestId}` }, getGlobalFlags(program));
193
+ }
194
+ catch (error) {
195
+ handleCliError(error, 'manage PR reviewer');
196
+ }
197
+ });
198
+ pr
199
+ .command('vote')
200
+ .description('Submit a vote on a pull request (requires AZUREDEVOPS_ENABLE_PR_WRITE=true)')
201
+ .argument('<project>', 'Project name')
202
+ .argument('<repositoryId>', 'Repository ID or name')
203
+ .argument('<pullRequestId>', 'Pull request ID')
204
+ .argument('<vote>', 'Vote: approve, approveWithSuggestions, noResponse, waitForAuthor, reject')
205
+ .option('-r, --reviewer-id <id>', 'Reviewer GUID (defaults to authenticated user)')
206
+ .action(async (project, repositoryId, pullRequestId, vote, opts) => {
207
+ try {
208
+ const result = await ctx.pullRequest.votePullRequest(project, repositoryId, parseInt(pullRequestId), vote, opts.reviewerId);
209
+ outputResult({ fileName: `pr-${pullRequestId}-vote`, data: result, summary: `Voted '${vote}' on PR #${pullRequestId}` }, getGlobalFlags(program));
210
+ }
211
+ catch (error) {
212
+ handleCliError(error, 'vote on PR');
213
+ }
214
+ });
215
+ pr
216
+ .command('reply')
217
+ .description('Reply to a PR thread (requires AZUREDEVOPS_ENABLE_PR_WRITE=true)')
218
+ .argument('<project>', 'Project name')
219
+ .argument('<repositoryId>', 'Repository ID or name')
220
+ .argument('<pullRequestId>', 'Pull request ID')
221
+ .argument('<threadId>', 'Thread ID')
222
+ .option('-c, --content <text>', 'Reply text (markdown)')
223
+ .option('-s, --status <status>', 'Update thread status: active, fixed, wontFix, closed, byDesign, pending')
224
+ .action(async (project, repositoryId, pullRequestId, threadId, opts) => {
225
+ try {
226
+ const result = await ctx.pullRequest.replyToPrThread(project, repositoryId, parseInt(pullRequestId), parseInt(threadId), opts.content, opts.status);
227
+ outputResult({ fileName: `pr-${pullRequestId}-reply-${threadId}`, data: result, summary: `Replied to thread #${threadId} on PR #${pullRequestId}` }, getGlobalFlags(program));
228
+ }
229
+ catch (error) {
230
+ handleCliError(error, 'reply to PR thread');
231
+ }
232
+ });
233
+ }
234
+ //# sourceMappingURL=pull-request-commands.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pull-request-commands.js","sourceRoot":"","sources":["../../../src/cli/commands/pull-request-commands.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Sync CLI Commands - 8 commands for work item sync and task sync
3
+ */
4
+ import type { Command } from 'commander';
5
+ import type { ServiceContext } from '../../types.js';
6
+ export declare function registerSyncCommands(program: Command, ctx: ServiceContext): void;
7
+ //# sourceMappingURL=sync-commands.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync-commands.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/sync-commands.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEzC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAGrD,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,cAAc,GAAG,IAAI,CAkJhF"}
@@ -0,0 +1,148 @@
1
+ /**
2
+ * Sync CLI Commands - 8 commands for work item sync and task sync
3
+ */
4
+ import { getGlobalFlags, handleCliError } from '@mcp-consultant-tools/core';
5
+ import { outputResult } from '../output.js';
6
+ export function registerSyncCommands(program, ctx) {
7
+ const sync = program.command('sync').description('Work item sync operations');
8
+ sync
9
+ .command('pull')
10
+ .description('Download work item(s) to local markdown files')
11
+ .argument('<project>', 'Project name')
12
+ .option('-i, --ids <ids...>', 'Work item IDs to pull')
13
+ .option('--parent-id <id>', 'Pull all children of this parent')
14
+ .option('--child-type <type>', 'Filter child type (default: User Story)')
15
+ .option('-f, --folder <path>', 'Override folder path')
16
+ .option('--include-comments', 'Also save comments', false)
17
+ .option('--skip-auto-convert', 'Skip HTML-to-markdown conversion', false)
18
+ .action(async (project, opts) => {
19
+ try {
20
+ const ids = opts.ids ? opts.ids.map((id) => parseInt(id, 10)) : [];
21
+ const parentId = opts.parentId ? parseInt(opts.parentId, 10) : undefined;
22
+ const result = await ctx.sync.syncWorkItemsToFile(project, ids, parentId, opts.childType, opts.folder, opts.includeComments, opts.skipAutoConvert);
23
+ outputResult({ fileName: `sync-pull-${project}`, data: result, summary: result.message || `Synced ${result.pulled?.length || 0} work item(s) to local files` }, getGlobalFlags(program));
24
+ }
25
+ catch (error) {
26
+ handleCliError(error, 'sync work items to file');
27
+ }
28
+ });
29
+ sync
30
+ .command('push')
31
+ .description('Upload local markdown changes to ADO (requires AZUREDEVOPS_ENABLE_WORK_ITEM_WRITE=true)')
32
+ .argument('<project>', 'Project name')
33
+ .option('-i, --ids <ids...>', 'Work item IDs to push')
34
+ .option('-f, --folder <path>', 'Override folder path')
35
+ .option('--skip-auto-convert', 'Skip HTML-to-markdown conversion', false)
36
+ .action(async (project, opts) => {
37
+ try {
38
+ const ids = opts.ids ? opts.ids.map((id) => parseInt(id, 10)) : [];
39
+ const result = await ctx.sync.syncWorkItemsFromFile(project, ids, opts.folder, opts.skipAutoConvert);
40
+ const summary = [];
41
+ if (result.created.length > 0)
42
+ summary.push(`Created ${result.created.length}`);
43
+ if (result.pushed.length > 0)
44
+ summary.push(`Updated ${result.pushed.length}`);
45
+ if (result.failed.length > 0)
46
+ summary.push(`Failed ${result.failed.length}`);
47
+ outputResult({ fileName: `sync-push-${project}`, data: result, summary: summary.join(', ') || 'No changes pushed' }, getGlobalFlags(program));
48
+ }
49
+ catch (error) {
50
+ handleCliError(error, 'sync work items from file');
51
+ }
52
+ });
53
+ sync
54
+ .command('check-markdown')
55
+ .description('Check if work item fields are markdown or HTML')
56
+ .argument('<project>', 'Project name')
57
+ .argument('<ids...>', 'Work item IDs')
58
+ .action(async (project, ids) => {
59
+ try {
60
+ const workItemIds = ids.map(id => parseInt(id, 10));
61
+ const result = await ctx.sync.checkWorkItemMarkdown(project, workItemIds);
62
+ outputResult({ fileName: `sync-check-markdown`, data: result, summary: `Checked format for ${workItemIds.length} work item(s)` }, getGlobalFlags(program));
63
+ }
64
+ catch (error) {
65
+ handleCliError(error, 'check work item markdown');
66
+ }
67
+ });
68
+ sync
69
+ .command('list')
70
+ .description('List locally synced work item files')
71
+ .option('-f, --folder <path>', 'Override folder path')
72
+ .action(async (opts) => {
73
+ try {
74
+ const result = await ctx.sync.listSyncedWorkItems(opts.folder);
75
+ outputResult({ fileName: `sync-list`, data: result, summary: `Synced work items in ${result.folder}` }, getGlobalFlags(program));
76
+ }
77
+ catch (error) {
78
+ handleCliError(error, 'list synced work items');
79
+ }
80
+ });
81
+ sync
82
+ .command('create-file')
83
+ .description('Create a new work item template file locally')
84
+ .argument('<project>', 'Project name')
85
+ .option('--parent-id <id>', 'Parent work item ID')
86
+ .option('-t, --type <type>', 'Work item type', 'User Story')
87
+ .option('-f, --folder <path>', 'Override folder path')
88
+ .action(async (project, opts) => {
89
+ try {
90
+ const parentId = opts.parentId ? parseInt(opts.parentId, 10) : undefined;
91
+ const result = await ctx.sync.createWorkItemFile(project, parentId, opts.type, opts.folder);
92
+ outputResult({ fileName: `sync-create-file`, data: result, summary: `Created new ${opts.type} template` }, getGlobalFlags(program));
93
+ }
94
+ catch (error) {
95
+ handleCliError(error, 'create work item file');
96
+ }
97
+ });
98
+ sync
99
+ .command('create-user-story')
100
+ .description('Create a new user story template file (alias)')
101
+ .argument('<project>', 'Project name')
102
+ .argument('<parentId>', 'Parent Feature ID')
103
+ .option('-f, --folder <path>', 'Override folder path')
104
+ .action(async (project, parentId, opts) => {
105
+ try {
106
+ const result = await ctx.sync.createWorkItemFile(project, parseInt(parentId, 10), 'User Story', opts.folder);
107
+ outputResult({ fileName: `sync-create-user-story`, data: result, summary: `Created new User Story template` }, getGlobalFlags(program));
108
+ }
109
+ catch (error) {
110
+ handleCliError(error, 'create user story file');
111
+ }
112
+ });
113
+ sync
114
+ .command('pull-tasks')
115
+ .description('Download tasks under parent work item(s) to local files')
116
+ .argument('<project>', 'Project name')
117
+ .argument('<parentIds...>', 'Parent work item IDs')
118
+ .option('-f, --folder <path>', 'Override folder path')
119
+ .option('--skip-auto-convert', 'Skip HTML-to-markdown conversion', false)
120
+ .action(async (project, parentIds, opts) => {
121
+ try {
122
+ const ids = parentIds.map(id => parseInt(id, 10));
123
+ const result = await ctx.sync.syncTasksToFile(project, ids, opts.folder, opts.skipAutoConvert);
124
+ outputResult({ fileName: `sync-pull-tasks`, data: result, summary: `Synced tasks for ${result.pulled?.length || 0} parent(s)` }, getGlobalFlags(program));
125
+ }
126
+ catch (error) {
127
+ handleCliError(error, 'sync tasks to file');
128
+ }
129
+ });
130
+ sync
131
+ .command('push-tasks')
132
+ .description('Push local task changes to ADO (requires AZUREDEVOPS_ENABLE_WORK_ITEM_WRITE=true)')
133
+ .argument('<project>', 'Project name')
134
+ .argument('<parentIds...>', 'Parent work item IDs')
135
+ .option('-f, --folder <path>', 'Override folder path')
136
+ .option('--skip-auto-convert', 'Skip HTML-to-markdown conversion', false)
137
+ .action(async (project, parentIds, opts) => {
138
+ try {
139
+ const ids = parentIds.map(id => parseInt(id, 10));
140
+ const result = await ctx.sync.syncTasksFromFile(project, ids, opts.folder, opts.skipAutoConvert);
141
+ outputResult({ fileName: `sync-push-tasks`, data: result, summary: `Pushed tasks (${result.updated?.length || 0} updated, ${result.created?.length || 0} created)` }, getGlobalFlags(program));
142
+ }
143
+ catch (error) {
144
+ handleCliError(error, 'sync tasks from file');
145
+ }
146
+ });
147
+ }
148
+ //# sourceMappingURL=sync-commands.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync-commands.js","sourceRoot":"","sources":["../../../src/cli/commands/sync-commands.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Variable Group CLI Commands - 2 commands
3
+ */
4
+ import type { Command } from 'commander';
5
+ import type { ServiceContext } from '../../types.js';
6
+ export declare function registerVariableGroupCommands(program: Command, ctx: ServiceContext): void;
7
+ //# sourceMappingURL=variable-group-commands.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"variable-group-commands.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/variable-group-commands.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEzC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAGrD,wBAAgB,6BAA6B,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,cAAc,GAAG,IAAI,CA+BzF"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Variable Group CLI Commands - 2 commands
3
+ */
4
+ import { getGlobalFlags, handleCliError } from '@mcp-consultant-tools/core';
5
+ import { outputResult } from '../output.js';
6
+ export function registerVariableGroupCommands(program, ctx) {
7
+ const vg = program.command('variable-group').alias('vg').description('Variable group operations');
8
+ vg
9
+ .command('list')
10
+ .description('List all variable groups in a project')
11
+ .argument('<project>', 'Project name')
12
+ .action(async (project) => {
13
+ try {
14
+ const result = await ctx.variableGroup.getVariableGroups(project);
15
+ outputResult({ fileName: `variable-groups-${project}`, data: result, summary: `Variable groups in '${project}'` }, getGlobalFlags(program));
16
+ }
17
+ catch (error) {
18
+ handleCliError(error, 'list variable groups');
19
+ }
20
+ });
21
+ vg
22
+ .command('get')
23
+ .description('Get a specific variable group by ID')
24
+ .argument('<project>', 'Project name')
25
+ .argument('<groupId>', 'Variable group ID')
26
+ .action(async (project, groupId) => {
27
+ try {
28
+ const result = await ctx.variableGroup.getVariableGroup(project, parseInt(groupId));
29
+ outputResult({ fileName: `variable-group-${groupId}`, data: result, summary: `Variable group #${groupId}` }, getGlobalFlags(program));
30
+ }
31
+ catch (error) {
32
+ handleCliError(error, 'get variable group');
33
+ }
34
+ });
35
+ }
36
+ //# sourceMappingURL=variable-group-commands.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"variable-group-commands.js","sourceRoot":"","sources":["../../../src/cli/commands/variable-group-commands.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAE5E,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE5C,MAAM,UAAU,6BAA6B,CAAC,OAAgB,EAAE,GAAmB;IACjF,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,2BAA2B,CAAC,CAAC;IAElG,EAAE;SACC,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,uCAAuC,CAAC;SACpD,QAAQ,CAAC,WAAW,EAAE,cAAc,CAAC;SACrC,MAAM,CAAC,KAAK,EAAE,OAAe,EAAE,EAAE;QAChC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,aAAa,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;YAClE,YAAY,CACV,EAAE,QAAQ,EAAE,mBAAmB,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,uBAAuB,OAAO,GAAG,EAAE,EACpG,cAAc,CAAC,OAAO,CAAC,CACxB,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAAC,cAAc,CAAC,KAAK,EAAE,sBAAsB,CAAC,CAAC;QAAC,CAAC;IACpE,CAAC,CAAC,CAAC;IAEL,EAAE;SACC,OAAO,CAAC,KAAK,CAAC;SACd,WAAW,CAAC,qCAAqC,CAAC;SAClD,QAAQ,CAAC,WAAW,EAAE,cAAc,CAAC;SACrC,QAAQ,CAAC,WAAW,EAAE,mBAAmB,CAAC;SAC1C,MAAM,CAAC,KAAK,EAAE,OAAe,EAAE,OAAe,EAAE,EAAE;QACjD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,aAAa,CAAC,gBAAgB,CAAC,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;YACpF,YAAY,CACV,EAAE,QAAQ,EAAE,kBAAkB,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,mBAAmB,OAAO,EAAE,EAAE,EAC9F,cAAc,CAAC,OAAO,CAAC,CACxB,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAAC,cAAc,CAAC,KAAK,EAAE,oBAAoB,CAAC,CAAC;QAAC,CAAC;IAClE,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Wiki CLI Commands - 9 commands mapping to wiki MCP tools
3
+ */
4
+ import type { Command } from 'commander';
5
+ import type { ServiceContext } from '../../types.js';
6
+ export declare function registerWikiCommands(program: Command, ctx: ServiceContext): void;
7
+ //# sourceMappingURL=wiki-commands.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wiki-commands.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/wiki-commands.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEzC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAGrD,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,cAAc,GAAG,IAAI,CA0JhF"}