@mcp-consultant-tools/azure-devops-admin 28.0.0-beta.7 → 29.0.0-beta.1
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/ado-auth-provider.d.ts +32 -0
- package/build/ado-auth-provider.d.ts.map +1 -0
- package/build/ado-auth-provider.js +92 -0
- package/build/ado-auth-provider.js.map +1 -0
- package/build/cli/commands/agent-pool-commands.d.ts +7 -0
- package/build/cli/commands/agent-pool-commands.d.ts.map +1 -0
- package/build/cli/commands/agent-pool-commands.js +117 -0
- package/build/cli/commands/agent-pool-commands.js.map +1 -0
- package/build/cli/commands/artifact-feed-commands.d.ts +7 -0
- package/build/cli/commands/artifact-feed-commands.d.ts.map +1 -0
- package/build/cli/commands/artifact-feed-commands.js +62 -0
- package/build/cli/commands/artifact-feed-commands.js.map +1 -0
- package/build/cli/commands/classification-commands.d.ts +7 -0
- package/build/cli/commands/classification-commands.d.ts.map +1 -0
- package/build/cli/commands/classification-commands.js +192 -0
- package/build/cli/commands/classification-commands.js.map +1 -0
- package/build/cli/commands/environment-commands.d.ts +7 -0
- package/build/cli/commands/environment-commands.d.ts.map +1 -0
- package/build/cli/commands/environment-commands.js +172 -0
- package/build/cli/commands/environment-commands.js.map +1 -0
- package/build/cli/commands/index.d.ts +15 -0
- package/build/cli/commands/index.d.ts.map +1 -0
- package/build/cli/commands/index.js +30 -0
- package/build/cli/commands/index.js.map +1 -0
- package/build/cli/commands/pipeline-commands.d.ts +7 -0
- package/build/cli/commands/pipeline-commands.d.ts.map +1 -0
- package/build/cli/commands/pipeline-commands.js +269 -0
- package/build/cli/commands/pipeline-commands.js.map +1 -0
- package/build/cli/commands/project-commands.d.ts +7 -0
- package/build/cli/commands/project-commands.d.ts.map +1 -0
- package/build/cli/commands/project-commands.js +100 -0
- package/build/cli/commands/project-commands.js.map +1 -0
- package/build/cli/commands/service-connection-commands.d.ts +7 -0
- package/build/cli/commands/service-connection-commands.d.ts.map +1 -0
- package/build/cli/commands/service-connection-commands.js +131 -0
- package/build/cli/commands/service-connection-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 +120 -0
- package/build/cli/commands/variable-group-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 +4 -0
- package/build/context-factory.d.ts.map +1 -0
- package/build/context-factory.js +86 -0
- package/build/context-factory.js.map +1 -0
- package/build/index.d.ts +2 -0
- package/build/index.d.ts.map +1 -1
- package/build/index.js +15 -6
- package/build/index.js.map +1 -1
- package/build/services/admin-client.d.ts +5 -2
- package/build/services/admin-client.d.ts.map +1 -1
- package/build/services/admin-client.js +13 -5
- package/build/services/admin-client.js.map +1 -1
- package/build/services/index.d.ts +1 -0
- package/build/services/index.d.ts.map +1 -1
- package/build/services/index.js +1 -0
- package/build/services/index.js.map +1 -1
- package/build/services/project-service.d.ts +21 -0
- package/build/services/project-service.d.ts.map +1 -0
- package/build/services/project-service.js +130 -0
- package/build/services/project-service.js.map +1 -0
- package/build/tool-examples.d.ts +20 -0
- package/build/tool-examples.d.ts.map +1 -1
- package/build/tool-examples.js +24 -0
- package/build/tool-examples.js.map +1 -1
- package/build/tools/index.d.ts +1 -0
- package/build/tools/index.d.ts.map +1 -1
- package/build/tools/index.js +3 -0
- package/build/tools/index.js.map +1 -1
- package/build/tools/project-tools.d.ts +7 -0
- package/build/tools/project-tools.d.ts.map +1 -0
- package/build/tools/project-tools.js +117 -0
- package/build/tools/project-tools.js.map +1 -0
- package/build/types.d.ts +8 -1
- package/build/types.d.ts.map +1 -1
- package/package.json +6 -3
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Project CLI Commands - list, get, properties, create, update, delete
|
|
3
|
+
*/
|
|
4
|
+
import { getGlobalFlags, handleCliError } from '@mcp-consultant-tools/core';
|
|
5
|
+
import { outputResult } from '../output.js';
|
|
6
|
+
export function registerProjectCommands(program, ctx) {
|
|
7
|
+
const proj = program.command('project').alias('p').description('Project operations');
|
|
8
|
+
proj
|
|
9
|
+
.command('list')
|
|
10
|
+
.description('List all projects in the organization')
|
|
11
|
+
.option('-s, --state <filter>', 'State filter (all, wellFormed, createPending, deleting)')
|
|
12
|
+
.option('-t, --top <n>', 'Maximum number of results')
|
|
13
|
+
.option('--skip <n>', 'Number to skip (pagination)')
|
|
14
|
+
.action(async (opts) => {
|
|
15
|
+
try {
|
|
16
|
+
const result = await ctx.projects.listProjects(opts.state, opts.top ? parseInt(opts.top) : undefined, opts.skip ? parseInt(opts.skip) : undefined);
|
|
17
|
+
outputResult({ fileName: 'projects-list', data: result, summary: `Found ${result.totalCount} projects` }, getGlobalFlags(program));
|
|
18
|
+
}
|
|
19
|
+
catch (error) {
|
|
20
|
+
handleCliError(error, 'list projects');
|
|
21
|
+
}
|
|
22
|
+
});
|
|
23
|
+
proj
|
|
24
|
+
.command('get')
|
|
25
|
+
.description('Get project details including capabilities')
|
|
26
|
+
.argument('<projectId>', 'Project name or ID')
|
|
27
|
+
.action(async (projectId) => {
|
|
28
|
+
try {
|
|
29
|
+
const result = await ctx.projects.getProject(projectId);
|
|
30
|
+
outputResult({ fileName: `project-${projectId}`, data: result, summary: `Project: ${result.name}` }, getGlobalFlags(program));
|
|
31
|
+
}
|
|
32
|
+
catch (error) {
|
|
33
|
+
handleCliError(error, 'get project');
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
proj
|
|
37
|
+
.command('properties')
|
|
38
|
+
.description('Get extended project properties')
|
|
39
|
+
.argument('<projectId>', 'Project name or ID')
|
|
40
|
+
.action(async (projectId) => {
|
|
41
|
+
try {
|
|
42
|
+
const result = await ctx.projects.getProjectProperties(projectId);
|
|
43
|
+
outputResult({ fileName: `project-props-${projectId}`, data: result, summary: `Properties for '${projectId}'` }, getGlobalFlags(program));
|
|
44
|
+
}
|
|
45
|
+
catch (error) {
|
|
46
|
+
handleCliError(error, 'get project properties');
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
proj
|
|
50
|
+
.command('create')
|
|
51
|
+
.description('Create a new project (polls until complete)')
|
|
52
|
+
.argument('<name>', 'Project name')
|
|
53
|
+
.option('-d, --description <text>', 'Project description')
|
|
54
|
+
.option('-v, --visibility <type>', 'Visibility: private or public', 'private')
|
|
55
|
+
.option('--process <template>', 'Process template: Agile, Scrum, Basic, CMMI', 'Agile')
|
|
56
|
+
.option('--vcs <type>', 'Version control: Git or Tfvc', 'Git')
|
|
57
|
+
.action(async (name, opts) => {
|
|
58
|
+
try {
|
|
59
|
+
const result = await ctx.projects.createProject(name, opts.description, opts.visibility, opts.process, opts.vcs);
|
|
60
|
+
outputResult({ fileName: `project-created-${name}`, data: result, summary: `Created project '${name}'` }, getGlobalFlags(program));
|
|
61
|
+
}
|
|
62
|
+
catch (error) {
|
|
63
|
+
handleCliError(error, 'create project');
|
|
64
|
+
}
|
|
65
|
+
});
|
|
66
|
+
proj
|
|
67
|
+
.command('update')
|
|
68
|
+
.description('Update a project name and/or description')
|
|
69
|
+
.argument('<projectId>', 'Project name or ID')
|
|
70
|
+
.option('-n, --name <name>', 'New project name')
|
|
71
|
+
.option('-d, --description <text>', 'New project description')
|
|
72
|
+
.action(async (projectId, opts) => {
|
|
73
|
+
try {
|
|
74
|
+
const updates = {};
|
|
75
|
+
if (opts.name)
|
|
76
|
+
updates.name = opts.name;
|
|
77
|
+
if (opts.description)
|
|
78
|
+
updates.description = opts.description;
|
|
79
|
+
const result = await ctx.projects.updateProject(projectId, updates);
|
|
80
|
+
outputResult({ fileName: `project-updated-${projectId}`, data: result, summary: `Updated project '${projectId}'` }, getGlobalFlags(program));
|
|
81
|
+
}
|
|
82
|
+
catch (error) {
|
|
83
|
+
handleCliError(error, 'update project');
|
|
84
|
+
}
|
|
85
|
+
});
|
|
86
|
+
proj
|
|
87
|
+
.command('delete')
|
|
88
|
+
.description('Delete a project (DESTRUCTIVE, polls until complete)')
|
|
89
|
+
.argument('<projectId>', 'Project name or ID')
|
|
90
|
+
.action(async (projectId) => {
|
|
91
|
+
try {
|
|
92
|
+
const result = await ctx.projects.deleteProject(projectId);
|
|
93
|
+
outputResult({ fileName: `project-deleted-${projectId}`, data: result, summary: `Deleted project '${projectId}'` }, getGlobalFlags(program));
|
|
94
|
+
}
|
|
95
|
+
catch (error) {
|
|
96
|
+
handleCliError(error, 'delete project');
|
|
97
|
+
}
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
//# sourceMappingURL=project-commands.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-commands.js","sourceRoot":"","sources":["../../../src/cli/commands/project-commands.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Service Connection CLI Commands - list, get, types, CRUD, share
|
|
3
|
+
*/
|
|
4
|
+
import type { Command } from 'commander';
|
|
5
|
+
import type { ServiceContext } from '../../types.js';
|
|
6
|
+
export declare function registerServiceConnectionCommands(program: Command, ctx: ServiceContext): void;
|
|
7
|
+
//# sourceMappingURL=service-connection-commands.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service-connection-commands.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/service-connection-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,iCAAiC,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,cAAc,GAAG,IAAI,CA2H7F"}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Service Connection CLI Commands - list, get, types, CRUD, share
|
|
3
|
+
*/
|
|
4
|
+
import { getGlobalFlags, handleCliError } from '@mcp-consultant-tools/core';
|
|
5
|
+
import { outputResult } from '../output.js';
|
|
6
|
+
export function registerServiceConnectionCommands(program, ctx) {
|
|
7
|
+
const svcConn = program.command('svc-conn').alias('sc').description('Service connection operations');
|
|
8
|
+
svcConn
|
|
9
|
+
.command('list')
|
|
10
|
+
.description('List all service connections in a project')
|
|
11
|
+
.argument('<project>', 'Project name')
|
|
12
|
+
.action(async (project) => {
|
|
13
|
+
try {
|
|
14
|
+
const result = await ctx.serviceConnections.listServiceConnections(project);
|
|
15
|
+
outputResult({ fileName: `svc-conns-${project}`, data: result, summary: `Service connections in '${project}'` }, getGlobalFlags(program));
|
|
16
|
+
}
|
|
17
|
+
catch (error) {
|
|
18
|
+
handleCliError(error, 'list service connections');
|
|
19
|
+
}
|
|
20
|
+
});
|
|
21
|
+
svcConn
|
|
22
|
+
.command('get')
|
|
23
|
+
.description('Get detailed service connection information')
|
|
24
|
+
.argument('<project>', 'Project name')
|
|
25
|
+
.argument('<connectionId>', 'Service connection ID (GUID)')
|
|
26
|
+
.action(async (project, connectionId) => {
|
|
27
|
+
try {
|
|
28
|
+
const result = await ctx.serviceConnections.getServiceConnection(project, connectionId);
|
|
29
|
+
outputResult({ fileName: `svc-conn-${connectionId}`, data: result, summary: `Service connection '${connectionId}'` }, getGlobalFlags(program));
|
|
30
|
+
}
|
|
31
|
+
catch (error) {
|
|
32
|
+
handleCliError(error, 'get service connection');
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
svcConn
|
|
36
|
+
.command('types')
|
|
37
|
+
.description('List available service connection types')
|
|
38
|
+
.action(async () => {
|
|
39
|
+
try {
|
|
40
|
+
const result = await ctx.serviceConnections.getServiceConnectionTypes();
|
|
41
|
+
outputResult({ fileName: 'svc-conn-types', data: result, summary: `Service connection types` }, getGlobalFlags(program));
|
|
42
|
+
}
|
|
43
|
+
catch (error) {
|
|
44
|
+
handleCliError(error, 'get service connection types');
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
svcConn
|
|
48
|
+
.command('create')
|
|
49
|
+
.description('Create a new service connection')
|
|
50
|
+
.argument('<project>', 'Project name')
|
|
51
|
+
.argument('<name>', 'Connection name')
|
|
52
|
+
.argument('<type>', 'Connection type (e.g., AzureRM, GitHub, Docker)')
|
|
53
|
+
.option('-u, --url <url>', 'Service URL')
|
|
54
|
+
.option('-d, --description <text>', 'Connection description')
|
|
55
|
+
.option('--auth <json>', 'Authorization config as JSON (e.g., {"scheme":"Token","parameters":{"apitoken":"..."}})')
|
|
56
|
+
.option('--data <json>', 'Additional data as JSON')
|
|
57
|
+
.action(async (project, name, type, opts) => {
|
|
58
|
+
try {
|
|
59
|
+
const config = {};
|
|
60
|
+
if (opts.url)
|
|
61
|
+
config.url = opts.url;
|
|
62
|
+
if (opts.description)
|
|
63
|
+
config.description = opts.description;
|
|
64
|
+
if (opts.auth)
|
|
65
|
+
config.authorization = JSON.parse(opts.auth);
|
|
66
|
+
if (opts.data)
|
|
67
|
+
config.data = JSON.parse(opts.data);
|
|
68
|
+
const result = await ctx.serviceConnections.createServiceConnection(project, name, type, config);
|
|
69
|
+
outputResult({ fileName: `svc-conn-created-${name}`, data: result, summary: `Created service connection '${name}'` }, getGlobalFlags(program));
|
|
70
|
+
}
|
|
71
|
+
catch (error) {
|
|
72
|
+
handleCliError(error, 'create service connection');
|
|
73
|
+
}
|
|
74
|
+
});
|
|
75
|
+
svcConn
|
|
76
|
+
.command('update')
|
|
77
|
+
.description('Update a service connection')
|
|
78
|
+
.argument('<project>', 'Project name')
|
|
79
|
+
.argument('<connectionId>', 'Service connection ID (GUID)')
|
|
80
|
+
.option('-n, --name <name>', 'New connection name')
|
|
81
|
+
.option('-d, --description <text>', 'New description')
|
|
82
|
+
.option('-u, --url <url>', 'New service URL')
|
|
83
|
+
.option('--data <json>', 'Updated data as JSON')
|
|
84
|
+
.action(async (project, connectionId, opts) => {
|
|
85
|
+
try {
|
|
86
|
+
const updates = {};
|
|
87
|
+
if (opts.name)
|
|
88
|
+
updates.name = opts.name;
|
|
89
|
+
if (opts.description)
|
|
90
|
+
updates.description = opts.description;
|
|
91
|
+
if (opts.url)
|
|
92
|
+
updates.url = opts.url;
|
|
93
|
+
if (opts.data)
|
|
94
|
+
updates.data = JSON.parse(opts.data);
|
|
95
|
+
const result = await ctx.serviceConnections.updateServiceConnection(project, connectionId, updates);
|
|
96
|
+
outputResult({ fileName: `svc-conn-updated-${connectionId}`, data: result, summary: `Updated service connection '${connectionId}'` }, getGlobalFlags(program));
|
|
97
|
+
}
|
|
98
|
+
catch (error) {
|
|
99
|
+
handleCliError(error, 'update service connection');
|
|
100
|
+
}
|
|
101
|
+
});
|
|
102
|
+
svcConn
|
|
103
|
+
.command('share')
|
|
104
|
+
.description('Share a service connection with other projects')
|
|
105
|
+
.argument('<connectionId>', 'Service connection ID (GUID)')
|
|
106
|
+
.argument('<projectIds...>', 'Project IDs to share with')
|
|
107
|
+
.action(async (connectionId, projectIds) => {
|
|
108
|
+
try {
|
|
109
|
+
const result = await ctx.serviceConnections.shareServiceConnection(connectionId, projectIds);
|
|
110
|
+
outputResult({ fileName: `svc-conn-shared-${connectionId}`, data: result, summary: `Shared connection '${connectionId}' with ${projectIds.length} project(s)` }, getGlobalFlags(program));
|
|
111
|
+
}
|
|
112
|
+
catch (error) {
|
|
113
|
+
handleCliError(error, 'share service connection');
|
|
114
|
+
}
|
|
115
|
+
});
|
|
116
|
+
svcConn
|
|
117
|
+
.command('delete')
|
|
118
|
+
.description('Delete a service connection (DESTRUCTIVE)')
|
|
119
|
+
.argument('<project>', 'Project name')
|
|
120
|
+
.argument('<connectionId>', 'Service connection ID (GUID)')
|
|
121
|
+
.action(async (project, connectionId) => {
|
|
122
|
+
try {
|
|
123
|
+
const result = await ctx.serviceConnections.deleteServiceConnection(project, connectionId);
|
|
124
|
+
outputResult({ fileName: `svc-conn-deleted-${connectionId}`, data: result, summary: `Deleted service connection '${connectionId}'` }, getGlobalFlags(program));
|
|
125
|
+
}
|
|
126
|
+
catch (error) {
|
|
127
|
+
handleCliError(error, 'delete service connection');
|
|
128
|
+
}
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
//# sourceMappingURL=service-connection-commands.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service-connection-commands.js","sourceRoot":"","sources":["../../../src/cli/commands/service-connection-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,iCAAiC,CAAC,OAAgB,EAAE,GAAmB;IACrF,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,+BAA+B,CAAC,CAAC;IAErG,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,2CAA2C,CAAC;SACxD,QAAQ,CAAC,WAAW,EAAE,cAAc,CAAC;SACrC,MAAM,CAAC,KAAK,EAAE,OAAe,EAAE,EAAE;QAChC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,kBAAkB,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC;YAC5E,YAAY,CACV,EAAE,QAAQ,EAAE,aAAa,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,2BAA2B,OAAO,GAAG,EAAE,EAClG,cAAc,CAAC,OAAO,CAAC,CACxB,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAAC,cAAc,CAAC,KAAK,EAAE,0BAA0B,CAAC,CAAC;QAAC,CAAC;IACxE,CAAC,CAAC,CAAC;IAEL,OAAO;SACJ,OAAO,CAAC,KAAK,CAAC;SACd,WAAW,CAAC,6CAA6C,CAAC;SAC1D,QAAQ,CAAC,WAAW,EAAE,cAAc,CAAC;SACrC,QAAQ,CAAC,gBAAgB,EAAE,8BAA8B,CAAC;SAC1D,MAAM,CAAC,KAAK,EAAE,OAAe,EAAE,YAAoB,EAAE,EAAE;QACtD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,kBAAkB,CAAC,oBAAoB,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;YACxF,YAAY,CACV,EAAE,QAAQ,EAAE,YAAY,YAAY,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,uBAAuB,YAAY,GAAG,EAAE,EACvG,cAAc,CAAC,OAAO,CAAC,CACxB,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAAC,cAAc,CAAC,KAAK,EAAE,wBAAwB,CAAC,CAAC;QAAC,CAAC;IACtE,CAAC,CAAC,CAAC;IAEL,OAAO;SACJ,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CAAC,yCAAyC,CAAC;SACtD,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,kBAAkB,CAAC,yBAAyB,EAAE,CAAC;YACxE,YAAY,CACV,EAAE,QAAQ,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,0BAA0B,EAAE,EACjF,cAAc,CAAC,OAAO,CAAC,CACxB,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAAC,cAAc,CAAC,KAAK,EAAE,8BAA8B,CAAC,CAAC;QAAC,CAAC;IAC5E,CAAC,CAAC,CAAC;IAEL,OAAO;SACJ,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,iCAAiC,CAAC;SAC9C,QAAQ,CAAC,WAAW,EAAE,cAAc,CAAC;SACrC,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,CAAC;SACrC,QAAQ,CAAC,QAAQ,EAAE,iDAAiD,CAAC;SACrE,MAAM,CAAC,iBAAiB,EAAE,aAAa,CAAC;SACxC,MAAM,CAAC,0BAA0B,EAAE,wBAAwB,CAAC;SAC5D,MAAM,CAAC,eAAe,EAAE,yFAAyF,CAAC;SAClH,MAAM,CAAC,eAAe,EAAE,yBAAyB,CAAC;SAClD,MAAM,CAAC,KAAK,EAAE,OAAe,EAAE,IAAY,EAAE,IAAY,EAAE,IAAS,EAAE,EAAE;QACvE,IAAI,CAAC;YACH,MAAM,MAAM,GAAQ,EAAE,CAAC;YACvB,IAAI,IAAI,CAAC,GAAG;gBAAE,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;YACpC,IAAI,IAAI,CAAC,WAAW;gBAAE,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;YAC5D,IAAI,IAAI,CAAC,IAAI;gBAAE,MAAM,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC5D,IAAI,IAAI,CAAC,IAAI;gBAAE,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnD,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,kBAAkB,CAAC,uBAAuB,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;YACjG,YAAY,CACV,EAAE,QAAQ,EAAE,oBAAoB,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,+BAA+B,IAAI,GAAG,EAAE,EACvG,cAAc,CAAC,OAAO,CAAC,CACxB,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAAC,cAAc,CAAC,KAAK,EAAE,2BAA2B,CAAC,CAAC;QAAC,CAAC;IACzE,CAAC,CAAC,CAAC;IAEL,OAAO;SACJ,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,6BAA6B,CAAC;SAC1C,QAAQ,CAAC,WAAW,EAAE,cAAc,CAAC;SACrC,QAAQ,CAAC,gBAAgB,EAAE,8BAA8B,CAAC;SAC1D,MAAM,CAAC,mBAAmB,EAAE,qBAAqB,CAAC;SAClD,MAAM,CAAC,0BAA0B,EAAE,iBAAiB,CAAC;SACrD,MAAM,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;SAC5C,MAAM,CAAC,eAAe,EAAE,sBAAsB,CAAC;SAC/C,MAAM,CAAC,KAAK,EAAE,OAAe,EAAE,YAAoB,EAAE,IAAS,EAAE,EAAE;QACjE,IAAI,CAAC;YACH,MAAM,OAAO,GAAQ,EAAE,CAAC;YACxB,IAAI,IAAI,CAAC,IAAI;gBAAE,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;YACxC,IAAI,IAAI,CAAC,WAAW;gBAAE,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;YAC7D,IAAI,IAAI,CAAC,GAAG;gBAAE,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;YACrC,IAAI,IAAI,CAAC,IAAI;gBAAE,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACpD,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,kBAAkB,CAAC,uBAAuB,CAAC,OAAO,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;YACpG,YAAY,CACV,EAAE,QAAQ,EAAE,oBAAoB,YAAY,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,+BAA+B,YAAY,GAAG,EAAE,EACvH,cAAc,CAAC,OAAO,CAAC,CACxB,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAAC,cAAc,CAAC,KAAK,EAAE,2BAA2B,CAAC,CAAC;QAAC,CAAC;IACzE,CAAC,CAAC,CAAC;IAEL,OAAO;SACJ,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CAAC,gDAAgD,CAAC;SAC7D,QAAQ,CAAC,gBAAgB,EAAE,8BAA8B,CAAC;SAC1D,QAAQ,CAAC,iBAAiB,EAAE,2BAA2B,CAAC;SACxD,MAAM,CAAC,KAAK,EAAE,YAAoB,EAAE,UAAoB,EAAE,EAAE;QAC3D,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,kBAAkB,CAAC,sBAAsB,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;YAC7F,YAAY,CACV,EAAE,QAAQ,EAAE,mBAAmB,YAAY,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,sBAAsB,YAAY,UAAU,UAAU,CAAC,MAAM,aAAa,EAAE,EAClJ,cAAc,CAAC,OAAO,CAAC,CACxB,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAAC,cAAc,CAAC,KAAK,EAAE,0BAA0B,CAAC,CAAC;QAAC,CAAC;IACxE,CAAC,CAAC,CAAC;IAEL,OAAO;SACJ,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,2CAA2C,CAAC;SACxD,QAAQ,CAAC,WAAW,EAAE,cAAc,CAAC;SACrC,QAAQ,CAAC,gBAAgB,EAAE,8BAA8B,CAAC;SAC1D,MAAM,CAAC,KAAK,EAAE,OAAe,EAAE,YAAoB,EAAE,EAAE;QACtD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,kBAAkB,CAAC,uBAAuB,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;YAC3F,YAAY,CACV,EAAE,QAAQ,EAAE,oBAAoB,YAAY,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,+BAA+B,YAAY,GAAG,EAAE,EACvH,cAAc,CAAC,OAAO,CAAC,CACxB,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAAC,cAAc,CAAC,KAAK,EAAE,2BAA2B,CAAC,CAAC;QAAC,CAAC;IACzE,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Variable Group CLI Commands - list, get, CRUD, set/remove variables
|
|
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,CAsHzF"}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Variable Group CLI Commands - list, get, CRUD, set/remove variables
|
|
3
|
+
*/
|
|
4
|
+
import { getGlobalFlags, handleCliError } from '@mcp-consultant-tools/core';
|
|
5
|
+
import { outputResult } from '../output.js';
|
|
6
|
+
export function registerVariableGroupCommands(program, ctx) {
|
|
7
|
+
const varGroup = program.command('var-group').alias('vg').description('Variable group operations');
|
|
8
|
+
varGroup
|
|
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.variableGroups.getVariableGroups(project);
|
|
15
|
+
outputResult({ fileName: `var-groups-${project}`, data: result, summary: `Variable groups in '${project}'` }, getGlobalFlags(program));
|
|
16
|
+
}
|
|
17
|
+
catch (error) {
|
|
18
|
+
handleCliError(error, 'list variable groups');
|
|
19
|
+
}
|
|
20
|
+
});
|
|
21
|
+
varGroup
|
|
22
|
+
.command('get')
|
|
23
|
+
.description('Get detailed variable group information')
|
|
24
|
+
.argument('<project>', 'Project name')
|
|
25
|
+
.argument('<groupId>', 'Variable group ID')
|
|
26
|
+
.action(async (project, groupId) => {
|
|
27
|
+
try {
|
|
28
|
+
const result = await ctx.variableGroups.getVariableGroup(project, parseInt(groupId));
|
|
29
|
+
outputResult({ fileName: `var-group-${groupId}`, data: result, summary: `Variable group #${groupId}` }, getGlobalFlags(program));
|
|
30
|
+
}
|
|
31
|
+
catch (error) {
|
|
32
|
+
handleCliError(error, 'get variable group');
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
varGroup
|
|
36
|
+
.command('create')
|
|
37
|
+
.description('Create a new variable group')
|
|
38
|
+
.argument('<project>', 'Project name')
|
|
39
|
+
.argument('<name>', 'Variable group name')
|
|
40
|
+
.option('-d, --description <text>', 'Group description')
|
|
41
|
+
.option('--variables <json>', 'Initial variables as JSON (e.g., {"VAR1":{"value":"val1"},"SECRET":{"value":"s","isSecret":true}})')
|
|
42
|
+
.action(async (project, name, opts) => {
|
|
43
|
+
try {
|
|
44
|
+
const variables = opts.variables ? JSON.parse(opts.variables) : undefined;
|
|
45
|
+
const result = await ctx.variableGroups.createVariableGroup(project, name, opts.description, variables);
|
|
46
|
+
outputResult({ fileName: `var-group-created-${name}`, data: result, summary: `Created variable group '${name}'` }, getGlobalFlags(program));
|
|
47
|
+
}
|
|
48
|
+
catch (error) {
|
|
49
|
+
handleCliError(error, 'create variable group');
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
varGroup
|
|
53
|
+
.command('update')
|
|
54
|
+
.description('Update variable group metadata')
|
|
55
|
+
.argument('<project>', 'Project name')
|
|
56
|
+
.argument('<groupId>', 'Variable group ID')
|
|
57
|
+
.option('-n, --name <name>', 'New group name')
|
|
58
|
+
.option('-d, --description <text>', 'New description')
|
|
59
|
+
.action(async (project, groupId, opts) => {
|
|
60
|
+
try {
|
|
61
|
+
const updates = {};
|
|
62
|
+
if (opts.name)
|
|
63
|
+
updates.name = opts.name;
|
|
64
|
+
if (opts.description)
|
|
65
|
+
updates.description = opts.description;
|
|
66
|
+
const result = await ctx.variableGroups.updateVariableGroupMetadata(project, parseInt(groupId), updates);
|
|
67
|
+
outputResult({ fileName: `var-group-updated-${groupId}`, data: result, summary: `Updated variable group #${groupId}` }, getGlobalFlags(program));
|
|
68
|
+
}
|
|
69
|
+
catch (error) {
|
|
70
|
+
handleCliError(error, 'update variable group');
|
|
71
|
+
}
|
|
72
|
+
});
|
|
73
|
+
varGroup
|
|
74
|
+
.command('set-var')
|
|
75
|
+
.description('Set a variable in a variable group')
|
|
76
|
+
.argument('<project>', 'Project name')
|
|
77
|
+
.argument('<groupId>', 'Variable group ID')
|
|
78
|
+
.argument('<varName>', 'Variable name')
|
|
79
|
+
.argument('<value>', 'Variable value')
|
|
80
|
+
.option('-s, --secret', 'Mark variable as secret')
|
|
81
|
+
.action(async (project, groupId, varName, value, opts) => {
|
|
82
|
+
try {
|
|
83
|
+
const result = await ctx.variableGroups.setVariable(project, parseInt(groupId), varName, value, opts.secret || false);
|
|
84
|
+
outputResult({ fileName: `var-set-${groupId}-${varName}`, data: result, summary: `Set variable '${varName}' in group #${groupId}` }, getGlobalFlags(program));
|
|
85
|
+
}
|
|
86
|
+
catch (error) {
|
|
87
|
+
handleCliError(error, 'set variable');
|
|
88
|
+
}
|
|
89
|
+
});
|
|
90
|
+
varGroup
|
|
91
|
+
.command('remove-var')
|
|
92
|
+
.description('Remove a variable from a variable group')
|
|
93
|
+
.argument('<project>', 'Project name')
|
|
94
|
+
.argument('<groupId>', 'Variable group ID')
|
|
95
|
+
.argument('<varName>', 'Variable name to remove')
|
|
96
|
+
.action(async (project, groupId, varName) => {
|
|
97
|
+
try {
|
|
98
|
+
const result = await ctx.variableGroups.removeVariable(project, parseInt(groupId), varName);
|
|
99
|
+
outputResult({ fileName: `var-removed-${groupId}-${varName}`, data: result, summary: `Removed variable '${varName}' from group #${groupId}` }, getGlobalFlags(program));
|
|
100
|
+
}
|
|
101
|
+
catch (error) {
|
|
102
|
+
handleCliError(error, 'remove variable');
|
|
103
|
+
}
|
|
104
|
+
});
|
|
105
|
+
varGroup
|
|
106
|
+
.command('delete')
|
|
107
|
+
.description('Delete a variable group (DESTRUCTIVE)')
|
|
108
|
+
.argument('<project>', 'Project name')
|
|
109
|
+
.argument('<groupId>', 'Variable group ID')
|
|
110
|
+
.action(async (project, groupId) => {
|
|
111
|
+
try {
|
|
112
|
+
const result = await ctx.variableGroups.deleteVariableGroup(project, parseInt(groupId));
|
|
113
|
+
outputResult({ fileName: `var-group-deleted-${groupId}`, data: result, summary: `Deleted variable group #${groupId}` }, getGlobalFlags(program));
|
|
114
|
+
}
|
|
115
|
+
catch (error) {
|
|
116
|
+
handleCliError(error, 'delete variable group');
|
|
117
|
+
}
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
//# 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":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI output helper for azure-devops-admin 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-admin 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-admin-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,sBAAsB,CAAC;AAEzC,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 @@
|
|
|
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-admin CLI
|
|
4
|
+
*
|
|
5
|
+
* Command-line interface for Azure DevOps Admin 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-admin-cli',
|
|
13
|
+
description: 'Azure DevOps Admin CLI - pipelines, service connections, agent pools, environments',
|
|
14
|
+
version: '27.0.0',
|
|
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
|
package/build/cli.js.map
ADDED
|
@@ -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,mBAAmB;IACzB,WAAW,EAAE,oFAAoF;IACjG,OAAO,EAAE,QAAQ;CAClB,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 @@
|
|
|
1
|
+
{"version":3,"file":"context-factory.d.ts","sourceRoot":"","sources":["../src/context-factory.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,cAAc,EAAqC,MAAM,YAAY,CAAC;AAGpF,YAAY,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5D,wBAAgB,oBAAoB,IAAI,cAAc,CA8ErD"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared service context factory - used by both MCP server and CLI.
|
|
3
|
+
*/
|
|
4
|
+
import { AdminClient } from './services/admin-client.js';
|
|
5
|
+
import { PipelineService } from './services/pipeline-service.js';
|
|
6
|
+
import { ServiceConnectionService } from './services/service-connection-service.js';
|
|
7
|
+
import { VariableGroupService } from './services/variable-group-service.js';
|
|
8
|
+
import { AgentPoolService } from './services/agent-pool-service.js';
|
|
9
|
+
import { EnvironmentService } from './services/environment-service.js';
|
|
10
|
+
import { ClassificationService } from './services/classification-service.js';
|
|
11
|
+
import { ArtifactFeedService } from './services/artifact-feed-service.js';
|
|
12
|
+
import { ProjectService } from './services/project-service.js';
|
|
13
|
+
import { resolveAuthConfig } from './ado-auth-provider.js';
|
|
14
|
+
export function createServiceContext() {
|
|
15
|
+
let client = null;
|
|
16
|
+
function getClient() {
|
|
17
|
+
if (!client) {
|
|
18
|
+
const missingConfig = [];
|
|
19
|
+
if (!process.env.AZUREDEVOPS_ORGANIZATION)
|
|
20
|
+
missingConfig.push('AZUREDEVOPS_ORGANIZATION');
|
|
21
|
+
if (!process.env.AZUREDEVOPS_PROJECTS)
|
|
22
|
+
missingConfig.push('AZUREDEVOPS_PROJECTS');
|
|
23
|
+
if (missingConfig.length > 0) {
|
|
24
|
+
throw new Error(`Missing required Azure DevOps configuration: ${missingConfig.join(', ')}`);
|
|
25
|
+
}
|
|
26
|
+
// Resolve auth mode (Entra ID or PAT) from environment variables
|
|
27
|
+
const authConfig = resolveAuthConfig();
|
|
28
|
+
const config = {
|
|
29
|
+
organization: process.env.AZUREDEVOPS_ORGANIZATION,
|
|
30
|
+
pat: authConfig.mode === 'pat' ? authConfig.pat : undefined,
|
|
31
|
+
authMode: authConfig.mode,
|
|
32
|
+
projects: process.env.AZUREDEVOPS_PROJECTS.split(',').map(p => p.trim()).filter(p => p),
|
|
33
|
+
apiVersion: process.env.AZUREDEVOPS_API_VERSION || '7.1',
|
|
34
|
+
enablePipelineUpsert: process.env.AZUREDEVOPS_ENABLE_PIPELINE_UPSERT === 'true',
|
|
35
|
+
enablePipelineDelete: process.env.AZUREDEVOPS_ENABLE_PIPELINE_DELETE === 'true',
|
|
36
|
+
enableServiceConnUpsert: process.env.AZUREDEVOPS_ENABLE_SERVICE_CONN_UPSERT === 'true',
|
|
37
|
+
enableServiceConnDelete: process.env.AZUREDEVOPS_ENABLE_SERVICE_CONN_DELETE === 'true',
|
|
38
|
+
enableVariableGroupUpsert: process.env.AZUREDEVOPS_ENABLE_VARIABLE_GROUP_UPSERT === 'true',
|
|
39
|
+
enableVariableGroupDelete: process.env.AZUREDEVOPS_ENABLE_VARIABLE_GROUP_DELETE === 'true',
|
|
40
|
+
enableAgentPoolUpsert: process.env.AZUREDEVOPS_ENABLE_AGENT_POOL_UPSERT === 'true',
|
|
41
|
+
enableAgentPoolDisable: process.env.AZUREDEVOPS_ENABLE_AGENT_POOL_DISABLE === 'true',
|
|
42
|
+
enableEnvironmentUpsert: process.env.AZUREDEVOPS_ENABLE_ENVIRONMENT_UPSERT === 'true',
|
|
43
|
+
enableEnvironmentDelete: process.env.AZUREDEVOPS_ENABLE_ENVIRONMENT_DELETE === 'true',
|
|
44
|
+
enableClassificationNodeUpsert: process.env.AZUREDEVOPS_ENABLE_CLASSIFICATION_NODE_UPSERT === 'true',
|
|
45
|
+
enableClassificationNodeDelete: process.env.AZUREDEVOPS_ENABLE_CLASSIFICATION_NODE_DELETE === 'true',
|
|
46
|
+
enableProjectUpsert: process.env.AZUREDEVOPS_ENABLE_PROJECT_UPSERT === 'true',
|
|
47
|
+
enableProjectDelete: process.env.AZUREDEVOPS_ENABLE_PROJECT_DELETE === 'true',
|
|
48
|
+
feeds: process.env.AZUREDEVOPS_FEEDS
|
|
49
|
+
? process.env.AZUREDEVOPS_FEEDS.split(',').map(f => f.trim()).filter(f => f)
|
|
50
|
+
: undefined,
|
|
51
|
+
};
|
|
52
|
+
client = new AdminClient(config, authConfig);
|
|
53
|
+
console.error(`Azure DevOps Admin service initialized (auth: ${authConfig.mode})`);
|
|
54
|
+
}
|
|
55
|
+
return client;
|
|
56
|
+
}
|
|
57
|
+
const tierFlags = {
|
|
58
|
+
enablePipelineUpsert: process.env.AZUREDEVOPS_ENABLE_PIPELINE_UPSERT === 'true',
|
|
59
|
+
enablePipelineDelete: process.env.AZUREDEVOPS_ENABLE_PIPELINE_DELETE === 'true',
|
|
60
|
+
enableServiceConnUpsert: process.env.AZUREDEVOPS_ENABLE_SERVICE_CONN_UPSERT === 'true',
|
|
61
|
+
enableServiceConnDelete: process.env.AZUREDEVOPS_ENABLE_SERVICE_CONN_DELETE === 'true',
|
|
62
|
+
enableVariableGroupUpsert: process.env.AZUREDEVOPS_ENABLE_VARIABLE_GROUP_UPSERT === 'true',
|
|
63
|
+
enableVariableGroupDelete: process.env.AZUREDEVOPS_ENABLE_VARIABLE_GROUP_DELETE === 'true',
|
|
64
|
+
enableAgentPoolUpsert: process.env.AZUREDEVOPS_ENABLE_AGENT_POOL_UPSERT === 'true',
|
|
65
|
+
enableAgentPoolDisable: process.env.AZUREDEVOPS_ENABLE_AGENT_POOL_DISABLE === 'true',
|
|
66
|
+
enableEnvironmentUpsert: process.env.AZUREDEVOPS_ENABLE_ENVIRONMENT_UPSERT === 'true',
|
|
67
|
+
enableEnvironmentDelete: process.env.AZUREDEVOPS_ENABLE_ENVIRONMENT_DELETE === 'true',
|
|
68
|
+
enableClassificationNodeUpsert: process.env.AZUREDEVOPS_ENABLE_CLASSIFICATION_NODE_UPSERT === 'true',
|
|
69
|
+
enableClassificationNodeDelete: process.env.AZUREDEVOPS_ENABLE_CLASSIFICATION_NODE_DELETE === 'true',
|
|
70
|
+
enableProjectUpsert: process.env.AZUREDEVOPS_ENABLE_PROJECT_UPSERT === 'true',
|
|
71
|
+
enableProjectDelete: process.env.AZUREDEVOPS_ENABLE_PROJECT_DELETE === 'true',
|
|
72
|
+
};
|
|
73
|
+
return {
|
|
74
|
+
get client() { return getClient(); },
|
|
75
|
+
get pipelines() { return new PipelineService(getClient()); },
|
|
76
|
+
get serviceConnections() { return new ServiceConnectionService(getClient()); },
|
|
77
|
+
get variableGroups() { return new VariableGroupService(getClient()); },
|
|
78
|
+
get agentPools() { return new AgentPoolService(getClient()); },
|
|
79
|
+
get environments() { return new EnvironmentService(getClient()); },
|
|
80
|
+
get classification() { return new ClassificationService(getClient()); },
|
|
81
|
+
get artifactFeeds() { return new ArtifactFeedService(getClient()); },
|
|
82
|
+
get projects() { return new ProjectService(getClient()); },
|
|
83
|
+
tierFlags,
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
//# 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
|
@@ -13,4 +13,6 @@
|
|
|
13
13
|
export declare function registerAzureDevOpsAdminTools(server: any): void;
|
|
14
14
|
export { AdminClient } from './services/admin-client.js';
|
|
15
15
|
export type { AzureDevOpsAdminConfig, ServiceContext, TierFlags } from './types.js';
|
|
16
|
+
export { AdoAuthProvider, resolveAuthConfig } from './ado-auth-provider.js';
|
|
17
|
+
export type { AdoAuthConfig, AuthMode } from './ado-auth-provider.js';
|
|
16
18
|
//# sourceMappingURL=index.d.ts.map
|
package/build/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;;;;GAMG;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;;;;GAMG;AAwGH;;;GAGG;AACH,wBAAgB,6BAA6B,CAAC,MAAM,EAAE,GAAG,GAAG,IAAI,CAG/D;AAGD,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,YAAY,EAAE,sBAAsB,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACpF,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC5E,YAAY,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC"}
|