Skip to content

Commit 3187e1a

Browse files
authored
Revise README with references and deployment details
Updated the README to include detailed references and deployment approaches, enhancing the structure and clarity of the document.
1 parent 47045df commit 3187e1a

1 file changed

Lines changed: 31 additions & 27 deletions

File tree

README.md

Lines changed: 31 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,27 @@ Last updated: 2026-03-13
1616
<summary><b>List of References</b> (Click to expand)</summary>
1717

1818
- [Microsoft Foundry SDKs and Endpoints](https://learn.microsoft.com/en-us/azure/ai-foundry/how-to/develop/sdk-overview?view=foundry&pivots=programming-language-python)
19-
- Microsoft Defender for Cloud (DevOps security)
19+
- Microsoft Defender for Cloud (DevOps security):
2020
- [Connect GitHub to Defender for Cloud](https://learn.microsoft.com/azure/defender-for-cloud/quickstart-onboard-github)
2121
- [Connect Azure DevOps to Defender for Cloud](https://learn.microsoft.com/azure/defender-for-cloud/quickstart-onboard-devops)
2222
- [DevOps security permissions and prerequisites](https://learn.microsoft.com/azure/defender-for-cloud/devops-support)
2323

2424
</details>
2525

26+
<details>
27+
<summary><b>Table of Content</b> (Click to expand)</summary>
28+
29+
- [Deployment Approaches (pick one)](#deployment-approaches-pick-one)
30+
- [Key Features](#key-features)
31+
- [More Security with Microsoft Defender](#more-security-with-microsoft-defender)
32+
- [If the Azure portal blade errors](#if-the-azure-portal-blade-errors)
33+
- [About A2A Protocol](#about-a2a-protocol)
34+
- [Architecture](#architecture)
35+
- [What Happens Under the Hood](#what-happens-under-the-hood)
36+
- [Verification](#verification)
37+
38+
</details>
39+
2640
> E.g Web App approach:
2741
2842
<div align="center">
@@ -37,7 +51,7 @@ Last updated: 2026-03-13
3751
> 2. Initialize terraform with `terraform init`. Click here to [understand more about the deployment process](./terraform-infrastructure/README.md)
3852
> 3. Run `terraform apply`, you can also leverage `terraform apply -auto-approve`.
3953
40-
### Deployment Approaches (pick one)
54+
## Deployment Approaches (pick one)
4155

4256
- **Container Apps (recommended default in this repo)**
4357
- In `terraform-infrastructure/terraform.tfvars`: set `deployment_target = "containerapps"`
@@ -46,7 +60,7 @@ Last updated: 2026-03-13
4660
- **App Service (Linux custom container)**
4761
- In `terraform-infrastructure/terraform.tfvars`: set `deployment_target = "appservice"` and choose `app_service_sku` (e.g. `P0v3`)
4862
- Run: `cd terraform-infrastructure` then `terraform apply -var-file terraform.tfvars`
49-
63+
5064
## Key Features
5165

5266
- **Multi-agent chat orchestration (default runtime)**: WebSocket `/ws` chat app orchestrates multiple agents in a single conversation flow (routing + multi-step handoffs)
@@ -64,6 +78,12 @@ Last updated: 2026-03-13
6478
- **UI-visible diagnostics**: Correlated `error_id` responses and optional tracebacks via `A2A_DEBUG=true` for faster troubleshooting
6579
- **Optional A2A server included**: `src/a2a/` contains an A2A-style server framework, but it is not the default Container Apps entrypoint unless you deploy it explicitly
6680

81+
> [!NOTE]
82+
> Visibility-first rollout (recommended for demos):
83+
> - Onboard **GitHub connector only** first to validate the Defender dashboards/workbooks.
84+
> - Onboard **Azure DevOps connector** only in a **sandbox org/project**.
85+
> - Keep **PR annotations OFF** initially (no write-back to PRs) until you decide to enable them.
86+
6787
## More Security with Microsoft Defender
6888

6989
> [!IMPORTANT]
@@ -82,41 +102,26 @@ This repo supports two complementary “Defender” scenarios:
82102
- This is the feature area that provides the “central dashboard” experience for GHAS-like findings (code scanning, dependency, secrets) across **organizations/projects** (not just individual repos).
83103
- It can optionally add **Pull Request annotations** (a write-back action) but only when you explicitly enable/configure that feature.
84104

85-
### Opt out (disable Defender)
86-
87-
- In [terraform-infrastructure/terraform.tfvars](terraform-infrastructure/terraform.tfvars), set:
88-
- `enable_defender_for_cloud = false`
89-
- `enable_defender_devops_security = false`
90-
91-
### Visibility-first rollout (recommended for demos)
92-
93-
- Onboard **GitHub connector only** first to validate the Defender dashboards/workbooks.
94-
- Onboard **Azure DevOps connector** only in a **sandbox org/project**.
95-
- Keep **PR annotations OFF** initially (no write-back to PRs) until you decide to enable them.
105+
> [!NOTE]
106+
> Opt out (disable Defender): In [terraform-infrastructure/terraform.tfvars](terraform-infrastructure/terraform.tfvars), set:
107+
> - `enable_defender_for_cloud = false`
108+
> - `enable_defender_devops_security = false`
96109
97110
### If the Azure portal blade errors
98111

99-
If the Azure portal **Defender for Cloud → Environment settings** page fails to load with an error like:
100-
`ECS feature flags for project 'Defenders' are not initialized (ErrorAcquiringViewModel)`
101-
102-
Use one of these workarounds:
112+
> If the Azure portal **Defender for Cloud → Environment settings** page fails to load with an error like: `ECS feature flags for project 'Defenders' are not initialized (ErrorAcquiringViewModel)`. Use one of these workarounds:
103113
104114
- **Open the connector resource directly** (bypasses the Environment Settings blade):
105115
- Find the connector resource IDs from Terraform outputs (look for `defender_devops_security_connector_ids`).
106116
- Open in the portal using this pattern:
107117
- `https://portal.azure.com/#resource/<connector-resource-id>/overview`
108118
- Example: `.../providers/Microsoft.Security/securityConnectors/github-connector`
109-
110-
- **List the connector IDs via CLI** (then open them with the URL above):
111-
- `az resource list -g <rg-name> --resource-type Microsoft.Security/securityConnectors -o table`
112-
119+
- **List the connector IDs via CLI** (then open them with the URL above): `az resource list -g <rg-name> --resource-type Microsoft.Security/securityConnectors -o table`
113120
- **Browser reset**: try InPrivate/Incognito, disable extensions (ad blockers), and sign out/in.
114121

115122
## About A2A Protocol
116123

117-
`A2A (Agent-to-Agent) Protocol is a standardized communication framework that enables multiple AI agents to collaborate and coordinate tasks seamlessly.` Like a communication pattern for coordinating multiple agents through structured messages, delegation, and (optionally) event-driven workflows.
118-
119-
This repo contains **two multi-agent implementations**:
124+
`A2A (Agent-to-Agent) Protocol is a standardized communication framework that enables multiple AI agents to collaborate and coordinate tasks seamlessly.` Like a communication pattern for coordinating multiple agents through structured messages, delegation, and (optionally) event-driven workflows. This repo contains **two multi-agent implementations**:
120125

121126
- **Default deployed chat runtime (what the Dockerfile runs)**: WebSocket `/ws` in `src/chat_app_multi_agent.py`, which routes requests and orchestrates **real Azure AI Foundry Agents** in a multi-step handoff sequence.
122127
- **Optional A2A server implementation**: an A2A-style server under `src/a2a/` (routers, coordinator, event/task framework). Use this only if you deploy/run that entrypoint.
@@ -150,8 +155,7 @@ This repo contains **two multi-agent implementations**:
150155
- **Product catalog helper/plugin (if used)**: `src/app/agents/product_information_plugin.py`
151156

152157
> [!IMPORTANT]
153-
> A2A vs the default deployed chat runtime
154-
>
158+
> A2A vs the default deployed chat runtime:
155159
> - **A2A server path**: event/task oriented framework under `src/a2a/` (only available if you deploy/run that server)
156160
> - **Default path**: `/ws` WebSocket chat + routing + sequential handoffs to real Foundry agents (no event queue required for the default flow)
157161

0 commit comments

Comments
 (0)