@aligndottech/cli 0.31.1 → 0.32.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 (82) hide show
  1. package/README.md +1 -0
  2. package/dist/commands/decisions/index.d.ts.map +1 -1
  3. package/dist/commands/decisions/index.js +10 -0
  4. package/dist/commands/decisions/index.js.map +1 -1
  5. package/dist/commands/import/docs.d.ts +3 -0
  6. package/dist/commands/import/docs.d.ts.map +1 -0
  7. package/dist/commands/import/docs.js +36 -0
  8. package/dist/commands/import/docs.js.map +1 -0
  9. package/dist/commands/import/git.d.ts.map +1 -1
  10. package/dist/commands/import/git.js +12 -3
  11. package/dist/commands/import/git.js.map +1 -1
  12. package/dist/commands/import.d.ts.map +1 -1
  13. package/dist/commands/import.js +2 -0
  14. package/dist/commands/import.js.map +1 -1
  15. package/dist/commands/local.d.ts.map +1 -1
  16. package/dist/commands/local.js +29 -2
  17. package/dist/commands/local.js.map +1 -1
  18. package/dist/commands/search.d.ts.map +1 -1
  19. package/dist/commands/search.js +12 -2
  20. package/dist/commands/search.js.map +1 -1
  21. package/dist/commands/setup.d.ts.map +1 -1
  22. package/dist/commands/setup.js +255 -53
  23. package/dist/commands/setup.js.map +1 -1
  24. package/dist/commands/status.d.ts.map +1 -1
  25. package/dist/commands/status.js +7 -2
  26. package/dist/commands/status.js.map +1 -1
  27. package/dist/commands/why.d.ts.map +1 -1
  28. package/dist/commands/why.js +52 -4
  29. package/dist/commands/why.js.map +1 -1
  30. package/dist/lib/commit-cite.d.ts +3 -2
  31. package/dist/lib/commit-cite.d.ts.map +1 -1
  32. package/dist/lib/commit-cite.js +18 -3
  33. package/dist/lib/commit-cite.js.map +1 -1
  34. package/dist/lib/config.d.ts +22 -0
  35. package/dist/lib/config.d.ts.map +1 -1
  36. package/dist/lib/config.js +69 -0
  37. package/dist/lib/config.js.map +1 -1
  38. package/dist/lib/connect-prompt.d.ts +53 -0
  39. package/dist/lib/connect-prompt.d.ts.map +1 -0
  40. package/dist/lib/connect-prompt.js +102 -0
  41. package/dist/lib/connect-prompt.js.map +1 -0
  42. package/dist/lib/decision-refs.d.ts +18 -1
  43. package/dist/lib/decision-refs.d.ts.map +1 -1
  44. package/dist/lib/decision-refs.js +60 -1
  45. package/dist/lib/decision-refs.js.map +1 -1
  46. package/dist/lib/fetchers/docs.d.ts +6 -0
  47. package/dist/lib/fetchers/docs.d.ts.map +1 -0
  48. package/dist/lib/fetchers/docs.js +180 -0
  49. package/dist/lib/fetchers/docs.js.map +1 -0
  50. package/dist/lib/found-summary.d.ts +34 -0
  51. package/dist/lib/found-summary.d.ts.map +1 -0
  52. package/dist/lib/found-summary.js +63 -0
  53. package/dist/lib/found-summary.js.map +1 -0
  54. package/dist/lib/gateway-client.d.ts +15 -1
  55. package/dist/lib/gateway-client.d.ts.map +1 -1
  56. package/dist/lib/gateway-client.js +7 -1
  57. package/dist/lib/gateway-client.js.map +1 -1
  58. package/dist/lib/git.d.ts +57 -5
  59. package/dist/lib/git.d.ts.map +1 -1
  60. package/dist/lib/git.js +114 -17
  61. package/dist/lib/git.js.map +1 -1
  62. package/dist/lib/local-db.d.ts +81 -3
  63. package/dist/lib/local-db.d.ts.map +1 -1
  64. package/dist/lib/local-db.js +163 -14
  65. package/dist/lib/local-db.js.map +1 -1
  66. package/dist/lib/local-gateway-client.d.ts +9 -2
  67. package/dist/lib/local-gateway-client.d.ts.map +1 -1
  68. package/dist/lib/local-gateway-client.js +91 -10
  69. package/dist/lib/local-gateway-client.js.map +1 -1
  70. package/dist/lib/repo-identity.d.ts +47 -0
  71. package/dist/lib/repo-identity.d.ts.map +1 -0
  72. package/dist/lib/repo-identity.js +110 -0
  73. package/dist/lib/repo-identity.js.map +1 -0
  74. package/dist/lib/setup-ux.d.ts +12 -0
  75. package/dist/lib/setup-ux.d.ts.map +1 -1
  76. package/dist/lib/setup-ux.js +18 -0
  77. package/dist/lib/setup-ux.js.map +1 -1
  78. package/dist/lib/value-rollup.d.ts +19 -1
  79. package/dist/lib/value-rollup.d.ts.map +1 -1
  80. package/dist/lib/value-rollup.js +39 -11
  81. package/dist/lib/value-rollup.js.map +1 -1
  82. package/package.json +1 -1
@@ -0,0 +1,110 @@
1
+ /**
2
+ * ALI-798: the repo dimension for the local graph. Without this, every checkout's
3
+ * decisions land in one global SQLite file with nothing recording which repo a row
4
+ * came from - so `align ask` inside align-cli silently answers from align-stack's
5
+ * commits too. This module is the one place identity is computed, so a decision's
6
+ * import-time stamp and a `--repo <name>` filter can never drift apart.
7
+ */
8
+ import { getRemoteUrl, getRepoRoot, isGitRepo } from './git.js';
9
+ /**
10
+ * `host/owner/repo`, lowercased, parsed out of a hosted commit/pull/issue URL - or null
11
+ * for anything that does not identify a repo (a ticket URL, a remoteless
12
+ * `git://commit/<sha>`, a bare host).
13
+ *
14
+ * Lowercased deliberately: GitHub and GitLab paths are case-insensitive, and collapsing
15
+ * two differently-cased links to the same repo into one identity is worth more than
16
+ * preserving a URL's original casing - the ticket's own example ("two clones of the same
17
+ * remote group as one repo, not two") is exactly this kind of accidental divergence.
18
+ *
19
+ * Requires a `/` in what follows the host: a bare `owner` before `/pull/N` or
20
+ * `/commit/<sha>` is a user or org page, not a repo, and admitting it would invent a
21
+ * "repo" named after an org. A `-` marker (GitLab's `/-/commit/`) is optional so both
22
+ * `gitlab.com/g/repo/-/commit/x` and a plain `commit`/`pull`/`issues` path match, and a
23
+ * GitLab subgroup path (`group/sub/repo`) survives intact rather than being cut at the
24
+ * first slash.
25
+ *
26
+ * `merge_requests` (Copilot review, #225): GitLab's own name for a pull request, and the
27
+ * verb `GitLabFetcher.fetch` (connector-core) actually stamps on `source_url` via `web_url`
28
+ * - without it, every GitLab import landed unattributed, silently defeating repo scoping
29
+ * for GitLab users specifically. Verified against the fetcher's real output, not just the
30
+ * URL shape.
31
+ */
32
+ const HOSTED_REPO = /^https?:\/\/([^/\s]+)\/(.+?)(?:\/-)?\/(?:commit|pull|issues|merge_requests)\/[0-9a-zA-Z]+(?:[/?#]|$)/;
33
+ export function repoFromSourceUrl(sourceUrl) {
34
+ if (!sourceUrl)
35
+ return null;
36
+ const m = HOSTED_REPO.exec(sourceUrl);
37
+ if (!m)
38
+ return null;
39
+ const ownerPath = m[2];
40
+ if (!ownerPath.includes('/'))
41
+ return null;
42
+ return `${m[1]}/${ownerPath}`.toLowerCase();
43
+ }
44
+ /**
45
+ * The same identity, derived from a git REMOTE url instead of a commit URL - for a git
46
+ * item whose source_url has no commit/pull path to match against (there is none; the
47
+ * remote IS the identity).
48
+ *
49
+ * Mirrors `buildCommitUrl`'s host detection (lib/git.ts) branch-for-branch on purpose:
50
+ * these are two writers of one fact (which repo a remote names), and letting them diverge
51
+ * would mean `repoFromSourceUrl(buildCommitUrl(remote, sha))` and `repoFromRemoteUrl(remote)`
52
+ * silently disagreeing about the same remote - a git-sourced decision stamped under one
53
+ * identity by the importer and looked up under another by a `--repo` filter. The parity
54
+ * test in repo-identity.test.ts is what keeps that from drifting unnoticed.
55
+ */
56
+ export function repoFromRemoteUrl(remoteUrl) {
57
+ if (!remoteUrl)
58
+ return null;
59
+ const sshGh = remoteUrl.match(/git@github\.com[:/](.+?)(?:\.git)?$/);
60
+ if (sshGh)
61
+ return `github.com/${sshGh[1]}`.toLowerCase();
62
+ const httpsGh = remoteUrl.match(/github\.com[:/](.+?)(?:\.git)?$/);
63
+ if (httpsGh)
64
+ return `github.com/${httpsGh[1]}`.toLowerCase();
65
+ const gl = remoteUrl.match(/gitlab\.com[:/](.+?)(?:\.git)?$/);
66
+ if (gl)
67
+ return `gitlab.com/${gl[1]}`.toLowerCase();
68
+ return null;
69
+ }
70
+ /**
71
+ * The identity of the repo the CLI is currently running in, for stamping a git-sourced
72
+ * decision whose remote is unrecognised or absent (a self-hosted GHES, a local-only repo
73
+ * never pushed anywhere). Falls back to the absolute repo root path - a path always starts
74
+ * with `/` (or a drive letter), which can never collide with the `host/owner/repo` shape
75
+ * above, so the two identity spaces never need disambiguating.
76
+ *
77
+ * Returns null outside a git repo: there is nothing to stamp, and nothing to scope to
78
+ * either (the ticket's own rule - "outside a git repo, default to all").
79
+ */
80
+ export async function currentRepoIdentity(opts = {}) {
81
+ if (!(await isGitRepo(opts)))
82
+ return null;
83
+ const remote = await getRemoteUrl(opts);
84
+ const fromRemote = repoFromRemoteUrl(remote);
85
+ if (fromRemote)
86
+ return fromRemote;
87
+ return getRepoRoot(opts);
88
+ }
89
+ /**
90
+ * Turns `--repo`/`--all` CLI flags into the `{ repo, all }` scope object
91
+ * searchDecisions/listDecisions take - and, since the repo dimension is local-only
92
+ * (ALI-798 scoped it to the local graph, not the cloud gateway), warns and drops them
93
+ * when the resolved environment has no repo dimension at all. One place decides this so
94
+ * every command that adds the flags applies the same rule (see ALI-505: a flag that
95
+ * silently does nothing is a bug, not a graceful degradation).
96
+ *
97
+ * Returns undefined for "no scope opinion" - a caller passes that straight through to
98
+ * searchDecisions/listDecisions, which apply their own default (current repo, or all
99
+ * outside one) exactly as if neither flag had been typed.
100
+ */
101
+ export function resolveScopeOpts(opts, envName, warn) {
102
+ if (opts.repo === undefined && !opts.all)
103
+ return undefined;
104
+ if (envName !== 'local') {
105
+ warn('--repo/--all only apply in local mode (no account, or `--local`) - showing everything.');
106
+ return undefined;
107
+ }
108
+ return { repo: opts.repo, all: opts.all };
109
+ }
110
+ //# sourceMappingURL=repo-identity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repo-identity.js","sourceRoot":"","sources":["../../src/lib/repo-identity.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAEhE;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,WAAW,GAAG,sGAAsG,CAAC;AAE3H,MAAM,UAAU,iBAAiB,CAAC,SAAoC;IACpE,IAAI,CAAC,SAAS;QAAE,OAAO,IAAI,CAAC;IAC5B,MAAM,CAAC,GAAG,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACtC,IAAI,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACpB,MAAM,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACvB,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAC1C,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,SAAS,EAAE,CAAC,WAAW,EAAE,CAAC;AAC9C,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,iBAAiB,CAAC,SAAwB;IACxD,IAAI,CAAC,SAAS;QAAE,OAAO,IAAI,CAAC;IAC5B,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC;IACrE,IAAI,KAAK;QAAE,OAAO,cAAc,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC;IACzD,MAAM,OAAO,GAAG,SAAS,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC;IACnE,IAAI,OAAO;QAAE,OAAO,cAAc,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC;IAC7D,MAAM,EAAE,GAAG,SAAS,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC;IAC9D,IAAI,EAAE;QAAE,OAAO,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC;IACnD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,OAAyB,EAAE;IACnE,IAAI,CAAC,CAAC,MAAM,SAAS,CAAC,IAAI,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IAC1C,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,CAAC;IACxC,MAAM,UAAU,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAC7C,IAAI,UAAU;QAAE,OAAO,UAAU,CAAC;IAClC,OAAO,WAAW,CAAC,IAAI,CAAC,CAAC;AAC3B,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,gBAAgB,CAC9B,IAAsC,EACtC,OAAe,EACf,IAA+B;IAE/B,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,GAAG;QAAE,OAAO,SAAS,CAAC;IAC3D,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;QACxB,IAAI,CAAC,wFAAwF,CAAC,CAAC;QAC/F,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AAC5C,CAAC"}
@@ -33,6 +33,18 @@ export declare const CLI_TOKEN_SOURCES: Record<string, {
33
33
  label: string;
34
34
  verify: (token: string) => Promise<ScopeVerdict>;
35
35
  }>;
36
+ /**
37
+ * Clear the terminal before the connector picker (ALI-794 component 5).
38
+ *
39
+ * Moving the found-decisions summary before the picker reintroduces the exact
40
+ * condition that used to corrupt clack's in-place redraw for an outside tester
41
+ * (2026-08-30): a screenful of import output sitting above a multiselect. That
42
+ * was fixed then by asking the picker BEFORE the git scan; inverting the order
43
+ * again means the picker needs its own clean canvas instead. A no-op off a real
44
+ * TTY, so piped/non-interactive output is never sent a control sequence it did
45
+ * not ask for.
46
+ */
47
+ export declare function clearScreenForPicker(stream?: typeof process.stdout): void;
36
48
  /**
37
49
  * Detect AND verify in one step, so the decision layer (and therefore --approve) can
38
50
  * never see an unverified token. `refused` carries the reason for the user: a silent
@@ -1 +1 @@
1
- {"version":3,"file":"setup-ux.d.ts","sourceRoot":"","sources":["../../src/lib/setup-ux.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,YAAY,EAA6B,MAAM,uBAAuB,CAAC;AAsBrF;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAIpF;AAED;;;;;;;GAOG;AACH,wBAAsB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAWxF;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,iBAAiB,EAAE,MAAM,CACpC,MAAM,EACN;IACE,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,YAAY,CAAC,CAAC;CAClD,CAQF,CAAC;AAEF;;;;;GAKG;AACH,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,CAAC,GACzC,OAAO,CAAC;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAAC,CAczD;AAED;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAAE;IAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,CAKtG"}
1
+ {"version":3,"file":"setup-ux.d.ts","sourceRoot":"","sources":["../../src/lib/setup-ux.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,YAAY,EAA6B,MAAM,uBAAuB,CAAC;AAuBrF;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAIpF;AAED;;;;;;;GAOG;AACH,wBAAsB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAWxF;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,iBAAiB,EAAE,MAAM,CACpC,MAAM,EACN;IACE,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,YAAY,CAAC,CAAC;CAClD,CAQF,CAAC;AAEF;;;;;;;;;;GAUG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,GAAE,OAAO,OAAO,CAAC,MAAuB,GAAG,IAAI,CAIzF;AAED;;;;;GAKG;AACH,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,CAAC,GACzC,OAAO,CAAC;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAAC,CAczD;AAED;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAAE;IAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,CAKtG"}
@@ -1,5 +1,6 @@
1
1
  import { execa } from 'execa';
2
2
  import { verifyReadOnlyGithubToken } from './token-scope-gate.js';
3
+ import * as readline from 'node:readline';
3
4
  /**
4
5
  * Sizing and credential-discovery helpers for `align setup`.
5
6
  *
@@ -69,6 +70,23 @@ export const CLI_TOKEN_SOURCES = {
69
70
  verify: (t) => verifyReadOnlyGithubToken(t),
70
71
  },
71
72
  };
73
+ /**
74
+ * Clear the terminal before the connector picker (ALI-794 component 5).
75
+ *
76
+ * Moving the found-decisions summary before the picker reintroduces the exact
77
+ * condition that used to corrupt clack's in-place redraw for an outside tester
78
+ * (2026-08-30): a screenful of import output sitting above a multiselect. That
79
+ * was fixed then by asking the picker BEFORE the git scan; inverting the order
80
+ * again means the picker needs its own clean canvas instead. A no-op off a real
81
+ * TTY, so piped/non-interactive output is never sent a control sequence it did
82
+ * not ask for.
83
+ */
84
+ export function clearScreenForPicker(stream = process.stdout) {
85
+ if (!stream.isTTY)
86
+ return;
87
+ readline.cursorTo(stream, 0, 0);
88
+ readline.clearScreenDown(stream);
89
+ }
72
90
  /**
73
91
  * Detect AND verify in one step, so the decision layer (and therefore --approve) can
74
92
  * never see an unverified token. `refused` carries the reason for the user: a silent
@@ -1 +1 @@
1
- {"version":3,"file":"setup-ux.js","sourceRoot":"","sources":["../../src/lib/setup-ux.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAC9B,OAAO,EAAqB,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AAErF;;;;;;GAMG;AAEH,iFAAiF;AACjF,4EAA4E;AAC5E,0CAA0C;AAC1C,MAAM,aAAa,GAAG,CAAC,CAAC;AAExB,+EAA+E;AAC/E,kFAAkF;AAClF,MAAM,WAAW,GAAG,CAAC,CAAC;AAEtB,gFAAgF;AAChF,MAAM,YAAY,GAAG,EAAE,CAAC;AAExB;;;;;;;GAOG;AACH,MAAM,UAAU,cAAc,CAAC,IAAwB,EAAE,WAAmB;IAC1E,MAAM,MAAM,GAAG,OAAO,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC;IACnG,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,MAAM,GAAG,aAAa,CAAC,CAAC;IAC7D,OAAO,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;AACvC,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,GAAW,EAAE,IAAc;IAC9D,IAAI,CAAC;QACH,6EAA6E;QAC7E,wEAAwE;QACxE,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;QAC1D,IAAI,OAAO,MAAM,EAAE,QAAQ,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QAC/E,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAClD,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;IACzC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAQ1B;IACF,MAAM,EAAE;QACN,GAAG,EAAE,IAAI;QACT,IAAI,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC;QACvB,KAAK,EAAE,iBAAiB;QACxB,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,yBAAyB,CAAC,CAAC,CAAC;KAC5C;CACF,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,MAA0C;IAE1C,MAAM,KAAK,GAAG,MAAM,cAAc,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;IAC5D,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IAExB,IAAI,OAAqB,CAAC;IAC1B,IAAI,CAAC;QACH,OAAO,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACvC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC7D,OAAO,EAAE,OAAO,EAAE,2BAA2B,GAAG,EAAE,EAAE,CAAC;IACvD,CAAC;IAED,IAAI,CAAC,OAAO,CAAC,EAAE;QAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,MAAM,IAAI,yBAAyB,EAAE,CAAC;IACjF,OAAO,EAAE,KAAK,EAAE,CAAC;AACnB,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,gBAAgB,CAAC,CAA6C;IAC5E,IAAI,CAAC,CAAC,CAAC,KAAK;QAAE,OAAO,MAAM,CAAC;IAC5B,6EAA6E;IAC7E,kEAAkE;IAClE,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;AACnC,CAAC"}
1
+ {"version":3,"file":"setup-ux.js","sourceRoot":"","sources":["../../src/lib/setup-ux.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,7 @@
4
4
  * source is fetched independently and a failure nulls only its own field - an old gateway
5
5
  * missing /decisions/reuse-rate must not blank the whole readout.
6
6
  */
7
+ import { type UnresolvedGap } from './connect-prompt.js';
7
8
  export interface ValueRollup {
8
9
  decisions: number;
9
10
  conflictsCaught: number;
@@ -17,6 +18,13 @@ export interface ValueRollup {
17
18
  supersessions: number;
18
19
  reuseRate: number | null;
19
20
  healthGrade: string | null;
21
+ /**
22
+ * ALI-796: unresolved-ref gaps the local graph can name for itself - a decision
23
+ * cites a Jira key, but nothing has connected Jira yet. Local-only: decision_refs
24
+ * lives in the local SQLite graph (local-db.ts), so the hosted gateway has none to
25
+ * report and fetchValueRollup always sets this to [].
26
+ */
27
+ gaps: UnresolvedGap[];
20
28
  }
21
29
  /**
22
30
  * Decisions in a local graph before the sharing prompt is earned (ALI-503).
@@ -66,11 +74,21 @@ export interface LocalRollupDb {
66
74
  listLinks(filter?: {
67
75
  relation?: string;
68
76
  }): unknown[];
77
+ /** ALI-796: every ref across every decision, for the gap resolver. */
78
+ getAllRefs(): Array<{
79
+ decisionId: string;
80
+ ref: string;
81
+ platform: string;
82
+ }>;
69
83
  }
70
84
  /**
71
85
  * The offline honest subset: decisions + conflict/duplicate/supersession counts derivable
72
86
  * from the local decision_links table. Reuse rate and composite health need the gateway,
73
87
  * so they are null here - we do NOT fabricate them offline (ALI-215 decision).
88
+ *
89
+ * `isConnected` defaults to "nothing is connected", which only matters when the graph
90
+ * actually carries refs - both real callers (status.ts, local.ts) always pass a real
91
+ * check, and a fixture with no refs gets `gaps: []` regardless of the default.
74
92
  */
75
- export declare function localValueRollup(db: LocalRollupDb): ValueRollup;
93
+ export declare function localValueRollup(db: LocalRollupDb, isConnected?: (connectorId: string) => boolean): ValueRollup;
76
94
  //# sourceMappingURL=value-rollup.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"value-rollup.d.ts","sourceRoot":"","sources":["../../src/lib/value-rollup.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB;;;;OAIG;IACH,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,qBAAqB,IAAI,CAAC;AAEvC,MAAM,WAAW,iBAAiB;IAChC,QAAQ,IAAI,OAAO,CAAC;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC5C,iBAAiB,IAAI,OAAO,CAAC;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACjD,aAAa,IAAI,OAAO,CAAC;QAAE,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAAC,mBAAmB,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACtF,YAAY,IAAI,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC,CAAC;IACjD,SAAS,IAAI,OAAO,CAAC;QAAE,cAAc,CAAC,EAAE;YAAE,KAAK,CAAC,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,CAAC,CAAC;CAC/D;AAUD,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,WAAW,CAAC,CAmBtF;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE;IAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAA;CAAE,GAAG,MAAM,CA+B5F;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,IAAI;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IAClC,SAAS,CAAC,MAAM,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,EAAE,CAAC;CACtD;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,aAAa,GAAG,WAAW,CAc/D"}
1
+ {"version":3,"file":"value-rollup.d.ts","sourceRoot":"","sources":["../../src/lib/value-rollup.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAiB,KAAK,aAAa,EAAkB,MAAM,qBAAqB,CAAC;AAExF,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB;;;;OAIG;IACH,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B;;;;;OAKG;IACH,IAAI,EAAE,aAAa,EAAE,CAAC;CACvB;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,qBAAqB,IAAI,CAAC;AAEvC,MAAM,WAAW,iBAAiB;IAChC,QAAQ,IAAI,OAAO,CAAC;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC5C,iBAAiB,IAAI,OAAO,CAAC;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACjD,aAAa,IAAI,OAAO,CAAC;QAAE,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAAC,mBAAmB,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACtF,YAAY,IAAI,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC,CAAC;IACjD,SAAS,IAAI,OAAO,CAAC;QAAE,cAAc,CAAC,EAAE;YAAE,KAAK,CAAC,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,CAAC,CAAC;CAC/D;AAUD,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,WAAW,CAAC,CAqBtF;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE;IAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAA;CAAE,GAAG,MAAM,CA8C5F;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,IAAI;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IAClC,SAAS,CAAC,MAAM,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,EAAE,CAAC;IACrD,sEAAsE;IACtE,UAAU,IAAI,KAAK,CAAC;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC5E;AAED;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAC9B,EAAE,EAAE,aAAa,EACjB,WAAW,GAAE,CAAC,WAAW,EAAE,MAAM,KAAK,OAAqB,GAC1D,WAAW,CAeb"}
@@ -4,6 +4,7 @@
4
4
  * source is fetched independently and a failure nulls only its own field - an old gateway
5
5
  * missing /decisions/reuse-rate must not blank the whole readout.
6
6
  */
7
+ import { statusGapLine, unresolvedGaps } from './connect-prompt.js';
7
8
  /**
8
9
  * Decisions in a local graph before the sharing prompt is earned (ALI-503).
9
10
  *
@@ -39,6 +40,8 @@ export async function fetchValueRollup(client) {
39
40
  supersessions: links?.supersessions_count ?? 0,
40
41
  reuseRate: reuse ? reuse.rate : null,
41
42
  healthGrade: health?.compositeScore?.grade ?? null,
43
+ // Cloud has no decision_refs table yet (see the `gaps` field doc above).
44
+ gaps: [],
42
45
  };
43
46
  }
44
47
  /**
@@ -53,16 +56,29 @@ export function renderValueReadout(r, opts) {
53
56
  // ALI-503: offline, nothing can write a conflict link, so "N conflicts caught" was either
54
57
  // fabricated from cosine similarity or a permanent zero that reads as a broken counter.
55
58
  // Report what the local graph genuinely knows instead.
56
- const headline = opts.mode === 'local'
57
- ? ` ${r.similarDecisions} similar decisions found`
58
- : ` ${r.conflictsCaught} conflicts caught`;
59
- const lines = [
60
- ` ${r.decisions} decisions in your graph`,
61
- headline,
62
- ` ${r.duplicates} duplicates found`,
63
- ` ${r.supersessions} decisions superseded`,
64
- ` reuse rate: ${reuse}`,
65
- ];
59
+ const lines = [` ${r.decisions} decisions in your graph`];
60
+ if (opts.mode === 'local') {
61
+ // ALI-794: offline, nothing writes a similarity, duplicate or supersession link on a
62
+ // first run, so all three are structurally zero and a row of them reads as a broken
63
+ // dashboard to someone ninety seconds into the tool. HIDDEN AT ZERO, never deleted -
64
+ // localValueRollup still counts the real relations (ALI-503's positive control), so a
65
+ // genuine one appears the moment it exists. Deleting the line would make that
66
+ // impossible and would look identical from here.
67
+ if (r.similarDecisions > 0)
68
+ lines.push(` ${r.similarDecisions} similar decisions found`);
69
+ if (r.duplicates > 0)
70
+ lines.push(` ${r.duplicates} duplicates found`);
71
+ if (r.supersessions > 0)
72
+ lines.push(` ${r.supersessions} decisions superseded`);
73
+ }
74
+ else {
75
+ // Cloud can write every one of these, so a zero there is a measurement rather than a
76
+ // gap, and the no-vanity-collapse rule keeps the labels visible.
77
+ lines.push(` ${r.conflictsCaught} conflicts caught`);
78
+ lines.push(` ${r.duplicates} duplicates found`);
79
+ lines.push(` ${r.supersessions} decisions superseded`);
80
+ }
81
+ lines.push(` reuse rate: ${reuse}`);
66
82
  if (r.healthGrade) {
67
83
  lines.push(` health: ${r.healthGrade}`);
68
84
  }
@@ -70,6 +86,13 @@ export function renderValueReadout(r, opts) {
70
86
  lines.push('');
71
87
  lines.push(' Reuse rate and health need the cloud graph - run `align login` to see them.');
72
88
  }
89
+ // ALI-796: name the gaps the graph can see for itself - one line per platform, only
90
+ // when there is one to name. Local-only, same as similarDecisions above.
91
+ if (r.gaps.length) {
92
+ lines.push('');
93
+ for (const gap of r.gaps)
94
+ lines.push(statusGapLine(gap));
95
+ }
73
96
  // similarDecisions is deliberately absent: buying the upsell with a cosine artefact is
74
97
  // the defect this ticket exists to remove, not a smaller version of it (ALI-503).
75
98
  const hasValue = (opts.mode === 'local' && r.decisions >= LOCAL_SHARE_THRESHOLD)
@@ -84,8 +107,12 @@ export function renderValueReadout(r, opts) {
84
107
  * The offline honest subset: decisions + conflict/duplicate/supersession counts derivable
85
108
  * from the local decision_links table. Reuse rate and composite health need the gateway,
86
109
  * so they are null here - we do NOT fabricate them offline (ALI-215 decision).
110
+ *
111
+ * `isConnected` defaults to "nothing is connected", which only matters when the graph
112
+ * actually carries refs - both real callers (status.ts, local.ts) always pass a real
113
+ * check, and a fixture with no refs gets `gaps: []` regardless of the default.
87
114
  */
88
- export function localValueRollup(db) {
115
+ export function localValueRollup(db, isConnected = () => false) {
89
116
  const count = (relation) => db.listLinks({ relation }).length;
90
117
  return {
91
118
  decisions: db.getStats().decisions,
@@ -98,6 +125,7 @@ export function localValueRollup(db) {
98
125
  supersessions: count('supersedes'),
99
126
  reuseRate: null,
100
127
  healthGrade: null,
128
+ gaps: unresolvedGaps(db.getAllRefs(), isConnected),
101
129
  };
102
130
  }
103
131
  //# sourceMappingURL=value-rollup.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"value-rollup.js","sourceRoot":"","sources":["../../src/lib/value-rollup.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"value-rollup.js","sourceRoot":"","sources":["../../src/lib/value-rollup.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aligndottech/cli",
3
- "version": "0.31.1",
3
+ "version": "0.32.0",
4
4
  "mcpName": "io.github.aligndottech/cli",
5
5
  "type": "module",
6
6
  "description": "Align CLI - capture decisions, check alignment, and manage connectors",