Panel agents answer the user prompt in parallel (read-only, non-streaming); their responses are merged into the worker's last user message as a <panel_responses> block, and the session agent synthesizes one final streamed answer. The RunPanel engine is built layer-ready for future MoA. - New session fields: multi_model_mode (off/fusion), panel_agent_ids (CSV) with idempotent column migration - New partial Services/AnthropicService.Panel.cs holding the RunPanel engine - Provider-agnostic members: Anthropic RunNonStreamingToolLoop / OpenAI CompleteText / CLI plan-mode; all forced read-only, persisted with Tag=panel - SSE events: panel_start, panel_member_start, panel_member_done, panel_done - Frontend: multi-agent picker, live panel bubbles, history rendering - Graceful degradation: panel errors fall back to worker-only Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
61 lines
2.1 KiB
C#
61 lines
2.1 KiB
C#
using System.Collections.Generic;
|
|
using Gott.Services;
|
|
|
|
namespace Gott.Models;
|
|
|
|
public class ChatContext
|
|
{
|
|
public string ChainId { get; set; }
|
|
public string SessionId { get; set; }
|
|
public string ModelId { get; set; }
|
|
public string Provider { get; set; } // "" = Anthropic, "nvidia" = OpenAI-kompatibler Provider
|
|
public string Workspace { get; set; }
|
|
public string AgentId { get; set; }
|
|
public string SystemPromptText { get; set; }
|
|
public List<object> SystemPrompt { get; set; }
|
|
public List<PromptBlock> PromptBlocks { get; set; }
|
|
public string ToolChoice { get; set; }
|
|
public bool UseMemory { get; set; }
|
|
public string WebSearchVersion { get; set; }
|
|
public string Effort { get; set; }
|
|
public int MaxIterations { get; set; }
|
|
public AgentRecord Agent { get; set; }
|
|
public SessionRecord Session { get; set; }
|
|
public bool PlanMode { get; set; }
|
|
public string ApiToken { get; set; }
|
|
|
|
// Preparer-Agent (vor dem Worker)
|
|
public SubAgentContext Preparer { get; set; }
|
|
|
|
// Review-Agent
|
|
public SubAgentContext Review { get; set; }
|
|
|
|
// Finalizer-Agent
|
|
public SubAgentContext Finalizer { get; set; }
|
|
|
|
// Multi-Modell-Panel (Fusion): mehrere Agenten antworten parallel,
|
|
// der Worker synthetisiert. "off" / "fusion" (später "moa").
|
|
public string MultiModelMode { get; set; }
|
|
public List<SubAgentContext> PanelAgents { get; set; }
|
|
}
|
|
|
|
public class SubAgentContext
|
|
{
|
|
public string ModelId { get; set; }
|
|
public string Provider { get; set; } // "" = Anthropic, "nvidia"/"openai"/etc. = OpenAI-kompatibel
|
|
public List<object> SystemPrompt { get; set; }
|
|
public string AgentId { get; set; }
|
|
public string Workspace { get; set; }
|
|
public bool UseMemory { get; set; }
|
|
public string WebSearchVersion { get; set; }
|
|
public string ToolChoice { get; set; }
|
|
public string Effort { get; set; }
|
|
public AgentRecord Agent { get; set; }
|
|
|
|
// Preparer-spezifisch
|
|
public bool AllowUserChoice { get; set; }
|
|
|
|
// Review-spezifisch
|
|
public int MaxReviewIterations { get; set; }
|
|
}
|