1
0
This commit is contained in:
2026-03-04 11:22:08 +01:00
parent 2e94985975
commit 0a1b1c7714

View File

@@ -96,10 +96,16 @@ var openAiClient = new OpenAIClient(new ApiKeyCredential(apiKey), new OpenAIClie
IChatClient innerClient = openAiClient.GetChatClient(model).AsIChatClient(); IChatClient innerClient = openAiClient.GetChatClient(model).AsIChatClient();
// ── Tool call logging via Spectre ─────────────────────────────────────── // ── Tool call logging via Spectre ───────────────────────────────────────
static void ToolLog(string message) object consoleLock = new object();
void ToolLog(string message)
{ {
lock (consoleLock)
{
Console.Write("\r" + new string(' ', 40) + "\r");
AnsiConsole.MarkupLine($"[dim grey] ● {Markup.Escape(message)}[/]"); AnsiConsole.MarkupLine($"[dim grey] ● {Markup.Escape(message)}[/]");
} }
}
CommandTool.Log = CommandTool.Log =
DirTools.Log = DirTools.Log =
@@ -243,13 +249,19 @@ while (true)
bool showSpinner = true; bool showSpinner = true;
CommandTool.PauseSpinner = () => CommandTool.PauseSpinner = () =>
{
lock (consoleLock)
{ {
showSpinner = false; showSpinner = false;
Console.Write("\r" + new string(' ', 40) + "\r"); Console.Write("\r" + new string(' ', 40) + "\r");
}
}; };
CommandTool.ResumeSpinner = () => CommandTool.ResumeSpinner = () =>
{
lock (consoleLock)
{ {
showSpinner = true; showSpinner = true;
}
}; };
var spinnerTask = Task.Run(async () => var spinnerTask = Task.Run(async () =>
@@ -264,22 +276,28 @@ while (true)
{ {
while (!spinnerCts.Token.IsCancellationRequested) while (!spinnerCts.Token.IsCancellationRequested)
{ {
if (showSpinner) lock (consoleLock)
{
if (showSpinner && !spinnerCts.Token.IsCancellationRequested)
{ {
var frame = frames[i % frames.Count]; var frame = frames[i % frames.Count];
Console.Write($"\r\x1b[38;5;69m{frame}\x1b[0m Thinking..."); Console.Write($"\r\x1b[38;5;69m{frame}\x1b[0m Thinking...");
i++; i++;
} }
}
try { await Task.Delay(interval, spinnerCts.Token); } catch { } try { await Task.Delay(interval, spinnerCts.Token); } catch { }
} }
} }
finally finally
{ {
// Clear the spinner line and show cursor // Clear the spinner line and show cursor
lock (consoleLock)
{
if (showSpinner) if (showSpinner)
Console.Write("\r" + new string(' ', 40) + "\r"); Console.Write("\r" + new string(' ', 40) + "\r");
Console.Write("\x1b[?25h"); Console.Write("\x1b[?25h");
} }
}
}); });
try try