@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.
Files changed (83) hide show
  1. package/build/cli/commands/build-commands.d.ts.map +1 -1
  2. package/build/cli/commands/build-commands.js +27 -0
  3. package/build/cli/commands/build-commands.js.map +1 -1
  4. package/build/cli/commands/git-commands.d.ts +7 -0
  5. package/build/cli/commands/git-commands.d.ts.map +1 -0
  6. package/build/cli/commands/git-commands.js +68 -0
  7. package/build/cli/commands/git-commands.js.map +1 -0
  8. package/build/cli/commands/index.d.ts +1 -0
  9. package/build/cli/commands/index.d.ts.map +1 -1
  10. package/build/cli/commands/index.js +3 -0
  11. package/build/cli/commands/index.js.map +1 -1
  12. package/build/cli/commands/variable-group-commands.d.ts +1 -1
  13. package/build/cli/commands/variable-group-commands.d.ts.map +1 -1
  14. package/build/cli/commands/variable-group-commands.js +86 -1
  15. package/build/cli/commands/variable-group-commands.js.map +1 -1
  16. package/build/context-factory.d.ts.map +1 -1
  17. package/build/context-factory.js +3 -1
  18. package/build/context-factory.js.map +1 -1
  19. package/build/services/build-issues.d.ts +66 -0
  20. package/build/services/build-issues.d.ts.map +1 -0
  21. package/build/services/build-issues.js +70 -0
  22. package/build/services/build-issues.js.map +1 -0
  23. package/build/services/build-service.d.ts +6 -0
  24. package/build/services/build-service.d.ts.map +1 -1
  25. package/build/services/build-service.js +24 -0
  26. package/build/services/build-service.js.map +1 -1
  27. package/build/services/git-service.d.ts +97 -0
  28. package/build/services/git-service.d.ts.map +1 -0
  29. package/build/services/git-service.js +123 -0
  30. package/build/services/git-service.js.map +1 -0
  31. package/build/services/index.d.ts +1 -0
  32. package/build/services/index.d.ts.map +1 -1
  33. package/build/services/index.js +1 -0
  34. package/build/services/index.js.map +1 -1
  35. package/build/services/variable-group-compare.d.ts +80 -0
  36. package/build/services/variable-group-compare.d.ts.map +1 -0
  37. package/build/services/variable-group-compare.js +101 -0
  38. package/build/services/variable-group-compare.js.map +1 -0
  39. package/build/services/variable-group-service.d.ts +31 -0
  40. package/build/services/variable-group-service.d.ts.map +1 -1
  41. package/build/services/variable-group-service.js +110 -0
  42. package/build/services/variable-group-service.js.map +1 -1
  43. package/build/tools/build-tools.d.ts.map +1 -1
  44. package/build/tools/build-tools.js +17 -3
  45. package/build/tools/build-tools.js.map +1 -1
  46. package/build/tools/checklist-tools.d.ts.map +1 -1
  47. package/build/tools/checklist-tools.js +10 -8
  48. package/build/tools/checklist-tools.js.map +1 -1
  49. package/build/tools/configuration-tools.d.ts.map +1 -1
  50. package/build/tools/configuration-tools.js +3 -1
  51. package/build/tools/configuration-tools.js.map +1 -1
  52. package/build/tools/git-tools.d.ts +3 -0
  53. package/build/tools/git-tools.d.ts.map +1 -0
  54. package/build/tools/git-tools.js +37 -0
  55. package/build/tools/git-tools.js.map +1 -0
  56. package/build/tools/index.d.ts +1 -0
  57. package/build/tools/index.d.ts.map +1 -1
  58. package/build/tools/index.js +8 -3
  59. package/build/tools/index.js.map +1 -1
  60. package/build/tools/pull-request-tools.d.ts.map +1 -1
  61. package/build/tools/pull-request-tools.js +17 -13
  62. package/build/tools/pull-request-tools.js.map +1 -1
  63. package/build/tools/sync-tools.d.ts.map +1 -1
  64. package/build/tools/sync-tools.js +18 -8
  65. package/build/tools/sync-tools.js.map +1 -1
  66. package/build/tools/test-tools.d.ts.map +1 -1
  67. package/build/tools/test-tools.js +7 -7
  68. package/build/tools/test-tools.js.map +1 -1
  69. package/build/tools/variable-group-tools.d.ts.map +1 -1
  70. package/build/tools/variable-group-tools.js +45 -3
  71. package/build/tools/variable-group-tools.js.map +1 -1
  72. package/build/tools/visualize-tools.d.ts.map +1 -1
  73. package/build/tools/visualize-tools.js +5 -1
  74. package/build/tools/visualize-tools.js.map +1 -1
  75. package/build/tools/wiki-tools.d.ts.map +1 -1
  76. package/build/tools/wiki-tools.js +14 -12
  77. package/build/tools/wiki-tools.js.map +1 -1
  78. package/build/tools/work-item-tools.d.ts.map +1 -1
  79. package/build/tools/work-item-tools.js +11 -8
  80. package/build/tools/work-item-tools.js.map +1 -1
  81. package/build/types.d.ts +2 -0
  82. package/build/types.d.ts.map +1 -1
  83. 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,CAuDjF"}
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;AAWrD,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,cAAc,GAAG,IAAI,CAU/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,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.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,5 +1,5 @@
1
1
  /**
2
- * Variable Group CLI Commands - 2 commands
2
+ * Variable Group CLI Commands - 5 commands
3
3
  */
4
4
  import type { Command } from 'commander';
5
5
  import type { ServiceContext } from '../../types.js';
@@ -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;AAGrD,wBAAgB,6BAA6B,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,cAAc,GAAG,IAAI,CA+BzF"}
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 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;AAcjD;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,cAAc,CAiErD"}
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"}
@@ -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;AAGnE,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;CAuCpI"}
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":"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"}
1
+ {"version":3,"file":"build-service.js","sourceRoot":"","sources":["../../src/services/build-service.ts"],"names":[],"mappings":"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"}