feat(ui): colour agent output by kind and stop cutting tool calls at 120 chars
StreamLineFormatter now returns kind-tagged entries (text, tool, edit, tool result, error, sys, result) instead of a flat string, so the existing LogKind colours finally apply to stream-json output. Tool argument/result limit raised from 120 to 500 chars.
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
namespace ClaudeDo.Ui.ViewModels.Islands;
|
||||
|
||||
public enum LogKind { Sys, Tool, Claude, Stdout, Stderr, Done, Msg, User }
|
||||
public enum LogKind { Sys, Tool, Claude, Stdout, Stderr, Done, Msg, User, Edit, ToolResult }
|
||||
|
||||
public sealed class LogLineViewModel
|
||||
{
|
||||
@@ -9,26 +9,42 @@ public sealed class LogLineViewModel
|
||||
public string TimestampFormatted { get; } = DateTime.Now.ToString("HH:mm:ss");
|
||||
public string KindMarker => Kind switch
|
||||
{
|
||||
LogKind.Sys => "sys",
|
||||
LogKind.Tool => "tool",
|
||||
LogKind.Claude => "claude",
|
||||
LogKind.Stdout => "out",
|
||||
LogKind.Stderr => "err",
|
||||
LogKind.Done => "done",
|
||||
LogKind.Msg => "claude",
|
||||
LogKind.User => "you",
|
||||
_ => "",
|
||||
LogKind.Sys => "sys",
|
||||
LogKind.Tool => "tool",
|
||||
LogKind.Claude => "claude",
|
||||
LogKind.Stdout => "out",
|
||||
LogKind.Stderr => "err",
|
||||
LogKind.Done => "done",
|
||||
LogKind.Msg => "claude",
|
||||
LogKind.User => "you",
|
||||
LogKind.Edit => "edit",
|
||||
LogKind.ToolResult => "result",
|
||||
_ => "",
|
||||
};
|
||||
public string ClassName => Kind switch
|
||||
{
|
||||
LogKind.Sys => "log-sys",
|
||||
LogKind.Tool => "log-tool",
|
||||
LogKind.Claude => "log-claude",
|
||||
LogKind.Stdout => "log-stdout",
|
||||
LogKind.Stderr => "log-stderr",
|
||||
LogKind.Done => "log-done",
|
||||
LogKind.Msg => "log-msg",
|
||||
LogKind.User => "log-user",
|
||||
_ => "",
|
||||
LogKind.Sys => "log-sys",
|
||||
LogKind.Tool => "log-tool",
|
||||
LogKind.Claude => "log-claude",
|
||||
LogKind.Stdout => "log-stdout",
|
||||
LogKind.Stderr => "log-stderr",
|
||||
LogKind.Done => "log-done",
|
||||
LogKind.Msg => "log-msg",
|
||||
LogKind.User => "log-user",
|
||||
LogKind.Edit => "log-edit",
|
||||
LogKind.ToolResult => "log-result",
|
||||
_ => "",
|
||||
};
|
||||
|
||||
/// <summary>Splits formatter entries into one log line per non-blank text line, keeping each entry's kind.</summary>
|
||||
public static IEnumerable<LogLineViewModel> FromEntries(IEnumerable<(LogKind Kind, string Text)> entries)
|
||||
{
|
||||
foreach (var (kind, text) in entries)
|
||||
foreach (var raw in text.Split('\n'))
|
||||
{
|
||||
var piece = raw.TrimEnd('\r');
|
||||
if (!string.IsNullOrWhiteSpace(piece))
|
||||
yield return new LogLineViewModel { Kind = kind, Text = piece };
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user