feat(msteams): add outbound sends and fix reply delivery

- Add sendMessageMSTeams for proactive messaging via CLI/gateway
- Wire msteams into outbound delivery, heartbeat targets, and gateway send
- Fix reply delivery to use SDK's getConversationReference() for proper
  bot info, avoiding "Activity Recipient undefined" errors
- Use proactive messaging for replies to post as top-level messages
  (not threaded) by omitting activityId from conversation reference
- Add lazy logger in send.ts to avoid test initialization issues
This commit is contained in:
Onur
2026-01-08 03:22:16 +03:00
committed by Peter Steinberger
parent 2c7d5c82f3
commit 269a3c4000
7 changed files with 340 additions and 33 deletions

View File

@@ -9,6 +9,7 @@ export type OutboundProvider =
| "slack"
| "signal"
| "imessage"
| "msteams"
| "none";
export type HeartbeatTarget = OutboundProvider | "last";
@@ -31,6 +32,7 @@ export function resolveOutboundTarget(params: {
| "slack"
| "signal"
| "imessage"
| "msteams"
| "webchat";
to?: string;
allowFrom?: string[];
@@ -104,6 +106,17 @@ export function resolveOutboundTarget(params: {
}
return { ok: true, to: trimmed };
}
if (params.provider === "msteams") {
if (!trimmed) {
return {
ok: false,
error: new Error(
"Delivering to MS Teams requires --to <conversationId|user:ID|conversation:ID>",
),
};
}
return { ok: true, to: trimmed };
}
return {
ok: false,
error: new Error(
@@ -125,6 +138,7 @@ export function resolveHeartbeatDeliveryTarget(params: {
rawTarget === "slack" ||
rawTarget === "signal" ||
rawTarget === "imessage" ||
rawTarget === "msteams" ||
rawTarget === "none" ||
rawTarget === "last"
? rawTarget
@@ -152,6 +166,7 @@ export function resolveHeartbeatDeliveryTarget(params: {
| "slack"
| "signal"
| "imessage"
| "msteams"
| undefined =
target === "last"
? lastProvider
@@ -160,7 +175,8 @@ export function resolveHeartbeatDeliveryTarget(params: {
target === "discord" ||
target === "slack" ||
target === "signal" ||
target === "imessage"
target === "imessage" ||
target === "msteams"
? target
: undefined;