@microsoft/agents-hosting 1.9.0-beta.8.gf58e66b2ee → 1.9.1
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 +182 -4
- package/dist/package.json +3 -3
- package/dist/src/app/agentApplication.d.ts +4 -3
- package/dist/src/app/agentApplication.js +24 -21
- package/dist/src/app/agentApplication.js.map +1 -1
- package/dist/src/app/agentApplicationBuilder.d.ts +9 -2
- package/dist/src/app/agentApplicationBuilder.js +9 -0
- package/dist/src/app/agentApplicationBuilder.js.map +1 -1
- package/dist/src/app/agentApplicationOptions.d.ts +16 -4
- package/dist/src/app/auth/authorizationManager.d.ts +0 -8
- package/dist/src/app/auth/authorizationManager.js +104 -178
- package/dist/src/app/auth/authorizationManager.js.map +1 -1
- package/dist/src/app/auth/handlerStorage.d.ts +5 -3
- package/dist/src/app/auth/handlerStorage.js +36 -10
- package/dist/src/app/auth/handlerStorage.js.map +1 -1
- package/dist/src/app/auth/types.d.ts +2 -2
- package/dist/src/app/index.d.ts +1 -0
- package/dist/src/app/proactive/proactive.js +10 -6
- package/dist/src/app/proactive/proactive.js.map +1 -1
- package/dist/src/app/proactive/proactiveOptions.d.ts +2 -2
- package/dist/src/app/rateLimit.d.ts +315 -0
- package/dist/src/app/rateLimit.js +333 -0
- package/dist/src/app/rateLimit.js.map +1 -0
- package/dist/src/app/turnState.d.ts +6 -3
- package/dist/src/app/turnState.js +43 -4
- package/dist/src/app/turnState.js.map +1 -1
- package/dist/src/auth/authConfiguration.d.ts +10 -3
- package/dist/src/auth/authConfiguration.js +292 -259
- package/dist/src/auth/authConfiguration.js.map +1 -1
- package/dist/src/auth/settings.d.ts +8 -70
- package/dist/src/auth/settings.js +5 -67
- package/dist/src/auth/settings.js.map +1 -1
- package/dist/src/cloudAdapter.d.ts +5 -0
- package/dist/src/cloudAdapter.js +13 -103
- package/dist/src/cloudAdapter.js.map +1 -1
- package/dist/src/configuration/botFrameworkEnvironmentCompatibility.d.ts +23 -0
- package/dist/src/configuration/botFrameworkEnvironmentCompatibility.js +183 -0
- package/dist/src/configuration/botFrameworkEnvironmentCompatibility.js.map +1 -0
- package/dist/src/configuration/configuration.d.ts +83 -0
- package/dist/src/configuration/configuration.js +836 -0
- package/dist/src/configuration/configuration.js.map +1 -0
- package/dist/src/configuration/configurationSource.d.ts +57 -0
- package/dist/src/configuration/configurationSource.js +7 -0
- package/dist/src/configuration/configurationSource.js.map +1 -0
- package/dist/src/configuration/environmentConfiguration.d.ts +14 -0
- package/dist/src/configuration/environmentConfiguration.js +271 -0
- package/dist/src/configuration/environmentConfiguration.js.map +1 -0
- package/dist/src/configuration/index.d.ts +7 -0
- package/dist/src/configuration/index.js +14 -0
- package/dist/src/configuration/index.js.map +1 -0
- package/dist/src/configuration/jsonFileConfigurationSource.d.ts +15 -0
- package/dist/src/configuration/jsonFileConfigurationSource.js +58 -0
- package/dist/src/configuration/jsonFileConfigurationSource.js.map +1 -0
- package/dist/src/createCloudAdapter.d.ts +30 -5
- package/dist/src/createCloudAdapter.js +17 -10
- package/dist/src/createCloudAdapter.js.map +1 -1
- package/dist/src/errorHelper.js +117 -5
- package/dist/src/errorHelper.js.map +1 -1
- package/dist/src/index.d.ts +1 -0
- package/dist/src/index.js +1 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/observability/traces.d.ts +6 -4
- package/dist/src/observability/traces.js +10 -9
- package/dist/src/observability/traces.js.map +1 -1
- package/dist/src/outboundHostValidator.d.ts +4 -1
- package/dist/src/outboundHostValidator.js +25 -48
- package/dist/src/outboundHostValidator.js.map +1 -1
- package/dist/src/state/agentState.d.ts +8 -3
- package/dist/src/state/agentState.js +26 -8
- package/dist/src/state/agentState.js.map +1 -1
- package/dist/src/state/conversationState.d.ts +2 -2
- package/dist/src/state/conversationState.js.map +1 -1
- package/dist/src/state/userState.d.ts +2 -2
- package/dist/src/state/userState.js.map +1 -1
- package/dist/src/statusCodes.d.ts +5 -0
- package/dist/src/statusCodes.js +5 -0
- package/dist/src/statusCodes.js.map +1 -1
- package/dist/src/storage/fileStorage.d.ts +83 -68
- package/dist/src/storage/fileStorage.js +279 -105
- package/dist/src/storage/fileStorage.js.map +1 -1
- package/dist/src/storage/index.d.ts +1 -0
- package/dist/src/storage/index.js +1 -0
- package/dist/src/storage/index.js.map +1 -1
- package/dist/src/storage/memoryStorage.d.ts +85 -60
- package/dist/src/storage/memoryStorage.js +244 -87
- package/dist/src/storage/memoryStorage.js.map +1 -1
- package/dist/src/storage/storage.d.ts +100 -2
- package/dist/src/storage/storage.js +25 -0
- package/dist/src/storage/storage.js.map +1 -1
- package/dist/src/storage/storageCompatibility.d.ts +17 -0
- package/dist/src/storage/storageCompatibility.js +157 -0
- package/dist/src/storage/storageCompatibility.js.map +1 -0
- package/dist/src/storage/storageExpiry.d.ts +6 -0
- package/dist/src/storage/storageExpiry.js +20 -0
- package/dist/src/storage/storageExpiry.js.map +1 -0
- package/dist/src/utils/env.d.ts +43 -0
- package/dist/src/utils/env.js +42 -6
- package/dist/src/utils/env.js.map +1 -1
- package/dist/src/utils.d.ts +1 -0
- package/dist/src/utils.js +10 -1
- package/dist/src/utils.js.map +1 -1
- package/package.json +3 -3
- package/src/app/agentApplication.ts +27 -14
- package/src/app/agentApplicationBuilder.ts +13 -2
- package/src/app/agentApplicationOptions.ts +18 -4
- package/src/app/auth/authorizationManager.ts +126 -204
- package/src/app/auth/handlerStorage.ts +51 -7
- package/src/app/auth/types.ts +2 -2
- package/src/app/index.ts +7 -0
- package/src/app/proactive/proactive.ts +19 -9
- package/src/app/proactive/proactiveOptions.ts +2 -2
- package/src/app/rateLimit.ts +659 -0
- package/src/app/turnState.ts +50 -7
- package/src/auth/authConfiguration.ts +415 -260
- package/src/auth/settings.ts +5 -82
- package/src/cloudAdapter.ts +38 -113
- package/src/configuration/botFrameworkEnvironmentCompatibility.ts +245 -0
- package/src/configuration/configuration.ts +1076 -0
- package/src/configuration/configurationSource.ts +76 -0
- package/src/configuration/environmentConfiguration.ts +377 -0
- package/src/configuration/index.ts +19 -0
- package/src/configuration/jsonFileConfigurationSource.ts +74 -0
- package/src/createCloudAdapter.ts +52 -9
- package/src/errorHelper.ts +143 -5
- package/src/index.ts +1 -0
- package/src/observability/traces.ts +8 -7
- package/src/outboundHostValidator.ts +37 -44
- package/src/state/agentState.ts +39 -13
- package/src/state/conversationState.ts +2 -2
- package/src/state/userState.ts +2 -2
- package/src/statusCodes.ts +6 -0
- package/src/storage/fileStorage.ts +299 -106
- package/src/storage/index.ts +1 -0
- package/src/storage/memoryStorage.ts +268 -85
- package/src/storage/storage.ts +114 -2
- package/src/storage/storageCompatibility.ts +185 -0
- package/src/storage/storageExpiry.ts +21 -0
- package/src/utils/env.ts +63 -0
- package/src/utils.ts +10 -0
|
@@ -0,0 +1,333 @@
|
|
|
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.AgentApplicationRateLimiter = void 0;
|
|
8
|
+
const agents_activity_1 = require("@microsoft/agents-activity");
|
|
9
|
+
const agents_telemetry_1 = require("@microsoft/agents-telemetry");
|
|
10
|
+
const activityHandler_1 = require("../activityHandler");
|
|
11
|
+
const storage_1 = require("../storage");
|
|
12
|
+
const storageCompatibility_1 = require("../storage/storageCompatibility");
|
|
13
|
+
const statusCodes_1 = require("../statusCodes");
|
|
14
|
+
const logger = (0, agents_telemetry_1.debug)('agents:rate-limit');
|
|
15
|
+
const DEFAULT_THROTTLE_MESSAGE = 'Too many requests. Please try again later.';
|
|
16
|
+
const DEFAULT_MAX_STORAGE_RETRIES = 3;
|
|
17
|
+
class AgentApplicationRateLimiter {
|
|
18
|
+
/**
|
|
19
|
+
* Creates a limiter for the configured rules, using application storage as
|
|
20
|
+
* the shared fallback when a rule does not provide its own storage.
|
|
21
|
+
*/
|
|
22
|
+
constructor(rules, storage) {
|
|
23
|
+
this.rules = rules;
|
|
24
|
+
this.storage = storage;
|
|
25
|
+
this.fallbackStorage = (0, storageCompatibility_1.asStorageV2)(new storage_1.MemoryStorage());
|
|
26
|
+
this.storageAdapters = new WeakMap();
|
|
27
|
+
this.storageIds = new WeakMap();
|
|
28
|
+
this.locks = new Map();
|
|
29
|
+
this.nextStorageId = 1;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Evaluates every applicable rule and stages window writes. The turn is
|
|
33
|
+
* allowed only when no rule is over its limit and all required writes succeed.
|
|
34
|
+
*/
|
|
35
|
+
async shouldAllowTurn(context) {
|
|
36
|
+
const pendingEvaluations = [];
|
|
37
|
+
for (let i = 0; i < this.rules.length; i++) {
|
|
38
|
+
const rule = this.rules[i];
|
|
39
|
+
if (!(await this.appliesToTurn(rule, context))) {
|
|
40
|
+
continue;
|
|
41
|
+
}
|
|
42
|
+
const key = await this.getScopeKey(rule, context);
|
|
43
|
+
if (!key) {
|
|
44
|
+
return {
|
|
45
|
+
allowed: false,
|
|
46
|
+
rule,
|
|
47
|
+
result: { ruleIndex: i, retryAfterMs: rule.windowMs }
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
try {
|
|
51
|
+
pendingEvaluations.push(this.createPendingEvaluation(rule, i, key));
|
|
52
|
+
}
|
|
53
|
+
catch (err) {
|
|
54
|
+
const decision = this.handleStorageError(rule, { ruleIndex: i, key, retryAfterMs: rule.windowMs }, err);
|
|
55
|
+
if (!decision) {
|
|
56
|
+
continue;
|
|
57
|
+
}
|
|
58
|
+
return decision;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
if (pendingEvaluations.length > 0) {
|
|
62
|
+
return await this.withLocks(pendingEvaluations.map(pending => this.getLockKey(pending.storage, pending.storageKey)), async () => {
|
|
63
|
+
const decision = await this.commitPendingEvaluations(pendingEvaluations);
|
|
64
|
+
return decision !== null && decision !== void 0 ? decision : { allowed: true };
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
return { allowed: true };
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Reads and persists fixed-window state updates while holding key locks.
|
|
71
|
+
*
|
|
72
|
+
* The evaluation happens here so reads and writes use fresh eTags, and so
|
|
73
|
+
* concurrent first requests cannot all write wildcard-created counters.
|
|
74
|
+
*/
|
|
75
|
+
async commitPendingEvaluations(pendingEvaluations) {
|
|
76
|
+
var _a, _b;
|
|
77
|
+
let attempt = 0;
|
|
78
|
+
const committed = new Set();
|
|
79
|
+
while (true) {
|
|
80
|
+
const writes = [];
|
|
81
|
+
let retry = false;
|
|
82
|
+
for (const pending of pendingEvaluations) {
|
|
83
|
+
if (committed.has(this.getLockKey(pending.storage, pending.storageKey))) {
|
|
84
|
+
continue;
|
|
85
|
+
}
|
|
86
|
+
try {
|
|
87
|
+
const { result, write } = await this.evaluateRule(pending);
|
|
88
|
+
if (result) {
|
|
89
|
+
return { allowed: false, rule: pending.rule, result };
|
|
90
|
+
}
|
|
91
|
+
if (write) {
|
|
92
|
+
writes.push(write);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
catch (err) {
|
|
96
|
+
if (attempt >= ((_a = pending.rule.maxStorageRetries) !== null && _a !== void 0 ? _a : DEFAULT_MAX_STORAGE_RETRIES)) {
|
|
97
|
+
const decision = this.handleStorageError(pending.rule, {
|
|
98
|
+
ruleIndex: pending.ruleIndex,
|
|
99
|
+
key: pending.key,
|
|
100
|
+
retryAfterMs: pending.rule.windowMs
|
|
101
|
+
}, err);
|
|
102
|
+
if (decision) {
|
|
103
|
+
return decision;
|
|
104
|
+
}
|
|
105
|
+
continue;
|
|
106
|
+
}
|
|
107
|
+
retry = true;
|
|
108
|
+
break;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
if (retry) {
|
|
112
|
+
attempt++;
|
|
113
|
+
continue;
|
|
114
|
+
}
|
|
115
|
+
for (const pending of writes) {
|
|
116
|
+
try {
|
|
117
|
+
const results = await pending.storage.write({ [pending.storageKey]: pending.window }, pending.window.eTag === undefined ? undefined : { expectedVersion: pending.window.eTag });
|
|
118
|
+
(0, storageCompatibility_1.assertStorageWriteSucceeded)(results, [pending.storageKey]);
|
|
119
|
+
committed.add(this.getLockKey(pending.storage, pending.storageKey));
|
|
120
|
+
}
|
|
121
|
+
catch (err) {
|
|
122
|
+
if (attempt >= ((_b = pending.rule.maxStorageRetries) !== null && _b !== void 0 ? _b : DEFAULT_MAX_STORAGE_RETRIES)) {
|
|
123
|
+
const decision = this.handleStorageError(pending.rule, {
|
|
124
|
+
ruleIndex: pending.ruleIndex,
|
|
125
|
+
key: pending.key,
|
|
126
|
+
retryAfterMs: pending.rule.windowMs
|
|
127
|
+
}, err);
|
|
128
|
+
if (decision) {
|
|
129
|
+
return decision;
|
|
130
|
+
}
|
|
131
|
+
continue;
|
|
132
|
+
}
|
|
133
|
+
retry = true;
|
|
134
|
+
break;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
if (!retry) {
|
|
138
|
+
return undefined;
|
|
139
|
+
}
|
|
140
|
+
attempt++;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Converts storage failures into the configured fail-open, fail-closed, or
|
|
145
|
+
* throw behavior.
|
|
146
|
+
*/
|
|
147
|
+
handleStorageError(rule, result, err) {
|
|
148
|
+
var _a;
|
|
149
|
+
const behavior = (_a = rule.storageErrorBehavior) !== null && _a !== void 0 ? _a : 'throttle';
|
|
150
|
+
if (behavior === 'allow') {
|
|
151
|
+
logger.warn('Rate limit storage failed; allowing turn:', err);
|
|
152
|
+
return undefined;
|
|
153
|
+
}
|
|
154
|
+
if (behavior === 'throw') {
|
|
155
|
+
throw err;
|
|
156
|
+
}
|
|
157
|
+
logger.warn('Rate limit storage failed; throttling turn:', err);
|
|
158
|
+
return {
|
|
159
|
+
allowed: false,
|
|
160
|
+
rule,
|
|
161
|
+
result
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Sends the throttled response through the correct channel mechanism.
|
|
166
|
+
*/
|
|
167
|
+
async handleThrottledTurn(context, rule, result) {
|
|
168
|
+
var _a;
|
|
169
|
+
const message = await this.resolveMessage(context, rule, result);
|
|
170
|
+
if (context.activity.type === agents_activity_1.ActivityTypes.Invoke) {
|
|
171
|
+
context.turnState.set(activityHandler_1.INVOKE_RESPONSE_KEY, {
|
|
172
|
+
type: agents_activity_1.ActivityTypes.InvokeResponse,
|
|
173
|
+
value: {
|
|
174
|
+
status: statusCodes_1.StatusCodes.TOO_MANY_REQUESTS,
|
|
175
|
+
body: { message: typeof message === 'string' ? message : (_a = message === null || message === void 0 ? void 0 : message.text) !== null && _a !== void 0 ? _a : this.getDefaultMessage() }
|
|
176
|
+
}
|
|
177
|
+
});
|
|
178
|
+
return;
|
|
179
|
+
}
|
|
180
|
+
if (!message) {
|
|
181
|
+
return;
|
|
182
|
+
}
|
|
183
|
+
try {
|
|
184
|
+
await context.sendActivity(message);
|
|
185
|
+
}
|
|
186
|
+
catch (err) {
|
|
187
|
+
logger.warn('Failed to send rate limit message:', err);
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* Checks activity type and custom predicate filters before touching storage.
|
|
192
|
+
*/
|
|
193
|
+
async appliesToTurn(rule, context) {
|
|
194
|
+
if (rule.activityTypes && !rule.activityTypes.some(t => { var _a; return t.toLocaleLowerCase() === ((_a = context.activity.type) === null || _a === void 0 ? void 0 : _a.toLocaleLowerCase()); })) {
|
|
195
|
+
return false;
|
|
196
|
+
}
|
|
197
|
+
if (rule.appliesTo && !(await rule.appliesTo(context))) {
|
|
198
|
+
return false;
|
|
199
|
+
}
|
|
200
|
+
return true;
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* Resolves and normalizes the storage key fragment for this rule and turn.
|
|
204
|
+
*/
|
|
205
|
+
async getScopeKey(rule, context) {
|
|
206
|
+
const key = await rule.scope(context);
|
|
207
|
+
return (key === null || key === void 0 ? void 0 : key.trim()) || undefined;
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* Reads the current window, decides whether the turn is over limit, and
|
|
211
|
+
* prepares the next window state when the turn should be counted.
|
|
212
|
+
*/
|
|
213
|
+
async evaluateRule(pending) {
|
|
214
|
+
const { rule, ruleIndex, storage, storageKey, key } = pending;
|
|
215
|
+
const items = await storage.read([storageKey]);
|
|
216
|
+
const value = (0, storageCompatibility_1.getStorageReadValue)(items, storageKey);
|
|
217
|
+
const current = value === undefined
|
|
218
|
+
? undefined
|
|
219
|
+
: { ...value, eTag: items[storageKey].version };
|
|
220
|
+
const now = Date.now();
|
|
221
|
+
const window = this.getFixedWindow(rule, current, now);
|
|
222
|
+
if (window.count >= rule.limit) {
|
|
223
|
+
return {
|
|
224
|
+
result: {
|
|
225
|
+
ruleIndex,
|
|
226
|
+
key,
|
|
227
|
+
retryAfterMs: Math.max(0, window.resetAt - now)
|
|
228
|
+
}
|
|
229
|
+
};
|
|
230
|
+
}
|
|
231
|
+
window.count++;
|
|
232
|
+
return {
|
|
233
|
+
write: { ...pending, window }
|
|
234
|
+
};
|
|
235
|
+
}
|
|
236
|
+
createPendingEvaluation(rule, ruleIndex, key) {
|
|
237
|
+
var _a, _b;
|
|
238
|
+
const storage = this.getStorageV2((_b = (_a = rule.storage) !== null && _a !== void 0 ? _a : this.storage) !== null && _b !== void 0 ? _b : this.fallbackStorage);
|
|
239
|
+
const storageKey = `rateLimit:${ruleIndex}:${key}`;
|
|
240
|
+
return { rule, ruleIndex, storage, storageKey, key };
|
|
241
|
+
}
|
|
242
|
+
getStorageV2(storage) {
|
|
243
|
+
if (storage instanceof storage_1.StorageV2) {
|
|
244
|
+
return storage;
|
|
245
|
+
}
|
|
246
|
+
const existing = this.storageAdapters.get(storage);
|
|
247
|
+
if (existing) {
|
|
248
|
+
return existing;
|
|
249
|
+
}
|
|
250
|
+
const adapter = (0, storageCompatibility_1.asStorageV2)(storage);
|
|
251
|
+
this.storageAdapters.set(storage, adapter);
|
|
252
|
+
return adapter;
|
|
253
|
+
}
|
|
254
|
+
async withLocks(lockKeys, action) {
|
|
255
|
+
const releases = [];
|
|
256
|
+
const uniqueLockKeys = [...new Set(lockKeys)].sort();
|
|
257
|
+
for (const key of uniqueLockKeys) {
|
|
258
|
+
releases.push(await this.acquireLock(key));
|
|
259
|
+
}
|
|
260
|
+
try {
|
|
261
|
+
return await action();
|
|
262
|
+
}
|
|
263
|
+
finally {
|
|
264
|
+
for (const release of releases.reverse()) {
|
|
265
|
+
release();
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
async acquireLock(key) {
|
|
270
|
+
var _a;
|
|
271
|
+
const previous = (_a = this.locks.get(key)) !== null && _a !== void 0 ? _a : Promise.resolve();
|
|
272
|
+
let releaseCurrent;
|
|
273
|
+
const current = new Promise(resolve => {
|
|
274
|
+
releaseCurrent = resolve;
|
|
275
|
+
});
|
|
276
|
+
const next = previous.then(() => current);
|
|
277
|
+
this.locks.set(key, next);
|
|
278
|
+
await previous;
|
|
279
|
+
return () => {
|
|
280
|
+
if (this.locks.get(key) === next) {
|
|
281
|
+
this.locks.delete(key);
|
|
282
|
+
}
|
|
283
|
+
releaseCurrent();
|
|
284
|
+
};
|
|
285
|
+
}
|
|
286
|
+
getLockKey(storage, storageKey) {
|
|
287
|
+
return `${this.getStorageId(storage)}:${storageKey}`;
|
|
288
|
+
}
|
|
289
|
+
getStorageId(storage) {
|
|
290
|
+
const existing = this.storageIds.get(storage);
|
|
291
|
+
if (existing) {
|
|
292
|
+
return existing;
|
|
293
|
+
}
|
|
294
|
+
const id = this.nextStorageId++;
|
|
295
|
+
this.storageIds.set(storage, id);
|
|
296
|
+
return id;
|
|
297
|
+
}
|
|
298
|
+
/**
|
|
299
|
+
* Reuses the active window or starts a new one after the reset time.
|
|
300
|
+
*/
|
|
301
|
+
getFixedWindow(rule, current, now) {
|
|
302
|
+
if (!current || !Number.isFinite(current.resetAt) || current.resetAt <= now) {
|
|
303
|
+
return {
|
|
304
|
+
count: 0,
|
|
305
|
+
resetAt: now + rule.windowMs,
|
|
306
|
+
// TODO: Once microsoft/Agents-for-net#883 lands in this SDK's storage
|
|
307
|
+
// contract, use a create-if-absent write for new rate limit counters.
|
|
308
|
+
// Unconditional writes are not protected by process-local locks in
|
|
309
|
+
// scaled-out deployments.
|
|
310
|
+
eTag: current === null || current === void 0 ? void 0 : current.eTag
|
|
311
|
+
};
|
|
312
|
+
}
|
|
313
|
+
return { ...current };
|
|
314
|
+
}
|
|
315
|
+
/**
|
|
316
|
+
* Resolves static and factory throttling messages to a sendable value.
|
|
317
|
+
*/
|
|
318
|
+
async resolveMessage(context, rule, result) {
|
|
319
|
+
var _a;
|
|
320
|
+
if (typeof rule.message === 'function') {
|
|
321
|
+
return await rule.message(context, result);
|
|
322
|
+
}
|
|
323
|
+
return (_a = rule.message) !== null && _a !== void 0 ? _a : this.getDefaultMessage();
|
|
324
|
+
}
|
|
325
|
+
/**
|
|
326
|
+
* Returns the fallback throttling text when a rule does not provide one.
|
|
327
|
+
*/
|
|
328
|
+
getDefaultMessage() {
|
|
329
|
+
return DEFAULT_THROTTLE_MESSAGE;
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
exports.AgentApplicationRateLimiter = AgentApplicationRateLimiter;
|
|
333
|
+
//# sourceMappingURL=rateLimit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rateLimit.js","sourceRoot":"","sources":["../../../src/app/rateLimit.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
|
-
import {
|
|
5
|
+
import { StorageProvider } from '../storage';
|
|
6
6
|
import { AppMemory } from './appMemory';
|
|
7
7
|
import { TurnStateEntry } from './turnStateEntry';
|
|
8
8
|
import { TurnContext } from '../turnContext';
|
|
@@ -57,6 +57,8 @@ export interface DefaultUserState {
|
|
|
57
57
|
*/
|
|
58
58
|
export declare class TurnState<TConversationState = DefaultConversationState, TUserState = DefaultUserState> implements AppMemory {
|
|
59
59
|
private _scopes;
|
|
60
|
+
private _versions;
|
|
61
|
+
private _missingStorageKeys;
|
|
60
62
|
private _isLoaded;
|
|
61
63
|
private _loadingPromise?;
|
|
62
64
|
/**
|
|
@@ -173,7 +175,7 @@ export declare class TurnState<TConversationState = DefaultConversationState, TU
|
|
|
173
175
|
* @param force - If true, forces a reload from storage even if state is already loaded
|
|
174
176
|
* @returns Promise that resolves to true if state was loaded, false if it was already loaded
|
|
175
177
|
*/
|
|
176
|
-
load(context: TurnContext, storage?:
|
|
178
|
+
load(context: TurnContext, storage?: StorageProvider, force?: boolean): Promise<boolean>;
|
|
177
179
|
/**
|
|
178
180
|
* Saves state changes to storage.
|
|
179
181
|
*
|
|
@@ -185,7 +187,8 @@ export declare class TurnState<TConversationState = DefaultConversationState, TU
|
|
|
185
187
|
* @remarks
|
|
186
188
|
* Only changed scopes will be persisted.
|
|
187
189
|
*/
|
|
188
|
-
save(context: TurnContext, storage?:
|
|
190
|
+
save(context: TurnContext, storage?: StorageProvider): Promise<void>;
|
|
191
|
+
private getStorageScopeName;
|
|
189
192
|
/**
|
|
190
193
|
* Computes the storage keys for each scope based on the turn context.
|
|
191
194
|
*
|
|
@@ -5,6 +5,8 @@
|
|
|
5
5
|
*/
|
|
6
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
7
|
exports.TurnState = void 0;
|
|
8
|
+
const storage_1 = require("../storage");
|
|
9
|
+
const storageCompatibility_1 = require("../storage/storageCompatibility");
|
|
8
10
|
const turnStateEntry_1 = require("./turnStateEntry");
|
|
9
11
|
const agents_telemetry_1 = require("@microsoft/agents-telemetry");
|
|
10
12
|
const agents_activity_1 = require("@microsoft/agents-activity");
|
|
@@ -53,6 +55,8 @@ const TEMP_SCOPE = 'temp';
|
|
|
53
55
|
class TurnState {
|
|
54
56
|
constructor() {
|
|
55
57
|
this._scopes = {};
|
|
58
|
+
this._versions = {};
|
|
59
|
+
this._missingStorageKeys = new Set();
|
|
56
60
|
this._isLoaded = false;
|
|
57
61
|
}
|
|
58
62
|
/**
|
|
@@ -233,17 +237,27 @@ class TurnState {
|
|
|
233
237
|
const keys = [];
|
|
234
238
|
this.onComputeStorageKeys(context)
|
|
235
239
|
.then(async (scopes) => {
|
|
240
|
+
var _a, _b;
|
|
236
241
|
for (const key in scopes) {
|
|
237
242
|
if (Object.prototype.hasOwnProperty.call(scopes, key)) {
|
|
238
243
|
keys.push(scopes[key]);
|
|
239
244
|
}
|
|
240
245
|
}
|
|
241
|
-
const items = storage
|
|
246
|
+
const items = storage
|
|
247
|
+
? await (0, storageCompatibility_1.asStorageV2)(storage).read(keys)
|
|
248
|
+
: undefined;
|
|
242
249
|
for (const key in scopes) {
|
|
243
250
|
if (Object.prototype.hasOwnProperty.call(scopes, key)) {
|
|
244
251
|
const storageKey = scopes[key];
|
|
245
|
-
const value = items
|
|
252
|
+
const value = storage ? (0, storageCompatibility_1.getStorageReadValue)(items, storageKey) : undefined;
|
|
246
253
|
this._scopes[key] = new turnStateEntry_1.TurnStateEntry(value, storageKey);
|
|
254
|
+
this._versions[storageKey] = (_a = items === null || items === void 0 ? void 0 : items[storageKey]) === null || _a === void 0 ? void 0 : _a.version;
|
|
255
|
+
if (((_b = items === null || items === void 0 ? void 0 : items[storageKey]) === null || _b === void 0 ? void 0 : _b.status) === storage_1.StorageOperationStatus.NotFound) {
|
|
256
|
+
this._missingStorageKeys.add(storageKey);
|
|
257
|
+
}
|
|
258
|
+
else {
|
|
259
|
+
this._missingStorageKeys.delete(storageKey);
|
|
260
|
+
}
|
|
247
261
|
}
|
|
248
262
|
}
|
|
249
263
|
this._scopes[TEMP_SCOPE] = new turnStateEntry_1.TurnStateEntry({});
|
|
@@ -304,17 +318,42 @@ class TurnState {
|
|
|
304
318
|
}
|
|
305
319
|
if (storage) {
|
|
306
320
|
const promises = [];
|
|
321
|
+
const storageV2 = (0, storageCompatibility_1.asStorageV2)(storage);
|
|
307
322
|
if (changes) {
|
|
308
|
-
|
|
323
|
+
for (const [key, value] of Object.entries(changes)) {
|
|
324
|
+
const expectedVersion = this._versions[key];
|
|
325
|
+
const options = expectedVersion !== undefined
|
|
326
|
+
? { expectedVersion }
|
|
327
|
+
: (0, storageCompatibility_1.isStorageV2)(storage) && this._missingStorageKeys.has(key)
|
|
328
|
+
? { mode: storage_1.StorageWriteMode.CreateOnly }
|
|
329
|
+
: undefined;
|
|
330
|
+
promises.push(storageV2.write({ [key]: value }, options).then(results => {
|
|
331
|
+
var _a;
|
|
332
|
+
(0, storageCompatibility_1.assertAgentStateWriteSucceeded)(results, key, this.getStorageScopeName(key));
|
|
333
|
+
this._versions[key] = (_a = results === null || results === void 0 ? void 0 : results[key]) === null || _a === void 0 ? void 0 : _a.version;
|
|
334
|
+
this._missingStorageKeys.delete(key);
|
|
335
|
+
}));
|
|
336
|
+
}
|
|
309
337
|
}
|
|
310
338
|
if (deletions) {
|
|
311
|
-
promises.push(
|
|
339
|
+
promises.push(storageV2.delete(deletions).then(results => {
|
|
340
|
+
(0, storageCompatibility_1.assertStorageDeleteSucceeded)(results, deletions);
|
|
341
|
+
for (const key of deletions) {
|
|
342
|
+
delete this._versions[key];
|
|
343
|
+
this._missingStorageKeys.delete(key);
|
|
344
|
+
}
|
|
345
|
+
}));
|
|
312
346
|
}
|
|
313
347
|
if (promises.length > 0) {
|
|
314
348
|
await Promise.all(promises);
|
|
315
349
|
}
|
|
316
350
|
}
|
|
317
351
|
}
|
|
352
|
+
getStorageScopeName(storageKey) {
|
|
353
|
+
var _a;
|
|
354
|
+
var _b;
|
|
355
|
+
return (_b = (_a = Object.entries(this._scopes).find(([, entry]) => entry.storageKey === storageKey)) === null || _a === void 0 ? void 0 : _a[0]) !== null && _b !== void 0 ? _b : this.constructor.name;
|
|
356
|
+
}
|
|
318
357
|
/**
|
|
319
358
|
* Computes the storage keys for each scope based on the turn context.
|
|
320
359
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"turnState.js","sourceRoot":"","sources":["../../../src/app/turnState.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;
|
|
1
|
+
{"version":3,"file":"turnState.js","sourceRoot":"","sources":["../../../src/app/turnState.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,wCAAsH;AACtH,0EAMwC;AAExC,qDAAiD;AAEjD,kEAAmD;AACnD,gEAA4D;AAC5D,gDAAuC;AAEvC,MAAM,MAAM,GAAG,IAAA,wBAAK,EAAC,kBAAkB,CAAC,CAAA;AAExC,MAAM,kBAAkB,GAAG,cAAc,CAAA;AAEzC,MAAM,UAAU,GAAG,MAAM,CAAA;AAEzB,MAAM,UAAU,GAAG,MAAM,CAAA;AAczB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH;IAAA;QAIU,YAAO,GAAmC,EAAE,CAAA;QAC5C,cAAS,GAAuC,EAAE,CAAA;QAClD,wBAAmB,GAAG,IAAI,GAAG,EAAU,CAAA;QACvC,cAAS,GAAG,KAAK,CAAA;IAkY3B,CAAC;IA/XC;;;;;;;;OAQG;IACH,IAAW,YAAY;QACrB,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAA;QAC/C,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,iCAAe,CAAC,iBAAiB,CAAC,KAAK,EAAE,oBAAM,CAAC,cAAc,CAAC,CAAA;QACvE,CAAC;QACD,OAAO,KAAK,CAAC,KAA2B,CAAA;IAC1C,CAAC;IAED;;;;;OAKG;IACH,IAAW,YAAY,CAAE,KAAyB;QAChD,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAA;QAC/C,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,iCAAe,CAAC,iBAAiB,CAAC,KAAK,EAAE,oBAAM,CAAC,cAAc,CAAC,CAAA;QACvE,CAAC;QACD,KAAK,CAAC,OAAO,CAAC,KAAgC,CAAC,CAAA;IACjD,CAAC;IAED;;;;OAIG;IACH,IAAW,QAAQ;QACjB,OAAO,IAAI,CAAC,SAAS,CAAA;IACvB,CAAC;IAED;;;;;;;;OAQG;IACH,IAAW,IAAI;QACb,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAA;QACvC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,iCAAe,CAAC,iBAAiB,CAAC,KAAK,EAAE,oBAAM,CAAC,cAAc,CAAC,CAAA;QACvE,CAAC;QACD,OAAO,KAAK,CAAC,KAAmB,CAAA;IAClC,CAAC;IAED;;;;;OAKG;IACH,IAAW,IAAI,CAAE,KAAiB;QAChC,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAA;QACvC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,iCAAe,CAAC,iBAAiB,CAAC,KAAK,EAAE,oBAAM,CAAC,cAAc,CAAC,CAAA;QACvE,CAAC;QACD,KAAK,CAAC,OAAO,CAAC,KAAgC,CAAC,CAAA;IACjD,CAAC;IAED;;;;;;;OAOG;IACI,uBAAuB;QAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAA;QAC/C,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,iCAAe,CAAC,iBAAiB,CAAC,KAAK,EAAE,oBAAM,CAAC,cAAc,CAAC,CAAA;QACvE,CAAC;QACD,KAAK,CAAC,MAAM,EAAE,CAAA;IAChB,CAAC;IAED;;;;;;;OAOG;IACI,eAAe;QACpB,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAA;QACvC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,iCAAe,CAAC,iBAAiB,CAAC,KAAK,EAAE,oBAAM,CAAC,cAAc,CAAC,CAAA;QACvE,CAAC;QACD,KAAK,CAAC,MAAM,EAAE,CAAA;IAChB,CAAC;IAED;;;;;OAKG;IACI,QAAQ,CAAE,KAAa;QAC5B,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;IAC5B,CAAC;IAED;;;;;;;;OAQG;IACI,WAAW,CAAE,IAAY;QAC9B,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAA;QAClD,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC;YAC5D,OAAO,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAC1B,CAAC;IACH,CAAC;IAED;;;;;;;;OAQG;IACI,QAAQ,CAAE,IAAY;QAC3B,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAA;QAClD,OAAO,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;IAChE,CAAC;IAED;;;;;;;;;OASG;IACI,QAAQ,CAAmB,IAAY;QAC5C,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAA;QAClD,OAAO,KAAK,CAAC,KAAK,CAAC,IAAI,CAAW,CAAA;IACpC,CAAC;IAED;;;;;;;;OAQG;IACI,QAAQ,CAAE,IAAY,EAAE,KAAc;QAC3C,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAA;QAClD,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAA;IAC3B,CAAC;IAED;;;;;;;OAOG;IACI,IAAI,CAAE,OAAoB,EAAE,OAAyB,EAAE,KAAK,GAAY,KAAK;QAClF,IAAI,IAAI,CAAC,SAAS,IAAI,CAAC,KAAK,EAAE,CAAC;YAC7B,OAAO,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;QAC/B,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;YAC1B,IAAI,CAAC,eAAe,GAAG,IAAI,OAAO,CAAU,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBAC9D,IAAI,CAAC,SAAS,GAAG,IAAI,CAAA;gBAErB,MAAM,IAAI,GAAa,EAAE,CAAA;gBACzB,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC;qBAC/B,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;;oBACrB,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;wBACzB,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC;4BACtD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAA;wBACxB,CAAC;oBACH,CAAC;oBAED,MAAM,KAAK,GAA4D,OAAO;wBAC5E,CAAC,CAAC,MAAM,IAAA,kCAAW,EAAC,OAAO,CAAC,CAAC,IAAI,CAA0B,IAAI,CAAC;wBAChE,CAAC,CAAC,SAAS,CAAA;oBAEb,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;wBACzB,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC;4BACtD,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,CAAA;4BAC9B,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,IAAA,0CAAmB,EAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;4BAC1E,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,+BAAc,CAAC,KAAK,EAAE,UAAU,CAAC,CAAA;4BACzD,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAG,UAAU,CAAC,0CAAE,OAAO,CAAA;4BACzD,IAAI,CAAA,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAG,UAAU,CAAC,0CAAE,MAAM,MAAK,gCAAsB,CAAC,QAAQ,EAAE,CAAC;gCACpE,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;4BAC1C,CAAC;iCAAM,CAAC;gCACN,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;4BAC7C,CAAC;wBACH,CAAC;oBACH,CAAC;oBAED,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,IAAI,+BAAc,CAAC,EAAE,CAAC,CAAA;oBACjD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAA;oBACrB,IAAI,CAAC,eAAe,GAAG,SAAS,CAAA;oBAChC,OAAO,CAAC,IAAI,CAAC,CAAA;gBACf,CAAC,CAAC;qBACD,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;oBACb,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;oBACjB,IAAI,CAAC,eAAe,GAAG,SAAS,CAAA;oBAChC,MAAM,CAAC,GAAG,CAAC,CAAA;gBACb,CAAC,CAAC,CAAA;YACN,CAAC,CAAC,CAAA;QACJ,CAAC;QAED,OAAO,IAAI,CAAC,eAAe,CAAA;IAC7B,CAAC;IAED;;;;;;;;;;OAUG;IACI,KAAK,CAAC,IAAI,CAAE,OAAoB,EAAE,OAAyB;QAChE,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YAC5C,MAAM,IAAI,CAAC,eAAe,CAAA;QAC5B,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,MAAM,iCAAe,CAAC,iBAAiB,CAAC,KAAK,EAAE,oBAAM,CAAC,cAAc,CAAC,CAAA;QACvE,CAAC;QAED,IAAI,OAA+B,CAAA;QACnC,IAAI,SAA+B,CAAA;QACnC,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAC/B,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE,CAAC;gBAC7D,SAAQ;YACV,CAAC;YACD,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;YAC/B,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;gBACrB,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;oBACpB,IAAI,SAAS,EAAE,CAAC;wBACd,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAA;oBAClC,CAAC;yBAAM,CAAC;wBACN,SAAS,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,CAAA;oBAChC,CAAC;gBACH,CAAC;qBAAM,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;oBAC5B,IAAI,CAAC,OAAO,EAAE,CAAC;wBACb,OAAO,GAAG,EAAE,CAAA;oBACd,CAAC;oBAED,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,KAAK,CAAC,KAAK,CAAA;gBACzC,CAAC;YACH,CAAC;QACH,CAAC;QAED,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,QAAQ,GAAoB,EAAE,CAAA;YACpC,MAAM,SAAS,GAAG,IAAA,kCAAW,EAAC,OAAO,CAAC,CAAA;YACtC,IAAI,OAAO,EAAE,CAAC;gBACZ,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;oBACnD,MAAM,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;oBAC3C,MAAM,OAAO,GAAG,eAAe,KAAK,SAAS;wBAC3C,CAAC,CAAC,EAAE,eAAe,EAAE;wBACrB,CAAC,CAAC,IAAA,kCAAW,EAAC,OAAO,CAAC,IAAI,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,GAAG,CAAC;4BACzD,CAAC,CAAC,EAAE,IAAI,EAAE,0BAAgB,CAAC,UAAU,EAAE;4BACvC,CAAC,CAAC,SAAS,CAAA;oBACf,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAC3B,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,EAChB,OAAO,CACR,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;;wBACf,IAAA,qDAA8B,EAAC,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAA;wBAC3E,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAG,GAAG,CAAC,0CAAE,OAAO,CAAA;wBAC7C,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;oBACtC,CAAC,CAAC,CAAC,CAAA;gBACL,CAAC;YACH,CAAC;YAED,IAAI,SAAS,EAAE,CAAC;gBACd,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;oBACvD,IAAA,mDAA4B,EAAC,OAAO,EAAE,SAAS,CAAC,CAAA;oBAChD,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;wBAC5B,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;wBAC1B,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;oBACtC,CAAC;gBACH,CAAC,CAAC,CAAC,CAAA;YACL,CAAC;YAED,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACxB,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;YAC7B,CAAC;QACH,CAAC;IACH,CAAC;IAEO,mBAAmB,CAAE,UAAkB;;;QAC7C,aAAO,MAAA,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU,KAAK,UAAU,CAAC,0CAAG,CAAC,CAAC,mCAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAA;IACxH,CAAC;IAED;;;;;;;;;;OAUG;IACO,oBAAoB,CAAE,OAAoB;;QAClD,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAA;QACjC,MAAM,SAAS,GAAG,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,SAAS,CAAA;QACrC,MAAM,OAAO,GAAG,MAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,SAAS,0CAAE,EAAE,CAAA;QACvC,MAAM,cAAc,GAAG,MAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,YAAY,0CAAE,EAAE,CAAA;QACjD,MAAM,MAAM,GAAG,MAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,IAAI,0CAAE,EAAE,CAAA;QAEjC,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,iCAAe,CAAC,iBAAiB,CAAC,KAAK,EAAE,oBAAM,CAAC,+BAA+B,CAAC,CAAA;QACxF,CAAC;QAED,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,iCAAe,CAAC,iBAAiB,CAAC,KAAK,EAAE,oBAAM,CAAC,iCAAiC,CAAC,CAAA;QAC1F,CAAC;QAED,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,MAAM,iCAAe,CAAC,iBAAiB,CAAC,KAAK,EAAE,oBAAM,CAAC,oCAAoC,CAAC,CAAA;QAC7F,CAAC;QAED,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,iCAAe,CAAC,iBAAiB,CAAC,KAAK,EAAE,oBAAM,CAAC,4BAA4B,CAAC,CAAA;QACrF,CAAC;QAED,MAAM,IAAI,GAA2B,EAAE,CAAA;QACvC,IAAI,CAAC,kBAAkB,CAAC,GAAG,GAAG,SAAS,IAAI,OAAO,kBAAkB,cAAc,EAAE,CAAA;QACpF,IAAI,CAAC,UAAU,CAAC,GAAG,GAAG,SAAS,IAAI,OAAO,UAAU,MAAM,EAAE,CAAA;QAC5D,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;IAC9B,CAAC;IAED;;;;;;;;;;OAUG;IACK,eAAe,CAAE,IAAY;QACnC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QAC7B,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrB,MAAM,iCAAe,CAAC,iBAAiB,CAAC,KAAK,EAAE,oBAAM,CAAC,gBAAgB,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,CAAC,CAAA;QAC9F,CAAC;aAAM,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9B,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;QAC3B,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;QACrC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,MAAM,iCAAe,CAAC,iBAAiB,CAAC,KAAK,EAAE,oBAAM,CAAC,iBAAiB,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;QAC1G,CAAC;QACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAA;IAClC,CAAC;CACF"}
|
|
@@ -4,6 +4,13 @@
|
|
|
4
4
|
*/
|
|
5
5
|
import { AuthConfiguration } from './settings';
|
|
6
6
|
export { type AuthConfiguration, type ConnectionSettings, type ConnectionSettingsBase, type MsalConnectionSettings, type SidecarConnectionSettings, AuthType, resolveAuthority, type ConnectionMapItem, resolveAuthType } from './settings';
|
|
7
|
+
import { ConfigurationContext } from '../configuration/configuration';
|
|
8
|
+
/**
|
|
9
|
+
* Optional host-scoped inputs used while resolving authentication settings.
|
|
10
|
+
*/
|
|
11
|
+
export interface AuthConfigurationResolutionOptions {
|
|
12
|
+
configurationContext?: ConfigurationContext;
|
|
13
|
+
}
|
|
7
14
|
/**
|
|
8
15
|
* Loads the authentication configuration from environment variables.
|
|
9
16
|
*
|
|
@@ -30,7 +37,7 @@ export { type AuthConfiguration, type ConnectionSettings, type ConnectionSetting
|
|
|
30
37
|
* ```
|
|
31
38
|
*
|
|
32
39
|
*/
|
|
33
|
-
export declare const loadAuthConfigFromEnv: (cnxName?: string) => AuthConfiguration;
|
|
40
|
+
export declare const loadAuthConfigFromEnv: (cnxName?: string, options?: AuthConfigurationResolutionOptions) => AuthConfiguration;
|
|
34
41
|
/**
|
|
35
42
|
* Loads the agent authentication configuration from previous version environment variables.
|
|
36
43
|
*
|
|
@@ -45,7 +52,7 @@ export declare const loadAuthConfigFromEnv: (cnxName?: string) => AuthConfigurat
|
|
|
45
52
|
* ```
|
|
46
53
|
*
|
|
47
54
|
*/
|
|
48
|
-
export declare const loadPrevAuthConfigFromEnv: () => AuthConfiguration;
|
|
55
|
+
export declare const loadPrevAuthConfigFromEnv: (options?: AuthConfigurationResolutionOptions) => AuthConfiguration;
|
|
49
56
|
/**
|
|
50
57
|
* Loads the authentication configuration from the provided config or from the environment variables
|
|
51
58
|
* providing default values for authority and issuers.
|
|
@@ -70,4 +77,4 @@ export declare const loadPrevAuthConfigFromEnv: () => AuthConfiguration;
|
|
|
70
77
|
* ```
|
|
71
78
|
*
|
|
72
79
|
*/
|
|
73
|
-
export declare function getAuthConfigWithDefaults(config?: AuthConfiguration): AuthConfiguration;
|
|
80
|
+
export declare function getAuthConfigWithDefaults(config?: AuthConfiguration, options?: AuthConfigurationResolutionOptions): AuthConfiguration;
|