Files
openclaw/extensions/msteams/src/channel.runtime.ts
sudie-codes 6329edfb8d msteams: add search message action (#54832)
* msteams: add pin/unpin, list-pins, and read message actions

Wire up Graph API endpoints for message read, pin, unpin, and list-pins
in the MS Teams extension, following the same patterns as edit/delete.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* msteams: address PR review comments for pin/unpin/read actions

- Handle 204 No Content in postGraphJson (Graph mutations may return empty body)
- Strip conversation:/user: prefixes in resolveConversationPath to avoid Graph 404s
- Remove dead variable in channel pin branch
- Rename unpin param from messageId to pinnedMessageId for semantic clarity
- Accept both pinnedMessageId and messageId in unpin action handler for compat

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* msteams: resolve user targets + add User-Agent to Graph helpers

- Resolve user:<aadId> targets to actual conversation IDs via conversation
  store before Graph API calls (fixes 404 for DM-context actions)
- Add User-Agent header to postGraphJson/deleteGraphRequest for consistency
  with fetchGraphJson after rebase onto main

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* msteams: resolve DM targets to Graph chat IDs + expose pin IDs

- Prefer cached graphChatId over Bot Framework conversation IDs for user
  targets; throw descriptive error when no Graph-compatible ID is available
- Add `id` field to list-pins rows so default formatters surface the pinned
  resource ID needed for the unpin flow

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* msteams: add react and reactions (list) message actions

* msteams: add search message action via Graph API

* msteams: fix search query injection, add ConsistencyLevel header, use manual query string

---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-26 01:09:53 -05:00

41 lines
1.8 KiB
TypeScript

import {
listMSTeamsDirectoryGroupsLive as listMSTeamsDirectoryGroupsLiveImpl,
listMSTeamsDirectoryPeersLive as listMSTeamsDirectoryPeersLiveImpl,
} from "./directory-live.js";
import {
getMessageMSTeams as getMessageMSTeamsImpl,
listPinsMSTeams as listPinsMSTeamsImpl,
listReactionsMSTeams as listReactionsMSTeamsImpl,
pinMessageMSTeams as pinMessageMSTeamsImpl,
reactMessageMSTeams as reactMessageMSTeamsImpl,
searchMessagesMSTeams as searchMessagesMSTeamsImpl,
unpinMessageMSTeams as unpinMessageMSTeamsImpl,
unreactMessageMSTeams as unreactMessageMSTeamsImpl,
} from "./graph-messages.js";
import { msteamsOutbound as msteamsOutboundImpl } from "./outbound.js";
import { probeMSTeams as probeMSTeamsImpl } from "./probe.js";
import {
deleteMessageMSTeams as deleteMessageMSTeamsImpl,
editMessageMSTeams as editMessageMSTeamsImpl,
sendAdaptiveCardMSTeams as sendAdaptiveCardMSTeamsImpl,
sendMessageMSTeams as sendMessageMSTeamsImpl,
} from "./send.js";
export const msTeamsChannelRuntime = {
deleteMessageMSTeams: deleteMessageMSTeamsImpl,
editMessageMSTeams: editMessageMSTeamsImpl,
getMessageMSTeams: getMessageMSTeamsImpl,
listPinsMSTeams: listPinsMSTeamsImpl,
listReactionsMSTeams: listReactionsMSTeamsImpl,
pinMessageMSTeams: pinMessageMSTeamsImpl,
reactMessageMSTeams: reactMessageMSTeamsImpl,
searchMessagesMSTeams: searchMessagesMSTeamsImpl,
unpinMessageMSTeams: unpinMessageMSTeamsImpl,
unreactMessageMSTeams: unreactMessageMSTeamsImpl,
listMSTeamsDirectoryGroupsLive: listMSTeamsDirectoryGroupsLiveImpl,
listMSTeamsDirectoryPeersLive: listMSTeamsDirectoryPeersLiveImpl,
msteamsOutbound: { ...msteamsOutboundImpl },
probeMSTeams: probeMSTeamsImpl,
sendAdaptiveCardMSTeams: sendAdaptiveCardMSTeamsImpl,
sendMessageMSTeams: sendMessageMSTeamsImpl,
};