@angelmsger/fx 0.18.1 → 0.19.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (65) hide show
  1. package/CHANGELOG.md +5 -1
  2. package/README.md +1 -0
  3. package/dist/adapters/code-host/bitbucket-cli/provider.js +4 -3
  4. package/dist/adapters/code-host/bitbucket-cli/provider.js.map +1 -1
  5. package/dist/adapters/code-host/github/provider.js +4 -3
  6. package/dist/adapters/code-host/github/provider.js.map +1 -1
  7. package/dist/adapters/code-host/local-git/provider.js +39 -6
  8. package/dist/adapters/code-host/local-git/provider.js.map +1 -1
  9. package/dist/adapters/error-tracker/sentry/client.js +11 -8
  10. package/dist/adapters/error-tracker/sentry/client.js.map +1 -1
  11. package/dist/adapters/error-tracker/sentry/provider.js +2 -1
  12. package/dist/adapters/error-tracker/sentry/provider.js.map +1 -1
  13. package/dist/adapters/error-tracker/sentry/tracker.js +170 -39
  14. package/dist/adapters/error-tracker/sentry/tracker.js.map +1 -1
  15. package/dist/application/release/baseline.js +44 -0
  16. package/dist/application/release/baseline.js.map +1 -0
  17. package/dist/application/release/errors.js +144 -26
  18. package/dist/application/release/errors.js.map +1 -1
  19. package/dist/application/release/facts.js +2 -2
  20. package/dist/application/release/facts.js.map +1 -1
  21. package/dist/application/release/index.js +92 -11
  22. package/dist/application/release/index.js.map +1 -1
  23. package/dist/application/release/repo.js +118 -20
  24. package/dist/application/release/repo.js.map +1 -1
  25. package/dist/application/release/version-declaration.js +54 -0
  26. package/dist/application/release/version-declaration.js.map +1 -0
  27. package/dist/application/release/version-history.js +86 -0
  28. package/dist/application/release/version-history.js.map +1 -0
  29. package/dist/application/repo/show.js +9 -1
  30. package/dist/application/repo/show.js.map +1 -1
  31. package/dist/application/repo/version.js +83 -0
  32. package/dist/application/repo/version.js.map +1 -0
  33. package/dist/cli/commands/index.js +2 -0
  34. package/dist/cli/commands/index.js.map +1 -1
  35. package/dist/cli/commands/release/check.js +31 -0
  36. package/dist/cli/commands/release/check.js.map +1 -1
  37. package/dist/cli/commands/release/overrides.js +19 -0
  38. package/dist/cli/commands/release/overrides.js.map +1 -0
  39. package/dist/cli/commands/repo/show.js +12 -4
  40. package/dist/cli/commands/repo/show.js.map +1 -1
  41. package/dist/cli/commands/repo/version.js +36 -0
  42. package/dist/cli/commands/repo/version.js.map +1 -0
  43. package/dist/cli/release-view.js +27 -0
  44. package/dist/cli/release-view.js.map +1 -1
  45. package/dist/cli/render/report.js +5 -0
  46. package/dist/cli/render/report.js.map +1 -1
  47. package/dist/domain/members/classify.js +5 -2
  48. package/dist/domain/members/classify.js.map +1 -1
  49. package/dist/domain/members/ownership-evidence.js +63 -0
  50. package/dist/domain/members/ownership-evidence.js.map +1 -0
  51. package/dist/domain/release/errors.js +76 -12
  52. package/dist/domain/release/errors.js.map +1 -1
  53. package/dist/domain/release/types.js.map +1 -1
  54. package/dist/domain/release/version-evidence.js +6 -0
  55. package/dist/domain/release/version-evidence.js.map +1 -0
  56. package/dist/domain/release/version.js +44 -5
  57. package/dist/domain/release/version.js.map +1 -1
  58. package/dist/domain/release/window.js +67 -3
  59. package/dist/domain/release/window.js.map +1 -1
  60. package/dist/domain/report.js +1 -0
  61. package/dist/domain/report.js.map +1 -1
  62. package/package.json +1 -1
  63. package/skills/fx-workspace/SKILL.md +1 -1
  64. package/skills/fx-workspace/references/commands.md +112 -17
  65. package/skills/fx-workspace/references/workspace-tasks.md +34 -20
@@ -3,28 +3,38 @@
3
3
  // lacks. It describes, it does not judge. Whatever it cannot learn is null, and when
4
4
  // that is because a question to the host failed, `unanswered` says which and why: some
5
5
  // of these questions, such as the target's version, no check asks.
6
- import { asDevkitError } from '../../domain/errors.js';
6
+ import path from 'node:path';
7
+ import { asDevkitError, DevkitError, toEnvelope } from '../../domain/errors.js';
7
8
  import { DEPENDENCY_FILES } from '../../domain/release/deps.js';
8
9
  import { attributed, peopleCommits, unmergedOf } from '../../domain/release/merge.js';
9
10
  import { declaredVersion, GRADLE_PROPERTIES, ROOT_VERSION, VERSION_READERS, } from '../../domain/release/version.js';
11
+ import { readBaseline } from './baseline.js';
12
+ import { validateVersionPath } from './version-declaration.js';
13
+ import { readVersionHistory } from './version-history.js';
10
14
  export async function describeRepo(ctx, outcome) {
11
- const blank = {
12
- name: ctx.repo.name,
13
- source: null,
14
- target: null,
15
- version_file: null,
16
- unmerged: null,
17
- note: ctx.policy.note ?? null,
18
- unanswered: [],
19
- };
20
- if (outcome.kind !== 'facts')
21
- return blank;
15
+ const blank = emptyRepo(ctx);
16
+ if (outcome.kind !== 'facts') {
17
+ if (ctx.factsRequested === false)
18
+ return blank;
19
+ return { ...blank, unanswered: [missingFacts(outcome)] };
20
+ }
22
21
  const { facts } = outcome;
23
22
  const { source, target } = facts;
24
23
  if (source === undefined)
25
- return blank;
24
+ return {
25
+ ...blank,
26
+ unanswered: [
27
+ {
28
+ field: 'source',
29
+ reason: `Release source ${ctx.policy.source} is absent`,
30
+ error: toEnvelope(new DevkitError('incomplete', 'RELEASE_SOURCE_MISSING', `Release source ${ctx.policy.source} is absent`, {
31
+ nextSteps: ['Inspect repository branches and release.source in the manifest.'],
32
+ })).error,
33
+ },
34
+ ],
35
+ };
26
36
  const asked = new Questions();
27
- const file = await asked.about('version_file', () => versionFileAt(facts, source.sha));
37
+ const file = await asked.about('version_file', () => versionFileAt(facts, source.sha, ctx.versionPath));
28
38
  const [sourceHead, targetHead, changes] = await Promise.all([
29
39
  headOf(asked, facts, source, 'source', file),
30
40
  target === undefined ? null : headOf(asked, facts, target, 'target', file),
@@ -33,6 +43,7 @@ export async function describeRepo(ctx, outcome) {
33
43
  : asked.about('unmerged', () => changesBetween(ctx, facts, target.sha, source.sha)),
34
44
  ]);
35
45
  const versioned = sourceHead.version !== null || (targetHead?.version ?? null) !== null;
46
+ const { history, baseline } = await readEvidence(ctx, facts, source);
36
47
  return {
37
48
  ...blank,
38
49
  source: sourceHead,
@@ -40,6 +51,76 @@ export async function describeRepo(ctx, outcome) {
40
51
  version_file: versioned ? (file ?? null) : null,
41
52
  unmerged: changes === undefined ? null : unmergedOf(changes),
42
53
  unanswered: asked.unanswered(),
54
+ version_evidence: history,
55
+ baseline_evidence: baseline,
56
+ facet_coverage: {
57
+ declaration: asked.unanswered().length === 0 ? 'checked' : 'incomplete',
58
+ version_history: history?.coverage ?? 'not_requested',
59
+ baseline: baseline?.coverage ?? 'not_requested',
60
+ errors: 'not_requested',
61
+ },
62
+ };
63
+ }
64
+ async function readEvidence(ctx, facts, source) {
65
+ const [history, baseline] = await Promise.all([
66
+ ctx.versionHistory === true || ctx.versionPath !== undefined
67
+ ? readVersionHistory({
68
+ host: facts.host,
69
+ ref: facts.ref,
70
+ requestedRef: source.name,
71
+ resolvedSha: source.sha,
72
+ ...(ctx.versionPath === undefined ? {} : { path: ctx.versionPath }),
73
+ ...(ctx.historyLimit === undefined ? {} : { maxCommits: ctx.historyLimit }),
74
+ })
75
+ : null,
76
+ ctx.baselineRef === undefined
77
+ ? null
78
+ : readBaseline({
79
+ host: facts.host,
80
+ ref: facts.ref,
81
+ baselineRef: ctx.baselineRef,
82
+ headRef: source.name,
83
+ headSha: source.sha,
84
+ ...(ctx.versionPath === undefined ? {} : { path: ctx.versionPath }),
85
+ }),
86
+ ]);
87
+ return { history, baseline };
88
+ }
89
+ function emptyRepo(ctx) {
90
+ return {
91
+ name: ctx.repo.name,
92
+ source: null,
93
+ target: null,
94
+ version_file: null,
95
+ unmerged: null,
96
+ note: ctx.policy.note ?? null,
97
+ unanswered: [],
98
+ ...(ctx.range === undefined ? {} : { range: ctx.range }),
99
+ version_evidence: null,
100
+ baseline_evidence: null,
101
+ facet_coverage: emptyFacets(ctx),
102
+ };
103
+ }
104
+ function missingFacts(outcome) {
105
+ const reason = outcome.kind === 'gate' ? outcome.gate.reason : outcome.reason;
106
+ const original = outcome.kind === 'error' ? outcome.failure : undefined;
107
+ const handoff = outcome.kind === 'gate' ? outcome.gate.verdict?.handoff : undefined;
108
+ const error = original ??
109
+ toEnvelope(new DevkitError('incomplete', 'RELEASE_FACTS_UNAVAILABLE', reason, {
110
+ nextSteps: [handoff?.command ?? 'fx can code-host'],
111
+ })).error;
112
+ return {
113
+ field: 'code_host',
114
+ reason,
115
+ error: { ...error, ...(handoff === null || handoff === undefined ? {} : { handoff }) },
116
+ };
117
+ }
118
+ function emptyFacets(ctx) {
119
+ return {
120
+ declaration: ctx.factsRequested === false ? 'not_requested' : 'incomplete',
121
+ version_history: ctx.versionHistory === true || ctx.versionPath !== undefined ? 'incomplete' : 'not_requested',
122
+ baseline: ctx.baselineRef === undefined ? 'not_requested' : 'incomplete',
123
+ errors: 'not_requested',
43
124
  };
44
125
  }
45
126
  // The order the report names what it could not learn, whatever order the host failed in.
@@ -59,7 +140,8 @@ class Questions {
59
140
  return await ask();
60
141
  }
61
142
  catch (err) {
62
- this.failed.push({ field, reason: asDevkitError(err).message });
143
+ const failure = asDevkitError(err);
144
+ this.failed.push({ field, reason: failure.message, error: toEnvelope(failure).error });
63
145
  return undefined;
64
146
  }
65
147
  }
@@ -83,13 +165,19 @@ async function headOf(asked, facts, branch, side, file) {
83
165
  };
84
166
  }
85
167
  // Prefer the explicit root VERSION file, then the dependency file the deps check reads.
86
- async function versionFileAt(facts, sha) {
168
+ async function versionFileAt(facts, sha, explicit) {
169
+ if (explicit !== undefined) {
170
+ validateVersionPath(explicit);
171
+ return resolveDeclarationFile(facts, explicit, sha);
172
+ }
87
173
  if ((await facts.host.readFile(facts.ref, ROOT_VERSION, sha)) !== undefined)
88
174
  return ROOT_VERSION;
89
175
  for (const { file } of DEPENDENCY_FILES) {
90
176
  const text = await facts.host.readFile(facts.ref, file, sha);
91
177
  if (text !== undefined)
92
- return VERSION_READERS[file] === undefined ? undefined : file;
178
+ return VERSION_READERS[file] === undefined
179
+ ? undefined
180
+ : resolveDeclarationFile(facts, file, sha);
93
181
  }
94
182
  return undefined;
95
183
  }
@@ -98,14 +186,24 @@ async function versionAt(facts, file, sha) {
98
186
  const own = text === undefined ? undefined : declaredVersion(file, text);
99
187
  if (own !== undefined || !gradle(file))
100
188
  return own;
101
- const properties = await facts.host.readFile(facts.ref, GRADLE_PROPERTIES, sha);
102
- return properties === undefined ? undefined : declaredVersion(GRADLE_PROPERTIES, properties);
189
+ const propertiesFile = path.posix.join(path.posix.dirname(file), GRADLE_PROPERTIES);
190
+ const properties = await facts.host.readFile(facts.ref, propertiesFile, sha);
191
+ return properties === undefined ? undefined : declaredVersion(propertiesFile, properties);
103
192
  }
104
193
  async function changesBetween(ctx, facts, from, to) {
105
194
  const commits = await facts.host.compare(facts.ref, { from, to });
106
195
  return peopleCommits(commits, ctx.policy.bots).map((c) => attributed(ctx.members, c));
107
196
  }
108
197
  function gradle(file) {
109
- return file.startsWith('build.gradle');
198
+ return ['build.gradle', 'build.gradle.kts'].includes(path.posix.basename(file));
199
+ }
200
+ async function resolveDeclarationFile(facts, file, sha) {
201
+ if (!gradle(file))
202
+ return file;
203
+ const text = await facts.host.readFile(facts.ref, file, sha);
204
+ if (text !== undefined && declaredVersion(file, text) !== undefined)
205
+ return file;
206
+ const sibling = path.posix.join(path.posix.dirname(file), GRADLE_PROPERTIES);
207
+ return (await facts.host.readFile(facts.ref, sibling, sha)) === undefined ? file : sibling;
110
208
  }
111
209
  //# sourceMappingURL=repo.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"repo.js","sourceRoot":"","sources":["../../../src/application/release/repo.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"repo.js","sourceRoot":"","sources":["../../../src/application/release/repo.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,54 @@
1
+ // Select one written version source at an immutable commit. Explicit paths name
2
+ // packages; automatic discovery prefers VERSION and never skips an empty declaration.
3
+ import path from 'node:path';
4
+ import { DevkitError } from '../../domain/errors.js';
5
+ import { sameVersionSource, } from '../../domain/release/version-evidence.js';
6
+ import { VERSION_READERS, versionDeclaration } from '../../domain/release/version.js';
7
+ export async function readVersionDeclaration(input) {
8
+ const file = input.source?.file ?? input.path;
9
+ if (file !== undefined)
10
+ return readSelected(input, file);
11
+ for (const candidate of Object.keys(VERSION_READERS)) {
12
+ const text = await input.host.readFile(input.ref, candidate, input.sha);
13
+ if (text !== undefined)
14
+ return parseSelected(input, candidate, text);
15
+ }
16
+ throw versionFailure('VERSION_DECLARATION_MISSING', `No version declaration at ${input.sha}`);
17
+ }
18
+ async function readSelected(input, file) {
19
+ validateVersionPath(file);
20
+ const text = await input.host.readFile(input.ref, file, input.sha);
21
+ if (text === undefined)
22
+ throw versionFailure('VERSION_PATH_MISSING', `${file} is absent at ${input.sha}; creation and rename are not distinguished`);
23
+ return parseSelected(input, file, text);
24
+ }
25
+ async function parseSelected(input, file, text) {
26
+ const declaration = versionDeclaration(file, text);
27
+ if (declaration === undefined &&
28
+ input.source === undefined &&
29
+ ['build.gradle', 'build.gradle.kts'].includes(path.posix.basename(file)))
30
+ return readSelected(input, path.posix.join(path.posix.dirname(file), 'gradle.properties'));
31
+ if (declaration === undefined)
32
+ throw versionFailure('VERSION_DECLARATION_UNREADABLE', `${file} has no readable version declaration at ${input.sha}`);
33
+ if (input.source !== undefined && !sameVersionSource(input.source, declaration))
34
+ throw versionFailure('VERSION_SOURCE_CHANGED', `Version field or package identity differs at ${input.sha}`);
35
+ return declaration;
36
+ }
37
+ export function validateVersionPath(file) {
38
+ if (file === '' ||
39
+ file.includes('\\') ||
40
+ file.startsWith('/') ||
41
+ file.split('/').some((part) => part === '' || part === '.' || part === '..') ||
42
+ !Object.hasOwn(VERSION_READERS, path.posix.basename(file)))
43
+ throw new DevkitError('usage', 'VERSION_PATH_INVALID', `Unsupported version path: ${file}`, {
44
+ nextSteps: ['Use a repository-relative path to VERSION or supported package metadata.'],
45
+ });
46
+ }
47
+ export function versionFailure(code, message) {
48
+ return new DevkitError('incomplete', code, message, {
49
+ nextSteps: [
50
+ 'Inspect the pinned repository ref and declaration source, then retry with sufficient readable history.',
51
+ ],
52
+ });
53
+ }
54
+ //# sourceMappingURL=version-declaration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version-declaration.js","sourceRoot":"","sources":["../../../src/application/release/version-declaration.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,sFAAsF;AAEtF,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EACL,iBAAiB,GAGlB,MAAM,0CAA0C,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAWtF,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,KAAuB;IAClE,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,EAAE,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC;IAC9C,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACzD,KAAK,MAAM,SAAS,IAAI,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC;QACrD,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,EAAE,SAAS,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;QACxE,IAAI,IAAI,KAAK,SAAS;YAAE,OAAO,aAAa,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;IACvE,CAAC;IACD,MAAM,cAAc,CAAC,6BAA6B,EAAE,6BAA6B,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;AAChG,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,KAAuB,EAAE,IAAY;IAC/D,mBAAmB,CAAC,IAAI,CAAC,CAAC;IAC1B,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;IACnE,IAAI,IAAI,KAAK,SAAS;QACpB,MAAM,cAAc,CAClB,sBAAsB,EACtB,GAAG,IAAI,iBAAiB,KAAK,CAAC,GAAG,6CAA6C,CAC/E,CAAC;IACJ,OAAO,aAAa,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAC1C,CAAC;AAED,KAAK,UAAU,aAAa,CAC1B,KAAuB,EACvB,IAAY,EACZ,IAAY;IAEZ,MAAM,WAAW,GAAG,kBAAkB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACnD,IACE,WAAW,KAAK,SAAS;QACzB,KAAK,CAAC,MAAM,KAAK,SAAS;QAC1B,CAAC,cAAc,EAAE,kBAAkB,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAExE,OAAO,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC;IAC7F,IAAI,WAAW,KAAK,SAAS;QAC3B,MAAM,cAAc,CAClB,gCAAgC,EAChC,GAAG,IAAI,2CAA2C,KAAK,CAAC,GAAG,EAAE,CAC9D,CAAC;IACJ,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,MAAM,EAAE,WAAW,CAAC;QAC7E,MAAM,cAAc,CAClB,wBAAwB,EACxB,gDAAgD,KAAK,CAAC,GAAG,EAAE,CAC5D,CAAC;IACJ,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,IAAY;IAC9C,IACE,IAAI,KAAK,EAAE;QACX,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;QACnB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;QACpB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,EAAE,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,IAAI,CAAC;QAC5E,CAAC,MAAM,CAAC,MAAM,CAAC,eAAe,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAE1D,MAAM,IAAI,WAAW,CAAC,OAAO,EAAE,sBAAsB,EAAE,6BAA6B,IAAI,EAAE,EAAE;YAC1F,SAAS,EAAE,CAAC,0EAA0E,CAAC;SACxF,CAAC,CAAC;AACP,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,IAAY,EAAE,OAAe;IAC1D,OAAO,IAAI,WAAW,CAAC,YAAY,EAAE,IAAI,EAAE,OAAO,EAAE;QAClD,SAAS,EAAE;YACT,wGAAwG;SACzG;KACF,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,86 @@
1
+ // The latest transition into the current version on a bounded first-parent chain.
2
+ // Missing parents, renamed files and changed declaration identities stop the walk.
3
+ import { asDevkitError, toEnvelope } from '../../domain/errors.js';
4
+ import { readVersionDeclaration, versionFailure } from './version-declaration.js';
5
+ export async function readVersionHistory(input) {
6
+ let result = blankEvidence(input);
7
+ try {
8
+ const limit = input.maxCommits ?? 100;
9
+ if (!Number.isSafeInteger(limit) || limit < 1 || limit > 1000)
10
+ throw versionFailure('VERSION_HISTORY_BUDGET_INVALID', 'History budget must be between 1 and 1000 commits');
11
+ let current = await input.host.commit(input.ref, input.resolvedSha ?? input.requestedRef);
12
+ if (input.resolvedSha !== undefined && current.sha !== input.resolvedSha)
13
+ throw versionFailure('VERSION_REF_CHANGED', 'The code host did not return the pinned head commit');
14
+ result = { ...result, resolved_sha: current.sha, next_sha: current.sha };
15
+ const declaration = await readVersionDeclaration({ ...input, sha: current.sha });
16
+ result = { ...result, declaration };
17
+ const seen = new Set();
18
+ for (let count = 0; count < limit; count += 1) {
19
+ if (seen.has(current.sha))
20
+ throw versionFailure('VERSION_HISTORY_CYCLE', 'The first-parent history repeated a commit');
21
+ seen.add(current.sha);
22
+ result = { ...result, commits_read: count + 1 };
23
+ const parentSha = current.parents[0];
24
+ if (parentSha === undefined)
25
+ return changed(result, current, null, 'root_declaration');
26
+ result = { ...result, next_sha: parentSha };
27
+ const parent = await input.host.commit(input.ref, parentSha);
28
+ if (parent.sha !== parentSha)
29
+ throw versionFailure('VERSION_PARENT_MISMATCH', 'The code host did not return the requested parent commit');
30
+ const previous = await readVersionDeclaration({
31
+ ...input,
32
+ sha: parent.sha,
33
+ source: declaration,
34
+ });
35
+ if (previous.value !== declaration.value)
36
+ return changed(result, current, previous.value, 'changed');
37
+ current = parent;
38
+ }
39
+ result = { ...result, termination: 'limit' };
40
+ throw versionFailure('VERSION_HISTORY_LIMIT', `No version-field change found within ${limit} first-parent commits`);
41
+ }
42
+ catch (error) {
43
+ const failure = asDevkitError(error);
44
+ let termination = result.termination;
45
+ if (termination !== 'limit')
46
+ termination = failure.category === 'incomplete' ? 'boundary' : 'query_failed';
47
+ return { ...result, termination, failures: [toEnvelope(failure).error] };
48
+ }
49
+ }
50
+ function blankEvidence(input) {
51
+ return {
52
+ requested_ref: input.requestedRef,
53
+ resolved_sha: null,
54
+ declaration: null,
55
+ last_change: null,
56
+ coverage: 'incomplete',
57
+ commits_read: 0,
58
+ failures: [],
59
+ termination: 'query_failed',
60
+ next_sha: input.resolvedSha ?? null,
61
+ };
62
+ }
63
+ function changed(result, commit, previous, kind) {
64
+ const dated = Number.isFinite(Date.parse(commit.date));
65
+ const failures = dated
66
+ ? []
67
+ : [
68
+ toEnvelope(versionFailure('VERSION_CHANGE_UNDATED', 'The version-field change has no readable committer timestamp')).error,
69
+ ];
70
+ return {
71
+ ...result,
72
+ coverage: dated ? 'checked' : 'incomplete',
73
+ failures,
74
+ termination: kind,
75
+ next_sha: null,
76
+ last_change: {
77
+ commit_sha: commit.sha,
78
+ committed_at: dated ? commit.date : null,
79
+ previous_value: previous,
80
+ current_value: result.declaration?.value ?? '',
81
+ history_mode: 'first_parent',
82
+ kind,
83
+ },
84
+ };
85
+ }
86
+ //# sourceMappingURL=version-history.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version-history.js","sourceRoot":"","sources":["../../../src/application/release/version-history.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  // One repository in full: the resolved entry, its disk state, its URLs and,
2
2
  // when the members document is there, who owns it.
3
3
  import { ownersOf } from '../../domain/members/owners.js';
4
+ import { ownershipEvidence, } from '../../domain/members/ownership-evidence.js';
4
5
  import { deriveStatus } from '../../domain/workspace/status.js';
5
6
  import { workspaceCommand } from '../workspace/guidance.js';
6
7
  import { contactFor, findKnownRepo, inspectDisk, urlsFor, webUrlFor, } from '../workspace/inspect.js';
@@ -11,9 +12,15 @@ export class RepoShow {
11
12
  }
12
13
  async execute(input) {
13
14
  const repo = findKnownRepo(this.deps, input.name);
15
+ const people = this.deps.ctx.manifest.members?.result.doc;
16
+ const evidence = ownershipEvidence({
17
+ members: people,
18
+ repo: repo.name,
19
+ asOf: input.asOf,
20
+ today: new Date().toISOString().slice(0, 10),
21
+ });
14
22
  const urls = urlsFor(this.deps, repo, undefined);
15
23
  const status = deriveStatus(repo, await inspectDisk(this.deps, repo), urls.upstream);
16
- const people = this.deps.ctx.manifest.members?.result.doc;
17
24
  const picked = this.deps.ctx.workspace.repos.some((entry) => entry.name === repo.name);
18
25
  return {
19
26
  ...status,
@@ -29,6 +36,7 @@ export class RepoShow {
29
36
  web_url: webUrlFor(this.deps, repo) ?? null,
30
37
  contact: contactFor(this.deps, repo) ?? null,
31
38
  owners: people === undefined ? null : ownersOf(people, repo.name),
39
+ ownership_evidence: evidence,
32
40
  next_steps: [
33
41
  ...(!picked ? [workspaceCommand(this.deps, 'repo', 'pick', repo.name)] : []),
34
42
  ...(!status.exists && repo.origin === 'shared'
@@ -1 +1 @@
1
- {"version":3,"file":"show.js","sourceRoot":"","sources":["../../../src/application/repo/show.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,mDAAmD;AAGnD,OAAO,EAAE,QAAQ,EAAkB,MAAM,gCAAgC,CAAC;AAC1E,OAAO,EAAE,YAAY,EAAkB,MAAM,kCAAkC,CAAC;AAEhF,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EACL,UAAU,EACV,aAAa,EACb,WAAW,EACX,OAAO,EACP,SAAS,GACV,MAAM,yBAAyB,CAAC;AAmBjC,MAAM,OAAO,QAAQ;IACU;IAA7B,YAA6B,IAAmB;QAAnB,SAAI,GAAJ,IAAI,CAAe;IAAG,CAAC;IAEpD,KAAK,CAAC,OAAO,CAAC,KAAgC;QAC5C,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAClD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;QACjD,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,EAAE,MAAM,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QACrF,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC;QAC1D,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC;QACvF,OAAO;YACL,GAAG,MAAM;YACT,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,EAAE;YACnB,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,EAAE;YACvB,MAAM;YACN,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,IAAI;YAC7B,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,IAAI;YACvB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,YAAY,EAAE,IAAI,CAAC,QAAQ,IAAI,IAAI;YACnC,OAAO,EAAE,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI;YAC3C,OAAO,EAAE,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI;YAC5C,MAAM,EAAE,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC;YACjE,UAAU,EAAE;gBACV,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC5E,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,KAAK,QAAQ;oBAC5C,CAAC,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,uBAAuB,CAAC,CAAC;oBACnF,CAAC,CAAC,EAAE,CAAC;aACR;SACF,CAAC;IACJ,CAAC;CACF"}
1
+ {"version":3,"file":"show.js","sourceRoot":"","sources":["../../../src/application/repo/show.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,83 @@
1
+ // Read pinned version-field history for any known repository, independent of whether
2
+ // the shared release checklist covers it. No publication policy is inferred here.
3
+ import { DevkitError } from '../../domain/errors.js';
4
+ import { repoRef } from '../../domain/workspace/ref.js';
5
+ import { readBaseline } from '../release/baseline.js';
6
+ import { rememberCodeHost } from '../release/facts.js';
7
+ import { Gates } from '../release/gates.js';
8
+ import { validateVersionPath } from '../release/version-declaration.js';
9
+ import { readVersionHistory } from '../release/version-history.js';
10
+ import { findKnownRepo } from '../workspace/inspect.js';
11
+ export class RepoVersion {
12
+ deps;
13
+ login;
14
+ constructor(deps, login) {
15
+ this.deps = deps;
16
+ this.login = login;
17
+ }
18
+ async execute(input) {
19
+ if (input.path !== undefined)
20
+ validateVersionPath(input.path);
21
+ const repo = findKnownRepo(this.deps, input.name);
22
+ const ref = repoRef(repo);
23
+ if (ref === undefined)
24
+ throw new DevkitError('config', 'REPO_NO_CODE_HOST', 'The repository has no code-host reference', {
25
+ nextSteps: ['Inspect fx repo show and the shared repository coordinate.'],
26
+ });
27
+ const observedAt = this.login.clock.now().toISOString();
28
+ await this.requireReady();
29
+ const host = rememberCodeHost(this.deps.codeHost());
30
+ const requested = input.ref ?? repo.branch ?? (await host.branches(ref)).find((branch) => branch.default)?.name;
31
+ if (requested === undefined)
32
+ throw new DevkitError('usage', 'VERSION_REF_REQUIRED', 'No default version ref is available', {
33
+ nextSteps: ['Pass --ref with a branch, tag or commit.'],
34
+ });
35
+ const version = await readVersionHistory({
36
+ host,
37
+ ref,
38
+ requestedRef: requested,
39
+ ...(input.path === undefined ? {} : { path: input.path }),
40
+ ...(input.historyLimit === undefined ? {} : { maxCommits: input.historyLimit }),
41
+ });
42
+ const baseline = input.baseline === undefined
43
+ ? null
44
+ : await readBaseline({
45
+ host,
46
+ ref,
47
+ baselineRef: input.baseline,
48
+ headRef: requested,
49
+ ...(version.resolved_sha === null ? {} : { headSha: version.resolved_sha }),
50
+ ...(input.path === undefined ? {} : { path: input.path }),
51
+ });
52
+ return {
53
+ name: repo.name,
54
+ observed_at: observedAt,
55
+ version_evidence: version,
56
+ baseline_evidence: baseline,
57
+ evidence_complete: version.coverage === 'checked' && (baseline === null || baseline.coverage === 'checked'),
58
+ };
59
+ }
60
+ async requireReady() {
61
+ const gate = await new Gates(this.deps, this.login).through('code-host', undefined);
62
+ if (!gate.open) {
63
+ const handoff = gate.verdict?.handoff;
64
+ throw new DevkitError('incomplete', 'VERSION_EVIDENCE_UNAVAILABLE', 'Code-host version evidence is not ready', {
65
+ hint: gate.reason,
66
+ ...(handoff === null || handoff === undefined
67
+ ? {}
68
+ : {
69
+ handoff: {
70
+ summary: handoff.summary,
71
+ userSteps: handoff.user_steps,
72
+ ...(handoff.command === undefined ? {} : { command: handoff.command }),
73
+ ...(handoff.alternatives === undefined
74
+ ? {}
75
+ : { alternatives: handoff.alternatives }),
76
+ },
77
+ }),
78
+ nextSteps: [gate.verdict?.handoff?.command ?? 'fx can code-host'],
79
+ });
80
+ }
81
+ }
82
+ }
83
+ //# sourceMappingURL=version.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../../../src/application/repo/version.ts"],"names":[],"mappings":"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"}
@@ -51,6 +51,7 @@ import RepoRemove from './repo/remove.js';
51
51
  import RepoSelect from './repo/select.js';
52
52
  import RepoShow from './repo/show.js';
53
53
  import RepoUnpick from './repo/unpick.js';
54
+ import RepoVersion from './repo/version.js';
54
55
  import SelfInfo from './self/info.js';
55
56
  import SelfUpdate from './self/update.js';
56
57
  import SkillInstall from './skill/install.js';
@@ -99,6 +100,7 @@ const CANONICAL_COMMANDS = {
99
100
  completion: CompletionCommand,
100
101
  'repo:list': RepoList,
101
102
  'repo:show': RepoShow,
103
+ 'repo:version': RepoVersion,
102
104
  'repo:select': RepoSelect,
103
105
  'repo:pick': RepoPick,
104
106
  'repo:unpick': RepoUnpick,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cli/commands/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cli/commands/index.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,7 @@ import { FxCommand } from '../../base.js';
5
5
  import { argument, jobsFlag, listFlag } from '../../flags.js';
6
6
  import { RELEASE_CODES, reportNotice } from '../../notices.js';
7
7
  import { releaseText } from '../../release-view.js';
8
+ import { repoOverrides } from './overrides.js';
8
9
  export default class ReleaseCheckCommand extends FxCommand {
9
10
  static description = 'Show what each repository would release and check it: dependencies, branches, builds and unresolved errors. Read-only';
10
11
  static examples = [
@@ -21,6 +22,30 @@ export default class ReleaseCheckCommand extends FxCommand {
21
22
  only: listFlag('only these checks', CHECKS),
22
23
  env: Flags.string({ description: 'environment whose errors count; default: release.env' }),
23
24
  since: Flags.string({ description: 'how far back a new error counts; default: release.since' }),
25
+ from: Flags.string({
26
+ description: 'inclusive error-window start, ISO timestamp with timezone; requires --to and excludes --since',
27
+ }),
28
+ to: Flags.string({
29
+ description: 'exclusive error-window end, ISO timestamp with timezone; requires --from',
30
+ }),
31
+ 'version-history': Flags.boolean({
32
+ description: 'read the last version-field change at each pinned source head',
33
+ default: false,
34
+ }),
35
+ 'history-limit': Flags.integer({
36
+ description: 'maximum first-parent commits per version history',
37
+ min: 1,
38
+ max: 1000,
39
+ default: 100,
40
+ }),
41
+ baseline: Flags.string({
42
+ description: 'historical release baseline as repo=ref; repeat for multiple repositories',
43
+ multiple: true,
44
+ }),
45
+ 'version-path': Flags.string({
46
+ description: 'explicit version declaration as repo=path, including nested packages; repeatable',
47
+ multiple: true,
48
+ }),
24
49
  jobs: jobsFlag,
25
50
  };
26
51
  async run() {
@@ -31,6 +56,12 @@ export default class ReleaseCheckCommand extends FxCommand {
31
56
  only: flags.only,
32
57
  env: flags.env,
33
58
  since: flags.since,
59
+ from: flags.from,
60
+ to: flags.to,
61
+ versionHistory: flags['version-history'],
62
+ historyLimit: flags['history-limit'],
63
+ baselines: repoOverrides(flags.baseline),
64
+ versionPaths: repoOverrides(flags['version-path']),
34
65
  jobs: flags.jobs,
35
66
  });
36
67
  // --fields selects from the report itself, in every format.