@microsoft/agents-hosting 1.5.0-beta.6.ga236d9a19c → 1.5.2

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.
Files changed (157) hide show
  1. package/dist/package.json +10 -9
  2. package/dist/src/activityHandler.js +2 -2
  3. package/dist/src/activityHandler.js.map +1 -1
  4. package/dist/src/agent-client/agentClient.js +49 -40
  5. package/dist/src/agent-client/agentClient.js.map +1 -1
  6. package/dist/src/agent-client/agentResponseHandler.js +2 -2
  7. package/dist/src/agent-client/agentResponseHandler.js.map +1 -1
  8. package/dist/src/app/agentApplication.d.ts +36 -10
  9. package/dist/src/app/agentApplication.js +169 -99
  10. package/dist/src/app/agentApplication.js.map +1 -1
  11. package/dist/src/app/agentApplicationBuilder.d.ts +15 -0
  12. package/dist/src/app/agentApplicationBuilder.js +22 -4
  13. package/dist/src/app/agentApplicationBuilder.js.map +1 -1
  14. package/dist/src/app/agentApplicationOptions.d.ts +38 -0
  15. package/dist/src/app/attachmentDownloader.js +2 -2
  16. package/dist/src/app/attachmentDownloader.js.map +1 -1
  17. package/dist/src/app/auth/authorization.js +12 -9
  18. package/dist/src/app/auth/authorization.js.map +1 -1
  19. package/dist/src/app/auth/authorizationManager.d.ts +18 -5
  20. package/dist/src/app/auth/authorizationManager.js +258 -45
  21. package/dist/src/app/auth/authorizationManager.js.map +1 -1
  22. package/dist/src/app/auth/handlerStorage.js +3 -1
  23. package/dist/src/app/auth/handlerStorage.js.map +1 -1
  24. package/dist/src/app/auth/handlers/agenticAuthorization.d.ts +19 -16
  25. package/dist/src/app/auth/handlers/agenticAuthorization.js +46 -52
  26. package/dist/src/app/auth/handlers/agenticAuthorization.js.map +1 -1
  27. package/dist/src/app/auth/handlers/azureBotAuthorization.d.ts +51 -75
  28. package/dist/src/app/auth/handlers/azureBotAuthorization.js +217 -192
  29. package/dist/src/app/auth/handlers/azureBotAuthorization.js.map +1 -1
  30. package/dist/src/app/auth/types.d.ts +100 -1
  31. package/dist/src/app/auth/utils.d.ts +10 -0
  32. package/dist/src/app/auth/utils.js +21 -0
  33. package/dist/src/app/auth/utils.js.map +1 -0
  34. package/dist/src/app/index.d.ts +1 -0
  35. package/dist/src/app/index.js +1 -0
  36. package/dist/src/app/index.js.map +1 -1
  37. package/dist/src/app/proactive/conversation.d.ts +43 -0
  38. package/dist/src/app/proactive/conversation.js +67 -0
  39. package/dist/src/app/proactive/conversation.js.map +1 -0
  40. package/dist/src/app/proactive/conversationBuilder.d.ts +54 -0
  41. package/dist/src/app/proactive/conversationBuilder.js +110 -0
  42. package/dist/src/app/proactive/conversationBuilder.js.map +1 -0
  43. package/dist/src/app/proactive/conversationReferenceBuilder.d.ts +68 -0
  44. package/dist/src/app/proactive/conversationReferenceBuilder.js +125 -0
  45. package/dist/src/app/proactive/conversationReferenceBuilder.js.map +1 -0
  46. package/dist/src/app/proactive/createConversationOptions.d.ts +30 -0
  47. package/dist/src/app/proactive/createConversationOptions.js +10 -0
  48. package/dist/src/app/proactive/createConversationOptions.js.map +1 -0
  49. package/dist/src/app/proactive/createConversationOptionsBuilder.d.ts +69 -0
  50. package/dist/src/app/proactive/createConversationOptionsBuilder.js +145 -0
  51. package/dist/src/app/proactive/createConversationOptionsBuilder.js.map +1 -0
  52. package/dist/src/app/proactive/index.d.ts +7 -0
  53. package/dist/src/app/proactive/index.js +26 -0
  54. package/dist/src/app/proactive/index.js.map +1 -0
  55. package/dist/src/app/proactive/proactive.d.ts +248 -0
  56. package/dist/src/app/proactive/proactive.js +310 -0
  57. package/dist/src/app/proactive/proactive.js.map +1 -0
  58. package/dist/src/app/proactive/proactiveOptions.d.ts +19 -0
  59. package/dist/src/app/proactive/proactiveOptions.js +5 -0
  60. package/dist/src/app/proactive/proactiveOptions.js.map +1 -0
  61. package/dist/src/app/streaming/streamingResponse.js +2 -2
  62. package/dist/src/app/streaming/streamingResponse.js.map +1 -1
  63. package/dist/src/app/teamsAttachmentDownloader.js +2 -2
  64. package/dist/src/app/teamsAttachmentDownloader.js.map +1 -1
  65. package/dist/src/app/turnState.js +2 -2
  66. package/dist/src/app/turnState.js.map +1 -1
  67. package/dist/src/auth/authConfiguration.d.ts +61 -0
  68. package/dist/src/auth/authConfiguration.js +52 -3
  69. package/dist/src/auth/authConfiguration.js.map +1 -1
  70. package/dist/src/auth/jwt-middleware.js +2 -2
  71. package/dist/src/auth/jwt-middleware.js.map +1 -1
  72. package/dist/src/auth/msalConnectionManager.js +20 -0
  73. package/dist/src/auth/msalConnectionManager.js.map +1 -1
  74. package/dist/src/auth/msalTokenCredential.js +3 -0
  75. package/dist/src/auth/msalTokenCredential.js.map +1 -1
  76. package/dist/src/auth/msalTokenProvider.js +136 -110
  77. package/dist/src/auth/msalTokenProvider.js.map +1 -1
  78. package/dist/src/baseAdapter.js +2 -2
  79. package/dist/src/baseAdapter.js.map +1 -1
  80. package/dist/src/cloudAdapter.js +205 -154
  81. package/dist/src/cloudAdapter.js.map +1 -1
  82. package/dist/src/connector-client/connectorClient.js +176 -127
  83. package/dist/src/connector-client/connectorClient.js.map +1 -1
  84. package/dist/src/errorHelper.js +116 -0
  85. package/dist/src/errorHelper.js.map +1 -1
  86. package/dist/src/middlewareSet.js +2 -2
  87. package/dist/src/middlewareSet.js.map +1 -1
  88. package/dist/src/oauth/userTokenClient.js +78 -48
  89. package/dist/src/oauth/userTokenClient.js.map +1 -1
  90. package/dist/src/observability/index.d.ts +2 -0
  91. package/dist/src/observability/index.js +21 -0
  92. package/dist/src/observability/index.js.map +1 -0
  93. package/dist/src/observability/metrics.d.ts +21 -0
  94. package/dist/src/observability/metrics.js +87 -0
  95. package/dist/src/observability/metrics.js.map +1 -0
  96. package/dist/src/observability/traces.d.ts +234 -0
  97. package/dist/src/observability/traces.js +962 -0
  98. package/dist/src/observability/traces.js.map +1 -0
  99. package/dist/src/state/agentState.js +2 -2
  100. package/dist/src/state/agentState.js.map +1 -1
  101. package/dist/src/storage/fileStorage.js +38 -28
  102. package/dist/src/storage/fileStorage.js.map +1 -1
  103. package/dist/src/storage/memoryStorage.js +41 -30
  104. package/dist/src/storage/memoryStorage.js.map +1 -1
  105. package/dist/src/transcript/fileTranscriptLogger.js +2 -2
  106. package/dist/src/transcript/fileTranscriptLogger.js.map +1 -1
  107. package/dist/src/transcript/transcriptLoggerMiddleware.js +2 -2
  108. package/dist/src/transcript/transcriptLoggerMiddleware.js.map +1 -1
  109. package/dist/src/turnContext.js +48 -42
  110. package/dist/src/turnContext.js.map +1 -1
  111. package/package.json +10 -9
  112. package/src/activityHandler.ts +1 -1
  113. package/src/agent-client/agentClient.ts +53 -42
  114. package/src/agent-client/agentResponseHandler.ts +1 -1
  115. package/src/app/agentApplication.ts +212 -86
  116. package/src/app/agentApplicationBuilder.ts +26 -4
  117. package/src/app/agentApplicationOptions.ts +43 -0
  118. package/src/app/attachmentDownloader.ts +1 -1
  119. package/src/app/auth/authorization.ts +11 -8
  120. package/src/app/auth/authorizationManager.ts +297 -45
  121. package/src/app/auth/handlerStorage.ts +3 -1
  122. package/src/app/auth/handlers/agenticAuthorization.ts +68 -72
  123. package/src/app/auth/handlers/azureBotAuthorization.ts +260 -264
  124. package/src/app/auth/types.ts +102 -1
  125. package/src/app/auth/utils.ts +22 -0
  126. package/src/app/index.ts +1 -0
  127. package/src/app/proactive/conversation.ts +87 -0
  128. package/src/app/proactive/conversationBuilder.ts +139 -0
  129. package/src/app/proactive/conversationReferenceBuilder.ts +161 -0
  130. package/src/app/proactive/createConversationOptions.ts +35 -0
  131. package/src/app/proactive/createConversationOptionsBuilder.ts +185 -0
  132. package/src/app/proactive/index.ts +10 -0
  133. package/src/app/proactive/proactive.ts +524 -0
  134. package/src/app/proactive/proactiveOptions.ts +24 -0
  135. package/src/app/streaming/streamingResponse.ts +1 -1
  136. package/src/app/teamsAttachmentDownloader.ts +1 -1
  137. package/src/app/turnState.ts +1 -1
  138. package/src/auth/authConfiguration.ts +58 -1
  139. package/src/auth/jwt-middleware.ts +1 -1
  140. package/src/auth/msalConnectionManager.ts +22 -0
  141. package/src/auth/msalTokenCredential.ts +4 -0
  142. package/src/auth/msalTokenProvider.ts +138 -107
  143. package/src/baseAdapter.ts +1 -1
  144. package/src/cloudAdapter.ts +242 -184
  145. package/src/connector-client/connectorClient.ts +169 -126
  146. package/src/errorHelper.ts +133 -0
  147. package/src/middlewareSet.ts +1 -1
  148. package/src/oauth/userTokenClient.ts +70 -46
  149. package/src/observability/index.ts +5 -0
  150. package/src/observability/metrics.ts +103 -0
  151. package/src/observability/traces.ts +988 -0
  152. package/src/state/agentState.ts +1 -1
  153. package/src/storage/fileStorage.ts +36 -26
  154. package/src/storage/memoryStorage.ts +40 -29
  155. package/src/transcript/fileTranscriptLogger.ts +1 -1
  156. package/src/transcript/transcriptLoggerMiddleware.ts +1 -1
  157. package/src/turnContext.ts +47 -41
@@ -0,0 +1,185 @@
1
+ // Copyright (c) Microsoft Corporation. All rights reserved.
2
+ // Licensed under the MIT License.
3
+
4
+ import type { Activity, ChannelAccount, ConversationParameters } from '@microsoft/agents-activity'
5
+ import { Channels, ExceptionHelper, RoleTypes } from '@microsoft/agents-activity'
6
+ import { Errors } from '../../errorHelper'
7
+ import { AzureBotScope, type CreateConversationOptions } from './createConversationOptions'
8
+ import type { ConversationClaims } from './conversation'
9
+ import { ConversationReferenceBuilder } from './conversationReferenceBuilder'
10
+
11
+ /**
12
+ * Fluent builder for `CreateConversationOptions`.
13
+ *
14
+ * @example
15
+ * ```typescript
16
+ * const opts = CreateConversationOptionsBuilder
17
+ * .create('my-client-id', 'msteams')
18
+ * .withUser('user-aad-id')
19
+ * .withTenantId('tenant-id')
20
+ * .build()
21
+ * ```
22
+ */
23
+ export class CreateConversationOptionsBuilder {
24
+ private readonly _claims: ConversationClaims
25
+ private readonly _channelId: string
26
+ private readonly _serviceUrl: string
27
+ private _scope: string = AzureBotScope
28
+ private _storeConversation: boolean = false
29
+ private _parameters: Partial<ConversationParameters> = {
30
+ channelData: {},
31
+ }
32
+
33
+ private _activity: Partial<Activity> | undefined
34
+
35
+ private constructor (claims: ConversationClaims, channelId: string, serviceUrl?: string) {
36
+ this._claims = claims
37
+ this._channelId = channelId
38
+ this._serviceUrl =
39
+ serviceUrl ?? ConversationReferenceBuilder.serviceUrlForChannel(channelId)
40
+ }
41
+
42
+ /**
43
+ * Creates a new builder from an agent client ID string.
44
+ * @param agentClientId The agent's client (app) ID.
45
+ * @param channelId The target channel (e.g. `'msteams'`).
46
+ * @param serviceUrl Optional service URL override.
47
+ */
48
+ static create (agentClientId: string, channelId: string, serviceUrl?: string, parameters?: Partial<ConversationParameters>): CreateConversationOptionsBuilder
49
+ /**
50
+ * Creates a new builder from an existing claims object (e.g. from a stored `Conversation`).
51
+ * @param claims JWT claims — `aud` must be the agent's client ID.
52
+ * @param channelId The target channel (e.g. `'msteams'`).
53
+ * @param serviceUrl Optional service URL override.
54
+ */
55
+ static create (claims: ConversationClaims, channelId: string, serviceUrl?: string, parameters?: Partial<ConversationParameters>): CreateConversationOptionsBuilder
56
+ static create (
57
+ agentClientIdOrClaims: string | ConversationClaims,
58
+ channelId: string,
59
+ serviceUrl?: string,
60
+ parameters?: Partial<ConversationParameters>
61
+ ): CreateConversationOptionsBuilder {
62
+ const claims: ConversationClaims = typeof agentClientIdOrClaims === 'string'
63
+ ? { aud: agentClientIdOrClaims }
64
+ : agentClientIdOrClaims
65
+
66
+ const builder = new CreateConversationOptionsBuilder(claims, channelId, serviceUrl)
67
+ if (parameters) {
68
+ builder._parameters = { ...builder._parameters, ...parameters }
69
+ if (parameters.activity) {
70
+ builder._activity = parameters.activity
71
+ }
72
+ }
73
+
74
+ // Set parameters.agent if not already provided — matches C# behavior
75
+ if (!builder._parameters.agent) {
76
+ builder._parameters.agent = { id: claims.aud, role: RoleTypes.Agent }
77
+ }
78
+
79
+ return builder
80
+ }
81
+
82
+ /** Adds a member (the target user) to `parameters.members`. */
83
+ withUser (userId: string, userName?: string): this
84
+ withUser (account: ChannelAccount): this
85
+ withUser (userIdOrAccount: string | ChannelAccount, userName?: string): this {
86
+ const account: ChannelAccount =
87
+ typeof userIdOrAccount === 'string'
88
+ ? { id: userIdOrAccount, name: userName }
89
+ : userIdOrAccount
90
+ const members = this._parameters.members ?? []
91
+ members.push(account)
92
+ this._parameters = { ...this._parameters, members }
93
+ return this
94
+ }
95
+
96
+ /** Sets `parameters.activity`. Defaults `activity.type` to `'message'` if not provided. */
97
+ withActivity (activity: Partial<Activity>): this {
98
+ this._activity = activity
99
+ return this
100
+ }
101
+
102
+ /** Merges additional channel-specific data into `parameters.channelData`. */
103
+ withChannelData (data: object): this {
104
+ this._parameters = {
105
+ ...this._parameters,
106
+ channelData: { ...(this._parameters.channelData as object ?? {}), ...data },
107
+ }
108
+ return this
109
+ }
110
+
111
+ /**
112
+ * Sets `parameters.tenantId`.
113
+ * On `msteams` channels, also sets `channelData.tenant.id`.
114
+ */
115
+ withTenantId (tenantId: string): this {
116
+ this._parameters = { ...this._parameters, tenantId }
117
+ if (this._channelId === Channels.Msteams) {
118
+ this.withChannelData({ tenant: { id: tenantId } })
119
+ }
120
+ return this
121
+ }
122
+
123
+ /**
124
+ * Sets `parameters.isGroup = true` and `channelData.channel.id`.
125
+ * Only has effect on `msteams` channels.
126
+ */
127
+ withTeamsChannelId (teamsChannelId: string): this {
128
+ if (this._channelId !== Channels.Msteams) return this
129
+ this._parameters = { ...this._parameters, isGroup: true }
130
+ this.withChannelData({ channel: { id: teamsChannelId } })
131
+ return this
132
+ }
133
+
134
+ /** Sets `parameters.topicName`. */
135
+ withTopicName (name: string): this {
136
+ this._parameters = { ...this._parameters, topicName: name }
137
+ return this
138
+ }
139
+
140
+ /** Sets `parameters.isGroup`. */
141
+ isGroup (value: boolean): this {
142
+ this._parameters = { ...this._parameters, isGroup: value }
143
+ return this
144
+ }
145
+
146
+ /** Overrides the default `AzureBotScope` OAuth scope. */
147
+ withScope (scope: string): this {
148
+ this._scope = scope
149
+ return this
150
+ }
151
+
152
+ /** Controls whether the resulting conversation is stored after creation. */
153
+ storeConversation (value: boolean): this {
154
+ this._storeConversation = value
155
+ return this
156
+ }
157
+
158
+ /**
159
+ * Builds and returns `CreateConversationOptions`.
160
+ * @throws if no members were added via `withUser()`.
161
+ */
162
+ build (): CreateConversationOptions {
163
+ if (!this._parameters.members?.length) {
164
+ throw ExceptionHelper.generateException(Error, Errors.CreateConversationBuilderMembersRequired)
165
+ }
166
+
167
+ const isTeamsChannel = this._channelId === Channels.Msteams &&
168
+ Boolean((this._parameters.channelData as Record<string, any>)?.channel?.id)
169
+ if (isTeamsChannel && !this._activity) {
170
+ throw ExceptionHelper.generateException(Error, Errors.CreateConversationBuilderChannelActivityRequired)
171
+ }
172
+
173
+ return {
174
+ identity: this._claims,
175
+ channelId: this._channelId,
176
+ serviceUrl: this._serviceUrl,
177
+ scope: this._scope,
178
+ storeConversation: this._storeConversation,
179
+ parameters: {
180
+ ...this._parameters,
181
+ activity: this._activity ? { type: 'message', ...this._activity } as Activity : undefined,
182
+ },
183
+ }
184
+ }
185
+ }
@@ -0,0 +1,10 @@
1
+ // Copyright (c) Microsoft Corporation. All rights reserved.
2
+ // Licensed under the MIT License.
3
+
4
+ export * from './conversation'
5
+ export * from './conversationBuilder'
6
+ export * from './conversationReferenceBuilder'
7
+ export * from './createConversationOptions'
8
+ export * from './createConversationOptionsBuilder'
9
+ export * from './proactiveOptions'
10
+ export * from './proactive'