agentgui 1.0.116 → 1.0.117
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/app.js +59 -5
- package/static/styles.css +28 -11
- package/.prd +0 -0
package/package.json
CHANGED
package/static/app.js
CHANGED
|
@@ -227,20 +227,28 @@ class GMGUIApp {
|
|
|
227
227
|
break;
|
|
228
228
|
}
|
|
229
229
|
|
|
230
|
-
case 'tool_use':
|
|
230
|
+
case 'tool_use': {
|
|
231
231
|
html += `<div class="block-tool-use">`;
|
|
232
232
|
html += `<strong class="tool-name">${this.escapeHtml(block.name || 'Tool')}</strong>`;
|
|
233
|
-
|
|
233
|
+
const paramHtml = this.renderParameters(block.input || {});
|
|
234
|
+
html += `<div class="tool-input">${paramHtml}</div>`;
|
|
234
235
|
html += `</div>`;
|
|
235
236
|
break;
|
|
237
|
+
}
|
|
236
238
|
|
|
237
|
-
case 'tool_result':
|
|
239
|
+
case 'tool_result': {
|
|
238
240
|
html += `<div class="block-tool-result">`;
|
|
239
241
|
html += `<strong>Result:</strong>`;
|
|
240
|
-
|
|
241
|
-
|
|
242
|
+
let resultHtml;
|
|
243
|
+
if (typeof block.result === 'string') {
|
|
244
|
+
resultHtml = `<pre>${this.escapeHtml(block.result)}</pre>`;
|
|
245
|
+
} else {
|
|
246
|
+
resultHtml = this.renderParameters(block.result);
|
|
247
|
+
}
|
|
248
|
+
html += `<div class="tool-result">${resultHtml}</div>`;
|
|
242
249
|
html += `</div>`;
|
|
243
250
|
break;
|
|
251
|
+
}
|
|
244
252
|
|
|
245
253
|
case 'file_operation':
|
|
246
254
|
html += `<div class="block-file-op">`;
|
|
@@ -580,6 +588,52 @@ class GMGUIApp {
|
|
|
580
588
|
div.textContent = text;
|
|
581
589
|
return div.innerHTML;
|
|
582
590
|
}
|
|
591
|
+
|
|
592
|
+
renderParameters(obj, depth = 0) {
|
|
593
|
+
if (obj === null || obj === undefined) {
|
|
594
|
+
return `<span style="color: var(--text-tertiary);">null</span>`;
|
|
595
|
+
}
|
|
596
|
+
|
|
597
|
+
if (typeof obj === 'string') {
|
|
598
|
+
const isPath = obj.includes('/') || obj.includes('\\');
|
|
599
|
+
const isUrl = obj.startsWith('http://') || obj.startsWith('https://');
|
|
600
|
+
if (isPath || isUrl) {
|
|
601
|
+
return `<code style="color: var(--text-secondary); background: transparent;">${this.escapeHtml(obj)}</code>`;
|
|
602
|
+
}
|
|
603
|
+
return `<span>"${this.escapeHtml(obj)}"</span>`;
|
|
604
|
+
}
|
|
605
|
+
|
|
606
|
+
if (typeof obj === 'number' || typeof obj === 'boolean') {
|
|
607
|
+
return `<span style="color: var(--color-info);">${obj}</span>`;
|
|
608
|
+
}
|
|
609
|
+
|
|
610
|
+
if (Array.isArray(obj)) {
|
|
611
|
+
if (obj.length === 0) {
|
|
612
|
+
return `<span style="color: var(--text-tertiary);">[]</span>`;
|
|
613
|
+
}
|
|
614
|
+
const maxItems = depth === 0 ? 10 : 5;
|
|
615
|
+
const items = obj.slice(0, maxItems).map(item => this.renderParameters(item, depth + 1));
|
|
616
|
+
const more = obj.length > maxItems ? `<span style="color: var(--text-tertiary);">... ${obj.length - maxItems} more</span>` : '';
|
|
617
|
+
return `<span style="color: var(--text-tertiary);">[</span> ${items.join(', ')} ${more} <span style="color: var(--text-tertiary);">]</span>`;
|
|
618
|
+
}
|
|
619
|
+
|
|
620
|
+
if (typeof obj === 'object') {
|
|
621
|
+
const keys = Object.keys(obj);
|
|
622
|
+
if (keys.length === 0) {
|
|
623
|
+
return `<span style="color: var(--text-tertiary);">{}</span>`;
|
|
624
|
+
}
|
|
625
|
+
const maxKeys = depth === 0 ? 15 : 8;
|
|
626
|
+
const pairs = keys.slice(0, maxKeys).map(key => {
|
|
627
|
+
const keyHtml = `<span style="color: var(--color-primary);">${this.escapeHtml(key)}</span>`;
|
|
628
|
+
const valHtml = this.renderParameters(obj[key], depth + 1);
|
|
629
|
+
return `${keyHtml}: ${valHtml}`;
|
|
630
|
+
});
|
|
631
|
+
const more = keys.length > maxKeys ? `<span style="color: var(--text-tertiary);">... ${keys.length - maxKeys} more</span>` : '';
|
|
632
|
+
return `<div style="margin-left: ${depth * 1.5}rem;"><span style="color: var(--text-tertiary);">{</span><br/>${pairs.map(p => ` ${p}`).join(',<br/>')}<br/>${more}<span style="color: var(--text-tertiary);">}</span></div>`;
|
|
633
|
+
}
|
|
634
|
+
|
|
635
|
+
return `<span>${this.escapeHtml(String(obj))}</span>`;
|
|
636
|
+
}
|
|
583
637
|
}
|
|
584
638
|
|
|
585
639
|
const app = new GMGUIApp();
|
package/static/styles.css
CHANGED
|
@@ -739,7 +739,6 @@ html, body {
|
|
|
739
739
|
align-items: center;
|
|
740
740
|
justify-content: center;
|
|
741
741
|
background: var(--bg-secondary);
|
|
742
|
-
border: 1px solid var(--border-color);
|
|
743
742
|
border-radius: 0.25rem;
|
|
744
743
|
font-family: monospace;
|
|
745
744
|
font-size: 0.75rem;
|
|
@@ -787,7 +786,6 @@ html, body {
|
|
|
787
786
|
max-height: 300px;
|
|
788
787
|
overflow-y: auto;
|
|
789
788
|
background: var(--bg-secondary);
|
|
790
|
-
border-top: 1px solid var(--border-color);
|
|
791
789
|
}
|
|
792
790
|
|
|
793
791
|
.tool-block.collapsed .tool-body {
|
|
@@ -812,7 +810,6 @@ html, body {
|
|
|
812
810
|
padding: 0.375rem 0.75rem;
|
|
813
811
|
font-size: 0.8rem;
|
|
814
812
|
color: var(--text-secondary);
|
|
815
|
-
border-top: 1px solid var(--border-color);
|
|
816
813
|
}
|
|
817
814
|
|
|
818
815
|
.html-block {
|
|
@@ -1792,12 +1789,13 @@ p code {
|
|
|
1792
1789
|
}
|
|
1793
1790
|
|
|
1794
1791
|
.tool-input {
|
|
1795
|
-
background:
|
|
1792
|
+
background: transparent;
|
|
1796
1793
|
border-radius: 0.375rem;
|
|
1797
|
-
padding: 0.5rem;
|
|
1794
|
+
padding: 0.5rem 0;
|
|
1798
1795
|
overflow-x: auto;
|
|
1799
1796
|
font-size: 0.8rem;
|
|
1800
1797
|
font-family: 'Courier New', monospace;
|
|
1798
|
+
line-height: 1.5;
|
|
1801
1799
|
}
|
|
1802
1800
|
|
|
1803
1801
|
.tool-input pre {
|
|
@@ -1805,6 +1803,17 @@ p code {
|
|
|
1805
1803
|
color: var(--text-secondary);
|
|
1806
1804
|
}
|
|
1807
1805
|
|
|
1806
|
+
.tool-input code {
|
|
1807
|
+
color: var(--text-secondary);
|
|
1808
|
+
background: transparent;
|
|
1809
|
+
padding: 0;
|
|
1810
|
+
font-family: inherit;
|
|
1811
|
+
}
|
|
1812
|
+
|
|
1813
|
+
.tool-input span {
|
|
1814
|
+
font-family: 'Courier New', monospace;
|
|
1815
|
+
}
|
|
1816
|
+
|
|
1808
1817
|
.block-tool-result {
|
|
1809
1818
|
background: rgba(16, 185, 129, 0.05);
|
|
1810
1819
|
border: 1px solid rgba(16, 185, 129, 0.2);
|
|
@@ -1819,14 +1828,15 @@ p code {
|
|
|
1819
1828
|
}
|
|
1820
1829
|
|
|
1821
1830
|
.tool-result {
|
|
1822
|
-
background:
|
|
1831
|
+
background: transparent;
|
|
1823
1832
|
border-radius: 0.375rem;
|
|
1824
|
-
padding: 0.5rem;
|
|
1833
|
+
padding: 0.5rem 0;
|
|
1825
1834
|
overflow-x: auto;
|
|
1826
1835
|
font-size: 0.8rem;
|
|
1827
1836
|
font-family: 'Courier New', monospace;
|
|
1828
1837
|
max-height: 300px;
|
|
1829
1838
|
overflow-y: auto;
|
|
1839
|
+
line-height: 1.5;
|
|
1830
1840
|
}
|
|
1831
1841
|
|
|
1832
1842
|
.tool-result pre {
|
|
@@ -1834,6 +1844,13 @@ p code {
|
|
|
1834
1844
|
color: var(--text-secondary);
|
|
1835
1845
|
}
|
|
1836
1846
|
|
|
1847
|
+
.tool-result code {
|
|
1848
|
+
color: var(--text-secondary);
|
|
1849
|
+
background: transparent;
|
|
1850
|
+
padding: 0;
|
|
1851
|
+
font-family: inherit;
|
|
1852
|
+
}
|
|
1853
|
+
|
|
1837
1854
|
.block-file-op {
|
|
1838
1855
|
background: rgba(245, 158, 11, 0.05);
|
|
1839
1856
|
border: 1px solid rgba(245, 158, 11, 0.2);
|
|
@@ -1853,15 +1870,15 @@ p code {
|
|
|
1853
1870
|
font-size: 0.875rem;
|
|
1854
1871
|
font-family: 'Courier New', monospace;
|
|
1855
1872
|
margin-bottom: 0.5rem;
|
|
1856
|
-
padding: 0.25rem 0
|
|
1857
|
-
background:
|
|
1873
|
+
padding: 0.25rem 0;
|
|
1874
|
+
background: transparent;
|
|
1858
1875
|
border-radius: 0.25rem;
|
|
1859
1876
|
}
|
|
1860
1877
|
|
|
1861
1878
|
.file-content {
|
|
1862
|
-
background:
|
|
1879
|
+
background: transparent;
|
|
1863
1880
|
border-radius: 0.375rem;
|
|
1864
|
-
padding: 0.5rem;
|
|
1881
|
+
padding: 0.5rem 0;
|
|
1865
1882
|
overflow-x: auto;
|
|
1866
1883
|
font-size: 0.8rem;
|
|
1867
1884
|
font-family: 'Courier New', monospace;
|
package/.prd
DELETED
|
File without changes
|