@microsoft/agents-hosting 1.6.1 → 1.7.0-beta.1.g8bcd4f11a7

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 (87) hide show
  1. package/dist/package.json +3 -3
  2. package/dist/src/app/streaming/streamingResponse.d.ts +11 -0
  3. package/dist/src/app/streaming/streamingResponse.js +21 -0
  4. package/dist/src/app/streaming/streamingResponse.js.map +1 -1
  5. package/dist/src/auth/MemoryCache.d.ts +2 -1
  6. package/dist/src/auth/MemoryCache.js +7 -1
  7. package/dist/src/auth/MemoryCache.js.map +1 -1
  8. package/dist/src/auth/authConfiguration.d.ts +1 -1
  9. package/dist/src/auth/authConfiguration.js +36 -1
  10. package/dist/src/auth/authConfiguration.js.map +1 -1
  11. package/dist/src/auth/authConstants.d.ts +7 -7
  12. package/dist/src/auth/authConstants.js.map +1 -1
  13. package/dist/src/auth/connectionManager.d.ts +92 -0
  14. package/dist/src/auth/{msalConnectionManager.js → connectionManager.js} +50 -48
  15. package/dist/src/auth/connectionManager.js.map +1 -0
  16. package/dist/src/auth/index.d.ts +5 -3
  17. package/dist/src/auth/index.js +5 -3
  18. package/dist/src/auth/index.js.map +1 -1
  19. package/dist/src/auth/jwt-middleware.d.ts +6 -0
  20. package/dist/src/auth/jwt-middleware.js +32 -1
  21. package/dist/src/auth/jwt-middleware.js.map +1 -1
  22. package/dist/src/auth/msal/msalConnectionManager.d.ts +17 -0
  23. package/dist/src/auth/msal/msalConnectionManager.js +50 -0
  24. package/dist/src/auth/msal/msalConnectionManager.js.map +1 -0
  25. package/dist/src/auth/msal/msalConnectionSettings.d.ts +68 -0
  26. package/dist/src/auth/msal/msalConnectionSettings.js +7 -0
  27. package/dist/src/auth/msal/msalConnectionSettings.js.map +1 -0
  28. package/dist/src/auth/{msalTokenCredential.d.ts → msal/msalTokenCredential.d.ts} +1 -1
  29. package/dist/src/auth/{msalTokenCredential.js → msal/msalTokenCredential.js} +2 -2
  30. package/dist/src/auth/msal/msalTokenCredential.js.map +1 -0
  31. package/dist/src/auth/{msalTokenProvider.d.ts → msal/msalTokenProvider.d.ts} +23 -3
  32. package/dist/src/auth/{msalTokenProvider.js → msal/msalTokenProvider.js} +264 -160
  33. package/dist/src/auth/msal/msalTokenProvider.js.map +1 -0
  34. package/dist/src/auth/settings.d.ts +142 -133
  35. package/dist/src/auth/settings.js +49 -5
  36. package/dist/src/auth/settings.js.map +1 -1
  37. package/dist/src/auth/sidecar/sidecarAuthProvider.d.ts +74 -0
  38. package/dist/src/auth/sidecar/sidecarAuthProvider.js +181 -0
  39. package/dist/src/auth/sidecar/sidecarAuthProvider.js.map +1 -0
  40. package/dist/src/auth/sidecar/sidecarConnectionSettings.d.ts +65 -0
  41. package/dist/src/auth/sidecar/sidecarConnectionSettings.js +7 -0
  42. package/dist/src/auth/sidecar/sidecarConnectionSettings.js.map +1 -0
  43. package/dist/src/auth/sidecar/sidecarHttpClient.d.ts +95 -0
  44. package/dist/src/auth/sidecar/sidecarHttpClient.js +406 -0
  45. package/dist/src/auth/sidecar/sidecarHttpClient.js.map +1 -0
  46. package/dist/src/auth/sidecar/sidecarModels.d.ts +110 -0
  47. package/dist/src/auth/sidecar/sidecarModels.js +48 -0
  48. package/dist/src/auth/sidecar/sidecarModels.js.map +1 -0
  49. package/dist/src/auth/sidecar/sidecarTokenExpiry.d.ts +13 -0
  50. package/dist/src/auth/sidecar/sidecarTokenExpiry.js +39 -0
  51. package/dist/src/auth/sidecar/sidecarTokenExpiry.js.map +1 -0
  52. package/dist/src/cloudAdapter.js +1 -1
  53. package/dist/src/cloudAdapter.js.map +1 -1
  54. package/dist/src/errorHelper.js +96 -0
  55. package/dist/src/errorHelper.js.map +1 -1
  56. package/dist/src/index.d.ts +1 -1
  57. package/dist/src/index.js +2 -1
  58. package/dist/src/index.js.map +1 -1
  59. package/dist/src/oauth/userTokenClient.d.ts +12 -0
  60. package/dist/src/oauth/userTokenClient.js +28 -8
  61. package/dist/src/oauth/userTokenClient.js.map +1 -1
  62. package/package.json +3 -3
  63. package/src/app/streaming/streamingResponse.ts +24 -1
  64. package/src/auth/MemoryCache.ts +7 -1
  65. package/src/auth/authConfiguration.ts +36 -3
  66. package/src/auth/authConstants.ts +7 -7
  67. package/src/auth/{msalConnectionManager.ts → connectionManager.ts} +65 -61
  68. package/src/auth/index.ts +5 -3
  69. package/src/auth/jwt-middleware.ts +31 -1
  70. package/src/auth/msal/msalConnectionManager.ts +55 -0
  71. package/src/auth/msal/msalConnectionSettings.ts +79 -0
  72. package/src/auth/{msalTokenCredential.ts → msal/msalTokenCredential.ts} +2 -1
  73. package/src/auth/{msalTokenProvider.ts → msal/msalTokenProvider.ts} +337 -156
  74. package/src/auth/settings.ts +131 -76
  75. package/src/auth/sidecar/sidecarAuthProvider.ts +234 -0
  76. package/src/auth/sidecar/sidecarConnectionSettings.ts +72 -0
  77. package/src/auth/sidecar/sidecarHttpClient.ts +443 -0
  78. package/src/auth/sidecar/sidecarModels.ts +153 -0
  79. package/src/auth/sidecar/sidecarTokenExpiry.ts +35 -0
  80. package/src/cloudAdapter.ts +1 -1
  81. package/src/errorHelper.ts +110 -0
  82. package/src/index.ts +1 -1
  83. package/src/oauth/userTokenClient.ts +43 -9
  84. package/dist/src/auth/msalConnectionManager.d.ts +0 -64
  85. package/dist/src/auth/msalConnectionManager.js.map +0 -1
  86. package/dist/src/auth/msalTokenCredential.js.map +0 -1
  87. package/dist/src/auth/msalTokenProvider.js.map +0 -1
@@ -0,0 +1,406 @@
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.SidecarHttpClient = void 0;
8
+ const node_net_1 = require("node:net");
9
+ const agents_telemetry_1 = require("@microsoft/agents-telemetry");
10
+ const agents_activity_1 = require("@microsoft/agents-activity");
11
+ const errorHelper_1 = require("../../errorHelper");
12
+ const sidecarModels_1 = require("./sidecarModels");
13
+ const logger = (0, agents_telemetry_1.debug)('agents:sidecar');
14
+ const DEFAULT_RETRY_BACKOFF_BASE_MS = 2000;
15
+ /**
16
+ * Reusable HTTP client for communicating with the Microsoft Entra Agent ID sidecar (agent container).
17
+ * Handles URL construction, query parameter building, response parsing, retry, and SSRF-safe base
18
+ * URL validation. Uses the native `fetch` API (Node.js 20+).
19
+ */
20
+ class SidecarHttpClient {
21
+ /**
22
+ * Creates a new {@link SidecarHttpClient}.
23
+ * @param baseUrl The resolved (and validated) sidecar base URL.
24
+ * @param timeoutMs Per-attempt request timeout in milliseconds.
25
+ * @param retryCount Number of retry attempts for transient failures (0 disables retries).
26
+ * @param retryBackoffBaseMs Base delay for exponential backoff; primarily a test seam.
27
+ */
28
+ constructor(baseUrl, timeoutMs = SidecarHttpClient.DEFAULT_TIMEOUT_MS, retryCount = SidecarHttpClient.DEFAULT_RETRY_COUNT, retryBackoffBaseMs = DEFAULT_RETRY_BACKOFF_BASE_MS) {
29
+ this._baseUrl = SidecarHttpClient.stripTrailingSlashes(baseUrl !== null && baseUrl !== void 0 ? baseUrl : SidecarHttpClient.resolveBaseUrl());
30
+ this._timeoutMs = Number.isFinite(timeoutMs) && timeoutMs > 0 ? timeoutMs : SidecarHttpClient.DEFAULT_TIMEOUT_MS;
31
+ this._retryCount = Number.isFinite(retryCount) ? Math.max(0, Math.floor(retryCount)) : SidecarHttpClient.DEFAULT_RETRY_COUNT;
32
+ this._retryBackoffBaseMs = Number.isFinite(retryBackoffBaseMs) && retryBackoffBaseMs >= 0 ? retryBackoffBaseMs : DEFAULT_RETRY_BACKOFF_BASE_MS;
33
+ }
34
+ /**
35
+ * Removes any trailing `/` characters from `value` using a linear scan. Avoids a regular
36
+ * expression so untrusted input with many `/` characters cannot trigger super-linear
37
+ * backtracking (ReDoS).
38
+ * @param value The string to trim.
39
+ * @returns `value` without trailing slashes.
40
+ */
41
+ static stripTrailingSlashes(value) {
42
+ let end = value.length;
43
+ while (end > 0 && value.charCodeAt(end - 1) === 47 /* '/' */) {
44
+ end--;
45
+ }
46
+ return end === value.length ? value : value.slice(0, end);
47
+ }
48
+ /**
49
+ * Resolves the sidecar base URL. Resolution order: `SIDECAR_URL` environment variable >
50
+ * `configuredUrl` > {@link DEFAULT_SIDECAR_BASE_URL}. Empty/whitespace values are treated as unset.
51
+ * @param configuredUrl The optional base URL from configuration.
52
+ * @returns The resolved base URL.
53
+ */
54
+ static resolveBaseUrl(configuredUrl) {
55
+ const envUrl = process.env.SIDECAR_URL;
56
+ if (envUrl && envUrl.trim()) {
57
+ return envUrl.trim();
58
+ }
59
+ return configuredUrl && configuredUrl.trim() ? configuredUrl.trim() : sidecarModels_1.DEFAULT_SIDECAR_BASE_URL;
60
+ }
61
+ /**
62
+ * Returns a copy of `raw` with any userinfo (credentials) removed, safe to include in logs and
63
+ * error messages. Falls back to a regex strip when `raw` is not a parseable URL.
64
+ */
65
+ static redactUrl(raw) {
66
+ try {
67
+ const u = new URL(raw);
68
+ if (u.username || u.password) {
69
+ u.username = '';
70
+ u.password = '';
71
+ }
72
+ return u.toString();
73
+ }
74
+ catch {
75
+ return raw.replace(/\/\/[^/@]*@/, '//');
76
+ }
77
+ }
78
+ /**
79
+ * Validates that the resolved sidecar base URL is safe to call. The URL must be a well-formed
80
+ * absolute http/https URL without userinfo. Unless `bypassLocalNetworkRestriction` is set, the host
81
+ * must also be a loopback address or a private network address (RFC 1918 / RFC 4193 / link-local) to
82
+ * avoid sending agent credentials off-box (SSRF safety).
83
+ * @param resolvedUrl The resolved sidecar base URL.
84
+ * @param bypassLocalNetworkRestriction Skip the loopback/private-address check (UNSAFE).
85
+ * @throws When the URL is malformed or points to a disallowed address.
86
+ */
87
+ static validateBaseUrl(resolvedUrl, bypassLocalNetworkRestriction) {
88
+ let uri;
89
+ try {
90
+ uri = new URL(resolvedUrl);
91
+ }
92
+ catch {
93
+ throw agents_activity_1.ExceptionHelper.generateException(Error, errorHelper_1.Errors.SidecarBaseUrlInvalid, undefined, { url: SidecarHttpClient.redactUrl(resolvedUrl) });
94
+ }
95
+ if (uri.protocol !== 'http:' && uri.protocol !== 'https:') {
96
+ throw agents_activity_1.ExceptionHelper.generateException(Error, errorHelper_1.Errors.SidecarBaseUrlInsecureScheme, undefined, { url: SidecarHttpClient.redactUrl(resolvedUrl) });
97
+ }
98
+ if (uri.username || uri.password) {
99
+ throw agents_activity_1.ExceptionHelper.generateException(Error, errorHelper_1.Errors.SidecarBaseUrlUserInfo, undefined, { url: SidecarHttpClient.redactUrl(resolvedUrl) });
100
+ }
101
+ if (bypassLocalNetworkRestriction) {
102
+ return;
103
+ }
104
+ if (SidecarHttpClient.isLoopbackOrPrivateHost(uri.hostname)) {
105
+ return;
106
+ }
107
+ throw agents_activity_1.ExceptionHelper.generateException(Error, errorHelper_1.Errors.SidecarBaseUrlNotLocal, undefined, { url: SidecarHttpClient.redactUrl(resolvedUrl) });
108
+ }
109
+ static isLoopbackOrPrivateHost(host) {
110
+ // URL.hostname wraps IPv6 literals in brackets (e.g. "[::1]"); strip them before classification.
111
+ const normalized = host.startsWith('[') && host.endsWith(']') ? host.slice(1, -1) : host;
112
+ const ipVersion = (0, node_net_1.isIP)(normalized);
113
+ if (ipVersion === 0) {
114
+ // DNS host: only "localhost" (and subdomains) is treated as safe.
115
+ const lower = normalized.toLowerCase();
116
+ return lower === 'localhost' || lower.endsWith('.localhost');
117
+ }
118
+ if (ipVersion === 4) {
119
+ return SidecarHttpClient.isPrivateOrLoopbackIPv4(normalized);
120
+ }
121
+ return SidecarHttpClient.isPrivateOrLoopbackIPv6(normalized);
122
+ }
123
+ static isPrivateOrLoopbackIPv4(host) {
124
+ const b = host.split('.').map((p) => parseInt(p, 10));
125
+ if (b.length !== 4 || b.some((n) => Number.isNaN(n) || n < 0 || n > 255)) {
126
+ return false;
127
+ }
128
+ if (b[0] === 127)
129
+ return true; // 127.0.0.0/8 loopback
130
+ if (b[0] === 10)
131
+ return true; // 10.0.0.0/8
132
+ if (b[0] === 172 && b[1] >= 16 && b[1] <= 31)
133
+ return true; // 172.16.0.0/12
134
+ if (b[0] === 192 && b[1] === 168)
135
+ return true; // 192.168.0.0/16
136
+ if (b[0] === 169 && b[1] === 254)
137
+ return true; // 169.254.0.0/16 link-local
138
+ return false;
139
+ }
140
+ static isPrivateOrLoopbackIPv6(host) {
141
+ const lower = host.toLowerCase();
142
+ if (lower === '::1' || lower === '0:0:0:0:0:0:0:1')
143
+ return true; // loopback (`::` is the unspecified address, not loopback)
144
+ // IPv4-mapped/-translated addresses in either dotted (::ffff:127.0.0.1)
145
+ // or hex-compressed (::ffff:7f00:1) form.
146
+ const mappedIPv4 = SidecarHttpClient.extractMappedIPv4(lower);
147
+ if (mappedIPv4) {
148
+ return SidecarHttpClient.isPrivateOrLoopbackIPv4(mappedIPv4);
149
+ }
150
+ const firstHextet = parseInt(lower.split(':')[0], 16);
151
+ if (!Number.isNaN(firstHextet)) {
152
+ if ((firstHextet & 0xfe00) === 0xfc00)
153
+ return true; // fc00::/7 unique local
154
+ if ((firstHextet & 0xffc0) === 0xfe80)
155
+ return true; // fe80::/10 link-local
156
+ if ((firstHextet & 0xffc0) === 0xfec0)
157
+ return true; // fec0::/10 site-local (deprecated)
158
+ }
159
+ return false;
160
+ }
161
+ /**
162
+ * Extracts the embedded IPv4 address from an IPv4-mapped/-translated IPv6 literal, returning it
163
+ * in dotted-quad form, or `undefined` if `host` is not such an address. Handles both the dotted
164
+ * form (`::ffff:127.0.0.1`) and the hex-compressed form Node emits (`::ffff:7f00:1`).
165
+ */
166
+ static extractMappedIPv4(host) {
167
+ const dotted = host.match(/^::ffff:(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})$/);
168
+ if (dotted) {
169
+ return dotted[1];
170
+ }
171
+ const hex = host.match(/^::ffff:([0-9a-f]{1,4}):([0-9a-f]{1,4})$/);
172
+ if (hex) {
173
+ const high = parseInt(hex[1], 16);
174
+ const low = parseInt(hex[2], 16);
175
+ return `${high >> 8}.${high & 0xff}.${low >> 8}.${low & 0xff}`;
176
+ }
177
+ return undefined;
178
+ }
179
+ /**
180
+ * Calls `GET /AuthorizationHeaderUnauthenticated/{serviceName}` with the specified options.
181
+ * @param serviceName The sidecar downstream API name.
182
+ * @param options The request options used to build the query string.
183
+ * @param signal Optional abort signal supplied by the caller.
184
+ * @returns The parsed token result.
185
+ */
186
+ async getAuthorizationHeaderUnauthenticated(serviceName, options, signal) {
187
+ const url = this.buildUrl(`/AuthorizationHeaderUnauthenticated/${encodeURIComponent(serviceName)}`, options);
188
+ return this.sendAndParse(url, signal);
189
+ }
190
+ /**
191
+ * Checks sidecar health via `GET /healthz`.
192
+ * @returns `true` when the sidecar responds with a success status, `false` otherwise.
193
+ */
194
+ async isHealthy() {
195
+ try {
196
+ const response = await this.fetchWithTimeout(`${this._baseUrl}/healthz`);
197
+ return response.ok;
198
+ }
199
+ catch {
200
+ return false;
201
+ }
202
+ }
203
+ buildUrl(path, options) {
204
+ const url = `${this._baseUrl}${path}`;
205
+ if (!options) {
206
+ return url;
207
+ }
208
+ // AgentUsername (UPN) and AgentUserId (object id) are mutually exclusive per the sidecar contract.
209
+ if (options.agentUsername && options.agentUserId) {
210
+ throw agents_activity_1.ExceptionHelper.generateException(Error, errorHelper_1.Errors.SidecarUserIdentityMutuallyExclusive);
211
+ }
212
+ const params = new URLSearchParams();
213
+ if (options.agentIdentity) {
214
+ params.append('AgentIdentity', options.agentIdentity);
215
+ }
216
+ if (options.agentUsername) {
217
+ params.append('AgentUsername', options.agentUsername);
218
+ }
219
+ if (options.agentUserId) {
220
+ params.append('AgentUserId', options.agentUserId);
221
+ }
222
+ if (options.scopes) {
223
+ for (const scope of options.scopes) {
224
+ if (scope && scope.trim()) {
225
+ params.append('optionsOverride.Scopes', scope);
226
+ }
227
+ }
228
+ }
229
+ if (options.requestAppToken === true) {
230
+ params.append('optionsOverride.RequestAppToken', 'true');
231
+ }
232
+ if (options.tenant) {
233
+ params.append('optionsOverride.AcquireTokenOptions.Tenant', options.tenant);
234
+ }
235
+ if (options.forceRefresh === true) {
236
+ params.append('optionsOverride.AcquireTokenOptions.ForceRefresh', 'true');
237
+ }
238
+ const query = params.toString();
239
+ return query ? `${url}?${query}` : url;
240
+ }
241
+ async withTimeout(signal, op) {
242
+ const controller = new AbortController();
243
+ const timer = setTimeout(() => controller.abort(), this._timeoutMs);
244
+ const onAbort = () => controller.abort();
245
+ if (signal) {
246
+ if (signal.aborted) {
247
+ controller.abort();
248
+ }
249
+ else {
250
+ signal.addEventListener('abort', onAbort, { once: true });
251
+ }
252
+ }
253
+ try {
254
+ return await op(controller.signal);
255
+ }
256
+ finally {
257
+ clearTimeout(timer);
258
+ signal === null || signal === void 0 ? void 0 : signal.removeEventListener('abort', onAbort);
259
+ }
260
+ }
261
+ async fetchWithTimeout(url, signal) {
262
+ return this.withTimeout(signal, (innerSignal) => fetch(url, { method: 'GET', signal: innerSignal }));
263
+ }
264
+ /**
265
+ * Performs the request and reads the full response body within a single timeout window, so a
266
+ * sidecar that streams response headers and then stalls the body cannot hang token acquisition
267
+ * beyond `requestTimeout`.
268
+ */
269
+ async fetchAndReadText(url, signal) {
270
+ return this.withTimeout(signal, async (innerSignal) => {
271
+ const response = await fetch(url, { method: 'GET', signal: innerSignal });
272
+ const body = await response.text().catch(() => '');
273
+ return { response, body };
274
+ });
275
+ }
276
+ async sendAndParse(url, signal) {
277
+ var _a, _b, _c;
278
+ const maxAttempts = this._retryCount + 1;
279
+ // Log only the request path, never the query string, which can carry PII (UPN, object id, tenant).
280
+ const requestPath = url.split('?')[0];
281
+ for (let attempt = 1;; attempt++) {
282
+ logger.debug('Sidecar request (attempt %d/%d): GET %s', attempt, maxAttempts, requestPath);
283
+ let response;
284
+ let body;
285
+ try {
286
+ ({ response, body } = await this.fetchAndReadText(url, signal));
287
+ }
288
+ catch (err) {
289
+ // A caller-requested cancellation is not transient — propagate it.
290
+ if (signal === null || signal === void 0 ? void 0 : signal.aborted) {
291
+ throw err;
292
+ }
293
+ if (attempt >= maxAttempts) {
294
+ logger.error('Sidecar request to %s failed after %d attempt(s).', requestPath, attempt);
295
+ throw agents_activity_1.ExceptionHelper.generateException(Error, errorHelper_1.Errors.SidecarRequestFailed, err, {
296
+ attempts: String(attempt),
297
+ message: (_a = err === null || err === void 0 ? void 0 : err.message) !== null && _a !== void 0 ? _a : 'network error'
298
+ });
299
+ }
300
+ logger.warn('Sidecar request to %s failed (attempt %d/%d); retrying.', requestPath, attempt, maxAttempts);
301
+ await this.delayBeforeRetry(attempt, signal);
302
+ continue;
303
+ }
304
+ if (!response.ok) {
305
+ if (SidecarHttpClient.isTransientStatus(response.status) && attempt < maxAttempts) {
306
+ logger.warn('Sidecar returned transient status %d from %s (attempt %d/%d); retrying.', response.status, requestPath, attempt, maxAttempts);
307
+ await this.delayBeforeRetry(attempt, signal);
308
+ continue;
309
+ }
310
+ const problem = SidecarHttpClient.tryParseProblemDetails(body);
311
+ // Never surface problem.detail: the sidecar can echo request parameters (UPN, object id,
312
+ // tenant) into it. Use only the non-sensitive title/status in logs and the thrown error.
313
+ const message = (_b = problem === null || problem === void 0 ? void 0 : problem.title) !== null && _b !== void 0 ? _b : `Sidecar returned ${response.status}`;
314
+ logger.error('Sidecar returned error. Status: %d, URL: %s, Title: %s', response.status, requestPath, (_c = problem === null || problem === void 0 ? void 0 : problem.title) !== null && _c !== void 0 ? _c : '(none)');
315
+ throw agents_activity_1.ExceptionHelper.generateException(Error, errorHelper_1.Errors.SidecarErrorResponse, undefined, {
316
+ status: String(response.status),
317
+ message
318
+ });
319
+ }
320
+ const result = SidecarHttpClient.parseTokenResponse(body);
321
+ logger.debug('Sidecar token acquired from %s. Scheme: %s, TokenLength: %d', requestPath, result.scheme, result.token.length);
322
+ return result;
323
+ }
324
+ }
325
+ async delayBeforeRetry(attempt, signal) {
326
+ const multiplier = Math.pow(2, attempt - 1);
327
+ const delay = this._retryBackoffBaseMs * multiplier;
328
+ if (delay <= 0) {
329
+ return;
330
+ }
331
+ // Resolve after the backoff delay, but reject immediately if the caller aborts so a pending
332
+ // retry wait does not keep the caller blocked for the full (potentially several second) delay.
333
+ await new Promise((resolve, reject) => {
334
+ let onAbort;
335
+ const timer = setTimeout(() => {
336
+ if (signal && onAbort) {
337
+ signal.removeEventListener('abort', onAbort);
338
+ }
339
+ resolve();
340
+ }, delay);
341
+ if (signal) {
342
+ onAbort = () => {
343
+ var _a;
344
+ clearTimeout(timer);
345
+ reject((_a = signal.reason) !== null && _a !== void 0 ? _a : new Error('Aborted'));
346
+ };
347
+ if (signal.aborted) {
348
+ onAbort();
349
+ return;
350
+ }
351
+ signal.addEventListener('abort', onAbort, { once: true });
352
+ }
353
+ });
354
+ }
355
+ static isTransientStatus(status) {
356
+ return status === 408 || status === 429 || status >= 500;
357
+ }
358
+ static parseTokenResponse(responseContent) {
359
+ let body;
360
+ try {
361
+ body = JSON.parse(responseContent);
362
+ }
363
+ catch (err) {
364
+ throw agents_activity_1.ExceptionHelper.generateException(Error, errorHelper_1.Errors.SidecarResponseUnparsable, err);
365
+ }
366
+ const headerValue = typeof body.authorizationHeader === 'string' ? body.authorizationHeader.trim() : '';
367
+ if (headerValue) {
368
+ const spaceIndex = headerValue.indexOf(' ');
369
+ if (spaceIndex > 0) {
370
+ // "{scheme} {token}" form: the token after the separator must be non-empty.
371
+ const token = headerValue.substring(spaceIndex + 1).trim();
372
+ if (token.length > 0) {
373
+ return { scheme: headerValue.substring(0, spaceIndex), token };
374
+ }
375
+ }
376
+ else if (!SidecarHttpClient.isKnownAuthScheme(headerValue)) {
377
+ // No separator: treat the whole value as a raw token and default the scheme to
378
+ // Bearer. A lone scheme name (e.g. "Bearer") is not a valid token and falls
379
+ // through to the error below.
380
+ return { scheme: 'Bearer', token: headerValue };
381
+ }
382
+ }
383
+ throw agents_activity_1.ExceptionHelper.generateException(Error, errorHelper_1.Errors.SidecarResponseMissingAuthorizationHeader);
384
+ }
385
+ static isKnownAuthScheme(value) {
386
+ const lower = value.toLowerCase();
387
+ return lower === 'bearer' || lower === 'pop';
388
+ }
389
+ static tryParseProblemDetails(content) {
390
+ if (!content) {
391
+ return undefined;
392
+ }
393
+ try {
394
+ return JSON.parse(content);
395
+ }
396
+ catch {
397
+ return undefined;
398
+ }
399
+ }
400
+ }
401
+ exports.SidecarHttpClient = SidecarHttpClient;
402
+ /** Default per-attempt request timeout (milliseconds). */
403
+ SidecarHttpClient.DEFAULT_TIMEOUT_MS = sidecarModels_1.DEFAULT_REQUEST_TIMEOUT_MS;
404
+ /** Default number of retry attempts for transient failures. */
405
+ SidecarHttpClient.DEFAULT_RETRY_COUNT = sidecarModels_1.DEFAULT_RETRY_COUNT;
406
+ //# sourceMappingURL=sidecarHttpClient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sidecarHttpClient.js","sourceRoot":"","sources":["../../../../src/auth/sidecar/sidecarHttpClient.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,110 @@
1
+ /**
2
+ * Copyright (c) Microsoft Corporation. All rights reserved.
3
+ * Licensed under the MIT License.
4
+ */
5
+ import { AuthConfiguration } from '../authConfiguration';
6
+ /**
7
+ * Default base URL of the Entra Agent ID sidecar (agent container).
8
+ */
9
+ export declare const DEFAULT_SIDECAR_BASE_URL = "http://localhost:5178";
10
+ /**
11
+ * Default per-attempt HTTP request timeout (in milliseconds) for sidecar calls.
12
+ */
13
+ export declare const DEFAULT_REQUEST_TIMEOUT_MS = 30000;
14
+ /**
15
+ * Default number of retry attempts for transient sidecar failures.
16
+ */
17
+ export declare const DEFAULT_RETRY_COUNT = 3;
18
+ /**
19
+ * Resolved (normalized) connection settings for the sidecar-based token provider, derived from a
20
+ * connection's {@link AuthConfiguration} with all sidecar defaults applied. Distinct from the
21
+ * configuration-level {@link SidecarConnectionSettings} (which has optional properties): this is the
22
+ * runtime shape consumed by the provider after normalization via {@link toSidecarConnectionSettings}.
23
+ */
24
+ export interface ResolvedSidecarConnectionSettings {
25
+ /**
26
+ * The configured downstream API service name in the sidecar's DownstreamApis configuration.
27
+ * Defaults to `'default'`.
28
+ */
29
+ serviceName: string;
30
+ /**
31
+ * The sidecar downstream API name used to acquire the Blueprint (agent application) token for the
32
+ * agentic FIC chain. Defaults to `'agenticblueprint'`.
33
+ */
34
+ blueprintServiceName: string;
35
+ /**
36
+ * Optional base URL of the Entra Agent ID sidecar (agent container). Resolution order:
37
+ * `SIDECAR_URL` environment variable > this setting > {@link DEFAULT_SIDECAR_BASE_URL}.
38
+ */
39
+ sidecarBaseUrl?: string;
40
+ /**
41
+ * When `true`, disables the loopback/private-address safety check on the resolved sidecar base
42
+ * URL. UNSAFE; leave `false` in all normal deployments.
43
+ */
44
+ bypassLocalNetworkRestriction: boolean;
45
+ /**
46
+ * Per-attempt HTTP request timeout (in milliseconds) for sidecar calls. Defaults to 30000.
47
+ */
48
+ requestTimeout: number;
49
+ /**
50
+ * Number of retry attempts for transient sidecar failures. Defaults to 3.
51
+ */
52
+ retryCount: number;
53
+ /**
54
+ * The OAuth scopes to request, used to override the sidecar's configured downstream API scopes.
55
+ */
56
+ scopes?: string[];
57
+ }
58
+ /**
59
+ * Builds a {@link ResolvedSidecarConnectionSettings} from a connection's {@link AuthConfiguration},
60
+ * applying the documented defaults.
61
+ * @param config The connection authentication configuration.
62
+ * @returns The resolved sidecar connection settings.
63
+ */
64
+ export declare function toSidecarConnectionSettings(config?: AuthConfiguration): ResolvedSidecarConnectionSettings;
65
+ /**
66
+ * Options used to build the query string for a sidecar token request. Mirrors the C#
67
+ * `SidecarRequestOptions` shape.
68
+ */
69
+ export interface SidecarRequestOptions {
70
+ /** Agent app (client) ID for agent identity flows. Maps to `AgentIdentity`. */
71
+ agentIdentity?: string;
72
+ /** Agentic user principal name for delegated agent flows. Maps to `AgentUsername`. */
73
+ agentUsername?: string;
74
+ /** Agentic user object ID for delegated agent flows. Maps to `AgentUserId`. */
75
+ agentUserId?: string;
76
+ /** Override the configured downstream API scopes. Maps to `optionsOverride.Scopes`. */
77
+ scopes?: string[];
78
+ /**
79
+ * Request an app-only token instead of a user (delegated) token. Maps to
80
+ * `optionsOverride.RequestAppToken=true`.
81
+ */
82
+ requestAppToken?: boolean;
83
+ /** Override the tenant ID. Maps to `optionsOverride.AcquireTokenOptions.Tenant`. */
84
+ tenant?: string;
85
+ /**
86
+ * Force a fresh token acquisition, bypassing the sidecar cache. Maps to
87
+ * `optionsOverride.AcquireTokenOptions.ForceRefresh=true`.
88
+ */
89
+ forceRefresh?: boolean;
90
+ }
91
+ /**
92
+ * Result of a successful sidecar token acquisition. Mirrors the C# `SidecarTokenResult` shape.
93
+ */
94
+ export interface SidecarTokenResult {
95
+ /** The authorization scheme (e.g., `'Bearer'` or `'PoP'`). */
96
+ scheme: string;
97
+ /** The raw access token. */
98
+ token: string;
99
+ }
100
+ /**
101
+ * RFC 7807 problem details returned by the sidecar on error. Mirrors the C# `SidecarProblemDetails`
102
+ * shape.
103
+ */
104
+ export interface SidecarProblemDetails {
105
+ type?: string;
106
+ title?: string;
107
+ status?: number;
108
+ detail?: string;
109
+ instance?: string;
110
+ }
@@ -0,0 +1,48 @@
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.DEFAULT_RETRY_COUNT = exports.DEFAULT_REQUEST_TIMEOUT_MS = exports.DEFAULT_SIDECAR_BASE_URL = void 0;
8
+ exports.toSidecarConnectionSettings = toSidecarConnectionSettings;
9
+ /**
10
+ * Default sidecar downstream API name used for app-only and autonomous agent token acquisition.
11
+ */
12
+ const DEFAULT_SERVICE_NAME = 'default';
13
+ /**
14
+ * Default sidecar downstream API name used to acquire the Blueprint (agent application) token.
15
+ */
16
+ const DEFAULT_BLUEPRINT_SERVICE_NAME = 'agenticblueprint';
17
+ /**
18
+ * Default base URL of the Entra Agent ID sidecar (agent container).
19
+ */
20
+ exports.DEFAULT_SIDECAR_BASE_URL = 'http://localhost:5178';
21
+ /**
22
+ * Default per-attempt HTTP request timeout (in milliseconds) for sidecar calls.
23
+ */
24
+ exports.DEFAULT_REQUEST_TIMEOUT_MS = 30000;
25
+ /**
26
+ * Default number of retry attempts for transient sidecar failures.
27
+ */
28
+ exports.DEFAULT_RETRY_COUNT = 3;
29
+ /**
30
+ * Builds a {@link ResolvedSidecarConnectionSettings} from a connection's {@link AuthConfiguration},
31
+ * applying the documented defaults.
32
+ * @param config The connection authentication configuration.
33
+ * @returns The resolved sidecar connection settings.
34
+ */
35
+ function toSidecarConnectionSettings(config) {
36
+ var _a, _b, _c, _d, _e, _f;
37
+ const scopes = (_a = config === null || config === void 0 ? void 0 : config.scopes) !== null && _a !== void 0 ? _a : ((config === null || config === void 0 ? void 0 : config.scope) ? [config.scope] : undefined);
38
+ return {
39
+ serviceName: ((_b = config === null || config === void 0 ? void 0 : config.serviceName) === null || _b === void 0 ? void 0 : _b.trim()) ? config.serviceName : DEFAULT_SERVICE_NAME,
40
+ blueprintServiceName: ((_c = config === null || config === void 0 ? void 0 : config.blueprintServiceName) === null || _c === void 0 ? void 0 : _c.trim()) ? config.blueprintServiceName : DEFAULT_BLUEPRINT_SERVICE_NAME,
41
+ sidecarBaseUrl: config === null || config === void 0 ? void 0 : config.sidecarBaseUrl,
42
+ bypassLocalNetworkRestriction: (_d = config === null || config === void 0 ? void 0 : config.bypassLocalNetworkRestriction) !== null && _d !== void 0 ? _d : false,
43
+ requestTimeout: (_e = config === null || config === void 0 ? void 0 : config.requestTimeout) !== null && _e !== void 0 ? _e : exports.DEFAULT_REQUEST_TIMEOUT_MS,
44
+ retryCount: (_f = config === null || config === void 0 ? void 0 : config.retryCount) !== null && _f !== void 0 ? _f : exports.DEFAULT_RETRY_COUNT,
45
+ scopes
46
+ };
47
+ }
48
+ //# sourceMappingURL=sidecarModels.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sidecarModels.js","sourceRoot":"","sources":["../../../../src/auth/sidecar/sidecarModels.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAkFH,kEAWC;AAzFD;;GAEG;AACH,MAAM,oBAAoB,GAAG,SAAS,CAAA;AAEtC;;GAEG;AACH,MAAM,8BAA8B,GAAG,kBAAkB,CAAA;AAEzD;;GAEG;AACU,QAAA,wBAAwB,GAAG,uBAAuB,CAAA;AAE/D;;GAEG;AACU,QAAA,0BAA0B,GAAG,KAAK,CAAA;AAE/C;;GAEG;AACU,QAAA,mBAAmB,GAAG,CAAC,CAAA;AAiDpC;;;;;GAKG;AACH,SAAgB,2BAA2B,CAAE,MAA0B;;IACrE,MAAM,MAAM,GAAG,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,MAAM,mCAAI,CAAC,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,KAAK,EAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA;IAC7E,OAAO;QACL,WAAW,EAAE,CAAA,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,WAAW,0CAAE,IAAI,EAAE,EAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,oBAAoB;QACpF,oBAAoB,EAAE,CAAA,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,oBAAoB,0CAAE,IAAI,EAAE,EAAC,CAAC,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC,CAAC,8BAA8B;QACzH,cAAc,EAAE,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,cAAc;QACtC,6BAA6B,EAAE,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,6BAA6B,mCAAI,KAAK;QAC7E,cAAc,EAAE,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,cAAc,mCAAI,kCAA0B;QACpE,UAAU,EAAE,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,UAAU,mCAAI,2BAAmB;QACrD,MAAM;KACP,CAAA;AACH,CAAC"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Copyright (c) Microsoft Corporation. All rights reserved.
3
+ * Licensed under the MIT License.
4
+ */
5
+ /**
6
+ * Resolves the absolute expiry (epoch milliseconds) of a sidecar-issued token. Prefers the token's
7
+ * own JWT `exp` claim; falls back to {@link FALLBACK_LIFETIME_MS} from now when the token is opaque
8
+ * or carries no readable expiry.
9
+ * @param token The raw access token returned by the sidecar.
10
+ * @param now The current time in epoch milliseconds (defaults to `Date.now()`); primarily a test seam.
11
+ * @returns The absolute UTC expiry of the token, in epoch milliseconds.
12
+ */
13
+ export declare function resolveTokenExpiry(token: string, now?: number): number;
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ /**
3
+ * Copyright (c) Microsoft Corporation. All rights reserved.
4
+ * Licensed under the MIT License.
5
+ */
6
+ var __importDefault = (this && this.__importDefault) || function (mod) {
7
+ return (mod && mod.__esModule) ? mod : { "default": mod };
8
+ };
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.resolveTokenExpiry = resolveTokenExpiry;
11
+ const jsonwebtoken_1 = __importDefault(require("jsonwebtoken"));
12
+ /**
13
+ * Conservative lifetime (in milliseconds) applied when the token is opaque or carries no readable
14
+ * JWT `exp` claim.
15
+ */
16
+ const FALLBACK_LIFETIME_MS = 5 * 60 * 1000;
17
+ /**
18
+ * Resolves the absolute expiry (epoch milliseconds) of a sidecar-issued token. Prefers the token's
19
+ * own JWT `exp` claim; falls back to {@link FALLBACK_LIFETIME_MS} from now when the token is opaque
20
+ * or carries no readable expiry.
21
+ * @param token The raw access token returned by the sidecar.
22
+ * @param now The current time in epoch milliseconds (defaults to `Date.now()`); primarily a test seam.
23
+ * @returns The absolute UTC expiry of the token, in epoch milliseconds.
24
+ */
25
+ function resolveTokenExpiry(token, now = Date.now()) {
26
+ if (token) {
27
+ try {
28
+ const decoded = jsonwebtoken_1.default.decode(token);
29
+ if (decoded && typeof decoded.exp === 'number' && decoded.exp > 0) {
30
+ return decoded.exp * 1000;
31
+ }
32
+ }
33
+ catch {
34
+ // Opaque / non-JWT token — fall back below.
35
+ }
36
+ }
37
+ return now + FALLBACK_LIFETIME_MS;
38
+ }
39
+ //# sourceMappingURL=sidecarTokenExpiry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sidecarTokenExpiry.js","sourceRoot":"","sources":["../../../../src/auth/sidecar/sidecarTokenExpiry.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;AAkBH,gDAaC;AA7BD,gEAA8B;AAE9B;;;GAGG;AACH,MAAM,oBAAoB,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAA;AAE1C;;;;;;;GAOG;AACH,SAAgB,kBAAkB,CAAE,KAAa,EAAE,MAAc,IAAI,CAAC,GAAG,EAAE;IACzE,IAAI,KAAK,EAAE,CAAC;QACV,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,sBAAG,CAAC,MAAM,CAAC,KAAK,CAA0B,CAAA;YAC1D,IAAI,OAAO,IAAI,OAAO,OAAO,CAAC,GAAG,KAAK,QAAQ,IAAI,OAAO,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC;gBAClE,OAAO,OAAO,CAAC,GAAG,GAAG,IAAI,CAAA;YAC3B,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,4CAA4C;QAC9C,CAAC;IACH,CAAC;IAED,OAAO,GAAG,GAAG,oBAAoB,CAAA;AACnC,CAAC"}