# What this sample demonstrates This sample demonstrates how to use a `ChatClientAgent` with the Harness `AIContextProviders` (`TodoProvider` and `AgentModeProvider`) for interactive research tasks with web search capabilities powered by Azure AI Foundry. Key features showcased: - **ChatClientAgent** — configured directly with Harness providers for planning and task management - **Web Search** — the agent can search the web for current information via `ResponseTool.CreateWebSearchTool()` - **TodoProvider** — the agent creates and manages a todo list to track research questions - **AgentModeProvider** — the agent switches between "plan" mode (breaking down the topic) and "execute" mode (answering each research question) - **Interactive conversation** — you can review the agent's plan, provide feedback, and approve before execution begins - **Streaming output** — responses are streamed token-by-token for a natural experience - **`/todos` command** — view the current todo list at any time without invoking the agent - **Mode-based coloring** — console output is colored based on the agent's current mode (cyan for plan, green for execute) ## Prerequisites Before running this sample, ensure you have: 1. An Azure AI Foundry project with a deployed model (e.g., `gpt-5.4`) 2. Azure CLI installed and authenticated (`az login`) ## Environment Variables Set the following environment variables: ```bash # Required: Your Azure AI Foundry OpenAI endpoint export AZURE_FOUNDRY_OPENAI_ENDPOINT="https://your-project.services.ai.azure.com/openai/v1/" # Optional: Model deployment name (defaults to gpt-5.4) export AZURE_AI_MODEL_DEPLOYMENT_NAME="gpt-5.4" ``` ## Running the Sample ```bash cd dotnet dotnet run --project samples/02-agents/Harness/Harness_Step01_Research ``` ## What to Expect The sample starts an interactive conversation loop. You can: 1. **Enter a research topic** — the agent will analyze it and create a plan with todos 2. **Review and adjust** — provide feedback on the plan, ask for changes, or approve it 3. **Type `/todos`** — to see the current todo list at any time 4. **Watch execution** — once approved, tell the agent to proceed and it will work through each todo 5. **Type `exit`** — to end the session The prompt and agent output are colored by the current mode: **cyan** during planning, **green** during execution.