Skip to content

Prompt Preview Support#397

Merged
corinagum merged 17 commits into
microsoft:mainfrom
ShanmathiMayuramKrithivasan:shmayura/prompt-preview
May 11, 2026
Merged

Prompt Preview Support#397
corinagum merged 17 commits into
microsoft:mainfrom
ShanmathiMayuramKrithivasan:shmayura/prompt-preview

Conversation

@ShanmathiMayuramKrithivasan

Copy link
Copy Markdown
Contributor

Prompt preview allows a bot to reference the original targeted message in its reply, so Teams can render a collapsible preview of the user's prompt.

When a bot replies to a targeted message (reactive scenarios), the SDK now passes the original message's messageId via a targetedMessageInfo entity in the activity's entities array.

For proactive replies, developers can attach the entity themselves with the messageId of the targeted message.

Copilot AI review requested due to automatic review settings April 21, 2026 12:53

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

Adds “prompt preview” support so bots can reference an original targeted message by attaching a targetedMessageInfo entity (with the original message ID) to outgoing activities, enabling Teams to render a collapsible prompt preview.

Changes:

  • Introduces TargetedMessageInfoEntity to the API models and exports it via the entity model surface.
  • Auto-attaches TargetedMessageInfoEntity(message_id=<incoming.id>) in ActivityContext.send() when handling an inbound targeted message (unless already provided by the developer).
  • Adds unit tests and extends the targeted-messages example to demonstrate reactive and proactive usage.

Reviewed changes

Copilot reviewed 7 out of 7 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
packages/apps/src/microsoft_teams/apps/routing/activity_context.py Auto-adds targetedMessageInfo entity during send for targeted inbound activities.
packages/apps/tests/test_activity_context.py Adds tests validating auto-population, non-targeted behavior, and no-duplication.
packages/api/src/microsoft_teams/api/models/entity/targeted_message_info_entity.py Defines the new entity model with type and message_id.
packages/api/src/microsoft_teams/api/models/entity/entity.py Extends the Entity union to include TargetedMessageInfoEntity.
packages/api/src/microsoft_teams/api/models/entity/init.py Exports TargetedMessageInfoEntity from the entity package.
packages/api/tests/unit/test_targeted_message_info_entity.py Adds unit tests for default type, field behavior, and camelCase serialization.
examples/targeted-messages/src/main.py Adds example commands demonstrating prompt preview usage (reactive/proactive).

Comment thread packages/apps/src/microsoft_teams/apps/routing/activity_context.py Outdated
Comment thread packages/apps/src/microsoft_teams/apps/routing/activity_context.py Outdated
Comment thread examples/targeted-messages/src/main.py Outdated
Comment thread packages/apps/tests/test_activity_context.py Outdated
Comment thread packages/apps/src/microsoft_teams/apps/routing/activity_context.py Outdated
Comment thread packages/apps/src/microsoft_teams/apps/routing/activity_context.py Outdated
@lilyydu

lilyydu commented Apr 21, 2026

Copy link
Copy Markdown
Collaborator

also curious, what does the UI look like for this?

Comment thread packages/apps/src/microsoft_teams/apps/routing/activity_context.py Outdated
Comment thread examples/targeted-messages/src/main.py Outdated
@ShanmathiMayuramKrithivasan

Copy link
Copy Markdown
Contributor Author

also curious, what does the UI look like for this?

image

@corinagum
corinagum merged commit d2433bd into microsoft:main May 11, 2026
4 checks passed
corinagum added a commit that referenced this pull request May 14, 2026
## Summary

Brings `main` into `release` for the 2.0.11 release, with quoted-replies
(PR #321) excluded. Also bumps `version.json` from `2.0.0` to `2.0.11`
to align with the teams.ts release cadence.

Single squashed commit.

> **Branch name note**: the branch is `cg/prep-release-2.0.1` (left over
from an earlier draft when alignment hadn't been decided yet). The
actual published version per `version.json` is **2.0.11**.

## What's in this release

- All commits merged to main since 2.0.0 (the previous release),
notably:
  - **Reactions GA** (PR #427) — `@experimental` removed; sample fixed
  - Prompt Preview Support (PR #397)
  - Various dependency bumps and bug fixes

## What's NOT in this release

**Quoted-replies feature (PR #321) is excluded:**
- `prepend_quote()`, `add_quote()` builder methods — absent
- `ctx.quote()` and quote-aware `ctx.reply()` behavior — reverted to
legacy `reply_to_id` + blockquote
- `examples/quoting` — removed
- QR-related tests — removed

**Kept intentionally:**
- `QuotedReplyEntity` and `QuotedReplyData` types stay in the `Entity`
union so inbound activities carrying `quotedReply` entities still parse
- `add_targeted_message_info` runtime strip-QR logic — preserves
prompt-preview cleanup

## Version

`version.json`: `2.0.0` → `2.0.11`

This one-time jump aligns teams.py with teams.ts. Going forward, both
progress on a shared 2.0.x patch cadence.

## Test plan

- [x] `uv run ruff check` — all checks passed
- [x] `uv run pyright` — 0 errors, 0 warnings
- [x] `uv run pytest` — 571/571 tests
- [x] `uv build --all-packages` — wheels produced; consumer install
verified (fresh venv, `pip install --no-index --find-links` succeeds,
`QuotedReplyEntity` importable, `prepend_quote`/`add_quote` absent,
`add_targeted_message_info` present)
- [ ] ADO Public publish pipeline (post-merge)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude Opus 4.7 (1M context) <[email protected]>
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 (PR #321) is included.

`version.json`: `2.0.11` → `2.0.12`.

Aligns with teams.ts/teams.net cadence.

## What's in this release (delta from 2.0.11)

**Features**
- Quoted Replies & new quotes features (#321) — previously held back
- SuggestedActionSubmitActivity for `suggestedAction/submit` invoke
(#434)
- Default targeted replies for targeted inbound messages (#439)
- Reactions API marked GA (#427) — already shipped in 2.0.11 actually,
ignore if duplicate
- Prompt Preview support (#397)
- Sample: opt targeted-messages into slash commands (#430)
- Sample: a2a-in-teams (#401)
- Sample: proactive message update (#405)
- Allow custom HTTP client via `AppOptions` (#416)

**Security & fixes**
- Lock JsonWebToken trust-boundary contract (#432)
- Bump starlette 1.0.0 -> 1.1.0 for PYSEC-2026-161 / BadHost (#441)
- warn when bot starts without credentials (#435)
- fix(apps): support AAD v1 issuers in Entra token validation (#422)
- fix(apps): log inbound activities at info, warn on missing
Authorization (#425)
- fix(http-stream): wait for in-flight flush before sending final close
(#419)
- Mark reactions API as GA and fix sample remove flow (#427)
- Revert serviceUrl allowlist (ADO 5310460) (#415)
- Route `app.get_app_graph` + `ctx.*_graph` to sovereign endpoints via
`cloud.graph_scope` (#402)

**Deprecations / package changes**
- Remove ai, openai, mcpplugin, a2a, and devtools packages (#413)
- Restore and deprecate devtools package (#410)
- Deprecate ai, openai, mcpplugin, a2a packages (#406)
- Add agent framework example, remove chatprompt/mcp client samples
(#386)

**Dependency bumps**
- urllib3 2.6.3 → 2.7.0 (#426)
- python-multipart 0.0.26 → 0.0.27 (#424)
- microsoft-kiota-http 1.9.7 → 1.9.9 (#423)
- idna 3.11 → 3.15 (#431)
- starlette 1.0.0 → 1.1.0 (#441, security)
- /examples/tab/Web: qs, postcss, uuid, follow-redirects bumps

## 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.
- Builder methods (`prepend_quote()`, `add_quote()`), `ctx.quote()`, and
the quote-aware `ctx.reply()` behavior are all present in this release.
- `examples/quoting` is included.

## Conflict resolution

The 2.0.11 release branch had the QR-removed shape for four files; took
`main`'s (QR-included) version for all of them:
- `examples/targeted-messages/src/main.py`
- `packages/api/src/microsoft_teams/api/activities/message/message.py`
- `packages/apps/src/microsoft_teams/apps/routing/activity_context.py`
- `packages/apps/tests/test_activity_context.py`

`version.json` conflict resolved to `2.0.12`.

## Test plan

- [x] `uv sync` clean
- [x] `poe check` (ruff format + lint) — clean
- [x] `poe test` — 609 passed
- [x] `pyright` — 0 errors, 0 warnings
- [ ] Pipeline build + test stages green on `release` after merge
- [ ] Publish pipeline run with **Public** → ESRP approval → PyPI
- [ ] `pip install microsoft-teams-apps==2.0.12` smoke install

---------

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: Aamir Jawaid <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Claude Opus 4.6 (1M context) <[email protected]>
Co-authored-by: Shanmathi Mayuram Krithivasan <[email protected]>
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.

4 participants