From d6ad38646e127d5b9141c7107c2c6ae6fd85c883 Mon Sep 17 00:00:00 2001 From: AjayJ12-MSFT Date: Mon, 27 Apr 2026 16:40:10 +0530 Subject: [PATCH 1/7] Adding bot-targeted-messages nodejs sample --- .../bot-targeted-messages/.env.TEMPLATE | 3 + .../nodejs/bot-targeted-messages/README.md | 88 + .../bot-targeted-messages/assets/sample.json | 68 + .../nodejs/bot-targeted-messages/index.ts | 420 ++++ .../bot-targeted-messages/package-lock.json | 1874 +++++++++++++++++ .../nodejs/bot-targeted-messages/package.json | 16 + 6 files changed, 2469 insertions(+) create mode 100644 samples/TeamsSDK/bot-targeted-messages/nodejs/bot-targeted-messages/.env.TEMPLATE create mode 100644 samples/TeamsSDK/bot-targeted-messages/nodejs/bot-targeted-messages/README.md create mode 100644 samples/TeamsSDK/bot-targeted-messages/nodejs/bot-targeted-messages/assets/sample.json create mode 100644 samples/TeamsSDK/bot-targeted-messages/nodejs/bot-targeted-messages/index.ts create mode 100644 samples/TeamsSDK/bot-targeted-messages/nodejs/bot-targeted-messages/package-lock.json create mode 100644 samples/TeamsSDK/bot-targeted-messages/nodejs/bot-targeted-messages/package.json diff --git a/samples/TeamsSDK/bot-targeted-messages/nodejs/bot-targeted-messages/.env.TEMPLATE b/samples/TeamsSDK/bot-targeted-messages/nodejs/bot-targeted-messages/.env.TEMPLATE new file mode 100644 index 0000000000..1e3cf7ab48 --- /dev/null +++ b/samples/TeamsSDK/bot-targeted-messages/nodejs/bot-targeted-messages/.env.TEMPLATE @@ -0,0 +1,3 @@ +TENANT_ID= +CLIENT_ID= +CLIENT_SECRET= diff --git a/samples/TeamsSDK/bot-targeted-messages/nodejs/bot-targeted-messages/README.md b/samples/TeamsSDK/bot-targeted-messages/nodejs/bot-targeted-messages/README.md new file mode 100644 index 0000000000..b2ce0f9dda --- /dev/null +++ b/samples/TeamsSDK/bot-targeted-messages/nodejs/bot-targeted-messages/README.md @@ -0,0 +1,88 @@ +# Targeted Messages in Microsoft Teams - TypeScript + +This sample demonstrates how to use **targeted messaging** in Microsoft Teams. Targeted messages are private messages that appear in a shared channel or group chat but are **only visible to a specific user**. The sample implements a reminder bot where all bot responses — confirmations, reminder deliveries, active reminder lists, and snooze confirmations — are sent as targeted messages. + +## Included Features + +- Bots +- Targeted Messaging (`MessageActivity.withRecipient()`) +- Proactive Targeted Messaging (`app.send()`) +- Adaptive Cards with `Action.Execute` +- Mention Stripping (`stripMentionsText()`) + +## Prerequisites + +- [Node.js](https://nodejs.org/) (LTS version recommended) + +## Run the sample + +1. Navigate to this directory: + ``` + cd targeted-messages/bot-quickstart + ``` + +2. Install dependencies: + ``` + npm install + ``` + +3. Run the bot: + ``` + npm start + ``` + +The bot will start listening on `http://localhost:3978`. + +Refer to the main [README.md](../../README.md) to interact with your bot in the agentsplayground or in Teams. + +## Running the sample + +Once installed, you can use the following commands in any **channel** or **group chat**: + +### Set a Reminder + +- `remind me in 5 minutes to check email` +- `remind me in 1 hour meeting starts` +- `remind me in 30 seconds test` +- `remind @John in 10 minutes review PR` + +### Supported Time Formats + +- Seconds: `30 seconds`, `30 secs`, `30s` +- Minutes: `5 minutes`, `5 mins`, `5m` +- Hours: `1 hour`, `2 hrs`, `1h` + +### Manage Reminders + +- `my-reminders` — View your active reminders (targeted, only you see the list) +- `cancel-reminder [id]` — Cancel a specific reminder +- `reminder-help` — Show help information + +### Where Targeted Messages Are Used + +Every bot response in this sample is a targeted message — only the intended recipient can see it: + +| Action | Recipient | How | +|---|---|---| +| Setting a reminder | The command sender | `send(new MessageActivity(...).withRecipient(creator, true))` | +| Reminder delivery | The reminder target | `app.send(conversationId, new MessageActivity(...).withRecipient(recipient, true))` | +| Viewing active reminders | The command sender | `send(new MessageActivity(...).withRecipient(sender, true))` | +| Snooze confirmation | The snoozing user | `send(new MessageActivity(...).withRecipient(recipient, true))` | + +### How Targeted Messaging Works + +The bot uses the Teams SDK (`@microsoft/teams.apps` / `@microsoft/teams.api`) to send targeted messages: + +- **`MessageActivity.withRecipient(account, true)`** — marks the message as targeted for a specific user. The second parameter (`true`) sets `isTargeted`. +- **`app.send(conversationId, activity)`** — sends a proactive targeted message (e.g., delivering a reminder after a delay). +- **`stripMentionsText(activity, { accountId })`** — strips bot or user @mentions from incoming message text. +- **Adaptive Cards** with `Action.Execute` — provide interactive buttons (Cancel, Dismiss, Snooze) on targeted cards. + +The message appears in the shared conversation thread but is **only visible to the specified recipient**. + +## Further reading + +- [Targeted Messages in Teams](https://learn.microsoft.com/en-us/microsoftteams/platform/bots/how-to/conversations/send-proactive-messages) +- [Send and receive messages with a bot](https://learn.microsoft.com/en-us/microsoftteams/platform/bots/how-to/conversations/conversation-messages) +- [Adaptive Cards](https://learn.microsoft.com/en-us/microsoftteams/platform/task-modules-and-cards/cards/cards-reference#adaptive-card) +- [Microsoft Teams SDK for Node.js](https://www.npmjs.com/package/@microsoft/teams.apps) diff --git a/samples/TeamsSDK/bot-targeted-messages/nodejs/bot-targeted-messages/assets/sample.json b/samples/TeamsSDK/bot-targeted-messages/nodejs/bot-targeted-messages/assets/sample.json new file mode 100644 index 0000000000..53289a3dbe --- /dev/null +++ b/samples/TeamsSDK/bot-targeted-messages/nodejs/bot-targeted-messages/assets/sample.json @@ -0,0 +1,68 @@ +[ + { + "name": "officedev-microsoft-teams-samples-targeted-messages-nodejs", + "source": "officeDev", + "title": "Targeted Messages", + "shortDescription": "This sample bot demonstrates how to use targeted messaging in Microsoft Teams to send private reminders, confirmations, and lists visible only to the intended recipient.", + "url": "https://github.com/OfficeDev/Microsoft-Teams-Samples/tree/main/samples/TeamsSDK/targeted-messages/bot-quickstart", + "longDescription": [ + "This sample demonstrates targeted messaging in Microsoft Teams using TypeScript. Targeted messages are private messages visible only to a specific user within a channel or group chat. The bot implements a reminder system where every response — reminder confirmations, deliveries, active reminder lists, and snooze confirmations — is sent as a targeted message using MessageActivity.withRecipient(). It also demonstrates proactive targeted messaging via app.send() and interactive Adaptive Cards with Action.Execute for dismiss, snooze, and cancel actions." + ], + "creationDateTime": "2026-04-23", + "updateDateTime": "2026-04-23", + "products": [ + "Teams" + ], + "metadata": [ + { + "key": "TEAMS-SAMPLE-SOURCE", + "value": "OfficeDev" + }, + { + "key": "TEAMS-SERVER-LANGUAGE", + "value": "typescript" + }, + { + "key": "TEAMS-SERVER-PLATFORM", + "value": "express" + }, + { + "key": "TEAMS-FEATURES", + "value": "bot,targeted-messaging,proactive-messaging,adaptive-cards" + } + ], + "thumbnails": [ + { + "type": "Image", + "order": 100, + "url": "https://raw.githubusercontent.com/OfficeDev/Microsoft-Teams-Samples/main/samples/TeamsSDK/targeted-messages/bot-quickstart/assets/targeted-reminder-bot.gif", + "alt": "Targeted Reminder Bot showing reminder delivery with snooze and dismiss options" + } + ], + "authors": [ + { + "gitHubAccount": "OfficeDev", + "pictureUrl": "https://avatars.githubusercontent.com/u/6789362?s=200&v=4", + "name": "OfficeDev" + } + ], + "references": [ + { + "name": "Teams developer documentation", + "url": "https://aka.ms/TeamsPlatformDocs" + }, + { + "name": "Teams developer questions", + "url": "https://aka.ms/TeamsPlatformFeedback" + }, + { + "name": "Teams development videos from Microsoft", + "url": "https://aka.ms/sample-ref-teams-vids-from-microsoft" + }, + { + "name": "Teams development videos from the community", + "url": "https://aka.ms/community/videos/m365powerplatform" + } + ] + } +] \ No newline at end of file diff --git a/samples/TeamsSDK/bot-targeted-messages/nodejs/bot-targeted-messages/index.ts b/samples/TeamsSDK/bot-targeted-messages/nodejs/bot-targeted-messages/index.ts new file mode 100644 index 0000000000..4c648be5e2 --- /dev/null +++ b/samples/TeamsSDK/bot-targeted-messages/nodejs/bot-targeted-messages/index.ts @@ -0,0 +1,420 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +import { App } from '@microsoft/teams.apps'; +import { MessageActivity, AdaptiveCardActionResponse, stripMentionsText } from '@microsoft/teams.api'; +import { AdaptiveCard, TextBlock, FactSet, ExecuteAction } from '@microsoft/teams.cards'; + +const app = new App(); + + +interface ReminderInfo { + id: string; + conversationId: string; + targetUserId: string; + targetUserName: string; + creatorId: string; + creatorName: string; + reminderText: string; + dueTime: number; + timer: ReturnType; +} + +// In-memory store for active reminders +const activeReminders = new Map(); + + +const TIME_PATTERN = /in\s+(\d+)\s*(seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h)\b/i; + +function parseTimeExpression(text: string): { delayMs: number; label: string } | null { + const match = TIME_PATTERN.exec(text.toLowerCase()); + if (!match) return null; + + const value = parseInt(match[1]); + const unit = match[2].toLowerCase(); + + if (unit.startsWith('second') || unit.startsWith('sec') || unit === 's') + return { delayMs: value * 1000, label: `${value} second${value !== 1 ? 's' : ''}` }; + if (unit.startsWith('minute') || unit.startsWith('min') || unit === 'm') + return { delayMs: value * 60_000, label: `${value} minute${value !== 1 ? 's' : ''}` }; + if (unit.startsWith('hour') || unit.startsWith('hr') || unit === 'h') + return { delayMs: value * 3_600_000, label: `${value} hour${value !== 1 ? 's' : ''}` }; + + return null; +} + +function formatTimeSpan(ms: number): string { + const totalSecs = Math.round(ms / 1000); + if (totalSecs >= 3600) return `${Math.floor(totalSecs / 3600)}h ${Math.floor((totalSecs % 3600) / 60)}m`; + if (totalSecs >= 60) return `${Math.floor(totalSecs / 60)}m ${totalSecs % 60}s`; + return `${totalSecs}s`; +} + + +function extractMentionedUser(msg: MessageActivity, botId: string): { userId: string; userName: string } | null { + for (const entity of msg.entities || []) { + if (entity.type === 'mention' && (entity as any).mentioned?.id !== botId) { + return { userId: (entity as any).mentioned.id, userName: (entity as any).mentioned.name || 'User' }; + } + } + return null; +} + + +function parseReminderCommand(msg: MessageActivity, commandText: string): { + targetUserId: string; targetUserName: string; isSelfReminder: boolean; + reminderText: string; delayMs: number; error?: string; +} | { error: string } { + const botId = msg.recipient?.id || ''; + let text = commandText.trim(); + + // Remove "remind" prefix + if (text.toLowerCase().startsWith('remind')) text = text.slice(6).trim(); + + let targetUserId: string; + let targetUserName: string; + let isSelfReminder = false; + + // Check for "me" (self-reminder) + if (/^me(\s|,|$)/i.test(text)) { + isSelfReminder = true; + targetUserId = msg.from?.id || ''; + targetUserName = msg.from?.name || 'You'; + text = text.slice(2).trim().replace(/^,/, '').trim(); + } else { + // Check for @mention of a target user + const mentioned = extractMentionedUser(msg, botId); + if (mentioned) { + targetUserId = mentioned.userId; + targetUserName = mentioned.userName; + // Use SDK's built-in stripMentionsText to remove target user's mention from text + text = stripMentionsText(msg, { accountId: mentioned.userId })?.trim() || text; + } else { + // Default to self if no target specified + isSelfReminder = true; + targetUserId = msg.from?.id || ''; + targetUserName = msg.from?.name || 'You'; + } + } + + // Parse time expression + const time = parseTimeExpression(text); + if (!time) { + return { error: "Could not parse time. Use format like 'in 5 minutes', 'in 1 hour', or 'in 30 seconds'." }; + } + + // Extract reminder text (everything after the time expression) + let reminderText = text.replace(TIME_PATTERN, '').trim(); + reminderText = reminderText.replace(/^,/, '').trim(); + if (reminderText.toLowerCase().startsWith('to ')) reminderText = reminderText.slice(3).trim(); + if (reminderText.toLowerCase().startsWith('that ')) reminderText = reminderText.slice(5).trim(); + if (!reminderText) reminderText = 'You have a reminder!'; + + return { targetUserId, targetUserName, isSelfReminder, reminderText, delayMs: time.delayMs }; +} + + +function createConfirmationCard(reminder: ReminderInfo, delayMs: number) { + const targetDisplay = reminder.creatorId === reminder.targetUserId ? 'yourself' : reminder.targetUserName; + return new AdaptiveCard( + new TextBlock('Reminder Set!', { weight: 'Bolder', size: 'Medium', color: 'Good' }), + new FactSet( + { title: 'Reminder:', value: reminder.reminderText }, + { title: 'For:', value: targetDisplay }, + { title: 'In:', value: formatTimeSpan(delayMs) }, + { title: 'ID:', value: reminder.id } + ), + new TextBlock('This is a targeted message — only you can see this.', { size: 'Small', isSubtle: true, wrap: true }) + ).withActions( + new ExecuteAction() + .withTitle('Cancel Reminder') + .withVerb('cancel_reminder') + .withData({ action: 'cancel_reminder', reminderId: reminder.id }) + ); +} + +function createDeliveryCard(reminder: ReminderInfo) { + const fromDisplay = reminder.creatorId === reminder.targetUserId ? 'yourself' : reminder.creatorName; + return new AdaptiveCard( + new TextBlock('Reminder', { weight: 'Bolder', size: 'Large', color: 'Accent' }), + new TextBlock(reminder.reminderText, { wrap: true, size: 'Medium' }), + new TextBlock(`Set by ${fromDisplay}`, { size: 'Small', isSubtle: true }) + ).withActions( + new ExecuteAction() + .withTitle('Dismiss') + .withVerb('dismiss_reminder') + .withData({ action: 'dismiss_reminder', reminderId: reminder.id }), + new ExecuteAction() + .withTitle('Snooze 5 min') + .withVerb('snooze_reminder') + .withData({ action: 'snooze_reminder', reminderId: reminder.id, reminderText: reminder.reminderText, snoozeMinutes: '5' }) + ); +} + +function createSnoozeConfirmationCard(reminder: ReminderInfo, snoozeMinutes: number) { + return new AdaptiveCard( + new TextBlock('Snoozed!', { weight: 'Bolder', size: 'Medium', color: 'Accent' }), + new TextBlock(reminder.reminderText, { wrap: true }), + new TextBlock(`Will remind you again in ${snoozeMinutes} minutes.`, { size: 'Small', isSubtle: true }) + ).withActions( + new ExecuteAction() + .withTitle('Cancel') + .withVerb('cancel_reminder') + .withData({ action: 'cancel_reminder', reminderId: reminder.id }) + ); +} + + +async function deliverReminder(reminder: ReminderInfo): Promise { + // Check if reminder was cancelled + if (!activeReminders.has(reminder.id)) { + console.log(`[REMINDER] Reminder ${reminder.id} was cancelled, skipping delivery`); + return; + } + + try { + const card = createDeliveryCard(reminder); + const recipient = { id: reminder.targetUserId, name: reminder.targetUserName, role: 'user' as const }; + + // Send targeted reminder via app.send — only the recipient can see it + await app.send( + reminder.conversationId, + new MessageActivity(`Reminder: ${reminder.reminderText}`) + .addCard('adaptive', card) + .withRecipient(recipient, true) + ); + + console.log(`[REMINDER] Delivered reminder ${reminder.id} to ${reminder.targetUserName}`); + activeReminders.delete(reminder.id); + } catch (error) { + console.error(`[REMINDER] Failed to deliver reminder ${reminder.id}:`, error); + activeReminders.delete(reminder.id); + } +} + +app.on('message', async ({ activity, send }) => { + const msg = activity as MessageActivity; + if (!msg.text) return; + + // Use SDK's built-in stripMentionsText to remove bot mention + const botId = msg.recipient?.id || ''; + let text = (stripMentionsText(msg, { accountId: botId }) || msg.text || '').trim(); + + // Route commands + const lower = text.toLowerCase(); + + if (lower === 'reminder-help' || lower === 'help') { + await showHelp(send); + } else if (lower.startsWith('remind')) { + await handleRemindCommand({ activity, send }, text); + } else if (lower === 'my-reminders') { + await showMyReminders({ activity, send }); + } else if (lower.startsWith('cancel-reminder')) { + const reminderId = text.replace(/^cancel-reminder\s*/i, '').trim(); + await cancelReminder({ activity, send }, reminderId); + } else { + await send('Use `reminder-help` to see available commands.'); + } +}); + +async function handleRemindCommand(ctx: { activity: any; send: Function }, commandText: string): Promise { + const { activity, send } = ctx; + + const parsed = parseReminderCommand(activity as MessageActivity, commandText); + if ('error' in parsed && !('targetUserId' in parsed)) { + await send(`${parsed.error}\n\nUse \`reminder-help\` for usage examples.`); + return; + } + const { targetUserId, targetUserName, reminderText, delayMs } = parsed as any; + + if (!targetUserId) { + await send("Could not determine who to remind. Use `remind me` or mention someone like `remind @John`."); + return; + } + + // Create reminder + const reminderId = `${Date.now().toString(36).slice(-4)}${Math.random().toString(36).slice(2, 6)}`; + const convId = activity.conversation.id.split(';')[0]; + const reminder: ReminderInfo = { + id: reminderId, + conversationId: convId, + targetUserId, + targetUserName, + creatorId: activity.from?.id || '', + creatorName: activity.from?.name || 'Someone', + reminderText, + dueTime: Date.now() + delayMs, + timer: setTimeout(() => deliverReminder(reminder), delayMs) + }; + + activeReminders.set(reminderId, reminder); + + try { + // Send targeted confirmation card to the creator — only they can see it + const card = createConfirmationCard(reminder, delayMs); + const creator = { id: activity.from.id, name: activity.from.name, role: 'user' as const }; + + await send( + new MessageActivity('Reminder has been set!') + .addCard('adaptive', card) + .withRecipient(creator, true) + ); + + console.log(`[REMINDER] Created reminder ${reminderId} for ${targetUserName} in ${delayMs / 1000} seconds`); + } catch (error) { + console.error(`[REMINDER] Error sending confirmation:`, error); + activeReminders.delete(reminderId); + clearTimeout(reminder.timer); + } +} + +async function showMyReminders(ctx: { activity: any; send: Function }): Promise { + const { activity, send } = ctx; + const userId = activity.from?.id; + if (!userId) { await send('Could not determine your user ID.'); return; } + + const myReminders = [...activeReminders.values()] + .filter(r => r.targetUserId === userId || r.creatorId === userId) + .sort((a, b) => a.dueTime - b.dueTime); + + const sender = { id: activity.from.id, name: activity.from.name, role: 'user' as const }; + + if (myReminders.length === 0) { + await send( + new MessageActivity('You have no active reminders.') + .withRecipient(sender, true) + ); + return; + } + + const list = myReminders.map(r => { + const timeLeft = r.dueTime - Date.now(); + const timeStr = timeLeft > 0 ? `in ${formatTimeSpan(timeLeft)}` : 'overdue'; + const target = r.creatorId === r.targetUserId ? 'yourself' : r.targetUserName; + return `- **${r.id}**: "${r.reminderText}" for ${target} (${timeStr})`; + }).join('\n'); + + await send( + new MessageActivity(`**Your Active Reminders:**\n\n${list}\n\nUse \`cancel-reminder [id]\` to cancel a reminder.`) + .withRecipient(sender, true) + ); +} + +async function cancelReminder(ctx: { activity: any; send: Function }, reminderId: string): Promise { + const { activity, send } = ctx; + const userId = activity.from?.id; + + if (!reminderId) { + await send('Please specify a reminder ID. Use `my-reminders` to see your active reminders.'); + return; + } + + const reminder = activeReminders.get(reminderId); + if (!reminder) { + await send(`Reminder **${reminderId}** not found or already completed.`); + return; + } + + // Only allow creator or target to cancel + if (reminder.creatorId === userId || reminder.targetUserId === userId) { + clearTimeout(reminder.timer); + activeReminders.delete(reminderId); + await send(`Reminder **${reminderId}** has been cancelled.`); + console.log(`[REMINDER] Reminder ${reminderId} cancelled by ${activity.from?.name}`); + } else { + await send('You can only cancel reminders you created or are assigned to you.'); + } +} + +async function showHelp(send: Function): Promise { + await send([ + '**Personal Reminder Bot - Help**', + '', + '**Set a Reminder:**', + '- `remind me in 5 minutes to check email`', + '- `remind me in 1 hour meeting starts`', + '- `remind me in 30 seconds test`', + '- `remind @John in 10 minutes review PR`', + '', + '**Supported Time Formats:**', + '- Seconds: `30 seconds`, `30 secs`, `30s`', + '- Minutes: `5 minutes`, `5 mins`, `5m`', + '- Hours: `1 hour`, `2 hrs`, `1h`', + '', + '**Manage Reminders:**', + '- `my-reminders` — View your active reminders', + '- `cancel-reminder [id]` — Cancel a specific reminder', + '- `reminder-help` — Show this help message', + '', + '**How It Works:**', + '- Reminders are delivered as **targeted messages** (only the recipient can see them)', + '- Works in both **channels** and **group chats**', + '- Set reminders for yourself or mention others', + '- Dismiss or snooze reminders via card buttons' + ].join('\n')); +} + +app.on('card.action', async ({ activity, send }) => { + const data = (activity as any).value?.action?.data; + if (!data) return { statusCode: 200, type: 'application/vnd.microsoft.activity.message', value: 'No data specified.' } as AdaptiveCardActionResponse; + + const action = data.action; + const reminderId = data.reminderId; + + switch (action) { + case 'cancel_reminder': { + if (reminderId && activeReminders.has(reminderId)) { + const reminder = activeReminders.get(reminderId)!; + clearTimeout(reminder.timer); + activeReminders.delete(reminderId); + console.log(`[REMINDER] Cancelled reminder ${reminderId}`); + return { statusCode: 200, type: 'application/vnd.microsoft.activity.message', value: 'Reminder cancelled!' } as AdaptiveCardActionResponse; + } + return { statusCode: 200, type: 'application/vnd.microsoft.activity.message', value: 'Reminder not found or already completed.' } as AdaptiveCardActionResponse; + } + + case 'dismiss_reminder': { + if (reminderId) activeReminders.delete(reminderId); + return { statusCode: 200, type: 'application/vnd.microsoft.activity.message', value: 'Reminder dismissed!' } as AdaptiveCardActionResponse; + } + + case 'snooze_reminder': { + const reminderText = data.reminderText || 'Snoozed reminder'; + const snoozeMinutes = parseInt(data.snoozeMinutes || '5') || 5; + + // Create a new snoozed reminder + const newId = `${Date.now().toString(36).slice(-4)}${Math.random().toString(36).slice(2, 6)}`; + const convId = activity.conversation?.id?.split(';')[0] || ''; + const newReminder: ReminderInfo = { + id: newId, + conversationId: convId, + targetUserId: activity.from?.id || '', + targetUserName: activity.from?.name || 'User', + creatorId: activity.from?.id || '', + creatorName: activity.from?.name || 'User', + reminderText, + dueTime: Date.now() + snoozeMinutes * 60_000, + timer: setTimeout(() => deliverReminder(newReminder), snoozeMinutes * 60_000) + }; + activeReminders.set(newId, newReminder); + + // Update the card with snooze confirmation + const snoozeCard = createSnoozeConfirmationCard(newReminder, snoozeMinutes); + const recipient = { id: activity.from?.id || '', name: activity.from?.name || '', role: 'user' as const }; + + await send( + new MessageActivity(`Snoozed for ${snoozeMinutes} minutes`) + .addCard('adaptive', snoozeCard) + .withRecipient(recipient, true) + ); + + console.log(`[REMINDER] Snoozed reminder, new ID: ${newId}, delay: ${snoozeMinutes} minutes`); + return { statusCode: 200, type: 'application/vnd.microsoft.activity.message', value: `Snoozed for ${snoozeMinutes} minutes!` } as AdaptiveCardActionResponse; + } + + default: + return { statusCode: 200, type: 'application/vnd.microsoft.activity.message', value: 'Unknown action.' } as AdaptiveCardActionResponse; + } +}); + +app.start().catch(console.error); diff --git a/samples/TeamsSDK/bot-targeted-messages/nodejs/bot-targeted-messages/package-lock.json b/samples/TeamsSDK/bot-targeted-messages/nodejs/bot-targeted-messages/package-lock.json new file mode 100644 index 0000000000..2f6cce6c99 --- /dev/null +++ b/samples/TeamsSDK/bot-targeted-messages/nodejs/bot-targeted-messages/package-lock.json @@ -0,0 +1,1874 @@ +{ + "name": "bot-quickstart", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "dependencies": { + "@microsoft/teams.api": "^2.0.5", + "@microsoft/teams.apps": "^2.0.5" + }, + "devDependencies": { + "@types/node": "^20.0.0", + "tsx": "^4.21.0" + } + }, + "node_modules/@azure/msal-common": { + "version": "15.17.0", + "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-15.17.0.tgz", + "integrity": "sha512-VQ5/gTLFADkwue+FohVuCqlzFPUq4xSrX8jeZe+iwZuY6moliNC8xt86qPVNYdtbQfELDf2Nu6LI+demFPHGgw==", + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@azure/msal-node": { + "version": "3.8.10", + "resolved": "https://registry.npmjs.org/@azure/msal-node/-/msal-node-3.8.10.tgz", + "integrity": "sha512-0Hz7Kx4hs70KZWep/Rd7aw/qOLUF92wUOhn7ZsOuB5xNR/06NL1E2RAI9+UKH1FtvN8nD6mFjH7UKSjv6vOWvQ==", + "license": "MIT", + "dependencies": { + "@azure/msal-common": "15.17.0", + "jsonwebtoken": "^9.0.0", + "uuid": "^8.3.0" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.7.tgz", + "integrity": "sha512-EKX3Qwmhz1eMdEJokhALr0YiD0lhQNwDqkPYyPhiSwKrh7/4KRjQc04sZ8db+5DVVnZ1LmbNDI1uAMPEUBnQPg==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.7.tgz", + "integrity": "sha512-jbPXvB4Yj2yBV7HUfE2KHe4GJX51QplCN1pGbYjvsyCZbQmies29EoJbkEc+vYuU5o45AfQn37vZlyXy4YJ8RQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.7.tgz", + "integrity": "sha512-62dPZHpIXzvChfvfLJow3q5dDtiNMkwiRzPylSCfriLvZeq0a1bWChrGx/BbUbPwOrsWKMn8idSllklzBy+dgQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.7.tgz", + "integrity": "sha512-x5VpMODneVDb70PYV2VQOmIUUiBtY3D3mPBG8NxVk5CogneYhkR7MmM3yR/uMdITLrC1ml/NV1rj4bMJuy9MCg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.7.tgz", + "integrity": "sha512-5lckdqeuBPlKUwvoCXIgI2D9/ABmPq3Rdp7IfL70393YgaASt7tbju3Ac+ePVi3KDH6N2RqePfHnXkaDtY9fkw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.7.tgz", + "integrity": "sha512-rYnXrKcXuT7Z+WL5K980jVFdvVKhCHhUwid+dDYQpH+qu+TefcomiMAJpIiC2EM3Rjtq0sO3StMV/+3w3MyyqQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.7.tgz", + "integrity": "sha512-B48PqeCsEgOtzME2GbNM2roU29AMTuOIN91dsMO30t+Ydis3z/3Ngoj5hhnsOSSwNzS+6JppqWsuhTp6E82l2w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.7.tgz", + "integrity": "sha512-jOBDK5XEjA4m5IJK3bpAQF9/Lelu/Z9ZcdhTRLf4cajlB+8VEhFFRjWgfy3M1O4rO2GQ/b2dLwCUGpiF/eATNQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.7.tgz", + "integrity": "sha512-RkT/YXYBTSULo3+af8Ib0ykH8u2MBh57o7q/DAs3lTJlyVQkgQvlrPTnjIzzRPQyavxtPtfg0EopvDyIt0j1rA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.7.tgz", + "integrity": "sha512-RZPHBoxXuNnPQO9rvjh5jdkRmVizktkT7TCDkDmQ0W2SwHInKCAV95GRuvdSvA7w4VMwfCjUiPwDi0ZO6Nfe9A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.7.tgz", + "integrity": "sha512-GA48aKNkyQDbd3KtkplYWT102C5sn/EZTY4XROkxONgruHPU72l+gW+FfF8tf2cFjeHaRbWpOYa/uRBz/Xq1Pg==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.7.tgz", + "integrity": "sha512-a4POruNM2oWsD4WKvBSEKGIiWQF8fZOAsycHOt6JBpZ+JN2n2JH9WAv56SOyu9X5IqAjqSIPTaJkqN8F7XOQ5Q==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.7.tgz", + "integrity": "sha512-KabT5I6StirGfIz0FMgl1I+R1H73Gp0ofL9A3nG3i/cYFJzKHhouBV5VWK1CSgKvVaG4q1RNpCTR2LuTVB3fIw==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.7.tgz", + "integrity": "sha512-gRsL4x6wsGHGRqhtI+ifpN/vpOFTQtnbsupUF5R5YTAg+y/lKelYR1hXbnBdzDjGbMYjVJLJTd2OFmMewAgwlQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.7.tgz", + "integrity": "sha512-hL25LbxO1QOngGzu2U5xeXtxXcW+/GvMN3ejANqXkxZ/opySAZMrc+9LY/WyjAan41unrR3YrmtTsUpwT66InQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.7.tgz", + "integrity": "sha512-2k8go8Ycu1Kb46vEelhu1vqEP+UeRVj2zY1pSuPdgvbd5ykAw82Lrro28vXUrRmzEsUV0NzCf54yARIK8r0fdw==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.7.tgz", + "integrity": "sha512-hzznmADPt+OmsYzw1EE33ccA+HPdIqiCRq7cQeL1Jlq2gb1+OyWBkMCrYGBJ+sxVzve2ZJEVeePbLM2iEIZSxA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.7.tgz", + "integrity": "sha512-b6pqtrQdigZBwZxAn1UpazEisvwaIDvdbMbmrly7cDTMFnw/+3lVxxCTGOrkPVnsYIosJJXAsILG9XcQS+Yu6w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.7.tgz", + "integrity": "sha512-OfatkLojr6U+WN5EDYuoQhtM+1xco+/6FSzJJnuWiUw5eVcicbyK3dq5EeV/QHT1uy6GoDhGbFpprUiHUYggrw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.7.tgz", + "integrity": "sha512-AFuojMQTxAz75Fo8idVcqoQWEHIXFRbOc1TrVcFSgCZtQfSdc1RXgB3tjOn/krRHENUB4j00bfGjyl2mJrU37A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.7.tgz", + "integrity": "sha512-+A1NJmfM8WNDv5CLVQYJ5PshuRm/4cI6WMZRg1by1GwPIQPCTs1GLEUHwiiQGT5zDdyLiRM/l1G0Pv54gvtKIg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openharmony-arm64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.7.tgz", + "integrity": "sha512-+KrvYb/C8zA9CU/g0sR6w2RBw7IGc5J2BPnc3dYc5VJxHCSF1yNMxTV5LQ7GuKteQXZtspjFbiuW5/dOj7H4Yw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.7.tgz", + "integrity": "sha512-ikktIhFBzQNt/QDyOL580ti9+5mL/YZeUPKU2ivGtGjdTYoqz6jObj6nOMfhASpS4GU4Q/Clh1QtxWAvcYKamA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.7.tgz", + "integrity": "sha512-7yRhbHvPqSpRUV7Q20VuDwbjW5kIMwTHpptuUzV+AA46kiPze5Z7qgt6CLCK3pWFrHeNfDd1VKgyP4O+ng17CA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.7.tgz", + "integrity": "sha512-SmwKXe6VHIyZYbBLJrhOoCJRB/Z1tckzmgTLfFYOfpMAx63BJEaL9ExI8x7v0oAO3Zh6D/Oi1gVxEYr5oUCFhw==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.7.tgz", + "integrity": "sha512-56hiAJPhwQ1R4i+21FVF7V8kSD5zZTdHcVuRFMW0hn753vVfQN8xlx4uOPT4xoGH0Z/oVATuR82AiqSTDIpaHg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@microsoft/teams.api": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@microsoft/teams.api/-/teams.api-2.0.7.tgz", + "integrity": "sha512-SQu7d/alQ3ZKgBX2ur/0VbtxsDLMZb3HmGUVnzIWkvSzFkGcPQ8uPK//670gpEyFJVh2qqP0wFwOwH98/tO57w==", + "license": "MIT", + "dependencies": { + "@microsoft/teams.cards": "2.0.7", + "@microsoft/teams.common": "2.0.7", + "jwt-decode": "^4.0.0", + "qs": "^6.14.2" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/@microsoft/teams.apps": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@microsoft/teams.apps/-/teams.apps-2.0.7.tgz", + "integrity": "sha512-1y7mLrM/HZfRn8tHK/vInMZCpMXjRPQ6QawboNXttJqEQxvlwNRK9nzDjnzuIyBF32oTVt/ro7Id38oNnhaXeQ==", + "license": "MIT", + "dependencies": { + "@azure/msal-node": "^3.8.1", + "@microsoft/teams.api": "2.0.7", + "@microsoft/teams.common": "2.0.7", + "@microsoft/teams.graph": "2.0.7", + "axios": "^1.12.0", + "cors": "^2.8.5", + "express": "^5.0.0", + "jsonwebtoken": "^9.0.2", + "jwks-rsa": "^3.2.0", + "reflect-metadata": "^0.2.2" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/@microsoft/teams.cards": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@microsoft/teams.cards/-/teams.cards-2.0.7.tgz", + "integrity": "sha512-HUGw5OWKc6eCdinRLYqHgFyvScTplQs+PqUqHnf79wH1QNqAKCX+p7uF71YxTm383laJYOqDGYU6uvFEoTvOsA==", + "license": "MIT", + "engines": { + "node": ">=20" + } + }, + "node_modules/@microsoft/teams.common": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@microsoft/teams.common/-/teams.common-2.0.7.tgz", + "integrity": "sha512-O3qWC/RbLbiJSAHyk1j5Ybx3GAxmM7DhFbfLW5a2sebEQ+Sn/hB/8rr+IsxlG2FAaUgrcKkir8B55wuKTlZPYw==", + "license": "MIT", + "dependencies": { + "axios": "^1.12.0" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/@microsoft/teams.graph": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@microsoft/teams.graph/-/teams.graph-2.0.7.tgz", + "integrity": "sha512-hHX1gsCL7GFhAUz1CAT+PFar5U20/nA6sV4yJJaLygu0Wft10XgX3tJh1FckXBQlO1vCaDRtmcMJ9Eey0Z/wRg==", + "license": "MIT", + "dependencies": { + "@microsoft/teams.common": "2.0.7", + "qs": "^6.14.2" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/@types/jsonwebtoken": { + "version": "9.0.10", + "resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-9.0.10.tgz", + "integrity": "sha512-asx5hIG9Qmf/1oStypjanR7iKTv0gXQ1Ov/jfrX6kS/EO0OFni8orbmGCn0672NHR3kXHwpAwR+B368ZGN/2rA==", + "license": "MIT", + "dependencies": { + "@types/ms": "*", + "@types/node": "*" + } + }, + "node_modules/@types/ms": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz", + "integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==", + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "20.19.39", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.39.tgz", + "integrity": "sha512-orrrD74MBUyK8jOAD/r0+lfa1I2MO6I+vAkmAWzMYbCcgrN4lCrmK52gRFQq/JRxfYPfonkr4b0jcY7Olqdqbw==", + "license": "MIT", + "dependencies": { + "undici-types": "~6.21.0" + } + }, + "node_modules/accepts": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz", + "integrity": "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==", + "license": "MIT", + "dependencies": { + "mime-types": "^3.0.0", + "negotiator": "^1.0.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "license": "MIT" + }, + "node_modules/axios": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.15.0.tgz", + "integrity": "sha512-wWyJDlAatxk30ZJer+GeCWS209sA42X+N5jU2jy6oHTp7ufw8uzUTVFBX9+wTfAlhiJXGS0Bq7X6efruWjuK9Q==", + "license": "MIT", + "dependencies": { + "follow-redirects": "^1.15.11", + "form-data": "^4.0.5", + "proxy-from-env": "^2.1.0" + } + }, + "node_modules/body-parser": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.2.2.tgz", + "integrity": "sha512-oP5VkATKlNwcgvxi0vM0p/D3n2C3EReYVX+DNYs5TjZFn/oQt2j+4sVJtSMr18pdRr8wjTcBl6LoV+FUwzPmNA==", + "license": "MIT", + "dependencies": { + "bytes": "^3.1.2", + "content-type": "^1.0.5", + "debug": "^4.4.3", + "http-errors": "^2.0.0", + "iconv-lite": "^0.7.0", + "on-finished": "^2.4.1", + "qs": "^6.14.1", + "raw-body": "^3.0.1", + "type-is": "^2.0.1" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/buffer-equal-constant-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", + "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==", + "license": "BSD-3-Clause" + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "license": "MIT", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/content-disposition": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.1.0.tgz", + "integrity": "sha512-5jRCH9Z/+DRP7rkvY83B+yGIGX96OYdJmzngqnw2SBSxqCFPd0w2km3s5iawpGX8krnwSGmF0FW5Nhr0Hfai3g==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", + "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.2.tgz", + "integrity": "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==", + "license": "MIT", + "engines": { + "node": ">=6.6.0" + } + }, + "node_modules/cors": { + "version": "2.8.6", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.6.tgz", + "integrity": "sha512-tJtZBBHA6vjIAaF6EnIaq6laBBP9aq/Y3ouVJjEfoHbRBcHBAHYcMh/w8LDrk2PvIMMq8gmopa5D4V8RmbrxGw==", + "license": "MIT", + "dependencies": { + "object-assign": "^4", + "vary": "^1" + }, + "engines": { + "node": ">= 0.10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/ecdsa-sig-formatter": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", + "license": "Apache-2.0", + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "license": "MIT" + }, + "node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/esbuild": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.7.tgz", + "integrity": "sha512-IxpibTjyVnmrIQo5aqNpCgoACA/dTKLTlhMHihVHhdkxKyPO1uBBthumT0rdHmcsk9uMonIWS0m4FljWzILh3w==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.27.7", + "@esbuild/android-arm": "0.27.7", + "@esbuild/android-arm64": "0.27.7", + "@esbuild/android-x64": "0.27.7", + "@esbuild/darwin-arm64": "0.27.7", + "@esbuild/darwin-x64": "0.27.7", + "@esbuild/freebsd-arm64": "0.27.7", + "@esbuild/freebsd-x64": "0.27.7", + "@esbuild/linux-arm": "0.27.7", + "@esbuild/linux-arm64": "0.27.7", + "@esbuild/linux-ia32": "0.27.7", + "@esbuild/linux-loong64": "0.27.7", + "@esbuild/linux-mips64el": "0.27.7", + "@esbuild/linux-ppc64": "0.27.7", + "@esbuild/linux-riscv64": "0.27.7", + "@esbuild/linux-s390x": "0.27.7", + "@esbuild/linux-x64": "0.27.7", + "@esbuild/netbsd-arm64": "0.27.7", + "@esbuild/netbsd-x64": "0.27.7", + "@esbuild/openbsd-arm64": "0.27.7", + "@esbuild/openbsd-x64": "0.27.7", + "@esbuild/openharmony-arm64": "0.27.7", + "@esbuild/sunos-x64": "0.27.7", + "@esbuild/win32-arm64": "0.27.7", + "@esbuild/win32-ia32": "0.27.7", + "@esbuild/win32-x64": "0.27.7" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "license": "MIT" + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/express": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/express/-/express-5.2.1.tgz", + "integrity": "sha512-hIS4idWWai69NezIdRt2xFVofaF4j+6INOpJlVOLDO8zXGpUVEVzIYk12UUi2JzjEzWL3IOAxcTubgz9Po0yXw==", + "license": "MIT", + "dependencies": { + "accepts": "^2.0.0", + "body-parser": "^2.2.1", + "content-disposition": "^1.0.0", + "content-type": "^1.0.5", + "cookie": "^0.7.1", + "cookie-signature": "^1.2.1", + "debug": "^4.4.0", + "depd": "^2.0.0", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "etag": "^1.8.1", + "finalhandler": "^2.1.0", + "fresh": "^2.0.0", + "http-errors": "^2.0.0", + "merge-descriptors": "^2.0.0", + "mime-types": "^3.0.0", + "on-finished": "^2.4.1", + "once": "^1.4.0", + "parseurl": "^1.3.3", + "proxy-addr": "^2.0.7", + "qs": "^6.14.0", + "range-parser": "^1.2.1", + "router": "^2.2.0", + "send": "^1.1.0", + "serve-static": "^2.2.0", + "statuses": "^2.0.1", + "type-is": "^2.0.1", + "vary": "^1.1.2" + }, + "engines": { + "node": ">= 18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/finalhandler": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-2.1.1.tgz", + "integrity": "sha512-S8KoZgRZN+a5rNwqTxlZZePjT/4cnm0ROV70LedRHZ0p8u9fRID0hJUZQpkKLzro8LfmC8sx23bY6tVNxv8pQA==", + "license": "MIT", + "dependencies": { + "debug": "^4.4.0", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "on-finished": "^2.4.1", + "parseurl": "^1.3.3", + "statuses": "^2.0.1" + }, + "engines": { + "node": ">= 18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/follow-redirects": { + "version": "1.15.11", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz", + "integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "license": "MIT", + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/form-data": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.5.tgz", + "integrity": "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==", + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", + "hasown": "^2.0.2", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/form-data/node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/form-data/node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz", + "integrity": "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/get-tsconfig": { + "version": "4.13.7", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.13.7.tgz", + "integrity": "sha512-7tN6rFgBlMgpBML5j8typ92BKFi2sFQvIdpAqLA2beia5avZDrMs0FLZiM5etShWq5irVyGcGMEA1jcDaK7A/Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "resolve-pkg-maps": "^1.0.0" + }, + "funding": { + "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" + } + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/http-errors": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", + "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", + "license": "MIT", + "dependencies": { + "depd": "~2.0.0", + "inherits": "~2.0.4", + "setprototypeof": "~1.2.0", + "statuses": "~2.0.2", + "toidentifier": "~1.0.1" + }, + "engines": { + "node": ">= 0.8" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/iconv-lite": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.2.tgz", + "integrity": "sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "license": "ISC" + }, + "node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/is-promise": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz", + "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==", + "license": "MIT" + }, + "node_modules/jose": { + "version": "4.15.9", + "resolved": "https://registry.npmjs.org/jose/-/jose-4.15.9.tgz", + "integrity": "sha512-1vUQX+IdDMVPj4k8kOxgUqlcK518yluMuGZwqlr44FS1ppZB/5GWh4rZG89erpOBOJjU/OBsnCVFfapsRz6nEA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/panva" + } + }, + "node_modules/jsonwebtoken": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.3.tgz", + "integrity": "sha512-MT/xP0CrubFRNLNKvxJ2BYfy53Zkm++5bX9dtuPbqAeQpTVe0MQTFhao8+Cp//EmJp244xt6Drw/GVEGCUj40g==", + "license": "MIT", + "dependencies": { + "jws": "^4.0.1", + "lodash.includes": "^4.3.0", + "lodash.isboolean": "^3.0.3", + "lodash.isinteger": "^4.0.4", + "lodash.isnumber": "^3.0.3", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1", + "lodash.once": "^4.0.0", + "ms": "^2.1.1", + "semver": "^7.5.4" + }, + "engines": { + "node": ">=12", + "npm": ">=6" + } + }, + "node_modules/jwa": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.1.tgz", + "integrity": "sha512-hRF04fqJIP8Abbkq5NKGN0Bbr3JxlQ+qhZufXVr0DvujKy93ZCbXZMHDL4EOtodSbCWxOqR8MS1tXA5hwqCXDg==", + "license": "MIT", + "dependencies": { + "buffer-equal-constant-time": "^1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/jwks-rsa": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/jwks-rsa/-/jwks-rsa-3.2.2.tgz", + "integrity": "sha512-BqTyEDV+lS8F2trk3A+qJnxV5Q9EqKCBJOPti3W97r7qTympCZjb7h2X6f2kc+0K3rsSTY1/6YG2eaXKoj497w==", + "license": "MIT", + "dependencies": { + "@types/jsonwebtoken": "^9.0.4", + "debug": "^4.3.4", + "jose": "^4.15.4", + "limiter": "^1.1.5", + "lru-memoizer": "^2.2.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/jws": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.1.tgz", + "integrity": "sha512-EKI/M/yqPncGUUh44xz0PxSidXFr/+r0pA70+gIYhjv+et7yxM+s29Y+VGDkovRofQem0fs7Uvf4+YmAdyRduA==", + "license": "MIT", + "dependencies": { + "jwa": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/jwt-decode": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jwt-decode/-/jwt-decode-4.0.0.tgz", + "integrity": "sha512-+KJGIyHgkGuIq3IEBNftfhW/LfWhXUIY6OmyVWjliu5KH1y0fw7VQ8YndE2O4qZdMSd9SqbnC8GOcZEy0Om7sA==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/limiter": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/limiter/-/limiter-1.1.5.tgz", + "integrity": "sha512-FWWMIEOxz3GwUI4Ts/IvgVy6LPvoMPgjMdQ185nN6psJyBJ4yOpzqm695/h5umdLJg2vW3GR5iG11MAkR2AzJA==" + }, + "node_modules/lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==", + "license": "MIT" + }, + "node_modules/lodash.includes": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", + "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==", + "license": "MIT" + }, + "node_modules/lodash.isboolean": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", + "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==", + "license": "MIT" + }, + "node_modules/lodash.isinteger": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", + "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==", + "license": "MIT" + }, + "node_modules/lodash.isnumber": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", + "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==", + "license": "MIT" + }, + "node_modules/lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", + "license": "MIT" + }, + "node_modules/lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==", + "license": "MIT" + }, + "node_modules/lodash.once": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==", + "license": "MIT" + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/lru-memoizer": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/lru-memoizer/-/lru-memoizer-2.3.0.tgz", + "integrity": "sha512-GXn7gyHAMhO13WSKrIiNfztwxodVsP8IoZ3XfrJV4yH2x0/OeTO/FIaAHTY5YekdGgW94njfuKmyyt1E0mR6Ug==", + "license": "MIT", + "dependencies": { + "lodash.clonedeep": "^4.5.0", + "lru-cache": "6.0.0" + } + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/media-typer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz", + "integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/merge-descriptors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-2.0.0.tgz", + "integrity": "sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mime-db": { + "version": "1.54.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", + "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.2.tgz", + "integrity": "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==", + "license": "MIT", + "dependencies": { + "mime-db": "^1.54.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/negotiator": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz", + "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "license": "MIT", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/path-to-regexp": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.4.2.tgz", + "integrity": "sha512-qRcuIdP69NPm4qbACK+aDogI5CBDMi1jKe0ry5rSQJz8JVLsC7jV8XpiJjGRLLol3N+R5ihGYcrPLTno6pAdBA==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "license": "MIT", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/proxy-from-env": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-2.1.0.tgz", + "integrity": "sha512-cJ+oHTW1VAEa8cJslgmUZrc+sjRKgAKl3Zyse6+PV38hZe/V6Z14TbCuXcan9F9ghlz4QrFr2c92TNF82UkYHA==", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/qs": { + "version": "6.15.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.15.1.tgz", + "integrity": "sha512-6YHEFRL9mfgcAvql/XhwTvf5jKcOiiupt2FiJxHkiX1z4j7WL8J/jRHYLluORvc1XxB5rV20KoeK00gVJamspg==", + "license": "BSD-3-Clause", + "dependencies": { + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-3.0.2.tgz", + "integrity": "sha512-K5zQjDllxWkf7Z5xJdV0/B0WTNqx6vxG70zJE4N0kBs4LovmEYWJzQGxC9bS9RAKu3bgM40lrd5zoLJ12MQ5BA==", + "license": "MIT", + "dependencies": { + "bytes": "~3.1.2", + "http-errors": "~2.0.1", + "iconv-lite": "~0.7.0", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/reflect-metadata": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.2.2.tgz", + "integrity": "sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==", + "license": "Apache-2.0" + }, + "node_modules/resolve-pkg-maps": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", + "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" + } + }, + "node_modules/router": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/router/-/router-2.2.0.tgz", + "integrity": "sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==", + "license": "MIT", + "dependencies": { + "debug": "^4.4.0", + "depd": "^2.0.0", + "is-promise": "^4.0.0", + "parseurl": "^1.3.3", + "path-to-regexp": "^8.0.0" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "license": "MIT" + }, + "node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/send": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/send/-/send-1.2.1.tgz", + "integrity": "sha512-1gnZf7DFcoIcajTjTwjwuDjzuz4PPcY2StKPlsGAQ1+YH20IRVrBaXSWmdjowTJ6u8Rc01PoYOGHXfP1mYcZNQ==", + "license": "MIT", + "dependencies": { + "debug": "^4.4.3", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "etag": "^1.8.1", + "fresh": "^2.0.0", + "http-errors": "^2.0.1", + "mime-types": "^3.0.2", + "ms": "^2.1.3", + "on-finished": "^2.4.1", + "range-parser": "^1.2.1", + "statuses": "^2.0.2" + }, + "engines": { + "node": ">= 18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/serve-static": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-2.2.1.tgz", + "integrity": "sha512-xRXBn0pPqQTVQiC8wyQrKs2MOlX24zQ0POGaj0kultvoOCstBQM5yvOhAVSUwOMjQtTvsPWoNCHfPGwaaQJhTw==", + "license": "MIT", + "dependencies": { + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "parseurl": "^1.3.3", + "send": "^1.2.0" + }, + "engines": { + "node": ">= 18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "license": "ISC" + }, + "node_modules/side-channel": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.1.tgz", + "integrity": "sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/statuses": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", + "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "license": "MIT", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/tsx": { + "version": "4.21.0", + "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.21.0.tgz", + "integrity": "sha512-5C1sg4USs1lfG0GFb2RLXsdpXqBSEhAaA/0kPL01wxzpMqLILNxIxIOKiILz+cdg/pLnOUxFYOR5yhHU666wbw==", + "dev": true, + "license": "MIT", + "dependencies": { + "esbuild": "~0.27.0", + "get-tsconfig": "^4.7.5" + }, + "bin": { + "tsx": "dist/cli.mjs" + }, + "engines": { + "node": ">=18.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + } + }, + "node_modules/type-is": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-2.0.1.tgz", + "integrity": "sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==", + "license": "MIT", + "dependencies": { + "content-type": "^1.0.5", + "media-typer": "^1.1.0", + "mime-types": "^3.0.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/undici-types": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", + "license": "MIT" + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "license": "ISC" + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "license": "ISC" + } + } +} diff --git a/samples/TeamsSDK/bot-targeted-messages/nodejs/bot-targeted-messages/package.json b/samples/TeamsSDK/bot-targeted-messages/nodejs/bot-targeted-messages/package.json new file mode 100644 index 0000000000..3a90f04005 --- /dev/null +++ b/samples/TeamsSDK/bot-targeted-messages/nodejs/bot-targeted-messages/package.json @@ -0,0 +1,16 @@ +{ + "main": "index.ts", + "private": true, + "type": "module", + "scripts": { + "start": "tsx --env-file-if-exists .env index.ts" + }, + "dependencies": { + "@microsoft/teams.apps": "^2.0.5", + "@microsoft/teams.api": "^2.0.5" + }, + "devDependencies": { + "@types/node": "^20.0.0", + "tsx": "^4.21.0" + } +} \ No newline at end of file From 1f118f35d4105585ded18363e6da5d3859f113b7 Mon Sep 17 00:00:00 2001 From: AjayJ12-MSFT Date: Mon, 27 Apr 2026 16:42:40 +0530 Subject: [PATCH 2/7] Update sample.json --- .../nodejs/bot-targeted-messages/assets/sample.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/samples/TeamsSDK/bot-targeted-messages/nodejs/bot-targeted-messages/assets/sample.json b/samples/TeamsSDK/bot-targeted-messages/nodejs/bot-targeted-messages/assets/sample.json index 53289a3dbe..ef225d0193 100644 --- a/samples/TeamsSDK/bot-targeted-messages/nodejs/bot-targeted-messages/assets/sample.json +++ b/samples/TeamsSDK/bot-targeted-messages/nodejs/bot-targeted-messages/assets/sample.json @@ -4,7 +4,7 @@ "source": "officeDev", "title": "Targeted Messages", "shortDescription": "This sample bot demonstrates how to use targeted messaging in Microsoft Teams to send private reminders, confirmations, and lists visible only to the intended recipient.", - "url": "https://github.com/OfficeDev/Microsoft-Teams-Samples/tree/main/samples/TeamsSDK/targeted-messages/bot-quickstart", + "url": "https://github.com/OfficeDev/Microsoft-Teams-Samples/tree/main/samples/TeamsSDK/bot-targeted-messages/nodejs/bot-targeted-messages", "longDescription": [ "This sample demonstrates targeted messaging in Microsoft Teams using TypeScript. Targeted messages are private messages visible only to a specific user within a channel or group chat. The bot implements a reminder system where every response — reminder confirmations, deliveries, active reminder lists, and snooze confirmations — is sent as a targeted message using MessageActivity.withRecipient(). It also demonstrates proactive targeted messaging via app.send() and interactive Adaptive Cards with Action.Execute for dismiss, snooze, and cancel actions." ], @@ -35,7 +35,7 @@ { "type": "Image", "order": 100, - "url": "https://raw.githubusercontent.com/OfficeDev/Microsoft-Teams-Samples/main/samples/TeamsSDK/targeted-messages/bot-quickstart/assets/targeted-reminder-bot.gif", + "url": "https://raw.githubusercontent.com/OfficeDev/Microsoft-Teams-Samples/main/samples/TeamsSDK/bot-targeted-messages/nodejs/bot-targeted-messages/assets/targeted-reminder-bot.gif", "alt": "Targeted Reminder Bot showing reminder delivery with snooze and dismiss options" } ], From cf5f58c1dd4c79672543d90b6bd06bf2b0d362b1 Mon Sep 17 00:00:00 2001 From: AjayJ12-MSFT Date: Tue, 28 Apr 2026 11:32:56 +0530 Subject: [PATCH 3/7] Adding gitignore and root readme --- .../TeamsSDK/bot-targeted-messages/.gitignore | 6 + .../TeamsSDK/bot-targeted-messages/README.md | 172 ++++++++++++++++++ 2 files changed, 178 insertions(+) create mode 100644 samples/TeamsSDK/bot-targeted-messages/.gitignore create mode 100644 samples/TeamsSDK/bot-targeted-messages/README.md diff --git a/samples/TeamsSDK/bot-targeted-messages/.gitignore b/samples/TeamsSDK/bot-targeted-messages/.gitignore new file mode 100644 index 0000000000..afc82969e1 --- /dev/null +++ b/samples/TeamsSDK/bot-targeted-messages/.gitignore @@ -0,0 +1,6 @@ +launchSettings.json +appsettings.*.json +package-lock.json +.env +uv.lock +.venv/ \ No newline at end of file diff --git a/samples/TeamsSDK/bot-targeted-messages/README.md b/samples/TeamsSDK/bot-targeted-messages/README.md new file mode 100644 index 0000000000..1a5811e558 --- /dev/null +++ b/samples/TeamsSDK/bot-targeted-messages/README.md @@ -0,0 +1,172 @@ +# Bot Targeted Messages + +This sample demonstrates how to use **targeted messaging** in Microsoft Teams. Targeted messages are private messages that appear in a shared channel or group chat but are **only visible to a specific user**. The sample implements a reminder bot where all bot responses — confirmations, reminder deliveries, active reminder lists, and snooze confirmations — are sent as targeted messages. + +## Table of Contents + +- [Included Features](#included-features) +- [Interaction with Bot](#interaction-with-bot) +- [Sample Implementations](#sample-implementations) +- [How to run these samples](#how-to-run-these-samples) + - [Run in the Teams Client](#run-in-the-teams-client) +- [Configure the new project to use the new Teams Bot Application](#configure-the-new-project-to-use-the-new-teams-bot-application) +- [Pro Tip: Read the configuration settings using the Azure CLI](#pro-tip-read-the-configuration-settings-using-the-azure-cli) +- [Troubleshooting](#troubleshooting) +- [Further Reading](#further-reading) + +## Included Features + +- Bots +- Targeted Messaging (`MessageActivity.withRecipient()`) +- Proactive Targeted Messaging (`app.send()`) +- Adaptive Cards with `Action.Execute` +- Mention Stripping (`stripMentionsText()`) + +## Interaction with Bot + +The bot works in **channels** and **group chats** and supports the following commands: + +### Set a Reminder + +- `remind me in 5 minutes to check email` +- `remind me in 1 hour meeting starts` +- `remind me in 30 seconds test` +- `remind @John in 10 minutes review PR` + +### Supported Time Formats + +- Seconds: `30 seconds`, `30 secs`, `30s` +- Minutes: `5 minutes`, `5 mins`, `5m` +- Hours: `1 hour`, `2 hrs`, `1h` + +### Manage Reminders + +- `my-reminders` — View your active reminders (targeted, only you see the list) +- `cancel-reminder [id]` — Cancel a specific reminder +- `reminder-help` — Show help information + +### Where Targeted Messages Are Used + +Every bot response in this sample is a targeted message — only the intended recipient can see it: + +| Action | Recipient | How | +|---|---|---| +| Setting a reminder | The command sender | `send(new MessageActivity(...).withRecipient(creator, true))` | +| Reminder delivery | The reminder target | `app.send(conversationId, new MessageActivity(...).withRecipient(recipient, true))` | +| Viewing active reminders | The command sender | `send(new MessageActivity(...).withRecipient(sender, true))` | +| Snooze confirmation | The snoozing user | `send(new MessageActivity(...).withRecipient(recipient, true))` | + +## Sample Implementations + +| Language | Framework | Directory | +|----------|-----------|-----------| +| TypeScript | Node.js | [nodejs/bot-targeted-messages](nodejs/bot-targeted-messages/README.md) | + +# How to run these samples + +You can run these samples locally using: + +1. In the Teams Client after you have provisioned the Teams Application and configured the application with your local DevTunnels URL. + +## Run in the Teams Client + +To run these samples in the Teams Client, you need to provision your app in a M365 Tenant, and configure the app to your DevTunnels URL. + +1. Install the tool DevTunnels https://learn.microsoft.com/en-us/azure/developer/dev-tunnels/get-started +2. Get Access to a M365 Developer Tenant https://learn.microsoft.com/en-us/office/developer-program/microsoft-365-developer-program-get-started +3. Create a Teams App with the Bot Feature in the Teams Developer Portal (in your tenant) https://dev.teams.microsoft.com + +### Configure DevTunnels + +Create a persistent tunnel for the port 3978 with anonymous access + +``` +devtunnel create -a my-tunnel +devtunnel port create -p 3978 my-tunnel +devtunnel host my-tunnel +``` + +Take note of the URL shown after *Connect via browser:* + +### Provisioning the Teams Application + +Navigate to the Teams Developer Portal http://dev.teams.microsoft.com + +#### Create a new Bot resource + +1. Navigate to `Tools->Bot management`, and add a `New bot` +1. In Configure, paste the Endpoint address from devtunnels and append `/api/messages` +1. In Client secrets, create a new secret and save it for later + +> Note. If you have access to an Azure Subscription in the same Tenant, you can also create the Azure Bot resource ([learn more](https://learn.microsoft.com/en-us/azure/bot-service/abs-quickstart?view=azure-bot-service-4.0&tabs=singletenant)). + +#### Create a new Teams App + +1. Navigate to `Apps` and create a `New App` +1. Fill the required values in Basic information (short and long name, short and long description and App URLs) +1. In `App features->Bot` select the bot you created previously +1. Select `Preview in Teams` + +> Note. When using an Azure Bot resource, provide the ClientID instead of selecting an existing bot. + +## Configure the new project to use the new Teams Bot Application + +For NodeJS and Python you will need a `.env` file with the next fields + +``` +TENANT_ID= +CLIENT_ID= +CLIENT_SECRET= +``` + +For dotnet you need to add these values to `appsettings.json` or `launchSettings.json` using the next syntax. + +appsettings.json + + +```json +"urls" : "http://localhost:3978", +"Teams": { + "ClientID": "", + "ClientSecret": "", + "TenantId": "" + }, +``` + +Or to use Env Vars from the profile defined in `launchSettings.json` (using the Environment Configuration Provider) + +```json + "teamsbot": { + "commandName": "Project", + "dotnetRunMessages": true, + "launchBrowser": false, + "applicationUrl": "http://localhost:3978", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development", + "Teams__TenantId": "YOUR_TenantId", + "Teams__ClientID": "YOUR_ClientId", + "Teams__ClientSecret": "YOUR_ClientSecret" + } + } +``` + +## Pro Tip: Read the configuration settings using the Azure CLI + +To obtain the TenantId, ClientId and ClientSecret you can use the Azure CLI with: + +> Note. If you don't have access to an Azure Subscription you can still use the Azure CLI, make sure you login with `az login --allow-no-subscription` + +``` +az ad app credential reset --id $appId +``` + +## Troubleshooting + +- If Teams cannot communicate with your bot, verify your DevTunnels URL is reachable. +- Ensure your .env or appsettings file is setup correctly. +- Use the Channels UI in Azure Bot Service in the Azure Portal to see detailed endpoint errors (not available in Teams Developer Portal). + + +## Further Reading + +- [Microsoft Teams SDK Documentation](https://learn.microsoft.com/microsoftteams/platform/) From 72b7303d0c33aea3da1abfb22d56e0979b3dfb5d Mon Sep 17 00:00:00 2001 From: AjayJ12-MSFT Date: Tue, 28 Apr 2026 12:00:31 +0530 Subject: [PATCH 4/7] Fixing copilot PR comments --- .../nodejs/bot-targeted-messages/README.md | 2 +- .../nodejs/bot-targeted-messages/index.ts | 31 ++++++++++++++----- .../bot-targeted-messages/package-lock.json | 2 +- 3 files changed, 26 insertions(+), 9 deletions(-) diff --git a/samples/TeamsSDK/bot-targeted-messages/nodejs/bot-targeted-messages/README.md b/samples/TeamsSDK/bot-targeted-messages/nodejs/bot-targeted-messages/README.md index b2ce0f9dda..a0ef9e5c32 100644 --- a/samples/TeamsSDK/bot-targeted-messages/nodejs/bot-targeted-messages/README.md +++ b/samples/TeamsSDK/bot-targeted-messages/nodejs/bot-targeted-messages/README.md @@ -18,7 +18,7 @@ This sample demonstrates how to use **targeted messaging** in Microsoft Teams. T 1. Navigate to this directory: ``` - cd targeted-messages/bot-quickstart + cd targeted-messages/bot-targeted-messages/nodejs ``` 2. Install dependencies: diff --git a/samples/TeamsSDK/bot-targeted-messages/nodejs/bot-targeted-messages/index.ts b/samples/TeamsSDK/bot-targeted-messages/nodejs/bot-targeted-messages/index.ts index 4c648be5e2..174f11d4e9 100644 --- a/samples/TeamsSDK/bot-targeted-messages/nodejs/bot-targeted-messages/index.ts +++ b/samples/TeamsSDK/bot-targeted-messages/nodejs/bot-targeted-messages/index.ts @@ -2,7 +2,7 @@ // Licensed under the MIT License. import { App } from '@microsoft/teams.apps'; -import { MessageActivity, AdaptiveCardActionResponse, stripMentionsText } from '@microsoft/teams.api'; +import { MessageActivity, stripMentionsText } from '@microsoft/teams.api'; import { AdaptiveCard, TextBlock, FactSet, ExecuteAction } from '@microsoft/teams.cards'; const app = new App(); @@ -87,8 +87,12 @@ function parseReminderCommand(msg: MessageActivity, commandText: string): { if (mentioned) { targetUserId = mentioned.userId; targetUserName = mentioned.userName; - // Use SDK's built-in stripMentionsText to remove target user's mention from text - text = stripMentionsText(msg, { accountId: mentioned.userId })?.trim() || text; + // Remove the target user's mention tag from the local text (not the raw activity) + for (const entity of msg.entities || []) { + if (entity.type === 'mention' && (entity as any).mentioned?.id === mentioned.userId && (entity as any).text) { + text = text.replace((entity as any).text, '').trim(); + } + } } else { // Default to self if no target specified isSelfReminder = true; @@ -303,15 +307,22 @@ async function showMyReminders(ctx: { activity: any; send: Function }): Promise< async function cancelReminder(ctx: { activity: any; send: Function }, reminderId: string): Promise { const { activity, send } = ctx; const userId = activity.from?.id; + const sender = { id: activity.from.id, name: activity.from.name, role: 'user' as const }; if (!reminderId) { - await send('Please specify a reminder ID. Use `my-reminders` to see your active reminders.'); + await send( + new MessageActivity('Please specify a reminder ID. Use `my-reminders` to see your active reminders.') + .withRecipient(sender, true) + ); return; } const reminder = activeReminders.get(reminderId); if (!reminder) { - await send(`Reminder **${reminderId}** not found or already completed.`); + await send( + new MessageActivity(`Reminder **${reminderId}** not found or already completed.`) + .withRecipient(sender, true) + ); return; } @@ -319,10 +330,16 @@ async function cancelReminder(ctx: { activity: any; send: Function }, reminderId if (reminder.creatorId === userId || reminder.targetUserId === userId) { clearTimeout(reminder.timer); activeReminders.delete(reminderId); - await send(`Reminder **${reminderId}** has been cancelled.`); + await send( + new MessageActivity(`Reminder **${reminderId}** has been cancelled.`) + .withRecipient(sender, true) + ); console.log(`[REMINDER] Reminder ${reminderId} cancelled by ${activity.from?.name}`); } else { - await send('You can only cancel reminders you created or are assigned to you.'); + await send( + new MessageActivity('You can only cancel reminders you created or are assigned to you.') + .withRecipient(sender, true) + ); } } diff --git a/samples/TeamsSDK/bot-targeted-messages/nodejs/bot-targeted-messages/package-lock.json b/samples/TeamsSDK/bot-targeted-messages/nodejs/bot-targeted-messages/package-lock.json index 2f6cce6c99..e88a9c6ff3 100644 --- a/samples/TeamsSDK/bot-targeted-messages/nodejs/bot-targeted-messages/package-lock.json +++ b/samples/TeamsSDK/bot-targeted-messages/nodejs/bot-targeted-messages/package-lock.json @@ -1,5 +1,5 @@ { - "name": "bot-quickstart", + "name": "bot-targeted-messages", "lockfileVersion": 3, "requires": true, "packages": { From c769603711cfef8cf706fa6a34cd37b7a0daa3a7 Mon Sep 17 00:00:00 2001 From: AjayJ12-MSFT Date: Tue, 28 Apr 2026 18:58:09 +0530 Subject: [PATCH 5/7] Create bot-targeted-messages.gif --- .../bot-targeted-messages.gif | Bin 0 -> 172532 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 samples/TeamsSDK/bot-targeted-messages/bot-targeted-messages.gif diff --git a/samples/TeamsSDK/bot-targeted-messages/bot-targeted-messages.gif b/samples/TeamsSDK/bot-targeted-messages/bot-targeted-messages.gif new file mode 100644 index 0000000000000000000000000000000000000000..b052b327a909e34735bdee3b1a8e27a557641523 GIT binary patch literal 172532 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

}4M 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 rDqXh}1(H(9Ozy<^@AOHY6p4A>~ literal 0 HcmV?d00001 From 92c46b26669fff05a3c0101426393932af361a58 Mon Sep 17 00:00:00 2001 From: AjayJ12-MSFT Date: Wed, 29 Apr 2026 10:02:29 +0530 Subject: [PATCH 6/7] Update Readme --- samples/TeamsSDK/bot-targeted-messages/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/samples/TeamsSDK/bot-targeted-messages/README.md b/samples/TeamsSDK/bot-targeted-messages/README.md index 1a5811e558..6651b678b6 100644 --- a/samples/TeamsSDK/bot-targeted-messages/README.md +++ b/samples/TeamsSDK/bot-targeted-messages/README.md @@ -24,7 +24,7 @@ This sample demonstrates how to use **targeted messaging** in Microsoft Teams. T ## Interaction with Bot -The bot works in **channels** and **group chats** and supports the following commands: +![Targeted Messages Bot](bot-targeted-messages.gif) ### Set a Reminder From 40fa296542011df4fff1f018281e543b7bbea6ee Mon Sep 17 00:00:00 2001 From: AjayJ12-MSFT Date: Mon, 4 May 2026 12:01:55 +0530 Subject: [PATCH 7/7] Update README.md --- samples/TeamsSDK/bot-targeted-messages/README.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/samples/TeamsSDK/bot-targeted-messages/README.md b/samples/TeamsSDK/bot-targeted-messages/README.md index 6651b678b6..a674dff341 100644 --- a/samples/TeamsSDK/bot-targeted-messages/README.md +++ b/samples/TeamsSDK/bot-targeted-messages/README.md @@ -64,9 +64,7 @@ Every bot response in this sample is a targeted message — only the intended re # How to run these samples -You can run these samples locally using: - -1. In the Teams Client after you have provisioned the Teams Application and configured the application with your local DevTunnels URL. +1. You can run these samples locally in the Teams Client after you have provisioned the Teams Application and configured it with your local DevTunnels URL. ## Run in the Teams Client