@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,152 @@
1
+ /**
2
+ * Wiki CLI Commands - 9 commands mapping to wiki MCP tools
3
+ */
4
+ import { getGlobalFlags, handleCliError } from '@mcp-consultant-tools/core';
5
+ import { outputResult } from '../output.js';
6
+ export function registerWikiCommands(program, ctx) {
7
+ const wiki = program.command('wiki').description('Wiki operations');
8
+ wiki
9
+ .command('list')
10
+ .description('List all wikis in a project')
11
+ .argument('<project>', 'Project name')
12
+ .action(async (project) => {
13
+ try {
14
+ const result = await ctx.wiki.getWikis(project);
15
+ outputResult({ fileName: `wikis-${project}`, data: result, summary: `Found ${Array.isArray(result) ? result.length : 0} wiki(s) in '${project}'` }, getGlobalFlags(program));
16
+ }
17
+ catch (error) {
18
+ handleCliError(error, 'list wikis');
19
+ }
20
+ });
21
+ wiki
22
+ .command('search')
23
+ .description('Search wiki pages across projects')
24
+ .argument('<searchText>', 'Text to search for')
25
+ .option('-p, --project <project>', 'Filter by project')
26
+ .option('-m, --max-results <n>', 'Maximum results', '25')
27
+ .action(async (searchText, opts) => {
28
+ try {
29
+ const result = await ctx.wiki.searchWikiPages(searchText, opts.project, parseInt(opts.maxResults));
30
+ outputResult({ fileName: `wiki-search-${searchText.replace(/\s+/g, '-')}`, data: result, summary: `Found wiki pages matching '${searchText}'` }, getGlobalFlags(program));
31
+ }
32
+ catch (error) {
33
+ handleCliError(error, 'search wiki pages');
34
+ }
35
+ });
36
+ wiki
37
+ .command('get')
38
+ .description('Get a specific wiki page with content')
39
+ .argument('<project>', 'Project name')
40
+ .argument('<wikiId>', 'Wiki identifier (ID or name)')
41
+ .argument('<pagePath>', 'Page path (e.g., /Setup/Authentication)')
42
+ .option('--no-content', 'Exclude page content')
43
+ .action(async (project, wikiId, pagePath, opts) => {
44
+ try {
45
+ const result = await ctx.wiki.getWikiPage(project, wikiId, pagePath, opts.content ?? true);
46
+ outputResult({ fileName: `wiki-page-${pagePath.replace(/\//g, '-')}`, data: result, summary: `Wiki page '${pagePath}'` }, getGlobalFlags(program));
47
+ }
48
+ catch (error) {
49
+ handleCliError(error, 'get wiki page');
50
+ }
51
+ });
52
+ wiki
53
+ .command('create')
54
+ .description('Create a new wiki page (requires AZUREDEVOPS_ENABLE_WIKI_WRITE=true)')
55
+ .argument('<project>', 'Project name')
56
+ .argument('<wikiId>', 'Wiki identifier')
57
+ .argument('<pagePath>', 'Path for the new page')
58
+ .argument('<content>', 'Markdown content')
59
+ .action(async (project, wikiId, pagePath, content) => {
60
+ try {
61
+ const result = await ctx.wiki.createWikiPage(project, wikiId, pagePath, content);
62
+ outputResult({ fileName: `wiki-created-${pagePath.replace(/\//g, '-')}`, data: result, summary: `Created wiki page '${pagePath}'` }, getGlobalFlags(program));
63
+ }
64
+ catch (error) {
65
+ handleCliError(error, 'create wiki page');
66
+ }
67
+ });
68
+ wiki
69
+ .command('update')
70
+ .description('Update an existing wiki page (requires AZUREDEVOPS_ENABLE_WIKI_WRITE=true)')
71
+ .argument('<project>', 'Project name')
72
+ .argument('<wikiId>', 'Wiki identifier')
73
+ .argument('<pagePath>', 'Page path')
74
+ .argument('<content>', 'Updated markdown content')
75
+ .option('-v, --version <etag>', 'ETag/version for optimistic concurrency')
76
+ .action(async (project, wikiId, pagePath, content, opts) => {
77
+ try {
78
+ const result = await ctx.wiki.updateWikiPage(project, wikiId, pagePath, content, opts.version);
79
+ outputResult({ fileName: `wiki-updated-${pagePath.replace(/\//g, '-')}`, data: result, summary: `Updated wiki page '${pagePath}'` }, getGlobalFlags(program));
80
+ }
81
+ catch (error) {
82
+ handleCliError(error, 'update wiki page');
83
+ }
84
+ });
85
+ wiki
86
+ .command('str-replace')
87
+ .description('Replace text in a wiki page (requires AZUREDEVOPS_ENABLE_WIKI_WRITE=true)')
88
+ .argument('<project>', 'Project name')
89
+ .argument('<wikiId>', 'Wiki identifier')
90
+ .argument('<pagePath>', 'Page path')
91
+ .requiredOption('--old <text>', 'Text to replace')
92
+ .requiredOption('--new <text>', 'Replacement text')
93
+ .option('--replace-all', 'Replace all occurrences', false)
94
+ .option('-d, --description <text>', 'Change description')
95
+ .action(async (project, wikiId, pagePath, opts) => {
96
+ try {
97
+ const result = await ctx.wiki.strReplaceWikiPage(project, wikiId, pagePath, opts.old, opts.new, opts.replaceAll, opts.description);
98
+ outputResult({ fileName: `wiki-replace-${pagePath.replace(/\//g, '-')}`, data: result, summary: `Replaced text in '${pagePath}' (${result.occurrences} occurrence(s))` }, getGlobalFlags(program));
99
+ }
100
+ catch (error) {
101
+ handleCliError(error, 'replace wiki text');
102
+ }
103
+ });
104
+ wiki
105
+ .command('delete')
106
+ .description('Delete a wiki page (requires AZUREDEVOPS_ENABLE_WIKI_DELETE=true)')
107
+ .argument('<project>', 'Project name')
108
+ .argument('<wikiId>', 'Wiki identifier')
109
+ .argument('<pagePath>', 'Page path')
110
+ .action(async (project, wikiId, pagePath) => {
111
+ try {
112
+ const result = await ctx.wiki.deleteWikiPage(project, wikiId, pagePath);
113
+ outputResult({ fileName: `wiki-deleted-${pagePath.replace(/\//g, '-')}`, data: result, summary: `Deleted wiki page '${pagePath}'` }, getGlobalFlags(program));
114
+ }
115
+ catch (error) {
116
+ handleCliError(error, 'delete wiki page');
117
+ }
118
+ });
119
+ wiki
120
+ .command('download-attachment')
121
+ .description('Download a single wiki attachment/image')
122
+ .argument('<project>', 'Project name')
123
+ .argument('<wikiId>', 'Wiki identifier')
124
+ .argument('<attachmentPath>', 'Attachment path from wiki markdown')
125
+ .option('-o, --output-dir <dir>', 'Output directory (default: OS temp dir)')
126
+ .action(async (project, wikiId, attachmentPath, opts) => {
127
+ try {
128
+ const result = await ctx.wiki.downloadWikiAttachment(project, wikiId, attachmentPath, opts.outputDir);
129
+ outputResult({ fileName: `wiki-attachment`, data: result, summary: `Downloaded attachment to '${result.filePath}'` }, getGlobalFlags(program));
130
+ }
131
+ catch (error) {
132
+ handleCliError(error, 'download wiki attachment');
133
+ }
134
+ });
135
+ wiki
136
+ .command('download-page-attachments')
137
+ .description('Download all attachments from a wiki page')
138
+ .argument('<project>', 'Project name')
139
+ .argument('<wikiId>', 'Wiki identifier')
140
+ .argument('<pagePath>', 'Wiki page path')
141
+ .option('-o, --output-dir <dir>', 'Output directory (default: OS temp dir)')
142
+ .action(async (project, wikiId, pagePath, opts) => {
143
+ try {
144
+ const result = await ctx.wiki.downloadWikiPageAttachments(project, wikiId, pagePath, opts.outputDir);
145
+ outputResult({ fileName: `wiki-attachments-${pagePath.replace(/\//g, '-')}`, data: result, summary: `Downloaded ${result.downloaded}/${result.totalFound} attachments from '${pagePath}'` }, getGlobalFlags(program));
146
+ }
147
+ catch (error) {
148
+ handleCliError(error, 'download wiki page attachments');
149
+ }
150
+ });
151
+ }
152
+ //# sourceMappingURL=wiki-commands.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wiki-commands.js","sourceRoot":"","sources":["../../../src/cli/commands/wiki-commands.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Work Item CLI Commands - 10 commands mapping to work-item MCP tools
3
+ */
4
+ import type { Command } from 'commander';
5
+ import type { ServiceContext } from '../../types.js';
6
+ export declare function registerWorkItemCommands(program: Command, ctx: ServiceContext): void;
7
+ //# sourceMappingURL=work-item-commands.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"work-item-commands.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/work-item-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,wBAAwB,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,cAAc,GAAG,IAAI,CA4KpF"}
@@ -0,0 +1,169 @@
1
+ /**
2
+ * Work Item CLI Commands - 10 commands mapping to work-item MCP tools
3
+ */
4
+ import { getGlobalFlags, handleCliError } from '@mcp-consultant-tools/core';
5
+ import { outputResult } from '../output.js';
6
+ export function registerWorkItemCommands(program, ctx) {
7
+ const wi = program.command('work-item').alias('wi').description('Work item operations');
8
+ wi
9
+ .command('get')
10
+ .description('Get a work item by ID')
11
+ .argument('<project>', 'Project name')
12
+ .argument('<id>', 'Work item ID')
13
+ .action(async (project, id) => {
14
+ try {
15
+ const workItemId = parseInt(id, 10);
16
+ const result = await ctx.workItem.getWorkItem(project, workItemId);
17
+ outputResult({ fileName: `work-item-${workItemId}`, data: result, summary: `Work item #${workItemId}` }, getGlobalFlags(program));
18
+ }
19
+ catch (error) {
20
+ handleCliError(error, 'get work item');
21
+ }
22
+ });
23
+ wi
24
+ .command('query')
25
+ .description('Query work items using WIQL')
26
+ .argument('<project>', 'Project name')
27
+ .argument('<wiql>', 'WIQL query string')
28
+ .option('-m, --max-results <n>', 'Maximum results', '200')
29
+ .action(async (project, wiql, opts) => {
30
+ try {
31
+ const result = await ctx.workItem.queryWorkItems(project, wiql, parseInt(opts.maxResults));
32
+ outputResult({ fileName: `work-items-query`, data: result, summary: `Query returned results` }, getGlobalFlags(program));
33
+ }
34
+ catch (error) {
35
+ handleCliError(error, 'query work items');
36
+ }
37
+ });
38
+ wi
39
+ .command('run-saved-query')
40
+ .description('Execute a saved ADO query by ID')
41
+ .argument('<project>', 'Project name')
42
+ .argument('<queryId>', 'Saved query GUID')
43
+ .option('-m, --max-results <n>', 'Maximum results', '50')
44
+ .option('-d, --detail <level>', 'Detail level: summary or full', 'summary')
45
+ .option('-f, --fields <fields...>', 'Custom field reference names')
46
+ .option('-g, --group-by <field>', 'Group results by field')
47
+ .action(async (project, queryId, opts) => {
48
+ try {
49
+ const result = await ctx.workItem.runSavedQuery(project, queryId, parseInt(opts.maxResults), opts.detail, opts.fields, opts.groupBy);
50
+ outputResult({ fileName: `saved-query-${queryId}`, data: result, summary: `Saved query results` }, getGlobalFlags(program));
51
+ }
52
+ catch (error) {
53
+ handleCliError(error, 'run saved query');
54
+ }
55
+ });
56
+ wi
57
+ .command('get-saved-query')
58
+ .description('Get a saved query metadata and WIQL without executing')
59
+ .argument('<project>', 'Project name')
60
+ .argument('<queryId>', 'Saved query GUID')
61
+ .action(async (project, queryId) => {
62
+ try {
63
+ const result = await ctx.workItem.getSavedQuery(project, queryId);
64
+ outputResult({ fileName: `saved-query-meta-${queryId}`, data: result, summary: `Saved query: ${result?.name || queryId}` }, getGlobalFlags(program));
65
+ }
66
+ catch (error) {
67
+ handleCliError(error, 'get saved query');
68
+ }
69
+ });
70
+ wi
71
+ .command('comments')
72
+ .description('Get comments for a work item')
73
+ .argument('<project>', 'Project name')
74
+ .argument('<id>', 'Work item ID')
75
+ .action(async (project, id) => {
76
+ try {
77
+ const workItemId = parseInt(id, 10);
78
+ const result = await ctx.workItem.getWorkItemComments(project, workItemId);
79
+ outputResult({ fileName: `work-item-${workItemId}-comments`, data: result, summary: `Comments for work item #${workItemId}` }, getGlobalFlags(program));
80
+ }
81
+ catch (error) {
82
+ handleCliError(error, 'get work item comments');
83
+ }
84
+ });
85
+ wi
86
+ .command('add-comment')
87
+ .description('Add a comment to a work item (requires AZUREDEVOPS_ENABLE_WORK_ITEM_WRITE=true)')
88
+ .argument('<project>', 'Project name')
89
+ .argument('<id>', 'Work item ID')
90
+ .argument('<text>', 'Comment text (markdown)')
91
+ .action(async (project, id, text) => {
92
+ try {
93
+ const workItemId = parseInt(id, 10);
94
+ const result = await ctx.workItem.addWorkItemComment(project, workItemId, text);
95
+ outputResult({ fileName: `work-item-${workItemId}-comment-added`, data: result, summary: `Added comment to work item #${workItemId}` }, getGlobalFlags(program));
96
+ }
97
+ catch (error) {
98
+ handleCliError(error, 'add work item comment');
99
+ }
100
+ });
101
+ wi
102
+ .command('update-comment')
103
+ .description('Update a comment on a work item (requires AZUREDEVOPS_ENABLE_WORK_ITEM_WRITE=true)')
104
+ .argument('<project>', 'Project name')
105
+ .argument('<workItemId>', 'Work item ID')
106
+ .argument('<commentId>', 'Comment ID')
107
+ .argument('<text>', 'Updated comment text (markdown)')
108
+ .action(async (project, workItemId, commentId, text) => {
109
+ try {
110
+ const result = await ctx.workItem.updateWorkItemComment(project, parseInt(workItemId, 10), parseInt(commentId, 10), text);
111
+ outputResult({ fileName: `work-item-${workItemId}-comment-${commentId}-updated`, data: result, summary: `Updated comment #${commentId} on work item #${workItemId}` }, getGlobalFlags(program));
112
+ }
113
+ catch (error) {
114
+ handleCliError(error, 'update work item comment');
115
+ }
116
+ });
117
+ wi
118
+ .command('update')
119
+ .description('Update a work item with JSON Patch operations (requires AZUREDEVOPS_ENABLE_WORK_ITEM_WRITE=true)')
120
+ .argument('<project>', 'Project name')
121
+ .argument('<id>', 'Work item ID')
122
+ .argument('<patchOps>', 'JSON array of patch operations')
123
+ .option('--skip-auto-convert', 'Skip automatic markdown format injection')
124
+ .action(async (project, id, patchOps, opts) => {
125
+ try {
126
+ const workItemId = parseInt(id, 10);
127
+ const operations = JSON.parse(patchOps);
128
+ const result = await ctx.workItem.updateWorkItem(project, workItemId, operations);
129
+ outputResult({ fileName: `work-item-${workItemId}-updated`, data: result, summary: `Updated work item #${workItemId}` }, getGlobalFlags(program));
130
+ }
131
+ catch (error) {
132
+ handleCliError(error, 'update work item');
133
+ }
134
+ });
135
+ wi
136
+ .command('create')
137
+ .description('Create a new work item (requires AZUREDEVOPS_ENABLE_WORK_ITEM_WRITE=true)')
138
+ .argument('<project>', 'Project name')
139
+ .argument('<type>', 'Work item type (Bug, Task, User Story, Feature, Epic)')
140
+ .argument('<fields>', 'JSON object of field values')
141
+ .option('--parent-id <id>', 'Parent work item ID')
142
+ .action(async (project, type, fieldsJson, opts) => {
143
+ try {
144
+ const fields = JSON.parse(fieldsJson);
145
+ const parentId = opts.parentId ? parseInt(opts.parentId, 10) : undefined;
146
+ const result = await ctx.workItem.createWorkItem(project, type, fields, parentId);
147
+ outputResult({ fileName: `work-item-created`, data: result, summary: `Created ${type} work item` }, getGlobalFlags(program));
148
+ }
149
+ catch (error) {
150
+ handleCliError(error, 'create work item');
151
+ }
152
+ });
153
+ wi
154
+ .command('delete')
155
+ .description('Delete a work item (requires AZUREDEVOPS_ENABLE_WORK_ITEM_DELETE=true)')
156
+ .argument('<project>', 'Project name')
157
+ .argument('<id>', 'Work item ID')
158
+ .action(async (project, id) => {
159
+ try {
160
+ const workItemId = parseInt(id, 10);
161
+ const result = await ctx.workItem.deleteWorkItem(project, workItemId);
162
+ outputResult({ fileName: `work-item-${workItemId}-deleted`, data: result, summary: `Deleted work item #${workItemId}` }, getGlobalFlags(program));
163
+ }
164
+ catch (error) {
165
+ handleCliError(error, 'delete work item');
166
+ }
167
+ });
168
+ }
169
+ //# sourceMappingURL=work-item-commands.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"work-item-commands.js","sourceRoot":"","sources":["../../../src/cli/commands/work-item-commands.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * CLI output helper for azure-devops package.
3
+ * Thin wrapper setting the package-specific cache directory.
4
+ */
5
+ import { type GlobalFlags } from '@mcp-consultant-tools/core';
6
+ export declare function outputResult(opts: {
7
+ fileName: string;
8
+ data: unknown;
9
+ summary: string;
10
+ }, flags: GlobalFlags): void;
11
+ //# sourceMappingURL=output.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../../src/cli/output.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAoC,KAAK,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAIhG,wBAAgB,YAAY,CAC1B,IAAI,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,EAC1D,KAAK,EAAE,WAAW,GACjB,IAAI,CAEN"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * CLI output helper for azure-devops package.
3
+ * Thin wrapper setting the package-specific cache directory.
4
+ */
5
+ import { outputResult as coreOutputResult } from '@mcp-consultant-tools/core';
6
+ const CACHE_DIR = '.mcp-ado-cache';
7
+ export function outputResult(opts, flags) {
8
+ coreOutputResult({ ...opts, cacheDir: CACHE_DIR }, flags);
9
+ }
10
+ //# sourceMappingURL=output.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"output.js","sourceRoot":"","sources":["../../src/cli/output.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,YAAY,IAAI,gBAAgB,EAAoB,MAAM,4BAA4B,CAAC;AAEhG,MAAM,SAAS,GAAG,gBAAgB,CAAC;AAEnC,MAAM,UAAU,YAAY,CAC1B,IAA0D,EAC1D,KAAkB;IAElB,gBAAgB,CAAC,EAAE,GAAG,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,KAAK,CAAC,CAAC;AAC5D,CAAC"}
package/build/cli.d.ts ADDED
@@ -0,0 +1,9 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * @mcp-consultant-tools/azure-devops CLI
4
+ *
5
+ * Command-line interface for Azure DevOps operations.
6
+ * Reuses the same ServiceContext and services as the MCP server.
7
+ */
8
+ export {};
9
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA;;;;;GAKG"}
package/build/cli.js ADDED
@@ -0,0 +1,27 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * @mcp-consultant-tools/azure-devops CLI
4
+ *
5
+ * Command-line interface for Azure DevOps operations.
6
+ * Reuses the same ServiceContext and services as the MCP server.
7
+ */
8
+ import { createCliProgram, loadEnvForCli } from '@mcp-consultant-tools/core';
9
+ import { createServiceContext } from './context-factory.js';
10
+ import { registerAllCommands } from './cli/commands/index.js';
11
+ const program = createCliProgram({
12
+ name: 'mcp-ado-cli',
13
+ description: 'Azure DevOps CLI - wikis, work items, pull requests, builds, sync',
14
+ version: '28.0.0-beta.8',
15
+ });
16
+ // Load env before parsing (--env-file handled by commander hook)
17
+ program.hook('preAction', (thisCommand) => {
18
+ const opts = thisCommand.opts();
19
+ loadEnvForCli(opts.envFile);
20
+ });
21
+ const ctx = createServiceContext();
22
+ registerAllCommands(program, ctx);
23
+ program.parseAsync(process.argv).catch((error) => {
24
+ console.error('CLI error:', error.message);
25
+ process.exit(1);
26
+ });
27
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA;;;;;GAKG;AAEH,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC7E,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAE9D,MAAM,OAAO,GAAG,gBAAgB,CAAC;IAC/B,IAAI,EAAE,aAAa;IACnB,WAAW,EAAE,mEAAmE;IAChF,OAAO,EAAE,eAAe;CACzB,CAAC,CAAC;AAEH,iEAAiE;AACjE,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,WAAgB,EAAE,EAAE;IAC7C,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,EAAE,CAAC;IAChC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC9B,CAAC,CAAC,CAAC;AAEH,MAAM,GAAG,GAAG,oBAAoB,EAAE,CAAC;AACnC,mBAAmB,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;AAElC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,KAAU,EAAE,EAAE;IACpD,OAAO,CAAC,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;IAC3C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Shared ServiceContext factory for Azure DevOps.
3
+ * Used by both MCP server (index.ts) and CLI (cli.ts).
4
+ */
5
+ import type { ServiceContext } from './types.js';
6
+ /**
7
+ * Build a ServiceContext from environment variables (lazy client initialization).
8
+ */
9
+ export declare function createServiceContext(): ServiceContext;
10
+ //# sourceMappingURL=context-factory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-factory.d.ts","sourceRoot":"","sources":["../src/context-factory.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAYjD;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,cAAc,CAyDrD"}
@@ -0,0 +1,63 @@
1
+ /**
2
+ * Shared ServiceContext factory for Azure DevOps.
3
+ * Used by both MCP server (index.ts) and CLI (cli.ts).
4
+ */
5
+ import { AzureDevOpsClient } from './azure-devops-client.js';
6
+ import { WikiService, WorkItemService, PullRequestService, BuildService, VariableGroupService, SyncService, ConfigurationService, ChecklistService, } from './services/index.js';
7
+ /**
8
+ * Build a ServiceContext from environment variables (lazy client initialization).
9
+ */
10
+ export function createServiceContext() {
11
+ let client = null;
12
+ function getClient() {
13
+ if (!client) {
14
+ const missingConfig = [];
15
+ if (!process.env.AZUREDEVOPS_ORGANIZATION)
16
+ missingConfig.push("AZUREDEVOPS_ORGANIZATION");
17
+ if (!process.env.AZUREDEVOPS_PAT)
18
+ missingConfig.push("AZUREDEVOPS_PAT");
19
+ if (!process.env.AZUREDEVOPS_PROJECTS)
20
+ missingConfig.push("AZUREDEVOPS_PROJECTS");
21
+ if (missingConfig.length > 0) {
22
+ throw new Error(`Missing required Azure DevOps configuration: ${missingConfig.join(", ")}. ` +
23
+ `Set environment variables for organization, PAT, and allowed projects.`);
24
+ }
25
+ const config = {
26
+ organization: process.env.AZUREDEVOPS_ORGANIZATION,
27
+ pat: process.env.AZUREDEVOPS_PAT,
28
+ projects: process.env.AZUREDEVOPS_PROJECTS.split(",").map(p => p.trim()).filter(p => p),
29
+ apiVersion: process.env.AZUREDEVOPS_API_VERSION || "7.1",
30
+ enableWorkItemWrite: process.env.AZUREDEVOPS_ENABLE_WORK_ITEM_WRITE === "true",
31
+ enableWorkItemDelete: process.env.AZUREDEVOPS_ENABLE_WORK_ITEM_DELETE === "true",
32
+ enableWikiWrite: process.env.AZUREDEVOPS_ENABLE_WIKI_WRITE === "true",
33
+ enableWikiDelete: process.env.AZUREDEVOPS_ENABLE_WIKI_DELETE === "true",
34
+ enablePullRequestWrite: process.env.AZUREDEVOPS_ENABLE_PR_WRITE === "true",
35
+ commentFormat: process.env.AZUREDEVOPS_COMMENT_FORMAT || 'markdown',
36
+ };
37
+ client = new AzureDevOpsClient(config);
38
+ console.error("Azure DevOps service initialized");
39
+ }
40
+ return client;
41
+ }
42
+ // Lazy service singletons
43
+ let wiki = null;
44
+ let workItem = null;
45
+ let pullRequest = null;
46
+ let build = null;
47
+ let variableGroup = null;
48
+ let sync = null;
49
+ let configuration = null;
50
+ let checklist = null;
51
+ return {
52
+ get client() { return getClient(); },
53
+ get wiki() { return wiki ??= new WikiService(getClient()); },
54
+ get workItem() { return workItem ??= new WorkItemService(getClient()); },
55
+ get pullRequest() { return pullRequest ??= new PullRequestService(getClient()); },
56
+ get build() { return build ??= new BuildService(getClient()); },
57
+ get variableGroup() { return variableGroup ??= new VariableGroupService(getClient()); },
58
+ get sync() { return sync ??= new SyncService(workItem ??= new WorkItemService(getClient())); },
59
+ get configuration() { return configuration ??= new ConfigurationService(); },
60
+ get checklist() { return checklist ??= new ChecklistService(getClient(), workItem ??= new WorkItemService(getClient())); },
61
+ };
62
+ }
63
+ //# sourceMappingURL=context-factory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-factory.js","sourceRoot":"","sources":["../src/context-factory.ts"],"names":[],"mappings":"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"}
package/build/index.d.ts CHANGED
@@ -11,6 +11,7 @@
11
11
  */
12
12
  export declare function registerAzureDevOpsTools(server: any): void;
13
13
  export { AzureDevOpsClient } from './azure-devops-client.js';
14
+ export { createServiceContext } from './context-factory.js';
14
15
  export type { AzureDevOpsConfig } from './models/index.js';
15
16
  export type { ServiceContext } from './types.js';
16
17
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;;;GAKG;AAkFH;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,GAAG,GAAG,IAAI,CAI1D;AAGD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,YAAY,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC3D,YAAY,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;;;GAKG;AAsCH;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,GAAG,GAAG,IAAI,CAK1D;AAGD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,YAAY,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC3D,YAAY,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC"}