@microsoft/agents-hosting 1.9.1 → 1.10.0-beta.14.ge6d1defc27

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 (173) hide show
  1. package/README.md +83 -7
  2. package/dist/package.json +4 -4
  3. package/dist/src/activityHandler.js +6 -3
  4. package/dist/src/activityHandler.js.map +1 -1
  5. package/dist/src/agent-client/agentResponseHandler.d.ts +7 -0
  6. package/dist/src/agent-client/agentResponseHandler.js.map +1 -1
  7. package/dist/src/agent-client/createAgentResponseHandler.d.ts +2 -0
  8. package/dist/src/agent-client/createAgentResponseHandler.js.map +1 -1
  9. package/dist/src/app/adaptiveCards/adaptiveCardsActions.d.ts +1 -0
  10. package/dist/src/app/adaptiveCards/adaptiveCardsActions.js +1 -0
  11. package/dist/src/app/adaptiveCards/adaptiveCardsActions.js.map +1 -1
  12. package/dist/src/app/attachmentDownloadHttpClient.d.ts +13 -0
  13. package/dist/src/app/attachmentDownloadHttpClient.js +80 -0
  14. package/dist/src/app/attachmentDownloadHttpClient.js.map +1 -0
  15. package/dist/src/app/attachmentDownloader.d.ts +2 -0
  16. package/dist/src/app/attachmentDownloader.js +6 -11
  17. package/dist/src/app/attachmentDownloader.js.map +1 -1
  18. package/dist/src/app/auth/authorization.d.ts +58 -0
  19. package/dist/src/app/auth/authorization.js.map +1 -1
  20. package/dist/src/app/proactive/conversation.d.ts +18 -0
  21. package/dist/src/app/proactive/conversation.js +6 -0
  22. package/dist/src/app/proactive/conversation.js.map +1 -1
  23. package/dist/src/app/proactive/conversationBuilder.js +2 -1
  24. package/dist/src/app/proactive/conversationBuilder.js.map +1 -1
  25. package/dist/src/app/proactive/conversationReferenceBuilder.js +8 -4
  26. package/dist/src/app/proactive/conversationReferenceBuilder.js.map +1 -1
  27. package/dist/src/app/proactive/createConversationOptionsBuilder.d.ts +1 -0
  28. package/dist/src/app/proactive/createConversationOptionsBuilder.js +2 -1
  29. package/dist/src/app/proactive/createConversationOptionsBuilder.js.map +1 -1
  30. package/dist/src/app/proactive/proactive.d.ts +6 -0
  31. package/dist/src/app/proactive/proactive.js +32 -1
  32. package/dist/src/app/proactive/proactive.js.map +1 -1
  33. package/dist/src/app/routeList.d.ts +21 -0
  34. package/dist/src/app/routeList.js +27 -3
  35. package/dist/src/app/routeList.js.map +1 -1
  36. package/dist/src/app/teamsAttachmentDownloader.d.ts +8 -0
  37. package/dist/src/app/teamsAttachmentDownloader.js +17 -12
  38. package/dist/src/app/teamsAttachmentDownloader.js.map +1 -1
  39. package/dist/src/auth/authConfiguration.d.ts +1 -0
  40. package/dist/src/auth/authConfiguration.js.map +1 -1
  41. package/dist/src/auth/authConstants.d.ts +7 -0
  42. package/dist/src/auth/authConstants.js +7 -0
  43. package/dist/src/auth/authConstants.js.map +1 -1
  44. package/dist/src/auth/authProvider.d.ts +36 -0
  45. package/dist/src/auth/connectionManager.js +2 -1
  46. package/dist/src/auth/connectionManager.js.map +1 -1
  47. package/dist/src/auth/connections.d.ts +1 -0
  48. package/dist/src/auth/msal/msalConnectionManager.d.ts +7 -0
  49. package/dist/src/auth/msal/msalConnectionManager.js +7 -0
  50. package/dist/src/auth/msal/msalConnectionManager.js.map +1 -1
  51. package/dist/src/auth/msal/msalTokenProvider.d.ts +44 -0
  52. package/dist/src/auth/msal/msalTokenProvider.js +43 -0
  53. package/dist/src/auth/msal/msalTokenProvider.js.map +1 -1
  54. package/dist/src/auth/settings.d.ts +28 -0
  55. package/dist/src/auth/settings.js +23 -0
  56. package/dist/src/auth/settings.js.map +1 -1
  57. package/dist/src/auth/sidecar/sidecarAuthProvider.d.ts +3 -0
  58. package/dist/src/auth/sidecar/sidecarAuthProvider.js.map +1 -1
  59. package/dist/src/auth/sidecar/sidecarHttpClient.d.ts +1 -9
  60. package/dist/src/auth/sidecar/sidecarHttpClient.js +3 -69
  61. package/dist/src/auth/sidecar/sidecarHttpClient.js.map +1 -1
  62. package/dist/src/baseAdapter.d.ts +6 -0
  63. package/dist/src/baseAdapter.js.map +1 -1
  64. package/dist/src/cards/taskModuleAction.d.ts +6 -0
  65. package/dist/src/cards/taskModuleAction.js +6 -0
  66. package/dist/src/cards/taskModuleAction.js.map +1 -1
  67. package/dist/src/cloudAdapter.d.ts +29 -0
  68. package/dist/src/cloudAdapter.js +45 -8
  69. package/dist/src/cloudAdapter.js.map +1 -1
  70. package/dist/src/configuration/configuration.d.ts +1 -0
  71. package/dist/src/configuration/configuration.js +2 -1
  72. package/dist/src/configuration/configuration.js.map +1 -1
  73. package/dist/src/configuration/environmentConfiguration.js +1 -1
  74. package/dist/src/configuration/environmentConfiguration.js.map +1 -1
  75. package/dist/src/connector-client/connectorClient.d.ts +8 -0
  76. package/dist/src/connector-client/connectorClient.js +8 -0
  77. package/dist/src/connector-client/connectorClient.js.map +1 -1
  78. package/dist/src/createCloudAdapter.d.ts +2 -0
  79. package/dist/src/createCloudAdapter.js.map +1 -1
  80. package/dist/src/errorHelper.d.ts +1 -0
  81. package/dist/src/errorHelper.js +9 -0
  82. package/dist/src/errorHelper.js.map +1 -1
  83. package/dist/src/headerPropagation.d.ts +38 -0
  84. package/dist/src/headerPropagation.js +33 -0
  85. package/dist/src/headerPropagation.js.map +1 -1
  86. package/dist/src/httpClient.d.ts +58 -0
  87. package/dist/src/httpClient.js +40 -0
  88. package/dist/src/httpClient.js.map +1 -1
  89. package/dist/src/interfaces/webResponse.d.ts +7 -0
  90. package/dist/src/middlewareSet.d.ts +6 -0
  91. package/dist/src/middlewareSet.js.map +1 -1
  92. package/dist/src/oauth/userTokenClient.d.ts +6 -0
  93. package/dist/src/oauth/userTokenClient.js +12 -0
  94. package/dist/src/oauth/userTokenClient.js.map +1 -1
  95. package/dist/src/outboundHostValidator.d.ts +33 -1
  96. package/dist/src/outboundHostValidator.js +60 -25
  97. package/dist/src/outboundHostValidator.js.map +1 -1
  98. package/dist/src/storage/fileStorage.d.ts +26 -0
  99. package/dist/src/storage/fileStorage.js +35 -6
  100. package/dist/src/storage/fileStorage.js.map +1 -1
  101. package/dist/src/storage/memoryStorage.d.ts +34 -0
  102. package/dist/src/storage/memoryStorage.js +41 -4
  103. package/dist/src/storage/memoryStorage.js.map +1 -1
  104. package/dist/src/storage/storage.d.ts +20 -0
  105. package/dist/src/storage/storage.js +7 -0
  106. package/dist/src/storage/storage.js.map +1 -1
  107. package/dist/src/storage/storageCompatibility.js +12 -6
  108. package/dist/src/storage/storageCompatibility.js.map +1 -1
  109. package/dist/src/storage/storageExpiry.d.ts +7 -0
  110. package/dist/src/storage/storageExpiry.js +7 -0
  111. package/dist/src/storage/storageExpiry.js.map +1 -1
  112. package/dist/src/turnContext.d.ts +10 -0
  113. package/dist/src/turnContext.js +5 -0
  114. package/dist/src/turnContext.js.map +1 -1
  115. package/dist/src/utils/env.js +22 -11
  116. package/dist/src/utils/env.js.map +1 -1
  117. package/dist/src/utils/ipAddress.d.ts +6 -0
  118. package/dist/src/utils/ipAddress.js +64 -0
  119. package/dist/src/utils/ipAddress.js.map +1 -0
  120. package/dist/src/utils/outboundUrl.d.ts +7 -0
  121. package/dist/src/utils/outboundUrl.js +52 -0
  122. package/dist/src/utils/outboundUrl.js.map +1 -0
  123. package/dist/src/utils.js +2 -1
  124. package/dist/src/utils.js.map +1 -1
  125. package/package.json +4 -4
  126. package/src/activityHandler.ts +9 -3
  127. package/src/agent-client/agentResponseHandler.ts +7 -0
  128. package/src/agent-client/createAgentResponseHandler.ts +2 -0
  129. package/src/app/adaptiveCards/adaptiveCardsActions.ts +1 -0
  130. package/src/app/attachmentDownloadHttpClient.ts +80 -0
  131. package/src/app/attachmentDownloader.ts +6 -9
  132. package/src/app/auth/authorization.ts +58 -0
  133. package/src/app/proactive/conversation.ts +24 -0
  134. package/src/app/proactive/conversationBuilder.ts +3 -1
  135. package/src/app/proactive/conversationReferenceBuilder.ts +12 -4
  136. package/src/app/proactive/createConversationOptionsBuilder.ts +5 -1
  137. package/src/app/proactive/proactive.ts +33 -1
  138. package/src/app/routeList.ts +30 -3
  139. package/src/app/teamsAttachmentDownloader.ts +17 -10
  140. package/src/auth/authConfiguration.ts +1 -0
  141. package/src/auth/authConstants.ts +7 -0
  142. package/src/auth/authProvider.ts +36 -0
  143. package/src/auth/connectionManager.ts +3 -1
  144. package/src/auth/connections.ts +1 -0
  145. package/src/auth/msal/msalConnectionManager.ts +7 -0
  146. package/src/auth/msal/msalTokenProvider.ts +59 -0
  147. package/src/auth/settings.ts +28 -0
  148. package/src/auth/sidecar/sidecarAuthProvider.ts +4 -0
  149. package/src/auth/sidecar/sidecarHttpClient.ts +3 -63
  150. package/src/baseAdapter.ts +6 -0
  151. package/src/cards/taskModuleAction.ts +6 -0
  152. package/src/cloudAdapter.ts +59 -10
  153. package/src/configuration/configuration.ts +4 -2
  154. package/src/configuration/environmentConfiguration.ts +7 -1
  155. package/src/connector-client/connectorClient.ts +8 -0
  156. package/src/createCloudAdapter.ts +2 -0
  157. package/src/errorHelper.ts +11 -0
  158. package/src/headerPropagation.ts +38 -0
  159. package/src/httpClient.ts +58 -0
  160. package/src/interfaces/webResponse.ts +7 -0
  161. package/src/middlewareSet.ts +6 -0
  162. package/src/oauth/userTokenClient.ts +13 -0
  163. package/src/outboundHostValidator.ts +84 -23
  164. package/src/storage/fileStorage.ts +46 -6
  165. package/src/storage/memoryStorage.ts +45 -4
  166. package/src/storage/storage.ts +20 -0
  167. package/src/storage/storageCompatibility.ts +18 -6
  168. package/src/storage/storageExpiry.ts +7 -0
  169. package/src/turnContext.ts +11 -0
  170. package/src/utils/env.ts +33 -11
  171. package/src/utils/ipAddress.ts +63 -0
  172. package/src/utils/outboundUrl.ts +50 -0
  173. package/src/utils.ts +3 -1
@@ -71,8 +71,14 @@ export declare class TurnContext {
71
71
  *
72
72
  * @param adapterOrContext The adapter that created this context, or another TurnContext to clone
73
73
  * @param request The activity for the turn (required when first parameter is an adapter)
74
+ * @param identity The authenticated identity for the turn.
74
75
  */
75
76
  constructor(adapterOrContext: BaseAdapter, request: Activity, identity?: JwtPayload);
77
+ /**
78
+ * Creates a context by copying another turn context.
79
+ *
80
+ * @param adapterOrContext The turn context to copy.
81
+ */
76
82
  constructor(adapterOrContext: TurnContext);
77
83
  /**
78
84
  * A list of reply activities that are buffered until the end of the turn.
@@ -215,6 +221,7 @@ export declare class TurnContext {
215
221
  * and triggered the creation of this context.
216
222
  */
217
223
  get activity(): Activity;
224
+ /** Gets the authenticated identity for the turn. */
218
225
  get identity(): JwtPayload;
219
226
  /**
220
227
  * Gets or sets whether the turn has sent a response to the user.
@@ -224,6 +231,7 @@ export declare class TurnContext {
224
231
  * activity. Once set to true, it cannot be set back to false.
225
232
  */
226
233
  get responded(): boolean;
234
+ /** Marks the turn as having sent a response. */
227
235
  set responded(value: boolean);
228
236
  /**
229
237
  * Gets or sets the locale for the turn.
@@ -233,6 +241,7 @@ export declare class TurnContext {
233
241
  * formatting dates or numbers.
234
242
  */
235
243
  get locale(): string | undefined;
244
+ /** Sets the locale stored in the turn state. */
236
245
  set locale(value: string | undefined);
237
246
  /**
238
247
  * Gets the turn state collection for storing data during the turn.
@@ -243,6 +252,7 @@ export declare class TurnContext {
243
252
  * the processing of the current turn.
244
253
  */
245
254
  get turnState(): TurnContextStateCollection;
255
+ /** Gets the streaming response associated with this context. */
246
256
  get streamingResponse(): StreamingResponse;
247
257
  /**
248
258
  * Emits events to registered middleware handlers.
@@ -31,6 +31,7 @@ exports.AgentCallbackHandlerKey = 'agentCallbackHandler';
31
31
  * This class follows the builder pattern for registering middleware handlers.
32
32
  */
33
33
  class TurnContext {
34
+ /** Implements the adapter and copy constructor overloads. */
34
35
  constructor(adapterOrContext, request, identity) {
35
36
  this._respondedRef = { responded: false };
36
37
  this._turnState = new turnContextStateCollection_1.TurnContextStateCollection();
@@ -306,6 +307,7 @@ class TurnContext {
306
307
  get activity() {
307
308
  return this._activity;
308
309
  }
310
+ /** Gets the authenticated identity for the turn. */
309
311
  get identity() {
310
312
  return this._identity;
311
313
  }
@@ -319,6 +321,7 @@ class TurnContext {
319
321
  get responded() {
320
322
  return this._respondedRef.responded;
321
323
  }
324
+ /** Marks the turn as having sent a response. */
322
325
  set responded(value) {
323
326
  if (!value) {
324
327
  throw agents_activity_1.ExceptionHelper.generateException(Error, errorHelper_1.Errors.CannotSetRespondedToFalse);
@@ -339,6 +342,7 @@ class TurnContext {
339
342
  }
340
343
  return undefined;
341
344
  }
345
+ /** Sets the locale stored in the turn state. */
342
346
  set locale(value) {
343
347
  let turnObj = this._turnState.get(this._turn);
344
348
  if (turnObj) {
@@ -360,6 +364,7 @@ class TurnContext {
360
364
  get turnState() {
361
365
  return this._turnState;
362
366
  }
367
+ /** Gets the streaming response associated with this context. */
363
368
  get streamingResponse() {
364
369
  return this._streamingResponse;
365
370
  }
@@ -1 +1 @@
1
- {"version":3,"file":"turnContext.js","sourceRoot":"","sources":["../../src/turnContext.ts"],"names":[],"mappings":";;;AAAA,oGAAoG;AACpG,uDAAuD;AAEvD,gEAAuI;AAEvI,6EAAyE;AAGzE,yEAAqE;AAErE,kEAAmD;AACnD,mDAA6D;AAC7D,+CAAsC;AAgCtC;;GAEG;AACU,QAAA,uBAAuB,GAAG,sBAAsB,CAAA;AAE7D;;;;;;;;;;;;;;;;GAgBG;AACH;IAqBE,YAAa,gBAA2C,EAAE,OAAkB,EAAE,QAAqB;QAlBlF,kBAAa,GAA2B,EAAE,SAAS,EAAE,KAAK,EAAE,CAAA;QAC5D,eAAU,GAAG,IAAI,uDAA0B,EAAE,CAAA;QAC7C,sBAAiB,GAA4B,EAAE,CAAA;QAC/C,sBAAiB,GAA4B,EAAE,CAAA;QAC/C,sBAAiB,GAA4B,EAAE,CAAA;QAC/C,UAAK,GAAG,MAAM,CAAA;QACd,YAAO,GAAG,QAAQ,CAAA;QAuBnC;;;;;WAKG;QACM,4BAAuB,GAAe,EAAE,CAAA;QAhB/C,IAAI,gBAAgB,YAAY,WAAW,EAAE,CAAC;YAC5C,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QAC/B,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,QAAQ,GAAG,gBAAgB,CAAA;YAChC,IAAI,CAAC,SAAS,GAAG,OAAmB,CAAA;YACpC,IAAI,CAAC,SAAS,GAAG,QAAsB,CAAA;QACzC,CAAC;QACD,IAAI,CAAC,kBAAkB,GAAG,IAAI,qCAAiB,CAAC,IAAI,CAAC,CAAA;IACvD,CAAC;IAUD;;;;;;;;;;;;OAYG;IACH,KAAK,CAAC,iBAAiB,CAAE,IAAY,EAAE,KAAW,EAAE,SAAkB,EAAE,KAAc;QACpF,MAAM,aAAa,GAAG;YACpB,IAAI,EAAE,+BAAa,CAAC,KAAK;YACzB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,IAAI;YACJ,KAAK;YACL,SAAS;YACT,KAAK;SACM,CAAA;QACb,OAAO,MAAM,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,CAAA;IAC/C,CAAC;IAED;;;;;;;;;;;;OAYG;IACH,KAAK,CAAC,YAAY,CAAE,cAAiC,EAAE,KAAc,EAAE,SAAkB;QACvF,IAAI,QAAkB,CAAA;QACtB,IAAI,OAAO,cAAc,KAAK,QAAQ,EAAE,CAAC;YACvC,QAAQ,GAAG,EAAE,IAAI,EAAE,+BAAa,CAAC,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,SAAS,EAAE,SAAS,IAAI,4BAAU,CAAC,cAAc,EAAc,CAAA;YAC/H,IAAI,KAAK,EAAE,CAAC;gBACV,QAAQ,CAAC,KAAK,GAAG,KAAK,CAAA;YACxB,CAAC;QACH,CAAC;aAAM,CAAC;YACN,QAAQ,GAAG,cAAc,CAAA;QAC3B,CAAC;QAED,MAAM,SAAS,GAAG,CAAC,MAAM,IAAI,CAAC,cAAc,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;QAC/D,OAAO,SAAS,CAAC,CAAC,CAAC,CAAA;IACrB,CAAC;IAED;;;;;;;;;;OAUG;IACH,KAAK,CAAC,cAAc,CAAE,UAAsB;QAC1C,OAAO,IAAA,wBAAK,EAAC,2CAA2B,CAAC,cAAc,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE;YACrF,MAAM,CAAC,EAAE,aAAa,EAAE,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,MAAM,EAAE,CAAC,CAAA;YAC7C,IAAI,oBAAoB,GAAG,KAAK,CAAA;YAChC,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,wBAAwB,EAAE,CAAA;YACpD,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE;gBACzC,OAAO,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAA;gBAChC,MAAM,WAAW,GAAG,0BAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAA;gBACjD,MAAM,MAAM,GAAG,WAAW,CAAC,0BAA0B,CAAC,GAAG,CAAC,CAAA;gBAC1D,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;oBACjB,MAAM,CAAC,IAAI,GAAG,+BAAa,CAAC,OAAO,CAAA;gBACrC,CAAC;gBACD,IAAI,MAAM,CAAC,IAAI,KAAK,+BAAa,CAAC,cAAc,EAAE,CAAC;oBACjD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,qCAAmB,EAAE,MAAM,CAAC,CAAA;gBACjD,CAAC;gBACD,IAAI,MAAM,CAAC,IAAI,KAAK,+BAAa,CAAC,KAAK,EAAE,CAAC;oBACxC,oBAAoB,GAAG,IAAI,CAAA;gBAC7B,CAAC;gBACD,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC;oBACd,OAAO,MAAM,CAAC,EAAE,CAAA;gBAClB,CAAC;gBACD,OAAO,MAAM,CAAA;YACf,CAAC,CAAC,CAAA;YACF,OAAO,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,MAAM,EAAE,KAAK,IAAI,EAAE;gBAChE,IAAI,IAAI,CAAC,QAAQ,CAAC,YAAY,KAAK,+BAAa,CAAC,aAAa,EAAE,CAAC;oBAC/D,MAAM,SAAS,GAAuB,EAAE,CAAA;oBACxC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;wBACnB,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;wBACpC,IAAI,CAAC,CAAC,IAAI,KAAK,+BAAa,CAAC,cAAc,EAAE,CAAC;4BAC5C,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,qCAAmB,EAAE,CAAC,CAAC,CAAA;wBAC5C,CAAC;wBACD,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAA;oBAC5B,CAAC,CAAC,CAAA;oBACF,IAAI,oBAAoB,EAAE,CAAC;wBACzB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAA;oBACvB,CAAC;oBACD,OAAO,SAAS,CAAA;gBAClB,CAAC;qBAAM,CAAC;oBACN,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;oBACjE,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,IAAG,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,MAAM,CAAA,EAAE,KAAK,EAAE,EAAE,CAAC;wBACvD,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,CAAA;wBAC9B,QAAQ,CAAC,EAAE,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAA;oBACnC,CAAC;oBACD,IAAI,oBAAoB,EAAE,CAAC;wBACzB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAA;oBACvB,CAAC;oBACD,OAAO,SAAS,CAAA;gBAClB,CAAC;YACH,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;IACJ,CAAC;IAED;;;;;;;;;OASG;IACH,KAAK,CAAC,cAAc,CAAE,QAAkB;QACtC,MAAM,WAAW,GAAG,0BAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAA;QACjD,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,wBAAwB,EAAE,CAAA;QACpD,MAAM,CAAC,GAAG,WAAW,CAAC,0BAA0B,CAAC,GAAG,CAAC,CAAA;QACrD,OAAO,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,EAAE,KAAK,IAAI,EAAE,CAC3D,MAAM,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAC1D,CAAA;IACH,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,cAAc,CAAE,aAA6C;QACjE,IAAI,SAAgC,CAAA;QACpC,IAAI,OAAO,aAAa,KAAK,QAAQ,EAAE,CAAC;YACtC,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,wBAAwB,EAAE,CAAA;YACpD,SAAS,CAAC,UAAU,GAAG,aAAa,CAAA;QACtC,CAAC;aAAM,CAAC;YACN,SAAS,GAAG,aAAa,CAAA;QAC3B,CAAC;QACD,OAAO,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,SAAS,EAAE,KAAK,IAAI,EAAE,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAA;IAC3H,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,gBAAgB,CAAE,cAAsB,EAAE,cAA8B;QAC5E,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,EAAE,cAAc,EAAE,cAAc,CAAC,CAAA;IAClF,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,iBAAiB,CAAE,YAAoB;QAC3C,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,EAAE,YAAY,CAAC,CAAA;IACjE,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,aAAa,CAAE,YAAoB,EAAE,MAAc;QACvD,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,EAAE,YAAY,EAAE,MAAM,CAAC,CAAA;IACrE,CAAC;IAED;;;;;;;;;OASG;IACH,gBAAgB,CAAE,OAA8B;QAC9C,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QACpC,OAAO,IAAI,CAAA;IACb,CAAC;IAED;;;;;OAKG;IACH,gBAAgB,CAAE,OAA8B;QAC9C,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QACpC,OAAO,IAAI,CAAA;IACb,CAAC;IAED;;;;;OAKG;IACH,gBAAgB,CAAE,OAA8B;QAC9C,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QACpC,OAAO,IAAI,CAAA;IACb,CAAC;IAED;;;;;;;OAOG;IACO,MAAM,CAAE,OAAoB;QACpC,8FAA8F;QAC9F,kGAAkG;QAClG,MAAM,kBAAkB,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,oBAAoB,CAAC,CAAA;QAC5F,KAAK,MAAM,IAAI,IAAI,kBAAkB,EAAE,CAAC;YACtC,CAAC;YAAC,OAAe,CAAC,IAAI,CAAC,GAAI,IAAY,CAAC,IAAI,CAAC,CAAA;QAC/C,CAAC;IACH,CAAC;IAED;;;;;;OAMG;IACH,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,QAAuB,CAAA;IACrC,CAAC;IAED;;;;;;OAMG;IACH,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,SAAqB,CAAA;IACnC,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,SAAuB,CAAA;IACrC,CAAC;IAED;;;;;;OAMG;IACH,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,aAAa,CAAC,SAAS,CAAA;IACrC,CAAC;IAED,IAAI,SAAS,CAAE,KAAc;QAC3B,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,iCAAe,CAAC,iBAAiB,CAAC,KAAK,EAAE,oBAAM,CAAC,yBAAyB,CAAC,CAAA;QAClF,CAAC;QACD,IAAI,CAAC,aAAa,CAAC,SAAS,GAAG,IAAI,CAAA;IACrC,CAAC;IAED;;;;;;OAMG;IACH,IAAI,MAAM;QACR,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAC/C,IAAI,OAAO,IAAI,OAAO,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;YACzD,OAAO,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QAC9B,CAAC;QACD,OAAO,SAAS,CAAA;IAClB,CAAC;IAED,IAAI,MAAM,CAAE,KAAyB;QACnC,IAAI,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAC7C,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,KAAK,CAAA;QAC/B,CAAC;aAAM,CAAC;YACN,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,CAAA;YACnC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;QAC1C,CAAC;IACH,CAAC;IAED;;;;;;;OAOG;IACH,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,UAAU,CAAA;IACxB,CAAC;IAED,IAAI,iBAAiB;QACnB,OAAO,IAAI,CAAC,kBAAkB,CAAA;IAChC,CAAC;IAED;;;;;;;;;;;;;OAaG;IACK,KAAK,CAAC,IAAI,CAAO,QAAqF,EAAE,GAAM,EAAE,IAAsB;QAC5I,MAAM,WAAW,GAAG,KAAK,EAAE,CAAC,OAAO,EAAE,GAAG,SAAS,CAAkB,EAAc,EAAE;YACjF,IAAI,CAAC;gBACH,OAAO,OAAO,CAAC,CAAC,CAAC,MAAM,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,EAAE,CAAC,MAAM,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAA;YACrH,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,MAAM,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;YAClC,CAAC;QACH,CAAC,CAAA;QACD,OAAO,MAAM,WAAW,CAAC,QAAQ,CAAC,CAAA;IACpC,CAAC;CACF"}
1
+ {"version":3,"file":"turnContext.js","sourceRoot":"","sources":["../../src/turnContext.ts"],"names":[],"mappings":"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"}
@@ -63,15 +63,19 @@ exports.envParserUtils = {
63
63
  * unrecognized.
64
64
  */
65
65
  function parseBooleanEnv(value) {
66
- if (value === undefined)
66
+ if (value === undefined) {
67
67
  return undefined;
68
+ }
68
69
  const v = value.trim().toLowerCase();
69
- if (v === 'true' || v === '1')
70
+ if (v === 'true' || v === '1') {
70
71
  return true;
71
- if (v === '')
72
+ }
73
+ if (v === '') {
72
74
  return undefined;
73
- if (v === 'false' || v === '0')
75
+ }
76
+ if (v === 'false' || v === '0') {
74
77
  return false;
78
+ }
75
79
  return undefined;
76
80
  }
77
81
  /**
@@ -83,8 +87,9 @@ function parseBooleanEnv(value) {
83
87
  * @returns A finite integer, or `fallback` when the input cannot be parsed.
84
88
  */
85
89
  function parseIntEnv(value, fallback) {
86
- if (value === undefined || value.trim() === '')
90
+ if (value === undefined || value.trim() === '') {
87
91
  return fallback;
92
+ }
88
93
  const parsed = parseInt(value, 10);
89
94
  return Number.isNaN(parsed) ? fallback : parsed;
90
95
  }
@@ -107,8 +112,9 @@ function parseIntEnv(value, fallback) {
107
112
  * @param maxDistance - Maximum edit distance to consider a match (default 2).
108
113
  */
109
114
  function suggestClosest(input, candidates, maxDistance = 2) {
110
- if (!input)
115
+ if (!input) {
111
116
  return undefined;
117
+ }
112
118
  const a = input.toLowerCase();
113
119
  const cutoff = Math.min(maxDistance, Math.max(1, Math.ceil(a.length / 2)));
114
120
  let best;
@@ -116,23 +122,28 @@ function suggestClosest(input, candidates, maxDistance = 2) {
116
122
  const d = levenshtein(a, candidate.toLowerCase());
117
123
  if (d <= cutoff && (!best || d < best.distance)) {
118
124
  best = { name: candidate, distance: d };
119
- if (d === 0)
125
+ if (d === 0) {
120
126
  break;
127
+ }
121
128
  }
122
129
  }
123
130
  return best === null || best === void 0 ? void 0 : best.name;
124
131
  }
125
132
  /** Standard Levenshtein edit distance using a single-row dynamic-programming table. */
126
133
  function levenshtein(a, b) {
127
- if (a === b)
134
+ if (a === b) {
128
135
  return 0;
129
- if (a.length === 0)
136
+ }
137
+ if (a.length === 0) {
130
138
  return b.length;
131
- if (b.length === 0)
139
+ }
140
+ if (b.length === 0) {
132
141
  return a.length;
142
+ }
133
143
  const row = new Array(b.length + 1);
134
- for (let j = 0; j <= b.length; j++)
144
+ for (let j = 0; j <= b.length; j++) {
135
145
  row[j] = j;
146
+ }
136
147
  for (let i = 1; i <= a.length; i++) {
137
148
  let prev = i - 1;
138
149
  row[0] = i;
@@ -1 +1 @@
1
- {"version":3,"file":"env.js","sourceRoot":"","sources":["../../../src/utils/env.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"env.js","sourceRoot":"","sources":["../../../src/utils/env.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Copyright (c) Microsoft Corporation. All rights reserved.
3
+ * Licensed under the MIT License.
4
+ */
5
+ export declare function isPrivateOrLoopbackAddress(address: string): boolean;
6
+ export declare function isBlockedOutboundAddress(address: string): boolean;
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+ /**
3
+ * Copyright (c) Microsoft Corporation. All rights reserved.
4
+ * Licensed under the MIT License.
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.isPrivateOrLoopbackAddress = isPrivateOrLoopbackAddress;
8
+ exports.isBlockedOutboundAddress = isBlockedOutboundAddress;
9
+ const node_net_1 = require("node:net");
10
+ function normalizeAddress(address) {
11
+ const unwrapped = address.startsWith('[') && address.endsWith(']') ? address.slice(1, -1) : address;
12
+ const version = (0, node_net_1.isIP)(unwrapped);
13
+ if (version === 0) {
14
+ return undefined;
15
+ }
16
+ return version === 6 ? new URL(`http://[${unwrapped}]`).hostname.slice(1, -1) : unwrapped;
17
+ }
18
+ function mappedIPv4(address) {
19
+ const match = address.match(/^::ffff:([0-9a-f]{1,4}):([0-9a-f]{1,4})$/);
20
+ if (!match) {
21
+ return undefined;
22
+ }
23
+ const high = parseInt(match[1], 16);
24
+ const low = parseInt(match[2], 16);
25
+ return `${high >> 8}.${high & 0xff}.${low >> 8}.${low & 0xff}`;
26
+ }
27
+ function isPrivateOrLoopbackAddress(address) {
28
+ var _a;
29
+ const normalized = normalizeAddress(address);
30
+ if (!normalized) {
31
+ return false;
32
+ }
33
+ const ipv4 = (_a = mappedIPv4(normalized)) !== null && _a !== void 0 ? _a : normalized;
34
+ if ((0, node_net_1.isIP)(ipv4) === 4) {
35
+ const bytes = ipv4.split('.').map(Number);
36
+ return bytes[0] === 127 ||
37
+ bytes[0] === 10 ||
38
+ (bytes[0] === 172 && bytes[1] >= 16 && bytes[1] <= 31) ||
39
+ (bytes[0] === 192 && bytes[1] === 168) ||
40
+ (bytes[0] === 169 && bytes[1] === 254);
41
+ }
42
+ if (normalized === '::1') {
43
+ return true;
44
+ }
45
+ const firstHextet = parseInt(normalized.split(':')[0], 16);
46
+ return (firstHextet & 0xfe00) === 0xfc00 ||
47
+ (firstHextet & 0xffc0) === 0xfe80 ||
48
+ (firstHextet & 0xffc0) === 0xfec0;
49
+ }
50
+ function isBlockedOutboundAddress(address) {
51
+ var _a;
52
+ const normalized = normalizeAddress(address);
53
+ if (!normalized) {
54
+ return true;
55
+ }
56
+ const ipv4 = (_a = mappedIPv4(normalized)) !== null && _a !== void 0 ? _a : normalized;
57
+ const [first, second] = ipv4.split('.').map(Number);
58
+ // RFC 6598 shared space is outbound-only; it must not become trusted sidecar space.
59
+ return normalized === '::' ||
60
+ ipv4 === '0.0.0.0' ||
61
+ (first === 100 && second >= 64 && second <= 127) ||
62
+ isPrivateOrLoopbackAddress(normalized);
63
+ }
64
+ //# sourceMappingURL=ipAddress.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ipAddress.js","sourceRoot":"","sources":["../../../src/utils/ipAddress.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Copyright (c) Microsoft Corporation. All rights reserved.
3
+ * Licensed under the MIT License.
4
+ */
5
+ export declare function getHttpsUrl(input: string | URL | null | undefined): URL | undefined;
6
+ export declare function isLocalOrBlockedHost(host: string): boolean;
7
+ export declare function hasAllowedOutboundAddresses(url: URL, allowPrivateNetworkAddresses?: boolean): Promise<boolean>;
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ /**
3
+ * Copyright (c) Microsoft Corporation. All rights reserved.
4
+ * Licensed under the MIT License.
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.getHttpsUrl = getHttpsUrl;
8
+ exports.isLocalOrBlockedHost = isLocalOrBlockedHost;
9
+ exports.hasAllowedOutboundAddresses = hasAllowedOutboundAddresses;
10
+ const node_dns_1 = require("node:dns");
11
+ const node_net_1 = require("node:net");
12
+ const agents_telemetry_1 = require("@microsoft/agents-telemetry");
13
+ const ipAddress_1 = require("./ipAddress");
14
+ const logger = (0, agents_telemetry_1.debug)('agents:outboundHostValidator');
15
+ function getHttpsUrl(input) {
16
+ if (!input) {
17
+ return undefined;
18
+ }
19
+ try {
20
+ const url = input instanceof URL ? input : new URL(input);
21
+ return url.protocol === 'https:' && !url.username && !url.password ? url : undefined;
22
+ }
23
+ catch {
24
+ return undefined;
25
+ }
26
+ }
27
+ function isLocalOrBlockedHost(host) {
28
+ const unwrapped = host.startsWith('[') && host.endsWith(']') ? host.slice(1, -1) : host;
29
+ return host === 'localhost' || host.endsWith('.localhost') ||
30
+ ((0, node_net_1.isIP)(unwrapped) !== 0 && (0, ipAddress_1.isBlockedOutboundAddress)(unwrapped));
31
+ }
32
+ async function hasAllowedOutboundAddresses(url, allowPrivateNetworkAddresses = false) {
33
+ if (allowPrivateNetworkAddresses) {
34
+ return true;
35
+ }
36
+ const host = url.hostname.replace(/^\[|\]$/g, '').replace(/\.$/, '');
37
+ if (isLocalOrBlockedHost(host)) {
38
+ return false;
39
+ }
40
+ if ((0, node_net_1.isIP)(host) !== 0) {
41
+ return true;
42
+ }
43
+ try {
44
+ const addresses = await node_dns_1.promises.lookup(host, { all: true });
45
+ return addresses.length > 0 && addresses.every(({ address }) => !(0, ipAddress_1.isBlockedOutboundAddress)(address));
46
+ }
47
+ catch {
48
+ logger.warn(`Attachment destination DNS lookup failed. Host='${host}'`);
49
+ return false;
50
+ }
51
+ }
52
+ //# sourceMappingURL=outboundUrl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"outboundUrl.js","sourceRoot":"","sources":["../../../src/utils/outboundUrl.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;AAEH,uCAA0C;AAC1C,uCAA+B;AAC/B,kEAAmD;AACnD,2CAAsD;AAEtD,MAAM,MAAM,GAAG,IAAA,wBAAK,EAAC,8BAA8B,CAAC,CAAA;AAEpD,qBAA6B,KAAsC;IACjE,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,SAAS,CAAA;IAClB,CAAC;IACD,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,KAAK,YAAY,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,CAAA;QACzD,OAAO,GAAG,CAAC,QAAQ,KAAK,QAAQ,IAAI,CAAC,GAAG,CAAC,QAAQ,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAA;IACtF,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAA;IAClB,CAAC;AACH,CAAC;AAED,8BAAsC,IAAY;IAChD,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;IACvF,OAAO,IAAI,KAAK,WAAW,IAAI,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;QACxD,CAAC,IAAA,eAAI,EAAC,SAAS,CAAC,KAAK,CAAC,IAAI,IAAA,oCAAwB,EAAC,SAAS,CAAC,CAAC,CAAA;AAClE,CAAC;AAEM,KAAK,sCAAuC,GAAQ,EAAE,4BAA4B,GAAG,KAAK;IAC/F,IAAI,4BAA4B,EAAE,CAAC;QACjC,OAAO,IAAI,CAAA;IACb,CAAC;IACD,MAAM,IAAI,GAAG,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;IACpE,IAAI,oBAAoB,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/B,OAAO,KAAK,CAAA;IACd,CAAC;IACD,IAAI,IAAA,eAAI,EAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACrB,OAAO,IAAI,CAAA;IACb,CAAC;IAED,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,MAAM,mBAAG,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAA;QACvD,OAAO,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,IAAA,oCAAwB,EAAC,OAAO,CAAC,CAAC,CAAA;IACrG,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,CAAC,IAAI,CAAC,mDAAmD,IAAI,GAAG,CAAC,CAAA;QACvE,OAAO,KAAK,CAAA;IACd,CAAC;AACH,CAAC"}
package/dist/src/utils.js CHANGED
@@ -18,8 +18,9 @@ exports.prune = prune;
18
18
  const mergeDefined = (...layers) => {
19
19
  const result = {};
20
20
  for (const layer of layers) {
21
- if (layer)
21
+ if (layer) {
22
22
  Object.assign(result, (0, exports.prune)(layer));
23
+ }
23
24
  }
24
25
  return result;
25
26
  };
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH;;;;GAIG;AACI,MAAM,KAAK,GAAG,CAAgC,GAAM,EAAE,EAAE;IAC7D,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,KAAK,SAAS,CAAC,CAAA;IAC9E,OAAO,MAAM,CAAC,WAAW,CAAC,OAAO,CAAM,CAAA;AACzC,CAAC,CAAA;AAHY,QAAA,KAAK,GAAL,KAAK,CAGjB;AAEM,MAAM,YAAY,GAAG,CAC1B,GAAG,MAA2C,EAC3C,EAAE;IACL,MAAM,MAAM,GAAe,EAAE,CAAA;IAC7B,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,KAAK;YAAE,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,IAAA,QAAA,KAAK,EAAC,KAAK,CAAC,CAAC,CAAA;IAChD,CAAC;IACD,OAAO,MAAW,CAAA;AACpB,CAAC,CAAA;AARY,QAAA,YAAY,GAAZ,YAAY,CAQxB"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH;;;;GAIG;AACI,MAAM,KAAK,GAAG,CAAgC,GAAM,EAAE,EAAE;IAC7D,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,KAAK,SAAS,CAAC,CAAA;IAC9E,OAAO,MAAM,CAAC,WAAW,CAAC,OAAO,CAAM,CAAA;AACzC,CAAC,CAAA;AAHY,QAAA,KAAK,GAAL,KAAK,CAGjB;AAEM,MAAM,YAAY,GAAG,CAC1B,GAAG,MAA2C,EAC3C,EAAE;IACL,MAAM,MAAM,GAAe,EAAE,CAAA;IAC7B,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,IAAA,QAAA,KAAK,EAAC,KAAK,CAAC,CAAC,CAAA;QACrC,CAAC;IACH,CAAC;IACD,OAAO,MAAW,CAAA;AACpB,CAAC,CAAA;AAVY,QAAA,YAAY,GAAZ,YAAY,CAUxB"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://json.schemastore.org/package.json",
3
3
  "name": "@microsoft/agents-hosting",
4
- "version": "1.9.1",
4
+ "version": "1.10.0-beta.14.ge6d1defc27",
5
5
  "homepage": "https://github.com/microsoft/Agents-for-js",
6
6
  "repository": {
7
7
  "type": "git",
@@ -21,8 +21,8 @@
21
21
  "dependencies": {
22
22
  "@azure/core-auth": "1.10.1",
23
23
  "@azure/msal-node": "5.6.0",
24
- "@microsoft/agents-activity": "1.9.1",
25
- "@microsoft/agents-telemetry": "1.9.1",
24
+ "@microsoft/agents-activity": "1.10.0-beta.14.ge6d1defc27",
25
+ "@microsoft/agents-telemetry": "1.10.0-beta.14.ge6d1defc27",
26
26
  "jsonwebtoken": "9.0.3",
27
27
  "jwks-rsa": "4.0.1",
28
28
  "zod": "3.25.75"
@@ -43,6 +43,6 @@
43
43
  "./package.json": "./package.json"
44
44
  },
45
45
  "engines": {
46
- "node": ">=20.0.0"
46
+ "node": ">=22.0.0"
47
47
  }
48
48
  }
@@ -255,9 +255,15 @@ export class ActivityHandler {
255
255
  * @throws Error if context is missing, activity is missing, or activity type is missing
256
256
  */
257
257
  async run (context: TurnContext): Promise<void> {
258
- if (!context) throw ExceptionHelper.generateException(Error, Errors.MissingTurnContext)
259
- if (!context.activity) throw ExceptionHelper.generateException(Error, Errors.TurnContextMissingActivity)
260
- if (!context.activity.type) throw ExceptionHelper.generateException(Error, Errors.ActivityMissingType)
258
+ if (!context) {
259
+ throw ExceptionHelper.generateException(Error, Errors.MissingTurnContext)
260
+ }
261
+ if (!context.activity) {
262
+ throw ExceptionHelper.generateException(Error, Errors.TurnContextMissingActivity)
263
+ }
264
+ if (!context.activity.type) {
265
+ throw ExceptionHelper.generateException(Error, Errors.ActivityMissingType)
266
+ }
261
267
 
262
268
  await this.handle(context, 'Turn', async () => {
263
269
  await this.onTurnActivity(context)
@@ -24,6 +24,13 @@ import { AGENT_RESPONSE_ROUTE_PATH, createAgentResponseHandler } from './createA
24
24
  * `post(path, handler)` method structurally matches satisfies it.
25
25
  */
26
26
  export interface WebApp {
27
+ /**
28
+ * Registers a handler for HTTP POST requests at the specified path.
29
+ *
30
+ * @param path - Route path to register.
31
+ * @param handler - Request handler invoked for matching requests.
32
+ * @returns A framework-specific registration result.
33
+ */
27
34
  post (
28
35
  path: string,
29
36
  handler: (req: any, res: any) => unknown | Promise<unknown>
@@ -33,7 +33,9 @@ interface DelegatedConversationState {
33
33
  * the framework's URL path parser.
34
34
  */
35
35
  export interface AgentResponseHandlerParams {
36
+ /** ID of the conversation receiving the callback activity. */
36
37
  conversationId: string
38
+ /** ID to assign to the callback activity. */
37
39
  activityId: string
38
40
  }
39
41
 
@@ -13,6 +13,7 @@ import { AdaptiveCard } from '../../cards/adaptiveCard'
13
13
  import { Query } from './query'
14
14
  import { Errors } from '../../errorHelper'
15
15
 
16
+ /** Invoke activity name used for Adaptive Card actions. */
16
17
  export const ACTION_INVOKE_NAME = 'adaptiveCard/action'
17
18
  const ACTION_EXECUTE_TYPE = 'Action.Execute'
18
19
  const DEFAULT_ACTION_SUBMIT_FILTER = 'verb'
@@ -0,0 +1,80 @@
1
+ /**
2
+ * Copyright (c) Microsoft Corporation. All rights reserved.
3
+ * Licensed under the MIT License.
4
+ */
5
+
6
+ import { ExceptionHelper } from '@microsoft/agents-activity'
7
+ import { debug } from '@microsoft/agents-telemetry'
8
+ import { Errors } from '../errorHelper'
9
+ import { HttpClient, HttpError, HttpResponse } from '../httpClient'
10
+ import { OutboundHostValidator, OutboundUrlPolicy } from '../outboundHostValidator'
11
+ import { getHttpsUrl, hasAllowedOutboundAddresses } from '../utils/outboundUrl'
12
+
13
+ const logger = debug('agents:attachmentDownloader')
14
+ const REDIRECT_STATUSES = new Set([300, 301, 302, 303, 307, 308])
15
+ const MAX_REDIRECTS = 50
16
+
17
+ export class AttachmentDownloadHttpClient {
18
+ public constructor (
19
+ private readonly httpClient: HttpClient,
20
+ private readonly hostValidator: OutboundUrlPolicy
21
+ ) {}
22
+
23
+ public async get (url: string, headers: Record<string, string> = {}): Promise<HttpResponse<ArrayBuffer> | undefined> {
24
+ if (!this.hostValidator.enabled) {
25
+ if (!this.hostValidator.isAllowed(url)) {
26
+ return this.blocked(url)
27
+ }
28
+ return this.httpClient.get<ArrayBuffer>(url, { headers, responseType: 'arraybuffer' })
29
+ }
30
+
31
+ let currentUrl = url
32
+ for (let redirects = 0; ; redirects++) {
33
+ const parsed = getHttpsUrl(currentUrl)
34
+ const allowed = parsed && (this.hostValidator instanceof OutboundHostValidator
35
+ ? await this.hostValidator.isAllowedAsync(parsed)
36
+ : this.hostValidator.isAllowed(currentUrl) && await hasAllowedOutboundAddresses(parsed))
37
+ if (!allowed) {
38
+ return this.blocked(currentUrl)
39
+ }
40
+
41
+ const requestHeaders = new Headers(redirects === 0 ? headers : undefined)
42
+ const response = await fetch(currentUrl, { method: 'GET', headers: requestHeaders, redirect: 'manual' })
43
+ const location = response.headers.get('location')
44
+ if (REDIRECT_STATUSES.has(response.status) && location) {
45
+ await response.body?.cancel()
46
+ if (redirects >= MAX_REDIRECTS) {
47
+ throw ExceptionHelper.generateException(Error, Errors.AttachmentDownloadRedirectLimit)
48
+ }
49
+ try {
50
+ currentUrl = new URL(location, currentUrl).href
51
+ } catch {
52
+ throw ExceptionHelper.generateException(Error, Errors.AttachmentDownloadInvalidRedirect)
53
+ }
54
+ continue
55
+ }
56
+
57
+ const config = { method: 'get', url: currentUrl, responseType: 'arraybuffer' as const }
58
+ const result: HttpResponse<ArrayBuffer> = {
59
+ data: await response.arrayBuffer(),
60
+ status: response.status,
61
+ statusText: response.statusText,
62
+ headers: response.headers,
63
+ config
64
+ }
65
+ if (!response.ok) {
66
+ throw new HttpError(`Request failed with status ${response.status}`, result, config)
67
+ }
68
+ return result
69
+ }
70
+ }
71
+
72
+ private blocked (input: string): undefined {
73
+ let host = '[invalid-url]'
74
+ try {
75
+ host = new URL(input).hostname
76
+ } catch { /* Invalid URLs have no safe host to log. */ }
77
+ logger.warn(`Attachment destination blocked by outbound policy or address validation. Host='${host}'`)
78
+ return undefined
79
+ }
80
+ }
@@ -13,6 +13,7 @@ import { debug } from '@microsoft/agents-telemetry'
13
13
  import { loadAuthConfigFromEnv, MsalTokenProvider } from '../auth'
14
14
  import { createOutboundHostValidator, OutboundUrlPolicy } from '../outboundHostValidator'
15
15
  import { Connections } from '../auth/connections'
16
+ import { AttachmentDownloadHttpClient } from './attachmentDownloadHttpClient'
16
17
 
17
18
  const logger = debug('agents:attachmentDownloader')
18
19
 
@@ -24,6 +25,8 @@ const logger = debug('agents:attachmentDownloader')
24
25
  * @remarks
25
26
  * This class provides functionality to filter and download attachments from a turn context,
26
27
  * supporting various content types and handling authentication for secure URLs.
28
+ * Enabled outbound validation requires HTTPS and validates addresses at every redirect.
29
+ * Initial request credentials are not forwarded to redirects when validation is enabled.
27
30
  *
28
31
  */
29
32
  export class AttachmentDownloader<TState extends TurnState = TurnState> implements InputFileDownloader<TState> {
@@ -103,18 +106,12 @@ export class AttachmentDownloader<TState extends TurnState = TurnState> implemen
103
106
  if (accessToken.length > 0) {
104
107
  headers.Authorization = `Bearer ${accessToken}`
105
108
  }
106
- if (!this._hostValidator.isAllowed(attachment.contentUrl)) {
107
- let host = '[invalid-url]'
108
- try { host = new URL(attachment.contentUrl).hostname } catch { /* invalid */ }
109
- logger.warn(`Attachment contentUrl host is not in the configured allowed hosts. Host='${host}'`)
109
+ const response = await new AttachmentDownloadHttpClient(this._httpClient, this._hostValidator)
110
+ .get(attachment.contentUrl, headers)
111
+ if (!response) {
110
112
  return undefined
111
113
  }
112
114
 
113
- const response = await this._httpClient.get(attachment.contentUrl, {
114
- headers,
115
- responseType: 'arraybuffer'
116
- })
117
-
118
115
  const content = Buffer.from(response.data as ArrayBuffer)
119
116
 
120
117
  let contentType = attachment.contentType