Skip to content

Add Smart Router multi-agent declarative agent sample - #178

Open
keshavk-msft wants to merge 2 commits into
pnp:mainfrom
keshavk-msft:sample/da-smart-router-multiagent
Open

Add Smart Router multi-agent declarative agent sample#178
keshavk-msft wants to merge 2 commits into
pnp:mainfrom
keshavk-msft:sample/da-smart-router-multiagent

Conversation

@keshavk-msft

@keshavk-msft keshavk-msft commented Aug 24, 2026

Copy link
Copy Markdown
Contributor

Summary

Adds da-smart-router-multiagent, a multi-agent orchestration sample for Microsoft 365 Copilot built entirely from declarative agents.

An orchestrator agent (Smart Router) detects the intent behind each request and routes it to one of six specialised worker agents, so sellers don't have to pick the right agent themselves. The orchestrator connects to its workers through the worker_agents property.

Agent Purpose Capabilities
Smart Router Detects intent, routes to the right worker OneDriveAndSharePoint, CodeInterpreter
Proposal Generator Client proposals as Word documents OneDriveAndSharePoint, CodeInterpreter
Sales FAQ Sales process and policy questions None
Client Meeting Preparer Client context and talking points Meetings
Briefing Note Formatter Meeting notes into a fixed template None
Content Quality Checker Prioritised content review feedback OneDriveAndSharePoint, CodeInterpreter
Proactive Proposal Pitch decks from existing content OneDriveAndSharePoint, CodeInterpreter

Each of the seven agents is a self-contained Microsoft 365 Agents Toolkit project, so they provision and update independently. Workers are deployed first, because the orchestrator has to reference their title IDs.

Schema versions

Both manifest versions were taken from Microsoft Learn rather than from other samples in the repo:

  • Declarative agent manifest — v1.8 (latest). Note worker_agents was introduced in v1.6; the older x-worker_agents spelling is obsolete, and the worker object property is lowercase id (the schema restricts propertyNames to id/file). Because the spec states that unrecognised properties invalidate the entire document, the old spelling on a pre-1.6 manifest would fail outright.
  • App manifest — 1.30 (latest GA, August 2026).

Screenshots

Both images live in assets/ and are committed to this repo, per CONTRIBUTING.md.

They were cropped from the original scenario recording, which showed the agents under their development names (IOrchestrator, Finalchildcoforge3) rather than the names used here. The README notes this directly beneath the images. Happy to swap in a fresh capture if reviewers would prefer names that match the sample.

Everything else in that recording was deliberately excluded — the untrimmed frames contained live agent GUIDs, real participant names, and a customer name, none of which belong in a public repo.

Checks run

Against .github/skills/declarative-agent-sample-review/SKILL.md:

  • Folder starts with da-
  • All 7 app manifests on 1.30 and all 7 declarative agent manifests on v1.8, verified against the live schemas (root properties, required fields, capability names, conversation-starter counts, worker-object shape, name/description length limits)
  • No projectId in any m365agents.yml
  • README: Contributors present, Version history names a real author, tracking image is the last line, no trailing ---, no en-us locale segments, screenshots referenced from assets/
  • assets/sample.json: name is pnp-copilot-pro-dev-da-smart-router-multiagent, url/downloadUrl point at the right folder, author matches the PR author, both thumbnails resolve to committed files
  • All 36 JSON files parse

Notes for reviewers

  • Visitor-stats URL uses the /copilot-pro-dev-samples/samples/<folder> form, matching 91 of the 93 existing samples (including da-executive-helper). The updated templates/da-declarative-agent/README.md and the review skill both omit the /samples/ segment. Happy to flip it either way.
  • Connected agents exchange text only — no files, images, or adaptive cards pass between agents. The README calls this out, since Proposal Generator and Proactive Proposal produce documents and decks and are best invoked directly when the artifact is the deliverable.
  • The sample originated as an internal scenario. During migration I removed a live tenant SharePoint URL and four real worker agent GUIDs (now U_xxxx… placeholders), replaced leftover Agents Toolkit scaffold text in Content Quality Checker with real instructions, replaced manifest placeholders (Teams App, Inc., Full name for …, hardcoded GUID ids), normalised mixed schema versions, and reconciled a docs inconsistency where the orchestrator wired 4 workers but 6 were documented.

Adds da-smart-router-multiagent: an orchestrator declarative agent that detects intent and routes requests to six specialised worker agents, using the worker_agents property (schema v1.8). Each of the seven agents is a self-contained Microsoft 365 Agents Toolkit project.
Replaces the placeholder with two screenshots extracted from the original scenario recording: the orchestrator capability overview and a routing exchange. Both are cropped to exclude tenant data present elsewhere in the recording.
@keshavk-msft
keshavk-msft marked this pull request as ready for review August 24, 2026 09:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant