@mastra/mssql 1.0.0-beta.4 → 1.0.0-beta.6
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 +29 -0
- package/dist/index.cjs +76 -37
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +75 -36
- package/dist/index.js.map +1 -1
- package/dist/storage/domains/scores/index.d.ts +2 -2
- package/dist/storage/domains/scores/index.d.ts.map +1 -1
- package/dist/storage/domains/workflows/index.d.ts +4 -0
- package/dist/storage/domains/workflows/index.d.ts.map +1 -1
- package/dist/storage/index.d.ts +6 -2
- package/dist/storage/index.d.ts.map +1 -1
- package/package.json +3 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,34 @@
|
|
|
1
1
|
# @mastra/mssql
|
|
2
2
|
|
|
3
|
+
## 1.0.0-beta.6
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- Add delete workflow run API ([#10991](https://github.com/mastra-ai/mastra/pull/10991))
|
|
8
|
+
|
|
9
|
+
```typescript
|
|
10
|
+
await workflow.deleteWorkflowRunById(runId);
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
- 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)]:
|
|
14
|
+
- @mastra/core@1.0.0-beta.10
|
|
15
|
+
|
|
16
|
+
## 1.0.0-beta.5
|
|
17
|
+
|
|
18
|
+
### Patch Changes
|
|
19
|
+
|
|
20
|
+
- Fix saveScore not persisting ID correctly, breaking getScoreById retrieval ([#10915](https://github.com/mastra-ai/mastra/pull/10915))
|
|
21
|
+
|
|
22
|
+
**What Changed**
|
|
23
|
+
- saveScore now correctly returns scores that can be retrieved with getScoreById
|
|
24
|
+
- Validation errors now include contextual information (scorer, entity, trace details) for easier debugging
|
|
25
|
+
|
|
26
|
+
**Impact**
|
|
27
|
+
Previously, calling getScoreById after saveScore would return null because the generated ID wasn't persisted to the database. This is now fixed across all store implementations, ensuring consistent behavior and data integrity.
|
|
28
|
+
|
|
29
|
+
- Updated dependencies [[`0d41fe2`](https://github.com/mastra-ai/mastra/commit/0d41fe245355dfc66d61a0d9c85d9400aac351ff), [`6b3ba91`](https://github.com/mastra-ai/mastra/commit/6b3ba91494cc10394df96782f349a4f7b1e152cc), [`7907fd1`](https://github.com/mastra-ai/mastra/commit/7907fd1c5059813b7b870b81ca71041dc807331b)]:
|
|
30
|
+
- @mastra/core@1.0.0-beta.8
|
|
31
|
+
|
|
3
32
|
## 1.0.0-beta.4
|
|
4
33
|
|
|
5
34
|
### Minor 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
|
|
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
|
|
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",
|
|
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",
|
|
300
|
+
req.input("metadata", sql3__default.default.NVarChar, null);
|
|
301
301
|
} else {
|
|
302
302
|
req.input("metadata", metadata);
|
|
303
303
|
}
|
|
304
|
-
req.input("createdAt",
|
|
305
|
-
req.input("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 ?
|
|
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",
|
|
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",
|
|
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}`,
|
|
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
|
|
1784
|
+
return sql3__default.default.NVarChar;
|
|
1785
1785
|
case "timestamp":
|
|
1786
|
-
return
|
|
1786
|
+
return sql3__default.default.DateTime2;
|
|
1787
1787
|
case "uuid":
|
|
1788
|
-
return
|
|
1788
|
+
return sql3__default.default.UniqueIdentifier;
|
|
1789
1789
|
case "jsonb":
|
|
1790
|
-
return
|
|
1790
|
+
return sql3__default.default.NVarChar;
|
|
1791
1791
|
case "integer":
|
|
1792
|
-
return
|
|
1792
|
+
return sql3__default.default.Int;
|
|
1793
1793
|
case "bigint":
|
|
1794
|
-
return
|
|
1794
|
+
return sql3__default.default.BigInt;
|
|
1795
1795
|
case "float":
|
|
1796
|
-
return
|
|
1796
|
+
return sql3__default.default.Float;
|
|
1797
1797
|
case "boolean":
|
|
1798
|
-
return
|
|
1798
|
+
return sql3__default.default.Bit;
|
|
1799
1799
|
default:
|
|
1800
|
-
return
|
|
1800
|
+
return sql3__default.default.NVarChar;
|
|
1801
1801
|
}
|
|
1802
1802
|
}
|
|
1803
1803
|
/**
|
|
@@ -2346,13 +2346,21 @@ var ScoresMSSQL = class extends storage.ScoresStorage {
|
|
|
2346
2346
|
{
|
|
2347
2347
|
id: storage.createStorageErrorId("MSSQL", "SAVE_SCORE", "VALIDATION_FAILED"),
|
|
2348
2348
|
domain: error.ErrorDomain.STORAGE,
|
|
2349
|
-
category: error.ErrorCategory.
|
|
2349
|
+
category: error.ErrorCategory.USER,
|
|
2350
|
+
details: {
|
|
2351
|
+
scorer: score.scorer?.id ?? "unknown",
|
|
2352
|
+
entityId: score.entityId ?? "unknown",
|
|
2353
|
+
entityType: score.entityType ?? "unknown",
|
|
2354
|
+
traceId: score.traceId ?? "",
|
|
2355
|
+
spanId: score.spanId ?? ""
|
|
2356
|
+
}
|
|
2350
2357
|
},
|
|
2351
2358
|
error$1
|
|
2352
2359
|
);
|
|
2353
2360
|
}
|
|
2354
2361
|
try {
|
|
2355
2362
|
const scoreId = crypto.randomUUID();
|
|
2363
|
+
const now = /* @__PURE__ */ new Date();
|
|
2356
2364
|
const {
|
|
2357
2365
|
scorer,
|
|
2358
2366
|
preprocessStepResult,
|
|
@@ -2379,12 +2387,11 @@ var ScoresMSSQL = class extends storage.ScoresStorage {
|
|
|
2379
2387
|
requestContext: requestContext || null,
|
|
2380
2388
|
entity: entity || null,
|
|
2381
2389
|
scorer: scorer || null,
|
|
2382
|
-
createdAt:
|
|
2383
|
-
updatedAt:
|
|
2390
|
+
createdAt: now.toISOString(),
|
|
2391
|
+
updatedAt: now.toISOString()
|
|
2384
2392
|
}
|
|
2385
2393
|
});
|
|
2386
|
-
|
|
2387
|
-
return { score: scoreFromDb };
|
|
2394
|
+
return { score: { ...validatedScore, id: scoreId, createdAt: now, updatedAt: now } };
|
|
2388
2395
|
} catch (error$1) {
|
|
2389
2396
|
throw new error.MastraError(
|
|
2390
2397
|
{
|
|
@@ -2690,7 +2697,7 @@ var WorkflowsMSSQL = class extends storage.WorkflowsStorage {
|
|
|
2690
2697
|
const transaction = this.pool.transaction();
|
|
2691
2698
|
try {
|
|
2692
2699
|
await transaction.begin();
|
|
2693
|
-
const selectRequest = new
|
|
2700
|
+
const selectRequest = new sql3__default.default.Request(transaction);
|
|
2694
2701
|
selectRequest.input("workflow_name", workflowName);
|
|
2695
2702
|
selectRequest.input("run_id", runId);
|
|
2696
2703
|
const existingSnapshotResult = await selectRequest.query(
|
|
@@ -2718,12 +2725,12 @@ var WorkflowsMSSQL = class extends storage.WorkflowsStorage {
|
|
|
2718
2725
|
}
|
|
2719
2726
|
snapshot.context[stepId] = result;
|
|
2720
2727
|
snapshot.requestContext = { ...snapshot.requestContext, ...requestContext };
|
|
2721
|
-
const upsertReq = new
|
|
2728
|
+
const upsertReq = new sql3__default.default.Request(transaction);
|
|
2722
2729
|
upsertReq.input("workflow_name", workflowName);
|
|
2723
2730
|
upsertReq.input("run_id", runId);
|
|
2724
2731
|
upsertReq.input("snapshot", JSON.stringify(snapshot));
|
|
2725
|
-
upsertReq.input("createdAt",
|
|
2726
|
-
upsertReq.input("updatedAt",
|
|
2732
|
+
upsertReq.input("createdAt", sql3__default.default.DateTime2, /* @__PURE__ */ new Date());
|
|
2733
|
+
upsertReq.input("updatedAt", sql3__default.default.DateTime2, /* @__PURE__ */ new Date());
|
|
2727
2734
|
await upsertReq.query(
|
|
2728
2735
|
`MERGE ${table} AS target
|
|
2729
2736
|
USING (SELECT @workflow_name AS workflow_name, @run_id AS run_id) AS src
|
|
@@ -2763,7 +2770,7 @@ var WorkflowsMSSQL = class extends storage.WorkflowsStorage {
|
|
|
2763
2770
|
const transaction = this.pool.transaction();
|
|
2764
2771
|
try {
|
|
2765
2772
|
await transaction.begin();
|
|
2766
|
-
const selectRequest = new
|
|
2773
|
+
const selectRequest = new sql3__default.default.Request(transaction);
|
|
2767
2774
|
selectRequest.input("workflow_name", workflowName);
|
|
2768
2775
|
selectRequest.input("run_id", runId);
|
|
2769
2776
|
const existingSnapshotResult = await selectRequest.query(
|
|
@@ -2791,11 +2798,11 @@ var WorkflowsMSSQL = class extends storage.WorkflowsStorage {
|
|
|
2791
2798
|
);
|
|
2792
2799
|
}
|
|
2793
2800
|
const updatedSnapshot = { ...snapshot, ...opts };
|
|
2794
|
-
const updateRequest = new
|
|
2801
|
+
const updateRequest = new sql3__default.default.Request(transaction);
|
|
2795
2802
|
updateRequest.input("snapshot", JSON.stringify(updatedSnapshot));
|
|
2796
2803
|
updateRequest.input("workflow_name", workflowName);
|
|
2797
2804
|
updateRequest.input("run_id", runId);
|
|
2798
|
-
updateRequest.input("updatedAt",
|
|
2805
|
+
updateRequest.input("updatedAt", sql3__default.default.DateTime2, /* @__PURE__ */ new Date());
|
|
2799
2806
|
await updateRequest.query(
|
|
2800
2807
|
`UPDATE ${table} SET snapshot = @snapshot, [updatedAt] = @updatedAt WHERE workflow_name = @workflow_name AND run_id = @run_id`
|
|
2801
2808
|
);
|
|
@@ -2835,8 +2842,8 @@ var WorkflowsMSSQL = class extends storage.WorkflowsStorage {
|
|
|
2835
2842
|
request.input("run_id", runId);
|
|
2836
2843
|
request.input("resourceId", resourceId);
|
|
2837
2844
|
request.input("snapshot", JSON.stringify(snapshot));
|
|
2838
|
-
request.input("createdAt",
|
|
2839
|
-
request.input("updatedAt",
|
|
2845
|
+
request.input("createdAt", sql3__default.default.DateTime2, new Date(now));
|
|
2846
|
+
request.input("updatedAt", sql3__default.default.DateTime2, new Date(now));
|
|
2840
2847
|
const mergeSql = `MERGE INTO ${table} AS target
|
|
2841
2848
|
USING (SELECT @workflow_name AS workflow_name, @run_id AS run_id) AS src
|
|
2842
2849
|
ON target.workflow_name = src.workflow_name AND target.run_id = src.run_id
|
|
@@ -2933,6 +2940,35 @@ var WorkflowsMSSQL = class extends storage.WorkflowsStorage {
|
|
|
2933
2940
|
);
|
|
2934
2941
|
}
|
|
2935
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
|
+
}
|
|
2936
2972
|
async listWorkflowRuns({
|
|
2937
2973
|
workflowName,
|
|
2938
2974
|
fromDate,
|
|
@@ -2976,7 +3012,7 @@ var WorkflowsMSSQL = class extends storage.WorkflowsStorage {
|
|
|
2976
3012
|
const request = this.pool.request();
|
|
2977
3013
|
Object.entries(paramMap).forEach(([key, value]) => {
|
|
2978
3014
|
if (value instanceof Date) {
|
|
2979
|
-
request.input(key,
|
|
3015
|
+
request.input(key, sql3__default.default.DateTime, value);
|
|
2980
3016
|
} else {
|
|
2981
3017
|
request.input(key, value);
|
|
2982
3018
|
}
|
|
@@ -3039,7 +3075,7 @@ var MSSQLStore = class extends storage.MastraStorage {
|
|
|
3039
3075
|
}
|
|
3040
3076
|
}
|
|
3041
3077
|
this.schema = config.schemaName || "dbo";
|
|
3042
|
-
this.pool = "connectionString" in config ? new
|
|
3078
|
+
this.pool = "connectionString" in config ? new sql3__default.default.ConnectionPool(config.connectionString) : new sql3__default.default.ConnectionPool({
|
|
3043
3079
|
server: config.server,
|
|
3044
3080
|
database: config.database,
|
|
3045
3081
|
user: config.user,
|
|
@@ -3230,6 +3266,9 @@ var MSSQLStore = class extends storage.MastraStorage {
|
|
|
3230
3266
|
}) {
|
|
3231
3267
|
return this.stores.workflows.getWorkflowRunById({ runId, workflowName });
|
|
3232
3268
|
}
|
|
3269
|
+
async deleteWorkflowRunById({ runId, workflowName }) {
|
|
3270
|
+
return this.stores.workflows.deleteWorkflowRunById({ runId, workflowName });
|
|
3271
|
+
}
|
|
3233
3272
|
async close() {
|
|
3234
3273
|
await this.pool.close();
|
|
3235
3274
|
}
|
|
@@ -3308,8 +3347,8 @@ var MSSQLStore = class extends storage.MastraStorage {
|
|
|
3308
3347
|
source: _source
|
|
3309
3348
|
});
|
|
3310
3349
|
}
|
|
3311
|
-
async saveScore(
|
|
3312
|
-
return this.stores.scores.saveScore(
|
|
3350
|
+
async saveScore(score) {
|
|
3351
|
+
return this.stores.scores.saveScore(score);
|
|
3313
3352
|
}
|
|
3314
3353
|
async listScoresByRunId({
|
|
3315
3354
|
runId: _runId,
|