@aligndottech/cli 0.14.1 → 0.16.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.
- package/dist/commands/why.d.ts.map +1 -1
- package/dist/commands/why.js +62 -8
- package/dist/commands/why.js.map +1 -1
- package/dist/lib/decision-links.d.ts +2 -1
- package/dist/lib/decision-links.d.ts.map +1 -1
- package/dist/lib/decision-links.js +17 -2
- package/dist/lib/decision-links.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"why.d.ts","sourceRoot":"","sources":["../../src/commands/why.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"why.d.ts","sourceRoot":"","sources":["../../src/commands/why.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAsEzC,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAgJzD"}
|
package/dist/commands/why.js
CHANGED
|
@@ -4,6 +4,7 @@ import chalk from 'chalk';
|
|
|
4
4
|
import ora from 'ora';
|
|
5
5
|
import { createConfigStore } from '../lib/config.js';
|
|
6
6
|
import { createGatewayClient } from '../lib/gateway-client.js';
|
|
7
|
+
import { citationFor } from '../lib/decision-links.js';
|
|
7
8
|
import { getUnvettedOllamaModels, synthesiseLocally, VETTED_OLLAMA_MODELS } from '../lib/local-llm.js';
|
|
8
9
|
import { formatWhen } from '../lib/format-date.js';
|
|
9
10
|
function wrapText(text, indent, maxWidth) {
|
|
@@ -24,6 +25,43 @@ function wrapText(text, indent, maxWidth) {
|
|
|
24
25
|
function isFilePath(arg) {
|
|
25
26
|
return arg.startsWith('./') || arg.startsWith('../') || arg.includes('/') || existsSync(arg);
|
|
26
27
|
}
|
|
28
|
+
/**
|
|
29
|
+
* One source line, same fields the MCP surface serves (align-stack#1442 added
|
|
30
|
+
* `cite` so consumers COPY citations instead of composing them - this renderer
|
|
31
|
+
* was the one consumer still printing a raw UUID). The cite replaces the id
|
|
32
|
+
* when present; a decision with no cite (Slack, a meeting) keeps its id, which
|
|
33
|
+
* `align decisions show <id>` needs. Platform is printed on every line: a
|
|
34
|
+
* GitHub PR agreeing with a Slack thread is the cross-tool claim made visible,
|
|
35
|
+
* and it is invisible if every line looks alike (the ALI-586 lesson).
|
|
36
|
+
*/
|
|
37
|
+
function sourceLine(d) {
|
|
38
|
+
// Derive the cite when the wire omits it (the prod REST path predates
|
|
39
|
+
// align-stack#1442); the UUID is the last resort, kept only because
|
|
40
|
+
// `align decisions show <id>` consumes it.
|
|
41
|
+
const cite = d.cite ?? citationFor(d.source_url);
|
|
42
|
+
const ref = cite ? ` (${cite})` : ` (${d.id})`;
|
|
43
|
+
const platform = d.platform ? chalk.magenta(` [${d.platform}]`) : '';
|
|
44
|
+
const statusLabel = d.status && d.status !== 'active' ? chalk.yellow(` [${d.status}]`) : '';
|
|
45
|
+
const who = d.author?.name ? chalk.cyan(` ← ${d.author.name}`) : '';
|
|
46
|
+
const when = formatWhen(d.created_at);
|
|
47
|
+
const whenLabel = when ? chalk.dim(` · ${when}`) : '';
|
|
48
|
+
return chalk.dim(` - ${d.title}${ref}`) + platform + statusLabel + who + whenLabel;
|
|
49
|
+
}
|
|
50
|
+
/** The indented link under a source line - where it was DECIDED, clickable. */
|
|
51
|
+
function sourceLink(d) {
|
|
52
|
+
return d.source_url ? chalk.dim(` ${d.source_url}`) : null;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* "5 decisions across github, linear, slack" - printed only when results
|
|
56
|
+
* genuinely span more than one platform. The claim is earned, never decorative:
|
|
57
|
+
* a single-platform result set prints nothing.
|
|
58
|
+
*/
|
|
59
|
+
function crossToolHeader(results) {
|
|
60
|
+
const platforms = [...new Set(results.map((d) => d.platform).filter(Boolean))];
|
|
61
|
+
if (platforms.length < 2)
|
|
62
|
+
return null;
|
|
63
|
+
return chalk.dim(` ${results.length} decisions across ${platforms.join(', ')}`);
|
|
64
|
+
}
|
|
27
65
|
export function registerAskCommand(program) {
|
|
28
66
|
program
|
|
29
67
|
.command('ask <query>')
|
|
@@ -69,13 +107,17 @@ export function registerAskCommand(program) {
|
|
|
69
107
|
console.log(line);
|
|
70
108
|
console.log('');
|
|
71
109
|
console.log(chalk.dim(' Sources:'));
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
110
|
+
const shown = results.results.slice(0, 5);
|
|
111
|
+
const span = crossToolHeader(shown);
|
|
112
|
+
if (span) {
|
|
113
|
+
console.log(span);
|
|
114
|
+
console.log('');
|
|
115
|
+
}
|
|
116
|
+
for (const d of shown) {
|
|
117
|
+
console.log(sourceLine(d));
|
|
118
|
+
const link = sourceLink(d);
|
|
119
|
+
if (link)
|
|
120
|
+
console.log(link);
|
|
79
121
|
}
|
|
80
122
|
console.log('');
|
|
81
123
|
if (results.count >= 5) {
|
|
@@ -107,7 +149,19 @@ export function registerAskCommand(program) {
|
|
|
107
149
|
? chalk.yellow(` [${d.status}]`)
|
|
108
150
|
: '';
|
|
109
151
|
const when = formatWhen(d.created_at);
|
|
110
|
-
|
|
152
|
+
// Cite first (human-quotable, align-stack#1442), derived from
|
|
153
|
+
// source_url when the wire omits it - the SAME derivation as
|
|
154
|
+
// sourceLine, or the two paths drift (Copilot, #124). The id ALWAYS
|
|
155
|
+
// prints, never replaced by the cite: `align decisions show <id>`
|
|
156
|
+
// consumes the id, and a cite is not an id (the autofix's ref-swap
|
|
157
|
+
// on this line would have broken that flow exactly when a cite is
|
|
158
|
+
// derivable, which is most of the time).
|
|
159
|
+
const cite = d.cite ?? citationFor(d.source_url);
|
|
160
|
+
const citeLabel = cite ? chalk.dim(` (${cite})`) : '';
|
|
161
|
+
const platformLabel = d.platform ? chalk.magenta(` [${d.platform}]`) : '';
|
|
162
|
+
console.log(chalk.dim(` id: ${d.id}`) + citeLabel + platformLabel + statusLabel + (when ? chalk.dim(` · ${when}`) : ''));
|
|
163
|
+
if (d.source_url)
|
|
164
|
+
console.log(chalk.dim(` ${d.source_url}`));
|
|
111
165
|
// Who to talk to (ALI-118).
|
|
112
166
|
if (d.author?.name)
|
|
113
167
|
console.log(chalk.cyan(` talk to: ${d.author.name}`));
|
package/dist/commands/why.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"why.js","sourceRoot":"","sources":["../../src/commands/why.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAErC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,iBAAiB,EAAgB,MAAM,kBAAkB,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"why.js","sourceRoot":"","sources":["../../src/commands/why.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,7 +17,8 @@
|
|
|
17
17
|
/** The "owner/repo" a decision came from, or undefined when it did not come from code. */
|
|
18
18
|
export declare function repositoryOf(sourceUrl: string | null | undefined): string | undefined;
|
|
19
19
|
/**
|
|
20
|
-
* A decision rendered the way a human cites one: "align-cli#76"
|
|
20
|
+
* A decision rendered the way a human cites one: "align-cli#76" for code,
|
|
21
|
+
* the ticket key ("ALI-346") for tracker decisions.
|
|
21
22
|
*
|
|
22
23
|
* `repository` already carries the same fact, and the agent still wrote prose naming titles
|
|
23
24
|
* and dates but not repositories - so which repo a decision came from was only discoverable
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"decision-links.d.ts","sourceRoot":"","sources":["../../src/lib/decision-links.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAkBH,0FAA0F;AAC1F,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAIrF;
|
|
1
|
+
{"version":3,"file":"decision-links.d.ts","sourceRoot":"","sources":["../../src/lib/decision-links.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAkBH,0FAA0F;AAC1F,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAIrF;AAcD;;;;;;;;;;;GAWG;AACH,wBAAgB,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAMpF"}
|
|
@@ -37,7 +37,19 @@ export function repositoryOf(sourceUrl) {
|
|
|
37
37
|
return m ? `${m[1]}/${m[2]}` : undefined;
|
|
38
38
|
}
|
|
39
39
|
/**
|
|
40
|
-
*
|
|
40
|
+
* Tracker tickets have their own native cite - the key humans already say out
|
|
41
|
+
* loud ("ALI-346", "PROJ-123") - so those URLs cite by key rather than getting
|
|
42
|
+
* a repo#number invented for them. Deliberately NOT folded into CODE_REF:
|
|
43
|
+
* repositoryOf must keep returning undefined for these, because a Linear
|
|
44
|
+
* workspace is not an owner and a ticket key is not a repository (that refusal
|
|
45
|
+
* is CODE_REF's documented point). The KEY-123 shape is required in full, so a
|
|
46
|
+
* bare word in the issue slot cites nothing.
|
|
47
|
+
*/
|
|
48
|
+
const LINEAR_ISSUE = /^https?:\/\/linear\.app\/[^/\s]+\/issue\/([A-Z][A-Z0-9]*-\d+)(?:[/?#]|$)/;
|
|
49
|
+
const JIRA_ISSUE = /^https?:\/\/[^/\s]+\/browse\/([A-Z][A-Z0-9]*-\d+)(?:[/?#]|$)/;
|
|
50
|
+
/**
|
|
51
|
+
* A decision rendered the way a human cites one: "align-cli#76" for code,
|
|
52
|
+
* the ticket key ("ALI-346") for tracker decisions.
|
|
41
53
|
*
|
|
42
54
|
* `repository` already carries the same fact, and the agent still wrote prose naming titles
|
|
43
55
|
* and dates but not repositories - so which repo a decision came from was only discoverable
|
|
@@ -51,6 +63,9 @@ export function citationFor(sourceUrl) {
|
|
|
51
63
|
if (!sourceUrl)
|
|
52
64
|
return undefined;
|
|
53
65
|
const m = CODE_REF.exec(sourceUrl);
|
|
54
|
-
|
|
66
|
+
if (m)
|
|
67
|
+
return `${m[2]}#${m[3]}`;
|
|
68
|
+
const ticket = LINEAR_ISSUE.exec(sourceUrl) ?? JIRA_ISSUE.exec(sourceUrl);
|
|
69
|
+
return ticket ? ticket[1] : undefined;
|
|
55
70
|
}
|
|
56
71
|
//# sourceMappingURL=decision-links.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"decision-links.js","sourceRoot":"","sources":["../../src/lib/decision-links.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH;;;;;;;;;;;;;GAaG;AACH,MAAM,QAAQ,GAAG,8EAA8E,CAAC;AAEhG,0FAA0F;AAC1F,MAAM,UAAU,YAAY,CAAC,SAAoC;IAC/D,IAAI,CAAC,SAAS;QAAE,OAAO,SAAS,CAAC;IACjC,MAAM,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACnC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;AAC3C,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"decision-links.js","sourceRoot":"","sources":["../../src/lib/decision-links.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH;;;;;;;;;;;;;GAaG;AACH,MAAM,QAAQ,GAAG,8EAA8E,CAAC;AAEhG,0FAA0F;AAC1F,MAAM,UAAU,YAAY,CAAC,SAAoC;IAC/D,IAAI,CAAC,SAAS;QAAE,OAAO,SAAS,CAAC;IACjC,MAAM,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACnC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;AAC3C,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,YAAY,GAAG,0EAA0E,CAAC;AAChG,MAAM,UAAU,GAAG,8DAA8D,CAAC;AAElF;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,WAAW,CAAC,SAAoC;IAC9D,IAAI,CAAC,SAAS;QAAE,OAAO,SAAS,CAAC;IACjC,MAAM,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACnC,IAAI,CAAC;QAAE,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAChC,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC1E,OAAO,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACxC,CAAC"}
|