@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.
- package/README.md +83 -7
- package/dist/package.json +4 -4
- package/dist/src/activityHandler.js +6 -3
- package/dist/src/activityHandler.js.map +1 -1
- package/dist/src/agent-client/agentResponseHandler.d.ts +7 -0
- package/dist/src/agent-client/agentResponseHandler.js.map +1 -1
- package/dist/src/agent-client/createAgentResponseHandler.d.ts +2 -0
- package/dist/src/agent-client/createAgentResponseHandler.js.map +1 -1
- package/dist/src/app/adaptiveCards/adaptiveCardsActions.d.ts +1 -0
- package/dist/src/app/adaptiveCards/adaptiveCardsActions.js +1 -0
- package/dist/src/app/adaptiveCards/adaptiveCardsActions.js.map +1 -1
- package/dist/src/app/attachmentDownloadHttpClient.d.ts +13 -0
- package/dist/src/app/attachmentDownloadHttpClient.js +80 -0
- package/dist/src/app/attachmentDownloadHttpClient.js.map +1 -0
- package/dist/src/app/attachmentDownloader.d.ts +2 -0
- package/dist/src/app/attachmentDownloader.js +6 -11
- package/dist/src/app/attachmentDownloader.js.map +1 -1
- package/dist/src/app/auth/authorization.d.ts +58 -0
- package/dist/src/app/auth/authorization.js.map +1 -1
- package/dist/src/app/proactive/conversation.d.ts +18 -0
- package/dist/src/app/proactive/conversation.js +6 -0
- package/dist/src/app/proactive/conversation.js.map +1 -1
- package/dist/src/app/proactive/conversationBuilder.js +2 -1
- package/dist/src/app/proactive/conversationBuilder.js.map +1 -1
- package/dist/src/app/proactive/conversationReferenceBuilder.js +8 -4
- package/dist/src/app/proactive/conversationReferenceBuilder.js.map +1 -1
- package/dist/src/app/proactive/createConversationOptionsBuilder.d.ts +1 -0
- package/dist/src/app/proactive/createConversationOptionsBuilder.js +2 -1
- package/dist/src/app/proactive/createConversationOptionsBuilder.js.map +1 -1
- package/dist/src/app/proactive/proactive.d.ts +6 -0
- package/dist/src/app/proactive/proactive.js +32 -1
- package/dist/src/app/proactive/proactive.js.map +1 -1
- package/dist/src/app/routeList.d.ts +21 -0
- package/dist/src/app/routeList.js +27 -3
- package/dist/src/app/routeList.js.map +1 -1
- package/dist/src/app/teamsAttachmentDownloader.d.ts +8 -0
- package/dist/src/app/teamsAttachmentDownloader.js +17 -12
- package/dist/src/app/teamsAttachmentDownloader.js.map +1 -1
- package/dist/src/auth/authConfiguration.d.ts +1 -0
- package/dist/src/auth/authConfiguration.js.map +1 -1
- package/dist/src/auth/authConstants.d.ts +7 -0
- package/dist/src/auth/authConstants.js +7 -0
- package/dist/src/auth/authConstants.js.map +1 -1
- package/dist/src/auth/authProvider.d.ts +36 -0
- package/dist/src/auth/connectionManager.js +2 -1
- package/dist/src/auth/connectionManager.js.map +1 -1
- package/dist/src/auth/connections.d.ts +1 -0
- package/dist/src/auth/msal/msalConnectionManager.d.ts +7 -0
- package/dist/src/auth/msal/msalConnectionManager.js +7 -0
- package/dist/src/auth/msal/msalConnectionManager.js.map +1 -1
- package/dist/src/auth/msal/msalTokenProvider.d.ts +44 -0
- package/dist/src/auth/msal/msalTokenProvider.js +43 -0
- package/dist/src/auth/msal/msalTokenProvider.js.map +1 -1
- package/dist/src/auth/settings.d.ts +28 -0
- package/dist/src/auth/settings.js +23 -0
- package/dist/src/auth/settings.js.map +1 -1
- package/dist/src/auth/sidecar/sidecarAuthProvider.d.ts +3 -0
- package/dist/src/auth/sidecar/sidecarAuthProvider.js.map +1 -1
- package/dist/src/auth/sidecar/sidecarHttpClient.d.ts +1 -9
- package/dist/src/auth/sidecar/sidecarHttpClient.js +3 -69
- package/dist/src/auth/sidecar/sidecarHttpClient.js.map +1 -1
- package/dist/src/baseAdapter.d.ts +6 -0
- package/dist/src/baseAdapter.js.map +1 -1
- package/dist/src/cards/taskModuleAction.d.ts +6 -0
- package/dist/src/cards/taskModuleAction.js +6 -0
- package/dist/src/cards/taskModuleAction.js.map +1 -1
- package/dist/src/cloudAdapter.d.ts +29 -0
- package/dist/src/cloudAdapter.js +45 -8
- package/dist/src/cloudAdapter.js.map +1 -1
- package/dist/src/configuration/configuration.d.ts +1 -0
- package/dist/src/configuration/configuration.js +2 -1
- package/dist/src/configuration/configuration.js.map +1 -1
- package/dist/src/configuration/environmentConfiguration.js +1 -1
- package/dist/src/configuration/environmentConfiguration.js.map +1 -1
- package/dist/src/connector-client/connectorClient.d.ts +8 -0
- package/dist/src/connector-client/connectorClient.js +8 -0
- package/dist/src/connector-client/connectorClient.js.map +1 -1
- package/dist/src/createCloudAdapter.d.ts +2 -0
- package/dist/src/createCloudAdapter.js.map +1 -1
- package/dist/src/errorHelper.d.ts +1 -0
- package/dist/src/errorHelper.js +9 -0
- package/dist/src/errorHelper.js.map +1 -1
- package/dist/src/headerPropagation.d.ts +38 -0
- package/dist/src/headerPropagation.js +33 -0
- package/dist/src/headerPropagation.js.map +1 -1
- package/dist/src/httpClient.d.ts +58 -0
- package/dist/src/httpClient.js +40 -0
- package/dist/src/httpClient.js.map +1 -1
- package/dist/src/interfaces/webResponse.d.ts +7 -0
- package/dist/src/middlewareSet.d.ts +6 -0
- package/dist/src/middlewareSet.js.map +1 -1
- package/dist/src/oauth/userTokenClient.d.ts +6 -0
- package/dist/src/oauth/userTokenClient.js +12 -0
- package/dist/src/oauth/userTokenClient.js.map +1 -1
- package/dist/src/outboundHostValidator.d.ts +33 -1
- package/dist/src/outboundHostValidator.js +60 -25
- package/dist/src/outboundHostValidator.js.map +1 -1
- package/dist/src/storage/fileStorage.d.ts +26 -0
- package/dist/src/storage/fileStorage.js +35 -6
- package/dist/src/storage/fileStorage.js.map +1 -1
- package/dist/src/storage/memoryStorage.d.ts +34 -0
- package/dist/src/storage/memoryStorage.js +41 -4
- package/dist/src/storage/memoryStorage.js.map +1 -1
- package/dist/src/storage/storage.d.ts +20 -0
- package/dist/src/storage/storage.js +7 -0
- package/dist/src/storage/storage.js.map +1 -1
- package/dist/src/storage/storageCompatibility.js +12 -6
- package/dist/src/storage/storageCompatibility.js.map +1 -1
- package/dist/src/storage/storageExpiry.d.ts +7 -0
- package/dist/src/storage/storageExpiry.js +7 -0
- package/dist/src/storage/storageExpiry.js.map +1 -1
- package/dist/src/turnContext.d.ts +10 -0
- package/dist/src/turnContext.js +5 -0
- package/dist/src/turnContext.js.map +1 -1
- package/dist/src/utils/env.js +22 -11
- package/dist/src/utils/env.js.map +1 -1
- package/dist/src/utils/ipAddress.d.ts +6 -0
- package/dist/src/utils/ipAddress.js +64 -0
- package/dist/src/utils/ipAddress.js.map +1 -0
- package/dist/src/utils/outboundUrl.d.ts +7 -0
- package/dist/src/utils/outboundUrl.js +52 -0
- package/dist/src/utils/outboundUrl.js.map +1 -0
- package/dist/src/utils.js +2 -1
- package/dist/src/utils.js.map +1 -1
- package/package.json +4 -4
- package/src/activityHandler.ts +9 -3
- package/src/agent-client/agentResponseHandler.ts +7 -0
- package/src/agent-client/createAgentResponseHandler.ts +2 -0
- package/src/app/adaptiveCards/adaptiveCardsActions.ts +1 -0
- package/src/app/attachmentDownloadHttpClient.ts +80 -0
- package/src/app/attachmentDownloader.ts +6 -9
- package/src/app/auth/authorization.ts +58 -0
- package/src/app/proactive/conversation.ts +24 -0
- package/src/app/proactive/conversationBuilder.ts +3 -1
- package/src/app/proactive/conversationReferenceBuilder.ts +12 -4
- package/src/app/proactive/createConversationOptionsBuilder.ts +5 -1
- package/src/app/proactive/proactive.ts +33 -1
- package/src/app/routeList.ts +30 -3
- package/src/app/teamsAttachmentDownloader.ts +17 -10
- package/src/auth/authConfiguration.ts +1 -0
- package/src/auth/authConstants.ts +7 -0
- package/src/auth/authProvider.ts +36 -0
- package/src/auth/connectionManager.ts +3 -1
- package/src/auth/connections.ts +1 -0
- package/src/auth/msal/msalConnectionManager.ts +7 -0
- package/src/auth/msal/msalTokenProvider.ts +59 -0
- package/src/auth/settings.ts +28 -0
- package/src/auth/sidecar/sidecarAuthProvider.ts +4 -0
- package/src/auth/sidecar/sidecarHttpClient.ts +3 -63
- package/src/baseAdapter.ts +6 -0
- package/src/cards/taskModuleAction.ts +6 -0
- package/src/cloudAdapter.ts +59 -10
- package/src/configuration/configuration.ts +4 -2
- package/src/configuration/environmentConfiguration.ts +7 -1
- package/src/connector-client/connectorClient.ts +8 -0
- package/src/createCloudAdapter.ts +2 -0
- package/src/errorHelper.ts +11 -0
- package/src/headerPropagation.ts +38 -0
- package/src/httpClient.ts +58 -0
- package/src/interfaces/webResponse.ts +7 -0
- package/src/middlewareSet.ts +6 -0
- package/src/oauth/userTokenClient.ts +13 -0
- package/src/outboundHostValidator.ts +84 -23
- package/src/storage/fileStorage.ts +46 -6
- package/src/storage/memoryStorage.ts +45 -4
- package/src/storage/storage.ts +20 -0
- package/src/storage/storageCompatibility.ts +18 -6
- package/src/storage/storageExpiry.ts +7 -0
- package/src/turnContext.ts +11 -0
- package/src/utils/env.ts +33 -11
- package/src/utils/ipAddress.ts +63 -0
- package/src/utils/outboundUrl.ts +50 -0
- package/src/utils.ts +3 -1
package/dist/src/httpClient.d.ts
CHANGED
|
@@ -6,30 +6,45 @@
|
|
|
6
6
|
* Configuration for an HTTP request.
|
|
7
7
|
*/
|
|
8
8
|
export interface HttpRequestConfig {
|
|
9
|
+
/** The HTTP method. */
|
|
9
10
|
method: string;
|
|
11
|
+
/** The absolute URL or path relative to the client's base URL. */
|
|
10
12
|
url: string;
|
|
13
|
+
/** Headers to merge with the client's default headers. */
|
|
11
14
|
headers?: Record<string, string>;
|
|
15
|
+
/** The request body. */
|
|
12
16
|
data?: unknown;
|
|
17
|
+
/** Query parameters to append to the URL. */
|
|
13
18
|
params?: Record<string, string | undefined>;
|
|
19
|
+
/** The format used to read the response body. */
|
|
14
20
|
responseType?: 'json' | 'arraybuffer' | 'stream';
|
|
21
|
+
/** The request timeout in milliseconds. */
|
|
15
22
|
timeout?: number;
|
|
23
|
+
/** A signal used to cancel the request. */
|
|
16
24
|
signal?: AbortSignal;
|
|
17
25
|
}
|
|
18
26
|
/**
|
|
19
27
|
* Represents an HTTP response.
|
|
20
28
|
*/
|
|
21
29
|
export interface HttpResponse<T = unknown> {
|
|
30
|
+
/** The parsed response body. */
|
|
22
31
|
data: T;
|
|
32
|
+
/** The HTTP status code. */
|
|
23
33
|
status: number;
|
|
34
|
+
/** The HTTP status text. */
|
|
24
35
|
statusText: string;
|
|
36
|
+
/** The response headers. */
|
|
25
37
|
headers: Headers;
|
|
38
|
+
/** The configuration used for the request. */
|
|
26
39
|
config: HttpRequestConfig;
|
|
27
40
|
}
|
|
28
41
|
/**
|
|
29
42
|
* Options for creating an HttpClient instance.
|
|
30
43
|
*/
|
|
31
44
|
export interface HttpClientOptions {
|
|
45
|
+
/** The base URL used for relative request URLs. */
|
|
32
46
|
baseURL?: string;
|
|
47
|
+
/** Default headers included with every request. */
|
|
33
48
|
headers?: Record<string, string>;
|
|
34
49
|
}
|
|
35
50
|
/**
|
|
@@ -38,12 +53,40 @@ export interface HttpClientOptions {
|
|
|
38
53
|
export declare class HttpClient {
|
|
39
54
|
private _baseURL;
|
|
40
55
|
private _defaultHeaders;
|
|
56
|
+
/**
|
|
57
|
+
* Creates an HTTP client.
|
|
58
|
+
*
|
|
59
|
+
* @param options The base URL and default headers.
|
|
60
|
+
*/
|
|
41
61
|
constructor(options?: HttpClientOptions);
|
|
62
|
+
/** Gets the base URL used for relative requests. */
|
|
42
63
|
get baseURL(): string;
|
|
64
|
+
/** Gets the normalized default request headers. */
|
|
43
65
|
get defaultHeaders(): Record<string, string>;
|
|
66
|
+
/** Replaces the default request headers. */
|
|
44
67
|
set defaultHeaders(headers: Record<string, string>);
|
|
68
|
+
/**
|
|
69
|
+
* Sets a default request header.
|
|
70
|
+
*
|
|
71
|
+
* @param name The header name.
|
|
72
|
+
* @param value The header value.
|
|
73
|
+
*/
|
|
45
74
|
setHeader(name: string, value: string): void;
|
|
75
|
+
/**
|
|
76
|
+
* Sends an HTTP request.
|
|
77
|
+
*
|
|
78
|
+
* @param config The request configuration.
|
|
79
|
+
* @returns The response with its parsed body.
|
|
80
|
+
* @throws An {@link HttpError} when the response status is not successful.
|
|
81
|
+
*/
|
|
46
82
|
request<T = unknown>(config: HttpRequestConfig): Promise<HttpResponse<T>>;
|
|
83
|
+
/**
|
|
84
|
+
* Sends an HTTP request, defaulting to GET.
|
|
85
|
+
*
|
|
86
|
+
* @param url The absolute URL or path relative to the client's base URL.
|
|
87
|
+
* @param options Additional request options. The `method` and `url` options override the defaults.
|
|
88
|
+
* @returns The response with its parsed body.
|
|
89
|
+
*/
|
|
47
90
|
get<T = unknown>(url: string, options?: Partial<HttpRequestConfig>): Promise<HttpResponse<T>>;
|
|
48
91
|
private buildUrl;
|
|
49
92
|
private normalizeHeaders;
|
|
@@ -52,9 +95,24 @@ export declare class HttpClient {
|
|
|
52
95
|
* Error thrown when an HTTP request fails.
|
|
53
96
|
*/
|
|
54
97
|
export declare class HttpError extends Error {
|
|
98
|
+
/** The unsuccessful HTTP response. */
|
|
55
99
|
readonly response: HttpResponse;
|
|
100
|
+
/** The configuration used for the request. */
|
|
56
101
|
readonly config: HttpRequestConfig;
|
|
102
|
+
/** The HTTP status code. */
|
|
57
103
|
readonly status: number;
|
|
104
|
+
/**
|
|
105
|
+
* Creates an HTTP request error.
|
|
106
|
+
*
|
|
107
|
+
* @param message The error message.
|
|
108
|
+
* @param response The unsuccessful response.
|
|
109
|
+
* @param config The request configuration.
|
|
110
|
+
*/
|
|
58
111
|
constructor(message: string, response: HttpResponse, config: HttpRequestConfig);
|
|
112
|
+
/**
|
|
113
|
+
* Returns a serializable representation of the error.
|
|
114
|
+
*
|
|
115
|
+
* @returns The error, request, and response details.
|
|
116
|
+
*/
|
|
59
117
|
toJSON(): Record<string, unknown>;
|
|
60
118
|
}
|
package/dist/src/httpClient.js
CHANGED
|
@@ -12,23 +12,44 @@ const errorHelper_1 = require("./errorHelper");
|
|
|
12
12
|
* A lightweight HTTP client built on native fetch.
|
|
13
13
|
*/
|
|
14
14
|
class HttpClient {
|
|
15
|
+
/**
|
|
16
|
+
* Creates an HTTP client.
|
|
17
|
+
*
|
|
18
|
+
* @param options The base URL and default headers.
|
|
19
|
+
*/
|
|
15
20
|
constructor(options = {}) {
|
|
16
21
|
var _a;
|
|
17
22
|
this._baseURL = (_a = options.baseURL) !== null && _a !== void 0 ? _a : '';
|
|
18
23
|
this._defaultHeaders = this.normalizeHeaders(options.headers);
|
|
19
24
|
}
|
|
25
|
+
/** Gets the base URL used for relative requests. */
|
|
20
26
|
get baseURL() {
|
|
21
27
|
return this._baseURL;
|
|
22
28
|
}
|
|
29
|
+
/** Gets the normalized default request headers. */
|
|
23
30
|
get defaultHeaders() {
|
|
24
31
|
return this._defaultHeaders;
|
|
25
32
|
}
|
|
33
|
+
/** Replaces the default request headers. */
|
|
26
34
|
set defaultHeaders(headers) {
|
|
27
35
|
this._defaultHeaders = this.normalizeHeaders(headers);
|
|
28
36
|
}
|
|
37
|
+
/**
|
|
38
|
+
* Sets a default request header.
|
|
39
|
+
*
|
|
40
|
+
* @param name The header name.
|
|
41
|
+
* @param value The header value.
|
|
42
|
+
*/
|
|
29
43
|
setHeader(name, value) {
|
|
30
44
|
this._defaultHeaders[name.toLowerCase()] = value;
|
|
31
45
|
}
|
|
46
|
+
/**
|
|
47
|
+
* Sends an HTTP request.
|
|
48
|
+
*
|
|
49
|
+
* @param config The request configuration.
|
|
50
|
+
* @returns The response with its parsed body.
|
|
51
|
+
* @throws An {@link HttpError} when the response status is not successful.
|
|
52
|
+
*/
|
|
32
53
|
async request(config) {
|
|
33
54
|
var _a, _b, _c;
|
|
34
55
|
const url = this.buildUrl(config.url, config.params);
|
|
@@ -100,6 +121,13 @@ class HttpClient {
|
|
|
100
121
|
}
|
|
101
122
|
return httpResponse;
|
|
102
123
|
}
|
|
124
|
+
/**
|
|
125
|
+
* Sends an HTTP request, defaulting to GET.
|
|
126
|
+
*
|
|
127
|
+
* @param url The absolute URL or path relative to the client's base URL.
|
|
128
|
+
* @param options Additional request options. The `method` and `url` options override the defaults.
|
|
129
|
+
* @returns The response with its parsed body.
|
|
130
|
+
*/
|
|
103
131
|
async get(url, options) {
|
|
104
132
|
return this.request({ method: 'get', url, ...options });
|
|
105
133
|
}
|
|
@@ -145,6 +173,13 @@ exports.HttpClient = HttpClient;
|
|
|
145
173
|
* Error thrown when an HTTP request fails.
|
|
146
174
|
*/
|
|
147
175
|
class HttpError extends Error {
|
|
176
|
+
/**
|
|
177
|
+
* Creates an HTTP request error.
|
|
178
|
+
*
|
|
179
|
+
* @param message The error message.
|
|
180
|
+
* @param response The unsuccessful response.
|
|
181
|
+
* @param config The request configuration.
|
|
182
|
+
*/
|
|
148
183
|
constructor(message, response, config) {
|
|
149
184
|
super(message);
|
|
150
185
|
this.name = 'HttpError';
|
|
@@ -152,6 +187,11 @@ class HttpError extends Error {
|
|
|
152
187
|
this.config = config;
|
|
153
188
|
this.status = response.status;
|
|
154
189
|
}
|
|
190
|
+
/**
|
|
191
|
+
* Returns a serializable representation of the error.
|
|
192
|
+
*
|
|
193
|
+
* @returns The error, request, and response details.
|
|
194
|
+
*/
|
|
155
195
|
toJSON() {
|
|
156
196
|
return {
|
|
157
197
|
message: this.message,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"httpClient.js","sourceRoot":"","sources":["../../src/httpClient.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,gEAA4D;AAC5D,6CAAsC;AACtC,+CAAsC;
|
|
1
|
+
{"version":3,"file":"httpClient.js","sourceRoot":"","sources":["../../src/httpClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,11 +16,17 @@
|
|
|
16
16
|
* longer needs to import types from `express` at compile time.
|
|
17
17
|
*/
|
|
18
18
|
export interface WebResponse {
|
|
19
|
+
/** Sets the HTTP status code. */
|
|
19
20
|
status(code: number): this;
|
|
21
|
+
/** Sets a response header. */
|
|
20
22
|
setHeader(name: string, value: string): this;
|
|
23
|
+
/** Sends an optional response body. */
|
|
21
24
|
send(body?: unknown): this;
|
|
25
|
+
/** Ends the response. */
|
|
22
26
|
end(): this;
|
|
27
|
+
/** Indicates whether response headers have been sent. */
|
|
23
28
|
headersSent: boolean;
|
|
29
|
+
/** Indicates whether the response stream has ended. */
|
|
24
30
|
writableEnded: boolean;
|
|
25
31
|
}
|
|
26
32
|
/**
|
|
@@ -37,5 +43,6 @@ export type NextFunction = (err?: any) => void;
|
|
|
37
43
|
* (`req.params.conversationId`) without coupling to Express's `Request` type.
|
|
38
44
|
*/
|
|
39
45
|
export interface WebRequestParamsCarrier {
|
|
46
|
+
/** Route parameters parsed from the request URL. */
|
|
40
47
|
params?: Record<string, string | undefined>;
|
|
41
48
|
}
|
|
@@ -3,6 +3,12 @@ import { TurnContext } from './turnContext';
|
|
|
3
3
|
* Interface for middleware.
|
|
4
4
|
*/
|
|
5
5
|
export interface Middleware {
|
|
6
|
+
/**
|
|
7
|
+
* Processes a turn and optionally continues the middleware chain.
|
|
8
|
+
*
|
|
9
|
+
* @param context The current turn context.
|
|
10
|
+
* @param next The callback that continues the middleware chain.
|
|
11
|
+
*/
|
|
6
12
|
onTurn: (context: TurnContext, next: () => Promise<void>) => Promise<void>;
|
|
7
13
|
}
|
|
8
14
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"middlewareSet.js","sourceRoot":"","sources":["../../src/middlewareSet.ts"],"names":[],"mappings":";;;AAAA,oGAAoG;AACpG,gEAA4D;AAE5D,kEAAmD;AACnD,+CAAsC;AAEtC,MAAM,MAAM,GAAG,IAAA,wBAAK,EAAC,mBAAmB,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"middlewareSet.js","sourceRoot":"","sources":["../../src/middlewareSet.ts"],"names":[],"mappings":";;;AAAA,oGAAoG;AACpG,gEAA4D;AAE5D,kEAAmD;AACnD,+CAAsC;AAEtC,MAAM,MAAM,GAAG,IAAA,wBAAK,EAAC,mBAAmB,CAAC,CAAA;AAoBzC;;GAEG;AACH;IAGE;;;OAGG;IACH,YAAa,GAAG,WAAkD;QANjD,eAAU,GAAwB,EAAE,CAAA;QAOnD,IAAI,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,CAAA;IAC1B,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,MAAM,CAAE,OAAoB,EAAE,IAAyB;QAC3D,OAAO,MAAM,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;IACtC,CAAC;IAED;;;;OAIG;IACH,GAAG,CAAE,GAAG,WAAkD;QACxD,WAAW,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;YAC7B,IAAI,OAAO,MAAM,KAAK,UAAU,IAAI,CAAC,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;gBAClF,IAAI,CAAC,UAAU,CAAC,IAAI,CAClB,OAAO,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC,MAAM,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,CACpG,CAAA;YACH,CAAC;iBAAM,CAAC;gBACN,MAAM,iCAAe,CAAC,iBAAiB,CAAC,KAAK,EAAE,oBAAM,CAAC,2BAA2B,CAAC,CAAA;YACpF,CAAC;QACH,CAAC,CAAC,CAAA;QACF,OAAO,IAAI,CAAA;IACb,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,GAAG,CAAE,OAAoB,EAAE,IAAyB;QACxD,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,WAAW,CACtC,CAAC,WAAW,EAAE,cAAc,EAAE,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,MAAM,cAAc,CAAC,OAAO,EAAE,WAAW,CAAC,EACzF,IAAI,CACH,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;YACd,MAAM,CAAC,KAAK,CAAC,4BAA4B,EAAE,GAAG,CAAC,CAAA;YAC/C,MAAM,GAAG,CAAA;QACX,CAAC,CAAC,CAAA;IACJ,CAAC;CACF"}
|
|
@@ -7,6 +7,7 @@ import { HeaderPropagationCollection } from '../headerPropagation';
|
|
|
7
7
|
* Client for managing user tokens.
|
|
8
8
|
*/
|
|
9
9
|
export declare class UserTokenClient {
|
|
10
|
+
/** The HTTP client used for token service requests. */
|
|
10
11
|
client: HttpClient;
|
|
11
12
|
private msAppId;
|
|
12
13
|
private authProvider?;
|
|
@@ -104,6 +105,11 @@ export declare class UserTokenClient {
|
|
|
104
105
|
* @returns A promise that resolves to the AAD tokens.
|
|
105
106
|
*/
|
|
106
107
|
getAadTokens(userId: string, connectionName: string, channelIdComposite: string, resourceUrls: AadResourceUrls): Promise<Record<string, TokenResponse>>;
|
|
108
|
+
/**
|
|
109
|
+
* Replaces the bearer token used for token service requests.
|
|
110
|
+
*
|
|
111
|
+
* @param token The access token.
|
|
112
|
+
*/
|
|
107
113
|
updateAuthToken(token: string): void;
|
|
108
114
|
private executeRequest;
|
|
109
115
|
private ensureAuthorizationHeader;
|
|
@@ -32,6 +32,13 @@ function formatHttpErrorMessage(error) {
|
|
|
32
32
|
* Client for managing user tokens.
|
|
33
33
|
*/
|
|
34
34
|
class UserTokenClient {
|
|
35
|
+
/**
|
|
36
|
+
* Initializes the client from an application ID or an HTTP client.
|
|
37
|
+
*
|
|
38
|
+
* @param param The application ID or configured HTTP client.
|
|
39
|
+
* @param authProvider The optional provider used to acquire an access token lazily.
|
|
40
|
+
* @param authScope The optional access-token scope.
|
|
41
|
+
*/
|
|
35
42
|
constructor(param, authProvider, authScope) {
|
|
36
43
|
this.msAppId = '';
|
|
37
44
|
this.authInitialized = false;
|
|
@@ -228,6 +235,11 @@ class UserTokenClient {
|
|
|
228
235
|
return response.data;
|
|
229
236
|
});
|
|
230
237
|
}
|
|
238
|
+
/**
|
|
239
|
+
* Replaces the bearer token used for token service requests.
|
|
240
|
+
*
|
|
241
|
+
* @param token The access token.
|
|
242
|
+
*/
|
|
231
243
|
updateAuthToken(token) {
|
|
232
244
|
this.client.setHeader('Authorization', `Bearer ${token}`);
|
|
233
245
|
this.authInitialized = true;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"userTokenClient.js","sourceRoot":"","sources":["../../../src/oauth/userTokenClient.ts"],"names":[],"mappings":";AAAA,4DAA4D;AAC5D,kCAAkC;;;AAElC,8CAAqD;AACrD,gEAA6F;AAC7F,kEAAmD;AACnD,8DAAmE;AAEnE,sDAAwE;AAExE,4DAAqF;AACrF,6DAA8D;AAC9D,kEAAmD;AACnD,oDAAkE;AAClE,gDAAuC;AAEvC,MAAM,MAAM,GAAG,IAAA,wBAAK,EAAC,0BAA0B,CAAC,CAAA;AAEhD,SAAS,sBAAsB,CAAE,KAAgB;;IAC/C,MAAM,YAAY,GAAG,MAAA,KAAK,CAAC,QAAQ,0CAAE,IAAI,CAAA;IACzC,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;QAC/B,OAAO,KAAK,CAAC,OAAO,CAAA;IACtB,CAAC;IAED,IAAI,CAAC;QACH,MAAM,sBAAsB,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAA;QAC3D,OAAO,sBAAsB,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,OAAO,KAAK,sBAAsB,EAAE,CAAA;IAC7G,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC,OAAO,CAAA;IACtB,CAAC;AACH,CAAC;AAED;;GAEG;AACH;
|
|
1
|
+
{"version":3,"file":"userTokenClient.js","sourceRoot":"","sources":["../../../src/oauth/userTokenClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,6 +15,11 @@ export interface OutboundHostValidatorOptions {
|
|
|
15
15
|
* Defaults to `true`.
|
|
16
16
|
*/
|
|
17
17
|
includeDefaultMicrosoftHosts?: boolean;
|
|
18
|
+
/**
|
|
19
|
+
* Allows allowlisted HTTPS destinations to use private, shared (RFC 6598),
|
|
20
|
+
* loopback, link-local, or unspecified addresses. Defaults to `false`.
|
|
21
|
+
*/
|
|
22
|
+
allowPrivateNetworkAddresses?: boolean;
|
|
18
23
|
/** Additional exact hosts or host suffixes to allow.
|
|
19
24
|
* An entry matches a request host when the host equals the entry or is a subdomain of it (e.g. `contoso.com` matches `contoso.com` and `files.contoso.com`).
|
|
20
25
|
* A leading `*.` is accepted and ignored (treated as a suffix). Ports and paths are ignored if provided.
|
|
@@ -23,20 +28,47 @@ export interface OutboundHostValidatorOptions {
|
|
|
23
28
|
}
|
|
24
29
|
/** A policy that decides whether an outbound URL is safe to request. */
|
|
25
30
|
export interface OutboundUrlPolicy {
|
|
31
|
+
/** Indicates whether URL validation is enforced. */
|
|
26
32
|
readonly enabled: boolean;
|
|
33
|
+
/**
|
|
34
|
+
* Determines whether an outbound URL is allowed.
|
|
35
|
+
*
|
|
36
|
+
* @param url The URL to validate.
|
|
37
|
+
* @returns `true` when the URL is allowed.
|
|
38
|
+
*/
|
|
27
39
|
isAllowed(url: string | URL | null | undefined): boolean;
|
|
28
40
|
}
|
|
29
41
|
/**
|
|
30
42
|
* Shared allowlist policy for server-side outbound requests.
|
|
31
43
|
*
|
|
32
44
|
* A configured suffix matches both the exact host and its subdomains. The
|
|
33
|
-
* policy is disabled by default to preserve existing SDK behavior.
|
|
45
|
+
* policy is disabled by default to preserve existing SDK behavior. Enabled
|
|
46
|
+
* policies require HTTPS without userinfo and restrict private addresses.
|
|
47
|
+
* Attachment downloaders additionally validate DNS answers and redirect hops.
|
|
34
48
|
*/
|
|
35
49
|
export declare class OutboundHostValidator implements OutboundUrlPolicy {
|
|
50
|
+
/** Indicates whether allowlist enforcement is enabled. */
|
|
36
51
|
readonly enabled: boolean;
|
|
37
52
|
private readonly suffixes;
|
|
53
|
+
private readonly allowPrivateNetworkAddresses;
|
|
54
|
+
/**
|
|
55
|
+
* Creates an outbound host validator.
|
|
56
|
+
*
|
|
57
|
+
* @param options The allowlist configuration.
|
|
58
|
+
*/
|
|
38
59
|
constructor(options?: OutboundHostValidatorOptions);
|
|
60
|
+
/**
|
|
61
|
+
* Determines whether a URL's host matches the configured allowlist.
|
|
62
|
+
*
|
|
63
|
+
* @param input The absolute URL to validate.
|
|
64
|
+
* @returns `true` when validation is disabled or the host is allowed.
|
|
65
|
+
*/
|
|
39
66
|
isAllowed(input: string | URL | null | undefined): boolean;
|
|
67
|
+
/**
|
|
68
|
+
* Checks the host policy and all resolved destination addresses before an attachment request.
|
|
69
|
+
* DNS prevalidation does not pin the HTTP connection to the checked addresses.
|
|
70
|
+
*/
|
|
71
|
+
isAllowedAsync(input: string | URL | null | undefined): Promise<boolean>;
|
|
40
72
|
}
|
|
41
73
|
/**
|
|
42
74
|
* Loads validator options from environment variables compatible with the
|
|
@@ -10,6 +10,7 @@ exports.createOutboundHostValidator = createOutboundHostValidator;
|
|
|
10
10
|
const configuration_1 = require("./configuration/configuration");
|
|
11
11
|
const environmentConfiguration_1 = require("./configuration/environmentConfiguration");
|
|
12
12
|
const utils_1 = require("./utils");
|
|
13
|
+
const outboundUrl_1 = require("./utils/outboundUrl");
|
|
13
14
|
/** Hosts used by Microsoft channel callbacks and hosted attachments. */
|
|
14
15
|
const DEFAULT_MICROSOFT_HOSTS = Object.freeze([
|
|
15
16
|
'botframework.com',
|
|
@@ -25,39 +26,76 @@ const DEFAULT_MICROSOFT_HOSTS = Object.freeze([
|
|
|
25
26
|
* Shared allowlist policy for server-side outbound requests.
|
|
26
27
|
*
|
|
27
28
|
* A configured suffix matches both the exact host and its subdomains. The
|
|
28
|
-
* policy is disabled by default to preserve existing SDK behavior.
|
|
29
|
+
* policy is disabled by default to preserve existing SDK behavior. Enabled
|
|
30
|
+
* policies require HTTPS without userinfo and restrict private addresses.
|
|
31
|
+
* Attachment downloaders additionally validate DNS answers and redirect hops.
|
|
29
32
|
*/
|
|
30
33
|
class OutboundHostValidator {
|
|
34
|
+
/**
|
|
35
|
+
* Creates an outbound host validator.
|
|
36
|
+
*
|
|
37
|
+
* @param options The allowlist configuration.
|
|
38
|
+
*/
|
|
31
39
|
constructor(options = {}) {
|
|
32
|
-
var _a, _b, _c;
|
|
40
|
+
var _a, _b, _c, _d;
|
|
33
41
|
const resolved = options.configurationContext
|
|
34
42
|
? resolveOutboundHostValidatorOptions(options)
|
|
35
43
|
: options;
|
|
36
44
|
this.enabled = (_a = resolved.enabled) !== null && _a !== void 0 ? _a : false;
|
|
45
|
+
this.allowPrivateNetworkAddresses = (_b = resolved.allowPrivateNetworkAddresses) !== null && _b !== void 0 ? _b : false;
|
|
37
46
|
const suffixes = new Set();
|
|
38
|
-
if ((
|
|
39
|
-
for (const host of DEFAULT_MICROSOFT_HOSTS)
|
|
47
|
+
if ((_c = resolved.includeDefaultMicrosoftHosts) !== null && _c !== void 0 ? _c : true) {
|
|
48
|
+
for (const host of DEFAULT_MICROSOFT_HOSTS) {
|
|
40
49
|
suffixes.add(host);
|
|
50
|
+
}
|
|
41
51
|
}
|
|
42
|
-
for (const host of (
|
|
52
|
+
for (const host of (_d = resolved.hosts) !== null && _d !== void 0 ? _d : []) {
|
|
43
53
|
const normalized = normalizeConfiguredHost(host);
|
|
44
|
-
if (normalized)
|
|
54
|
+
if (normalized) {
|
|
45
55
|
suffixes.add(normalized);
|
|
56
|
+
}
|
|
46
57
|
}
|
|
47
58
|
this.suffixes = suffixes;
|
|
48
59
|
}
|
|
60
|
+
/**
|
|
61
|
+
* Determines whether a URL's host matches the configured allowlist.
|
|
62
|
+
*
|
|
63
|
+
* @param input The absolute URL to validate.
|
|
64
|
+
* @returns `true` when validation is disabled or the host is allowed.
|
|
65
|
+
*/
|
|
49
66
|
isAllowed(input) {
|
|
50
|
-
if (!this.enabled)
|
|
67
|
+
if (!this.enabled) {
|
|
51
68
|
return true;
|
|
52
|
-
|
|
53
|
-
|
|
69
|
+
}
|
|
70
|
+
const url = (0, outboundUrl_1.getHttpsUrl)(input);
|
|
71
|
+
if (!url) {
|
|
72
|
+
return false;
|
|
73
|
+
}
|
|
74
|
+
const host = normalizeHostname(url.hostname);
|
|
75
|
+
if (!host || (!this.allowPrivateNetworkAddresses && (0, outboundUrl_1.isLocalOrBlockedHost)(host))) {
|
|
54
76
|
return false;
|
|
77
|
+
}
|
|
55
78
|
for (const suffix of this.suffixes) {
|
|
56
|
-
if (host === suffix || host.endsWith(`.${suffix}`))
|
|
79
|
+
if (host === suffix || host.endsWith(`.${suffix}`)) {
|
|
57
80
|
return true;
|
|
81
|
+
}
|
|
58
82
|
}
|
|
59
83
|
return false;
|
|
60
84
|
}
|
|
85
|
+
/**
|
|
86
|
+
* Checks the host policy and all resolved destination addresses before an attachment request.
|
|
87
|
+
* DNS prevalidation does not pin the HTTP connection to the checked addresses.
|
|
88
|
+
*/
|
|
89
|
+
async isAllowedAsync(input) {
|
|
90
|
+
if (!this.isAllowed(input)) {
|
|
91
|
+
return false;
|
|
92
|
+
}
|
|
93
|
+
if (!this.enabled) {
|
|
94
|
+
return true;
|
|
95
|
+
}
|
|
96
|
+
const url = (0, outboundUrl_1.getHttpsUrl)(input);
|
|
97
|
+
return url !== undefined && await (0, outboundUrl_1.hasAllowedOutboundAddresses)(url, this.allowPrivateNetworkAddresses);
|
|
98
|
+
}
|
|
61
99
|
}
|
|
62
100
|
exports.OutboundHostValidator = OutboundHostValidator;
|
|
63
101
|
/**
|
|
@@ -78,36 +116,33 @@ function resolveOutboundHostValidatorOptions(options) {
|
|
|
78
116
|
const external = (0, configuration_1.getConfigurationSnapshot)(options.configurationContext);
|
|
79
117
|
const fromEnv = loadOutboundHostValidatorOptionsFromEnv();
|
|
80
118
|
const direct = {};
|
|
81
|
-
if (options.enabled !== undefined)
|
|
119
|
+
if (options.enabled !== undefined) {
|
|
82
120
|
direct.enabled = options.enabled;
|
|
121
|
+
}
|
|
83
122
|
if (options.includeDefaultMicrosoftHosts !== undefined) {
|
|
84
123
|
direct.includeDefaultMicrosoftHosts = options.includeDefaultMicrosoftHosts;
|
|
85
124
|
}
|
|
86
|
-
if (options.hosts !== undefined)
|
|
125
|
+
if (options.hosts !== undefined) {
|
|
87
126
|
direct.hosts = options.hosts;
|
|
88
|
-
return (0, utils_1.mergeDefined)(external.fallback.outboundHostValidator, fromEnv, external.overrideEnvironment.outboundHostValidator, direct, external.enforce.outboundHostValidator);
|
|
89
|
-
}
|
|
90
|
-
function getUrlHost(input) {
|
|
91
|
-
if (!input)
|
|
92
|
-
return undefined;
|
|
93
|
-
try {
|
|
94
|
-
const url = input instanceof URL ? input : new URL(input);
|
|
95
|
-
return normalizeHostname(url.hostname);
|
|
96
127
|
}
|
|
97
|
-
|
|
98
|
-
|
|
128
|
+
if (options.allowPrivateNetworkAddresses !== undefined) {
|
|
129
|
+
direct.allowPrivateNetworkAddresses = options.allowPrivateNetworkAddresses;
|
|
99
130
|
}
|
|
131
|
+
return (0, utils_1.mergeDefined)(external.fallback.outboundHostValidator, fromEnv, external.overrideEnvironment.outboundHostValidator, direct, external.enforce.outboundHostValidator);
|
|
100
132
|
}
|
|
101
133
|
function normalizeConfiguredHost(input) {
|
|
102
134
|
let candidate = input === null || input === void 0 ? void 0 : input.trim();
|
|
103
|
-
if (!candidate)
|
|
135
|
+
if (!candidate) {
|
|
104
136
|
return undefined;
|
|
105
|
-
|
|
137
|
+
}
|
|
138
|
+
if (candidate.startsWith('*.')) {
|
|
106
139
|
candidate = candidate.slice(2);
|
|
140
|
+
}
|
|
107
141
|
try {
|
|
108
142
|
const absolute = new URL(candidate);
|
|
109
|
-
if (absolute.hostname)
|
|
143
|
+
if (absolute.hostname) {
|
|
110
144
|
return normalizeHostname(absolute.hostname);
|
|
145
|
+
}
|
|
111
146
|
}
|
|
112
147
|
catch {
|
|
113
148
|
// A bare host, host:port, or host/path is handled below.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"outboundHostValidator.js","sourceRoot":"","sources":["../../src/outboundHostValidator.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;AAEH,iEAGsC;AACtC,uFAA6F;AAC7F,mCAAsC;
|
|
1
|
+
{"version":3,"file":"outboundHostValidator.js","sourceRoot":"","sources":["../../src/outboundHostValidator.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,13 +7,39 @@ declare class FileStorageInternals {
|
|
|
7
7
|
private readonly statePath;
|
|
8
8
|
private readonly versionsPath;
|
|
9
9
|
private readonly expirationsPath;
|
|
10
|
+
/** The stored values keyed by storage key. */
|
|
10
11
|
readonly state: Record<string, unknown>;
|
|
12
|
+
/** The current version associated with each storage key. */
|
|
11
13
|
readonly versions: Record<string, string>;
|
|
14
|
+
/** The expiration time associated with each storage key, expressed as Unix time in milliseconds. */
|
|
12
15
|
readonly expirations: Record<string, number>;
|
|
16
|
+
/**
|
|
17
|
+
* Creates the shared file storage implementation.
|
|
18
|
+
*
|
|
19
|
+
* @param folder The folder containing the storage files.
|
|
20
|
+
*/
|
|
13
21
|
constructor(folder: string);
|
|
22
|
+
/** Writes the current storage state and metadata to disk. */
|
|
14
23
|
flush(): void;
|
|
24
|
+
/**
|
|
25
|
+
* Gets the current version for a key, creating one when necessary.
|
|
26
|
+
*
|
|
27
|
+
* @param key The storage key.
|
|
28
|
+
* @returns The current version.
|
|
29
|
+
*/
|
|
15
30
|
getOrCreateVersion(key: string): string;
|
|
31
|
+
/**
|
|
32
|
+
* Determines whether a stored value has expired.
|
|
33
|
+
*
|
|
34
|
+
* @param key The storage key.
|
|
35
|
+
* @returns `true` when the value has expired; otherwise, `false`.
|
|
36
|
+
*/
|
|
16
37
|
isExpired(key: string): boolean;
|
|
38
|
+
/**
|
|
39
|
+
* Removes a value and its version and expiration metadata.
|
|
40
|
+
*
|
|
41
|
+
* @param key The storage key.
|
|
42
|
+
*/
|
|
17
43
|
remove(key: string): void;
|
|
18
44
|
}
|
|
19
45
|
/**
|