claude-code-templates 1.5.4 → 1.5.5
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/package.json +1 -1
- package/src/analytics.js +47 -4
package/package.json
CHANGED
package/src/analytics.js
CHANGED
|
@@ -377,7 +377,7 @@ class ClaudeAnalytics {
|
|
|
377
377
|
// Read the actual conversation file
|
|
378
378
|
const content = await fs.readFile(session.filePath, 'utf8');
|
|
379
379
|
const lines = content.trim().split('\n').filter(line => line.trim());
|
|
380
|
-
const
|
|
380
|
+
const rawMessages = lines.map(line => {
|
|
381
381
|
try {
|
|
382
382
|
return JSON.parse(line);
|
|
383
383
|
} catch {
|
|
@@ -385,6 +385,36 @@ class ClaudeAnalytics {
|
|
|
385
385
|
}
|
|
386
386
|
}).filter(Boolean);
|
|
387
387
|
|
|
388
|
+
// Extract actual messages from Claude Code format
|
|
389
|
+
const messages = rawMessages.map(item => {
|
|
390
|
+
if (item.message && item.message.role) {
|
|
391
|
+
let content = '';
|
|
392
|
+
|
|
393
|
+
if (typeof item.message.content === 'string') {
|
|
394
|
+
content = item.message.content;
|
|
395
|
+
} else if (Array.isArray(item.message.content)) {
|
|
396
|
+
content = item.message.content
|
|
397
|
+
.map(block => {
|
|
398
|
+
if (block.type === 'text') return block.text;
|
|
399
|
+
if (block.type === 'tool_use') return `[Tool: ${block.name}]`;
|
|
400
|
+
if (block.type === 'tool_result') return '[Tool Result]';
|
|
401
|
+
return block.content || '';
|
|
402
|
+
})
|
|
403
|
+
.join('\n');
|
|
404
|
+
} else if (item.message.content && item.message.content.length) {
|
|
405
|
+
content = item.message.content[0].text || '';
|
|
406
|
+
}
|
|
407
|
+
|
|
408
|
+
return {
|
|
409
|
+
role: item.message.role,
|
|
410
|
+
content: content || 'No content',
|
|
411
|
+
timestamp: item.timestamp,
|
|
412
|
+
type: item.type
|
|
413
|
+
};
|
|
414
|
+
}
|
|
415
|
+
return null;
|
|
416
|
+
}).filter(Boolean);
|
|
417
|
+
|
|
388
418
|
res.json({
|
|
389
419
|
session: session,
|
|
390
420
|
messages: messages,
|
|
@@ -1006,6 +1036,16 @@ async function createWebDashboard() {
|
|
|
1006
1036
|
return \`\${days}d ago\`;
|
|
1007
1037
|
}
|
|
1008
1038
|
|
|
1039
|
+
function formatMessageTime(timestamp) {
|
|
1040
|
+
const date = new Date(timestamp);
|
|
1041
|
+
return date.toLocaleTimeString('en-US', {
|
|
1042
|
+
hour12: false,
|
|
1043
|
+
hour: '2-digit',
|
|
1044
|
+
minute: '2-digit',
|
|
1045
|
+
second: '2-digit'
|
|
1046
|
+
});
|
|
1047
|
+
}
|
|
1048
|
+
|
|
1009
1049
|
// Filter button handlers
|
|
1010
1050
|
document.addEventListener('DOMContentLoaded', function() {
|
|
1011
1051
|
const filterButtons = document.querySelectorAll('.filter-btn');
|
|
@@ -1111,7 +1151,9 @@ async function createWebDashboard() {
|
|
|
1111
1151
|
<div class="message">
|
|
1112
1152
|
<div class="message-header">
|
|
1113
1153
|
<div class="message-role \${message.role}">\${message.role}</div>
|
|
1114
|
-
<div class="message-time">
|
|
1154
|
+
<div class="message-time">
|
|
1155
|
+
#\${index + 1} • \${message.timestamp ? formatMessageTime(message.timestamp) : 'unknown time'}
|
|
1156
|
+
</div>
|
|
1115
1157
|
</div>
|
|
1116
1158
|
<div class="message-content">\${truncateContent(message.content || 'no content')}</div>
|
|
1117
1159
|
</div>
|
|
@@ -1124,10 +1166,11 @@ async function createWebDashboard() {
|
|
|
1124
1166
|
}
|
|
1125
1167
|
}
|
|
1126
1168
|
|
|
1127
|
-
function truncateContent(content, maxLength =
|
|
1169
|
+
function truncateContent(content, maxLength = 1000) {
|
|
1128
1170
|
if (typeof content !== 'string') return 'no content';
|
|
1171
|
+
if (!content.trim()) return 'empty message';
|
|
1129
1172
|
if (content.length <= maxLength) return content;
|
|
1130
|
-
return content.substring(0, maxLength) + '...';
|
|
1173
|
+
return content.substring(0, maxLength) + '\\n\\n[... message truncated ...]';
|
|
1131
1174
|
}
|
|
1132
1175
|
|
|
1133
1176
|
function formatBytes(bytes) {
|