@mastra/mssql 1.0.0-beta.5 → 1.0.0-beta.7

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,56 @@
1
1
  # @mastra/mssql
2
2
 
3
+ ## 1.0.0-beta.7
4
+
5
+ ### Patch Changes
6
+
7
+ - Preserve error details when thrown from workflow steps ([#10992](https://github.com/mastra-ai/mastra/pull/10992))
8
+
9
+ Workflow errors now retain custom properties like `statusCode`, `responseHeaders`, and `cause` chains. This enables error-specific recovery logic in your applications.
10
+
11
+ **Before:**
12
+
13
+ ```typescript
14
+ const result = await workflow.execute({ input });
15
+ if (result.status === 'failed') {
16
+ // Custom error properties were lost
17
+ console.log(result.error); // "Step execution failed" (just a string)
18
+ }
19
+ ```
20
+
21
+ **After:**
22
+
23
+ ```typescript
24
+ const result = await workflow.execute({ input });
25
+ if (result.status === 'failed') {
26
+ // Custom properties are preserved
27
+ console.log(result.error.message); // "Step execution failed"
28
+ console.log(result.error.statusCode); // 429
29
+ console.log(result.error.cause?.name); // "RateLimitError"
30
+ }
31
+ ```
32
+
33
+ **Type change:** `WorkflowState.error` and `WorkflowRunState.error` types changed from `string | Error` to `SerializedError`.
34
+
35
+ Other changes:
36
+ - Added `UpdateWorkflowStateOptions` type for workflow state updates
37
+
38
+ - Updated dependencies [[`d5ed981`](https://github.com/mastra-ai/mastra/commit/d5ed981c8701c1b8a27a5f35a9a2f7d9244e695f), [`9650cce`](https://github.com/mastra-ai/mastra/commit/9650cce52a1d917ff9114653398e2a0f5c3ba808), [`932d63d`](https://github.com/mastra-ai/mastra/commit/932d63dd51be9c8bf1e00e3671fe65606c6fb9cd), [`b760b73`](https://github.com/mastra-ai/mastra/commit/b760b731aca7c8a3f041f61d57a7f125ae9cb215), [`695a621`](https://github.com/mastra-ai/mastra/commit/695a621528bdabeb87f83c2277cf2bb084c7f2b4), [`2b459f4`](https://github.com/mastra-ai/mastra/commit/2b459f466fd91688eeb2a44801dc23f7f8a887ab), [`486352b`](https://github.com/mastra-ai/mastra/commit/486352b66c746602b68a95839f830de14c7fb8c0), [`09e4bae`](https://github.com/mastra-ai/mastra/commit/09e4bae18dd5357d2ae078a4a95a2af32168ab08), [`24b76d8`](https://github.com/mastra-ai/mastra/commit/24b76d8e17656269c8ed09a0c038adb9cc2ae95a), [`243a823`](https://github.com/mastra-ai/mastra/commit/243a8239c5906f5c94e4f78b54676793f7510ae3), [`486352b`](https://github.com/mastra-ai/mastra/commit/486352b66c746602b68a95839f830de14c7fb8c0), [`c61fac3`](https://github.com/mastra-ai/mastra/commit/c61fac3add96f0dcce0208c07415279e2537eb62), [`6f14f70`](https://github.com/mastra-ai/mastra/commit/6f14f706ccaaf81b69544b6c1b75ab66a41e5317), [`09e4bae`](https://github.com/mastra-ai/mastra/commit/09e4bae18dd5357d2ae078a4a95a2af32168ab08), [`4524734`](https://github.com/mastra-ai/mastra/commit/45247343e384717a7c8404296275c56201d6470f), [`2a53598`](https://github.com/mastra-ai/mastra/commit/2a53598c6d8cfeb904a7fc74e57e526d751c8fa6), [`c7cd3c7`](https://github.com/mastra-ai/mastra/commit/c7cd3c7a187d7aaf79e2ca139de328bf609a14b4), [`847c212`](https://github.com/mastra-ai/mastra/commit/847c212caba7df0d6f2fc756b494ac3c75c3720d), [`6f941c4`](https://github.com/mastra-ai/mastra/commit/6f941c438ca5f578619788acc7608fc2e23bd176)]:
39
+ - @mastra/core@1.0.0-beta.12
40
+
41
+ ## 1.0.0-beta.6
42
+
43
+ ### Patch Changes
44
+
45
+ - Add delete workflow run API ([#10991](https://github.com/mastra-ai/mastra/pull/10991))
46
+
47
+ ```typescript
48
+ await workflow.deleteWorkflowRunById(runId);
49
+ ```
50
+
51
+ - Updated dependencies [[`edb07e4`](https://github.com/mastra-ai/mastra/commit/edb07e49283e0c28bd094a60e03439bf6ecf0221), [`b7e17d3`](https://github.com/mastra-ai/mastra/commit/b7e17d3f5390bb5a71efc112204413656fcdc18d), [`261473a`](https://github.com/mastra-ai/mastra/commit/261473ac637e633064a22076671e2e02b002214d), [`5d7000f`](https://github.com/mastra-ai/mastra/commit/5d7000f757cd65ea9dc5b05e662fd83dfd44e932), [`4f0331a`](https://github.com/mastra-ai/mastra/commit/4f0331a79bf6eb5ee598a5086e55de4b5a0ada03), [`8a000da`](https://github.com/mastra-ai/mastra/commit/8a000da0c09c679a2312f6b3aa05b2ca78ca7393)]:
52
+ - @mastra/core@1.0.0-beta.10
53
+
3
54
  ## 1.0.0-beta.5
4
55
 
5
56
  ### Patch Changes
package/dist/index.cjs CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  var error = require('@mastra/core/error');
4
4
  var storage = require('@mastra/core/storage');
5
- var sql2 = require('mssql');
5
+ var sql3 = require('mssql');
6
6
  var agent = require('@mastra/core/agent');
7
7
  var utils = require('@mastra/core/utils');
8
8
  var crypto = require('crypto');
@@ -10,7 +10,7 @@ var evals = require('@mastra/core/evals');
10
10
 
11
11
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
12
12
 
13
- var sql2__default = /*#__PURE__*/_interopDefault(sql2);
13
+ var sql3__default = /*#__PURE__*/_interopDefault(sql3);
14
14
 
15
15
  // src/storage/index.ts
16
16
  function getSchemaName(schema) {
@@ -233,7 +233,7 @@ var MemoryMSSQL = class extends storage.MemoryStorage {
233
233
  dataRequest.input("resourceId", resourceId);
234
234
  dataRequest.input("offset", offset);
235
235
  if (limitValue > 2147483647) {
236
- dataRequest.input("perPage", sql2__default.default.BigInt, limitValue);
236
+ dataRequest.input("perPage", sql3__default.default.BigInt, limitValue);
237
237
  } else {
238
238
  dataRequest.input("perPage", limitValue);
239
239
  }
@@ -297,12 +297,12 @@ var MemoryMSSQL = class extends storage.MemoryStorage {
297
297
  req.input("title", thread.title);
298
298
  const metadata = thread.metadata ? JSON.stringify(thread.metadata) : null;
299
299
  if (metadata === null) {
300
- req.input("metadata", sql2__default.default.NVarChar, null);
300
+ req.input("metadata", sql3__default.default.NVarChar, null);
301
301
  } else {
302
302
  req.input("metadata", metadata);
303
303
  }
304
- req.input("createdAt", sql2__default.default.DateTime2, thread.createdAt);
305
- req.input("updatedAt", sql2__default.default.DateTime2, thread.updatedAt);
304
+ req.input("createdAt", sql3__default.default.DateTime2, thread.createdAt);
305
+ req.input("updatedAt", sql3__default.default.DateTime2, thread.updatedAt);
306
306
  await req.query(mergeSql);
307
307
  return thread;
308
308
  } catch (error$1) {
@@ -598,7 +598,7 @@ var MemoryMSSQL = class extends storage.MemoryStorage {
598
598
  return result2.recordset || [];
599
599
  }
600
600
  request.input("offset", offset);
601
- request.input("limit", perPage > 2147483647 ? sql2__default.default.BigInt : sql2__default.default.Int, perPage);
601
+ request.input("limit", perPage > 2147483647 ? sql3__default.default.BigInt : sql3__default.default.Int, perPage);
602
602
  const result = await request.query(
603
603
  `${baseQuery}${actualWhereClause} ${orderByStatement} OFFSET @offset ROWS FETCH NEXT @limit ROWS ONLY`
604
604
  );
@@ -723,7 +723,7 @@ var MemoryMSSQL = class extends storage.MemoryStorage {
723
723
  "content",
724
724
  typeof message.content === "string" ? message.content : JSON.stringify(message.content)
725
725
  );
726
- request.input("createdAt", sql2__default.default.DateTime2, message.createdAt);
726
+ request.input("createdAt", sql3__default.default.DateTime2, message.createdAt);
727
727
  request.input("role", message.role);
728
728
  request.input("type", message.type || "v2");
729
729
  request.input("resourceId", message.resourceId);
@@ -742,7 +742,7 @@ var MemoryMSSQL = class extends storage.MemoryStorage {
742
742
  await request.query(mergeSql);
743
743
  }
744
744
  const threadReq = transaction.request();
745
- threadReq.input("updatedAt", sql2__default.default.DateTime2, /* @__PURE__ */ new Date());
745
+ threadReq.input("updatedAt", sql3__default.default.DateTime2, /* @__PURE__ */ new Date());
746
746
  threadReq.input("id", threadId);
747
747
  await threadReq.query(`UPDATE ${tableThreads} SET [updatedAt] = @updatedAt WHERE id = @id`);
748
748
  await transaction.commit();
@@ -1443,7 +1443,7 @@ var StoreOperationsMSSQL = class extends storage.StoreOperations {
1443
1443
  const value = record[col];
1444
1444
  const preparedValue = this.prepareValue(value, col, tableName);
1445
1445
  if (preparedValue instanceof Date) {
1446
- request.input(`param${i}`, sql2__default.default.DateTime2, preparedValue);
1446
+ request.input(`param${i}`, sql3__default.default.DateTime2, preparedValue);
1447
1447
  } else if (preparedValue === null || preparedValue === void 0) {
1448
1448
  request.input(`param${i}`, this.getMssqlType(tableName, col), null);
1449
1449
  } else {
@@ -1781,23 +1781,23 @@ ${columns}
1781
1781
  const col = storage.TABLE_SCHEMAS[tableName]?.[columnName];
1782
1782
  switch (col?.type) {
1783
1783
  case "text":
1784
- return sql2__default.default.NVarChar;
1784
+ return sql3__default.default.NVarChar;
1785
1785
  case "timestamp":
1786
- return sql2__default.default.DateTime2;
1786
+ return sql3__default.default.DateTime2;
1787
1787
  case "uuid":
1788
- return sql2__default.default.UniqueIdentifier;
1788
+ return sql3__default.default.UniqueIdentifier;
1789
1789
  case "jsonb":
1790
- return sql2__default.default.NVarChar;
1790
+ return sql3__default.default.NVarChar;
1791
1791
  case "integer":
1792
- return sql2__default.default.Int;
1792
+ return sql3__default.default.Int;
1793
1793
  case "bigint":
1794
- return sql2__default.default.BigInt;
1794
+ return sql3__default.default.BigInt;
1795
1795
  case "float":
1796
- return sql2__default.default.Float;
1796
+ return sql3__default.default.Float;
1797
1797
  case "boolean":
1798
- return sql2__default.default.Bit;
1798
+ return sql3__default.default.Bit;
1799
1799
  default:
1800
- return sql2__default.default.NVarChar;
1800
+ return sql3__default.default.NVarChar;
1801
1801
  }
1802
1802
  }
1803
1803
  /**
@@ -2697,7 +2697,7 @@ var WorkflowsMSSQL = class extends storage.WorkflowsStorage {
2697
2697
  const transaction = this.pool.transaction();
2698
2698
  try {
2699
2699
  await transaction.begin();
2700
- const selectRequest = new sql2__default.default.Request(transaction);
2700
+ const selectRequest = new sql3__default.default.Request(transaction);
2701
2701
  selectRequest.input("workflow_name", workflowName);
2702
2702
  selectRequest.input("run_id", runId);
2703
2703
  const existingSnapshotResult = await selectRequest.query(
@@ -2725,12 +2725,12 @@ var WorkflowsMSSQL = class extends storage.WorkflowsStorage {
2725
2725
  }
2726
2726
  snapshot.context[stepId] = result;
2727
2727
  snapshot.requestContext = { ...snapshot.requestContext, ...requestContext };
2728
- const upsertReq = new sql2__default.default.Request(transaction);
2728
+ const upsertReq = new sql3__default.default.Request(transaction);
2729
2729
  upsertReq.input("workflow_name", workflowName);
2730
2730
  upsertReq.input("run_id", runId);
2731
2731
  upsertReq.input("snapshot", JSON.stringify(snapshot));
2732
- upsertReq.input("createdAt", sql2__default.default.DateTime2, /* @__PURE__ */ new Date());
2733
- upsertReq.input("updatedAt", sql2__default.default.DateTime2, /* @__PURE__ */ new Date());
2732
+ upsertReq.input("createdAt", sql3__default.default.DateTime2, /* @__PURE__ */ new Date());
2733
+ upsertReq.input("updatedAt", sql3__default.default.DateTime2, /* @__PURE__ */ new Date());
2734
2734
  await upsertReq.query(
2735
2735
  `MERGE ${table} AS target
2736
2736
  USING (SELECT @workflow_name AS workflow_name, @run_id AS run_id) AS src
@@ -2770,7 +2770,7 @@ var WorkflowsMSSQL = class extends storage.WorkflowsStorage {
2770
2770
  const transaction = this.pool.transaction();
2771
2771
  try {
2772
2772
  await transaction.begin();
2773
- const selectRequest = new sql2__default.default.Request(transaction);
2773
+ const selectRequest = new sql3__default.default.Request(transaction);
2774
2774
  selectRequest.input("workflow_name", workflowName);
2775
2775
  selectRequest.input("run_id", runId);
2776
2776
  const existingSnapshotResult = await selectRequest.query(
@@ -2798,11 +2798,11 @@ var WorkflowsMSSQL = class extends storage.WorkflowsStorage {
2798
2798
  );
2799
2799
  }
2800
2800
  const updatedSnapshot = { ...snapshot, ...opts };
2801
- const updateRequest = new sql2__default.default.Request(transaction);
2801
+ const updateRequest = new sql3__default.default.Request(transaction);
2802
2802
  updateRequest.input("snapshot", JSON.stringify(updatedSnapshot));
2803
2803
  updateRequest.input("workflow_name", workflowName);
2804
2804
  updateRequest.input("run_id", runId);
2805
- updateRequest.input("updatedAt", sql2__default.default.DateTime2, /* @__PURE__ */ new Date());
2805
+ updateRequest.input("updatedAt", sql3__default.default.DateTime2, /* @__PURE__ */ new Date());
2806
2806
  await updateRequest.query(
2807
2807
  `UPDATE ${table} SET snapshot = @snapshot, [updatedAt] = @updatedAt WHERE workflow_name = @workflow_name AND run_id = @run_id`
2808
2808
  );
@@ -2842,8 +2842,8 @@ var WorkflowsMSSQL = class extends storage.WorkflowsStorage {
2842
2842
  request.input("run_id", runId);
2843
2843
  request.input("resourceId", resourceId);
2844
2844
  request.input("snapshot", JSON.stringify(snapshot));
2845
- request.input("createdAt", sql2__default.default.DateTime2, new Date(now));
2846
- request.input("updatedAt", sql2__default.default.DateTime2, new Date(now));
2845
+ request.input("createdAt", sql3__default.default.DateTime2, new Date(now));
2846
+ request.input("updatedAt", sql3__default.default.DateTime2, new Date(now));
2847
2847
  const mergeSql = `MERGE INTO ${table} AS target
2848
2848
  USING (SELECT @workflow_name AS workflow_name, @run_id AS run_id) AS src
2849
2849
  ON target.workflow_name = src.workflow_name AND target.run_id = src.run_id
@@ -2940,6 +2940,35 @@ var WorkflowsMSSQL = class extends storage.WorkflowsStorage {
2940
2940
  );
2941
2941
  }
2942
2942
  }
2943
+ async deleteWorkflowRunById({ runId, workflowName }) {
2944
+ const table = getTableName({ indexName: storage.TABLE_WORKFLOW_SNAPSHOT, schemaName: getSchemaName(this.schema) });
2945
+ const transaction = this.pool.transaction();
2946
+ try {
2947
+ await transaction.begin();
2948
+ const deleteRequest = new sql3__default.default.Request(transaction);
2949
+ deleteRequest.input("workflow_name", workflowName);
2950
+ deleteRequest.input("run_id", runId);
2951
+ await deleteRequest.query(`DELETE FROM ${table} WHERE workflow_name = @workflow_name AND run_id = @run_id`);
2952
+ await transaction.commit();
2953
+ } catch (error$1) {
2954
+ try {
2955
+ await transaction.rollback();
2956
+ } catch {
2957
+ }
2958
+ throw new error.MastraError(
2959
+ {
2960
+ id: storage.createStorageErrorId("MSSQL", "DELETE_WORKFLOW_RUN_BY_ID", "FAILED"),
2961
+ domain: error.ErrorDomain.STORAGE,
2962
+ category: error.ErrorCategory.THIRD_PARTY,
2963
+ details: {
2964
+ runId,
2965
+ workflowName
2966
+ }
2967
+ },
2968
+ error$1
2969
+ );
2970
+ }
2971
+ }
2943
2972
  async listWorkflowRuns({
2944
2973
  workflowName,
2945
2974
  fromDate,
@@ -2983,7 +3012,7 @@ var WorkflowsMSSQL = class extends storage.WorkflowsStorage {
2983
3012
  const request = this.pool.request();
2984
3013
  Object.entries(paramMap).forEach(([key, value]) => {
2985
3014
  if (value instanceof Date) {
2986
- request.input(key, sql2__default.default.DateTime, value);
3015
+ request.input(key, sql3__default.default.DateTime, value);
2987
3016
  } else {
2988
3017
  request.input(key, value);
2989
3018
  }
@@ -3046,7 +3075,7 @@ var MSSQLStore = class extends storage.MastraStorage {
3046
3075
  }
3047
3076
  }
3048
3077
  this.schema = config.schemaName || "dbo";
3049
- this.pool = "connectionString" in config ? new sql2__default.default.ConnectionPool(config.connectionString) : new sql2__default.default.ConnectionPool({
3078
+ this.pool = "connectionString" in config ? new sql3__default.default.ConnectionPool(config.connectionString) : new sql3__default.default.ConnectionPool({
3050
3079
  server: config.server,
3051
3080
  database: config.database,
3052
3081
  user: config.user,
@@ -3237,6 +3266,9 @@ var MSSQLStore = class extends storage.MastraStorage {
3237
3266
  }) {
3238
3267
  return this.stores.workflows.getWorkflowRunById({ runId, workflowName });
3239
3268
  }
3269
+ async deleteWorkflowRunById({ runId, workflowName }) {
3270
+ return this.stores.workflows.deleteWorkflowRunById({ runId, workflowName });
3271
+ }
3240
3272
  async close() {
3241
3273
  await this.pool.close();
3242
3274
  }