@cuylabs/agent-channel-teams 4.0.0 → 4.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -1,219 +1,13 @@
1
- import { AgentTurnSource, AgentEvent, ApprovalRequest, HumanInputRequest, ApprovalAction, ApprovalRememberScope, HumanInputResponse } from '@cuylabs/agent-core';
2
- import { M365ChannelOptions, M365TurnRequestContext, M365TurnPreparation, M365UserIdentity, M365ChannelAdapter, M365AmbientTurnContext } from '@cuylabs/agent-channel-m365';
3
- import { TurnContext, AuthConfiguration, CloudAdapter } from '@microsoft/agents-hosting';
4
- import { TeamsChannelData } from '@microsoft/agents-hosting-extensions-teams';
5
- export { BatchFailedEntriesResponse, BatchOperationResponse, BatchOperationStateResponse, CancelOperationResponse, ChannelInfo, FeedbackLoopData, MeetingNotification, NotificationInfo, OnBehalfOf, TeamDetails, TeamInfo, TeamsAttachmentDownloader, TeamsChannelAccount, TeamsChannelData, TeamsChannelDataSettings, TeamsInfo, TeamsMeetingInfo, TeamsMember, TeamsPagedMembersResult, TenantInfo, parseTeamsChannelData } from '@microsoft/agents-hosting-extensions-teams';
6
- import { Activity, Attachment } from '@microsoft/agents-activity';
1
+ import { T as TeamsChannelOptions, a as TeamsChannelAdapter, b as TeamsActivityInfo, c as TeamsActivityKind } from './proactive-DF5XvDLJ.js';
2
+ export { d as TeamsActivityHandler, e as TeamsActivityHandlers, f as TeamsActorReference, g as TeamsCardActionHandlers, h as TeamsConfigHandlers, i as TeamsConversationUpdateHandlers, j as TeamsHandlerContext, k as TeamsHandlerDecision, l as TeamsInvokeResult, m as TeamsMeetingHandlers, n as TeamsMessageActivityHandlers, o as TeamsMessageExtensionHandlers, p as TeamsProactiveCapture, q as TeamsSurface, r as TeamsTabHandlers, s as TeamsTaskModuleHandlers, t as TeamsTurnPreparation, u as TeamsTurnRequestContext, v as captureTeamsConversationReference, w as createTeamsInvokeActivity, x as sendTeamsInvoke } from './proactive-DF5XvDLJ.js';
7
3
  import { Server } from 'node:http';
4
+ import { AgentTurnSource, ApprovalRequest, HumanInputRequest, ApprovalAction, ApprovalRememberScope, HumanInputResponse } from '@cuylabs/agent-core';
5
+ import { AuthConfiguration, CloudAdapter, TurnContext } from '@microsoft/agents-hosting';
8
6
  import { Application } from 'express';
9
-
10
- interface TeamsInvokeResult<T = unknown> {
11
- status: number;
12
- body?: T;
13
- }
14
- declare function createTeamsInvokeActivity<T = unknown>(result: TeamsInvokeResult<T>): Activity;
15
- declare function sendTeamsInvoke<T = unknown>(context: TurnContext, body?: T, status?: number): Promise<void>;
16
-
17
- type TeamsSurface = "personal" | "channel" | "group" | "meeting" | "unknown";
18
- type TeamsActivityKind = "message" | "conversation-update" | "members-added" | "members-removed" | "channel-created" | "channel-deleted" | "channel-renamed" | "channel-restored" | "channel-shared" | "channel-unshared" | "team-renamed" | "team-archived" | "team-unarchived" | "team-deleted" | "team-hard-deleted" | "team-restored" | "message-edit" | "message-delete" | "message-restore" | "reaction" | "read-receipt" | "config-fetch" | "config-submit" | "file-consent" | "actionable-message-execute-action" | "adaptive-card-action" | "adaptive-card-search" | "card-submit" | "feedback" | "dialog-open" | "dialog-submit" | "task-fetch" | "task-submit" | "search-command" | "message-extension-query" | "message-extension-query-link" | "message-extension-anonymous-query-link" | "select-result" | "message-extension-select-item" | "message-extension-submit-action" | "message-extension-fetch-task" | "message-extension-query-setting-url" | "message-extension-setting" | "message-extension-card-button-clicked" | "tab-fetch" | "tab-submit" | "invoke" | "meeting-start" | "meeting-end" | "participants-join" | "participants-leave" | "meeting-room-join" | "meeting-room-leave" | "meeting-stage-view" | "meeting-smart-reply" | "meeting-reaction" | "meeting-poll-response" | "meeting-apps-installed" | "meeting-apps-uninstalled" | "meeting-recording-started" | "meeting-recording-stopped" | "meeting-focus-change" | "meeting-screen-share-start" | "meeting-screen-share-stop" | "other";
19
- interface TeamsActorReference {
20
- id?: string;
21
- displayName?: string;
22
- tenantId?: string;
23
- userPrincipalName?: string;
24
- }
25
- interface TeamsActivityInfo {
26
- channelId: string;
27
- conversationId: string;
28
- activityId?: string;
29
- messageId?: string;
30
- replyToId?: string;
31
- invokeName?: string;
32
- eventType?: string;
33
- tenantId?: string;
34
- teamId?: string;
35
- channelThreadId?: string;
36
- meetingId?: string;
37
- channelData?: TeamsChannelData;
38
- surface: TeamsSurface;
39
- kind: TeamsActivityKind;
40
- actors: TeamsActorReference[];
41
- }
42
- interface TeamsTurnRequestContext extends M365TurnRequestContext {
43
- teams: TeamsActivityInfo;
44
- channelData?: TeamsChannelData;
45
- }
46
- type TeamsTurnPreparation = M365TurnPreparation;
47
- interface TeamsHandlerContext {
48
- turnContext: TurnContext;
49
- user: M365UserIdentity;
50
- teams: TeamsActivityInfo;
51
- channelData?: TeamsChannelData;
52
- sessionId: string;
53
- source: AgentTurnSource;
54
- /**
55
- * Start an agent turn inside the current Teams request context.
56
- *
57
- * This is useful for dialog submit/search-command handlers that still want
58
- * to delegate their actual reasoning to agent-core.
59
- */
60
- runAgent(message: string, options?: {
61
- abort?: AbortSignal;
62
- system?: string;
63
- }): AsyncGenerator<AgentEvent>;
64
- /**
65
- * Send an invoke response payload back to Teams.
66
- */
67
- sendInvoke(body?: unknown, status?: number): Promise<void>;
68
- }
69
- type TeamsHandlerDecision = void | "continue" | TeamsInvokeResult;
70
- type TeamsActivityHandler = (context: TeamsHandlerContext) => TeamsHandlerDecision | Promise<TeamsHandlerDecision>;
71
- interface TeamsConversationUpdateHandlers {
72
- conversationUpdate?: TeamsActivityHandler;
73
- membersAdded?: TeamsActivityHandler;
74
- membersRemoved?: TeamsActivityHandler;
75
- channelCreated?: TeamsActivityHandler;
76
- channelDeleted?: TeamsActivityHandler;
77
- channelRenamed?: TeamsActivityHandler;
78
- channelRestored?: TeamsActivityHandler;
79
- channelShared?: TeamsActivityHandler;
80
- channelUnshared?: TeamsActivityHandler;
81
- teamRenamed?: TeamsActivityHandler;
82
- teamArchived?: TeamsActivityHandler;
83
- teamUnarchived?: TeamsActivityHandler;
84
- teamDeleted?: TeamsActivityHandler;
85
- teamHardDeleted?: TeamsActivityHandler;
86
- teamRestored?: TeamsActivityHandler;
87
- }
88
- interface TeamsMessageActivityHandlers {
89
- messageEdited?: TeamsActivityHandler;
90
- messageDeleted?: TeamsActivityHandler;
91
- messageRestored?: TeamsActivityHandler;
92
- reaction?: TeamsActivityHandler;
93
- readReceipt?: TeamsActivityHandler;
94
- }
95
- interface TeamsCardActionHandlers {
96
- cardSubmit?: TeamsActivityHandler;
97
- adaptiveCardAction?: TeamsActivityHandler;
98
- adaptiveCardSearch?: TeamsActivityHandler;
99
- feedbackSubmit?: TeamsActivityHandler;
100
- fileConsent?: TeamsActivityHandler;
101
- actionableMessageExecuteAction?: TeamsActivityHandler;
102
- }
103
- interface TeamsConfigHandlers {
104
- configFetch?: TeamsActivityHandler;
105
- configSubmit?: TeamsActivityHandler;
106
- }
107
- interface TeamsTaskModuleHandlers {
108
- dialogOpen?: TeamsActivityHandler;
109
- dialogSubmit?: TeamsActivityHandler;
110
- taskFetch?: TeamsActivityHandler;
111
- taskSubmit?: TeamsActivityHandler;
112
- }
113
- interface TeamsMessageExtensionHandlers {
114
- searchCommand?: TeamsActivityHandler;
115
- selectResult?: TeamsActivityHandler;
116
- messageExtensionQuery?: TeamsActivityHandler;
117
- messageExtensionQueryLink?: TeamsActivityHandler;
118
- messageExtensionAnonymousQueryLink?: TeamsActivityHandler;
119
- messageExtensionSelectItem?: TeamsActivityHandler;
120
- messageExtensionSubmitAction?: TeamsActivityHandler;
121
- messageExtensionFetchTask?: TeamsActivityHandler;
122
- messageExtensionQuerySettingUrl?: TeamsActivityHandler;
123
- messageExtensionSetting?: TeamsActivityHandler;
124
- messageExtensionCardButtonClicked?: TeamsActivityHandler;
125
- }
126
- interface TeamsTabHandlers {
127
- tabFetch?: TeamsActivityHandler;
128
- tabSubmit?: TeamsActivityHandler;
129
- }
130
- interface TeamsMeetingHandlers {
131
- /** Fired when a Teams meeting starts. */
132
- meetingStart?: TeamsActivityHandler;
133
- /** Fired when a Teams meeting ends. */
134
- meetingEnd?: TeamsActivityHandler;
135
- /** Fired when participants join a Teams meeting. */
136
- participantsJoin?: TeamsActivityHandler;
137
- /** Fired when participants leave a Teams meeting. */
138
- participantsLeave?: TeamsActivityHandler;
139
- /** Fired when a physical meeting room joins a Teams meeting. */
140
- meetingRoomJoin?: TeamsActivityHandler;
141
- /** Fired when a physical meeting room leaves a Teams meeting. */
142
- meetingRoomLeave?: TeamsActivityHandler;
143
- /** Fired when the app is viewed in the meeting stage (invoke). */
144
- meetingStageView?: TeamsActivityHandler;
145
- /** Fired for smart reply recommendations during a meeting (invoke). */
146
- meetingSmartReply?: TeamsActivityHandler;
147
- /** Fired for emoji reactions during a meeting. */
148
- meetingReaction?: TeamsActivityHandler;
149
- /** Fired when a poll response is submitted during a meeting. */
150
- meetingPollResponse?: TeamsActivityHandler;
151
- /** Fired when apps are installed during a meeting. */
152
- meetingAppsInstalled?: TeamsActivityHandler;
153
- /** Fired when apps are uninstalled during a meeting. */
154
- meetingAppsUninstalled?: TeamsActivityHandler;
155
- /** Fired when meeting recording starts. */
156
- meetingRecordingStarted?: TeamsActivityHandler;
157
- /** Fired when meeting recording stops. */
158
- meetingRecordingStopped?: TeamsActivityHandler;
159
- /** Fired when the meeting focus changes. */
160
- meetingFocusChange?: TeamsActivityHandler;
161
- /** Fired when screen sharing starts in a meeting. */
162
- meetingScreenShareStart?: TeamsActivityHandler;
163
- /** Fired when screen sharing stops in a meeting. */
164
- meetingScreenShareStop?: TeamsActivityHandler;
165
- }
166
- /**
167
- * Aggregate Teams handler surface grouped by capability.
168
- *
169
- * This keeps the public API centered on Teams concepts without exposing
170
- * Microsoft's `AgentApplication` routing types.
171
- */
172
- interface TeamsActivityHandlers extends TeamsConversationUpdateHandlers, TeamsMessageActivityHandlers, TeamsCardActionHandlers, TeamsConfigHandlers, TeamsTaskModuleHandlers, TeamsMessageExtensionHandlers, TeamsTabHandlers, TeamsMeetingHandlers {
173
- invoke?: TeamsActivityHandler;
174
- }
175
- interface TeamsChannelOptions extends Omit<M365ChannelOptions, "prepareTurn"> {
176
- /**
177
- * Whether malformed Teams channelData should throw while parsing.
178
- *
179
- * Keep this enabled in tests and strict hosts that want SDK payload drift to
180
- * fail fast. Disable it in production bots that should continue handling the
181
- * turn with best-effort Teams metadata when an unexpected channelData shape
182
- * arrives.
183
- *
184
- * @default true
185
- */
186
- strictChannelData?: boolean;
187
- /**
188
- * Teams-native turn preparation hook. The result is forwarded into the
189
- * underlying M365 channel adapter.
190
- */
191
- prepareTurn?: (request: TeamsTurnRequestContext) => TeamsTurnPreparation | Promise<TeamsTurnPreparation>;
192
- /**
193
- * Teams-specific activity hooks that run before generic M365 handling.
194
- *
195
- * Notes:
196
- * - the `"feedback"` kind falls through to `cardSubmit` when
197
- * `feedbackSubmit` is not defined
198
- * - specialized Teams invoke kinds fall back to grouped handlers such as
199
- * `dialogOpen`, `searchCommand`, or `selectResult` when the narrow handler
200
- * is not provided
201
- */
202
- handlers?: TeamsActivityHandlers;
203
- /**
204
- * General-purpose middleware that runs on every turn before cuylabs
205
- * processing. Gives raw `TurnContext` access for Microsoft SDK helpers
206
- * or custom logic. Call `next()` to continue into the normal handler
207
- * pipeline, or return without calling it to short-circuit.
208
- */
209
- onTurn?: (context: TurnContext, next: () => Promise<void>) => Promise<void>;
210
- }
211
- interface TeamsChannelAdapter extends M365ChannelAdapter {
212
- /**
213
- * The underlying generic M365 adapter used for ordinary message turns.
214
- */
215
- readonly m365: M365ChannelAdapter;
216
- }
7
+ import { M365AmbientTurnContext } from '@cuylabs/agent-channel-m365';
8
+ import { Attachment, Activity } from '@microsoft/agents-activity';
9
+ export { BatchFailedEntriesResponse, BatchOperationResponse, BatchOperationStateResponse, CancelOperationResponse, ChannelInfo, FeedbackLoopData, MeetingNotification, NotificationInfo, OnBehalfOf, TeamDetails, TeamInfo, TeamsAttachmentDownloader, TeamsChannelAccount, TeamsChannelData, TeamsChannelDataSettings, TeamsInfo, TeamsMeetingInfo, TeamsMember, TeamsPagedMembersResult, TenantInfo, parseTeamsChannelData } from '@microsoft/agents-hosting-extensions-teams';
10
+ export { Conversation, ConversationBuilder, ConversationClaims, ConversationReference, ConversationReferenceBuilder, CreateConversationOptions, CreateConversationOptionsBuilder, M365ConversationInput, M365ConversationRecord, ProactiveIdentity, captureM365ConversationReference, continueM365Conversation, restoreM365ConversationReference } from '@cuylabs/agent-channel-m365/proactive';
217
11
 
218
12
  declare function createTeamsChannelAdapter(options: TeamsChannelOptions): TeamsChannelAdapter;
219
13
 
@@ -333,6 +127,27 @@ declare function createTeamsApprovalRequestCard(input: TeamsApprovalCardRequest,
333
127
  declare function createTeamsHumanInputRequestCard(input: TeamsHumanInputCardRequest, options?: TeamsHumanInputCardOptions): Attachment;
334
128
  declare function parseTeamsInputRequestSubmit(value: unknown): TeamsInputRequestSubmit | undefined;
335
129
 
130
+ /**
131
+ * Returns `true` when the activity carries an `activityTreatment: targeted`
132
+ * entity.
133
+ *
134
+ * Targeted activities are surfaced only to the recipient inside a group
135
+ * Teams conversation. This is a Teams-only concept; for non-group
136
+ * conversations Teams clients should not add the treatment.
137
+ */
138
+ declare function isTargetedTeamsActivity(context: TurnContext): boolean;
139
+ /**
140
+ * Marks an outbound activity as targeted for Teams group conversations.
141
+ *
142
+ * This helper mutates the activity by adding the `activityTreatment: targeted`
143
+ * entity. It is idempotent and returns the same activity for chaining. Teams
144
+ * only honors this treatment in group chat / channel contexts; callers may use
145
+ * it before `TurnContext.sendActivity()` applies the conversation reference.
146
+ *
147
+ * Use when sending a reply that should only be visible to one recipient inside
148
+ * a group chat or channel thread.
149
+ */
150
+ declare function makeTargetedTeamsActivity(activity: Activity): Activity;
336
151
  interface ParseTeamsActivityOptions {
337
152
  strictChannelData?: boolean;
338
153
  }
@@ -360,4 +175,4 @@ declare const TEAMS_MEETING_INVOKE_NAMES: Readonly<Record<string, TeamsActivityK
360
175
  declare function parseTeamsActivity(context: TurnContext, options?: ParseTeamsActivityOptions): TeamsActivityInfo;
361
176
  declare function parseTeamsActivitySafe(context: TurnContext): TeamsActivityInfo;
362
177
 
363
- export { type MountTeamsAgentOptions, type MountTeamsAgentResult, type ParseTeamsActivityOptions, TEAMS_ACTIONABLE_MESSAGE_NAMES, TEAMS_ADAPTIVE_CARD_ACTION_NAMES, TEAMS_ADAPTIVE_CARD_SEARCH_NAMES, TEAMS_CARD_ACTION_SUBMIT_NAMES, TEAMS_CONFIG_FETCH_NAMES, TEAMS_CONFIG_SUBMIT_NAMES, TEAMS_CONVERSATION_UPDATE_EVENT_NAMES, TEAMS_FILE_CONSENT_NAMES, TEAMS_INPUT_REQUEST_APPROVAL_VERB, TEAMS_INPUT_REQUEST_HUMAN_VERB, TEAMS_MEETING_EVENT_NAMES, TEAMS_MEETING_INVOKE_NAMES, TEAMS_MESSAGE_EXTENSION_CARD_BUTTON_CLICKED_NAMES, TEAMS_MESSAGE_EXTENSION_FETCH_TASK_NAMES, TEAMS_MESSAGE_EXTENSION_QUERY_NAMES, TEAMS_MESSAGE_EXTENSION_QUERY_SETTING_URL_NAMES, TEAMS_MESSAGE_EXTENSION_SELECT_NAMES, TEAMS_MESSAGE_EXTENSION_SETTING_NAMES, TEAMS_MESSAGE_EXTENSION_SUBMIT_ACTION_NAMES, TEAMS_TAB_FETCH_NAMES, TEAMS_TAB_SUBMIT_NAMES, TEAMS_TASK_MODULE_FETCH_NAMES, TEAMS_TASK_MODULE_SUBMIT_NAMES, type TeamsActivityHandler, type TeamsActivityHandlers, type TeamsActivityInfo, type TeamsActivityKind, type TeamsActorReference, type TeamsAmbientTurnContext, type TeamsApprovalCardOptions, type TeamsApprovalCardRequest, type TeamsCardActionHandlers, type TeamsChannelAdapter, type TeamsChannelOptions, type TeamsConfigHandlers, type TeamsConversationUpdateHandlers, type TeamsDialogDefinition, type TeamsDialogMessageBody, type TeamsDialogResponse, type TeamsDialogSize, type TeamsHandlerContext, type TeamsHandlerDecision, type TeamsHumanInputCardOptions, type TeamsHumanInputCardRequest, type TeamsInputRequestEnvelope, type TeamsInputRequestSubmit, type TeamsInputRequestVerb, type TeamsInvokeResult, type TeamsMeetingHandlers, type TeamsMessageActivityHandlers, type TeamsMessageExtensionHandlers, type TeamsResolveInputPayload, type TeamsSearchAttachment, type TeamsSearchLayout, type TeamsSearchMessageBody, type TeamsSearchResponse, type TeamsSearchResult, type TeamsSearchResultBody, type TeamsSearchResultType, type TeamsSurface, type TeamsTabHandlers, type TeamsTaskModuleHandlers, type TeamsTurnPreparation, type TeamsTurnRequestContext, createTeamsApprovalRequestCard, createTeamsChannelAdapter, createTeamsDialog, createTeamsDialogMessage, createTeamsHumanInputRequestCard, createTeamsInvokeActivity, createTeamsSearchMessage, createTeamsSearchResult, currentTeamsTurnContext, mountTeamsAgent, parseTeamsActivity, parseTeamsActivitySafe, parseTeamsInputRequestSubmit, runWithTeamsTurnContext, sendTeamsInvoke };
178
+ export { type MountTeamsAgentOptions, type MountTeamsAgentResult, type ParseTeamsActivityOptions, TEAMS_ACTIONABLE_MESSAGE_NAMES, TEAMS_ADAPTIVE_CARD_ACTION_NAMES, TEAMS_ADAPTIVE_CARD_SEARCH_NAMES, TEAMS_CARD_ACTION_SUBMIT_NAMES, TEAMS_CONFIG_FETCH_NAMES, TEAMS_CONFIG_SUBMIT_NAMES, TEAMS_CONVERSATION_UPDATE_EVENT_NAMES, TEAMS_FILE_CONSENT_NAMES, TEAMS_INPUT_REQUEST_APPROVAL_VERB, TEAMS_INPUT_REQUEST_HUMAN_VERB, TEAMS_MEETING_EVENT_NAMES, TEAMS_MEETING_INVOKE_NAMES, TEAMS_MESSAGE_EXTENSION_CARD_BUTTON_CLICKED_NAMES, TEAMS_MESSAGE_EXTENSION_FETCH_TASK_NAMES, TEAMS_MESSAGE_EXTENSION_QUERY_NAMES, TEAMS_MESSAGE_EXTENSION_QUERY_SETTING_URL_NAMES, TEAMS_MESSAGE_EXTENSION_SELECT_NAMES, TEAMS_MESSAGE_EXTENSION_SETTING_NAMES, TEAMS_MESSAGE_EXTENSION_SUBMIT_ACTION_NAMES, TEAMS_TAB_FETCH_NAMES, TEAMS_TAB_SUBMIT_NAMES, TEAMS_TASK_MODULE_FETCH_NAMES, TEAMS_TASK_MODULE_SUBMIT_NAMES, TeamsActivityInfo, TeamsActivityKind, type TeamsAmbientTurnContext, type TeamsApprovalCardOptions, type TeamsApprovalCardRequest, TeamsChannelAdapter, TeamsChannelOptions, type TeamsDialogDefinition, type TeamsDialogMessageBody, type TeamsDialogResponse, type TeamsDialogSize, type TeamsHumanInputCardOptions, type TeamsHumanInputCardRequest, type TeamsInputRequestEnvelope, type TeamsInputRequestSubmit, type TeamsInputRequestVerb, type TeamsResolveInputPayload, type TeamsSearchAttachment, type TeamsSearchLayout, type TeamsSearchMessageBody, type TeamsSearchResponse, type TeamsSearchResult, type TeamsSearchResultBody, type TeamsSearchResultType, createTeamsApprovalRequestCard, createTeamsChannelAdapter, createTeamsDialog, createTeamsDialogMessage, createTeamsHumanInputRequestCard, createTeamsSearchMessage, createTeamsSearchResult, currentTeamsTurnContext, isTargetedTeamsActivity, makeTargetedTeamsActivity, mountTeamsAgent, parseTeamsActivity, parseTeamsActivitySafe, parseTeamsInputRequestSubmit, runWithTeamsTurnContext };