daftari 1.10.0 → 1.12.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/CHANGELOG.md +58 -0
- package/README.md +109 -432
- package/dist/cli.js +0 -0
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +10 -1
- package/dist/server.js.map +1 -1
- package/dist/themes/clustering.d.ts +30 -0
- package/dist/themes/clustering.d.ts.map +1 -0
- package/dist/themes/clustering.js +439 -0
- package/dist/themes/clustering.js.map +1 -0
- package/dist/tools/curation.d.ts.map +1 -1
- package/dist/tools/curation.js +6 -0
- package/dist/tools/curation.js.map +1 -1
- package/dist/tools/read.d.ts +8 -0
- package/dist/tools/read.d.ts.map +1 -1
- package/dist/tools/read.js +6 -0
- package/dist/tools/read.js.map +1 -1
- package/dist/tools/search.d.ts +3 -0
- package/dist/tools/search.d.ts.map +1 -1
- package/dist/tools/search.js +17 -2
- package/dist/tools/search.js.map +1 -1
- package/dist/tools/themes.d.ts +21 -0
- package/dist/tools/themes.d.ts.map +1 -0
- package/dist/tools/themes.js +427 -0
- package/dist/tools/themes.js.map +1 -0
- package/dist/tools/write.d.ts.map +1 -1
- package/dist/tools/write.js +26 -3
- package/dist/tools/write.js.map +1 -1
- package/package.json +2 -1
- package/templates/reviewer-vault/.daftari/config.yaml +25 -0
- package/templates/reviewer-vault/.daftari/tensions.md +6 -0
- package/templates/reviewer-vault/_drafts/moonshot-agentic-curation.md +33 -0
- package/templates/reviewer-vault/_drafts/scratch-incomplete.md +18 -0
- package/templates/reviewer-vault/competitive-intel/aurora-pipelines-positioning.md +40 -0
- package/templates/reviewer-vault/competitive-intel/cirrus-realtime-ga.md +38 -0
- package/templates/reviewer-vault/competitive-intel/cirrus-realtime-preview.md +34 -0
- package/templates/reviewer-vault/competitive-intel/helios-connect-overview.md +40 -0
- package/templates/reviewer-vault/competitive-intel/northwind-governance-snapshot.md +35 -0
- package/templates/reviewer-vault/pricing/aurora-pricing-model.md +35 -0
- package/templates/reviewer-vault/pricing/cirrus-capacity-tiers.md +37 -0
- package/templates/reviewer-vault/pricing/helios-credits-model.md +37 -0
- package/templates/reviewer-vault/pricing/vega-pricing-strategy.md +36 -0
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,8EAA8E;AAC9E,EAAE;AACF,8EAA8E;AAC9E,+EAA+E;AAC/E,6CAA6C;AAE7C,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AACnG,OAAO,EAAsB,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAuB,MAAM,iBAAiB,CAAC;AACjE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,MAAM,CAAC,MAAM,WAAW,GAAG,SAAS,CAAC;AAErC,4EAA4E;AAC5E,+EAA+E;AAC/E,8EAA8E;AAC9E,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,GAAG,CAAC,iBAAiB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAE7F,CAAC;AACF,MAAM,CAAC,MAAM,cAAc,GAAG,QAAQ,CAAC,OAAO,CAAC;AAE/C,sEAAsE;AACtE,+EAA+E;AAC/E,0EAA0E;AAC1E,MAAM,UAAU,YAAY,CAAC,SAAiB,EAAE,SAAwB,WAAW,EAAE;IACnF,MAAM,MAAM,GAAG,IAAI,MAAM,CACvB,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,cAAc,EAAE,EAC9C,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,CAChC,CAAC;IAEF,MAAM,KAAK,GAAqB,
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
export declare function seededRng(seed: number): () => number;
|
|
2
|
+
export declare function l2Normalize(vec: Float32Array): Float32Array;
|
|
3
|
+
export declare function meanPoolL2(vectors: Float32Array[]): Float32Array | null;
|
|
4
|
+
export declare function kmeansPlusPlusInit(data: Float32Array[], k: number, rng: () => number): number[];
|
|
5
|
+
export interface KMeansResult {
|
|
6
|
+
assignments: number[];
|
|
7
|
+
centroids: Float32Array[];
|
|
8
|
+
iterations: number;
|
|
9
|
+
}
|
|
10
|
+
export declare function kmeans(data: Float32Array[], k: number, rng: () => number, maxIter: number): KMeansResult;
|
|
11
|
+
export declare function silhouetteScore(data: Float32Array[], assignments: number[]): number;
|
|
12
|
+
export declare function clusterCoherence(vectors: Float32Array[]): number;
|
|
13
|
+
export interface PickKResult {
|
|
14
|
+
k: number;
|
|
15
|
+
silhouette: number;
|
|
16
|
+
assignments: number[];
|
|
17
|
+
centroids: Float32Array[];
|
|
18
|
+
}
|
|
19
|
+
export declare function pickK(data: Float32Array[], candidates: number[], rng: () => number, maxIter: number): PickKResult;
|
|
20
|
+
export interface SecondaryMembership {
|
|
21
|
+
docIndex: number;
|
|
22
|
+
sim: number;
|
|
23
|
+
}
|
|
24
|
+
export interface SecondaryOptions {
|
|
25
|
+
delta: number;
|
|
26
|
+
minSimilarity: number;
|
|
27
|
+
maxPerDoc: number;
|
|
28
|
+
}
|
|
29
|
+
export declare function selectSecondaryMemberships(vectors: Float32Array[], assignments: number[], centroids: Float32Array[], options: SecondaryOptions): Map<number, SecondaryMembership[]>;
|
|
30
|
+
//# sourceMappingURL=clustering.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clustering.d.ts","sourceRoot":"","sources":["../../src/themes/clustering.ts"],"names":[],"mappings":"AAwBA,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,MAAM,CASpD;AAMD,wBAAgB,WAAW,CAAC,GAAG,EAAE,YAAY,GAAG,YAAY,CAa3D;AAKD,wBAAgB,UAAU,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,YAAY,GAAG,IAAI,CAsBvE;AAoCD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,YAAY,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,MAAM,GAAG,MAAM,EAAE,CAoE/F;AAID,MAAM,WAAW,YAAY;IAC3B,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,SAAS,EAAE,YAAY,EAAE,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;CACpB;AAKD,wBAAgB,MAAM,CACpB,IAAI,EAAE,YAAY,EAAE,EACpB,CAAC,EAAE,MAAM,EACT,GAAG,EAAE,MAAM,MAAM,EACjB,OAAO,EAAE,MAAM,GACd,YAAY,CAkFd;AAUD,wBAAgB,eAAe,CAAC,IAAI,EAAE,YAAY,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,MAAM,CA6CnF;AAQD,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,MAAM,CAahE;AAID,MAAM,WAAW,WAAW;IAC1B,CAAC,EAAE,MAAM,CAAC;IACV,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,SAAS,EAAE,YAAY,EAAE,CAAC;CAC3B;AAOD,wBAAgB,KAAK,CACnB,IAAI,EAAE,YAAY,EAAE,EACpB,UAAU,EAAE,MAAM,EAAE,EACpB,GAAG,EAAE,MAAM,MAAM,EACjB,OAAO,EAAE,MAAM,GACd,WAAW,CAuBb;AAQD,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,gBAAgB;IAG/B,KAAK,EAAE,MAAM,CAAC;IAId,aAAa,EAAE,MAAM,CAAC;IAItB,SAAS,EAAE,MAAM,CAAC;CACnB;AAUD,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,YAAY,EAAE,EACvB,WAAW,EAAE,MAAM,EAAE,EACrB,SAAS,EAAE,YAAY,EAAE,EACzB,OAAO,EAAE,gBAAgB,GACxB,GAAG,CAAC,MAAM,EAAE,mBAAmB,EAAE,CAAC,CA2CpC"}
|
|
@@ -0,0 +1,439 @@
|
|
|
1
|
+
// Clustering primitives for vault_themes.
|
|
2
|
+
//
|
|
3
|
+
// All functions are pure. The k-means implementation is hand-rolled (no
|
|
4
|
+
// new dependency) and seeded by a caller-supplied RNG so the same vault
|
|
5
|
+
// produces the same themes across runs.
|
|
6
|
+
//
|
|
7
|
+
// Input vectors are L2-normalised by the caller, so Euclidean distance on
|
|
8
|
+
// the unit sphere is equivalent to cosine distance (1 - cos θ). We use
|
|
9
|
+
// squared Euclidean inside k-means because it is monotonic with Euclidean
|
|
10
|
+
// distance and avoids per-iteration sqrt work.
|
|
11
|
+
//
|
|
12
|
+
// Two distinct quality scores live here and must not be confused:
|
|
13
|
+
// - silhouetteScore: the internal k-picker. Mean over all points of
|
|
14
|
+
// (b - a) / max(a, b) where a is mean intra-cluster distance and b is
|
|
15
|
+
// mean nearest-other-cluster distance. Higher = better separation.
|
|
16
|
+
// - clusterCoherence: the per-theme number returned in the tool output.
|
|
17
|
+
// Mean pairwise cosine similarity inside one cluster. Higher = tighter.
|
|
18
|
+
// --- Seeded RNG ------------------------------------------------------------
|
|
19
|
+
// Mulberry32: a 32-bit, single-state PRNG. Cheap, deterministic, sufficient
|
|
20
|
+
// for clustering's stochastic init. Returns numbers in [0, 1). Seed 0 still
|
|
21
|
+
// produces a valid (constant-free) sequence because the increment 0x6D2B79F5
|
|
22
|
+
// keeps the state moving.
|
|
23
|
+
export function seededRng(seed) {
|
|
24
|
+
let a = seed | 0;
|
|
25
|
+
return () => {
|
|
26
|
+
a = (a + 0x6d2b79f5) | 0;
|
|
27
|
+
let t = a;
|
|
28
|
+
t = Math.imul(t ^ (t >>> 15), t | 1);
|
|
29
|
+
t ^= t + Math.imul(t ^ (t >>> 7), t | 61);
|
|
30
|
+
return ((t ^ (t >>> 14)) >>> 0) / 4294967296;
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
// --- Vector math -----------------------------------------------------------
|
|
34
|
+
// In-place is tempting but every caller wants a fresh array; allocating
|
|
35
|
+
// here avoids surprise mutations.
|
|
36
|
+
export function l2Normalize(vec) {
|
|
37
|
+
let norm = 0;
|
|
38
|
+
for (let i = 0; i < vec.length; i++) {
|
|
39
|
+
const x = vec[i];
|
|
40
|
+
norm += x * x;
|
|
41
|
+
}
|
|
42
|
+
if (norm === 0)
|
|
43
|
+
return new Float32Array(vec);
|
|
44
|
+
const inv = 1 / Math.sqrt(norm);
|
|
45
|
+
const out = new Float32Array(vec.length);
|
|
46
|
+
for (let i = 0; i < vec.length; i++) {
|
|
47
|
+
out[i] = vec[i] * inv;
|
|
48
|
+
}
|
|
49
|
+
return out;
|
|
50
|
+
}
|
|
51
|
+
// Mean-pool a document's chunk vectors into one vector, then L2-normalise so
|
|
52
|
+
// the result lives on the unit sphere (cosine semantics).
|
|
53
|
+
// Returns null when there is nothing to pool or the pooled vector is zero.
|
|
54
|
+
export function meanPoolL2(vectors) {
|
|
55
|
+
if (vectors.length === 0)
|
|
56
|
+
return null;
|
|
57
|
+
const dim = vectors[0]?.length ?? 0;
|
|
58
|
+
if (dim === 0)
|
|
59
|
+
return null;
|
|
60
|
+
const sum = new Float32Array(dim);
|
|
61
|
+
let kept = 0;
|
|
62
|
+
for (const v of vectors) {
|
|
63
|
+
if (v.length !== dim)
|
|
64
|
+
continue;
|
|
65
|
+
kept += 1;
|
|
66
|
+
for (let i = 0; i < dim; i++)
|
|
67
|
+
sum[i] = sum[i] + v[i];
|
|
68
|
+
}
|
|
69
|
+
if (kept === 0)
|
|
70
|
+
return null;
|
|
71
|
+
for (let i = 0; i < dim; i++)
|
|
72
|
+
sum[i] = sum[i] / kept;
|
|
73
|
+
// If the mean is the zero vector, l2Normalize returns zeros — surface that
|
|
74
|
+
// as null so downstream callers skip the document.
|
|
75
|
+
let norm = 0;
|
|
76
|
+
for (let i = 0; i < dim; i++) {
|
|
77
|
+
const x = sum[i];
|
|
78
|
+
norm += x * x;
|
|
79
|
+
}
|
|
80
|
+
if (norm === 0)
|
|
81
|
+
return null;
|
|
82
|
+
return l2Normalize(sum);
|
|
83
|
+
}
|
|
84
|
+
function squaredEuclidean(a, b) {
|
|
85
|
+
let acc = 0;
|
|
86
|
+
const n = Math.min(a.length, b.length);
|
|
87
|
+
for (let i = 0; i < n; i++) {
|
|
88
|
+
const d = a[i] - b[i];
|
|
89
|
+
acc += d * d;
|
|
90
|
+
}
|
|
91
|
+
return acc;
|
|
92
|
+
}
|
|
93
|
+
function cosineSimilarityNormalized(a, b) {
|
|
94
|
+
let dot = 0;
|
|
95
|
+
const n = Math.min(a.length, b.length);
|
|
96
|
+
for (let i = 0; i < n; i++)
|
|
97
|
+
dot += a[i] * b[i];
|
|
98
|
+
return dot;
|
|
99
|
+
}
|
|
100
|
+
// Euclidean distance on the unit sphere is monotonic with cosine distance.
|
|
101
|
+
// We expose it as the public distance for silhouette so the score is on the
|
|
102
|
+
// same scale callers expect.
|
|
103
|
+
function euclideanDistance(a, b) {
|
|
104
|
+
return Math.sqrt(squaredEuclidean(a, b));
|
|
105
|
+
}
|
|
106
|
+
// --- k-means++ initialisation ---------------------------------------------
|
|
107
|
+
// Picks k initial centroid INDICES from `data` using the k-means++ rule:
|
|
108
|
+
// the first centroid is uniform-random; each subsequent centroid is sampled
|
|
109
|
+
// with probability proportional to D(x)^2, where D(x) is the squared distance
|
|
110
|
+
// from x to the nearest already-chosen centroid.
|
|
111
|
+
//
|
|
112
|
+
// Falls back to a uniform draw if the weighted total is zero (degenerate
|
|
113
|
+
// data with all duplicates) so we always return k distinct indices when
|
|
114
|
+
// k ≤ data.length.
|
|
115
|
+
export function kmeansPlusPlusInit(data, k, rng) {
|
|
116
|
+
const n = data.length;
|
|
117
|
+
if (k <= 0 || n === 0)
|
|
118
|
+
return [];
|
|
119
|
+
const seeds = [];
|
|
120
|
+
const taken = new Set();
|
|
121
|
+
// First centroid: uniform-random.
|
|
122
|
+
const firstIdx = Math.floor(rng() * n);
|
|
123
|
+
const first = firstIdx >= n ? n - 1 : firstIdx;
|
|
124
|
+
seeds.push(first);
|
|
125
|
+
taken.add(first);
|
|
126
|
+
// For each remaining slot, compute D(x)^2 for every point against the
|
|
127
|
+
// closest already-picked centroid and sample one index weighted by D^2.
|
|
128
|
+
const dSquared = new Float64Array(n);
|
|
129
|
+
for (let i = 0; i < n; i++) {
|
|
130
|
+
dSquared[i] = squaredEuclidean(data[i], data[first]);
|
|
131
|
+
}
|
|
132
|
+
while (seeds.length < Math.min(k, n)) {
|
|
133
|
+
let total = 0;
|
|
134
|
+
for (let i = 0; i < n; i++) {
|
|
135
|
+
if (!taken.has(i))
|
|
136
|
+
total += dSquared[i];
|
|
137
|
+
}
|
|
138
|
+
let chosen = -1;
|
|
139
|
+
if (total === 0) {
|
|
140
|
+
// All untaken points coincide with an existing centroid (or there are
|
|
141
|
+
// duplicates). Pick the first untaken index uniformly so we still
|
|
142
|
+
// return k distinct seeds.
|
|
143
|
+
for (let i = 0; i < n; i++) {
|
|
144
|
+
if (!taken.has(i)) {
|
|
145
|
+
chosen = i;
|
|
146
|
+
break;
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
else {
|
|
151
|
+
let target = rng() * total;
|
|
152
|
+
for (let i = 0; i < n; i++) {
|
|
153
|
+
if (taken.has(i))
|
|
154
|
+
continue;
|
|
155
|
+
target -= dSquared[i];
|
|
156
|
+
if (target <= 0) {
|
|
157
|
+
chosen = i;
|
|
158
|
+
break;
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
if (chosen === -1) {
|
|
162
|
+
// Numeric drift across the loop; pick the last untaken candidate.
|
|
163
|
+
for (let i = n - 1; i >= 0; i--) {
|
|
164
|
+
if (!taken.has(i)) {
|
|
165
|
+
chosen = i;
|
|
166
|
+
break;
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
if (chosen === -1)
|
|
172
|
+
break;
|
|
173
|
+
seeds.push(chosen);
|
|
174
|
+
taken.add(chosen);
|
|
175
|
+
// Update each point's D^2 to the nearest of the (now larger) centroid set.
|
|
176
|
+
const chosenVec = data[chosen];
|
|
177
|
+
for (let i = 0; i < n; i++) {
|
|
178
|
+
const d = squaredEuclidean(data[i], chosenVec);
|
|
179
|
+
if (d < dSquared[i])
|
|
180
|
+
dSquared[i] = d;
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
return seeds;
|
|
184
|
+
}
|
|
185
|
+
// Standard Lloyd's iterations until assignments stabilise or `maxIter` is
|
|
186
|
+
// reached. k is clamped to data.length: clustering 4 documents into 10
|
|
187
|
+
// groups is undefined; instead we just return at most data.length clusters.
|
|
188
|
+
export function kmeans(data, k, rng, maxIter) {
|
|
189
|
+
const n = data.length;
|
|
190
|
+
if (n === 0)
|
|
191
|
+
return { assignments: [], centroids: [], iterations: 0 };
|
|
192
|
+
const effectiveK = Math.max(1, Math.min(k, n));
|
|
193
|
+
const dim = data[0].length;
|
|
194
|
+
const seedIdxs = kmeansPlusPlusInit(data, effectiveK, rng);
|
|
195
|
+
let centroids = seedIdxs.map((i) => {
|
|
196
|
+
const src = data[i];
|
|
197
|
+
const copy = new Float32Array(src.length);
|
|
198
|
+
for (let j = 0; j < src.length; j++)
|
|
199
|
+
copy[j] = src[j];
|
|
200
|
+
return copy;
|
|
201
|
+
});
|
|
202
|
+
const assignments = new Array(n).fill(0);
|
|
203
|
+
let iterations = 0;
|
|
204
|
+
for (let iter = 0; iter < maxIter; iter++) {
|
|
205
|
+
iterations = iter + 1;
|
|
206
|
+
let changed = false;
|
|
207
|
+
// Assign step.
|
|
208
|
+
for (let i = 0; i < n; i++) {
|
|
209
|
+
const point = data[i];
|
|
210
|
+
let bestC = 0;
|
|
211
|
+
let bestD = Number.POSITIVE_INFINITY;
|
|
212
|
+
for (let c = 0; c < centroids.length; c++) {
|
|
213
|
+
const d = squaredEuclidean(point, centroids[c]);
|
|
214
|
+
if (d < bestD) {
|
|
215
|
+
bestD = d;
|
|
216
|
+
bestC = c;
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
if (assignments[i] !== bestC) {
|
|
220
|
+
assignments[i] = bestC;
|
|
221
|
+
changed = true;
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
// Update step.
|
|
225
|
+
const sums = Array.from({ length: centroids.length }, () => new Float32Array(dim));
|
|
226
|
+
const counts = new Array(centroids.length).fill(0);
|
|
227
|
+
for (let i = 0; i < n; i++) {
|
|
228
|
+
const c = assignments[i];
|
|
229
|
+
counts[c] = counts[c] + 1;
|
|
230
|
+
const sum = sums[c];
|
|
231
|
+
const point = data[i];
|
|
232
|
+
for (let d = 0; d < dim; d++)
|
|
233
|
+
sum[d] = sum[d] + point[d];
|
|
234
|
+
}
|
|
235
|
+
const newCentroids = [];
|
|
236
|
+
for (let c = 0; c < centroids.length; c++) {
|
|
237
|
+
const count = counts[c];
|
|
238
|
+
if (count === 0) {
|
|
239
|
+
// Empty cluster: keep the previous centroid in place rather than
|
|
240
|
+
// re-seeding. Re-seeding mid-run would defeat determinism.
|
|
241
|
+
newCentroids.push(centroids[c]);
|
|
242
|
+
continue;
|
|
243
|
+
}
|
|
244
|
+
const sum = sums[c];
|
|
245
|
+
const next = new Float32Array(dim);
|
|
246
|
+
for (let d = 0; d < dim; d++)
|
|
247
|
+
next[d] = sum[d] / count;
|
|
248
|
+
newCentroids.push(next);
|
|
249
|
+
}
|
|
250
|
+
centroids = newCentroids;
|
|
251
|
+
if (!changed)
|
|
252
|
+
break;
|
|
253
|
+
}
|
|
254
|
+
// Final assignment pass on the converged centroids so callers don't see
|
|
255
|
+
// a stale assignment vector from before the last update step.
|
|
256
|
+
for (let i = 0; i < n; i++) {
|
|
257
|
+
const point = data[i];
|
|
258
|
+
let bestC = 0;
|
|
259
|
+
let bestD = Number.POSITIVE_INFINITY;
|
|
260
|
+
for (let c = 0; c < centroids.length; c++) {
|
|
261
|
+
const d = squaredEuclidean(point, centroids[c]);
|
|
262
|
+
if (d < bestD) {
|
|
263
|
+
bestD = d;
|
|
264
|
+
bestC = c;
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
assignments[i] = bestC;
|
|
268
|
+
}
|
|
269
|
+
return { assignments, centroids, iterations };
|
|
270
|
+
}
|
|
271
|
+
// --- Silhouette (k-picker) ------------------------------------------------
|
|
272
|
+
// Mean silhouette over all points. For each point i:
|
|
273
|
+
// a(i) = mean distance from i to other points in the same cluster
|
|
274
|
+
// b(i) = min over other clusters C of (mean distance from i to points in C)
|
|
275
|
+
// s(i) = (b - a) / max(a, b)
|
|
276
|
+
// Singleton clusters contribute 0. With only one cluster the score is 0
|
|
277
|
+
// (no contrast).
|
|
278
|
+
export function silhouetteScore(data, assignments) {
|
|
279
|
+
const n = data.length;
|
|
280
|
+
if (n === 0 || n !== assignments.length)
|
|
281
|
+
return 0;
|
|
282
|
+
const clusters = new Map();
|
|
283
|
+
for (let i = 0; i < n; i++) {
|
|
284
|
+
const c = assignments[i];
|
|
285
|
+
const list = clusters.get(c);
|
|
286
|
+
if (list)
|
|
287
|
+
list.push(i);
|
|
288
|
+
else
|
|
289
|
+
clusters.set(c, [i]);
|
|
290
|
+
}
|
|
291
|
+
if (clusters.size < 2)
|
|
292
|
+
return 0;
|
|
293
|
+
let total = 0;
|
|
294
|
+
for (let i = 0; i < n; i++) {
|
|
295
|
+
const ci = assignments[i];
|
|
296
|
+
const own = clusters.get(ci);
|
|
297
|
+
if (!own || own.length <= 1) {
|
|
298
|
+
// Singleton: silhouette defined as 0.
|
|
299
|
+
continue;
|
|
300
|
+
}
|
|
301
|
+
// a(i): mean distance to other own-cluster members.
|
|
302
|
+
let aSum = 0;
|
|
303
|
+
let aCount = 0;
|
|
304
|
+
for (const j of own) {
|
|
305
|
+
if (j === i)
|
|
306
|
+
continue;
|
|
307
|
+
aSum += euclideanDistance(data[i], data[j]);
|
|
308
|
+
aCount += 1;
|
|
309
|
+
}
|
|
310
|
+
const a = aSum / aCount;
|
|
311
|
+
// b(i): min over other clusters of mean distance.
|
|
312
|
+
let b = Number.POSITIVE_INFINITY;
|
|
313
|
+
for (const [cj, members] of clusters) {
|
|
314
|
+
if (cj === ci)
|
|
315
|
+
continue;
|
|
316
|
+
let s = 0;
|
|
317
|
+
for (const j of members) {
|
|
318
|
+
s += euclideanDistance(data[i], data[j]);
|
|
319
|
+
}
|
|
320
|
+
const mean = s / members.length;
|
|
321
|
+
if (mean < b)
|
|
322
|
+
b = mean;
|
|
323
|
+
}
|
|
324
|
+
const denom = Math.max(a, b);
|
|
325
|
+
if (denom === 0)
|
|
326
|
+
continue;
|
|
327
|
+
total += (b - a) / denom;
|
|
328
|
+
}
|
|
329
|
+
return total / n;
|
|
330
|
+
}
|
|
331
|
+
// --- Coherence (per-theme score) ------------------------------------------
|
|
332
|
+
// Mean pairwise cosine similarity inside one cluster. Vectors are assumed
|
|
333
|
+
// L2-normalised, so cosine reduces to a dot product. Range is [-1, 1] in
|
|
334
|
+
// general; for unit-sphere embeddings produced by sentence-transformers it
|
|
335
|
+
// tends to fall in [0, 1].
|
|
336
|
+
export function clusterCoherence(vectors) {
|
|
337
|
+
if (vectors.length === 0)
|
|
338
|
+
return 0;
|
|
339
|
+
if (vectors.length === 1)
|
|
340
|
+
return 1;
|
|
341
|
+
let total = 0;
|
|
342
|
+
let pairs = 0;
|
|
343
|
+
for (let i = 0; i < vectors.length; i++) {
|
|
344
|
+
for (let j = i + 1; j < vectors.length; j++) {
|
|
345
|
+
total += cosineSimilarityNormalized(vectors[i], vectors[j]);
|
|
346
|
+
pairs += 1;
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
if (pairs === 0)
|
|
350
|
+
return 0;
|
|
351
|
+
return total / pairs;
|
|
352
|
+
}
|
|
353
|
+
// Runs k-means for each k in `candidates`, computes silhouette, and returns
|
|
354
|
+
// the run with the highest score. Candidates are clamped to data.length and
|
|
355
|
+
// deduped; this is what handles the "tiny vault" edge case — if the user
|
|
356
|
+
// requested k ∈ {10, 15, 20, 25} but only has 8 documents, we end up running
|
|
357
|
+
// k-means at k=8 and stop.
|
|
358
|
+
export function pickK(data, candidates, rng, maxIter) {
|
|
359
|
+
const n = data.length;
|
|
360
|
+
const seen = new Set();
|
|
361
|
+
const ks = [];
|
|
362
|
+
for (const c of candidates) {
|
|
363
|
+
const clamped = Math.max(1, Math.min(c, n));
|
|
364
|
+
if (!seen.has(clamped)) {
|
|
365
|
+
seen.add(clamped);
|
|
366
|
+
ks.push(clamped);
|
|
367
|
+
}
|
|
368
|
+
}
|
|
369
|
+
if (ks.length === 0)
|
|
370
|
+
ks.push(Math.min(1, n));
|
|
371
|
+
let best = null;
|
|
372
|
+
for (const k of ks) {
|
|
373
|
+
const { assignments, centroids } = kmeans(data, k, rng, maxIter);
|
|
374
|
+
const score = silhouetteScore(data, assignments);
|
|
375
|
+
if (!best || score > best.silhouette) {
|
|
376
|
+
best = { k, silhouette: score, assignments, centroids };
|
|
377
|
+
}
|
|
378
|
+
}
|
|
379
|
+
// `best` is non-null because ks has at least one entry.
|
|
380
|
+
return best;
|
|
381
|
+
}
|
|
382
|
+
// For each doc, finds the clusters (other than its primary) whose centroid
|
|
383
|
+
// is close enough that the doc plausibly belongs there too. Returns a map
|
|
384
|
+
// from cluster index → ordered (by sim desc) list of secondary docs.
|
|
385
|
+
//
|
|
386
|
+
// This implements the "soft reporting" path on top of the hard partition
|
|
387
|
+
// produced by k-means: `documentCount` still partitions by primary, but
|
|
388
|
+
// the secondary list surfaces the cross-cutting documents the partition
|
|
389
|
+
// hides. See `docs/architecture.md` for the rationale.
|
|
390
|
+
export function selectSecondaryMemberships(vectors, assignments, centroids, options) {
|
|
391
|
+
const out = new Map();
|
|
392
|
+
const { delta, minSimilarity, maxPerDoc } = options;
|
|
393
|
+
if (vectors.length === 0 || centroids.length < 2 || maxPerDoc <= 0)
|
|
394
|
+
return out;
|
|
395
|
+
for (let i = 0; i < vectors.length; i++) {
|
|
396
|
+
const vec = vectors[i];
|
|
397
|
+
const primary = assignments[i];
|
|
398
|
+
const primaryCentroid = centroids[primary];
|
|
399
|
+
if (!primaryCentroid)
|
|
400
|
+
continue;
|
|
401
|
+
const primarySim = cosineSimilarityNormalized(vec, primaryCentroid);
|
|
402
|
+
// Score every non-primary cluster; collect those passing both bars.
|
|
403
|
+
const candidates = [];
|
|
404
|
+
for (let c = 0; c < centroids.length; c++) {
|
|
405
|
+
if (c === primary)
|
|
406
|
+
continue;
|
|
407
|
+
const cv = centroids[c];
|
|
408
|
+
if (!cv)
|
|
409
|
+
continue;
|
|
410
|
+
const sim = cosineSimilarityNormalized(vec, cv);
|
|
411
|
+
if (sim < minSimilarity)
|
|
412
|
+
continue;
|
|
413
|
+
if (sim < primarySim - delta)
|
|
414
|
+
continue;
|
|
415
|
+
candidates.push({ cluster: c, sim });
|
|
416
|
+
}
|
|
417
|
+
if (candidates.length === 0)
|
|
418
|
+
continue;
|
|
419
|
+
// Take the doc's top `maxPerDoc` secondaries (highest-sim wins ties
|
|
420
|
+
// first; stable cluster index for a deterministic ordering otherwise).
|
|
421
|
+
candidates.sort((a, b) => b.sim - a.sim || a.cluster - b.cluster);
|
|
422
|
+
const top = candidates.slice(0, maxPerDoc);
|
|
423
|
+
for (const { cluster, sim } of top) {
|
|
424
|
+
const list = out.get(cluster);
|
|
425
|
+
const entry = { docIndex: i, sim };
|
|
426
|
+
if (list)
|
|
427
|
+
list.push(entry);
|
|
428
|
+
else
|
|
429
|
+
out.set(cluster, [entry]);
|
|
430
|
+
}
|
|
431
|
+
}
|
|
432
|
+
// Order each cluster's secondaries by sim desc; stable on docIndex so the
|
|
433
|
+
// map serialises deterministically across runs.
|
|
434
|
+
for (const list of out.values()) {
|
|
435
|
+
list.sort((a, b) => b.sim - a.sim || a.docIndex - b.docIndex);
|
|
436
|
+
}
|
|
437
|
+
return out;
|
|
438
|
+
}
|
|
439
|
+
//# sourceMappingURL=clustering.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clustering.js","sourceRoot":"","sources":["../../src/themes/clustering.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"curation.d.ts","sourceRoot":"","sources":["../../src/tools/curation.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,KAAK,aAAa,EAAc,MAAM,mBAAmB,CAAC;AACnE,OAAO,EAAe,KAAK,aAAa,EAAE,KAAK,WAAW,EAAW,MAAM,qBAAqB,CAAC;AACjG,OAAO,EAAE,KAAK,eAAe,EAAqB,MAAM,2BAA2B,CAAC;AACpF,OAAO,EAAc,KAAK,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACvE,OAAO,EAAM,KAAK,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAkBhD,wBAAsB,eAAe,CACnC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,MAAM,CAAC,EAAE,aAAa,GACrB,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC,CAoCtC;AAMD,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,aAAa,GAAG,IAAI,CAAC;IAC7B,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,aAAa,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC;IACtD,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,wBAAsB,SAAS,CAC7B,SAAS,EAAE,MAAM,EACjB,IAAI,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,EAClC,MAAM,CAAC,EAAE,aAAa,GACrB,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC,CAqCzC;AAMD,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,eAAe,EAAE,CAAC;CAC5B;AAID,wBAAsB,eAAe,CACnC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,MAAM,CAAC,EAAE,aAAa,GACrB,OAAO,CAAC,MAAM,CAAC,qBAAqB,EAAE,KAAK,CAAC,CAAC,CAiB/C;AAMD,eAAO,MAAM,aAAa,EAAE,cAAc,
|
|
1
|
+
{"version":3,"file":"curation.d.ts","sourceRoot":"","sources":["../../src/tools/curation.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,KAAK,aAAa,EAAc,MAAM,mBAAmB,CAAC;AACnE,OAAO,EAAe,KAAK,aAAa,EAAE,KAAK,WAAW,EAAW,MAAM,qBAAqB,CAAC;AACjG,OAAO,EAAE,KAAK,eAAe,EAAqB,MAAM,2BAA2B,CAAC;AACpF,OAAO,EAAc,KAAK,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACvE,OAAO,EAAM,KAAK,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAkBhD,wBAAsB,eAAe,CACnC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,MAAM,CAAC,EAAE,aAAa,GACrB,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC,CAoCtC;AAMD,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,aAAa,GAAG,IAAI,CAAC;IAC7B,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,aAAa,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC;IACtD,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,wBAAsB,SAAS,CAC7B,SAAS,EAAE,MAAM,EACjB,IAAI,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,EAClC,MAAM,CAAC,EAAE,aAAa,GACrB,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC,CAqCzC;AAMD,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,eAAe,EAAE,CAAC;CAC5B;AAID,wBAAsB,eAAe,CACnC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,MAAM,CAAC,EAAE,aAAa,GACrB,OAAO,CAAC,MAAM,CAAC,qBAAqB,EAAE,KAAK,CAAC,CAAC,CAiB/C;AAMD,eAAO,MAAM,aAAa,EAAE,cAAc,EAsFzC,CAAC"}
|
package/dist/tools/curation.js
CHANGED
|
@@ -124,6 +124,8 @@ export async function vaultProvenance(vaultRoot, args, access) {
|
|
|
124
124
|
export const curationTools = [
|
|
125
125
|
{
|
|
126
126
|
name: "vault_tension_log",
|
|
127
|
+
title: "Log a contradiction",
|
|
128
|
+
annotations: { destructiveHint: true },
|
|
127
129
|
description: "Record a tension — a contradiction or unresolved pull between two " +
|
|
128
130
|
"vault documents — to the advisory tension log. Records the tension; " +
|
|
129
131
|
"does not resolve it. Entries are logged with status 'unresolved'.",
|
|
@@ -162,6 +164,8 @@ export const curationTools = [
|
|
|
162
164
|
},
|
|
163
165
|
{
|
|
164
166
|
name: "vault_lint",
|
|
167
|
+
title: "Run curation checks",
|
|
168
|
+
annotations: { readOnlyHint: true },
|
|
165
169
|
description: "Run the advisory curation checks across the vault: stale files past " +
|
|
166
170
|
"TTL, orphan files with no inbound links, old drafts, stagnant " +
|
|
167
171
|
"low-confidence files, deprecated files still linked from canonical " +
|
|
@@ -182,6 +186,8 @@ export const curationTools = [
|
|
|
182
186
|
},
|
|
183
187
|
{
|
|
184
188
|
name: "vault_provenance",
|
|
189
|
+
title: "View document write history",
|
|
190
|
+
annotations: { readOnlyHint: true },
|
|
185
191
|
description: "Return the write history of a single document from the provenance " +
|
|
186
192
|
"log: every create, update, append, promote, and deprecate recorded " +
|
|
187
193
|
"for it, oldest first.",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"curation.js","sourceRoot":"","sources":["../../src/tools/curation.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"curation.js","sourceRoot":"","sources":["../../src/tools/curation.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/read.d.ts
CHANGED
|
@@ -2,10 +2,18 @@ import { type AccessContext } from "../access/rbac.js";
|
|
|
2
2
|
import { type DecayState } from "../curation/decay.js";
|
|
3
3
|
import { type ProvenanceEntry } from "../curation/provenance.js";
|
|
4
4
|
import { type Frontmatter, type Result, type ValidationReport } from "../frontmatter/types.js";
|
|
5
|
+
export interface ToolAnnotations {
|
|
6
|
+
readOnlyHint?: boolean;
|
|
7
|
+
destructiveHint?: boolean;
|
|
8
|
+
idempotentHint?: boolean;
|
|
9
|
+
openWorldHint?: boolean;
|
|
10
|
+
}
|
|
5
11
|
export interface ToolDefinition {
|
|
6
12
|
name: string;
|
|
13
|
+
title?: string;
|
|
7
14
|
description: string;
|
|
8
15
|
inputSchema: Record<string, unknown>;
|
|
16
|
+
annotations?: ToolAnnotations;
|
|
9
17
|
handler: (vaultRoot: string, args: Record<string, unknown>, access?: AccessContext) => Promise<Result<unknown, Error>>;
|
|
10
18
|
}
|
|
11
19
|
export interface VaultReadResult {
|
package/dist/tools/read.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"read.d.ts","sourceRoot":"","sources":["../../src/tools/read.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,KAAK,aAAa,EAAmC,MAAM,mBAAmB,CAAC;AACxF,OAAO,EAAgB,KAAK,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAAE,KAAK,eAAe,EAAqB,MAAM,2BAA2B,CAAC;AAIpF,OAAO,EAGL,KAAK,WAAW,EAEhB,KAAK,MAAM,EAEX,KAAK,gBAAgB,EACtB,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"read.d.ts","sourceRoot":"","sources":["../../src/tools/read.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/read.js
CHANGED
|
@@ -218,6 +218,8 @@ function asStringArray(v) {
|
|
|
218
218
|
export const readTools = [
|
|
219
219
|
{
|
|
220
220
|
name: "vault_read",
|
|
221
|
+
title: "Read a vault document",
|
|
222
|
+
annotations: { readOnlyHint: true },
|
|
221
223
|
description: "Read a single vault document. Returns its markdown body, parsed " +
|
|
222
224
|
"frontmatter, a validation report, a decay assessment (null when " +
|
|
223
225
|
"healthy; otherwise level, reasons, and an optional banner), and a " +
|
|
@@ -239,6 +241,8 @@ export const readTools = [
|
|
|
239
241
|
},
|
|
240
242
|
{
|
|
241
243
|
name: "vault_index",
|
|
244
|
+
title: "List vault documents",
|
|
245
|
+
annotations: { readOnlyHint: true },
|
|
242
246
|
description: "List vault documents with their metadata, including each document's " +
|
|
243
247
|
"questions_answered / questions_raised. Optionally filter by collection, " +
|
|
244
248
|
"status, domain, tags (conjunctive), or has_unanswered.",
|
|
@@ -279,6 +283,8 @@ export const readTools = [
|
|
|
279
283
|
},
|
|
280
284
|
{
|
|
281
285
|
name: "vault_status",
|
|
286
|
+
title: "Vault health dashboard",
|
|
287
|
+
annotations: { readOnlyHint: true },
|
|
282
288
|
description: "Vault health dashboard: total file count, per-collection counts, " +
|
|
283
289
|
"count of documents with invalid frontmatter, a staleness distribution " +
|
|
284
290
|
"(fresh/aging/stale), unresolved tensions, and recent write history.",
|