agentgui 1.0.126 → 1.0.127
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/static/js/streaming-renderer.js +31 -25
package/package.json
CHANGED
|
@@ -581,22 +581,14 @@ class StreamingRenderer {
|
|
|
581
581
|
case 'dev__execute':
|
|
582
582
|
case 'dev_execute':
|
|
583
583
|
case 'execute': {
|
|
584
|
-
// Handle mcp__plugin_gm_dev__execute and similar dev execution tools
|
|
585
584
|
let html = '<div class="tool-params">';
|
|
586
585
|
|
|
587
|
-
// Show working directory if present
|
|
588
586
|
if (input.workingDirectory) {
|
|
589
|
-
html += `<div style="margin-bottom:0.5rem;font-size:0.75rem;color:var(--color-text-secondary)">
|
|
590
|
-
<span style="opacity:0.7">📁</span> ${this.escapeHtml(input.workingDirectory)}
|
|
591
|
-
</div>`;
|
|
587
|
+
html += `<div style="margin-bottom:0.5rem;font-size:0.75rem;color:var(--color-text-secondary)"><span style="opacity:0.7">📁</span> ${this.escapeHtml(input.workingDirectory)}</div>`;
|
|
592
588
|
}
|
|
593
589
|
|
|
594
|
-
// Show timeout if present
|
|
595
590
|
if (input.timeout) {
|
|
596
|
-
|
|
597
|
-
html += `<div style="margin-bottom:0.5rem;font-size:0.75rem;color:var(--color-text-secondary)">
|
|
598
|
-
<span style="opacity:0.7">⏱️</span> Timeout: ${seconds}s
|
|
599
|
-
</div>`;
|
|
591
|
+
html += `<div style="margin-bottom:0.5rem;font-size:0.75rem;color:var(--color-text-secondary)"><span style="opacity:0.7">⏱️</span> Timeout: ${Math.round(input.timeout / 1000)}s</div>`;
|
|
600
592
|
}
|
|
601
593
|
|
|
602
594
|
// Render code with syntax highlighting
|
|
@@ -605,16 +597,16 @@ class StreamingRenderer {
|
|
|
605
597
|
const lineCount = codeLines.length;
|
|
606
598
|
const truncated = lineCount > 50;
|
|
607
599
|
const displayCode = truncated ? codeLines.slice(0, 50).join('\n') : input.code;
|
|
608
|
-
|
|
609
600
|
const lang = input.runtime || 'javascript';
|
|
610
|
-
html += `<div style="margin-top:0.5rem"
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
601
|
+
html += `<div style="margin-top:0.5rem"><div style="display:flex;justify-content:space-between;align-items:center;margin-bottom:0.25rem"><span style="font-size:0.7rem;font-weight:600;color:#0891b2;text-transform:uppercase">${this.escapeHtml(lang)}</span><span style="font-size:0.7rem;color:var(--color-text-secondary)">${lineCount} lines</span></div>${StreamingRenderer.renderCodeWithHighlight(displayCode, this.escapeHtml.bind(this))}${truncated ? `<div style="font-size:0.7rem;color:var(--color-text-secondary);text-align:center;padding:0.25rem">... ${lineCount - 50} more lines</div>` : ''}</div>`;
|
|
602
|
+
}
|
|
603
|
+
|
|
604
|
+
// Render commands (bash commands)
|
|
605
|
+
if (input.commands) {
|
|
606
|
+
const cmds = Array.isArray(input.commands) ? input.commands : [input.commands];
|
|
607
|
+
cmds.forEach(cmd => {
|
|
608
|
+
html += `<div style="margin-top:0.375rem"><div class="tool-param-command"><span class="prompt-char">$</span><span class="command-text">${this.escapeHtml(typeof cmd === 'string' ? cmd : JSON.stringify(cmd))}</span></div></div>`;
|
|
609
|
+
});
|
|
618
610
|
}
|
|
619
611
|
|
|
620
612
|
html += '</div>';
|
|
@@ -756,14 +748,23 @@ class StreamingRenderer {
|
|
|
756
748
|
return `<div style="padding:0.5rem"><img src="${esc(trimmed)}" style="max-width:100%;max-height:24rem;border-radius:0.375rem" loading="lazy"></div>`;
|
|
757
749
|
}
|
|
758
750
|
|
|
759
|
-
//
|
|
751
|
+
// Parse JSON and render as structured content
|
|
760
752
|
if ((trimmed.startsWith('{') && trimmed.endsWith('}')) || (trimmed.startsWith('[') && trimmed.endsWith(']'))) {
|
|
761
753
|
try {
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
//
|
|
765
|
-
|
|
766
|
-
|
|
754
|
+
const parsed = JSON.parse(trimmed);
|
|
755
|
+
|
|
756
|
+
// Handle Claude content block arrays: [{type:"text", text:"..."}]
|
|
757
|
+
if (Array.isArray(parsed) && parsed.length > 0 && parsed[0] && parsed[0].type === 'text') {
|
|
758
|
+
const textParts = parsed.filter(b => b.type === 'text' && b.text);
|
|
759
|
+
if (textParts.length > 0) {
|
|
760
|
+
const combined = textParts.map(b => b.text).join('\n');
|
|
761
|
+
// Re-enter renderSmartContentHTML with the extracted text
|
|
762
|
+
return StreamingRenderer.renderSmartContentHTML(combined, esc);
|
|
763
|
+
}
|
|
764
|
+
}
|
|
765
|
+
|
|
766
|
+
// For other JSON, render as itemized key-value structure
|
|
767
|
+
return `<div style="padding:0.5rem 0.75rem">${StreamingRenderer.renderParamsHTML(parsed, 0, esc)}</div>`;
|
|
767
768
|
} catch (e) {
|
|
768
769
|
// Not valid JSON, might be code with braces
|
|
769
770
|
}
|
|
@@ -1076,6 +1077,11 @@ class StreamingRenderer {
|
|
|
1076
1077
|
if (typeof data === 'number') return `<span style="color:#7c3aed;font-weight:600">${data}</span>`;
|
|
1077
1078
|
|
|
1078
1079
|
if (typeof data === 'string') {
|
|
1080
|
+
if (data.length > 200 && StreamingRenderer.detectCodeContent(data)) {
|
|
1081
|
+
const displayData = data.length > 1000 ? data.substring(0, 1000) : data;
|
|
1082
|
+
const suffix = data.length > 1000 ? `<div style="font-size:0.7rem;color:var(--color-text-secondary);text-align:center;padding:0.25rem">... ${data.length - 1000} more characters</div>` : '';
|
|
1083
|
+
return `<div style="max-height:200px;overflow-y:auto">${StreamingRenderer.renderCodeWithHighlight(displayData, esc)}${suffix}</div>`;
|
|
1084
|
+
}
|
|
1079
1085
|
if (data.length > 500) {
|
|
1080
1086
|
return `<div style="font-family:'Monaco','Menlo','Ubuntu Mono',monospace;font-size:0.75rem;white-space:pre-wrap;word-break:break-all;max-height:200px;overflow-y:auto;background:var(--color-bg-code);color:#d1d5db;padding:0.5rem;border-radius:0.375rem;line-height:1.5">${esc(data.substring(0, 1000))}${data.length > 1000 ? '\n... (' + (data.length - 1000) + ' more chars)' : ''}</div>`;
|
|
1081
1087
|
}
|