@aligndottech/cli 0.58.0 → 0.60.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.
@@ -14,6 +14,7 @@ import { resolveScopeOpts } from '../lib/repo-identity.js';
14
14
  import { askTrailingLine } from '../lib/connect-prompt.js';
15
15
  import { getGitIdentities, hasOtherCommitters } from '../lib/git.js';
16
16
  import { answeredBySomeoneElse, inviteNudgeLine } from '../lib/invite-prompt.js';
17
+ import { extractReason, stripImporterMetadata, withReasons } from '../lib/reason-extract.js';
17
18
  import { allWeak, excerptOf, isWeak, LIST_DISPLAY_CAP, matchNoun, withoutTitle } from '../lib/ask-listing.js';
18
19
  function wrapText(text, indent, maxWidth) {
19
20
  const words = text.split(' ');
@@ -68,6 +69,24 @@ function sourceLine(d) {
68
69
  const whenLabel = when ? chalk.dim(` · ${when}`) : '';
69
70
  return chalk.dim(` - ${d.title}${ref}`) + platform + statusLabel + who + whenLabel;
70
71
  }
72
+ /**
73
+ * ALI-1749: one retrieved decision as the structured evidence the synthesiser quotes from. `ref` is
74
+ * the SAME handle the source list below the answer prints (the cite, else the id), so a citation
75
+ * in the answer matches a line the reader can see. The date is the day it was DECIDED: created_at
76
+ * is capture time, which would present an import date as a decision date, so it is never used.
77
+ */
78
+ function evidenceOf(d) {
79
+ const date = d.decided_at && !Number.isNaN(Date.parse(d.decided_at)) ? d.decided_at.slice(0, 10) : undefined;
80
+ return {
81
+ id: d.id,
82
+ title: d.title,
83
+ summary: d.summary ?? '',
84
+ ref: d.cite ?? localCitationFor(d.source_url) ?? d.id,
85
+ ...(date ? { date } : {}),
86
+ ...(d.platform ? { platform: d.platform } : {}),
87
+ ...(d.similarity !== undefined ? { similarity: d.similarity } : {}),
88
+ };
89
+ }
71
90
  /** The indented link under a source line - where it was DECIDED, clickable. */
72
91
  function sourceLink(d) {
73
92
  // ALI-923: a cloud result can carry a synthetic align://claimed/... identity (ALI-538)
@@ -157,7 +176,7 @@ export function registerAskCommand(program) {
157
176
  spinner.stop();
158
177
  for (const note of results.notes ?? [])
159
178
  process.stderr.write(`${note}\n`);
160
- process.stdout.write(`${JSON.stringify({ query, scope: results.scope ?? null, widened_from: widenedFrom, results: results.results, ...(results.notes ? { notes: results.notes } : {}) })}\n`);
179
+ process.stdout.write(`${JSON.stringify({ query, scope: results.scope ?? null, widened_from: widenedFrom, results: withReasons(results).results, ...(results.notes ? { notes: results.notes } : {}) })}\n`);
161
180
  return;
162
181
  }
163
182
  // LM: a decision a person's marks kept out of this answer is named, so a silence is never unexplained.
@@ -259,7 +278,7 @@ export function registerAskCommand(program) {
259
278
  let synthFailure;
260
279
  let answer = null;
261
280
  if (!filePath) {
262
- const synth = await synthesiseDetailed(query, results.results.map((d) => ({ id: d.id, title: d.title, summary: d.summary ?? '' })));
281
+ const synth = await synthesiseDetailed(query, results.results.map(evidenceOf));
263
282
  answer = synth.ok ? synth.text : null;
264
283
  if (!synth.ok)
265
284
  synthFailure = synth.failure;
@@ -279,7 +298,7 @@ export function registerAskCommand(program) {
279
298
  const { offerAskProviderKey } = await import('../lib/ask-key-offer.js');
280
299
  if (await offerAskProviderKey(config) === 'configured') {
281
300
  spinner.start();
282
- const retry = await synthesiseDetailed(query, results.results.map((d) => ({ id: d.id, title: d.title, summary: d.summary ?? '' })));
301
+ const retry = await synthesiseDetailed(query, results.results.map(evidenceOf));
283
302
  answer = retry.ok ? retry.text : null;
284
303
  synthFailure = retry.ok ? undefined : retry.failure;
285
304
  }
@@ -294,7 +313,7 @@ export function registerAskCommand(program) {
294
313
  if (answer && isAbstention(answer) && results.scope && canWiden && !widenedFrom) {
295
314
  const wholeGraph = await client.searchDecisions(searchQuery, limit, undefined, { all: true });
296
315
  if (wholeGraph.results.length) {
297
- const second = await synthesiseDetailed(query, wholeGraph.results.map((d) => ({ id: d.id, title: d.title, summary: d.summary ?? '' })));
316
+ const second = await synthesiseDetailed(query, wholeGraph.results.map(evidenceOf));
298
317
  // Adoption rule, measured against a real model (2026-09-02 probes): on
299
318
  // implicit-only context the model can emit the sentinel AND keep talking -
300
319
  // the forbidden deny-then-deliver, with the actual answer in the tail. A
@@ -430,6 +449,7 @@ export function registerAskCommand(program) {
430
449
  const explicitLimit = cmd.getOptionValueSource('limit') === 'cli';
431
450
  const listed = explicitLimit ? results.results : results.results.slice(0, LIST_DISPLAY_CAP);
432
451
  // Weak is judged over what is SHOWN, so the summary never contradicts the rows under it.
452
+ const reasonOf = (d) => extractReason(d.title, d.summary);
433
453
  const weakSet = localScores && allWeak(listed.map((d) => d.similarity));
434
454
  if (filePath) {
435
455
  console.log(chalk.bold(`\n Decisions related to ${query}\n`));
@@ -444,6 +464,17 @@ export function registerAskCommand(program) {
444
464
  ? `all weak matches (best ${(best * 100).toFixed(0)}%)`
445
465
  : 'none judged relevant yet';
446
466
  console.log(chalk.bold(`\n ${matchNoun(results.count)}, ${lead}: ${reason}\n`));
467
+ // ALI-1749: the answer-shaped thing first. Only for a top match that clears the weak
468
+ // floor (local scores are the calibrated ones) and only when it STATES a reason.
469
+ const top = listed[0];
470
+ const topReason = top && localScores && !isWeak(top.similarity) ? reasonOf(top) : null;
471
+ if (top && topReason) {
472
+ const pct = top.similarity !== undefined ? ` (${(top.similarity * 100).toFixed(0)}%)` : '';
473
+ console.log(chalk.bold(` Best match: ${top.title}${pct}`));
474
+ for (const line of wrapText(`Why: ${topReason}`, ' ', wrapWidth))
475
+ console.log(line);
476
+ console.log('');
477
+ }
447
478
  if (guidanceFirst) {
448
479
  for (const line of guidance)
449
480
  console.log(line);
@@ -455,8 +486,13 @@ export function registerAskCommand(program) {
455
486
  ? chalk.dim(` (${(d.similarity * 100).toFixed(0)}%${localScores && !filePath && isWeak(d.similarity) ? ' weak' : ''} match)`)
456
487
  : '';
457
488
  console.log(chalk.bold(` ${d.title}`) + score);
458
- if (d.summary) {
459
- const summaryLines = wrapText(`"${excerptOf(withoutTitle(d.summary, d.title))}"`, ' ', wrapWidth);
489
+ const why = reasonOf(d);
490
+ if (why) {
491
+ for (const line of wrapText(`Why: ${why}`, ' ', wrapWidth))
492
+ console.log(line);
493
+ }
494
+ else if (d.summary) {
495
+ const summaryLines = wrapText(`"${excerptOf(withoutTitle(stripImporterMetadata(d.summary), d.title))}"`, ' ', wrapWidth);
460
496
  for (const line of summaryLines) {
461
497
  console.log(chalk.dim(line));
462
498
  }
@@ -1 +1 @@
1
- {"version":3,"file":"why.js","sourceRoot":"","sources":["../../src/commands/why.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"why.js","sourceRoot":"","sources":["../../src/commands/why.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ /** Characters of body shown when a row has no reason. A display choice, kept short on purpose. */
2
+ export declare const EVIDENCE_EXCERPT_MAX_CHARS = 240;
3
+ export interface EvidenceDecision {
4
+ id: string;
5
+ title: string;
6
+ summary: string;
7
+ /** What to cite this decision as (a commit cite, a PR number). Falls back to `id`. */
8
+ ref?: string;
9
+ date?: string;
10
+ platform?: string;
11
+ similarity?: number;
12
+ }
13
+ /** A dependency bump, release or merge row: it records that something changed, never why. */
14
+ export declare function isHousekeeping(title: string, body: string): boolean;
15
+ /** One row. It opens with its id, the handle the answer cites, and carries no row number the model could cite instead. */
16
+ export declare function renderEvidence(d: EvidenceDecision, excerptMax?: number): string;
17
+ //# sourceMappingURL=ask-evidence.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ask-evidence.d.ts","sourceRoot":"","sources":["../../src/lib/ask-evidence.ts"],"names":[],"mappings":"AAeA,kGAAkG;AAClG,eAAO,MAAM,0BAA0B,MAAM,CAAC;AAE9C,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,sFAAsF;IACtF,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAiBD,6FAA6F;AAC7F,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAMnE;AAcD,0HAA0H;AAC1H,wBAAgB,cAAc,CAAC,CAAC,EAAE,gBAAgB,EAAE,UAAU,GAAE,MAAmC,GAAG,MAAM,CAmB3G"}
@@ -0,0 +1,76 @@
1
+ /**
2
+ * ALI-1749 / ALI-1782: the evidence block the model writes an `align ask` answer from.
3
+ *
4
+ * Raw commit bodies invite a confident-sounding invented rationale (a version bump read as "chosen
5
+ * for its robustness"). So each retrieved decision is rendered as structured fields: id, date,
6
+ * source, similarity and `reason`, the author's own stated why pulled out by extractReason with no
7
+ * model. A short excerpt appears ONLY when no reason was found, and dependency bumps and other
8
+ * housekeeping rows are marked as stating no reason so the model has nothing to infer a motive from.
9
+ *
10
+ * Quoted text is JSON-escaped onto one line: retrieved text is attacker-controlled data, and a body
11
+ * with a newline must not be able to forge a new row or an instruction-looking line.
12
+ */
13
+ import { excerptOf, withoutTitle } from './ask-listing.js';
14
+ import { extractReason, stripImporterMetadata } from './reason-extract.js';
15
+ /** Characters of body shown when a row has no reason. A display choice, kept short on purpose. */
16
+ export const EVIDENCE_EXCERPT_MAX_CHARS = 240;
17
+ const VERSIONED = String.raw `(?:from\s+\S+\s+to\s+\S+|to\s+v?\d+(?:\.\d+)*\b|\bv?\d+\.\d+)`;
18
+ const HOUSEKEEPING_TITLE = [
19
+ new RegExp(String.raw `^(?:chore|build|ci|fix|deps?)(?:\([^)]*\))?!?:\s*(?:bump|update|upgrade|pin)\b[^\n]*${VERSIONED}`, 'i'),
20
+ /^(?:chore|build)\(deps(?:-dev)?\)/i,
21
+ /^chore\(main\):\s*release\b/i,
22
+ /^release\s+v?\d+\.\d+/i,
23
+ new RegExp(String.raw `^bump\b[^\n]*(?:${VERSIONED}|$)`, 'i'),
24
+ /^(?:update|upgrade) (?:dependency|dependencies|lockfile|deps)\b/i,
25
+ /^update lockfile\b/i,
26
+ /^merge (?:pull request|branch|remote-tracking)\b/i,
27
+ /^v?\d+\.\d+\.\d+(?:[-.\w]*)?$/,
28
+ ];
29
+ // Only the first line of the body: "Update X to Y" further down is ordinary prose, not a bump.
30
+ const HOUSEKEEPING_BODY = new RegExp(String.raw `^\s*(?:bumps?|updates?|upgrades?)\s+(?:\[?\x60?[\w@/.-]+\x60?\]?(?:\([^)]*\))?\s+)?${VERSIONED}|this pr contains the following updates|^\s*dependabot will resolve`, 'i');
31
+ /** A dependency bump, release or merge row: it records that something changed, never why. */
32
+ export function isHousekeeping(title, body) {
33
+ const t = (title ?? '').trim();
34
+ const flat = stripImporterMetadata(body ?? '').trimStart();
35
+ const nl = flat.indexOf('\n');
36
+ const firstLine = nl < 0 ? flat : flat.slice(0, nl);
37
+ return HOUSEKEEPING_TITLE.some((re) => re.test(t)) || HOUSEKEEPING_BODY.test(firstLine) || /this pr contains the following updates|^\s*dependabot will resolve/im.test(flat);
38
+ }
39
+ /** A header field is a single token: anything outside this set (a newline, a pipe, a quote) is dropped, so it cannot forge a row. */
40
+ const field = (s) => s.replace(/[^\w@#./:+-]/g, '');
41
+ const quote = (s) => JSON.stringify(s.replace(/\s+/g, ' ').trim());
42
+ /** The text a row's own title line echoes is dropped from its excerpt, as the ranked list does. */
43
+ function excerptFor(d, max) {
44
+ const body = withoutTitle(stripImporterMetadata(d.summary ?? ''), d.title);
45
+ // excerptOf keeps one over-long token whole (a URL, a hash); here that token is a wall, so cut it.
46
+ const cut = excerptOf(body, max);
47
+ return cut.length > max + 3 ? `${cut.slice(0, max)}...` : cut;
48
+ }
49
+ /** One row. It opens with its id, the handle the answer cites, and carries no row number the model could cite instead. */
50
+ export function renderEvidence(d, excerptMax = EVIDENCE_EXCERPT_MAX_CHARS) {
51
+ const head = [`id: ${field(d.ref ?? d.id)}`];
52
+ if (d.date)
53
+ head.push(`date: ${field(d.date)}`);
54
+ if (d.platform)
55
+ head.push(`source: ${field(d.platform)}`);
56
+ if (d.similarity !== undefined)
57
+ head.push(`match: ${d.similarity.toFixed(2)}`);
58
+ const lines = [head.join(' | '), `title: ${quote(d.title)}`];
59
+ const reason = extractReason(d.title, d.summary);
60
+ if (reason) {
61
+ lines.push(`reason: ${quote(reason)}`);
62
+ }
63
+ else {
64
+ lines.push('reason: none stated');
65
+ if (isHousekeeping(d.title, d.summary)) {
66
+ lines.push('[housekeeping: states no reason]');
67
+ }
68
+ else {
69
+ const excerpt = excerptMax > 0 ? excerptFor(d, Math.min(excerptMax, EVIDENCE_EXCERPT_MAX_CHARS)) : '';
70
+ if (excerpt)
71
+ lines.push(`excerpt: ${quote(excerpt)}`);
72
+ }
73
+ }
74
+ return lines.join('\n');
75
+ }
76
+ //# sourceMappingURL=ask-evidence.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ask-evidence.js","sourceRoot":"","sources":["../../src/lib/ask-evidence.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,74 @@
1
+ /**
2
+ * ALI-1749 / ALI-1782: 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 type { PersonalImportItem } from './personal-import.js';
23
+ export declare const RATE_LIMIT_LINE = "GitHub rate limit reached, imported commits only; run `align connect github` for PR descriptions";
24
+ export declare const partialRateLimitLine: (imported: number) => string;
25
+ /** Wall clock for everything here. First run must not wait on GitHub longer than this. */
26
+ export declare const PR_DEADLINE_MS = 10000;
27
+ export interface FirstRunPrOutcome {
28
+ items: PersonalImportItem[];
29
+ /** Merged, non-bot PRs read. */
30
+ scanned: number;
31
+ /** PRs kept: the ones whose body states a reason. */
32
+ imported: number;
33
+ /** The one line to show when GitHub stopped the read; absent otherwise. */
34
+ note?: string;
35
+ numbers: ReadonlySet<number>;
36
+ shas: ReadonlySet<string>;
37
+ }
38
+ export interface FirstRunPrDeps {
39
+ fetchFn?: typeof fetch;
40
+ /** The token source. Default: the existing `gh` gate, which returns a token only once proven read-only. */
41
+ detectToken?: () => Promise<{
42
+ token: string;
43
+ } | {
44
+ refused: string;
45
+ } | null>;
46
+ deadlineMs?: number;
47
+ }
48
+ /** Never rejects. Resolves to no PRs for any origin that is not a github.com repo. */
49
+ export declare function fetchFirstRunPrs(repoIdentity: string | null | undefined, deps?: FirstRunPrDeps): Promise<FirstRunPrOutcome>;
50
+ /**
51
+ * The commits that are NOT the squash of an imported PR. A commit is covered when its sha IS that PR's
52
+ * merge commit (GitHub's own statement of which commit the PR became). A `(#N)` in a subject is not
53
+ * enough on its own here: a fork's history carries upstream commits titled with upstream's PR numbers.
54
+ * A PR that was not imported covers nothing: its commit is then the only row for the change.
55
+ */
56
+ export declare function dropCoveredCommits<T extends {
57
+ title?: string;
58
+ source_url?: string;
59
+ }>(commits: T[], outcome: Pick<FirstRunPrOutcome, 'shas'>): {
60
+ items: T[];
61
+ covered: number;
62
+ };
63
+ /**
64
+ * Later, `align connect git` re-reads commits with no PR read of its own. The PR rows first run stored are in
65
+ * the graph, so a commit whose subject ends in `(#N)` for a stored PR url of the SAME repo is the one the PR
66
+ * replaced, and is not written again.
67
+ */
68
+ export declare function dropCommitsOfStoredPrs<T extends {
69
+ subject: string;
70
+ }>(commits: T[], storedPrUrls: Iterable<string>, repo: string): {
71
+ items: T[];
72
+ covered: number;
73
+ };
74
+ //# sourceMappingURL=first-run-pr-import.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,158 @@
1
+ import { extractReason } from './reason-extract.js';
2
+ import { CLI_TOKEN_SOURCES, detectVerifiedCliToken } from './setup-ux.js';
3
+ export const RATE_LIMIT_LINE = 'GitHub rate limit reached, imported commits only; run `align connect github` for PR descriptions';
4
+ export const partialRateLimitLine = (imported) => `GitHub rate limit reached after ${imported} PR descriptions; run \`align connect github\` for the rest`;
5
+ const PAGE_SIZE = 100;
6
+ const UNAUTH_LIMITS = { prs: 300, pages: 3 };
7
+ const TOKEN_LIMITS = { prs: 1_000, pages: 10 };
8
+ /** Wall clock for everything here. First run must not wait on GitHub longer than this. */
9
+ export const PR_DEADLINE_MS = 10_000;
10
+ /** A PR body is read for a reason only in its first few thousand characters (extractReason's own bound). */
11
+ const BODY_CAP = 8_000;
12
+ const API = 'https://api.github.com';
13
+ const GITHUB_PREFIX = 'github.com/';
14
+ 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() };
16
+ const isBot = (u) => u?.type === 'Bot' || /\[bot\]$/i.test(u?.login ?? '') || /^(?:dependabot|renovate)\b/i.test(u?.login ?? '');
17
+ function toItem(p, repo) {
18
+ const full = p.base?.repo?.full_name ?? repo;
19
+ const merged = new Date(p.merged_at).toISOString();
20
+ const updated = p.updated_at ? new Date(p.updated_at) : undefined;
21
+ return {
22
+ source_url: p.html_url,
23
+ platform: 'github',
24
+ // The same text connector-core's GitHubFetcher builds (baseText), so a later `align connect github` agrees with it.
25
+ raw_text: `${p.title}\n\n${(p.body ?? '').slice(0, BODY_CAP)}\n\nStatus: merged\nRepo: ${full}`.trim(),
26
+ title: p.title,
27
+ // decided_at is the merge, not the opening.
28
+ created_at: merged,
29
+ ...(updated && !Number.isNaN(updated.getTime()) ? { updated_at: updated.toISOString() } : {}),
30
+ ...(p.user?.login ? { author: { name: p.user.login, handle: p.user.login, ...(p.user.html_url ? { url: p.user.html_url } : {}) } } : {}),
31
+ };
32
+ }
33
+ async function read(repo, token, fetchFn, signal) {
34
+ const limits = token ? TOKEN_LIMITS : UNAUTH_LIMITS;
35
+ const headers = { Accept: 'application/vnd.github+json', 'X-GitHub-Api-Version': '2022-11-28', 'User-Agent': 'align-cli' };
36
+ if (token)
37
+ headers['Authorization'] = `Bearer ${token}`;
38
+ const items = [];
39
+ const numbers = new Set();
40
+ const shas = new Set();
41
+ let scanned = 0;
42
+ let limited = false;
43
+ for (let page = 1; page <= limits.pages && scanned < limits.prs; page += 1) {
44
+ let res;
45
+ try {
46
+ res = await fetchFn(`${API}/repos/${repo}/pulls?state=closed&sort=updated&direction=desc&per_page=${PAGE_SIZE}&page=${page}`, { headers, signal });
47
+ }
48
+ catch {
49
+ break; // network, timeout or abort: keep what was read
50
+ }
51
+ // 429 is a limit. A 403 is one only when GitHub says no quota is left (or tells us when to retry); any other
52
+ // 403 (a blocked repo, an SSO wall) is not a rate limit and gets no rate-limit line.
53
+ if (res.status === 429 || (res.status === 403 && (res.headers.get('x-ratelimit-remaining') === '0' || res.headers.has('retry-after')))) {
54
+ limited = true;
55
+ break;
56
+ }
57
+ if (!res.ok)
58
+ break; // 404 (private repo, no token), 5xx: say nothing
59
+ let rows;
60
+ try {
61
+ const body = await res.json();
62
+ if (!Array.isArray(body))
63
+ break;
64
+ rows = body;
65
+ }
66
+ catch {
67
+ break;
68
+ }
69
+ for (const p of rows) {
70
+ if (scanned >= limits.prs)
71
+ break;
72
+ 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
+ continue;
74
+ scanned += 1;
75
+ if (!extractReason(p.title, p.body))
76
+ continue;
77
+ items.push(toItem(p, repo));
78
+ numbers.add(p.number);
79
+ if (p.merge_commit_sha)
80
+ shas.add(p.merge_commit_sha.toLowerCase());
81
+ }
82
+ // Nothing left to read, or no quota left to read it with: stop quietly rather than draw a 403.
83
+ if (rows.length < PAGE_SIZE || res.headers.get('x-ratelimit-remaining') === '0')
84
+ break;
85
+ }
86
+ const note = limited ? (items.length === 0 ? RATE_LIMIT_LINE : partialRateLimitLine(items.length)) : undefined;
87
+ return { items, scanned, imported: items.length, ...(note ? { note } : {}), numbers, shas };
88
+ }
89
+ /** Never rejects. Resolves to no PRs for any origin that is not a github.com repo. */
90
+ export async function fetchFirstRunPrs(repoIdentity, deps = {}) {
91
+ if (!repoIdentity?.startsWith(GITHUB_PREFIX))
92
+ return EMPTY;
93
+ const repo = repoIdentity.slice(GITHUB_PREFIX.length);
94
+ if (!OWNER_REPO.test(repo))
95
+ return EMPTY;
96
+ const fetchFn = deps.fetchFn ?? fetch;
97
+ const detect = deps.detectToken ?? (() => detectVerifiedCliToken(CLI_TOKEN_SOURCES['github']));
98
+ const controller = new AbortController();
99
+ let timer;
100
+ const deadline = new Promise((resolve) => {
101
+ timer = setTimeout(() => { controller.abort(); resolve(EMPTY); }, deps.deadlineMs ?? PR_DEADLINE_MS);
102
+ timer.unref?.();
103
+ });
104
+ const work = (async () => {
105
+ let token;
106
+ try {
107
+ const found = await detect();
108
+ // Only a token the gate returned as proven read-only; a refusal is not a token.
109
+ if (found && 'token' in found && found.token)
110
+ token = found.token;
111
+ }
112
+ catch { /* no token: the public read still works */ }
113
+ return read(repo, token, fetchFn, controller.signal);
114
+ })().catch(() => EMPTY);
115
+ try {
116
+ return await Promise.race([work, deadline]);
117
+ }
118
+ finally {
119
+ clearTimeout(timer);
120
+ }
121
+ }
122
+ const SQUASH_PR_NUMBER = /\(#(\d+)\)\s*$/;
123
+ const COMMIT_SHA = /\/commit\/([0-9a-f]{40})(?:[/?#]|$)/;
124
+ /**
125
+ * The commits that are NOT the squash of an imported PR. A commit is covered when its sha IS that PR's
126
+ * merge commit (GitHub's own statement of which commit the PR became). A `(#N)` in a subject is not
127
+ * enough on its own here: a fork's history carries upstream commits titled with upstream's PR numbers.
128
+ * A PR that was not imported covers nothing: its commit is then the only row for the change.
129
+ */
130
+ export function dropCoveredCommits(commits, outcome) {
131
+ if (outcome.shas.size === 0)
132
+ return { items: commits, covered: 0 };
133
+ const items = commits.filter((c) => {
134
+ const sha = COMMIT_SHA.exec(c.source_url ?? '')?.[1];
135
+ return !(sha !== undefined && outcome.shas.has(sha.toLowerCase()));
136
+ });
137
+ return { items, covered: commits.length - items.length };
138
+ }
139
+ /**
140
+ * Later, `align connect git` re-reads commits with no PR read of its own. The PR rows first run stored are in
141
+ * the graph, so a commit whose subject ends in `(#N)` for a stored PR url of the SAME repo is the one the PR
142
+ * replaced, and is not written again.
143
+ */
144
+ export function dropCommitsOfStoredPrs(commits, storedPrUrls, repo) {
145
+ const prefix = `https://github.com/${repo.toLowerCase()}/pull/`;
146
+ const numbers = new Set();
147
+ for (const u of storedPrUrls)
148
+ if (u.toLowerCase().startsWith(prefix))
149
+ numbers.add(u.slice(prefix.length).replace(/[/?#].*$/, ''));
150
+ if (numbers.size === 0)
151
+ return { items: commits, covered: 0 };
152
+ const items = commits.filter((c) => {
153
+ const n = SQUASH_PR_NUMBER.exec(c.subject)?.[1];
154
+ return !(n !== undefined && numbers.has(n));
155
+ });
156
+ return { items, covered: commits.length - items.length };
157
+ }
158
+ //# sourceMappingURL=first-run-pr-import.js.map
@@ -0,0 +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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"}
@@ -30,5 +30,7 @@ export interface FoundSummaryDb {
30
30
  }>;
31
31
  }
32
32
  export declare function buildFoundSummary(db: FoundSummaryDb): FoundSummary;
33
- export declare function renderFoundSummary(s: FoundSummary): string;
33
+ export declare function renderFoundSummary(s: FoundSummary, opts?: {
34
+ prDescriptions?: number;
35
+ }): string;
34
36
  //# sourceMappingURL=found-summary.d.ts.map
@@ -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,GAAG,MAAM,CA2B1D"}
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"}
@@ -50,7 +50,7 @@ export function buildFoundSummary(db) {
50
50
  });
51
51
  return { total, linked: touched.size, recent };
52
52
  }
53
- export function renderFoundSummary(s) {
53
+ export function renderFoundSummary(s, opts = {}) {
54
54
  if (s.total === 0) {
55
55
  // A row of zeros reads as a broken tool, which is the ALI-503 lesson applied to
56
56
  // the first run. Say what is true and let the caller suggest a next source.
@@ -66,6 +66,9 @@ export function renderFoundSummary(s) {
66
66
  // "candidate": the importer keeps commits whose message states a reason. That is a text
67
67
  // heuristic, so the box does not claim to know which of them were real decisions.
68
68
  const lines = [counts];
69
+ // What kind of source the count came from, said only when there is one to say (ALI-1782).
70
+ if (opts.prDescriptions !== undefined && opts.prDescriptions > 0)
71
+ lines.push(` including ${opts.prDescriptions} from PR descriptions`);
69
72
  if (s.recent.length > 0) {
70
73
  lines.push('');
71
74
  for (const d of s.recent) {
@@ -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;IAChD,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,EAAE,CAAC;QAClB,gFAAgF;QAChF,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,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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"}