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.
Files changed (102) hide show
  1. package/dist/index.d.ts +27 -0
  2. package/dist/index.d.ts.map +1 -0
  3. package/dist/index.js +28 -0
  4. package/dist/index.js.map +1 -0
  5. package/dist/lib/config_loader.d.ts +12 -0
  6. package/dist/lib/config_loader.d.ts.map +1 -0
  7. package/dist/lib/config_loader.js +81 -0
  8. package/dist/lib/config_loader.js.map +1 -0
  9. package/dist/lib/context/index.d.ts +5 -0
  10. package/dist/lib/context/index.d.ts.map +1 -0
  11. package/dist/lib/context/index.js +5 -0
  12. package/dist/lib/context/index.js.map +1 -0
  13. package/dist/lib/context/log-context.d.ts +83 -0
  14. package/dist/lib/context/log-context.d.ts.map +1 -0
  15. package/dist/lib/context/log-context.js +136 -0
  16. package/dist/lib/context/log-context.js.map +1 -0
  17. package/dist/lib/hazo_logger.d.ts +40 -0
  18. package/dist/lib/hazo_logger.d.ts.map +1 -0
  19. package/dist/lib/hazo_logger.js +82 -0
  20. package/dist/lib/hazo_logger.js.map +1 -0
  21. package/dist/lib/index.d.ts +7 -0
  22. package/dist/lib/index.d.ts.map +1 -0
  23. package/dist/lib/index.js +5 -0
  24. package/dist/lib/index.js.map +1 -0
  25. package/dist/lib/log-reader.d.ts +51 -0
  26. package/dist/lib/log-reader.d.ts.map +1 -0
  27. package/dist/lib/log-reader.js +248 -0
  28. package/dist/lib/log-reader.js.map +1 -0
  29. package/dist/lib/package_logger.d.ts +27 -0
  30. package/dist/lib/package_logger.d.ts.map +1 -0
  31. package/dist/lib/package_logger.js +57 -0
  32. package/dist/lib/package_logger.js.map +1 -0
  33. package/dist/lib/transports/console_transport.d.ts +10 -0
  34. package/dist/lib/transports/console_transport.d.ts.map +1 -0
  35. package/dist/lib/transports/console_transport.js +21 -0
  36. package/dist/lib/transports/console_transport.js.map +1 -0
  37. package/dist/lib/transports/file_transport.d.ts +10 -0
  38. package/dist/lib/transports/file_transport.d.ts.map +1 -0
  39. package/dist/lib/transports/file_transport.js +56 -0
  40. package/dist/lib/transports/file_transport.js.map +1 -0
  41. package/dist/lib/transports/index.d.ts +3 -0
  42. package/dist/lib/transports/index.d.ts.map +1 -0
  43. package/dist/lib/transports/index.js +3 -0
  44. package/dist/lib/transports/index.js.map +1 -0
  45. package/dist/lib/types.d.ts +66 -0
  46. package/dist/lib/types.d.ts.map +1 -0
  47. package/dist/lib/types.js +5 -0
  48. package/dist/lib/types.js.map +1 -0
  49. package/dist/lib/utils/caller_info.d.ts +13 -0
  50. package/dist/lib/utils/caller_info.d.ts.map +1 -0
  51. package/dist/lib/utils/caller_info.js +65 -0
  52. package/dist/lib/utils/caller_info.js.map +1 -0
  53. package/dist/lib/utils/constants.d.ts +16 -0
  54. package/dist/lib/utils/constants.d.ts.map +1 -0
  55. package/dist/lib/utils/constants.js +27 -0
  56. package/dist/lib/utils/constants.js.map +1 -0
  57. package/dist/lib/utils/index.d.ts +3 -0
  58. package/dist/lib/utils/index.d.ts.map +1 -0
  59. package/dist/lib/utils/index.js +3 -0
  60. package/dist/lib/utils/index.js.map +1 -0
  61. package/dist/ui/api/log-api-handler.d.ts +21 -0
  62. package/dist/ui/api/log-api-handler.d.ts.map +1 -0
  63. package/dist/ui/api/log-api-handler.js +151 -0
  64. package/dist/ui/api/log-api-handler.js.map +1 -0
  65. package/dist/ui/components/LogLevelBadge.d.ts +6 -0
  66. package/dist/ui/components/LogLevelBadge.d.ts.map +1 -0
  67. package/dist/ui/components/LogLevelBadge.js +16 -0
  68. package/dist/ui/components/LogLevelBadge.js.map +1 -0
  69. package/dist/ui/components/LogPagination.d.ts +6 -0
  70. package/dist/ui/components/LogPagination.d.ts.map +1 -0
  71. package/dist/ui/components/LogPagination.js +14 -0
  72. package/dist/ui/components/LogPagination.js.map +1 -0
  73. package/dist/ui/components/LogTable.d.ts +6 -0
  74. package/dist/ui/components/LogTable.d.ts.map +1 -0
  75. package/dist/ui/components/LogTable.js +33 -0
  76. package/dist/ui/components/LogTable.js.map +1 -0
  77. package/dist/ui/components/LogTimeline.d.ts +10 -0
  78. package/dist/ui/components/LogTimeline.d.ts.map +1 -0
  79. package/dist/ui/components/LogTimeline.js +95 -0
  80. package/dist/ui/components/LogTimeline.js.map +1 -0
  81. package/dist/ui/components/LogViewerPage.d.ts +6 -0
  82. package/dist/ui/components/LogViewerPage.d.ts.map +1 -0
  83. package/dist/ui/components/LogViewerPage.js +273 -0
  84. package/dist/ui/components/LogViewerPage.js.map +1 -0
  85. package/dist/ui/index.d.ts +12 -0
  86. package/dist/ui/index.d.ts.map +1 -0
  87. package/dist/ui/index.js +12 -0
  88. package/dist/ui/index.js.map +1 -0
  89. package/dist/ui/middleware/with-log-auth.d.ts +25 -0
  90. package/dist/ui/middleware/with-log-auth.d.ts.map +1 -0
  91. package/dist/ui/middleware/with-log-auth.js +49 -0
  92. package/dist/ui/middleware/with-log-auth.js.map +1 -0
  93. package/dist/ui/server.d.ts +9 -0
  94. package/dist/ui/server.d.ts.map +1 -0
  95. package/dist/ui/server.js +10 -0
  96. package/dist/ui/server.js.map +1 -0
  97. package/dist/ui/types.d.ts +135 -0
  98. package/dist/ui/types.d.ts.map +1 -0
  99. package/dist/ui/types.js +5 -0
  100. package/dist/ui/types.js.map +1 -0
  101. package/hazo_logs_config.example.ini +47 -0
  102. 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,3 @@
1
+ export { getCallerInfo, type CallerInfo } from './caller_info.js';
2
+ export { DEFAULT_CONFIG, COLORS } from './constants.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -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,3 @@
1
+ export { getCallerInfo } from './caller_info.js';
2
+ export { DEFAULT_CONFIG, COLORS } from './constants.js';
3
+ //# sourceMappingURL=index.js.map
@@ -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,6 @@
1
+ import type { LogTableProps } from '../types.js';
2
+ /**
3
+ * Table component for displaying log entries
4
+ */
5
+ export declare function LogTable({ logs, isLoading }: LogTableProps): import("react/jsx-runtime").JSX.Element;
6
+ //# sourceMappingURL=LogTable.d.ts.map
@@ -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"}