@vivantel/virage-cli 0.1.18 → 0.1.21

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.
@@ -0,0 +1,244 @@
1
+ import { readFile, writeFile } from "fs/promises";
2
+ import { existsSync } from "fs";
3
+ import { resolve } from "path";
4
+ import { input, confirm, select } from "@inquirer/prompts";
5
+ import { VirageDb, defaultVirageDb, TelemetryFlusher, DEFAULT_TELEMETRY_CONFIG, } from "@vivantel/virage-core";
6
+ const CONFIG_FILE = "./virage.config.json";
7
+ async function readConfig() {
8
+ try {
9
+ return JSON.parse(await readFile(CONFIG_FILE, "utf-8"));
10
+ }
11
+ catch {
12
+ return {};
13
+ }
14
+ }
15
+ async function writeConfig(cfg) {
16
+ await writeFile(CONFIG_FILE, JSON.stringify(cfg, null, 2) + "\n", "utf-8");
17
+ }
18
+ function getTelemetryConfig(cfg) {
19
+ const t = cfg["telemetry"];
20
+ return {
21
+ ...DEFAULT_TELEMETRY_CONFIG,
22
+ ...t,
23
+ tiers: {
24
+ ...DEFAULT_TELEMETRY_CONFIG.tiers,
25
+ ...(t?.tiers ?? {}),
26
+ explicit_feedback: {
27
+ ...DEFAULT_TELEMETRY_CONFIG.tiers.explicit_feedback,
28
+ ...(t?.tiers?.explicit_feedback ?? {}),
29
+ },
30
+ },
31
+ privacy: {
32
+ ...DEFAULT_TELEMETRY_CONFIG.privacy,
33
+ ...(t?.privacy ?? {}),
34
+ },
35
+ };
36
+ }
37
+ export async function runTelemetryStatus() {
38
+ const cfg = await readConfig();
39
+ const tel = getTelemetryConfig(cfg);
40
+ console.log("\nšŸ“Š Telemetry Status");
41
+ console.log("─".repeat(40));
42
+ console.log(` Enabled : ${tel.enabled ? "āœ… yes" : "āŒ no"}`);
43
+ console.log(` Tier 1 : ${tel.tiers.implicit ? "āœ… on" : "āŒ off"} (search quality signals)`);
44
+ console.log(` Tier 2 : ${tel.tiers.explicit_feedback.enabled ? "āœ… on" : "āŒ off"} (rag_feedback tool)`);
45
+ if (tel.endpoint) {
46
+ console.log(` Endpoint : ${tel.endpoint}`);
47
+ // Quick health check
48
+ try {
49
+ const controller = new AbortController();
50
+ const timer = setTimeout(() => controller.abort(), 5000);
51
+ const res = await fetch(tel.endpoint, {
52
+ method: "HEAD",
53
+ signal: controller.signal,
54
+ });
55
+ clearTimeout(timer);
56
+ console.log(` Endpoint : ${res.ok ? "āœ… reachable" : "āš ļø returned " + String(res.status)}`);
57
+ }
58
+ catch {
59
+ console.log(" Endpoint : āš ļø unreachable (5s timeout)");
60
+ }
61
+ }
62
+ else {
63
+ console.log(" Endpoint : not configured (local-only)");
64
+ }
65
+ const dbPath = defaultVirageDb();
66
+ if (existsSync(dbPath)) {
67
+ try {
68
+ const db = new VirageDb(dbPath);
69
+ const bufferBytes = db.getTelemetryBufferSizeBytes();
70
+ const unflushed = db.getUnflushedSessions().length;
71
+ db.close();
72
+ console.log(` Buffer size : ~${(bufferBytes / 1024).toFixed(1)} KB`);
73
+ console.log(` Unflushed : ${unflushed} session(s)`);
74
+ }
75
+ catch {
76
+ console.log(" Buffer size : (could not open DB)");
77
+ }
78
+ }
79
+ else {
80
+ console.log(" Buffer size : (no DB yet)");
81
+ }
82
+ console.log("─".repeat(40));
83
+ }
84
+ export async function runTelemetryOn() {
85
+ const cfg = await readConfig();
86
+ const existing = cfg["telemetry"] ?? {};
87
+ cfg["telemetry"] = { ...existing, enabled: true };
88
+ await writeConfig(cfg);
89
+ console.log("āœ… Telemetry enabled. Run 'virage telemetry status' to verify.");
90
+ }
91
+ export async function runTelemetryOff(opts) {
92
+ const cfg = await readConfig();
93
+ const existing = cfg["telemetry"] ?? {};
94
+ if (opts.tiers === "explicit_feedback") {
95
+ const tiers = existing["tiers"] ?? {};
96
+ const ef = tiers["explicit_feedback"] ?? {};
97
+ cfg["telemetry"] = {
98
+ ...existing,
99
+ tiers: {
100
+ ...tiers,
101
+ explicit_feedback: { ...ef, enabled: false },
102
+ },
103
+ };
104
+ await writeConfig(cfg);
105
+ console.log("āœ… Tier 2 (rag_feedback) disabled.");
106
+ return;
107
+ }
108
+ cfg["telemetry"] = { ...existing, enabled: false };
109
+ await writeConfig(cfg);
110
+ // Clear buffered telemetry
111
+ const dbPath = defaultVirageDb();
112
+ if (existsSync(dbPath)) {
113
+ try {
114
+ const db = new VirageDb(dbPath);
115
+ db.clearTelemetryData();
116
+ db.close();
117
+ console.log("šŸ—‘ļø Local telemetry buffer cleared.");
118
+ }
119
+ catch {
120
+ console.warn("āš ļø Could not clear telemetry buffer (DB open elsewhere?)");
121
+ }
122
+ }
123
+ console.log("āœ… Telemetry disabled.");
124
+ }
125
+ export async function runTelemetryInit() {
126
+ const cfg = await readConfig();
127
+ const existing = getTelemetryConfig(cfg);
128
+ console.log("\nšŸ”§ Telemetry setup\n");
129
+ const endpoint = await input({
130
+ message: "Telemetry endpoint URL (leave blank for local-only):",
131
+ default: existing.endpoint ?? "",
132
+ });
133
+ let apiKey;
134
+ if (endpoint.trim()) {
135
+ apiKey = await input({
136
+ message: "API key (or $ENV_VAR name, leave blank for none):",
137
+ default: existing.api_key ?? "",
138
+ });
139
+ }
140
+ const enableTier2 = await confirm({
141
+ message: "Enable Tier 2 (rag_feedback tool, ~3% token budget)?",
142
+ default: existing.tiers.explicit_feedback.enabled,
143
+ });
144
+ let samplingRate = existing.tiers.explicit_feedback.sampling_rate;
145
+ if (enableTier2) {
146
+ const rateStr = await select({
147
+ message: "Feedback sampling rate:",
148
+ choices: [
149
+ { name: "10% of searches", value: "0.1" },
150
+ { name: "20% of searches (default)", value: "0.2" },
151
+ { name: "50% of searches", value: "0.5" },
152
+ ],
153
+ default: String(samplingRate) || "0.2",
154
+ });
155
+ samplingRate = parseFloat(rateStr);
156
+ }
157
+ const updated = {
158
+ ...existing,
159
+ enabled: true,
160
+ endpoint: endpoint.trim() || undefined,
161
+ api_key: apiKey?.trim() || undefined,
162
+ tiers: {
163
+ ...existing.tiers,
164
+ explicit_feedback: {
165
+ ...existing.tiers.explicit_feedback,
166
+ enabled: enableTier2,
167
+ sampling_rate: samplingRate,
168
+ },
169
+ },
170
+ };
171
+ cfg["telemetry"] = updated;
172
+ await writeConfig(cfg);
173
+ console.log(`\nāœ… Telemetry configured in ${resolve(CONFIG_FILE)}`);
174
+ if (enableTier2) {
175
+ console.log("\nā„¹ļø Tier 2 disclosure: Claude will call rag_feedback on " +
176
+ `~${Math.round(samplingRate * 100)}% of searches.\n` +
177
+ " Always-on for anomalies (0 results or >10 results).\n" +
178
+ ` Capped at 20 calls/session (~${updated.tiers.explicit_feedback.max_token_budget_percent}% of token budget).\n`);
179
+ }
180
+ }
181
+ export async function runTelemetryPreview() {
182
+ const dbPath = defaultVirageDb();
183
+ if (!existsSync(dbPath)) {
184
+ console.log("ā„¹ļø No virage.db found. Run the MCP server first.");
185
+ return;
186
+ }
187
+ const cfg = await readConfig();
188
+ const tel = getTelemetryConfig(cfg);
189
+ const db = new VirageDb(dbPath);
190
+ try {
191
+ const unflushed = db.getUnflushedSessions();
192
+ if (unflushed.length === 0) {
193
+ console.log("ā„¹ļø No unflushed sessions to preview.");
194
+ return;
195
+ }
196
+ const latest = unflushed[unflushed.length - 1];
197
+ const flusher = new TelemetryFlusher(db, tel);
198
+ const payload = flusher.buildSessionSummaryPayload(latest.id);
199
+ console.log(JSON.stringify(payload, null, 2));
200
+ }
201
+ finally {
202
+ db.close();
203
+ }
204
+ }
205
+ export async function runTelemetryFlush(opts) {
206
+ if (opts.dryRun) {
207
+ await runTelemetryPreview();
208
+ return;
209
+ }
210
+ const dbPath = defaultVirageDb();
211
+ if (!existsSync(dbPath)) {
212
+ console.log("ā„¹ļø No virage.db found. Nothing to flush.");
213
+ return;
214
+ }
215
+ const cfg = await readConfig();
216
+ const tel = getTelemetryConfig(cfg);
217
+ if (!tel.endpoint) {
218
+ console.log("ā„¹ļø No endpoint configured. Use 'virage telemetry init' to set one.");
219
+ return;
220
+ }
221
+ const db = new VirageDb(dbPath);
222
+ try {
223
+ const unflushed = db.getUnflushedSessions();
224
+ if (unflushed.length === 0) {
225
+ console.log("ā„¹ļø Nothing to flush.");
226
+ return;
227
+ }
228
+ const flusher = new TelemetryFlusher(db, tel);
229
+ let succeeded = 0;
230
+ for (const session of unflushed) {
231
+ const ok = await flusher.flush(session.id);
232
+ if (ok)
233
+ succeeded++;
234
+ }
235
+ console.log(`āœ… Flushed ${succeeded}/${unflushed.length} session(s).`);
236
+ if (succeeded < unflushed.length) {
237
+ console.warn(`āš ļø ${unflushed.length - succeeded} session(s) failed — will retry on next MCP start.`);
238
+ }
239
+ }
240
+ finally {
241
+ db.close();
242
+ }
243
+ }
244
+ //# sourceMappingURL=telemetry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"telemetry.js","sourceRoot":"","sources":["../../src/cli/telemetry.ts"],"names":[],"mappings":"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"}
package/dist/cli/viz.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { writeFile } from "fs/promises";
2
2
  import { extname } from "path";
3
- import { EmbeddingsDb } from "@vivantel/virage-core";
3
+ import { VirageDb } from "@vivantel/virage-core";
4
4
  // ---------------------------------------------------------------------------
5
5
  // Minimal PCA-based 2-D projection (no external deps)
6
6
  // ---------------------------------------------------------------------------
@@ -56,7 +56,7 @@ function pca2d(vectors, iterations = 100) {
56
56
  }
57
57
  export async function runVizEmbeddings(opts) {
58
58
  console.log(`šŸ“‚ Reading embeddings from "${opts.dbPath}"...`);
59
- const db = new EmbeddingsDb(opts.dbPath);
59
+ const db = new VirageDb(opts.dbPath);
60
60
  const chunks = db.getAll();
61
61
  db.close();
62
62
  if (chunks.length === 0) {
@@ -1 +1 @@
1
- {"version":3,"file":"viz.js","sourceRoot":"","sources":["../../src/cli/viz.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/B,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAQrD,8EAA8E;AAC9E,sDAAsD;AACtD,8EAA8E;AAE9E,SAAS,IAAI,CAAC,OAAmB;IAC/B,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IAC5B,MAAM,CAAC,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAa,CAAC;IAC3C,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;YAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3C,CAAC;IACD,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;AAC1C,CAAC;AAED,SAAS,QAAQ,CAAC,CAAW,EAAE,CAAW;IACxC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACnC,CAAC;AAED,SAAS,GAAG,CAAC,CAAW,EAAE,CAAW;IACnC,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE;QAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACpD,OAAO,CAAC,CAAC;AACX,CAAC;AAED,SAAS,SAAS,CAAC,CAAW;IAC5B,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC/B,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAC3C,CAAC;AAED,8DAA8D;AAC9D,SAAS,KAAK,CAAC,OAAmB,EAAE,UAAU,GAAG,GAAG;IAClD,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAChE,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IAE7B,MAAM,YAAY,GAAG,CAAC,QAAoB,EAAY,EAAE;QACtD,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC;QAC7D,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,UAAU,EAAE,IAAI,EAAE,EAAE,CAAC;YAC7C,wCAAwC;YACxC,MAAM,EAAE,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAa,CAAC;YAC5C,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;gBACzB,MAAM,IAAI,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBACvB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;oBAAE,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YACnD,CAAC;YACD,iCAAiC;YACjC,KAAK,MAAM,EAAE,IAAI,QAAQ,EAAE,CAAC;gBAC1B,MAAM,CAAC,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBACtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;oBAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;YACjD,CAAC;YACD,CAAC,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC;QACpB,CAAC;QACD,OAAO,CAAC,CAAC;IACX,CAAC,CAAC;IAEF,MAAM,GAAG,GAAG,YAAY,CAAC,EAAE,CAAC,CAAC;IAC7B,MAAM,GAAG,GAAG,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAEhC,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;AACzD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,IAA0B;IAE1B,OAAO,CAAC,GAAG,CAAC,+BAA+B,IAAI,CAAC,MAAM,MAAM,CAAC,CAAC;IAE9D,MAAM,EAAE,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACzC,MAAM,MAAM,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC;IAC3B,EAAE,CAAC,KAAK,EAAE,CAAC;IAEX,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;QACxC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,YAAY,MAAM,CAAC,MAAM,aAAa,CAAC,CAAC;IAEpD,6CAA6C;IAC7C,IAAI,MAA+B,CAAC;IAEpC,IAAI,IAAI,CAAC,UAAU,KAAK,MAAM,EAAE,CAAC;QAC/B,IAAI,CAAC;YACH,6DAA6D;YAC7D,sDAAsD;YACtD,MAAM,EAAE,IAAI,EAAE,GAAG,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,CAIxC,CAAC;YACF,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;YACjD,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;YACxE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;YACnE,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAW,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAqB,CAAC,CAAC;QACzE,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,GAAG,CAAC,2DAA2D,CAAC,CAAC;YACzE,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;QACjD,CAAC;IACH,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;QAChD,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;IACjD,CAAC;IAED,kBAAkB;IAClB,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QACrC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACf,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACf,KAAK,EAAE,CAAC,CAAC,UAAU;QACnB,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,SAAS;QACvC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC;KACpD,CAAC,CAAC,CAAC;IAEJ,MAAM,IAAI,GAAG,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;IAC/D,MAAM,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAC5C,OAAO,CAAC,GAAG,CAAC,6BAA6B,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;AAC3D,CAAC;AAUD,SAAS,SAAS,CAChB,MAAmB,EACnB,MAAc,EACd,UAAkB;IAElB,MAAM,UAAU,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC1D,MAAM,MAAM,GAAG;QACb,SAAS;QACT,SAAS;QACT,SAAS;QACT,SAAS;QACT,SAAS;QACT,SAAS;QACT,SAAS;QACT,SAAS;QACT,SAAS;QACT,SAAS;KACV,CAAC;IACF,MAAM,QAAQ,GAA2B,EAAE,CAAC;IAC5C,UAAU,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;QAC5B,QAAQ,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;QACpC,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;QAChD,OAAO;YACL,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YACtB,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YACtB,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC;YAClD,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,GAAG;YACT,MAAM,EAAE,EAAE,KAAK,EAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE;SACxD,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IACxC,MAAM,KAAK,GAAG,qBAAqB,UAAU,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC,MAAM,gBAAgB,MAAM,GAAG,CAAC;IAEvG,OAAO;;;;;;;;;;;;;;;mBAeU,QAAQ;;eAEZ,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;;;;;;;;;;;;QAY5B,CAAC;AACT,CAAC"}
1
+ {"version":3,"file":"viz.js","sourceRoot":"","sources":["../../src/cli/viz.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ body{color:#eee;background:#1a1a2e;margin:0;padding:0;font-family:monospace}.layout{min-height:100vh;display:flex}.sidebar{background:#0f1b2d;border-right:1px solid #1e3a5f;flex-direction:column;gap:4px;width:160px;min-width:160px;padding:16px 0;display:flex}.sidebar-logo{color:#7ec8e3;border-bottom:1px solid #1e3a5f;margin-bottom:8px;padding:4px 16px 12px;font-size:1.2em;font-weight:700}.sidebar a{color:#aaa;border-left:3px solid #0000;padding:8px 16px;text-decoration:none;display:block}.sidebar a:hover{color:#eee;background:#16213e}.sidebar a.active{color:#7ec8e3;background:#16213e;border-left-color:#7ec8e3}.main-content{flex:1;max-width:1000px;padding:24px 32px;overflow-y:auto}.container{max-width:900px}h1{color:#7ec8e3}h2{color:#7ec8e3;margin-top:0}.card{background:#16213e;border-radius:8px;margin:12px 0;padding:16px}.card.error{border-left:4px solid #ff6b6b}.card.warning{color:#f5a623;border-left:4px solid #f5a623}.metrics{flex-wrap:wrap;gap:8px;display:flex}.metric{margin:8px 16px;display:inline-block}.metric .value{color:#7ec8e3;font-size:2em}.metric .label{color:#888;font-size:.8em}.bar{background:#0f3460;border-radius:4px;height:16px;margin:4px 0;position:relative}.bar-fill{background:#7ec8e3;border-radius:4px;height:100%}.anomaly{color:#ff6b6b}table{border-collapse:collapse;width:100%}td,th{text-align:left;border-bottom:1px solid #333;padding:6px 12px}.project-switcher{background:#16213e;border-radius:8px;flex-direction:column;gap:8px;margin-bottom:4px;padding:12px 16px;display:flex}.project-header-row{align-items:center;gap:10px;display:flex}.project-current{color:#7ec8e3;font-size:1.1em;font-weight:700}.project-dropdown-toggle{color:#7ec8e3;cursor:pointer;background:0 0;border:1px solid #0f3460;border-radius:4px;padding:3px 10px;font-family:monospace;font-size:.85em}.project-dropdown-toggle:hover{background:#0f3460}.project-list{border:1px solid #0f3460;border-radius:4px;margin:0;padding:0;list-style:none;overflow:hidden}.project-list li{cursor:pointer;justify-content:space-between;align-items:center;padding:6px 12px;display:flex}.project-list li:hover{background:#0f3460}.project-list li.active{color:#7ec8e3;cursor:default;background:#0f3460}.project-list .project-path{color:#888;font-size:.75em}.project-add-form{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.project-add-form input{color:#eee;background:#0f3460;border:1px solid #333;border-radius:4px;flex:1;min-width:200px;padding:5px 10px;font-family:monospace;font-size:.9em}.project-add-form input:focus{border-color:#7ec8e3;outline:none}.project-add-form button{color:#7ec8e3;cursor:pointer;background:#0f3460;border:1px solid #7ec8e3;border-radius:4px;padding:5px 14px;font-family:monospace}.project-add-form button:hover{color:#1a1a2e;background:#7ec8e3}.project-add-error{color:#ff6b6b;width:100%;font-size:.85em}.toolbar{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:12px;display:flex}button,select,input[type=text],input[type=range]{font-family:monospace}button{color:#7ec8e3;cursor:pointer;background:#0f3460;border:1px solid #7ec8e3;border-radius:4px;padding:5px 14px}button:hover:not(:disabled){color:#1a1a2e;background:#7ec8e3}button:disabled{opacity:.5;cursor:not-allowed}.btn-danger{color:#ff6b6b;border-color:#ff6b6b}.btn-danger:hover:not(:disabled){color:#1a1a2e;background:#ff6b6b}.btn-sm{padding:2px 8px;font-size:.85em}select{color:#eee;background:#0f3460;border:1px solid #333;border-radius:4px;padding:5px 10px}.confirm-inline{align-items:center;gap:4px;display:flex}.chunk-table{border-collapse:collapse;width:100%;font-size:.9em}.chunk-table th{color:#7ec8e3;border-bottom:2px solid #1e3a5f;padding:6px 10px}.chunk-table td{vertical-align:top;border-bottom:1px solid #1e2540;padding:5px 10px}.source-file{color:#7ec8e3;white-space:nowrap;font-size:.85em}.content-preview{color:#ccc}.hash{color:#555;white-space:nowrap;font-size:.8em}.search-form{margin-bottom:16px}.search-input{color:#eee;box-sizing:border-box;background:#0f3460;border:1px solid #333;border-radius:4px;width:100%;margin-bottom:8px;padding:8px 12px;font-size:1em}.search-input:focus{border-color:#7ec8e3;outline:none}.search-controls{align-items:center;gap:12px;display:flex}.search-results{flex-direction:column;gap:10px;margin-top:12px;display:flex}.search-result-card{cursor:default}.result-header{justify-content:space-between;margin-bottom:6px;display:flex}.source-badge{color:#7ec8e3;background:#0f3460;border-radius:4px;padding:2px 8px;font-size:.8em}.similarity-badge{color:#7ec87e;background:#1a3a1a;border-radius:4px;padding:2px 8px;font-size:.8em}.result-content{color:#ccc;white-space:pre-wrap;margin:0;font-size:.9em}.pipeline-controls{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:12px;display:flex}.pipeline-log{white-space:pre-wrap;color:#7ec8e3;background:#0a0e1a;border:1px solid #1e3a5f;border-radius:6px;min-height:240px;max-height:480px;padding:14px;font-size:.9em;line-height:1.5;overflow-y:auto}.status-badge{border-radius:4px;padding:3px 10px;font-size:.85em;font-weight:700}.status-disconnected{color:#888;background:#222}.status-connecting{color:#ac8;background:#1a2a10}.status-connected{color:#7ec87e;background:#0a2a10}.status-error{color:#ff6b6b;background:#2a0a0a}.experiment-table{border-collapse:collapse;width:100%;font-size:.9em}.experiment-table th{color:#7ec8e3;border-bottom:2px solid #1e3a5f;padding:6px 10px}.experiment-table td{vertical-align:middle;border-bottom:1px solid #1e2540;padding:5px 10px}.experiment-table .expanded-row td{background:#111a2e}.row-actions{gap:4px;display:flex}.experiment-detail{margin:4px 0 8px;font-size:.9em}.experiment-detail pre{background:#0a0e1a;border-radius:4px;padding:10px;overflow-x:auto}.compare-result table{font-size:.9em}.compare-result td{padding:4px 10px}.badge{border-radius:4px;padding:2px 8px;font-size:.85em;font-weight:700}.badge-accept{color:#7ec87e;background:#0a2a10}.badge-reject{color:#ff6b6b;background:#2a0a0a}.badge-inconclusive{color:#cc6;background:#2a2a0a}