agentgui 1.0.160 → 1.0.162
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/database.js +10 -0
- package/package.json +1 -1
- package/server.js +13 -58
- package/static/index.html +58 -58
package/database.js
CHANGED
|
@@ -349,6 +349,16 @@ export const queries = {
|
|
|
349
349
|
return row?.isStreaming === 1;
|
|
350
350
|
},
|
|
351
351
|
|
|
352
|
+
getStreamingConversations() {
|
|
353
|
+
const stmt = prep('SELECT id, title, claudeSessionId, agentType FROM conversations WHERE isStreaming = 1');
|
|
354
|
+
return stmt.all();
|
|
355
|
+
},
|
|
356
|
+
|
|
357
|
+
clearAllStreamingFlags() {
|
|
358
|
+
const stmt = prep('UPDATE conversations SET isStreaming = 0 WHERE isStreaming = 1');
|
|
359
|
+
return stmt.run().changes;
|
|
360
|
+
},
|
|
361
|
+
|
|
352
362
|
markSessionIncomplete(sessionId, errorMsg) {
|
|
353
363
|
const stmt = prep('UPDATE sessions SET status = ?, error = ?, completed_at = ? WHERE id = ?');
|
|
354
364
|
stmt.run('incomplete', errorMsg || 'unknown', Date.now(), sessionId);
|
package/package.json
CHANGED
package/server.js
CHANGED
|
@@ -1199,75 +1199,30 @@ server.on('error', (err) => {
|
|
|
1199
1199
|
|
|
1200
1200
|
function recoverStaleSessions() {
|
|
1201
1201
|
try {
|
|
1202
|
-
const staleSessions = queries.getActiveSessions ? queries.getActiveSessions() : [];
|
|
1203
1202
|
const now = Date.now();
|
|
1204
|
-
let resumedCount = 0;
|
|
1205
|
-
let failedCount = 0;
|
|
1206
1203
|
|
|
1204
|
+
const staleSessions = queries.getActiveSessions ? queries.getActiveSessions() : [];
|
|
1207
1205
|
for (const session of staleSessions) {
|
|
1208
1206
|
if (activeExecutions.has(session.conversationId)) continue;
|
|
1209
|
-
|
|
1210
1207
|
queries.updateSession(session.id, {
|
|
1211
1208
|
status: 'error',
|
|
1212
|
-
error: 'Server restarted
|
|
1209
|
+
error: 'Server restarted',
|
|
1213
1210
|
completed_at: now
|
|
1214
1211
|
});
|
|
1215
|
-
|
|
1216
|
-
|
|
1217
|
-
|
|
1218
|
-
queries.setIsStreaming(session.conversationId, false);
|
|
1219
|
-
failedCount++;
|
|
1220
|
-
continue;
|
|
1221
|
-
}
|
|
1222
|
-
|
|
1223
|
-
const lastMsg = queries.getLastUserMessage(session.conversationId);
|
|
1224
|
-
if (!lastMsg || !conv.claudeSessionId) {
|
|
1225
|
-
queries.setIsStreaming(session.conversationId, false);
|
|
1226
|
-
debugLog(`[RECOVERY] Conv ${session.conversationId}: no user message or no claudeSessionId, cannot resume`);
|
|
1227
|
-
broadcastSync({
|
|
1228
|
-
type: 'streaming_error',
|
|
1229
|
-
sessionId: session.id,
|
|
1230
|
-
conversationId: session.conversationId,
|
|
1231
|
-
error: 'Server restarted - could not resume (missing context)',
|
|
1232
|
-
recoverable: false,
|
|
1233
|
-
timestamp: now
|
|
1234
|
-
});
|
|
1235
|
-
failedCount++;
|
|
1236
|
-
continue;
|
|
1237
|
-
}
|
|
1238
|
-
|
|
1239
|
-
const content = typeof lastMsg.content === 'string' ? lastMsg.content : JSON.stringify(lastMsg.content);
|
|
1240
|
-
const agentId = conv.agentType || conv.agentId || 'claude-code';
|
|
1241
|
-
|
|
1242
|
-
debugLog(`[RECOVERY] Resuming conv ${session.conversationId} with claudeSessionId=${conv.claudeSessionId}`);
|
|
1243
|
-
|
|
1244
|
-
const newSession = queries.createSession(session.conversationId);
|
|
1245
|
-
queries.createEvent('session.created', {
|
|
1246
|
-
messageId: lastMsg.id,
|
|
1247
|
-
sessionId: newSession.id,
|
|
1248
|
-
retryReason: 'server_restart'
|
|
1249
|
-
}, session.conversationId, newSession.id);
|
|
1250
|
-
|
|
1251
|
-
broadcastSync({
|
|
1252
|
-
type: 'streaming_start',
|
|
1253
|
-
sessionId: newSession.id,
|
|
1254
|
-
conversationId: session.conversationId,
|
|
1255
|
-
messageId: lastMsg.id,
|
|
1256
|
-
agentId,
|
|
1257
|
-
timestamp: now
|
|
1258
|
-
});
|
|
1259
|
-
|
|
1260
|
-
processMessageWithStreaming(session.conversationId, lastMsg.id, newSession.id, content, agentId)
|
|
1261
|
-
.catch(err => debugLog(`[RECOVERY] Resume error for ${session.conversationId}: ${err.message}`));
|
|
1262
|
-
|
|
1263
|
-
resumedCount++;
|
|
1212
|
+
}
|
|
1213
|
+
if (staleSessions.length > 0) {
|
|
1214
|
+
console.log(`[RECOVERY] Marked ${staleSessions.length} stale session(s) as error`);
|
|
1264
1215
|
}
|
|
1265
1216
|
|
|
1266
|
-
|
|
1267
|
-
|
|
1217
|
+
const streamingConvs = queries.getStreamingConversations ? queries.getStreamingConversations() : [];
|
|
1218
|
+
let clearedCount = 0;
|
|
1219
|
+
for (const conv of streamingConvs) {
|
|
1220
|
+
if (activeExecutions.has(conv.id)) continue;
|
|
1221
|
+
queries.setIsStreaming(conv.id, false);
|
|
1222
|
+
clearedCount++;
|
|
1268
1223
|
}
|
|
1269
|
-
if (
|
|
1270
|
-
console.log(`[RECOVERY]
|
|
1224
|
+
if (clearedCount > 0) {
|
|
1225
|
+
console.log(`[RECOVERY] Cleared isStreaming flag on ${clearedCount} stale conversation(s)`);
|
|
1271
1226
|
}
|
|
1272
1227
|
} catch (err) {
|
|
1273
1228
|
console.error('[RECOVERY] Stale session recovery error:', err.message);
|
package/static/index.html
CHANGED
|
@@ -389,7 +389,7 @@
|
|
|
389
389
|
max-width: 100%;
|
|
390
390
|
margin: 0;
|
|
391
391
|
width: 100%;
|
|
392
|
-
padding:
|
|
392
|
+
padding: 0.75rem 2rem;
|
|
393
393
|
display: flex;
|
|
394
394
|
flex-direction: column;
|
|
395
395
|
min-height: 100%;
|
|
@@ -398,14 +398,14 @@
|
|
|
398
398
|
#output {
|
|
399
399
|
display: flex;
|
|
400
400
|
flex-direction: column;
|
|
401
|
-
gap: 0.
|
|
401
|
+
gap: 0.25rem;
|
|
402
402
|
flex: 1;
|
|
403
403
|
}
|
|
404
404
|
|
|
405
405
|
/* --- Conversation display --- */
|
|
406
406
|
.conversation-header {
|
|
407
|
-
padding: 0.
|
|
408
|
-
margin-bottom:
|
|
407
|
+
padding: 0.5rem 0;
|
|
408
|
+
margin-bottom: 0.5rem;
|
|
409
409
|
}
|
|
410
410
|
|
|
411
411
|
.conversation-header h2 { margin: 0 0 0.25rem 0; font-size: 1.25rem; }
|
|
@@ -415,8 +415,8 @@
|
|
|
415
415
|
|
|
416
416
|
/* --- Messages --- */
|
|
417
417
|
.message {
|
|
418
|
-
margin-bottom:
|
|
419
|
-
padding: 0.
|
|
418
|
+
margin-bottom: 0.5rem;
|
|
419
|
+
padding: 0.5rem 0.75rem;
|
|
420
420
|
border-radius: 0.75rem;
|
|
421
421
|
max-width: 85%;
|
|
422
422
|
word-break: break-word;
|
|
@@ -440,7 +440,7 @@
|
|
|
440
440
|
font-size: 0.7rem;
|
|
441
441
|
text-transform: uppercase;
|
|
442
442
|
letter-spacing: 0.04em;
|
|
443
|
-
margin-bottom: 0.
|
|
443
|
+
margin-bottom: 0.125rem;
|
|
444
444
|
opacity: 0.7;
|
|
445
445
|
}
|
|
446
446
|
|
|
@@ -456,7 +456,7 @@
|
|
|
456
456
|
|
|
457
457
|
.message-timestamp {
|
|
458
458
|
font-size: 0.7rem;
|
|
459
|
-
margin-top: 0.
|
|
459
|
+
margin-top: 0.25rem;
|
|
460
460
|
opacity: 0.6;
|
|
461
461
|
}
|
|
462
462
|
|
|
@@ -466,7 +466,7 @@
|
|
|
466
466
|
.message-blocks {
|
|
467
467
|
display: flex;
|
|
468
468
|
flex-direction: column;
|
|
469
|
-
gap: 0.
|
|
469
|
+
gap: 0.375rem;
|
|
470
470
|
}
|
|
471
471
|
|
|
472
472
|
.message-text {
|
|
@@ -478,9 +478,9 @@
|
|
|
478
478
|
.message-code {
|
|
479
479
|
background-color: var(--color-bg-code);
|
|
480
480
|
border-radius: 0.375rem;
|
|
481
|
-
padding: 0.
|
|
481
|
+
padding: 0.5rem;
|
|
482
482
|
overflow-x: auto;
|
|
483
|
-
margin: 0.
|
|
483
|
+
margin: 0.25rem 0;
|
|
484
484
|
}
|
|
485
485
|
|
|
486
486
|
.message-code pre {
|
|
@@ -502,8 +502,8 @@
|
|
|
502
502
|
|
|
503
503
|
/* --- Streaming block types --- */
|
|
504
504
|
.streaming-block-system {
|
|
505
|
-
padding: 0.
|
|
506
|
-
margin: 0.
|
|
505
|
+
padding: 0.375rem 0.75rem;
|
|
506
|
+
margin: 0.125rem 0;
|
|
507
507
|
background: rgba(59,130,246,0.08);
|
|
508
508
|
border-radius: 0.375rem;
|
|
509
509
|
font-size: 0.8rem;
|
|
@@ -600,8 +600,8 @@
|
|
|
600
600
|
}
|
|
601
601
|
|
|
602
602
|
.streaming-block-result {
|
|
603
|
-
padding: 0.
|
|
604
|
-
margin: 0.
|
|
603
|
+
padding: 0.375rem 0.75rem;
|
|
604
|
+
margin: 0.125rem 0;
|
|
605
605
|
border-radius: 0.375rem;
|
|
606
606
|
background: rgba(16,185,129,0.08);
|
|
607
607
|
font-size: 0.8rem;
|
|
@@ -716,7 +716,7 @@
|
|
|
716
716
|
|
|
717
717
|
/* ===== HTML rendered content ===== */
|
|
718
718
|
.html-rendered-label {
|
|
719
|
-
padding: 0.5rem;
|
|
719
|
+
padding: 0.25rem 0.5rem;
|
|
720
720
|
background: #eff6ff;
|
|
721
721
|
border-radius: 0.25rem;
|
|
722
722
|
font-size: 0.75rem;
|
|
@@ -724,14 +724,14 @@
|
|
|
724
724
|
color: #1d4ed8;
|
|
725
725
|
text-transform: uppercase;
|
|
726
726
|
letter-spacing: 0.05em;
|
|
727
|
-
margin-bottom: 0.
|
|
727
|
+
margin-bottom: 0.25rem;
|
|
728
728
|
}
|
|
729
729
|
|
|
730
730
|
html.dark .html-rendered-label { background: #1e3a5f; color: #93c5fd; }
|
|
731
731
|
|
|
732
732
|
.html-content {
|
|
733
733
|
background: #ffffff;
|
|
734
|
-
padding:
|
|
734
|
+
padding: 0.5rem 0.75rem;
|
|
735
735
|
border-radius: 0.375rem;
|
|
736
736
|
overflow-x: auto;
|
|
737
737
|
}
|
|
@@ -748,8 +748,8 @@
|
|
|
748
748
|
|
|
749
749
|
pre { margin: 0; overflow-x: auto; }
|
|
750
750
|
code { font-family: 'Monaco','Menlo','Ubuntu Mono', monospace; font-size: 0.875rem; }
|
|
751
|
-
details { margin: 0.
|
|
752
|
-
summary { cursor: pointer; user-select: none; padding: 0.
|
|
751
|
+
details { margin: 0.25rem 0; }
|
|
752
|
+
summary { cursor: pointer; user-select: none; padding: 0.375rem; border-radius: 0.25rem; transition: background-color 0.2s; }
|
|
753
753
|
summary:hover { background-color: var(--color-bg-secondary); }
|
|
754
754
|
|
|
755
755
|
/* ===== Folder Browser Modal ===== */
|
|
@@ -822,7 +822,7 @@
|
|
|
822
822
|
.main-header { padding: 0 0.75rem; }
|
|
823
823
|
.header-title { font-size: 1rem; }
|
|
824
824
|
|
|
825
|
-
.messages-wrapper { padding:
|
|
825
|
+
.messages-wrapper { padding: 0.5rem 0.75rem; }
|
|
826
826
|
|
|
827
827
|
.message { max-width: 90%; }
|
|
828
828
|
|
|
@@ -844,7 +844,7 @@
|
|
|
844
844
|
@media (max-width: 480px) {
|
|
845
845
|
.sidebar { width: calc(100% - 3rem); max-width: 320px; }
|
|
846
846
|
.message { max-width: 95%; }
|
|
847
|
-
.messages-wrapper { padding: 0.
|
|
847
|
+
.messages-wrapper { padding: 0.375rem 0.5rem; }
|
|
848
848
|
.input-section { padding: 0.5rem; padding-bottom: calc(0.5rem + env(safe-area-inset-bottom)); }
|
|
849
849
|
.agent-selector { display: none; }
|
|
850
850
|
}
|
|
@@ -1072,7 +1072,7 @@
|
|
|
1072
1072
|
.conversation-messages { contain: content; }
|
|
1073
1073
|
.streaming-blocks { contain: content; }
|
|
1074
1074
|
.sidebar-list { contain: strict; content-visibility: auto; }
|
|
1075
|
-
.message { contain: layout style; content-visibility: auto; contain-intrinsic-size: auto
|
|
1075
|
+
.message { contain: layout style; content-visibility: auto; contain-intrinsic-size: auto 80px; }
|
|
1076
1076
|
#output-scroll { will-change: transform; }
|
|
1077
1077
|
|
|
1078
1078
|
.voice-block .voice-result-stats {
|
|
@@ -1127,16 +1127,16 @@
|
|
|
1127
1127
|
|
|
1128
1128
|
/* ===== STREAMING BLOCK STYLES ===== */
|
|
1129
1129
|
.block-text {
|
|
1130
|
-
margin-bottom: 0.
|
|
1131
|
-
padding:
|
|
1130
|
+
margin-bottom: 0.25rem;
|
|
1131
|
+
padding: 0.5rem 0.75rem;
|
|
1132
1132
|
background: var(--color-bg-primary);
|
|
1133
1133
|
border-radius: 0.5rem;
|
|
1134
|
-
line-height: 1.
|
|
1134
|
+
line-height: 1.5;
|
|
1135
1135
|
font-size: 0.9rem;
|
|
1136
1136
|
}
|
|
1137
1137
|
|
|
1138
1138
|
.block-text + .block-text {
|
|
1139
|
-
margin-top: -0.
|
|
1139
|
+
margin-top: -0.25rem;
|
|
1140
1140
|
padding-top: 0;
|
|
1141
1141
|
border-top-left-radius: 0;
|
|
1142
1142
|
border-top-right-radius: 0;
|
|
@@ -1149,7 +1149,7 @@
|
|
|
1149
1149
|
}
|
|
1150
1150
|
|
|
1151
1151
|
.block-code {
|
|
1152
|
-
margin-bottom: 0.
|
|
1152
|
+
margin-bottom: 0.25rem;
|
|
1153
1153
|
border-radius: 0.5rem;
|
|
1154
1154
|
overflow: hidden;
|
|
1155
1155
|
}
|
|
@@ -1187,7 +1187,7 @@
|
|
|
1187
1187
|
|
|
1188
1188
|
.block-code pre {
|
|
1189
1189
|
margin: 0;
|
|
1190
|
-
padding:
|
|
1190
|
+
padding: 0.625rem 0.75rem;
|
|
1191
1191
|
background: #111827;
|
|
1192
1192
|
color: #e5e7eb;
|
|
1193
1193
|
overflow-x: auto;
|
|
@@ -1196,7 +1196,7 @@
|
|
|
1196
1196
|
}
|
|
1197
1197
|
|
|
1198
1198
|
.block-thinking {
|
|
1199
|
-
margin-bottom: 0.
|
|
1199
|
+
margin-bottom: 0.25rem;
|
|
1200
1200
|
border-radius: 0.5rem;
|
|
1201
1201
|
background: #f5f3ff;
|
|
1202
1202
|
overflow: hidden;
|
|
@@ -1205,7 +1205,7 @@
|
|
|
1205
1205
|
html.dark .block-thinking { background: #1e1033; }
|
|
1206
1206
|
|
|
1207
1207
|
.block-thinking summary {
|
|
1208
|
-
padding: 0.75rem
|
|
1208
|
+
padding: 0.375rem 0.75rem;
|
|
1209
1209
|
cursor: pointer;
|
|
1210
1210
|
display: flex;
|
|
1211
1211
|
align-items: center;
|
|
@@ -1222,18 +1222,18 @@
|
|
|
1222
1222
|
.block-thinking summary:hover { background: rgba(139,92,246,0.08); }
|
|
1223
1223
|
|
|
1224
1224
|
.block-thinking .thinking-content {
|
|
1225
|
-
padding: 0.75rem
|
|
1225
|
+
padding: 0.375rem 0.75rem;
|
|
1226
1226
|
font-size: 0.85rem;
|
|
1227
1227
|
color: #5b21b6;
|
|
1228
1228
|
white-space: pre-wrap;
|
|
1229
|
-
line-height: 1.
|
|
1229
|
+
line-height: 1.5;
|
|
1230
1230
|
}
|
|
1231
1231
|
|
|
1232
1232
|
html.dark .block-thinking .thinking-content { color: #c4b5fd; }
|
|
1233
1233
|
|
|
1234
1234
|
/* --- Tool Use Block --- */
|
|
1235
1235
|
.block-tool-use {
|
|
1236
|
-
margin-bottom: 0.
|
|
1236
|
+
margin-bottom: 0.125rem;
|
|
1237
1237
|
border-radius: 0.5rem;
|
|
1238
1238
|
background: #ecfeff;
|
|
1239
1239
|
overflow: hidden;
|
|
@@ -1475,7 +1475,7 @@
|
|
|
1475
1475
|
|
|
1476
1476
|
/* --- Folded Tool Use (compact success-style bar) --- */
|
|
1477
1477
|
.folded-tool {
|
|
1478
|
-
margin: 0.
|
|
1478
|
+
margin: 0.125rem 0;
|
|
1479
1479
|
border-radius: 0.375rem;
|
|
1480
1480
|
overflow: hidden;
|
|
1481
1481
|
background: #f0fdf4;
|
|
@@ -1616,7 +1616,7 @@
|
|
|
1616
1616
|
|
|
1617
1617
|
/* --- Collapsible Code Summary --- */
|
|
1618
1618
|
.collapsible-code {
|
|
1619
|
-
margin: 0.
|
|
1619
|
+
margin: 0.125rem 0;
|
|
1620
1620
|
border-radius: 0.375rem;
|
|
1621
1621
|
overflow: hidden;
|
|
1622
1622
|
background: #1e293b;
|
|
@@ -1672,7 +1672,7 @@
|
|
|
1672
1672
|
|
|
1673
1673
|
/* --- Tool Result Block --- */
|
|
1674
1674
|
.block-tool-result {
|
|
1675
|
-
margin-bottom: 0.
|
|
1675
|
+
margin-bottom: 0.125rem;
|
|
1676
1676
|
border-radius: 0.5rem;
|
|
1677
1677
|
overflow: hidden;
|
|
1678
1678
|
}
|
|
@@ -1708,7 +1708,7 @@
|
|
|
1708
1708
|
html.dark .block-tool-result.result-error .status-label { color: #fca5a5; }
|
|
1709
1709
|
|
|
1710
1710
|
.block-tool-result .result-body {
|
|
1711
|
-
padding: 0.
|
|
1711
|
+
padding: 0.375rem 0.75rem;
|
|
1712
1712
|
font-size: 0.8rem;
|
|
1713
1713
|
white-space: pre-wrap;
|
|
1714
1714
|
word-break: break-all;
|
|
@@ -1758,7 +1758,7 @@
|
|
|
1758
1758
|
|
|
1759
1759
|
/* --- Result Summary Block --- */
|
|
1760
1760
|
.block-result {
|
|
1761
|
-
margin-bottom: 0.
|
|
1761
|
+
margin-bottom: 0.25rem;
|
|
1762
1762
|
border-radius: 0.5rem;
|
|
1763
1763
|
overflow: hidden;
|
|
1764
1764
|
}
|
|
@@ -1775,7 +1775,7 @@
|
|
|
1775
1775
|
html.dark .block-result.result-err { background: linear-gradient(135deg, #1c0f0f, #2c1010); }
|
|
1776
1776
|
|
|
1777
1777
|
.block-result .result-summary-header {
|
|
1778
|
-
padding: 0.
|
|
1778
|
+
padding: 0.375rem 0.75rem;
|
|
1779
1779
|
display: flex;
|
|
1780
1780
|
align-items: center;
|
|
1781
1781
|
gap: 0.5rem;
|
|
@@ -1791,7 +1791,7 @@
|
|
|
1791
1791
|
.block-result .result-stats {
|
|
1792
1792
|
display: flex;
|
|
1793
1793
|
gap: 1.5rem;
|
|
1794
|
-
padding: 0
|
|
1794
|
+
padding: 0 0.75rem 0.375rem;
|
|
1795
1795
|
font-size: 0.8rem;
|
|
1796
1796
|
flex-wrap: wrap;
|
|
1797
1797
|
}
|
|
@@ -1807,7 +1807,7 @@
|
|
|
1807
1807
|
.block-result .result-stat .stat-label { color: var(--color-text-secondary); font-size: 0.75rem; }
|
|
1808
1808
|
|
|
1809
1809
|
.block-result .result-content {
|
|
1810
|
-
padding: 0.
|
|
1810
|
+
padding: 0.375rem 0.75rem;
|
|
1811
1811
|
font-size: 0.85rem;
|
|
1812
1812
|
white-space: pre-wrap;
|
|
1813
1813
|
word-break: break-word;
|
|
@@ -1818,7 +1818,7 @@
|
|
|
1818
1818
|
|
|
1819
1819
|
/* --- System Block --- */
|
|
1820
1820
|
.block-system {
|
|
1821
|
-
margin-bottom: 0.
|
|
1821
|
+
margin-bottom: 0.25rem;
|
|
1822
1822
|
border-radius: 0.5rem;
|
|
1823
1823
|
background: #eef2ff;
|
|
1824
1824
|
overflow: hidden;
|
|
@@ -1827,7 +1827,7 @@
|
|
|
1827
1827
|
html.dark .block-system { background: #15103a; }
|
|
1828
1828
|
|
|
1829
1829
|
.block-system .system-header {
|
|
1830
|
-
padding: 0.
|
|
1830
|
+
padding: 0.375rem 0.75rem;
|
|
1831
1831
|
background: #e0e7ff;
|
|
1832
1832
|
font-weight: 600;
|
|
1833
1833
|
font-size: 0.85rem;
|
|
@@ -1837,12 +1837,12 @@
|
|
|
1837
1837
|
html.dark .block-system .system-header { background: #1e1b4b; color: #a5b4fc; }
|
|
1838
1838
|
|
|
1839
1839
|
.block-system .system-body {
|
|
1840
|
-
padding: 0.75rem
|
|
1840
|
+
padding: 0.375rem 0.75rem;
|
|
1841
1841
|
font-size: 0.8rem;
|
|
1842
1842
|
color: #3730a3;
|
|
1843
1843
|
display: flex;
|
|
1844
1844
|
flex-direction: column;
|
|
1845
|
-
gap: 0.
|
|
1845
|
+
gap: 0.25rem;
|
|
1846
1846
|
}
|
|
1847
1847
|
|
|
1848
1848
|
html.dark .block-system .system-body { color: #c7d2fe; }
|
|
@@ -1875,14 +1875,14 @@
|
|
|
1875
1875
|
|
|
1876
1876
|
/* --- Bash Block --- */
|
|
1877
1877
|
.block-bash {
|
|
1878
|
-
margin-bottom: 0.
|
|
1878
|
+
margin-bottom: 0.25rem;
|
|
1879
1879
|
border-radius: 0.5rem;
|
|
1880
1880
|
overflow: hidden;
|
|
1881
1881
|
background: #111827;
|
|
1882
1882
|
}
|
|
1883
1883
|
|
|
1884
1884
|
.block-bash .bash-command {
|
|
1885
|
-
padding: 0.
|
|
1885
|
+
padding: 0.375rem 0.75rem;
|
|
1886
1886
|
display: flex;
|
|
1887
1887
|
align-items: flex-start;
|
|
1888
1888
|
gap: 0.5rem;
|
|
@@ -1898,7 +1898,7 @@
|
|
|
1898
1898
|
}
|
|
1899
1899
|
|
|
1900
1900
|
.block-bash .bash-output {
|
|
1901
|
-
padding: 0.
|
|
1901
|
+
padding: 0.375rem 0.75rem;
|
|
1902
1902
|
color: #9ca3af;
|
|
1903
1903
|
font-size: 0.75rem;
|
|
1904
1904
|
overflow-x: auto;
|
|
@@ -1909,8 +1909,8 @@
|
|
|
1909
1909
|
|
|
1910
1910
|
/* --- Generic Block --- */
|
|
1911
1911
|
.block-generic {
|
|
1912
|
-
margin-bottom: 0.
|
|
1913
|
-
padding: 0.75rem
|
|
1912
|
+
margin-bottom: 0.25rem;
|
|
1913
|
+
padding: 0.5rem 0.75rem;
|
|
1914
1914
|
border-radius: 0.5rem;
|
|
1915
1915
|
background: var(--color-bg-secondary);
|
|
1916
1916
|
}
|
|
@@ -1952,8 +1952,8 @@
|
|
|
1952
1952
|
|
|
1953
1953
|
/* --- Error Block --- */
|
|
1954
1954
|
.block-error {
|
|
1955
|
-
margin-bottom: 0.
|
|
1956
|
-
padding: 0.75rem
|
|
1955
|
+
margin-bottom: 0.25rem;
|
|
1956
|
+
padding: 0.5rem 0.75rem;
|
|
1957
1957
|
border-radius: 0.5rem;
|
|
1958
1958
|
background: #fef2f2;
|
|
1959
1959
|
}
|
|
@@ -1962,7 +1962,7 @@
|
|
|
1962
1962
|
|
|
1963
1963
|
/* --- Image Block --- */
|
|
1964
1964
|
.block-image {
|
|
1965
|
-
margin-bottom: 0.
|
|
1965
|
+
margin-bottom: 0.25rem;
|
|
1966
1966
|
border-radius: 0.5rem;
|
|
1967
1967
|
overflow: hidden;
|
|
1968
1968
|
}
|
|
@@ -1972,8 +1972,8 @@
|
|
|
1972
1972
|
|
|
1973
1973
|
/* ===== STREAMING EVENTS ===== */
|
|
1974
1974
|
.event-streaming-start {
|
|
1975
|
-
margin-bottom: 0.
|
|
1976
|
-
padding: 0.75rem
|
|
1975
|
+
margin-bottom: 0.25rem;
|
|
1976
|
+
padding: 0.375rem 0.75rem;
|
|
1977
1977
|
background: #eff6ff;
|
|
1978
1978
|
border-radius: 0.5rem;
|
|
1979
1979
|
display: flex;
|
|
@@ -1984,8 +1984,8 @@
|
|
|
1984
1984
|
html.dark .event-streaming-start { background: #0c1a2e; }
|
|
1985
1985
|
|
|
1986
1986
|
.event-streaming-complete {
|
|
1987
|
-
margin-bottom: 0.
|
|
1988
|
-
padding: 0.75rem
|
|
1987
|
+
margin-bottom: 0.25rem;
|
|
1988
|
+
padding: 0.375rem 0.75rem;
|
|
1989
1989
|
background: linear-gradient(135deg, #ecfdf5, #f0fdf4);
|
|
1990
1990
|
border-radius: 0.5rem;
|
|
1991
1991
|
}
|