@aligndottech/cli 0.12.0 → 0.12.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib/local-db.d.ts +0 -1
- package/dist/lib/local-db.d.ts.map +1 -1
- package/dist/lib/local-db.js +27 -2
- package/dist/lib/local-db.js.map +1 -1
- package/dist/lib/local-gateway-client.d.ts +12 -2
- package/dist/lib/local-gateway-client.d.ts.map +1 -1
- package/dist/lib/local-gateway-client.js +25 -8
- package/dist/lib/local-gateway-client.js.map +1 -1
- package/dist/lib/value-rollup.d.ts +16 -0
- package/dist/lib/value-rollup.d.ts.map +1 -1
- package/dist/lib/value-rollup.js +27 -2
- package/dist/lib/value-rollup.js.map +1 -1
- package/package.json +1 -1
package/dist/lib/local-db.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"local-db.d.ts","sourceRoot":"","sources":["../../src/lib/local-db.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,OAAO;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"local-db.d.ts","sourceRoot":"","sources":["../../src/lib/local-db.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,OAAO;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACpB;AAoDD,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM;wBAapB;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,GAAG,MAAM;qBAQ1F,WAAW,EAAE;wBAMV,MAAM,GAAG,WAAW,GAAG,IAAI;6BAMtB,MAAM,aAAa,YAAY,GAAG,IAAI;6BAMtC,MAAM,GAAG,YAAY,GAAG,IAAI;wBAQjC,KAAK,CAAC;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,YAAY,CAAA;KAAE,CAAC;qBAUzD;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;uBAMjF;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,EAAE;gBAQ7D,OAAO;eAQR,IAAI;aAIN,IAAI;EAIhB;AAED,MAAM,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,aAAa,CAAC,CAAC"}
|
package/dist/lib/local-db.js
CHANGED
|
@@ -26,6 +26,29 @@ CREATE TABLE IF NOT EXISTS decision_links (
|
|
|
26
26
|
created_at TEXT NOT NULL DEFAULT (datetime('now'))
|
|
27
27
|
);
|
|
28
28
|
`;
|
|
29
|
+
/** Schema version this build expects. Bump when adding a step to `migrate`. */
|
|
30
|
+
const SCHEMA_VERSION = 1;
|
|
31
|
+
/**
|
|
32
|
+
* One-time data migrations, tracked in SQLite's built-in `user_version`.
|
|
33
|
+
*
|
|
34
|
+
* 1. ALI-503: relabel the cosine-similarity links that were written as `conflicts_with`.
|
|
35
|
+
* Every such row at version 0 is provably an artefact, because `insertLink` had exactly
|
|
36
|
+
* one caller and it hardcoded that relation for any pair over 0.65 cosine. No classifier
|
|
37
|
+
* verdict was ever persisted, so there is no earned row to damage.
|
|
38
|
+
*
|
|
39
|
+
* The version guard is load-bearing rather than tidiness. The same UPDATE run on every open
|
|
40
|
+
* is indistinguishable from this one today, and starts silently eating genuine conflicts the
|
|
41
|
+
* moment anything writes one.
|
|
42
|
+
*/
|
|
43
|
+
function migrate(db) {
|
|
44
|
+
const version = db.pragma('user_version', { simple: true });
|
|
45
|
+
if (version < 1) {
|
|
46
|
+
db.exec(`UPDATE decision_links SET relation = 'relates' WHERE relation = 'conflicts_with'`);
|
|
47
|
+
}
|
|
48
|
+
if (version < SCHEMA_VERSION) {
|
|
49
|
+
db.pragma(`user_version = ${SCHEMA_VERSION}`);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
29
52
|
export function createLocalDb(dbPath) {
|
|
30
53
|
// better-sqlite3 creates the DB file but not its parent directory, so on a clean
|
|
31
54
|
// machine (~/.config/align-cli absent) `align setup --local` crashed with "unable
|
|
@@ -36,6 +59,7 @@ export function createLocalDb(dbPath) {
|
|
|
36
59
|
const db = new Database(dbPath);
|
|
37
60
|
db.pragma('journal_mode = WAL');
|
|
38
61
|
db.exec(SCHEMA);
|
|
62
|
+
migrate(db);
|
|
39
63
|
return {
|
|
40
64
|
insertDecision(row) {
|
|
41
65
|
const id = randomUUID();
|
|
@@ -83,8 +107,9 @@ export function createLocalDb(dbPath) {
|
|
|
83
107
|
getStats() {
|
|
84
108
|
const decisions = db.prepare(`SELECT COUNT(*) as n FROM decisions`).get().n;
|
|
85
109
|
const embeddings = db.prepare(`SELECT COUNT(*) as n FROM decision_embeddings`).get().n;
|
|
86
|
-
|
|
87
|
-
|
|
110
|
+
// ALI-503 removed a `conflicts` count here: it had no production reader (only a test)
|
|
111
|
+
// and after the relabelling it could only ever report 0, which is a decoy.
|
|
112
|
+
return { decisions, embeddings };
|
|
88
113
|
},
|
|
89
114
|
dropAll() {
|
|
90
115
|
db.exec(`DELETE FROM decision_links; DELETE FROM decision_embeddings; DELETE FROM decisions;`);
|
package/dist/lib/local-db.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"local-db.js","sourceRoot":"","sources":["../../src/lib/local-db.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"local-db.js","sourceRoot":"","sources":["../../src/lib/local-db.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
import type { AlignmentResult, SearchResults } from './gateway-client.js';
|
|
2
|
-
|
|
2
|
+
/**
|
|
3
|
+
* Cosine floor for linking two decisions as related on ingest.
|
|
4
|
+
*
|
|
5
|
+
* Named CONFLICT_THRESHOLD until ALI-503, which was the same category error as the code
|
|
6
|
+
* it governed: the value decides similarity, and similarity is not opposition. The
|
|
7
|
+
* classifier prompt in local-relationship-classifier.ts says so directly - "high textual
|
|
8
|
+
* similarity alone is NOT a conflict" - and the link written here is `relates` because an
|
|
9
|
+
* embedding cannot tell agreement from opposition. Only a classifier reading both can, and
|
|
10
|
+
* its verdict is never persisted as a link.
|
|
11
|
+
*/
|
|
12
|
+
export declare const SIMILARITY_THRESHOLD = 0.65;
|
|
3
13
|
/**
|
|
4
14
|
* Relevance floor for align_ask / align_search.
|
|
5
15
|
*
|
|
@@ -33,7 +43,7 @@ export declare function createLocalGatewayClient(dbPath: string): {
|
|
|
33
43
|
summary: string;
|
|
34
44
|
sourceUrl: string | null;
|
|
35
45
|
platform: string;
|
|
36
|
-
|
|
46
|
+
related: string[];
|
|
37
47
|
}>;
|
|
38
48
|
ingestBatch(items: Array<{
|
|
39
49
|
source_url?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"local-gateway-client.d.ts","sourceRoot":"","sources":["../../src/lib/local-gateway-client.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAE1E,eAAO,MAAM,
|
|
1
|
+
{"version":3,"file":"local-gateway-client.d.ts","sourceRoot":"","sources":["../../src/lib/local-gateway-client.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAE1E;;;;;;;;;GASG;AACH,eAAO,MAAM,oBAAoB,OAAO,CAAC;AACzC;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,gBAAgB,OAAO,CAAC;AAGrC,eAAO,MAAM,iBAAiB,OAAO,CAAC;AAGtC,eAAO,MAAM,eAAe,MAAM,CAAC;AAEnC,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,MAAM;IA2DnD,2FAA2F;;;;;;;2BAS9D,MAAM;;;;;;;;uBAKV,KAAK,CAAC;QAAE,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;;;;;;;;;;;;;;;2BA0B/E,MAAM,mBAAe,OAAO,CAAC,aAAa,CAAC;yBAgC7C,MAAM,aAAa,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;2BA8FlD,MAAM,WAAW,MAAM,gBAAgB,MAAM;;;;;;;;;;;0BAQ9C,MAAM;;;;;;;;EAmBrC;AAED,MAAM,MAAM,kBAAkB,GAAG,UAAU,CAAC,OAAO,wBAAwB,CAAC,CAAC"}
|
|
@@ -2,7 +2,17 @@ import { createLocalDb } from './local-db.js';
|
|
|
2
2
|
import { cosineSimilarity, getEmbedding } from './local-embeddings.js';
|
|
3
3
|
import { classifyRelationship } from './local-relationship-classifier.js';
|
|
4
4
|
import { citationFor, repositoryOf } from './decision-links.js';
|
|
5
|
-
|
|
5
|
+
/**
|
|
6
|
+
* Cosine floor for linking two decisions as related on ingest.
|
|
7
|
+
*
|
|
8
|
+
* Named CONFLICT_THRESHOLD until ALI-503, which was the same category error as the code
|
|
9
|
+
* it governed: the value decides similarity, and similarity is not opposition. The
|
|
10
|
+
* classifier prompt in local-relationship-classifier.ts says so directly - "high textual
|
|
11
|
+
* similarity alone is NOT a conflict" - and the link written here is `relates` because an
|
|
12
|
+
* embedding cannot tell agreement from opposition. Only a classifier reading both can, and
|
|
13
|
+
* its verdict is never persisted as a link.
|
|
14
|
+
*/
|
|
15
|
+
export const SIMILARITY_THRESHOLD = 0.65;
|
|
6
16
|
/**
|
|
7
17
|
* Relevance floor for align_ask / align_search.
|
|
8
18
|
*
|
|
@@ -38,8 +48,10 @@ export function createLocalGatewayClient(dbPath) {
|
|
|
38
48
|
.sort((a, b) => b.score - a.score || a.decisionId.localeCompare(b.decisionId))
|
|
39
49
|
.slice(0, topK);
|
|
40
50
|
}
|
|
41
|
-
// Shared ingest path: insert, embed (title + summary),
|
|
51
|
+
// Shared ingest path: insert, embed (title + summary), link similar decisions.
|
|
42
52
|
// Used by both captureDecision (single, may parse a URL) and ingestBatch.
|
|
53
|
+
// Says "similar", not "conflicts": an embedding cannot tell agreement from opposition,
|
|
54
|
+
// and calling this conflict detection is what ALI-503 was (see SIMILARITY_THRESHOLD).
|
|
43
55
|
async function ingestOne(input, platform, opts = {}) {
|
|
44
56
|
let title = input.slice(0, 80);
|
|
45
57
|
let summary = input;
|
|
@@ -61,11 +73,14 @@ export function createLocalGatewayClient(dbPath) {
|
|
|
61
73
|
const embedText = title === summary ? summary : `${title}. ${summary}`;
|
|
62
74
|
const embedding = await getEmbedding(embedText);
|
|
63
75
|
db.setEmbedding(id, embedding);
|
|
64
|
-
const candidates = await findSimilar(embedding, 10,
|
|
76
|
+
const candidates = await findSimilar(embedding, 10, SIMILARITY_THRESHOLD, id);
|
|
65
77
|
for (const c of candidates) {
|
|
66
|
-
|
|
78
|
+
// ALI-503: `relates`, not `conflicts_with`. This is a cosine score with no judgement
|
|
79
|
+
// behind it, and labelling it a conflict made `align local status` and the
|
|
80
|
+
// align_get_conflicts MCP tool report manufactured findings as detections.
|
|
81
|
+
db.insertLink({ sourceId: id, targetId: c.decisionId, relation: 'relates', confidence: c.score });
|
|
67
82
|
}
|
|
68
|
-
return { id, title, summary, sourceUrl, platform,
|
|
83
|
+
return { id, title, summary, sourceUrl, platform, related: candidates };
|
|
69
84
|
}
|
|
70
85
|
return {
|
|
71
86
|
/** Release the underlying SQLite handle (required on Windows before deleting the file). */
|
|
@@ -77,7 +92,7 @@ export function createLocalGatewayClient(dbPath) {
|
|
|
77
92
|
},
|
|
78
93
|
async captureDecision(input, platform = 'cli') {
|
|
79
94
|
const r = await ingestOne(input, platform);
|
|
80
|
-
return { id: r.id, title: r.title, summary: r.summary, sourceUrl: r.sourceUrl, platform: r.platform,
|
|
95
|
+
return { id: r.id, title: r.title, summary: r.summary, sourceUrl: r.sourceUrl, platform: r.platform, related: r.related.map(c => c.decisionId) };
|
|
81
96
|
},
|
|
82
97
|
async ingestBatch(items) {
|
|
83
98
|
const snapshots = [];
|
|
@@ -91,10 +106,12 @@ export function createLocalGatewayClient(dbPath) {
|
|
|
91
106
|
title: r.title,
|
|
92
107
|
summary: r.summary,
|
|
93
108
|
analysis: {
|
|
94
|
-
relatedDecisions: r.
|
|
109
|
+
relatedDecisions: r.related.map(c => ({
|
|
95
110
|
id: c.decisionId,
|
|
96
111
|
title: db.getDecisionById(c.decisionId)?.title ?? '',
|
|
97
|
-
|
|
112
|
+
// Must match the relation actually written above, or this is a second writer
|
|
113
|
+
// of the same fact that can drift from it (ALI-503).
|
|
114
|
+
relationship: 'relates',
|
|
98
115
|
confidence: c.score,
|
|
99
116
|
})),
|
|
100
117
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"local-gateway-client.js","sourceRoot":"","sources":["../../src/lib/local-gateway-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACvE,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAMhE,MAAM,CAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"local-gateway-client.js","sourceRoot":"","sources":["../../src/lib/local-gateway-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,11 +7,27 @@
|
|
|
7
7
|
export interface ValueRollup {
|
|
8
8
|
decisions: number;
|
|
9
9
|
conflictsCaught: number;
|
|
10
|
+
/**
|
|
11
|
+
* Decisions linked by embedding similarity alone (ALI-503). Deliberately a separate
|
|
12
|
+
* number from conflictsCaught: an embedding says two decisions are about the same thing,
|
|
13
|
+
* never that they disagree. Populated offline only; the cloud rollup has richer signals.
|
|
14
|
+
*/
|
|
15
|
+
similarDecisions: number;
|
|
10
16
|
duplicates: number;
|
|
11
17
|
supersessions: number;
|
|
12
18
|
reuseRate: number | null;
|
|
13
19
|
healthGrade: string | null;
|
|
14
20
|
}
|
|
21
|
+
/**
|
|
22
|
+
* Decisions in a local graph before the sharing prompt is earned (ALI-503).
|
|
23
|
+
*
|
|
24
|
+
* The prompt used to be gated on conflictsCaught, which offline was fabricated from cosine
|
|
25
|
+
* similarity, so a manufactured detection was what asked the user for money. Nothing writes
|
|
26
|
+
* a conflict, duplicate or supersession link offline, so that gate is now structurally
|
|
27
|
+
* false and needs a claim we can defend: a graph this size is worth sharing. 5 matches the
|
|
28
|
+
* threshold `align ask` already nudges at.
|
|
29
|
+
*/
|
|
30
|
+
export declare const LOCAL_SHARE_THRESHOLD = 5;
|
|
15
31
|
export interface ValueRollupClient {
|
|
16
32
|
getStats(): Promise<{
|
|
17
33
|
snapshots?: number;
|
|
@@ -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,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,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,
|
|
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"}
|
package/dist/lib/value-rollup.js
CHANGED
|
@@ -4,6 +4,16 @@
|
|
|
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
|
+
/**
|
|
8
|
+
* Decisions in a local graph before the sharing prompt is earned (ALI-503).
|
|
9
|
+
*
|
|
10
|
+
* The prompt used to be gated on conflictsCaught, which offline was fabricated from cosine
|
|
11
|
+
* similarity, so a manufactured detection was what asked the user for money. Nothing writes
|
|
12
|
+
* a conflict, duplicate or supersession link offline, so that gate is now structurally
|
|
13
|
+
* false and needs a claim we can defend: a graph this size is worth sharing. 5 matches the
|
|
14
|
+
* threshold `align ask` already nudges at.
|
|
15
|
+
*/
|
|
16
|
+
export const LOCAL_SHARE_THRESHOLD = 5;
|
|
7
17
|
async function settle(p) {
|
|
8
18
|
try {
|
|
9
19
|
return await p;
|
|
@@ -23,6 +33,8 @@ export async function fetchValueRollup(client) {
|
|
|
23
33
|
return {
|
|
24
34
|
decisions: stats?.snapshots ?? 0,
|
|
25
35
|
conflictsCaught: impact?.total ?? 0,
|
|
36
|
+
// Cloud mode does not surface a similarity count; the gateway adjudicates instead.
|
|
37
|
+
similarDecisions: 0,
|
|
26
38
|
duplicates: links?.duplicates_count ?? 0,
|
|
27
39
|
supersessions: links?.supersessions_count ?? 0,
|
|
28
40
|
reuseRate: reuse ? reuse.rate : null,
|
|
@@ -38,9 +50,15 @@ export async function fetchValueRollup(client) {
|
|
|
38
50
|
*/
|
|
39
51
|
export function renderValueReadout(r, opts) {
|
|
40
52
|
const reuse = r.reuseRate === null ? 'n/a' : `${Math.round(r.reuseRate * 100)}%`;
|
|
53
|
+
// ALI-503: offline, nothing can write a conflict link, so "N conflicts caught" was either
|
|
54
|
+
// fabricated from cosine similarity or a permanent zero that reads as a broken counter.
|
|
55
|
+
// 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`;
|
|
41
59
|
const lines = [
|
|
42
60
|
` ${r.decisions} decisions in your graph`,
|
|
43
|
-
|
|
61
|
+
headline,
|
|
44
62
|
` ${r.duplicates} duplicates found`,
|
|
45
63
|
` ${r.supersessions} decisions superseded`,
|
|
46
64
|
` reuse rate: ${reuse}`,
|
|
@@ -52,7 +70,10 @@ export function renderValueReadout(r, opts) {
|
|
|
52
70
|
lines.push('');
|
|
53
71
|
lines.push(' Reuse rate and health need the cloud graph - run `align login` to see them.');
|
|
54
72
|
}
|
|
55
|
-
|
|
73
|
+
// similarDecisions is deliberately absent: buying the upsell with a cosine artefact is
|
|
74
|
+
// the defect this ticket exists to remove, not a smaller version of it (ALI-503).
|
|
75
|
+
const hasValue = (opts.mode === 'local' && r.decisions >= LOCAL_SHARE_THRESHOLD)
|
|
76
|
+
|| r.conflictsCaught > 0 || r.duplicates > 0 || r.supersessions > 0;
|
|
56
77
|
if (hasValue) {
|
|
57
78
|
lines.push('');
|
|
58
79
|
lines.push(' Share this graph with your team: https://app.align.tech/pricing');
|
|
@@ -68,7 +89,11 @@ export function localValueRollup(db) {
|
|
|
68
89
|
const count = (relation) => db.listLinks({ relation }).length;
|
|
69
90
|
return {
|
|
70
91
|
decisions: db.getStats().decisions,
|
|
92
|
+
// Kept counting the real relations even though nothing offline writes one, so the
|
|
93
|
+
// counter stays provably capable of reporting a conflict. That is what makes a zero
|
|
94
|
+
// here mean "none found" rather than "the counter is broken" (ALI-503 positive control).
|
|
71
95
|
conflictsCaught: count('conflicts_with') + count('contradicts'),
|
|
96
|
+
similarDecisions: count('relates'),
|
|
72
97
|
duplicates: count('duplicates'),
|
|
73
98
|
supersessions: count('supersedes'),
|
|
74
99
|
reuseRate: null,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"value-rollup.js","sourceRoot":"","sources":["../../src/lib/value-rollup.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"value-rollup.js","sourceRoot":"","sources":["../../src/lib/value-rollup.ts"],"names":[],"mappings":"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"}
|