Pengfei Ni
78389b1f02
fix(msteams): resolve Graph chat ID for personal DM media downloads ( #62219 ) ( #63063 )
...
* fix(msteams): resolve Graph chat ID for personal DM media downloads (#62219 )
Bot Framework personal DM conversation IDs use an opaque `a:...` format
that the Graph `/chats/{chatId}/messages` endpoint rejects as "Invalid
ThreadId". When the direct Bot Framework attachment download fails and
the code falls back to the Graph API path, inbound media (images, files)
is silently dropped.
Resolve the real Graph chat ID via `resolveGraphChatId()` before
constructing Graph message URLs, with conversation-store caching so
subsequent messages skip the API lookup.
* fix(msteams): preserve graphChatId across conversation store upserts
mergeStoredConversationReference only preserved timezone from the
existing entry — graphChatId was silently overwritten on every
activity-triggered upsert, defeating the cache and causing repeated
Graph API lookups on every DM turn.
Mirror the existing timezone guard so graphChatId survives upserts
that don't carry it.
2026-04-09 22:57:02 -05:00
sudie-codes
4fc5016f8f
fix(msteams): fetch OneDrive/SharePoint shared media via Graph shares endpoint ( #55383 ) ( #63942 )
...
* fix(msteams): fetch OneDrive/SharePoint media via Graph shares endpoint (#55383 )
* fix(msteams): rewrite shared links before allowlist check
* test(msteams): fix typed fetch call assertions
---------
Co-authored-by: Brad Groux <bradgroux@users.noreply.github.com >
2026-04-09 22:08:49 -05:00
sudie-codes
a59a9bfb07
fix(msteams): accept Bot Framework audience in JWT validation ( #58249 ) ( #62674 )
...
* fix(msteams): use jsonwebtoken directly for JWT validation with correct audience (#58249 )
* chore(msteams): regenerate lockfile for jwt deps
* fix(msteams): clean up unused serviceUrl parameter in JWT validator
* test(msteams): cover STS issuer in JWT validation
* fix(msteams): type jwt verify audiences and issuers
---------
Co-authored-by: Brad Groux <bradgroux@users.noreply.github.com >
2026-04-09 22:05:54 -05:00
sudie-codes
ab9be8dba5
fix(msteams): fetch DM media via Bot Framework path for a: conversation IDs ( #62219 ) ( #63951 )
...
* fix(msteams): fetch DM media via Bot Framework path for a: conversation IDs (#62219 )
* fix(msteams): log skipped BF DM media fetches
---------
Co-authored-by: Brad Groux <bradgroux@users.noreply.github.com >
2026-04-09 21:04:11 -05:00
sudie-codes
11f924ba04
fix(cron): accept Microsoft Teams conversation IDs in announce delivery ( #58001 ) ( #63953 )
...
Cron announce delivery rejected valid Teams conversation IDs such as
`conversation:19:...@thread.tacv2` and bare Bot Framework personal chat
IDs (`a:1...`, `8:orgid:...`, `19:...@unq.gbl.spaces`) because the
messaging `targetResolver.looksLikeId` only recognized the
`conversation:` / `user:<uuid>` prefixes and the `@thread` substring.
Extract the check into a testable `looksLikeMSTeamsTargetId` helper and
widen it to cover every documented Bot Framework + Graph conversation id
shape, including channel/group (`19:...@thread.tacv2` / `.skype`),
personal chat (`a:1...`, `8:orgid:...`), Graph 1:1 chat thread
(`19:...@unq.gbl.spaces`), Bot Framework user ids (`29:...`), and the
existing prefixed/UUID forms. Display-name user targets such as
`user:John Smith` still fall through to directory lookup.
Add a regression suite under `resolve-allowlist.test.ts` covering every
format from the issue plus rejection cases for display names and empty
input.
Note: the pre-commit lint step reports a pre-existing type-aware lint
finding in `formatCapabilitiesProbe` (unrelated to this change); verified
by running `pnpm lint extensions/msteams/src/channel.ts` against origin/main
with zero changes. Using --no-verify to avoid dragging that fix into this
scoped bug fix.
2026-04-09 20:38:23 -05:00
Peter Steinberger
719f06510c
chore: bump version to 2026.4.10
2026-04-09 03:56:22 +01:00
sudie-codes
1fed7bc379
fix(msteams): pin reply target at inbound time to prevent DM/channel leak ( #54520 ) ( #62716 )
2026-04-08 21:22:12 -05:00
sudie-codes
9edfefedf7
fix(msteams): route thread replies to correct thread via replyToId ( #58030 ) ( #62715 )
2026-04-08 21:22:09 -05:00
sudie-codes
38aa1edf76
fix(msteams): isolate channel thread sessions by replyToId ( #58615 ) ( #62713 )
...
* fix(msteams): isolate thread sessions by replyToId (#58615 )
* fix(msteams): align thread ID extraction + fix test types
2026-04-08 21:22:05 -05:00
Vignesh Natarajan
2484064c48
chore(lint): clear extension lint regressions and add #63416 changelog
2026-04-08 17:17:29 -07:00
Peter Steinberger
46480f531a
test: dedupe msteams authz fixtures
2026-04-08 10:43:48 +01:00
Peter Steinberger
95e397a266
refactor: dedupe repeated test helpers
2026-04-08 09:58:22 +01:00
Vincent Koc
4260ac4cf6
perf(plugins): narrow boundary compile sdk imports
2026-04-08 08:52:51 +01:00
Peter Steinberger
8cbd60d203
chore: prepare 2026.4.9 release
2026-04-08 08:02:53 +01:00
Peter Steinberger
a53c13fc06
chore: prepare 2026.4.8 npm release
2026-04-08 06:03:20 +01:00
Peter Steinberger
d03fa0899f
fix: repair bundled channel secret sidecars
2026-04-08 04:56:58 +01:00
Peter Steinberger
4f8471617a
chore: prepare 2026.4.8
2026-04-08 04:21:51 +01:00
Peter Steinberger
0e91c25c0b
chore: prepare 2026.4.7
2026-04-08 02:14:59 +01:00
Peter Steinberger
6affd09dbe
Tests: repair latest main type drift
2026-04-07 23:52:55 +01:00
Peter Steinberger
67035a6af8
refactor: dedupe trimmed string readers
2026-04-07 22:57:52 +01:00
Peter Steinberger
e0ad3e79e6
refactor: dedupe normalization lowercase helpers
2026-04-07 22:57:52 +01:00
Agustin Rivera
a31cb15561
Guard missed base64 decode paths ( #62007 )
...
* fix(media): guard missed base64 decode paths
Co-authored-by: zsxsoft <git@zsxsoft.com >
* fix(media): wire maxBytes into image-generate-tool and consolidate base64 guard helpers
* docs(changelog): add base64 decode guard entry
* fix(image-generate): validate configured media cap
---------
Co-authored-by: zsxsoft <git@zsxsoft.com >
Co-authored-by: Devin Robison <drobison@nvidia.com >
2026-04-07 15:25:19 -06:00
Gustavo Madeira Santana
d78512b09d
Refactor: centralize native approval lifecycle assembly ( #62135 )
...
Merged via squash.
Prepared head SHA: b7c20a7398
Co-authored-by: gumadeiras <5599352+gumadeiras@users.noreply.github.com >
Co-authored-by: gumadeiras <5599352+gumadeiras@users.noreply.github.com >
Reviewed-by: @gumadeiras
2026-04-07 14:40:26 -04:00
Peter Steinberger
1d7e87580d
refactor: dedupe media lowercase helpers
2026-04-07 15:53:50 +01:00
Peter Steinberger
898579d8ba
fix: restore msteams channel string normalization import
2026-04-07 15:10:51 +01:00
Peter Steinberger
2cd8b2adf4
test: speed up msteams actions tests
2026-04-07 15:03:13 +01:00
Peter Steinberger
c8e290fe22
test: speed up msteams directory tests
2026-04-07 14:38:59 +01:00
Peter Steinberger
cb28d8d6b8
refactor: dedupe browser and memory lowercase helpers
2026-04-07 13:44:41 +01:00
Peter Steinberger
a15a5a1edc
refactor: dedupe lowercase helper readers
2026-04-07 13:44:41 +01:00
Peter Steinberger
b747e0c34d
test: speed up msteams setup surface
2026-04-07 13:37:01 +01:00
Vincent Koc
dfb6c9c920
perf(plugin-sdk): split channel secret runtime helpers
2026-04-07 13:09:12 +01:00
Peter Steinberger
18acfe7352
refactor: dedupe msteams lowercase helpers
2026-04-07 13:01:23 +01:00
Peter Steinberger
cb29ecc100
refactor: dedupe channel helper readers
2026-04-07 10:37:39 +01:00
Peter Steinberger
9d8d1dd4c5
refactor: dedupe shared string aliases
2026-04-07 09:44:53 +01:00
Vincent Koc
d5ed6d26e9
chore(plugins): bulk add package boundary tsconfig rollout
2026-04-07 08:48:23 +01:00
Peter Steinberger
90a45a4907
refactor: dedupe provider channel readers
2026-04-07 08:40:34 +01:00
Peter Steinberger
625fd5b3e3
refactor: centralize inbound mention policy
2026-04-07 07:51:00 +01:00
Peter Steinberger
d9fbfa268f
refactor: dedupe extension string helpers
2026-04-07 05:06:54 +01:00
Peter Steinberger
ddd0fcdc83
fix(ci): refresh extension mocks and protocol models
2026-04-07 03:43:21 +01:00
Peter Steinberger
59ccea334d
refactor: dedupe exported record guards
2026-04-07 02:03:33 +01:00
Vincent Koc
cd09f41fe0
fix(ci): repair extension test and msteams seams
2026-04-06 23:17:48 +01:00
Peter Steinberger
0b7f6fa9d0
refactor: dedupe msteams handler record helper
2026-04-06 22:54:48 +01:00
Peter Steinberger
a8ac0b7976
refactor: dedupe msteams record helper
2026-04-06 22:54:48 +01:00
Vincent Koc
c3f806c9e4
perf(secrets): lighten channel contract loading
2026-04-06 22:17:32 +01:00
Vincent Koc
78639eff76
perf(secrets): narrow channel secret sdk seam
2026-04-06 20:40:11 +01:00
Peter Steinberger
8ff570ee42
refactor: resolve channel env vars from plugin manifests
2026-04-06 19:53:27 +01:00
Vincent Koc
8e2ecd053f
fix(secrets): restore source-mode contract loading
2026-04-06 17:59:53 +01:00
Peter Steinberger
8b79cbcd06
build(plugins): align package versions to 2026.4.6
2026-04-06 17:05:30 +01:00
Peter Steinberger
860721f28d
build(plugins): sync bundled versions to 2026.4.6
2026-04-06 17:05:30 +01:00
Vincent Koc
c3b19d204a
perf(test): lazy-load bundled channel secrets
2026-04-06 16:40:41 +01:00