@mastra/libsql 1.19.0-alpha.0 → 1.19.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/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { createClient } from "@libsql/client";
2
2
  import { ErrorCategory, ErrorDomain, MastraError } from "@mastra/core/error";
3
- import { AGENTS_SCHEMA, AGENT_VERSIONS_SCHEMA, AgentsStorage, BackgroundTasksStorage, BlobStore, ChannelsStorage, DATASETS_SCHEMA, DATASET_ITEMS_SCHEMA, DATASET_VERSIONS_SCHEMA, DatasetsStorage, EXPERIMENTS_SCHEMA, EXPERIMENT_RESULTS_SCHEMA, ExperimentsStorage, FAVORITES_SCHEMA, FactoryStorage, FavoritesStorage, HarnessStorage, MCPClientsStorage, MCPServersStorage, MCP_CLIENTS_SCHEMA, MCP_CLIENT_VERSIONS_SCHEMA, MCP_SERVERS_SCHEMA, MCP_SERVER_VERSIONS_SCHEMA, MastraCompositeStore, MemoryStorage, NotificationsStorage, OBSERVATIONAL_MEMORY_TABLE_SCHEMA, ObservabilityStorage, PROMPT_BLOCKS_SCHEMA, PROMPT_BLOCK_VERSIONS_SCHEMA, PromptBlocksStorage, SCORERS_SCHEMA, SCORER_DEFINITIONS_SCHEMA, SCORER_DEFINITION_VERSIONS_SCHEMA, SKILLS_SCHEMA, SKILL_BLOBS_SCHEMA, SKILL_VERSIONS_SCHEMA, SPAN_SCHEMA, SchedulesStorage, ScorerDefinitionsStorage, ScoresStorage, SkillsStorage, TABLE_AGENTS, TABLE_AGENT_VERSIONS, TABLE_BACKGROUND_TASKS, TABLE_CHANNEL_CONFIG, TABLE_CHANNEL_INSTALLATIONS, TABLE_DATASETS, TABLE_DATASET_ITEMS, TABLE_DATASET_VERSIONS, TABLE_EXPERIMENTS, TABLE_EXPERIMENT_RESULTS, TABLE_FAVORITES, TABLE_HARNESS_SESSIONS, TABLE_MCP_CLIENTS, TABLE_MCP_CLIENT_VERSIONS, TABLE_MCP_SERVERS, TABLE_MCP_SERVER_VERSIONS, TABLE_MESSAGES, TABLE_NOTIFICATIONS, TABLE_PROMPT_BLOCKS, TABLE_PROMPT_BLOCK_VERSIONS, TABLE_RESOURCES, TABLE_SCHEDULES, TABLE_SCHEDULE_TRIGGERS, TABLE_SCHEMAS, TABLE_SCORERS, TABLE_SCORER_DEFINITIONS, TABLE_SCORER_DEFINITION_VERSIONS, TABLE_SKILLS, TABLE_SKILL_BLOBS, TABLE_SKILL_VERSIONS, TABLE_SPANS, TABLE_THREADS, TABLE_THREAD_STATE, TABLE_TOOL_PROVIDER_CONNECTIONS, TABLE_WORKFLOW_SNAPSHOT, TABLE_WORKSPACES, TABLE_WORKSPACE_VERSIONS, THREAD_STATE_SCHEMA, TOOL_PROVIDER_CONNECTIONS_SCHEMA, ThreadStateStorage, ToolProviderConnectionsStorage, TraceStatus, UniqueViolationError, WORKSPACES_SCHEMA, WORKSPACE_VERSIONS_SCHEMA, WorkflowsStorage, WorkspacesStorage, calculatePagination, createStorageErrorId, createVectorErrorId, ensureDate, getSqlType, hasErrorCode, listTracesArgsSchema, mergeWorkflowStepResult, normalizePerPage, normalizeScheduleTarget, parseDuration, safelyParseJSON, toTraceSpans, transformScoreRow, validateStorageMetadataFilter } from "@mastra/core/storage";
3
+ import { AGENTS_SCHEMA, AGENT_VERSIONS_SCHEMA, AgentsStorage, BackgroundTasksStorage, BlobStore, ChannelsStorage, DATASETS_SCHEMA, DATASET_ITEMS_SCHEMA, DATASET_VERSIONS_SCHEMA, DatasetsStorage, EXPERIMENTS_SCHEMA, EXPERIMENT_RESULTS_SCHEMA, ExperimentsStorage, FAVORITES_SCHEMA, FactoryStorage, FavoritesStorage, HarnessStorage, MCPClientsStorage, MCPServersStorage, MCP_CLIENTS_SCHEMA, MCP_CLIENT_VERSIONS_SCHEMA, MCP_SERVERS_SCHEMA, MCP_SERVER_VERSIONS_SCHEMA, MastraCompositeStore, MemoryStorage, NotificationsStorage, OBSERVATIONAL_MEMORY_TABLE_SCHEMA, ObservabilityStorage, PROMPT_BLOCKS_SCHEMA, PROMPT_BLOCK_VERSIONS_SCHEMA, PromptBlocksStorage, SCORERS_SCHEMA, SCORER_DEFINITIONS_SCHEMA, SCORER_DEFINITION_VERSIONS_SCHEMA, SKILLS_SCHEMA, SKILL_BLOBS_SCHEMA, SKILL_VERSIONS_SCHEMA, SPAN_SCHEMA, SchedulesStorage, ScorerDefinitionsStorage, ScoresStorage, SkillsStorage, TABLE_AGENTS, TABLE_AGENT_VERSIONS, TABLE_BACKGROUND_TASKS, TABLE_CHANNEL_CONFIG, TABLE_CHANNEL_INSTALLATIONS, TABLE_DATASETS, TABLE_DATASET_ITEMS, TABLE_DATASET_VERSIONS, TABLE_EXPERIMENTS, TABLE_EXPERIMENT_RESULTS, TABLE_FAVORITES, TABLE_HARNESS_SESSIONS, TABLE_MCP_CLIENTS, TABLE_MCP_CLIENT_VERSIONS, TABLE_MCP_SERVERS, TABLE_MCP_SERVER_VERSIONS, TABLE_MESSAGES, TABLE_NOTIFICATIONS, TABLE_PROMPT_BLOCKS, TABLE_PROMPT_BLOCK_VERSIONS, TABLE_RESOURCES, TABLE_SCHEDULES, TABLE_SCHEDULE_TRIGGERS, TABLE_SCHEMAS, TABLE_SCORERS, TABLE_SCORER_DEFINITIONS, TABLE_SCORER_DEFINITION_VERSIONS, TABLE_SKILLS, TABLE_SKILL_BLOBS, TABLE_SKILL_VERSIONS, TABLE_SPANS, TABLE_THREADS, TABLE_THREAD_STATE, TABLE_TOOL_PROVIDER_CONNECTIONS, TABLE_WORKFLOW_DEFINITIONS, TABLE_WORKFLOW_SNAPSHOT, TABLE_WORKSPACES, TABLE_WORKSPACE_VERSIONS, THREAD_STATE_SCHEMA, TOOL_PROVIDER_CONNECTIONS_SCHEMA, ThreadStateStorage, ToolProviderConnectionsStorage, TraceStatus, UniqueViolationError, WORKSPACES_SCHEMA, WORKSPACE_VERSIONS_SCHEMA, WorkflowDefinitionsStorage, WorkflowsStorage, WorkspacesStorage, calculatePagination, createStorageErrorId, createVectorErrorId, ensureDate, getSqlType, hasErrorCode, listTracesArgsSchema, mergeWorkflowStepResult, normalizePerPage, normalizeScheduleTarget, parseDuration, safelyParseJSON, toTraceSpans, transformScoreRow, validateStorageMetadataFilter } from "@mastra/core/storage";
4
4
  import { parseFieldKey, parseSqlIdentifier } from "@mastra/core/utils";
5
5
  import { MastraVector, validateTopK, validateUpsertInput } from "@mastra/core/vector";
6
6
  import { BaseFilterTranslator } from "@mastra/core/vector/filter";
@@ -2853,7 +2853,7 @@ function serializeJson(v) {
2853
2853
  if (typeof v === "object" && v != null) return JSON.stringify(v);
2854
2854
  return v ?? null;
2855
2855
  }
2856
- function parseJson$2(val) {
2856
+ function parseJson$3(val) {
2857
2857
  if (val == null) return void 0;
2858
2858
  if (typeof val === "string") try {
2859
2859
  return JSON.parse(val);
@@ -2868,14 +2868,14 @@ function rowToTask(row) {
2868
2868
  status: String(row.status),
2869
2869
  toolName: String(row.tool_name),
2870
2870
  toolCallId: String(row.tool_call_id),
2871
- args: parseJson$2(row.args) ?? {},
2871
+ args: parseJson$3(row.args) ?? {},
2872
2872
  agentId: String(row.agent_id),
2873
2873
  threadId: row.thread_id != null ? String(row.thread_id) : void 0,
2874
2874
  resourceId: row.resource_id != null ? String(row.resource_id) : void 0,
2875
2875
  runId: String(row.run_id),
2876
- result: parseJson$2(row.result),
2877
- error: parseJson$2(row.error),
2878
- suspendPayload: parseJson$2(row.suspend_payload),
2876
+ result: parseJson$3(row.result),
2877
+ error: parseJson$3(row.error),
2878
+ suspendPayload: parseJson$3(row.suspend_payload),
2879
2879
  retryCount: Number(row.retry_count),
2880
2880
  maxRetries: Number(row.max_retries),
2881
2881
  timeoutMs: Number(row.timeout_ms),
@@ -3468,6 +3468,7 @@ var DatasetsLibSQL = class extends DatasetsStorage {
3468
3468
  await this.#addColumnIfNotExists(TABLE_DATASET_ITEMS, "projectId", "TEXT");
3469
3469
  await this.#addColumnIfNotExists(TABLE_DATASET_ITEMS, "toolMocks", "TEXT");
3470
3470
  await this.#addColumnIfNotExists(TABLE_DATASET_ITEMS, "unmockedToolPolicy", "TEXT");
3471
+ await this.#addColumnIfNotExists(TABLE_DATASET_ITEMS, "scorerIds", "TEXT");
3471
3472
  await this.#addColumnIfNotExists(TABLE_DATASET_ITEMS, "externalId", "TEXT");
3472
3473
  await this.#client.batch([
3473
3474
  {
@@ -3565,6 +3566,7 @@ var DatasetsLibSQL = class extends DatasetsStorage {
3565
3566
  expectedTrajectory: row.expectedTrajectory ? safelyParseJSON(row.expectedTrajectory) : void 0,
3566
3567
  toolMocks: row.toolMocks ? safelyParseJSON(row.toolMocks) : void 0,
3567
3568
  unmockedToolPolicy: row.unmockedToolPolicy ?? void 0,
3569
+ scorerIds: row.scorerIds ? safelyParseJSON(row.scorerIds) : void 0,
3568
3570
  requestContext: row.requestContext ? safelyParseJSON(row.requestContext) : void 0,
3569
3571
  metadata: row.metadata ? safelyParseJSON(row.metadata) : void 0,
3570
3572
  source: row.source ? safelyParseJSON(row.source) : void 0,
@@ -3587,6 +3589,7 @@ var DatasetsLibSQL = class extends DatasetsStorage {
3587
3589
  expectedTrajectory: row.expectedTrajectory ? safelyParseJSON(row.expectedTrajectory) : void 0,
3588
3590
  toolMocks: row.toolMocks ? safelyParseJSON(row.toolMocks) : void 0,
3589
3591
  unmockedToolPolicy: row.unmockedToolPolicy ?? void 0,
3592
+ scorerIds: row.scorerIds ? safelyParseJSON(row.scorerIds) : void 0,
3590
3593
  requestContext: row.requestContext ? safelyParseJSON(row.requestContext) : void 0,
3591
3594
  metadata: row.metadata ? safelyParseJSON(row.metadata) : void 0,
3592
3595
  source: row.source ? safelyParseJSON(row.source) : void 0,
@@ -3900,7 +3903,7 @@ var DatasetsLibSQL = class extends DatasetsStorage {
3900
3903
  args: [args.datasetId]
3901
3904
  },
3902
3905
  {
3903
- sql: `INSERT INTO ${TABLE_DATASET_ITEMS} (id, datasetId, datasetVersion, externalId, organizationId, projectId, validTo, isDeleted, input, groundTruth, expectedTrajectory, toolMocks, unmockedToolPolicy, requestContext, metadata, source, createdAt, updatedAt) VALUES (?, ?, (SELECT version FROM ${TABLE_DATASETS} WHERE id = ?), ?, (SELECT organizationId FROM ${TABLE_DATASETS} WHERE id = ?), (SELECT projectId FROM ${TABLE_DATASETS} WHERE id = ?), NULL, 0, jsonb(?), jsonb(?), jsonb(?), jsonb(?), ?, jsonb(?), jsonb(?), jsonb(?), ?, ?)`,
3906
+ sql: `INSERT INTO ${TABLE_DATASET_ITEMS} (id,datasetId,datasetVersion,externalId,organizationId,projectId,validTo,isDeleted,input,groundTruth,expectedTrajectory,toolMocks,unmockedToolPolicy,scorerIds,requestContext,metadata,source,createdAt,updatedAt) VALUES (?,?,(SELECT version FROM ${TABLE_DATASETS} WHERE id = ?),?,(SELECT organizationId FROM ${TABLE_DATASETS} WHERE id = ?),(SELECT projectId FROM ${TABLE_DATASETS} WHERE id = ?),NULL,0,jsonb(?),jsonb(?),jsonb(?),jsonb(?),?,jsonb(?),jsonb(?),jsonb(?),jsonb(?),?,?)`,
3904
3907
  args: [
3905
3908
  id,
3906
3909
  args.datasetId,
@@ -3913,6 +3916,7 @@ var DatasetsLibSQL = class extends DatasetsStorage {
3913
3916
  jsonbArg(args.expectedTrajectory),
3914
3917
  jsonbArg(args.toolMocks),
3915
3918
  args.unmockedToolPolicy ?? null,
3919
+ jsonbArg(args.scorerIds),
3916
3920
  jsonbArg(args.requestContext),
3917
3921
  jsonbArg(args.metadata),
3918
3922
  jsonbArg(args.source),
@@ -3943,6 +3947,7 @@ var DatasetsLibSQL = class extends DatasetsStorage {
3943
3947
  expectedTrajectory: args.expectedTrajectory,
3944
3948
  toolMocks: args.toolMocks,
3945
3949
  unmockedToolPolicy: args.unmockedToolPolicy,
3950
+ scorerIds: args.scorerIds,
3946
3951
  requestContext: args.requestContext,
3947
3952
  metadata: args.metadata,
3948
3953
  source: args.source,
@@ -3986,6 +3991,7 @@ var DatasetsLibSQL = class extends DatasetsStorage {
3986
3991
  const mergedExpectedTrajectory = args.expectedTrajectory !== void 0 ? args.expectedTrajectory : existing.expectedTrajectory;
3987
3992
  const mergedToolMocks = args.toolMocks !== void 0 ? args.toolMocks : existing.toolMocks;
3988
3993
  const mergedUnmockedToolPolicy = args.unmockedToolPolicy !== void 0 ? args.unmockedToolPolicy : existing.unmockedToolPolicy;
3994
+ const mergedScorerIds = args.scorerIds !== void 0 ? args.scorerIds ?? void 0 : existing.scorerIds;
3989
3995
  const mergedRequestContext = args.requestContext !== void 0 ? args.requestContext : existing.requestContext;
3990
3996
  const mergedMetadata = args.metadata !== void 0 ? args.metadata : existing.metadata;
3991
3997
  const mergedSource = args.source !== void 0 ? args.source : existing.source;
@@ -3999,7 +4005,7 @@ var DatasetsLibSQL = class extends DatasetsStorage {
3999
4005
  args: [args.datasetId, args.id]
4000
4006
  },
4001
4007
  {
4002
- sql: `INSERT INTO ${TABLE_DATASET_ITEMS} (id, datasetId, datasetVersion, externalId, organizationId, projectId, validTo, isDeleted, input, groundTruth, expectedTrajectory, toolMocks, unmockedToolPolicy, requestContext, metadata, source, createdAt, updatedAt) VALUES (?, ?, (SELECT version FROM ${TABLE_DATASETS} WHERE id = ?), ?, (SELECT organizationId FROM ${TABLE_DATASETS} WHERE id = ?), (SELECT projectId FROM ${TABLE_DATASETS} WHERE id = ?), NULL, 0, jsonb(?), jsonb(?), jsonb(?), jsonb(?), ?, jsonb(?), jsonb(?), jsonb(?), ?, ?)`,
4008
+ sql: `INSERT INTO ${TABLE_DATASET_ITEMS} (id,datasetId,datasetVersion,externalId,organizationId,projectId,validTo,isDeleted,input,groundTruth,expectedTrajectory,toolMocks,unmockedToolPolicy,scorerIds,requestContext,metadata,source,createdAt,updatedAt) VALUES (?,?,(SELECT version FROM ${TABLE_DATASETS} WHERE id = ?),?,(SELECT organizationId FROM ${TABLE_DATASETS} WHERE id = ?),(SELECT projectId FROM ${TABLE_DATASETS} WHERE id = ?),NULL,0,jsonb(?),jsonb(?),jsonb(?),jsonb(?),?,jsonb(?),jsonb(?),jsonb(?),jsonb(?),?,?)`,
4003
4009
  args: [
4004
4010
  args.id,
4005
4011
  args.datasetId,
@@ -4012,6 +4018,7 @@ var DatasetsLibSQL = class extends DatasetsStorage {
4012
4018
  jsonbArg(mergedExpectedTrajectory),
4013
4019
  jsonbArg(mergedToolMocks),
4014
4020
  mergedUnmockedToolPolicy ?? null,
4021
+ jsonbArg(mergedScorerIds),
4015
4022
  jsonbArg(mergedRequestContext),
4016
4023
  jsonbArg(mergedMetadata),
4017
4024
  jsonbArg(mergedSource),
@@ -4040,6 +4047,7 @@ var DatasetsLibSQL = class extends DatasetsStorage {
4040
4047
  expectedTrajectory: mergedExpectedTrajectory,
4041
4048
  toolMocks: mergedToolMocks,
4042
4049
  unmockedToolPolicy: mergedUnmockedToolPolicy,
4050
+ scorerIds: mergedScorerIds,
4043
4051
  requestContext: mergedRequestContext,
4044
4052
  metadata: mergedMetadata,
4045
4053
  source: mergedSource,
@@ -4080,7 +4088,7 @@ var DatasetsLibSQL = class extends DatasetsStorage {
4080
4088
  args: [datasetId, id]
4081
4089
  },
4082
4090
  {
4083
- sql: `INSERT INTO ${TABLE_DATASET_ITEMS} (id, datasetId, datasetVersion, externalId, organizationId, projectId, validTo, isDeleted, input, groundTruth, expectedTrajectory, toolMocks, unmockedToolPolicy, requestContext, metadata, source, createdAt, updatedAt) VALUES (?, ?, (SELECT version FROM ${TABLE_DATASETS} WHERE id = ?), ?, (SELECT organizationId FROM ${TABLE_DATASETS} WHERE id = ?), (SELECT projectId FROM ${TABLE_DATASETS} WHERE id = ?), NULL, 1, jsonb(?), jsonb(?), jsonb(?), jsonb(?), ?, jsonb(?), jsonb(?), jsonb(?), ?, ?)`,
4091
+ sql: `INSERT INTO ${TABLE_DATASET_ITEMS} (id,datasetId,datasetVersion,externalId,organizationId,projectId,validTo,isDeleted,input,groundTruth,expectedTrajectory,toolMocks,unmockedToolPolicy,scorerIds,requestContext,metadata,source,createdAt,updatedAt) VALUES (?,?,(SELECT version FROM ${TABLE_DATASETS} WHERE id = ?),?,(SELECT organizationId FROM ${TABLE_DATASETS} WHERE id = ?),(SELECT projectId FROM ${TABLE_DATASETS} WHERE id = ?),NULL,1,jsonb(?),jsonb(?),jsonb(?),jsonb(?),?,jsonb(?),jsonb(?),jsonb(?),jsonb(?),?,?)`,
4084
4092
  args: [
4085
4093
  id,
4086
4094
  datasetId,
@@ -4093,6 +4101,7 @@ var DatasetsLibSQL = class extends DatasetsStorage {
4093
4101
  jsonbArg(existing.expectedTrajectory),
4094
4102
  jsonbArg(existing.toolMocks),
4095
4103
  existing.unmockedToolPolicy ?? null,
4104
+ jsonbArg(existing.scorerIds),
4096
4105
  jsonbArg(existing.requestContext),
4097
4106
  jsonbArg(existing.metadata),
4098
4107
  jsonbArg(existing.source),
@@ -4388,7 +4397,7 @@ var DatasetsLibSQL = class extends DatasetsStorage {
4388
4397
  });
4389
4398
  const externalIds = [...new Set(input.items.flatMap((item) => item.externalId ? [item.externalId] : []))];
4390
4399
  const historyResult = externalIds.length ? await tx.execute({
4391
- sql: `SELECT id, datasetId, datasetVersion, externalId, organizationId, projectId, validTo, isDeleted, json(input) AS input, json(groundTruth) AS groundTruth, json(expectedTrajectory) AS expectedTrajectory, json(toolMocks) AS toolMocks, unmockedToolPolicy, json(requestContext) AS requestContext, json(metadata) AS metadata, json(source) AS source, createdAt, updatedAt FROM ${TABLE_DATASET_ITEMS} WHERE datasetId = ? AND externalId IN (${externalIds.map(() => "?").join(",")}) ORDER BY datasetVersion`,
4400
+ sql: `SELECT id, datasetId, datasetVersion, externalId, organizationId, projectId, validTo, isDeleted, json(input) AS input, json(groundTruth) AS groundTruth, json(expectedTrajectory) AS expectedTrajectory, json(toolMocks) AS toolMocks, unmockedToolPolicy, json(scorerIds) AS scorerIds, json(requestContext) AS requestContext, json(metadata) AS metadata, json(source) AS source, createdAt, updatedAt FROM ${TABLE_DATASET_ITEMS} WHERE datasetId = ? AND externalId IN (${externalIds.map(() => "?").join(",")}) ORDER BY datasetVersion`,
4392
4401
  args: [input.datasetId, ...externalIds]
4393
4402
  }) : { rows: [] };
4394
4403
  const plan = this.planDatasetItemBatch(input.items, historyResult.rows.map((row) => this.transformItemRowFull(row)), () => crypto.randomUUID());
@@ -4403,7 +4412,7 @@ var DatasetsLibSQL = class extends DatasetsStorage {
4403
4412
  });
4404
4413
  for (const { id, item } of plan.inserts) {
4405
4414
  await tx.execute({
4406
- sql: `INSERT INTO ${TABLE_DATASET_ITEMS} (id, datasetId, datasetVersion, externalId, organizationId, projectId, validTo, isDeleted, input, groundTruth, expectedTrajectory, toolMocks, unmockedToolPolicy, requestContext, metadata, source, createdAt, updatedAt) VALUES (?, ?, ?, ?, ?, ?, NULL, 0, jsonb(?), jsonb(?), jsonb(?), jsonb(?), ?, jsonb(?), jsonb(?), jsonb(?), ?, ?)`,
4415
+ sql: `INSERT INTO ${TABLE_DATASET_ITEMS} (id,datasetId,datasetVersion,externalId,organizationId,projectId,validTo,isDeleted,input,groundTruth,expectedTrajectory,toolMocks,unmockedToolPolicy,scorerIds,requestContext,metadata,source,createdAt,updatedAt) VALUES (?,?,?,?,?,?,NULL,0,jsonb(?),jsonb(?),jsonb(?),jsonb(?),?,jsonb(?),jsonb(?),jsonb(?),jsonb(?),?,?)`,
4407
4416
  args: [
4408
4417
  id,
4409
4418
  input.datasetId,
@@ -4416,6 +4425,7 @@ var DatasetsLibSQL = class extends DatasetsStorage {
4416
4425
  jsonbArg(item.expectedTrajectory),
4417
4426
  jsonbArg(item.toolMocks),
4418
4427
  item.unmockedToolPolicy ?? null,
4428
+ jsonbArg(item.scorerIds),
4419
4429
  jsonbArg(item.requestContext),
4420
4430
  jsonbArg(item.metadata),
4421
4431
  jsonbArg(item.source),
@@ -4435,6 +4445,7 @@ var DatasetsLibSQL = class extends DatasetsStorage {
4435
4445
  expectedTrajectory: item.expectedTrajectory,
4436
4446
  toolMocks: item.toolMocks,
4437
4447
  unmockedToolPolicy: item.unmockedToolPolicy,
4448
+ scorerIds: item.scorerIds,
4438
4449
  requestContext: item.requestContext,
4439
4450
  metadata: item.metadata,
4440
4451
  source: item.source,
@@ -4495,7 +4506,7 @@ var DatasetsLibSQL = class extends DatasetsStorage {
4495
4506
  args: [input.datasetId, item.id]
4496
4507
  });
4497
4508
  statements.push({
4498
- sql: `INSERT INTO ${TABLE_DATASET_ITEMS} (id, datasetId, datasetVersion, externalId, organizationId, projectId, validTo, isDeleted, input, groundTruth, expectedTrajectory, toolMocks, unmockedToolPolicy, requestContext, metadata, source, createdAt, updatedAt) VALUES (?, ?, (SELECT version FROM ${TABLE_DATASETS} WHERE id = ?), ?, ?, ?, NULL, 1, jsonb(?), jsonb(?), jsonb(?), jsonb(?), ?, jsonb(?), jsonb(?), jsonb(?), ?, ?)`,
4509
+ sql: `INSERT INTO ${TABLE_DATASET_ITEMS} (id,datasetId,datasetVersion,externalId,organizationId,projectId,validTo,isDeleted,input,groundTruth,expectedTrajectory,toolMocks,unmockedToolPolicy,scorerIds,requestContext,metadata,source,createdAt,updatedAt) VALUES (?,?,(SELECT version FROM ${TABLE_DATASETS} WHERE id = ?),?,?,?,NULL,1,jsonb(?),jsonb(?),jsonb(?),jsonb(?),?,jsonb(?),jsonb(?),jsonb(?),jsonb(?),?,?)`,
4499
4510
  args: [
4500
4511
  item.id,
4501
4512
  input.datasetId,
@@ -4508,6 +4519,7 @@ var DatasetsLibSQL = class extends DatasetsStorage {
4508
4519
  jsonbArg(item.expectedTrajectory),
4509
4520
  jsonbArg(item.toolMocks),
4510
4521
  item.unmockedToolPolicy ?? null,
4522
+ jsonbArg(item.scorerIds),
4511
4523
  jsonbArg(item.requestContext),
4512
4524
  jsonbArg(item.metadata),
4513
4525
  jsonbArg(item.source),
@@ -8529,7 +8541,7 @@ const statusTimestamp = (status, now) => {
8529
8541
  if (status === "discarded") return { discardedAt: now };
8530
8542
  return {};
8531
8543
  };
8532
- function parseJson$1(value) {
8544
+ function parseJson$2(value) {
8533
8545
  if (value == null) return void 0;
8534
8546
  if (typeof value === "string") try {
8535
8547
  return JSON.parse(value);
@@ -8551,14 +8563,14 @@ function rowToNotification(row) {
8551
8563
  priority: String(row.priority),
8552
8564
  status: String(row.status),
8553
8565
  summary: String(row.summary),
8554
- payload: parseJson$1(row.payload),
8566
+ payload: parseJson$2(row.payload),
8555
8567
  resourceId: row.resourceId == null ? void 0 : String(row.resourceId),
8556
8568
  agentId: row.agentId == null ? void 0 : String(row.agentId),
8557
8569
  sourceId: row.sourceId == null ? void 0 : String(row.sourceId),
8558
8570
  dedupeKey: row.dedupeKey == null ? void 0 : String(row.dedupeKey),
8559
8571
  coalesceKey: row.coalesceKey == null ? void 0 : String(row.coalesceKey),
8560
8572
  coalescedCount: Number(row.coalescedCount ?? 1),
8561
- attributes: parseJson$1(row.attributes),
8573
+ attributes: parseJson$2(row.attributes),
8562
8574
  createdAt: new Date(String(row.createdAt)),
8563
8575
  updatedAt: new Date(String(row.updatedAt)),
8564
8576
  deliveredAt: parseDate(row.deliveredAt),
@@ -8574,7 +8586,7 @@ function rowToNotification(row) {
8574
8586
  lastDeliveryError: row.lastDeliveryError == null ? void 0 : String(row.lastDeliveryError),
8575
8587
  deliveredSignalId: row.deliveredSignalId == null ? void 0 : String(row.deliveredSignalId),
8576
8588
  summarySignalId: row.summarySignalId == null ? void 0 : String(row.summarySignalId),
8577
- metadata: parseJson$1(row.metadata)
8589
+ metadata: parseJson$2(row.metadata)
8578
8590
  };
8579
8591
  }
8580
8592
  function addArrayFilter(conditions, args, column, value) {
@@ -9765,7 +9777,7 @@ var PromptBlocksLibSQL = class extends PromptBlocksStorage {
9765
9777
  };
9766
9778
  //#endregion
9767
9779
  //#region src/storage/domains/schedules/index.ts
9768
- function parseJson(val) {
9780
+ function parseJson$1(val) {
9769
9781
  if (val == null) return void 0;
9770
9782
  if (typeof val === "string") try {
9771
9783
  return JSON.parse(val);
@@ -9779,7 +9791,7 @@ function toNumber(val) {
9779
9791
  return Number(val);
9780
9792
  }
9781
9793
  function rowToSchedule(row) {
9782
- const target = parseJson(row.target);
9794
+ const target = parseJson$1(row.target);
9783
9795
  if (!target) throw new Error(`Schedule row ${row.id} has invalid target`);
9784
9796
  const schedule = {
9785
9797
  id: String(row.id),
@@ -9793,7 +9805,7 @@ function rowToSchedule(row) {
9793
9805
  if (row.timezone != null) schedule.timezone = String(row.timezone);
9794
9806
  if (row.last_fire_at != null) schedule.lastFireAt = toNumber(row.last_fire_at);
9795
9807
  if (row.last_run_id != null) schedule.lastRunId = String(row.last_run_id);
9796
- const metadata = parseJson(row.metadata);
9808
+ const metadata = parseJson$1(row.metadata);
9797
9809
  if (metadata !== void 0) schedule.metadata = metadata;
9798
9810
  if (row.owner_type != null) schedule.ownerType = String(row.owner_type);
9799
9811
  if (row.owner_id != null) schedule.ownerId = String(row.owner_id);
@@ -9811,7 +9823,7 @@ function rowToTrigger(row) {
9811
9823
  };
9812
9824
  if (row.error != null) trigger.error = String(row.error);
9813
9825
  if (row.parent_trigger_id != null) trigger.parentTriggerId = String(row.parent_trigger_id);
9814
- const metadata = parseJson(row.metadata);
9826
+ const metadata = parseJson$1(row.metadata);
9815
9827
  if (metadata !== void 0) trigger.metadata = metadata;
9816
9828
  return trigger;
9817
9829
  }
@@ -11692,6 +11704,159 @@ var ToolProviderConnectionsLibSQL = class extends ToolProviderConnectionsStorage
11692
11704
  }
11693
11705
  };
11694
11706
  //#endregion
11707
+ //#region src/storage/domains/workflow-definitions/index.ts
11708
+ function parseJson(val, column, rowId) {
11709
+ if (val == null) return void 0;
11710
+ if (typeof val === "string") try {
11711
+ return JSON.parse(val);
11712
+ } catch {
11713
+ throw new Error(`Workflow definition row "${String(rowId)}" has malformed JSON in column "${column}".`);
11714
+ }
11715
+ return val;
11716
+ }
11717
+ function rowToDefinition(row) {
11718
+ const inputSchema = parseJson(row.inputSchema, "inputSchema", row.id);
11719
+ const outputSchema = parseJson(row.outputSchema, "outputSchema", row.id);
11720
+ const graph = parseJson(row.graph, "graph", row.id);
11721
+ if (inputSchema === void 0 || outputSchema === void 0 || graph === void 0) throw new Error(`Workflow definition row "${row.id}" is missing required JSON columns.`);
11722
+ const def = {
11723
+ id: String(row.id),
11724
+ inputSchema,
11725
+ outputSchema,
11726
+ graph,
11727
+ status: row.status,
11728
+ source: row.source,
11729
+ createdAt: new Date(row.createdAt),
11730
+ updatedAt: new Date(row.updatedAt)
11731
+ };
11732
+ if (row.description != null) def.description = String(row.description);
11733
+ const metadata = parseJson(row.metadata, "metadata", row.id);
11734
+ if (metadata !== void 0) def.metadata = metadata;
11735
+ const stateSchema = parseJson(row.stateSchema, "stateSchema", row.id);
11736
+ if (stateSchema !== void 0) def.stateSchema = stateSchema;
11737
+ const requestContextSchema = parseJson(row.requestContextSchema, "requestContextSchema", row.id);
11738
+ if (requestContextSchema !== void 0) def.requestContextSchema = requestContextSchema;
11739
+ if (row.authorId != null) def.authorId = String(row.authorId);
11740
+ return def;
11741
+ }
11742
+ var WorkflowDefinitionsLibSQL = class extends WorkflowDefinitionsStorage {
11743
+ #db;
11744
+ #client;
11745
+ constructor(config) {
11746
+ super();
11747
+ const client = resolveClient(config);
11748
+ this.#client = client;
11749
+ this.#db = new LibSQLDB({
11750
+ client,
11751
+ maxRetries: config.maxRetries,
11752
+ initialBackoffMs: config.initialBackoffMs
11753
+ });
11754
+ }
11755
+ async init() {
11756
+ await this.#db.createTable({
11757
+ tableName: TABLE_WORKFLOW_DEFINITIONS,
11758
+ schema: TABLE_SCHEMAS[TABLE_WORKFLOW_DEFINITIONS]
11759
+ });
11760
+ await this.#client.execute({
11761
+ sql: `CREATE INDEX IF NOT EXISTS idx_workflow_definitions_status ON "${TABLE_WORKFLOW_DEFINITIONS}" ("status")`,
11762
+ args: []
11763
+ });
11764
+ }
11765
+ async dangerouslyClearAll() {
11766
+ await this.#db.deleteData({ tableName: TABLE_WORKFLOW_DEFINITIONS });
11767
+ }
11768
+ async upsert(input) {
11769
+ const now = /* @__PURE__ */ new Date();
11770
+ if (!await this.get(input.id)) {
11771
+ if (!("inputSchema" in input) || !input.inputSchema) throw new Error(`Cannot create workflow definition "${input.id}": inputSchema is required.`);
11772
+ if (!("outputSchema" in input) || !input.outputSchema) throw new Error(`Cannot create workflow definition "${input.id}": outputSchema is required.`);
11773
+ if (!("graph" in input) || !input.graph) throw new Error(`Cannot create workflow definition "${input.id}": graph is required.`);
11774
+ const record = {
11775
+ id: input.id,
11776
+ description: input.description ?? null,
11777
+ metadata: input.metadata ?? null,
11778
+ inputSchema: input.inputSchema,
11779
+ outputSchema: input.outputSchema,
11780
+ stateSchema: input.stateSchema ?? null,
11781
+ requestContextSchema: input.requestContextSchema ?? null,
11782
+ graph: input.graph,
11783
+ status: "active",
11784
+ source: "storage",
11785
+ authorId: "authorId" in input ? input.authorId ?? null : null,
11786
+ createdAt: now,
11787
+ updatedAt: now
11788
+ };
11789
+ try {
11790
+ await this.#db.insertOnly({
11791
+ tableName: TABLE_WORKFLOW_DEFINITIONS,
11792
+ record
11793
+ });
11794
+ } catch (error) {
11795
+ if (!await this.get(input.id)) throw error;
11796
+ return this.#applyUpdate(input, now);
11797
+ }
11798
+ const created = await this.get(input.id);
11799
+ if (!created) throw new Error(`Failed to persist workflow definition "${input.id}".`);
11800
+ return created;
11801
+ }
11802
+ return this.#applyUpdate(input, now);
11803
+ }
11804
+ async #applyUpdate(input, now) {
11805
+ const data = { updatedAt: now };
11806
+ if ("description" in input && input.description !== void 0) data.description = input.description;
11807
+ if ("metadata" in input && input.metadata !== void 0) data.metadata = input.metadata;
11808
+ if ("inputSchema" in input && input.inputSchema !== void 0) data.inputSchema = input.inputSchema;
11809
+ if ("outputSchema" in input && input.outputSchema !== void 0) data.outputSchema = input.outputSchema;
11810
+ if ("stateSchema" in input && input.stateSchema !== void 0) data.stateSchema = input.stateSchema;
11811
+ if ("requestContextSchema" in input && input.requestContextSchema !== void 0) data.requestContextSchema = input.requestContextSchema;
11812
+ if ("graph" in input && input.graph !== void 0) data.graph = input.graph;
11813
+ if ("status" in input && input.status !== void 0) data.status = input.status;
11814
+ if ("authorId" in input && input.authorId !== void 0) data.authorId = input.authorId;
11815
+ await this.#db.update({
11816
+ tableName: TABLE_WORKFLOW_DEFINITIONS,
11817
+ keys: { id: input.id },
11818
+ data
11819
+ });
11820
+ const updated = await this.get(input.id);
11821
+ if (!updated) throw new Error(`Failed to update workflow definition "${input.id}".`);
11822
+ return updated;
11823
+ }
11824
+ async get(id) {
11825
+ const row = (await this.#client.execute({
11826
+ sql: `SELECT ${buildSelectColumns(TABLE_WORKFLOW_DEFINITIONS)} FROM "${TABLE_WORKFLOW_DEFINITIONS}" WHERE id = ?`,
11827
+ args: [id]
11828
+ })).rows[0];
11829
+ return row ? rowToDefinition(row) : null;
11830
+ }
11831
+ async list(args) {
11832
+ const conditions = [];
11833
+ const params = [];
11834
+ if (args?.status) {
11835
+ conditions.push("status = ?");
11836
+ params.push(args.status);
11837
+ }
11838
+ if (args?.authorId !== void 0) {
11839
+ conditions.push("authorId = ?");
11840
+ params.push(args.authorId);
11841
+ }
11842
+ const where = conditions.length > 0 ? `WHERE ${conditions.join(" AND ")}` : "";
11843
+ const definitions = (await this.#client.execute({
11844
+ sql: `SELECT ${buildSelectColumns(TABLE_WORKFLOW_DEFINITIONS)} FROM "${TABLE_WORKFLOW_DEFINITIONS}" ${where} ORDER BY updatedAt DESC`,
11845
+ args: params
11846
+ })).rows.map((row) => rowToDefinition(row));
11847
+ return {
11848
+ definitions,
11849
+ total: definitions.length
11850
+ };
11851
+ }
11852
+ async delete(id) {
11853
+ await this.#client.execute({
11854
+ sql: `DELETE FROM "${TABLE_WORKFLOW_DEFINITIONS}" WHERE id = ?`,
11855
+ args: [id]
11856
+ });
11857
+ }
11858
+ };
11859
+ //#endregion
11695
11860
  //#region src/storage/domains/workflows/index.ts
11696
11861
  var WorkflowsLibSQL = class WorkflowsLibSQL extends WorkflowsStorage {
11697
11862
  /**
@@ -12986,6 +13151,7 @@ var LibSQLStore = class extends MastraCompositeStore {
12986
13151
  };
12987
13152
  const scores = new ScoresLibSQL(domainConfig);
12988
13153
  const workflows = new WorkflowsLibSQL(domainConfig);
13154
+ const workflowDefinitions = new WorkflowDefinitionsLibSQL(domainConfig);
12989
13155
  const memory = new MemoryLibSQL(domainConfig);
12990
13156
  const observability = new ObservabilityLibSQL(domainConfig);
12991
13157
  const agents = new AgentsLibSQL(domainConfig);
@@ -13009,6 +13175,7 @@ var LibSQLStore = class extends MastraCompositeStore {
13009
13175
  this.stores = {
13010
13176
  scores,
13011
13177
  workflows,
13178
+ workflowDefinitions,
13012
13179
  memory,
13013
13180
  observability,
13014
13181
  agents,
@@ -13197,6 +13364,6 @@ Example Complex Query:
13197
13364
  ]
13198
13365
  }`;
13199
13366
  //#endregion
13200
- export { AgentsLibSQL, BackgroundTasksLibSQL, BlobsLibSQL, ChannelsLibSQL, DatasetsLibSQL, LibSQLStore as DefaultStorage, LibSQLStore, ExperimentsLibSQL, FavoritesLibSQL, HarnessLibSQL, LIBSQL_PROMPT, LibSQLFactoryStorage, LibSQLVector, MCPClientsLibSQL, MCPServersLibSQL, MemoryLibSQL, NotificationsLibSQL, ObservabilityLibSQL, PromptBlocksLibSQL, SchedulesLibSQL, ScorerDefinitionsLibSQL, ScoresLibSQL, SkillsLibSQL, ThreadStateLibSQL, ToolProviderConnectionsLibSQL, WorkflowsLibSQL, WorkspacesLibSQL };
13367
+ export { AgentsLibSQL, BackgroundTasksLibSQL, BlobsLibSQL, ChannelsLibSQL, DatasetsLibSQL, LibSQLStore as DefaultStorage, LibSQLStore, ExperimentsLibSQL, FavoritesLibSQL, HarnessLibSQL, LIBSQL_PROMPT, LibSQLFactoryStorage, LibSQLVector, MCPClientsLibSQL, MCPServersLibSQL, MemoryLibSQL, NotificationsLibSQL, ObservabilityLibSQL, PromptBlocksLibSQL, SchedulesLibSQL, ScorerDefinitionsLibSQL, ScoresLibSQL, SkillsLibSQL, ThreadStateLibSQL, ToolProviderConnectionsLibSQL, WorkflowDefinitionsLibSQL, WorkflowsLibSQL, WorkspacesLibSQL };
13201
13368
 
13202
13369
  //# sourceMappingURL=index.js.map