@mcp-consultant-tools/azure-devops-admin 35.0.0-beta.2 → 35.0.0-beta.3

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 (30) hide show
  1. package/build/cli/commands/artifact-feed-commands.d.ts +1 -1
  2. package/build/cli/commands/artifact-feed-commands.d.ts.map +1 -1
  3. package/build/cli/commands/artifact-feed-commands.js +65 -1
  4. package/build/cli/commands/artifact-feed-commands.js.map +1 -1
  5. package/build/cli/commands/pipeline-commands.d.ts.map +1 -1
  6. package/build/cli/commands/pipeline-commands.js +77 -0
  7. package/build/cli/commands/pipeline-commands.js.map +1 -1
  8. package/build/services/admin-client.d.ts +13 -0
  9. package/build/services/admin-client.d.ts.map +1 -1
  10. package/build/services/admin-client.js +22 -11
  11. package/build/services/admin-client.js.map +1 -1
  12. package/build/services/artifact-feed-service.d.ts +46 -1
  13. package/build/services/artifact-feed-service.d.ts.map +1 -1
  14. package/build/services/artifact-feed-service.js +179 -0
  15. package/build/services/artifact-feed-service.js.map +1 -1
  16. package/build/services/pipeline-analysis.d.ts +60 -0
  17. package/build/services/pipeline-analysis.d.ts.map +1 -0
  18. package/build/services/pipeline-analysis.js +104 -0
  19. package/build/services/pipeline-analysis.js.map +1 -0
  20. package/build/services/pipeline-service.d.ts +30 -0
  21. package/build/services/pipeline-service.d.ts.map +1 -1
  22. package/build/services/pipeline-service.js +150 -0
  23. package/build/services/pipeline-service.js.map +1 -1
  24. package/build/tools/artifact-feed-tools.d.ts.map +1 -1
  25. package/build/tools/artifact-feed-tools.js +31 -0
  26. package/build/tools/artifact-feed-tools.js.map +1 -1
  27. package/build/tools/pipeline-tools.d.ts.map +1 -1
  28. package/build/tools/pipeline-tools.js +33 -0
  29. package/build/tools/pipeline-tools.js.map +1 -1
  30. package/package.json +6 -4
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Artifact Feed CLI Commands - list packages, get versions
2
+ * Artifact Feed CLI Commands - list packages, get versions, feed summary, provenance
3
3
  */
4
4
  import type { Command } from 'commander';
5
5
  import type { ServiceContext } from '../../types.js';
@@ -1 +1 @@
1
- {"version":3,"file":"artifact-feed-commands.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/artifact-feed-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,4BAA4B,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,cAAc,GAAG,IAAI,CAiDxF"}
1
+ {"version":3,"file":"artifact-feed-commands.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/artifact-feed-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,4BAA4B,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,cAAc,GAAG,IAAI,CAmGxF"}
@@ -1,8 +1,24 @@
1
1
  /**
2
- * Artifact Feed CLI Commands - list packages, get versions
2
+ * Artifact Feed CLI Commands - list packages, get versions, feed summary, provenance
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 registerArtifactFeedCommands(program, ctx) {
7
23
  const feed = program.command('feed').alias('af').description('Artifact feed operations');
8
24
  feed
@@ -58,5 +74,53 @@ export function registerArtifactFeedCommands(program, ctx) {
58
74
  handleCliError(error, 'get package versions');
59
75
  }
60
76
  });
77
+ feed
78
+ .command('summary')
79
+ .description('All feeds with package counts (unreadable feeds are reported, not counted as empty)')
80
+ .option('-p, --project <name>', 'Project name for project-scoped feeds')
81
+ .option('--max-packages-per-feed <n>', 'Stop counting a feed after this many packages (default 1000)')
82
+ .action(async (opts) => {
83
+ try {
84
+ const maxPackagesPerFeed = parsePositiveInt(opts.maxPackagesPerFeed, '--max-packages-per-feed');
85
+ const result = await ctx.artifactFeeds.getFeedSummaries({
86
+ project: opts.project,
87
+ maxPackagesPerFeed,
88
+ });
89
+ outputResult({
90
+ fileName: 'feed-summary',
91
+ data: result,
92
+ summary: `${result.feedCount} feed(s), ${result.totalPackages} package(s)${result.totalPackagesIsLowerBound ? ' (lower bound)' : ''}${result.unreadableFeeds.length ? `, ${result.unreadableFeeds.length} unreadable` : ''}`,
93
+ }, getGlobalFlags(program));
94
+ }
95
+ catch (error) {
96
+ handleCliError(error, 'summarise feeds');
97
+ }
98
+ });
99
+ feed
100
+ .command('provenance')
101
+ .description('Publish provenance for a package version (preview API; build/branch may be absent)')
102
+ .argument('<feedName>', 'Feed name')
103
+ .argument('<packageName>', 'Package name')
104
+ .argument('<version>', 'Exact version string')
105
+ .option('-p, --project <name>', 'Project name for project-scoped feeds')
106
+ .option('--package-type <type>', 'Package protocol type (npm, nuget, maven, upack, pypi)')
107
+ .action(async (feedName, packageName, version, opts) => {
108
+ try {
109
+ const result = await ctx.artifactFeeds.getPackageProvenance(feedName, packageName, version, {
110
+ project: opts.project,
111
+ packageType: opts.packageType,
112
+ });
113
+ outputResult({
114
+ fileName: `package-provenance-${packageName}-${version}`,
115
+ data: result,
116
+ summary: result.structuredProvenanceAvailable
117
+ ? `${packageName} ${version}: build ${result.buildId ?? 'n/a'}, branch ${result.branch ?? 'n/a'}`
118
+ : `${packageName} ${version}: no structured build/branch provenance exposed by Azure DevOps`,
119
+ }, getGlobalFlags(program));
120
+ }
121
+ catch (error) {
122
+ handleCliError(error, 'get package provenance');
123
+ }
124
+ });
61
125
  }
62
126
  //# sourceMappingURL=artifact-feed-commands.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"artifact-feed-commands.js","sourceRoot":"","sources":["../../../src/cli/commands/artifact-feed-commands.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"artifact-feed-commands.js","sourceRoot":"","sources":["../../../src/cli/commands/artifact-feed-commands.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline-commands.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/pipeline-commands.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEzC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAGrD,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,cAAc,GAAG,IAAI,CA0RpF"}
1
+ {"version":3,"file":"pipeline-commands.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/pipeline-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,wBAAwB,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,cAAc,GAAG,IAAI,CA0VpF"}
@@ -3,6 +3,22 @@
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 parsePipelinePositiveInt(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 registerPipelineCommands(program, ctx) {
7
23
  const pipeline = program.command('pipeline').alias('pl').description('Pipeline operations');
8
24
  pipeline
@@ -266,5 +282,66 @@ export function registerPipelineCommands(program, ctx) {
266
282
  handleCliError(error, `${status} stage`);
267
283
  }
268
284
  });
285
+ pipeline
286
+ .command('summary')
287
+ .description('All pipelines with the status of their latest build')
288
+ .argument('<project>', 'Project name')
289
+ .option('-n, --name-contains <text>', 'Case-insensitive substring filter on pipeline name')
290
+ .option('--max-results <n>', 'Maximum pipelines to inspect (default 25)')
291
+ .action(async (project, opts) => {
292
+ try {
293
+ const maxResults = parsePipelinePositiveInt(opts.maxResults, '--max-results');
294
+ const result = await ctx.pipelines.getPipelineSummaries(project, {
295
+ nameContains: opts.nameContains,
296
+ maxResults,
297
+ });
298
+ const b = result.resultBreakdown;
299
+ outputResult({
300
+ fileName: `pipeline-summary-${project}`,
301
+ data: result,
302
+ summary: `${result.pipelineCount} pipeline(s): ${b.succeeded} succeeded, ${b.partiallySucceeded} partial, ${b.failed} failed, ${b.canceled} canceled, ${b.noBuilds} never built${result.truncated ? ' (truncated)' : ''}`,
303
+ }, getGlobalFlags(program));
304
+ }
305
+ catch (error) {
306
+ handleCliError(error, 'summarise pipelines');
307
+ }
308
+ });
309
+ pipeline
310
+ .command('last-deploys')
311
+ .description('Latest successful deploy per stage, with templateParameters')
312
+ .argument('<project>', 'Project name')
313
+ .option('--pipeline-id <n>', 'Pipeline (build definition) ID — preferred')
314
+ .option('--pipeline-name <name>', 'Exact pipeline name (case-insensitive)')
315
+ .option('-s, --stages <list>', 'Comma-separated stage names (default Dev,UAT,Prod)')
316
+ .option('--param <name>', 'Template parameter to surface per stage')
317
+ .option('--search-top <n>', 'How many recent builds to scan (default 50)')
318
+ .action(async (project, opts) => {
319
+ try {
320
+ const pipelineId = parsePipelinePositiveInt(opts.pipelineId, '--pipeline-id');
321
+ const searchTop = parsePipelinePositiveInt(opts.searchTop, '--search-top');
322
+ if (pipelineId === undefined && !opts.pipelineName) {
323
+ throw new Error('Provide either --pipeline-id or --pipeline-name.');
324
+ }
325
+ const stages = opts.stages
326
+ ? String(opts.stages).split(',').map((s) => s.trim()).filter(Boolean)
327
+ : undefined;
328
+ const result = await ctx.pipelines.getLastDeploys(project, {
329
+ pipelineId,
330
+ pipelineName: opts.pipelineName,
331
+ stages,
332
+ templateParameter: opts.param,
333
+ searchTop,
334
+ });
335
+ const foundCount = result.requestedStages.length - result.stagesNotFound.length;
336
+ outputResult({
337
+ fileName: `last-deploys-${result.pipelineId}`,
338
+ data: result,
339
+ summary: `${result.pipelineName}: ${foundCount}/${result.requestedStages.length} stage(s) found across ${result.buildsSearched} build(s)${result.stagesNotFound.length ? `; missing: ${result.stagesNotFound.join(', ')}` : ''}`,
340
+ }, getGlobalFlags(program));
341
+ }
342
+ catch (error) {
343
+ handleCliError(error, 'get last deploys');
344
+ }
345
+ });
269
346
  }
270
347
  //# sourceMappingURL=pipeline-commands.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline-commands.js","sourceRoot":"","sources":["../../../src/cli/commands/pipeline-commands.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pipeline-commands.js","sourceRoot":"","sources":["../../../src/cli/commands/pipeline-commands.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,18 @@
1
1
  import type { AzureDevOpsAdminConfig } from '../types.js';
2
2
  import { type AdoAuthConfig } from '../ado-auth-provider.js';
3
+ /**
4
+ * An Azure DevOps failure that still carries its HTTP status.
5
+ *
6
+ * Tools that fan out across many resources need to tell "this feed has no
7
+ * packages" (200 with an empty list) apart from "we were not allowed to look"
8
+ * (403). Without the status the two collapse into one bucket, and an audit
9
+ * reports a permissions gap as a clean result.
10
+ */
11
+ export interface AdoRequestError extends Error {
12
+ status?: number;
13
+ }
14
+ /** Read the HTTP status off an error thrown by {@link AdminClient}, if it has one. */
15
+ export declare function getAdoErrorStatus(error: unknown): number | undefined;
3
16
  export declare class AdminClient {
4
17
  readonly config: AzureDevOpsAdminConfig;
5
18
  readonly baseUrl: string;
@@ -1 +1 @@
1
- {"version":3,"file":"admin-client.d.ts","sourceRoot":"","sources":["../../src/services/admin-client.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,sBAAsB,EAA4B,MAAM,aAAa,CAAC;AACpF,OAAO,EAAmB,KAAK,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAE9E,qBAAa,WAAW;IACtB,QAAQ,CAAC,MAAM,EAAE,sBAAsB,CAAC;IACxC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAkB;gBAEnC,MAAM,EAAE,sBAAsB,EAAE,UAAU,EAAE,aAAa;IA2BrE,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAOtC,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAUpC,4CAA4C;IAC5C,IAAI,QAAQ,IAAI,MAAM,CAAmC;IAEzD;;;;OAIG;IACH,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAOnC,WAAW,CAAC,CAAC,EACjB,QAAQ,EAAE,MAAM,EAChB,MAAM,GAAE,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,GAAG,QAAgB,EAC3D,IAAI,CAAC,EAAE,GAAG,EACV,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACtC,WAAW,CAAC,EAAE,MAAM,EACpB,eAAe,CAAC,EAAE,MAAM,GACvB,OAAO,CAAC,CAAC,CAAC;CAoDd"}
1
+ {"version":3,"file":"admin-client.d.ts","sourceRoot":"","sources":["../../src/services/admin-client.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,sBAAsB,EAA4B,MAAM,aAAa,CAAC;AACpF,OAAO,EAAmB,KAAK,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAE9E;;;;;;;GAOG;AACH,MAAM,WAAW,eAAgB,SAAQ,KAAK;IAC5C,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,sFAAsF;AACtF,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAEpE;AAQD,qBAAa,WAAW;IACtB,QAAQ,CAAC,MAAM,EAAE,sBAAsB,CAAC;IACxC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAkB;gBAEnC,MAAM,EAAE,sBAAsB,EAAE,UAAU,EAAE,aAAa;IA2BrE,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAOtC,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAUpC,4CAA4C;IAC5C,IAAI,QAAQ,IAAI,MAAM,CAAmC;IAEzD;;;;OAIG;IACH,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAOnC,WAAW,CAAC,CAAC,EACjB,QAAQ,EAAE,MAAM,EAChB,MAAM,GAAE,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,GAAG,QAAgB,EAC3D,IAAI,CAAC,EAAE,GAAG,EACV,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACtC,WAAW,CAAC,EAAE,MAAM,EACpB,eAAe,CAAC,EAAE,MAAM,GACvB,OAAO,CAAC,CAAC,CAAC;CAsDd"}
@@ -4,6 +4,16 @@
4
4
  */
5
5
  import axios from 'axios';
6
6
  import { AdoAuthProvider } from '../ado-auth-provider.js';
7
+ /** Read the HTTP status off an error thrown by {@link AdminClient}, if it has one. */
8
+ export function getAdoErrorStatus(error) {
9
+ return error instanceof Error ? error.status : undefined;
10
+ }
11
+ function adoError(message, status) {
12
+ const error = new Error(message);
13
+ if (status !== undefined)
14
+ error.status = status;
15
+ return error;
16
+ }
7
17
  export class AdminClient {
8
18
  config;
9
19
  baseUrl;
@@ -83,29 +93,30 @@ export class AdminClient {
83
93
  }
84
94
  catch (error) {
85
95
  const errorDetails = error.response?.data?.message || error.response?.data || error.message;
96
+ const status = error.response?.status;
86
97
  console.error('Azure DevOps Admin API request failed:', {
87
98
  endpoint,
88
99
  method,
89
- status: error.response?.status,
100
+ status,
90
101
  statusText: error.response?.statusText,
91
102
  error: errorDetails
92
103
  });
93
- if (error.response?.status === 302) {
94
- throw new Error('Azure DevOps authentication failed (302 redirect to sign-in). ' +
104
+ if (status === 302) {
105
+ throw adoError('Azure DevOps authentication failed (302 redirect to sign-in). ' +
95
106
  'Your PAT may be expired, revoked, or not resolved (e.g. 1Password op:// reference). ' +
96
- 'Restart the MCP server to re-authenticate.');
107
+ 'Restart the MCP server to re-authenticate.', status);
97
108
  }
98
- if (error.response?.status === 401) {
99
- throw new Error('Azure DevOps authentication failed. Please check your PAT token or Entra ID credentials and permissions.');
109
+ if (status === 401) {
110
+ throw adoError('Azure DevOps authentication failed. Please check your PAT token or Entra ID credentials and permissions.', status);
100
111
  }
101
- if (error.response?.status === 403) {
112
+ if (status === 403) {
102
113
  const detail = typeof errorDetails === 'string' ? errorDetails : '';
103
- throw new Error(`Azure DevOps access denied: ${detail || 'Please check your PAT scopes and project permissions.'}`);
114
+ throw adoError(`Azure DevOps access denied: ${detail || 'Please check your PAT scopes and project permissions.'}`, status);
104
115
  }
105
- if (error.response?.status === 404) {
106
- throw new Error(`Azure DevOps resource not found: ${endpoint}`);
116
+ if (status === 404) {
117
+ throw adoError(`Azure DevOps resource not found: ${endpoint}`, status);
107
118
  }
108
- throw new Error(`Azure DevOps Admin API request failed: ${error.message} - ${JSON.stringify(errorDetails)}`);
119
+ throw adoError(`Azure DevOps Admin API request failed: ${error.message} - ${JSON.stringify(errorDetails)}`, status);
109
120
  }
110
121
  }
111
122
  }
@@ -1 +1 @@
1
- {"version":3,"file":"admin-client.js","sourceRoot":"","sources":["../../src/services/admin-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"admin-client.js","sourceRoot":"","sources":["../../src/services/admin-client.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,16 @@
1
1
  /**
2
2
  * Artifact feed operations for Azure DevOps Admin.
3
+ *
4
+ * Packaging API facts (Microsoft Learn, api-version 7.1):
5
+ * - Feeds live on `feeds.dev.azure.com`, NOT `pkgs.dev.azure.com` (which serves
6
+ * protocol-specific routes only). `AdminClient.feedsUrl` is the right host.
7
+ * - The packages list returns a bare array with NO total count and NO
8
+ * continuation token; counting means paging with `$top`/`$skip`.
9
+ * - Package version PROVENANCE has no GA version — it is `7.1-preview.1` — and
10
+ * exposes no documented build/branch/commit field. Everything of that sort
11
+ * lives in an untyped `data` bag whose keys vary by protocol.
3
12
  */
4
- import type { AdminClient } from './admin-client.js';
13
+ import { type AdminClient } from './admin-client.js';
5
14
  export declare class ArtifactFeedService {
6
15
  private client;
7
16
  constructor(client: AdminClient);
@@ -17,5 +26,41 @@ export declare class ArtifactFeedService {
17
26
  top?: number;
18
27
  includeDelisted?: boolean;
19
28
  }): Promise<any>;
29
+ /** List feeds. Omit `project` for organisation-scoped feeds. */
30
+ listFeeds(project?: string): Promise<any[]>;
31
+ /**
32
+ * Count packages in one feed by paging until a short page arrives.
33
+ *
34
+ * Returns `truncated: true` when `maxPackages` was reached first, in which
35
+ * case `count` is a lower bound. The API exposes no total, so a single
36
+ * unpaged call would silently cap the count.
37
+ */
38
+ private countPackages;
39
+ /**
40
+ * All feeds with their package counts.
41
+ *
42
+ * A feed we could not read is reported under `unreadableFeeds` with its HTTP
43
+ * status — never as a feed with zero packages. The si source caught every
44
+ * error and recorded `packageCount: 0`, so a 403 was indistinguishable from
45
+ * an empty feed.
46
+ */
47
+ getFeedSummaries(options?: {
48
+ project?: string;
49
+ maxPackagesPerFeed?: number;
50
+ }): Promise<any>;
51
+ /**
52
+ * Publish provenance for one package version.
53
+ *
54
+ * Azure DevOps publishes NO structured build/branch/commit field for a package
55
+ * version. `provenanceSource`, `publisherUserIdentity` and `userAgent` are the
56
+ * only typed fields; everything else lives in an untyped `data` bag. We surface
57
+ * `data` verbatim and additionally attempt a best-effort build/branch lookup
58
+ * over known key names, returning `null` — never the string "unknown" — when a
59
+ * key is absent, so an agent cannot mistake absence for a real value.
60
+ */
61
+ getPackageProvenance(feedName: string, packageName: string, version: string, options?: {
62
+ project?: string;
63
+ packageType?: string;
64
+ }): Promise<any>;
20
65
  }
21
66
  //# sourceMappingURL=artifact-feed-service.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"artifact-feed-service.d.ts","sourceRoot":"","sources":["../../src/services/artifact-feed-service.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGrD,qBAAa,mBAAmB;IAClB,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,WAAW;IAEjC,gBAAgB,CACpB,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,GACtF,OAAO,CAAC,GAAG,CAAC;IAkCT,kBAAkB,CACtB,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,eAAe,CAAC,EAAE,OAAO,CAAA;KAAE,GAC5F,OAAO,CAAC,GAAG,CAAC;CA0DhB"}
1
+ {"version":3,"file":"artifact-feed-service.d.ts","sourceRoot":"","sources":["../../src/services/artifact-feed-service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,EAAqB,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAC;AA4BxE,qBAAa,mBAAmB;IAClB,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,WAAW;IAEjC,gBAAgB,CACpB,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,GACtF,OAAO,CAAC,GAAG,CAAC;IAkCT,kBAAkB,CACtB,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,eAAe,CAAC,EAAE,OAAO,CAAA;KAAE,GAC5F,OAAO,CAAC,GAAG,CAAC;IA2Df,gEAAgE;IAC1D,SAAS,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAWjD;;;;;;OAMG;YACW,aAAa;IA8B3B;;;;;;;OAOG;IACG,gBAAgB,CACpB,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,kBAAkB,CAAC,EAAE,MAAM,CAAA;KAAE,GAC1D,OAAO,CAAC,GAAG,CAAC;IA4Cf;;;;;;;;;OASG;IACG,oBAAoB,CACxB,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,GACnD,OAAO,CAAC,GAAG,CAAC;CA0EhB"}
@@ -1,3 +1,38 @@
1
+ /**
2
+ * Artifact feed operations for Azure DevOps Admin.
3
+ *
4
+ * Packaging API facts (Microsoft Learn, api-version 7.1):
5
+ * - Feeds live on `feeds.dev.azure.com`, NOT `pkgs.dev.azure.com` (which serves
6
+ * protocol-specific routes only). `AdminClient.feedsUrl` is the right host.
7
+ * - The packages list returns a bare array with NO total count and NO
8
+ * continuation token; counting means paging with `$top`/`$skip`.
9
+ * - Package version PROVENANCE has no GA version — it is `7.1-preview.1` — and
10
+ * exposes no documented build/branch/commit field. Everything of that sort
11
+ * lives in an untyped `data` bag whose keys vary by protocol.
12
+ */
13
+ import { getAdoErrorStatus } from './admin-client.js';
14
+ /** Page size used when counting packages in a feed. */
15
+ const PACKAGE_PAGE_SIZE = 200;
16
+ /**
17
+ * The provenance endpoint has never gone GA. Pinning `7.1` (the client default)
18
+ * would not resolve it, so this route carries its own preview api-version.
19
+ */
20
+ const PROVENANCE_API_VERSION = '7.1-preview.1';
21
+ /**
22
+ * Keys under `provenance.data` that have been observed to carry build/branch
23
+ * information. Undocumented and protocol-dependent: absence means "not exposed",
24
+ * never "unknown build".
25
+ */
26
+ const PROVENANCE_BUILD_KEYS = ['build.id', 'buildId', 'System.DefinitionId'];
27
+ const PROVENANCE_BRANCH_KEYS = ['repository.branch', 'branch', 'Build.SourceBranch'];
28
+ function firstPresent(data, keys) {
29
+ for (const key of keys) {
30
+ const value = data[key];
31
+ if (value !== undefined && value !== null && value !== '')
32
+ return String(value);
33
+ }
34
+ return null;
35
+ }
1
36
  export class ArtifactFeedService {
2
37
  client;
3
38
  constructor(client) {
@@ -79,5 +114,149 @@ export class ArtifactFeedService {
79
114
  })),
80
115
  };
81
116
  }
117
+ /** List feeds. Omit `project` for organisation-scoped feeds. */
118
+ async listFeeds(project) {
119
+ if (project)
120
+ this.client.validateProject(project);
121
+ const projectPrefix = project ? `${project}/` : '';
122
+ const response = await this.client.makeRequest(`${projectPrefix}_apis/packaging/feeds?api-version=${this.client.apiVersion}`, 'GET', undefined, undefined, undefined, this.client.feedsUrl);
123
+ return response.value ?? [];
124
+ }
125
+ /**
126
+ * Count packages in one feed by paging until a short page arrives.
127
+ *
128
+ * Returns `truncated: true` when `maxPackages` was reached first, in which
129
+ * case `count` is a lower bound. The API exposes no total, so a single
130
+ * unpaged call would silently cap the count.
131
+ */
132
+ async countPackages(feedId, project, maxPackages) {
133
+ const projectPrefix = project ? `${project}/` : '';
134
+ let count = 0;
135
+ while (count < maxPackages) {
136
+ const params = new URLSearchParams({
137
+ 'api-version': this.client.apiVersion,
138
+ $top: String(Math.min(PACKAGE_PAGE_SIZE, maxPackages - count)),
139
+ $skip: String(count),
140
+ });
141
+ const response = await this.client.makeRequest(`${projectPrefix}_apis/packaging/Feeds/${encodeURIComponent(feedId)}/packages?${params.toString()}`, 'GET', undefined, undefined, undefined, this.client.feedsUrl);
142
+ const page = response.value ?? [];
143
+ count += page.length;
144
+ // A short page means we reached the end of the feed.
145
+ if (page.length < Number(params.get('$top'))) {
146
+ return { count, truncated: false };
147
+ }
148
+ }
149
+ return { count, truncated: true };
150
+ }
151
+ /**
152
+ * All feeds with their package counts.
153
+ *
154
+ * A feed we could not read is reported under `unreadableFeeds` with its HTTP
155
+ * status — never as a feed with zero packages. The si source caught every
156
+ * error and recorded `packageCount: 0`, so a 403 was indistinguishable from
157
+ * an empty feed.
158
+ */
159
+ async getFeedSummaries(options) {
160
+ const maxPackagesPerFeed = options?.maxPackagesPerFeed ?? 1000;
161
+ const feeds = await this.listFeeds(options?.project);
162
+ const summaries = [];
163
+ const unreadableFeeds = [];
164
+ for (const feed of feeds) {
165
+ const feedProject = feed.project?.name ?? options?.project;
166
+ try {
167
+ const { count, truncated } = await this.countPackages(feed.id, feedProject, maxPackagesPerFeed);
168
+ summaries.push({
169
+ id: feed.id,
170
+ name: feed.name,
171
+ project: feed.project?.name ?? '(org-scoped)',
172
+ packageCount: count,
173
+ /** When true, packageCount is a lower bound, not a total. */
174
+ packageCountTruncated: truncated,
175
+ });
176
+ }
177
+ catch (error) {
178
+ unreadableFeeds.push({
179
+ id: feed.id,
180
+ name: feed.name,
181
+ project: feed.project?.name ?? '(org-scoped)',
182
+ status: getAdoErrorStatus(error) ?? null,
183
+ reason: error?.message ?? 'unknown error',
184
+ });
185
+ }
186
+ }
187
+ const anyTruncated = summaries.some((feed) => feed.packageCountTruncated);
188
+ return {
189
+ project: options?.project ?? '(org-scoped)',
190
+ feedCount: feeds.length,
191
+ readableFeedCount: summaries.length,
192
+ totalPackages: summaries.reduce((sum, feed) => sum + feed.packageCount, 0),
193
+ /** True when any feed hit its cap, or any feed could not be read. */
194
+ totalPackagesIsLowerBound: anyTruncated || unreadableFeeds.length > 0,
195
+ feeds: summaries,
196
+ unreadableFeeds,
197
+ };
198
+ }
199
+ /**
200
+ * Publish provenance for one package version.
201
+ *
202
+ * Azure DevOps publishes NO structured build/branch/commit field for a package
203
+ * version. `provenanceSource`, `publisherUserIdentity` and `userAgent` are the
204
+ * only typed fields; everything else lives in an untyped `data` bag. We surface
205
+ * `data` verbatim and additionally attempt a best-effort build/branch lookup
206
+ * over known key names, returning `null` — never the string "unknown" — when a
207
+ * key is absent, so an agent cannot mistake absence for a real value.
208
+ */
209
+ async getPackageProvenance(feedName, packageName, version, options) {
210
+ this.client.validateFeed(feedName);
211
+ if (options?.project)
212
+ this.client.validateProject(options.project);
213
+ const projectPrefix = options?.project ? `${options.project}/` : '';
214
+ // Resolve package name -> id.
215
+ const listParams = new URLSearchParams({
216
+ 'api-version': this.client.apiVersion,
217
+ packageNameQuery: packageName,
218
+ });
219
+ if (options?.packageType)
220
+ listParams.append('protocolType', options.packageType);
221
+ const listResponse = await this.client.makeRequest(`${projectPrefix}_apis/packaging/Feeds/${encodeURIComponent(feedName)}/packages?${listParams.toString()}`, 'GET', undefined, undefined, undefined, this.client.feedsUrl);
222
+ const pkg = (listResponse.value ?? []).find((candidate) => String(candidate.name ?? '').toLowerCase() === packageName.toLowerCase());
223
+ if (!pkg) {
224
+ const nearby = (listResponse.value ?? []).map((p) => p.name).slice(0, 10);
225
+ throw new Error(`Package '${packageName}' not found in feed '${feedName}'.` +
226
+ (nearby.length ? ` Similar packages: ${nearby.join(', ')}` : ''));
227
+ }
228
+ // Resolve version string -> version id.
229
+ const versionsResponse = await this.client.makeRequest(`${projectPrefix}_apis/packaging/Feeds/${encodeURIComponent(feedName)}/packages/${pkg.id}/versions?api-version=${this.client.apiVersion}`, 'GET', undefined, undefined, undefined, this.client.feedsUrl);
230
+ const packageVersion = (versionsResponse.value ?? []).find((candidate) => String(candidate.version ?? '').toLowerCase() === version.toLowerCase());
231
+ if (!packageVersion) {
232
+ const nearby = (versionsResponse.value ?? []).map((v) => v.version).slice(0, 10);
233
+ throw new Error(`Version '${version}' not found for package '${packageName}' in feed '${feedName}'.` +
234
+ (nearby.length ? ` Available versions: ${nearby.join(', ')}` : ''));
235
+ }
236
+ const provenance = await this.client.makeRequest(`${projectPrefix}_apis/packaging/Feeds/${encodeURIComponent(feedName)}/Packages/${pkg.id}/Versions/${packageVersion.id}/provenance?api-version=${PROVENANCE_API_VERSION}`, 'GET', undefined, undefined, undefined, this.client.feedsUrl);
237
+ const data = provenance?.provenance?.data ?? provenance?.data ?? {};
238
+ const buildId = firstPresent(data, PROVENANCE_BUILD_KEYS);
239
+ const branch = firstPresent(data, PROVENANCE_BRANCH_KEYS);
240
+ return {
241
+ feed: feedName,
242
+ project: options?.project ?? '(org-scoped)',
243
+ packageName: pkg.name,
244
+ packageId: pkg.id,
245
+ version: packageVersion.version,
246
+ packageVersionId: packageVersion.id,
247
+ protocolType: pkg.protocolType,
248
+ provenanceApiVersion: PROVENANCE_API_VERSION,
249
+ provenanceSource: provenance?.provenanceSource ?? null,
250
+ publisherUserIdentity: provenance?.publisherUserIdentity ?? null,
251
+ userAgent: provenance?.userAgent ?? null,
252
+ /** Best-effort. Null means Azure DevOps did not expose it, not "unknown". */
253
+ buildId,
254
+ branch,
255
+ /** True when neither a build nor a branch could be read from `data`. */
256
+ structuredProvenanceAvailable: buildId !== null || branch !== null,
257
+ /** The raw, untyped provenance bag, verbatim. Keys vary by package protocol. */
258
+ data,
259
+ };
260
+ }
82
261
  }
83
262
  //# sourceMappingURL=artifact-feed-service.js.map