@cuylabs/agent-channel-teams 3.2.1 → 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/README.md +62 -0
- package/dist/chunk-MBDHSFBF.js +357 -0
- package/dist/index.d.ts +31 -216
- package/dist/index.js +60 -284
- package/dist/proactive-DF5XvDLJ.d.ts +258 -0
- package/dist/proactive.d.ts +7 -0
- package/dist/proactive.js +21 -0
- package/package.json +20 -10
|
@@ -0,0 +1,258 @@
|
|
|
1
|
+
import { TurnContext } from '@microsoft/agents-hosting';
|
|
2
|
+
import { Conversation } from '@cuylabs/agent-channel-m365/proactive';
|
|
3
|
+
import { AgentTurnSource, AgentEvent } from '@cuylabs/agent-core';
|
|
4
|
+
import { M365ChannelOptions, M365TurnRequestContext, M365TurnPreparation, M365UserIdentity, M365ChannelAdapter } from '@cuylabs/agent-channel-m365';
|
|
5
|
+
import { TeamsChannelData } from '@microsoft/agents-hosting-extensions-teams';
|
|
6
|
+
import { Activity } from '@microsoft/agents-activity';
|
|
7
|
+
|
|
8
|
+
interface TeamsInvokeResult<T = unknown> {
|
|
9
|
+
status: number;
|
|
10
|
+
body?: T;
|
|
11
|
+
}
|
|
12
|
+
declare function createTeamsInvokeActivity<T = unknown>(result: TeamsInvokeResult<T>): Activity;
|
|
13
|
+
declare function sendTeamsInvoke<T = unknown>(context: TurnContext, body?: T, status?: number): Promise<void>;
|
|
14
|
+
|
|
15
|
+
type TeamsSurface = "personal" | "channel" | "group" | "meeting" | "unknown";
|
|
16
|
+
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";
|
|
17
|
+
interface TeamsActorReference {
|
|
18
|
+
id?: string;
|
|
19
|
+
displayName?: string;
|
|
20
|
+
tenantId?: string;
|
|
21
|
+
userPrincipalName?: string;
|
|
22
|
+
}
|
|
23
|
+
interface TeamsActivityInfo {
|
|
24
|
+
channelId: string;
|
|
25
|
+
conversationId: string;
|
|
26
|
+
activityId?: string;
|
|
27
|
+
messageId?: string;
|
|
28
|
+
replyToId?: string;
|
|
29
|
+
invokeName?: string;
|
|
30
|
+
eventType?: string;
|
|
31
|
+
tenantId?: string;
|
|
32
|
+
teamId?: string;
|
|
33
|
+
channelThreadId?: string;
|
|
34
|
+
meetingId?: string;
|
|
35
|
+
channelData?: TeamsChannelData;
|
|
36
|
+
surface: TeamsSurface;
|
|
37
|
+
kind: TeamsActivityKind;
|
|
38
|
+
actors: TeamsActorReference[];
|
|
39
|
+
/**
|
|
40
|
+
* Whether the inbound activity carries an `activityTreatment: targeted` entity.
|
|
41
|
+
*
|
|
42
|
+
* Targeted activities are visible only to the recipient even inside a group
|
|
43
|
+
* Teams conversation. Set by Teams clients or outgoing helper code through
|
|
44
|
+
* the `activityTreatment: targeted` entity added in @microsoft/agents-activity 1.5.
|
|
45
|
+
*/
|
|
46
|
+
targeted: boolean;
|
|
47
|
+
}
|
|
48
|
+
interface TeamsTurnRequestContext extends M365TurnRequestContext {
|
|
49
|
+
teams: TeamsActivityInfo;
|
|
50
|
+
channelData?: TeamsChannelData;
|
|
51
|
+
}
|
|
52
|
+
type TeamsTurnPreparation = M365TurnPreparation;
|
|
53
|
+
interface TeamsHandlerContext {
|
|
54
|
+
turnContext: TurnContext;
|
|
55
|
+
user: M365UserIdentity;
|
|
56
|
+
teams: TeamsActivityInfo;
|
|
57
|
+
channelData?: TeamsChannelData;
|
|
58
|
+
sessionId: string;
|
|
59
|
+
source: AgentTurnSource;
|
|
60
|
+
/**
|
|
61
|
+
* Start an agent turn inside the current Teams request context.
|
|
62
|
+
*
|
|
63
|
+
* This is useful for dialog submit/search-command handlers that still want
|
|
64
|
+
* to delegate their actual reasoning to agent-core.
|
|
65
|
+
*/
|
|
66
|
+
runAgent(message: string, options?: {
|
|
67
|
+
abort?: AbortSignal;
|
|
68
|
+
system?: string;
|
|
69
|
+
}): AsyncGenerator<AgentEvent>;
|
|
70
|
+
/**
|
|
71
|
+
* Send an invoke response payload back to Teams.
|
|
72
|
+
*/
|
|
73
|
+
sendInvoke(body?: unknown, status?: number): Promise<void>;
|
|
74
|
+
}
|
|
75
|
+
type TeamsHandlerDecision = void | "continue" | TeamsInvokeResult;
|
|
76
|
+
type TeamsActivityHandler = (context: TeamsHandlerContext) => TeamsHandlerDecision | Promise<TeamsHandlerDecision>;
|
|
77
|
+
interface TeamsConversationUpdateHandlers {
|
|
78
|
+
conversationUpdate?: TeamsActivityHandler;
|
|
79
|
+
membersAdded?: TeamsActivityHandler;
|
|
80
|
+
membersRemoved?: TeamsActivityHandler;
|
|
81
|
+
channelCreated?: TeamsActivityHandler;
|
|
82
|
+
channelDeleted?: TeamsActivityHandler;
|
|
83
|
+
channelRenamed?: TeamsActivityHandler;
|
|
84
|
+
channelRestored?: TeamsActivityHandler;
|
|
85
|
+
channelShared?: TeamsActivityHandler;
|
|
86
|
+
channelUnshared?: TeamsActivityHandler;
|
|
87
|
+
teamRenamed?: TeamsActivityHandler;
|
|
88
|
+
teamArchived?: TeamsActivityHandler;
|
|
89
|
+
teamUnarchived?: TeamsActivityHandler;
|
|
90
|
+
teamDeleted?: TeamsActivityHandler;
|
|
91
|
+
teamHardDeleted?: TeamsActivityHandler;
|
|
92
|
+
teamRestored?: TeamsActivityHandler;
|
|
93
|
+
}
|
|
94
|
+
interface TeamsMessageActivityHandlers {
|
|
95
|
+
messageEdited?: TeamsActivityHandler;
|
|
96
|
+
messageDeleted?: TeamsActivityHandler;
|
|
97
|
+
messageRestored?: TeamsActivityHandler;
|
|
98
|
+
reaction?: TeamsActivityHandler;
|
|
99
|
+
readReceipt?: TeamsActivityHandler;
|
|
100
|
+
}
|
|
101
|
+
interface TeamsCardActionHandlers {
|
|
102
|
+
cardSubmit?: TeamsActivityHandler;
|
|
103
|
+
adaptiveCardAction?: TeamsActivityHandler;
|
|
104
|
+
adaptiveCardSearch?: TeamsActivityHandler;
|
|
105
|
+
feedbackSubmit?: TeamsActivityHandler;
|
|
106
|
+
fileConsent?: TeamsActivityHandler;
|
|
107
|
+
actionableMessageExecuteAction?: TeamsActivityHandler;
|
|
108
|
+
}
|
|
109
|
+
interface TeamsConfigHandlers {
|
|
110
|
+
configFetch?: TeamsActivityHandler;
|
|
111
|
+
configSubmit?: TeamsActivityHandler;
|
|
112
|
+
}
|
|
113
|
+
interface TeamsTaskModuleHandlers {
|
|
114
|
+
dialogOpen?: TeamsActivityHandler;
|
|
115
|
+
dialogSubmit?: TeamsActivityHandler;
|
|
116
|
+
taskFetch?: TeamsActivityHandler;
|
|
117
|
+
taskSubmit?: TeamsActivityHandler;
|
|
118
|
+
}
|
|
119
|
+
interface TeamsMessageExtensionHandlers {
|
|
120
|
+
searchCommand?: TeamsActivityHandler;
|
|
121
|
+
selectResult?: TeamsActivityHandler;
|
|
122
|
+
messageExtensionQuery?: TeamsActivityHandler;
|
|
123
|
+
messageExtensionQueryLink?: TeamsActivityHandler;
|
|
124
|
+
messageExtensionAnonymousQueryLink?: TeamsActivityHandler;
|
|
125
|
+
messageExtensionSelectItem?: TeamsActivityHandler;
|
|
126
|
+
messageExtensionSubmitAction?: TeamsActivityHandler;
|
|
127
|
+
messageExtensionFetchTask?: TeamsActivityHandler;
|
|
128
|
+
messageExtensionQuerySettingUrl?: TeamsActivityHandler;
|
|
129
|
+
messageExtensionSetting?: TeamsActivityHandler;
|
|
130
|
+
messageExtensionCardButtonClicked?: TeamsActivityHandler;
|
|
131
|
+
}
|
|
132
|
+
interface TeamsTabHandlers {
|
|
133
|
+
tabFetch?: TeamsActivityHandler;
|
|
134
|
+
tabSubmit?: TeamsActivityHandler;
|
|
135
|
+
}
|
|
136
|
+
interface TeamsMeetingHandlers {
|
|
137
|
+
/** Fired when a Teams meeting starts. */
|
|
138
|
+
meetingStart?: TeamsActivityHandler;
|
|
139
|
+
/** Fired when a Teams meeting ends. */
|
|
140
|
+
meetingEnd?: TeamsActivityHandler;
|
|
141
|
+
/** Fired when participants join a Teams meeting. */
|
|
142
|
+
participantsJoin?: TeamsActivityHandler;
|
|
143
|
+
/** Fired when participants leave a Teams meeting. */
|
|
144
|
+
participantsLeave?: TeamsActivityHandler;
|
|
145
|
+
/** Fired when a physical meeting room joins a Teams meeting. */
|
|
146
|
+
meetingRoomJoin?: TeamsActivityHandler;
|
|
147
|
+
/** Fired when a physical meeting room leaves a Teams meeting. */
|
|
148
|
+
meetingRoomLeave?: TeamsActivityHandler;
|
|
149
|
+
/** Fired when the app is viewed in the meeting stage (invoke). */
|
|
150
|
+
meetingStageView?: TeamsActivityHandler;
|
|
151
|
+
/** Fired for smart reply recommendations during a meeting (invoke). */
|
|
152
|
+
meetingSmartReply?: TeamsActivityHandler;
|
|
153
|
+
/** Fired for emoji reactions during a meeting. */
|
|
154
|
+
meetingReaction?: TeamsActivityHandler;
|
|
155
|
+
/** Fired when a poll response is submitted during a meeting. */
|
|
156
|
+
meetingPollResponse?: TeamsActivityHandler;
|
|
157
|
+
/** Fired when apps are installed during a meeting. */
|
|
158
|
+
meetingAppsInstalled?: TeamsActivityHandler;
|
|
159
|
+
/** Fired when apps are uninstalled during a meeting. */
|
|
160
|
+
meetingAppsUninstalled?: TeamsActivityHandler;
|
|
161
|
+
/** Fired when meeting recording starts. */
|
|
162
|
+
meetingRecordingStarted?: TeamsActivityHandler;
|
|
163
|
+
/** Fired when meeting recording stops. */
|
|
164
|
+
meetingRecordingStopped?: TeamsActivityHandler;
|
|
165
|
+
/** Fired when the meeting focus changes. */
|
|
166
|
+
meetingFocusChange?: TeamsActivityHandler;
|
|
167
|
+
/** Fired when screen sharing starts in a meeting. */
|
|
168
|
+
meetingScreenShareStart?: TeamsActivityHandler;
|
|
169
|
+
/** Fired when screen sharing stops in a meeting. */
|
|
170
|
+
meetingScreenShareStop?: TeamsActivityHandler;
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Aggregate Teams handler surface grouped by capability.
|
|
174
|
+
*
|
|
175
|
+
* This keeps the public API centered on Teams concepts without exposing
|
|
176
|
+
* Microsoft's `AgentApplication` routing types.
|
|
177
|
+
*/
|
|
178
|
+
interface TeamsActivityHandlers extends TeamsConversationUpdateHandlers, TeamsMessageActivityHandlers, TeamsCardActionHandlers, TeamsConfigHandlers, TeamsTaskModuleHandlers, TeamsMessageExtensionHandlers, TeamsTabHandlers, TeamsMeetingHandlers {
|
|
179
|
+
invoke?: TeamsActivityHandler;
|
|
180
|
+
}
|
|
181
|
+
interface TeamsChannelOptions extends Omit<M365ChannelOptions, "prepareTurn"> {
|
|
182
|
+
/**
|
|
183
|
+
* Whether malformed Teams channelData should throw while parsing.
|
|
184
|
+
*
|
|
185
|
+
* Keep this enabled in tests and strict hosts that want SDK payload drift to
|
|
186
|
+
* fail fast. Disable it in production bots that should continue handling the
|
|
187
|
+
* turn with best-effort Teams metadata when an unexpected channelData shape
|
|
188
|
+
* arrives.
|
|
189
|
+
*
|
|
190
|
+
* @default true
|
|
191
|
+
*/
|
|
192
|
+
strictChannelData?: boolean;
|
|
193
|
+
/**
|
|
194
|
+
* Teams-native turn preparation hook. The result is forwarded into the
|
|
195
|
+
* underlying M365 channel adapter.
|
|
196
|
+
*/
|
|
197
|
+
prepareTurn?: (request: TeamsTurnRequestContext) => TeamsTurnPreparation | Promise<TeamsTurnPreparation>;
|
|
198
|
+
/**
|
|
199
|
+
* Teams-specific activity hooks that run before generic M365 handling.
|
|
200
|
+
*
|
|
201
|
+
* Notes:
|
|
202
|
+
* - the `"feedback"` kind falls through to `cardSubmit` when
|
|
203
|
+
* `feedbackSubmit` is not defined
|
|
204
|
+
* - specialized Teams invoke kinds fall back to grouped handlers such as
|
|
205
|
+
* `dialogOpen`, `searchCommand`, or `selectResult` when the narrow handler
|
|
206
|
+
* is not provided
|
|
207
|
+
*/
|
|
208
|
+
handlers?: TeamsActivityHandlers;
|
|
209
|
+
/**
|
|
210
|
+
* General-purpose middleware that runs on every turn before cuylabs
|
|
211
|
+
* processing. Gives raw `TurnContext` access for Microsoft SDK helpers
|
|
212
|
+
* or custom logic. Call `next()` to continue into the normal handler
|
|
213
|
+
* pipeline, or return without calling it to short-circuit.
|
|
214
|
+
*/
|
|
215
|
+
onTurn?: (context: TurnContext, next: () => Promise<void>) => Promise<void>;
|
|
216
|
+
}
|
|
217
|
+
interface TeamsChannelAdapter extends M365ChannelAdapter {
|
|
218
|
+
/**
|
|
219
|
+
* The underlying generic M365 adapter used for ordinary message turns.
|
|
220
|
+
*/
|
|
221
|
+
readonly m365: M365ChannelAdapter;
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
/**
|
|
225
|
+
* Proactive messaging primitives for the Teams channel.
|
|
226
|
+
*
|
|
227
|
+
* Re-exports the M365 proactive bridge so Teams consumers have a single
|
|
228
|
+
* import surface, plus a Teams-specific helper that captures a
|
|
229
|
+
* {@link Conversation} together with the parsed Teams metadata most apps
|
|
230
|
+
* need at replay time (tenant, surface, team, channel thread, meeting id).
|
|
231
|
+
*
|
|
232
|
+
* Use this module when an app needs to send a message into Teams without an
|
|
233
|
+
* inbound turn — async tool completions, mail dispatcher results,
|
|
234
|
+
* notifications, scheduled reminders.
|
|
235
|
+
*/
|
|
236
|
+
|
|
237
|
+
/**
|
|
238
|
+
* Captured Teams conversation reference plus parsed channel metadata.
|
|
239
|
+
*
|
|
240
|
+
* The {@link Conversation} is what `continueM365Conversation` needs to replay
|
|
241
|
+
* a turn; `teams` is the parsed {@link TeamsActivityInfo} so callers can
|
|
242
|
+
* persist surface / tenant / team / channel ids alongside the reference for
|
|
243
|
+
* later routing decisions.
|
|
244
|
+
*/
|
|
245
|
+
interface TeamsProactiveCapture {
|
|
246
|
+
conversation: Conversation;
|
|
247
|
+
teams: TeamsActivityInfo;
|
|
248
|
+
}
|
|
249
|
+
/**
|
|
250
|
+
* Capture a serializable {@link Conversation} from a live Teams turn alongside
|
|
251
|
+
* the parsed Teams metadata. Validates the captured reference.
|
|
252
|
+
*
|
|
253
|
+
* Persist the result to your storage of choice; replay later through
|
|
254
|
+
* `continueM365Conversation(adapter, capture.conversation, async (ctx) => …)`.
|
|
255
|
+
*/
|
|
256
|
+
declare function captureTeamsConversationReference(context: TurnContext): TeamsProactiveCapture;
|
|
257
|
+
|
|
258
|
+
export { type TeamsChannelOptions as T, type TeamsChannelAdapter as a, type TeamsActivityInfo as b, type TeamsActivityKind as c, type TeamsActivityHandler as d, type TeamsActivityHandlers as e, type TeamsActorReference as f, type TeamsCardActionHandlers as g, type TeamsConfigHandlers as h, type TeamsConversationUpdateHandlers as i, type TeamsHandlerContext as j, type TeamsHandlerDecision as k, type TeamsInvokeResult as l, type TeamsMeetingHandlers as m, type TeamsMessageActivityHandlers as n, type TeamsMessageExtensionHandlers as o, type TeamsProactiveCapture as p, type TeamsSurface as q, type TeamsTabHandlers as r, type TeamsTaskModuleHandlers as s, type TeamsTurnPreparation as t, type TeamsTurnRequestContext as u, captureTeamsConversationReference as v, createTeamsInvokeActivity as w, sendTeamsInvoke as x };
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import '@microsoft/agents-hosting';
|
|
2
|
+
export { Conversation, ConversationBuilder, ConversationClaims, ConversationReference, ConversationReferenceBuilder, CreateConversationOptions, CreateConversationOptionsBuilder, M365ConversationInput, M365ConversationRecord, ProactiveIdentity, captureM365ConversationReference, continueM365Conversation, restoreM365ConversationReference } from '@cuylabs/agent-channel-m365/proactive';
|
|
3
|
+
export { p as TeamsProactiveCapture, v as captureTeamsConversationReference } from './proactive-DF5XvDLJ.js';
|
|
4
|
+
import '@cuylabs/agent-core';
|
|
5
|
+
import '@cuylabs/agent-channel-m365';
|
|
6
|
+
import '@microsoft/agents-hosting-extensions-teams';
|
|
7
|
+
import '@microsoft/agents-activity';
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import {
|
|
2
|
+
Conversation,
|
|
3
|
+
ConversationBuilder,
|
|
4
|
+
ConversationReferenceBuilder,
|
|
5
|
+
CreateConversationOptionsBuilder,
|
|
6
|
+
captureM365ConversationReference,
|
|
7
|
+
captureTeamsConversationReference,
|
|
8
|
+
continueM365Conversation,
|
|
9
|
+
restoreM365ConversationReference
|
|
10
|
+
} from "./chunk-MBDHSFBF.js";
|
|
11
|
+
import "./chunk-B5KRH22J.js";
|
|
12
|
+
export {
|
|
13
|
+
Conversation,
|
|
14
|
+
ConversationBuilder,
|
|
15
|
+
ConversationReferenceBuilder,
|
|
16
|
+
CreateConversationOptionsBuilder,
|
|
17
|
+
captureM365ConversationReference,
|
|
18
|
+
captureTeamsConversationReference,
|
|
19
|
+
continueM365Conversation,
|
|
20
|
+
restoreM365ConversationReference
|
|
21
|
+
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cuylabs/agent-channel-teams",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "4.1.0",
|
|
4
4
|
"description": "Teams-native channel layer for @cuylabs/agent-core built on top of @cuylabs/agent-channel-m365",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -15,6 +15,11 @@
|
|
|
15
15
|
"types": "./dist/extensions.d.ts",
|
|
16
16
|
"import": "./dist/extensions.js",
|
|
17
17
|
"default": "./dist/extensions.js"
|
|
18
|
+
},
|
|
19
|
+
"./proactive": {
|
|
20
|
+
"types": "./dist/proactive.d.ts",
|
|
21
|
+
"import": "./dist/proactive.js",
|
|
22
|
+
"default": "./dist/proactive.js"
|
|
18
23
|
}
|
|
19
24
|
},
|
|
20
25
|
"files": [
|
|
@@ -23,23 +28,28 @@
|
|
|
23
28
|
"README.md"
|
|
24
29
|
],
|
|
25
30
|
"dependencies": {
|
|
26
|
-
"@microsoft/agents-hosting-extensions-teams": "^1.
|
|
27
|
-
"@cuylabs/agent-channel-m365": "^
|
|
28
|
-
"@cuylabs/agent-core": "^
|
|
31
|
+
"@microsoft/agents-hosting-extensions-teams": "^1.5.0",
|
|
32
|
+
"@cuylabs/agent-channel-m365": "^4.1.0",
|
|
33
|
+
"@cuylabs/agent-core": "^4.1.0"
|
|
29
34
|
},
|
|
30
35
|
"peerDependencies": {
|
|
31
|
-
"@microsoft/agents-activity": "^1.
|
|
32
|
-
"@microsoft/agents-hosting": "^1.
|
|
36
|
+
"@microsoft/agents-activity": "^1.5.0",
|
|
37
|
+
"@microsoft/agents-hosting": "^1.5.0",
|
|
38
|
+
"@microsoft/agents-telemetry": "^1.5.0",
|
|
33
39
|
"express": ">=4.21.0 || >=5.0.0"
|
|
34
40
|
},
|
|
35
41
|
"peerDependenciesMeta": {
|
|
42
|
+
"@microsoft/agents-telemetry": {
|
|
43
|
+
"optional": true
|
|
44
|
+
},
|
|
36
45
|
"express": {
|
|
37
46
|
"optional": true
|
|
38
47
|
}
|
|
39
48
|
},
|
|
40
49
|
"devDependencies": {
|
|
41
|
-
"@microsoft/agents-activity": "^1.
|
|
42
|
-
"@microsoft/agents-hosting": "^1.
|
|
50
|
+
"@microsoft/agents-activity": "^1.5.0",
|
|
51
|
+
"@microsoft/agents-hosting": "^1.5.0",
|
|
52
|
+
"@microsoft/agents-telemetry": "^1.5.0",
|
|
43
53
|
"@types/express": "^5.0.0",
|
|
44
54
|
"@types/node": "^22.0.0",
|
|
45
55
|
"express": "^5.2.1",
|
|
@@ -69,8 +79,8 @@
|
|
|
69
79
|
"access": "public"
|
|
70
80
|
},
|
|
71
81
|
"scripts": {
|
|
72
|
-
"build": "tsup src/index.ts src/extensions.ts --format esm --dts --clean",
|
|
73
|
-
"dev": "tsup src/index.ts src/extensions.ts --format esm --dts --watch",
|
|
82
|
+
"build": "tsup src/index.ts src/extensions.ts src/proactive.ts --format esm --dts --clean",
|
|
83
|
+
"dev": "tsup src/index.ts src/extensions.ts src/proactive.ts --format esm --dts --watch",
|
|
74
84
|
"typecheck": "tsc --noEmit",
|
|
75
85
|
"test": "vitest run",
|
|
76
86
|
"test:watch": "vitest",
|