@microsoft/agents-hosting-storage-cosmos 1.7.2 → 1.8.0-beta.36.gb033f0abc1

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/dist/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://json.schemastore.org/package.json",
3
3
  "name": "@microsoft/agents-hosting-storage-cosmos",
4
- "version": "1.7.2",
4
+ "version": "1.8.0-beta.36.gb033f0abc1",
5
5
  "homepage": "https://github.com/microsoft/Agents-for-js",
6
6
  "repository": {
7
7
  "type": "git",
@@ -13,13 +13,13 @@
13
13
  "url": "https://aka.ms/Agents"
14
14
  },
15
15
  "description": "Microsoft 365 Agents SDK State Cosmos Storage support.",
16
- "main": "dist/index.js",
16
+ "main": "dist/src/index.js",
17
17
  "types": "dist/src/index.d.ts",
18
18
  "dependencies": {
19
19
  "@azure/cosmos": "4.9.3",
20
- "@microsoft/agents-hosting": "1.7.2",
21
- "@microsoft/agents-activity": "1.7.2",
22
- "@microsoft/agents-telemetry": "1.7.2"
20
+ "@microsoft/agents-hosting": "1.8.0-beta.36.gb033f0abc1",
21
+ "@microsoft/agents-activity": "1.8.0-beta.36.gb033f0abc1",
22
+ "@microsoft/agents-telemetry": "1.8.0-beta.36.gb033f0abc1"
23
23
  },
24
24
  "license": "MIT",
25
25
  "files": [
@@ -12,13 +12,15 @@ const agents_telemetry_1 = require("@microsoft/agents-telemetry");
12
12
  const observability_1 = require("./observability");
13
13
  const agents_telemetry_2 = require("@microsoft/agents-telemetry");
14
14
  const logger = (0, agents_telemetry_2.debug)('agents:cosmos-storage');
15
+ const maxCachedInitializations = 100;
15
16
  /**
16
17
  * A utility class to ensure that a specific asynchronous task is executed only once for a given key.
17
18
  * @typeParam T The type of the result returned by the asynchronous task.
18
19
  */
19
20
  class DoOnce {
20
- constructor() {
21
- this.task = {};
21
+ constructor(maxTasks) {
22
+ this.maxTasks = maxTasks;
23
+ this.tasks = new Map();
22
24
  }
23
25
  /**
24
26
  * Waits for the task associated with the given key to complete, or starts the task if it hasn't been started yet.
@@ -27,14 +29,54 @@ class DoOnce {
27
29
  * @returns A promise that resolves to the result of the task.
28
30
  */
29
31
  waitFor(key, fn) {
30
- if (!this.task[key]) {
31
- this.task[key] = fn();
32
+ const existingTask = this.tasks.get(key);
33
+ if (existingTask) {
34
+ this.tasks.delete(key);
35
+ this.tasks.set(key, existingTask);
36
+ return existingTask.promise;
37
+ }
38
+ const cachedTask = {
39
+ promise: Promise.resolve().then(fn),
40
+ settled: false,
41
+ };
42
+ this.tasks.set(key, cachedTask);
43
+ cachedTask.promise.then(() => {
44
+ if (this.tasks.get(key) === cachedTask) {
45
+ cachedTask.settled = true;
46
+ this.evictLeastRecentlyUsed();
47
+ }
48
+ }, () => {
49
+ if (this.tasks.get(key) === cachedTask) {
50
+ this.tasks.delete(key);
51
+ }
52
+ });
53
+ this.evictLeastRecentlyUsed();
54
+ return cachedTask.promise;
55
+ }
56
+ evictLeastRecentlyUsed() {
57
+ while (this.tasks.size > this.maxTasks) {
58
+ let evicted = false;
59
+ for (const [key, task] of this.tasks) {
60
+ if (task.settled) {
61
+ this.tasks.delete(key);
62
+ evicted = true;
63
+ break;
64
+ }
65
+ }
66
+ if (!evicted) {
67
+ return;
68
+ }
32
69
  }
33
- return this.task[key];
34
70
  }
35
71
  }
36
- const _doOnce = new DoOnce();
72
+ const _doOnce = new DoOnce(maxCachedInitializations);
37
73
  const maxDepthAllowed = 127;
74
+ function isNotFoundError(err) {
75
+ if (!err || typeof err !== 'object' || !('code' in err)) {
76
+ return false;
77
+ }
78
+ return Number(err.code) === 404;
79
+ }
38
80
  /**
39
81
  * Implements storage using Cosmos DB partitioned storage.
40
82
  */
@@ -198,16 +240,26 @@ class CosmosDbPartitionedStorage {
198
240
  */
199
241
  async initialize() {
200
242
  if (!this.container) {
201
- if (!this.client) {
202
- this.client = new cosmos_1.CosmosClient(this.cosmosDbStorageOptions.cosmosClientOptions);
203
- }
204
- const dbAndContainerKey = `${this.cosmosDbStorageOptions.databaseId}-${this.cosmosDbStorageOptions.containerId}`;
205
- this.container = await _doOnce.waitFor(dbAndContainerKey, async () => await this.getOrCreateContainer());
243
+ const dbAndContainerKey = JSON.stringify([
244
+ this.cosmosDbStorageOptions.cosmosClientOptions.endpoint,
245
+ this.cosmosDbStorageOptions.databaseId,
246
+ this.cosmosDbStorageOptions.containerId,
247
+ ]);
248
+ const initialization = await _doOnce.waitFor(dbAndContainerKey, () => {
249
+ if (!this.client) {
250
+ this.client = new cosmos_1.CosmosClient(this.cosmosDbStorageOptions.cosmosClientOptions);
251
+ }
252
+ return this.getOrCreateContainer();
253
+ });
254
+ this.container = initialization.container;
255
+ this.compatibilityModePartitionKey = initialization.compatibilityModePartitionKey;
206
256
  }
207
257
  }
208
258
  async getOrCreateContainer() {
259
+ var _a, _b;
209
260
  let createIfNotExists = !this.cosmosDbStorageOptions.compatibilityMode;
210
261
  let container;
262
+ let compatibilityModePartitionKey = false;
211
263
  try {
212
264
  const { database } = await this.client.databases.createIfNotExists({
213
265
  id: this.cosmosDbStorageOptions.databaseId
@@ -215,12 +267,11 @@ class CosmosDbPartitionedStorage {
215
267
  if (this.cosmosDbStorageOptions.compatibilityMode) {
216
268
  try {
217
269
  container = database.container(this.cosmosDbStorageOptions.containerId);
218
- // @ts-ignore
219
- const partitionKeyResponse = await container.readPartitionKeyDefinition();
220
- if (partitionKeyResponse.resource && partitionKeyResponse.resource.paths) {
221
- const paths = partitionKeyResponse.resource.paths;
270
+ const containerResponse = await container.read();
271
+ const paths = (_b = (_a = containerResponse.resource) === null || _a === void 0 ? void 0 : _a.partitionKey) === null || _b === void 0 ? void 0 : _b.paths;
272
+ if (paths) {
222
273
  if (paths.includes('/_partitionKey')) {
223
- this.compatibilityModePartitionKey = true;
274
+ compatibilityModePartitionKey = true;
224
275
  }
225
276
  else if (paths.indexOf(documentStoreItem_1.DocumentStoreItem.partitionKeyPath) === -1) {
226
277
  throw agents_activity_1.ExceptionHelper.generateException(Error, errorHelper_1.Errors.UnsupportedCustomPartitionKeyPath, undefined, {
@@ -230,11 +281,14 @@ class CosmosDbPartitionedStorage {
230
281
  }
231
282
  }
232
283
  else {
233
- this.compatibilityModePartitionKey = true;
284
+ compatibilityModePartitionKey = true;
234
285
  }
235
- return container;
286
+ return { container, compatibilityModePartitionKey };
236
287
  }
237
- catch {
288
+ catch (err) {
289
+ if (!isNotFoundError(err)) {
290
+ throw err;
291
+ }
238
292
  createIfNotExists = true;
239
293
  }
240
294
  }
@@ -246,12 +300,12 @@ class CosmosDbPartitionedStorage {
246
300
  },
247
301
  throughput: this.cosmosDbStorageOptions.containerThroughput,
248
302
  });
249
- return result.container;
303
+ return { container: result.container, compatibilityModePartitionKey };
250
304
  }
251
305
  if (!container) {
252
306
  throw agents_activity_1.ExceptionHelper.generateException(Error, errorHelper_1.Errors.ContainerNotFound, undefined, { containerId: this.cosmosDbStorageOptions.containerId });
253
307
  }
254
- return container;
308
+ return { container, compatibilityModePartitionKey };
255
309
  }
256
310
  catch (err) {
257
311
  throw agents_activity_1.ExceptionHelper.generateException(Error, errorHelper_1.Errors.InitializationError, err, {
@@ -264,6 +318,7 @@ class CosmosDbPartitionedStorage {
264
318
  return this.compatibilityModePartitionKey ? undefined : key;
265
319
  }
266
320
  checkForNestingError(json, err) {
321
+ const ancestors = new WeakSet();
267
322
  const checkDepth = (obj, depth, isInDialogState) => {
268
323
  if (depth > maxDepthAllowed) {
269
324
  let additionalMessage = '';
@@ -288,8 +343,17 @@ class CosmosDbPartitionedStorage {
288
343
  });
289
344
  }
290
345
  else if (obj && typeof obj === 'object') {
291
- for (const [key, value] of Object.entries(obj)) {
292
- checkDepth(value, depth + 1, key === 'dialogStack' || isInDialogState);
346
+ if (ancestors.has(obj)) {
347
+ return;
348
+ }
349
+ ancestors.add(obj);
350
+ try {
351
+ for (const [key, value] of Object.entries(obj)) {
352
+ checkDepth(value, depth + 1, key === 'dialogStack' || isInDialogState);
353
+ }
354
+ }
355
+ finally {
356
+ ancestors.delete(obj);
293
357
  }
294
358
  }
295
359
  };
@@ -1 +1 @@
1
- {"version":3,"file":"cosmosDbPartitionedStorage.js","sourceRoot":"","sources":["../../src/cosmosDbPartitionedStorage.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cosmosDbPartitionedStorage.js","sourceRoot":"","sources":["../../src/cosmosDbPartitionedStorage.ts"],"names":[],"mappings":"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"}
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-storage-cosmos",
4
- "version": "1.7.2",
4
+ "version": "1.8.0-beta.36.gb033f0abc1",
5
5
  "homepage": "https://github.com/microsoft/Agents-for-js",
6
6
  "repository": {
7
7
  "type": "git",
@@ -13,13 +13,13 @@
13
13
  "url": "https://aka.ms/Agents"
14
14
  },
15
15
  "description": "Microsoft 365 Agents SDK State Cosmos Storage support.",
16
- "main": "dist/index.js",
16
+ "main": "dist/src/index.js",
17
17
  "types": "dist/src/index.d.ts",
18
18
  "dependencies": {
19
19
  "@azure/cosmos": "4.9.3",
20
- "@microsoft/agents-hosting": "1.7.2",
21
- "@microsoft/agents-activity": "1.7.2",
22
- "@microsoft/agents-telemetry": "1.7.2"
20
+ "@microsoft/agents-hosting": "1.8.0-beta.36.gb033f0abc1",
21
+ "@microsoft/agents-activity": "1.8.0-beta.36.gb033f0abc1",
22
+ "@microsoft/agents-telemetry": "1.8.0-beta.36.gb033f0abc1"
23
23
  },
24
24
  "license": "MIT",
25
25
  "files": [
@@ -13,15 +13,21 @@ import { CosmosStorageTraceDefinitions } from './observability'
13
13
  import { debug } from '@microsoft/agents-telemetry'
14
14
 
15
15
  const logger = debug('agents:cosmos-storage')
16
+ const maxCachedInitializations = 100
17
+
18
+ interface CachedTask<T> {
19
+ promise: Promise<T>;
20
+ settled: boolean;
21
+ }
16
22
 
17
23
  /**
18
24
  * A utility class to ensure that a specific asynchronous task is executed only once for a given key.
19
25
  * @typeParam T The type of the result returned by the asynchronous task.
20
26
  */
21
27
  class DoOnce<T> {
22
- private task: {
23
- [key: string]: Promise<T>;
24
- } = {}
28
+ private readonly tasks = new Map<string, CachedTask<T>>()
29
+
30
+ constructor (private readonly maxTasks: number) {}
25
31
 
26
32
  /**
27
33
  * Waits for the task associated with the given key to complete, or starts the task if it hasn't been started yet.
@@ -30,18 +36,67 @@ class DoOnce<T> {
30
36
  * @returns A promise that resolves to the result of the task.
31
37
  */
32
38
  waitFor (key: string, fn: () => Promise<T>): Promise<T> {
33
- if (!this.task[key]) {
34
- this.task[key] = fn()
39
+ const existingTask = this.tasks.get(key)
40
+ if (existingTask) {
41
+ this.tasks.delete(key)
42
+ this.tasks.set(key, existingTask)
43
+ return existingTask.promise
44
+ }
45
+
46
+ const cachedTask: CachedTask<T> = {
47
+ promise: Promise.resolve().then(fn),
48
+ settled: false,
35
49
  }
50
+ this.tasks.set(key, cachedTask)
51
+ cachedTask.promise.then(() => {
52
+ if (this.tasks.get(key) === cachedTask) {
53
+ cachedTask.settled = true
54
+ this.evictLeastRecentlyUsed()
55
+ }
56
+ }, () => {
57
+ if (this.tasks.get(key) === cachedTask) {
58
+ this.tasks.delete(key)
59
+ }
60
+ })
61
+ this.evictLeastRecentlyUsed()
36
62
 
37
- return this.task[key]
63
+ return cachedTask.promise
64
+ }
65
+
66
+ private evictLeastRecentlyUsed (): void {
67
+ while (this.tasks.size > this.maxTasks) {
68
+ let evicted = false
69
+ for (const [key, task] of this.tasks) {
70
+ if (task.settled) {
71
+ this.tasks.delete(key)
72
+ evicted = true
73
+ break
74
+ }
75
+ }
76
+ if (!evicted) {
77
+ return
78
+ }
79
+ }
38
80
  }
39
81
  }
40
82
 
41
- const _doOnce: DoOnce<Container> = new DoOnce<Container>()
83
+ interface ContainerInitialization {
84
+ container: Container;
85
+ compatibilityModePartitionKey: boolean;
86
+ }
87
+
88
+ const _doOnce: DoOnce<ContainerInitialization> = new DoOnce<ContainerInitialization>(maxCachedInitializations)
42
89
 
43
90
  const maxDepthAllowed = 127
44
91
 
92
+ function isNotFoundError (err: unknown): boolean {
93
+ if (!err || typeof err !== 'object' || !('code' in err)) {
94
+ return false
95
+ }
96
+
97
+ return Number(err.code) === 404
98
+ }
99
+
45
100
  /**
46
101
  * Implements storage using Cosmos DB partitioned storage.
47
102
  */
@@ -280,20 +335,29 @@ export class CosmosDbPartitionedStorage implements Storage {
280
335
  */
281
336
  private async initialize (): Promise<void> {
282
337
  if (!this.container) {
283
- if (!this.client) {
284
- this.client = new CosmosClient(this.cosmosDbStorageOptions.cosmosClientOptions!)
285
- }
286
- const dbAndContainerKey = `${this.cosmosDbStorageOptions.databaseId}-${this.cosmosDbStorageOptions.containerId}`
287
- this.container = await _doOnce.waitFor(
338
+ const dbAndContainerKey = JSON.stringify([
339
+ this.cosmosDbStorageOptions.cosmosClientOptions!.endpoint,
340
+ this.cosmosDbStorageOptions.databaseId,
341
+ this.cosmosDbStorageOptions.containerId,
342
+ ])
343
+ const initialization = await _doOnce.waitFor(
288
344
  dbAndContainerKey,
289
- async (): Promise<Container> => await this.getOrCreateContainer()
345
+ () => {
346
+ if (!this.client) {
347
+ this.client = new CosmosClient(this.cosmosDbStorageOptions.cosmosClientOptions!)
348
+ }
349
+ return this.getOrCreateContainer()
350
+ }
290
351
  )
352
+ this.container = initialization.container
353
+ this.compatibilityModePartitionKey = initialization.compatibilityModePartitionKey
291
354
  }
292
355
  }
293
356
 
294
- private async getOrCreateContainer (): Promise<Container> {
357
+ private async getOrCreateContainer (): Promise<ContainerInitialization> {
295
358
  let createIfNotExists = !this.cosmosDbStorageOptions.compatibilityMode
296
359
  let container: Container | undefined
360
+ let compatibilityModePartitionKey = false
297
361
 
298
362
  try {
299
363
  const { database } = await this.client.databases.createIfNotExists({
@@ -303,12 +367,11 @@ export class CosmosDbPartitionedStorage implements Storage {
303
367
  if (this.cosmosDbStorageOptions.compatibilityMode) {
304
368
  try {
305
369
  container = database.container(this.cosmosDbStorageOptions.containerId)
306
- // @ts-ignore
307
- const partitionKeyResponse = await container.readPartitionKeyDefinition()
308
- if (partitionKeyResponse.resource && partitionKeyResponse.resource.paths) {
309
- const paths = partitionKeyResponse.resource.paths
370
+ const containerResponse = await container.read()
371
+ const paths = containerResponse.resource?.partitionKey?.paths
372
+ if (paths) {
310
373
  if (paths.includes('/_partitionKey')) {
311
- this.compatibilityModePartitionKey = true
374
+ compatibilityModePartitionKey = true
312
375
  } else if (paths.indexOf(DocumentStoreItem.partitionKeyPath) === -1) {
313
376
  throw ExceptionHelper.generateException(
314
377
  Error,
@@ -321,10 +384,13 @@ export class CosmosDbPartitionedStorage implements Storage {
321
384
  )
322
385
  }
323
386
  } else {
324
- this.compatibilityModePartitionKey = true
387
+ compatibilityModePartitionKey = true
388
+ }
389
+ return { container, compatibilityModePartitionKey }
390
+ } catch (err: unknown) {
391
+ if (!isNotFoundError(err)) {
392
+ throw err
325
393
  }
326
- return container
327
- } catch {
328
394
  createIfNotExists = true
329
395
  }
330
396
  }
@@ -337,7 +403,7 @@ export class CosmosDbPartitionedStorage implements Storage {
337
403
  },
338
404
  throughput: this.cosmosDbStorageOptions.containerThroughput,
339
405
  })
340
- return result.container
406
+ return { container: result.container, compatibilityModePartitionKey }
341
407
  }
342
408
 
343
409
  if (!container) {
@@ -348,7 +414,7 @@ export class CosmosDbPartitionedStorage implements Storage {
348
414
  { containerId: this.cosmosDbStorageOptions.containerId }
349
415
  )
350
416
  }
351
- return container
417
+ return { container, compatibilityModePartitionKey }
352
418
  } catch (err: any) {
353
419
  throw ExceptionHelper.generateException(
354
420
  Error,
@@ -367,6 +433,8 @@ export class CosmosDbPartitionedStorage implements Storage {
367
433
  }
368
434
 
369
435
  private checkForNestingError (json: object, err: Error | Record<'message', string> | string): void {
436
+ const ancestors = new WeakSet<object>()
437
+
370
438
  const checkDepth = (obj: unknown, depth: number, isInDialogState: boolean): void => {
371
439
  if (depth > maxDepthAllowed) {
372
440
  let additionalMessage = ''
@@ -397,8 +465,17 @@ export class CosmosDbPartitionedStorage implements Storage {
397
465
  }
398
466
  )
399
467
  } else if (obj && typeof obj === 'object') {
400
- for (const [key, value] of Object.entries(obj)) {
401
- checkDepth(value, depth + 1, key === 'dialogStack' || isInDialogState)
468
+ if (ancestors.has(obj)) {
469
+ return
470
+ }
471
+
472
+ ancestors.add(obj)
473
+ try {
474
+ for (const [key, value] of Object.entries(obj)) {
475
+ checkDepth(value, depth + 1, key === 'dialogStack' || isInDialogState)
476
+ }
477
+ } finally {
478
+ ancestors.delete(obj)
402
479
  }
403
480
  }
404
481
  }