Skip to content

Commit f498347

Browse files
Merge remote-tracking branch 'origin/dev' into PSL-US-26408
2 parents e008e8a + 47ed5ed commit f498347

32 files changed

+412
-452
lines changed

.github/CODEOWNERS

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,4 @@
22
# Each line is a file pattern followed by one or more owners.
33

44
# These owners will be the default owners for everything in the repo.
5-
* @Avijit-Microsoft @Roopan-Microsoft @Prajwal-Microsoft @aniaroramsft @brittneek @Vinay-Microsoft
5+
* @Avijit-Microsoft @Roopan-Microsoft @Prajwal-Microsoft @aniaroramsft @brittneek @Vinay-Microsoft @toherman-msft @nchandhi

README.md

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,9 @@ Analysts working with large volumes of conversational data can use this solution
1414

1515
</div>
1616
<br/>
17+
18+
**Note:** With any AI solutions you create using these templates, you are responsible for assessing all associated risks and for complying with all applicable laws and safety standards. Learn more in the transparency documents for [Agent Service](https://learn.microsoft.com/en-us/azure/ai-foundry/responsible-ai/agents/transparency-note) and [Agent Framework](https://github.com/microsoft/agent-framework/blob/main/TRANSPARENCY_FAQ.md).
19+
<br/>
1720

1821
<h2><img src="./documents/Images/ReadMe/solution-overview.png" width="48" />
1922
Solution overview
@@ -66,8 +69,8 @@ Follow the quick deploy steps on the deployment guide to deploy this solution
6669
<br/><br/>
6770

6871

69-
| [![Open in GitHub Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/microsoft/Conversation-Knowledge-Mining-Solution-Accelerator) | [![Open in Dev Containers](https://img.shields.io/static/v1?style=for-the-badge&label=Dev%20Containers&message=Open&color=blue&logo=visualstudiocode)](https://vscode.dev/redirect?url=vscode://ms-vscode-remote.remote-containers/cloneInVolume?url=https://github.com/microsoft/Conversation-Knowledge-Mining-Solution-Accelerator) |
70-
|---|---|
72+
| [![Open in GitHub Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/microsoft/Conversation-Knowledge-Mining-Solution-Accelerator) | [![Open in Dev Containers](https://img.shields.io/static/v1?style=for-the-badge&label=Dev%20Containers&message=Open&color=blue&logo=visualstudiocode)](https://vscode.dev/redirect?url=vscode://ms-vscode-remote.remote-containers/cloneInVolume?url=https://github.com/microsoft/Conversation-Knowledge-Mining-Solution-Accelerator) | [![Open in Visual Studio Code Web](https://img.shields.io/static/v1?style=for-the-badge&label=Visual%20Studio%20Code%20(Web)&message=Open&color=blue&logo=visualstudiocode&logoColor=white)](https://insiders.vscode.dev/azure/?vscode-azure-exp=foundry&agentPayload=eyJiYXNlVXJsIjogImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9taWNyb3NvZnQvQ29udmVyc2F0aW9uLUtub3dsZWRnZS1NaW5pbmctU29sdXRpb24tQWNjZWxlcmF0b3IvcmVmcy9oZWFkcy9tYWluL2luZnJhL3ZzY29kZV93ZWIiLCAiaW5kZXhVcmwiOiAiL2luZGV4Lmpzb24iLCAidmFyaWFibGVzIjogeyJhZ2VudElkIjogIiIsICJjb25uZWN0aW9uU3RyaW5nIjogIiIsICJ0aHJlYWRJZCI6ICIiLCAidXNlck1lc3NhZ2UiOiAiIiwgInBsYXlncm91bmROYW1lIjogIiIsICJsb2NhdGlvbiI6ICIiLCAic3Vic2NyaXB0aW9uSWQiOiAiIiwgInJlc291cmNlSWQiOiAiIiwgInByb2plY3RSZXNvdXJjZUlkIjogIiIsICJlbmRwb2ludCI6ICIifSwgImNvZGVSb3V0ZSI6IFsiYWktcHJvamVjdHMtc2RrIiwgInB5dGhvbiIsICJkZWZhdWx0LWF6dXJlLWF1dGgiLCAiZW5kcG9pbnQiXX0=) |
73+
|---|---|---|
7174

7275
<br/>
7376

documents/DeploymentGuide.md

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -73,8 +73,8 @@ azd env set AZURE_ENV_VM_ADMIN_PASSWORD <your-password>
7373

7474
Pick from the options below to see step-by-step instructions for GitHub Codespaces, VS Code Dev Containers, Local Environments, and Bicep deployments.
7575

76-
| [![Open in GitHub Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/microsoft/Conversation-Knowledge-Mining-Solution-Accelerator) | [![Open in Dev Containers](https://img.shields.io/static/v1?style=for-the-badge&label=Dev%20Containers&message=Open&color=blue&logo=visualstudiocode)](https://vscode.dev/redirect?url=vscode://ms-vscode-remote.remote-containers/cloneInVolume?url=https://github.com/microsoft/Conversation-Knowledge-Mining-Solution-Accelerator) |
77-
|---|---|
76+
| [![Open in GitHub Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/microsoft/Conversation-Knowledge-Mining-Solution-Accelerator) | [![Open in Dev Containers](https://img.shields.io/static/v1?style=for-the-badge&label=Dev%20Containers&message=Open&color=blue&logo=visualstudiocode)](https://vscode.dev/redirect?url=vscode://ms-vscode-remote.remote-containers/cloneInVolume?url=https://github.com/microsoft/Conversation-Knowledge-Mining-Solution-Accelerator) | [![Open in Visual Studio Code Web](https://img.shields.io/static/v1?style=for-the-badge&label=Visual%20Studio%20Code%20(Web)&message=Open&color=blue&logo=visualstudiocode&logoColor=white)](https://insiders.vscode.dev/azure/?vscode-azure-exp=foundry&agentPayload=eyJiYXNlVXJsIjogImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9taWNyb3NvZnQvQ29udmVyc2F0aW9uLUtub3dsZWRnZS1NaW5pbmctU29sdXRpb24tQWNjZWxlcmF0b3IvcmVmcy9oZWFkcy9tYWluL2luZnJhL3ZzY29kZV93ZWIiLCAiaW5kZXhVcmwiOiAiL2luZGV4Lmpzb24iLCAidmFyaWFibGVzIjogeyJhZ2VudElkIjogIiIsICJjb25uZWN0aW9uU3RyaW5nIjogIiIsICJ0aHJlYWRJZCI6ICIiLCAidXNlck1lc3NhZ2UiOiAiIiwgInBsYXlncm91bmROYW1lIjogIiIsICJsb2NhdGlvbiI6ICIiLCAic3Vic2NyaXB0aW9uSWQiOiAiIiwgInJlc291cmNlSWQiOiAiIiwgInByb2plY3RSZXNvdXJjZUlkIjogIiIsICJlbmRwb2ludCI6ICIifSwgImNvZGVSb3V0ZSI6IFsiYWktcHJvamVjdHMtc2RrIiwgInB5dGhvbiIsICJkZWZhdWx0LWF6dXJlLWF1dGgiLCAiZW5kcG9pbnQiXX0=) |
77+
|---|---|---|
7878

7979
<details>
8080
<summary><b>Deploy in GitHub Codespaces</b></summary>
@@ -94,7 +94,7 @@ You can run this solution using GitHub Codespaces. The button will open a web-ba
9494
</details>
9595

9696
<details>
97-
<summary><b>Deploy in VS Code</b></summary>
97+
<summary><b>Deploy in VS Code Dev Conatiners</b></summary>
9898

9999
### VS Code Dev Containers
100100

@@ -110,6 +110,24 @@ You can run this solution in VS Code Dev Containers, which will open the project
110110

111111
</details>
112112

113+
<details>
114+
<summary><b>Deploy in VS Code Web</b></summary>
115+
116+
### VS Code Web
117+
118+
[![Open in Visual Studio Code Web](https://img.shields.io/static/v1?style=for-the-badge&label=Visual%20Studio%20Code%20(Web)&message=Open&color=blue&logo=visualstudiocode&logoColor=white)](https://insiders.vscode.dev/azure/?vscode-azure-exp=foundry&agentPayload=eyJiYXNlVXJsIjogImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9taWNyb3NvZnQvQ29udmVyc2F0aW9uLUtub3dsZWRnZS1NaW5pbmctU29sdXRpb24tQWNjZWxlcmF0b3IvcmVmcy9oZWFkcy9tYWluL2luZnJhL3ZzY29kZV93ZWIiLCAiaW5kZXhVcmwiOiAiL2luZGV4Lmpzb24iLCAidmFyaWFibGVzIjogeyJhZ2VudElkIjogIiIsICJjb25uZWN0aW9uU3RyaW5nIjogIiIsICJ0aHJlYWRJZCI6ICIiLCAidXNlck1lc3NhZ2UiOiAiIiwgInBsYXlncm91bmROYW1lIjogIiIsICJsb2NhdGlvbiI6ICIiLCAic3Vic2NyaXB0aW9uSWQiOiAiIiwgInJlc291cmNlSWQiOiAiIiwgInByb2plY3RSZXNvdXJjZUlkIjogIiIsICJlbmRwb2ludCI6ICIifSwgImNvZGVSb3V0ZSI6IFsiYWktcHJvamVjdHMtc2RrIiwgInB5dGhvbiIsICJkZWZhdWx0LWF6dXJlLWF1dGgiLCAiZW5kcG9pbnQiXX0=):
119+
120+
1. Click the badge above (may take a few minutes to load)
121+
2. Sign in with your Azure account when prompted
122+
3. Select the subscription where you want to deploy the solution
123+
4. Wait for the environment to initialize (includes all deployment tools)
124+
5. When prompted in the VS Code Web terminal, choose one of the available options shown below:
125+
126+
![VS Code Initial Prompt](./Images/vscodeweb_intialize.png)
127+
6. Continue with the [deploying steps](#deploying-with-azd).
128+
129+
</details>
130+
113131
<details>
114132
<summary><b>Deploy in your local Environment</b></summary>
115133

@@ -223,6 +241,7 @@ Once you've opened the project in [Codespaces](#github-codespaces), [Dev Contain
223241
5. Once the deployment has completed successfully, open the [Azure Portal](https://portal.azure.com/), go to the deployed resource group, find the App Service, and get the app URL from `Default domain`.
224242
225243
6. If you are done trying out the application, you can delete the resources by running `azd down`.
244+
> **Note:** If you deployed with `enableRedundancy=true` and Log Analytics workspace replication is enabled, you must first disable replication before running `azd down` else resource group delete will fail. Follow the steps in [Handling Log Analytics Workspace Deletion with Replication Enabled](./LogAnalyticsReplicationDisable.md), wait until replication returns `false`, then run `azd down`.
226245
227246
### 🛠️ Troubleshooting
228247
If you encounter any issues during the deployment process, please refer [troubleshooting](../documents/TroubleShootingSteps.md) document for detailed steps and solutions
34.8 KB
Loading
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
# 🛠 Handling Log Analytics Workspace Deletion with Replication Enabled
2+
3+
If redundancy (replication) is enabled for your Log Analytics workspace, you must disable it before deleting the workspace or resource group. Otherwise, deletion will fail.
4+
5+
## ✅ Steps to Disable Replication Before Deletion
6+
Run the following Azure CLI command. Note: This operation may take about 5 minutes to complete.
7+
8+
```bash
9+
az resource update --ids "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{logAnalyticsName}" --set properties.replication.enabled=false
10+
```
11+
12+
Replace:
13+
- `{subscriptionId}` → Your Azure subscription ID
14+
- `{resourceGroupName}` → The name of your resource group
15+
- `{logAnalyticsName}` → The name of your Log Analytics workspace
16+
17+
Optional: Verify replication disabled (should output `false`):
18+
```bash
19+
az resource show --ids "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{logAnalyticsName}" --query properties.replication.enabled -o tsv
20+
```
21+
22+
## ✅ After Disabling Replication
23+
You can safely delete:
24+
- The Log Analytics workspace (manual)
25+
- The resource group (manual), or
26+
- All provisioned resources via `azd down`
27+
28+
Return to: [Deployment Guide](./DeploymentGuide.md)

infra/main.bicep

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -607,6 +607,10 @@ module keyvault 'br/public:avm/res/key-vault/vault:0.12.1' = {
607607
name: 'AZURE-OPENAI-ENDPOINT'
608608
value: !empty(existingOpenAIEndpoint) ? existingOpenAIEndpoint : 'https://${aiFoundryAiServicesResourceName}.openai.azure.com/'
609609
}
610+
{
611+
name: 'AZURE-AI-AGENT-ENDPOINT'
612+
value: !empty(existingProjEndpoint) ? existingProjEndpoint : aiFoundryAiServices.outputs.aiProjectInfo.apiEndpoint
613+
}
610614
{
611615
name: 'COG-SERVICES-ENDPOINT'
612616
value: !empty(existingOpenAIEndpoint) ? existingOpenAIEndpoint : aiFoundryAiServices.outputs.endpoint

infra/main.json

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
"_generator": {
77
"name": "bicep",
88
"version": "0.37.4.10188",
9-
"templateHash": "11248839133370877384"
9+
"templateHash": "4682612971990946423"
1010
}
1111
},
1212
"parameters": {
@@ -21073,6 +21073,10 @@
2107321073
"name": "AZURE-OPENAI-ENDPOINT",
2107421074
"value": "[if(not(empty(variables('existingOpenAIEndpoint'))), variables('existingOpenAIEndpoint'), format('https://{0}.openai.azure.com/', variables('aiFoundryAiServicesResourceName')))]"
2107521075
},
21076+
{
21077+
"name": "AZURE-AI-AGENT-ENDPOINT",
21078+
"value": "[if(not(empty(variables('existingProjEndpoint'))), variables('existingProjEndpoint'), reference('aiFoundryAiServices').outputs.aiProjectInfo.value.apiEndpoint)]"
21079+
},
2107621080
{
2107721081
"name": "COG-SERVICES-ENDPOINT",
2107821082
"value": "[if(not(empty(variables('existingOpenAIEndpoint'))), variables('existingOpenAIEndpoint'), reference('aiFoundryAiServices').outputs.endpoint.value)]"
@@ -30063,8 +30067,8 @@
3006330067
},
3006430068
"dependsOn": [
3006530069
"[format('avmPrivateDnsZones[{0}]', variables('dnsZoneIndex').cognitiveServices)]",
30066-
"[format('avmPrivateDnsZones[{0}]', variables('dnsZoneIndex').aiServices)]",
3006730070
"[format('avmPrivateDnsZones[{0}]', variables('dnsZoneIndex').openAI)]",
30071+
"[format('avmPrivateDnsZones[{0}]', variables('dnsZoneIndex').aiServices)]",
3006830072
"backendUserAssignedIdentity",
3006930073
"logAnalyticsWorkspace",
3007030074
"userAssignedIdentity",
@@ -32391,9 +32395,9 @@
3239132395
}
3239232396
},
3239332397
"dependsOn": [
32394-
"[format('avmPrivateDnsZones[{0}]', variables('dnsZoneIndex').cognitiveServices)]",
32395-
"[format('avmPrivateDnsZones[{0}]', variables('dnsZoneIndex').aiServices)]",
3239632398
"[format('avmPrivateDnsZones[{0}]', variables('dnsZoneIndex').openAI)]",
32399+
"[format('avmPrivateDnsZones[{0}]', variables('dnsZoneIndex').aiServices)]",
32400+
"[format('avmPrivateDnsZones[{0}]', variables('dnsZoneIndex').cognitiveServices)]",
3239732401
"logAnalyticsWorkspace",
3239832402
"userAssignedIdentity",
3239932403
"virtualNetwork"
@@ -40763,10 +40767,10 @@
4076340767
}
4076440768
},
4076540769
"dependsOn": [
40766-
"[format('avmPrivateDnsZones[{0}]', variables('dnsZoneIndex').storageFile)]",
40770+
"[format('avmPrivateDnsZones[{0}]', variables('dnsZoneIndex').storageBlob)]",
4076740771
"[format('avmPrivateDnsZones[{0}]', variables('dnsZoneIndex').storageQueue)]",
40772+
"[format('avmPrivateDnsZones[{0}]', variables('dnsZoneIndex').storageFile)]",
4076840773
"[format('avmPrivateDnsZones[{0}]', variables('dnsZoneIndex').storageDfs)]",
40769-
"[format('avmPrivateDnsZones[{0}]', variables('dnsZoneIndex').storageBlob)]",
4077040774
"userAssignedIdentity",
4077140775
"virtualNetwork"
4077240776
]

infra/vscode_web/.env

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
AZURE_EXISTING_AGENT_ID="<%= agentId %>"
2+
AZURE_ENV_NAME="<%= playgroundName %>"
3+
# AZURE_LOCATION="<%= location %>"
4+
AZURE_SUBSCRIPTION_ID="<%= subscriptionId %>"
5+
AZURE_EXISTING_AIPROJECT_ENDPOINT="<%= endpoint %>"
6+
AZURE_EXISTING_AIPROJECT_RESOURCE_ID="<%= projectResourceId %>"
7+
AZD_ALLOW_NON_EMPTY_FOLDER=true

infra/vscode_web/.gitignore

Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
# ========== .NET ========== #
2+
## Build results
3+
bin/
4+
obj/
5+
[Bb]uild/
6+
[Ll]ogs/
7+
*.log
8+
## User-specific files
9+
*.user
10+
*.suo
11+
*.userosscache
12+
*.sln.docstates
13+
*.vsp
14+
*.vspx
15+
*.vspscc
16+
## Rider / VS Code / Visual Studio
17+
.idea/
18+
.vscode/
19+
.vs/
20+
## NuGet packages
21+
*.nupkg
22+
packages/
23+
*.snupkg
24+
project.lock.json
25+
project.assets.json
26+
## Dotnet tools
27+
.tools/
28+
# ========== Java ========== #
29+
## Compiled class files
30+
*.class
31+
## Logs
32+
*.log
33+
## Maven
34+
target/
35+
## Gradle
36+
.gradle/
37+
build/
38+
## Eclipse
39+
.project
40+
.classpath
41+
.settings/
42+
.loadpath
43+
## IntelliJ IDEA
44+
*.iml
45+
*.ipr
46+
*.iws
47+
out/
48+
.idea/
49+
# ========== Python ========== #
50+
## Byte-compiled / cache
51+
__pycache__/
52+
*.py[cod]
53+
*$py.class
54+
## Virtual environment
55+
env/
56+
venv/
57+
ENV/
58+
.venv/
59+
.env*
60+
## PyInstaller
61+
*.spec
62+
dist/
63+
build/
64+
## Jupyter Notebook
65+
.ipynb_checkpoints/
66+
## Misc
67+
*.log
68+
*.pot
69+
*.pyc
70+
.DS_Store
71+
*.sqlite3
72+
# ========== General ========== #
73+
## OS generated
74+
Thumbs.db
75+
ehthumbs.db
76+
Desktop.ini
77+
.DS_Store
78+
*.swp
79+
*.swo
80+
*.bak
81+
*.tmp
82+
*.old
83+
## Node (just in case mixed project)
84+
node_modules/
85+
# End

infra/vscode_web/LICENSE

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
MIT License
2+
3+
Copyright (c) Microsoft Corporation.
4+
5+
Permission is hereby granted, free of charge, to any person obtaining a copy
6+
of this software and associated documentation files (the "Software"), to deal
7+
in the Software without restriction, including without limitation the rights
8+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9+
copies of the Software, and to permit persons to whom the Software is
10+
furnished to do so, subject to the following conditions:
11+
12+
The above copyright notice and this permission notice shall be included in all
13+
copies or substantial portions of the Software.
14+
15+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21+
SOFTWARE.

0 commit comments

Comments
 (0)