Skip to content
Closed

Main #1557

Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
53 commits
Select commit Hold shift + click to select a range
f972d97
Merge pull request #1482 from OfficeDev/nintan/dev-to-main
wh-alice Sep 2, 2025
d0ba296
refactor: update readme
yuqizhou77 Sep 3, 2025
eb2f0ff
Merge pull request #1484 from OfficeDev/yuqzho/sample-readme
wh-alice Sep 3, 2025
e913100
fix: sample link
tecton Sep 18, 2025
d8b477b
fix: proactive message sample link
tecton Sep 19, 2025
941b2a0
Merge pull request #1489 from OfficeDev/nintan/fix-link
wh-alice Sep 19, 2025
57f7898
Merge branch 'dev' into nintan/v3.1.0
tecton Nov 6, 2025
f550701
Merge pull request #1506 from OfficeDev/nintan/v3.1.0
wh-alice Nov 7, 2025
05e5f2a
fix: remove 2 samples until they are ready
tecton Nov 10, 2025
b7fe168
fix image link
qinzhouxu Nov 10, 2025
de22439
Merge pull request #1508 from OfficeDev/qinzhouxu/travel-agent
wh-alice Nov 10, 2025
e1d15be
Merge pull request #1507 from OfficeDev/nintan/remove-samples
wh-alice Nov 10, 2025
654ae0e
fix teams ai library sample image size
qinzhouxu Nov 10, 2025
79c1a1b
Merge pull request #1509 from OfficeDev/qinzhouxu/image
wh-alice Nov 10, 2025
facb61c
modify sign in method
qinzhouxu Nov 10, 2025
55604c6
fix deploy issue for teams ai samples
qinzhouxu Nov 11, 2025
0c9052b
Merge pull request #1510 from OfficeDev/qinzhouxu/coffee
wh-alice Nov 11, 2025
6560e90
fix provision issue
qinzhouxu Nov 11, 2025
0ecd4b1
Merge pull request #1511 from OfficeDev/qinzhouxu/travel-agent-refine
wh-alice Nov 11, 2025
81db38b
fix: add prerequisite for travel agent readme
qinzhouxu Nov 13, 2025
535efd7
change tenant id
qinzhouxu Nov 13, 2025
0ab0d40
Merge pull request #1516 from OfficeDev/qinzhouxu/readme
wh-alice Nov 13, 2025
5311638
feat: add AI Foundry proxy agent
HuihuiWu-Microsoft Nov 10, 2025
aa57f9b
feat: add meta data
HuihuiWu-Microsoft Nov 10, 2025
986888b
feat: update featured samples
HuihuiWu-Microsoft Nov 11, 2025
4eb35c0
chore: add agent info env as prerequisites
HuihuiWu-Microsoft Nov 12, 2025
e73291b
fix: project is provisioned twice when local debug and validate prere…
HuihuiWu-Microsoft Nov 12, 2025
4ea1c0c
fix: update readme to ask user to sideload apps manually for local
HuihuiWu-Microsoft Nov 12, 2025
8804a47
fix: ask user to update agent envs in azure portal
HuihuiWu-Microsoft Nov 12, 2025
85b3cac
fix: user need RBAC admin role for granting MI app insights
HuihuiWu-Microsoft Nov 12, 2025
c6863fc
fix: format
HuihuiWu-Microsoft Nov 12, 2025
8df142e
fix: image path
HuihuiWu-Microsoft Nov 12, 2025
2749ddb
revert: aif sample source code
HuihuiWu-Microsoft Nov 17, 2025
bb4492f
fix: update proxy agent config
HuihuiWu-Microsoft Nov 17, 2025
b735f72
Add proxyAgent (#1518)
ericsche Nov 17, 2025
4ccd916
fix: update config
HuihuiWu-Microsoft Nov 17, 2025
321fd4d
Merge pull request #1515 from OfficeDev/aif-sample
wh-alice Nov 17, 2025
5472bf5
fix: remove tab with azure backend and large scale samples from featured
HuihuiWu-Microsoft Nov 18, 2025
de165ff
Merge pull request #1523 from OfficeDev/remove-featured
wh-alice Nov 18, 2025
5fead45
feat: onboard a365 samples
Alive-Fish Nov 18, 2025
8bd8488
Merge pull request #1526 from OfficeDev/zhiyou/a365
wh-alice Nov 18, 2025
176d7d9
Proxy Agent Minor fixes (#1528)
ericsche Nov 24, 2025
9fe2865
Merge pull request #1530 from OfficeDev/update-aif
wh-alice Nov 24, 2025
ec8f11a
Initial plan
Copilot Dec 15, 2025
ac76113
Add Devin Agent with Agent365 SDK sample to configuration
Copilot Dec 15, 2025
5ba87db
Add N8n Agent with Agent365 SDK sample to configuration
Copilot Dec 22, 2025
88a1ab0
Add OpenAI Agent with Agent365 SDK NodeJS sample to configuration
Copilot Dec 22, 2025
84ac3ce
Add Perplexity Agent with Agent365 SDK NodeJS sample to configuration
Copilot Dec 22, 2025
84de7d8
Add Vercel-sdk Agent with Agent365 SDK NodeJS sample to configuration
Copilot Dec 22, 2025
0743ada
Update onboardDate to 2025-12-23 for newly added Agent365 samples
Copilot Dec 22, 2025
0beffa2
Update onboardDate to 2025-12-25 for newly added Agent365 samples
Copilot Dec 25, 2025
22b28b6
Update onboardDate to 2026-1-4 for newly added Agent365 samples
Copilot Jan 4, 2026
c4418f7
Merge pull request #1540 from OfficeDev/copilot/add-devin-agent-sample
wh-alice Jan 4, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
278 changes: 239 additions & 39 deletions .config/samples-config-v3.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
{
"filterOptions": {
"capabilities": [
"Agent365",
"Declarative Agent",
"Custom Engine Agent",
"Tab",
Expand All @@ -24,7 +25,106 @@
"Dev Proxy"
]
},
"samples": [
"samples": [ {
"id": "agent365-langchain-nodejs",
"shortId": "agent365-langchain-nodejs",
"onboardDate": "2025-11-17",
"title": "Langchain Agent with Agent365 SDK in NodeJS",
"shortDescription": "Langchain Agent with Agent365 SDK in NodeJS",
"fullDescription": "This project integrates a Langchain agent built with Agent365 functionalities. The focus is on hands-on development and testing in LangChain and Agent365.",
"types": [
"Agent365"
],
"tags": [
"Agent365",
"TS"
],
"time": "5min to run",
"configuration": "Ready for debug",
"thumbnailPath": "images/langchain-thumbnail.png",
"suggested": false,
"downloadUrlInfo": {
"owner": "microsoft",
"repository": "Agent365-Samples",
"ref": "main",
"dir": "nodejs/langchain/sample-agent"
}
},
{
"id": "agent365-agentframework-python",
"shortId": "agent365-agentframework-python",
"onboardDate": "2025-11-17",
"title": "Agent Framework Agent with Agent365 SDK in Python",
"shortDescription": "Agent Framework Agent with Agent365 SDK in Python",
"fullDescription": "This project integrates an agent built on Agent Framework SDK (Python) with A365 functionalities. The focus is on hands-on development and testing.",
"types": [
"Agent365"
],
"tags": [
"Agent365",
"Python"
],
"time": "5min to run",
"configuration": "Ready for debug",
"thumbnailPath": "images/agentframework-thumbnail.png",
"suggested": false,
"downloadUrlInfo": {
"owner": "microsoft",
"repository": "Agent365-Samples",
"ref": "main",
"dir": "python/agent-framework/sample-agent"
}
},
{
"id": "agent365-openai-python",
"shortId": "agent365-openai-python",
"onboardDate": "2025-11-17",
"title": "OpenAI Agent with Agent365 SDK in Python",
"shortDescription": "OpenAI Agent with Agent365 SDK in Python",
"fullDescription": "This project integrates a Python agent built on Open AI Agents SDK with A365 functionalities. The focus is on hands-on development and testing.",
"types": [
"Agent365"
],
"tags": [
"Agent365",
"Python"
],
"time": "5min to run",
"configuration": "Ready for debug",
"thumbnailPath": "images/openai-thumbnail.png",
"suggested": false,
"downloadUrlInfo": {
"owner": "microsoft",
"repository": "Agent365-Samples",
"ref": "main",
"dir": "python/openai/sample-agent"
}
},
{
"id": "agent365-claude-nodejs",
"shortId": "agent365-claude-nodejs",
"onboardDate": "2025-11-17",
"title": "Claude Agent with Agent365 SDK in NodeJS",
"shortDescription": "Claude Agent with Agent365 SDK in NodeJS",
"fullDescription": "This project integrates a NodeJS agent built on Claude Agents SDK with A365 functionalities. The focus is on hands-on development and testing.",
"types": [
"Agent365"
],
"tags": [
"Agent365",
"TS"
],
"time": "5min to run",
"configuration": "Ready for debug",
"thumbnailPath": "images/claude-thumbnail.png",
"suggested": false,
"downloadUrlInfo": {
"owner": "microsoft",
"repository": "Agent365-Samples",
"ref": "main",
"dir": "nodejs/claude/sample-agent"
}
},
{
"id": "hello-world-tab-with-backend",
"onboardDate": "2021-11-30",
Expand All @@ -45,7 +145,7 @@
"configuration": "Ready for debug",
"thumbnailPath": "assets/thumbnail.png",
"gifPath": "assets/sampleDemo.gif",
"suggested": true
"suggested": false
},
{
"id": "graph-toolkit-contact-exporter",
Expand Down Expand Up @@ -568,7 +668,7 @@
"configuration": "Manual configurations required",
"gifPath": "assets/thumbnail.png",
"thumbnailPath": "assets/thumbnail.png",
"suggested": true
"suggested": false
},
{
"id": "bot-conversation-python",
Expand Down Expand Up @@ -892,7 +992,7 @@
"configuration": "Manual configurations required",
"thumbnailPath": "assets/sampleResponse.png",
"gifPath": "assets/sampleResponse.png",
"suggested": false
"suggested": true
},
{
"id": "coffee-agent",
Expand All @@ -912,56 +1012,156 @@
],
"time": "5 mins to run",
"configuration": "Manual configurations required",
"thumbnailPath": "assets/coffee-agent-thumbnail.png",
"gifPath": "assets/coffee-agent-thumbnail.png",
"suggested": false
"thumbnailPath": "assets/coffee-agent-sample-response.png",
"gifPath": "assets/coffee-agent-sample-response.png",
"suggested": true
},
{
"id": "collaborator-agent",
"shortId": "collaborator-agent",
"onboardDate": "2025-10-31",
"title": "Collaborator Agent",
"shortDescription": "Collaboration agent with advanced conversation analysis and task management capabilities.",
"fullDescription": "This sample is built with the Microsoft Teams SDK, and showcases how to create an intelligent collaboration assistant that can analyze conversations, manage action items, and search through chat history using natural language processing and time-based queries.",
"id": "ProxyAgent-CSharp",
"shortId": "ProxyAgent-CSharp",
"onboardDate": "2025-11-14",
"title": "AI Foundry Agent to M365 Copilot With SSO",
"shortDescription": "Sample to connect an AI Foundry Agent to M365 Copilot using M365 Agent SDK. Leverage SSO to pass user token to AI Foundry.",
"fullDescription": "This sample shows how to integrate AI Foundry agents—grounded in SharePoint—into Microsoft 365 Copilot and Teams using Agent Framework v2 and the M365 Agents SDK. It turns a complex, multi-day setup into a secure, two-click experience.",
"types": [
"Custom Engine Agent"
],
"tags": [
"TS",
"Custom Engine Agent",
"Conversation Analysis",
"Task Management",
"Microsoft Teams SDK"
"C#",
"Azure",
"Agent",
"AI Foundry"
],
"time": "10 mins to run",
"time": "5 mins to run",
"configuration": "Manual configurations required",
"thumbnailPath": "assets/collaborator-agent-thumbnail.png",
"gifPath": "assets/collaborator-agent-thumbnail.png",
"suggested": false
"thumbnailPath": "images/screen009.jpg",
"gifPath": "images/screen009.jpg",
"suggested": true
},
{
"id": "data-analyst-agent-v2",
"shortId": "data-analyst-v2",
"onboardDate": "2025-10-31",
"title": "Data Analyst Agent v2",
"shortDescription": "Natural language interface for data exploration and visualization.",
"fullDescription": "This sample demonstrates how to build an AI-powered data analyst agent using Microsoft Teams SDK that can be integrated into Microsoft Teams. It helps users explore and visualize data through natural language conversations and Adaptive Cards charts.",
"id": "agent365-devin-nodejs",
"shortId": "agent365-devin-nodejs",
"onboardDate": "2026-1-4",
"title": "Devin Agent with Agent365 SDK in NodeJS",
"shortDescription": "Devin Agent with Agent365 SDK in NodeJS",
"fullDescription": "This sample demonstrates how to build an agent using Devin in Node.js with the Microsoft Agent 365 SDK.",
"types": [
"Custom Engine Agent"
"Agent365"
],
"tags": [
"TS",
"Custom Engine Agent",
"Data Visualization",
"Adaptive Cards",
"LLM SQL",
"Microsoft Teams SDK"
"Agent365",
"TS"
],
"time": "10 mins to run",
"time": "5min to run",
"configuration": "Manual configurations required",
"thumbnailPath": "assets/demo.gif",
"gifPath": "assets/demo.gif",
"suggested": false
"thumbnailPath": "images/thumbnail.png",
"suggested": false,
"downloadUrlInfo": {
"owner": "microsoft",
"repository": "Agent365-Samples",
"ref": "main",
"dir": "nodejs/devin/sample-agent"
}
},
{
"id": "agent365-n8n-nodejs",
"shortId": "agent365-n8n-nodejs",
"onboardDate": "2026-1-4",
"title": "N8n Agent with Agent365 SDK in NodeJS",
"shortDescription": "N8n Agent with Agent365 SDK in NodeJS",
"fullDescription": "This sample demonstrates how to build an agent using n8n in Node.js with the Microsoft Agent 365 SDK.",
"types": [
"Agent365"
],
"tags": [
"Agent365",
"TS"
],
"time": "5min to run",
"configuration": "Manual configurations required",
"thumbnailPath": "images/thumbnail.png",
"suggested": false,
"downloadUrlInfo": {
"owner": "microsoft",
"repository": "Agent365-Samples",
"ref": "main",
"dir": "nodejs/n8n/sample-agent"
}
},
{
"id": "agent365-openai-nodejs",
"shortId": "agent365-openai-nodejs",
"onboardDate": "2026-1-4",
"title": "OpenAI Agent with Agent365 SDK in NodeJS",
"shortDescription": "OpenAI Agent with Agent365 SDK in NodeJS",
"fullDescription": "This sample demonstrates how to build an agent using OpenAI in Node.js with the Microsoft Agent 365 SDK.",
"types": [
"Agent365"
],
"tags": [
"Agent365",
"TS"
],
"time": "5min to run",
"configuration": "Manual configurations required",
"thumbnailPath": "images/thumbnail.png",
"suggested": false,
"downloadUrlInfo": {
"owner": "microsoft",
"repository": "Agent365-Samples",
"ref": "main",
"dir": "nodejs/openai/sample-agent"
}
},
{
"id": "agent365-perplexity-nodejs",
"shortId": "agent365-perplexity-nodejs",
"onboardDate": "2026-1-4",
"title": "Perplexity Agent with Agent365 SDK in NodeJS",
"shortDescription": "Perplexity Agent with Agent365 SDK in NodeJS",
"fullDescription": "This sample demonstrates how to build an agent using Perplexity in Node.js with the Microsoft Agent 365 SDK.",
"types": [
"Agent365"
],
"tags": [
"Agent365",
"TS"
],
"time": "5min to run",
"configuration": "Manual configurations required",
"thumbnailPath": "images/thumbnail.png",
"suggested": false,
"downloadUrlInfo": {
"owner": "microsoft",
"repository": "Agent365-Samples",
"ref": "main",
"dir": "nodejs/perplexity/sample-agent"
}
},
{
"id": "agent365-vercel-sdk-nodejs",
"shortId": "agent365-vercel-sdk-nodejs",
"onboardDate": "2026-1-4",
"title": "Vercel-sdk Agent with Agent365 SDK in NodeJS",
"shortDescription": "Vercel-sdk Agent with Agent365 SDK in NodeJS",
"fullDescription": "This sample demonstrates how to build an agent using Vercel-sdk in Node.js with the Microsoft Agent 365 SDK.",
"types": [
"Agent365"
],
"tags": [
"Agent365",
"TS"
],
"time": "5min to run",
"configuration": "Manual configurations required",
"thumbnailPath": "images/thumbnail.png",
"suggested": false,
"downloadUrlInfo": {
"owner": "microsoft",
"repository": "Agent365-Samples",
"ref": "main",
"dir": "nodejs/vercel-sdk/sample-agent"
}
}
]
}
60 changes: 60 additions & 0 deletions ProxyAgent-CSharp/.github/copilot-instructions.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
# GitHub Copilot Instructions for Microsoft Foundry Agent for M365

## Project Overview
This is a proxy solution that connects Microsoft Foundry agents to Microsoft 365 Copilot and Teams using the Microsoft 365 Agents Toolkit.

## Technology Stack
- **.NET 9** - Bot application runtime
- **Microsoft 365 Agents SDK** - Microsoft 365 Agents SDK
- **Microsoft 365 Agents Toolkit** - Formerly Teams Toolkit
- **Microsoft Foundry Agent SDK** - For agent integration
- **Bicep** - Infrastructure as Code
- **Managed Identity** - For production authentication (no secrets)

## Architecture Patterns
- Use the proxy pattern to route messages between M365 Copilot and Microsoft Foundry
- Bot Service acts as the messaging endpoint
- Managed Identity for authentication in production
- Client Secret + Single Tenant for local development
- SSO with federated credentials (no client secrets in SSO flow)

## Coding Standards
- Use C# 12 features and nullable reference types
- Follow async/await patterns consistently
- Use dependency injection for services
- Implement proper error handling and logging
- Use configuration-based settings (appsettings.json)

## Key Components
- `AzureAgent.cs` - Main agent integration logic
- `Program.cs` - Bot setup and middleware configuration
- Bicep modules - Reusable infrastructure components
- `m365agents.yml` - Orchestration for provisioning and deployment

## Common Patterns
- SSO authentication uses federated credentials
- Bot responds via `turnContext.SendActivityAsync()`
- Environment-specific configuration via `appsettings.{Environment}.json`
- Infrastructure deployments use conditional logic (first-time vs. update)

## Security Best Practices
- Never commit secrets or `.env` files
- Use Managed Identity in production (no secrets)
- Use federated credentials for SSO (no client secrets)
- Keep `appsettings.Development.json` in `.gitignore`

## Naming Conventions
- Bicep modules: lowercase with hyphens (e.g., `app-registration.bicep`)
- C# classes: PascalCase
- Environment variables: UPPER_SNAKE_CASE
- Resource names: Use consistent naming pattern with suffix

## Deployment
- Local: Press F5 in VS Code (automatic provisioning)
- Azure: Use `atk provision` and `atk deploy` commands
- Two deployment modes: Local (dev tunnel) and Production (Azure App Service)

## Testing
- Local debugging via F5 in VS Code
- Automatic sideloading in Teams/M365 Copilot
- Test SSO flow with federated credentials
Loading
Loading