feat: deprecate DevtoolsPlugin in favor of Microsoft 365 Agents Playground#593
Merged
Conversation
Contributor
There was a problem hiding this comment.
Pull request overview
This PR deprecates the legacy @microsoft/teams.dev DevTools experience in favor of Microsoft 365 Agents Playground, while improving runtime visibility when bots start in an unauthenticated/anonymous configuration. It also cleans up the examples to remove DevTools usage and updates repo hygiene to prevent Playground logs from being committed.
Changes:
- Mark
DevtoolsPluginas deprecated (JSDoc + startup warning) and add a deprecation banner to@microsoft/teams.devREADME. - Add a startup warning in
HttpServer.initialize()when no credentials are configured, with new unit tests. - Remove
@microsoft/teams.dev/DevtoolsPluginfrom multiple examples, update lockfile, and ignore**/devTools/output.
Reviewed changes
Copilot reviewed 26 out of 28 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| packages/dev/src/plugin.ts | Adds deprecation JSDoc and runtime warning for DevtoolsPlugin. |
| packages/dev/README.md | Adds a deprecation banner pointing to Microsoft 365 Agents Playground. |
| packages/apps/src/http/http-server.ts | Warns on initialize when credentials are not configured. |
| packages/apps/src/http/http-server.spec.ts | Adds tests covering the new anonymous-mode credentials warning behavior. |
| package-lock.json | Removes @microsoft/teams.dev from example dependency graph and updates lock entries. |
| examples/threading/src/index.ts | Removes DevtoolsPlugin usage from the example app setup. |
| examples/threading/package.json | Drops @microsoft/teams.dev dependency. |
| examples/targeted-messages/src/index.ts | Removes DevtoolsPlugin usage from the example app setup. |
| examples/targeted-messages/package.json | Drops @microsoft/teams.dev dependency. |
| examples/tab/src/index.ts | Removes DevtoolsPlugin usage from the example app setup. |
| examples/tab/package.json | Drops @microsoft/teams.dev dependency. |
| examples/quoting/src/index.ts | Removes DevtoolsPlugin usage from the example app setup. |
| examples/quoting/package.json | Drops @microsoft/teams.dev dependency. |
| examples/message-extensions/src/index.ts | Removes DevtoolsPlugin usage from the example app setup. |
| examples/message-extensions/package.json | Drops @microsoft/teams.dev dependency. |
| examples/lights/src/index.ts | Removes DevtoolsPlugin usage from the example app setup. |
| examples/lights/package.json | Drops @microsoft/teams.dev dependency. |
| examples/echo/src/index.ts | Removes DevtoolsPlugin usage from the example app setup. |
| examples/echo/package.json | Drops @microsoft/teams.dev dependency. |
| examples/dialogs/src/index.ts | Removes DevtoolsPlugin usage from the example app setup. |
| examples/dialogs/package.json | Drops @microsoft/teams.dev dependency. |
| examples/cards/src/index.ts | Removes DevtoolsPlugin usage from the example app setup. |
| examples/cards/package.json | Drops @microsoft/teams.dev dependency. |
| examples/botbuilder/src/index.ts | Removes DevtoolsPlugin from the plugin list, leaving only BotBuilderPlugin. |
| examples/botbuilder/package.json | Drops @microsoft/teams.dev dependency. |
| examples/a2a/src/client-example.ts | Removes DevtoolsPlugin usage from the example app setup. |
| examples/a2a/package.json | Drops @microsoft/teams.dev dependency. |
| .gitignore | Ignores Playground-generated devTools/ directories to prevent accidental commits. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
3884f5c to
101748d
Compare
rido-min
approved these changes
May 26, 2026
384e851 to
d8eab1d
Compare
Strip new DevtoolsPlugin() and @microsoft/teams.dev dependency from 11 example bots. They demonstrate the SDK without DevTools now; users should run Microsoft 365 Agents Playground for local testing instead. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- Move @deprecated JSDoc above @plugin decorator on DevtoolsPlugin so tooling reliably picks up the deprecation annotation (decorators break the JSDoc-declaration association in TypeScript tooling). - Use this._messagingEndpoint instead of hardcoded /api/messages in the anonymous-mode warning, so the log reflects the actual route when consumers configure a custom messagingEndpoint. - Remove examples/tab/package-lock.json. It was anomalous (no other example ships a per-example lockfile) and still referenced the removed @microsoft/teams.dev dependency. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Lockfile resolution during rebase took origin/main's version; this commit regenerates it against the merged package.json set. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
d8eab1d to
aff6ee5
Compare
rido-min
approved these changes
May 27, 2026
7 tasks
corinagum
added a commit
that referenced
this pull request
May 27, 2026
## Summary
Brings `origin/main` into `release` for the **2.0.12** release. **No
carve-outs this time** — Quoted Replies is included.
`version.json`: `2.0.12-preview.{height}` → `2.0.12`.
Aligns with teams.py 2.0.12 (PR #442 already on PyPI / pending publish).
## What's in this release (delta from 2.0.11)
**Features**
- Quoted Replies + new quotes features — previously held back via the
2.0.11 carve-out (#576)
- SuggestedActionSubmitActivity for `suggestedAction/submit` invoke
(#591)
- Default targeted replies for targeted inbound messages (#592)
- Filter colliding keys before `Object.assign` in `ActivityContext`
(#596)
- Prompt Preview support (#536)
- A2A sample (#584)
- AI/MCPClient (#572)
- Allow passing custom HTTP client via `AppOptions`-equivalent
- Reactions API marked GA (#575), Rename `ReactionClient.remove()` →
`delete()` (#567)
**Security & fixes**
- Security hardening: tighten cross-origin policies (#595)
- Lock JsonWebToken trust-boundary contract (#586)
- `fix(deps)`: npm audit fix — clears all high-severity advisories
(#599)
- `fix(apps)`: log inbound activities at info, warn on missing
Authorization (#568)
- `fix`: App user-agent merging (#573)
- `fix`: Add null checks in `local-memory.ts` to prevent role crash
(#438)
- `fix`: `@microsoft/teams.client` import error in webpack 5 (#566)
- Switch to named imports without subpaths (#561)
**Deprecations / package changes**
- Deprecate `DevtoolsPlugin` in favor of Microsoft 365 Agents Playground
(#593)
- Remove in-repo Teams CLI package (#580) — moved to
`teams-sdk/packages/cli`
- Deprecate AI Libraries (#588)
- Correct imports + return types in misc. packages (#589)
**Dependency bumps**
- turbo 2.8.11 → 2.9.14 (#587)
- qs 6.15.0 → 6.15.2 (#594)
- hono 4.12.14 → 4.12.16 (#562)
- npm audit fix bundle (#599): axios 1.13.5 → 1.16.1, fast-uri 3.1.0 →
3.1.2, ws 8.19.0 → 8.21.0, @azure/msal-node hoisted 5.2.2, uuid 11.1.0 →
11.1.1, @azure/identity 4.13.0 → 4.13.1, express-rate-limit, ip-address,
brace-expansion, etc.
## Quoted Replies inclusion notes
- Teams client rendering is in-sync with the wire format as of
2026-05-06.
- APX QR rollout completed: Public 2026-04-10, GCCH/DoD/Gallatin
2026-04-14.
- No SDK-side carve-outs needed; this matches the teams.py 2.0.12 (PR
#442) decision.
## Branch structure note
`prep-release/2.0.12` is reset to `origin/main` + a one-line
`version.json` bump. Diff against `release` (this PR) shows the full
delta from 2.0.11. We deliberately did not use a 2-parent merge commit —
the auto-merge tried to interleave non-overlapping hunks from main's QR
additions with release's QR carve-outs in `activity.ts`, producing a
semantically broken file. Reset-to-main + version bump is the clean way
to express "release should equal main."
## Test plan
- [x] `npm install` clean (post-audit-fix lockfile)
- [x] `npm run build` — 33/33 targets clean
- [x] `npm test` — 14/14 task targets, 279+ tests pass
- [x] E2E echo bot smoke test against `cg-test-bot-py` via canary ABS —
done on `cg/audit-deps-ts` (now merged); covers axios + msal-node code
paths
- [ ] Pipeline Build + Test stages green on `release` after merge
- [ ] Publish pipeline run with **Public** → ESRP → npm
`@microsoft/teams.*@2.0.12`
- [ ] Smoke install: `npm view @microsoft/teams.apps@2.0.12` after
publish
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
DevtoolsPluginin@microsoft/teams.dev:@deprecatedJSDoc on the class, plus a runtimelog.warn(...)atonInittime so existing users see the deprecation as soon as they start their bot.HttpServer.initialize()when noCLIENT_ID/CLIENT_SECRET/TENANT_IDis configured, so customers know their bot accepts unauthenticated requests on/api/messages. 2 new unit tests.DevtoolsPluginfrom the 11 example bots (echo,a2a,cards,dialogs,lights,message-extensions,quoting,tab,targeted-messages,threading,botbuilder). The@microsoft/teams.devdependency is dropped from theirpackage.jsonas well.packages/cli/templates/typescript/{echo,tab,graph}) so newly-scaffolded agents stay in sync with the example bots.@microsoft/teams.devpointing at Microsoft 365 Agents Playground..gitignore: add**/devTools/so the Playground CLI's local log directory cannot accidentally get committed.Why
DevTools is being replaced by Microsoft 365 Agents Playground. The replacement is a standalone CLI tool, not a package; customers install it separately and run it alongside their bot. For the grace-period release,
DevtoolsPluginkeeps working but loudly signals its deprecation.The deprecation message wording is stable across SDKs and stays version-agnostic per team convention ("a later version", not a specific version number).
Note for the CI verification check
skip-test-verification
The CLI templates and example bots are usually kept in sync by the verification check, but
examples/graphwas already DevtoolsPlugin-free on main whilepackages/cli/templates/typescript/graphstill referenced it. This PR aligns the template with the (already correct) example, so the bidirectional-change check sees a one-sided diff. The other two pairs (echo, tab) have matching changes on both sides.Test plan
npx turbo buildacross all packages and examples (green)npx jestinpackages/apps(270/270 passing, including 2 new tests for the anonymous warning)npx turbo lint(clean)npx turbo build --filter=@microsoft/teams.cliafter template updates (green)🤖 Generated with Claude Code