@mastra/spanner 1.5.0-alpha.0 → 1.5.0-alpha.2

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/CHANGELOG.md CHANGED
@@ -1,5 +1,78 @@
1
1
  # @mastra/spanner
2
2
 
3
+ ## 1.5.0-alpha.2
4
+
5
+ ### Minor Changes
6
+
7
+ - Added batch trace ID filtering to observability metric queries. ([#20535](https://github.com/mastra-ai/mastra/pull/20535))
8
+
9
+ ```ts
10
+ const result = await observability.getMetricBreakdown({
11
+ name: ['mastra_model_total_input_tokens'],
12
+ aggregation: 'sum',
13
+ groupBy: ['traceId'],
14
+ filters: { traceIds: ['trace-1', 'trace-2'] },
15
+ });
16
+ ```
17
+
18
+ ### Patch Changes
19
+
20
+ - Dataset item scorer selections now persist across Spanner writes and reads. Setting `scorerIds` to `null` clears an item override, while `[]` remains an explicit override with no scorers. ([#20191](https://github.com/mastra-ai/mastra/pull/20191))
21
+
22
+ ```typescript
23
+ await dataset.addItem({
24
+ input: 'Evaluate this response',
25
+ scorerIds: [],
26
+ });
27
+ ```
28
+
29
+ - Updated dependencies [[`82201f7`](https://github.com/mastra-ai/mastra/commit/82201f75fae8e050a8de2df08b74875ee74c6b83), [`fb18da5`](https://github.com/mastra-ai/mastra/commit/fb18da56fc35689ae370621a8f10b5b0d8606e20), [`fb18da5`](https://github.com/mastra-ai/mastra/commit/fb18da56fc35689ae370621a8f10b5b0d8606e20), [`0a6598b`](https://github.com/mastra-ai/mastra/commit/0a6598bde80bde008986ad6616bed9632b9294cb), [`9e1dad8`](https://github.com/mastra-ai/mastra/commit/9e1dad8f7b1cab2bb7ade90e5b7561f24577b88a), [`2f43145`](https://github.com/mastra-ai/mastra/commit/2f4314504c03cbba280414ac81ba3197448ee6b0), [`34d34d8`](https://github.com/mastra-ai/mastra/commit/34d34d8c811df512fef4dd5459f79b7821be1866)]:
30
+ - @mastra/core@1.56.0-alpha.6
31
+
32
+ ## 1.5.0-alpha.1
33
+
34
+ ### Minor Changes
35
+
36
+ - Stored workflow definitions now persist across restarts on every major database backend. ([#20471](https://github.com/mastra-ai/mastra/pull/20471))
37
+
38
+ Implement the `workflowDefinitions` storage domain for libsql, pg, mysql, mssql, mongodb, and spanner. Previously the stored-workflow persistence path (`POST /stored/workflows`, `Mastra.addStoredWorkflow`) only worked against `@mastra/core`'s in-memory store. Persistent adapters returned `undefined` from `storage.getStore('workflowDefinitions')` and threw when the HTTP handler tried to read/write a workflow.
39
+
40
+ ```ts
41
+ const workflowDefinitions = await storage.getStore('workflowDefinitions');
42
+ if (!workflowDefinitions) {
43
+ throw new Error('This storage adapter does not support the workflowDefinitions domain');
44
+ }
45
+
46
+ await workflowDefinitions.upsert({
47
+ id: 'greeting-workflow',
48
+ inputSchema: { type: 'object', properties: { name: { type: 'string' } }, required: ['name'] },
49
+ outputSchema: { type: 'object', properties: { text: { type: 'string' } }, required: ['text'] },
50
+ graph: [{ type: 'agent', id: 'greet', agentId: 'greeter-agent' }],
51
+ });
52
+
53
+ const { definitions, total } = await workflowDefinitions.list({ status: 'active' });
54
+ const definition = await workflowDefinitions.get('greeting-workflow');
55
+ await workflowDefinitions.delete('greeting-workflow');
56
+ ```
57
+
58
+ Each adapter now ships a `WorkflowDefinitions*` domain that:
59
+
60
+ - Creates the shared `mastra_workflow_definitions` table (or Mongo collection) from `WORKFLOW_DEFINITIONS_SCHEMA` during `init()`, plus a default index on `status`.
61
+ - Implements `upsert` / `get` / `list` / `delete` matching `WorkflowDefinitionsStorage` semantics (`list` supports `status` and `authorId` filters and orders by `updatedAt` desc). Partial upserts preserve unspecified fields, including `authorId` updates and `createdAt` / `updatedAt` semantics.
62
+ - Handles concurrent first-writes race-safely: if two callers upsert the same new id simultaneously, the losing insert detects the duplicate key, re-reads the row, and applies the partial-update path instead of failing.
63
+ - Round-trips the JSON columns (`inputSchema`, `outputSchema`, `stateSchema`, `requestContextSchema`, `metadata`, `graph`) through each adapter's JSON handling, so declarative workflow graphs rehydrate identically no matter which backend they were stored in. Malformed persisted JSON surfaces as an actionable error naming the row and column instead of hydrating raw strings.
64
+
65
+ Exported class names by adapter: `WorkflowDefinitionsLibSQL`, `WorkflowDefinitionsPG`, `WorkflowDefinitionsMySQL`, `WorkflowDefinitionsMSSQL`, `MongoDBWorkflowDefinitionsStore`, `WorkflowDefinitionsSpanner`. The composite stores (`LibSQLStore`, `PostgresStore`, `MySQLStore`, `MSSQLStore`, `MongoDBStore`, `SpannerStore`) auto-wire the new domain, so callers do not need to construct it manually — `storage.getStore('workflowDefinitions')` now returns a live handle.
66
+
67
+ The pg adapter reads `createdAt` / `updatedAt` from the auto-added `createdAtZ` / `updatedAtZ` `timestamptz` companion columns to avoid the naive-timestamp / local-TZ drift that a plain `TIMESTAMP` read exhibits under node-pg.
68
+
69
+ `@mastra/clickhouse` and `@mastra/cloudflare` register the new `mastra_workflow_definitions` table in their table/type maps so shared table constants stay exhaustive (no workflow-definitions domain implementation yet).
70
+
71
+ ### Patch Changes
72
+
73
+ - Updated dependencies [[`4844167`](https://github.com/mastra-ai/mastra/commit/4844167cff2d5ec5004e94edd34970833040fa3f), [`5faf93f`](https://github.com/mastra-ai/mastra/commit/5faf93f03e19daea394b9e2a923f2e4f833407f2), [`80ad891`](https://github.com/mastra-ai/mastra/commit/80ad891f8cd10379aa5b5af7510c763783b2ab56), [`a1cb98d`](https://github.com/mastra-ai/mastra/commit/a1cb98d11990b560b98482292a1f34aa1a2d9092), [`598ad82`](https://github.com/mastra-ai/mastra/commit/598ad82d41c41389a686338a1d0e50b7400e1938), [`1fd6aad`](https://github.com/mastra-ai/mastra/commit/1fd6aad1ea4a9d32f65efa832307c35e981a4c0a)]:
74
+ - @mastra/core@1.56.0-alpha.4
75
+
3
76
  ## 1.5.0-alpha.0
4
77
 
5
78
  ### Minor Changes
@@ -3,7 +3,7 @@ name: mastra-spanner
3
3
  description: Documentation for @mastra/spanner. Use when working with @mastra/spanner APIs, configuration, or implementation.
4
4
  metadata:
5
5
  package: "@mastra/spanner"
6
- version: "1.5.0-alpha.0"
6
+ version: "1.5.0-alpha.2"
7
7
  ---
8
8
 
9
9
  ## When to use
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "1.5.0-alpha.0",
2
+ "version": "1.5.0-alpha.2",
3
3
  "package": "@mastra/spanner",
4
4
  "exports": {},
5
5
  "modules": {}
package/dist/index.cjs CHANGED
@@ -2789,6 +2789,7 @@ function rowToItem(row) {
2789
2789
  expectedTrajectory: t.expectedTrajectory ?? void 0,
2790
2790
  toolMocks: t.toolMocks ?? void 0,
2791
2791
  unmockedToolPolicy: t.unmockedToolPolicy ?? void 0,
2792
+ scorerIds: t.scorerIds ?? void 0,
2792
2793
  requestContext: t.requestContext ?? void 0,
2793
2794
  metadata: t.metadata ?? void 0,
2794
2795
  source: t.source ?? void 0,
@@ -2887,7 +2888,8 @@ var DatasetsSpanner = class DatasetsSpanner extends _mastra_core_storage.Dataset
2887
2888
  "organizationId",
2888
2889
  "projectId",
2889
2890
  "externalId",
2890
- "unmockedToolPolicy"
2891
+ "unmockedToolPolicy",
2892
+ "scorerIds"
2891
2893
  ]
2892
2894
  });
2893
2895
  await this.createDefaultIndexes();
@@ -3353,6 +3355,7 @@ var DatasetsSpanner = class DatasetsSpanner extends _mastra_core_storage.Dataset
3353
3355
  expectedTrajectory: args.expectedTrajectory ?? null,
3354
3356
  toolMocks: args.toolMocks ?? null,
3355
3357
  unmockedToolPolicy: args.unmockedToolPolicy ?? null,
3358
+ scorerIds: args.scorerIds ?? null,
3356
3359
  requestContext: args.requestContext ?? null,
3357
3360
  metadata: args.metadata ?? null,
3358
3361
  source: args.source ?? null,
@@ -3374,6 +3377,7 @@ var DatasetsSpanner = class DatasetsSpanner extends _mastra_core_storage.Dataset
3374
3377
  expectedTrajectory: args.expectedTrajectory,
3375
3378
  toolMocks: args.toolMocks,
3376
3379
  unmockedToolPolicy: args.unmockedToolPolicy,
3380
+ scorerIds: args.scorerIds,
3377
3381
  requestContext: args.requestContext,
3378
3382
  metadata: args.metadata,
3379
3383
  source: args.source,
@@ -3424,6 +3428,7 @@ var DatasetsSpanner = class DatasetsSpanner extends _mastra_core_storage.Dataset
3424
3428
  expectedTrajectory: args.expectedTrajectory !== void 0 ? args.expectedTrajectory : existing.expectedTrajectory,
3425
3429
  toolMocks: args.toolMocks !== void 0 ? args.toolMocks : existing.toolMocks,
3426
3430
  unmockedToolPolicy: args.unmockedToolPolicy !== void 0 ? args.unmockedToolPolicy : existing.unmockedToolPolicy,
3431
+ scorerIds: args.scorerIds !== void 0 ? args.scorerIds ?? void 0 : existing.scorerIds,
3427
3432
  requestContext: args.requestContext !== void 0 ? args.requestContext : existing.requestContext,
3428
3433
  metadata: args.metadata !== void 0 ? args.metadata : existing.metadata,
3429
3434
  source: args.source !== void 0 ? args.source : existing.source
@@ -3450,6 +3455,7 @@ var DatasetsSpanner = class DatasetsSpanner extends _mastra_core_storage.Dataset
3450
3455
  expectedTrajectory: merged.expectedTrajectory ?? null,
3451
3456
  toolMocks: merged.toolMocks ?? null,
3452
3457
  unmockedToolPolicy: merged.unmockedToolPolicy ?? null,
3458
+ scorerIds: merged.scorerIds ?? null,
3453
3459
  requestContext: merged.requestContext ?? null,
3454
3460
  metadata: merged.metadata ?? null,
3455
3461
  source: merged.source ?? null,
@@ -3472,6 +3478,7 @@ var DatasetsSpanner = class DatasetsSpanner extends _mastra_core_storage.Dataset
3472
3478
  expectedTrajectory: merged.expectedTrajectory,
3473
3479
  toolMocks: merged.toolMocks,
3474
3480
  unmockedToolPolicy: merged.unmockedToolPolicy,
3481
+ scorerIds: merged.scorerIds,
3475
3482
  requestContext: merged.requestContext,
3476
3483
  metadata: merged.metadata,
3477
3484
  source: merged.source,
@@ -3531,6 +3538,7 @@ var DatasetsSpanner = class DatasetsSpanner extends _mastra_core_storage.Dataset
3531
3538
  expectedTrajectory: existing.expectedTrajectory ?? null,
3532
3539
  toolMocks: existing.toolMocks ?? null,
3533
3540
  unmockedToolPolicy: existing.unmockedToolPolicy ?? null,
3541
+ scorerIds: existing.scorerIds ?? null,
3534
3542
  requestContext: existing.requestContext ?? null,
3535
3543
  metadata: existing.metadata ?? null,
3536
3544
  source: existing.source ?? null,
@@ -3848,6 +3856,7 @@ var DatasetsSpanner = class DatasetsSpanner extends _mastra_core_storage.Dataset
3848
3856
  expectedTrajectory: insert.item.expectedTrajectory,
3849
3857
  toolMocks: insert.item.toolMocks,
3850
3858
  unmockedToolPolicy: insert.item.unmockedToolPolicy,
3859
+ scorerIds: insert.item.scorerIds,
3851
3860
  requestContext: insert.item.requestContext,
3852
3861
  metadata: insert.item.metadata,
3853
3862
  source: insert.item.source,
@@ -3917,6 +3926,7 @@ var DatasetsSpanner = class DatasetsSpanner extends _mastra_core_storage.Dataset
3917
3926
  expectedTrajectory: existing.expectedTrajectory ?? null,
3918
3927
  toolMocks: existing.toolMocks ?? null,
3919
3928
  unmockedToolPolicy: existing.unmockedToolPolicy ?? null,
3929
+ scorerIds: existing.scorerIds ?? null,
3920
3930
  requestContext: existing.requestContext ?? null,
3921
3931
  metadata: existing.metadata ?? null,
3922
3932
  source: existing.source ?? null,
@@ -7730,6 +7740,7 @@ function buildWhereClause(filters, startIndex = 0) {
7730
7740
  const ts = filters.timestamp;
7731
7741
  if (ts?.start) bindScalar("timestamp", ts.start, ts.startExclusive ? ">" : ">=");
7732
7742
  if (ts?.end) bindScalar("timestamp", ts.end, ts.endExclusive ? "<" : "<=");
7743
+ if (Array.isArray(filters.traceIds)) bindIn("traceId", filters.traceIds);
7733
7744
  for (const k of [
7734
7745
  "traceId",
7735
7746
  "spanId",
@@ -11501,6 +11512,169 @@ var SkillsSpanner = class SkillsSpanner extends _mastra_core_storage.SkillsStora
11501
11512
  }
11502
11513
  };
11503
11514
  //#endregion
11515
+ //#region src/storage/domains/workflow-definitions/index.ts
11516
+ function rowToDefinition(row) {
11517
+ const parsed = transformFromSpannerRow({
11518
+ tableName: _mastra_core_storage.TABLE_WORKFLOW_DEFINITIONS,
11519
+ row
11520
+ });
11521
+ if (parsed.inputSchema == null || parsed.outputSchema == null || parsed.graph == null) throw new Error(`Workflow definition row "${String(parsed.id)}" is missing required JSON columns.`);
11522
+ const def = {
11523
+ id: String(parsed.id),
11524
+ inputSchema: parsed.inputSchema,
11525
+ outputSchema: parsed.outputSchema,
11526
+ graph: parsed.graph,
11527
+ status: parsed.status,
11528
+ source: parsed.source,
11529
+ createdAt: parsed.createdAt instanceof Date ? parsed.createdAt : new Date(parsed.createdAt),
11530
+ updatedAt: parsed.updatedAt instanceof Date ? parsed.updatedAt : new Date(parsed.updatedAt)
11531
+ };
11532
+ if (parsed.description != null) def.description = parsed.description;
11533
+ if (parsed.metadata != null) def.metadata = parsed.metadata;
11534
+ if (parsed.stateSchema != null) def.stateSchema = parsed.stateSchema;
11535
+ if (parsed.requestContextSchema != null) def.requestContextSchema = parsed.requestContextSchema;
11536
+ if (parsed.authorId != null) def.authorId = parsed.authorId;
11537
+ return def;
11538
+ }
11539
+ var WorkflowDefinitionsSpanner = class WorkflowDefinitionsSpanner extends _mastra_core_storage.WorkflowDefinitionsStorage {
11540
+ database;
11541
+ db;
11542
+ skipDefaultIndexes;
11543
+ indexes;
11544
+ static MANAGED_TABLES = [_mastra_core_storage.TABLE_WORKFLOW_DEFINITIONS];
11545
+ constructor(config) {
11546
+ super();
11547
+ const { database, indexes, skipDefaultIndexes, initMode } = resolveSpannerConfig(config);
11548
+ this.database = database;
11549
+ this.db = new SpannerDB({
11550
+ database,
11551
+ skipDefaultIndexes,
11552
+ initMode
11553
+ });
11554
+ this.skipDefaultIndexes = skipDefaultIndexes;
11555
+ this.indexes = indexes?.filter((idx) => WorkflowDefinitionsSpanner.MANAGED_TABLES.includes(idx.table));
11556
+ }
11557
+ async init() {
11558
+ await this.db.createTable({
11559
+ tableName: _mastra_core_storage.TABLE_WORKFLOW_DEFINITIONS,
11560
+ schema: _mastra_core_storage.WORKFLOW_DEFINITIONS_SCHEMA
11561
+ });
11562
+ await this.createDefaultIndexes();
11563
+ await this.createCustomIndexes();
11564
+ }
11565
+ getDefaultIndexDefinitions() {
11566
+ return [{
11567
+ name: "mastra_workflow_definitions_status_idx",
11568
+ table: _mastra_core_storage.TABLE_WORKFLOW_DEFINITIONS,
11569
+ columns: ["status"]
11570
+ }];
11571
+ }
11572
+ async createDefaultIndexes() {
11573
+ if (this.skipDefaultIndexes) return;
11574
+ await this.db.createIndexes(this.getDefaultIndexDefinitions());
11575
+ }
11576
+ async createCustomIndexes() {
11577
+ if (!this.indexes || this.indexes.length === 0) return;
11578
+ await this.db.createIndexes(this.indexes);
11579
+ }
11580
+ async dangerouslyClearAll() {
11581
+ await this.db.clearTable({ tableName: _mastra_core_storage.TABLE_WORKFLOW_DEFINITIONS });
11582
+ }
11583
+ async upsert(input) {
11584
+ const now = /* @__PURE__ */ new Date();
11585
+ if (!await this.get(input.id)) {
11586
+ if (!("inputSchema" in input) || input.inputSchema === void 0) throw new Error(`Cannot create workflow definition "${input.id}": inputSchema is required.`);
11587
+ if (!("outputSchema" in input) || input.outputSchema === void 0) throw new Error(`Cannot create workflow definition "${input.id}": outputSchema is required.`);
11588
+ if (!("graph" in input) || input.graph === void 0) throw new Error(`Cannot create workflow definition "${input.id}": graph is required.`);
11589
+ const record = {
11590
+ id: input.id,
11591
+ description: input.description ?? null,
11592
+ metadata: input.metadata ?? null,
11593
+ inputSchema: input.inputSchema,
11594
+ outputSchema: input.outputSchema,
11595
+ stateSchema: input.stateSchema ?? null,
11596
+ requestContextSchema: input.requestContextSchema ?? null,
11597
+ graph: input.graph,
11598
+ status: "active",
11599
+ source: "storage",
11600
+ authorId: "authorId" in input ? input.authorId ?? null : null,
11601
+ createdAt: now,
11602
+ updatedAt: now
11603
+ };
11604
+ try {
11605
+ await this.db.insert({
11606
+ tableName: _mastra_core_storage.TABLE_WORKFLOW_DEFINITIONS,
11607
+ record
11608
+ });
11609
+ } catch (error) {
11610
+ if (!await this.get(input.id)) throw error;
11611
+ return this.applyUpdate(input, now);
11612
+ }
11613
+ const created = await this.get(input.id);
11614
+ if (!created) throw new Error(`Failed to persist workflow definition "${input.id}".`);
11615
+ return created;
11616
+ }
11617
+ return this.applyUpdate(input, now);
11618
+ }
11619
+ async applyUpdate(input, now) {
11620
+ const data = { updatedAt: now };
11621
+ if ("description" in input && input.description !== void 0) data.description = input.description;
11622
+ if ("metadata" in input && input.metadata !== void 0) data.metadata = input.metadata;
11623
+ if ("inputSchema" in input && input.inputSchema !== void 0) data.inputSchema = input.inputSchema;
11624
+ if ("outputSchema" in input && input.outputSchema !== void 0) data.outputSchema = input.outputSchema;
11625
+ if ("stateSchema" in input && input.stateSchema !== void 0) data.stateSchema = input.stateSchema;
11626
+ if ("requestContextSchema" in input && input.requestContextSchema !== void 0) data.requestContextSchema = input.requestContextSchema;
11627
+ if ("graph" in input && input.graph !== void 0) data.graph = input.graph;
11628
+ if ("status" in input && input.status !== void 0) data.status = input.status;
11629
+ if ("authorId" in input && input.authorId !== void 0) data.authorId = input.authorId;
11630
+ await this.db.update({
11631
+ tableName: _mastra_core_storage.TABLE_WORKFLOW_DEFINITIONS,
11632
+ keys: { id: input.id },
11633
+ data
11634
+ });
11635
+ const updated = await this.get(input.id);
11636
+ if (!updated) throw new Error(`Failed to update workflow definition "${input.id}".`);
11637
+ return updated;
11638
+ }
11639
+ async get(id) {
11640
+ const row = await this.db.load({
11641
+ tableName: _mastra_core_storage.TABLE_WORKFLOW_DEFINITIONS,
11642
+ keys: { id }
11643
+ });
11644
+ return row ? rowToDefinition(row) : null;
11645
+ }
11646
+ async list(args) {
11647
+ const params = {};
11648
+ const conditions = [];
11649
+ if (args?.status) {
11650
+ params.status = args.status;
11651
+ conditions.push(`${quoteIdent("status", "column name")} = @status`);
11652
+ }
11653
+ if (args?.authorId !== void 0) {
11654
+ params.authorId = args.authorId;
11655
+ conditions.push(`${quoteIdent("authorId", "column name")} = @authorId`);
11656
+ }
11657
+ const where = conditions.length ? `WHERE ${conditions.join(" AND ")}` : "";
11658
+ const sql = `SELECT * FROM ${quoteIdent(_mastra_core_storage.TABLE_WORKFLOW_DEFINITIONS, "table name")} ${where} ORDER BY ${quoteIdent("updatedAt", "column name")} DESC`;
11659
+ const [rows] = await this.database.run({
11660
+ sql,
11661
+ params,
11662
+ json: true
11663
+ });
11664
+ const definitions = rows.map(rowToDefinition);
11665
+ return {
11666
+ definitions,
11667
+ total: definitions.length
11668
+ };
11669
+ }
11670
+ async delete(id) {
11671
+ await this.db.runDml({
11672
+ sql: `DELETE FROM ${quoteIdent(_mastra_core_storage.TABLE_WORKFLOW_DEFINITIONS, "table name")} WHERE id = @id`,
11673
+ params: { id }
11674
+ });
11675
+ }
11676
+ };
11677
+ //#endregion
11504
11678
  //#region src/storage/domains/workflows/index.ts
11505
11679
  /**
11506
11680
  * Spanner-backed storage for workflow run snapshots, including persistence,
@@ -12669,7 +12843,8 @@ const SPANNER_DOMAIN_KEYS = [
12669
12843
  "datasets",
12670
12844
  "experiments",
12671
12845
  "favorites",
12672
- "workspaces"
12846
+ "workspaces",
12847
+ "workflowDefinitions"
12673
12848
  ];
12674
12849
  const isPreConfiguredDatabase = (config) => "database" in config && !!config.database;
12675
12850
  /**
@@ -12757,7 +12932,8 @@ var SpannerStore = class extends _mastra_core_storage.MastraCompositeStore {
12757
12932
  ...wants("datasets") && { datasets: new DatasetsSpanner(domainConfig) },
12758
12933
  ...wants("experiments") && { experiments: new ExperimentsSpanner(domainConfig) },
12759
12934
  ...wants("favorites") && { favorites: new FavoritesSpanner(domainConfig) },
12760
- ...wants("workspaces") && { workspaces: new WorkspacesSpanner(domainConfig) }
12935
+ ...wants("workspaces") && { workspaces: new WorkspacesSpanner(domainConfig) },
12936
+ ...wants("workflowDefinitions") && { workflowDefinitions: new WorkflowDefinitionsSpanner(domainConfig) }
12761
12937
  };
12762
12938
  } catch (e) {
12763
12939
  throw new _mastra_core_error.MastraError({
@@ -12813,7 +12989,8 @@ var SpannerStore = class extends _mastra_core_storage.MastraCompositeStore {
12813
12989
  "datasets",
12814
12990
  "experiments",
12815
12991
  "workspaces",
12816
- "favorites"
12992
+ "favorites",
12993
+ "workflowDefinitions"
12817
12994
  ]) {
12818
12995
  const store = this.stores?.[key];
12819
12996
  if (store) await store.init();
@@ -12863,6 +13040,7 @@ exports.ScorerDefinitionsSpanner = ScorerDefinitionsSpanner;
12863
13040
  exports.ScoresSpanner = ScoresSpanner;
12864
13041
  exports.SkillsSpanner = SkillsSpanner;
12865
13042
  exports.SpannerStore = SpannerStore;
13043
+ exports.WorkflowDefinitionsSpanner = WorkflowDefinitionsSpanner;
12866
13044
  exports.WorkflowsSpanner = WorkflowsSpanner;
12867
13045
  exports.WorkspacesSpanner = WorkspacesSpanner;
12868
13046