@vivantel/virage-core 0.2.5 → 0.2.7

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 (84) hide show
  1. package/dist/core/git-tracker.js +1 -1
  2. package/dist/core/git-tracker.js.map +1 -1
  3. package/dist/core/orchestrator.d.ts +3 -0
  4. package/dist/core/orchestrator.d.ts.map +1 -1
  5. package/dist/core/orchestrator.js +8 -33
  6. package/dist/core/orchestrator.js.map +1 -1
  7. package/dist/core/virage-defaults.d.ts +1 -0
  8. package/dist/core/virage-defaults.d.ts.map +1 -1
  9. package/dist/core/virage-defaults.js +11 -0
  10. package/dist/core/virage-defaults.js.map +1 -1
  11. package/dist/index.d.ts +6 -1
  12. package/dist/index.d.ts.map +1 -1
  13. package/dist/index.js +7 -1
  14. package/dist/index.js.map +1 -1
  15. package/dist/strategies/chunk/markdown-headers.d.ts.map +1 -1
  16. package/dist/strategies/chunk/markdown-headers.js +5 -2
  17. package/dist/strategies/chunk/markdown-headers.js.map +1 -1
  18. package/dist/strategies/chunk/semantic.d.ts.map +1 -1
  19. package/dist/strategies/chunk/semantic.js +7 -1
  20. package/dist/strategies/chunk/semantic.js.map +1 -1
  21. package/dist/strategies/chunk/token.d.ts.map +1 -1
  22. package/dist/strategies/chunk/token.js +14 -4
  23. package/dist/strategies/chunk/token.js.map +1 -1
  24. package/package.json +1 -10
  25. package/dist/bin/virage.d.ts +0 -3
  26. package/dist/bin/virage.d.ts.map +0 -1
  27. package/dist/bin/virage.js +0 -345
  28. package/dist/bin/virage.js.map +0 -1
  29. package/dist/cli/benchmark.d.ts +0 -6
  30. package/dist/cli/benchmark.d.ts.map +0 -1
  31. package/dist/cli/benchmark.js +0 -26
  32. package/dist/cli/benchmark.js.map +0 -1
  33. package/dist/cli/chunks-report.d.ts +0 -2
  34. package/dist/cli/chunks-report.d.ts.map +0 -1
  35. package/dist/cli/chunks-report.js +0 -74
  36. package/dist/cli/chunks-report.js.map +0 -1
  37. package/dist/cli/dashboard.d.ts +0 -7
  38. package/dist/cli/dashboard.d.ts.map +0 -1
  39. package/dist/cli/dashboard.js +0 -190
  40. package/dist/cli/dashboard.js.map +0 -1
  41. package/dist/cli/evaluate.d.ts +0 -9
  42. package/dist/cli/evaluate.d.ts.map +0 -1
  43. package/dist/cli/evaluate.js +0 -67
  44. package/dist/cli/evaluate.js.map +0 -1
  45. package/dist/cli/experiment.d.ts +0 -13
  46. package/dist/cli/experiment.d.ts.map +0 -1
  47. package/dist/cli/experiment.js +0 -99
  48. package/dist/cli/experiment.js.map +0 -1
  49. package/dist/cli/file-detect.d.ts +0 -10
  50. package/dist/cli/file-detect.d.ts.map +0 -1
  51. package/dist/cli/file-detect.js +0 -55
  52. package/dist/cli/file-detect.js.map +0 -1
  53. package/dist/cli/init.d.ts +0 -2
  54. package/dist/cli/init.d.ts.map +0 -1
  55. package/dist/cli/init.js +0 -382
  56. package/dist/cli/init.js.map +0 -1
  57. package/dist/cli/report.d.ts +0 -2
  58. package/dist/cli/report.d.ts.map +0 -1
  59. package/dist/cli/report.js +0 -96
  60. package/dist/cli/report.js.map +0 -1
  61. package/dist/cli/store-cmd.d.ts +0 -10
  62. package/dist/cli/store-cmd.d.ts.map +0 -1
  63. package/dist/cli/store-cmd.js +0 -50
  64. package/dist/cli/store-cmd.js.map +0 -1
  65. package/dist/cli/validate.d.ts +0 -2
  66. package/dist/cli/validate.d.ts.map +0 -1
  67. package/dist/cli/validate.js +0 -74
  68. package/dist/cli/validate.js.map +0 -1
  69. package/dist/cli/viz.d.ts +0 -7
  70. package/dist/cli/viz.d.ts.map +0 -1
  71. package/dist/cli/viz.js +0 -163
  72. package/dist/cli/viz.js.map +0 -1
  73. package/dist/logger/consola-logger.d.ts +0 -18
  74. package/dist/logger/consola-logger.d.ts.map +0 -1
  75. package/dist/logger/consola-logger.js +0 -76
  76. package/dist/logger/consola-logger.js.map +0 -1
  77. package/dist/logger/index.d.ts +0 -5
  78. package/dist/logger/index.d.ts.map +0 -1
  79. package/dist/logger/index.js +0 -7
  80. package/dist/logger/index.js.map +0 -1
  81. package/dist/progress/progress-bar.d.ts +0 -6
  82. package/dist/progress/progress-bar.d.ts.map +0 -1
  83. package/dist/progress/progress-bar.js +0 -23
  84. package/dist/progress/progress-bar.js.map +0 -1
@@ -1,190 +0,0 @@
1
- import { createServer } from "http";
2
- import { readFile } from "fs/promises";
3
- import { EmbeddingsDb } from "../core/embeddings-db.js";
4
- const HTML_TEMPLATE = `<!DOCTYPE html>
5
- <html>
6
- <head>
7
- <meta charset="utf-8">
8
- <title>RAG Dashboard</title>
9
- <meta http-equiv="refresh" content="5">
10
- <style>
11
- body { font-family: monospace; background: #1a1a2e; color: #eee; padding: 20px; }
12
- h1 { color: #7ec8e3; }
13
- .card { background: #16213e; border-radius: 8px; padding: 16px; margin: 12px 0; }
14
- .metric { display: inline-block; margin: 8px 16px; }
15
- .metric .value { font-size: 2em; color: #7ec8e3; }
16
- .metric .label { font-size: 0.8em; color: #888; }
17
- .bar { height: 16px; background: #0f3460; border-radius: 4px; margin: 4px 0; position: relative; }
18
- .bar-fill { height: 100%; background: #7ec8e3; border-radius: 4px; }
19
- .anomaly { color: #ff6b6b; }
20
- table { width: 100%; border-collapse: collapse; }
21
- td, th { padding: 6px 12px; text-align: left; border-bottom: 1px solid #333; }
22
- </style>
23
- </head>
24
- <body>
25
- <h1>šŸ¤– RAG Dashboard</h1>
26
- <div id="content">Loading...</div>
27
- <script>
28
- async function refresh() {
29
- const [status, chunks, anomalies] = await Promise.all([
30
- fetch('/api/status').then(r => r.json()),
31
- fetch('/api/chunks').then(r => r.json()),
32
- fetch('/api/embeddings/anomalies').then(r => r.json()),
33
- ]);
34
-
35
- let html = '';
36
-
37
- // Status card
38
- html += '<div class="card"><h2>System Status</h2>';
39
- html += '<div class="metric"><div class="value">' + (status.totalChunks || 0) + '</div><div class="label">Total Chunks</div></div>';
40
- html += '<div class="metric"><div class="value">' + (status.totalEmbeddings || 0) + '</div><div class="label">Embeddings</div></div>';
41
- html += '<div class="metric"><div class="value">' + (status.memoryMB || 0) + ' MB</div><div class="label">Heap Used</div></div>';
42
- html += '</div>';
43
-
44
- // Chunk histogram
45
- if (chunks.histogram && chunks.histogram.length > 0) {
46
- html += '<div class="card"><h2>Chunk Size Distribution</h2>';
47
- const maxCount = Math.max(...chunks.histogram.map(b => b.count));
48
- for (const bucket of chunks.histogram) {
49
- const pct = maxCount > 0 ? Math.round((bucket.count / maxCount) * 100) : 0;
50
- html += '<div style="font-size:12px">' + bucket.label + '</div>';
51
- html += '<div class="bar"><div class="bar-fill" style="width:' + pct + '%"></div></div>';
52
- html += '<div style="font-size:11px;color:#888">' + bucket.count + ' chunks</div>';
53
- }
54
- html += '</div>';
55
- }
56
-
57
- // Anomalies
58
- if (anomalies.anomalies && anomalies.anomalies.length > 0) {
59
- html += '<div class="card"><h2>āš ļø Embedding Anomalies (' + anomalies.anomalies.length + ')</h2>';
60
- html += '<table><tr><th>File</th><th>z-score</th><th>Preview</th></tr>';
61
- for (const a of anomalies.anomalies.slice(0, 10)) {
62
- html += '<tr class="anomaly"><td>' + a.sourceFile + '</td><td>' + a.zscore.toFixed(2) + '</td><td>' + a.preview + '</td></tr>';
63
- }
64
- html += '</table></div>';
65
- } else {
66
- html += '<div class="card">āœ… No embedding anomalies detected</div>';
67
- }
68
-
69
- document.getElementById('content').innerHTML = html;
70
- }
71
- refresh();
72
- setInterval(refresh, 5000);
73
- </script>
74
- </body>
75
- </html>`;
76
- export async function runDashboard(opts) {
77
- const server = createServer(async (req, res) => {
78
- const url = req.url ?? "/";
79
- res.setHeader("Content-Type", "application/json");
80
- try {
81
- if (url === "/" || url === "/index.html") {
82
- res.setHeader("Content-Type", "text/html");
83
- res.end(HTML_TEMPLATE);
84
- return;
85
- }
86
- if (url === "/api/status") {
87
- const status = await getStatus(opts.chunksFile, opts.dbPath);
88
- res.end(JSON.stringify(status));
89
- return;
90
- }
91
- if (url === "/api/chunks") {
92
- const chunks = await getChunksHistogram(opts.chunksFile);
93
- res.end(JSON.stringify(chunks));
94
- return;
95
- }
96
- if (url === "/api/embeddings/anomalies") {
97
- const anomalies = await getAnomalies(opts.dbPath);
98
- res.end(JSON.stringify(anomalies));
99
- return;
100
- }
101
- res.statusCode = 404;
102
- res.end(JSON.stringify({ error: "Not found" }));
103
- }
104
- catch (err) {
105
- res.statusCode = 500;
106
- res.end(JSON.stringify({ error: err.message }));
107
- }
108
- });
109
- server.listen(opts.port, () => {
110
- console.log(`šŸš€ RAG Dashboard running at http://localhost:${opts.port}`);
111
- console.log(" Press Ctrl+C to stop");
112
- });
113
- // Keep process alive
114
- await new Promise((resolve) => {
115
- process.on("SIGINT", () => {
116
- server.close();
117
- resolve();
118
- });
119
- });
120
- }
121
- async function getStatus(chunksFile, dbPath) {
122
- let totalChunks = 0;
123
- let totalEmbeddings = 0;
124
- try {
125
- const chunks = JSON.parse(await readFile(chunksFile, "utf-8"));
126
- totalChunks = Array.isArray(chunks)
127
- ? chunks.length
128
- : (chunks.chunks?.length ?? 0);
129
- }
130
- catch {
131
- /* file may not exist yet */
132
- }
133
- try {
134
- const db = new EmbeddingsDb(dbPath);
135
- totalEmbeddings = db.getAll().length;
136
- db.close();
137
- }
138
- catch {
139
- /* db may not exist yet */
140
- }
141
- const memoryMB = Math.round(process.memoryUsage().heapUsed / 1024 / 1024);
142
- return { totalChunks, totalEmbeddings, memoryMB };
143
- }
144
- async function getChunksHistogram(chunksFile) {
145
- try {
146
- const raw = JSON.parse(await readFile(chunksFile, "utf-8"));
147
- const chunks = (Array.isArray(raw) ? raw : (raw.chunks ?? []));
148
- const sizes = chunks.map((c) => c.content?.length ?? 0);
149
- const buckets = [
150
- { label: "< 200 chars", min: 0, max: 200 },
151
- { label: "200–500 chars", min: 200, max: 500 },
152
- { label: "500–1k chars", min: 500, max: 1000 },
153
- { label: "1k–2k chars", min: 1000, max: 2000 },
154
- { label: "> 2k chars", min: 2000, max: Infinity },
155
- ];
156
- const histogram = buckets.map((b) => ({
157
- label: b.label,
158
- count: sizes.filter((s) => s >= b.min && s < b.max).length,
159
- }));
160
- return { histogram };
161
- }
162
- catch {
163
- return { histogram: [] };
164
- }
165
- }
166
- async function getAnomalies(dbPath) {
167
- try {
168
- const db = new EmbeddingsDb(dbPath);
169
- const chunks = db.getAll();
170
- db.close();
171
- if (chunks.length === 0)
172
- return { anomalies: [] };
173
- const norms = chunks.map((c) => Math.sqrt((c.embedding ?? []).reduce((s, v) => s + v * v, 0)));
174
- const mean = norms.reduce((s, v) => s + v, 0) / norms.length;
175
- const std = Math.sqrt(norms.reduce((s, v) => s + (v - mean) ** 2, 0) / norms.length);
176
- const anomalies = chunks
177
- .map((c, i) => ({
178
- sourceFile: c.sourceFile ?? "unknown",
179
- zscore: std > 0 ? Math.abs(norms[i] - mean) / std : 0,
180
- preview: (c.content ?? "").slice(0, 60),
181
- }))
182
- .filter((a) => a.zscore > 2.5)
183
- .sort((a, b) => b.zscore - a.zscore);
184
- return { anomalies };
185
- }
186
- catch {
187
- return { anomalies: [] };
188
- }
189
- }
190
- //# sourceMappingURL=dashboard.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dashboard.js","sourceRoot":"","sources":["../../src/cli/dashboard.ts"],"names":[],"mappings":"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"}
@@ -1,9 +0,0 @@
1
- export interface EvaluateOptions {
2
- config: string;
3
- dataset: string;
4
- withLlmJudge: boolean;
5
- thresholdMrr?: number;
6
- ci: boolean;
7
- }
8
- export declare function runEvaluate(opts: EvaluateOptions): Promise<void>;
9
- //# sourceMappingURL=evaluate.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"evaluate.d.ts","sourceRoot":"","sources":["../../src/cli/evaluate.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,OAAO,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,EAAE,EAAE,OAAO,CAAC;CACb;AAkBD,wBAAsB,WAAW,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CA4DtE"}
@@ -1,67 +0,0 @@
1
- import { loadConfig } from "../config-loader.js";
2
- import { loadEvalDataset } from "../eval/dataset-io.js";
3
- import { EvalRunner } from "../eval/runner.js";
4
- import { ExperimentStore, makeRunId } from "../eval/experiment-store.js";
5
- import { createProgressBar } from "../progress/progress-bar.js";
6
- function formatPercent(n) {
7
- return `${(n * 100).toFixed(1)}%`;
8
- }
9
- function printEvalResult(result) {
10
- console.log("\nšŸ“Š Retrieval Evaluation Results");
11
- console.log("─".repeat(40));
12
- console.log(` Queries evaluated : ${result.queriesEvaluated}`);
13
- console.log(` Precision@5 : ${formatPercent(result.precisionAt5)}`);
14
- console.log(` Precision@10 : ${formatPercent(result.precisionAt10)}`);
15
- console.log(` Recall@10 : ${formatPercent(result.recallAt10)}`);
16
- console.log(` MRR : ${result.mrr.toFixed(4)}`);
17
- console.log(` HitRate@5 : ${formatPercent(result.hitRateAt5)}`);
18
- console.log("─".repeat(40));
19
- }
20
- export async function runEvaluate(opts) {
21
- console.log("šŸ“‚ Loading config...");
22
- const cfg = await loadConfig(opts.config);
23
- console.log(`šŸ“‹ Loading eval dataset from "${opts.dataset}"...`);
24
- const dataset = await loadEvalDataset(opts.dataset);
25
- console.log(` Found ${dataset.queries.length} queries`);
26
- await cfg.vectorStore.initialize();
27
- console.log("šŸ” Running retrieval evaluation...");
28
- const runner = new EvalRunner(cfg.vectorStore, cfg.embedder, dataset);
29
- const evalBar = createProgressBar("Evaluating", dataset.queries.length);
30
- let evalResult, perQueryRrScores;
31
- try {
32
- ({ evalResult, perQueryRrScores } = await runner.run((done, total) => evalBar.update(done < total ? done : total)));
33
- }
34
- finally {
35
- evalBar.stop();
36
- }
37
- printEvalResult(evalResult);
38
- if (opts.withLlmJudge) {
39
- console.log("\nāš–ļø LLM-as-judge (RAGAS) requires a judge configured in config.");
40
- console.log(" Add a judge to your pipeline config to enable RAGAS metrics.");
41
- }
42
- // Save to experiment store
43
- const store = new ExperimentStore();
44
- const run = {
45
- id: makeRunId("eval"),
46
- name: "eval",
47
- timestamp: new Date().toISOString(),
48
- config: { configFile: opts.config, dataset: opts.dataset },
49
- evalResult,
50
- perQueryRrScores,
51
- };
52
- const savedPath = await store.save(run);
53
- console.log(`\nšŸ’¾ Results saved to: ${savedPath}`);
54
- // CI quality gate
55
- if (opts.thresholdMrr !== undefined) {
56
- const passed = evalResult.mrr >= opts.thresholdMrr;
57
- if (passed) {
58
- console.log(`\nāœ… Quality gate passed: MRR ${evalResult.mrr.toFixed(4)} ≄ ${opts.thresholdMrr}`);
59
- }
60
- else {
61
- console.error(`\nāŒ Quality gate FAILED: MRR ${evalResult.mrr.toFixed(4)} < ${opts.thresholdMrr}`);
62
- if (opts.ci)
63
- process.exit(1);
64
- }
65
- }
66
- }
67
- //# sourceMappingURL=evaluate.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"evaluate.js","sourceRoot":"","sources":["../../src/cli/evaluate.ts"],"names":[],"mappings":"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"}
@@ -1,13 +0,0 @@
1
- export interface ExperimentRunOptions {
2
- name: string;
3
- config: string;
4
- dataset: string;
5
- }
6
- export interface ExperimentCompareOptions {
7
- baseline: string;
8
- candidate: string;
9
- }
10
- export declare function runExperimentRun(opts: ExperimentRunOptions): Promise<void>;
11
- export declare function runExperimentList(): Promise<void>;
12
- export declare function runExperimentCompare(opts: ExperimentCompareOptions): Promise<void>;
13
- //# sourceMappingURL=experiment.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"experiment.d.ts","sourceRoot":"","sources":["../../src/cli/experiment.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,oBAAoB,GACzB,OAAO,CAAC,IAAI,CAAC,CAuCf;AAED,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC,CAgCvD;AAED,wBAAsB,oBAAoB,CACxC,IAAI,EAAE,wBAAwB,GAC7B,OAAO,CAAC,IAAI,CAAC,CAoEf"}
@@ -1,99 +0,0 @@
1
- import { loadConfig } from "../config-loader.js";
2
- import { loadEvalDataset } from "../eval/dataset-io.js";
3
- import { EvalRunner } from "../eval/runner.js";
4
- import { ExperimentStore, makeRunId } from "../eval/experiment-store.js";
5
- import { createProgressBar } from "../progress/progress-bar.js";
6
- import { bootstrapPairedTest } from "../eval/statistics.js";
7
- export async function runExperimentRun(opts) {
8
- console.log(`🧪 Experiment: "${opts.name}"`);
9
- console.log("šŸ“‚ Loading config...");
10
- const cfg = await loadConfig(opts.config);
11
- console.log(`šŸ“‹ Loading eval dataset from "${opts.dataset}"...`);
12
- const dataset = await loadEvalDataset(opts.dataset);
13
- await cfg.vectorStore.initialize();
14
- console.log("šŸ” Running evaluation...");
15
- const runner = new EvalRunner(cfg.vectorStore, cfg.embedder, dataset);
16
- const evalBar = createProgressBar("Evaluating", dataset.queries.length);
17
- let evalResult, perQueryRrScores;
18
- try {
19
- ({ evalResult, perQueryRrScores } = await runner.run((done, total) => evalBar.update(done < total ? done : total)));
20
- }
21
- finally {
22
- evalBar.stop();
23
- }
24
- console.log(`\n MRR: ${evalResult.mrr.toFixed(4)}`);
25
- console.log(` Precision@5: ${(evalResult.precisionAt5 * 100).toFixed(1)}%`);
26
- console.log(` Recall@10: ${(evalResult.recallAt10 * 100).toFixed(1)}%`);
27
- console.log(` HitRate@5: ${(evalResult.hitRateAt5 * 100).toFixed(1)}%`);
28
- const store = new ExperimentStore();
29
- const run = {
30
- id: makeRunId(opts.name),
31
- name: opts.name,
32
- timestamp: new Date().toISOString(),
33
- config: { configFile: opts.config, dataset: opts.dataset },
34
- evalResult,
35
- perQueryRrScores,
36
- };
37
- const savedPath = await store.save(run);
38
- console.log(`\nšŸ’¾ Experiment "${run.id}" saved to: ${savedPath}`);
39
- }
40
- export async function runExperimentList() {
41
- const store = new ExperimentStore();
42
- const runs = await store.list();
43
- if (runs.length === 0) {
44
- console.log("No experiment runs found. Use `virage experiment run` to create one.");
45
- return;
46
- }
47
- console.log("\nšŸ“‹ Experiment Runs");
48
- console.log("─".repeat(80));
49
- console.log(` ${"ID".padEnd(35)} ${"NAME".padEnd(20)} ${"TIMESTAMP".padEnd(20)} MRR`);
50
- console.log("─".repeat(80));
51
- // newest-first
52
- const sorted = [...runs].sort((a, b) => new Date(b.timestamp).getTime() - new Date(a.timestamp).getTime());
53
- for (const run of sorted) {
54
- const ts = run.timestamp.slice(0, 19).replace("T", " ");
55
- console.log(` ${run.id.padEnd(35)} ${run.name.padEnd(20)} ${ts.padEnd(20)} ${run.evalResult.mrr.toFixed(4)}`);
56
- }
57
- console.log("─".repeat(80));
58
- console.log(` ${runs.length} run(s) total`);
59
- }
60
- export async function runExperimentCompare(opts) {
61
- const store = new ExperimentStore();
62
- console.log(`šŸ“‚ Loading experiment runs...`);
63
- const baseline = await store.load(opts.baseline);
64
- const candidate = await store.load(opts.candidate);
65
- console.log(`\nšŸ“Š Comparing experiments`);
66
- console.log("─".repeat(50));
67
- console.log(` Baseline : ${baseline.id} (MRR: ${baseline.evalResult.mrr.toFixed(4)})`);
68
- console.log(` Candidate : ${candidate.id} (MRR: ${candidate.evalResult.mrr.toFixed(4)})`);
69
- if (!baseline.perQueryRrScores || !candidate.perQueryRrScores) {
70
- const delta = candidate.evalResult.mrr - baseline.evalResult.mrr;
71
- console.log("─".repeat(50));
72
- console.log(` MRR delta : ${delta >= 0 ? "+" : ""}${delta.toFixed(4)}`);
73
- console.log(` ā„¹ļø Per-query scores unavailable. Re-run experiments to get bootstrap test.`);
74
- console.log("─".repeat(50));
75
- return;
76
- }
77
- if (baseline.perQueryRrScores.length !== candidate.perQueryRrScores.length) {
78
- console.warn(`āš ļø Query count mismatch (${baseline.perQueryRrScores.length} vs ` +
79
- `${candidate.perQueryRrScores.length}). Using shorter set.`);
80
- }
81
- const n = Math.min(baseline.perQueryRrScores.length, candidate.perQueryRrScores.length);
82
- if (n < 2) {
83
- console.log("\nāš ļø Cannot run statistical test: need at least 2 queries.");
84
- return;
85
- }
86
- const stat = bootstrapPairedTest(baseline.perQueryRrScores.slice(0, n), candidate.perQueryRrScores.slice(0, n));
87
- const verdictEmoji = stat.recommendation === "accept"
88
- ? "āœ…"
89
- : stat.recommendation === "reject"
90
- ? "āŒ"
91
- : "āš ļø ";
92
- console.log("─".repeat(50));
93
- console.log(` MRR delta : ${stat.mrrDelta >= 0 ? "+" : ""}${stat.mrrDelta.toFixed(4)}`);
94
- console.log(` p-value : ${stat.pValue.toFixed(4)}`);
95
- console.log(` 95% CI : [${stat.confidenceInterval95[0].toFixed(4)}, ${stat.confidenceInterval95[1].toFixed(4)}]`);
96
- console.log(` Verdict : ${verdictEmoji} ${stat.recommendation.toUpperCase()}`);
97
- console.log("─".repeat(50));
98
- }
99
- //# sourceMappingURL=experiment.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"experiment.js","sourceRoot":"","sources":["../../src/cli/experiment.ts"],"names":[],"mappings":"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"}
@@ -1,10 +0,0 @@
1
- export interface ExtGroup {
2
- exts: string[];
3
- strategyFn: string;
4
- name: string;
5
- }
6
- export declare const EXT_GROUPS: ExtGroup[];
7
- export declare const IGNORED_DIRS: Set<string>;
8
- export declare function collectExtensions(dir: string, found: Set<string>): Promise<void>;
9
- export declare function detectFileExtensions(cwd: string): Promise<ExtGroup[]>;
10
- //# sourceMappingURL=file-detect.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"file-detect.d.ts","sourceRoot":"","sources":["../../src/cli/file-detect.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,eAAO,MAAM,UAAU,EAAE,QAAQ,EAchC,CAAC;AAEF,eAAO,MAAM,YAAY,aAUvB,CAAC;AAEH,wBAAsB,iBAAiB,CACrC,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,GACjB,OAAO,CAAC,IAAI,CAAC,CAiBf;AAED,wBAAsB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,CAI3E"}
@@ -1,55 +0,0 @@
1
- import { readdir } from "fs/promises";
2
- import { extname, join } from "path";
3
- export const EXT_GROUPS = [
4
- {
5
- exts: [".md", ".mdx"],
6
- strategyFn: "markdownHeadersStrategy",
7
- name: "markdown",
8
- },
9
- { exts: [".ts", ".tsx"], strategyFn: "tokenStrategy", name: "typescript" },
10
- { exts: [".js", ".jsx"], strategyFn: "tokenStrategy", name: "javascript" },
11
- { exts: [".py"], strategyFn: "tokenStrategy", name: "python" },
12
- { exts: [".go"], strategyFn: "tokenStrategy", name: "go" },
13
- { exts: [".cs"], strategyFn: "tokenStrategy", name: "csharp" },
14
- { exts: [".java"], strategyFn: "tokenStrategy", name: "java" },
15
- { exts: [".yaml", ".yml"], strategyFn: "wholeFileStrategy", name: "yaml" },
16
- { exts: [".txt"], strategyFn: "semanticStrategy", name: "text" },
17
- ];
18
- export const IGNORED_DIRS = new Set([
19
- "node_modules",
20
- ".git",
21
- "dist",
22
- "build",
23
- "coverage",
24
- ".cache",
25
- ".next",
26
- "out",
27
- ".turbo",
28
- ]);
29
- export async function collectExtensions(dir, found) {
30
- let entries;
31
- try {
32
- entries = await readdir(dir, { withFileTypes: true });
33
- }
34
- catch {
35
- return;
36
- }
37
- for (const entry of entries) {
38
- if (entry.isDirectory()) {
39
- if (!IGNORED_DIRS.has(entry.name) && !entry.name.startsWith(".")) {
40
- await collectExtensions(join(dir, entry.name), found);
41
- }
42
- }
43
- else {
44
- const ext = extname(entry.name).toLowerCase();
45
- if (ext)
46
- found.add(ext);
47
- }
48
- }
49
- }
50
- export async function detectFileExtensions(cwd) {
51
- const found = new Set();
52
- await collectExtensions(cwd, found);
53
- return EXT_GROUPS.filter((g) => g.exts.some((e) => found.has(e)));
54
- }
55
- //# sourceMappingURL=file-detect.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"file-detect.js","sourceRoot":"","sources":["../../src/cli/file-detect.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export declare function runInit(): Promise<void>;
2
- //# sourceMappingURL=init.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":"AAiPA,wBAAsB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAmP7C"}