@autocode-cli/autocode 0.0.41 → 0.0.42
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dashboard.d.ts","sourceRoot":"","sources":["../../src/server/dashboard.ts"],"names":[],"mappings":"AAAA;;GAEG;AAYH;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAgM1C;
|
|
1
|
+
{"version":3,"file":"dashboard.d.ts","sourceRoot":"","sources":["../../src/server/dashboard.ts"],"names":[],"mappings":"AAAA;;GAEG;AAYH;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAgM1C;AAsoED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAsSzE;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAi1C9E"}
|
package/dist/server/dashboard.js
CHANGED
|
@@ -1009,6 +1009,46 @@ function getStyles() {
|
|
|
1009
1009
|
color: var(--text);
|
|
1010
1010
|
margin: 0;
|
|
1011
1011
|
}
|
|
1012
|
+
/* Formatted log entries */
|
|
1013
|
+
.log-entry { margin-bottom: 8px; padding: 8px 12px; border-radius: 4px; border-left: 3px solid transparent; flex-shrink: 0; }
|
|
1014
|
+
.log-entry.timestamp { color: #8b949e; font-size: 11px; border-left-color: #484f58; background: transparent; padding: 4px 12px; }
|
|
1015
|
+
.log-entry.system { color: #8b949e; border-left-color: #484f58; background: rgba(139,148,158,0.1); }
|
|
1016
|
+
.log-entry.user { color: #58a6ff; border-left-color: #58a6ff; background: rgba(88,166,255,0.1); }
|
|
1017
|
+
.log-entry.assistant { color: #7ee787; border-left-color: #7ee787; background: rgba(126,231,135,0.1); }
|
|
1018
|
+
.log-entry.tool-call { color: #d2a8ff; border-left-color: #d2a8ff; background: rgba(210,168,255,0.1); padding: 12px; }
|
|
1019
|
+
.log-entry.tool-result { color: #ffa657; border-left-color: #ffa657; background: rgba(255,166,87,0.1); }
|
|
1020
|
+
.log-entry.error { color: #f85149; border-left-color: #f85149; background: rgba(248,81,73,0.1); }
|
|
1021
|
+
.log-entry.success { color: #7ee787; border-left-color: #7ee787; background: rgba(126,231,135,0.1); }
|
|
1022
|
+
.log-label { font-weight: 600; font-size: 11px; text-transform: uppercase; margin-bottom: 4px; display: block; opacity: 0.8; }
|
|
1023
|
+
.log-content { white-space: pre-wrap; word-break: break-word; }
|
|
1024
|
+
|
|
1025
|
+
/* Code blocks with line numbers */
|
|
1026
|
+
.log-code-block { background: #161b22; border-radius: 6px; overflow: hidden; margin: 8px 0; border: 1px solid #30363d; }
|
|
1027
|
+
.log-code-header { background: #21262d; padding: 8px 12px; font-size: 12px; color: #8b949e; border-bottom: 1px solid #30363d; display: flex; align-items: center; gap: 8px; }
|
|
1028
|
+
.log-code-header::before { content: ''; display: inline-block; width: 12px; height: 12px; background: #ffa657; border-radius: 50%; }
|
|
1029
|
+
.log-code-content { padding: 12px; overflow-x: auto; font-family: 'Fira Code', 'SF Mono', Monaco, monospace; font-size: 12px; line-height: 1.5; max-height: 400px; overflow-y: auto; }
|
|
1030
|
+
.log-code-line { display: flex; min-height: 20px; }
|
|
1031
|
+
.log-line-number { color: #484f58; text-align: right; padding-right: 16px; user-select: none; min-width: 40px; flex-shrink: 0; }
|
|
1032
|
+
.log-line-content { color: #c9d1d9; white-space: pre; }
|
|
1033
|
+
|
|
1034
|
+
/* Message cards */
|
|
1035
|
+
.log-message-card { background: #161b22; border-radius: 8px; margin: 12px 0; overflow: hidden; border: 1px solid #30363d; flex-shrink: 0; }
|
|
1036
|
+
.log-message-header { padding: 10px 14px; display: flex; align-items: center; gap: 8px; font-weight: 500; font-size: 13px; }
|
|
1037
|
+
.log-message-header.assistant-header { background: linear-gradient(135deg, #238636 0%, #2ea043 100%); color: white; }
|
|
1038
|
+
.log-message-header.user-header { background: linear-gradient(135deg, #1f6feb 0%, #388bfd 100%); color: white; }
|
|
1039
|
+
.log-message-header.tool-header { background: linear-gradient(135deg, #8b5cf6 0%, #a78bfa 100%); color: white; }
|
|
1040
|
+
.log-message-header.result-header { background: linear-gradient(135deg, #f97316 0%, #fb923c 100%); color: white; }
|
|
1041
|
+
.log-message-body { padding: 14px; border-top: 1px solid #30363d; color: #c9d1d9; white-space: pre-wrap; word-break: break-word; }
|
|
1042
|
+
|
|
1043
|
+
/* Tool badges */
|
|
1044
|
+
.log-tool-badge { display: inline-flex; align-items: center; gap: 6px; background: rgba(139,92,246,0.2); color: #a78bfa; padding: 4px 10px; border-radius: 12px; font-size: 12px; font-weight: 500; }
|
|
1045
|
+
.log-tool-input { background: #0d1117; border-radius: 4px; padding: 8px 12px; margin-top: 8px; font-family: 'Fira Code', monospace; font-size: 11px; color: #8b949e; max-height: 150px; overflow: auto; white-space: pre-wrap; }
|
|
1046
|
+
|
|
1047
|
+
/* Collapsible raw JSON */
|
|
1048
|
+
.log-raw-details { margin: 8px 0; }
|
|
1049
|
+
.log-raw-summary { cursor: pointer; color: #8b949e; font-size: 12px; padding: 8px; background: rgba(139,148,158,0.1); border-radius: 4px; }
|
|
1050
|
+
.log-raw-summary:hover { background: rgba(139,148,158,0.2); }
|
|
1051
|
+
.log-raw-json { background: #0d1117; border-radius: 4px; padding: 12px; margin-top: 8px; font-size: 11px; color: #8b949e; max-height: 200px; overflow: auto; white-space: pre-wrap; }
|
|
1012
1052
|
@keyframes pulse {
|
|
1013
1053
|
0%, 100% { opacity: 1; }
|
|
1014
1054
|
50% { opacity: 0.5; }
|
|
@@ -2103,10 +2143,125 @@ function getScript() {
|
|
|
2103
2143
|
}
|
|
2104
2144
|
}
|
|
2105
2145
|
|
|
2146
|
+
function escapeHtml(str) {
|
|
2147
|
+
if (typeof str !== 'string') return '';
|
|
2148
|
+
return str.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>').replace(/"/g, '"');
|
|
2149
|
+
}
|
|
2150
|
+
|
|
2151
|
+
function formatCodeBlock(content, filename) {
|
|
2152
|
+
const lines = content.split(/\\\\n|\\n/);
|
|
2153
|
+
let html = '<div class="log-code-block">';
|
|
2154
|
+
if (filename) {
|
|
2155
|
+
html += '<div class="log-code-header">' + escapeHtml(filename) + '</div>';
|
|
2156
|
+
}
|
|
2157
|
+
html += '<div class="log-code-content">';
|
|
2158
|
+
for (const line of lines) {
|
|
2159
|
+
const match = line.match(/^\\s*(\\d+)[→|](.*)$/);
|
|
2160
|
+
if (match) {
|
|
2161
|
+
html += '<div class="log-code-line"><span class="log-line-number">' + match[1] + '</span><span class="log-line-content">' + escapeHtml(match[2]) + '</span></div>';
|
|
2162
|
+
} else if (line.trim()) {
|
|
2163
|
+
html += '<div class="log-code-line"><span class="log-line-content">' + escapeHtml(line) + '</span></div>';
|
|
2164
|
+
}
|
|
2165
|
+
}
|
|
2166
|
+
html += '</div></div>';
|
|
2167
|
+
return html;
|
|
2168
|
+
}
|
|
2169
|
+
|
|
2170
|
+
function formatLogContent(rawContent) {
|
|
2171
|
+
if (!rawContent) return '';
|
|
2172
|
+
const lines = rawContent.split('\\n');
|
|
2173
|
+
const entries = [];
|
|
2174
|
+
|
|
2175
|
+
for (const line of lines) {
|
|
2176
|
+
if (!line.trim()) continue;
|
|
2177
|
+
|
|
2178
|
+
// Timestamp line
|
|
2179
|
+
const timestampMatch = line.match(/^\\[(\\d{4}-\\d{2}-\\d{2}T[^\\]]+)\\]\\s*(.*)$/);
|
|
2180
|
+
if (timestampMatch) {
|
|
2181
|
+
const date = new Date(timestampMatch[1]);
|
|
2182
|
+
const timeStr = date.toLocaleTimeString();
|
|
2183
|
+
entries.push('<div class="log-entry timestamp">' + timeStr + ' - ' + escapeHtml(timestampMatch[2]) + '</div>');
|
|
2184
|
+
continue;
|
|
2185
|
+
}
|
|
2186
|
+
|
|
2187
|
+
// [RAW] - Parse avec regex (pas JSON.parse car les lignes sont coupées)
|
|
2188
|
+
if (line.startsWith('[RAW] ')) {
|
|
2189
|
+
const raw = line.slice(6);
|
|
2190
|
+
|
|
2191
|
+
// Ignorer les lignes de continuation (ne commencent pas par {)
|
|
2192
|
+
if (!raw.startsWith('{')) {
|
|
2193
|
+
continue;
|
|
2194
|
+
}
|
|
2195
|
+
|
|
2196
|
+
// Extraire code source avec numéros de ligne (tool_result)
|
|
2197
|
+
const codeMatch = raw.match(/"content":"(\\s*\\d+[→|][^"]*)/);
|
|
2198
|
+
if (codeMatch) {
|
|
2199
|
+
// Extraire tout le contenu entre "content":" et la fin
|
|
2200
|
+
const contentMatch = raw.match(/"content":"([^"]+)/);
|
|
2201
|
+
if (contentMatch) {
|
|
2202
|
+
const decoded = contentMatch[1].replace(/\\\\n/g, '\\n').replace(/\\\\"/g, '"');
|
|
2203
|
+
entries.push('<div class="log-message-card"><div class="log-message-header result-header">Tool Result</div><div class="log-message-body">' + formatCodeBlock(decoded) + '</div></div>');
|
|
2204
|
+
continue;
|
|
2205
|
+
}
|
|
2206
|
+
}
|
|
2207
|
+
|
|
2208
|
+
// Extraire message assistant texte
|
|
2209
|
+
const textMatch = raw.match(/"type":"text","text":"([^"]+)"/);
|
|
2210
|
+
if (textMatch) {
|
|
2211
|
+
const decoded = textMatch[1].replace(/\\\\n/g, '\\n').replace(/\\\\"/g, '"');
|
|
2212
|
+
entries.push('<div class="log-message-card"><div class="log-message-header assistant-header">Assistant</div><div class="log-message-body">' + escapeHtml(decoded) + '</div></div>');
|
|
2213
|
+
continue;
|
|
2214
|
+
}
|
|
2215
|
+
|
|
2216
|
+
// Extraire tool_use
|
|
2217
|
+
const toolMatch = raw.match(/"type":"tool_use"[^}]*"name":"([^"]+)"/);
|
|
2218
|
+
if (toolMatch) {
|
|
2219
|
+
entries.push('<div class="log-entry tool-call"><span class="log-tool-badge">' + escapeHtml(toolMatch[1]) + '</span></div>');
|
|
2220
|
+
continue;
|
|
2221
|
+
}
|
|
2222
|
+
|
|
2223
|
+
// Ignorer les autres RAW (métadonnées, etc.)
|
|
2224
|
+
continue;
|
|
2225
|
+
}
|
|
2226
|
+
|
|
2227
|
+
// Other prefixed messages
|
|
2228
|
+
if (line.startsWith('[SYSTEM]')) {
|
|
2229
|
+
entries.push('<div class="log-entry system"><span class="log-label">System</span><div class="log-content">' + escapeHtml(line.slice(9)) + '</div></div>');
|
|
2230
|
+
continue;
|
|
2231
|
+
}
|
|
2232
|
+
if (line.startsWith('[ASSISTANT]')) {
|
|
2233
|
+
entries.push('<div class="log-message-card"><div class="log-message-header assistant-header">Assistant</div><div class="log-message-body">' + escapeHtml(line.slice(12)) + '</div></div>');
|
|
2234
|
+
continue;
|
|
2235
|
+
}
|
|
2236
|
+
if (line.startsWith('[TOOL]')) {
|
|
2237
|
+
entries.push('<div class="log-entry tool-call"><span class="log-tool-badge">' + escapeHtml(line.slice(7)) + '</span></div>');
|
|
2238
|
+
continue;
|
|
2239
|
+
}
|
|
2240
|
+
if (line.startsWith('[RESULT]')) {
|
|
2241
|
+
const content = line.slice(9);
|
|
2242
|
+
if (/^\\s*\\d+[→|]/.test(content)) {
|
|
2243
|
+
entries.push('<div class="log-message-card"><div class="log-message-header result-header">Result</div><div class="log-message-body">' + formatCodeBlock(content) + '</div></div>');
|
|
2244
|
+
} else {
|
|
2245
|
+
entries.push('<div class="log-message-card"><div class="log-message-header result-header">Result</div><div class="log-message-body">' + escapeHtml(content.slice(0, 1000)) + (content.length > 1000 ? '...' : '') + '</div></div>');
|
|
2246
|
+
}
|
|
2247
|
+
continue;
|
|
2248
|
+
}
|
|
2249
|
+
if (line.startsWith('[ERROR]')) {
|
|
2250
|
+
entries.push('<div class="log-entry error"><span class="log-label">Error</span><div class="log-content">' + escapeHtml(line.slice(8)) + '</div></div>');
|
|
2251
|
+
continue;
|
|
2252
|
+
}
|
|
2253
|
+
|
|
2254
|
+
// Default
|
|
2255
|
+
entries.push('<div class="log-entry system">' + escapeHtml(line) + '</div>');
|
|
2256
|
+
}
|
|
2257
|
+
|
|
2258
|
+
return entries.join('');
|
|
2259
|
+
}
|
|
2260
|
+
|
|
2106
2261
|
function resetClaudeLog() {
|
|
2107
2262
|
stopLogPolling();
|
|
2108
2263
|
document.getElementById('claude-log-section').style.display = 'none';
|
|
2109
|
-
document.getElementById('claude-log').
|
|
2264
|
+
document.getElementById('claude-log').innerHTML = '';
|
|
2110
2265
|
document.getElementById('claude-log-status').className = 'claude-log-status';
|
|
2111
2266
|
document.getElementById('claude-log-status').textContent = t('status.waiting');
|
|
2112
2267
|
}
|
|
@@ -2118,11 +2273,10 @@ function getScript() {
|
|
|
2118
2273
|
if (json.success && json.data) {
|
|
2119
2274
|
const section = document.getElementById('claude-log-section');
|
|
2120
2275
|
const log = document.getElementById('claude-log');
|
|
2121
|
-
const status = document.getElementById('claude-log-status');
|
|
2122
2276
|
|
|
2123
2277
|
if (json.data.exists || json.data.content) {
|
|
2124
2278
|
section.style.display = 'block';
|
|
2125
|
-
log.
|
|
2279
|
+
log.innerHTML = formatLogContent(json.data.content || '');
|
|
2126
2280
|
// Auto-scroll
|
|
2127
2281
|
log.scrollTop = log.scrollHeight;
|
|
2128
2282
|
}
|
|
@@ -2913,6 +3067,13 @@ export function generateTicketViewPage(ticketKey, lang) {
|
|
|
2913
3067
|
padding: 16px;
|
|
2914
3068
|
border-radius: 8px;
|
|
2915
3069
|
}
|
|
3070
|
+
.log-container {
|
|
3071
|
+
max-height: 70vh;
|
|
3072
|
+
overflow-y: auto;
|
|
3073
|
+
display: flex;
|
|
3074
|
+
flex-direction: column;
|
|
3075
|
+
gap: 8px;
|
|
3076
|
+
}
|
|
2916
3077
|
.actions-bar {
|
|
2917
3078
|
display: flex;
|
|
2918
3079
|
gap: 12px;
|
|
@@ -3109,6 +3270,46 @@ export function generateTicketViewPage(ticketKey, lang) {
|
|
|
3109
3270
|
margin: 0;
|
|
3110
3271
|
margin-top: 12px;
|
|
3111
3272
|
}
|
|
3273
|
+
/* Formatted log entries */
|
|
3274
|
+
.log-entry { margin-bottom: 8px; padding: 8px 12px; border-radius: 4px; border-left: 3px solid transparent; flex-shrink: 0; }
|
|
3275
|
+
.log-entry.timestamp { color: #8b949e; font-size: 11px; border-left-color: #484f58; background: transparent; padding: 4px 12px; }
|
|
3276
|
+
.log-entry.system { color: #8b949e; border-left-color: #484f58; background: rgba(139,148,158,0.1); }
|
|
3277
|
+
.log-entry.user { color: #58a6ff; border-left-color: #58a6ff; background: rgba(88,166,255,0.1); }
|
|
3278
|
+
.log-entry.assistant { color: #7ee787; border-left-color: #7ee787; background: rgba(126,231,135,0.1); }
|
|
3279
|
+
.log-entry.tool-call { color: #d2a8ff; border-left-color: #d2a8ff; background: rgba(210,168,255,0.1); padding: 12px; }
|
|
3280
|
+
.log-entry.tool-result { color: #ffa657; border-left-color: #ffa657; background: rgba(255,166,87,0.1); }
|
|
3281
|
+
.log-entry.error { color: #f85149; border-left-color: #f85149; background: rgba(248,81,73,0.1); }
|
|
3282
|
+
.log-entry.success { color: #7ee787; border-left-color: #7ee787; background: rgba(126,231,135,0.1); }
|
|
3283
|
+
.log-label { font-weight: 600; font-size: 11px; text-transform: uppercase; margin-bottom: 4px; display: block; opacity: 0.8; }
|
|
3284
|
+
.log-content { white-space: pre-wrap; word-break: break-word; }
|
|
3285
|
+
|
|
3286
|
+
/* Code blocks with line numbers */
|
|
3287
|
+
.log-code-block { background: #161b22; border-radius: 6px; overflow: hidden; margin: 8px 0; border: 1px solid #30363d; }
|
|
3288
|
+
.log-code-header { background: #21262d; padding: 8px 12px; font-size: 12px; color: #8b949e; border-bottom: 1px solid #30363d; display: flex; align-items: center; gap: 8px; }
|
|
3289
|
+
.log-code-header::before { content: ''; display: inline-block; width: 12px; height: 12px; background: #ffa657; border-radius: 50%; }
|
|
3290
|
+
.log-code-content { padding: 12px; overflow-x: auto; font-family: 'Fira Code', 'SF Mono', Monaco, monospace; font-size: 12px; line-height: 1.5; max-height: 400px; overflow-y: auto; }
|
|
3291
|
+
.log-code-line { display: flex; min-height: 20px; }
|
|
3292
|
+
.log-line-number { color: #484f58; text-align: right; padding-right: 16px; user-select: none; min-width: 40px; flex-shrink: 0; }
|
|
3293
|
+
.log-line-content { color: #c9d1d9; white-space: pre; }
|
|
3294
|
+
|
|
3295
|
+
/* Message cards */
|
|
3296
|
+
.log-message-card { background: #161b22; border-radius: 8px; margin: 12px 0; overflow: hidden; border: 1px solid #30363d; flex-shrink: 0; }
|
|
3297
|
+
.log-message-header { padding: 10px 14px; display: flex; align-items: center; gap: 8px; font-weight: 500; font-size: 13px; }
|
|
3298
|
+
.log-message-header.assistant-header { background: linear-gradient(135deg, #238636 0%, #2ea043 100%); color: white; }
|
|
3299
|
+
.log-message-header.user-header { background: linear-gradient(135deg, #1f6feb 0%, #388bfd 100%); color: white; }
|
|
3300
|
+
.log-message-header.tool-header { background: linear-gradient(135deg, #8b5cf6 0%, #a78bfa 100%); color: white; }
|
|
3301
|
+
.log-message-header.result-header { background: linear-gradient(135deg, #f97316 0%, #fb923c 100%); color: white; }
|
|
3302
|
+
.log-message-body { padding: 14px; border-top: 1px solid #30363d; color: #c9d1d9; white-space: pre-wrap; word-break: break-word; }
|
|
3303
|
+
|
|
3304
|
+
/* Tool badges */
|
|
3305
|
+
.log-tool-badge { display: inline-flex; align-items: center; gap: 6px; background: rgba(139,92,246,0.2); color: #a78bfa; padding: 4px 10px; border-radius: 12px; font-size: 12px; font-weight: 500; }
|
|
3306
|
+
.log-tool-input { background: #0d1117; border-radius: 4px; padding: 8px 12px; margin-top: 8px; font-family: 'Fira Code', monospace; font-size: 11px; color: #8b949e; max-height: 150px; overflow: auto; white-space: pre-wrap; }
|
|
3307
|
+
|
|
3308
|
+
/* Collapsible raw JSON */
|
|
3309
|
+
.log-raw-details { margin: 8px 0; }
|
|
3310
|
+
.log-raw-summary { cursor: pointer; color: #8b949e; font-size: 12px; padding: 8px; background: rgba(139,148,158,0.1); border-radius: 4px; }
|
|
3311
|
+
.log-raw-summary:hover { background: rgba(139,148,158,0.2); }
|
|
3312
|
+
.log-raw-json { background: #0d1117; border-radius: 4px; padding: 12px; margin-top: 8px; font-size: 11px; color: #8b949e; max-height: 200px; overflow: auto; white-space: pre-wrap; }
|
|
3112
3313
|
@keyframes pulse {
|
|
3113
3314
|
0%, 100% { opacity: 1; }
|
|
3114
3315
|
50% { opacity: 0.5; }
|
|
@@ -3234,7 +3435,7 @@ export function generateTicketViewPage(ticketKey, lang) {
|
|
|
3234
3435
|
<button class="prompt-modal-close" onclick="closePromptModal()">×</button>
|
|
3235
3436
|
</div>
|
|
3236
3437
|
<div class="prompt-modal-body">
|
|
3237
|
-
<
|
|
3438
|
+
<div id="prompt-modal-content" class="log-container"></div>
|
|
3238
3439
|
</div>
|
|
3239
3440
|
</div>
|
|
3240
3441
|
</div>
|
|
@@ -3592,6 +3793,130 @@ export function generateTicketViewPage(ticketKey, lang) {
|
|
|
3592
3793
|
};
|
|
3593
3794
|
}
|
|
3594
3795
|
|
|
3796
|
+
function escapeHtml(str) {
|
|
3797
|
+
if (typeof str !== 'string') return '';
|
|
3798
|
+
return str.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>').replace(/"/g, '"');
|
|
3799
|
+
}
|
|
3800
|
+
|
|
3801
|
+
function formatCodeBlock(content, filename) {
|
|
3802
|
+
const lines = content.split(/\\\\n|\\n/);
|
|
3803
|
+
let html = '<div class="log-code-block">';
|
|
3804
|
+
if (filename) {
|
|
3805
|
+
html += '<div class="log-code-header">' + escapeHtml(filename) + '</div>';
|
|
3806
|
+
}
|
|
3807
|
+
html += '<div class="log-code-content">';
|
|
3808
|
+
for (const line of lines) {
|
|
3809
|
+
const match = line.match(/^\\s*(\\d+)[→|](.*)$/);
|
|
3810
|
+
if (match) {
|
|
3811
|
+
html += '<div class="log-code-line"><span class="log-line-number">' + match[1] + '</span><span class="log-line-content">' + escapeHtml(match[2]) + '</span></div>';
|
|
3812
|
+
} else if (line.trim()) {
|
|
3813
|
+
html += '<div class="log-code-line"><span class="log-line-content">' + escapeHtml(line) + '</span></div>';
|
|
3814
|
+
}
|
|
3815
|
+
}
|
|
3816
|
+
html += '</div></div>';
|
|
3817
|
+
return html;
|
|
3818
|
+
}
|
|
3819
|
+
|
|
3820
|
+
function formatLogContent(rawContent) {
|
|
3821
|
+
if (!rawContent) return '';
|
|
3822
|
+
const lines = rawContent.split('\\n');
|
|
3823
|
+
const entries = [];
|
|
3824
|
+
|
|
3825
|
+
for (const line of lines) {
|
|
3826
|
+
if (!line.trim()) continue;
|
|
3827
|
+
|
|
3828
|
+
const timestampMatch = line.match(/^\\[(\\d{4}-\\d{2}-\\d{2}T[^\\]]+)\\]\\s*(.*)$/);
|
|
3829
|
+
if (timestampMatch) {
|
|
3830
|
+
const date = new Date(timestampMatch[1]);
|
|
3831
|
+
const timeStr = date.toLocaleTimeString();
|
|
3832
|
+
entries.push('<div class="log-entry timestamp">' + timeStr + ' - ' + escapeHtml(timestampMatch[2]) + '</div>');
|
|
3833
|
+
continue;
|
|
3834
|
+
}
|
|
3835
|
+
|
|
3836
|
+
// [RAW] - Parse avec regex (pas JSON.parse car les lignes sont coupées)
|
|
3837
|
+
if (line.startsWith('[RAW] ')) {
|
|
3838
|
+
const raw = line.slice(6);
|
|
3839
|
+
|
|
3840
|
+
// Ignorer les lignes de continuation (ne commencent pas par {)
|
|
3841
|
+
if (!raw.startsWith('{')) {
|
|
3842
|
+
continue;
|
|
3843
|
+
}
|
|
3844
|
+
|
|
3845
|
+
// Extraire tool_result content
|
|
3846
|
+
if (raw.includes('"type":"tool_result"')) {
|
|
3847
|
+
const contentStart = raw.indexOf('"content":"');
|
|
3848
|
+
if (contentStart !== -1) {
|
|
3849
|
+
// Extraire le contenu après "content":"
|
|
3850
|
+
let content = raw.slice(contentStart + 11);
|
|
3851
|
+
// Enlever le reste du JSON (approximatif car tronqué)
|
|
3852
|
+
const endQuote = content.lastIndexOf('"');
|
|
3853
|
+
if (endQuote > 0) content = content.slice(0, endQuote);
|
|
3854
|
+
// Décoder les échappements
|
|
3855
|
+
const decoded = content.replace(/\\\\n/g, '\\n').replace(/\\\\"/g, '"').replace(/\\\\t/g, '\\t');
|
|
3856
|
+
// Vérifier si c'est du code avec numéros de ligne
|
|
3857
|
+
if (/^\\s*\\d+[→|]/.test(decoded)) {
|
|
3858
|
+
entries.push('<div class="log-message-card"><div class="log-message-header result-header">Tool Result</div><div class="log-message-body">' + formatCodeBlock(decoded) + '</div></div>');
|
|
3859
|
+
} else {
|
|
3860
|
+
// Résultat texte simple (liste de fichiers, etc.)
|
|
3861
|
+
const lines = decoded.split('\\n').slice(0, 20); // Limiter à 20 lignes
|
|
3862
|
+
const truncated = decoded.split('\\n').length > 20 ? '<div style="color:#8b949e;font-style:italic">... (truncated)</div>' : '';
|
|
3863
|
+
entries.push('<div class="log-message-card"><div class="log-message-header result-header">Tool Result</div><div class="log-message-body" style="font-family:monospace;font-size:12px;white-space:pre-wrap;max-height:200px;overflow-y:auto">' + escapeHtml(lines.join('\\n')) + truncated + '</div></div>');
|
|
3864
|
+
}
|
|
3865
|
+
continue;
|
|
3866
|
+
}
|
|
3867
|
+
}
|
|
3868
|
+
|
|
3869
|
+
// Extraire message assistant texte
|
|
3870
|
+
const textMatch = raw.match(/"type":"text","text":"([^"]+)"/);
|
|
3871
|
+
if (textMatch) {
|
|
3872
|
+
const decoded = textMatch[1].replace(/\\\\n/g, '\\n').replace(/\\\\"/g, '"');
|
|
3873
|
+
entries.push('<div class="log-message-card"><div class="log-message-header assistant-header">Assistant</div><div class="log-message-body">' + escapeHtml(decoded) + '</div></div>');
|
|
3874
|
+
continue;
|
|
3875
|
+
}
|
|
3876
|
+
|
|
3877
|
+
// Extraire tool_use
|
|
3878
|
+
const toolMatch = raw.match(/"type":"tool_use"[^}]*"name":"([^"]+)"/);
|
|
3879
|
+
if (toolMatch) {
|
|
3880
|
+
entries.push('<div class="log-entry tool-call"><span class="log-tool-badge">' + escapeHtml(toolMatch[1]) + '</span></div>');
|
|
3881
|
+
continue;
|
|
3882
|
+
}
|
|
3883
|
+
|
|
3884
|
+
// Ignorer les autres RAW
|
|
3885
|
+
continue;
|
|
3886
|
+
}
|
|
3887
|
+
|
|
3888
|
+
if (line.startsWith('[SYSTEM]')) {
|
|
3889
|
+
entries.push('<div class="log-entry system"><span class="log-label">System</span><div class="log-content">' + escapeHtml(line.slice(9)) + '</div></div>');
|
|
3890
|
+
continue;
|
|
3891
|
+
}
|
|
3892
|
+
if (line.startsWith('[ASSISTANT]')) {
|
|
3893
|
+
entries.push('<div class="log-message-card"><div class="log-message-header assistant-header">Assistant</div><div class="log-message-body">' + escapeHtml(line.slice(12)) + '</div></div>');
|
|
3894
|
+
continue;
|
|
3895
|
+
}
|
|
3896
|
+
if (line.startsWith('[TOOL]')) {
|
|
3897
|
+
entries.push('<div class="log-entry tool-call"><span class="log-tool-badge">' + escapeHtml(line.slice(7)) + '</span></div>');
|
|
3898
|
+
continue;
|
|
3899
|
+
}
|
|
3900
|
+
if (line.startsWith('[RESULT]')) {
|
|
3901
|
+
const content = line.slice(9);
|
|
3902
|
+
if (/^\\s*\\d+[→|]/.test(content)) {
|
|
3903
|
+
entries.push('<div class="log-message-card"><div class="log-message-header result-header">Result</div><div class="log-message-body">' + formatCodeBlock(content) + '</div></div>');
|
|
3904
|
+
} else {
|
|
3905
|
+
entries.push('<div class="log-message-card"><div class="log-message-header result-header">Result</div><div class="log-message-body">' + escapeHtml(content.slice(0, 1000)) + (content.length > 1000 ? '...' : '') + '</div></div>');
|
|
3906
|
+
}
|
|
3907
|
+
continue;
|
|
3908
|
+
}
|
|
3909
|
+
if (line.startsWith('[ERROR]')) {
|
|
3910
|
+
entries.push('<div class="log-entry error"><span class="log-label">Error</span><div class="log-content">' + escapeHtml(line.slice(8)) + '</div></div>');
|
|
3911
|
+
continue;
|
|
3912
|
+
}
|
|
3913
|
+
|
|
3914
|
+
entries.push('<div class="log-entry system">' + escapeHtml(line) + '</div>');
|
|
3915
|
+
}
|
|
3916
|
+
|
|
3917
|
+
return entries.join('');
|
|
3918
|
+
}
|
|
3919
|
+
|
|
3595
3920
|
function startLogPolling() {
|
|
3596
3921
|
stopLogPolling();
|
|
3597
3922
|
logPollingInterval = setInterval(fetchLog, 1000);
|
|
@@ -3612,10 +3937,10 @@ export function generateTicketViewPage(ticketKey, lang) {
|
|
|
3612
3937
|
const log = document.getElementById('claude-log');
|
|
3613
3938
|
|
|
3614
3939
|
if (json.success && json.data && (json.data.exists || json.data.content)) {
|
|
3615
|
-
log.
|
|
3940
|
+
log.innerHTML = formatLogContent(json.data.content || '');
|
|
3616
3941
|
log.scrollTop = log.scrollHeight;
|
|
3617
3942
|
} else {
|
|
3618
|
-
log.
|
|
3943
|
+
log.innerHTML = '<div class="log-entry system">' + t('ticketView.noLog') + '</div>';
|
|
3619
3944
|
}
|
|
3620
3945
|
} catch (e) {
|
|
3621
3946
|
console.error('Log fetch error:', e);
|
|
@@ -3688,7 +4013,11 @@ export function generateTicketViewPage(ticketKey, lang) {
|
|
|
3688
4013
|
const json = await res.json();
|
|
3689
4014
|
if (json.success) {
|
|
3690
4015
|
title.textContent = 'Terminal → ' + columnSlug;
|
|
3691
|
-
|
|
4016
|
+
if (json.data.content) {
|
|
4017
|
+
content.innerHTML = formatLogContent(json.data.content);
|
|
4018
|
+
} else {
|
|
4019
|
+
content.textContent = t('ticketView.noLog') || 'No log available';
|
|
4020
|
+
}
|
|
3692
4021
|
} else {
|
|
3693
4022
|
title.textContent = t('ticketView.logError') || 'Log Error';
|
|
3694
4023
|
content.textContent = json.error || 'Error loading log';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dashboard.js","sourceRoot":"","sources":["../../src/server/dashboard.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAG/C,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,GAAG,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;AAE1C;;GAEG;AACH,MAAM,UAAU,iBAAiB;IAC/B,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,MAAM,OAAO,GAAG,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACzC,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;IAC7B,MAAM,OAAO,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAE5C,yCAAyC;IACzC,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IAC5C,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IAC5C,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;IAErD,OAAO;;;;;;;MAOH,SAAS,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;sBAoKK,GAAG,CAAC,OAAO,sBAAsB,SAAS;;;;sBAI1C,WAAW;sBACX,WAAW;MAC3B,SAAS,EAAE;;;QAGT,CAAC;AACT,CAAC;AAED;;GAEG;AACH,SAAS,UAAU,CAAC,IAAY;IAC9B,OAAO,IAAI;SACR,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;SACtB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AAC7B,CAAC;AAED;;GAEG;AACH,SAAS,SAAS;IAChB,OAAO
|
|
1
|
+
{"version":3,"file":"dashboard.js","sourceRoot":"","sources":["../../src/server/dashboard.ts"],"names":[],"mappings":"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"}
|