## Why When testing and debugging the AI chat agent, the system prompt and model parameters (temperature, top-p, max tokens) are hardcoded or absent. Exposing these in the UI lets the developer iterate on prompt engineering without restarting the server, and makes the app useful as a prompt testing workbench. ## What Changes ### Phase 1: Expose system prompt and model parameters - Add tabbed UI to the chat page: **Chat** tab (existing conversation), **System Prompt** tab (editable text area), **Model Settings** tab (temperature, top-p, max tokens sliders/inputs) - Extend the API contract: `ChatRequest` gains optional `SystemPrompt` and `ModelSettings` fields - Backend applies the system prompt as the first message in ChatHistory and passes model settings to execution settings ### Phase 2: Prompt templates with few-shot examples (future) - System prompt becomes a template with placeholder variables - UI for adding few-shot input/output example pairs - Template engine generates the final system prompt from template + examples - *Phase 2 is scoped but NOT implemented in this change* ## Capabilities ### New Capabilities - `prompt-settings-ui`: Tabbed interface for system prompt editing and model parameter controls - `prompt-settings-api`: API contract extensions for system prompt and model parameters ### Modified Capabilities - `chat-ui`: Chat page changes from single-panel to tabbed layout - `chat-streaming`: API accepts optional system prompt and model settings in the request ## Impact - **ChatRequest.cs** (Shared): Add `SystemPrompt` and `ModelSettings` properties - **New ModelSettings.cs** (Shared): Temperature, TopP, MaxTokens model - **ChatController.cs** (API): Apply system prompt to ChatHistory, pass model settings to execution settings - **Chat.razor** (Client): Wrap in MudTabs, add System Prompt and Model Settings tab panels - **ChatApiClient.cs** (Client): Pass new fields in requests - No new packages — MudTabs, MudTextField, MudSlider are all part of MudBlazor