@graphty/remote-logger 1.1.1 → 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/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
|
@@ -0,0 +1,301 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared log storage with session metadata support.
|
|
3
|
+
*
|
|
4
|
+
* This module provides a centralized storage for logs that can be shared
|
|
5
|
+
* between HTTP and MCP interfaces. It supports project markers for
|
|
6
|
+
* filtering logs by git worktree or project.
|
|
7
|
+
* @module server/log-storage
|
|
8
|
+
*/
|
|
9
|
+
import type { JsonlWriter } from "./jsonl-writer.js";
|
|
10
|
+
/**
|
|
11
|
+
* A single log entry.
|
|
12
|
+
*/
|
|
13
|
+
export interface LogEntry {
|
|
14
|
+
/** ISO 8601 timestamp when the log was created */
|
|
15
|
+
time: string;
|
|
16
|
+
/** Log level (e.g., "INFO", "DEBUG", "WARN", "ERROR") */
|
|
17
|
+
level: string;
|
|
18
|
+
/** The log message */
|
|
19
|
+
message: string;
|
|
20
|
+
/** Optional additional data */
|
|
21
|
+
data?: Record<string, unknown>;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* A log entry with session information attached.
|
|
25
|
+
*/
|
|
26
|
+
export interface LogEntryWithSession extends LogEntry {
|
|
27
|
+
/** The session ID this log belongs to */
|
|
28
|
+
sessionId: string;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Metadata about a logging session.
|
|
32
|
+
*/
|
|
33
|
+
export interface SessionMetadata {
|
|
34
|
+
/** Unique identifier for the session */
|
|
35
|
+
sessionId: string;
|
|
36
|
+
/** Project marker for filtering (derived or explicit) */
|
|
37
|
+
projectMarker: string;
|
|
38
|
+
/** Full worktree path if available */
|
|
39
|
+
worktreePath?: string;
|
|
40
|
+
/** Browser page URL if available */
|
|
41
|
+
pageUrl?: string;
|
|
42
|
+
/** Timestamp of first log in session */
|
|
43
|
+
firstLogTime: string;
|
|
44
|
+
/** Timestamp of most recent log in session */
|
|
45
|
+
lastLogTime: string;
|
|
46
|
+
/** Total number of logs in session */
|
|
47
|
+
logCount: number;
|
|
48
|
+
/** Number of ERROR level logs */
|
|
49
|
+
errorCount: number;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Options when adding logs to storage.
|
|
53
|
+
*/
|
|
54
|
+
export interface AddLogsOptions {
|
|
55
|
+
/** Explicit project marker (overrides auto-detection) */
|
|
56
|
+
projectMarker?: string;
|
|
57
|
+
/** Full worktree path */
|
|
58
|
+
worktreePath?: string;
|
|
59
|
+
/** Browser page URL */
|
|
60
|
+
pageUrl?: string;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Filter options for querying logs.
|
|
64
|
+
*/
|
|
65
|
+
export interface LogFilter {
|
|
66
|
+
/** Filter by project marker */
|
|
67
|
+
projectMarker?: string;
|
|
68
|
+
/** Filter by session ID */
|
|
69
|
+
sessionId?: string;
|
|
70
|
+
/** Filter by log level */
|
|
71
|
+
level?: string;
|
|
72
|
+
/** Only return logs after this timestamp */
|
|
73
|
+
since?: string;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Filter options for querying sessions.
|
|
77
|
+
*/
|
|
78
|
+
export interface SessionFilter {
|
|
79
|
+
/** Filter by project marker */
|
|
80
|
+
projectMarker?: string;
|
|
81
|
+
/** Only return sessions with errors */
|
|
82
|
+
hasErrors?: boolean;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Filter options for clearing logs.
|
|
86
|
+
*/
|
|
87
|
+
export interface ClearFilter {
|
|
88
|
+
/** Clear only logs for this project marker */
|
|
89
|
+
projectMarker?: string;
|
|
90
|
+
/** Clear only logs for this session ID */
|
|
91
|
+
sessionId?: string;
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Search options for finding logs by content.
|
|
95
|
+
*/
|
|
96
|
+
export interface SearchOptions {
|
|
97
|
+
/** Search query (substring or regex) */
|
|
98
|
+
query: string;
|
|
99
|
+
/** Treat query as regex (default: false) */
|
|
100
|
+
regex?: boolean;
|
|
101
|
+
/** Filter by project marker */
|
|
102
|
+
projectMarker?: string;
|
|
103
|
+
/** Filter by log level */
|
|
104
|
+
level?: string;
|
|
105
|
+
/** Maximum results to return (default: 100) */
|
|
106
|
+
limit?: number;
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Server mode indicating which interfaces are enabled.
|
|
110
|
+
*/
|
|
111
|
+
export type ServerMode = "mcp-only" | "http-only" | "dual";
|
|
112
|
+
/**
|
|
113
|
+
* HTTP server configuration.
|
|
114
|
+
*/
|
|
115
|
+
export interface ServerConfig {
|
|
116
|
+
/** HTTP server port */
|
|
117
|
+
httpPort: number;
|
|
118
|
+
/** HTTP server host */
|
|
119
|
+
httpHost: string;
|
|
120
|
+
/** Protocol (http or https) */
|
|
121
|
+
protocol: "http" | "https";
|
|
122
|
+
/** Full URL for browser clients to send logs to */
|
|
123
|
+
httpEndpoint: string;
|
|
124
|
+
/** Server mode (mcp-only, http-only, or dual) */
|
|
125
|
+
mode: ServerMode;
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Health status of the log storage.
|
|
129
|
+
*/
|
|
130
|
+
export interface HealthStatus {
|
|
131
|
+
/** Overall status */
|
|
132
|
+
status: "ok" | "error";
|
|
133
|
+
/** Number of active sessions */
|
|
134
|
+
sessionCount: number;
|
|
135
|
+
/** Total number of logs stored */
|
|
136
|
+
totalLogs: number;
|
|
137
|
+
/** Total number of error logs */
|
|
138
|
+
totalErrors: number;
|
|
139
|
+
/** Time since storage was created (milliseconds) */
|
|
140
|
+
uptimeMs: number;
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Full server status including health and configuration.
|
|
144
|
+
*/
|
|
145
|
+
export interface ServerStatus extends HealthStatus {
|
|
146
|
+
/** HTTP server configuration (undefined if HTTP server not configured) */
|
|
147
|
+
server?: ServerConfig;
|
|
148
|
+
/** Number of days logs are retained before automatic cleanup */
|
|
149
|
+
retentionDays: number;
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Options for LogStorage constructor.
|
|
153
|
+
*/
|
|
154
|
+
export interface LogStorageOptions {
|
|
155
|
+
/** Optional JSONL writer for streaming logs to disk */
|
|
156
|
+
jsonlWriter?: JsonlWriter;
|
|
157
|
+
/** Number of days to retain logs (default: 7, can be set via REMOTE_LOG_RETENTION_DAYS env var) */
|
|
158
|
+
retentionDays?: number;
|
|
159
|
+
/** Interval between cleanup checks in milliseconds (default: 1 hour) */
|
|
160
|
+
cleanupIntervalMs?: number;
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Shared log storage with session metadata support.
|
|
164
|
+
*
|
|
165
|
+
* Provides methods for storing, querying, and managing logs across
|
|
166
|
+
* multiple sessions with support for project marker filtering.
|
|
167
|
+
*/
|
|
168
|
+
export declare class LogStorage {
|
|
169
|
+
private sessions;
|
|
170
|
+
private startTime;
|
|
171
|
+
private jsonlWriter?;
|
|
172
|
+
private retentionDays;
|
|
173
|
+
private cleanupTimer?;
|
|
174
|
+
private serverConfig?;
|
|
175
|
+
/**
|
|
176
|
+
* Create a new LogStorage instance.
|
|
177
|
+
* @param options - Optional configuration including JSONL writer
|
|
178
|
+
*/
|
|
179
|
+
constructor(options?: LogStorageOptions);
|
|
180
|
+
/**
|
|
181
|
+
* Get the JSONL writer if configured.
|
|
182
|
+
* @returns The JSONL writer or undefined
|
|
183
|
+
*/
|
|
184
|
+
getJsonlWriter(): JsonlWriter | undefined;
|
|
185
|
+
/**
|
|
186
|
+
* Add logs to storage for a session.
|
|
187
|
+
* @param sessionId - Unique identifier for the session
|
|
188
|
+
* @param logs - Array of log entries to add
|
|
189
|
+
* @param options - Additional options (projectMarker, worktreePath, pageUrl)
|
|
190
|
+
*/
|
|
191
|
+
addLogs(sessionId: string, logs: LogEntry[], options?: AddLogsOptions): void;
|
|
192
|
+
/**
|
|
193
|
+
* Get logs with optional filtering.
|
|
194
|
+
* @param filter - Filter options
|
|
195
|
+
* @returns Array of log entries with session IDs
|
|
196
|
+
*/
|
|
197
|
+
getLogs(filter?: LogFilter): LogEntryWithSession[];
|
|
198
|
+
/**
|
|
199
|
+
* Get the most recent logs across all sessions.
|
|
200
|
+
* @param count - Maximum number of logs to return
|
|
201
|
+
* @param filter - Optional filter to apply before limiting
|
|
202
|
+
* @returns Array of recent log entries (oldest first)
|
|
203
|
+
*/
|
|
204
|
+
getRecentLogs(count: number, filter?: LogFilter): LogEntryWithSession[];
|
|
205
|
+
/**
|
|
206
|
+
* Get only ERROR level logs.
|
|
207
|
+
* @param filter - Optional filter options
|
|
208
|
+
* @returns Array of error log entries
|
|
209
|
+
*/
|
|
210
|
+
getErrors(filter?: Omit<LogFilter, "level">): LogEntryWithSession[];
|
|
211
|
+
/**
|
|
212
|
+
* Get all sessions with their metadata.
|
|
213
|
+
* @param filter - Optional filter options
|
|
214
|
+
* @returns Array of session metadata
|
|
215
|
+
*/
|
|
216
|
+
getSessions(filter?: SessionFilter): SessionMetadata[];
|
|
217
|
+
/**
|
|
218
|
+
* Clear logs with optional filtering.
|
|
219
|
+
* @param filter - Optional filter to limit what is cleared
|
|
220
|
+
* @returns Object with count of cleared sessions
|
|
221
|
+
*/
|
|
222
|
+
clearLogs(filter?: ClearFilter): {
|
|
223
|
+
cleared: number;
|
|
224
|
+
};
|
|
225
|
+
/**
|
|
226
|
+
* Clear all logs (convenience method).
|
|
227
|
+
*/
|
|
228
|
+
clear(): void;
|
|
229
|
+
/**
|
|
230
|
+
* Set the HTTP server configuration.
|
|
231
|
+
* Call this after the HTTP server starts to make endpoint info available.
|
|
232
|
+
* @param config - Server configuration
|
|
233
|
+
*/
|
|
234
|
+
setServerConfig(config: ServerConfig): void;
|
|
235
|
+
/**
|
|
236
|
+
* Get the HTTP server configuration.
|
|
237
|
+
* @returns Server configuration or undefined if not set
|
|
238
|
+
*/
|
|
239
|
+
getServerConfig(): ServerConfig | undefined;
|
|
240
|
+
/**
|
|
241
|
+
* Get health status of the storage.
|
|
242
|
+
* @returns Health status object
|
|
243
|
+
*/
|
|
244
|
+
getHealth(): HealthStatus;
|
|
245
|
+
/**
|
|
246
|
+
* Get full server status including health and configuration.
|
|
247
|
+
* @returns Server status object
|
|
248
|
+
*/
|
|
249
|
+
getStatus(): ServerStatus;
|
|
250
|
+
/**
|
|
251
|
+
* Get logs for a specific session.
|
|
252
|
+
* @param sessionId - The session ID to get logs for
|
|
253
|
+
* @returns Array of log entries for the session
|
|
254
|
+
*/
|
|
255
|
+
getLogsForSession(sessionId: string): LogEntry[];
|
|
256
|
+
/**
|
|
257
|
+
* Get all logs grouped by session ID.
|
|
258
|
+
* @param filter - Optional filter options
|
|
259
|
+
* @param filter.projectMarker - Filter by project marker
|
|
260
|
+
* @returns Object mapping session IDs to log arrays
|
|
261
|
+
*/
|
|
262
|
+
getAllLogsBySession(filter?: {
|
|
263
|
+
projectMarker?: string;
|
|
264
|
+
}): Record<string, LogEntry[]>;
|
|
265
|
+
/**
|
|
266
|
+
* Search logs by content.
|
|
267
|
+
* @param options - Search options
|
|
268
|
+
* @returns Array of matching log entries
|
|
269
|
+
*/
|
|
270
|
+
search(options: SearchOptions): LogEntryWithSession[];
|
|
271
|
+
/**
|
|
272
|
+
* Check if a session exists.
|
|
273
|
+
* @param sessionId - The session ID to check
|
|
274
|
+
* @returns True if the session exists
|
|
275
|
+
*/
|
|
276
|
+
hasSession(sessionId: string): boolean;
|
|
277
|
+
/**
|
|
278
|
+
* Get metadata for a specific session.
|
|
279
|
+
* @param sessionId - The session ID
|
|
280
|
+
* @returns Session metadata or undefined if not found
|
|
281
|
+
*/
|
|
282
|
+
getSessionMetadata(sessionId: string): SessionMetadata | undefined;
|
|
283
|
+
/**
|
|
284
|
+
* Get the configured retention period in days.
|
|
285
|
+
* @returns Number of days logs are retained
|
|
286
|
+
*/
|
|
287
|
+
getRetentionDays(): number;
|
|
288
|
+
/**
|
|
289
|
+
* Stop the periodic cleanup timer.
|
|
290
|
+
* Call this when shutting down to prevent memory leaks.
|
|
291
|
+
*/
|
|
292
|
+
stopCleanupTimer(): void;
|
|
293
|
+
/**
|
|
294
|
+
* Clean up logs older than the retention period.
|
|
295
|
+
* This removes individual logs from sessions, removes sessions
|
|
296
|
+
* that have no remaining logs, and cleans up old JSONL files.
|
|
297
|
+
* @returns Number of sessions that were completely removed
|
|
298
|
+
*/
|
|
299
|
+
cleanupExpiredLogs(): number;
|
|
300
|
+
}
|
|
301
|
+
//# sourceMappingURL=log-storage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"log-storage.d.ts","sourceRoot":"","sources":["../../src/server/log-storage.ts"],"names":[],"mappings":"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"}
|