From ae6f26898789235c1f6ec5da367bd35edeb649a7 Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Fri, 9 Jan 2026 11:22:59 +0100 Subject: [PATCH] refactor(msteams): validate send recipient Co-authored-by: Onur --- src/msteams/send-context.ts | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/src/msteams/send-context.ts b/src/msteams/send-context.ts index 2a0f5e2f8..1253667ef 100644 --- a/src/msteams/send-context.ts +++ b/src/msteams/send-context.ts @@ -37,18 +37,25 @@ function parseRecipient(to: string): { id: string; } { const trimmed = to.trim(); + const finalize = (type: "conversation" | "user", id: string) => { + const normalized = id.trim(); + if (!normalized) { + throw new Error(`Invalid --to value: missing ${type} id`); + } + return { type, id: normalized }; + }; if (trimmed.startsWith("conversation:")) { - return { type: "conversation", id: trimmed.slice("conversation:".length) }; + return finalize("conversation", trimmed.slice("conversation:".length)); } if (trimmed.startsWith("user:")) { - return { type: "user", id: trimmed.slice("user:".length) }; + return finalize("user", trimmed.slice("user:".length)); } // Assume it's a conversation ID if it looks like one if (trimmed.startsWith("19:") || trimmed.includes("@thread")) { - return { type: "conversation", id: trimmed }; + return finalize("conversation", trimmed); } // Otherwise treat as user ID - return { type: "user", id: trimmed }; + return finalize("user", trimmed); } /**