Skip to content

feat(gateway): add text-only Microsoft Teams adapter#16639

Closed
gianfrancopiana wants to merge 1 commit into
NousResearch:mainfrom
gianfrancopiana:codex/msteams-text-adapter-step1
Closed

feat(gateway): add text-only Microsoft Teams adapter#16639
gianfrancopiana wants to merge 1 commit into
NousResearch:mainfrom
gianfrancopiana:codex/msteams-text-adapter-step1

Conversation

@gianfrancopiana

Copy link
Copy Markdown
Contributor

What

  • Add a text-only Microsoft Teams Bot Framework gateway adapter.
  • Wire msteams into gateway config, allowlists, platform/toolset metadata, prompt hints, status, and docs.
  • Add focused Teams adapter/auth/config tests.

Why

This is step 1 of a smaller Teams PR series: land the secure text core first, then build on it.

The existing Teams work in #13767 is useful, but it is a large ~6.3k-addition / 34-file PR, which makes review harder. This PR keeps the first slice smaller and reviewable instead of asking reviewers to take Graph, files, cards, docs, and gateway plumbing all at once.

Planned follow-ups:

  • Step 2: setup/status/send-message/cron delivery polish, including persisted serviceUrl behavior and fuller docs.
  • Step 3: rich Teams features: files/images, Adaptive Cards, Graph/SharePoint, history helpers, and broader end-to-end coverage.

Related: #9512, #13767.

Tests

  • python -m pytest -q tests/gateway/test_msteams_adapter.py tests/gateway/test_msteams_auth.py tests/gateway/test_msteams_config.py tests/gateway/test_config.py tests/gateway/test_config_cwd_bridge.py tests/hermes_cli/test_config.py tests/hermes_cli/test_tools_config.py tests/hermes_cli/test_config_drift.py
  • python -m ruff check gateway/platforms/msteams tests/gateway/test_msteams_adapter.py tests/gateway/test_msteams_auth.py tests/gateway/test_msteams_config.py

Note: I also tried python -m pytest tests/ -q. In this local checkout it does not complete; with -x --tb=short it stops during collection on an existing origin/main Python 3.11 syntax error in tests/tools/test_dockerfile_pid1_reaping.py:42, which this PR does not touch.

@gianfrancopiana gianfrancopiana marked this pull request as draft April 27, 2026 16:45
@gianfrancopiana gianfrancopiana force-pushed the codex/msteams-text-adapter-step1 branch from cadcdc2 to 580c94d Compare April 27, 2026 16:47
@alt-glitch alt-glitch added type/feature New feature or request P3 Low — cosmetic, nice to have comp/gateway Gateway runner, session dispatch, delivery labels Apr 27, 2026
@gianfrancopiana gianfrancopiana marked this pull request as ready for review April 27, 2026 17:02
@teknium1

Copy link
Copy Markdown
Contributor

Thanks for this contribution, @gianfrancopiana! After reviewing current main, a Microsoft Teams adapter has already landed via the plugin architecture introduced in #17751.

Evidence:

  • plugins/platforms/teams/adapter.py (688 LOC) — plugin-based adapter by the microsoft-teams-apps SDK maintainer, commit b3137d758
  • plugins/platforms/teams/plugin.yaml — self-registering via PlatformRegistry; no hardcoding in gateway/run.py, toolsets.py, or other core files
  • tests/gateway/test_teams.py — 566 lines / 34 tests covering adapter init, send, message handling, and plugin registration
  • website/docs/user-guide/messaging/teams.md — full setup docs already present
  • Several follow-up fix commits (image attachments, Adaptive Cards, interactive_setup, docs) have also landed

The plugin approach is architecturally preferable to this PR's hardcoded-in-core approach, and already covers the full feature set planned across your steps 1–3 (text core, setup/status, rich features including Adaptive Cards). Closing as implemented on main.

This is an automated hermes-sweeper review.

@teknium1 teknium1 closed this Jun 10, 2026
@teknium1 teknium1 added the sweeper:implemented-on-main Sweeper: behavior already present on current main label Jun 10, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

comp/gateway Gateway runner, session dispatch, delivery P3 Low — cosmetic, nice to have sweeper:implemented-on-main Sweeper: behavior already present on current main type/feature New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants