@graphty/remote-logger 1.1.1 → 1.2.0
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/README.md +318 -10
- package/dist/client/RemoteLogClient.d.ts +2 -0
- package/dist/client/RemoteLogClient.d.ts.map +1 -1
- package/dist/client/RemoteLogClient.js +35 -4
- package/dist/client/RemoteLogClient.js.map +1 -1
- package/dist/client/types.d.ts +13 -0
- package/dist/client/types.d.ts.map +1 -1
- package/dist/mcp/index.d.ts +9 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +9 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/mcp/mcp-server.d.ts +32 -0
- package/dist/mcp/mcp-server.d.ts.map +1 -0
- package/dist/mcp/mcp-server.js +270 -0
- package/dist/mcp/mcp-server.js.map +1 -0
- package/dist/mcp/tools/index.d.ts +14 -0
- package/dist/mcp/tools/index.d.ts.map +1 -0
- package/dist/mcp/tools/index.js +14 -0
- package/dist/mcp/tools/index.js.map +1 -0
- package/dist/mcp/tools/logs-clear.d.ts +76 -0
- package/dist/mcp/tools/logs-clear.d.ts.map +1 -0
- package/dist/mcp/tools/logs-clear.js +58 -0
- package/dist/mcp/tools/logs-clear.js.map +1 -0
- package/dist/mcp/tools/logs-get-all.d.ts +60 -0
- package/dist/mcp/tools/logs-get-all.d.ts.map +1 -0
- package/dist/mcp/tools/logs-get-all.js +50 -0
- package/dist/mcp/tools/logs-get-all.js.map +1 -0
- package/dist/mcp/tools/logs-get-errors.d.ts +65 -0
- package/dist/mcp/tools/logs-get-errors.d.ts.map +1 -0
- package/dist/mcp/tools/logs-get-errors.js +46 -0
- package/dist/mcp/tools/logs-get-errors.js.map +1 -0
- package/dist/mcp/tools/logs-get-file-path.d.ts +75 -0
- package/dist/mcp/tools/logs-get-file-path.d.ts.map +1 -0
- package/dist/mcp/tools/logs-get-file-path.js +90 -0
- package/dist/mcp/tools/logs-get-file-path.js.map +1 -0
- package/dist/mcp/tools/logs-get-recent.d.ts +89 -0
- package/dist/mcp/tools/logs-get-recent.d.ts.map +1 -0
- package/dist/mcp/tools/logs-get-recent.js +74 -0
- package/dist/mcp/tools/logs-get-recent.js.map +1 -0
- package/dist/mcp/tools/logs-list-sessions.d.ts +64 -0
- package/dist/mcp/tools/logs-list-sessions.d.ts.map +1 -0
- package/dist/mcp/tools/logs-list-sessions.js +48 -0
- package/dist/mcp/tools/logs-list-sessions.js.map +1 -0
- package/dist/mcp/tools/logs-receive.d.ts +150 -0
- package/dist/mcp/tools/logs-receive.d.ts.map +1 -0
- package/dist/mcp/tools/logs-receive.js +68 -0
- package/dist/mcp/tools/logs-receive.js.map +1 -0
- package/dist/mcp/tools/logs-search.d.ts +91 -0
- package/dist/mcp/tools/logs-search.d.ts.map +1 -0
- package/dist/mcp/tools/logs-search.js +68 -0
- package/dist/mcp/tools/logs-search.js.map +1 -0
- package/dist/mcp/tools/logs-status.d.ts +45 -0
- package/dist/mcp/tools/logs-status.d.ts.map +1 -0
- package/dist/mcp/tools/logs-status.js +45 -0
- package/dist/mcp/tools/logs-status.js.map +1 -0
- package/dist/server/dual-server.d.ts +76 -0
- package/dist/server/dual-server.d.ts.map +1 -0
- package/dist/server/dual-server.js +214 -0
- package/dist/server/dual-server.js.map +1 -0
- package/dist/server/index.d.ts +5 -1
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +5 -1
- package/dist/server/index.js.map +1 -1
- package/dist/server/jsonl-writer.d.ts +93 -0
- package/dist/server/jsonl-writer.d.ts.map +1 -0
- package/dist/server/jsonl-writer.js +205 -0
- package/dist/server/jsonl-writer.js.map +1 -0
- package/dist/server/log-server.d.ts +62 -11
- package/dist/server/log-server.d.ts.map +1 -1
- package/dist/server/log-server.js +237 -101
- package/dist/server/log-server.js.map +1 -1
- package/dist/server/log-storage.d.ts +301 -0
- package/dist/server/log-storage.d.ts.map +1 -0
- package/dist/server/log-storage.js +408 -0
- package/dist/server/log-storage.js.map +1 -0
- package/dist/server/marker-utils.d.ts +69 -0
- package/dist/server/marker-utils.d.ts.map +1 -0
- package/dist/server/marker-utils.js +118 -0
- package/dist/server/marker-utils.js.map +1 -0
- package/dist/vite/index.d.ts +8 -0
- package/dist/vite/index.d.ts.map +1 -0
- package/dist/vite/index.js +8 -0
- package/dist/vite/index.js.map +1 -0
- package/dist/vite/plugin.d.ts +42 -0
- package/dist/vite/plugin.d.ts.map +1 -0
- package/dist/vite/plugin.js +46 -0
- package/dist/vite/plugin.js.map +1 -0
- package/package.json +12 -2
- package/src/client/RemoteLogClient.ts +52 -4
- package/src/client/types.ts +13 -0
- package/src/mcp/index.ts +25 -0
- package/src/mcp/mcp-server.ts +364 -0
- package/src/mcp/tools/index.ts +69 -0
- package/src/mcp/tools/logs-clear.ts +86 -0
- package/src/mcp/tools/logs-get-all.ts +78 -0
- package/src/mcp/tools/logs-get-errors.ts +71 -0
- package/src/mcp/tools/logs-get-file-path.ts +121 -0
- package/src/mcp/tools/logs-get-recent.ts +104 -0
- package/src/mcp/tools/logs-list-sessions.ts +71 -0
- package/src/mcp/tools/logs-receive.ts +96 -0
- package/src/mcp/tools/logs-search.ts +95 -0
- package/src/mcp/tools/logs-status.ts +69 -0
- package/src/server/dual-server.ts +308 -0
- package/src/server/index.ts +37 -0
- package/src/server/jsonl-writer.ts +277 -0
- package/src/server/log-server.ts +311 -119
- package/src/server/log-storage.ts +651 -0
- package/src/server/marker-utils.ts +144 -0
- package/src/vite/index.ts +8 -0
- package/src/vite/plugin.ts +59 -0
|
@@ -15,8 +15,45 @@
|
|
|
15
15
|
import * as fs from "fs";
|
|
16
16
|
import * as http from "http";
|
|
17
17
|
import * as https from "https";
|
|
18
|
+
import * as os from "os";
|
|
19
|
+
import * as path from "path";
|
|
18
20
|
import { URL } from "url";
|
|
19
|
-
import {
|
|
21
|
+
import { JsonlWriter } from "./jsonl-writer.js";
|
|
22
|
+
import { LogStorage } from "./log-storage.js";
|
|
23
|
+
import { certFilesExist, readCertFiles } from "./self-signed-cert.js";
|
|
24
|
+
// Shared log storage instance
|
|
25
|
+
let sharedStorage = null;
|
|
26
|
+
// Shared JSONL writer instance
|
|
27
|
+
let sharedJsonlWriter = null;
|
|
28
|
+
/**
|
|
29
|
+
* Get the shared LogStorage instance, creating it if needed.
|
|
30
|
+
* Creates a JsonlWriter for JSONL file streaming by default.
|
|
31
|
+
* @returns The shared LogStorage instance
|
|
32
|
+
*/
|
|
33
|
+
export function getLogStorage() {
|
|
34
|
+
if (!sharedStorage) {
|
|
35
|
+
// Create JSONL writer for file streaming
|
|
36
|
+
const jsonlBaseDir = path.join(os.tmpdir(), "remote-logger");
|
|
37
|
+
sharedJsonlWriter = new JsonlWriter(jsonlBaseDir);
|
|
38
|
+
// Create storage with JSONL writer
|
|
39
|
+
sharedStorage = new LogStorage({ jsonlWriter: sharedJsonlWriter });
|
|
40
|
+
}
|
|
41
|
+
return sharedStorage;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Get the shared JsonlWriter instance.
|
|
45
|
+
* @returns The shared JsonlWriter instance or null if not initialized
|
|
46
|
+
*/
|
|
47
|
+
export function getJsonlWriter() {
|
|
48
|
+
return sharedJsonlWriter;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Set the shared LogStorage instance (for testing or external injection).
|
|
52
|
+
* @param storage - The LogStorage instance to use
|
|
53
|
+
*/
|
|
54
|
+
export function setLogStorage(storage) {
|
|
55
|
+
sharedStorage = storage;
|
|
56
|
+
}
|
|
20
57
|
// ANSI color codes for terminal output
|
|
21
58
|
const colors = {
|
|
22
59
|
reset: "\x1b[0m",
|
|
@@ -32,8 +69,6 @@ const colors = {
|
|
|
32
69
|
bgRed: "\x1b[41m",
|
|
33
70
|
bgYellow: "\x1b[43m",
|
|
34
71
|
};
|
|
35
|
-
// Store for remote logs by session
|
|
36
|
-
const remoteLogs = new Map();
|
|
37
72
|
// File stream for log file
|
|
38
73
|
let logFileStream = null;
|
|
39
74
|
/**
|
|
@@ -41,7 +76,7 @@ let logFileStream = null;
|
|
|
41
76
|
* Useful for testing.
|
|
42
77
|
*/
|
|
43
78
|
export function clearLogs() {
|
|
44
|
-
|
|
79
|
+
getLogStorage().clear();
|
|
45
80
|
}
|
|
46
81
|
/**
|
|
47
82
|
* Format log level for terminal output with colors.
|
|
@@ -104,8 +139,9 @@ function displayLog(sessionId, log, quiet) {
|
|
|
104
139
|
* @param port - The server port number
|
|
105
140
|
* @param useHttps - Whether HTTPS is being used
|
|
106
141
|
* @param quiet - If true, suppress terminal output
|
|
142
|
+
* @param logReceiveOnly - If true, only serve /log POST and /health GET endpoints
|
|
107
143
|
*/
|
|
108
|
-
function handleRequest(req, res, host, port, useHttps, quiet) {
|
|
144
|
+
function handleRequest(req, res, host, port, useHttps, quiet, logReceiveOnly = false) {
|
|
109
145
|
// CORS headers
|
|
110
146
|
res.setHeader("Access-Control-Allow-Origin", "*");
|
|
111
147
|
res.setHeader("Access-Control-Allow-Methods", "GET, POST, OPTIONS");
|
|
@@ -126,29 +162,22 @@ function handleRequest(req, res, host, port, useHttps, quiet) {
|
|
|
126
162
|
req.on("end", () => {
|
|
127
163
|
try {
|
|
128
164
|
const data = JSON.parse(body);
|
|
129
|
-
const { sessionId, logs } = data;
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
const sessionLogs = remoteLogs.get(sessionId);
|
|
143
|
-
if (!sessionLogs) {
|
|
144
|
-
// Should not happen since we just set it above, but satisfy TypeScript
|
|
145
|
-
res.writeHead(500, { "Content-Type": "application/json" });
|
|
146
|
-
res.end(JSON.stringify({ error: "Internal error" }));
|
|
147
|
-
return;
|
|
165
|
+
const { sessionId, logs, projectMarker, worktreePath, pageUrl } = data;
|
|
166
|
+
const storage = getLogStorage();
|
|
167
|
+
const isNewSession = !storage.hasSession(sessionId);
|
|
168
|
+
// Show new session banner
|
|
169
|
+
if (isNewSession && !quiet) {
|
|
170
|
+
// eslint-disable-next-line no-console
|
|
171
|
+
console.log(`\n${colors.bright}${colors.magenta}═══════════════════════════════════════════════════════════${colors.reset}`);
|
|
172
|
+
// eslint-disable-next-line no-console
|
|
173
|
+
console.log(`${colors.bright}${colors.magenta} NEW SESSION: ${sessionId}${colors.reset}`);
|
|
174
|
+
// eslint-disable-next-line no-console
|
|
175
|
+
console.log(`${colors.bright}${colors.magenta}═══════════════════════════════════════════════════════════${colors.reset}\n`);
|
|
148
176
|
}
|
|
149
|
-
//
|
|
177
|
+
// Add logs to storage
|
|
178
|
+
storage.addLogs(sessionId, logs, { projectMarker, worktreePath, pageUrl });
|
|
179
|
+
// Display each log in terminal
|
|
150
180
|
for (const log of logs) {
|
|
151
|
-
sessionLogs.push(log);
|
|
152
181
|
displayLog(sessionId, log, quiet);
|
|
153
182
|
}
|
|
154
183
|
res.writeHead(200, { "Content-Type": "application/json" });
|
|
@@ -164,12 +193,22 @@ function handleRequest(req, res, host, port, useHttps, quiet) {
|
|
|
164
193
|
});
|
|
165
194
|
return;
|
|
166
195
|
}
|
|
196
|
+
// Health check endpoint (always available)
|
|
197
|
+
if (url === "/health" && req.method === "GET") {
|
|
198
|
+
const health = getLogStorage().getHealth();
|
|
199
|
+
res.writeHead(200, { "Content-Type": "application/json" });
|
|
200
|
+
res.end(JSON.stringify({ status: health.status, sessions: health.sessionCount }));
|
|
201
|
+
return;
|
|
202
|
+
}
|
|
203
|
+
// In logReceiveOnly mode, only /log and /health are available
|
|
204
|
+
if (logReceiveOnly) {
|
|
205
|
+
res.writeHead(404, { "Content-Type": "application/json" });
|
|
206
|
+
res.end(JSON.stringify({ error: "Not found (log receive only mode)" }));
|
|
207
|
+
return;
|
|
208
|
+
}
|
|
167
209
|
// Handle logs viewer endpoint - GET all logs
|
|
168
210
|
if (url === "/logs" && req.method === "GET") {
|
|
169
|
-
const allLogs =
|
|
170
|
-
for (const [sessionId, logs] of remoteLogs) {
|
|
171
|
-
allLogs[sessionId] = logs;
|
|
172
|
-
}
|
|
211
|
+
const allLogs = getLogStorage().getAllLogsBySession();
|
|
173
212
|
res.writeHead(200, { "Content-Type": "application/json" });
|
|
174
213
|
res.end(JSON.stringify(allLogs, null, 2));
|
|
175
214
|
return;
|
|
@@ -179,21 +218,13 @@ function handleRequest(req, res, host, port, useHttps, quiet) {
|
|
|
179
218
|
const urlObj = new URL(url, `${protocol}://${host}:${port}`);
|
|
180
219
|
const count = parseInt(urlObj.searchParams.get("n") ?? "50", 10);
|
|
181
220
|
const errorsOnly = urlObj.searchParams.get("errors") === "true";
|
|
182
|
-
|
|
183
|
-
const
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
if (!errorsOnly || log.level.toUpperCase() === "ERROR") {
|
|
187
|
-
allLogs.push({ sessionId, ...log });
|
|
188
|
-
}
|
|
189
|
-
}
|
|
190
|
-
}
|
|
191
|
-
// Sort by time descending and take last N
|
|
192
|
-
allLogs.sort((a, b) => new Date(b.time).getTime() - new Date(a.time).getTime());
|
|
193
|
-
const recentLogs = allLogs.slice(0, count).reverse(); // Reverse to show oldest first
|
|
221
|
+
const storage = getLogStorage();
|
|
222
|
+
const filter = errorsOnly ? { level: "ERROR" } : {};
|
|
223
|
+
const recentLogs = storage.getRecentLogs(count, filter);
|
|
224
|
+
const totalLogs = storage.getLogs(filter).length;
|
|
194
225
|
res.writeHead(200, { "Content-Type": "application/json" });
|
|
195
226
|
res.end(JSON.stringify({
|
|
196
|
-
total:
|
|
227
|
+
total: totalLogs,
|
|
197
228
|
showing: recentLogs.length,
|
|
198
229
|
logs: recentLogs,
|
|
199
230
|
}, null, 2));
|
|
@@ -201,15 +232,7 @@ function handleRequest(req, res, host, port, useHttps, quiet) {
|
|
|
201
232
|
}
|
|
202
233
|
// Handle errors-only endpoint
|
|
203
234
|
if (url === "/logs/errors" && req.method === "GET") {
|
|
204
|
-
const errorLogs =
|
|
205
|
-
for (const [sessionId, logs] of remoteLogs) {
|
|
206
|
-
for (const log of logs) {
|
|
207
|
-
if (log.level.toUpperCase() === "ERROR") {
|
|
208
|
-
errorLogs.push({ sessionId, ...log });
|
|
209
|
-
}
|
|
210
|
-
}
|
|
211
|
-
}
|
|
212
|
-
errorLogs.sort((a, b) => new Date(a.time).getTime() - new Date(b.time).getTime());
|
|
235
|
+
const errorLogs = getLogStorage().getErrors();
|
|
213
236
|
res.writeHead(200, { "Content-Type": "application/json" });
|
|
214
237
|
res.end(JSON.stringify({
|
|
215
238
|
total: errorLogs.length,
|
|
@@ -219,7 +242,7 @@ function handleRequest(req, res, host, port, useHttps, quiet) {
|
|
|
219
242
|
}
|
|
220
243
|
// Handle clear logs endpoint
|
|
221
244
|
if (url === "/logs/clear" && req.method === "POST") {
|
|
222
|
-
|
|
245
|
+
getLogStorage().clear();
|
|
223
246
|
if (!quiet) {
|
|
224
247
|
// eslint-disable-next-line no-console
|
|
225
248
|
console.log(`\n${colors.yellow}Logs cleared${colors.reset}\n`);
|
|
@@ -228,12 +251,6 @@ function handleRequest(req, res, host, port, useHttps, quiet) {
|
|
|
228
251
|
res.end(JSON.stringify({ success: true }));
|
|
229
252
|
return;
|
|
230
253
|
}
|
|
231
|
-
// Health check endpoint
|
|
232
|
-
if (url === "/health" && req.method === "GET") {
|
|
233
|
-
res.writeHead(200, { "Content-Type": "application/json" });
|
|
234
|
-
res.end(JSON.stringify({ status: "ok", sessions: remoteLogs.size }));
|
|
235
|
-
return;
|
|
236
|
-
}
|
|
237
254
|
// Default: 404
|
|
238
255
|
res.writeHead(404, { "Content-Type": "application/json" });
|
|
239
256
|
res.end(JSON.stringify({ error: "Not found" }));
|
|
@@ -281,6 +298,38 @@ function printBanner(host, port, useHttps) {
|
|
|
281
298
|
// eslint-disable-next-line no-console
|
|
282
299
|
console.log(`${colors.cyan}────────────────────────────────────────────────────────────${colors.reset}`);
|
|
283
300
|
}
|
|
301
|
+
/**
|
|
302
|
+
* Create a log server with shared storage.
|
|
303
|
+
* The server is not started - call server.listen() to start it.
|
|
304
|
+
* @param options - Server configuration options
|
|
305
|
+
* @returns The server instance
|
|
306
|
+
*/
|
|
307
|
+
export function createLogServer(options) {
|
|
308
|
+
const { port, host, storage, quiet = true, logReceiveOnly = false, certPath, keyPath, } = options;
|
|
309
|
+
// Set the shared storage
|
|
310
|
+
setLogStorage(storage);
|
|
311
|
+
let server;
|
|
312
|
+
// Use HTTPS only if valid certificate files are provided
|
|
313
|
+
const useHttps = certPath && keyPath && certFilesExist(certPath, keyPath);
|
|
314
|
+
if (useHttps) {
|
|
315
|
+
// HTTPS server with provided certificates
|
|
316
|
+
const { cert, key } = readCertFiles(certPath, keyPath);
|
|
317
|
+
if (!quiet) {
|
|
318
|
+
// eslint-disable-next-line no-console
|
|
319
|
+
console.log(`${colors.green}Using SSL certificates from: ${certPath}${colors.reset}`);
|
|
320
|
+
}
|
|
321
|
+
server = https.createServer({ cert, key }, (req, res) => {
|
|
322
|
+
handleRequest(req, res, host, port, true, quiet, logReceiveOnly);
|
|
323
|
+
});
|
|
324
|
+
}
|
|
325
|
+
else {
|
|
326
|
+
// HTTP server (default - no self-signed certs as browsers reject them)
|
|
327
|
+
server = http.createServer((req, res) => {
|
|
328
|
+
handleRequest(req, res, host, port, false, quiet, logReceiveOnly);
|
|
329
|
+
});
|
|
330
|
+
}
|
|
331
|
+
return { server };
|
|
332
|
+
}
|
|
284
333
|
/**
|
|
285
334
|
* Start the log server.
|
|
286
335
|
* @param options - Server configuration options
|
|
@@ -289,7 +338,6 @@ function printBanner(host, port, useHttps) {
|
|
|
289
338
|
export function startLogServer(options = {}) {
|
|
290
339
|
const port = options.port ?? 9080;
|
|
291
340
|
const host = options.host ?? "localhost";
|
|
292
|
-
const useHttp = options.useHttp ?? false;
|
|
293
341
|
const quiet = options.quiet ?? false;
|
|
294
342
|
// Set up log file if specified
|
|
295
343
|
if (options.logFile) {
|
|
@@ -300,45 +348,32 @@ export function startLogServer(options = {}) {
|
|
|
300
348
|
}
|
|
301
349
|
}
|
|
302
350
|
// Determine SSL configuration
|
|
351
|
+
// Use HTTPS only if valid certificate files are provided
|
|
303
352
|
let server;
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
let key;
|
|
314
|
-
if (options.certPath && options.keyPath && certFilesExist(options.certPath, options.keyPath)) {
|
|
315
|
-
// Use provided certificates
|
|
316
|
-
({ cert, key } = readCertFiles(options.certPath, options.keyPath));
|
|
317
|
-
if (!quiet) {
|
|
318
|
-
// eslint-disable-next-line no-console
|
|
319
|
-
console.log(`${colors.green}Using SSL certificates from: ${options.certPath}${colors.reset}`);
|
|
320
|
-
}
|
|
321
|
-
}
|
|
322
|
-
else {
|
|
323
|
-
// Generate self-signed certificate
|
|
324
|
-
if (!quiet) {
|
|
325
|
-
// eslint-disable-next-line no-console
|
|
326
|
-
console.log(`${colors.yellow}Generating self-signed certificate for ${host}...${colors.reset}`);
|
|
327
|
-
}
|
|
328
|
-
({ cert, key } = generateSelfSignedCert(host));
|
|
329
|
-
if (!quiet) {
|
|
330
|
-
// eslint-disable-next-line no-console
|
|
331
|
-
console.log(`${colors.yellow}Note: Browser will show certificate warning - this is expected for self-signed certs${colors.reset}`);
|
|
332
|
-
}
|
|
353
|
+
let useHttps = false;
|
|
354
|
+
const { certPath, keyPath } = options;
|
|
355
|
+
if (certPath && keyPath && certFilesExist(certPath, keyPath)) {
|
|
356
|
+
// HTTPS server with provided certificates
|
|
357
|
+
useHttps = true;
|
|
358
|
+
const { cert, key } = readCertFiles(certPath, keyPath);
|
|
359
|
+
if (!quiet) {
|
|
360
|
+
// eslint-disable-next-line no-console
|
|
361
|
+
console.log(`${colors.green}Using SSL certificates from: ${certPath}${colors.reset}`);
|
|
333
362
|
}
|
|
334
363
|
server = https.createServer({ cert, key }, (req, res) => {
|
|
335
364
|
handleRequest(req, res, host, port, true, quiet);
|
|
336
365
|
});
|
|
337
366
|
}
|
|
367
|
+
else {
|
|
368
|
+
// HTTP server (default - no self-signed certs as browsers reject them)
|
|
369
|
+
server = http.createServer((req, res) => {
|
|
370
|
+
handleRequest(req, res, host, port, false, quiet);
|
|
371
|
+
});
|
|
372
|
+
}
|
|
338
373
|
// Start listening
|
|
339
374
|
server.listen(port, host, () => {
|
|
340
375
|
if (!quiet) {
|
|
341
|
-
printBanner(host, port,
|
|
376
|
+
printBanner(host, port, useHttps);
|
|
342
377
|
}
|
|
343
378
|
});
|
|
344
379
|
// Handle graceful shutdown
|
|
@@ -348,6 +383,11 @@ export function startLogServer(options = {}) {
|
|
|
348
383
|
if (logFileStream) {
|
|
349
384
|
logFileStream.end();
|
|
350
385
|
}
|
|
386
|
+
// Close JSONL writer to flush pending writes
|
|
387
|
+
const jsonlWriter = getJsonlWriter();
|
|
388
|
+
if (jsonlWriter) {
|
|
389
|
+
void jsonlWriter.close();
|
|
390
|
+
}
|
|
351
391
|
server.close(() => {
|
|
352
392
|
process.exit(0);
|
|
353
393
|
});
|
|
@@ -367,18 +407,29 @@ Usage:
|
|
|
367
407
|
Options:
|
|
368
408
|
--port, -p <port> Port to listen on (default: 9080)
|
|
369
409
|
--host, -h <host> Hostname to bind to (default: localhost)
|
|
370
|
-
--cert, -c <path> Path to SSL certificate file
|
|
371
|
-
--key, -k <path> Path to SSL private key file
|
|
410
|
+
--cert, -c <path> Path to SSL certificate file (enables HTTPS)
|
|
411
|
+
--key, -k <path> Path to SSL private key file (enables HTTPS)
|
|
372
412
|
--log-file, -l <path> Write logs to file
|
|
373
|
-
--
|
|
413
|
+
--mcp-only Start only MCP server (no HTTP)
|
|
414
|
+
--http-only Start only HTTP server (legacy mode)
|
|
415
|
+
--mcp Alias for --mcp-only (deprecated)
|
|
374
416
|
--quiet, -q Suppress startup banner
|
|
375
417
|
--help Show this help message
|
|
376
418
|
|
|
419
|
+
Protocol:
|
|
420
|
+
HTTP is used by default. To use HTTPS, provide both --cert and --key.
|
|
421
|
+
|
|
422
|
+
Modes:
|
|
423
|
+
Default (no flags) Dual mode: HTTP + MCP running together
|
|
424
|
+
--mcp-only MCP only: For Claude Code integration
|
|
425
|
+
--http-only HTTP only: Legacy mode for browser debugging
|
|
426
|
+
|
|
377
427
|
Examples:
|
|
378
|
-
npx remote-log-server
|
|
379
|
-
npx remote-log-server --port 9085
|
|
380
|
-
npx remote-log-server --
|
|
381
|
-
npx remote-log-server --
|
|
428
|
+
npx remote-log-server # Start dual mode (HTTP + MCP)
|
|
429
|
+
npx remote-log-server --port 9085 # Custom port
|
|
430
|
+
npx remote-log-server --mcp-only # MCP server only (for Claude Code)
|
|
431
|
+
npx remote-log-server --http-only # HTTP server only (legacy)
|
|
432
|
+
npx remote-log-server --cert cert.crt --key key.key # Use HTTPS with custom certs
|
|
382
433
|
npx remote-log-server --log-file ./tmp/logs.jsonl # Also write to file
|
|
383
434
|
`;
|
|
384
435
|
/**
|
|
@@ -418,8 +469,15 @@ export function parseArgs(args) {
|
|
|
418
469
|
options.logFile = nextArg;
|
|
419
470
|
i++;
|
|
420
471
|
break;
|
|
421
|
-
case "--
|
|
422
|
-
|
|
472
|
+
case "--mcp":
|
|
473
|
+
// Legacy alias for --mcp-only. Only set mcpOnly now.
|
|
474
|
+
options.mcpOnly = true;
|
|
475
|
+
break;
|
|
476
|
+
case "--mcp-only":
|
|
477
|
+
options.mcpOnly = true;
|
|
478
|
+
break;
|
|
479
|
+
case "--http-only":
|
|
480
|
+
options.httpOnly = true;
|
|
423
481
|
break;
|
|
424
482
|
case "--quiet":
|
|
425
483
|
case "-q":
|
|
@@ -436,7 +494,7 @@ export function parseArgs(args) {
|
|
|
436
494
|
/**
|
|
437
495
|
* Parse command line arguments and start the server.
|
|
438
496
|
*/
|
|
439
|
-
export function main() {
|
|
497
|
+
export async function main() {
|
|
440
498
|
const args = process.argv.slice(2);
|
|
441
499
|
const result = parseArgs(args);
|
|
442
500
|
if (result.showHelp) {
|
|
@@ -448,6 +506,84 @@ export function main() {
|
|
|
448
506
|
console.error(result.error);
|
|
449
507
|
process.exit(1);
|
|
450
508
|
}
|
|
451
|
-
|
|
509
|
+
const { options } = result;
|
|
510
|
+
// Determine mode: mcp-only, http-only, or dual (default)
|
|
511
|
+
// All modes now use createDualServer with different options
|
|
512
|
+
const { createDualServer } = await import("./dual-server.js");
|
|
513
|
+
if (options.mcpOnly) {
|
|
514
|
+
// MCP-only mode: HTTP only serves /log endpoint, MCP enabled
|
|
515
|
+
const dualServer = await createDualServer({
|
|
516
|
+
httpPort: options.port ?? 9080,
|
|
517
|
+
httpHost: options.host ?? "localhost",
|
|
518
|
+
httpEnabled: true,
|
|
519
|
+
mcpEnabled: true,
|
|
520
|
+
quiet: options.quiet ?? false,
|
|
521
|
+
logReceiveOnly: true, // Only serve /log and /health endpoints
|
|
522
|
+
certPath: options.certPath,
|
|
523
|
+
keyPath: options.keyPath,
|
|
524
|
+
});
|
|
525
|
+
// Handle graceful shutdown
|
|
526
|
+
process.on("SIGINT", () => {
|
|
527
|
+
// eslint-disable-next-line no-console
|
|
528
|
+
console.log("\nShutting down...");
|
|
529
|
+
void dualServer.shutdown().then(() => {
|
|
530
|
+
process.exit(0);
|
|
531
|
+
});
|
|
532
|
+
});
|
|
533
|
+
if (!options.quiet) {
|
|
534
|
+
// eslint-disable-next-line no-console
|
|
535
|
+
console.log("MCP mode: Log receive endpoint and MCP tools running");
|
|
536
|
+
}
|
|
537
|
+
}
|
|
538
|
+
else if (options.httpOnly) {
|
|
539
|
+
// HTTP-only mode: All HTTP endpoints, no MCP
|
|
540
|
+
const dualServer = await createDualServer({
|
|
541
|
+
httpPort: options.port ?? 9080,
|
|
542
|
+
httpHost: options.host ?? "localhost",
|
|
543
|
+
httpEnabled: true,
|
|
544
|
+
mcpEnabled: false,
|
|
545
|
+
quiet: options.quiet ?? false,
|
|
546
|
+
certPath: options.certPath,
|
|
547
|
+
keyPath: options.keyPath,
|
|
548
|
+
logFile: options.logFile,
|
|
549
|
+
});
|
|
550
|
+
// Handle graceful shutdown
|
|
551
|
+
process.on("SIGINT", () => {
|
|
552
|
+
// eslint-disable-next-line no-console
|
|
553
|
+
console.log("\nShutting down...");
|
|
554
|
+
void dualServer.shutdown().then(() => {
|
|
555
|
+
process.exit(0);
|
|
556
|
+
});
|
|
557
|
+
});
|
|
558
|
+
if (!options.quiet) {
|
|
559
|
+
// eslint-disable-next-line no-console
|
|
560
|
+
console.log("HTTP-only mode: All HTTP endpoints running");
|
|
561
|
+
}
|
|
562
|
+
}
|
|
563
|
+
else {
|
|
564
|
+
// Dual mode (default): All HTTP endpoints and MCP
|
|
565
|
+
const dualServer = await createDualServer({
|
|
566
|
+
httpPort: options.port ?? 9080,
|
|
567
|
+
httpHost: options.host ?? "localhost",
|
|
568
|
+
httpEnabled: true,
|
|
569
|
+
mcpEnabled: true,
|
|
570
|
+
quiet: options.quiet ?? false,
|
|
571
|
+
certPath: options.certPath,
|
|
572
|
+
keyPath: options.keyPath,
|
|
573
|
+
logFile: options.logFile,
|
|
574
|
+
});
|
|
575
|
+
// Handle graceful shutdown
|
|
576
|
+
process.on("SIGINT", () => {
|
|
577
|
+
// eslint-disable-next-line no-console
|
|
578
|
+
console.log("\nShutting down...");
|
|
579
|
+
void dualServer.shutdown().then(() => {
|
|
580
|
+
process.exit(0);
|
|
581
|
+
});
|
|
582
|
+
});
|
|
583
|
+
if (!options.quiet) {
|
|
584
|
+
// eslint-disable-next-line no-console
|
|
585
|
+
console.log("Dual mode: HTTP and MCP servers running");
|
|
586
|
+
}
|
|
587
|
+
}
|
|
452
588
|
}
|
|
453
589
|
//# sourceMappingURL=log-server.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"log-server.js","sourceRoot":"","sources":["../../src/server/log-server.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"log-server.js","sourceRoot":"","sources":["../../src/server/log-server.ts"],"names":[],"mappings":"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"}
|