@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
@@ -8,6 +8,8 @@ import { localCitationFor } from '../lib/commit-cite.js';
8
8
  import { noProviderHintLines, RECOMMENDED_OLLAMA_PULL, synthesiseDetailed } from '../lib/local-llm.js';
9
9
  import { recordFunnelStage } from '../lib/usage-telemetry.js';
10
10
  import { formatWhen } from '../lib/format-date.js';
11
+ import { resolveScopeOpts } from '../lib/repo-identity.js';
12
+ import { askTrailingLine } from '../lib/connect-prompt.js';
11
13
  function wrapText(text, indent, maxWidth) {
12
14
  const words = text.split(' ');
13
15
  const lines = [];
@@ -52,6 +54,17 @@ function sourceLine(d) {
52
54
  function sourceLink(d) {
53
55
  return d.source_url ? chalk.dim(` ${d.source_url}`) : null;
54
56
  }
57
+ /**
58
+ * The trailing gap line under a source (ALI-796): only when this decision's own refs
59
+ * carry something the graph cannot read yet. Absent for a cloud result, which carries
60
+ * no external_references (the hosted gateway does not store decision_refs yet).
61
+ */
62
+ function gapLine(d, isConnected) {
63
+ if (!d.external_references?.length)
64
+ return null;
65
+ const line = askTrailingLine(d.external_references, isConnected);
66
+ return line ? chalk.dim(` ${line}`) : null;
67
+ }
55
68
  /**
56
69
  * "5 decisions across github, linear, slack" - printed only when results
57
70
  * genuinely span more than one platform. The claim is earned, never decorative:
@@ -69,10 +82,19 @@ export function registerAskCommand(program) {
69
82
  .description('Ask a question about your decision graph, or pass a file path to find related decisions')
70
83
  .option('--env <env>', 'Environment')
71
84
  .option('--limit <n>', 'Max answers', '8')
85
+ .option('--repo <name>', 'Scope to one repo - short name, owner/repo, or full identity (local mode only)')
86
+ .option('--all', 'Search every repo, not just the current one (local mode only)')
72
87
  .action(async (query, opts) => {
73
88
  const config = createConfigStore();
74
89
  const envName = resolveEnv(opts.env, { preferLocalEmbedded: true });
75
90
  const client = createGatewayClient(config.getEnvironment(envName));
91
+ // ALI-798: undefined means "no opinion" - searchDecisions applies its own default
92
+ // (current repo, or everywhere outside one) exactly as if neither flag were typed.
93
+ const scope = resolveScopeOpts({ repo: opts.repo, all: opts.all }, envName, (m) => console.log(chalk.yellow(` ${m}`)));
94
+ // ALI-796: same "does local mode hold a saved token" check status.ts and local.ts
95
+ // use. Only ever consulted when a result carries external_references, which today
96
+ // means local mode - a cloud result has none.
97
+ const isConnected = (id) => config.getConnectorFields(envName, id) !== null;
76
98
  // Pass the query through unchanged: the gateway's smart-search strategy
77
99
  // selector routes natural-language questions to semantic search. Stripping
78
100
  // the question word turned questions into keyword phrases that matched
@@ -81,7 +103,7 @@ export function registerAskCommand(program) {
81
103
  const searchQuery = query;
82
104
  const spinner = ora('').start();
83
105
  try {
84
- const results = await client.searchDecisions(searchQuery, parseInt(opts.limit, 10));
106
+ const results = await client.searchDecisions(searchQuery, parseInt(opts.limit, 10), scope);
85
107
  spinner.stop();
86
108
  if (!results.results.length) {
87
109
  console.log('');
@@ -99,9 +121,16 @@ export function registerAskCommand(program) {
99
121
  // Sending someone to re-import a full graph is the worse of the two errors: it
100
122
  // reads as the import never having worked. So ask the graph before saying it is
101
123
  // empty. One extra call, only on the path that was already returning nothing.
124
+ //
125
+ // ALI-798: `{ all: true }` here is NOT the user's scope choice - it is always
126
+ // unscoped, because the question this check answers is "does the GRAPH have
127
+ // anything in it", not "does this repo". Without it, being inside a repo with
128
+ // zero decisions (while another repo holds hundreds) would answer "no decisions
129
+ // found, build your graph first" - false, and the exact failure this ticket
130
+ // exists to prevent, just moved from retrieval into this diagnostic.
102
131
  let graphHasDecisions;
103
132
  try {
104
- const some = await client.listDecisions({ limit: 1 });
133
+ const some = await client.listDecisions({ limit: 1, all: true });
105
134
  graphHasDecisions = Array.isArray(some) && some.length > 0;
106
135
  }
107
136
  catch {
@@ -114,8 +143,16 @@ export function registerAskCommand(program) {
114
143
  // way ask, search and import do, so the bare command is the right one to print
115
144
  // for every user. It carried `--env ${envName}` while that was not true.
116
145
  const listCmd = 'align decisions list';
117
- console.log(chalk.dim(` Nothing matched "${query}", but your graph is not empty.`));
118
- console.log(chalk.dim(' Try different words, or list what is in there:'));
146
+ if (results.scope) {
147
+ // Named because it is the reason nothing matched here, and distinguishes
148
+ // "not in THIS repo" from "not anywhere" (ALI-771's lesson, extended to scope).
149
+ console.log(chalk.dim(` Nothing matched "${query}" in ${results.scope}.`));
150
+ console.log(chalk.dim(' Try --all to search your whole graph, or list what is in this repo:'));
151
+ }
152
+ else {
153
+ console.log(chalk.dim(` Nothing matched "${query}", but your graph is not empty.`));
154
+ console.log(chalk.dim(' Try different words, or list what is in there:'));
155
+ }
119
156
  console.log(chalk.dim(` ${listCmd}`));
120
157
  console.log('');
121
158
  return;
@@ -127,6 +164,11 @@ export function registerAskCommand(program) {
127
164
  console.log('');
128
165
  return;
129
166
  }
167
+ // ALI-798: named up front so a reader knows what was searched before reading an
168
+ // answer that might be missing something they know exists in another repo.
169
+ if (results.scope) {
170
+ console.log(chalk.dim(` Answering from ${results.scope} (--all searches every repo)`));
171
+ }
130
172
  // ALI-795: a non-empty answer is the funnel's activation moment - emitted here,
131
173
  // before rendering branches (the synthesized-answer path returns early). The
132
174
  // once-per-install guard lives inside recordFunnelStage. Fired without await
@@ -162,6 +204,9 @@ export function registerAskCommand(program) {
162
204
  const link = sourceLink(d);
163
205
  if (link)
164
206
  console.log(link);
207
+ const gap = gapLine(d, isConnected);
208
+ if (gap)
209
+ console.log(gap);
165
210
  }
166
211
  console.log('');
167
212
  if (results.count >= 5) {
@@ -210,6 +255,9 @@ export function registerAskCommand(program) {
210
255
  console.log(chalk.dim(` id: ${d.id}`) + citeLabel + platformLabel + statusLabel + (when ? chalk.dim(` · ${when}`) : ''));
211
256
  if (d.source_url)
212
257
  console.log(chalk.dim(` ${d.source_url}`));
258
+ const gap = gapLine(d, isConnected);
259
+ if (gap)
260
+ console.log(gap);
213
261
  // Who to talk to (ALI-118).
214
262
  if (d.author?.name)
215
263
  console.log(chalk.cyan(` talk to: ${d.author.name}`));
@@ -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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"}
@@ -1,4 +1,5 @@
1
- /** "cli@abc1234" for a hosted commit, "abc1234" for a remoteless one, else whatever
2
- * the shared reader says (repo#N, ticket key, or undefined). */
1
+ /** "cli@abc1234" for a hosted commit, "cli#78" for a GitLab MR/issue, "abc1234" for a
2
+ * remoteless commit, else whatever the shared reader says (repo#N, ticket key, or
3
+ * undefined). */
3
4
  export declare function localCitationFor(sourceUrl: string | null | undefined): string | undefined;
4
5
  //# sourceMappingURL=commit-cite.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"commit-cite.d.ts","sourceRoot":"","sources":["../../src/lib/commit-cite.ts"],"names":[],"mappings":"AAoBA;iEACiE;AACjE,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAQzF"}
1
+ {"version":3,"file":"commit-cite.d.ts","sourceRoot":"","sources":["../../src/lib/commit-cite.ts"],"names":[],"mappings":"AA+BA;;kBAEkB;AAClB,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAUzF"}
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * The CLI-local citation reader: everything the shared `citationFor` cites, plus
3
- * commit URLs (ALI-792).
3
+ * commit URLs (ALI-792) and GitLab merge requests/issues (ALI-796).
4
4
  *
5
5
  * A wrapper rather than an edit to decision-links.ts, deliberately: that file is
6
6
  * byte-identical to mcp-align's copy in align-stack and documents that parity as
@@ -16,8 +16,20 @@ import { citationFor } from './decision-links.js';
16
16
  // subgroup remotes (review finding, 2026-09-01).
17
17
  const HOSTED_COMMIT = /^https?:\/\/[^/\s]+\/(?:[^/\s]+\/)*?([^/\s]+?)(?:\/-)?\/commit\/([0-9a-f]{7,40})(?:[/?#]|$)/;
18
18
  const LOCAL_COMMIT = /^git:\/\/commit\/([0-9a-f]{7,40})(?:[/?#]|$)/;
19
- /** "cli@abc1234" for a hosted commit, "abc1234" for a remoteless one, else whatever
20
- * the shared reader says (repo#N, ticket key, or undefined). */
19
+ /**
20
+ * GitLab merge requests and issues route through `/merge_requests/N` and `/issues/N`,
21
+ * with an optional `/-/` marker (required on gitlab.com since ~2019, still optional on
22
+ * older self-managed instances) - a shape the shared CODE_REF cannot see at all, since
23
+ * it only recognises "pull" and "issues" with no separator in between (ALI-796 review
24
+ * finding: refIdentityFor('gitlab', ...) silently returned [] for every real GitLab
25
+ * source, so a pre-existing gap could be marked "connected" and never actually
26
+ * resolved into a link). Subgroup-aware the same way HOSTED_COMMIT is, for the same
27
+ * reason: the repo is the last segment before the marker, not the first after the host.
28
+ */
29
+ const GITLAB_MR_OR_ISSUE = /^https?:\/\/[^/\s]+\/(?:[^/\s]+\/)*?([^/\s]+?)(?:\/-)?\/(?:merge_requests|issues)\/(\d+)(?:[/?#]|$)/;
30
+ /** "cli@abc1234" for a hosted commit, "cli#78" for a GitLab MR/issue, "abc1234" for a
31
+ * remoteless commit, else whatever the shared reader says (repo#N, ticket key, or
32
+ * undefined). */
21
33
  export function localCitationFor(sourceUrl) {
22
34
  const shared = citationFor(sourceUrl);
23
35
  if (shared)
@@ -27,6 +39,9 @@ export function localCitationFor(sourceUrl) {
27
39
  const hosted = HOSTED_COMMIT.exec(sourceUrl);
28
40
  if (hosted)
29
41
  return `${hosted[1]}@${hosted[2].slice(0, 7)}`;
42
+ const gitlab = GITLAB_MR_OR_ISSUE.exec(sourceUrl);
43
+ if (gitlab)
44
+ return `${gitlab[1]}#${gitlab[2]}`;
30
45
  const local = LOCAL_COMMIT.exec(sourceUrl);
31
46
  return local ? local[1].slice(0, 7) : undefined;
32
47
  }
@@ -1 +1 @@
1
- {"version":3,"file":"commit-cite.js","sourceRoot":"","sources":["../../src/lib/commit-cite.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAElD,wFAAwF;AACxF,wFAAwF;AACxF,sFAAsF;AACtF,iDAAiD;AACjD,MAAM,aAAa,GAAG,6FAA6F,CAAC;AACpH,MAAM,YAAY,GAAG,8CAA8C,CAAC;AAEpE;iEACiE;AACjE,MAAM,UAAU,gBAAgB,CAAC,SAAoC;IACnE,MAAM,MAAM,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;IACtC,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC;IAC1B,IAAI,CAAC,SAAS;QAAE,OAAO,SAAS,CAAC;IACjC,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC7C,IAAI,MAAM;QAAE,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;IAC3D,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC3C,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAClD,CAAC"}
1
+ {"version":3,"file":"commit-cite.js","sourceRoot":"","sources":["../../src/lib/commit-cite.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAElD,wFAAwF;AACxF,wFAAwF;AACxF,sFAAsF;AACtF,iDAAiD;AACjD,MAAM,aAAa,GAAG,6FAA6F,CAAC;AACpH,MAAM,YAAY,GAAG,8CAA8C,CAAC;AACpE;;;;;;;;;GASG;AACH,MAAM,kBAAkB,GAAG,qGAAqG,CAAC;AAEjI;;kBAEkB;AAClB,MAAM,UAAU,gBAAgB,CAAC,SAAoC;IACnE,MAAM,MAAM,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;IACtC,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC;IAC1B,IAAI,CAAC,SAAS;QAAE,OAAO,SAAS,CAAC;IACjC,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC7C,IAAI,MAAM;QAAE,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;IAC3D,MAAM,MAAM,GAAG,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAClD,IAAI,MAAM;QAAE,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;IAC/C,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC3C,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAClD,CAAC"}
@@ -7,6 +7,16 @@ export interface EnvironmentConfig {
7
7
  mode: 'demo' | 'auth' | 'local-embedded';
8
8
  localDbPath?: string;
9
9
  }
10
+ /**
11
+ * The fork point for ALI-794's value-first onboarding order: nothing configured
12
+ * yet on this machine, in either mode. A returning user (they already have a
13
+ * local graph, or they are logged in to cloud) keeps the existing
14
+ * mode-question-first `align setup` flow - this only widens the door for a
15
+ * genuinely first run.
16
+ */
17
+ export declare function isFreshInstall(config: {
18
+ getEnvironment(env: EnvName): EnvironmentConfig;
19
+ }): boolean;
10
20
  /**
11
21
  * ALI-618: local-embedded mode never makes an HTTP call for its own operations (it reads a
12
22
  * local embedded DB - see gateway-client.ts's `createLocalGatewayClient` branch), so the
@@ -28,6 +38,18 @@ export declare function createConfigStore(): {
28
38
  getDefaultEnv(): EnvName;
29
39
  getConnectorToken(env: EnvName, connectorKey: string): string | null;
30
40
  setConnectorToken(env: EnvName, connectorKey: string, token: string): void;
41
+ /**
42
+ * Everything local mode collected for one connector: the token plus whatever extra fields
43
+ * that connector asks for. `null` means nothing is stored, which is what setup uses to tell
44
+ * "never connected" from "connected with a token and no extras" - GitHub is the second case,
45
+ * and reading it as the first is how it ended up re-asking on every run (ALI-802).
46
+ */
47
+ getConnectorFields(env: EnvName, connectorKey: string): Record<string, string> | null;
48
+ saveConnectorFields(env: EnvName, connectorKey: string, fields: Record<string, string>): void;
49
+ /** Drops every key this connector owns - token, extra fields, and any OAuth cloudId/siteBase. */
50
+ forgetConnector(env: EnvName, connectorKey: string): void;
51
+ /** Every connector in one environment. The other environments' credentials are untouched. */
52
+ forgetAllConnectors(env: EnvName): void;
31
53
  getConnectorCloudId(env: EnvName, connectorKey: string): string | null;
32
54
  setConnectorCloudId(env: EnvName, connectorKey: string, cloudId: string): void;
33
55
  getConnectorSiteBase(env: EnvName, connectorKey: string): string | null;
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,OAAO,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;AAEnD,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,gBAAgB,CAAC;IACzC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAQD;;;;;;;;GAQG;AACH,eAAO,MAAM,wBAAwB,QAA2B,CAAC;AAEjE,sGAAsG;AACtG,MAAM,MAAM,gBAAgB,GAAG,SAAS,GAAG,UAAU,CAAC;AAEtD,wBAAgB,iBAAiB;wBAgBT,OAAO,GAAG,iBAAiB;sBAc7B,OAAO,SAAS,MAAM;qBAIvB,OAAO,YAAY,MAAM;qBAIzB,MAAM;uBAIJ,OAAO;qBACT,OAAO;2BACD,OAAO,gBAAgB,MAAM,GAAG,MAAM,GAAG,IAAI;2BAI7C,OAAO,gBAAgB,MAAM,SAAS,MAAM;6BAI1C,OAAO,gBAAgB,MAAM,GAAG,MAAM,GAAG,IAAI;6BAI7C,OAAO,gBAAgB,MAAM,WAAW,MAAM;8BAI7C,OAAO,gBAAgB,MAAM,GAAG,MAAM,GAAG,IAAI;8BAI7C,OAAO,gBAAgB,MAAM,YAAY,MAAM;yBAIpD,MAAM;;eAWhB,OAAO;oBAQF,MAAM;2BAOC,gBAAgB,GAAG,SAAS;+BAGxB,gBAAgB;kCAMb,MAAM,GAAG,OAAO;mCAGf,MAAM,GAAG,IAAI;EAK/C"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,OAAO,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;AAEnD,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,gBAAgB,CAAC;IACzC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE;IACrC,cAAc,CAAC,GAAG,EAAE,OAAO,GAAG,iBAAiB,CAAC;CACjD,GAAG,OAAO,CASV;AAQD;;;;;;;;GAQG;AACH,eAAO,MAAM,wBAAwB,QAA2B,CAAC;AAEjE,sGAAsG;AACtG,MAAM,MAAM,gBAAgB,GAAG,SAAS,GAAG,UAAU,CAAC;AAEtD,wBAAgB,iBAAiB;wBAyBT,OAAO,GAAG,iBAAiB;sBAc7B,OAAO,SAAS,MAAM;qBAIvB,OAAO,YAAY,MAAM;qBAIzB,MAAM;uBAIJ,OAAO;qBACT,OAAO;2BACD,OAAO,gBAAgB,MAAM,GAAG,MAAM,GAAG,IAAI;2BAI7C,OAAO,gBAAgB,MAAM,SAAS,MAAM;IAInE;;;;;OAKG;4BACqB,OAAO,gBAAgB,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI;6BAY5D,OAAO,gBAAgB,MAAM,UAAU,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAYtF,iGAAiG;yBAC5E,OAAO,gBAAgB,MAAM;IAOlD,6FAA6F;6BACpE,OAAO;6BAMP,OAAO,gBAAgB,MAAM,GAAG,MAAM,GAAG,IAAI;6BAI7C,OAAO,gBAAgB,MAAM,WAAW,MAAM;8BAI7C,OAAO,gBAAgB,MAAM,GAAG,MAAM,GAAG,IAAI;8BAI7C,OAAO,gBAAgB,MAAM,YAAY,MAAM;yBAIpD,MAAM;;eAWhB,OAAO;oBAQF,MAAM;2BAOC,gBAAgB,GAAG,SAAS;+BAGxB,gBAAgB;kCAMb,MAAM,GAAG,OAAO;mCAGf,MAAM,GAAG,IAAI;EAK/C"}
@@ -1,5 +1,22 @@
1
1
  import Conf from 'conf';
2
2
  import { randomUUID } from 'node:crypto';
3
+ /**
4
+ * The fork point for ALI-794's value-first onboarding order: nothing configured
5
+ * yet on this machine, in either mode. A returning user (they already have a
6
+ * local graph, or they are logged in to cloud) keeps the existing
7
+ * mode-question-first `align setup` flow - this only widens the door for a
8
+ * genuinely first run.
9
+ */
10
+ export function isFreshInstall(config) {
11
+ const hasLocal = config.getEnvironment('local').mode === 'local-embedded';
12
+ // Every env, not just the default one (Copilot, PR #224): a user who logged into a
13
+ // non-default env (e.g. `align login --env preview`) while defaultEnv is still 'prod'
14
+ // is a returning user, and checking only getDefaultEnv() would misclassify them as
15
+ // fresh and route them into the value-first flow a second time.
16
+ const ALL_ENVS = ['local', 'preview', 'prod'];
17
+ const hasCloud = ALL_ENVS.some((e) => Boolean(config.getEnvironment(e).authToken));
18
+ return !hasLocal && !hasCloud;
19
+ }
3
20
  const DEFAULTS = {
4
21
  local: { gatewayUrl: 'http://localhost:8080', authToken: null, tenantId: null, mode: 'demo' },
5
22
  preview: { gatewayUrl: 'https://api.preview.align.tech', authToken: null, tenantId: null, mode: 'auth' },
@@ -19,8 +36,16 @@ export function createConfigStore() {
19
36
  const store = new Conf({
20
37
  projectName: 'align-cli',
21
38
  defaults: { environments: {}, defaultEnv: 'prod', connectorTokens: {} },
39
+ // This file holds the read-only tokens local mode asks for, so it is a credential file
40
+ // rather than ordinary config. 0600 is also what the setup copy promises the user.
41
+ configFileMode: 0o600,
22
42
  });
23
43
  const getEnvs = () => store.get('environments');
44
+ const getTokens = () => store.get('connectorTokens');
45
+ // Extra fields (an Atlassian email, a GitLab domain) live beside the token under a `field:`
46
+ // segment. The OAuth path already writes `<env>:<key>:cloudId` and `:siteBase` in this same
47
+ // map, and the segment is what stops a connector field of either name colliding with them.
48
+ const fieldPrefix = (env, connectorKey) => `${env}:${connectorKey}:field:`;
24
49
  return {
25
50
  getEnvironment(env) {
26
51
  const base = { ...DEFAULTS[env], ...(getEnvs()[env] ?? {}) };
@@ -58,6 +83,50 @@ export function createConfigStore() {
58
83
  const tokens = store.get('connectorTokens');
59
84
  store.set('connectorTokens', { ...tokens, [`${env}:${connectorKey}`]: token });
60
85
  },
86
+ /**
87
+ * Everything local mode collected for one connector: the token plus whatever extra fields
88
+ * that connector asks for. `null` means nothing is stored, which is what setup uses to tell
89
+ * "never connected" from "connected with a token and no extras" - GitHub is the second case,
90
+ * and reading it as the first is how it ended up re-asking on every run (ALI-802).
91
+ */
92
+ getConnectorFields(env, connectorKey) {
93
+ const tokens = getTokens();
94
+ const token = tokens[`${env}:${connectorKey}`];
95
+ if (token === undefined)
96
+ return null;
97
+ const prefix = fieldPrefix(env, connectorKey);
98
+ const fields = { token };
99
+ for (const [key, value] of Object.entries(tokens)) {
100
+ if (key.startsWith(prefix))
101
+ fields[key.slice(prefix.length)] = value;
102
+ }
103
+ return fields;
104
+ },
105
+ saveConnectorFields(env, connectorKey, fields) {
106
+ const { token, ...extras } = fields;
107
+ // An empty token would be stored as a connector that reads as saved and cannot be used:
108
+ // setup's reuse check is truthy so it would ask again, while getConnectorFields and
109
+ // `local forget` would both report a credential that is not there. Refuse it here, where
110
+ // there is one writer, rather than teaching every reader to distrust the value.
111
+ if (!token)
112
+ throw new Error(`saveConnectorFields: ${connectorKey} needs a non-empty token`);
113
+ const prefix = fieldPrefix(env, connectorKey);
114
+ const updated = { ...getTokens(), [`${env}:${connectorKey}`]: token };
115
+ for (const [name, value] of Object.entries(extras))
116
+ updated[`${prefix}${name}`] = value;
117
+ store.set('connectorTokens', updated);
118
+ },
119
+ /** Drops every key this connector owns - token, extra fields, and any OAuth cloudId/siteBase. */
120
+ forgetConnector(env, connectorKey) {
121
+ const owned = `${env}:${connectorKey}`;
122
+ const kept = Object.fromEntries(Object.entries(getTokens()).filter(([key]) => key !== owned && !key.startsWith(`${owned}:`)));
123
+ store.set('connectorTokens', kept);
124
+ },
125
+ /** Every connector in one environment. The other environments' credentials are untouched. */
126
+ forgetAllConnectors(env) {
127
+ const kept = Object.fromEntries(Object.entries(getTokens()).filter(([key]) => !key.startsWith(`${env}:`)));
128
+ store.set('connectorTokens', kept);
129
+ },
61
130
  getConnectorCloudId(env, connectorKey) {
62
131
  const tokens = store.get('connectorTokens');
63
132
  return tokens[`${env}:${connectorKey}:cloudId`] ?? null;
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,53 @@
1
+ /**
2
+ * Gap-driven pull (ALI-796): once `decision_refs` (ALI-792) knows what a decision's
3
+ * text points at, the graph can name its own gaps - a ref whose platform has no
4
+ * connected source. Surfaced as pull, never gate: one line, a real number, the exact
5
+ * command that fills it in.
6
+ *
7
+ * Local-only for now: `decision_refs` lives in the local SQLite graph
8
+ * (local-db.ts). The hosted gateway does not store refs yet, so a cloud rollup
9
+ * carries no gaps - see value-rollup.ts's `mode` split, which already draws this
10
+ * line for similarDecisions.
11
+ */
12
+ import type { DecisionRef } from './decision-refs.js';
13
+ export interface UnresolvedGap {
14
+ /** The ref's platform bucket, exactly as decision_refs stores it - 'tracker' and
15
+ * 'code' cover more than one connector by construction (decision-refs.ts). */
16
+ platform: DecisionRef['platform'];
17
+ /** Distinct decisions carrying at least one unresolved ref of this platform - the
18
+ * number the pull copy states ("12 decisions cite..."), not the total ref count.
19
+ * One decision citing the same Jira key five times must not read as five gaps. */
20
+ decisions: number;
21
+ /** Connector ids that would resolve at least one ref in this bucket. Length 2 for
22
+ * 'tracker' (jira or linear) and 'code' (github or gitlab) - a bare KEY-123 or #N
23
+ * cannot say which tool it came from. */
24
+ connectors: string[];
25
+ }
26
+ /**
27
+ * The gaps a graph can name for itself: unresolved-ref counts per platform, for
28
+ * platforms with no connected source. Pure - the caller supplies both the refs
29
+ * (each carrying which decision cited it) and how to check a connector, so this
30
+ * has no I/O and needs no fixture beyond plain objects.
31
+ */
32
+ export declare function unresolvedGaps(refs: Array<{
33
+ decisionId: string;
34
+ platform: string;
35
+ }>, isConnected: (connectorId: string) => boolean): UnresolvedGap[];
36
+ /**
37
+ * The end-of-setup pull line - ONE gap, the biggest, never a wall of platforms.
38
+ * "12 of your decisions reference Jira keys I can't read - align import jira when
39
+ * you want them filled in." Null when the graph has no gap to name.
40
+ */
41
+ export declare function setupSummaryLine(gaps: UnresolvedGap[]): string | null;
42
+ /** `align status`'s per-platform readout line. */
43
+ export declare function statusGapLine(gap: UnresolvedGap): string;
44
+ /**
45
+ * The trailing line under one `align ask` result - only when THIS decision's own
46
+ * refs carry a gap, not the graph-wide count. Reports the first unresolved ref
47
+ * found; a decision citing several missing platforms still gets one line, matching
48
+ * the "one line" restraint the setup summary uses.
49
+ */
50
+ export declare function askTrailingLine(refs: Array<{
51
+ platform: string;
52
+ }>, isConnected: (connectorId: string) => boolean): string | null;
53
+ //# sourceMappingURL=connect-prompt.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,102 @@
1
+ /**
2
+ * Gap-driven pull (ALI-796): once `decision_refs` (ALI-792) knows what a decision's
3
+ * text points at, the graph can name its own gaps - a ref whose platform has no
4
+ * connected source. Surfaced as pull, never gate: one line, a real number, the exact
5
+ * command that fills it in.
6
+ *
7
+ * Local-only for now: `decision_refs` lives in the local SQLite graph
8
+ * (local-db.ts). The hosted gateway does not store refs yet, so a cloud rollup
9
+ * carries no gaps - see value-rollup.ts's `mode` split, which already draws this
10
+ * line for similarDecisions.
11
+ */
12
+ /** Which connector(s) could fill in a ref of each platform. */
13
+ const CANDIDATE_CONNECTORS = {
14
+ github: ['github'],
15
+ jira: ['jira'],
16
+ confluence: ['confluence'],
17
+ linear: ['linear'],
18
+ slack: ['slack'],
19
+ tracker: ['jira', 'linear'],
20
+ code: ['github', 'gitlab'],
21
+ };
22
+ const PLATFORM_LABEL = {
23
+ jira: 'Jira',
24
+ confluence: 'Confluence',
25
+ linear: 'Linear',
26
+ slack: 'Slack',
27
+ github: 'GitHub',
28
+ tracker: 'ticket-tracker',
29
+ code: 'issue-tracker',
30
+ };
31
+ function connectCommands(connectors) {
32
+ return connectors.map((c) => `align import ${c}`).join(' or ');
33
+ }
34
+ /** "a" or "an", by the label's first letter - "a Jira ref" but "an issue-tracker ref". */
35
+ function articleFor(label) {
36
+ return /^[aeiou]/i.test(label) ? 'an' : 'a';
37
+ }
38
+ /**
39
+ * The gaps a graph can name for itself: unresolved-ref counts per platform, for
40
+ * platforms with no connected source. Pure - the caller supplies both the refs
41
+ * (each carrying which decision cited it) and how to check a connector, so this
42
+ * has no I/O and needs no fixture beyond plain objects.
43
+ */
44
+ export function unresolvedGaps(refs, isConnected) {
45
+ const decisionsByPlatform = new Map();
46
+ for (const r of refs) {
47
+ let set = decisionsByPlatform.get(r.platform);
48
+ if (!set) {
49
+ set = new Set();
50
+ decisionsByPlatform.set(r.platform, set);
51
+ }
52
+ set.add(r.decisionId);
53
+ }
54
+ const gaps = [];
55
+ for (const [platform, decisionIds] of decisionsByPlatform) {
56
+ const connectors = CANDIDATE_CONNECTORS[platform];
57
+ if (!connectors || connectors.some(isConnected))
58
+ continue;
59
+ gaps.push({ platform: platform, decisions: decisionIds.size, connectors });
60
+ }
61
+ return gaps.sort((a, b) => b.decisions - a.decisions);
62
+ }
63
+ /**
64
+ * The end-of-setup pull line - ONE gap, the biggest, never a wall of platforms.
65
+ * "12 of your decisions reference Jira keys I can't read - align import jira when
66
+ * you want them filled in." Null when the graph has no gap to name.
67
+ */
68
+ export function setupSummaryLine(gaps) {
69
+ if (!gaps.length)
70
+ return null;
71
+ const top = gaps[0];
72
+ const label = PLATFORM_LABEL[top.platform] ?? top.platform;
73
+ const plural = top.decisions === 1 ? '' : 's';
74
+ const verb = top.decisions === 1 ? 'references' : 'reference';
75
+ const them = top.decisions === 1 ? 'it' : 'them';
76
+ return `${top.decisions} decision${plural} ${verb} ${label} keys I can't read - `
77
+ + `${connectCommands(top.connectors)} when you want ${them} filled in.`;
78
+ }
79
+ /** `align status`'s per-platform readout line. */
80
+ export function statusGapLine(gap) {
81
+ const label = PLATFORM_LABEL[gap.platform] ?? gap.platform;
82
+ const plural = gap.decisions === 1 ? '' : 's';
83
+ const verb = gap.decisions === 1 ? 'cites' : 'cite';
84
+ return ` ${gap.decisions} decision${plural} ${verb} ${label} I can't read - ${connectCommands(gap.connectors)}`;
85
+ }
86
+ /**
87
+ * The trailing line under one `align ask` result - only when THIS decision's own
88
+ * refs carry a gap, not the graph-wide count. Reports the first unresolved ref
89
+ * found; a decision citing several missing platforms still gets one line, matching
90
+ * the "one line" restraint the setup summary uses.
91
+ */
92
+ export function askTrailingLine(refs, isConnected) {
93
+ for (const r of refs) {
94
+ const connectors = CANDIDATE_CONNECTORS[r.platform];
95
+ if (connectors && !connectors.some(isConnected)) {
96
+ const label = PLATFORM_LABEL[r.platform] ?? r.platform;
97
+ return `cites ${articleFor(label)} ${label} ref I can't read - ${connectCommands(connectors)}`;
98
+ }
99
+ }
100
+ return null;
101
+ }
102
+ //# sourceMappingURL=connect-prompt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connect-prompt.js","sourceRoot":"","sources":["../../src/lib/connect-prompt.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,7 @@
3
3
  * tools where the rest of the story lives (ALI-792).
4
4
  *
5
5
  * These refs are the foundation of the gap-driven connect prompt ("12 decisions cite
6
- * Jira keys I can't read - `align connect jira`"): a ref whose platform has no
6
+ * Jira keys I can't read - `align import jira`"): a ref whose platform has no
7
7
  * connected source is a gap the graph can name. Until this module, the git import
8
8
  * discarded the commit body, so every one of these shapes died before ingest.
9
9
  *
@@ -11,10 +11,27 @@
11
11
  * for a bare KEY-123 that cannot distinguish Jira from Linear, and 'code' for a #N
12
12
  * pull/issue number that belongs to whichever forge hosts the repo. Only shapes a
13
13
  * connect prompt can act on are extracted - an arbitrary web URL is not a gap.
14
+ *
15
+ * `refIdentityFor` at the bottom of this file is the inverse: given a decision's OWN
16
+ * (platform, sourceUrl), what shape would ANOTHER decision's text have cited it as.
17
+ * That is the ALI-796 payoff - resolving a pre-existing gap into a real link once the
18
+ * missing source is imported.
14
19
  */
15
20
  export interface DecisionRef {
16
21
  ref: string;
17
22
  platform: 'github' | 'jira' | 'confluence' | 'linear' | 'slack' | 'tracker' | 'code';
18
23
  }
19
24
  export declare function extractRefs(text: string): DecisionRef[];
25
+ /**
26
+ * The inverse of extractRefs: what THIS decision's own identity would be recorded as,
27
+ * if some other decision's text cited it. Used at ingest to resolve a pre-existing gap
28
+ * into a real link the moment the missing source is imported (ALI-796) - "Jira key ->
29
+ * imported Jira decision".
30
+ *
31
+ * Deliberately narrow, matching extractRefs' own restraint: only jira/linear/github/
32
+ * gitlab source items have a citable identity. A slack message or a bare `cli` capture
33
+ * can be POINTED AT (via extractRefs) but nothing else could plausibly cite one by a
34
+ * short key, so there is no second candidate shape to check.
35
+ */
36
+ export declare function refIdentityFor(platform: string, sourceUrl: string | null | undefined): DecisionRef[];
20
37
  //# sourceMappingURL=decision-refs.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"decision-refs.d.ts","sourceRoot":"","sources":["../../src/lib/decision-refs.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,QAAQ,GAAG,MAAM,GAAG,YAAY,GAAG,QAAQ,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;CACtF;AAoCD,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,EAAE,CAgCvD"}
1
+ {"version":3,"file":"decision-refs.d.ts","sourceRoot":"","sources":["../../src/lib/decision-refs.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAQH,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,QAAQ,GAAG,MAAM,GAAG,YAAY,GAAG,QAAQ,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;CACtF;AAkDD,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,EAAE,CAgCvD;AAGD;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,WAAW,EAAE,CAuBpG"}