@mcp-consultant-tools/azure-devops 34.0.0 → 35.0.0-beta.2
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/cli/commands/build-commands.d.ts.map +1 -1
- package/build/cli/commands/build-commands.js +27 -0
- package/build/cli/commands/build-commands.js.map +1 -1
- package/build/cli/commands/git-commands.d.ts +7 -0
- package/build/cli/commands/git-commands.d.ts.map +1 -0
- package/build/cli/commands/git-commands.js +68 -0
- package/build/cli/commands/git-commands.js.map +1 -0
- package/build/cli/commands/index.d.ts +1 -0
- package/build/cli/commands/index.d.ts.map +1 -1
- package/build/cli/commands/index.js +3 -0
- package/build/cli/commands/index.js.map +1 -1
- package/build/cli/commands/variable-group-commands.d.ts +1 -1
- package/build/cli/commands/variable-group-commands.d.ts.map +1 -1
- package/build/cli/commands/variable-group-commands.js +86 -1
- package/build/cli/commands/variable-group-commands.js.map +1 -1
- package/build/context-factory.d.ts.map +1 -1
- package/build/context-factory.js +3 -1
- package/build/context-factory.js.map +1 -1
- package/build/services/build-issues.d.ts +66 -0
- package/build/services/build-issues.d.ts.map +1 -0
- package/build/services/build-issues.js +70 -0
- package/build/services/build-issues.js.map +1 -0
- package/build/services/build-service.d.ts +6 -0
- package/build/services/build-service.d.ts.map +1 -1
- package/build/services/build-service.js +24 -0
- package/build/services/build-service.js.map +1 -1
- package/build/services/git-service.d.ts +97 -0
- package/build/services/git-service.d.ts.map +1 -0
- package/build/services/git-service.js +123 -0
- package/build/services/git-service.js.map +1 -0
- 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/variable-group-compare.d.ts +80 -0
- package/build/services/variable-group-compare.d.ts.map +1 -0
- package/build/services/variable-group-compare.js +101 -0
- package/build/services/variable-group-compare.js.map +1 -0
- package/build/services/variable-group-service.d.ts +31 -0
- package/build/services/variable-group-service.d.ts.map +1 -1
- package/build/services/variable-group-service.js +110 -0
- package/build/services/variable-group-service.js.map +1 -1
- package/build/tools/build-tools.d.ts.map +1 -1
- package/build/tools/build-tools.js +17 -3
- package/build/tools/build-tools.js.map +1 -1
- package/build/tools/checklist-tools.d.ts.map +1 -1
- package/build/tools/checklist-tools.js +10 -8
- package/build/tools/checklist-tools.js.map +1 -1
- package/build/tools/configuration-tools.d.ts.map +1 -1
- package/build/tools/configuration-tools.js +3 -1
- package/build/tools/configuration-tools.js.map +1 -1
- package/build/tools/git-tools.d.ts +3 -0
- package/build/tools/git-tools.d.ts.map +1 -0
- package/build/tools/git-tools.js +37 -0
- package/build/tools/git-tools.js.map +1 -0
- package/build/tools/index.d.ts +1 -0
- package/build/tools/index.d.ts.map +1 -1
- package/build/tools/index.js +8 -3
- package/build/tools/index.js.map +1 -1
- package/build/tools/pull-request-tools.d.ts.map +1 -1
- package/build/tools/pull-request-tools.js +17 -13
- package/build/tools/pull-request-tools.js.map +1 -1
- package/build/tools/sync-tools.d.ts.map +1 -1
- package/build/tools/sync-tools.js +18 -8
- package/build/tools/sync-tools.js.map +1 -1
- package/build/tools/test-tools.d.ts.map +1 -1
- package/build/tools/test-tools.js +7 -7
- package/build/tools/test-tools.js.map +1 -1
- package/build/tools/variable-group-tools.d.ts.map +1 -1
- package/build/tools/variable-group-tools.js +45 -3
- package/build/tools/variable-group-tools.js.map +1 -1
- package/build/tools/visualize-tools.d.ts.map +1 -1
- package/build/tools/visualize-tools.js +5 -1
- package/build/tools/visualize-tools.js.map +1 -1
- package/build/tools/wiki-tools.d.ts.map +1 -1
- package/build/tools/wiki-tools.js +14 -12
- package/build/tools/wiki-tools.js.map +1 -1
- package/build/tools/work-item-tools.d.ts.map +1 -1
- package/build/tools/work-item-tools.js +11 -8
- package/build/tools/work-item-tools.js.map +1 -1
- package/build/types.d.ts +2 -0
- package/build/types.d.ts.map +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build-commands.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/build-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,qBAAqB,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,cAAc,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"build-commands.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/build-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,qBAAqB,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,cAAc,GAAG,IAAI,CAmFjF"}
|
|
@@ -55,5 +55,32 @@ export function registerBuildCommands(program, ctx) {
|
|
|
55
55
|
handleCliError(error, 'get build logs');
|
|
56
56
|
}
|
|
57
57
|
});
|
|
58
|
+
build
|
|
59
|
+
.command('issues')
|
|
60
|
+
.description("Extract warnings and errors from a build's timeline")
|
|
61
|
+
.argument('<project>', 'Project name')
|
|
62
|
+
.argument('<buildId>', 'Build ID')
|
|
63
|
+
.option('-s, --severity <severity>', 'Which issues to list: all, errors, warnings', 'all')
|
|
64
|
+
.action(async (project, buildId, opts) => {
|
|
65
|
+
try {
|
|
66
|
+
const severity = opts.severity ?? 'all';
|
|
67
|
+
if (!['all', 'errors', 'warnings'].includes(severity)) {
|
|
68
|
+
throw new Error(`--severity must be one of: all, errors, warnings (got '${severity}')`);
|
|
69
|
+
}
|
|
70
|
+
const id = Number(buildId);
|
|
71
|
+
if (!Number.isInteger(id) || id <= 0) {
|
|
72
|
+
throw new Error(`buildId must be a positive integer, got '${buildId}'`);
|
|
73
|
+
}
|
|
74
|
+
const result = await ctx.build.getBuildIssues(project, id, severity);
|
|
75
|
+
outputResult({
|
|
76
|
+
fileName: `build-${buildId}-issues`,
|
|
77
|
+
data: result,
|
|
78
|
+
summary: `Build #${buildId}: ${result.totalErrors} error(s), ${result.totalWarnings} warning(s)`,
|
|
79
|
+
}, getGlobalFlags(program));
|
|
80
|
+
}
|
|
81
|
+
catch (error) {
|
|
82
|
+
handleCliError(error, 'get build issues');
|
|
83
|
+
}
|
|
84
|
+
});
|
|
58
85
|
}
|
|
59
86
|
//# sourceMappingURL=build-commands.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build-commands.js","sourceRoot":"","sources":["../../../src/cli/commands/build-commands.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"build-commands.js","sourceRoot":"","sources":["../../../src/cli/commands/build-commands.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Git CLI Commands - 2 commands
|
|
3
|
+
*/
|
|
4
|
+
import type { Command } from 'commander';
|
|
5
|
+
import type { ServiceContext } from '../../types.js';
|
|
6
|
+
export declare function registerGitCommands(program: Command, ctx: ServiceContext): void;
|
|
7
|
+
//# sourceMappingURL=git-commands.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git-commands.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/git-commands.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEzC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAmBrD,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,cAAc,GAAG,IAAI,CA+C/E"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Git CLI Commands - 2 commands
|
|
3
|
+
*/
|
|
4
|
+
import { getGlobalFlags, handleCliError } from '@mcp-consultant-tools/core';
|
|
5
|
+
import { outputResult } from '../output.js';
|
|
6
|
+
/**
|
|
7
|
+
* Parse a positive integer, throwing on anything else.
|
|
8
|
+
*
|
|
9
|
+
* Call this BEFORE reaching into `ctx`: the service getters construct a client
|
|
10
|
+
* and throw on missing config, so a parse evaluated inside the service-call
|
|
11
|
+
* argument list never runs, and a typo surfaces as a credentials error.
|
|
12
|
+
*/
|
|
13
|
+
function parsePositiveInt(value, flag) {
|
|
14
|
+
if (value === undefined)
|
|
15
|
+
return undefined;
|
|
16
|
+
const parsed = Number(value);
|
|
17
|
+
if (!Number.isInteger(parsed) || parsed <= 0) {
|
|
18
|
+
throw new Error(`${flag} must be a positive integer, got '${value}'`);
|
|
19
|
+
}
|
|
20
|
+
return parsed;
|
|
21
|
+
}
|
|
22
|
+
export function registerGitCommands(program, ctx) {
|
|
23
|
+
const git = program.command('git').description('Git repository operations');
|
|
24
|
+
git
|
|
25
|
+
.command('branches')
|
|
26
|
+
.description('List branches in a repository')
|
|
27
|
+
.argument('<project>', 'Project name')
|
|
28
|
+
.argument('<repositoryId>', 'Repository name or ID')
|
|
29
|
+
.option('-f, --filter <prefix>', "Ref prefix filter (default 'heads/')")
|
|
30
|
+
.option('--max-results <n>', 'Maximum branches to return (default 200)')
|
|
31
|
+
.action(async (project, repositoryId, opts) => {
|
|
32
|
+
try {
|
|
33
|
+
const maxResults = parsePositiveInt(opts.maxResults, '--max-results');
|
|
34
|
+
const result = await ctx.git.listBranches(project, repositoryId, {
|
|
35
|
+
filter: opts.filter,
|
|
36
|
+
maxResults,
|
|
37
|
+
});
|
|
38
|
+
outputResult({ fileName: `branches-${repositoryId}`, data: result, summary: `${result.branchCount} branch(es) in '${repositoryId}'${result.truncated ? ' (truncated)' : ''}` }, getGlobalFlags(program));
|
|
39
|
+
}
|
|
40
|
+
catch (error) {
|
|
41
|
+
handleCliError(error, 'list branches');
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
git
|
|
45
|
+
.command('latest-release')
|
|
46
|
+
.description("Find the newest 'release/*' branch by version (digit-aware natural sort)")
|
|
47
|
+
.argument('<project>', 'Project name')
|
|
48
|
+
.argument('<repositoryId>', 'Repository name or ID')
|
|
49
|
+
.option('-p, --prefix <prefix>', "Branch prefix (default 'release/')")
|
|
50
|
+
.action(async (project, repositoryId, opts) => {
|
|
51
|
+
try {
|
|
52
|
+
const result = await ctx.git.getLatestReleaseBranch(project, repositoryId, {
|
|
53
|
+
prefix: opts.prefix,
|
|
54
|
+
});
|
|
55
|
+
outputResult({
|
|
56
|
+
fileName: `latest-release-${repositoryId}`,
|
|
57
|
+
data: result,
|
|
58
|
+
summary: result.branchName
|
|
59
|
+
? `Latest release branch: ${result.branchName} (${result.candidateCount} candidate(s))`
|
|
60
|
+
: `No version-like release branch found in '${repositoryId}'`,
|
|
61
|
+
}, getGlobalFlags(program));
|
|
62
|
+
}
|
|
63
|
+
catch (error) {
|
|
64
|
+
handleCliError(error, 'find latest release branch');
|
|
65
|
+
}
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=git-commands.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git-commands.js","sourceRoot":"","sources":["../../../src/cli/commands/git-commands.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,6 +8,7 @@ export { registerWikiCommands } from './wiki-commands.js';
|
|
|
8
8
|
export { registerWorkItemCommands } from './work-item-commands.js';
|
|
9
9
|
export { registerPullRequestCommands } from './pull-request-commands.js';
|
|
10
10
|
export { registerBuildCommands } from './build-commands.js';
|
|
11
|
+
export { registerGitCommands } from './git-commands.js';
|
|
11
12
|
export { registerVariableGroupCommands } from './variable-group-commands.js';
|
|
12
13
|
export { registerSyncCommands } from './sync-commands.js';
|
|
13
14
|
export { registerConfigurationCommands } from './configuration-commands.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAYrD,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,cAAc,GAAG,IAAI,CAW/E;AAED,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAC;AACzE,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,6BAA6B,EAAE,MAAM,8BAA8B,CAAC;AAC7E,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,6BAA6B,EAAE,MAAM,6BAA6B,CAAC;AAC5E,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC"}
|
|
@@ -5,6 +5,7 @@ import { registerWikiCommands } from './wiki-commands.js';
|
|
|
5
5
|
import { registerWorkItemCommands } from './work-item-commands.js';
|
|
6
6
|
import { registerPullRequestCommands } from './pull-request-commands.js';
|
|
7
7
|
import { registerBuildCommands } from './build-commands.js';
|
|
8
|
+
import { registerGitCommands } from './git-commands.js';
|
|
8
9
|
import { registerVariableGroupCommands } from './variable-group-commands.js';
|
|
9
10
|
import { registerSyncCommands } from './sync-commands.js';
|
|
10
11
|
import { registerConfigurationCommands } from './configuration-commands.js';
|
|
@@ -16,6 +17,7 @@ export function registerAllCommands(program, ctx) {
|
|
|
16
17
|
registerWorkItemCommands(program, ctx);
|
|
17
18
|
registerPullRequestCommands(program, ctx);
|
|
18
19
|
registerBuildCommands(program, ctx);
|
|
20
|
+
registerGitCommands(program, ctx);
|
|
19
21
|
registerVariableGroupCommands(program, ctx);
|
|
20
22
|
registerSyncCommands(program, ctx);
|
|
21
23
|
registerChecklistCommands(program, ctx);
|
|
@@ -25,6 +27,7 @@ export { registerWikiCommands } from './wiki-commands.js';
|
|
|
25
27
|
export { registerWorkItemCommands } from './work-item-commands.js';
|
|
26
28
|
export { registerPullRequestCommands } from './pull-request-commands.js';
|
|
27
29
|
export { registerBuildCommands } from './build-commands.js';
|
|
30
|
+
export { registerGitCommands } from './git-commands.js';
|
|
28
31
|
export { registerVariableGroupCommands } from './variable-group-commands.js';
|
|
29
32
|
export { registerSyncCommands } from './sync-commands.js';
|
|
30
33
|
export { registerConfigurationCommands } from './configuration-commands.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cli/commands/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAC;AACzE,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,6BAA6B,EAAE,MAAM,8BAA8B,CAAC;AAC7E,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,6BAA6B,EAAE,MAAM,6BAA6B,CAAC;AAC5E,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAE1D,MAAM,UAAU,mBAAmB,CAAC,OAAgB,EAAE,GAAmB;IACvE,6BAA6B,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IAC5C,oBAAoB,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IACnC,wBAAwB,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IACvC,2BAA2B,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IAC1C,qBAAqB,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IACpC,6BAA6B,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IAC5C,oBAAoB,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IACnC,yBAAyB,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IACxC,oBAAoB,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;AACrC,CAAC;AAED,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAC;AACzE,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,6BAA6B,EAAE,MAAM,8BAA8B,CAAC;AAC7E,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,6BAA6B,EAAE,MAAM,6BAA6B,CAAC;AAC5E,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cli/commands/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAC;AACzE,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,6BAA6B,EAAE,MAAM,8BAA8B,CAAC;AAC7E,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,6BAA6B,EAAE,MAAM,6BAA6B,CAAC;AAC5E,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAE1D,MAAM,UAAU,mBAAmB,CAAC,OAAgB,EAAE,GAAmB;IACvE,6BAA6B,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IAC5C,oBAAoB,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IACnC,wBAAwB,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IACvC,2BAA2B,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IAC1C,qBAAqB,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IACpC,mBAAmB,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IAClC,6BAA6B,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IAC5C,oBAAoB,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IACnC,yBAAyB,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IACxC,oBAAoB,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;AACrC,CAAC;AAED,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAC;AACzE,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,6BAA6B,EAAE,MAAM,8BAA8B,CAAC;AAC7E,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,6BAA6B,EAAE,MAAM,6BAA6B,CAAC;AAC5E,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC"}
|
|
@@ -1 +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;
|
|
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;AAmBrD,wBAAgB,6BAA6B,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,cAAc,GAAG,IAAI,CAuGzF"}
|
|
@@ -1,8 +1,24 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Variable Group CLI Commands -
|
|
2
|
+
* Variable Group CLI Commands - 5 commands
|
|
3
3
|
*/
|
|
4
4
|
import { getGlobalFlags, handleCliError } from '@mcp-consultant-tools/core';
|
|
5
5
|
import { outputResult } from '../output.js';
|
|
6
|
+
/**
|
|
7
|
+
* Parse a positive integer, throwing on anything else.
|
|
8
|
+
*
|
|
9
|
+
* Call this BEFORE reaching into `ctx`: the service getters construct a client
|
|
10
|
+
* and throw on missing config, so a parse evaluated inside the service-call
|
|
11
|
+
* argument list never runs, and a typo surfaces as a credentials error.
|
|
12
|
+
*/
|
|
13
|
+
function parsePositiveInt(value, flag) {
|
|
14
|
+
if (value === undefined)
|
|
15
|
+
return undefined;
|
|
16
|
+
const parsed = Number(value);
|
|
17
|
+
if (!Number.isInteger(parsed) || parsed <= 0) {
|
|
18
|
+
throw new Error(`${flag} must be a positive integer, got '${value}'`);
|
|
19
|
+
}
|
|
20
|
+
return parsed;
|
|
21
|
+
}
|
|
6
22
|
export function registerVariableGroupCommands(program, ctx) {
|
|
7
23
|
const vg = program.command('variable-group').alias('vg').description('Variable group operations');
|
|
8
24
|
vg
|
|
@@ -32,5 +48,74 @@ export function registerVariableGroupCommands(program, ctx) {
|
|
|
32
48
|
handleCliError(error, 'get variable group');
|
|
33
49
|
}
|
|
34
50
|
});
|
|
51
|
+
vg
|
|
52
|
+
.command('compare')
|
|
53
|
+
.description('Compare two variable groups (secret values are never read or shown)')
|
|
54
|
+
.argument('<project>', 'Project name')
|
|
55
|
+
.argument('<groupIdA>', 'First variable group ID')
|
|
56
|
+
.argument('<groupIdB>', 'Second variable group ID')
|
|
57
|
+
.action(async (project, groupIdA, groupIdB) => {
|
|
58
|
+
try {
|
|
59
|
+
const idA = parsePositiveInt(groupIdA, 'groupIdA');
|
|
60
|
+
const idB = parsePositiveInt(groupIdB, 'groupIdB');
|
|
61
|
+
const result = await ctx.variableGroup.compareVariableGroups(project, idA, idB);
|
|
62
|
+
outputResult({
|
|
63
|
+
fileName: `compare-variable-groups-${idA}-${idB}`,
|
|
64
|
+
data: result,
|
|
65
|
+
summary: `${result.valueDifferences.length} value difference(s), ${result.onlyInA.length} only in A, ${result.onlyInB.length} only in B, ${result.secretsSkipped.length} secret(s) skipped`,
|
|
66
|
+
}, getGlobalFlags(program));
|
|
67
|
+
}
|
|
68
|
+
catch (error) {
|
|
69
|
+
handleCliError(error, 'compare variable groups');
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
vg
|
|
73
|
+
.command('compare-environments')
|
|
74
|
+
.description("Diff '<base>-<env>' variable-group families across environments")
|
|
75
|
+
.argument('<project>', 'Project name')
|
|
76
|
+
.option('-n, --name-contains <text>', 'Case-insensitive substring filter on group name')
|
|
77
|
+
.option('--suffixes <list>', "Comma-separated environment suffixes (default '-dev,-development,-qa,-uat,-staging,-stage,-test,-prod,-production')")
|
|
78
|
+
.action(async (project, opts) => {
|
|
79
|
+
try {
|
|
80
|
+
const environmentSuffixes = opts.suffixes
|
|
81
|
+
? String(opts.suffixes).split(',').map((s) => s.trim()).filter(Boolean)
|
|
82
|
+
: undefined;
|
|
83
|
+
const result = await ctx.variableGroup.compareEnvironments(project, {
|
|
84
|
+
nameContains: opts.nameContains,
|
|
85
|
+
environmentSuffixes,
|
|
86
|
+
});
|
|
87
|
+
outputResult({
|
|
88
|
+
fileName: `compare-environments-${project}`,
|
|
89
|
+
data: result,
|
|
90
|
+
summary: `${result.environmentSetCount} environment set(s), ${result.incompleteSets.length} incomplete, ${result.unmatchedGroups.length} unmatched group(s)`,
|
|
91
|
+
}, getGlobalFlags(program));
|
|
92
|
+
}
|
|
93
|
+
catch (error) {
|
|
94
|
+
handleCliError(error, 'compare environments');
|
|
95
|
+
}
|
|
96
|
+
});
|
|
97
|
+
vg
|
|
98
|
+
.command('summary')
|
|
99
|
+
.description('Variable groups with variable/secret counts (never secret values)')
|
|
100
|
+
.argument('<project>', 'Project name')
|
|
101
|
+
.option('-n, --name-contains <text>', 'Case-insensitive substring filter on group name')
|
|
102
|
+
.option('--max-results <n>', 'Maximum groups to return (default 100)')
|
|
103
|
+
.action(async (project, opts) => {
|
|
104
|
+
try {
|
|
105
|
+
const maxResults = parsePositiveInt(opts.maxResults, '--max-results');
|
|
106
|
+
const result = await ctx.variableGroup.getVariableGroupSummaries(project, {
|
|
107
|
+
nameContains: opts.nameContains,
|
|
108
|
+
maxResults,
|
|
109
|
+
});
|
|
110
|
+
outputResult({
|
|
111
|
+
fileName: `variable-group-summary-${project}`,
|
|
112
|
+
data: result,
|
|
113
|
+
summary: `${result.groupCount} group(s), ${result.totals.variableCount} variable(s), ${result.totals.secretCount} secret(s)${result.truncated ? ' (truncated)' : ''}`,
|
|
114
|
+
}, getGlobalFlags(program));
|
|
115
|
+
}
|
|
116
|
+
catch (error) {
|
|
117
|
+
handleCliError(error, 'summarise variable groups');
|
|
118
|
+
}
|
|
119
|
+
});
|
|
35
120
|
}
|
|
36
121
|
//# sourceMappingURL=variable-group-commands.js.map
|
|
@@ -1 +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"}
|
|
1
|
+
{"version":3,"file":"variable-group-commands.js","sourceRoot":"","sources":["../../../src/cli/commands/variable-group-commands.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context-factory.d.ts","sourceRoot":"","sources":["../src/context-factory.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"context-factory.d.ts","sourceRoot":"","sources":["../src/context-factory.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAejD;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,cAAc,CAmErD"}
|
package/build/context-factory.js
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
import { createPiiPipelineFromEnv } from '@mcp-consultant-tools/core';
|
|
6
6
|
import { AzureDevOpsClient } from './azure-devops-client.js';
|
|
7
7
|
import { resolveAuthConfig } from './ado-auth-provider.js';
|
|
8
|
-
import { WikiService, WorkItemService, PullRequestService, BuildService, VariableGroupService, SyncService, ConfigurationService, ChecklistService, TestService, } from './services/index.js';
|
|
8
|
+
import { WikiService, WorkItemService, PullRequestService, BuildService, GitService, VariableGroupService, SyncService, ConfigurationService, ChecklistService, TestService, } from './services/index.js';
|
|
9
9
|
/**
|
|
10
10
|
* Build a ServiceContext from environment variables (lazy client initialization).
|
|
11
11
|
*/
|
|
@@ -50,6 +50,7 @@ export function createServiceContext() {
|
|
|
50
50
|
let workItem = null;
|
|
51
51
|
let pullRequest = null;
|
|
52
52
|
let build = null;
|
|
53
|
+
let git = null;
|
|
53
54
|
let variableGroup = null;
|
|
54
55
|
let sync = null;
|
|
55
56
|
let configuration = null;
|
|
@@ -61,6 +62,7 @@ export function createServiceContext() {
|
|
|
61
62
|
get workItem() { return workItem ??= new WorkItemService(getClient(), piiPipeline); },
|
|
62
63
|
get pullRequest() { return pullRequest ??= new PullRequestService(getClient()); },
|
|
63
64
|
get build() { return build ??= new BuildService(getClient()); },
|
|
65
|
+
get git() { return git ??= new GitService(getClient()); },
|
|
64
66
|
get variableGroup() { return variableGroup ??= new VariableGroupService(getClient()); },
|
|
65
67
|
get sync() { return sync ??= new SyncService(workItem ??= new WorkItemService(getClient(), piiPipeline)); },
|
|
66
68
|
get configuration() { return configuration ??= new ConfigurationService(); },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context-factory.js","sourceRoot":"","sources":["../src/context-factory.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"context-factory.js","sourceRoot":"","sources":["../src/context-factory.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure extraction of warnings/errors from a build timeline.
|
|
3
|
+
*
|
|
4
|
+
* Timeline facts (Microsoft Learn, api-version 7.1):
|
|
5
|
+
* - Each timeline record carries `issues[]`, each with a `message` and a
|
|
6
|
+
* `type` whose ONLY values are the lowercase `error` and `warning`.
|
|
7
|
+
* Matching `"Error"`/`"Warning"` finds nothing and reports a clean build.
|
|
8
|
+
* - Records also carry `errorCount`/`warningCount`. These are independent of
|
|
9
|
+
* `issues[]`: a record can report a count with no corresponding issue entry.
|
|
10
|
+
* The si source summed the counters but only listed records with a non-empty
|
|
11
|
+
* `issues[]`, so the printed detail silently under-represented the totals.
|
|
12
|
+
* We report both, and say plainly when they disagree.
|
|
13
|
+
* - Record `type` (`Stage`/`Job`/`Task`/...) is NOT a documented enum. We pass
|
|
14
|
+
* it through verbatim rather than filtering on it.
|
|
15
|
+
*/
|
|
16
|
+
export interface TimelineIssue {
|
|
17
|
+
type?: string;
|
|
18
|
+
category?: string;
|
|
19
|
+
message?: string;
|
|
20
|
+
data?: Record<string, unknown>;
|
|
21
|
+
}
|
|
22
|
+
export interface TimelineRecord {
|
|
23
|
+
id?: string;
|
|
24
|
+
parentId?: string;
|
|
25
|
+
type?: string;
|
|
26
|
+
name?: string;
|
|
27
|
+
result?: string;
|
|
28
|
+
state?: string;
|
|
29
|
+
errorCount?: number;
|
|
30
|
+
warningCount?: number;
|
|
31
|
+
issues?: TimelineIssue[];
|
|
32
|
+
startTime?: string;
|
|
33
|
+
finishTime?: string;
|
|
34
|
+
}
|
|
35
|
+
export interface ExtractedIssue {
|
|
36
|
+
type: 'error' | 'warning' | 'other';
|
|
37
|
+
category?: string;
|
|
38
|
+
message: string;
|
|
39
|
+
}
|
|
40
|
+
export interface RecordIssues {
|
|
41
|
+
recordName: string;
|
|
42
|
+
recordType: string;
|
|
43
|
+
result?: string;
|
|
44
|
+
issues: ExtractedIssue[];
|
|
45
|
+
}
|
|
46
|
+
export interface BuildIssuesSummary {
|
|
47
|
+
totalErrors: number;
|
|
48
|
+
totalWarnings: number;
|
|
49
|
+
/** Sum of every record's `errorCount`/`warningCount`, independent of `issues[]`. */
|
|
50
|
+
timelineCounters: {
|
|
51
|
+
errors: number;
|
|
52
|
+
warnings: number;
|
|
53
|
+
};
|
|
54
|
+
/**
|
|
55
|
+
* True when the counters exceed the issues we could actually list — the server
|
|
56
|
+
* counted problems it did not attach messages for. The listed detail is then a
|
|
57
|
+
* subset, not the whole story.
|
|
58
|
+
*/
|
|
59
|
+
countersExceedListedIssues: boolean;
|
|
60
|
+
records: RecordIssues[];
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Collect the issues attached to a timeline, optionally narrowed to one severity.
|
|
64
|
+
*/
|
|
65
|
+
export declare function extractBuildIssues(records: TimelineRecord[], severity?: 'all' | 'errors' | 'warnings'): BuildIssuesSummary;
|
|
66
|
+
//# sourceMappingURL=build-issues.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build-issues.d.ts","sourceRoot":"","sources":["../../src/services/build-issues.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC;AAED,MAAM,WAAW,cAAc;IAC7B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,aAAa,EAAE,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,OAAO,GAAG,SAAS,GAAG,OAAO,CAAC;IACpC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,cAAc,EAAE,CAAC;CAC1B;AAED,MAAM,WAAW,kBAAkB;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,oFAAoF;IACpF,gBAAgB,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IACvD;;;;OAIG;IACH,0BAA0B,EAAE,OAAO,CAAC;IACpC,OAAO,EAAE,YAAY,EAAE,CAAC;CACzB;AASD;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,cAAc,EAAE,EACzB,QAAQ,GAAE,KAAK,GAAG,QAAQ,GAAG,UAAkB,GAC9C,kBAAkB,CA4CpB"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure extraction of warnings/errors from a build timeline.
|
|
3
|
+
*
|
|
4
|
+
* Timeline facts (Microsoft Learn, api-version 7.1):
|
|
5
|
+
* - Each timeline record carries `issues[]`, each with a `message` and a
|
|
6
|
+
* `type` whose ONLY values are the lowercase `error` and `warning`.
|
|
7
|
+
* Matching `"Error"`/`"Warning"` finds nothing and reports a clean build.
|
|
8
|
+
* - Records also carry `errorCount`/`warningCount`. These are independent of
|
|
9
|
+
* `issues[]`: a record can report a count with no corresponding issue entry.
|
|
10
|
+
* The si source summed the counters but only listed records with a non-empty
|
|
11
|
+
* `issues[]`, so the printed detail silently under-represented the totals.
|
|
12
|
+
* We report both, and say plainly when they disagree.
|
|
13
|
+
* - Record `type` (`Stage`/`Job`/`Task`/...) is NOT a documented enum. We pass
|
|
14
|
+
* it through verbatim rather than filtering on it.
|
|
15
|
+
*/
|
|
16
|
+
function classify(issueType) {
|
|
17
|
+
const normalised = (issueType ?? '').toLowerCase();
|
|
18
|
+
if (normalised === 'error')
|
|
19
|
+
return 'error';
|
|
20
|
+
if (normalised === 'warning')
|
|
21
|
+
return 'warning';
|
|
22
|
+
return 'other';
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Collect the issues attached to a timeline, optionally narrowed to one severity.
|
|
26
|
+
*/
|
|
27
|
+
export function extractBuildIssues(records, severity = 'all') {
|
|
28
|
+
let totalErrors = 0;
|
|
29
|
+
let totalWarnings = 0;
|
|
30
|
+
let counterErrors = 0;
|
|
31
|
+
let counterWarnings = 0;
|
|
32
|
+
const out = [];
|
|
33
|
+
for (const record of records) {
|
|
34
|
+
counterErrors += record.errorCount ?? 0;
|
|
35
|
+
counterWarnings += record.warningCount ?? 0;
|
|
36
|
+
const extracted = [];
|
|
37
|
+
for (const issue of record.issues ?? []) {
|
|
38
|
+
const type = classify(issue.type);
|
|
39
|
+
if (type === 'error')
|
|
40
|
+
totalErrors++;
|
|
41
|
+
if (type === 'warning')
|
|
42
|
+
totalWarnings++;
|
|
43
|
+
if (severity === 'errors' && type !== 'error')
|
|
44
|
+
continue;
|
|
45
|
+
if (severity === 'warnings' && type !== 'warning')
|
|
46
|
+
continue;
|
|
47
|
+
extracted.push({
|
|
48
|
+
type,
|
|
49
|
+
category: issue.category,
|
|
50
|
+
message: issue.message ?? '',
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
if (extracted.length > 0) {
|
|
54
|
+
out.push({
|
|
55
|
+
recordName: record.name ?? '(unnamed)',
|
|
56
|
+
recordType: record.type ?? '(unknown)',
|
|
57
|
+
result: record.result,
|
|
58
|
+
issues: extracted,
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
return {
|
|
63
|
+
totalErrors,
|
|
64
|
+
totalWarnings,
|
|
65
|
+
timelineCounters: { errors: counterErrors, warnings: counterWarnings },
|
|
66
|
+
countersExceedListedIssues: counterErrors > totalErrors || counterWarnings > totalWarnings,
|
|
67
|
+
records: out,
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=build-issues.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build-issues.js","sourceRoot":"","sources":["../../src/services/build-issues.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAkDH,SAAS,QAAQ,CAAC,SAA6B;IAC7C,MAAM,UAAU,GAAG,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IACnD,IAAI,UAAU,KAAK,OAAO;QAAE,OAAO,OAAO,CAAC;IAC3C,IAAI,UAAU,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC/C,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAChC,OAAyB,EACzB,WAA0C,KAAK;IAE/C,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,IAAI,aAAa,GAAG,CAAC,CAAC;IACtB,IAAI,aAAa,GAAG,CAAC,CAAC;IACtB,IAAI,eAAe,GAAG,CAAC,CAAC;IACxB,MAAM,GAAG,GAAmB,EAAE,CAAC;IAE/B,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,aAAa,IAAI,MAAM,CAAC,UAAU,IAAI,CAAC,CAAC;QACxC,eAAe,IAAI,MAAM,CAAC,YAAY,IAAI,CAAC,CAAC;QAE5C,MAAM,SAAS,GAAqB,EAAE,CAAC;QACvC,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC;YACxC,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAClC,IAAI,IAAI,KAAK,OAAO;gBAAE,WAAW,EAAE,CAAC;YACpC,IAAI,IAAI,KAAK,SAAS;gBAAE,aAAa,EAAE,CAAC;YAExC,IAAI,QAAQ,KAAK,QAAQ,IAAI,IAAI,KAAK,OAAO;gBAAE,SAAS;YACxD,IAAI,QAAQ,KAAK,UAAU,IAAI,IAAI,KAAK,SAAS;gBAAE,SAAS;YAE5D,SAAS,CAAC,IAAI,CAAC;gBACb,IAAI;gBACJ,QAAQ,EAAE,KAAK,CAAC,QAAQ;gBACxB,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,EAAE;aAC7B,CAAC,CAAC;QACL,CAAC;QAED,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzB,GAAG,CAAC,IAAI,CAAC;gBACP,UAAU,EAAE,MAAM,CAAC,IAAI,IAAI,WAAW;gBACtC,UAAU,EAAE,MAAM,CAAC,IAAI,IAAI,WAAW;gBACtC,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,MAAM,EAAE,SAAS;aAClB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO;QACL,WAAW;QACX,aAAa;QACb,gBAAgB,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,eAAe,EAAE;QACtE,0BAA0B,EAAE,aAAa,GAAG,WAAW,IAAI,eAAe,GAAG,aAAa;QAC1F,OAAO,EAAE,GAAG;KACb,CAAC;AACJ,CAAC"}
|
|
@@ -12,5 +12,11 @@ export declare class BuildService {
|
|
|
12
12
|
getBuildStatus(project: string, buildId: number, detail?: string, timelineScope?: 'stages' | 'jobs' | 'all' | 'problems', maxIssues?: number): Promise<any>;
|
|
13
13
|
getBuildTimeline(project: string, buildId: number, scope?: 'stages' | 'jobs' | 'all' | 'problems', maxIssues?: number): Promise<any>;
|
|
14
14
|
getBuildLogs(project: string, buildId: number, logId?: number, mode?: 'summary' | 'full' | 'errors'): Promise<any>;
|
|
15
|
+
/**
|
|
16
|
+
* Warnings and errors for a build, read from the timeline's `issues[]`.
|
|
17
|
+
*
|
|
18
|
+
* No log download is needed: the timeline carries each issue's full message.
|
|
19
|
+
*/
|
|
20
|
+
getBuildIssues(project: string, buildId: number, severity?: 'all' | 'errors' | 'warnings'): Promise<any>;
|
|
15
21
|
}
|
|
16
22
|
//# sourceMappingURL=build-service.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build-service.d.ts","sourceRoot":"","sources":["../../src/services/build-service.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"build-service.d.ts","sourceRoot":"","sources":["../../src/services/build-service.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAInE,qBAAa,YAAY;IACX,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,iBAAiB;IAEtD,OAAO,CAAC,gBAAgB;IA2ClB,cAAc,CAClB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,MAAM,GAAE,MAAkB,EAC1B,aAAa,GAAE,QAAQ,GAAG,MAAM,GAAG,KAAK,GAAG,UAAuB,EAClE,SAAS,GAAE,MAAU,GACpB,OAAO,CAAC,GAAG,CAAC;IA0CT,gBAAgB,CACpB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,KAAK,GAAE,QAAQ,GAAG,MAAM,GAAG,KAAK,GAAG,UAAuB,EAC1D,SAAS,GAAE,MAAU,GACpB,OAAO,CAAC,GAAG,CAAC;IAqGT,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,IAAI,GAAE,SAAS,GAAG,MAAM,GAAG,QAAoB,GAAG,OAAO,CAAC,GAAG,CAAC;IAwCnI;;;;OAIG;IACG,cAAc,CAClB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,QAAQ,GAAE,KAAK,GAAG,QAAQ,GAAG,UAAkB,GAC9C,OAAO,CAAC,GAAG,CAAC;CAyBhB"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { extractBuildIssues } from './build-issues.js';
|
|
1
2
|
export class BuildService {
|
|
2
3
|
client;
|
|
3
4
|
constructor(client) {
|
|
@@ -191,5 +192,28 @@ export class BuildService {
|
|
|
191
192
|
}))
|
|
192
193
|
};
|
|
193
194
|
}
|
|
195
|
+
/**
|
|
196
|
+
* Warnings and errors for a build, read from the timeline's `issues[]`.
|
|
197
|
+
*
|
|
198
|
+
* No log download is needed: the timeline carries each issue's full message.
|
|
199
|
+
*/
|
|
200
|
+
async getBuildIssues(project, buildId, severity = 'all') {
|
|
201
|
+
this.client.validateProject(project);
|
|
202
|
+
const [build, timeline] = await Promise.all([
|
|
203
|
+
this.client.get(`${project}/_apis/build/builds/${buildId}?api-version=${this.client.apiVersion}`),
|
|
204
|
+
this.client.get(`${project}/_apis/build/builds/${buildId}/timeline?api-version=${this.client.apiVersion}`),
|
|
205
|
+
]);
|
|
206
|
+
const summary = extractBuildIssues(timeline?.records ?? [], severity);
|
|
207
|
+
return {
|
|
208
|
+
project,
|
|
209
|
+
buildId,
|
|
210
|
+
buildNumber: build?.buildNumber,
|
|
211
|
+
status: build?.status,
|
|
212
|
+
result: build?.result,
|
|
213
|
+
sourceBranch: build?.sourceBranch,
|
|
214
|
+
severity,
|
|
215
|
+
...summary,
|
|
216
|
+
};
|
|
217
|
+
}
|
|
194
218
|
}
|
|
195
219
|
//# sourceMappingURL=build-service.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build-service.js","sourceRoot":"","sources":["../../src/services/build-service.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"build-service.js","sourceRoot":"","sources":["../../src/services/build-service.ts"],"names":[],"mappings":"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"}
|