Update
This commit is contained in:
22
Program.cs
22
Program.cs
@@ -96,9 +96,15 @@ 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 =
|
||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user