diff --git a/Services/AnthropicService.Cli.cs b/Services/AnthropicService.Cli.cs index d52e58b..578dcd1 100644 --- a/Services/AnthropicService.Cli.cs +++ b/Services/AnthropicService.Cli.cs @@ -255,6 +255,17 @@ public partial class AnthropicService isError = evt.ToolResultIsError }, sseCt); + // ask_user_choice wurde gerade beantwortet (Result des Choice-Tools kam zurück) + // → Choice-Pause aufheben: die CLI nimmt die Arbeit in DERSELBEN Invocation + // wieder auf, also muss Steering ab hier wieder greifen. Ohne diesen Reset + // bliebe isUserChoice für den Rest des Laufs true und ein Einwurf käme erst + // ganz am Chain-Ende (als Close()-Leftover) an statt am nächsten Boundary. + if (isUserChoice && choiceToolCallId != null && evt.ToolId == choiceToolCallId) + { + isUserChoice = false; + choiceToolCallId = null; + } + // Steering: Tool-Boundary erreicht – steht ein Einwurf an, Child killen // (löst OperationCanceledException aus → Restart unten). if (!segSteerTriggered && !isUserChoice