$ show OfficeDev/microsoft-365-agents-toolkit-samples
This repository is a large collection of sample applications for the Microsoft 365 Agents Toolkit (formerly Teams Toolkit). It contains dozens of independent projects demonstrating how to build Microsoft Teams tabs, bots, message extensions, notification bots, Office Add-ins, SharePoint Framework web parts, and Copilot extensions (agents). Each sample is self-contained with its own infrastructure-as-code (Bicep), app manifest, environment configuration, and source code in TypeScript, JavaScript, Python, or C#. The samples range from simple hello-world tabs to complex AI-powered agents that integrate with Azure OpenAI, Microsoft Graph, and Azure AI Foundry. While primarily an application repository, a few samples include small datasets (e.g., AdventureWorks SQLite database for a data-analyst agent, CSV files for a Copilot connector) used for demonstration purposes. The codebase is heavily boilerplate-driven, with many files (like Privacy components, auth-end.html, TeamsUserCredential wrappers) duplicated across projects. This duplication creates maintenance overhead but also makes each sample independently usable. The most well-crafted components are the notification infrastructure (NotificationBot with configurable storage backends) and the proxy agent patterns that bridge M365 Copilot with external AI services. The repository includes a validation tool to enforce sample structure and metadata, CI/CD workflows, and dependabot configuration. However, many samples are archived (under /archive), and there is version inconsistency across samples (Node 16 vs 22, old botbuilder vs new agents-hosting SDK). Overall, it serves as a practical reference for developers building on the Microsoft 365 extensibility platform, but individual samples should be vetted for currency before reuse.
The LLM identified 1 files worth highlighting for reuse:
Implements a generic NotificationBot class that abstracts sending messages and Adaptive Cards to Teams channels, group chats, and individual users. It manages bot installations (via paged queries) and uses an IStorage interface for persisting conversation references. The pattern is reusable across any Teams bot that needs to send proactive notifications, with multiple storage backends (local file, Azure Blob, Azure Table) already provided.