@aligndottech/cli 0.65.0 → 0.65.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. package/dist/commands/check.d.ts +1 -1
  2. package/dist/commands/check.d.ts.map +1 -1
  3. package/dist/commands/check.js +57 -14
  4. package/dist/commands/check.js.map +1 -1
  5. package/dist/commands/connect-agents.d.ts +1 -0
  6. package/dist/commands/connect-agents.d.ts.map +1 -1
  7. package/dist/commands/connect-agents.js +15 -8
  8. package/dist/commands/connect-agents.js.map +1 -1
  9. package/dist/commands/setup.d.ts.map +1 -1
  10. package/dist/commands/setup.js +6 -3
  11. package/dist/commands/setup.js.map +1 -1
  12. package/dist/commands/why.d.ts.map +1 -1
  13. package/dist/commands/why.js +20 -20
  14. package/dist/commands/why.js.map +1 -1
  15. package/dist/lib/ask-listing.d.ts +14 -0
  16. package/dist/lib/ask-listing.d.ts.map +1 -1
  17. package/dist/lib/ask-listing.js +38 -0
  18. package/dist/lib/ask-listing.js.map +1 -1
  19. package/dist/lib/blame-attribution.d.ts +36 -0
  20. package/dist/lib/blame-attribution.d.ts.map +1 -0
  21. package/dist/lib/blame-attribution.js +131 -0
  22. package/dist/lib/blame-attribution.js.map +1 -0
  23. package/dist/lib/commit-shape.d.ts +22 -0
  24. package/dist/lib/commit-shape.d.ts.map +1 -1
  25. package/dist/lib/commit-shape.js +52 -0
  26. package/dist/lib/commit-shape.js.map +1 -1
  27. package/dist/lib/connect-prompt.d.ts +9 -0
  28. package/dist/lib/connect-prompt.d.ts.map +1 -1
  29. package/dist/lib/connect-prompt.js +13 -0
  30. package/dist/lib/connect-prompt.js.map +1 -1
  31. package/dist/lib/fetchers/git.js +1 -1
  32. package/dist/lib/fetchers/git.js.map +1 -1
  33. package/dist/lib/first-run-pr-import.d.ts +2 -21
  34. package/dist/lib/first-run-pr-import.d.ts.map +1 -1
  35. package/dist/lib/first-run-pr-import.js +29 -2
  36. package/dist/lib/first-run-pr-import.js.map +1 -1
  37. package/dist/lib/found-summary.d.ts.map +1 -1
  38. package/dist/lib/found-summary.js +5 -10
  39. package/dist/lib/found-summary.js.map +1 -1
  40. package/dist/lib/git.js +2 -2
  41. package/dist/lib/git.js.map +1 -1
  42. package/dist/lib/local-db.d.ts +6 -0
  43. package/dist/lib/local-db.d.ts.map +1 -1
  44. package/dist/lib/local-db.js +14 -0
  45. package/dist/lib/local-db.js.map +1 -1
  46. package/dist/lib/local-gateway-client.d.ts +10 -0
  47. package/dist/lib/local-gateway-client.d.ts.map +1 -1
  48. package/dist/lib/local-gateway-client.js +7 -0
  49. package/dist/lib/local-gateway-client.js.map +1 -1
  50. package/dist/lib/next-step.d.ts.map +1 -1
  51. package/dist/lib/next-step.js +6 -4
  52. package/dist/lib/next-step.js.map +1 -1
  53. package/dist/lib/reason-extract.d.ts +1 -0
  54. package/dist/lib/reason-extract.d.ts.map +1 -1
  55. package/dist/lib/reason-extract.js +1 -1
  56. package/dist/lib/reason-extract.js.map +1 -1
  57. package/package.json +1 -1
@@ -0,0 +1,131 @@
1
+ import { execa } from 'execa';
2
+ import { readFile } from 'node:fs/promises';
3
+ import path from 'node:path';
4
+ import { isHousekeepingTitle, isNonBehaviouralType } from './commit-shape.js';
5
+ /** Inside the hook's 10s timeout and the 2.5s retrieval race it runs beside. */
6
+ export const BLAME_TIMEOUT_MS = 1500;
7
+ /** A rewrite of a huge file would blame thousands of lines for no extra signal. */
8
+ const MAX_BLAME_LINES = 400;
9
+ const MAX_OCCURRENCES = 3;
10
+ const lineOf = (text, index) => {
11
+ let n = 1;
12
+ for (let i = text.indexOf('\n'); i !== -1 && i < index; i = text.indexOf('\n', i + 1))
13
+ n++;
14
+ return n;
15
+ };
16
+ /** 1-based line ranges in `current` covered by each occurrence of `needle`. */
17
+ function rangesOfText(current, needle) {
18
+ const out = [];
19
+ const trimmed = needle.replace(/\n+$/, '');
20
+ if (!trimmed)
21
+ return out;
22
+ const span = trimmed.split('\n').length - 1;
23
+ for (let at = current.indexOf(trimmed); at !== -1 && out.length < MAX_OCCURRENCES; at = current.indexOf(trimmed, at + trimmed.length)) {
24
+ const start = lineOf(current, at);
25
+ out.push([start, start + span]);
26
+ }
27
+ return out;
28
+ }
29
+ /** For a Write: the lines of the current file the new content does not keep (common prefix and suffix trimmed). */
30
+ function rangesChangedBy(current, next) {
31
+ const a = current.split('\n');
32
+ const b = next.split('\n');
33
+ let head = 0;
34
+ while (head < a.length && head < b.length && a[head] === b[head])
35
+ head++;
36
+ let tail = 0;
37
+ while (tail < a.length - head && tail < b.length - head && a[a.length - 1 - tail] === b[b.length - 1 - tail])
38
+ tail++;
39
+ const end = a.length - tail; // exclusive, 0-based
40
+ return end > head ? [[head + 1, end]] : [];
41
+ }
42
+ function capped(ranges) {
43
+ let budget = MAX_BLAME_LINES;
44
+ const out = [];
45
+ for (const [s, e] of ranges) {
46
+ if (budget <= 0)
47
+ break;
48
+ const end = Math.min(e, s + budget - 1);
49
+ out.push([s, end]);
50
+ budget -= end - s + 1;
51
+ }
52
+ return out;
53
+ }
54
+ /** owner/repo from a GitHub remote url (https or ssh), lower-cased; null for anything else. */
55
+ function githubRepoOf(remote) {
56
+ const m = /github\.com[:/]([^/\s]+)\/([^/\s]+?)(?:\.git)?\/?$/i.exec(remote.trim());
57
+ return m ? `${m[1]}/${m[2]}`.toLowerCase() : null;
58
+ }
59
+ const prNumberOf = (subject) => /\(#(\d+)\)\s*$/.exec(subject)?.[1] ?? /^Merge pull request #(\d+)\b/.exec(subject)?.[1] ?? null;
60
+ export async function findLineWriters(input, cwd, opts = {}) {
61
+ try {
62
+ if (!input || typeof input.file_path !== 'string' || !input.file_path)
63
+ return null;
64
+ const file = path.resolve(cwd, input.file_path);
65
+ const current = await readFile(file, 'utf8');
66
+ let ranges = [];
67
+ if (typeof input.content === 'string') {
68
+ ranges = rangesChangedBy(current, input.content);
69
+ }
70
+ else {
71
+ const olds = Array.isArray(input.edits) ? input.edits.map((e) => e.old_string) : [input.old_string];
72
+ for (const old of olds)
73
+ if (typeof old === 'string')
74
+ ranges.push(...rangesOfText(current, old));
75
+ }
76
+ ranges = capped(ranges);
77
+ if (!ranges.length)
78
+ return null;
79
+ const timeout = opts.timeoutMs ?? BLAME_TIMEOUT_MS;
80
+ const runGit = opts.runGit ?? ((args, cwd, ms) => execa('git', args, { cwd, timeout: ms, reject: true, stdin: 'ignore' }));
81
+ // The budget is enforced here too, not only by execa's own kill, so it holds for any runner.
82
+ const run = (args) => {
83
+ let timer;
84
+ const expired = new Promise((_, reject) => { timer = setTimeout(() => reject(new Error('blame budget exceeded')), timeout); });
85
+ return Promise.race([runGit(args, path.dirname(file), timeout), expired]).finally(() => clearTimeout(timer));
86
+ };
87
+ const blame = await run(['blame', '-w', '-M', '--porcelain', ...ranges.flatMap(([s, e]) => ['-L', `${s},${e}`]), '--', path.basename(file)]);
88
+ const subjects = new Map();
89
+ let sha = null;
90
+ for (const line of blame.stdout.split('\n')) {
91
+ const head = /^([0-9a-f]{40}) \d+ \d+/.exec(line);
92
+ if (head) {
93
+ sha = /^0+$/.test(head[1]) ? null : head[1];
94
+ if (sha && !subjects.has(sha))
95
+ subjects.set(sha, '');
96
+ }
97
+ else if (sha && line.startsWith('summary ')) {
98
+ subjects.set(sha, line.slice('summary '.length));
99
+ }
100
+ }
101
+ if (!subjects.size)
102
+ return null;
103
+ const prNumbers = new Set([...subjects.values()].flatMap((s) => prNumberOf(s) ?? []));
104
+ const prUrls = [];
105
+ if (prNumbers.size) {
106
+ // No origin (or a non-GitHub one) only costs the PR mapping; the SHAs still stand.
107
+ const remote = await run(['remote', 'get-url', 'origin']).then((r) => r.stdout, () => '');
108
+ const repo = githubRepoOf(remote);
109
+ if (repo)
110
+ for (const n of prNumbers)
111
+ prUrls.push(`https://github.com/${repo}/pull/${n}`);
112
+ }
113
+ return { commitShas: [...subjects.keys()], prUrls };
114
+ }
115
+ catch {
116
+ return null;
117
+ }
118
+ }
119
+ /**
120
+ * Whether a decision may be shown as "the decision that wrote these lines". Routine conventional-commit
121
+ * types (docs, style, test, chore, ci, build, release) decide nothing an edit could violate, and a
122
+ * refactor rewrites lines without deciding what they do, so naming it would hide the real writer.
123
+ * Naming any of them would fire on most routine edits and teach people to ignore the hook. They stay
124
+ * eligible for the content-search related list. fix, feat, perf and untyped titles qualify.
125
+ * The shapes come from commit-shape.ts (non-behavioural types, plus the housekeeping shapes: merges,
126
+ * drafts, backports, version bumps), so there is one list of what a mechanical subject looks like.
127
+ */
128
+ export function isWriterTitle(title) {
129
+ return !isNonBehaviouralType(title) && !isHousekeepingTitle(title);
130
+ }
131
+ //# sourceMappingURL=blame-attribution.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"blame-attribution.js","sourceRoot":"","sources":["../../src/lib/blame-attribution.ts"],"names":[],"mappings":"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"}
@@ -15,4 +15,26 @@ export declare const MIN_DECISION_SUBJECT_CHARS = 20;
15
15
  * Anchored and case-insensitive, as the hand-written literal it replaced was.
16
16
  */
17
17
  export declare function mechanicalSubjectRegex(prefixes: readonly string[]): RegExp;
18
+ /**
19
+ * A release or version-bump subject with no stated reason. In words, after any `type(scope):` and
20
+ * `(#N)` are removed it is housekeeping when it is only a version ("v5.9.0"), or the word
21
+ * bump/release alone or followed by a dotted version ("Bumped v5.9.0", "Release 5.9.0"), or a
22
+ * bump/update/upgrade of something FROM a version or TO a version ("Bump x from 1 to 2", "Update
23
+ * dependency x to v3") - unless it also states why (because, to avoid, drops, a CVE ...). Its
24
+ * complement keeps: a `release` scope ("feat(release): publish with provenance"), a bump with a
25
+ * reason, "Release 2FA support", "feat!: v6.0.0 drops Node 18", and Revert "Bump x" (the prefix list handles that).
26
+ * Dependency REPLACEMENTS ("replace a with b") are decisions and never match.
27
+ */
28
+ export declare function isReleaseOrBumpSubject(subject: string): boolean;
29
+ /** What the first-run box and the starter prompts must not show as a decision. */
30
+ export declare function isHousekeepingTitle(title: string): boolean;
31
+ /** The graph keeps a title as its first 80 characters (local-gateway-client.ts), so one this long may be cut mid-word. */
32
+ export declare const TITLE_CUT_AT = 80;
33
+ export declare function isCutTitle(title: string): boolean;
34
+ /**
35
+ * A conventional-commit TYPE whose commits do not decide what the lines they touch do: docs, style,
36
+ * test, chore, ci, build, release and refactor. Separate from `isHousekeepingTitle` on purpose: that one
37
+ * feeds the first-run box and starter prompts and must not start hiding refactors there.
38
+ */
39
+ export declare function isNonBehaviouralType(title: string): boolean;
18
40
  //# sourceMappingURL=commit-shape.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"commit-shape.d.ts","sourceRoot":"","sources":["../../src/lib/commit-shape.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,eAAO,MAAM,2BAA2B,wFAE9B,CAAC;AAEX,uEAAuE;AACvE,eAAO,MAAM,0BAA0B,KAAK,CAAC;AAE7C;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CAG1E"}
1
+ {"version":3,"file":"commit-shape.d.ts","sourceRoot":"","sources":["../../src/lib/commit-shape.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,eAAO,MAAM,2BAA2B,wFAE9B,CAAC;AAEX,uEAAuE;AACvE,eAAO,MAAM,0BAA0B,KAAK,CAAC;AAE7C;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CAG1E;AAeD;;;;;;;;;GASG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAI/D;AASD,kFAAkF;AAClF,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAE1D;AAED,0HAA0H;AAC1H,eAAO,MAAM,YAAY,KAAK,CAAC;AAC/B,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAEjD;AAID;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAE3D"}
@@ -20,4 +20,56 @@ export function mechanicalSubjectRegex(prefixes) {
20
20
  const escaped = prefixes.map((p) => p.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'));
21
21
  return new RegExp(`^(${escaped.join('|')})`, 'i');
22
22
  }
23
+ const CONVENTIONAL_PREFIX = /^[a-z]+(?:\([^)]*\))?!?:\s*/i;
24
+ const PR_REFERENCE = /\s*\(#\d+[^)]*\)/g;
25
+ // "v5.9.0", "5.11.2", "Version 6.0.0-alpha.1": a subject that is only a version.
26
+ const VERSION_ONLY = /^(?:v(?:ersion)?\s*)?\d+\.\d+(?:\.\d+)?(?:[-+.][\w.-]+)?$/i;
27
+ // "Bump", "Bumped v5.9.0", "Release 5.9.0": the word alone, or the word and a dotted version.
28
+ const BARE_BUMP_OR_RELEASE = /^(?:bump\w*|releas\w*)(?:\s*$|\s+v?\d+\.\d)/i;
29
+ // One package token moving to a version, and nothing else: "bump x from 1 to 2", "Update dependency x to v3". More words
30
+ // after the version ("... and fix type definition"), or a sentence in between ("Update docs for listening to 0.0.0.0"), is prose.
31
+ const DEPENDENCY_MOVE = /^(?:bump\w*|updat\w*|upgrad\w*)\s+(?:dependency\s+)?[@\w./-]+\s+(?:from\s+v?\d[\w.-]*\s+)?(?:to\s+v?\d[\w.-]*)(?:\s+in\s.*|\s*\(.*\))?[.]?$/i;
32
+ // A subject that says why is a decision whatever its shape: "bump timeout ... because the upstream is slow",
33
+ // "bump minimum Node to 20, drops 18", "bump lodash to 4.17.21 (CVE-2021-23337)".
34
+ const STATED_WHY = /\b(?:because|so that|in order to|to avoid|to prevent|due to|since|cve-\d+|drops?|dropping|security|breaking)\b/i;
35
+ /**
36
+ * A release or version-bump subject with no stated reason. In words, after any `type(scope):` and
37
+ * `(#N)` are removed it is housekeeping when it is only a version ("v5.9.0"), or the word
38
+ * bump/release alone or followed by a dotted version ("Bumped v5.9.0", "Release 5.9.0"), or a
39
+ * bump/update/upgrade of something FROM a version or TO a version ("Bump x from 1 to 2", "Update
40
+ * dependency x to v3") - unless it also states why (because, to avoid, drops, a CVE ...). Its
41
+ * complement keeps: a `release` scope ("feat(release): publish with provenance"), a bump with a
42
+ * reason, "Release 2FA support", "feat!: v6.0.0 drops Node 18", and Revert "Bump x" (the prefix list handles that).
43
+ * Dependency REPLACEMENTS ("replace a with b") are decisions and never match.
44
+ */
45
+ export function isReleaseOrBumpSubject(subject) {
46
+ const body = subject.trim().replace(CONVENTIONAL_PREFIX, '').replace(PR_REFERENCE, '').trim();
47
+ if (STATED_WHY.test(body))
48
+ return false;
49
+ return VERSION_ONLY.test(body) || BARE_BUMP_OR_RELEASE.test(body) || DEPENDENCY_MOVE.test(body);
50
+ }
51
+ /**
52
+ * Subjects that read as housekeeping, not as a choice. Conventional `type:` / `type(scope):` shapes
53
+ * only, so prose like "document the retry policy" is not demoted; git's own Merge subjects (not
54
+ * prose like "Merge the two workers"); a `[DRAFT` / `[WIP` / `[Backport` marker (a backport repeats a decision made in the original).
55
+ */
56
+ const HOUSEKEEPING_SHAPE = /^(?:(?:docs|chore|ci|test|style|build)(?:\([^)]*\))?!?:|merge\s+(?:pull request|branch|remote-tracking|tag)\b|\[(?:draft|wip|backport)\b)/i;
57
+ /** What the first-run box and the starter prompts must not show as a decision. */
58
+ export function isHousekeepingTitle(title) {
59
+ return HOUSEKEEPING_SHAPE.test(title.trim()) || isReleaseOrBumpSubject(title);
60
+ }
61
+ /** The graph keeps a title as its first 80 characters (local-gateway-client.ts), so one this long may be cut mid-word. */
62
+ export const TITLE_CUT_AT = 80;
63
+ export function isCutTitle(title) {
64
+ return title.trim().length >= TITLE_CUT_AT;
65
+ }
66
+ const NON_BEHAVIOURAL_TYPE = /^(?:docs|style|test|chore|ci|build|release|refactor)(?:\([^)]*\))?!?:/i;
67
+ /**
68
+ * A conventional-commit TYPE whose commits do not decide what the lines they touch do: docs, style,
69
+ * test, chore, ci, build, release and refactor. Separate from `isHousekeepingTitle` on purpose: that one
70
+ * feeds the first-run box and starter prompts and must not start hiding refactors there.
71
+ */
72
+ export function isNonBehaviouralType(title) {
73
+ return NON_BEHAVIOURAL_TYPE.test(title.trim());
74
+ }
23
75
  //# sourceMappingURL=commit-shape.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"commit-shape.js","sourceRoot":"","sources":["../../src/lib/commit-shape.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG;IACzC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM;CACnE,CAAC;AAEX,uEAAuE;AACvE,MAAM,CAAC,MAAM,0BAA0B,GAAG,EAAE,CAAC;AAE7C;;;;;GAKG;AACH,MAAM,UAAU,sBAAsB,CAAC,QAA2B;IAChE,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC,CAAC;IAC9E,OAAO,IAAI,MAAM,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AACpD,CAAC"}
1
+ {"version":3,"file":"commit-shape.js","sourceRoot":"","sources":["../../src/lib/commit-shape.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG;IACzC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM;CACnE,CAAC;AAEX,uEAAuE;AACvE,MAAM,CAAC,MAAM,0BAA0B,GAAG,EAAE,CAAC;AAE7C;;;;;GAKG;AACH,MAAM,UAAU,sBAAsB,CAAC,QAA2B;IAChE,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC,CAAC;IAC9E,OAAO,IAAI,MAAM,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AACpD,CAAC;AAED,MAAM,mBAAmB,GAAG,8BAA8B,CAAC;AAC3D,MAAM,YAAY,GAAG,mBAAmB,CAAC;AACzC,iFAAiF;AACjF,MAAM,YAAY,GAAG,4DAA4D,CAAC;AAClF,8FAA8F;AAC9F,MAAM,oBAAoB,GAAG,8CAA8C,CAAC;AAC5E,yHAAyH;AACzH,kIAAkI;AAClI,MAAM,eAAe,GAAG,8IAA8I,CAAC;AACvK,6GAA6G;AAC7G,kFAAkF;AAClF,MAAM,UAAU,GAAG,iHAAiH,CAAC;AAErI;;;;;;;;;GASG;AACH,MAAM,UAAU,sBAAsB,CAAC,OAAe;IACpD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAC9F,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IACxC,OAAO,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAClG,CAAC;AAED;;;;GAIG;AACH,MAAM,kBAAkB,GAAG,4IAA4I,CAAC;AAExK,kFAAkF;AAClF,MAAM,UAAU,mBAAmB,CAAC,KAAa;IAC/C,OAAO,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,IAAI,sBAAsB,CAAC,KAAK,CAAC,CAAC;AAChF,CAAC;AAED,0HAA0H;AAC1H,MAAM,CAAC,MAAM,YAAY,GAAG,EAAE,CAAC;AAC/B,MAAM,UAAU,UAAU,CAAC,KAAa;IACtC,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,IAAI,YAAY,CAAC;AAC7C,CAAC;AAED,MAAM,oBAAoB,GAAG,wEAAwE,CAAC;AAEtG;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,KAAa;IAChD,OAAO,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;AACjD,CAAC"}
@@ -50,4 +50,13 @@ export declare function statusGapLine(gap: UnresolvedGap): string;
50
50
  export declare function askTrailingLine(refs: Array<{
51
51
  platform: string;
52
52
  }>, isConnected: (connectorId: string) => boolean): string | null;
53
+ /**
54
+ * The gap hint for a whole `align ask` result set, printed once after the rows rather than
55
+ * under each one. One line per distinct gap, each with how many rows carry it.
56
+ */
57
+ export declare function askGapHints(rows: Array<{
58
+ refs: Array<{
59
+ platform: string;
60
+ }>;
61
+ }>, isConnected: (connectorId: string) => boolean): string[];
53
62
  //# sourceMappingURL=connect-prompt.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"connect-prompt.d.ts","sourceRoot":"","sources":["../../src/lib/connect-prompt.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEtD,MAAM,WAAW,aAAa;IAC5B;mFAC+E;IAC/E,QAAQ,EAAE,WAAW,CAAC,UAAU,CAAC,CAAC;IAClC;;uFAEmF;IACnF,SAAS,EAAE,MAAM,CAAC;IAClB;;8CAE0C;IAC1C,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAgCD;;;;;GAKG;AACH,wBAAgB,cAAc,CAC5B,IAAI,EAAE,KAAK,CAAC;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,EACrD,WAAW,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,OAAO,GAC5C,aAAa,EAAE,CAkBjB;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,aAAa,EAAE,GAAG,MAAM,GAAG,IAAI,CASrE;AAED,kDAAkD;AAClD,wBAAgB,aAAa,CAAC,GAAG,EAAE,aAAa,GAAG,MAAM,CAKxD;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAC7B,IAAI,EAAE,KAAK,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,EACjC,WAAW,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,OAAO,GAC5C,MAAM,GAAG,IAAI,CASf"}
1
+ {"version":3,"file":"connect-prompt.d.ts","sourceRoot":"","sources":["../../src/lib/connect-prompt.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEtD,MAAM,WAAW,aAAa;IAC5B;mFAC+E;IAC/E,QAAQ,EAAE,WAAW,CAAC,UAAU,CAAC,CAAC;IAClC;;uFAEmF;IACnF,SAAS,EAAE,MAAM,CAAC;IAClB;;8CAE0C;IAC1C,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAgCD;;;;;GAKG;AACH,wBAAgB,cAAc,CAC5B,IAAI,EAAE,KAAK,CAAC;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,EACrD,WAAW,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,OAAO,GAC5C,aAAa,EAAE,CAkBjB;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,aAAa,EAAE,GAAG,MAAM,GAAG,IAAI,CASrE;AAED,kDAAkD;AAClD,wBAAgB,aAAa,CAAC,GAAG,EAAE,aAAa,GAAG,MAAM,CAKxD;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAC7B,IAAI,EAAE,KAAK,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,EACjC,WAAW,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,OAAO,GAC5C,MAAM,GAAG,IAAI,CASf;AAED;;;GAGG;AACH,wBAAgB,WAAW,CACzB,IAAI,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,KAAK,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAAC,EAClD,WAAW,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,OAAO,GAC5C,MAAM,EAAE,CAOV"}
@@ -99,4 +99,17 @@ export function askTrailingLine(refs, isConnected) {
99
99
  }
100
100
  return null;
101
101
  }
102
+ /**
103
+ * The gap hint for a whole `align ask` result set, printed once after the rows rather than
104
+ * under each one. One line per distinct gap, each with how many rows carry it.
105
+ */
106
+ export function askGapHints(rows, isConnected) {
107
+ const counts = new Map();
108
+ for (const row of rows) {
109
+ const line = askTrailingLine(row.refs, isConnected);
110
+ if (line)
111
+ counts.set(line, (counts.get(line) ?? 0) + 1);
112
+ }
113
+ return [...counts].map(([line, n]) => `${n} of these ${n === 1 ? line : line.replace(/^cites /, 'cite ')}`);
114
+ }
102
115
  //# sourceMappingURL=connect-prompt.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"connect-prompt.js","sourceRoot":"","sources":["../../src/lib/connect-prompt.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"connect-prompt.js","sourceRoot":"","sources":["../../src/lib/connect-prompt.ts"],"names":[],"mappings":"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"}
@@ -24,7 +24,7 @@ export function gitCaptureSkips(counts) {
24
24
  count: mechanical,
25
25
  // The list is the one the predicate is built from, so the line cannot name a
26
26
  // different set than the one that did the rejecting.
27
- detail: `skipped as housekeeping: mechanical or too-short subject (${MECHANICAL_SUBJECT_PREFIXES.join(', ')})`,
27
+ detail: `skipped as housekeeping: mechanical or too-short subject (${MECHANICAL_SUBJECT_PREFIXES.join(', ')}; also version bumps and releases)`,
28
28
  }]
29
29
  : []),
30
30
  ];
@@ -1 +1 @@
1
- {"version":3,"file":"git.js","sourceRoot":"","sources":["../../../src/lib/fetchers/git.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAC1D,OAAO,EAAE,wBAAwB,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACnE,OAAO,EAAE,2BAA2B,EAAE,MAAM,oBAAoB,CAAC;AAGjE;;;;;;;GAOG;AACH,MAAM,UAAU,eAAe,CAAC,MAA6F;IAC3H,MAAM,MAAM,GAAG,MAAM,CAAC,YAAY,IAAI,CAAC,CAAC;IACxC,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,mBAAmB,GAAG,MAAM,CAAC;IACtF,OAAO;QACL,GAAG,CAAC,MAAM,GAAG,CAAC;YACZ,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,8HAA8H,EAAE,CAAC;YAC7J,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,MAAM,CAAC,mBAAmB,GAAG,CAAC;YAChC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,mBAAmB,EAAE,MAAM,EAAE,6DAA6D,EAAE,CAAC;YAChH,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,UAAU,GAAG,CAAC;YAChB,CAAC,CAAC,CAAC;oBACC,KAAK,EAAE,UAAU;oBACjB,6EAA6E;oBAC7E,qDAAqD;oBACrD,MAAM,EAAE,6DAA6D,2BAA2B,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;iBAC/G,CAAC;YACJ,CAAC,CAAC,EAAE,CAAC;KACR,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAEhC;IACC,OAAO;QACL,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,6FAA6F;QAC7F,QAAQ,EAAE,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,KAAK;QACvC,GAAG,CAAC,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACtE,KAAK,EAAE,eAAe,CAAC,MAAM,CAAC;KAC/B,CAAC;AACJ,CAAC;AAED;kEACkE;AAClE,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,IAAsD;IACxF,qFAAqF;IACrF,sFAAsF;IACtF,0EAA0E;IAC1E,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,GAAG,MAAM,wBAAwB,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAC1O,MAAM,KAAK,GAAG,MAAM,IAAI,UAAU,CAAC,EAAE,gBAAgB,EAAE,KAAK,IAAI,EAAE,CAAC,OAAO,EAAE,YAAY,EAAE,CAAC;SACxF,KAAK,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;IAC3C,OAAO;QACL,KAAK;QACL,MAAM,EAAE,gBAAgB,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,MAAM,EAAE,mBAAmB,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,YAAY,EAAE,CAAC;KAClH,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"git.js","sourceRoot":"","sources":["../../../src/lib/fetchers/git.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAC1D,OAAO,EAAE,wBAAwB,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACnE,OAAO,EAAE,2BAA2B,EAAE,MAAM,oBAAoB,CAAC;AAGjE;;;;;;;GAOG;AACH,MAAM,UAAU,eAAe,CAAC,MAA6F;IAC3H,MAAM,MAAM,GAAG,MAAM,CAAC,YAAY,IAAI,CAAC,CAAC;IACxC,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,mBAAmB,GAAG,MAAM,CAAC;IACtF,OAAO;QACL,GAAG,CAAC,MAAM,GAAG,CAAC;YACZ,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,8HAA8H,EAAE,CAAC;YAC7J,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,MAAM,CAAC,mBAAmB,GAAG,CAAC;YAChC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,mBAAmB,EAAE,MAAM,EAAE,6DAA6D,EAAE,CAAC;YAChH,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,UAAU,GAAG,CAAC;YAChB,CAAC,CAAC,CAAC;oBACC,KAAK,EAAE,UAAU;oBACjB,6EAA6E;oBAC7E,qDAAqD;oBACrD,MAAM,EAAE,6DAA6D,2BAA2B,CAAC,IAAI,CAAC,IAAI,CAAC,oCAAoC;iBAChJ,CAAC;YACJ,CAAC,CAAC,EAAE,CAAC;KACR,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAEhC;IACC,OAAO;QACL,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,6FAA6F;QAC7F,QAAQ,EAAE,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,KAAK;QACvC,GAAG,CAAC,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACtE,KAAK,EAAE,eAAe,CAAC,MAAM,CAAC;KAC/B,CAAC;AACJ,CAAC;AAED;kEACkE;AAClE,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,IAAsD;IACxF,qFAAqF;IACrF,sFAAsF;IACtF,0EAA0E;IAC1E,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,GAAG,MAAM,wBAAwB,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAC1O,MAAM,KAAK,GAAG,MAAM,IAAI,UAAU,CAAC,EAAE,gBAAgB,EAAE,KAAK,IAAI,EAAE,CAAC,OAAO,EAAE,YAAY,EAAE,CAAC;SACxF,KAAK,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;IAC3C,OAAO;QACL,KAAK;QACL,MAAM,EAAE,gBAAgB,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,MAAM,EAAE,mBAAmB,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,YAAY,EAAE,CAAC;KAClH,CAAC;AACJ,CAAC"}
@@ -1,24 +1,3 @@
1
- /**
2
- * First run reads the merged PR descriptions of a GitHub origin.
3
- *
4
- * Why: most commits never state a reason (measured null "no stated reason" rate: fastify 96.7%,
5
- * vite 96.7%, pnpm 74.0%), because squash-merge repos keep the reason in the PR description, not
6
- * in the commit. `extractReason` over those descriptions found one in 15-29% of merged PRs.
7
- *
8
- * Safe by construction, because it runs before anyone has been asked anything:
9
- * - public data only. No token is needed; a token is used ONLY when the existing read-only gate
10
- * (detectVerifiedCliToken) proves it cannot write, and anything it refuses is dropped, never
11
- * sent. A refusal costs nothing: the unauthenticated read still runs.
12
- * - bounded: 3 pages (300 PRs) without a token, 10 pages (1,000) with one, and one wall-clock
13
- * deadline over the whole thing, token lookup included.
14
- * - never a prompt and never an error: every failure resolves to "no PRs".
15
- * - a rate limit (HTTP 403/429) degrades to commits only, with one honest line.
16
- *
17
- * What it imports is a decision per merged PR whose body states a reason (the same gate the git
18
- * import applies to commits), at the PR's own url, so `align connect github` writes the same row
19
- * and a re-run does not duplicate it. A squash commit whose PR was imported is dropped from the
20
- * commit import (dropCoveredCommits) so the change is not listed twice.
21
- */
22
1
  import type { PersonalImportItem } from './personal-import.js';
23
2
  export declare const RATE_LIMIT_LINE = "GitHub rate limit reached, imported commits only; run `align connect github` for PR descriptions";
24
3
  export declare const partialRateLimitLine: (imported: number) => string;
@@ -30,6 +9,8 @@ export interface FirstRunPrOutcome {
30
9
  scanned: number;
31
10
  /** PRs kept: the ones whose body states a reason. */
32
11
  imported: number;
12
+ /** Merged PRs skipped by title: a release or version bump has no decision in it, whatever its notes say. */
13
+ housekeeping: number;
33
14
  /** The one line to show when GitHub stopped the read; absent otherwise. */
34
15
  note?: string;
35
16
  numbers: ReadonlySet<number>;
@@ -1 +1 @@
1
- {"version":3,"file":"first-run-pr-import.d.ts","sourceRoot":"","sources":["../../src/lib/first-run-pr-import.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAI/D,eAAO,MAAM,eAAe,qGAAqG,CAAC;AAClI,eAAO,MAAM,oBAAoB,GAAI,UAAU,MAAM,KAAG,MACkD,CAAC;AAK3G,0FAA0F;AAC1F,eAAO,MAAM,cAAc,QAAS,CAAC;AAerC,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,kBAAkB,EAAE,CAAC;IAC5B,gCAAgC;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,qDAAqD;IACrD,QAAQ,EAAE,MAAM,CAAC;IACjB,2EAA2E;IAC3E,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC7B,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CAC3B;AAID,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,EAAE,OAAO,KAAK,CAAC;IACvB,2GAA2G;IAC3G,WAAW,CAAC,EAAE,MAAM,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC,CAAC;IAC5E,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAiED,sFAAsF;AACtF,wBAAsB,gBAAgB,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAAE,IAAI,GAAE,cAAmB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CA0BrI;AAKD;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,SAAS;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,EAClF,OAAO,EAAE,CAAC,EAAE,EACZ,OAAO,EAAE,IAAI,CAAC,iBAAiB,EAAE,MAAM,CAAC,GACvC;IAAE,KAAK,EAAE,CAAC,EAAE,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAOjC;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,CAAC,SAAS;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,EAClE,OAAO,EAAE,CAAC,EAAE,EACZ,YAAY,EAAE,QAAQ,CAAC,MAAM,CAAC,EAC9B,IAAI,EAAE,MAAM,GACX;IAAE,KAAK,EAAE,CAAC,EAAE,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAUjC"}
1
+ {"version":3,"file":"first-run-pr-import.d.ts","sourceRoot":"","sources":["../../src/lib/first-run-pr-import.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAI/D,eAAO,MAAM,eAAe,qGAAqG,CAAC;AAClI,eAAO,MAAM,oBAAoB,GAAI,UAAU,MAAM,KAAG,MACkD,CAAC;AAK3G,0FAA0F;AAC1F,eAAO,MAAM,cAAc,QAAS,CAAC;AAerC,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,kBAAkB,EAAE,CAAC;IAC5B,gCAAgC;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,qDAAqD;IACrD,QAAQ,EAAE,MAAM,CAAC;IACjB,4GAA4G;IAC5G,YAAY,EAAE,MAAM,CAAC;IACrB,2EAA2E;IAC3E,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC7B,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CAC3B;AAID,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,EAAE,OAAO,KAAK,CAAC;IACvB,2GAA2G;IAC3G,WAAW,CAAC,EAAE,MAAM,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC,CAAC;IAC5E,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAmED,sFAAsF;AACtF,wBAAsB,gBAAgB,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAAE,IAAI,GAAE,cAAmB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CA0BrI;AAKD;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,SAAS;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,EAClF,OAAO,EAAE,CAAC,EAAE,EACZ,OAAO,EAAE,IAAI,CAAC,iBAAiB,EAAE,MAAM,CAAC,GACvC;IAAE,KAAK,EAAE,CAAC,EAAE,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAOjC;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,CAAC,SAAS;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,EAClE,OAAO,EAAE,CAAC,EAAE,EACZ,YAAY,EAAE,QAAQ,CAAC,MAAM,CAAC,EAC9B,IAAI,EAAE,MAAM,GACX;IAAE,KAAK,EAAE,CAAC,EAAE,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAUjC"}
@@ -1,3 +1,25 @@
1
+ /**
2
+ * First run reads the merged PR descriptions of a GitHub origin.
3
+ *
4
+ * Why: most commits never state a reason (measured null "no stated reason" rate: fastify 96.7%,
5
+ * vite 96.7%, pnpm 74.0%), because squash-merge repos keep the reason in the PR description, not
6
+ * in the commit. `extractReason` over those descriptions found one in 15-29% of merged PRs.
7
+ *
8
+ * Safe by construction, because it runs before anyone has been asked anything:
9
+ * - public data only. No token is needed; a token is used ONLY when the existing read-only gate
10
+ * (detectVerifiedCliToken) proves it cannot write, and anything it refuses is dropped, never
11
+ * sent. A refusal costs nothing: the unauthenticated read still runs.
12
+ * - bounded: 3 pages (300 PRs) without a token, 10 pages (1,000) with one, and one wall-clock
13
+ * deadline over the whole thing, token lookup included.
14
+ * - never a prompt and never an error: every failure resolves to "no PRs".
15
+ * - a rate limit (HTTP 403/429) degrades to commits only, with one honest line.
16
+ *
17
+ * What it imports is a decision per merged PR whose body states a reason (the same gate the git
18
+ * import applies to commits), at the PR's own url, so `align connect github` writes the same row
19
+ * and a re-run does not duplicate it. A squash commit whose PR was imported is dropped from the
20
+ * commit import (dropCoveredCommits) so the change is not listed twice.
21
+ */
22
+ import { isReleaseOrBumpSubject } from './commit-shape.js';
1
23
  import { extractReason } from './reason-extract.js';
2
24
  import { CLI_TOKEN_SOURCES, detectVerifiedCliToken } from './setup-ux.js';
3
25
  export const RATE_LIMIT_LINE = 'GitHub rate limit reached, imported commits only; run `align connect github` for PR descriptions';
@@ -12,7 +34,7 @@ const BODY_CAP = 8_000;
12
34
  const API = 'https://api.github.com';
13
35
  const GITHUB_PREFIX = 'github.com/';
14
36
  const OWNER_REPO = /^(?!\.{1,2}\/)(?!.*\/\.{1,2}$)[A-Za-z0-9_.-]+\/[A-Za-z0-9_.-]+$/;
15
- const EMPTY = { items: [], scanned: 0, imported: 0, numbers: new Set(), shas: new Set() };
37
+ const EMPTY = { items: [], scanned: 0, housekeeping: 0, imported: 0, numbers: new Set(), shas: new Set() };
16
38
  const isBot = (u) => u?.type === 'Bot' || /\[bot\]$/i.test(u?.login ?? '') || /^(?:dependabot|renovate)\b/i.test(u?.login ?? '');
17
39
  function toItem(p, repo) {
18
40
  const full = p.base?.repo?.full_name ?? repo;
@@ -39,6 +61,7 @@ async function read(repo, token, fetchFn, signal) {
39
61
  const numbers = new Set();
40
62
  const shas = new Set();
41
63
  let scanned = 0;
64
+ let housekeeping = 0;
42
65
  let limited = false;
43
66
  for (let page = 1; page <= limits.pages && scanned < limits.prs; page += 1) {
44
67
  let res;
@@ -72,6 +95,10 @@ async function read(repo, token, fetchFn, signal) {
72
95
  if (!p.merged_at || !p.html_url || !p.title || typeof p.number !== 'number' || isBot(p.user) || Number.isNaN(new Date(p.merged_at).getTime()))
73
96
  continue;
74
97
  scanned += 1;
98
+ if (isReleaseOrBumpSubject(p.title)) {
99
+ housekeeping += 1;
100
+ continue;
101
+ }
75
102
  if (!extractReason(p.title, p.body))
76
103
  continue;
77
104
  items.push(toItem(p, repo));
@@ -84,7 +111,7 @@ async function read(repo, token, fetchFn, signal) {
84
111
  break;
85
112
  }
86
113
  const note = limited ? (items.length === 0 ? RATE_LIMIT_LINE : partialRateLimitLine(items.length)) : undefined;
87
- return { items, scanned, imported: items.length, ...(note ? { note } : {}), numbers, shas };
114
+ return { items, scanned, housekeeping, imported: items.length, ...(note ? { note } : {}), numbers, shas };
88
115
  }
89
116
  /** Never rejects. Resolves to no PRs for any origin that is not a github.com repo. */
90
117
  export async function fetchFirstRunPrs(repoIdentity, deps = {}) {
@@ -1 +1 @@
1
- {"version":3,"file":"first-run-pr-import.js","sourceRoot":"","sources":["../../src/lib/first-run-pr-import.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"first-run-pr-import.js","sourceRoot":"","sources":["../../src/lib/first-run-pr-import.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,OAAO,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAE3D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAE1E,MAAM,CAAC,MAAM,eAAe,GAAG,kGAAkG,CAAC;AAClI,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,QAAgB,EAAU,EAAE,CAC/D,mCAAmC,QAAQ,6DAA6D,CAAC;AAE3G,MAAM,SAAS,GAAG,GAAG,CAAC;AACtB,MAAM,aAAa,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,EAAW,CAAC;AACtD,MAAM,YAAY,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAW,CAAC;AACxD,0FAA0F;AAC1F,MAAM,CAAC,MAAM,cAAc,GAAG,MAAM,CAAC;AACrC,4GAA4G;AAC5G,MAAM,QAAQ,GAAG,KAAK,CAAC;AAEvB,MAAM,GAAG,GAAG,wBAAwB,CAAC;AACrC,MAAM,aAAa,GAAG,aAAa,CAAC;AACpC,MAAM,UAAU,GAAG,iEAAiE,CAAC;AAuBrF,MAAM,KAAK,GAAsB,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,GAAG,EAAE,EAAE,IAAI,EAAE,IAAI,GAAG,EAAE,EAAE,CAAC;AAS9H,MAAM,KAAK,GAAG,CAAC,CAAgB,EAAW,EAAE,CAAC,CAAC,EAAE,IAAI,KAAK,KAAK,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,IAAI,EAAE,CAAC,IAAI,6BAA6B,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;AAEzJ,SAAS,MAAM,CAAC,CAAQ,EAAE,IAAY;IACpC,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,IAAI,IAAI,CAAC;IAC7C,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,SAAmB,CAAC,CAAC,WAAW,EAAE,CAAC;IAC7D,MAAM,OAAO,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAClE,OAAO;QACL,UAAU,EAAE,CAAC,CAAC,QAAkB;QAChC,QAAQ,EAAE,QAAQ;QAClB,oHAAoH;QACpH,QAAQ,EAAE,GAAG,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,6BAA6B,IAAI,EAAE,CAAC,IAAI,EAAE;QACtG,KAAK,EAAE,CAAC,CAAC,KAAe;QACxB,4CAA4C;QAC5C,UAAU,EAAE,MAAM;QAClB,GAAG,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7F,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACnH,CAAC;AAC1B,CAAC;AAED,KAAK,UAAU,IAAI,CAAC,IAAY,EAAE,KAAyB,EAAE,OAAqB,EAAE,MAAmB;IACrG,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,aAAa,CAAC;IACpD,MAAM,OAAO,GAA2B,EAAE,MAAM,EAAE,6BAA6B,EAAE,sBAAsB,EAAE,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,CAAC;IACnJ,IAAI,KAAK;QAAE,OAAO,CAAC,eAAe,CAAC,GAAG,UAAU,KAAK,EAAE,CAAC;IACxD,MAAM,KAAK,GAAyB,EAAE,CAAC;IACvC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,IAAI,YAAY,GAAG,CAAC,CAAC;IACrB,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,IAAI,MAAM,CAAC,KAAK,IAAI,OAAO,GAAG,MAAM,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,EAAE,CAAC;QAC3E,IAAI,GAAa,CAAC;QAClB,IAAI,CAAC;YACH,GAAG,GAAG,MAAM,OAAO,CAAC,GAAG,GAAG,UAAU,IAAI,4DAA4D,SAAS,SAAS,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;QACrJ,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,CAAC,gDAAgD;QACzD,CAAC;QACD,6GAA6G;QAC7G,qFAAqF;QACrF,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,KAAK,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;YAAC,OAAO,GAAG,IAAI,CAAC;YAAC,MAAM;QAAC,CAAC;QAClK,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,MAAM,CAAC,iDAAiD;QACrE,IAAI,IAAa,CAAC;QAClB,IAAI,CAAC;YACH,MAAM,IAAI,GAAY,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;YACvC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;gBAAE,MAAM;YAChC,IAAI,GAAG,IAAe,CAAC;QACzB,CAAC;QAAC,MAAM,CAAC;YACP,MAAM;QACR,CAAC;QACD,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;YACrB,IAAI,OAAO,IAAI,MAAM,CAAC,GAAG;gBAAE,MAAM;YACjC,IAAI,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC;gBAAE,SAAS;YACxJ,OAAO,IAAI,CAAC,CAAC;YACb,IAAI,sBAAsB,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;gBAAC,YAAY,IAAI,CAAC,CAAC;gBAAC,SAAS;YAAC,CAAC;YACrE,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC;gBAAE,SAAS;YAC9C,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;YAC5B,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;YACtB,IAAI,CAAC,CAAC,gBAAgB;gBAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,gBAAgB,CAAC,WAAW,EAAE,CAAC,CAAC;QACrE,CAAC;QACD,+FAA+F;QAC/F,IAAI,IAAI,CAAC,MAAM,GAAG,SAAS,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,KAAK,GAAG;YAAE,MAAM;IACzF,CAAC;IACD,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,oBAAoB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC/G,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAC5G,CAAC;AAED,sFAAsF;AACtF,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,YAAuC,EAAE,OAAuB,EAAE;IACvG,IAAI,CAAC,YAAY,EAAE,UAAU,CAAC,aAAa,CAAC;QAAE,OAAO,KAAK,CAAC;IAC3D,MAAM,IAAI,GAAG,YAAY,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IACtD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IACzC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,KAAK,CAAC;IACtC,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,IAAI,CAAC,GAAG,EAAE,CAAC,sBAAsB,CAAC,iBAAiB,CAAC,QAAQ,CAAE,CAAC,CAAC,CAAC;IAChG,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,IAAI,KAAgD,CAAC;IACrD,MAAM,QAAQ,GAAG,IAAI,OAAO,CAAoB,CAAC,OAAO,EAAE,EAAE;QAC1D,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,GAAG,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,UAAU,IAAI,cAAc,CAAC,CAAC;QACrG,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC;IAClB,CAAC,CAAC,CAAC;IACH,MAAM,IAAI,GAAG,CAAC,KAAK,IAAgC,EAAE;QACnD,IAAI,KAAyB,CAAC;QAC9B,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,MAAM,EAAE,CAAC;YAC7B,gFAAgF;YAChF,IAAI,KAAK,IAAI,OAAO,IAAI,KAAK,IAAI,KAAK,CAAC,KAAK;gBAAE,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;QACpE,CAAC;QAAC,MAAM,CAAC,CAAC,2CAA2C,CAAC,CAAC;QACvD,OAAO,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;IACvD,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;IACxB,IAAI,CAAC;QACH,OAAO,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;IAC9C,CAAC;YAAS,CAAC;QACT,YAAY,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC;AACH,CAAC;AAED,MAAM,gBAAgB,GAAG,gBAAgB,CAAC;AAC1C,MAAM,UAAU,GAAG,qCAAqC,CAAC;AAEzD;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAChC,OAAY,EACZ,OAAwC;IAExC,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC;QAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;IACnE,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;QACjC,MAAM,GAAG,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACrD,OAAO,CAAC,CAAC,GAAG,KAAK,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IACrE,CAAC,CAAC,CAAC;IACH,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;AAC3D,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,sBAAsB,CACpC,OAAY,EACZ,YAA8B,EAC9B,IAAY;IAEZ,MAAM,MAAM,GAAG,sBAAsB,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC;IAChE,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,KAAK,MAAM,CAAC,IAAI,YAAY;QAAE,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC;YAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,CAAC;IAClI,IAAI,OAAO,CAAC,IAAI,KAAK,CAAC;QAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;IAC9D,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;QACjC,MAAM,CAAC,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAChD,OAAO,CAAC,CAAC,CAAC,KAAK,SAAS,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IACH,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;AAC3D,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"found-summary.d.ts","sourceRoot":"","sources":["../../src/lib/found-summary.ts"],"names":[],"mappings":"AAeA,oFAAoF;AACpF,eAAO,MAAM,iBAAiB,IAAI,CAAC;AAEnC,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,yEAAyE;IACzE,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,YAAY;IAC3B,6DAA6D;IAC7D,KAAK,EAAE,MAAM,CAAC;IACd,+EAA+E;IAC/E,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,aAAa,EAAE,CAAC;CACzB;AAED,4FAA4F;AAC5F,MAAM,WAAW,cAAc;IAC7B,QAAQ,IAAI;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IAClC,aAAa,IAAI,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC,CAAC;IACjF,SAAS,CAAC,MAAM,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,KAAK,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC1F;AAUD,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,cAAc,GAAG,YAAY,CA+BlE;AAED,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,YAAY,EAAE,IAAI,GAAE;IAAE,cAAc,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,MAAM,CA6BlG"}
1
+ {"version":3,"file":"found-summary.d.ts","sourceRoot":"","sources":["../../src/lib/found-summary.ts"],"names":[],"mappings":"AAgBA,oFAAoF;AACpF,eAAO,MAAM,iBAAiB,IAAI,CAAC;AAEnC,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,yEAAyE;IACzE,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,YAAY;IAC3B,6DAA6D;IAC7D,KAAK,EAAE,MAAM,CAAC;IACd,+EAA+E;IAC/E,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,aAAa,EAAE,CAAC;CACzB;AAED,4FAA4F;AAC5F,MAAM,WAAW,cAAc;IAC7B,QAAQ,IAAI;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IAClC,aAAa,IAAI,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC,CAAC;IACjF,SAAS,CAAC,MAAM,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,KAAK,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC1F;AAED,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,cAAc,GAAG,YAAY,CAgClE;AAED,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,YAAY,EAAE,IAAI,GAAE;IAAE,cAAc,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,MAAM,CA6BlG"}
@@ -12,15 +12,9 @@
12
12
  * value-rollup.ts's renderValueReadout).
13
13
  */
14
14
  import { localCitationFor } from './commit-cite.js';
15
+ import { isCutTitle, isHousekeepingTitle } from './commit-shape.js';
15
16
  /** How many decisions the summary names. Five fits a terminal without scrolling. */
16
17
  export const FOUND_SUMMARY_MAX = 5;
17
- /**
18
- * Subjects that read as housekeeping, not as a choice. The importer keeps them (a
19
- * docs commit can state a reason), so this only decides what the first-run box SHOWS first.
20
- * Conventional `type:` / `type(scope):` shapes only, so prose like "document the retry
21
- * policy" is not demoted; plus git's own Merge subjects (not prose like "Merge the two workers") and a `[DRAFT` / `[WIP` marker.
22
- */
23
- const HOUSEKEEPING_SUBJECT = /^(?:(?:docs|chore|ci|test|style|build)(?:\([^)]*\))?!?:|merge\s+(?:pull request|branch|remote-tracking|tag)\b|\[(?:draft|wip)\b)/i;
24
18
  export function buildFoundSummary(db) {
25
19
  // The graph total comes from the db's COUNT, never from the length of the page
26
20
  // below - those differ by two orders of magnitude on a real repo, and reporting
@@ -37,12 +31,13 @@ export function buildFoundSummary(db) {
37
31
  // listDecisions() is already ordered created_at DESC, so the head of it is the
38
32
  // recent page. The cap is applied here rather than in the renderer so a caller
39
33
  // reading `recent.length` gets the number that will actually be printed.
40
- // Housekeeping subjects sort after the rest (stable, so db order holds inside each group)
34
+ // Titles the graph cut at 80 characters, then housekeeping subjects, sort after the rest (stable, so db order holds inside each group)
41
35
  // and still fill the sample when too few real changes exist.
42
36
  const rows = db.listDecisions();
43
37
  const ranked = [
44
- ...rows.filter((r) => !HOUSEKEEPING_SUBJECT.test(r.title)),
45
- ...rows.filter((r) => HOUSEKEEPING_SUBJECT.test(r.title)),
38
+ ...rows.filter((r) => !isHousekeepingTitle(r.title) && !isCutTitle(r.title)),
39
+ ...rows.filter((r) => !isHousekeepingTitle(r.title) && isCutTitle(r.title)),
40
+ ...rows.filter((r) => isHousekeepingTitle(r.title)),
46
41
  ];
47
42
  const recent = ranked.slice(0, FOUND_SUMMARY_MAX).map((row) => {
48
43
  const cite = localCitationFor(row.sourceUrl);
@@ -1 +1 @@
1
- {"version":3,"file":"found-summary.js","sourceRoot":"","sources":["../../src/lib/found-summary.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEpD,oFAAoF;AACpF,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC;AAuBnC;;;;;GAKG;AACH,MAAM,oBAAoB,GAAG,mIAAmI,CAAC;AAEjK,MAAM,UAAU,iBAAiB,CAAC,EAAkB;IAClD,+EAA+E;IAC/E,gFAAgF;IAChF,uDAAuD;IACvD,MAAM,KAAK,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,SAAS,CAAC;IAEtC,mFAAmF;IACnF,kFAAkF;IAClF,qDAAqD;IACrD,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,KAAK,MAAM,IAAI,IAAI,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC;QAClC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC3B,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC7B,CAAC;IAED,+EAA+E;IAC/E,+EAA+E;IAC/E,yEAAyE;IACzE,0FAA0F;IAC1F,6DAA6D;IAC7D,MAAM,IAAI,GAAG,EAAE,CAAC,aAAa,EAAE,CAAC;IAChC,MAAM,MAAM,GAAG;QACb,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QAC1D,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;KAC1D,CAAC;IACF,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,iBAAiB,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;QAC5D,MAAM,IAAI,GAAG,gBAAgB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC7C,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;IACzD,CAAC,CAAC,CAAC;IAEH,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC;AACjD,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,CAAe,EAAE,OAAoC,EAAE;IACxF,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,EAAE,CAAC;QAClB,wEAAwE;QACxE,4EAA4E;QAC5E,OAAO,2CAA2C,CAAC;IACrD,CAAC;IAED,gFAAgF;IAChF,mFAAmF;IACnF,mFAAmF;IACnF,+BAA+B;IAC/B,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC;QACzB,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,+BAA+B,CAAC,CAAC,MAAM,mBAAmB;QACxE,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,4BAA4B,CAAC;IAE7C,wFAAwF;IACxF,kFAAkF;IAClF,MAAM,KAAK,GAAG,CAAC,MAAM,CAAC,CAAC;IACvB,+EAA+E;IAC/E,IAAI,IAAI,CAAC,cAAc,KAAK,SAAS,IAAI,IAAI,CAAC,cAAc,GAAG,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,eAAe,IAAI,CAAC,cAAc,uBAAuB,CAAC,CAAC;IACxI,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;YACzB,8EAA8E;YAC9E,4EAA4E;YAC5E,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}
1
+ {"version":3,"file":"found-summary.js","sourceRoot":"","sources":["../../src/lib/found-summary.ts"],"names":[],"mappings":"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"}
package/dist/lib/git.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { execa } from 'execa';
2
2
  import os from 'node:os';
3
- import { MECHANICAL_SUBJECT_PREFIXES, mechanicalSubjectRegex, MIN_DECISION_SUBJECT_CHARS } from './commit-shape.js';
3
+ import { isReleaseOrBumpSubject, MECHANICAL_SUBJECT_PREFIXES, mechanicalSubjectRegex, MIN_DECISION_SUBJECT_CHARS } from './commit-shape.js';
4
4
  /**
5
5
  * Same as {@link getCommitHistory}, plus the raw scanned count. A separate export
6
6
  * because {@link getCommitHistory}'s `Promise<GitCommit[]>` signature is the
@@ -173,7 +173,7 @@ export function isDecisionCommit(subject) {
173
173
  const trimmed = subject.trim();
174
174
  if (trimmed.length < MIN_DECISION_SUBJECT_CHARS)
175
175
  return false;
176
- return !MECHANICAL_SUBJECT_RE.test(trimmed);
176
+ return !MECHANICAL_SUBJECT_RE.test(trimmed) && !isReleaseOrBumpSubject(trimmed);
177
177
  }
178
178
  // A line that IS a git trailer (key: value at the start of the line), not merely a
179
179
  // sentence that happens to mention one of these words mid-line - "Refs APP-123 and