From 3047ad3066cce37cac79c923570a169362cf8ae1 Mon Sep 17 00:00:00 2001
From: westey <164392973+westey-m@users.noreply.github.com>
Date: Thu, 14 May 2026 16:22:11 +0100
Subject: [PATCH] .NET: Harness console refactoring (#5811)
* Restructure harness console so that reactive app is the entry point
* Further refactoring to split tool formatters, improve UX, make console configurable and fix bugs
* Address PR comments.
* UX tweak
* Fix streaming text bug
* Address PR comments.
---
.../ConsoleReactiveComponents/TextPanel.cs | 26 +-
.../TextScrollPanel.cs | 16 +-
.../Harness_ConsoleSandbox/AppComponent.cs | 315 ------------
.../Commands/CommandHandler.cs | 4 +-
.../Commands/ExitCommandHandler.cs | 26 +
.../Commands/ModeCommandHandler.cs | 4 +-
.../Commands/TodoCommandHandler.cs | 4 +-
.../Harness_Shared_Console/FollowUpAction.cs | 59 +++
.../HarnessAgentRunner.cs | 279 ++++++++++
.../HarnessAppComponent.cs | 450 +++++++++--------
.../HarnessAppComponentState.cs | 125 +++++
.../Harness_Shared_Console/HarnessConsole.cs | 250 ++-------
.../HarnessConsoleOptions.cs | 137 ++++-
.../HarnessConsoleUXStateDriver.cs | 408 +++++++++++++++
.../HarnessUXContainer.cs | 478 ------------------
.../Harness_Shared_Console/IUXStateDriver.cs | 120 +++++
.../Observers/ConsoleObserver.cs | 39 +-
.../Observers/ErrorDisplayObserver.cs | 5 +-
.../Observers/PlanningOutputObserver.cs | 155 ++++--
.../Observers/ReasoningDisplayObserver.cs | 5 +-
.../Observers/TextOutputObserver.cs | 6 +-
.../Observers/ToolApprovalObserver.cs | 115 +++--
.../Observers/ToolCallDisplayObserver.cs | 20 +-
.../Observers/ToolCallFormatter.cs | 288 -----------
.../Observers/UsageDisplayObserver.cs | 5 +-
.../Harness_Shared_Console/OutputEntry.cs | 7 +-
.../ToolFormatters/FallbackToolFormatter.cs | 51 ++
.../ToolFormatters/FileMemoryToolFormatter.cs | 61 +++
.../ToolFormatters/ModeToolFormatter.cs | 27 +
.../ToolFormatters/SubAgentToolFormatter.cs | 101 ++++
.../ToolFormatters/TodoToolFormatter.cs | 84 +++
.../ToolFormatters/ToolCallFormatter.cs | 135 +++++
.../ToolFormatters/WebSearchToolFormatter.cs | 22 +
.../DownloadUriToolFormatter.cs | 23 +
.../Harness_Step01_Research/Program.cs | 18 +-
.../Program.cs | 3 +-
.../Harness_Step03_DataProcessing/Program.cs | 3 +-
.../HarnessAgent.cs | 2 +
38 files changed, 2152 insertions(+), 1724 deletions(-)
delete mode 100644 dotnet/samples/02-agents/Harness/Harness_ConsoleSandbox/AppComponent.cs
create mode 100644 dotnet/samples/02-agents/Harness/Harness_Shared_Console/Commands/ExitCommandHandler.cs
create mode 100644 dotnet/samples/02-agents/Harness/Harness_Shared_Console/FollowUpAction.cs
create mode 100644 dotnet/samples/02-agents/Harness/Harness_Shared_Console/HarnessAgentRunner.cs
create mode 100644 dotnet/samples/02-agents/Harness/Harness_Shared_Console/HarnessAppComponentState.cs
create mode 100644 dotnet/samples/02-agents/Harness/Harness_Shared_Console/HarnessConsoleUXStateDriver.cs
delete mode 100644 dotnet/samples/02-agents/Harness/Harness_Shared_Console/HarnessUXContainer.cs
create mode 100644 dotnet/samples/02-agents/Harness/Harness_Shared_Console/IUXStateDriver.cs
delete mode 100644 dotnet/samples/02-agents/Harness/Harness_Shared_Console/Observers/ToolCallFormatter.cs
create mode 100644 dotnet/samples/02-agents/Harness/Harness_Shared_Console/ToolFormatters/FallbackToolFormatter.cs
create mode 100644 dotnet/samples/02-agents/Harness/Harness_Shared_Console/ToolFormatters/FileMemoryToolFormatter.cs
create mode 100644 dotnet/samples/02-agents/Harness/Harness_Shared_Console/ToolFormatters/ModeToolFormatter.cs
create mode 100644 dotnet/samples/02-agents/Harness/Harness_Shared_Console/ToolFormatters/SubAgentToolFormatter.cs
create mode 100644 dotnet/samples/02-agents/Harness/Harness_Shared_Console/ToolFormatters/TodoToolFormatter.cs
create mode 100644 dotnet/samples/02-agents/Harness/Harness_Shared_Console/ToolFormatters/ToolCallFormatter.cs
create mode 100644 dotnet/samples/02-agents/Harness/Harness_Shared_Console/ToolFormatters/WebSearchToolFormatter.cs
create mode 100644 dotnet/samples/02-agents/Harness/Harness_Step01_Research/DownloadUriToolFormatter.cs
diff --git a/dotnet/samples/02-agents/Harness/ConsoleReactiveComponents/TextPanel.cs b/dotnet/samples/02-agents/Harness/ConsoleReactiveComponents/TextPanel.cs
index cfd2b8c5ee..a9651f7726 100644
--- a/dotnet/samples/02-agents/Harness/ConsoleReactiveComponents/TextPanel.cs
+++ b/dotnet/samples/02-agents/Harness/ConsoleReactiveComponents/TextPanel.cs
@@ -9,42 +9,30 @@ namespace Harness.ConsoleReactiveComponents;
///
public record TextPanelProps : ConsoleReactiveProps
{
- /// Gets the items to render in the panel.
- public IReadOnlyList