hazo_logs 1.0.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/dist/index.d.ts +27 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +28 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/config_loader.d.ts +12 -0
- package/dist/lib/config_loader.d.ts.map +1 -0
- package/dist/lib/config_loader.js +81 -0
- package/dist/lib/config_loader.js.map +1 -0
- package/dist/lib/context/index.d.ts +5 -0
- package/dist/lib/context/index.d.ts.map +1 -0
- package/dist/lib/context/index.js +5 -0
- package/dist/lib/context/index.js.map +1 -0
- package/dist/lib/context/log-context.d.ts +83 -0
- package/dist/lib/context/log-context.d.ts.map +1 -0
- package/dist/lib/context/log-context.js +136 -0
- package/dist/lib/context/log-context.js.map +1 -0
- package/dist/lib/hazo_logger.d.ts +40 -0
- package/dist/lib/hazo_logger.d.ts.map +1 -0
- package/dist/lib/hazo_logger.js +82 -0
- package/dist/lib/hazo_logger.js.map +1 -0
- package/dist/lib/index.d.ts +7 -0
- package/dist/lib/index.d.ts.map +1 -0
- package/dist/lib/index.js +5 -0
- package/dist/lib/index.js.map +1 -0
- package/dist/lib/log-reader.d.ts +51 -0
- package/dist/lib/log-reader.d.ts.map +1 -0
- package/dist/lib/log-reader.js +248 -0
- package/dist/lib/log-reader.js.map +1 -0
- package/dist/lib/package_logger.d.ts +27 -0
- package/dist/lib/package_logger.d.ts.map +1 -0
- package/dist/lib/package_logger.js +57 -0
- package/dist/lib/package_logger.js.map +1 -0
- package/dist/lib/transports/console_transport.d.ts +10 -0
- package/dist/lib/transports/console_transport.d.ts.map +1 -0
- package/dist/lib/transports/console_transport.js +21 -0
- package/dist/lib/transports/console_transport.js.map +1 -0
- package/dist/lib/transports/file_transport.d.ts +10 -0
- package/dist/lib/transports/file_transport.d.ts.map +1 -0
- package/dist/lib/transports/file_transport.js +56 -0
- package/dist/lib/transports/file_transport.js.map +1 -0
- package/dist/lib/transports/index.d.ts +3 -0
- package/dist/lib/transports/index.d.ts.map +1 -0
- package/dist/lib/transports/index.js +3 -0
- package/dist/lib/transports/index.js.map +1 -0
- package/dist/lib/types.d.ts +66 -0
- package/dist/lib/types.d.ts.map +1 -0
- package/dist/lib/types.js +5 -0
- package/dist/lib/types.js.map +1 -0
- package/dist/lib/utils/caller_info.d.ts +13 -0
- package/dist/lib/utils/caller_info.d.ts.map +1 -0
- package/dist/lib/utils/caller_info.js +65 -0
- package/dist/lib/utils/caller_info.js.map +1 -0
- package/dist/lib/utils/constants.d.ts +16 -0
- package/dist/lib/utils/constants.d.ts.map +1 -0
- package/dist/lib/utils/constants.js +27 -0
- package/dist/lib/utils/constants.js.map +1 -0
- package/dist/lib/utils/index.d.ts +3 -0
- package/dist/lib/utils/index.d.ts.map +1 -0
- package/dist/lib/utils/index.js +3 -0
- package/dist/lib/utils/index.js.map +1 -0
- package/dist/ui/api/log-api-handler.d.ts +21 -0
- package/dist/ui/api/log-api-handler.d.ts.map +1 -0
- package/dist/ui/api/log-api-handler.js +151 -0
- package/dist/ui/api/log-api-handler.js.map +1 -0
- package/dist/ui/components/LogLevelBadge.d.ts +6 -0
- package/dist/ui/components/LogLevelBadge.d.ts.map +1 -0
- package/dist/ui/components/LogLevelBadge.js +16 -0
- package/dist/ui/components/LogLevelBadge.js.map +1 -0
- package/dist/ui/components/LogPagination.d.ts +6 -0
- package/dist/ui/components/LogPagination.d.ts.map +1 -0
- package/dist/ui/components/LogPagination.js +14 -0
- package/dist/ui/components/LogPagination.js.map +1 -0
- package/dist/ui/components/LogTable.d.ts +6 -0
- package/dist/ui/components/LogTable.d.ts.map +1 -0
- package/dist/ui/components/LogTable.js +33 -0
- package/dist/ui/components/LogTable.js.map +1 -0
- package/dist/ui/components/LogTimeline.d.ts +10 -0
- package/dist/ui/components/LogTimeline.d.ts.map +1 -0
- package/dist/ui/components/LogTimeline.js +95 -0
- package/dist/ui/components/LogTimeline.js.map +1 -0
- package/dist/ui/components/LogViewerPage.d.ts +6 -0
- package/dist/ui/components/LogViewerPage.d.ts.map +1 -0
- package/dist/ui/components/LogViewerPage.js +273 -0
- package/dist/ui/components/LogViewerPage.js.map +1 -0
- package/dist/ui/index.d.ts +12 -0
- package/dist/ui/index.d.ts.map +1 -0
- package/dist/ui/index.js +12 -0
- package/dist/ui/index.js.map +1 -0
- package/dist/ui/middleware/with-log-auth.d.ts +25 -0
- package/dist/ui/middleware/with-log-auth.d.ts.map +1 -0
- package/dist/ui/middleware/with-log-auth.js +49 -0
- package/dist/ui/middleware/with-log-auth.js.map +1 -0
- package/dist/ui/server.d.ts +9 -0
- package/dist/ui/server.d.ts.map +1 -0
- package/dist/ui/server.js +10 -0
- package/dist/ui/server.js.map +1 -0
- package/dist/ui/types.d.ts +135 -0
- package/dist/ui/types.d.ts.map +1 -0
- package/dist/ui/types.js +5 -0
- package/dist/ui/types.js.map +1 -0
- package/hazo_logs_config.example.ini +47 -0
- package/package.json +81 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"caller_info.js","sourceRoot":"","sources":["../../../src/lib/utils/caller_info.ts"],"names":[],"mappings":"AAAA;;GAEG;AAOH;;;GAGG;AACH,MAAM,UAAU,aAAa;IAC3B,MAAM,yBAAyB,GAAG,KAAK,CAAC,iBAAiB,CAAC;IAE1D,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,KAAK,EAAE,CAAC;QACxB,KAAK,CAAC,iBAAiB,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC;QAC9C,MAAM,KAAK,GAAG,GAAG,CAAC,KAAqC,CAAC;QACxD,KAAK,CAAC,iBAAiB,GAAG,yBAAyB,CAAC;QAEpD,sCAAsC;QACtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACtC,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACvB,MAAM,QAAQ,GAAG,KAAK,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC;YAE3C,sBAAsB;YACtB,IAAI,CAAC,QAAQ;gBAAE,SAAS;YAExB,oDAAoD;YACpD,IAAI,eAAe,CAAC,QAAQ,CAAC;gBAAE,SAAS;YAExC,kBAAkB;YAClB,OAAO;gBACL,QAAQ,EAAE,eAAe,CAAC,QAAQ,CAAC;gBACnC,IAAI,EAAE,KAAK,CAAC,aAAa,EAAE,IAAI,CAAC;aACjC,CAAC;QACJ,CAAC;QAED,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;IAC1C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;IAC1C,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,eAAe,CAAC,QAAgB;IACvC,MAAM,OAAO,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC;IAEvC,sBAAsB;IACtB,IAAI,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC;QAAE,OAAO,IAAI,CAAC;IAE7C,iEAAiE;IACjE,IAAI,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC;QAAE,OAAO,IAAI,CAAC;IAElD,4DAA4D;IAC5D,4FAA4F;IAC5F,IACE,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAC;QACrC,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAC;QACtC,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAC;QACvC,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAC,EACxC,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,SAAS,eAAe,CAAC,QAAgB;IACvC,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACtC,OAAO,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,QAAQ,CAAC;AAC7C,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Default configuration values for hazo_logs
|
|
3
|
+
*/
|
|
4
|
+
import type { HazoLogConfig } from '../types.js';
|
|
5
|
+
export declare const DEFAULT_CONFIG: HazoLogConfig;
|
|
6
|
+
/**
|
|
7
|
+
* Console color codes for different log levels
|
|
8
|
+
*/
|
|
9
|
+
export declare const COLORS: {
|
|
10
|
+
readonly error: "\u001B[31m";
|
|
11
|
+
readonly warn: "\u001B[33m";
|
|
12
|
+
readonly info: "\u001B[36m";
|
|
13
|
+
readonly debug: "\u001B[90m";
|
|
14
|
+
readonly reset: "\u001B[0m";
|
|
15
|
+
};
|
|
16
|
+
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/lib/utils/constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD,eAAO,MAAM,cAAc,EAAE,aAY5B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,MAAM;;;;;;CAMT,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Default configuration values for hazo_logs
|
|
3
|
+
*/
|
|
4
|
+
export const DEFAULT_CONFIG = {
|
|
5
|
+
log_directory: './logs',
|
|
6
|
+
log_level: 'info',
|
|
7
|
+
enable_console: true,
|
|
8
|
+
enable_file: true,
|
|
9
|
+
max_file_size: '20m',
|
|
10
|
+
max_files: '14d',
|
|
11
|
+
date_pattern: 'YYYY-MM-DD',
|
|
12
|
+
// Log Viewer UI defaults
|
|
13
|
+
enable_log_viewer: true,
|
|
14
|
+
log_viewer_page_size: 50,
|
|
15
|
+
log_viewer_max_results: 1000,
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* Console color codes for different log levels
|
|
19
|
+
*/
|
|
20
|
+
export const COLORS = {
|
|
21
|
+
error: '\x1b[31m', // Red
|
|
22
|
+
warn: '\x1b[33m', // Yellow
|
|
23
|
+
info: '\x1b[36m', // Cyan
|
|
24
|
+
debug: '\x1b[90m', // Gray
|
|
25
|
+
reset: '\x1b[0m',
|
|
26
|
+
};
|
|
27
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/lib/utils/constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,MAAM,CAAC,MAAM,cAAc,GAAkB;IAC3C,aAAa,EAAE,QAAQ;IACvB,SAAS,EAAE,MAAM;IACjB,cAAc,EAAE,IAAI;IACpB,WAAW,EAAE,IAAI;IACjB,aAAa,EAAE,KAAK;IACpB,SAAS,EAAE,KAAK;IAChB,YAAY,EAAE,YAAY;IAC1B,yBAAyB;IACzB,iBAAiB,EAAE,IAAI;IACvB,oBAAoB,EAAE,EAAE;IACxB,sBAAsB,EAAE,IAAI;CAC7B,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,KAAK,EAAE,UAAU,EAAI,MAAM;IAC3B,IAAI,EAAE,UAAU,EAAK,SAAS;IAC9B,IAAI,EAAE,UAAU,EAAK,OAAO;IAC5B,KAAK,EAAE,UAAU,EAAI,OAAO;IAC5B,KAAK,EAAE,SAAS;CACR,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAmB,MAAM,kBAAkB,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* API Route Handler Factory for Log Viewer
|
|
3
|
+
*/
|
|
4
|
+
import type { LogApiConfig, LogApiHandler } from '../types.js';
|
|
5
|
+
/**
|
|
6
|
+
* Create a Next.js API route handler for log queries
|
|
7
|
+
*
|
|
8
|
+
* @param config - Optional configuration
|
|
9
|
+
* @returns Handler object with GET method
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```typescript
|
|
13
|
+
* // app/api/logs/route.ts
|
|
14
|
+
* import { createLogApiHandler } from 'hazo_logs';
|
|
15
|
+
*
|
|
16
|
+
* const handler = createLogApiHandler();
|
|
17
|
+
* export const { GET } = handler;
|
|
18
|
+
* ```
|
|
19
|
+
*/
|
|
20
|
+
export declare function createLogApiHandler(config?: LogApiConfig): LogApiHandler;
|
|
21
|
+
//# sourceMappingURL=log-api-handler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"log-api-handler.d.ts","sourceRoot":"","sources":["../../../src/ui/api/log-api-handler.ts"],"names":[],"mappings":"AAAA;;GAEG;AAYH,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAY/D;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,CAAC,EAAE,YAAY,GAAG,aAAa,CAqCxE"}
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* API Route Handler Factory for Log Viewer
|
|
3
|
+
*/
|
|
4
|
+
import { readLogs, getAvailableLogDates, getUniquePackages, getUniqueExecutionIds, getUniqueSessionIds, getUniqueReferences, } from '../../lib/log-reader.js';
|
|
5
|
+
import { loadConfig } from '../../lib/config_loader.js';
|
|
6
|
+
/**
|
|
7
|
+
* Helper to create JSON responses (compatible with Next.js Response)
|
|
8
|
+
*/
|
|
9
|
+
function jsonResponse(data, status = 200) {
|
|
10
|
+
return new Response(JSON.stringify(data), {
|
|
11
|
+
status,
|
|
12
|
+
headers: { 'Content-Type': 'application/json' },
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Create a Next.js API route handler for log queries
|
|
17
|
+
*
|
|
18
|
+
* @param config - Optional configuration
|
|
19
|
+
* @returns Handler object with GET method
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* ```typescript
|
|
23
|
+
* // app/api/logs/route.ts
|
|
24
|
+
* import { createLogApiHandler } from 'hazo_logs';
|
|
25
|
+
*
|
|
26
|
+
* const handler = createLogApiHandler();
|
|
27
|
+
* export const { GET } = handler;
|
|
28
|
+
* ```
|
|
29
|
+
*/
|
|
30
|
+
export function createLogApiHandler(config) {
|
|
31
|
+
const logDirectory = config?.logDirectory;
|
|
32
|
+
return {
|
|
33
|
+
GET: async (request) => {
|
|
34
|
+
const hazoConfig = loadConfig();
|
|
35
|
+
// Check if log viewer is enabled
|
|
36
|
+
if (!hazoConfig.enable_log_viewer) {
|
|
37
|
+
return jsonResponse({ error: 'Log viewer is disabled' }, 403);
|
|
38
|
+
}
|
|
39
|
+
const { searchParams } = new URL(request.url);
|
|
40
|
+
const action = searchParams.get('action');
|
|
41
|
+
try {
|
|
42
|
+
// Handle different actions
|
|
43
|
+
switch (action) {
|
|
44
|
+
case 'dates':
|
|
45
|
+
return handleGetDates(logDirectory);
|
|
46
|
+
case 'packages':
|
|
47
|
+
return handleGetPackages(logDirectory, searchParams.get('date') || undefined);
|
|
48
|
+
case 'executionIds':
|
|
49
|
+
return handleGetExecutionIds(logDirectory, searchParams.get('date') || undefined);
|
|
50
|
+
case 'sessionIds':
|
|
51
|
+
return handleGetSessionIds(logDirectory, searchParams.get('date') || undefined);
|
|
52
|
+
case 'references':
|
|
53
|
+
return handleGetReferences(logDirectory, searchParams.get('date') || undefined);
|
|
54
|
+
default:
|
|
55
|
+
return handleGetLogs(logDirectory, searchParams);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
catch (error) {
|
|
59
|
+
console.error('[HazoLog] API error:', error);
|
|
60
|
+
return jsonResponse({ error: 'Internal Server Error', message: String(error) }, 500);
|
|
61
|
+
}
|
|
62
|
+
},
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Handle GET /api/logs - Query logs with filters
|
|
67
|
+
*/
|
|
68
|
+
async function handleGetLogs(logDirectory, searchParams) {
|
|
69
|
+
const date = searchParams.get('date') || undefined;
|
|
70
|
+
const levelParam = searchParams.get('level');
|
|
71
|
+
const packageParam = searchParams.get('package');
|
|
72
|
+
const executionIdParam = searchParams.get('executionId');
|
|
73
|
+
const sessionIdParam = searchParams.get('sessionId');
|
|
74
|
+
const referenceParam = searchParams.get('reference');
|
|
75
|
+
const search = searchParams.get('search') || undefined;
|
|
76
|
+
const sortBy = searchParams.get('sortBy');
|
|
77
|
+
const sortOrder = searchParams.get('sortOrder');
|
|
78
|
+
const page = parseInt(searchParams.get('page') || '1', 10);
|
|
79
|
+
const pageSize = parseInt(searchParams.get('pageSize') || '50', 10);
|
|
80
|
+
// Parse level filter (comma-separated)
|
|
81
|
+
const level = levelParam
|
|
82
|
+
? levelParam.split(',').filter(Boolean)
|
|
83
|
+
: undefined;
|
|
84
|
+
// Parse package filter (comma-separated)
|
|
85
|
+
const packageFilter = packageParam
|
|
86
|
+
? packageParam.split(',').filter(Boolean)
|
|
87
|
+
: undefined;
|
|
88
|
+
// Parse execution ID filter (comma-separated)
|
|
89
|
+
const executionId = executionIdParam
|
|
90
|
+
? executionIdParam.split(',').filter(Boolean)
|
|
91
|
+
: undefined;
|
|
92
|
+
// Parse session ID filter (comma-separated)
|
|
93
|
+
const sessionId = sessionIdParam
|
|
94
|
+
? sessionIdParam.split(',').filter(Boolean)
|
|
95
|
+
: undefined;
|
|
96
|
+
// Parse reference filter (comma-separated)
|
|
97
|
+
const reference = referenceParam
|
|
98
|
+
? referenceParam.split(',').filter(Boolean)
|
|
99
|
+
: undefined;
|
|
100
|
+
const result = await readLogs({
|
|
101
|
+
logDirectory,
|
|
102
|
+
date,
|
|
103
|
+
level,
|
|
104
|
+
package: packageFilter,
|
|
105
|
+
executionId,
|
|
106
|
+
sessionId,
|
|
107
|
+
reference,
|
|
108
|
+
search,
|
|
109
|
+
sortBy,
|
|
110
|
+
sortOrder,
|
|
111
|
+
page,
|
|
112
|
+
pageSize,
|
|
113
|
+
});
|
|
114
|
+
return jsonResponse(result);
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Handle GET /api/logs?action=dates - Get available log dates
|
|
118
|
+
*/
|
|
119
|
+
async function handleGetDates(logDirectory) {
|
|
120
|
+
const dates = await getAvailableLogDates(logDirectory);
|
|
121
|
+
return jsonResponse({ dates });
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Handle GET /api/logs?action=packages - Get unique package names
|
|
125
|
+
*/
|
|
126
|
+
async function handleGetPackages(logDirectory, date) {
|
|
127
|
+
const packages = await getUniquePackages(logDirectory, date);
|
|
128
|
+
return jsonResponse({ packages });
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Handle GET /api/logs?action=executionIds - Get unique execution IDs
|
|
132
|
+
*/
|
|
133
|
+
async function handleGetExecutionIds(logDirectory, date) {
|
|
134
|
+
const executionIds = await getUniqueExecutionIds(logDirectory, date);
|
|
135
|
+
return jsonResponse({ executionIds });
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Handle GET /api/logs?action=sessionIds - Get unique session IDs
|
|
139
|
+
*/
|
|
140
|
+
async function handleGetSessionIds(logDirectory, date) {
|
|
141
|
+
const sessionIds = await getUniqueSessionIds(logDirectory, date);
|
|
142
|
+
return jsonResponse({ sessionIds });
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Handle GET /api/logs?action=references - Get unique references
|
|
146
|
+
*/
|
|
147
|
+
async function handleGetReferences(logDirectory, date) {
|
|
148
|
+
const references = await getUniqueReferences(logDirectory, date);
|
|
149
|
+
return jsonResponse({ references });
|
|
150
|
+
}
|
|
151
|
+
//# sourceMappingURL=log-api-handler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"log-api-handler.js","sourceRoot":"","sources":["../../../src/ui/api/log-api-handler.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { LogLevelBadgeProps } from '../types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Color-coded badge for log levels
|
|
4
|
+
*/
|
|
5
|
+
export declare function LogLevelBadge({ level, className }: LogLevelBadgeProps): import("react/jsx-runtime").JSX.Element;
|
|
6
|
+
//# sourceMappingURL=LogLevelBadge.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LogLevelBadge.d.ts","sourceRoot":"","sources":["../../../src/ui/components/LogLevelBadge.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAStD;;GAEG;AACH,wBAAgB,aAAa,CAAC,EAAE,KAAK,EAAE,SAAc,EAAE,EAAE,kBAAkB,2CAU1E"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
const LEVEL_STYLES = {
|
|
4
|
+
error: 'bg-red-100 text-red-700 border-red-200',
|
|
5
|
+
warn: 'bg-yellow-100 text-yellow-700 border-yellow-200',
|
|
6
|
+
info: 'bg-blue-100 text-blue-700 border-blue-200',
|
|
7
|
+
debug: 'bg-gray-100 text-gray-600 border-gray-200',
|
|
8
|
+
};
|
|
9
|
+
/**
|
|
10
|
+
* Color-coded badge for log levels
|
|
11
|
+
*/
|
|
12
|
+
export function LogLevelBadge({ level, className = '' }) {
|
|
13
|
+
const styles = LEVEL_STYLES[level] || LEVEL_STYLES.info;
|
|
14
|
+
return (_jsx("span", { className: `inline-flex items-center px-2 py-0.5 rounded text-xs font-medium border ${styles} ${className}`, children: level.toUpperCase() }));
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=LogLevelBadge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LogLevelBadge.js","sourceRoot":"","sources":["../../../src/ui/components/LogLevelBadge.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAKb,MAAM,YAAY,GAAG;IACnB,KAAK,EAAE,wCAAwC;IAC/C,IAAI,EAAE,iDAAiD;IACvD,IAAI,EAAE,2CAA2C;IACjD,KAAK,EAAE,2CAA2C;CAC1C,CAAC;AAEX;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,EAAE,KAAK,EAAE,SAAS,GAAG,EAAE,EAAsB;IACzE,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,YAAY,CAAC,IAAI,CAAC;IAExD,OAAO,CACL,eACE,SAAS,EAAE,2EAA2E,MAAM,IAAI,SAAS,EAAE,YAE1G,KAAK,CAAC,WAAW,EAAE,GACf,CACR,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { LogPaginationProps } from '../types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Pagination controls for log viewer
|
|
4
|
+
*/
|
|
5
|
+
export declare function LogPagination({ currentPage, totalPages, pageSize, total, onPageChange, onPageSizeChange, }: LogPaginationProps): import("react/jsx-runtime").JSX.Element;
|
|
6
|
+
//# sourceMappingURL=LogPagination.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LogPagination.d.ts","sourceRoot":"","sources":["../../../src/ui/components/LogPagination.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAItD;;GAEG;AACH,wBAAgB,aAAa,CAAC,EAC5B,WAAW,EACX,UAAU,EACV,QAAQ,EACR,KAAK,EACL,YAAY,EACZ,gBAAgB,GACjB,EAAE,kBAAkB,2CAyEpB"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
const PAGE_SIZE_OPTIONS = [25, 50, 100, 200];
|
|
4
|
+
/**
|
|
5
|
+
* Pagination controls for log viewer
|
|
6
|
+
*/
|
|
7
|
+
export function LogPagination({ currentPage, totalPages, pageSize, total, onPageChange, onPageSizeChange, }) {
|
|
8
|
+
const startItem = (currentPage - 1) * pageSize + 1;
|
|
9
|
+
const endItem = Math.min(currentPage * pageSize, total);
|
|
10
|
+
const canGoPrevious = currentPage > 1;
|
|
11
|
+
const canGoNext = currentPage < totalPages;
|
|
12
|
+
return (_jsxs("div", { className: "flex items-center justify-between px-4 py-3 bg-white border-t border-gray-200 sm:px-6", children: [_jsxs("div", { className: "flex items-center text-sm text-gray-700", children: [_jsxs("span", { children: ["Showing ", _jsx("span", { className: "font-medium", children: startItem }), " to", ' ', _jsx("span", { className: "font-medium", children: endItem }), " of", ' ', _jsx("span", { className: "font-medium", children: total }), " results"] }), onPageSizeChange && (_jsxs("span", { className: "ml-4", children: [_jsx("label", { htmlFor: "pageSize", className: "mr-2", children: "Per page:" }), _jsx("select", { id: "pageSize", value: pageSize, onChange: (e) => onPageSizeChange(parseInt(e.target.value, 10)), className: "rounded border-gray-300 text-sm py-1 px-2 focus:ring-blue-500 focus:border-blue-500", children: PAGE_SIZE_OPTIONS.map((size) => (_jsx("option", { value: size, children: size }, size))) })] }))] }), _jsxs("div", { className: "flex items-center space-x-2", children: [_jsx("button", { onClick: () => onPageChange(1), disabled: !canGoPrevious, className: "px-3 py-1 text-sm font-medium text-gray-700 bg-white border border-gray-300 rounded-md hover:bg-gray-50 disabled:opacity-50 disabled:cursor-not-allowed", children: "First" }), _jsx("button", { onClick: () => onPageChange(currentPage - 1), disabled: !canGoPrevious, className: "px-3 py-1 text-sm font-medium text-gray-700 bg-white border border-gray-300 rounded-md hover:bg-gray-50 disabled:opacity-50 disabled:cursor-not-allowed", children: "Previous" }), _jsxs("span", { className: "px-3 py-1 text-sm text-gray-700", children: ["Page ", currentPage, " of ", totalPages] }), _jsx("button", { onClick: () => onPageChange(currentPage + 1), disabled: !canGoNext, className: "px-3 py-1 text-sm font-medium text-gray-700 bg-white border border-gray-300 rounded-md hover:bg-gray-50 disabled:opacity-50 disabled:cursor-not-allowed", children: "Next" }), _jsx("button", { onClick: () => onPageChange(totalPages), disabled: !canGoNext, className: "px-3 py-1 text-sm font-medium text-gray-700 bg-white border border-gray-300 rounded-md hover:bg-gray-50 disabled:opacity-50 disabled:cursor-not-allowed", children: "Last" })] })] }));
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=LogPagination.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LogPagination.js","sourceRoot":"","sources":["../../../src/ui/components/LogPagination.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAKb,MAAM,iBAAiB,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAE7C;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,EAC5B,WAAW,EACX,UAAU,EACV,QAAQ,EACR,KAAK,EACL,YAAY,EACZ,gBAAgB,GACG;IACnB,MAAM,SAAS,GAAG,CAAC,WAAW,GAAG,CAAC,CAAC,GAAG,QAAQ,GAAG,CAAC,CAAC;IACnD,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,GAAG,QAAQ,EAAE,KAAK,CAAC,CAAC;IAExD,MAAM,aAAa,GAAG,WAAW,GAAG,CAAC,CAAC;IACtC,MAAM,SAAS,GAAG,WAAW,GAAG,UAAU,CAAC;IAE3C,OAAO,CACL,eAAK,SAAS,EAAC,uFAAuF,aACpG,eAAK,SAAS,EAAC,yCAAyC,aACtD,uCACU,eAAM,SAAS,EAAC,aAAa,YAAE,SAAS,GAAQ,SAAI,GAAG,EAC/D,eAAM,SAAS,EAAC,aAAa,YAAE,OAAO,GAAQ,SAAI,GAAG,EACrD,eAAM,SAAS,EAAC,aAAa,YAAE,KAAK,GAAQ,gBACvC,EACN,gBAAgB,IAAI,CACnB,gBAAM,SAAS,EAAC,MAAM,aACpB,gBAAO,OAAO,EAAC,UAAU,EAAC,SAAS,EAAC,MAAM,0BAElC,EACR,iBACE,EAAE,EAAC,UAAU,EACb,KAAK,EAAE,QAAQ,EACf,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAC/D,SAAS,EAAC,qFAAqF,YAE9F,iBAAiB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAC/B,iBAAmB,KAAK,EAAE,IAAI,YAC3B,IAAI,IADM,IAAI,CAER,CACV,CAAC,GACK,IACJ,CACR,IACG,EAEN,eAAK,SAAS,EAAC,6BAA6B,aAC1C,iBACE,OAAO,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,EAC9B,QAAQ,EAAE,CAAC,aAAa,EACxB,SAAS,EAAC,yJAAyJ,sBAG5J,EACT,iBACE,OAAO,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,WAAW,GAAG,CAAC,CAAC,EAC5C,QAAQ,EAAE,CAAC,aAAa,EACxB,SAAS,EAAC,yJAAyJ,yBAG5J,EAET,gBAAM,SAAS,EAAC,iCAAiC,sBACzC,WAAW,UAAM,UAAU,IAC5B,EAEP,iBACE,OAAO,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,WAAW,GAAG,CAAC,CAAC,EAC5C,QAAQ,EAAE,CAAC,SAAS,EACpB,SAAS,EAAC,yJAAyJ,qBAG5J,EACT,iBACE,OAAO,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,CAAC,EACvC,QAAQ,EAAE,CAAC,SAAS,EACpB,SAAS,EAAC,yJAAyJ,qBAG5J,IACL,IACF,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LogTable.d.ts","sourceRoot":"","sources":["../../../src/ui/components/LogTable.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAmB,MAAM,aAAa,CAAC;AAElE;;GAEG;AACH,wBAAgB,QAAQ,CAAC,EAAE,IAAI,EAAE,SAAiB,EAAE,EAAE,aAAa,2CAoJlE"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import React, { useState } from 'react';
|
|
4
|
+
import { LogLevelBadge } from './LogLevelBadge.js';
|
|
5
|
+
/**
|
|
6
|
+
* Table component for displaying log entries
|
|
7
|
+
*/
|
|
8
|
+
export function LogTable({ logs, isLoading = false }) {
|
|
9
|
+
const [expandedRow, setExpandedRow] = useState(null);
|
|
10
|
+
const formatTimestamp = (timestamp) => {
|
|
11
|
+
const date = new Date(timestamp);
|
|
12
|
+
return date.toLocaleString();
|
|
13
|
+
};
|
|
14
|
+
const shortenId = (id) => {
|
|
15
|
+
if (!id)
|
|
16
|
+
return '';
|
|
17
|
+
return id.length > 8 ? `${id.slice(0, 8)}...` : id;
|
|
18
|
+
};
|
|
19
|
+
const toggleRow = (index) => {
|
|
20
|
+
setExpandedRow(expandedRow === index ? null : index);
|
|
21
|
+
};
|
|
22
|
+
const hasExpandableContent = (log) => {
|
|
23
|
+
return log.data || log.sessionId || log.reference;
|
|
24
|
+
};
|
|
25
|
+
if (isLoading) {
|
|
26
|
+
return (_jsxs("div", { className: "flex items-center justify-center py-12", children: [_jsx("div", { className: "animate-spin rounded-full h-8 w-8 border-b-2 border-blue-600" }), _jsx("span", { className: "ml-3 text-gray-600", children: "Loading logs..." })] }));
|
|
27
|
+
}
|
|
28
|
+
if (logs.length === 0) {
|
|
29
|
+
return (_jsx("div", { className: "text-center py-12 text-gray-500", children: "No logs found for the selected filters." }));
|
|
30
|
+
}
|
|
31
|
+
return (_jsx("div", { className: "overflow-x-auto", children: _jsxs("table", { className: "min-w-full divide-y divide-gray-200", children: [_jsx("thead", { className: "bg-gray-50", children: _jsxs("tr", { children: [_jsx("th", { className: "px-4 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider", children: "Context" }), _jsx("th", { className: "px-4 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider", children: "Timestamp" }), _jsx("th", { className: "px-4 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider", children: "Level" }), _jsx("th", { className: "px-4 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider", children: "Package" }), _jsx("th", { className: "px-4 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider", children: "Message" }), _jsx("th", { className: "px-4 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider", children: "Location" })] }) }), _jsx("tbody", { className: "bg-white divide-y divide-gray-200", children: logs.map((log, index) => (_jsxs(React.Fragment, { children: [_jsxs("tr", { className: `hover:bg-gray-50 ${hasExpandableContent(log) ? 'cursor-pointer' : ''} ${expandedRow === index ? 'bg-gray-50' : ''}`, onClick: () => hasExpandableContent(log) && toggleRow(index), children: [_jsxs("td", { className: "px-4 py-3 whitespace-nowrap text-sm text-gray-500 font-mono", children: [_jsx("span", { title: log.executionId, children: shortenId(log.executionId) }), log.sessionId && (_jsxs("span", { className: "ml-2 text-blue-600", title: log.sessionId, children: ["S:", shortenId(log.sessionId)] })), log.reference && (_jsxs("span", { className: "ml-2 text-green-600", title: log.reference, children: ["R:", log.reference] }))] }), _jsx("td", { className: "px-4 py-3 whitespace-nowrap text-sm text-gray-600", children: formatTimestamp(log.timestamp) }), _jsx("td", { className: "px-4 py-3 whitespace-nowrap", children: _jsx(LogLevelBadge, { level: log.level }) }), _jsx("td", { className: "px-4 py-3 whitespace-nowrap text-sm font-medium text-gray-900", children: log.package }), _jsxs("td", { className: "px-4 py-3 text-sm text-gray-700 max-w-md truncate", children: [log.message, hasExpandableContent(log) && (_jsx("span", { className: "ml-2 text-gray-400 text-xs", children: expandedRow === index ? '▼' : '▶' }))] }), _jsxs("td", { className: "px-4 py-3 whitespace-nowrap text-sm text-gray-500 font-mono", children: [log.filename, ":", log.line] })] }), expandedRow === index && hasExpandableContent(log) && (_jsx("tr", { children: _jsx("td", { colSpan: 6, className: "px-4 py-3 bg-gray-50", children: _jsxs("div", { className: "space-y-2", children: [_jsxs("div", { className: "flex flex-wrap gap-4 text-xs", children: [_jsxs("div", { children: [_jsx("span", { className: "text-gray-500", children: "Execution ID:" }), ' ', _jsx("span", { className: "font-mono text-gray-700", children: log.executionId })] }), log.sessionId && (_jsxs("div", { children: [_jsx("span", { className: "text-gray-500", children: "Session ID:" }), ' ', _jsx("span", { className: "font-mono text-blue-700", children: log.sessionId })] })), log.reference && (_jsxs("div", { children: [_jsx("span", { className: "text-gray-500", children: "Reference:" }), ' ', _jsx("span", { className: "font-mono text-green-700", children: log.reference })] }))] }), log.data && (_jsxs("div", { children: [_jsx("div", { className: "text-xs text-gray-500 mb-1", children: "Data:" }), _jsx("pre", { className: "text-xs text-gray-700 bg-gray-100 p-3 rounded overflow-x-auto", children: JSON.stringify(log.data, null, 2) })] }))] }) }) }))] }, index))) })] }) }));
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=LogTable.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LogTable.js","sourceRoot":"","sources":["../../../src/ui/components/LogTable.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { LogTimelineProps } from '../types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Timeline component for displaying log entries in a vertical timeline format
|
|
4
|
+
* Features:
|
|
5
|
+
* - Session selector dropdown to filter by session
|
|
6
|
+
* - Package grouping with collapsible sections
|
|
7
|
+
* - Depth indentation for nested context calls
|
|
8
|
+
*/
|
|
9
|
+
export declare function LogTimeline({ logs, isLoading, availableSessions, selectedSession, onSessionChange, groupByPackage, showDepthIndentation, }: LogTimelineProps): import("react/jsx-runtime").JSX.Element;
|
|
10
|
+
//# sourceMappingURL=LogTimeline.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LogTimeline.d.ts","sourceRoot":"","sources":["../../../src/ui/components/LogTimeline.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAmB,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAQrE;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,EAC1B,IAAI,EACJ,SAAS,EACT,iBAAsB,EACtB,eAAe,EACf,eAAe,EACf,cAAqB,EACrB,oBAA2B,GAC5B,EAAE,gBAAgB,2CA4PlB"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { useMemo, useState } from 'react';
|
|
4
|
+
import { LogLevelBadge } from './LogLevelBadge.js';
|
|
5
|
+
/**
|
|
6
|
+
* Timeline component for displaying log entries in a vertical timeline format
|
|
7
|
+
* Features:
|
|
8
|
+
* - Session selector dropdown to filter by session
|
|
9
|
+
* - Package grouping with collapsible sections
|
|
10
|
+
* - Depth indentation for nested context calls
|
|
11
|
+
*/
|
|
12
|
+
export function LogTimeline({ logs, isLoading, availableSessions = [], selectedSession, onSessionChange, groupByPackage = true, showDepthIndentation = true, }) {
|
|
13
|
+
// Track collapsed state for each package group
|
|
14
|
+
const [collapsedPackages, setCollapsedPackages] = useState(new Set());
|
|
15
|
+
// Filter by selected session
|
|
16
|
+
const sessionFilteredLogs = useMemo(() => {
|
|
17
|
+
if (!selectedSession)
|
|
18
|
+
return logs;
|
|
19
|
+
return logs.filter(log => log.sessionId === selectedSession);
|
|
20
|
+
}, [logs, selectedSession]);
|
|
21
|
+
// Sort by timestamp (oldest first for timeline - top to bottom)
|
|
22
|
+
const sortedLogs = useMemo(() => {
|
|
23
|
+
return [...sessionFilteredLogs].sort((a, b) => new Date(a.timestamp).getTime() - new Date(b.timestamp).getTime());
|
|
24
|
+
}, [sessionFilteredLogs]);
|
|
25
|
+
// Group by package if enabled
|
|
26
|
+
const packageGroups = useMemo(() => {
|
|
27
|
+
if (!groupByPackage) {
|
|
28
|
+
return [{ packageName: '', logs: sortedLogs }];
|
|
29
|
+
}
|
|
30
|
+
const groups = new Map();
|
|
31
|
+
// Preserve order of first appearance
|
|
32
|
+
for (const log of sortedLogs) {
|
|
33
|
+
const existing = groups.get(log.package);
|
|
34
|
+
if (existing) {
|
|
35
|
+
existing.push(log);
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
groups.set(log.package, [log]);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
return Array.from(groups.entries()).map(([packageName, packageLogs]) => ({
|
|
42
|
+
packageName,
|
|
43
|
+
logs: packageLogs,
|
|
44
|
+
}));
|
|
45
|
+
}, [sortedLogs, groupByPackage]);
|
|
46
|
+
const togglePackageCollapse = (packageName) => {
|
|
47
|
+
setCollapsedPackages(prev => {
|
|
48
|
+
const next = new Set(prev);
|
|
49
|
+
if (next.has(packageName)) {
|
|
50
|
+
next.delete(packageName);
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
next.add(packageName);
|
|
54
|
+
}
|
|
55
|
+
return next;
|
|
56
|
+
});
|
|
57
|
+
};
|
|
58
|
+
const getDepthIndentation = (depth) => {
|
|
59
|
+
if (!showDepthIndentation || depth === undefined || depth <= 1)
|
|
60
|
+
return 0;
|
|
61
|
+
return Math.min(depth - 1, 4) * 24; // Max 4 levels, 24px each
|
|
62
|
+
};
|
|
63
|
+
const formatTime = (timestamp) => {
|
|
64
|
+
return new Date(timestamp).toLocaleTimeString();
|
|
65
|
+
};
|
|
66
|
+
const formatDate = (timestamp) => {
|
|
67
|
+
return new Date(timestamp).toLocaleDateString();
|
|
68
|
+
};
|
|
69
|
+
const getDotColor = (level) => {
|
|
70
|
+
switch (level) {
|
|
71
|
+
case 'error':
|
|
72
|
+
return 'bg-red-500';
|
|
73
|
+
case 'warn':
|
|
74
|
+
return 'bg-yellow-500';
|
|
75
|
+
case 'info':
|
|
76
|
+
return 'bg-blue-500';
|
|
77
|
+
case 'debug':
|
|
78
|
+
default:
|
|
79
|
+
return 'bg-gray-400';
|
|
80
|
+
}
|
|
81
|
+
};
|
|
82
|
+
if (isLoading) {
|
|
83
|
+
return (_jsxs("div", { className: "flex items-center justify-center py-12", children: [_jsx("div", { className: "animate-spin rounded-full h-8 w-8 border-b-2 border-blue-600" }), _jsx("span", { className: "ml-3 text-gray-600", children: "Loading logs..." })] }));
|
|
84
|
+
}
|
|
85
|
+
return (_jsxs("div", { className: "flex flex-col", children: [_jsxs("div", { className: "px-4 py-3 border-b bg-gray-50 flex items-center gap-4 flex-wrap", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx("label", { htmlFor: "timeline-session-select", className: "text-sm font-medium text-gray-700", children: "Session:" }), _jsxs("select", { id: "timeline-session-select", value: selectedSession || '', onChange: (e) => onSessionChange?.(e.target.value || null), className: "rounded-md border border-gray-300 bg-white px-3 py-1.5 text-sm shadow-sm focus:border-blue-500 focus:ring-1 focus:ring-blue-500 min-w-[220px]", children: [_jsx("option", { value: "", children: "All Sessions" }), availableSessions.map((sessionId) => (_jsx("option", { value: sessionId, children: sessionId }, sessionId)))] })] }), selectedSession && (_jsxs("span", { className: "text-sm text-gray-500", children: ["Showing ", sessionFilteredLogs.length, " log", sessionFilteredLogs.length !== 1 ? 's' : '', " for this session"] }))] }), sessionFilteredLogs.length === 0 ? (_jsx("div", { className: "text-center py-12 text-gray-500", children: selectedSession
|
|
86
|
+
? `No logs found for session: ${selectedSession}`
|
|
87
|
+
: 'No logs found for the selected filters.' })) : (_jsxs("div", { className: "relative px-4 py-6", children: [_jsx("div", { className: "absolute left-8 top-0 bottom-0 w-0.5 bg-gray-200" }), packageGroups.map((group, groupIndex) => {
|
|
88
|
+
const isCollapsed = collapsedPackages.has(group.packageName);
|
|
89
|
+
return (_jsxs("div", { className: "mb-4", children: [groupByPackage && group.packageName && (_jsxs("div", { className: "relative flex items-center mb-4 ml-8 cursor-pointer group", onClick: () => togglePackageCollapse(group.packageName), children: [_jsx("div", { className: "absolute -left-8 w-4 h-4 rounded-sm bg-purple-500 border-2 border-white shadow" }), _jsxs("div", { className: "flex items-center gap-2 ml-4 px-3 py-2 bg-purple-50 rounded-lg border border-purple-200 hover:bg-purple-100 transition-colors", children: [_jsx("svg", { className: `w-4 h-4 text-purple-600 transition-transform ${isCollapsed ? '' : 'rotate-90'}`, fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M9 5l7 7-7 7" }) }), _jsx("span", { className: "text-sm font-semibold text-purple-800", children: group.packageName }), _jsxs("span", { className: "text-xs text-purple-600 bg-purple-200 px-2 py-0.5 rounded-full", children: [group.logs.length, " log", group.logs.length !== 1 ? 's' : ''] })] })] })), !isCollapsed && group.logs.map((log, logIndex) => {
|
|
90
|
+
const indentation = getDepthIndentation(log.depth);
|
|
91
|
+
return (_jsxs("div", { className: "relative flex items-start mb-4 ml-8", style: { paddingLeft: indentation }, children: [_jsx("div", { className: `absolute w-4 h-4 rounded-full border-2 border-white shadow ${getDotColor(log.level)}`, style: { left: indentation - 32 } }), showDepthIndentation && log.depth && log.depth > 1 && (_jsx("div", { className: "absolute top-0 h-full w-0.5 bg-gray-300", style: { left: indentation - 16 } })), _jsxs("div", { className: "flex-1 bg-white rounded-lg border p-4 ml-4 shadow-sm hover:shadow-md transition-shadow", children: [_jsxs("div", { className: "flex items-center justify-between mb-2 flex-wrap gap-2", children: [_jsxs("div", { className: "flex items-center gap-2 flex-wrap", children: [_jsx(LogLevelBadge, { level: log.level }), !groupByPackage && (_jsx("span", { className: "text-sm font-medium text-gray-900", children: log.package })), showDepthIndentation && log.depth && log.depth > 1 && (_jsxs("span", { className: "text-xs bg-gray-100 text-gray-600 px-1.5 py-0.5 rounded", children: ["depth: ", log.depth] }))] }), _jsxs("div", { className: "text-right", children: [_jsx("span", { className: "text-xs text-gray-500", children: formatTime(log.timestamp) }), _jsx("span", { className: "text-xs text-gray-400 ml-2", children: formatDate(log.timestamp) })] })] }), _jsx("p", { className: "text-sm text-gray-700 mb-2", children: log.message }), _jsxs("div", { className: "flex flex-wrap gap-2 text-xs", children: [log.sessionId && !selectedSession && (_jsxs("span", { className: "bg-blue-50 text-blue-700 px-2 py-0.5 rounded border border-blue-200", children: ["Session: ", log.sessionId] })), log.reference && (_jsxs("span", { className: "bg-green-50 text-green-700 px-2 py-0.5 rounded border border-green-200", children: ["Ref: ", log.reference] })), _jsxs("span", { className: "bg-gray-50 text-gray-600 px-2 py-0.5 rounded border border-gray-200", children: [log.filename, ":", log.line] })] }), log.data && (_jsxs("details", { className: "mt-3", children: [_jsx("summary", { className: "text-xs text-blue-600 cursor-pointer hover:text-blue-800", children: "View data" }), _jsx("pre", { className: "mt-2 text-xs bg-gray-50 p-3 rounded overflow-x-auto border", children: JSON.stringify(log.data, null, 2) })] }))] })] }, `${group.packageName}-${logIndex}`));
|
|
92
|
+
})] }, group.packageName || groupIndex));
|
|
93
|
+
})] }))] }));
|
|
94
|
+
}
|
|
95
|
+
//# sourceMappingURL=LogTimeline.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LogTimeline.js","sourceRoot":"","sources":["../../../src/ui/components/LogTimeline.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { LogViewerPageProps } from '../types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Main Log Viewer Page Component
|
|
4
|
+
*/
|
|
5
|
+
export declare function LogViewerPage({ apiBasePath, title, className, embedded, showHeader, }: LogViewerPageProps): import("react/jsx-runtime").JSX.Element;
|
|
6
|
+
//# sourceMappingURL=LogViewerPage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LogViewerPage.d.ts","sourceRoot":"","sources":["../../../src/ui/components/LogViewerPage.tsx"],"names":[],"mappings":"AAcA,OAAO,KAAK,EACV,kBAAkB,EAQnB,MAAM,aAAa,CAAC;AAOrB;;GAEG;AACH,wBAAgB,aAAa,CAAC,EAC5B,WAAyB,EACzB,KAAoB,EACpB,SAAc,EACd,QAAgB,EAChB,UAAiB,GAClB,EAAE,kBAAkB,2CA6apB"}
|