@agimon-ai/log-sink-mcp 0.8.0 → 0.8.3

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/cli.d.cts ADDED
@@ -0,0 +1 @@
1
+ export { };
package/dist/cli.d.mts ADDED
@@ -0,0 +1 @@
1
+ export { };
@@ -0,0 +1,508 @@
1
+ import { NodeTelemetryHandle, NodeTelemetryLogOptions, NodeTelemetryLogger, NodeTelemetryOptions, TelemetryLevel, createNodeTelemetry, getLogSinkOtelEndpoint, log as logs, trace } from "./telemetry/node.cjs";
2
+ import { Server } from "@modelcontextprotocol/sdk/server/index.js";
3
+ import { Container } from "inversify";
4
+ import { CallToolResult } from "@modelcontextprotocol/sdk/types.js";
5
+ import { z } from "zod";
6
+ import * as _$drizzle_orm_sqlite_core0 from "drizzle-orm/sqlite-core";
7
+
8
+ //#region src/server/index.d.ts
9
+ declare function createServer(existingContainer?: Container): Server;
10
+ //#endregion
11
+ //#region src/types/container.types.d.ts
12
+ /**
13
+ * Dependency Injection Container Types
14
+ *
15
+ * DESIGN PATTERNS:
16
+ * - Dependency Injection with InversifyJS
17
+ * - Symbol-based service identifiers
18
+ *
19
+ * CODING STANDARDS:
20
+ * - Use symbols for DI identifiers to avoid naming collisions
21
+ * - Group symbols by service category
22
+ * - Export TYPES constant for centralized access
23
+ *
24
+ * AVOID:
25
+ * - String-based identifiers (use symbols)
26
+ * - Hardcoded type values
27
+ */
28
+ /**
29
+ * InversifyJS DI symbols for service identification
30
+ */
31
+ declare const TYPES: {
32
+ readonly LogStorageService: symbol;
33
+ readonly EmbeddingService: symbol;
34
+ readonly LogQueryService: symbol;
35
+ readonly LogSearchService: symbol;
36
+ readonly SemanticSearchService: symbol;
37
+ readonly LogRetentionService: symbol;
38
+ readonly HttpServerHealthCheck: symbol;
39
+ readonly HttpServerManager: symbol;
40
+ readonly Database: symbol;
41
+ readonly Logger: symbol;
42
+ readonly HttpServer: symbol;
43
+ readonly McpServer: symbol;
44
+ };
45
+ /**
46
+ * Type for TYPES constant keys
47
+ */
48
+ type TypeKey = keyof typeof TYPES;
49
+ /**
50
+ * Type for TYPES constant values
51
+ */
52
+ type TypeSymbol = (typeof TYPES)[TypeKey];
53
+ //#endregion
54
+ //#region src/models/schema.d.ts
55
+ /**
56
+ * Log Sink Schema
57
+ *
58
+ * DESIGN PATTERNS:
59
+ * - Schema-first design with Drizzle ORM
60
+ * - Type inference from schema definition
61
+ * - FTS5 virtual table for full-text search
62
+ *
63
+ * CODING STANDARDS:
64
+ * - Use text() for string columns (IDs, names, messages)
65
+ * - Use integer() for numeric columns (pids)
66
+ * - Use integer({ mode: 'timestamp' }) for dates
67
+ * - Use text({ mode: 'json' }) for complex objects
68
+ * - Always define primary keys with $defaultFn for ULID generation
69
+ * - Add indexes for foreign keys and frequently queried columns
70
+ * - Table names should be snake_case singular
71
+ *
72
+ * AVOID:
73
+ * - Storing JSON as strings without proper typing
74
+ * - Missing indexes on foreign keys
75
+ * - Nullable primary keys
76
+ * - Using any for column types
77
+ */
78
+ /**
79
+ * Logs table schema
80
+ *
81
+ * Database table: logs
82
+ */
83
+ declare const logs$1: _$drizzle_orm_sqlite_core0.SQLiteTableWithColumns<{
84
+ name: "logs";
85
+ schema: undefined;
86
+ columns: {
87
+ id: _$drizzle_orm_sqlite_core0.SQLiteColumn<{
88
+ name: "id";
89
+ tableName: "logs";
90
+ dataType: "string";
91
+ columnType: "SQLiteText";
92
+ data: string;
93
+ driverParam: string;
94
+ notNull: true;
95
+ hasDefault: true;
96
+ isPrimaryKey: true;
97
+ isAutoincrement: false;
98
+ hasRuntimeDefault: true;
99
+ enumValues: [string, ...string[]];
100
+ baseColumn: never;
101
+ identity: undefined;
102
+ generated: undefined;
103
+ }, {}, {
104
+ length: number | undefined;
105
+ }>;
106
+ timestamp: _$drizzle_orm_sqlite_core0.SQLiteColumn<{
107
+ name: "timestamp";
108
+ tableName: "logs";
109
+ dataType: "date";
110
+ columnType: "SQLiteTimestamp";
111
+ data: Date;
112
+ driverParam: number;
113
+ notNull: true;
114
+ hasDefault: true;
115
+ isPrimaryKey: false;
116
+ isAutoincrement: false;
117
+ hasRuntimeDefault: true;
118
+ enumValues: undefined;
119
+ baseColumn: never;
120
+ identity: undefined;
121
+ generated: undefined;
122
+ }, {}, {}>;
123
+ level: _$drizzle_orm_sqlite_core0.SQLiteColumn<{
124
+ name: "level";
125
+ tableName: "logs";
126
+ dataType: "string";
127
+ columnType: "SQLiteText";
128
+ data: string;
129
+ driverParam: string;
130
+ notNull: true;
131
+ hasDefault: false;
132
+ isPrimaryKey: false;
133
+ isAutoincrement: false;
134
+ hasRuntimeDefault: false;
135
+ enumValues: [string, ...string[]];
136
+ baseColumn: never;
137
+ identity: undefined;
138
+ generated: undefined;
139
+ }, {}, {
140
+ length: number | undefined;
141
+ }>;
142
+ message: _$drizzle_orm_sqlite_core0.SQLiteColumn<{
143
+ name: "message";
144
+ tableName: "logs";
145
+ dataType: "string";
146
+ columnType: "SQLiteText";
147
+ data: string;
148
+ driverParam: string;
149
+ notNull: true;
150
+ hasDefault: false;
151
+ isPrimaryKey: false;
152
+ isAutoincrement: false;
153
+ hasRuntimeDefault: false;
154
+ enumValues: [string, ...string[]];
155
+ baseColumn: never;
156
+ identity: undefined;
157
+ generated: undefined;
158
+ }, {}, {
159
+ length: number | undefined;
160
+ }>;
161
+ traceId: _$drizzle_orm_sqlite_core0.SQLiteColumn<{
162
+ name: "trace_id";
163
+ tableName: "logs";
164
+ dataType: "string";
165
+ columnType: "SQLiteText";
166
+ data: string;
167
+ driverParam: string;
168
+ notNull: false;
169
+ hasDefault: false;
170
+ isPrimaryKey: false;
171
+ isAutoincrement: false;
172
+ hasRuntimeDefault: false;
173
+ enumValues: [string, ...string[]];
174
+ baseColumn: never;
175
+ identity: undefined;
176
+ generated: undefined;
177
+ }, {}, {
178
+ length: number | undefined;
179
+ }>;
180
+ spanId: _$drizzle_orm_sqlite_core0.SQLiteColumn<{
181
+ name: "span_id";
182
+ tableName: "logs";
183
+ dataType: "string";
184
+ columnType: "SQLiteText";
185
+ data: string;
186
+ driverParam: string;
187
+ notNull: false;
188
+ hasDefault: false;
189
+ isPrimaryKey: false;
190
+ isAutoincrement: false;
191
+ hasRuntimeDefault: false;
192
+ enumValues: [string, ...string[]];
193
+ baseColumn: never;
194
+ identity: undefined;
195
+ generated: undefined;
196
+ }, {}, {
197
+ length: number | undefined;
198
+ }>;
199
+ parentSpanId: _$drizzle_orm_sqlite_core0.SQLiteColumn<{
200
+ name: "parent_span_id";
201
+ tableName: "logs";
202
+ dataType: "string";
203
+ columnType: "SQLiteText";
204
+ data: string;
205
+ driverParam: string;
206
+ notNull: false;
207
+ hasDefault: false;
208
+ isPrimaryKey: false;
209
+ isAutoincrement: false;
210
+ hasRuntimeDefault: false;
211
+ enumValues: [string, ...string[]];
212
+ baseColumn: never;
213
+ identity: undefined;
214
+ generated: undefined;
215
+ }, {}, {
216
+ length: number | undefined;
217
+ }>;
218
+ service: _$drizzle_orm_sqlite_core0.SQLiteColumn<{
219
+ name: "service";
220
+ tableName: "logs";
221
+ dataType: "string";
222
+ columnType: "SQLiteText";
223
+ data: string;
224
+ driverParam: string;
225
+ notNull: true;
226
+ hasDefault: false;
227
+ isPrimaryKey: false;
228
+ isAutoincrement: false;
229
+ hasRuntimeDefault: false;
230
+ enumValues: [string, ...string[]];
231
+ baseColumn: never;
232
+ identity: undefined;
233
+ generated: undefined;
234
+ }, {}, {
235
+ length: number | undefined;
236
+ }>;
237
+ hostname: _$drizzle_orm_sqlite_core0.SQLiteColumn<{
238
+ name: "hostname";
239
+ tableName: "logs";
240
+ dataType: "string";
241
+ columnType: "SQLiteText";
242
+ data: string;
243
+ driverParam: string;
244
+ notNull: false;
245
+ hasDefault: false;
246
+ isPrimaryKey: false;
247
+ isAutoincrement: false;
248
+ hasRuntimeDefault: false;
249
+ enumValues: [string, ...string[]];
250
+ baseColumn: never;
251
+ identity: undefined;
252
+ generated: undefined;
253
+ }, {}, {
254
+ length: number | undefined;
255
+ }>;
256
+ pid: _$drizzle_orm_sqlite_core0.SQLiteColumn<{
257
+ name: "pid";
258
+ tableName: "logs";
259
+ dataType: "number";
260
+ columnType: "SQLiteInteger";
261
+ data: number;
262
+ driverParam: number;
263
+ notNull: false;
264
+ hasDefault: false;
265
+ isPrimaryKey: false;
266
+ isAutoincrement: false;
267
+ hasRuntimeDefault: false;
268
+ enumValues: undefined;
269
+ baseColumn: never;
270
+ identity: undefined;
271
+ generated: undefined;
272
+ }, {}, {}>;
273
+ metadata: _$drizzle_orm_sqlite_core0.SQLiteColumn<{
274
+ name: "metadata";
275
+ tableName: "logs";
276
+ dataType: "json";
277
+ columnType: "SQLiteTextJson";
278
+ data: unknown;
279
+ driverParam: string;
280
+ notNull: false;
281
+ hasDefault: false;
282
+ isPrimaryKey: false;
283
+ isAutoincrement: false;
284
+ hasRuntimeDefault: false;
285
+ enumValues: undefined;
286
+ baseColumn: never;
287
+ identity: undefined;
288
+ generated: undefined;
289
+ }, {}, {}>;
290
+ errorType: _$drizzle_orm_sqlite_core0.SQLiteColumn<{
291
+ name: "error_type";
292
+ tableName: "logs";
293
+ dataType: "string";
294
+ columnType: "SQLiteText";
295
+ data: string;
296
+ driverParam: string;
297
+ notNull: false;
298
+ hasDefault: false;
299
+ isPrimaryKey: false;
300
+ isAutoincrement: false;
301
+ hasRuntimeDefault: false;
302
+ enumValues: [string, ...string[]];
303
+ baseColumn: never;
304
+ identity: undefined;
305
+ generated: undefined;
306
+ }, {}, {
307
+ length: number | undefined;
308
+ }>;
309
+ errorMessage: _$drizzle_orm_sqlite_core0.SQLiteColumn<{
310
+ name: "error_message";
311
+ tableName: "logs";
312
+ dataType: "string";
313
+ columnType: "SQLiteText";
314
+ data: string;
315
+ driverParam: string;
316
+ notNull: false;
317
+ hasDefault: false;
318
+ isPrimaryKey: false;
319
+ isAutoincrement: false;
320
+ hasRuntimeDefault: false;
321
+ enumValues: [string, ...string[]];
322
+ baseColumn: never;
323
+ identity: undefined;
324
+ generated: undefined;
325
+ }, {}, {
326
+ length: number | undefined;
327
+ }>;
328
+ errorStack: _$drizzle_orm_sqlite_core0.SQLiteColumn<{
329
+ name: "error_stack";
330
+ tableName: "logs";
331
+ dataType: "string";
332
+ columnType: "SQLiteText";
333
+ data: string;
334
+ driverParam: string;
335
+ notNull: false;
336
+ hasDefault: false;
337
+ isPrimaryKey: false;
338
+ isAutoincrement: false;
339
+ hasRuntimeDefault: false;
340
+ enumValues: [string, ...string[]];
341
+ baseColumn: never;
342
+ identity: undefined;
343
+ generated: undefined;
344
+ }, {}, {
345
+ length: number | undefined;
346
+ }>;
347
+ createdAt: _$drizzle_orm_sqlite_core0.SQLiteColumn<{
348
+ name: "created_at";
349
+ tableName: "logs";
350
+ dataType: "date";
351
+ columnType: "SQLiteTimestamp";
352
+ data: Date;
353
+ driverParam: number;
354
+ notNull: true;
355
+ hasDefault: true;
356
+ isPrimaryKey: false;
357
+ isAutoincrement: false;
358
+ hasRuntimeDefault: true;
359
+ enumValues: undefined;
360
+ baseColumn: never;
361
+ identity: undefined;
362
+ generated: undefined;
363
+ }, {}, {}>;
364
+ };
365
+ dialect: "sqlite";
366
+ }>;
367
+ /**
368
+ * Type for selecting a log from database
369
+ */
370
+ type Log = typeof logs$1.$inferSelect;
371
+ /**
372
+ * Type for inserting a log into database
373
+ */
374
+ type NewLog = typeof logs$1.$inferInsert;
375
+ //#endregion
376
+ //#region src/types/log.types.d.ts
377
+ /**
378
+ * Log entry from database (inferred from Drizzle schema)
379
+ */
380
+ type LogEntry = Log;
381
+ /**
382
+ * New log entry for insertion (inferred from Drizzle schema)
383
+ */
384
+ type NewLogEntry = NewLog;
385
+ /**
386
+ * Log level enum
387
+ */
388
+ declare enum LogLevel {
389
+ TRACE = "trace",
390
+ DEBUG = "debug",
391
+ INFO = "info",
392
+ WARN = "warn",
393
+ ERROR = "error",
394
+ FATAL = "fatal"
395
+ }
396
+ /**
397
+ * Query filters for log retrieval
398
+ */
399
+ interface QueryFilters {
400
+ level?: LogLevel | LogLevel[];
401
+ service?: string | string[];
402
+ traceId?: string;
403
+ spanId?: string;
404
+ errorType?: string;
405
+ startTime?: Date;
406
+ endTime?: Date;
407
+ limit?: number;
408
+ offset?: number;
409
+ }
410
+ /**
411
+ * Search options for full-text search
412
+ */
413
+ interface SearchOptions {
414
+ query: string;
415
+ service?: string | string[];
416
+ level?: LogLevel | LogLevel[];
417
+ startTime?: Date;
418
+ endTime?: Date;
419
+ limit?: number;
420
+ offset?: number;
421
+ }
422
+ /**
423
+ * Log aggregation result
424
+ */
425
+ interface LogAggregation {
426
+ service: string;
427
+ level: LogLevel;
428
+ count: number;
429
+ }
430
+ /**
431
+ * Trace timeline entry
432
+ */
433
+ interface TraceTimelineEntry {
434
+ timestamp: Date;
435
+ service: string;
436
+ spanId: string | null;
437
+ parentSpanId?: string | null;
438
+ level: LogLevel;
439
+ message: string;
440
+ duration?: number;
441
+ }
442
+ //#endregion
443
+ //#region src/types/index.d.ts
444
+ /**
445
+ * Tool definition for MCP
446
+ */
447
+ interface ToolDefinition {
448
+ name: string;
449
+ description: string;
450
+ inputSchema: Record<string, unknown>;
451
+ }
452
+ /**
453
+ * Base tool interface following MCP SDK patterns
454
+ */
455
+ interface Tool<TInput = unknown> {
456
+ getDefinition(): ToolDefinition;
457
+ getInputSchema(): z.ZodObject<z.ZodRawShape>;
458
+ execute(input: TInput): Promise<CallToolResult>;
459
+ }
460
+ /**
461
+ * Transport mode types
462
+ */
463
+ declare enum TransportMode {
464
+ STDIO = "stdio"
465
+ }
466
+ /**
467
+ * Transport configuration options
468
+ */
469
+ interface TransportConfig {
470
+ mode: TransportMode;
471
+ }
472
+ /**
473
+ * Base interface for all transport handlers
474
+ */
475
+ interface TransportHandler {
476
+ start(): Promise<void>;
477
+ stop(): Promise<void>;
478
+ }
479
+ //#endregion
480
+ //#region src/transports/stdio.d.ts
481
+ /**
482
+ * Stdio transport handler for MCP server
483
+ * Used for command-line and direct integrations
484
+ */
485
+ declare class StdioTransportHandler implements TransportHandler {
486
+ private server;
487
+ private transport;
488
+ constructor(server: Server);
489
+ start(): Promise<void>;
490
+ stop(): Promise<void>;
491
+ }
492
+ //#endregion
493
+ //#region src/utils/resolveLogSinkPort.d.ts
494
+ interface LogSinkPortResult {
495
+ port: number;
496
+ host: string;
497
+ endpoint: string;
498
+ }
499
+ interface ResolveLogSinkPortOptions {
500
+ env?: NodeJS.ProcessEnv;
501
+ workspaceRoot: string;
502
+ healthCheck?: boolean;
503
+ }
504
+ declare function resolveLogSinkPort(options: ResolveLogSinkPortOptions): Promise<LogSinkPortResult | undefined>;
505
+ declare function resolveLogSinkOtelEndpoint(options: ResolveLogSinkPortOptions): Promise<string | undefined>;
506
+ //#endregion
507
+ export { LogAggregation, LogEntry, LogLevel, type LogSinkPortResult, NewLogEntry, type NodeTelemetryHandle, type NodeTelemetryLogOptions, type NodeTelemetryLogger, type NodeTelemetryOptions, QueryFilters, type ResolveLogSinkPortOptions, SearchOptions, StdioTransportHandler, TYPES, type TelemetryLevel, Tool, ToolDefinition, TraceTimelineEntry, TransportConfig, TransportHandler, TransportMode, TypeKey, TypeSymbol, createNodeTelemetry, createServer, getLogSinkOtelEndpoint, logs as log, resolveLogSinkOtelEndpoint, resolveLogSinkPort, trace };
508
+ //# sourceMappingURL=index.d.cts.map
@@ -0,0 +1,508 @@
1
+ import { NodeTelemetryHandle, NodeTelemetryLogOptions, NodeTelemetryLogger, NodeTelemetryOptions, TelemetryLevel, createNodeTelemetry, getLogSinkOtelEndpoint, log as logs, trace } from "./telemetry/node.mjs";
2
+ import { Server } from "@modelcontextprotocol/sdk/server/index.js";
3
+ import { CallToolResult } from "@modelcontextprotocol/sdk/types.js";
4
+ import { z } from "zod";
5
+ import { Container } from "inversify";
6
+ import * as _$drizzle_orm_sqlite_core0 from "drizzle-orm/sqlite-core";
7
+
8
+ //#region src/server/index.d.ts
9
+ declare function createServer(existingContainer?: Container): Server;
10
+ //#endregion
11
+ //#region src/types/container.types.d.ts
12
+ /**
13
+ * Dependency Injection Container Types
14
+ *
15
+ * DESIGN PATTERNS:
16
+ * - Dependency Injection with InversifyJS
17
+ * - Symbol-based service identifiers
18
+ *
19
+ * CODING STANDARDS:
20
+ * - Use symbols for DI identifiers to avoid naming collisions
21
+ * - Group symbols by service category
22
+ * - Export TYPES constant for centralized access
23
+ *
24
+ * AVOID:
25
+ * - String-based identifiers (use symbols)
26
+ * - Hardcoded type values
27
+ */
28
+ /**
29
+ * InversifyJS DI symbols for service identification
30
+ */
31
+ declare const TYPES: {
32
+ readonly LogStorageService: symbol;
33
+ readonly EmbeddingService: symbol;
34
+ readonly LogQueryService: symbol;
35
+ readonly LogSearchService: symbol;
36
+ readonly SemanticSearchService: symbol;
37
+ readonly LogRetentionService: symbol;
38
+ readonly HttpServerHealthCheck: symbol;
39
+ readonly HttpServerManager: symbol;
40
+ readonly Database: symbol;
41
+ readonly Logger: symbol;
42
+ readonly HttpServer: symbol;
43
+ readonly McpServer: symbol;
44
+ };
45
+ /**
46
+ * Type for TYPES constant keys
47
+ */
48
+ type TypeKey = keyof typeof TYPES;
49
+ /**
50
+ * Type for TYPES constant values
51
+ */
52
+ type TypeSymbol = (typeof TYPES)[TypeKey];
53
+ //#endregion
54
+ //#region src/models/schema.d.ts
55
+ /**
56
+ * Log Sink Schema
57
+ *
58
+ * DESIGN PATTERNS:
59
+ * - Schema-first design with Drizzle ORM
60
+ * - Type inference from schema definition
61
+ * - FTS5 virtual table for full-text search
62
+ *
63
+ * CODING STANDARDS:
64
+ * - Use text() for string columns (IDs, names, messages)
65
+ * - Use integer() for numeric columns (pids)
66
+ * - Use integer({ mode: 'timestamp' }) for dates
67
+ * - Use text({ mode: 'json' }) for complex objects
68
+ * - Always define primary keys with $defaultFn for ULID generation
69
+ * - Add indexes for foreign keys and frequently queried columns
70
+ * - Table names should be snake_case singular
71
+ *
72
+ * AVOID:
73
+ * - Storing JSON as strings without proper typing
74
+ * - Missing indexes on foreign keys
75
+ * - Nullable primary keys
76
+ * - Using any for column types
77
+ */
78
+ /**
79
+ * Logs table schema
80
+ *
81
+ * Database table: logs
82
+ */
83
+ declare const logs$1: _$drizzle_orm_sqlite_core0.SQLiteTableWithColumns<{
84
+ name: "logs";
85
+ schema: undefined;
86
+ columns: {
87
+ id: _$drizzle_orm_sqlite_core0.SQLiteColumn<{
88
+ name: "id";
89
+ tableName: "logs";
90
+ dataType: "string";
91
+ columnType: "SQLiteText";
92
+ data: string;
93
+ driverParam: string;
94
+ notNull: true;
95
+ hasDefault: true;
96
+ isPrimaryKey: true;
97
+ isAutoincrement: false;
98
+ hasRuntimeDefault: true;
99
+ enumValues: [string, ...string[]];
100
+ baseColumn: never;
101
+ identity: undefined;
102
+ generated: undefined;
103
+ }, {}, {
104
+ length: number | undefined;
105
+ }>;
106
+ timestamp: _$drizzle_orm_sqlite_core0.SQLiteColumn<{
107
+ name: "timestamp";
108
+ tableName: "logs";
109
+ dataType: "date";
110
+ columnType: "SQLiteTimestamp";
111
+ data: Date;
112
+ driverParam: number;
113
+ notNull: true;
114
+ hasDefault: true;
115
+ isPrimaryKey: false;
116
+ isAutoincrement: false;
117
+ hasRuntimeDefault: true;
118
+ enumValues: undefined;
119
+ baseColumn: never;
120
+ identity: undefined;
121
+ generated: undefined;
122
+ }, {}, {}>;
123
+ level: _$drizzle_orm_sqlite_core0.SQLiteColumn<{
124
+ name: "level";
125
+ tableName: "logs";
126
+ dataType: "string";
127
+ columnType: "SQLiteText";
128
+ data: string;
129
+ driverParam: string;
130
+ notNull: true;
131
+ hasDefault: false;
132
+ isPrimaryKey: false;
133
+ isAutoincrement: false;
134
+ hasRuntimeDefault: false;
135
+ enumValues: [string, ...string[]];
136
+ baseColumn: never;
137
+ identity: undefined;
138
+ generated: undefined;
139
+ }, {}, {
140
+ length: number | undefined;
141
+ }>;
142
+ message: _$drizzle_orm_sqlite_core0.SQLiteColumn<{
143
+ name: "message";
144
+ tableName: "logs";
145
+ dataType: "string";
146
+ columnType: "SQLiteText";
147
+ data: string;
148
+ driverParam: string;
149
+ notNull: true;
150
+ hasDefault: false;
151
+ isPrimaryKey: false;
152
+ isAutoincrement: false;
153
+ hasRuntimeDefault: false;
154
+ enumValues: [string, ...string[]];
155
+ baseColumn: never;
156
+ identity: undefined;
157
+ generated: undefined;
158
+ }, {}, {
159
+ length: number | undefined;
160
+ }>;
161
+ traceId: _$drizzle_orm_sqlite_core0.SQLiteColumn<{
162
+ name: "trace_id";
163
+ tableName: "logs";
164
+ dataType: "string";
165
+ columnType: "SQLiteText";
166
+ data: string;
167
+ driverParam: string;
168
+ notNull: false;
169
+ hasDefault: false;
170
+ isPrimaryKey: false;
171
+ isAutoincrement: false;
172
+ hasRuntimeDefault: false;
173
+ enumValues: [string, ...string[]];
174
+ baseColumn: never;
175
+ identity: undefined;
176
+ generated: undefined;
177
+ }, {}, {
178
+ length: number | undefined;
179
+ }>;
180
+ spanId: _$drizzle_orm_sqlite_core0.SQLiteColumn<{
181
+ name: "span_id";
182
+ tableName: "logs";
183
+ dataType: "string";
184
+ columnType: "SQLiteText";
185
+ data: string;
186
+ driverParam: string;
187
+ notNull: false;
188
+ hasDefault: false;
189
+ isPrimaryKey: false;
190
+ isAutoincrement: false;
191
+ hasRuntimeDefault: false;
192
+ enumValues: [string, ...string[]];
193
+ baseColumn: never;
194
+ identity: undefined;
195
+ generated: undefined;
196
+ }, {}, {
197
+ length: number | undefined;
198
+ }>;
199
+ parentSpanId: _$drizzle_orm_sqlite_core0.SQLiteColumn<{
200
+ name: "parent_span_id";
201
+ tableName: "logs";
202
+ dataType: "string";
203
+ columnType: "SQLiteText";
204
+ data: string;
205
+ driverParam: string;
206
+ notNull: false;
207
+ hasDefault: false;
208
+ isPrimaryKey: false;
209
+ isAutoincrement: false;
210
+ hasRuntimeDefault: false;
211
+ enumValues: [string, ...string[]];
212
+ baseColumn: never;
213
+ identity: undefined;
214
+ generated: undefined;
215
+ }, {}, {
216
+ length: number | undefined;
217
+ }>;
218
+ service: _$drizzle_orm_sqlite_core0.SQLiteColumn<{
219
+ name: "service";
220
+ tableName: "logs";
221
+ dataType: "string";
222
+ columnType: "SQLiteText";
223
+ data: string;
224
+ driverParam: string;
225
+ notNull: true;
226
+ hasDefault: false;
227
+ isPrimaryKey: false;
228
+ isAutoincrement: false;
229
+ hasRuntimeDefault: false;
230
+ enumValues: [string, ...string[]];
231
+ baseColumn: never;
232
+ identity: undefined;
233
+ generated: undefined;
234
+ }, {}, {
235
+ length: number | undefined;
236
+ }>;
237
+ hostname: _$drizzle_orm_sqlite_core0.SQLiteColumn<{
238
+ name: "hostname";
239
+ tableName: "logs";
240
+ dataType: "string";
241
+ columnType: "SQLiteText";
242
+ data: string;
243
+ driverParam: string;
244
+ notNull: false;
245
+ hasDefault: false;
246
+ isPrimaryKey: false;
247
+ isAutoincrement: false;
248
+ hasRuntimeDefault: false;
249
+ enumValues: [string, ...string[]];
250
+ baseColumn: never;
251
+ identity: undefined;
252
+ generated: undefined;
253
+ }, {}, {
254
+ length: number | undefined;
255
+ }>;
256
+ pid: _$drizzle_orm_sqlite_core0.SQLiteColumn<{
257
+ name: "pid";
258
+ tableName: "logs";
259
+ dataType: "number";
260
+ columnType: "SQLiteInteger";
261
+ data: number;
262
+ driverParam: number;
263
+ notNull: false;
264
+ hasDefault: false;
265
+ isPrimaryKey: false;
266
+ isAutoincrement: false;
267
+ hasRuntimeDefault: false;
268
+ enumValues: undefined;
269
+ baseColumn: never;
270
+ identity: undefined;
271
+ generated: undefined;
272
+ }, {}, {}>;
273
+ metadata: _$drizzle_orm_sqlite_core0.SQLiteColumn<{
274
+ name: "metadata";
275
+ tableName: "logs";
276
+ dataType: "json";
277
+ columnType: "SQLiteTextJson";
278
+ data: unknown;
279
+ driverParam: string;
280
+ notNull: false;
281
+ hasDefault: false;
282
+ isPrimaryKey: false;
283
+ isAutoincrement: false;
284
+ hasRuntimeDefault: false;
285
+ enumValues: undefined;
286
+ baseColumn: never;
287
+ identity: undefined;
288
+ generated: undefined;
289
+ }, {}, {}>;
290
+ errorType: _$drizzle_orm_sqlite_core0.SQLiteColumn<{
291
+ name: "error_type";
292
+ tableName: "logs";
293
+ dataType: "string";
294
+ columnType: "SQLiteText";
295
+ data: string;
296
+ driverParam: string;
297
+ notNull: false;
298
+ hasDefault: false;
299
+ isPrimaryKey: false;
300
+ isAutoincrement: false;
301
+ hasRuntimeDefault: false;
302
+ enumValues: [string, ...string[]];
303
+ baseColumn: never;
304
+ identity: undefined;
305
+ generated: undefined;
306
+ }, {}, {
307
+ length: number | undefined;
308
+ }>;
309
+ errorMessage: _$drizzle_orm_sqlite_core0.SQLiteColumn<{
310
+ name: "error_message";
311
+ tableName: "logs";
312
+ dataType: "string";
313
+ columnType: "SQLiteText";
314
+ data: string;
315
+ driverParam: string;
316
+ notNull: false;
317
+ hasDefault: false;
318
+ isPrimaryKey: false;
319
+ isAutoincrement: false;
320
+ hasRuntimeDefault: false;
321
+ enumValues: [string, ...string[]];
322
+ baseColumn: never;
323
+ identity: undefined;
324
+ generated: undefined;
325
+ }, {}, {
326
+ length: number | undefined;
327
+ }>;
328
+ errorStack: _$drizzle_orm_sqlite_core0.SQLiteColumn<{
329
+ name: "error_stack";
330
+ tableName: "logs";
331
+ dataType: "string";
332
+ columnType: "SQLiteText";
333
+ data: string;
334
+ driverParam: string;
335
+ notNull: false;
336
+ hasDefault: false;
337
+ isPrimaryKey: false;
338
+ isAutoincrement: false;
339
+ hasRuntimeDefault: false;
340
+ enumValues: [string, ...string[]];
341
+ baseColumn: never;
342
+ identity: undefined;
343
+ generated: undefined;
344
+ }, {}, {
345
+ length: number | undefined;
346
+ }>;
347
+ createdAt: _$drizzle_orm_sqlite_core0.SQLiteColumn<{
348
+ name: "created_at";
349
+ tableName: "logs";
350
+ dataType: "date";
351
+ columnType: "SQLiteTimestamp";
352
+ data: Date;
353
+ driverParam: number;
354
+ notNull: true;
355
+ hasDefault: true;
356
+ isPrimaryKey: false;
357
+ isAutoincrement: false;
358
+ hasRuntimeDefault: true;
359
+ enumValues: undefined;
360
+ baseColumn: never;
361
+ identity: undefined;
362
+ generated: undefined;
363
+ }, {}, {}>;
364
+ };
365
+ dialect: "sqlite";
366
+ }>;
367
+ /**
368
+ * Type for selecting a log from database
369
+ */
370
+ type Log = typeof logs$1.$inferSelect;
371
+ /**
372
+ * Type for inserting a log into database
373
+ */
374
+ type NewLog = typeof logs$1.$inferInsert;
375
+ //#endregion
376
+ //#region src/types/log.types.d.ts
377
+ /**
378
+ * Log entry from database (inferred from Drizzle schema)
379
+ */
380
+ type LogEntry = Log;
381
+ /**
382
+ * New log entry for insertion (inferred from Drizzle schema)
383
+ */
384
+ type NewLogEntry = NewLog;
385
+ /**
386
+ * Log level enum
387
+ */
388
+ declare enum LogLevel {
389
+ TRACE = "trace",
390
+ DEBUG = "debug",
391
+ INFO = "info",
392
+ WARN = "warn",
393
+ ERROR = "error",
394
+ FATAL = "fatal"
395
+ }
396
+ /**
397
+ * Query filters for log retrieval
398
+ */
399
+ interface QueryFilters {
400
+ level?: LogLevel | LogLevel[];
401
+ service?: string | string[];
402
+ traceId?: string;
403
+ spanId?: string;
404
+ errorType?: string;
405
+ startTime?: Date;
406
+ endTime?: Date;
407
+ limit?: number;
408
+ offset?: number;
409
+ }
410
+ /**
411
+ * Search options for full-text search
412
+ */
413
+ interface SearchOptions {
414
+ query: string;
415
+ service?: string | string[];
416
+ level?: LogLevel | LogLevel[];
417
+ startTime?: Date;
418
+ endTime?: Date;
419
+ limit?: number;
420
+ offset?: number;
421
+ }
422
+ /**
423
+ * Log aggregation result
424
+ */
425
+ interface LogAggregation {
426
+ service: string;
427
+ level: LogLevel;
428
+ count: number;
429
+ }
430
+ /**
431
+ * Trace timeline entry
432
+ */
433
+ interface TraceTimelineEntry {
434
+ timestamp: Date;
435
+ service: string;
436
+ spanId: string | null;
437
+ parentSpanId?: string | null;
438
+ level: LogLevel;
439
+ message: string;
440
+ duration?: number;
441
+ }
442
+ //#endregion
443
+ //#region src/types/index.d.ts
444
+ /**
445
+ * Tool definition for MCP
446
+ */
447
+ interface ToolDefinition {
448
+ name: string;
449
+ description: string;
450
+ inputSchema: Record<string, unknown>;
451
+ }
452
+ /**
453
+ * Base tool interface following MCP SDK patterns
454
+ */
455
+ interface Tool<TInput = unknown> {
456
+ getDefinition(): ToolDefinition;
457
+ getInputSchema(): z.ZodObject<z.ZodRawShape>;
458
+ execute(input: TInput): Promise<CallToolResult>;
459
+ }
460
+ /**
461
+ * Transport mode types
462
+ */
463
+ declare enum TransportMode {
464
+ STDIO = "stdio"
465
+ }
466
+ /**
467
+ * Transport configuration options
468
+ */
469
+ interface TransportConfig {
470
+ mode: TransportMode;
471
+ }
472
+ /**
473
+ * Base interface for all transport handlers
474
+ */
475
+ interface TransportHandler {
476
+ start(): Promise<void>;
477
+ stop(): Promise<void>;
478
+ }
479
+ //#endregion
480
+ //#region src/transports/stdio.d.ts
481
+ /**
482
+ * Stdio transport handler for MCP server
483
+ * Used for command-line and direct integrations
484
+ */
485
+ declare class StdioTransportHandler implements TransportHandler {
486
+ private server;
487
+ private transport;
488
+ constructor(server: Server);
489
+ start(): Promise<void>;
490
+ stop(): Promise<void>;
491
+ }
492
+ //#endregion
493
+ //#region src/utils/resolveLogSinkPort.d.ts
494
+ interface LogSinkPortResult {
495
+ port: number;
496
+ host: string;
497
+ endpoint: string;
498
+ }
499
+ interface ResolveLogSinkPortOptions {
500
+ env?: NodeJS.ProcessEnv;
501
+ workspaceRoot: string;
502
+ healthCheck?: boolean;
503
+ }
504
+ declare function resolveLogSinkPort(options: ResolveLogSinkPortOptions): Promise<LogSinkPortResult | undefined>;
505
+ declare function resolveLogSinkOtelEndpoint(options: ResolveLogSinkPortOptions): Promise<string | undefined>;
506
+ //#endregion
507
+ export { LogAggregation, LogEntry, LogLevel, type LogSinkPortResult, NewLogEntry, type NodeTelemetryHandle, type NodeTelemetryLogOptions, type NodeTelemetryLogger, type NodeTelemetryOptions, QueryFilters, type ResolveLogSinkPortOptions, SearchOptions, StdioTransportHandler, TYPES, type TelemetryLevel, Tool, ToolDefinition, TraceTimelineEntry, TransportConfig, TransportHandler, TransportMode, TypeKey, TypeSymbol, createNodeTelemetry, createServer, getLogSinkOtelEndpoint, logs as log, resolveLogSinkOtelEndpoint, resolveLogSinkPort, trace };
508
+ //# sourceMappingURL=index.d.mts.map
@@ -0,0 +1,56 @@
1
+ import { Attributes, Context, trace } from "@opentelemetry/api";
2
+ import { logs } from "@opentelemetry/api-logs";
3
+
4
+ //#region src/telemetry/node.d.ts
5
+ type TelemetryLevel = 'trace' | 'debug' | 'info' | 'warn' | 'error' | 'fatal';
6
+ interface NodeTelemetryLogOptions {
7
+ attributes?: Attributes;
8
+ context?: Context;
9
+ exception?: unknown;
10
+ }
11
+ interface NodeTelemetryLogger {
12
+ trace(message: string, options?: NodeTelemetryLogOptions): void;
13
+ debug(message: string, options?: NodeTelemetryLogOptions): void;
14
+ info(message: string, options?: NodeTelemetryLogOptions): void;
15
+ warn(message: string, options?: NodeTelemetryLogOptions): void;
16
+ error(message: string, options?: NodeTelemetryLogOptions): void;
17
+ fatal(message: string, options?: NodeTelemetryLogOptions): void;
18
+ getTraceContext(): {
19
+ traceId?: string;
20
+ spanId?: string;
21
+ };
22
+ flush(): Promise<void>;
23
+ shutdown(): Promise<void>;
24
+ }
25
+ interface NodeTelemetryOptions {
26
+ env?: NodeJS.ProcessEnv;
27
+ serviceName: string;
28
+ serviceVersion?: string;
29
+ workspaceRoot?: string;
30
+ enableTraces?: boolean;
31
+ enableLogs?: boolean;
32
+ logDir?: string;
33
+ logFileName?: string;
34
+ maxFileSizeBytes?: number;
35
+ maxFileCount?: number;
36
+ }
37
+ interface NodeTelemetryHandle {
38
+ backend: 'logsink' | 'file';
39
+ enabled: boolean;
40
+ trace: typeof trace;
41
+ log: typeof logs;
42
+ logger: NodeTelemetryLogger;
43
+ endpoint?: string;
44
+ filePath?: string;
45
+ flush(): Promise<void>;
46
+ shutdown(): Promise<void>;
47
+ }
48
+ declare function getLogSinkOtelEndpoint(options: {
49
+ env?: NodeJS.ProcessEnv;
50
+ workspaceRoot: string;
51
+ healthCheck?: boolean;
52
+ }): Promise<string | undefined>;
53
+ declare function createNodeTelemetry(options: NodeTelemetryOptions): Promise<NodeTelemetryHandle>;
54
+ //#endregion
55
+ export { NodeTelemetryHandle, NodeTelemetryLogOptions, NodeTelemetryLogger, NodeTelemetryOptions, TelemetryLevel, createNodeTelemetry, getLogSinkOtelEndpoint, logs as log, trace };
56
+ //# sourceMappingURL=node.d.cts.map
@@ -0,0 +1,56 @@
1
+ import { Attributes, Context, trace } from "@opentelemetry/api";
2
+ import { logs } from "@opentelemetry/api-logs";
3
+
4
+ //#region src/telemetry/node.d.ts
5
+ type TelemetryLevel = 'trace' | 'debug' | 'info' | 'warn' | 'error' | 'fatal';
6
+ interface NodeTelemetryLogOptions {
7
+ attributes?: Attributes;
8
+ context?: Context;
9
+ exception?: unknown;
10
+ }
11
+ interface NodeTelemetryLogger {
12
+ trace(message: string, options?: NodeTelemetryLogOptions): void;
13
+ debug(message: string, options?: NodeTelemetryLogOptions): void;
14
+ info(message: string, options?: NodeTelemetryLogOptions): void;
15
+ warn(message: string, options?: NodeTelemetryLogOptions): void;
16
+ error(message: string, options?: NodeTelemetryLogOptions): void;
17
+ fatal(message: string, options?: NodeTelemetryLogOptions): void;
18
+ getTraceContext(): {
19
+ traceId?: string;
20
+ spanId?: string;
21
+ };
22
+ flush(): Promise<void>;
23
+ shutdown(): Promise<void>;
24
+ }
25
+ interface NodeTelemetryOptions {
26
+ env?: NodeJS.ProcessEnv;
27
+ serviceName: string;
28
+ serviceVersion?: string;
29
+ workspaceRoot?: string;
30
+ enableTraces?: boolean;
31
+ enableLogs?: boolean;
32
+ logDir?: string;
33
+ logFileName?: string;
34
+ maxFileSizeBytes?: number;
35
+ maxFileCount?: number;
36
+ }
37
+ interface NodeTelemetryHandle {
38
+ backend: 'logsink' | 'file';
39
+ enabled: boolean;
40
+ trace: typeof trace;
41
+ log: typeof logs;
42
+ logger: NodeTelemetryLogger;
43
+ endpoint?: string;
44
+ filePath?: string;
45
+ flush(): Promise<void>;
46
+ shutdown(): Promise<void>;
47
+ }
48
+ declare function getLogSinkOtelEndpoint(options: {
49
+ env?: NodeJS.ProcessEnv;
50
+ workspaceRoot: string;
51
+ healthCheck?: boolean;
52
+ }): Promise<string | undefined>;
53
+ declare function createNodeTelemetry(options: NodeTelemetryOptions): Promise<NodeTelemetryHandle>;
54
+ //#endregion
55
+ export { NodeTelemetryHandle, NodeTelemetryLogOptions, NodeTelemetryLogger, NodeTelemetryOptions, TelemetryLevel, createNodeTelemetry, getLogSinkOtelEndpoint, logs as log, trace };
56
+ //# sourceMappingURL=node.d.mts.map
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@agimon-ai/log-sink-mcp",
3
3
  "description": "Log sink MCP server with HTTP ingestion and AI analysis",
4
- "version": "0.8.0",
4
+ "version": "0.8.3",
5
5
  "license": "BUSL-1.1",
6
6
  "keywords": [
7
7
  "mcp",
@@ -41,9 +41,9 @@
41
41
  "sqlite-vec": "0.1.9",
42
42
  "ulidx": "2.4.1",
43
43
  "zod": "4.3.6",
44
- "@agimon-ai/foundation-validator": "0.5.0",
45
- "@agimon-ai/foundation-process-registry": "0.8.0",
46
- "@agimon-ai/foundation-port-registry": "0.8.0"
44
+ "@agimon-ai/foundation-process-registry": "0.8.3",
45
+ "@agimon-ai/foundation-validator": "0.5.3",
46
+ "@agimon-ai/foundation-port-registry": "0.8.3"
47
47
  },
48
48
  "devDependencies": {
49
49
  "@types/bun": "1.3.11",