@monoes/monomindcli 2.7.12 → 2.7.14

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 (144) hide show
  1. package/.claude/commands/mastermind/createorg.md +2 -0
  2. package/.claude/commands/mastermind/okf-import.md +6 -1
  3. package/.claude/helpers/handlers/route-handler.cjs +40 -7
  4. package/.claude/helpers/handlers/session-restore-handler.cjs +24 -6
  5. package/.claude/skills/mastermind-createorg/SKILL.md +11 -4
  6. package/README.md +12 -6
  7. package/dist/src/capabilities/index.d.ts.map +1 -1
  8. package/dist/src/capabilities/index.js +17 -0
  9. package/dist/src/capabilities/index.js.map +1 -1
  10. package/dist/src/capabilities/types.d.ts +0 -11
  11. package/dist/src/capabilities/types.d.ts.map +1 -1
  12. package/dist/src/commands/doc.d.ts.map +1 -1
  13. package/dist/src/commands/doc.js +251 -8
  14. package/dist/src/commands/doc.js.map +1 -1
  15. package/dist/src/commands/doctor-project-checks.d.ts +25 -3
  16. package/dist/src/commands/doctor-project-checks.d.ts.map +1 -1
  17. package/dist/src/commands/doctor-project-checks.js +111 -8
  18. package/dist/src/commands/doctor-project-checks.js.map +1 -1
  19. package/dist/src/commands/doctor.d.ts.map +1 -1
  20. package/dist/src/commands/doctor.js +18 -2
  21. package/dist/src/commands/doctor.js.map +1 -1
  22. package/dist/src/commands/init.d.ts.map +1 -1
  23. package/dist/src/commands/init.js +32 -3
  24. package/dist/src/commands/init.js.map +1 -1
  25. package/dist/src/commands/monograph.d.ts.map +1 -1
  26. package/dist/src/commands/monograph.js +26 -3
  27. package/dist/src/commands/monograph.js.map +1 -1
  28. package/dist/src/commands/org.d.ts +15 -0
  29. package/dist/src/commands/org.d.ts.map +1 -1
  30. package/dist/src/commands/org.js +251 -6
  31. package/dist/src/commands/org.js.map +1 -1
  32. package/dist/src/init/claudemd-generator.d.ts.map +1 -1
  33. package/dist/src/init/claudemd-generator.js +4 -1
  34. package/dist/src/init/claudemd-generator.js.map +1 -1
  35. package/dist/src/knowledge/document-pipeline.d.ts +77 -4
  36. package/dist/src/knowledge/document-pipeline.d.ts.map +1 -1
  37. package/dist/src/knowledge/document-pipeline.js +261 -15
  38. package/dist/src/knowledge/document-pipeline.js.map +1 -1
  39. package/dist/src/knowledge/eval/corpus.d.ts +56 -0
  40. package/dist/src/knowledge/eval/corpus.d.ts.map +1 -0
  41. package/dist/src/knowledge/eval/corpus.js +126 -0
  42. package/dist/src/knowledge/eval/corpus.js.map +1 -0
  43. package/dist/src/knowledge/eval/golden-set.d.ts +62 -0
  44. package/dist/src/knowledge/eval/golden-set.d.ts.map +1 -0
  45. package/dist/src/knowledge/eval/golden-set.js +331 -0
  46. package/dist/src/knowledge/eval/golden-set.js.map +1 -0
  47. package/dist/src/knowledge/eval/harness.d.ts +221 -0
  48. package/dist/src/knowledge/eval/harness.d.ts.map +1 -0
  49. package/dist/src/knowledge/eval/harness.js +610 -0
  50. package/dist/src/knowledge/eval/harness.js.map +1 -0
  51. package/dist/src/knowledge/eval/metrics.d.ts +120 -0
  52. package/dist/src/knowledge/eval/metrics.d.ts.map +1 -0
  53. package/dist/src/knowledge/eval/metrics.js +243 -0
  54. package/dist/src/knowledge/eval/metrics.js.map +1 -0
  55. package/dist/src/knowledge/eval/model-presence.d.ts +48 -0
  56. package/dist/src/knowledge/eval/model-presence.d.ts.map +1 -0
  57. package/dist/src/knowledge/eval/model-presence.js +128 -0
  58. package/dist/src/knowledge/eval/model-presence.js.map +1 -0
  59. package/dist/src/knowledge/eval/network-guard.d.ts +46 -0
  60. package/dist/src/knowledge/eval/network-guard.d.ts.map +1 -0
  61. package/dist/src/knowledge/eval/network-guard.js +112 -0
  62. package/dist/src/knowledge/eval/network-guard.js.map +1 -0
  63. package/dist/src/knowledge/eval/retrievers.d.ts +65 -0
  64. package/dist/src/knowledge/eval/retrievers.d.ts.map +1 -0
  65. package/dist/src/knowledge/eval/retrievers.js +180 -0
  66. package/dist/src/knowledge/eval/retrievers.js.map +1 -0
  67. package/dist/src/knowledge/eval/signals.d.ts +111 -0
  68. package/dist/src/knowledge/eval/signals.d.ts.map +1 -0
  69. package/dist/src/knowledge/eval/signals.js +232 -0
  70. package/dist/src/knowledge/eval/signals.js.map +1 -0
  71. package/dist/src/mcp-tools/agent-tools.d.ts.map +1 -1
  72. package/dist/src/mcp-tools/agent-tools.js +7 -34
  73. package/dist/src/mcp-tools/agent-tools.js.map +1 -1
  74. package/dist/src/mcp-tools/knowledge-tools.d.ts.map +1 -1
  75. package/dist/src/mcp-tools/knowledge-tools.js +88 -6
  76. package/dist/src/mcp-tools/knowledge-tools.js.map +1 -1
  77. package/dist/src/mcp-tools/quality/coverage-analysis/prioritize-gaps.d.ts +44 -144
  78. package/dist/src/mcp-tools/quality/coverage-analysis/prioritize-gaps.d.ts.map +1 -1
  79. package/dist/src/mcp-tools/quality/security-compliance/detect-secrets.d.ts +30 -38
  80. package/dist/src/mcp-tools/quality/security-compliance/detect-secrets.d.ts.map +1 -1
  81. package/dist/src/mcp-tools/task-tools.d.ts +1 -0
  82. package/dist/src/mcp-tools/task-tools.d.ts.map +1 -1
  83. package/dist/src/mcp-tools/task-tools.js +76 -111
  84. package/dist/src/mcp-tools/task-tools.js.map +1 -1
  85. package/dist/src/mcp-tools/terminal-tools.d.ts.map +1 -1
  86. package/dist/src/mcp-tools/terminal-tools.js +3 -28
  87. package/dist/src/mcp-tools/terminal-tools.js.map +1 -1
  88. package/dist/src/memory/bm25-index.d.ts +137 -0
  89. package/dist/src/memory/bm25-index.d.ts.map +1 -0
  90. package/dist/src/memory/bm25-index.js +219 -0
  91. package/dist/src/memory/bm25-index.js.map +1 -0
  92. package/dist/src/memory/embedding-operations.d.ts.map +1 -1
  93. package/dist/src/memory/embedding-operations.js +8 -7
  94. package/dist/src/memory/embedding-operations.js.map +1 -1
  95. package/dist/src/memory/ewc-consolidation.d.ts.map +1 -1
  96. package/dist/src/memory/ewc-consolidation.js +2 -1
  97. package/dist/src/memory/ewc-consolidation.js.map +1 -1
  98. package/dist/src/memory/hnsw-operations.d.ts.map +1 -1
  99. package/dist/src/memory/hnsw-operations.js +4 -3
  100. package/dist/src/memory/hnsw-operations.js.map +1 -1
  101. package/dist/src/memory/intelligence.d.ts.map +1 -1
  102. package/dist/src/memory/intelligence.js +2 -1
  103. package/dist/src/memory/intelligence.js.map +1 -1
  104. package/dist/src/memory/memory-bridge.d.ts +34 -0
  105. package/dist/src/memory/memory-bridge.d.ts.map +1 -1
  106. package/dist/src/memory/memory-bridge.js +184 -26
  107. package/dist/src/memory/memory-bridge.js.map +1 -1
  108. package/dist/src/memory/memory-initializer.d.ts.map +1 -1
  109. package/dist/src/memory/memory-initializer.js +4 -3
  110. package/dist/src/memory/memory-initializer.js.map +1 -1
  111. package/dist/src/memory/memory-schema.d.ts +1 -1
  112. package/dist/src/memory/memory-schema.js +1 -1
  113. package/dist/src/memory/text-tokens.d.ts +10 -0
  114. package/dist/src/memory/text-tokens.d.ts.map +1 -0
  115. package/dist/src/memory/text-tokens.js +37 -0
  116. package/dist/src/memory/text-tokens.js.map +1 -0
  117. package/dist/src/orgrt/daemon.d.ts +16 -1
  118. package/dist/src/orgrt/daemon.d.ts.map +1 -1
  119. package/dist/src/orgrt/daemon.js +65 -9
  120. package/dist/src/orgrt/daemon.js.map +1 -1
  121. package/dist/src/orgrt/scheduler.d.ts +14 -1
  122. package/dist/src/orgrt/scheduler.d.ts.map +1 -1
  123. package/dist/src/orgrt/scheduler.js +51 -5
  124. package/dist/src/orgrt/scheduler.js.map +1 -1
  125. package/dist/src/orgrt/session.js +12 -0
  126. package/dist/src/orgrt/session.js.map +1 -1
  127. package/dist/src/orgrt/types.d.ts +61 -831
  128. package/dist/src/orgrt/types.d.ts.map +1 -1
  129. package/dist/src/orgrt/types.js +7 -1
  130. package/dist/src/orgrt/types.js.map +1 -1
  131. package/dist/src/services/crash-reporter.d.ts.map +1 -1
  132. package/dist/src/services/crash-reporter.js +7 -0
  133. package/dist/src/services/crash-reporter.js.map +1 -1
  134. package/dist/src/ui/dashboard.html +57 -25
  135. package/dist/src/ui/orgs.html +30 -13
  136. package/dist/src/ui/routes-monograph.mjs +929 -0
  137. package/dist/src/ui/routes-org.mjs +2513 -0
  138. package/dist/src/ui/server.mjs +726 -4117
  139. package/dist/src/utils/json-file.d.ts +11 -0
  140. package/dist/src/utils/json-file.d.ts.map +1 -1
  141. package/dist/src/utils/json-file.js +27 -0
  142. package/dist/src/utils/json-file.js.map +1 -1
  143. package/dist/tsconfig.tsbuildinfo +1 -1
  144. package/package.json +8 -6
@@ -0,0 +1 @@
1
+ {"version":3,"file":"harness.js","sourceRoot":"","sources":["../../../../src/knowledge/eval/harness.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,120 @@
1
+ /**
2
+ * Retrieval metrics for the Second Brain scoreboard.
3
+ *
4
+ * Definitions are spelled out in full because every number this org reports is
5
+ * judged against them. Nothing here rounds: callers format for display, never
6
+ * for the JSON payload.
7
+ *
8
+ * @module v1/cli/knowledge/eval/metrics
9
+ */
10
+ /** A ranked retrieval result, already reduced to one entry per document. */
11
+ export interface RankedDoc {
12
+ /** Repo-relative document path — the unit of relevance judgement. */
13
+ docId: string;
14
+ /** Best score seen for this document across its chunks. */
15
+ score: number;
16
+ /** Which chunk produced the best score (for debugging misses). */
17
+ chunkIndex: number;
18
+ }
19
+ export interface QueryOutcome {
20
+ queryId: string;
21
+ query: string;
22
+ relevant: string[];
23
+ ranked: RankedDoc[];
24
+ /** 1-based rank of the first relevant doc within the top 10, else null. */
25
+ firstRelevantRank: number | null;
26
+ recallAt: Record<number, number>;
27
+ hitAt: Record<number, number>;
28
+ reciprocalRank: number;
29
+ latencyMs: number;
30
+ /** IDF-weighted lexical overlap between query and its gold document(s). */
31
+ overlap: number;
32
+ overlapTercile?: 'low' | 'mid' | 'high';
33
+ }
34
+ export interface Scoreboard {
35
+ queries: number;
36
+ /** Macro-averaged. Standard definition: |top-k INTERSECT R| / |R|. */
37
+ recallAt1: number;
38
+ recallAt5: number;
39
+ recallAt10: number;
40
+ /** Fraction of queries with >= 1 relevant doc in top-k. Equals recall when |R| = 1. */
41
+ hitRateAt1: number;
42
+ hitRateAt5: number;
43
+ hitRateAt10: number;
44
+ /** Mean reciprocal rank, cutoff 10. Queries with no hit contribute 0. */
45
+ mrrAt10: number;
46
+ /** Queries where no relevant doc appeared anywhere in the top 10. */
47
+ totalMisses: number;
48
+ latencyMsP50: number;
49
+ latencyMsP95: number;
50
+ /** 95% Wald half-width on hitRateAt5 — how large a delta must be to be signal. */
51
+ hitRateAt5Ci95: number;
52
+ }
53
+ export declare const K_VALUES: readonly [1, 5, 10];
54
+ /**
55
+ * Reduce chunk-level hits to a ranked list of unique documents. A document's
56
+ * rank is the rank of its best-scoring chunk; further chunks of an
57
+ * already-seen document are dropped rather than pushing other documents down.
58
+ */
59
+ export declare function dedupeByDoc(hits: Array<{
60
+ docId: string;
61
+ score: number;
62
+ chunkIndex: number;
63
+ }>, cutoff: number): RankedDoc[];
64
+ export declare function scoreQuery(args: {
65
+ queryId: string;
66
+ query: string;
67
+ relevant: string[];
68
+ ranked: RankedDoc[];
69
+ latencyMs: number;
70
+ overlap?: number;
71
+ }): QueryOutcome;
72
+ export declare function aggregate(outcomes: QueryOutcome[]): Scoreboard;
73
+ import { contentTokens, STOPWORDS } from '../../memory/text-tokens.js';
74
+ export { contentTokens, STOPWORDS };
75
+ export interface TrivialityReport {
76
+ /** Fraction of the query's content tokens appearing anywhere in the doc. */
77
+ overlapRatio: number;
78
+ /** Longest run of consecutive query tokens appearing consecutively in the doc. */
79
+ maxContiguousRun: number;
80
+ trivial: boolean;
81
+ reason?: string;
82
+ }
83
+ /**
84
+ * @param query the golden-set query string
85
+ * @param docText the FULL text of the target document
86
+ */
87
+ export declare function assessTriviality(query: string, docText: string): TrivialityReport;
88
+ export interface IdfModel {
89
+ idf: Map<string, number>;
90
+ docCount: number;
91
+ }
92
+ export declare function buildIdf(docs: string[]): IdfModel;
93
+ /**
94
+ * IDF-weighted overlap in [0,1]: the share of the query's total information
95
+ * mass that is literally present in the gold document.
96
+ */
97
+ export declare function idfOverlap(model: IdfModel, query: string, docText: string): number;
98
+ /** Split outcomes into terciles by overlap and aggregate each independently. */
99
+ export declare function terciles(outcomes: QueryOutcome[]): {
100
+ cutLow: number;
101
+ cutHigh: number;
102
+ low: Scoreboard;
103
+ mid: Scoreboard;
104
+ high: Scoreboard;
105
+ };
106
+ export interface PairedComparison {
107
+ a: string;
108
+ b: string;
109
+ /** Queries where A hit at k and B missed. */
110
+ aWins: number;
111
+ /** Queries where B hit at k and A missed. */
112
+ bWins: number;
113
+ ties: number;
114
+ /** Two-sided McNemar p, exact binomial on the discordant pairs. */
115
+ p: number;
116
+ significant: boolean;
117
+ note: string;
118
+ }
119
+ export declare function pairedCompare(aName: string, aOutcomes: QueryOutcome[], bName: string, bOutcomes: QueryOutcome[], k?: 1 | 5 | 10): PairedComparison;
120
+ //# sourceMappingURL=metrics.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metrics.d.ts","sourceRoot":"","sources":["../../../../src/knowledge/eval/metrics.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,243 @@
1
+ /**
2
+ * Retrieval metrics for the Second Brain scoreboard.
3
+ *
4
+ * Definitions are spelled out in full because every number this org reports is
5
+ * judged against them. Nothing here rounds: callers format for display, never
6
+ * for the JSON payload.
7
+ *
8
+ * @module v1/cli/knowledge/eval/metrics
9
+ */
10
+ export const K_VALUES = [1, 5, 10];
11
+ /**
12
+ * Reduce chunk-level hits to a ranked list of unique documents. A document's
13
+ * rank is the rank of its best-scoring chunk; further chunks of an
14
+ * already-seen document are dropped rather than pushing other documents down.
15
+ */
16
+ export function dedupeByDoc(hits, cutoff) {
17
+ const seen = new Set();
18
+ const out = [];
19
+ for (const h of hits) {
20
+ if (!h.docId || seen.has(h.docId))
21
+ continue;
22
+ seen.add(h.docId);
23
+ out.push({ docId: h.docId, score: h.score, chunkIndex: h.chunkIndex });
24
+ if (out.length >= cutoff)
25
+ break;
26
+ }
27
+ return out;
28
+ }
29
+ export function scoreQuery(args) {
30
+ const rel = new Set(args.relevant);
31
+ const recallAt = {};
32
+ const hitAt = {};
33
+ for (const k of K_VALUES) {
34
+ const top = args.ranked.slice(0, k);
35
+ const found = top.filter(r => rel.has(r.docId)).length;
36
+ recallAt[k] = rel.size === 0 ? 0 : found / rel.size;
37
+ hitAt[k] = found > 0 ? 1 : 0;
38
+ }
39
+ let firstRelevantRank = null;
40
+ for (let i = 0; i < args.ranked.length && i < 10; i++) {
41
+ if (rel.has(args.ranked[i].docId)) {
42
+ firstRelevantRank = i + 1;
43
+ break;
44
+ }
45
+ }
46
+ return {
47
+ queryId: args.queryId,
48
+ query: args.query,
49
+ relevant: args.relevant,
50
+ ranked: args.ranked,
51
+ firstRelevantRank,
52
+ recallAt,
53
+ hitAt,
54
+ reciprocalRank: firstRelevantRank ? 1 / firstRelevantRank : 0,
55
+ latencyMs: args.latencyMs,
56
+ overlap: args.overlap ?? 0,
57
+ };
58
+ }
59
+ function mean(xs) {
60
+ return xs.length === 0 ? 0 : xs.reduce((a, b) => a + b, 0) / xs.length;
61
+ }
62
+ function percentile(xs, p) {
63
+ if (xs.length === 0)
64
+ return 0;
65
+ const sorted = [...xs].sort((a, b) => a - b);
66
+ const idx = Math.min(sorted.length - 1, Math.max(0, Math.ceil((p / 100) * sorted.length) - 1));
67
+ return sorted[idx];
68
+ }
69
+ export function aggregate(outcomes) {
70
+ const n = outcomes.length;
71
+ const lat = outcomes.map(o => o.latencyMs);
72
+ const h5 = mean(outcomes.map(o => o.hitAt[5]));
73
+ // Wald 95% half-width. With small n this is wide on purpose: it is the
74
+ // honest statement that a small delta is not yet a signal.
75
+ const ci = n === 0 ? 0 : 1.96 * Math.sqrt((h5 * (1 - h5)) / n);
76
+ return {
77
+ queries: n,
78
+ recallAt1: mean(outcomes.map(o => o.recallAt[1])),
79
+ recallAt5: mean(outcomes.map(o => o.recallAt[5])),
80
+ recallAt10: mean(outcomes.map(o => o.recallAt[10])),
81
+ hitRateAt1: mean(outcomes.map(o => o.hitAt[1])),
82
+ hitRateAt5: h5,
83
+ hitRateAt10: mean(outcomes.map(o => o.hitAt[10])),
84
+ mrrAt10: mean(outcomes.map(o => o.reciprocalRank)),
85
+ totalMisses: outcomes.filter(o => o.firstRelevantRank === null).length,
86
+ latencyMsP50: percentile(lat, 50),
87
+ latencyMsP95: percentile(lat, 95),
88
+ hitRateAt5Ci95: ci,
89
+ };
90
+ }
91
+ // -- Tokenisation ---------------------------------------------------
92
+ // Canonical definition lives in `memory/text-tokens.ts` — a neutral module
93
+ // that is unambiguously production code, safe from any future `!eval/`
94
+ // exclusion in the published files set. Re-exported here so existing eval
95
+ // callers (retrievers.ts, harness.ts, signals.ts) need no import change.
96
+ import { contentTokens, STOPWORDS } from '../../memory/text-tokens.js';
97
+ export { contentTokens, STOPWORDS };
98
+ /**
99
+ * @param query the golden-set query string
100
+ * @param docText the FULL text of the target document
101
+ */
102
+ export function assessTriviality(query, docText) {
103
+ const q = contentTokens(query);
104
+ const d = contentTokens(docText);
105
+ if (q.length === 0)
106
+ return { overlapRatio: 0, maxContiguousRun: 0, trivial: false };
107
+ const docSet = new Set(d);
108
+ const overlapRatio = q.filter(t => docSet.has(t)).length / q.length;
109
+ const positions = new Map();
110
+ d.forEach((t, i) => {
111
+ const arr = positions.get(t);
112
+ if (arr)
113
+ arr.push(i);
114
+ else
115
+ positions.set(t, [i]);
116
+ });
117
+ let maxRun = 0;
118
+ for (let start = 0; start < q.length; start++) {
119
+ for (const p of positions.get(q[start]) ?? []) {
120
+ let run = 0;
121
+ while (start + run < q.length && p + run < d.length && q[start + run] === d[p + run])
122
+ run++;
123
+ if (run > maxRun)
124
+ maxRun = run;
125
+ }
126
+ }
127
+ let trivial = false;
128
+ let reason;
129
+ if (maxRun >= 4) {
130
+ trivial = true;
131
+ reason = maxRun + '-token verbatim run from the query appears in the target';
132
+ }
133
+ else if (maxRun >= 3 && overlapRatio >= 0.8) {
134
+ trivial = true;
135
+ reason = '3-token verbatim run plus ' + Math.round(overlapRatio * 100) + '% token overlap';
136
+ }
137
+ return { overlapRatio, maxContiguousRun: maxRun, trivial, reason };
138
+ }
139
+ export function buildIdf(docs) {
140
+ const df = new Map();
141
+ for (const text of docs) {
142
+ const unique = new Set(contentTokens(text));
143
+ unique.forEach(t => df.set(t, (df.get(t) ?? 0) + 1));
144
+ }
145
+ const idf = new Map();
146
+ const N = docs.length;
147
+ for (const [t, n] of df)
148
+ idf.set(t, Math.log(1 + (N - n + 0.5) / (n + 0.5)));
149
+ return { idf, docCount: N };
150
+ }
151
+ /** Unknown (never-seen) query terms get the maximum IDF the corpus supports. */
152
+ function idfOf(model, token) {
153
+ return model.idf.get(token) ?? Math.log(1 + (model.docCount + 0.5) / 0.5);
154
+ }
155
+ /**
156
+ * IDF-weighted overlap in [0,1]: the share of the query's total information
157
+ * mass that is literally present in the gold document.
158
+ */
159
+ export function idfOverlap(model, query, docText) {
160
+ const q = contentTokens(query);
161
+ if (q.length === 0)
162
+ return 0;
163
+ const docSet = new Set(contentTokens(docText));
164
+ let total = 0;
165
+ let matched = 0;
166
+ const qUnique = new Set(q);
167
+ qUnique.forEach(t => {
168
+ const w = idfOf(model, t);
169
+ total += w;
170
+ if (docSet.has(t))
171
+ matched += w;
172
+ });
173
+ return total === 0 ? 0 : matched / total;
174
+ }
175
+ /** Split outcomes into terciles by overlap and aggregate each independently. */
176
+ export function terciles(outcomes) {
177
+ const sorted = [...outcomes].sort((a, b) => a.overlap - b.overlap);
178
+ const n = sorted.length;
179
+ const a = Math.floor(n / 3);
180
+ const b = Math.floor((2 * n) / 3);
181
+ const low = sorted.slice(0, a);
182
+ const mid = sorted.slice(a, b);
183
+ const high = sorted.slice(b);
184
+ for (const o of low)
185
+ o.overlapTercile = 'low';
186
+ for (const o of mid)
187
+ o.overlapTercile = 'mid';
188
+ for (const o of high)
189
+ o.overlapTercile = 'high';
190
+ return {
191
+ cutLow: sorted[a]?.overlap ?? 0,
192
+ cutHigh: sorted[b]?.overlap ?? 0,
193
+ low: aggregate(low), mid: aggregate(mid), high: aggregate(high),
194
+ };
195
+ }
196
+ /** Exact two-sided binomial test at p=0.5 — correct for the small discordant
197
+ * counts this eval produces, where the chi-square approximation is unsafe. */
198
+ function exactBinomialTwoSided(k, n) {
199
+ if (n === 0)
200
+ return 1;
201
+ const logC = (nn, kk) => {
202
+ let r = 0;
203
+ for (let i = 1; i <= kk; i++)
204
+ r += Math.log(nn - kk + i) - Math.log(i);
205
+ return r;
206
+ };
207
+ const pmf = (i) => Math.exp(logC(n, i) - n * Math.LN2);
208
+ const target = pmf(k) * (1 + 1e-9);
209
+ let p = 0;
210
+ for (let i = 0; i <= n; i++)
211
+ if (pmf(i) <= target)
212
+ p += pmf(i);
213
+ return Math.min(1, p);
214
+ }
215
+ export function pairedCompare(aName, aOutcomes, bName, bOutcomes, k = 5) {
216
+ const bById = new Map(bOutcomes.map(o => [o.queryId, o]));
217
+ let aWins = 0, bWins = 0, ties = 0;
218
+ for (const a of aOutcomes) {
219
+ const b = bById.get(a.queryId);
220
+ if (!b)
221
+ continue;
222
+ const ah = a.hitAt[k], bh = b.hitAt[k];
223
+ if (ah === bh)
224
+ ties++;
225
+ else if (ah > bh)
226
+ aWins++;
227
+ else
228
+ bWins++;
229
+ }
230
+ const discordant = aWins + bWins;
231
+ const p = exactBinomialTwoSided(Math.min(aWins, bWins), discordant);
232
+ return {
233
+ a: aName, b: bName, aWins, bWins, ties, p,
234
+ significant: p < 0.05,
235
+ note: discordant === 0
236
+ ? 'The two retrievers never disagreed; no paired evidence either way.'
237
+ : `${discordant} discordant queries at k=${k}. ` +
238
+ (p < 0.05
239
+ ? `${bWins > aWins ? bName : aName} wins; the difference survives a paired test.`
240
+ : 'The difference does NOT survive a paired test — it is not yet distinguishable from chance.'),
241
+ };
242
+ }
243
+ //# sourceMappingURL=metrics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metrics.js","sourceRoot":"","sources":["../../../../src/knowledge/eval/metrics.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,48 @@
1
+ /**
2
+ * Model provisioning assert.
3
+ *
4
+ * WHY THIS EXISTS — a measured failure, not a hypothetical.
5
+ *
6
+ * The first `proven-blocked` baseline was produced on a machine whose model
7
+ * cache was already warm. Relocating the cache and re-running showed the truth:
8
+ * the embedding weights are NOT git-tracked (they live under
9
+ * `node_modules/.../@huggingface/transformers/.cache`), so a genuinely clean
10
+ * checkout has no model, and the first embedding call DOWNLOADS ~91MB.
11
+ *
12
+ * Worse, the harness was hiding it. The `searchMethod` probe ran BEFORE the
13
+ * network guard was installed, so the download happened outside the guarded
14
+ * window and the report still said "0 attempts". A check whose failure
15
+ * condition has been quietly moved out of its own scope is not a check.
16
+ *
17
+ * Stop-condition clauses 3 ("clean checkout") and 4 ("no network at query
18
+ * time") are jointly unsatisfiable if the first query fetches a model. The
19
+ * ruling: weights are provisioned by an explicit, documented, NON-QUERY-TIME
20
+ * step, and the eval ASSERTS their presence and fails loudly rather than ever
21
+ * fetching them.
22
+ *
23
+ * @module v1/cli/knowledge/eval/model-presence
24
+ */
25
+ export interface ModelPresence {
26
+ model: string;
27
+ present: boolean;
28
+ /** Where the weights were found, or the locations searched if absent. */
29
+ resolvedPath: string | null;
30
+ searched: string[];
31
+ bytes: number;
32
+ /** How the weights got there — the provisioning story, on the artefact. */
33
+ provenance: 'node_modules cache (populated by a prior run or an explicit warm step)' | 'not provisioned';
34
+ }
35
+ export declare function checkModelPresence(searchRoots?: string[]): ModelPresence;
36
+ /** Throws unless the weights are already on disk. Never fetches. */
37
+ export declare function assertModelProvisioned(searchRoots?: string[]): ModelPresence;
38
+ /**
39
+ * The explicit, NON-QUERY-TIME provisioning step.
40
+ *
41
+ * This is the only place in the eval path permitted to touch the network, it
42
+ * must be invoked deliberately (`monomind doc eval --provision-model`), and it
43
+ * never runs as a side effect of measuring anything. That separation is the
44
+ * whole point: it makes "clean checkout" and "zero network at query time"
45
+ * jointly satisfiable, which they are not when the first query downloads 90MB.
46
+ */
47
+ export declare function provisionModel(log: (m: string) => void): Promise<ModelPresence>;
48
+ //# sourceMappingURL=model-presence.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-presence.d.ts","sourceRoot":"","sources":["../../../../src/knowledge/eval/model-presence.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAMH,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;IACjB,yEAAyE;IACzE,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,2EAA2E;IAC3E,UAAU,EAAE,wEAAwE,GAAG,iBAAiB,CAAC;CAC1G;AA4CD,wBAAgB,kBAAkB,CAAC,WAAW,GAAE,MAAM,EAAoB,GAAG,aAAa,CAkBzF;AAED,oEAAoE;AACpE,wBAAgB,sBAAsB,CAAC,WAAW,GAAE,MAAM,EAAoB,GAAG,aAAa,CAY7F;AAED;;;;;;;;GAQG;AACH,wBAAsB,cAAc,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,aAAa,CAAC,CAcrF"}
@@ -0,0 +1,128 @@
1
+ /**
2
+ * Model provisioning assert.
3
+ *
4
+ * WHY THIS EXISTS — a measured failure, not a hypothetical.
5
+ *
6
+ * The first `proven-blocked` baseline was produced on a machine whose model
7
+ * cache was already warm. Relocating the cache and re-running showed the truth:
8
+ * the embedding weights are NOT git-tracked (they live under
9
+ * `node_modules/.../@huggingface/transformers/.cache`), so a genuinely clean
10
+ * checkout has no model, and the first embedding call DOWNLOADS ~91MB.
11
+ *
12
+ * Worse, the harness was hiding it. The `searchMethod` probe ran BEFORE the
13
+ * network guard was installed, so the download happened outside the guarded
14
+ * window and the report still said "0 attempts". A check whose failure
15
+ * condition has been quietly moved out of its own scope is not a check.
16
+ *
17
+ * Stop-condition clauses 3 ("clean checkout") and 4 ("no network at query
18
+ * time") are jointly unsatisfiable if the first query fetches a model. The
19
+ * ruling: weights are provisioned by an explicit, documented, NON-QUERY-TIME
20
+ * step, and the eval ASSERTS their presence and fails loudly rather than ever
21
+ * fetching them.
22
+ *
23
+ * @module v1/cli/knowledge/eval/model-presence
24
+ */
25
+ import * as fs from 'node:fs';
26
+ import * as path from 'node:path';
27
+ import { createRequire } from 'node:module';
28
+ const MODEL_ID = 'Alibaba-NLP/gte-modernbert-base';
29
+ const WEIGHT_CANDIDATES = [
30
+ 'onnx/model_quantized.onnx',
31
+ 'onnx/model_q8.onnx',
32
+ 'onnx/model.onnx',
33
+ ];
34
+ /**
35
+ * Where the weights could be. Resolution has to be thorough: the first version
36
+ * of this only looked at `<cwd>/node_modules/@huggingface/...`, missed the real
37
+ * pnpm-hoisted location entirely, and so reported "not provisioned" while a
38
+ * perfectly good 89MB model sat on disk. An assert that fires for the wrong
39
+ * reason is barely better than one that never fires.
40
+ */
41
+ function transformersCacheDirs(searchRoots) {
42
+ const dirs = [];
43
+ // Explicit override wins, and is the documented provisioning hook.
44
+ if (process.env.TRANSFORMERS_CACHE)
45
+ dirs.push(process.env.TRANSFORMERS_CACHE);
46
+ if (process.env.MONOMIND_MODEL_CACHE)
47
+ dirs.push(process.env.MONOMIND_MODEL_CACHE);
48
+ for (const root of searchRoots) {
49
+ try {
50
+ const req = createRequire(path.join(root, 'index.js'));
51
+ const pkg = req.resolve('@huggingface/transformers/package.json');
52
+ dirs.push(path.join(path.dirname(pkg), '.cache'));
53
+ }
54
+ catch { /* not resolvable from this root */ }
55
+ dirs.push(path.join(root, 'node_modules', '@huggingface', 'transformers', '.cache'));
56
+ // pnpm keeps the real package under a mangled directory name; the resolver
57
+ // above usually finds it, but not when the caller runs from a built dist
58
+ // whose module graph never referenced the package.
59
+ const pnpm = path.join(root, 'node_modules', '.pnpm');
60
+ try {
61
+ for (const entry of fs.readdirSync(pnpm)) {
62
+ if (entry.startsWith('@huggingface+transformers')) {
63
+ dirs.push(path.join(pnpm, entry, 'node_modules', '@huggingface', 'transformers', '.cache'));
64
+ }
65
+ }
66
+ }
67
+ catch { /* no pnpm store here */ }
68
+ }
69
+ return [...new Set(dirs)];
70
+ }
71
+ export function checkModelPresence(searchRoots = [process.cwd()]) {
72
+ const searched = [];
73
+ for (const dir of transformersCacheDirs(searchRoots)) {
74
+ for (const rel of WEIGHT_CANDIDATES) {
75
+ const p = path.join(dir, MODEL_ID, rel);
76
+ searched.push(p);
77
+ try {
78
+ const st = fs.statSync(p);
79
+ if (st.isFile() && st.size > 1_000_000) {
80
+ return {
81
+ model: MODEL_ID, present: true, resolvedPath: p, searched, bytes: st.size,
82
+ provenance: 'node_modules cache (populated by a prior run or an explicit warm step)',
83
+ };
84
+ }
85
+ }
86
+ catch { /* keep searching */ }
87
+ }
88
+ }
89
+ return { model: MODEL_ID, present: false, resolvedPath: null, searched, bytes: 0, provenance: 'not provisioned' };
90
+ }
91
+ /** Throws unless the weights are already on disk. Never fetches. */
92
+ export function assertModelProvisioned(searchRoots = [process.cwd()]) {
93
+ const p = checkModelPresence(searchRoots);
94
+ if (!p.present) {
95
+ throw new Error(`[doc eval] EMBEDDING MODEL NOT PROVISIONED: ${MODEL_ID} was not found on disk.\n` +
96
+ ` The eval will not download it. A harness that silently fetches a model mid-run both\n` +
97
+ ` violates the zero-network-at-query-time condition and makes the run non-reproducible.\n` +
98
+ ` Provision it as an explicit, non-query-time step, then re-run.\n` +
99
+ ` Searched:\n ${p.searched.join('\n ')}`);
100
+ }
101
+ return p;
102
+ }
103
+ /**
104
+ * The explicit, NON-QUERY-TIME provisioning step.
105
+ *
106
+ * This is the only place in the eval path permitted to touch the network, it
107
+ * must be invoked deliberately (`monomind doc eval --provision-model`), and it
108
+ * never runs as a side effect of measuring anything. That separation is the
109
+ * whole point: it makes "clean checkout" and "zero network at query time"
110
+ * jointly satisfiable, which they are not when the first query downloads 90MB.
111
+ */
112
+ export async function provisionModel(log) {
113
+ const already = checkModelPresence([process.cwd()]);
114
+ if (already.present) {
115
+ log(`already provisioned: ${(already.bytes / 1e6).toFixed(0)}MB at ${already.resolvedPath}`);
116
+ return already;
117
+ }
118
+ log(`fetching ${MODEL_ID} — this is the provisioning step and it REQUIRES network access.`);
119
+ log('It is deliberately separate from measurement; `doc eval` itself never fetches.');
120
+ const t = await import('@huggingface/transformers');
121
+ await t.pipeline('feature-extraction', MODEL_ID, { revision: 'main', dtype: 'q8' });
122
+ const after = checkModelPresence([process.cwd()]);
123
+ if (!after.present)
124
+ throw new Error('[doc eval] provisioning ran but the weights are still not on disk.');
125
+ log(`provisioned: ${(after.bytes / 1e6).toFixed(0)}MB at ${after.resolvedPath}`);
126
+ return after;
127
+ }
128
+ //# sourceMappingURL=model-presence.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-presence.js","sourceRoot":"","sources":["../../../../src/knowledge/eval/model-presence.ts"],"names":[],"mappings":"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"}