@vivantel/virage-cli 0.1.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/bin/virage.d.ts +3 -0
- package/dist/bin/virage.d.ts.map +1 -0
- package/dist/bin/virage.js +366 -0
- package/dist/bin/virage.js.map +1 -0
- package/dist/cli/benchmark.d.ts +6 -0
- package/dist/cli/benchmark.d.ts.map +1 -0
- package/dist/cli/benchmark.js +26 -0
- package/dist/cli/benchmark.js.map +1 -0
- package/dist/cli/chunks-report.d.ts +2 -0
- package/dist/cli/chunks-report.d.ts.map +1 -0
- package/dist/cli/chunks-report.js +74 -0
- package/dist/cli/chunks-report.js.map +1 -0
- package/dist/cli/dashboard.d.ts +7 -0
- package/dist/cli/dashboard.d.ts.map +1 -0
- package/dist/cli/dashboard.js +164 -0
- package/dist/cli/dashboard.js.map +1 -0
- package/dist/cli/evaluate.d.ts +9 -0
- package/dist/cli/evaluate.d.ts.map +1 -0
- package/dist/cli/evaluate.js +64 -0
- package/dist/cli/evaluate.js.map +1 -0
- package/dist/cli/experiment.d.ts +13 -0
- package/dist/cli/experiment.d.ts.map +1 -0
- package/dist/cli/experiment.js +95 -0
- package/dist/cli/experiment.js.map +1 -0
- package/dist/cli/file-detect.d.ts +11 -0
- package/dist/cli/file-detect.d.ts.map +1 -0
- package/dist/cli/file-detect.js +46 -0
- package/dist/cli/file-detect.js.map +1 -0
- package/dist/cli/init.d.ts +2 -0
- package/dist/cli/init.d.ts.map +1 -0
- package/dist/cli/init.js +381 -0
- package/dist/cli/init.js.map +1 -0
- package/dist/cli/report.d.ts +2 -0
- package/dist/cli/report.d.ts.map +1 -0
- package/dist/cli/report.js +96 -0
- package/dist/cli/report.js.map +1 -0
- package/dist/cli/store-cmd.d.ts +10 -0
- package/dist/cli/store-cmd.d.ts.map +1 -0
- package/dist/cli/store-cmd.js +50 -0
- package/dist/cli/store-cmd.js.map +1 -0
- package/dist/cli/validate.d.ts +2 -0
- package/dist/cli/validate.d.ts.map +1 -0
- package/dist/cli/validate.js +72 -0
- package/dist/cli/validate.js.map +1 -0
- package/dist/cli/viz.d.ts +7 -0
- package/dist/cli/viz.d.ts.map +1 -0
- package/dist/cli/viz.js +163 -0
- package/dist/cli/viz.js.map +1 -0
- package/dist/dashboard-ui/assets/index-BD53Fj5e.js +40 -0
- package/dist/dashboard-ui/assets/index-Boh3NVMF.css +1 -0
- package/dist/dashboard-ui/index.html +13 -0
- package/dist/logger/consola-logger.d.ts +18 -0
- package/dist/logger/consola-logger.d.ts.map +1 -0
- package/dist/logger/consola-logger.js +76 -0
- package/dist/logger/consola-logger.js.map +1 -0
- package/dist/logger/index.d.ts +4 -0
- package/dist/logger/index.d.ts.map +1 -0
- package/dist/logger/index.js +6 -0
- package/dist/logger/index.js.map +1 -0
- package/dist/progress/progress-bar.d.ts +6 -0
- package/dist/progress/progress-bar.d.ts.map +1 -0
- package/dist/progress/progress-bar.js +23 -0
- package/dist/progress/progress-bar.js.map +1 -0
- package/package.json +75 -0
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { glob } from "glob";
|
|
2
|
+
import { loadConfig, GitTracker, ConfigError } from "@vivantel/virage-core";
|
|
3
|
+
import { detectFileExtensions } from "./file-detect.js";
|
|
4
|
+
export async function runValidate(configPath) {
|
|
5
|
+
const cwd = process.cwd();
|
|
6
|
+
console.log(`\nπ Validating RAG config: ${configPath}\n`);
|
|
7
|
+
let config;
|
|
8
|
+
try {
|
|
9
|
+
process.stdout.write("π¦ Loading config... ");
|
|
10
|
+
config = await loadConfig(configPath);
|
|
11
|
+
console.log("β
");
|
|
12
|
+
}
|
|
13
|
+
catch (err) {
|
|
14
|
+
console.log("β");
|
|
15
|
+
throw new ConfigError(`Failed to load config: ${err instanceof Error ? err.message : String(err)}`, {
|
|
16
|
+
suggestion: "Run `virage init` to generate a new config file.",
|
|
17
|
+
cause: err,
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
console.log("\nπ Scanning files...\n");
|
|
21
|
+
let hasWarnings = false;
|
|
22
|
+
for (const chunker of config.chunkers) {
|
|
23
|
+
const files = await glob(chunker.patterns, { nodir: true });
|
|
24
|
+
const unique = [...new Set(files)];
|
|
25
|
+
const patternsDisplay = chunker.patterns.join(", ");
|
|
26
|
+
console.log(` Chunker: ${chunker.name} (patterns: ${patternsDisplay})`);
|
|
27
|
+
if (unique.length === 0) {
|
|
28
|
+
console.log(` β οΈ No files matched β check your patterns\n`);
|
|
29
|
+
hasWarnings = true;
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
console.log(` β
Found ${unique.length} matching file(s)\n`);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
const gitTracker = new GitTracker(config.chunkers);
|
|
36
|
+
const allFiles = await gitTracker.getAllTrackedFiles();
|
|
37
|
+
console.log(` Total: ${allFiles.length} file(s) tracked across ${config.chunkers.length} chunker(s)`);
|
|
38
|
+
console.log("\nπ Checking vector store...");
|
|
39
|
+
try {
|
|
40
|
+
await config.vectorStore.initialize();
|
|
41
|
+
console.log(" β
Vector store connected");
|
|
42
|
+
}
|
|
43
|
+
catch {
|
|
44
|
+
console.log(" β οΈ Could not connect β check credentials");
|
|
45
|
+
hasWarnings = true;
|
|
46
|
+
}
|
|
47
|
+
console.log("\nπ Checking file type coverage...");
|
|
48
|
+
const detectedGroups = await detectFileExtensions(cwd);
|
|
49
|
+
if (detectedGroups.length === 0) {
|
|
50
|
+
console.log(" βΉοΈ No known file types detected in project");
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
const allPatterns = config.chunkers.flatMap((c) => c.patterns);
|
|
54
|
+
for (const group of detectedGroups) {
|
|
55
|
+
const covered = group.exts.some((ext) => allPatterns.some((p) => p.includes(`*${ext}`) || p.includes(`${ext}`)));
|
|
56
|
+
if (covered) {
|
|
57
|
+
console.log(` β
${group.name} (${group.exts.join(", ")}) β covered`);
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
console.log(` β οΈ ${group.name} (${group.exts.join(", ")}) β not covered by any chunker`);
|
|
61
|
+
hasWarnings = true;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
if (hasWarnings) {
|
|
66
|
+
console.log("\nβ οΈ Config loaded with warnings.");
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
console.log("\nβ
Config is valid!");
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=validate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/cli/validate.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"viz.d.ts","sourceRoot":"","sources":["../../src/cli/viz.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,GAAG,MAAM,CAAC;CAC7B;AA4DD,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,oBAAoB,GACzB,OAAO,CAAC,IAAI,CAAC,CAmDf"}
|
package/dist/cli/viz.js
ADDED
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
import { writeFile } from "fs/promises";
|
|
2
|
+
import { extname } from "path";
|
|
3
|
+
import { EmbeddingsDb } from "@vivantel/virage-core";
|
|
4
|
+
// ---------------------------------------------------------------------------
|
|
5
|
+
// Minimal PCA-based 2-D projection (no external deps)
|
|
6
|
+
// ---------------------------------------------------------------------------
|
|
7
|
+
function mean(vectors) {
|
|
8
|
+
const d = vectors[0].length;
|
|
9
|
+
const m = new Array(d).fill(0);
|
|
10
|
+
for (const v of vectors) {
|
|
11
|
+
for (let i = 0; i < d; i++)
|
|
12
|
+
m[i] += v[i];
|
|
13
|
+
}
|
|
14
|
+
return m.map((x) => x / vectors.length);
|
|
15
|
+
}
|
|
16
|
+
function subtract(v, m) {
|
|
17
|
+
return v.map((x, i) => x - m[i]);
|
|
18
|
+
}
|
|
19
|
+
function dot(a, b) {
|
|
20
|
+
let s = 0;
|
|
21
|
+
for (let i = 0; i < a.length; i++)
|
|
22
|
+
s += a[i] * b[i];
|
|
23
|
+
return s;
|
|
24
|
+
}
|
|
25
|
+
function normalize(v) {
|
|
26
|
+
const n = Math.sqrt(dot(v, v));
|
|
27
|
+
return n === 0 ? v : v.map((x) => x / n);
|
|
28
|
+
}
|
|
29
|
+
/** Power iteration to find the top-2 principal components. */
|
|
30
|
+
function pca2d(vectors, iterations = 100) {
|
|
31
|
+
const centered = vectors.map((v) => subtract(v, mean(vectors)));
|
|
32
|
+
const d = centered[0].length;
|
|
33
|
+
const powerIterate = (excludes) => {
|
|
34
|
+
let w = Array.from({ length: d }, () => Math.random() - 0.5);
|
|
35
|
+
for (let iter = 0; iter < iterations; iter++) {
|
|
36
|
+
// Compute A^T * A * w (covariance-like)
|
|
37
|
+
const Aw = new Array(d).fill(0);
|
|
38
|
+
for (const c of centered) {
|
|
39
|
+
const proj = dot(c, w);
|
|
40
|
+
for (let i = 0; i < d; i++)
|
|
41
|
+
Aw[i] += proj * c[i];
|
|
42
|
+
}
|
|
43
|
+
// Deflate by excluded components
|
|
44
|
+
for (const ex of excludes) {
|
|
45
|
+
const p = dot(Aw, ex);
|
|
46
|
+
for (let i = 0; i < d; i++)
|
|
47
|
+
Aw[i] -= p * ex[i];
|
|
48
|
+
}
|
|
49
|
+
w = normalize(Aw);
|
|
50
|
+
}
|
|
51
|
+
return w;
|
|
52
|
+
};
|
|
53
|
+
const pc1 = powerIterate([]);
|
|
54
|
+
const pc2 = powerIterate([pc1]);
|
|
55
|
+
return centered.map((c) => [dot(c, pc1), dot(c, pc2)]);
|
|
56
|
+
}
|
|
57
|
+
export async function runVizEmbeddings(opts) {
|
|
58
|
+
console.log(`π Reading embeddings from "${opts.dbPath}"...`);
|
|
59
|
+
const db = new EmbeddingsDb(opts.dbPath);
|
|
60
|
+
const chunks = db.getAll();
|
|
61
|
+
db.close();
|
|
62
|
+
if (chunks.length === 0) {
|
|
63
|
+
console.error("β No embeddings found.");
|
|
64
|
+
process.exit(1);
|
|
65
|
+
}
|
|
66
|
+
console.log(` Found ${chunks.length} embeddings`);
|
|
67
|
+
// Try umap-js if installed; fall back to PCA
|
|
68
|
+
let points;
|
|
69
|
+
if (opts.projection === "umap") {
|
|
70
|
+
try {
|
|
71
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
72
|
+
// @ts-ignore β umap-js is an optional peer dependency
|
|
73
|
+
const { UMAP } = (await import("umap-js"));
|
|
74
|
+
console.log("πΊοΈ Computing UMAP projection...");
|
|
75
|
+
const umap = new UMAP({ nComponents: 2, nNeighbors: 15, minDist: 0.1 });
|
|
76
|
+
const result = await umap.fitAsync(chunks.map((c) => c.embedding));
|
|
77
|
+
points = result.map((p) => [p[0], p[1]]);
|
|
78
|
+
}
|
|
79
|
+
catch {
|
|
80
|
+
console.log(" umap-js not installed β falling back to PCA projection");
|
|
81
|
+
points = pca2d(chunks.map((c) => c.embedding));
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
console.log("πΊοΈ Computing PCA projection...");
|
|
86
|
+
points = pca2d(chunks.map((c) => c.embedding));
|
|
87
|
+
}
|
|
88
|
+
// Build plot data
|
|
89
|
+
const plotData = chunks.map((c, i) => ({
|
|
90
|
+
x: points[i][0],
|
|
91
|
+
y: points[i][1],
|
|
92
|
+
label: c.sourceFile,
|
|
93
|
+
ext: extname(c.sourceFile) || "unknown",
|
|
94
|
+
preview: c.content.slice(0, 100).replace(/"/g, "'"),
|
|
95
|
+
}));
|
|
96
|
+
const html = buildHtml(plotData, opts.dbPath, opts.projection);
|
|
97
|
+
await writeFile(opts.output, html, "utf-8");
|
|
98
|
+
console.log(`β
Visualization saved to "${opts.output}"`);
|
|
99
|
+
}
|
|
100
|
+
function buildHtml(points, source, projection) {
|
|
101
|
+
const extensions = [...new Set(points.map((p) => p.ext))];
|
|
102
|
+
const colors = [
|
|
103
|
+
"#4e79a7",
|
|
104
|
+
"#f28e2b",
|
|
105
|
+
"#e15759",
|
|
106
|
+
"#76b7b2",
|
|
107
|
+
"#59a14f",
|
|
108
|
+
"#edc948",
|
|
109
|
+
"#b07aa1",
|
|
110
|
+
"#ff9da7",
|
|
111
|
+
"#9c755f",
|
|
112
|
+
"#bab0ac",
|
|
113
|
+
];
|
|
114
|
+
const colorMap = {};
|
|
115
|
+
extensions.forEach((ext, i) => {
|
|
116
|
+
colorMap[ext] = colors[i % colors.length];
|
|
117
|
+
});
|
|
118
|
+
const traces = extensions.map((ext) => {
|
|
119
|
+
const pts = points.filter((p) => p.ext === ext);
|
|
120
|
+
return {
|
|
121
|
+
x: pts.map((p) => p.x),
|
|
122
|
+
y: pts.map((p) => p.y),
|
|
123
|
+
text: pts.map((p) => `${p.label}<br>${p.preview}`),
|
|
124
|
+
mode: "markers",
|
|
125
|
+
type: "scatter",
|
|
126
|
+
name: ext,
|
|
127
|
+
marker: { color: colorMap[ext], size: 6, opacity: 0.7 },
|
|
128
|
+
};
|
|
129
|
+
});
|
|
130
|
+
const dataJson = JSON.stringify(traces);
|
|
131
|
+
const title = `Embedding Space β ${projection.toUpperCase()} (${points.length} chunks from ${source})`;
|
|
132
|
+
return `<!DOCTYPE html>
|
|
133
|
+
<html>
|
|
134
|
+
<head>
|
|
135
|
+
<meta charset="utf-8">
|
|
136
|
+
<title>RAG Embedding Visualization</title>
|
|
137
|
+
<script src="https://cdn.plot.ly/plotly-2.32.0.min.js"></script>
|
|
138
|
+
<style>
|
|
139
|
+
body { margin: 0; font-family: sans-serif; background: #1a1a2e; color: #eee; }
|
|
140
|
+
#chart { width: 100vw; height: 100vh; }
|
|
141
|
+
h1 { text-align: center; font-size: 14px; padding: 8px; margin: 0; }
|
|
142
|
+
</style>
|
|
143
|
+
</head>
|
|
144
|
+
<body>
|
|
145
|
+
<div id="chart"></div>
|
|
146
|
+
<script>
|
|
147
|
+
const data = ${dataJson};
|
|
148
|
+
const layout = {
|
|
149
|
+
title: ${JSON.stringify(title)},
|
|
150
|
+
paper_bgcolor: '#1a1a2e',
|
|
151
|
+
plot_bgcolor: '#16213e',
|
|
152
|
+
font: { color: '#eee' },
|
|
153
|
+
legend: { bgcolor: 'rgba(0,0,0,0.5)' },
|
|
154
|
+
xaxis: { title: 'Component 1', gridcolor: '#333' },
|
|
155
|
+
yaxis: { title: 'Component 2', gridcolor: '#333' },
|
|
156
|
+
hovermode: 'closest',
|
|
157
|
+
};
|
|
158
|
+
Plotly.newPlot('chart', data, layout, { responsive: true });
|
|
159
|
+
</script>
|
|
160
|
+
</body>
|
|
161
|
+
</html>`;
|
|
162
|
+
}
|
|
163
|
+
//# sourceMappingURL=viz.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"viz.js","sourceRoot":"","sources":["../../src/cli/viz.ts"],"names":[],"mappings":"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"}
|