Skip to content

feat: deprecate DevtoolsPlugin in favor of Microsoft 365 Agents Playground#593

Merged
corinagum merged 6 commits into
mainfrom
cg/devtools-deprecation
May 27, 2026
Merged

feat: deprecate DevtoolsPlugin in favor of Microsoft 365 Agents Playground#593
corinagum merged 6 commits into
mainfrom
cg/devtools-deprecation

Conversation

@corinagum
Copy link
Copy Markdown
Collaborator

@corinagum corinagum commented May 22, 2026

Summary

  • Deprecate DevtoolsPlugin in @microsoft/teams.dev: @deprecated JSDoc on the class, plus a runtime log.warn(...) at onInit time so existing users see the deprecation as soon as they start their bot.
  • Add anonymous-mode startup warning in HttpServer.initialize() when no CLIENT_ID / CLIENT_SECRET / TENANT_ID is configured, so customers know their bot accepts unauthenticated requests on /api/messages. 2 new unit tests.
  • Remove DevtoolsPlugin from the 11 example bots (echo, a2a, cards, dialogs, lights, message-extensions, quoting, tab, targeted-messages, threading, botbuilder). The @microsoft/teams.dev dependency is dropped from their package.json as well.
  • Mirror the removal in the CLI templates (packages/cli/templates/typescript/{echo,tab,graph}) so newly-scaffolded agents stay in sync with the example bots.
  • README banner on @microsoft/teams.dev pointing 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, DevtoolsPlugin keeps 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/graph was already DevtoolsPlugin-free on main while packages/cli/templates/typescript/graph still 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 build across all packages and examples (green)
  • npx jest in packages/apps (270/270 passing, including 2 new tests for the anonymous warning)
  • npx turbo lint (clean)
  • Started an example bot locally and confirmed the deprecation warning fires
  • Captured the anonymous-mode startup warning in the bot console
  • npx turbo build --filter=@microsoft/teams.cli after template updates (green)
  • Reviewer to spot-check example bots compile and run without DevTools

🤖 Generated with Claude Code

Copilot AI review requested due to automatic review settings May 22, 2026 19:41
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 DevtoolsPlugin as deprecated (JSDoc + startup warning) and add a deprecation banner to @microsoft/teams.dev README.
  • Add a startup warning in HttpServer.initialize() when no credentials are configured, with new unit tests.
  • Remove @microsoft/teams.dev / DevtoolsPlugin from 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.

Comment thread packages/dev/src/plugin.ts
Comment thread packages/apps/src/http/http-server.ts Outdated
Comment thread examples/tab/package.json
@corinagum corinagum force-pushed the cg/devtools-deprecation branch from 3884f5c to 101748d Compare May 22, 2026 21:01
@corinagum corinagum force-pushed the cg/devtools-deprecation branch 2 times, most recently from 384e851 to d8eab1d Compare May 26, 2026 23:34
corinagum and others added 6 commits May 27, 2026 09:55
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>
Picks up the qs 6.15.0 → 6.15.2 bump from #594. CLI package removal
from #580 dropped our CLI templates commit during this rebase.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@corinagum corinagum force-pushed the cg/devtools-deprecation branch from d8eab1d to aff6ee5 Compare May 27, 2026 16:58
@corinagum corinagum merged commit a3a290d into main May 27, 2026
7 checks passed
@corinagum corinagum deleted the cg/devtools-deprecation branch May 27, 2026 17:05
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
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.

3 participants