claude-transcript-viewer 1.1.0 → 1.2.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/embeddings/server-manager.d.ts +105 -0
- package/dist/embeddings/server-manager.js +364 -0
- package/dist/embeddings/server-manager.js.map +1 -0
- package/dist/server.js +69 -8
- package/dist/server.js.map +1 -1
- package/package.json +4 -3
- package/python/embed_server.py +272 -0
- package/python/requirements.txt +8 -0
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Embedding Server Manager
|
|
3
|
+
*
|
|
4
|
+
* Manages the MLX Qwen3 embedding server lifecycle on Apple Silicon.
|
|
5
|
+
* Automatically sets up Python venv, installs dependencies, and spawns the server.
|
|
6
|
+
* Falls back gracefully on non-Apple systems or setup failures.
|
|
7
|
+
*/
|
|
8
|
+
export interface ServerManagerOptions {
|
|
9
|
+
port?: number;
|
|
10
|
+
modelName?: string;
|
|
11
|
+
verbose?: boolean;
|
|
12
|
+
dataDir?: string;
|
|
13
|
+
}
|
|
14
|
+
export interface ServerStatus {
|
|
15
|
+
running: boolean;
|
|
16
|
+
healthy: boolean;
|
|
17
|
+
port?: number;
|
|
18
|
+
model?: string;
|
|
19
|
+
dim?: number;
|
|
20
|
+
error?: string;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Check if running on Apple Silicon
|
|
24
|
+
*/
|
|
25
|
+
export declare function isAppleSilicon(): boolean;
|
|
26
|
+
/**
|
|
27
|
+
* Check if running in CI environment
|
|
28
|
+
*/
|
|
29
|
+
export declare function isCI(): boolean;
|
|
30
|
+
/**
|
|
31
|
+
* Manages the embedding server subprocess
|
|
32
|
+
*/
|
|
33
|
+
export declare class EmbeddingServerManager {
|
|
34
|
+
private process;
|
|
35
|
+
private port;
|
|
36
|
+
private modelName;
|
|
37
|
+
private verbose;
|
|
38
|
+
private dataDir;
|
|
39
|
+
private venvPath;
|
|
40
|
+
private pythonPath;
|
|
41
|
+
private healthCheckTimer;
|
|
42
|
+
private _status;
|
|
43
|
+
constructor(options?: ServerManagerOptions);
|
|
44
|
+
get status(): ServerStatus;
|
|
45
|
+
get url(): string;
|
|
46
|
+
/**
|
|
47
|
+
* Check if the system supports MLX embeddings
|
|
48
|
+
*/
|
|
49
|
+
canRun(): {
|
|
50
|
+
supported: boolean;
|
|
51
|
+
reason?: string;
|
|
52
|
+
};
|
|
53
|
+
/**
|
|
54
|
+
* Set up the Python virtual environment and install dependencies
|
|
55
|
+
*/
|
|
56
|
+
setup(): Promise<{
|
|
57
|
+
success: boolean;
|
|
58
|
+
error?: string;
|
|
59
|
+
}>;
|
|
60
|
+
/**
|
|
61
|
+
* Start the embedding server
|
|
62
|
+
*/
|
|
63
|
+
start(): Promise<{
|
|
64
|
+
success: boolean;
|
|
65
|
+
error?: string;
|
|
66
|
+
}>;
|
|
67
|
+
/**
|
|
68
|
+
* Stop the embedding server
|
|
69
|
+
*/
|
|
70
|
+
stop(): void;
|
|
71
|
+
/**
|
|
72
|
+
* Check server health
|
|
73
|
+
*/
|
|
74
|
+
checkHealth(): Promise<boolean>;
|
|
75
|
+
/**
|
|
76
|
+
* Wait for server to become healthy
|
|
77
|
+
*/
|
|
78
|
+
private waitForHealthy;
|
|
79
|
+
/**
|
|
80
|
+
* Start periodic health checks
|
|
81
|
+
*/
|
|
82
|
+
private startHealthCheck;
|
|
83
|
+
/**
|
|
84
|
+
* Stop health check monitoring
|
|
85
|
+
*/
|
|
86
|
+
private stopHealthCheck;
|
|
87
|
+
/**
|
|
88
|
+
* Get path to the Python server script
|
|
89
|
+
*/
|
|
90
|
+
private getServerScriptPath;
|
|
91
|
+
/**
|
|
92
|
+
* Get path to requirements.txt
|
|
93
|
+
*/
|
|
94
|
+
private getRequirementsPath;
|
|
95
|
+
/**
|
|
96
|
+
* Log message if verbose mode is enabled
|
|
97
|
+
*/
|
|
98
|
+
private log;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Create and optionally start an embedding server manager
|
|
102
|
+
*/
|
|
103
|
+
export declare function createEmbeddingServer(options?: ServerManagerOptions & {
|
|
104
|
+
autoStart?: boolean;
|
|
105
|
+
}): Promise<EmbeddingServerManager | null>;
|
|
@@ -0,0 +1,364 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Embedding Server Manager
|
|
3
|
+
*
|
|
4
|
+
* Manages the MLX Qwen3 embedding server lifecycle on Apple Silicon.
|
|
5
|
+
* Automatically sets up Python venv, installs dependencies, and spawns the server.
|
|
6
|
+
* Falls back gracefully on non-Apple systems or setup failures.
|
|
7
|
+
*/
|
|
8
|
+
import { spawn, spawnSync } from "child_process";
|
|
9
|
+
import { existsSync, mkdirSync } from "fs";
|
|
10
|
+
import { join, dirname } from "path";
|
|
11
|
+
import { fileURLToPath } from "url";
|
|
12
|
+
import { platform, arch } from "os";
|
|
13
|
+
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
14
|
+
// Server configuration
|
|
15
|
+
const DEFAULT_PORT = 8100; // Use different port to avoid conflicts
|
|
16
|
+
const HEALTH_CHECK_INTERVAL = 5000;
|
|
17
|
+
const STARTUP_TIMEOUT = 120000; // 2 minutes for model download on first run
|
|
18
|
+
const VENV_DIR = ".embedding-venv";
|
|
19
|
+
/**
|
|
20
|
+
* Check if running on Apple Silicon
|
|
21
|
+
*/
|
|
22
|
+
export function isAppleSilicon() {
|
|
23
|
+
return platform() === "darwin" && arch() === "arm64";
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Check if running in CI environment
|
|
27
|
+
*/
|
|
28
|
+
export function isCI() {
|
|
29
|
+
return (process.env.CI === "true" ||
|
|
30
|
+
process.env.GITHUB_ACTIONS === "true" ||
|
|
31
|
+
process.env.GITLAB_CI === "true" ||
|
|
32
|
+
process.env.CIRCLECI === "true");
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Check if Python 3 is available and return its path
|
|
36
|
+
*/
|
|
37
|
+
function getPythonPath() {
|
|
38
|
+
const candidates = ["python3", "python"];
|
|
39
|
+
for (const cmd of candidates) {
|
|
40
|
+
const result = spawnSync(cmd, ["--version"], {
|
|
41
|
+
encoding: "utf-8",
|
|
42
|
+
timeout: 5000,
|
|
43
|
+
});
|
|
44
|
+
if (result.status === 0) {
|
|
45
|
+
const version = (result.stdout || result.stderr || "").trim();
|
|
46
|
+
if (version.includes("Python 3")) {
|
|
47
|
+
return cmd;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
return null;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Manages the embedding server subprocess
|
|
55
|
+
*/
|
|
56
|
+
export class EmbeddingServerManager {
|
|
57
|
+
process = null;
|
|
58
|
+
port;
|
|
59
|
+
modelName;
|
|
60
|
+
verbose;
|
|
61
|
+
dataDir;
|
|
62
|
+
venvPath;
|
|
63
|
+
pythonPath = null;
|
|
64
|
+
healthCheckTimer = null;
|
|
65
|
+
_status = { running: false, healthy: false };
|
|
66
|
+
constructor(options = {}) {
|
|
67
|
+
this.port = options.port ?? DEFAULT_PORT;
|
|
68
|
+
this.modelName =
|
|
69
|
+
options.modelName ?? "mlx-community/Qwen3-Embedding-0.6B-4bit-DWQ";
|
|
70
|
+
this.verbose = options.verbose ?? false;
|
|
71
|
+
this.dataDir =
|
|
72
|
+
options.dataDir ??
|
|
73
|
+
join(process.env.HOME ?? "~", ".claude-transcript-viewer");
|
|
74
|
+
this.venvPath = join(this.dataDir, VENV_DIR);
|
|
75
|
+
}
|
|
76
|
+
get status() {
|
|
77
|
+
return { ...this._status };
|
|
78
|
+
}
|
|
79
|
+
get url() {
|
|
80
|
+
return `http://127.0.0.1:${this.port}`;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Check if the system supports MLX embeddings
|
|
84
|
+
*/
|
|
85
|
+
canRun() {
|
|
86
|
+
if (!isAppleSilicon()) {
|
|
87
|
+
return {
|
|
88
|
+
supported: false,
|
|
89
|
+
reason: "MLX embeddings require Apple Silicon (M1/M2/M3/M4)",
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
this.pythonPath = getPythonPath();
|
|
93
|
+
if (!this.pythonPath) {
|
|
94
|
+
return {
|
|
95
|
+
supported: false,
|
|
96
|
+
reason: "Python 3 not found. Install Python 3.9+ to enable embeddings.",
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
return { supported: true };
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Set up the Python virtual environment and install dependencies
|
|
103
|
+
*/
|
|
104
|
+
async setup() {
|
|
105
|
+
const check = this.canRun();
|
|
106
|
+
if (!check.supported) {
|
|
107
|
+
return { success: false, error: check.reason };
|
|
108
|
+
}
|
|
109
|
+
try {
|
|
110
|
+
// Create data directory
|
|
111
|
+
if (!existsSync(this.dataDir)) {
|
|
112
|
+
mkdirSync(this.dataDir, { recursive: true });
|
|
113
|
+
}
|
|
114
|
+
// Create venv if it doesn't exist
|
|
115
|
+
if (!existsSync(this.venvPath)) {
|
|
116
|
+
this.log("Creating Python virtual environment...");
|
|
117
|
+
const venvResult = spawnSync(this.pythonPath, ["-m", "venv", this.venvPath], {
|
|
118
|
+
encoding: "utf-8",
|
|
119
|
+
stdio: this.verbose ? "inherit" : "pipe",
|
|
120
|
+
});
|
|
121
|
+
if (venvResult.status !== 0) {
|
|
122
|
+
return {
|
|
123
|
+
success: false,
|
|
124
|
+
error: `Failed to create venv: ${venvResult.stderr}`,
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
// Get venv python path
|
|
129
|
+
const venvPython = join(this.venvPath, "bin", "python");
|
|
130
|
+
// Check if dependencies are installed
|
|
131
|
+
const pipListResult = spawnSync(venvPython, ["-m", "pip", "list"], {
|
|
132
|
+
encoding: "utf-8",
|
|
133
|
+
timeout: 30000,
|
|
134
|
+
});
|
|
135
|
+
const pipListOutput = pipListResult.stdout || "";
|
|
136
|
+
const hasMLX = pipListOutput.toLowerCase().includes("mlx-lm");
|
|
137
|
+
const hasFastAPI = pipListOutput.toLowerCase().includes("fastapi");
|
|
138
|
+
if (!hasMLX || !hasFastAPI) {
|
|
139
|
+
this.log("Installing MLX embedding dependencies (this may take a few minutes)...");
|
|
140
|
+
const requirementsPath = this.getRequirementsPath();
|
|
141
|
+
const installResult = spawnSync(venvPython, ["-m", "pip", "install", "-r", requirementsPath, "--quiet"], {
|
|
142
|
+
encoding: "utf-8",
|
|
143
|
+
stdio: this.verbose ? "inherit" : "pipe",
|
|
144
|
+
timeout: 300000, // 5 minute timeout for pip install
|
|
145
|
+
});
|
|
146
|
+
if (installResult.status !== 0) {
|
|
147
|
+
return {
|
|
148
|
+
success: false,
|
|
149
|
+
error: `Failed to install dependencies: ${installResult.stderr}`,
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
this.log("Dependencies installed successfully");
|
|
153
|
+
}
|
|
154
|
+
return { success: true };
|
|
155
|
+
}
|
|
156
|
+
catch (error) {
|
|
157
|
+
const message = error instanceof Error ? error.message : "Unknown setup error";
|
|
158
|
+
return { success: false, error: message };
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Start the embedding server
|
|
163
|
+
*/
|
|
164
|
+
async start() {
|
|
165
|
+
if (this.process) {
|
|
166
|
+
return { success: true }; // Already running
|
|
167
|
+
}
|
|
168
|
+
// Run setup first
|
|
169
|
+
const setupResult = await this.setup();
|
|
170
|
+
if (!setupResult.success) {
|
|
171
|
+
this._status = {
|
|
172
|
+
running: false,
|
|
173
|
+
healthy: false,
|
|
174
|
+
error: setupResult.error,
|
|
175
|
+
};
|
|
176
|
+
return setupResult;
|
|
177
|
+
}
|
|
178
|
+
try {
|
|
179
|
+
const venvPython = join(this.venvPath, "bin", "python");
|
|
180
|
+
const serverScript = this.getServerScriptPath();
|
|
181
|
+
this.log(`Starting embedding server on port ${this.port}...`);
|
|
182
|
+
this.process = spawn(venvPython, [serverScript], {
|
|
183
|
+
env: {
|
|
184
|
+
...process.env,
|
|
185
|
+
PORT: String(this.port),
|
|
186
|
+
MODEL_NAME: this.modelName,
|
|
187
|
+
LOG_LEVEL: this.verbose ? "DEBUG" : "WARNING",
|
|
188
|
+
},
|
|
189
|
+
stdio: this.verbose ? "inherit" : "pipe",
|
|
190
|
+
detached: false,
|
|
191
|
+
});
|
|
192
|
+
this.process.on("error", (err) => {
|
|
193
|
+
this.log(`Server process error: ${err.message}`);
|
|
194
|
+
this._status = { running: false, healthy: false, error: err.message };
|
|
195
|
+
this.process = null;
|
|
196
|
+
});
|
|
197
|
+
this.process.on("exit", (code) => {
|
|
198
|
+
this.log(`Server process exited with code ${code}`);
|
|
199
|
+
this._status = { running: false, healthy: false };
|
|
200
|
+
this.process = null;
|
|
201
|
+
this.stopHealthCheck();
|
|
202
|
+
});
|
|
203
|
+
// Wait for server to be healthy
|
|
204
|
+
const healthy = await this.waitForHealthy(STARTUP_TIMEOUT);
|
|
205
|
+
if (!healthy) {
|
|
206
|
+
this.stop();
|
|
207
|
+
return {
|
|
208
|
+
success: false,
|
|
209
|
+
error: "Server failed to become healthy within timeout",
|
|
210
|
+
};
|
|
211
|
+
}
|
|
212
|
+
// Start health check monitoring
|
|
213
|
+
this.startHealthCheck();
|
|
214
|
+
return { success: true };
|
|
215
|
+
}
|
|
216
|
+
catch (error) {
|
|
217
|
+
const message = error instanceof Error ? error.message : "Unknown start error";
|
|
218
|
+
this._status = { running: false, healthy: false, error: message };
|
|
219
|
+
return { success: false, error: message };
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
/**
|
|
223
|
+
* Stop the embedding server
|
|
224
|
+
*/
|
|
225
|
+
stop() {
|
|
226
|
+
this.stopHealthCheck();
|
|
227
|
+
if (this.process) {
|
|
228
|
+
this.log("Stopping embedding server...");
|
|
229
|
+
this.process.kill("SIGTERM");
|
|
230
|
+
// Force kill after 5 seconds
|
|
231
|
+
setTimeout(() => {
|
|
232
|
+
if (this.process) {
|
|
233
|
+
this.process.kill("SIGKILL");
|
|
234
|
+
}
|
|
235
|
+
}, 5000);
|
|
236
|
+
this.process = null;
|
|
237
|
+
}
|
|
238
|
+
this._status = { running: false, healthy: false };
|
|
239
|
+
}
|
|
240
|
+
/**
|
|
241
|
+
* Check server health
|
|
242
|
+
*/
|
|
243
|
+
async checkHealth() {
|
|
244
|
+
try {
|
|
245
|
+
const controller = new AbortController();
|
|
246
|
+
const timeout = setTimeout(() => controller.abort(), 5000);
|
|
247
|
+
const response = await fetch(`${this.url}/health`, {
|
|
248
|
+
signal: controller.signal,
|
|
249
|
+
});
|
|
250
|
+
clearTimeout(timeout);
|
|
251
|
+
if (!response.ok) {
|
|
252
|
+
return false;
|
|
253
|
+
}
|
|
254
|
+
const data = (await response.json());
|
|
255
|
+
if (data.status === "ok") {
|
|
256
|
+
this._status = {
|
|
257
|
+
running: true,
|
|
258
|
+
healthy: true,
|
|
259
|
+
port: this.port,
|
|
260
|
+
model: data.model ?? data.model_name,
|
|
261
|
+
dim: data.dim ?? data.embedding_dim,
|
|
262
|
+
};
|
|
263
|
+
return true;
|
|
264
|
+
}
|
|
265
|
+
return false;
|
|
266
|
+
}
|
|
267
|
+
catch {
|
|
268
|
+
return false;
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
/**
|
|
272
|
+
* Wait for server to become healthy
|
|
273
|
+
*/
|
|
274
|
+
async waitForHealthy(timeout) {
|
|
275
|
+
const start = Date.now();
|
|
276
|
+
const checkInterval = 1000;
|
|
277
|
+
while (Date.now() - start < timeout) {
|
|
278
|
+
if (await this.checkHealth()) {
|
|
279
|
+
this.log("Embedding server is ready");
|
|
280
|
+
return true;
|
|
281
|
+
}
|
|
282
|
+
await new Promise((r) => setTimeout(r, checkInterval));
|
|
283
|
+
}
|
|
284
|
+
return false;
|
|
285
|
+
}
|
|
286
|
+
/**
|
|
287
|
+
* Start periodic health checks
|
|
288
|
+
*/
|
|
289
|
+
startHealthCheck() {
|
|
290
|
+
this.healthCheckTimer = setInterval(async () => {
|
|
291
|
+
const healthy = await this.checkHealth();
|
|
292
|
+
if (!healthy && this._status.healthy) {
|
|
293
|
+
this.log("Embedding server health check failed");
|
|
294
|
+
this._status.healthy = false;
|
|
295
|
+
}
|
|
296
|
+
}, HEALTH_CHECK_INTERVAL);
|
|
297
|
+
}
|
|
298
|
+
/**
|
|
299
|
+
* Stop health check monitoring
|
|
300
|
+
*/
|
|
301
|
+
stopHealthCheck() {
|
|
302
|
+
if (this.healthCheckTimer) {
|
|
303
|
+
clearInterval(this.healthCheckTimer);
|
|
304
|
+
this.healthCheckTimer = null;
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
/**
|
|
308
|
+
* Get path to the Python server script
|
|
309
|
+
*/
|
|
310
|
+
getServerScriptPath() {
|
|
311
|
+
// Both dev and prod: python/ is at package root
|
|
312
|
+
// __dirname = src/embeddings/ (dev) or dist/embeddings/ (prod)
|
|
313
|
+
// So ../../python/ works for both
|
|
314
|
+
const pythonPath = join(__dirname, "../../python/embed_server.py");
|
|
315
|
+
if (existsSync(pythonPath)) {
|
|
316
|
+
return pythonPath;
|
|
317
|
+
}
|
|
318
|
+
throw new Error(`Embedding server script not found at ${pythonPath}. ` +
|
|
319
|
+
"Ensure the python/ directory is included in the package.");
|
|
320
|
+
}
|
|
321
|
+
/**
|
|
322
|
+
* Get path to requirements.txt
|
|
323
|
+
*/
|
|
324
|
+
getRequirementsPath() {
|
|
325
|
+
const requirementsPath = join(__dirname, "../../python/requirements.txt");
|
|
326
|
+
if (existsSync(requirementsPath)) {
|
|
327
|
+
return requirementsPath;
|
|
328
|
+
}
|
|
329
|
+
throw new Error(`Requirements file not found at ${requirementsPath}. ` +
|
|
330
|
+
"Ensure the python/ directory is included in the package.");
|
|
331
|
+
}
|
|
332
|
+
/**
|
|
333
|
+
* Log message if verbose mode is enabled
|
|
334
|
+
*/
|
|
335
|
+
log(message) {
|
|
336
|
+
if (this.verbose) {
|
|
337
|
+
console.log(`[EmbeddingServer] ${message}`);
|
|
338
|
+
}
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
/**
|
|
342
|
+
* Create and optionally start an embedding server manager
|
|
343
|
+
*/
|
|
344
|
+
export async function createEmbeddingServer(options = {}) {
|
|
345
|
+
const manager = new EmbeddingServerManager(options);
|
|
346
|
+
const check = manager.canRun();
|
|
347
|
+
if (!check.supported) {
|
|
348
|
+
if (options.verbose) {
|
|
349
|
+
console.log(`[EmbeddingServer] ${check.reason}`);
|
|
350
|
+
}
|
|
351
|
+
return null;
|
|
352
|
+
}
|
|
353
|
+
if (options.autoStart !== false) {
|
|
354
|
+
const result = await manager.start();
|
|
355
|
+
if (!result.success) {
|
|
356
|
+
if (options.verbose) {
|
|
357
|
+
console.log(`[EmbeddingServer] Failed to start: ${result.error}`);
|
|
358
|
+
}
|
|
359
|
+
return null;
|
|
360
|
+
}
|
|
361
|
+
}
|
|
362
|
+
return manager;
|
|
363
|
+
}
|
|
364
|
+
//# sourceMappingURL=server-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server-manager.js","sourceRoot":"","sources":["../../src/embeddings/server-manager.ts"],"names":[],"mappings":"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"}
|
package/dist/server.js
CHANGED
|
@@ -4,10 +4,11 @@ import { readFileSync, existsSync, readdirSync, mkdirSync } from "fs";
|
|
|
4
4
|
import { join, resolve } from "path";
|
|
5
5
|
import { spawn } from "child_process";
|
|
6
6
|
import * as cheerio from "cheerio";
|
|
7
|
-
import { createDatabase, getDatabase } from "./db/index.js";
|
|
7
|
+
import { createDatabase, getDatabase, closeDatabase } from "./db/index.js";
|
|
8
8
|
import { searchHybrid } from "./api/search.js";
|
|
9
9
|
import { generateSnippet, highlightTerms } from "./api/snippets.js";
|
|
10
10
|
import { createEmbeddingClient } from "./embeddings/client.js";
|
|
11
|
+
import { createEmbeddingServer, isAppleSilicon, isCI, } from "./embeddings/server-manager.js";
|
|
11
12
|
import { getConfig } from "./config.js";
|
|
12
13
|
import { runIndexer } from "./indexer/index.js";
|
|
13
14
|
const app = express();
|
|
@@ -16,8 +17,10 @@ const PORT = process.env.PORT || 3000;
|
|
|
16
17
|
const ARCHIVE_DIR = process.env.ARCHIVE_DIR || process.argv[2] || "./claude-archive";
|
|
17
18
|
const SOURCE_DIR = process.env.SOURCE_DIR || process.argv[3] || "";
|
|
18
19
|
const DATABASE_PATH = process.env.DATABASE_PATH || join(ARCHIVE_DIR, ".search.db");
|
|
20
|
+
const NO_OPEN = process.argv.includes("--no-open") || process.env.NO_OPEN === "true";
|
|
19
21
|
// Initialize database and embedding client
|
|
20
22
|
let embeddingClient;
|
|
23
|
+
let embeddingServer = null;
|
|
21
24
|
// Background indexing state
|
|
22
25
|
let indexingStatus = { isIndexing: false };
|
|
23
26
|
// Archive generation state
|
|
@@ -223,6 +226,26 @@ async function initializeSearch() {
|
|
|
223
226
|
embeddingClient = createEmbeddingClient(socketPath);
|
|
224
227
|
console.log(`Embedding client connected to ${socketPath}`);
|
|
225
228
|
}
|
|
229
|
+
else if (isAppleSilicon() && !isCI()) {
|
|
230
|
+
// Apple Silicon (non-CI): try to auto-start the MLX embedding server
|
|
231
|
+
console.log(`Apple Silicon detected - starting MLX embedding server...`);
|
|
232
|
+
embeddingServer = await createEmbeddingServer({
|
|
233
|
+
verbose: process.env.DEBUG === "true" || process.env.VERBOSE === "true",
|
|
234
|
+
});
|
|
235
|
+
if (embeddingServer && embeddingServer.status.healthy) {
|
|
236
|
+
const status = embeddingServer.status;
|
|
237
|
+
console.log(`MLX embedding server started (model: ${status.model}, dim: ${status.dim})`);
|
|
238
|
+
embeddingClient = createEmbeddingClient(embeddingServer.url);
|
|
239
|
+
}
|
|
240
|
+
else {
|
|
241
|
+
console.log(`MLX embedding server failed to start - using FTS-only search`);
|
|
242
|
+
console.log(` Run with DEBUG=true for more details`);
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
else if (isCI()) {
|
|
246
|
+
console.log(`CI environment detected - using FTS-only search`);
|
|
247
|
+
console.log(` Set EMBED_URL to enable embeddings in CI`);
|
|
248
|
+
}
|
|
226
249
|
else {
|
|
227
250
|
console.log(`Embedding server not found - using FTS-only search`);
|
|
228
251
|
console.log(` Set EMBED_URL=http://localhost:8000 for HTTP or EMBED_SOCKET for Unix socket`);
|
|
@@ -1822,22 +1845,47 @@ function projectToArchivePath(project) {
|
|
|
1822
1845
|
// Last resort: return the original project
|
|
1823
1846
|
return project;
|
|
1824
1847
|
}
|
|
1848
|
+
// Open browser with the given URL
|
|
1849
|
+
function openBrowser(url) {
|
|
1850
|
+
const { platform } = process;
|
|
1851
|
+
let command;
|
|
1852
|
+
let args;
|
|
1853
|
+
if (platform === "darwin") {
|
|
1854
|
+
command = "open";
|
|
1855
|
+
args = [url];
|
|
1856
|
+
}
|
|
1857
|
+
else if (platform === "win32") {
|
|
1858
|
+
command = "cmd";
|
|
1859
|
+
args = ["/c", "start", url];
|
|
1860
|
+
}
|
|
1861
|
+
else {
|
|
1862
|
+
// Linux and others
|
|
1863
|
+
command = "xdg-open";
|
|
1864
|
+
args = [url];
|
|
1865
|
+
}
|
|
1866
|
+
const child = spawn(command, args, {
|
|
1867
|
+
detached: true,
|
|
1868
|
+
stdio: "ignore",
|
|
1869
|
+
});
|
|
1870
|
+
child.unref();
|
|
1871
|
+
}
|
|
1825
1872
|
// Initialize search on startup
|
|
1826
1873
|
initializeSearch();
|
|
1827
1874
|
app.listen(PORT, () => {
|
|
1875
|
+
const url = `http://localhost:${PORT}`;
|
|
1828
1876
|
console.log(`
|
|
1829
|
-
Claude Transcript Viewer running at
|
|
1877
|
+
Claude Transcript Viewer running at ${url}
|
|
1830
1878
|
|
|
1831
1879
|
Serving archive from: ${ARCHIVE_DIR}
|
|
1832
1880
|
Source directory: ${SOURCE_DIR || "(not configured)"}
|
|
1833
1881
|
|
|
1834
|
-
|
|
1835
|
-
|
|
1836
|
-
npm run dev -- /path/to/archive # Specify archive directory
|
|
1837
|
-
npm run dev -- /archive /source # Specify both archive and source directory
|
|
1838
|
-
|
|
1839
|
-
Open http://localhost:${PORT} to browse transcripts.
|
|
1882
|
+
Options:
|
|
1883
|
+
--no-open Don't auto-open browser
|
|
1840
1884
|
`);
|
|
1885
|
+
// Auto-open browser unless disabled
|
|
1886
|
+
if (!NO_OPEN && !isCI()) {
|
|
1887
|
+
openBrowser(url);
|
|
1888
|
+
}
|
|
1841
1889
|
// Start background archive generation and indexing after server is ready (non-blocking)
|
|
1842
1890
|
if (SOURCE_DIR) {
|
|
1843
1891
|
setTimeout(async () => {
|
|
@@ -1848,4 +1896,17 @@ Open http://localhost:${PORT} to browse transcripts.
|
|
|
1848
1896
|
}, 1000);
|
|
1849
1897
|
}
|
|
1850
1898
|
});
|
|
1899
|
+
// Graceful shutdown
|
|
1900
|
+
function shutdown() {
|
|
1901
|
+
console.log("\nShutting down...");
|
|
1902
|
+
// Stop embedding server if running
|
|
1903
|
+
if (embeddingServer) {
|
|
1904
|
+
embeddingServer.stop();
|
|
1905
|
+
}
|
|
1906
|
+
// Close database
|
|
1907
|
+
closeDatabase();
|
|
1908
|
+
process.exit(0);
|
|
1909
|
+
}
|
|
1910
|
+
process.on("SIGTERM", shutdown);
|
|
1911
|
+
process.on("SIGINT", shutdown);
|
|
1851
1912
|
//# sourceMappingURL=server.js.map
|
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "claude-transcript-viewer",
|
|
3
|
-
"version": "1.1
|
|
3
|
+
"version": "1.2.1",
|
|
4
4
|
"description": "Enhanced viewer for Claude Code transcripts with dark mode, infinite scroll, message filtering, and search",
|
|
5
5
|
"main": "dist/server.js",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"bin": {
|
|
8
|
-
"claude-transcript-viewer": "
|
|
8
|
+
"claude-transcript-viewer": "dist/server.js"
|
|
9
9
|
},
|
|
10
10
|
"files": [
|
|
11
11
|
"dist",
|
|
12
|
+
"python",
|
|
12
13
|
"README.md"
|
|
13
14
|
],
|
|
14
15
|
"scripts": {
|
|
@@ -34,7 +35,7 @@
|
|
|
34
35
|
"license": "MIT",
|
|
35
36
|
"repository": {
|
|
36
37
|
"type": "git",
|
|
37
|
-
"url": "https://github.com/varunr89/claude-transcript-viewer.git"
|
|
38
|
+
"url": "git+https://github.com/varunr89/claude-transcript-viewer.git"
|
|
38
39
|
},
|
|
39
40
|
"homepage": "https://github.com/varunr89/claude-transcript-viewer#readme",
|
|
40
41
|
"bugs": {
|
|
@@ -0,0 +1,272 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""
|
|
3
|
+
MLX Qwen3 Embedding Server for Apple Silicon
|
|
4
|
+
Based on qwen3-embeddings-mlx (https://github.com/jakedahn/qwen3-embeddings-mlx)
|
|
5
|
+
|
|
6
|
+
Provides REST API for generating text embeddings using Qwen3 models on Apple Silicon.
|
|
7
|
+
"""
|
|
8
|
+
|
|
9
|
+
import os
|
|
10
|
+
import sys
|
|
11
|
+
import time
|
|
12
|
+
import logging
|
|
13
|
+
import asyncio
|
|
14
|
+
from typing import Optional
|
|
15
|
+
from contextlib import asynccontextmanager
|
|
16
|
+
|
|
17
|
+
# Check for Apple Silicon before importing MLX
|
|
18
|
+
import platform
|
|
19
|
+
if platform.system() != "Darwin" or platform.machine() != "arm64":
|
|
20
|
+
print("Error: This server requires Apple Silicon (M1/M2/M3/M4)", file=sys.stderr)
|
|
21
|
+
sys.exit(1)
|
|
22
|
+
|
|
23
|
+
try:
|
|
24
|
+
import mlx.core as mx
|
|
25
|
+
import mlx.nn as nn
|
|
26
|
+
from mlx_lm import load
|
|
27
|
+
except ImportError as e:
|
|
28
|
+
print(f"Error: MLX not installed. Run: pip install mlx-lm", file=sys.stderr)
|
|
29
|
+
sys.exit(1)
|
|
30
|
+
|
|
31
|
+
from fastapi import FastAPI, HTTPException
|
|
32
|
+
from pydantic import BaseModel, Field
|
|
33
|
+
import numpy as np
|
|
34
|
+
import uvicorn
|
|
35
|
+
|
|
36
|
+
# Configuration
|
|
37
|
+
MODEL_NAME = os.environ.get("MODEL_NAME", "mlx-community/Qwen3-Embedding-0.6B-4bit-DWQ")
|
|
38
|
+
HOST = os.environ.get("HOST", "127.0.0.1")
|
|
39
|
+
PORT = int(os.environ.get("PORT", "8000"))
|
|
40
|
+
MAX_TEXT_LENGTH = int(os.environ.get("MAX_TEXT_LENGTH", "8192"))
|
|
41
|
+
LOG_LEVEL = os.environ.get("LOG_LEVEL", "INFO").upper()
|
|
42
|
+
|
|
43
|
+
# Setup logging
|
|
44
|
+
logging.basicConfig(
|
|
45
|
+
level=getattr(logging, LOG_LEVEL),
|
|
46
|
+
format="%(asctime)s - %(levelname)s - %(message)s"
|
|
47
|
+
)
|
|
48
|
+
logger = logging.getLogger(__name__)
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
class EmbeddingModel:
|
|
52
|
+
"""Manages the Qwen3 embedding model lifecycle."""
|
|
53
|
+
|
|
54
|
+
def __init__(self):
|
|
55
|
+
self.model = None
|
|
56
|
+
self.tokenizer = None
|
|
57
|
+
self.model_name: Optional[str] = None
|
|
58
|
+
self.embedding_dim: Optional[int] = None
|
|
59
|
+
self._lock = asyncio.Lock()
|
|
60
|
+
self._ready = False
|
|
61
|
+
|
|
62
|
+
async def load(self, model_name: str) -> None:
|
|
63
|
+
"""Load the embedding model."""
|
|
64
|
+
async with self._lock:
|
|
65
|
+
if self.model_name == model_name and self._ready:
|
|
66
|
+
return
|
|
67
|
+
|
|
68
|
+
logger.info(f"Loading model: {model_name}")
|
|
69
|
+
start = time.time()
|
|
70
|
+
|
|
71
|
+
try:
|
|
72
|
+
self.model, self.tokenizer = load(model_name)
|
|
73
|
+
self.model_name = model_name
|
|
74
|
+
|
|
75
|
+
# Determine embedding dimension from model config
|
|
76
|
+
if hasattr(self.model, 'config'):
|
|
77
|
+
self.embedding_dim = getattr(self.model.config, 'hidden_size', 1024)
|
|
78
|
+
else:
|
|
79
|
+
self.embedding_dim = 1024
|
|
80
|
+
|
|
81
|
+
# Warmup inference
|
|
82
|
+
await self._warmup()
|
|
83
|
+
|
|
84
|
+
self._ready = True
|
|
85
|
+
logger.info(f"Model loaded in {time.time() - start:.2f}s (dim={self.embedding_dim})")
|
|
86
|
+
|
|
87
|
+
except Exception as e:
|
|
88
|
+
logger.error(f"Failed to load model: {e}")
|
|
89
|
+
raise
|
|
90
|
+
|
|
91
|
+
async def _warmup(self) -> None:
|
|
92
|
+
"""Run warmup inference to compile Metal kernels."""
|
|
93
|
+
test_texts = ["warmup", "test"]
|
|
94
|
+
for text in test_texts:
|
|
95
|
+
tokens = self.tokenizer.encode(text, return_tensors="np")
|
|
96
|
+
input_ids = mx.array(tokens)
|
|
97
|
+
hidden = self._get_hidden_states(input_ids)
|
|
98
|
+
# Force computation with mx.eval
|
|
99
|
+
mx.eval(hidden)
|
|
100
|
+
|
|
101
|
+
def _get_hidden_states(self, input_ids: mx.array) -> mx.array:
|
|
102
|
+
"""Extract hidden states from the model."""
|
|
103
|
+
# Get embeddings from token embedding layer
|
|
104
|
+
if hasattr(self.model.model, 'embed_tokens'):
|
|
105
|
+
hidden_states = self.model.model.embed_tokens(input_ids)
|
|
106
|
+
else:
|
|
107
|
+
hidden_states = self.model.model.wte(input_ids)
|
|
108
|
+
|
|
109
|
+
# Pass through transformer layers
|
|
110
|
+
for layer in self.model.model.layers:
|
|
111
|
+
hidden_states = layer(hidden_states, mask=None)[0] if isinstance(
|
|
112
|
+
layer(hidden_states, mask=None), tuple
|
|
113
|
+
) else layer(hidden_states, mask=None)
|
|
114
|
+
|
|
115
|
+
# Apply final layer norm
|
|
116
|
+
if hasattr(self.model.model, 'norm'):
|
|
117
|
+
hidden_states = self.model.model.norm(hidden_states)
|
|
118
|
+
|
|
119
|
+
return hidden_states
|
|
120
|
+
|
|
121
|
+
def generate_embedding(self, text: str, normalize: bool = True) -> np.ndarray:
|
|
122
|
+
"""Generate embedding for a single text."""
|
|
123
|
+
if not self._ready:
|
|
124
|
+
raise RuntimeError("Model not loaded")
|
|
125
|
+
|
|
126
|
+
# Tokenize with truncation
|
|
127
|
+
tokens = self.tokenizer.encode(
|
|
128
|
+
text,
|
|
129
|
+
max_length=MAX_TEXT_LENGTH,
|
|
130
|
+
truncation=True,
|
|
131
|
+
return_tensors="np"
|
|
132
|
+
)
|
|
133
|
+
input_ids = mx.array(tokens)
|
|
134
|
+
|
|
135
|
+
# Get hidden states
|
|
136
|
+
hidden_states = self._get_hidden_states(input_ids)
|
|
137
|
+
|
|
138
|
+
# Mean pooling across sequence dimension
|
|
139
|
+
embedding = mx.mean(hidden_states, axis=1)
|
|
140
|
+
|
|
141
|
+
# L2 normalize
|
|
142
|
+
if normalize:
|
|
143
|
+
embedding = embedding / mx.linalg.norm(embedding, axis=-1, keepdims=True)
|
|
144
|
+
|
|
145
|
+
# Force computation and convert to numpy via tolist()
|
|
146
|
+
mx.eval(embedding)
|
|
147
|
+
return np.array(embedding.tolist()[0], dtype=np.float32)
|
|
148
|
+
|
|
149
|
+
def generate_embeddings_batch(self, texts: list[str], normalize: bool = True) -> list[np.ndarray]:
|
|
150
|
+
"""Generate embeddings for multiple texts."""
|
|
151
|
+
return [self.generate_embedding(text, normalize) for text in texts]
|
|
152
|
+
|
|
153
|
+
|
|
154
|
+
# Global model instance
|
|
155
|
+
embedding_model = EmbeddingModel()
|
|
156
|
+
|
|
157
|
+
|
|
158
|
+
@asynccontextmanager
|
|
159
|
+
async def lifespan(app: FastAPI):
|
|
160
|
+
"""Startup and shutdown lifecycle."""
|
|
161
|
+
logger.info(f"Starting Qwen3 Embedding Server on {HOST}:{PORT}")
|
|
162
|
+
await embedding_model.load(MODEL_NAME)
|
|
163
|
+
yield
|
|
164
|
+
logger.info("Shutting down...")
|
|
165
|
+
|
|
166
|
+
|
|
167
|
+
app = FastAPI(
|
|
168
|
+
title="Qwen3 Embedding Server",
|
|
169
|
+
description="MLX-powered embedding server for Apple Silicon",
|
|
170
|
+
lifespan=lifespan
|
|
171
|
+
)
|
|
172
|
+
|
|
173
|
+
|
|
174
|
+
# Request/Response Models
|
|
175
|
+
class EmbedRequest(BaseModel):
|
|
176
|
+
text: str = Field(..., min_length=1)
|
|
177
|
+
normalize: bool = True
|
|
178
|
+
|
|
179
|
+
|
|
180
|
+
class EmbedBatchRequest(BaseModel):
|
|
181
|
+
texts: list[str] = Field(..., min_length=1, max_length=1024)
|
|
182
|
+
normalize: bool = True
|
|
183
|
+
|
|
184
|
+
|
|
185
|
+
class EmbedResponse(BaseModel):
|
|
186
|
+
embedding: list[float]
|
|
187
|
+
tokens: int
|
|
188
|
+
model: str
|
|
189
|
+
|
|
190
|
+
|
|
191
|
+
class EmbedBatchResponse(BaseModel):
|
|
192
|
+
embeddings: list[dict]
|
|
193
|
+
model: str
|
|
194
|
+
|
|
195
|
+
|
|
196
|
+
class HealthResponse(BaseModel):
|
|
197
|
+
status: str
|
|
198
|
+
model: Optional[str] = None
|
|
199
|
+
model_name: Optional[str] = None
|
|
200
|
+
dim: Optional[int] = None
|
|
201
|
+
embedding_dim: Optional[int] = None
|
|
202
|
+
|
|
203
|
+
|
|
204
|
+
# API Endpoints
|
|
205
|
+
@app.get("/health", response_model=HealthResponse)
|
|
206
|
+
async def health():
|
|
207
|
+
"""Health check endpoint."""
|
|
208
|
+
if embedding_model._ready:
|
|
209
|
+
return HealthResponse(
|
|
210
|
+
status="ok",
|
|
211
|
+
model=embedding_model.model_name,
|
|
212
|
+
model_name=embedding_model.model_name,
|
|
213
|
+
dim=embedding_model.embedding_dim,
|
|
214
|
+
embedding_dim=embedding_model.embedding_dim
|
|
215
|
+
)
|
|
216
|
+
return HealthResponse(status="loading")
|
|
217
|
+
|
|
218
|
+
|
|
219
|
+
@app.post("/embed", response_model=EmbedResponse)
|
|
220
|
+
async def embed(request: EmbedRequest):
|
|
221
|
+
"""Generate embedding for a single text."""
|
|
222
|
+
if not embedding_model._ready:
|
|
223
|
+
raise HTTPException(status_code=503, detail="Model not ready")
|
|
224
|
+
|
|
225
|
+
try:
|
|
226
|
+
start = time.time()
|
|
227
|
+
embedding = embedding_model.generate_embedding(request.text, request.normalize)
|
|
228
|
+
tokens = len(embedding_model.tokenizer.encode(request.text))
|
|
229
|
+
|
|
230
|
+
logger.debug(f"Embedded {tokens} tokens in {(time.time()-start)*1000:.1f}ms")
|
|
231
|
+
|
|
232
|
+
return EmbedResponse(
|
|
233
|
+
embedding=embedding.tolist(),
|
|
234
|
+
tokens=tokens,
|
|
235
|
+
model=embedding_model.model_name
|
|
236
|
+
)
|
|
237
|
+
except Exception as e:
|
|
238
|
+
logger.error(f"Embedding failed: {e}")
|
|
239
|
+
raise HTTPException(status_code=500, detail=str(e))
|
|
240
|
+
|
|
241
|
+
|
|
242
|
+
@app.post("/embed_batch", response_model=EmbedBatchResponse)
|
|
243
|
+
async def embed_batch(request: EmbedBatchRequest):
|
|
244
|
+
"""Generate embeddings for multiple texts."""
|
|
245
|
+
if not embedding_model._ready:
|
|
246
|
+
raise HTTPException(status_code=503, detail="Model not ready")
|
|
247
|
+
|
|
248
|
+
try:
|
|
249
|
+
start = time.time()
|
|
250
|
+
embeddings = embedding_model.generate_embeddings_batch(request.texts, request.normalize)
|
|
251
|
+
|
|
252
|
+
results = []
|
|
253
|
+
for i, (text, emb) in enumerate(zip(request.texts, embeddings)):
|
|
254
|
+
tokens = len(embedding_model.tokenizer.encode(text))
|
|
255
|
+
results.append({
|
|
256
|
+
"embedding": emb.tolist(),
|
|
257
|
+
"tokens": tokens
|
|
258
|
+
})
|
|
259
|
+
|
|
260
|
+
logger.debug(f"Batch embedded {len(request.texts)} texts in {(time.time()-start)*1000:.1f}ms")
|
|
261
|
+
|
|
262
|
+
return EmbedBatchResponse(
|
|
263
|
+
embeddings=results,
|
|
264
|
+
model=embedding_model.model_name
|
|
265
|
+
)
|
|
266
|
+
except Exception as e:
|
|
267
|
+
logger.error(f"Batch embedding failed: {e}")
|
|
268
|
+
raise HTTPException(status_code=500, detail=str(e))
|
|
269
|
+
|
|
270
|
+
|
|
271
|
+
if __name__ == "__main__":
|
|
272
|
+
uvicorn.run(app, host=HOST, port=PORT, log_level=LOG_LEVEL.lower())
|