@microsoft/agents-hosting 1.9.0-beta.3.gb2d23c1c44 → 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/authorization.d.ts +54 -0
- package/dist/src/app/auth/authorization.js +63 -2
- package/dist/src/app/auth/authorization.js.map +1 -1
- 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/delegatedTokenCredential.d.ts +29 -0
- package/dist/src/auth/delegatedTokenCredential.js +49 -0
- package/dist/src/auth/delegatedTokenCredential.js.map +1 -0
- package/dist/src/auth/msal/msalTokenCredential.js +1 -1
- package/dist/src/auth/msal/msalTokenCredential.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 +124 -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/authorization.ts +67 -2
- 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/delegatedTokenCredential.ts +49 -0
- package/src/auth/msal/msalTokenCredential.ts +1 -1
- 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 +151 -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
|
@@ -57,7 +57,7 @@ export interface StoreItems {
|
|
|
57
57
|
*/
|
|
58
58
|
export type StorageKeyFactory = (context: TurnContext) => string | Promise<string>;
|
|
59
59
|
/**
|
|
60
|
-
* Defines the interface for storage operations in the Agents platform.
|
|
60
|
+
* Defines the version 1 interface for storage operations in the Agents platform.
|
|
61
61
|
*
|
|
62
62
|
* @remarks
|
|
63
63
|
* Storage providers persist state data across conversation turns, enabling
|
|
@@ -66,7 +66,9 @@ export type StorageKeyFactory = (context: TurnContext) => string | Promise<strin
|
|
|
66
66
|
*
|
|
67
67
|
* The interface is designed to be simple with just three core operations:
|
|
68
68
|
* read, write, and delete. All operations are asynchronous to support both
|
|
69
|
-
* in-memory and remote storage providers.
|
|
69
|
+
* in-memory and remote storage providers. New implementations should use
|
|
70
|
+
* {@link StorageV2}; this V1 interface remains supported by
|
|
71
|
+
* {@link StorageProvider} through a compatibility adapter.
|
|
70
72
|
*/
|
|
71
73
|
export interface Storage {
|
|
72
74
|
/**
|
|
@@ -93,3 +95,99 @@ export interface Storage {
|
|
|
93
95
|
*/
|
|
94
96
|
delete: (keys: string[]) => Promise<void>;
|
|
95
97
|
}
|
|
98
|
+
/**
|
|
99
|
+
* The result of a version 2 storage read operation.
|
|
100
|
+
*
|
|
101
|
+
* A result is returned for every requested key. `value` and `version` are
|
|
102
|
+
* available when `status` is {@link StorageOperationStatus.Succeeded}.
|
|
103
|
+
*/
|
|
104
|
+
export interface StorageReadResult<T extends object = Record<string, unknown>> {
|
|
105
|
+
key: string;
|
|
106
|
+
status: StorageOperationStatus;
|
|
107
|
+
value?: T;
|
|
108
|
+
version?: string;
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* The result of a version 2 storage write operation.
|
|
112
|
+
*/
|
|
113
|
+
export interface StorageWriteResult {
|
|
114
|
+
key: string;
|
|
115
|
+
status: StorageOperationStatus;
|
|
116
|
+
version?: string;
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* The result of a version 2 storage delete operation.
|
|
120
|
+
*/
|
|
121
|
+
export interface StorageDeleteResult {
|
|
122
|
+
key: string;
|
|
123
|
+
status: StorageOperationStatus;
|
|
124
|
+
version?: string;
|
|
125
|
+
}
|
|
126
|
+
/** A keyed set of storage read results. */
|
|
127
|
+
export type StorageReadResults<T extends object = Record<string, unknown>> = Record<string, StorageReadResult<T>>;
|
|
128
|
+
/** A keyed set of storage write results. */
|
|
129
|
+
export type StorageWriteResults = Record<string, StorageWriteResult>;
|
|
130
|
+
/** A keyed set of storage delete results. */
|
|
131
|
+
export type StorageDeleteResults = Record<string, StorageDeleteResult>;
|
|
132
|
+
/** The outcome of one version 2 storage operation. */
|
|
133
|
+
export declare enum StorageOperationStatus {
|
|
134
|
+
Succeeded = "succeeded",
|
|
135
|
+
NotFound = "notFound",
|
|
136
|
+
Conflict = "conflict",
|
|
137
|
+
ConditionNotMet = "conditionNotMet"
|
|
138
|
+
}
|
|
139
|
+
/** The write mode for a version 2 storage operation. */
|
|
140
|
+
export declare enum StorageWriteMode {
|
|
141
|
+
Upsert = "upsert",
|
|
142
|
+
CreateOnly = "createOnly",
|
|
143
|
+
Replace = "replace"
|
|
144
|
+
}
|
|
145
|
+
/** Options applied to every item in a version 2 write operation. */
|
|
146
|
+
export interface StorageWriteOptions {
|
|
147
|
+
/**
|
|
148
|
+
* Optional time to live, in seconds, for written items.
|
|
149
|
+
*
|
|
150
|
+
* When set, storage providers stop returning the written items after this
|
|
151
|
+
* duration has elapsed. Values must be finite numbers greater than zero.
|
|
152
|
+
*/
|
|
153
|
+
ttl?: number;
|
|
154
|
+
mode?: StorageWriteMode;
|
|
155
|
+
expectedVersion?: string;
|
|
156
|
+
}
|
|
157
|
+
/** Options applied to every item in a version 2 delete operation. */
|
|
158
|
+
export interface StorageDeleteOptions {
|
|
159
|
+
expectedVersion?: string;
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* The version 2 storage contract.
|
|
163
|
+
*
|
|
164
|
+
* This does not extend {@link Storage}: JavaScript cannot overload methods by
|
|
165
|
+
* return type at runtime. V2 providers are exposed as separately named classes.
|
|
166
|
+
*/
|
|
167
|
+
export declare abstract class StorageV2 {
|
|
168
|
+
/**
|
|
169
|
+
* Reads stored values and returns one result for every requested key.
|
|
170
|
+
*
|
|
171
|
+
* @param keys The keys to read. An empty array is valid.
|
|
172
|
+
* @returns Keyed results containing a value and storage version when found.
|
|
173
|
+
*/
|
|
174
|
+
abstract read<T extends object = Record<string, unknown>>(keys: string[]): Promise<StorageReadResults<T>>;
|
|
175
|
+
/**
|
|
176
|
+
* Writes values with optional create, replace, or version conditions.
|
|
177
|
+
*
|
|
178
|
+
* @param changes Values indexed by their storage keys.
|
|
179
|
+
* @param options Conditions applied to every value in the batch.
|
|
180
|
+
* @returns One result for every supplied key.
|
|
181
|
+
*/
|
|
182
|
+
abstract write<T extends object = Record<string, unknown>>(changes: Record<string, T>, options?: StorageWriteOptions): Promise<StorageWriteResults>;
|
|
183
|
+
/**
|
|
184
|
+
* Deletes values with an optional version condition.
|
|
185
|
+
*
|
|
186
|
+
* @param keys The keys to delete. An empty array is valid.
|
|
187
|
+
* @param options Conditions applied to every key in the batch.
|
|
188
|
+
* @returns One result for every supplied key.
|
|
189
|
+
*/
|
|
190
|
+
abstract delete(keys: string[], options?: StorageDeleteOptions): Promise<StorageDeleteResults>;
|
|
191
|
+
}
|
|
192
|
+
/** A storage implementation supported by public hosting interfaces. */
|
|
193
|
+
export type StorageProvider = Storage | StorageV2;
|
|
@@ -4,4 +4,29 @@
|
|
|
4
4
|
* Licensed under the MIT License.
|
|
5
5
|
*/
|
|
6
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.StorageV2 = exports.StorageWriteMode = exports.StorageOperationStatus = void 0;
|
|
8
|
+
/** The outcome of one version 2 storage operation. */
|
|
9
|
+
var StorageOperationStatus;
|
|
10
|
+
(function (StorageOperationStatus) {
|
|
11
|
+
StorageOperationStatus["Succeeded"] = "succeeded";
|
|
12
|
+
StorageOperationStatus["NotFound"] = "notFound";
|
|
13
|
+
StorageOperationStatus["Conflict"] = "conflict";
|
|
14
|
+
StorageOperationStatus["ConditionNotMet"] = "conditionNotMet";
|
|
15
|
+
})(StorageOperationStatus || (exports.StorageOperationStatus = StorageOperationStatus = {}));
|
|
16
|
+
/** The write mode for a version 2 storage operation. */
|
|
17
|
+
var StorageWriteMode;
|
|
18
|
+
(function (StorageWriteMode) {
|
|
19
|
+
StorageWriteMode["Upsert"] = "upsert";
|
|
20
|
+
StorageWriteMode["CreateOnly"] = "createOnly";
|
|
21
|
+
StorageWriteMode["Replace"] = "replace";
|
|
22
|
+
})(StorageWriteMode || (exports.StorageWriteMode = StorageWriteMode = {}));
|
|
23
|
+
/**
|
|
24
|
+
* The version 2 storage contract.
|
|
25
|
+
*
|
|
26
|
+
* This does not extend {@link Storage}: JavaScript cannot overload methods by
|
|
27
|
+
* return type at runtime. V2 providers are exposed as separately named classes.
|
|
28
|
+
*/
|
|
29
|
+
class StorageV2 {
|
|
30
|
+
}
|
|
31
|
+
exports.StorageV2 = StorageV2;
|
|
7
32
|
//# sourceMappingURL=storage.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storage.js","sourceRoot":"","sources":["../../../src/storage/storage.ts"],"names":[],"mappings":";AAAA;;;GAGG"}
|
|
1
|
+
{"version":3,"file":"storage.js","sourceRoot":"","sources":["../../../src/storage/storage.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AA+IH,sDAAsD;AACtD,IAAY,sBAKX;AALD,WAAY,sBAAsB;IAChC,iDAAuB,CAAA;IACvB,+CAAqB,CAAA;IACrB,+CAAqB,CAAA;IACrB,6DAAmC,CAAA;AACrC,CAAC,EALW,sBAAsB,aAAtB,sBAAsB,GAAtB,sBAAsB,QAKjC;AAED,wDAAwD;AACxD,IAAY,gBAIX;AAJD,WAAY,gBAAgB;IAC1B,qCAAiB,CAAA;IACjB,6CAAyB,CAAA;IACzB,uCAAmB,CAAA;AACrB,CAAC,EAJW,gBAAgB,aAAhB,gBAAgB,GAAhB,gBAAgB,QAI3B;AAoBD;;;;;GAKG;AACH;CA0BC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
3
|
+
* Licensed under the MIT License.
|
|
4
|
+
*/
|
|
5
|
+
import { StorageDeleteResults, StorageProvider, StorageReadResults, StorageV2, StorageWriteResults } from './storage';
|
|
6
|
+
/** Returns true when a storage implementation declares the V2 contract. */
|
|
7
|
+
export declare function isStorageV2(storage: StorageProvider): storage is StorageV2;
|
|
8
|
+
/** Converts a supported storage implementation to the V2 contract. */
|
|
9
|
+
export declare function asStorageV2(storage: StorageProvider): StorageV2;
|
|
10
|
+
/** Returns a successful V2 read value, maps not-found to undefined, and rejects invalid results. */
|
|
11
|
+
export declare function getStorageReadValue<T extends object>(results: StorageReadResults<T> | null | undefined, key: string): T | undefined;
|
|
12
|
+
/** Throws when a V2 write did not succeed for every requested key. */
|
|
13
|
+
export declare function assertStorageWriteSucceeded(results: StorageWriteResults | null | undefined, keys: string[]): void;
|
|
14
|
+
/** Throws the state-specific concurrency error when a state write does not succeed. */
|
|
15
|
+
export declare function assertAgentStateWriteSucceeded(results: StorageWriteResults | null | undefined, key: string, name: string): void;
|
|
16
|
+
/** Throws when a V2 delete did not complete with idempotent V1 semantics. */
|
|
17
|
+
export declare function assertStorageDeleteSucceeded(results: StorageDeleteResults | null | undefined, keys: string[]): void;
|
|
@@ -0,0 +1,157 @@
|
|
|
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.isStorageV2 = isStorageV2;
|
|
8
|
+
exports.asStorageV2 = asStorageV2;
|
|
9
|
+
exports.getStorageReadValue = getStorageReadValue;
|
|
10
|
+
exports.assertStorageWriteSucceeded = assertStorageWriteSucceeded;
|
|
11
|
+
exports.assertAgentStateWriteSucceeded = assertAgentStateWriteSucceeded;
|
|
12
|
+
exports.assertStorageDeleteSucceeded = assertStorageDeleteSucceeded;
|
|
13
|
+
const agents_activity_1 = require("@microsoft/agents-activity");
|
|
14
|
+
const errorHelper_1 = require("../errorHelper");
|
|
15
|
+
const storage_1 = require("./storage");
|
|
16
|
+
/** Returns true when a storage implementation declares the V2 contract. */
|
|
17
|
+
function isStorageV2(storage) {
|
|
18
|
+
return storage instanceof storage_1.StorageV2;
|
|
19
|
+
}
|
|
20
|
+
/** Converts a supported storage implementation to the V2 contract. */
|
|
21
|
+
function asStorageV2(storage) {
|
|
22
|
+
return isStorageV2(storage) ? storage : new StorageToStorageV2Adapter(storage);
|
|
23
|
+
}
|
|
24
|
+
/** Returns a successful V2 read value, maps not-found to undefined, and rejects invalid results. */
|
|
25
|
+
function getStorageReadValue(results, key) {
|
|
26
|
+
const result = results === null || results === void 0 ? void 0 : results[key];
|
|
27
|
+
if ((result === null || result === void 0 ? void 0 : result.status) === storage_1.StorageOperationStatus.NotFound)
|
|
28
|
+
return undefined;
|
|
29
|
+
if ((result === null || result === void 0 ? void 0 : result.status) === storage_1.StorageOperationStatus.Succeeded)
|
|
30
|
+
return result.value;
|
|
31
|
+
throwStorageResultError('read', key, result === null || result === void 0 ? void 0 : result.status);
|
|
32
|
+
}
|
|
33
|
+
/** Adapts the legacy storage contract to version 2 where its semantics allow it. */
|
|
34
|
+
class StorageToStorageV2Adapter extends storage_1.StorageV2 {
|
|
35
|
+
constructor(storage) {
|
|
36
|
+
super();
|
|
37
|
+
this.storage = storage;
|
|
38
|
+
}
|
|
39
|
+
async read(keys) {
|
|
40
|
+
validateKeys(keys);
|
|
41
|
+
if (keys.length === 0)
|
|
42
|
+
return {};
|
|
43
|
+
const items = await this.storage.read(keys);
|
|
44
|
+
return Object.fromEntries(keys.map(key => {
|
|
45
|
+
const value = items[key];
|
|
46
|
+
return [key, Object.prototype.hasOwnProperty.call(items, key)
|
|
47
|
+
? { key, status: storage_1.StorageOperationStatus.Succeeded, value: value, version: value === null || value === void 0 ? void 0 : value.eTag }
|
|
48
|
+
: { key, status: storage_1.StorageOperationStatus.NotFound }];
|
|
49
|
+
}));
|
|
50
|
+
}
|
|
51
|
+
async write(changes, options) {
|
|
52
|
+
validateChanges(changes);
|
|
53
|
+
if ((options === null || options === void 0 ? void 0 : options.mode) !== undefined && options.mode !== storage_1.StorageWriteMode.Upsert) {
|
|
54
|
+
throwUnsupportedOption('mode');
|
|
55
|
+
}
|
|
56
|
+
if ((options === null || options === void 0 ? void 0 : options.ttl) !== undefined) {
|
|
57
|
+
throwUnsupportedOption('ttl');
|
|
58
|
+
}
|
|
59
|
+
validateExpectedVersion(options === null || options === void 0 ? void 0 : options.expectedVersion);
|
|
60
|
+
if (Object.keys(changes).length === 0)
|
|
61
|
+
return {};
|
|
62
|
+
const legacyChanges = Object.fromEntries(Object.entries(changes).map(([key, value]) => [
|
|
63
|
+
key,
|
|
64
|
+
(options === null || options === void 0 ? void 0 : options.expectedVersion) === undefined
|
|
65
|
+
? removeLegacyETag(value)
|
|
66
|
+
: { ...removeLegacyETag(value), eTag: options.expectedVersion },
|
|
67
|
+
]));
|
|
68
|
+
await this.storage.write(legacyChanges);
|
|
69
|
+
return Object.fromEntries(Object.keys(changes).map(key => [key, { key, status: storage_1.StorageOperationStatus.Succeeded }]));
|
|
70
|
+
}
|
|
71
|
+
async delete(keys, options) {
|
|
72
|
+
validateDeleteKeys(keys);
|
|
73
|
+
validateExpectedVersion(options === null || options === void 0 ? void 0 : options.expectedVersion);
|
|
74
|
+
if ((options === null || options === void 0 ? void 0 : options.expectedVersion) !== undefined) {
|
|
75
|
+
throwUnsupportedOption('expectedVersion');
|
|
76
|
+
}
|
|
77
|
+
if (keys.length === 0)
|
|
78
|
+
return {};
|
|
79
|
+
await this.storage.delete(keys);
|
|
80
|
+
return Object.fromEntries(keys.map(key => [key, { key, status: storage_1.StorageOperationStatus.Succeeded }]));
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
function validateKeys(keys) {
|
|
84
|
+
if (!Array.isArray(keys)) {
|
|
85
|
+
throw agents_activity_1.ExceptionHelper.generateException(ReferenceError, errorHelper_1.Errors.StorageReadKeysRequired);
|
|
86
|
+
}
|
|
87
|
+
if (keys.some(key => typeof key !== 'string' || key.trim() === '')) {
|
|
88
|
+
throw agents_activity_1.ExceptionHelper.generateException(ReferenceError, errorHelper_1.Errors.StorageV2KeyRequired);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
function validateDeleteKeys(keys) {
|
|
92
|
+
if (!Array.isArray(keys)) {
|
|
93
|
+
throw agents_activity_1.ExceptionHelper.generateException(ReferenceError, errorHelper_1.Errors.StorageDeleteKeysRequired);
|
|
94
|
+
}
|
|
95
|
+
if (keys.some(key => typeof key !== 'string' || key.trim() === '')) {
|
|
96
|
+
throw agents_activity_1.ExceptionHelper.generateException(ReferenceError, errorHelper_1.Errors.StorageV2KeyRequired);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
function validateChanges(changes) {
|
|
100
|
+
if (changes === null || typeof changes !== 'object' || Array.isArray(changes)) {
|
|
101
|
+
throw agents_activity_1.ExceptionHelper.generateException(ReferenceError, errorHelper_1.Errors.StorageWriteChangesRequired);
|
|
102
|
+
}
|
|
103
|
+
if (Object.keys(changes).some(key => key.trim() === '')) {
|
|
104
|
+
throw agents_activity_1.ExceptionHelper.generateException(ReferenceError, errorHelper_1.Errors.StorageV2KeyRequired);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
function removeLegacyETag(value) {
|
|
108
|
+
if (value === null || typeof value !== 'object' || Array.isArray(value))
|
|
109
|
+
return value;
|
|
110
|
+
const { eTag: _eTag, ...withoutETag } = value;
|
|
111
|
+
return withoutETag;
|
|
112
|
+
}
|
|
113
|
+
function validateExpectedVersion(expectedVersion) {
|
|
114
|
+
if (expectedVersion === '') {
|
|
115
|
+
throw agents_activity_1.ExceptionHelper.generateException(RangeError, errorHelper_1.Errors.StorageV2ExpectedVersionEmpty);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
function throwUnsupportedOption(option) {
|
|
119
|
+
throw agents_activity_1.ExceptionHelper.generateException(Error, errorHelper_1.Errors.StorageV2UnsupportedOption, undefined, { option });
|
|
120
|
+
}
|
|
121
|
+
/** Throws when a V2 write did not succeed for every requested key. */
|
|
122
|
+
function assertStorageWriteSucceeded(results, keys) {
|
|
123
|
+
assertStorageResults('write', results, keys, new Set([storage_1.StorageOperationStatus.Succeeded]));
|
|
124
|
+
}
|
|
125
|
+
/** Throws the state-specific concurrency error when a state write does not succeed. */
|
|
126
|
+
function assertAgentStateWriteSucceeded(results, key, name) {
|
|
127
|
+
var _a;
|
|
128
|
+
const status = (_a = results === null || results === void 0 ? void 0 : results[key]) === null || _a === void 0 ? void 0 : _a.status;
|
|
129
|
+
if (status !== storage_1.StorageOperationStatus.Succeeded) {
|
|
130
|
+
throw agents_activity_1.ExceptionHelper.generateException(Error, errorHelper_1.Errors.AgentStateWriteConflict, undefined, {
|
|
131
|
+
name,
|
|
132
|
+
key,
|
|
133
|
+
status: status !== null && status !== void 0 ? status : 'missing',
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
/** Throws when a V2 delete did not complete with idempotent V1 semantics. */
|
|
138
|
+
function assertStorageDeleteSucceeded(results, keys) {
|
|
139
|
+
assertStorageResults('delete', results, keys, new Set([storage_1.StorageOperationStatus.Succeeded, storage_1.StorageOperationStatus.NotFound]));
|
|
140
|
+
}
|
|
141
|
+
function assertStorageResults(operation, results, keys, acceptedStatuses) {
|
|
142
|
+
var _a;
|
|
143
|
+
for (const key of keys) {
|
|
144
|
+
const status = (_a = results === null || results === void 0 ? void 0 : results[key]) === null || _a === void 0 ? void 0 : _a.status;
|
|
145
|
+
if (status === undefined || !acceptedStatuses.has(status)) {
|
|
146
|
+
throwStorageResultError(operation, key, status);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
function throwStorageResultError(operation, key, status) {
|
|
151
|
+
throw agents_activity_1.ExceptionHelper.generateException(Error, errorHelper_1.Errors.StorageV2OperationFailed, undefined, {
|
|
152
|
+
operation,
|
|
153
|
+
key,
|
|
154
|
+
status: status !== null && status !== void 0 ? status : 'missing',
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
//# sourceMappingURL=storageCompatibility.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"storageCompatibility.js","sourceRoot":"","sources":["../../../src/storage/storageCompatibility.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
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.getStorageWriteExpiry = getStorageWriteExpiry;
|
|
8
|
+
const agents_activity_1 = require("@microsoft/agents-activity");
|
|
9
|
+
const errorHelper_1 = require("../errorHelper");
|
|
10
|
+
function getStorageWriteExpiry(options) {
|
|
11
|
+
const ttl = options === null || options === void 0 ? void 0 : options.ttl;
|
|
12
|
+
if (ttl === undefined) {
|
|
13
|
+
return undefined;
|
|
14
|
+
}
|
|
15
|
+
if (!Number.isFinite(ttl) || ttl <= 0) {
|
|
16
|
+
throw agents_activity_1.ExceptionHelper.generateException(RangeError, errorHelper_1.Errors.InvalidStorageTtl);
|
|
17
|
+
}
|
|
18
|
+
return Date.now() + ttl * 1000;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=storageExpiry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"storageExpiry.js","sourceRoot":"","sources":["../../../src/storage/storageExpiry.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAGH,gEAA4D;AAC5D,gDAAuC;AAEvC,+BAAuC,OAA6B;IAClE,MAAM,GAAG,GAAG,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,GAAG,CAAA;IACxB,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;QACtB,OAAO,SAAS,CAAA;IAClB,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC;QACtC,MAAM,iCAAe,CAAC,iBAAiB,CAAC,UAAU,EAAE,oBAAM,CAAC,iBAAiB,CAAC,CAAA;IAC/E,CAAC;IAED,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,IAAI,CAAA;AAChC,CAAC"}
|
package/dist/src/utils/env.d.ts
CHANGED
|
@@ -6,6 +6,48 @@
|
|
|
6
6
|
* authentication, and connector-client modules. Keeping them internal lets us
|
|
7
7
|
* normalize behavior across the package without growing the public API.
|
|
8
8
|
*/
|
|
9
|
+
export interface LoadEnv {
|
|
10
|
+
[upperKey: string]: {
|
|
11
|
+
key: string;
|
|
12
|
+
value: any;
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
type ParserSettings<K extends string> = {
|
|
16
|
+
[key in K]: (value: string) => {
|
|
17
|
+
key?: string;
|
|
18
|
+
value?: any;
|
|
19
|
+
} | undefined;
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
* Indexes non-empty environment values case-insensitively while preserving
|
|
23
|
+
* their original key spelling.
|
|
24
|
+
*/
|
|
25
|
+
export declare function loadEnvSettings(callback: (key: string, value: string) => void, environment?: NodeJS.ProcessEnv): LoadEnv;
|
|
26
|
+
/**
|
|
27
|
+
* Creates a case-insensitive parser for a fixed set of environment keys.
|
|
28
|
+
*/
|
|
29
|
+
export declare function envParser<K extends string>(settings: ParserSettings<K> & ThisType<ParserSettings<K>>): {
|
|
30
|
+
keys: K[];
|
|
31
|
+
parse(key: K, value: string): {
|
|
32
|
+
key?: undefined;
|
|
33
|
+
value?: undefined;
|
|
34
|
+
} | {
|
|
35
|
+
key: string;
|
|
36
|
+
value: any;
|
|
37
|
+
};
|
|
38
|
+
};
|
|
39
|
+
export declare const envParserUtils: {
|
|
40
|
+
bypass: (value: string) => {
|
|
41
|
+
value: string;
|
|
42
|
+
};
|
|
43
|
+
redirect: <Parser extends ReturnType<typeof envParser>>(parser: Parser, key: Parameters<Parser['parse']>[0]) => (value: string) => {
|
|
44
|
+
key?: undefined;
|
|
45
|
+
value?: undefined;
|
|
46
|
+
} | {
|
|
47
|
+
key: string;
|
|
48
|
+
value: any;
|
|
49
|
+
};
|
|
50
|
+
};
|
|
9
51
|
/**
|
|
10
52
|
* Parses an environment-variable string into a boolean.
|
|
11
53
|
*
|
|
@@ -48,3 +90,4 @@ export declare function parseIntEnv(value: string | undefined, fallback: number)
|
|
|
48
90
|
* @param maxDistance - Maximum edit distance to consider a match (default 2).
|
|
49
91
|
*/
|
|
50
92
|
export declare function suggestClosest(input: string, candidates: readonly string[], maxDistance?: number): string | undefined;
|
|
93
|
+
export {};
|
package/dist/src/utils/env.js
CHANGED
|
@@ -2,17 +2,53 @@
|
|
|
2
2
|
// Copyright (c) Microsoft Corporation. All rights reserved.
|
|
3
3
|
// Licensed under the MIT License.
|
|
4
4
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
+
exports.envParserUtils = void 0;
|
|
6
|
+
exports.loadEnvSettings = loadEnvSettings;
|
|
7
|
+
exports.envParser = envParser;
|
|
5
8
|
exports.parseBooleanEnv = parseBooleanEnv;
|
|
6
9
|
exports.parseIntEnv = parseIntEnv;
|
|
7
10
|
exports.suggestClosest = suggestClosest;
|
|
8
11
|
/**
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
12
|
+
* Indexes non-empty environment values case-insensitively while preserving
|
|
13
|
+
* their original key spelling.
|
|
14
|
+
*/
|
|
15
|
+
function loadEnvSettings(callback, environment = process.env) {
|
|
16
|
+
const env = {};
|
|
17
|
+
for (const [envKey, envValue] of Object.entries(environment)) {
|
|
18
|
+
if (!(envValue === null || envValue === void 0 ? void 0 : envValue.trim())) {
|
|
19
|
+
continue;
|
|
20
|
+
}
|
|
21
|
+
env[envKey.toUpperCase()] = { key: envKey, value: envValue };
|
|
22
|
+
callback(envKey, envValue);
|
|
23
|
+
}
|
|
24
|
+
return env;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Creates a case-insensitive parser for a fixed set of environment keys.
|
|
15
28
|
*/
|
|
29
|
+
function envParser(settings) {
|
|
30
|
+
const keys = Object.keys(settings);
|
|
31
|
+
const upperKeys = keys.reduce((acc, key) => {
|
|
32
|
+
acc[key.toUpperCase()] = key;
|
|
33
|
+
return acc;
|
|
34
|
+
}, {});
|
|
35
|
+
return {
|
|
36
|
+
keys,
|
|
37
|
+
parse(key, value) {
|
|
38
|
+
var _a;
|
|
39
|
+
const match = upperKeys[key.toUpperCase()];
|
|
40
|
+
if (!match) {
|
|
41
|
+
return {};
|
|
42
|
+
}
|
|
43
|
+
const result = settings[match](value);
|
|
44
|
+
return { key: (_a = result === null || result === void 0 ? void 0 : result.key) !== null && _a !== void 0 ? _a : match, value: result === null || result === void 0 ? void 0 : result.value };
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
exports.envParserUtils = {
|
|
49
|
+
bypass: (value) => ({ value }),
|
|
50
|
+
redirect: (parser, key) => (value) => parser.parse(key, value)
|
|
51
|
+
};
|
|
16
52
|
/**
|
|
17
53
|
* Parses an environment-variable string into a boolean.
|
|
18
54
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"env.js","sourceRoot":"","sources":["../../../src/utils/env.ts"],"names":[],"mappings":";AAAA,4DAA4D;AAC5D,kCAAkC
|
|
1
|
+
{"version":3,"file":"env.js","sourceRoot":"","sources":["../../../src/utils/env.ts"],"names":[],"mappings":"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"}
|
package/dist/src/utils.d.ts
CHANGED
package/dist/src/utils.js
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Licensed under the MIT License.
|
|
5
5
|
*/
|
|
6
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
-
exports.prune = void 0;
|
|
7
|
+
exports.mergeDefined = exports.prune = void 0;
|
|
8
8
|
/**
|
|
9
9
|
* Utility function to prune undefined values from an object. This is useful for cleaning up configuration objects before logging or processing, ensuring that only defined values are included.
|
|
10
10
|
* @param obj The object to prune
|
|
@@ -15,4 +15,13 @@ const prune = (obj) => {
|
|
|
15
15
|
return Object.fromEntries(entries);
|
|
16
16
|
};
|
|
17
17
|
exports.prune = prune;
|
|
18
|
+
const mergeDefined = (...layers) => {
|
|
19
|
+
const result = {};
|
|
20
|
+
for (const layer of layers) {
|
|
21
|
+
if (layer)
|
|
22
|
+
Object.assign(result, (0, exports.prune)(layer));
|
|
23
|
+
}
|
|
24
|
+
return result;
|
|
25
|
+
};
|
|
26
|
+
exports.mergeDefined = mergeDefined;
|
|
18
27
|
//# sourceMappingURL=utils.js.map
|
package/dist/src/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH;;;;GAIG;AACI,MAAM,KAAK,GAAG,CAAgC,GAAM,EAAE,EAAE;IAC7D,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,KAAK,SAAS,CAAC,CAAA;IAC9E,OAAO,MAAM,CAAC,WAAW,CAAC,OAAO,CAAM,CAAA;AACzC,CAAC,CAAA;AAHY,QAAA,KAAK,GAAL,KAAK,CAGjB"}
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH;;;;GAIG;AACI,MAAM,KAAK,GAAG,CAAgC,GAAM,EAAE,EAAE;IAC7D,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,KAAK,SAAS,CAAC,CAAA;IAC9E,OAAO,MAAM,CAAC,WAAW,CAAC,OAAO,CAAM,CAAA;AACzC,CAAC,CAAA;AAHY,QAAA,KAAK,GAAL,KAAK,CAGjB;AAEM,MAAM,YAAY,GAAG,CAC1B,GAAG,MAA2C,EAC3C,EAAE;IACL,MAAM,MAAM,GAAe,EAAE,CAAA;IAC7B,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,KAAK;YAAE,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,IAAA,QAAA,KAAK,EAAC,KAAK,CAAC,CAAC,CAAA;IAChD,CAAC;IACD,OAAO,MAAW,CAAA;AACpB,CAAC,CAAA;AARY,QAAA,YAAY,GAAZ,YAAY,CAQxB"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://json.schemastore.org/package.json",
|
|
3
3
|
"name": "@microsoft/agents-hosting",
|
|
4
|
-
"version": "1.9.
|
|
4
|
+
"version": "1.9.1",
|
|
5
5
|
"homepage": "https://github.com/microsoft/Agents-for-js",
|
|
6
6
|
"repository": {
|
|
7
7
|
"type": "git",
|
|
@@ -21,8 +21,8 @@
|
|
|
21
21
|
"dependencies": {
|
|
22
22
|
"@azure/core-auth": "1.10.1",
|
|
23
23
|
"@azure/msal-node": "5.6.0",
|
|
24
|
-
"@microsoft/agents-activity": "1.9.
|
|
25
|
-
"@microsoft/agents-telemetry": "1.9.
|
|
24
|
+
"@microsoft/agents-activity": "1.9.1",
|
|
25
|
+
"@microsoft/agents-telemetry": "1.9.1",
|
|
26
26
|
"jsonwebtoken": "9.0.3",
|
|
27
27
|
"jwks-rsa": "4.0.1",
|
|
28
28
|
"zod": "3.25.75"
|