@microsoft/agents-hosting 1.5.0-beta.6.ga236d9a19c → 1.5.1
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/package.json +10 -9
- package/dist/src/activityHandler.js +2 -2
- package/dist/src/activityHandler.js.map +1 -1
- package/dist/src/agent-client/agentClient.js +49 -40
- package/dist/src/agent-client/agentClient.js.map +1 -1
- package/dist/src/agent-client/agentResponseHandler.js +2 -2
- package/dist/src/agent-client/agentResponseHandler.js.map +1 -1
- package/dist/src/app/agentApplication.d.ts +36 -10
- package/dist/src/app/agentApplication.js +169 -99
- package/dist/src/app/agentApplication.js.map +1 -1
- package/dist/src/app/agentApplicationBuilder.d.ts +15 -0
- package/dist/src/app/agentApplicationBuilder.js +22 -4
- package/dist/src/app/agentApplicationBuilder.js.map +1 -1
- package/dist/src/app/agentApplicationOptions.d.ts +38 -0
- package/dist/src/app/attachmentDownloader.js +2 -2
- package/dist/src/app/attachmentDownloader.js.map +1 -1
- package/dist/src/app/auth/authorization.js +12 -9
- package/dist/src/app/auth/authorization.js.map +1 -1
- package/dist/src/app/auth/authorizationManager.d.ts +18 -5
- package/dist/src/app/auth/authorizationManager.js +258 -45
- package/dist/src/app/auth/authorizationManager.js.map +1 -1
- package/dist/src/app/auth/handlerStorage.js +3 -1
- package/dist/src/app/auth/handlerStorage.js.map +1 -1
- package/dist/src/app/auth/handlers/agenticAuthorization.d.ts +19 -16
- package/dist/src/app/auth/handlers/agenticAuthorization.js +46 -52
- package/dist/src/app/auth/handlers/agenticAuthorization.js.map +1 -1
- package/dist/src/app/auth/handlers/azureBotAuthorization.d.ts +51 -75
- package/dist/src/app/auth/handlers/azureBotAuthorization.js +217 -192
- package/dist/src/app/auth/handlers/azureBotAuthorization.js.map +1 -1
- package/dist/src/app/auth/types.d.ts +100 -1
- package/dist/src/app/auth/utils.d.ts +10 -0
- package/dist/src/app/auth/utils.js +21 -0
- package/dist/src/app/auth/utils.js.map +1 -0
- package/dist/src/app/index.d.ts +1 -0
- package/dist/src/app/index.js +1 -0
- package/dist/src/app/index.js.map +1 -1
- package/dist/src/app/proactive/conversation.d.ts +43 -0
- package/dist/src/app/proactive/conversation.js +67 -0
- package/dist/src/app/proactive/conversation.js.map +1 -0
- package/dist/src/app/proactive/conversationBuilder.d.ts +54 -0
- package/dist/src/app/proactive/conversationBuilder.js +110 -0
- package/dist/src/app/proactive/conversationBuilder.js.map +1 -0
- package/dist/src/app/proactive/conversationReferenceBuilder.d.ts +68 -0
- package/dist/src/app/proactive/conversationReferenceBuilder.js +125 -0
- package/dist/src/app/proactive/conversationReferenceBuilder.js.map +1 -0
- package/dist/src/app/proactive/createConversationOptions.d.ts +30 -0
- package/dist/src/app/proactive/createConversationOptions.js +10 -0
- package/dist/src/app/proactive/createConversationOptions.js.map +1 -0
- package/dist/src/app/proactive/createConversationOptionsBuilder.d.ts +69 -0
- package/dist/src/app/proactive/createConversationOptionsBuilder.js +141 -0
- package/dist/src/app/proactive/createConversationOptionsBuilder.js.map +1 -0
- package/dist/src/app/proactive/index.d.ts +7 -0
- package/dist/src/app/proactive/index.js +26 -0
- package/dist/src/app/proactive/index.js.map +1 -0
- package/dist/src/app/proactive/proactive.d.ts +248 -0
- package/dist/src/app/proactive/proactive.js +310 -0
- package/dist/src/app/proactive/proactive.js.map +1 -0
- package/dist/src/app/proactive/proactiveOptions.d.ts +19 -0
- package/dist/src/app/proactive/proactiveOptions.js +5 -0
- package/dist/src/app/proactive/proactiveOptions.js.map +1 -0
- package/dist/src/app/streaming/streamingResponse.js +2 -2
- package/dist/src/app/streaming/streamingResponse.js.map +1 -1
- package/dist/src/app/teamsAttachmentDownloader.js +2 -2
- package/dist/src/app/teamsAttachmentDownloader.js.map +1 -1
- package/dist/src/app/turnState.js +2 -2
- package/dist/src/app/turnState.js.map +1 -1
- package/dist/src/auth/authConfiguration.d.ts +61 -0
- package/dist/src/auth/authConfiguration.js +52 -3
- package/dist/src/auth/authConfiguration.js.map +1 -1
- package/dist/src/auth/jwt-middleware.js +2 -2
- package/dist/src/auth/jwt-middleware.js.map +1 -1
- package/dist/src/auth/msalConnectionManager.js +20 -0
- package/dist/src/auth/msalConnectionManager.js.map +1 -1
- package/dist/src/auth/msalTokenCredential.js +3 -0
- package/dist/src/auth/msalTokenCredential.js.map +1 -1
- package/dist/src/auth/msalTokenProvider.js +136 -110
- package/dist/src/auth/msalTokenProvider.js.map +1 -1
- package/dist/src/baseAdapter.js +2 -2
- package/dist/src/baseAdapter.js.map +1 -1
- package/dist/src/cloudAdapter.js +201 -154
- package/dist/src/cloudAdapter.js.map +1 -1
- package/dist/src/connector-client/connectorClient.js +176 -127
- package/dist/src/connector-client/connectorClient.js.map +1 -1
- package/dist/src/errorHelper.js +108 -0
- package/dist/src/errorHelper.js.map +1 -1
- package/dist/src/middlewareSet.js +2 -2
- package/dist/src/middlewareSet.js.map +1 -1
- package/dist/src/oauth/userTokenClient.js +78 -48
- package/dist/src/oauth/userTokenClient.js.map +1 -1
- package/dist/src/observability/index.d.ts +2 -0
- package/dist/src/observability/index.js +21 -0
- package/dist/src/observability/index.js.map +1 -0
- package/dist/src/observability/metrics.d.ts +21 -0
- package/dist/src/observability/metrics.js +87 -0
- package/dist/src/observability/metrics.js.map +1 -0
- package/dist/src/observability/traces.d.ts +234 -0
- package/dist/src/observability/traces.js +962 -0
- package/dist/src/observability/traces.js.map +1 -0
- package/dist/src/state/agentState.js +2 -2
- package/dist/src/state/agentState.js.map +1 -1
- package/dist/src/storage/fileStorage.js +38 -28
- package/dist/src/storage/fileStorage.js.map +1 -1
- package/dist/src/storage/memoryStorage.js +41 -30
- package/dist/src/storage/memoryStorage.js.map +1 -1
- package/dist/src/transcript/fileTranscriptLogger.js +2 -2
- package/dist/src/transcript/fileTranscriptLogger.js.map +1 -1
- package/dist/src/transcript/transcriptLoggerMiddleware.js +2 -2
- package/dist/src/transcript/transcriptLoggerMiddleware.js.map +1 -1
- package/dist/src/turnContext.js +48 -42
- package/dist/src/turnContext.js.map +1 -1
- package/package.json +10 -9
- package/src/activityHandler.ts +1 -1
- package/src/agent-client/agentClient.ts +53 -42
- package/src/agent-client/agentResponseHandler.ts +1 -1
- package/src/app/agentApplication.ts +212 -86
- package/src/app/agentApplicationBuilder.ts +26 -4
- package/src/app/agentApplicationOptions.ts +43 -0
- package/src/app/attachmentDownloader.ts +1 -1
- package/src/app/auth/authorization.ts +11 -8
- package/src/app/auth/authorizationManager.ts +297 -45
- package/src/app/auth/handlerStorage.ts +3 -1
- package/src/app/auth/handlers/agenticAuthorization.ts +68 -72
- package/src/app/auth/handlers/azureBotAuthorization.ts +260 -264
- package/src/app/auth/types.ts +102 -1
- package/src/app/auth/utils.ts +22 -0
- package/src/app/index.ts +1 -0
- package/src/app/proactive/conversation.ts +87 -0
- package/src/app/proactive/conversationBuilder.ts +139 -0
- package/src/app/proactive/conversationReferenceBuilder.ts +161 -0
- package/src/app/proactive/createConversationOptions.ts +35 -0
- package/src/app/proactive/createConversationOptionsBuilder.ts +181 -0
- package/src/app/proactive/index.ts +10 -0
- package/src/app/proactive/proactive.ts +524 -0
- package/src/app/proactive/proactiveOptions.ts +24 -0
- package/src/app/streaming/streamingResponse.ts +1 -1
- package/src/app/teamsAttachmentDownloader.ts +1 -1
- package/src/app/turnState.ts +1 -1
- package/src/auth/authConfiguration.ts +58 -1
- package/src/auth/jwt-middleware.ts +1 -1
- package/src/auth/msalConnectionManager.ts +22 -0
- package/src/auth/msalTokenCredential.ts +4 -0
- package/src/auth/msalTokenProvider.ts +138 -107
- package/src/baseAdapter.ts +1 -1
- package/src/cloudAdapter.ts +239 -184
- package/src/connector-client/connectorClient.ts +169 -126
- package/src/errorHelper.ts +124 -0
- package/src/middlewareSet.ts +1 -1
- package/src/oauth/userTokenClient.ts +70 -46
- package/src/observability/index.ts +5 -0
- package/src/observability/metrics.ts +103 -0
- package/src/observability/traces.ts +988 -0
- package/src/state/agentState.ts +1 -1
- package/src/storage/fileStorage.ts +36 -26
- package/src/storage/memoryStorage.ts +40 -29
- package/src/transcript/fileTranscriptLogger.ts +1 -1
- package/src/transcript/transcriptLoggerMiddleware.ts +1 -1
- package/src/turnContext.ts +47 -41
package/src/state/agentState.ts
CHANGED
|
@@ -7,7 +7,7 @@ import { Storage, StorageKeyFactory, StoreItem } from '../storage/storage'
|
|
|
7
7
|
import { TurnContext } from '../turnContext'
|
|
8
8
|
import { createHash } from 'node:crypto'
|
|
9
9
|
import { AgentStatePropertyAccessor } from './agentStatePropertyAccesor'
|
|
10
|
-
import { debug } from '@microsoft/agents-
|
|
10
|
+
import { debug } from '@microsoft/agents-telemetry'
|
|
11
11
|
|
|
12
12
|
const logger = debug('agents:state')
|
|
13
13
|
|
|
@@ -6,6 +6,8 @@
|
|
|
6
6
|
import path from 'path'
|
|
7
7
|
import fs from 'fs'
|
|
8
8
|
import { Storage, StoreItem } from './storage'
|
|
9
|
+
import { trace } from '@microsoft/agents-telemetry'
|
|
10
|
+
import { StorageTraceDefinitions } from '../observability'
|
|
9
11
|
|
|
10
12
|
/**
|
|
11
13
|
* A file-based storage implementation that persists data to the local filesystem.
|
|
@@ -91,19 +93,22 @@ export class FileStorage implements Storage {
|
|
|
91
93
|
*
|
|
92
94
|
*/
|
|
93
95
|
read (keys: string[]) : Promise<StoreItem> {
|
|
94
|
-
return
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
const
|
|
101
|
-
|
|
102
|
-
|
|
96
|
+
return trace(StorageTraceDefinitions.read, async ({ record }) => {
|
|
97
|
+
record({ keyCount: keys?.length })
|
|
98
|
+
return new Promise<StoreItem>((resolve, reject) => {
|
|
99
|
+
if (!keys || keys.length === 0) {
|
|
100
|
+
reject(new ReferenceError('Keys are required when reading.'))
|
|
101
|
+
} else {
|
|
102
|
+
const data: StoreItem = {}
|
|
103
|
+
for (const key of keys) {
|
|
104
|
+
const item = this._stateFile[key]
|
|
105
|
+
if (item) {
|
|
106
|
+
data[key] = item
|
|
107
|
+
}
|
|
103
108
|
}
|
|
109
|
+
resolve(data)
|
|
104
110
|
}
|
|
105
|
-
|
|
106
|
-
}
|
|
111
|
+
})
|
|
107
112
|
})
|
|
108
113
|
}
|
|
109
114
|
|
|
@@ -124,12 +129,14 @@ export class FileStorage implements Storage {
|
|
|
124
129
|
*
|
|
125
130
|
*/
|
|
126
131
|
write (changes: StoreItem) : Promise<void> {
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
132
|
+
return trace(StorageTraceDefinitions.write, async ({ record }) => {
|
|
133
|
+
const keys = Object.keys(changes)
|
|
134
|
+
record({ keyCount: keys?.length })
|
|
135
|
+
for (const key of keys) {
|
|
136
|
+
this._stateFile[key] = changes[key]
|
|
137
|
+
}
|
|
138
|
+
fs.writeFileSync(this._folder + '/state.json', JSON.stringify(this._stateFile, null, 2))
|
|
139
|
+
})
|
|
133
140
|
}
|
|
134
141
|
|
|
135
142
|
/**
|
|
@@ -147,16 +154,19 @@ export class FileStorage implements Storage {
|
|
|
147
154
|
*
|
|
148
155
|
*/
|
|
149
156
|
delete (keys: string[]) : Promise<void> {
|
|
150
|
-
return
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
157
|
+
return trace(StorageTraceDefinitions.delete, async ({ record }) => {
|
|
158
|
+
record({ keyCount: keys?.length })
|
|
159
|
+
return new Promise<void>((resolve, reject) => {
|
|
160
|
+
if (!keys || keys.length === 0) {
|
|
161
|
+
reject(new ReferenceError('Keys are required when deleting.'))
|
|
162
|
+
} else {
|
|
163
|
+
for (const key of keys) {
|
|
164
|
+
delete this._stateFile[key]
|
|
165
|
+
}
|
|
166
|
+
fs.writeFileSync(this._folder + '/state.json', JSON.stringify(this._stateFile, null, 2))
|
|
167
|
+
resolve(undefined)
|
|
156
168
|
}
|
|
157
|
-
|
|
158
|
-
}
|
|
159
|
-
resolve()
|
|
169
|
+
})
|
|
160
170
|
})
|
|
161
171
|
}
|
|
162
172
|
}
|
|
@@ -3,8 +3,10 @@
|
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
+
import { trace } from '@microsoft/agents-telemetry'
|
|
7
|
+
import { StorageTraceDefinitions } from '../observability'
|
|
6
8
|
import { Storage, StoreItem } from './storage'
|
|
7
|
-
import { debug } from '@microsoft/agents-
|
|
9
|
+
import { debug } from '@microsoft/agents-telemetry'
|
|
8
10
|
|
|
9
11
|
const logger = debug('agents:memory-storage')
|
|
10
12
|
|
|
@@ -61,20 +63,23 @@ export class MemoryStorage implements Storage {
|
|
|
61
63
|
* @throws Will throw an error if keys are not provided or the array is empty
|
|
62
64
|
*/
|
|
63
65
|
async read (keys: string[]): Promise<StoreItem> {
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
66
|
+
return trace(StorageTraceDefinitions.read, async ({ record }) => {
|
|
67
|
+
record({ keyCount: keys?.length })
|
|
68
|
+
if (!keys || keys.length === 0) {
|
|
69
|
+
throw new ReferenceError('Keys are required when reading.')
|
|
70
|
+
}
|
|
67
71
|
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
72
|
+
const data: StoreItem = {}
|
|
73
|
+
for (const key of keys) {
|
|
74
|
+
logger.debug(`Reading key: ${key}`)
|
|
75
|
+
const item = this.memory[key]
|
|
76
|
+
if (item) {
|
|
77
|
+
data[key] = JSON.parse(item)
|
|
78
|
+
}
|
|
74
79
|
}
|
|
75
|
-
}
|
|
76
80
|
|
|
77
|
-
|
|
81
|
+
return data
|
|
82
|
+
})
|
|
78
83
|
}
|
|
79
84
|
|
|
80
85
|
/**
|
|
@@ -91,24 +96,27 @@ export class MemoryStorage implements Storage {
|
|
|
91
96
|
* always be written regardless of the current state.
|
|
92
97
|
*/
|
|
93
98
|
async write (changes: StoreItem): Promise<void> {
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
99
|
+
return trace(StorageTraceDefinitions.write, async ({ record }) => {
|
|
100
|
+
if (!changes || changes.length === 0) {
|
|
101
|
+
throw new ReferenceError('Changes are required when writing.')
|
|
102
|
+
}
|
|
103
|
+
record({ keyCount: changes.length })
|
|
97
104
|
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
this.saveItem(key, newItem)
|
|
103
|
-
} else {
|
|
104
|
-
const oldItem = JSON.parse(oldItemStr)
|
|
105
|
-
if (newItem.eTag === oldItem.eTag) {
|
|
105
|
+
for (const [key, newItem] of Object.entries(changes)) {
|
|
106
|
+
logger.debug(`Writing key: ${key}`)
|
|
107
|
+
const oldItemStr = this.memory[key]
|
|
108
|
+
if (!oldItemStr || newItem.eTag === '*' || !newItem.eTag) {
|
|
106
109
|
this.saveItem(key, newItem)
|
|
107
110
|
} else {
|
|
108
|
-
|
|
111
|
+
const oldItem = JSON.parse(oldItemStr)
|
|
112
|
+
if (newItem.eTag === oldItem.eTag) {
|
|
113
|
+
this.saveItem(key, newItem)
|
|
114
|
+
} else {
|
|
115
|
+
throw new Error(`Storage: error writing "${key}" due to eTag conflict.`)
|
|
116
|
+
}
|
|
109
117
|
}
|
|
110
118
|
}
|
|
111
|
-
}
|
|
119
|
+
})
|
|
112
120
|
}
|
|
113
121
|
|
|
114
122
|
/**
|
|
@@ -118,10 +126,13 @@ export class MemoryStorage implements Storage {
|
|
|
118
126
|
* @returns A promise that resolves when the delete operation is complete
|
|
119
127
|
*/
|
|
120
128
|
async delete (keys: string[]): Promise<void> {
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
129
|
+
return trace(StorageTraceDefinitions.delete, async ({ record }) => {
|
|
130
|
+
record({ keyCount: keys?.length })
|
|
131
|
+
logger.debug(`Deleting keys: ${keys.join(', ')}`)
|
|
132
|
+
for (const key of keys) {
|
|
133
|
+
delete this.memory[key]
|
|
134
|
+
}
|
|
135
|
+
})
|
|
125
136
|
}
|
|
126
137
|
|
|
127
138
|
/**
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
import { debug } from '@microsoft/agents-
|
|
6
|
+
import { debug } from '@microsoft/agents-telemetry'
|
|
7
7
|
import { PagedResult, TranscriptInfo } from './transcriptLogger'
|
|
8
8
|
import { TranscriptStore } from './transcriptStore'
|
|
9
9
|
import * as fs from 'fs/promises'
|
|
@@ -3,7 +3,7 @@ import { ResourceResponse } from '../connector-client'
|
|
|
3
3
|
import { Middleware } from '../middlewareSet'
|
|
4
4
|
import { TranscriptLogger } from './transcriptLogger'
|
|
5
5
|
import { Activity, ActivityEventNames, ActivityTypes, ConversationReference, RoleTypes } from '@microsoft/agents-activity'
|
|
6
|
-
import { debug } from '@microsoft/agents-
|
|
6
|
+
import { debug } from '@microsoft/agents-telemetry'
|
|
7
7
|
|
|
8
8
|
const appLogger = debug('agents:rest-client')
|
|
9
9
|
|
package/src/turnContext.ts
CHANGED
|
@@ -8,6 +8,8 @@ import { AttachmentInfo } from './connector-client/attachmentInfo'
|
|
|
8
8
|
import { AttachmentData } from './connector-client/attachmentData'
|
|
9
9
|
import { StreamingResponse } from './app/streaming/streamingResponse'
|
|
10
10
|
import { JwtPayload } from 'jsonwebtoken'
|
|
11
|
+
import { trace } from '@microsoft/agents-telemetry'
|
|
12
|
+
import { TurnContextTraceDefinitions } from './observability'
|
|
11
13
|
|
|
12
14
|
/**
|
|
13
15
|
* Defines a handler for processing and sending activities.
|
|
@@ -166,50 +168,54 @@ export class TurnContext {
|
|
|
166
168
|
* the adapter.
|
|
167
169
|
*/
|
|
168
170
|
async sendActivities (activities: Activity[]): Promise<ResourceResponse[]> {
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
const
|
|
173
|
-
const
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
}
|
|
180
|
-
if (result.type !== ActivityTypes.Trace) {
|
|
181
|
-
sentNonTraceActivity = true
|
|
182
|
-
}
|
|
183
|
-
if (result.id) {
|
|
184
|
-
delete result.id
|
|
185
|
-
}
|
|
186
|
-
return result
|
|
187
|
-
})
|
|
188
|
-
return await this.emit(this._onSendActivities, output, async () => {
|
|
189
|
-
if (this.activity.deliveryMode === DeliveryModes.ExpectReplies) {
|
|
190
|
-
const responses: ResourceResponse[] = []
|
|
191
|
-
output.forEach((a) => {
|
|
192
|
-
this.bufferedReplyActivities.push(a)
|
|
193
|
-
if (a.type === ActivityTypes.InvokeResponse) {
|
|
194
|
-
this.turnState.set(INVOKE_RESPONSE_KEY, a)
|
|
195
|
-
}
|
|
196
|
-
responses.push({ id: '' })
|
|
197
|
-
})
|
|
198
|
-
if (sentNonTraceActivity) {
|
|
199
|
-
this.responded = true
|
|
171
|
+
return trace(TurnContextTraceDefinitions.sendActivities, async ({ record, actions }) => {
|
|
172
|
+
record({ activityCount: activities?.length })
|
|
173
|
+
let sentNonTraceActivity = false
|
|
174
|
+
const ref = this.activity.getConversationReference()
|
|
175
|
+
const output = activities.map((activity) => {
|
|
176
|
+
actions.recordActivity(activity)
|
|
177
|
+
const newActivity = Activity.fromObject(activity)
|
|
178
|
+
const result = newActivity.applyConversationReference(ref)
|
|
179
|
+
if (!result.type) {
|
|
180
|
+
result.type = ActivityTypes.Message
|
|
200
181
|
}
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
const responses = await this.adapter.sendActivities(this, output)
|
|
204
|
-
for (let index = 0; index < responses?.length; index++) {
|
|
205
|
-
const activity = output[index]
|
|
206
|
-
activity.id = responses[index].id
|
|
182
|
+
if (result.type === ActivityTypes.InvokeResponse) {
|
|
183
|
+
this.turnState.set(INVOKE_RESPONSE_KEY, result)
|
|
207
184
|
}
|
|
208
|
-
if (
|
|
209
|
-
|
|
185
|
+
if (result.type !== ActivityTypes.Trace) {
|
|
186
|
+
sentNonTraceActivity = true
|
|
210
187
|
}
|
|
211
|
-
|
|
212
|
-
|
|
188
|
+
if (result.id) {
|
|
189
|
+
delete result.id
|
|
190
|
+
}
|
|
191
|
+
return result
|
|
192
|
+
})
|
|
193
|
+
return await this.emit(this._onSendActivities, output, async () => {
|
|
194
|
+
if (this.activity.deliveryMode === DeliveryModes.ExpectReplies) {
|
|
195
|
+
const responses: ResourceResponse[] = []
|
|
196
|
+
output.forEach((a) => {
|
|
197
|
+
this.bufferedReplyActivities.push(a)
|
|
198
|
+
if (a.type === ActivityTypes.InvokeResponse) {
|
|
199
|
+
this.turnState.set(INVOKE_RESPONSE_KEY, a)
|
|
200
|
+
}
|
|
201
|
+
responses.push({ id: '' })
|
|
202
|
+
})
|
|
203
|
+
if (sentNonTraceActivity) {
|
|
204
|
+
this.responded = true
|
|
205
|
+
}
|
|
206
|
+
return responses
|
|
207
|
+
} else {
|
|
208
|
+
const responses = await this.adapter.sendActivities(this, output)
|
|
209
|
+
for (let index = 0; index < responses?.length; index++) {
|
|
210
|
+
const activity = output[index]
|
|
211
|
+
activity.id = responses[index].id
|
|
212
|
+
}
|
|
213
|
+
if (sentNonTraceActivity) {
|
|
214
|
+
this.responded = true
|
|
215
|
+
}
|
|
216
|
+
return responses
|
|
217
|
+
}
|
|
218
|
+
})
|
|
213
219
|
})
|
|
214
220
|
}
|
|
215
221
|
|