@mastra/lance 0.0.0-http-transporter-20250702160118 → 0.0.0-memory-system-message-error-20250813233316

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 (46) hide show
  1. package/CHANGELOG.md +177 -3
  2. package/LICENSE.md +11 -42
  3. package/dist/index.cjs +1649 -643
  4. package/dist/index.cjs.map +1 -0
  5. package/dist/index.d.ts +3 -2
  6. package/dist/index.d.ts.map +1 -0
  7. package/dist/index.js +1584 -578
  8. package/dist/index.js.map +1 -0
  9. package/dist/storage/domains/legacy-evals/index.d.ts +25 -0
  10. package/dist/storage/domains/legacy-evals/index.d.ts.map +1 -0
  11. package/dist/storage/domains/memory/index.d.ts +94 -0
  12. package/dist/storage/domains/memory/index.d.ts.map +1 -0
  13. package/dist/storage/domains/operations/index.d.ts +40 -0
  14. package/dist/storage/domains/operations/index.d.ts.map +1 -0
  15. package/dist/storage/domains/scores/index.d.ts +42 -0
  16. package/dist/storage/domains/scores/index.d.ts.map +1 -0
  17. package/dist/storage/domains/traces/index.d.ts +34 -0
  18. package/dist/storage/domains/traces/index.d.ts.map +1 -0
  19. package/dist/storage/domains/utils.d.ts +10 -0
  20. package/dist/storage/domains/utils.d.ts.map +1 -0
  21. package/dist/storage/domains/workflows/index.d.ts +38 -0
  22. package/dist/storage/domains/workflows/index.d.ts.map +1 -0
  23. package/dist/storage/index.d.ts +236 -0
  24. package/dist/storage/index.d.ts.map +1 -0
  25. package/dist/vector/filter.d.ts +41 -0
  26. package/dist/vector/filter.d.ts.map +1 -0
  27. package/dist/vector/index.d.ts +85 -0
  28. package/dist/vector/index.d.ts.map +1 -0
  29. package/dist/vector/types.d.ts +15 -0
  30. package/dist/vector/types.d.ts.map +1 -0
  31. package/package.json +11 -10
  32. package/src/storage/domains/legacy-evals/index.ts +156 -0
  33. package/src/storage/domains/memory/index.ts +947 -0
  34. package/src/storage/domains/operations/index.ts +489 -0
  35. package/src/storage/domains/scores/index.ts +243 -0
  36. package/src/storage/domains/traces/index.ts +212 -0
  37. package/src/storage/domains/utils.ts +158 -0
  38. package/src/storage/domains/workflows/index.ts +207 -0
  39. package/src/storage/index.test.ts +6 -1332
  40. package/src/storage/index.ts +163 -1162
  41. package/tsconfig.build.json +9 -0
  42. package/tsconfig.json +1 -1
  43. package/tsup.config.ts +17 -0
  44. package/dist/_tsup-dts-rollup.d.cts +0 -409
  45. package/dist/_tsup-dts-rollup.d.ts +0 -409
  46. package/dist/index.d.cts +0 -2
@@ -0,0 +1,207 @@
1
+ import type { Connection } from '@lancedb/lancedb';
2
+ import type { WorkflowRun, WorkflowRunState, WorkflowRuns } from '@mastra/core';
3
+ import { ErrorCategory, ErrorDomain, MastraError } from '@mastra/core/error';
4
+ import { ensureDate, TABLE_WORKFLOW_SNAPSHOT, WorkflowsStorage } from '@mastra/core/storage';
5
+
6
+ function parseWorkflowRun(row: any): WorkflowRun {
7
+ let parsedSnapshot: WorkflowRunState | string = row.snapshot;
8
+ if (typeof parsedSnapshot === 'string') {
9
+ try {
10
+ parsedSnapshot = JSON.parse(row.snapshot as string) as WorkflowRunState;
11
+ } catch (e) {
12
+ // If parsing fails, return the raw snapshot string
13
+ console.warn(`Failed to parse snapshot for workflow ${row.workflow_name}: ${e}`);
14
+ }
15
+ }
16
+
17
+ return {
18
+ workflowName: row.workflow_name,
19
+ runId: row.run_id,
20
+ snapshot: parsedSnapshot,
21
+ createdAt: ensureDate(row.createdAt)!,
22
+ updatedAt: ensureDate(row.updatedAt)!,
23
+ resourceId: row.resourceId,
24
+ };
25
+ }
26
+
27
+ export class StoreWorkflowsLance extends WorkflowsStorage {
28
+ client: Connection;
29
+ constructor({ client }: { client: Connection }) {
30
+ super();
31
+ this.client = client;
32
+ }
33
+
34
+ async persistWorkflowSnapshot({
35
+ workflowName,
36
+ runId,
37
+ snapshot,
38
+ }: {
39
+ workflowName: string;
40
+ runId: string;
41
+ snapshot: WorkflowRunState;
42
+ }): Promise<void> {
43
+ try {
44
+ const table = await this.client.openTable(TABLE_WORKFLOW_SNAPSHOT);
45
+
46
+ // Try to find the existing record
47
+ const query = table.query().where(`workflow_name = '${workflowName}' AND run_id = '${runId}'`);
48
+ const records = await query.toArray();
49
+ let createdAt: number;
50
+ const now = Date.now();
51
+
52
+ if (records.length > 0) {
53
+ createdAt = records[0].createdAt ?? now;
54
+ } else {
55
+ createdAt = now;
56
+ }
57
+
58
+ const record = {
59
+ workflow_name: workflowName,
60
+ run_id: runId,
61
+ snapshot: JSON.stringify(snapshot),
62
+ createdAt,
63
+ updatedAt: now,
64
+ };
65
+
66
+ await table
67
+ .mergeInsert(['workflow_name', 'run_id'])
68
+ .whenMatchedUpdateAll()
69
+ .whenNotMatchedInsertAll()
70
+ .execute([record]);
71
+ } catch (error: any) {
72
+ throw new MastraError(
73
+ {
74
+ id: 'LANCE_STORE_PERSIST_WORKFLOW_SNAPSHOT_FAILED',
75
+ domain: ErrorDomain.STORAGE,
76
+ category: ErrorCategory.THIRD_PARTY,
77
+ details: { workflowName, runId },
78
+ },
79
+ error,
80
+ );
81
+ }
82
+ }
83
+ async loadWorkflowSnapshot({
84
+ workflowName,
85
+ runId,
86
+ }: {
87
+ workflowName: string;
88
+ runId: string;
89
+ }): Promise<WorkflowRunState | null> {
90
+ try {
91
+ const table = await this.client.openTable(TABLE_WORKFLOW_SNAPSHOT);
92
+ const query = table.query().where(`workflow_name = '${workflowName}' AND run_id = '${runId}'`);
93
+ const records = await query.toArray();
94
+ return records.length > 0 ? JSON.parse(records[0].snapshot) : null;
95
+ } catch (error: any) {
96
+ throw new MastraError(
97
+ {
98
+ id: 'LANCE_STORE_LOAD_WORKFLOW_SNAPSHOT_FAILED',
99
+ domain: ErrorDomain.STORAGE,
100
+ category: ErrorCategory.THIRD_PARTY,
101
+ details: { workflowName, runId },
102
+ },
103
+ error,
104
+ );
105
+ }
106
+ }
107
+
108
+ async getWorkflowRunById(args: { runId: string; workflowName?: string }): Promise<{
109
+ workflowName: string;
110
+ runId: string;
111
+ snapshot: any;
112
+ createdAt: Date;
113
+ updatedAt: Date;
114
+ } | null> {
115
+ try {
116
+ const table = await this.client.openTable(TABLE_WORKFLOW_SNAPSHOT);
117
+ let whereClause = `run_id = '${args.runId}'`;
118
+ if (args.workflowName) {
119
+ whereClause += ` AND workflow_name = '${args.workflowName}'`;
120
+ }
121
+ const query = table.query().where(whereClause);
122
+ const records = await query.toArray();
123
+ if (records.length === 0) return null;
124
+ const record = records[0];
125
+ return parseWorkflowRun(record);
126
+ } catch (error: any) {
127
+ throw new MastraError(
128
+ {
129
+ id: 'LANCE_STORE_GET_WORKFLOW_RUN_BY_ID_FAILED',
130
+ domain: ErrorDomain.STORAGE,
131
+ category: ErrorCategory.THIRD_PARTY,
132
+ details: { runId: args.runId, workflowName: args.workflowName ?? '' },
133
+ },
134
+ error,
135
+ );
136
+ }
137
+ }
138
+
139
+ async getWorkflowRuns(args?: {
140
+ namespace?: string;
141
+ resourceId?: string;
142
+ workflowName?: string;
143
+ fromDate?: Date;
144
+ toDate?: Date;
145
+ limit?: number;
146
+ offset?: number;
147
+ }): Promise<WorkflowRuns> {
148
+ try {
149
+ const table = await this.client.openTable(TABLE_WORKFLOW_SNAPSHOT);
150
+
151
+ let query = table.query();
152
+
153
+ const conditions: string[] = [];
154
+
155
+ if (args?.workflowName) {
156
+ conditions.push(`workflow_name = '${args.workflowName.replace(/'/g, "''")}'`);
157
+ }
158
+
159
+ if (args?.resourceId) {
160
+ conditions.push(`\`resourceId\` = '${args.resourceId}'`);
161
+ }
162
+
163
+ if (args?.fromDate instanceof Date) {
164
+ conditions.push(`\`createdAt\` >= ${args.fromDate.getTime()}`);
165
+ }
166
+
167
+ if (args?.toDate instanceof Date) {
168
+ conditions.push(`\`createdAt\` <= ${args.toDate.getTime()}`);
169
+ }
170
+
171
+ let total = 0;
172
+
173
+ // Apply all conditions
174
+ if (conditions.length > 0) {
175
+ query = query.where(conditions.join(' AND '));
176
+ total = await table.countRows(conditions.join(' AND '));
177
+ } else {
178
+ total = await table.countRows();
179
+ }
180
+
181
+ if (args?.limit) {
182
+ query.limit(args.limit);
183
+ }
184
+
185
+ if (args?.offset) {
186
+ query.offset(args.offset);
187
+ }
188
+
189
+ const records = await query.toArray();
190
+
191
+ return {
192
+ runs: records.map(record => parseWorkflowRun(record)),
193
+ total: total || records.length,
194
+ };
195
+ } catch (error: any) {
196
+ throw new MastraError(
197
+ {
198
+ id: 'LANCE_STORE_GET_WORKFLOW_RUNS_FAILED',
199
+ domain: ErrorDomain.STORAGE,
200
+ category: ErrorCategory.THIRD_PARTY,
201
+ details: { namespace: args?.namespace ?? '', workflowName: args?.workflowName ?? '' },
202
+ },
203
+ error,
204
+ );
205
+ }
206
+ }
207
+ }