@mastra/libsql 1.18.0 → 1.19.0-alpha.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.
Files changed (34) hide show
  1. package/CHANGELOG.md +62 -0
  2. package/dist/docs/SKILL.md +4 -3
  3. package/dist/docs/assets/SOURCE_MAP.json +1 -1
  4. package/dist/docs/references/docs-agent-builder-deploying.md +2 -2
  5. package/dist/docs/references/docs-agent-builder-overview.md +1 -1
  6. package/dist/docs/references/docs-agents-agent-approval.md +85 -11
  7. package/dist/docs/references/docs-agents-networks.md +2 -2
  8. package/dist/docs/references/docs-deployment-workers.md +137 -0
  9. package/dist/docs/references/docs-memory-memory-processors.md +10 -10
  10. package/dist/docs/references/docs-memory-message-history.md +11 -5
  11. package/dist/docs/references/docs-memory-multi-user-threads.md +6 -6
  12. package/dist/docs/references/docs-memory-overview.md +24 -10
  13. package/dist/docs/references/docs-memory-semantic-recall.md +3 -3
  14. package/dist/docs/references/docs-memory-working-memory.md +8 -8
  15. package/dist/docs/references/docs-rag-retrieval.md +18 -18
  16. package/dist/docs/references/docs-storage-overview.md +2 -2
  17. package/dist/docs/references/docs-workflows-snapshots.md +3 -3
  18. package/dist/docs/references/reference-core-mastra-class.md +48 -1
  19. package/dist/docs/references/reference-file-based-agents-storage.md +1 -1
  20. package/dist/docs/references/reference-memory-memory-class.md +4 -4
  21. package/dist/docs/references/reference-storage-dynamodb.md +7 -7
  22. package/dist/docs/references/reference-storage-retention.md +33 -33
  23. package/dist/docs/references/reference-vectors-libsql.md +2 -2
  24. package/dist/index.cjs +193 -19
  25. package/dist/index.cjs.map +1 -1
  26. package/dist/index.js +194 -21
  27. package/dist/index.js.map +1 -1
  28. package/dist/storage/domains/datasets/index.d.ts.map +1 -1
  29. package/dist/storage/domains/experiments/index.d.ts.map +1 -1
  30. package/dist/storage/domains/workflow-definitions/index.d.ts +14 -0
  31. package/dist/storage/domains/workflow-definitions/index.d.ts.map +1 -0
  32. package/dist/storage/index.d.ts +2 -1
  33. package/dist/storage/index.d.ts.map +1 -1
  34. package/package.json +5 -5
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),
@@ -3467,6 +3467,7 @@ var DatasetsLibSQL = class extends DatasetsStorage {
3467
3467
  await this.#addColumnIfNotExists(TABLE_DATASET_ITEMS, "organizationId", "TEXT");
3468
3468
  await this.#addColumnIfNotExists(TABLE_DATASET_ITEMS, "projectId", "TEXT");
3469
3469
  await this.#addColumnIfNotExists(TABLE_DATASET_ITEMS, "toolMocks", "TEXT");
3470
+ await this.#addColumnIfNotExists(TABLE_DATASET_ITEMS, "unmockedToolPolicy", "TEXT");
3470
3471
  await this.#addColumnIfNotExists(TABLE_DATASET_ITEMS, "externalId", "TEXT");
3471
3472
  await this.#client.batch([
3472
3473
  {
@@ -3563,6 +3564,7 @@ var DatasetsLibSQL = class extends DatasetsStorage {
3563
3564
  groundTruth: row.groundTruth ? safelyParseJSON(row.groundTruth) : void 0,
3564
3565
  expectedTrajectory: row.expectedTrajectory ? safelyParseJSON(row.expectedTrajectory) : void 0,
3565
3566
  toolMocks: row.toolMocks ? safelyParseJSON(row.toolMocks) : void 0,
3567
+ unmockedToolPolicy: row.unmockedToolPolicy ?? void 0,
3566
3568
  requestContext: row.requestContext ? safelyParseJSON(row.requestContext) : void 0,
3567
3569
  metadata: row.metadata ? safelyParseJSON(row.metadata) : void 0,
3568
3570
  source: row.source ? safelyParseJSON(row.source) : void 0,
@@ -3584,6 +3586,7 @@ var DatasetsLibSQL = class extends DatasetsStorage {
3584
3586
  groundTruth: row.groundTruth ? safelyParseJSON(row.groundTruth) : void 0,
3585
3587
  expectedTrajectory: row.expectedTrajectory ? safelyParseJSON(row.expectedTrajectory) : void 0,
3586
3588
  toolMocks: row.toolMocks ? safelyParseJSON(row.toolMocks) : void 0,
3589
+ unmockedToolPolicy: row.unmockedToolPolicy ?? void 0,
3587
3590
  requestContext: row.requestContext ? safelyParseJSON(row.requestContext) : void 0,
3588
3591
  metadata: row.metadata ? safelyParseJSON(row.metadata) : void 0,
3589
3592
  source: row.source ? safelyParseJSON(row.source) : void 0,
@@ -3897,7 +3900,7 @@ var DatasetsLibSQL = class extends DatasetsStorage {
3897
3900
  args: [args.datasetId]
3898
3901
  },
3899
3902
  {
3900
- sql: `INSERT INTO ${TABLE_DATASET_ITEMS} (id, datasetId, datasetVersion, externalId, organizationId, projectId, validTo, isDeleted, input, groundTruth, expectedTrajectory, toolMocks, 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(?), ?, ?)`,
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(?), ?, ?)`,
3901
3904
  args: [
3902
3905
  id,
3903
3906
  args.datasetId,
@@ -3909,6 +3912,7 @@ var DatasetsLibSQL = class extends DatasetsStorage {
3909
3912
  jsonbArg(args.groundTruth),
3910
3913
  jsonbArg(args.expectedTrajectory),
3911
3914
  jsonbArg(args.toolMocks),
3915
+ args.unmockedToolPolicy ?? null,
3912
3916
  jsonbArg(args.requestContext),
3913
3917
  jsonbArg(args.metadata),
3914
3918
  jsonbArg(args.source),
@@ -3938,6 +3942,7 @@ var DatasetsLibSQL = class extends DatasetsStorage {
3938
3942
  groundTruth: args.groundTruth,
3939
3943
  expectedTrajectory: args.expectedTrajectory,
3940
3944
  toolMocks: args.toolMocks,
3945
+ unmockedToolPolicy: args.unmockedToolPolicy,
3941
3946
  requestContext: args.requestContext,
3942
3947
  metadata: args.metadata,
3943
3948
  source: args.source,
@@ -3980,6 +3985,7 @@ var DatasetsLibSQL = class extends DatasetsStorage {
3980
3985
  const mergedGroundTruth = args.groundTruth !== void 0 ? args.groundTruth : existing.groundTruth;
3981
3986
  const mergedExpectedTrajectory = args.expectedTrajectory !== void 0 ? args.expectedTrajectory : existing.expectedTrajectory;
3982
3987
  const mergedToolMocks = args.toolMocks !== void 0 ? args.toolMocks : existing.toolMocks;
3988
+ const mergedUnmockedToolPolicy = args.unmockedToolPolicy !== void 0 ? args.unmockedToolPolicy : existing.unmockedToolPolicy;
3983
3989
  const mergedRequestContext = args.requestContext !== void 0 ? args.requestContext : existing.requestContext;
3984
3990
  const mergedMetadata = args.metadata !== void 0 ? args.metadata : existing.metadata;
3985
3991
  const mergedSource = args.source !== void 0 ? args.source : existing.source;
@@ -3993,7 +3999,7 @@ var DatasetsLibSQL = class extends DatasetsStorage {
3993
3999
  args: [args.datasetId, args.id]
3994
4000
  },
3995
4001
  {
3996
- sql: `INSERT INTO ${TABLE_DATASET_ITEMS} (id, datasetId, datasetVersion, externalId, organizationId, projectId, validTo, isDeleted, input, groundTruth, expectedTrajectory, toolMocks, 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(?), ?, ?)`,
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(?), ?, ?)`,
3997
4003
  args: [
3998
4004
  args.id,
3999
4005
  args.datasetId,
@@ -4005,6 +4011,7 @@ var DatasetsLibSQL = class extends DatasetsStorage {
4005
4011
  jsonbArg(mergedGroundTruth),
4006
4012
  jsonbArg(mergedExpectedTrajectory),
4007
4013
  jsonbArg(mergedToolMocks),
4014
+ mergedUnmockedToolPolicy ?? null,
4008
4015
  jsonbArg(mergedRequestContext),
4009
4016
  jsonbArg(mergedMetadata),
4010
4017
  jsonbArg(mergedSource),
@@ -4032,6 +4039,7 @@ var DatasetsLibSQL = class extends DatasetsStorage {
4032
4039
  groundTruth: mergedGroundTruth,
4033
4040
  expectedTrajectory: mergedExpectedTrajectory,
4034
4041
  toolMocks: mergedToolMocks,
4042
+ unmockedToolPolicy: mergedUnmockedToolPolicy,
4035
4043
  requestContext: mergedRequestContext,
4036
4044
  metadata: mergedMetadata,
4037
4045
  source: mergedSource,
@@ -4072,7 +4080,7 @@ var DatasetsLibSQL = class extends DatasetsStorage {
4072
4080
  args: [datasetId, id]
4073
4081
  },
4074
4082
  {
4075
- sql: `INSERT INTO ${TABLE_DATASET_ITEMS} (id, datasetId, datasetVersion, externalId, organizationId, projectId, validTo, isDeleted, input, groundTruth, expectedTrajectory, toolMocks, 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(?), ?, ?)`,
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(?), ?, ?)`,
4076
4084
  args: [
4077
4085
  id,
4078
4086
  datasetId,
@@ -4084,6 +4092,7 @@ var DatasetsLibSQL = class extends DatasetsStorage {
4084
4092
  jsonbArg(existing.groundTruth),
4085
4093
  jsonbArg(existing.expectedTrajectory),
4086
4094
  jsonbArg(existing.toolMocks),
4095
+ existing.unmockedToolPolicy ?? null,
4087
4096
  jsonbArg(existing.requestContext),
4088
4097
  jsonbArg(existing.metadata),
4089
4098
  jsonbArg(existing.source),
@@ -4379,7 +4388,7 @@ var DatasetsLibSQL = class extends DatasetsStorage {
4379
4388
  });
4380
4389
  const externalIds = [...new Set(input.items.flatMap((item) => item.externalId ? [item.externalId] : []))];
4381
4390
  const historyResult = externalIds.length ? await tx.execute({
4382
- 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, 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`,
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`,
4383
4392
  args: [input.datasetId, ...externalIds]
4384
4393
  }) : { rows: [] };
4385
4394
  const plan = this.planDatasetItemBatch(input.items, historyResult.rows.map((row) => this.transformItemRowFull(row)), () => crypto.randomUUID());
@@ -4394,7 +4403,7 @@ var DatasetsLibSQL = class extends DatasetsStorage {
4394
4403
  });
4395
4404
  for (const { id, item } of plan.inserts) {
4396
4405
  await tx.execute({
4397
- sql: `INSERT INTO ${TABLE_DATASET_ITEMS} (id, datasetId, datasetVersion, externalId, organizationId, projectId, validTo, isDeleted, input, groundTruth, expectedTrajectory, toolMocks, requestContext, metadata, source, createdAt, updatedAt) VALUES (?, ?, ?, ?, ?, ?, NULL, 0, jsonb(?), jsonb(?), jsonb(?), jsonb(?), jsonb(?), jsonb(?), jsonb(?), ?, ?)`,
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(?), ?, ?)`,
4398
4407
  args: [
4399
4408
  id,
4400
4409
  input.datasetId,
@@ -4406,6 +4415,7 @@ var DatasetsLibSQL = class extends DatasetsStorage {
4406
4415
  jsonbArg(item.groundTruth),
4407
4416
  jsonbArg(item.expectedTrajectory),
4408
4417
  jsonbArg(item.toolMocks),
4418
+ item.unmockedToolPolicy ?? null,
4409
4419
  jsonbArg(item.requestContext),
4410
4420
  jsonbArg(item.metadata),
4411
4421
  jsonbArg(item.source),
@@ -4424,6 +4434,7 @@ var DatasetsLibSQL = class extends DatasetsStorage {
4424
4434
  groundTruth: item.groundTruth,
4425
4435
  expectedTrajectory: item.expectedTrajectory,
4426
4436
  toolMocks: item.toolMocks,
4437
+ unmockedToolPolicy: item.unmockedToolPolicy,
4427
4438
  requestContext: item.requestContext,
4428
4439
  metadata: item.metadata,
4429
4440
  source: item.source,
@@ -4484,7 +4495,7 @@ var DatasetsLibSQL = class extends DatasetsStorage {
4484
4495
  args: [input.datasetId, item.id]
4485
4496
  });
4486
4497
  statements.push({
4487
- sql: `INSERT INTO ${TABLE_DATASET_ITEMS} (id, datasetId, datasetVersion, externalId, organizationId, projectId, validTo, isDeleted, input, groundTruth, expectedTrajectory, toolMocks, requestContext, metadata, source, createdAt, updatedAt) VALUES (?, ?, (SELECT version FROM ${TABLE_DATASETS} WHERE id = ?), ?, ?, ?, NULL, 1, jsonb(?), jsonb(?), jsonb(?), jsonb(?), jsonb(?), jsonb(?), jsonb(?), ?, ?)`,
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(?), ?, ?)`,
4488
4499
  args: [
4489
4500
  item.id,
4490
4501
  input.datasetId,
@@ -4496,6 +4507,7 @@ var DatasetsLibSQL = class extends DatasetsStorage {
4496
4507
  jsonbArg(item.groundTruth),
4497
4508
  jsonbArg(item.expectedTrajectory),
4498
4509
  jsonbArg(item.toolMocks),
4510
+ item.unmockedToolPolicy ?? null,
4499
4511
  jsonbArg(item.requestContext),
4500
4512
  jsonbArg(item.metadata),
4501
4513
  jsonbArg(item.source),
@@ -4576,6 +4588,7 @@ var ExperimentsLibSQL = class extends ExperimentsStorage {
4576
4588
  ifNotExists: [
4577
4589
  "status",
4578
4590
  "tags",
4591
+ "comment",
4579
4592
  "toolMockReport",
4580
4593
  "organizationId",
4581
4594
  "projectId"
@@ -4714,6 +4727,7 @@ var ExperimentsLibSQL = class extends ExperimentsStorage {
4714
4727
  traceId: row.traceId ?? null,
4715
4728
  status: row.status ?? null,
4716
4729
  tags: row.tags ? safelyParseJSON(row.tags) : null,
4730
+ comment: row.comment ?? null,
4717
4731
  toolMockReport: row.toolMockReport ? safelyParseJSON(row.toolMockReport) : null,
4718
4732
  createdAt: ensureDate(row.createdAt)
4719
4733
  };
@@ -5028,6 +5042,10 @@ var ExperimentsLibSQL = class extends ExperimentsStorage {
5028
5042
  setClauses.push(`"tags" = ?`);
5029
5043
  values.push(JSON.stringify(input.tags));
5030
5044
  }
5045
+ if (input.comment !== void 0) {
5046
+ setClauses.push(`"comment" = ?`);
5047
+ values.push(input.comment);
5048
+ }
5031
5049
  if (setClauses.length === 0) {
5032
5050
  const existing = await this.getExperimentResultById({ id: input.id });
5033
5051
  if (!existing) throw new MastraError({
@@ -8511,7 +8529,7 @@ const statusTimestamp = (status, now) => {
8511
8529
  if (status === "discarded") return { discardedAt: now };
8512
8530
  return {};
8513
8531
  };
8514
- function parseJson$1(value) {
8532
+ function parseJson$2(value) {
8515
8533
  if (value == null) return void 0;
8516
8534
  if (typeof value === "string") try {
8517
8535
  return JSON.parse(value);
@@ -8533,14 +8551,14 @@ function rowToNotification(row) {
8533
8551
  priority: String(row.priority),
8534
8552
  status: String(row.status),
8535
8553
  summary: String(row.summary),
8536
- payload: parseJson$1(row.payload),
8554
+ payload: parseJson$2(row.payload),
8537
8555
  resourceId: row.resourceId == null ? void 0 : String(row.resourceId),
8538
8556
  agentId: row.agentId == null ? void 0 : String(row.agentId),
8539
8557
  sourceId: row.sourceId == null ? void 0 : String(row.sourceId),
8540
8558
  dedupeKey: row.dedupeKey == null ? void 0 : String(row.dedupeKey),
8541
8559
  coalesceKey: row.coalesceKey == null ? void 0 : String(row.coalesceKey),
8542
8560
  coalescedCount: Number(row.coalescedCount ?? 1),
8543
- attributes: parseJson$1(row.attributes),
8561
+ attributes: parseJson$2(row.attributes),
8544
8562
  createdAt: new Date(String(row.createdAt)),
8545
8563
  updatedAt: new Date(String(row.updatedAt)),
8546
8564
  deliveredAt: parseDate(row.deliveredAt),
@@ -8556,7 +8574,7 @@ function rowToNotification(row) {
8556
8574
  lastDeliveryError: row.lastDeliveryError == null ? void 0 : String(row.lastDeliveryError),
8557
8575
  deliveredSignalId: row.deliveredSignalId == null ? void 0 : String(row.deliveredSignalId),
8558
8576
  summarySignalId: row.summarySignalId == null ? void 0 : String(row.summarySignalId),
8559
- metadata: parseJson$1(row.metadata)
8577
+ metadata: parseJson$2(row.metadata)
8560
8578
  };
8561
8579
  }
8562
8580
  function addArrayFilter(conditions, args, column, value) {
@@ -9747,7 +9765,7 @@ var PromptBlocksLibSQL = class extends PromptBlocksStorage {
9747
9765
  };
9748
9766
  //#endregion
9749
9767
  //#region src/storage/domains/schedules/index.ts
9750
- function parseJson(val) {
9768
+ function parseJson$1(val) {
9751
9769
  if (val == null) return void 0;
9752
9770
  if (typeof val === "string") try {
9753
9771
  return JSON.parse(val);
@@ -9761,7 +9779,7 @@ function toNumber(val) {
9761
9779
  return Number(val);
9762
9780
  }
9763
9781
  function rowToSchedule(row) {
9764
- const target = parseJson(row.target);
9782
+ const target = parseJson$1(row.target);
9765
9783
  if (!target) throw new Error(`Schedule row ${row.id} has invalid target`);
9766
9784
  const schedule = {
9767
9785
  id: String(row.id),
@@ -9775,7 +9793,7 @@ function rowToSchedule(row) {
9775
9793
  if (row.timezone != null) schedule.timezone = String(row.timezone);
9776
9794
  if (row.last_fire_at != null) schedule.lastFireAt = toNumber(row.last_fire_at);
9777
9795
  if (row.last_run_id != null) schedule.lastRunId = String(row.last_run_id);
9778
- const metadata = parseJson(row.metadata);
9796
+ const metadata = parseJson$1(row.metadata);
9779
9797
  if (metadata !== void 0) schedule.metadata = metadata;
9780
9798
  if (row.owner_type != null) schedule.ownerType = String(row.owner_type);
9781
9799
  if (row.owner_id != null) schedule.ownerId = String(row.owner_id);
@@ -9793,7 +9811,7 @@ function rowToTrigger(row) {
9793
9811
  };
9794
9812
  if (row.error != null) trigger.error = String(row.error);
9795
9813
  if (row.parent_trigger_id != null) trigger.parentTriggerId = String(row.parent_trigger_id);
9796
- const metadata = parseJson(row.metadata);
9814
+ const metadata = parseJson$1(row.metadata);
9797
9815
  if (metadata !== void 0) trigger.metadata = metadata;
9798
9816
  return trigger;
9799
9817
  }
@@ -11674,6 +11692,159 @@ var ToolProviderConnectionsLibSQL = class extends ToolProviderConnectionsStorage
11674
11692
  }
11675
11693
  };
11676
11694
  //#endregion
11695
+ //#region src/storage/domains/workflow-definitions/index.ts
11696
+ function parseJson(val, column, rowId) {
11697
+ if (val == null) return void 0;
11698
+ if (typeof val === "string") try {
11699
+ return JSON.parse(val);
11700
+ } catch {
11701
+ throw new Error(`Workflow definition row "${String(rowId)}" has malformed JSON in column "${column}".`);
11702
+ }
11703
+ return val;
11704
+ }
11705
+ function rowToDefinition(row) {
11706
+ const inputSchema = parseJson(row.inputSchema, "inputSchema", row.id);
11707
+ const outputSchema = parseJson(row.outputSchema, "outputSchema", row.id);
11708
+ const graph = parseJson(row.graph, "graph", row.id);
11709
+ if (inputSchema === void 0 || outputSchema === void 0 || graph === void 0) throw new Error(`Workflow definition row "${row.id}" is missing required JSON columns.`);
11710
+ const def = {
11711
+ id: String(row.id),
11712
+ inputSchema,
11713
+ outputSchema,
11714
+ graph,
11715
+ status: row.status,
11716
+ source: row.source,
11717
+ createdAt: new Date(row.createdAt),
11718
+ updatedAt: new Date(row.updatedAt)
11719
+ };
11720
+ if (row.description != null) def.description = String(row.description);
11721
+ const metadata = parseJson(row.metadata, "metadata", row.id);
11722
+ if (metadata !== void 0) def.metadata = metadata;
11723
+ const stateSchema = parseJson(row.stateSchema, "stateSchema", row.id);
11724
+ if (stateSchema !== void 0) def.stateSchema = stateSchema;
11725
+ const requestContextSchema = parseJson(row.requestContextSchema, "requestContextSchema", row.id);
11726
+ if (requestContextSchema !== void 0) def.requestContextSchema = requestContextSchema;
11727
+ if (row.authorId != null) def.authorId = String(row.authorId);
11728
+ return def;
11729
+ }
11730
+ var WorkflowDefinitionsLibSQL = class extends WorkflowDefinitionsStorage {
11731
+ #db;
11732
+ #client;
11733
+ constructor(config) {
11734
+ super();
11735
+ const client = resolveClient(config);
11736
+ this.#client = client;
11737
+ this.#db = new LibSQLDB({
11738
+ client,
11739
+ maxRetries: config.maxRetries,
11740
+ initialBackoffMs: config.initialBackoffMs
11741
+ });
11742
+ }
11743
+ async init() {
11744
+ await this.#db.createTable({
11745
+ tableName: TABLE_WORKFLOW_DEFINITIONS,
11746
+ schema: TABLE_SCHEMAS[TABLE_WORKFLOW_DEFINITIONS]
11747
+ });
11748
+ await this.#client.execute({
11749
+ sql: `CREATE INDEX IF NOT EXISTS idx_workflow_definitions_status ON "${TABLE_WORKFLOW_DEFINITIONS}" ("status")`,
11750
+ args: []
11751
+ });
11752
+ }
11753
+ async dangerouslyClearAll() {
11754
+ await this.#db.deleteData({ tableName: TABLE_WORKFLOW_DEFINITIONS });
11755
+ }
11756
+ async upsert(input) {
11757
+ const now = /* @__PURE__ */ new Date();
11758
+ if (!await this.get(input.id)) {
11759
+ if (!("inputSchema" in input) || !input.inputSchema) throw new Error(`Cannot create workflow definition "${input.id}": inputSchema is required.`);
11760
+ if (!("outputSchema" in input) || !input.outputSchema) throw new Error(`Cannot create workflow definition "${input.id}": outputSchema is required.`);
11761
+ if (!("graph" in input) || !input.graph) throw new Error(`Cannot create workflow definition "${input.id}": graph is required.`);
11762
+ const record = {
11763
+ id: input.id,
11764
+ description: input.description ?? null,
11765
+ metadata: input.metadata ?? null,
11766
+ inputSchema: input.inputSchema,
11767
+ outputSchema: input.outputSchema,
11768
+ stateSchema: input.stateSchema ?? null,
11769
+ requestContextSchema: input.requestContextSchema ?? null,
11770
+ graph: input.graph,
11771
+ status: "active",
11772
+ source: "storage",
11773
+ authorId: "authorId" in input ? input.authorId ?? null : null,
11774
+ createdAt: now,
11775
+ updatedAt: now
11776
+ };
11777
+ try {
11778
+ await this.#db.insertOnly({
11779
+ tableName: TABLE_WORKFLOW_DEFINITIONS,
11780
+ record
11781
+ });
11782
+ } catch (error) {
11783
+ if (!await this.get(input.id)) throw error;
11784
+ return this.#applyUpdate(input, now);
11785
+ }
11786
+ const created = await this.get(input.id);
11787
+ if (!created) throw new Error(`Failed to persist workflow definition "${input.id}".`);
11788
+ return created;
11789
+ }
11790
+ return this.#applyUpdate(input, now);
11791
+ }
11792
+ async #applyUpdate(input, now) {
11793
+ const data = { updatedAt: now };
11794
+ if ("description" in input && input.description !== void 0) data.description = input.description;
11795
+ if ("metadata" in input && input.metadata !== void 0) data.metadata = input.metadata;
11796
+ if ("inputSchema" in input && input.inputSchema !== void 0) data.inputSchema = input.inputSchema;
11797
+ if ("outputSchema" in input && input.outputSchema !== void 0) data.outputSchema = input.outputSchema;
11798
+ if ("stateSchema" in input && input.stateSchema !== void 0) data.stateSchema = input.stateSchema;
11799
+ if ("requestContextSchema" in input && input.requestContextSchema !== void 0) data.requestContextSchema = input.requestContextSchema;
11800
+ if ("graph" in input && input.graph !== void 0) data.graph = input.graph;
11801
+ if ("status" in input && input.status !== void 0) data.status = input.status;
11802
+ if ("authorId" in input && input.authorId !== void 0) data.authorId = input.authorId;
11803
+ await this.#db.update({
11804
+ tableName: TABLE_WORKFLOW_DEFINITIONS,
11805
+ keys: { id: input.id },
11806
+ data
11807
+ });
11808
+ const updated = await this.get(input.id);
11809
+ if (!updated) throw new Error(`Failed to update workflow definition "${input.id}".`);
11810
+ return updated;
11811
+ }
11812
+ async get(id) {
11813
+ const row = (await this.#client.execute({
11814
+ sql: `SELECT ${buildSelectColumns(TABLE_WORKFLOW_DEFINITIONS)} FROM "${TABLE_WORKFLOW_DEFINITIONS}" WHERE id = ?`,
11815
+ args: [id]
11816
+ })).rows[0];
11817
+ return row ? rowToDefinition(row) : null;
11818
+ }
11819
+ async list(args) {
11820
+ const conditions = [];
11821
+ const params = [];
11822
+ if (args?.status) {
11823
+ conditions.push("status = ?");
11824
+ params.push(args.status);
11825
+ }
11826
+ if (args?.authorId !== void 0) {
11827
+ conditions.push("authorId = ?");
11828
+ params.push(args.authorId);
11829
+ }
11830
+ const where = conditions.length > 0 ? `WHERE ${conditions.join(" AND ")}` : "";
11831
+ const definitions = (await this.#client.execute({
11832
+ sql: `SELECT ${buildSelectColumns(TABLE_WORKFLOW_DEFINITIONS)} FROM "${TABLE_WORKFLOW_DEFINITIONS}" ${where} ORDER BY updatedAt DESC`,
11833
+ args: params
11834
+ })).rows.map((row) => rowToDefinition(row));
11835
+ return {
11836
+ definitions,
11837
+ total: definitions.length
11838
+ };
11839
+ }
11840
+ async delete(id) {
11841
+ await this.#client.execute({
11842
+ sql: `DELETE FROM "${TABLE_WORKFLOW_DEFINITIONS}" WHERE id = ?`,
11843
+ args: [id]
11844
+ });
11845
+ }
11846
+ };
11847
+ //#endregion
11677
11848
  //#region src/storage/domains/workflows/index.ts
11678
11849
  var WorkflowsLibSQL = class WorkflowsLibSQL extends WorkflowsStorage {
11679
11850
  /**
@@ -12968,6 +13139,7 @@ var LibSQLStore = class extends MastraCompositeStore {
12968
13139
  };
12969
13140
  const scores = new ScoresLibSQL(domainConfig);
12970
13141
  const workflows = new WorkflowsLibSQL(domainConfig);
13142
+ const workflowDefinitions = new WorkflowDefinitionsLibSQL(domainConfig);
12971
13143
  const memory = new MemoryLibSQL(domainConfig);
12972
13144
  const observability = new ObservabilityLibSQL(domainConfig);
12973
13145
  const agents = new AgentsLibSQL(domainConfig);
@@ -12991,6 +13163,7 @@ var LibSQLStore = class extends MastraCompositeStore {
12991
13163
  this.stores = {
12992
13164
  scores,
12993
13165
  workflows,
13166
+ workflowDefinitions,
12994
13167
  memory,
12995
13168
  observability,
12996
13169
  agents,
@@ -13179,6 +13352,6 @@ Example Complex Query:
13179
13352
  ]
13180
13353
  }`;
13181
13354
  //#endregion
13182
- 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 };
13355
+ 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 };
13183
13356
 
13184
13357
  //# sourceMappingURL=index.js.map