Spaces:
Running
Running
Upload app.py
Browse files
app.py
CHANGED
|
@@ -447,6 +447,7 @@ html:not(.dark) .log-tname { color: #C2860A; font-weight: 600; }
|
|
| 447 |
.lb-final { background: rgba(61,214,140,.18); color: #3DD68C; }
|
| 448 |
.lb-info { background: rgba(140,140,180,.10); color: #6B6B8A; }
|
| 449 |
.lb-misc { background: rgba(140,140,180,.10); color: #6B6B8A; }
|
|
|
|
| 450 |
|
| 451 |
/* โโ Status box โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ */
|
| 452 |
.status-box textarea {
|
|
@@ -785,8 +786,24 @@ def _fmt_event(event: Dict[str, Any]) -> str:
|
|
| 785 |
ts = _ts()
|
| 786 |
tss = f'<span class="log-ts">[{ts}]</span> '
|
| 787 |
|
| 788 |
-
|
|
|
|
|
|
|
| 789 |
return ""
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 790 |
if et == "message_update":
|
| 791 |
ame = event.get("assistantMessageEvent", {})
|
| 792 |
if ame.get("type") == "text_delta":
|
|
@@ -794,6 +811,8 @@ def _fmt_event(event: Dict[str, Any]) -> str:
|
|
| 794 |
if delta:
|
| 795 |
return f'<span class="log-text">{_esc(delta)}</span>'
|
| 796 |
return ""
|
|
|
|
|
|
|
| 797 |
if et == "message_end":
|
| 798 |
content = event.get("content", "") or event.get("text", "")
|
| 799 |
if content:
|
|
@@ -802,6 +821,23 @@ def _fmt_event(event: Dict[str, Any]) -> str:
|
|
| 802 |
f'<span class="log-text">{_esc(content)}</span></div>'
|
| 803 |
)
|
| 804 |
return ""
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 805 |
if et == "tool_execution_start":
|
| 806 |
name = event.get("toolName", "unknown")
|
| 807 |
args = event.get("args", {})
|
|
@@ -812,6 +848,8 @@ def _fmt_event(event: Dict[str, Any]) -> str:
|
|
| 812 |
f' <span class="log-tname">{_esc(name)}</span>'
|
| 813 |
f'<span class="log-args"> {astr}</span></div>'
|
| 814 |
)
|
|
|
|
|
|
|
| 815 |
if et == "tool_execution_end":
|
| 816 |
name = event.get("toolName", "unknown")
|
| 817 |
is_err = event.get("isError", False)
|
|
@@ -822,9 +860,11 @@ def _fmt_event(event: Dict[str, Any]) -> str:
|
|
| 822 |
return (
|
| 823 |
f'<div class="log-row">{tss}'
|
| 824 |
f'<span class="lbadge {badge}">{label}</span>'
|
| 825 |
-
f' <span class="log-tname">{_esc(name)}</span>
|
| 826 |
-
f'<span class="log-result">โณ {prev}</span>'
|
| 827 |
)
|
|
|
|
|
|
|
| 828 |
if et == "agent_end":
|
| 829 |
note = event.get("note", "")
|
| 830 |
extra = f' <span class="log-text">{_esc(note)}</span>' if note else ""
|
|
@@ -832,17 +872,26 @@ def _fmt_event(event: Dict[str, Any]) -> str:
|
|
| 832 |
f'<div class="log-row">{tss}'
|
| 833 |
f'<span class="lbadge lb-done">AGENT END</span>{extra}</div>'
|
| 834 |
)
|
|
|
|
|
|
|
| 835 |
if et == "error":
|
| 836 |
return (
|
| 837 |
f'<div class="log-row">{tss}'
|
| 838 |
f'<span class="lbadge lb-err">ERROR</span>'
|
| 839 |
f' <span class="log-text" style="color:#FC8181">{_esc(event.get("error","?"))}</span></div>'
|
| 840 |
)
|
|
|
|
|
|
|
| 841 |
if et == "__final__":
|
| 842 |
return (
|
| 843 |
f'<div class="log-row">{tss}'
|
| 844 |
f'<span class="lbadge lb-final">โ FINAL ANSWER RECEIVED</span></div>'
|
| 845 |
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 846 |
content = _esc(json.dumps(event, ensure_ascii=False, default=str)[:200])
|
| 847 |
return (
|
| 848 |
f'<div class="log-row">{tss}'
|
|
|
|
| 447 |
.lb-final { background: rgba(61,214,140,.18); color: #3DD68C; }
|
| 448 |
.lb-info { background: rgba(140,140,180,.10); color: #6B6B8A; }
|
| 449 |
.lb-misc { background: rgba(140,140,180,.10); color: #6B6B8A; }
|
| 450 |
+
.lb-think { background: rgba(196,191,255,.16); color: #C4BFFF; }
|
| 451 |
|
| 452 |
/* โโ Status box โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ */
|
| 453 |
.status-box textarea {
|
|
|
|
| 786 |
ts = _ts()
|
| 787 |
tss = f'<span class="log-ts">[{ts}]</span> '
|
| 788 |
|
| 789 |
+
# โโ drop noisy / always-empty events โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
| 790 |
+
if et in ("turn_start", "message_start", "agent_start",
|
| 791 |
+
"provider_request_context", "response"):
|
| 792 |
return ""
|
| 793 |
+
|
| 794 |
+
# โโ turn_end: show thinking if present, else skip โโโโโโโโโโโโโโโโโโโโโ
|
| 795 |
+
if et == "turn_end":
|
| 796 |
+
thinking = event.get("thinking", "")
|
| 797 |
+
if not thinking:
|
| 798 |
+
return ""
|
| 799 |
+
preview = _esc(thinking[:300].replace("\n", " ")) + (" โฆ" if len(thinking) > 300 else "")
|
| 800 |
+
return (
|
| 801 |
+
f'<div class="log-row">{tss}'
|
| 802 |
+
f'<span class="lbadge lb-think">THINKING</span>'
|
| 803 |
+
f'<span class="log-result">โณ {preview}</span></div>'
|
| 804 |
+
)
|
| 805 |
+
|
| 806 |
+
# โโ streaming text delta โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
| 807 |
if et == "message_update":
|
| 808 |
ame = event.get("assistantMessageEvent", {})
|
| 809 |
if ame.get("type") == "text_delta":
|
|
|
|
| 811 |
if delta:
|
| 812 |
return f'<span class="log-text">{_esc(delta)}</span>'
|
| 813 |
return ""
|
| 814 |
+
|
| 815 |
+
# โโ message_end โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
| 816 |
if et == "message_end":
|
| 817 |
content = event.get("content", "") or event.get("text", "")
|
| 818 |
if content:
|
|
|
|
| 821 |
f'<span class="log-text">{_esc(content)}</span></div>'
|
| 822 |
)
|
| 823 |
return ""
|
| 824 |
+
|
| 825 |
+
# โโ tool update: only show if there is actual partial output โโโโโโโโโโ
|
| 826 |
+
if et == "tool_execution_update":
|
| 827 |
+
output = (event.get("output") or event.get("partialOutput")
|
| 828 |
+
or event.get("delta") or "")
|
| 829 |
+
if not output:
|
| 830 |
+
return ""
|
| 831 |
+
name = event.get("toolName", "")
|
| 832 |
+
preview = _esc(str(output)[:200].replace("\n", " ")) + (" โฆ" if len(str(output)) > 200 else "")
|
| 833 |
+
return (
|
| 834 |
+
f'<div class="log-row">{tss}'
|
| 835 |
+
f'<span class="lbadge lb-ts">TOOL โฆ</span>'
|
| 836 |
+
f' <span class="log-tname">{_esc(name)}</span>'
|
| 837 |
+
f'<span class="log-result">โณ {preview}</span></div>'
|
| 838 |
+
)
|
| 839 |
+
|
| 840 |
+
# โโ tool start โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
| 841 |
if et == "tool_execution_start":
|
| 842 |
name = event.get("toolName", "unknown")
|
| 843 |
args = event.get("args", {})
|
|
|
|
| 848 |
f' <span class="log-tname">{_esc(name)}</span>'
|
| 849 |
f'<span class="log-args"> {astr}</span></div>'
|
| 850 |
)
|
| 851 |
+
|
| 852 |
+
# โโ tool end โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
| 853 |
if et == "tool_execution_end":
|
| 854 |
name = event.get("toolName", "unknown")
|
| 855 |
is_err = event.get("isError", False)
|
|
|
|
| 860 |
return (
|
| 861 |
f'<div class="log-row">{tss}'
|
| 862 |
f'<span class="lbadge {badge}">{label}</span>'
|
| 863 |
+
f' <span class="log-tname">{_esc(name)}</span>'
|
| 864 |
+
f'<span class="log-result">โณ {prev}</span></div>'
|
| 865 |
)
|
| 866 |
+
|
| 867 |
+
# โโ agent end โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
| 868 |
if et == "agent_end":
|
| 869 |
note = event.get("note", "")
|
| 870 |
extra = f' <span class="log-text">{_esc(note)}</span>' if note else ""
|
|
|
|
| 872 |
f'<div class="log-row">{tss}'
|
| 873 |
f'<span class="lbadge lb-done">AGENT END</span>{extra}</div>'
|
| 874 |
)
|
| 875 |
+
|
| 876 |
+
# โโ error โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
| 877 |
if et == "error":
|
| 878 |
return (
|
| 879 |
f'<div class="log-row">{tss}'
|
| 880 |
f'<span class="lbadge lb-err">ERROR</span>'
|
| 881 |
f' <span class="log-text" style="color:#FC8181">{_esc(event.get("error","?"))}</span></div>'
|
| 882 |
)
|
| 883 |
+
|
| 884 |
+
# โโ final sentinel โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
| 885 |
if et == "__final__":
|
| 886 |
return (
|
| 887 |
f'<div class="log-row">{tss}'
|
| 888 |
f'<span class="lbadge lb-final">โ FINAL ANSWER RECEIVED</span></div>'
|
| 889 |
)
|
| 890 |
+
|
| 891 |
+
# โโ unknown: only show if there is something meaningful โโโโโโโโโโโโโโโ
|
| 892 |
+
keys = {k for k in event if k != "type"}
|
| 893 |
+
if not keys:
|
| 894 |
+
return ""
|
| 895 |
content = _esc(json.dumps(event, ensure_ascii=False, default=str)[:200])
|
| 896 |
return (
|
| 897 |
f'<div class="log-row">{tss}'
|