@microsoft/agents-hosting 0.1.49

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 (394) hide show
  1. package/README.md +57 -0
  2. package/dist/src/activityHandler.d.ts +108 -0
  3. package/dist/src/activityHandler.js +395 -0
  4. package/dist/src/activityHandler.js.map +1 -0
  5. package/dist/src/agent-client/agentClient.d.ts +13 -0
  6. package/dist/src/agent-client/agentClient.js +75 -0
  7. package/dist/src/agent-client/agentClient.js.map +1 -0
  8. package/dist/src/agent-client/expressApi.d.ts +4 -0
  9. package/dist/src/agent-client/expressApi.js +50 -0
  10. package/dist/src/agent-client/expressApi.js.map +1 -0
  11. package/dist/src/agent-client/index.d.ts +2 -0
  12. package/dist/src/agent-client/index.js +19 -0
  13. package/dist/src/agent-client/index.js.map +1 -0
  14. package/dist/src/app/agentApplication.d.ts +47 -0
  15. package/dist/src/app/agentApplication.js +317 -0
  16. package/dist/src/app/agentApplication.js.map +1 -0
  17. package/dist/src/app/appRoute.d.ts +11 -0
  18. package/dist/src/app/appRoute.js +7 -0
  19. package/dist/src/app/appRoute.js.map +1 -0
  20. package/dist/src/app/applicationBuilder.d.ts +18 -0
  21. package/dist/src/app/applicationBuilder.js +37 -0
  22. package/dist/src/app/applicationBuilder.js.map +1 -0
  23. package/dist/src/app/applicationOptions.d.ts +19 -0
  24. package/dist/src/app/applicationOptions.js +7 -0
  25. package/dist/src/app/applicationOptions.js.map +1 -0
  26. package/dist/src/app/attachmentDownloader.d.ts +13 -0
  27. package/dist/src/app/attachmentDownloader.js +72 -0
  28. package/dist/src/app/attachmentDownloader.js.map +1 -0
  29. package/dist/src/app/conversationUpdateEvents.d.ts +5 -0
  30. package/dist/src/app/conversationUpdateEvents.js +7 -0
  31. package/dist/src/app/conversationUpdateEvents.js.map +1 -0
  32. package/dist/src/app/index.d.ts +10 -0
  33. package/dist/src/app/index.js +27 -0
  34. package/dist/src/app/index.js.map +1 -0
  35. package/dist/src/app/inputFileDownloader.d.ts +14 -0
  36. package/dist/src/app/inputFileDownloader.js +7 -0
  37. package/dist/src/app/inputFileDownloader.js.map +1 -0
  38. package/dist/src/app/memory.d.ts +10 -0
  39. package/dist/src/app/memory.js +7 -0
  40. package/dist/src/app/memory.js.map +1 -0
  41. package/dist/src/app/oauth/authenticationOptions.d.ts +7 -0
  42. package/dist/src/app/oauth/authenticationOptions.js +7 -0
  43. package/dist/src/app/oauth/authenticationOptions.js.map +1 -0
  44. package/dist/src/app/oauth/webChatOAuthFlowAppStyle.d.ts +11 -0
  45. package/dist/src/app/oauth/webChatOAuthFlowAppStyle.js +85 -0
  46. package/dist/src/app/oauth/webChatOAuthFlowAppStyle.js.map +1 -0
  47. package/dist/src/app/routeHandler.d.ts +7 -0
  48. package/dist/src/app/routeHandler.js +7 -0
  49. package/dist/src/app/routeHandler.js.map +1 -0
  50. package/dist/src/app/routeSelector.d.ts +7 -0
  51. package/dist/src/app/routeSelector.js +7 -0
  52. package/dist/src/app/routeSelector.js.map +1 -0
  53. package/dist/src/app/turnEvents.d.ts +5 -0
  54. package/dist/src/app/turnEvents.js +7 -0
  55. package/dist/src/app/turnEvents.js.map +1 -0
  56. package/dist/src/app/turnState.d.ts +85 -0
  57. package/dist/src/app/turnState.js +274 -0
  58. package/dist/src/app/turnState.js.map +1 -0
  59. package/dist/src/app/turnStateEntry.d.ts +17 -0
  60. package/dist/src/app/turnStateEntry.js +39 -0
  61. package/dist/src/app/turnStateEntry.js.map +1 -0
  62. package/dist/src/auth/authConfiguration.d.ts +29 -0
  63. package/dist/src/auth/authConfiguration.js +58 -0
  64. package/dist/src/auth/authConfiguration.js.map +1 -0
  65. package/dist/src/auth/authProvider.d.ts +17 -0
  66. package/dist/src/auth/authProvider.js +7 -0
  67. package/dist/src/auth/authProvider.js.map +1 -0
  68. package/dist/src/auth/index.d.ts +4 -0
  69. package/dist/src/auth/index.js +21 -0
  70. package/dist/src/auth/index.js.map +1 -0
  71. package/dist/src/auth/jwt-middleware.d.ts +13 -0
  72. package/dist/src/auth/jwt-middleware.js +97 -0
  73. package/dist/src/auth/jwt-middleware.js.map +1 -0
  74. package/dist/src/auth/msalTokenProvider.d.ts +53 -0
  75. package/dist/src/auth/msalTokenProvider.js +198 -0
  76. package/dist/src/auth/msalTokenProvider.js.map +1 -0
  77. package/dist/src/auth/request.d.ts +15 -0
  78. package/dist/src/auth/request.js +7 -0
  79. package/dist/src/auth/request.js.map +1 -0
  80. package/dist/src/baseAdapter.d.ts +88 -0
  81. package/dist/src/baseAdapter.js +94 -0
  82. package/dist/src/baseAdapter.js.map +1 -0
  83. package/dist/src/cards/animationCard.d.ts +36 -0
  84. package/dist/src/cards/animationCard.js +7 -0
  85. package/dist/src/cards/animationCard.js.map +1 -0
  86. package/dist/src/cards/audioCard.d.ts +36 -0
  87. package/dist/src/cards/audioCard.js +7 -0
  88. package/dist/src/cards/audioCard.js.map +1 -0
  89. package/dist/src/cards/cardFactory.d.ts +123 -0
  90. package/dist/src/cards/cardFactory.js +225 -0
  91. package/dist/src/cards/cardFactory.js.map +1 -0
  92. package/dist/src/cards/cardImage.d.ts +16 -0
  93. package/dist/src/cards/cardImage.js +7 -0
  94. package/dist/src/cards/cardImage.js.map +1 -0
  95. package/dist/src/cards/fact.d.ts +13 -0
  96. package/dist/src/cards/fact.js +7 -0
  97. package/dist/src/cards/fact.js.map +1 -0
  98. package/dist/src/cards/heroCard.d.ts +23 -0
  99. package/dist/src/cards/heroCard.js +7 -0
  100. package/dist/src/cards/heroCard.js.map +1 -0
  101. package/dist/src/cards/index.d.ts +17 -0
  102. package/dist/src/cards/index.js +34 -0
  103. package/dist/src/cards/index.js.map +1 -0
  104. package/dist/src/cards/mediaUrl.d.ts +17 -0
  105. package/dist/src/cards/mediaUrl.js +7 -0
  106. package/dist/src/cards/mediaUrl.js.map +1 -0
  107. package/dist/src/cards/o365ConnectorCard.d.ts +35 -0
  108. package/dist/src/cards/o365ConnectorCard.js +7 -0
  109. package/dist/src/cards/o365ConnectorCard.js.map +1 -0
  110. package/dist/src/cards/o365ConnectorCardActionBase.d.ts +22 -0
  111. package/dist/src/cards/o365ConnectorCardActionBase.js +7 -0
  112. package/dist/src/cards/o365ConnectorCardActionBase.js.map +1 -0
  113. package/dist/src/cards/o365ConnectorCardFact.d.ts +17 -0
  114. package/dist/src/cards/o365ConnectorCardFact.js +7 -0
  115. package/dist/src/cards/o365ConnectorCardFact.js.map +1 -0
  116. package/dist/src/cards/o365ConnectorCardImage.d.ts +17 -0
  117. package/dist/src/cards/o365ConnectorCardImage.js +7 -0
  118. package/dist/src/cards/o365ConnectorCardImage.js.map +1 -0
  119. package/dist/src/cards/o365ConnectorCardSection.d.ts +57 -0
  120. package/dist/src/cards/o365ConnectorCardSection.js +7 -0
  121. package/dist/src/cards/o365ConnectorCardSection.js.map +1 -0
  122. package/dist/src/cards/receiptCard.d.ts +44 -0
  123. package/dist/src/cards/receiptCard.js +7 -0
  124. package/dist/src/cards/receiptCard.js.map +1 -0
  125. package/dist/src/cards/receiptItem.d.ts +39 -0
  126. package/dist/src/cards/receiptItem.js +7 -0
  127. package/dist/src/cards/receiptItem.js.map +1 -0
  128. package/dist/src/cards/signinCard.d.ts +14 -0
  129. package/dist/src/cards/signinCard.js +5 -0
  130. package/dist/src/cards/signinCard.js.map +1 -0
  131. package/dist/src/cards/taskModuleAction.d.ts +43 -0
  132. package/dist/src/cards/taskModuleAction.js +30 -0
  133. package/dist/src/cards/taskModuleAction.js.map +1 -0
  134. package/dist/src/cards/thumbnailCard.d.ts +35 -0
  135. package/dist/src/cards/thumbnailCard.js +7 -0
  136. package/dist/src/cards/thumbnailCard.js.map +1 -0
  137. package/dist/src/cards/thumbnailUrl.d.ts +17 -0
  138. package/dist/src/cards/thumbnailUrl.js +7 -0
  139. package/dist/src/cards/thumbnailUrl.js.map +1 -0
  140. package/dist/src/cards/videoCard.d.ts +60 -0
  141. package/dist/src/cards/videoCard.js +7 -0
  142. package/dist/src/cards/videoCard.js.map +1 -0
  143. package/dist/src/claimsIdentity.d.ts +35 -0
  144. package/dist/src/claimsIdentity.js +43 -0
  145. package/dist/src/claimsIdentity.js.map +1 -0
  146. package/dist/src/cloudAdapter.d.ts +128 -0
  147. package/dist/src/cloudAdapter.js +376 -0
  148. package/dist/src/cloudAdapter.js.map +1 -0
  149. package/dist/src/connector-client/attachmentData.d.ts +25 -0
  150. package/dist/src/connector-client/attachmentData.js +7 -0
  151. package/dist/src/connector-client/attachmentData.js.map +1 -0
  152. package/dist/src/connector-client/attachmentInfo.d.ts +22 -0
  153. package/dist/src/connector-client/attachmentInfo.js +7 -0
  154. package/dist/src/connector-client/attachmentInfo.js.map +1 -0
  155. package/dist/src/connector-client/attachmentView.d.ts +17 -0
  156. package/dist/src/connector-client/attachmentView.js +7 -0
  157. package/dist/src/connector-client/attachmentView.js.map +1 -0
  158. package/dist/src/connector-client/connectorClient.d.ts +93 -0
  159. package/dist/src/connector-client/connectorClient.js +249 -0
  160. package/dist/src/connector-client/connectorClient.js.map +1 -0
  161. package/dist/src/connector-client/conversationMembers.d.ts +18 -0
  162. package/dist/src/connector-client/conversationMembers.js +7 -0
  163. package/dist/src/connector-client/conversationMembers.js.map +1 -0
  164. package/dist/src/connector-client/conversationParameters.d.ts +38 -0
  165. package/dist/src/connector-client/conversationParameters.js +7 -0
  166. package/dist/src/connector-client/conversationParameters.js.map +1 -0
  167. package/dist/src/connector-client/conversationResourceResponse.d.ts +21 -0
  168. package/dist/src/connector-client/conversationResourceResponse.js +7 -0
  169. package/dist/src/connector-client/conversationResourceResponse.js.map +1 -0
  170. package/dist/src/connector-client/conversationsResult.d.ts +18 -0
  171. package/dist/src/connector-client/conversationsResult.js +7 -0
  172. package/dist/src/connector-client/conversationsResult.js.map +1 -0
  173. package/dist/src/connector-client/index.d.ts +9 -0
  174. package/dist/src/connector-client/index.js +26 -0
  175. package/dist/src/connector-client/index.js.map +1 -0
  176. package/dist/src/connector-client/resourceResponse.d.ts +13 -0
  177. package/dist/src/connector-client/resourceResponse.js +7 -0
  178. package/dist/src/connector-client/resourceResponse.js.map +1 -0
  179. package/dist/src/index.d.ts +26 -0
  180. package/dist/src/index.js +45 -0
  181. package/dist/src/index.js.map +1 -0
  182. package/dist/src/invoke/adaptiveCardAuthentication.d.ts +10 -0
  183. package/dist/src/invoke/adaptiveCardAuthentication.js +7 -0
  184. package/dist/src/invoke/adaptiveCardAuthentication.js.map +1 -0
  185. package/dist/src/invoke/adaptiveCardInvokeResponse.d.ts +21 -0
  186. package/dist/src/invoke/adaptiveCardInvokeResponse.js +7 -0
  187. package/dist/src/invoke/adaptiveCardInvokeResponse.js.map +1 -0
  188. package/dist/src/invoke/adaptiveCardInvokeValue.d.ts +23 -0
  189. package/dist/src/invoke/adaptiveCardInvokeValue.js +7 -0
  190. package/dist/src/invoke/adaptiveCardInvokeValue.js.map +1 -0
  191. package/dist/src/invoke/index.d.ts +9 -0
  192. package/dist/src/invoke/index.js +26 -0
  193. package/dist/src/invoke/index.js.map +1 -0
  194. package/dist/src/invoke/invokeException.d.ts +24 -0
  195. package/dist/src/invoke/invokeException.js +35 -0
  196. package/dist/src/invoke/invokeException.js.map +1 -0
  197. package/dist/src/invoke/invokeResponse.d.ts +17 -0
  198. package/dist/src/invoke/invokeResponse.js +7 -0
  199. package/dist/src/invoke/invokeResponse.js.map +1 -0
  200. package/dist/src/invoke/searchInvokeOptions.d.ts +17 -0
  201. package/dist/src/invoke/searchInvokeOptions.js +7 -0
  202. package/dist/src/invoke/searchInvokeOptions.js.map +1 -0
  203. package/dist/src/invoke/searchInvokeResponse.d.ts +10 -0
  204. package/dist/src/invoke/searchInvokeResponse.js +7 -0
  205. package/dist/src/invoke/searchInvokeResponse.js.map +1 -0
  206. package/dist/src/invoke/searchInvokeValue.d.ts +26 -0
  207. package/dist/src/invoke/searchInvokeValue.js +7 -0
  208. package/dist/src/invoke/searchInvokeValue.js.map +1 -0
  209. package/dist/src/invoke/tokenExchangeInvokeRequest.d.ts +21 -0
  210. package/dist/src/invoke/tokenExchangeInvokeRequest.js +7 -0
  211. package/dist/src/invoke/tokenExchangeInvokeRequest.js.map +1 -0
  212. package/dist/src/logger.d.ts +12 -0
  213. package/dist/src/logger.js +42 -0
  214. package/dist/src/logger.js.map +1 -0
  215. package/dist/src/messageFactory.d.ts +62 -0
  216. package/dist/src/messageFactory.js +143 -0
  217. package/dist/src/messageFactory.js.map +1 -0
  218. package/dist/src/middlewareSet.d.ts +43 -0
  219. package/dist/src/middlewareSet.js +57 -0
  220. package/dist/src/middlewareSet.js.map +1 -0
  221. package/dist/src/oauth/index.d.ts +7 -0
  222. package/dist/src/oauth/index.js +24 -0
  223. package/dist/src/oauth/index.js.map +1 -0
  224. package/dist/src/oauth/oauthCard.d.ts +28 -0
  225. package/dist/src/oauth/oauthCard.js +5 -0
  226. package/dist/src/oauth/oauthCard.js.map +1 -0
  227. package/dist/src/oauth/signingResource.d.ts +19 -0
  228. package/dist/src/oauth/signingResource.js +5 -0
  229. package/dist/src/oauth/signingResource.js.map +1 -0
  230. package/dist/src/oauth/tokenExchangeRequest.d.ts +17 -0
  231. package/dist/src/oauth/tokenExchangeRequest.js +5 -0
  232. package/dist/src/oauth/tokenExchangeRequest.js.map +1 -0
  233. package/dist/src/oauth/tokenExchangeResource.d.ts +17 -0
  234. package/dist/src/oauth/tokenExchangeResource.js +5 -0
  235. package/dist/src/oauth/tokenExchangeResource.js.map +1 -0
  236. package/dist/src/oauth/tokenPostResource.d.ts +9 -0
  237. package/dist/src/oauth/tokenPostResource.js +5 -0
  238. package/dist/src/oauth/tokenPostResource.js.map +1 -0
  239. package/dist/src/oauth/userTokenClient.d.ts +49 -0
  240. package/dist/src/oauth/userTokenClient.js +117 -0
  241. package/dist/src/oauth/userTokenClient.js.map +1 -0
  242. package/dist/src/oauth/webChatOAuthFlow.d.ts +41 -0
  243. package/dist/src/oauth/webChatOAuthFlow.js +117 -0
  244. package/dist/src/oauth/webChatOAuthFlow.js.map +1 -0
  245. package/dist/src/state/agentState.d.ts +71 -0
  246. package/dist/src/state/agentState.js +122 -0
  247. package/dist/src/state/agentState.js.map +1 -0
  248. package/dist/src/state/agentStatePropertyAccesor.d.ts +39 -0
  249. package/dist/src/state/agentStatePropertyAccesor.js +60 -0
  250. package/dist/src/state/agentStatePropertyAccesor.js.map +1 -0
  251. package/dist/src/state/conversationState.d.ts +18 -0
  252. package/dist/src/state/conversationState.js +38 -0
  253. package/dist/src/state/conversationState.js.map +1 -0
  254. package/dist/src/state/index.d.ts +4 -0
  255. package/dist/src/state/index.js +21 -0
  256. package/dist/src/state/index.js.map +1 -0
  257. package/dist/src/state/userState.d.ts +18 -0
  258. package/dist/src/state/userState.js +38 -0
  259. package/dist/src/state/userState.js.map +1 -0
  260. package/dist/src/statusCodes.d.ts +19 -0
  261. package/dist/src/statusCodes.js +24 -0
  262. package/dist/src/statusCodes.js.map +1 -0
  263. package/dist/src/storage/index.d.ts +2 -0
  264. package/dist/src/storage/index.js +19 -0
  265. package/dist/src/storage/index.js.map +1 -0
  266. package/dist/src/storage/memoryStorage.d.ts +50 -0
  267. package/dist/src/storage/memoryStorage.js +100 -0
  268. package/dist/src/storage/memoryStorage.js.map +1 -0
  269. package/dist/src/storage/storage.d.ts +47 -0
  270. package/dist/src/storage/storage.js +7 -0
  271. package/dist/src/storage/storage.js.map +1 -0
  272. package/dist/src/tokenResponseEventName.d.ts +5 -0
  273. package/dist/src/tokenResponseEventName.js +9 -0
  274. package/dist/src/tokenResponseEventName.js.map +1 -0
  275. package/dist/src/transcript/consoleTranscriptLogger.d.ts +13 -0
  276. package/dist/src/transcript/consoleTranscriptLogger.js +21 -0
  277. package/dist/src/transcript/consoleTranscriptLogger.js.map +1 -0
  278. package/dist/src/transcript/index.d.ts +4 -0
  279. package/dist/src/transcript/index.js +21 -0
  280. package/dist/src/transcript/index.js.map +1 -0
  281. package/dist/src/transcript/transcriptLogger.d.ts +42 -0
  282. package/dist/src/transcript/transcriptLogger.js +3 -0
  283. package/dist/src/transcript/transcriptLogger.js.map +1 -0
  284. package/dist/src/transcript/transcriptLoggerMiddleware.d.ts +38 -0
  285. package/dist/src/transcript/transcriptLoggerMiddleware.js +126 -0
  286. package/dist/src/transcript/transcriptLoggerMiddleware.js.map +1 -0
  287. package/dist/src/transcript/transcriptStore.d.ts +30 -0
  288. package/dist/src/transcript/transcriptStore.js +3 -0
  289. package/dist/src/transcript/transcriptStore.js.map +1 -0
  290. package/dist/src/turnContext.d.ts +160 -0
  291. package/dist/src/turnContext.js +286 -0
  292. package/dist/src/turnContext.js.map +1 -0
  293. package/dist/src/turnContextStateCollection.d.ts +29 -0
  294. package/dist/src/turnContextStateCollection.js +56 -0
  295. package/dist/src/turnContextStateCollection.js.map +1 -0
  296. package/package.json +48 -0
  297. package/src/activityHandler.ts +461 -0
  298. package/src/agent-client/agentClient.ts +84 -0
  299. package/src/agent-client/expressApi.ts +59 -0
  300. package/src/agent-client/index.ts +2 -0
  301. package/src/app/agentApplication.ts +401 -0
  302. package/src/app/appRoute.ts +13 -0
  303. package/src/app/applicationBuilder.ts +42 -0
  304. package/src/app/applicationOptions.ts +21 -0
  305. package/src/app/attachmentDownloader.ts +83 -0
  306. package/src/app/conversationUpdateEvents.ts +8 -0
  307. package/src/app/index.ts +10 -0
  308. package/src/app/inputFileDownloader.ts +17 -0
  309. package/src/app/memory.ts +14 -0
  310. package/src/app/oauth/authenticationOptions.ts +8 -0
  311. package/src/app/oauth/webChatOAuthFlowAppStyle.ts +90 -0
  312. package/src/app/routeHandler.ts +9 -0
  313. package/src/app/routeSelector.ts +10 -0
  314. package/src/app/turnEvents.ts +6 -0
  315. package/src/app/turnState.ts +338 -0
  316. package/src/app/turnStateEntry.ts +46 -0
  317. package/src/auth/authConfiguration.ts +68 -0
  318. package/src/auth/authProvider.ts +19 -0
  319. package/src/auth/index.ts +4 -0
  320. package/src/auth/jwt-middleware.ts +99 -0
  321. package/src/auth/msalTokenProvider.ts +202 -0
  322. package/src/auth/request.ts +20 -0
  323. package/src/baseAdapter.ts +174 -0
  324. package/src/cards/animationCard.ts +38 -0
  325. package/src/cards/audioCard.ts +38 -0
  326. package/src/cards/cardFactory.ts +276 -0
  327. package/src/cards/cardImage.ts +18 -0
  328. package/src/cards/fact.ts +14 -0
  329. package/src/cards/heroCard.ts +25 -0
  330. package/src/cards/index.ts +17 -0
  331. package/src/cards/mediaUrl.ts +18 -0
  332. package/src/cards/o365ConnectorCard.ts +37 -0
  333. package/src/cards/o365ConnectorCardActionBase.ts +24 -0
  334. package/src/cards/o365ConnectorCardFact.ts +18 -0
  335. package/src/cards/o365ConnectorCardImage.ts +18 -0
  336. package/src/cards/o365ConnectorCardSection.ts +60 -0
  337. package/src/cards/receiptCard.ts +46 -0
  338. package/src/cards/receiptItem.ts +41 -0
  339. package/src/cards/signinCard.ts +18 -0
  340. package/src/cards/taskModuleAction.ts +61 -0
  341. package/src/cards/thumbnailCard.ts +37 -0
  342. package/src/cards/thumbnailUrl.ts +18 -0
  343. package/src/cards/videoCard.ts +62 -0
  344. package/src/claimsIdentity.ts +47 -0
  345. package/src/cloudAdapter.ts +431 -0
  346. package/src/connector-client/attachmentData.ts +26 -0
  347. package/src/connector-client/attachmentInfo.ts +24 -0
  348. package/src/connector-client/attachmentView.ts +18 -0
  349. package/src/connector-client/connectorClient.ts +295 -0
  350. package/src/connector-client/conversationMembers.ts +20 -0
  351. package/src/connector-client/conversationParameters.ts +40 -0
  352. package/src/connector-client/conversationResourceResponse.ts +22 -0
  353. package/src/connector-client/conversationsResult.ts +20 -0
  354. package/src/connector-client/index.ts +9 -0
  355. package/src/connector-client/resourceResponse.ts +14 -0
  356. package/src/index.ts +31 -0
  357. package/src/invoke/adaptiveCardAuthentication.ts +13 -0
  358. package/src/invoke/adaptiveCardInvokeResponse.ts +22 -0
  359. package/src/invoke/adaptiveCardInvokeValue.ts +25 -0
  360. package/src/invoke/index.ts +9 -0
  361. package/src/invoke/invokeException.ts +33 -0
  362. package/src/invoke/invokeResponse.ts +18 -0
  363. package/src/invoke/searchInvokeOptions.ts +18 -0
  364. package/src/invoke/searchInvokeResponse.ts +11 -0
  365. package/src/invoke/searchInvokeValue.ts +28 -0
  366. package/src/invoke/tokenExchangeInvokeRequest.ts +22 -0
  367. package/src/logger.ts +43 -0
  368. package/src/messageFactory.ts +177 -0
  369. package/src/middlewareSet.ts +76 -0
  370. package/src/oauth/index.ts +7 -0
  371. package/src/oauth/oauthCard.ts +32 -0
  372. package/src/oauth/signingResource.ts +23 -0
  373. package/src/oauth/tokenExchangeRequest.ts +20 -0
  374. package/src/oauth/tokenExchangeResource.ts +20 -0
  375. package/src/oauth/tokenPostResource.ts +12 -0
  376. package/src/oauth/userTokenClient.ts +116 -0
  377. package/src/oauth/webChatOAuthFlow.ts +123 -0
  378. package/src/state/agentState.ts +142 -0
  379. package/src/state/agentStatePropertyAccesor.ts +61 -0
  380. package/src/state/conversationState.ts +42 -0
  381. package/src/state/index.ts +4 -0
  382. package/src/state/userState.ts +43 -0
  383. package/src/statusCodes.ts +20 -0
  384. package/src/storage/index.ts +2 -0
  385. package/src/storage/memoryStorage.ts +105 -0
  386. package/src/storage/storage.ts +52 -0
  387. package/src/tokenResponseEventName.ts +6 -0
  388. package/src/transcript/consoleTranscriptLogger.ts +20 -0
  389. package/src/transcript/index.ts +4 -0
  390. package/src/transcript/transcriptLogger.ts +45 -0
  391. package/src/transcript/transcriptLoggerMiddleware.ts +151 -0
  392. package/src/transcript/transcriptStore.ts +38 -0
  393. package/src/turnContext.ts +335 -0
  394. package/src/turnContextStateCollection.ts +69 -0
@@ -0,0 +1,401 @@
1
+ /**
2
+ * Copyright (c) Microsoft Corporation. All rights reserved.
3
+ * Licensed under the MIT License.
4
+ */
5
+
6
+ import { TurnState } from './turnState'
7
+ import { BaseAdapter } from '../baseAdapter'
8
+ import { Activity, ActivityTypes, ConversationReference } from '@microsoft/agents-activity'
9
+ import { ApplicationOptions } from './applicationOptions'
10
+ import { RouteSelector } from './routeSelector'
11
+ import { RouteHandler } from './routeHandler'
12
+ import { ConversationUpdateEvents } from './conversationUpdateEvents'
13
+ import { TurnEvents } from './turnEvents'
14
+ import { AppRoute } from './appRoute'
15
+ import { TurnContext } from '../turnContext'
16
+ import { ResourceResponse } from '../connector-client'
17
+ import { debug } from '../logger'
18
+ import { WebChatOAuthFlowAppStyle } from './oauth/webChatOAuthFlowAppStyle'
19
+ import { MemoryStorage } from '../storage'
20
+
21
+ const logger = debug('agents:agent-application')
22
+
23
+ const TYPING_TIMER_DELAY = 1000
24
+ type ApplicationEventHandler<TState extends TurnState> = (context: TurnContext, state: TState) => Promise<boolean>
25
+
26
+ export class AgentApplication<TState extends TurnState> {
27
+ protected readonly _options: ApplicationOptions<TState>
28
+ protected readonly _routes: AppRoute<TState>[] = []
29
+ protected readonly _beforeTurn: ApplicationEventHandler<TState>[] = []
30
+ protected readonly _afterTurn: ApplicationEventHandler<TState>[] = []
31
+ private readonly _adapter?: BaseAdapter
32
+ private _typingTimer: any
33
+ private readonly _authManager?: WebChatOAuthFlowAppStyle
34
+
35
+ public constructor (options?: Partial<ApplicationOptions<TState>>) {
36
+ this._options = {
37
+ ...options,
38
+ turnStateFactory: options?.turnStateFactory || (() => new TurnState() as TState),
39
+ startTypingTimer: options?.startTypingTimer !== undefined ? options.startTypingTimer : true,
40
+ longRunningMessages: options?.longRunningMessages !== undefined ? options.longRunningMessages : false
41
+ }
42
+
43
+ if (this._options.adapter) {
44
+ this._adapter = this._options.adapter
45
+ }
46
+
47
+ if (this._options.authentication && this._options.authentication.enableSSO) {
48
+ this._authManager = new WebChatOAuthFlowAppStyle(this._options.storage ?? new MemoryStorage())
49
+ }
50
+
51
+ if (this._options.longRunningMessages && !this._adapter && !this._options.agentAppId) {
52
+ throw new Error(
53
+ 'The Application.longRunningMessages property is unavailable because no adapter or agentAppId was configured.'
54
+ )
55
+ }
56
+ }
57
+
58
+ public get adapter (): BaseAdapter {
59
+ if (!this._adapter) {
60
+ throw new Error(
61
+ 'The Application.adapter property is unavailable because it was not configured when creating the Application.'
62
+ )
63
+ }
64
+
65
+ return this._adapter
66
+ }
67
+
68
+ public get authManager (): WebChatOAuthFlowAppStyle {
69
+ if (!this._authManager) {
70
+ throw new Error(
71
+ 'The Application.authentication property is unavailable because no authentication options were configured.'
72
+ )
73
+ }
74
+
75
+ return this._authManager
76
+ }
77
+
78
+ public get options (): ApplicationOptions<TState> {
79
+ return this._options
80
+ }
81
+
82
+ public error (handler: (context: TurnContext, error: Error) => Promise<void>): this {
83
+ if (this._adapter) {
84
+ this._adapter.onTurnError = handler
85
+ }
86
+
87
+ return this
88
+ }
89
+
90
+ public addRoute (selector: RouteSelector, handler: RouteHandler<TState>): this {
91
+ this._routes.push({ selector, handler })
92
+ return this
93
+ }
94
+
95
+ public activity (
96
+ type: string | RegExp | RouteSelector | (string | RegExp | RouteSelector)[],
97
+ handler: (context: TurnContext, state: TState) => Promise<void>
98
+ ): this {
99
+ (Array.isArray(type) ? type : [type]).forEach((t) => {
100
+ const selector = this.createActivitySelector(t)
101
+ this.addRoute(selector, handler)
102
+ })
103
+ return this
104
+ }
105
+
106
+ public conversationUpdate (
107
+ event: ConversationUpdateEvents,
108
+ handler: (context: TurnContext, state: TState) => Promise<void>
109
+ ): this {
110
+ if (typeof handler !== 'function') {
111
+ throw new Error(
112
+ `ConversationUpdate 'handler' for ${event} is ${typeof handler}. Type of 'handler' must be a function.`
113
+ )
114
+ }
115
+
116
+ const selector = this.createConversationUpdateSelector(event)
117
+ this.addRoute(selector, handler)
118
+ return this
119
+ }
120
+
121
+ protected async continueConversationAsync (
122
+ conversationReferenceOrContext: ConversationReference | TurnContext,
123
+ logic: (context: TurnContext) => Promise<void>
124
+ ): Promise<void> {
125
+ if (!this._adapter) {
126
+ throw new Error(
127
+ "You must configure the Application with an 'adapter' before calling Application.continueConversationAsync()"
128
+ )
129
+ }
130
+
131
+ if (!this.options.agentAppId) {
132
+ console.warn(
133
+ "Calling Application.continueConversationAsync() without a configured 'agentAppId'. In production environments, a 'agentAppId' is required."
134
+ )
135
+ }
136
+
137
+ let reference: ConversationReference
138
+
139
+ if ('activity' in conversationReferenceOrContext) {
140
+ reference = conversationReferenceOrContext.activity.getConversationReference()
141
+ } else {
142
+ reference = conversationReferenceOrContext
143
+ }
144
+
145
+ await this._adapter.continueConversation(reference, logic)
146
+ }
147
+
148
+ public message (
149
+ keyword: string | RegExp | RouteSelector | (string | RegExp | RouteSelector)[],
150
+ handler: (context: TurnContext, state: TState) => Promise<void>
151
+ ): this {
152
+ (Array.isArray(keyword) ? keyword : [keyword]).forEach((k) => {
153
+ const selector = this.createMessageSelector(k)
154
+ this.addRoute(selector, handler)
155
+ })
156
+ return this
157
+ }
158
+
159
+ public async run (turnContext: TurnContext): Promise<boolean> {
160
+ return await this.startLongRunningCall(turnContext, async (context) => {
161
+ this.startTypingTimer(context)
162
+ try {
163
+ const { storage, turnStateFactory } = this._options
164
+ const state = turnStateFactory()
165
+ await state.load(context, storage)
166
+
167
+ if (!(await this.callEventHandlers(context, state, this._beforeTurn))) {
168
+ await state.save(context, storage)
169
+ return false
170
+ }
171
+
172
+ if (typeof state.temp.input !== 'string') {
173
+ state.temp.input = context.activity.text ?? ''
174
+ }
175
+
176
+ if (Array.isArray(this._options.fileDownloaders) && this._options.fileDownloaders.length > 0) {
177
+ const inputFiles = state.temp.inputFiles ?? []
178
+ for (let i = 0; i < this._options.fileDownloaders.length; i++) {
179
+ const files = await this._options.fileDownloaders[i].downloadFiles(context, state)
180
+ inputFiles.push(...files)
181
+ }
182
+ state.temp.inputFiles = inputFiles
183
+ }
184
+
185
+ if (state.temp.actionOutputs === undefined) {
186
+ state.temp.actionOutputs = {}
187
+ }
188
+
189
+ for (let i = 0; i < this._routes.length; i++) {
190
+ const route = this._routes[i]
191
+ if (await route.selector(context)) {
192
+ await route.handler(context, state)
193
+
194
+ if (await this.callEventHandlers(context, state, this._afterTurn)) {
195
+ await state.save(context, storage)
196
+ }
197
+
198
+ return true
199
+ }
200
+ }
201
+
202
+ if (await this.callEventHandlers(context, state, this._afterTurn)) {
203
+ await state.save(context, storage)
204
+ }
205
+
206
+ return false
207
+ } catch (err: any) {
208
+ logger.error(err)
209
+ throw err
210
+ } finally {
211
+ this.stopTypingTimer()
212
+ }
213
+ })
214
+ }
215
+
216
+ public async sendProactiveActivity (
217
+ context: TurnContext | ConversationReference,
218
+ activityOrText: string | Activity,
219
+ speak?: string,
220
+ inputHint?: string
221
+ ): Promise<ResourceResponse | undefined> {
222
+ let response: ResourceResponse | undefined
223
+ await this.continueConversationAsync(context, async (ctx) => {
224
+ response = await ctx.sendActivity(activityOrText, speak, inputHint)
225
+ })
226
+
227
+ return response
228
+ }
229
+
230
+ public startTypingTimer (context: TurnContext): void {
231
+ if (context.activity.type === ActivityTypes.Message && !this._typingTimer) {
232
+ let timerRunning = true
233
+ context.onSendActivities(async (context, activities, next) => {
234
+ if (timerRunning) {
235
+ for (let i = 0; i < activities.length; i++) {
236
+ if (activities[i].type === ActivityTypes.Message || activities[i].channelData?.streamType) {
237
+ this.stopTypingTimer()
238
+ timerRunning = false
239
+ await lastSend
240
+ break
241
+ }
242
+ }
243
+ }
244
+
245
+ return next()
246
+ })
247
+
248
+ let lastSend: Promise<any> = Promise.resolve()
249
+ const onTimeout = async () => {
250
+ try {
251
+ lastSend = context.sendActivity(Activity.fromObject({ type: ActivityTypes.Typing }))
252
+ await lastSend
253
+ } catch (err: any) {
254
+ logger.error(err)
255
+ this._typingTimer = undefined
256
+ timerRunning = false
257
+ lastSend = Promise.resolve()
258
+ }
259
+
260
+ if (timerRunning) {
261
+ this._typingTimer = setTimeout(onTimeout, TYPING_TIMER_DELAY)
262
+ }
263
+ }
264
+ this._typingTimer = setTimeout(onTimeout, TYPING_TIMER_DELAY)
265
+ }
266
+ }
267
+
268
+ public stopTypingTimer (): void {
269
+ if (this._typingTimer) {
270
+ clearTimeout(this._typingTimer)
271
+ this._typingTimer = undefined
272
+ }
273
+ }
274
+
275
+ public turn (
276
+ event: TurnEvents | TurnEvents[],
277
+ handler: (context: TurnContext, state: TState) => Promise<boolean>
278
+ ): this {
279
+ (Array.isArray(event) ? event : [event]).forEach((e) => {
280
+ switch (e) {
281
+ case 'beforeTurn':
282
+ break
283
+ case 'afterTurn':
284
+ this._afterTurn.push(handler)
285
+ break
286
+ default:
287
+ this._beforeTurn.push(handler)
288
+ break
289
+ }
290
+ })
291
+ return this
292
+ }
293
+
294
+ protected async callEventHandlers (
295
+ context: TurnContext,
296
+ state: TState,
297
+ handlers: ApplicationEventHandler<TState>[]
298
+ ): Promise<boolean> {
299
+ for (let i = 0; i < handlers.length; i++) {
300
+ const continueExecution = await handlers[i](context, state)
301
+ if (!continueExecution) {
302
+ return false
303
+ }
304
+ }
305
+
306
+ return true
307
+ }
308
+
309
+ protected startLongRunningCall (
310
+ context: TurnContext,
311
+ handler: (context: TurnContext) => Promise<boolean>
312
+ ): Promise<boolean> {
313
+ if (context.activity.type === ActivityTypes.Message && this._options.longRunningMessages) {
314
+ return new Promise<boolean>((resolve, reject) => {
315
+ this.continueConversationAsync(context, async (ctx) => {
316
+ try {
317
+ for (const key in context.activity) {
318
+ (ctx.activity as any)[key] = (context.activity as any)[key]
319
+ }
320
+
321
+ const result = await handler(ctx)
322
+ resolve(result)
323
+ } catch (err: any) {
324
+ logger.error(err)
325
+ reject(err)
326
+ }
327
+ })
328
+ })
329
+ } else {
330
+ return handler(context)
331
+ }
332
+ }
333
+
334
+ private createActivitySelector (type: string | RegExp | RouteSelector): RouteSelector {
335
+ if (typeof type === 'function') {
336
+ return type
337
+ } else if (type instanceof RegExp) {
338
+ return (context: TurnContext) => {
339
+ return Promise.resolve(context?.activity?.type ? type.test(context.activity.type) : false)
340
+ }
341
+ } else {
342
+ const typeName = type.toString().toLocaleLowerCase()
343
+ return (context: TurnContext) => {
344
+ return Promise.resolve(
345
+ context?.activity?.type ? context.activity.type.toLocaleLowerCase() === typeName : false
346
+ )
347
+ }
348
+ }
349
+ }
350
+
351
+ private createConversationUpdateSelector (event: ConversationUpdateEvents): RouteSelector {
352
+ switch (event) {
353
+ case 'membersAdded':
354
+ return (context: TurnContext): Promise<boolean> => {
355
+ return Promise.resolve(
356
+ context?.activity?.type === ActivityTypes.ConversationUpdate &&
357
+ Array.isArray(context?.activity?.membersAdded) &&
358
+ context.activity.membersAdded.length > 0
359
+ )
360
+ }
361
+ case 'membersRemoved':
362
+ return (context: TurnContext): Promise<boolean> => {
363
+ return Promise.resolve(
364
+ context?.activity?.type === ActivityTypes.ConversationUpdate &&
365
+ Array.isArray(context?.activity?.membersRemoved) &&
366
+ context.activity.membersRemoved.length > 0
367
+ )
368
+ }
369
+ default:
370
+ return (context: TurnContext): Promise<boolean> => {
371
+ return Promise.resolve(
372
+ context?.activity?.type === ActivityTypes.ConversationUpdate &&
373
+ context?.activity?.channelData?.eventType === event
374
+ )
375
+ }
376
+ }
377
+ }
378
+
379
+ private createMessageSelector (keyword: string | RegExp | RouteSelector): RouteSelector {
380
+ if (typeof keyword === 'function') {
381
+ return keyword
382
+ } else if (keyword instanceof RegExp) {
383
+ return (context: TurnContext) => {
384
+ if (context?.activity?.type === ActivityTypes.Message && context.activity.text) {
385
+ return Promise.resolve(keyword.test(context.activity.text))
386
+ } else {
387
+ return Promise.resolve(false)
388
+ }
389
+ }
390
+ } else {
391
+ const k = keyword.toString().toLocaleLowerCase()
392
+ return (context: TurnContext) => {
393
+ if (context?.activity?.type === ActivityTypes.Message && context.activity.text) {
394
+ return Promise.resolve(context.activity.text.toLocaleLowerCase().indexOf(k) >= 0)
395
+ } else {
396
+ return Promise.resolve(false)
397
+ }
398
+ }
399
+ }
400
+ }
401
+ }
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Copyright (c) Microsoft Corporation. All rights reserved.
3
+ * Licensed under the MIT License.
4
+ */
5
+
6
+ import { RouteHandler } from './routeHandler'
7
+ import { RouteSelector } from './routeSelector'
8
+ import { TurnState } from './turnState'
9
+
10
+ export interface AppRoute<TState extends TurnState> {
11
+ selector: RouteSelector;
12
+ handler: RouteHandler<TState>;
13
+ }
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Copyright (c) Microsoft Corporation. All rights reserved.
3
+ * Licensed under the MIT License.
4
+ */
5
+
6
+ import { AgentApplication } from './agentApplication'
7
+ import { ApplicationOptions } from './applicationOptions'
8
+ import { TurnState } from './turnState'
9
+ import { Storage } from '../storage'
10
+ import { AuthenticationOptions } from './oauth/authenticationOptions'
11
+
12
+ export class ApplicationBuilder<TState extends TurnState = TurnState> {
13
+ protected _options: Partial<ApplicationOptions<TState>> = {}
14
+
15
+ protected get options () {
16
+ return this._options
17
+ }
18
+
19
+ public withStorage (storage: Storage): this {
20
+ this._options.storage = storage
21
+ return this
22
+ }
23
+
24
+ public withTurnStateFactory (turnStateFactory: () => TState): this {
25
+ this._options.turnStateFactory = turnStateFactory
26
+ return this
27
+ }
28
+
29
+ public setStartTypingTimer (startTypingTimer: boolean): this {
30
+ this._options.startTypingTimer = startTypingTimer
31
+ return this
32
+ }
33
+
34
+ public withAuthentication (authenticationOptions: AuthenticationOptions): this {
35
+ this._options.authentication = authenticationOptions
36
+ return this
37
+ }
38
+
39
+ public build (): AgentApplication<TState> {
40
+ return new AgentApplication(this._options)
41
+ }
42
+ }
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Copyright (c) Microsoft Corporation. All rights reserved.
3
+ * Licensed under the MIT License.
4
+ */
5
+
6
+ import { CloudAdapter } from '../cloudAdapter'
7
+ import { InputFileDownloader } from './inputFileDownloader'
8
+ import { TurnState } from './turnState'
9
+ import { Storage } from '../storage'
10
+ import { AuthenticationOptions } from './oauth/authenticationOptions'
11
+
12
+ export interface ApplicationOptions<TState extends TurnState> {
13
+ adapter?: CloudAdapter;
14
+ agentAppId?: string;
15
+ storage?: Storage;
16
+ startTypingTimer: boolean;
17
+ longRunningMessages: boolean;
18
+ turnStateFactory: () => TState;
19
+ fileDownloaders?: InputFileDownloader<TState>[];
20
+ authentication?: AuthenticationOptions;
21
+ }
@@ -0,0 +1,83 @@
1
+ /**
2
+ * Copyright (c) Microsoft Corporation. All rights reserved.
3
+ * Licensed under the MIT License.
4
+ */
5
+
6
+ import axios, { AxiosInstance } from 'axios'
7
+ import { InputFile, InputFileDownloader } from './inputFileDownloader'
8
+ import { TurnState } from './turnState'
9
+ import { TurnContext } from '../turnContext'
10
+ import { Attachment } from '@microsoft/agents-activity'
11
+ import { AuthProvider } from '../auth/authProvider'
12
+ import { debug } from '../logger'
13
+ import { loadAuthConfigFromEnv, MsalTokenProvider } from '../auth'
14
+
15
+ const logger = debug('agents:attachmentDownloader')
16
+
17
+ export class AttachmentDownloader<TState extends TurnState = TurnState> implements InputFileDownloader<TState> {
18
+ private _httpClient: AxiosInstance
19
+
20
+ public constructor () {
21
+ this._httpClient = axios.create()
22
+ }
23
+
24
+ public async downloadFiles (context: TurnContext, state: TState): Promise<InputFile[]> {
25
+ const attachments = context.activity.attachments?.filter((a) => !a.contentType.startsWith('text/html'))
26
+ if (!attachments || attachments.length === 0) {
27
+ logger.info('No Attachments to download')
28
+ return Promise.resolve([])
29
+ }
30
+
31
+ const authProvider: AuthProvider = new MsalTokenProvider()
32
+
33
+ const accessToken = await authProvider.getAccessToken(loadAuthConfigFromEnv(), 'https://api.botframework.com')
34
+
35
+ const files: InputFile[] = []
36
+ for (const attachment of attachments) {
37
+ const file = await this.downloadFile(attachment, accessToken)
38
+ if (file) {
39
+ files.push(file)
40
+ }
41
+ }
42
+
43
+ logger.info('Attachments downloaded')
44
+ return files
45
+ }
46
+
47
+ private async downloadFile (attachment: Attachment, accessToken: string): Promise<InputFile | undefined> {
48
+ if (
49
+ (attachment.contentUrl && attachment.contentUrl.startsWith('https://')) ||
50
+ (attachment.contentUrl && attachment.contentUrl.startsWith('http://localhost'))
51
+ ) {
52
+ let headers
53
+ if (accessToken.length > 0) {
54
+ headers = {
55
+ Authorization: `Bearer ${accessToken}`
56
+ }
57
+ }
58
+ const response = await this._httpClient.get(attachment.contentUrl, {
59
+ headers,
60
+ responseType: 'arraybuffer'
61
+ })
62
+
63
+ const content = Buffer.from(response.data, 'binary')
64
+
65
+ let contentType = attachment.contentType
66
+ if (contentType === 'image/*') {
67
+ contentType = 'image/png'
68
+ }
69
+
70
+ return {
71
+ content,
72
+ contentType,
73
+ contentUrl: attachment.contentUrl
74
+ }
75
+ } else {
76
+ return {
77
+ content: Buffer.from(attachment.content as any),
78
+ contentType: attachment.contentType,
79
+ contentUrl: attachment.contentUrl
80
+ }
81
+ }
82
+ }
83
+ }
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Copyright (c) Microsoft Corporation. All rights reserved.
3
+ * Licensed under the MIT License.
4
+ */
5
+
6
+ export type ConversationUpdateEvents =
7
+ | 'membersAdded'
8
+ | 'membersRemoved'
@@ -0,0 +1,10 @@
1
+ export * from './agentApplication'
2
+ export * from './applicationBuilder'
3
+ export * from './applicationOptions'
4
+ export * from './appRoute'
5
+ export * from './attachmentDownloader'
6
+ export * from './oauth/webChatOAuthFlowAppStyle'
7
+ export * from './conversationUpdateEvents'
8
+ export * from './routeHandler'
9
+ export * from './routeSelector'
10
+ export * from './turnState'
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Copyright (c) Microsoft Corporation. All rights reserved.
3
+ * Licensed under the MIT License.
4
+ */
5
+
6
+ import { TurnContext } from '../turnContext'
7
+ import { TurnState } from './turnState'
8
+
9
+ export interface InputFile {
10
+ content: Buffer;
11
+ contentType: string;
12
+ contentUrl?: string;
13
+ }
14
+
15
+ export interface InputFileDownloader<TState extends TurnState = TurnState> {
16
+ downloadFiles(context: TurnContext, state: TState): Promise<InputFile[]>;
17
+ }
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Copyright (c) Microsoft Corporation. All rights reserved.
3
+ * Licensed under the MIT License.
4
+ */
5
+
6
+ export interface Memory {
7
+ deleteValue(path: string): void;
8
+
9
+ hasValue(path: string): boolean;
10
+
11
+ getValue<TValue = unknown>(path: string): TValue;
12
+
13
+ setValue(path: string, value: unknown): void;
14
+ }
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Copyright (c) Microsoft Corporation. All rights reserved.
3
+ * Licensed under the MIT License.
4
+ */
5
+
6
+ export interface AuthenticationOptions {
7
+ enableSSO: boolean;
8
+ }