@mastra/mssql 0.0.0-new-scorer-api-20250801075530 → 0.0.0-new-button-export-20251219133013

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.
@@ -0,0 +1,159 @@
1
+ import { MastraBase } from '@mastra/core/base';
2
+ import type { StorageColumn, TABLE_NAMES, CreateIndexOptions, IndexInfo, StorageIndexStats } from '@mastra/core/storage';
3
+ import sql from 'mssql';
4
+ export type { CreateIndexOptions, IndexInfo, StorageIndexStats };
5
+ /**
6
+ * Configuration for standalone domain usage.
7
+ * Accepts either:
8
+ * 1. An existing pool, db, and schema
9
+ * 2. Config to create a new pool internally
10
+ */
11
+ export type MssqlDomainConfig = MssqlDomainPoolConfig | MssqlDomainRestConfig;
12
+ /**
13
+ * Pass an existing pool, db, and schema
14
+ */
15
+ export interface MssqlDomainPoolConfig {
16
+ pool: sql.ConnectionPool;
17
+ db: MssqlDB;
18
+ schema?: string;
19
+ }
20
+ /**
21
+ * Pass config to create a new pool internally
22
+ */
23
+ export interface MssqlDomainRestConfig {
24
+ server: string;
25
+ port: number;
26
+ database: string;
27
+ user: string;
28
+ password: string;
29
+ schemaName?: string;
30
+ options?: sql.IOptions;
31
+ }
32
+ /**
33
+ * Resolves MssqlDomainConfig to pool, db, and schema.
34
+ * Handles creating a new pool and db if config is provided.
35
+ *
36
+ * @param config - Either an existing connected pool/db, or connection details to create a new pool
37
+ * @returns Object containing pool, db, schema, and whether the pool needs connection
38
+ *
39
+ * @remarks
40
+ * When using connection details (not an existing pool), the returned pool is NOT connected.
41
+ * The caller must call `pool.connect()` before use, typically in an `init()` method.
42
+ * The `needsConnect` flag indicates whether the pool was newly created and needs connecting.
43
+ */
44
+ export declare function resolveMssqlConfig(config: MssqlDomainConfig): {
45
+ pool: sql.ConnectionPool;
46
+ db: MssqlDB;
47
+ schema?: string;
48
+ needsConnect: boolean;
49
+ };
50
+ export declare class MssqlDB extends MastraBase {
51
+ pool: sql.ConnectionPool;
52
+ schemaName?: string;
53
+ private setupSchemaPromise;
54
+ private schemaSetupComplete;
55
+ protected getSqlType(type: StorageColumn['type'], isPrimaryKey?: boolean, useLargeStorage?: boolean): string;
56
+ constructor({ pool, schemaName }: {
57
+ pool: sql.ConnectionPool;
58
+ schemaName?: string;
59
+ });
60
+ hasColumn(table: string, column: string): Promise<boolean>;
61
+ private setupSchema;
62
+ insert({ tableName, record, transaction, }: {
63
+ tableName: TABLE_NAMES;
64
+ record: Record<string, any>;
65
+ transaction?: sql.Transaction;
66
+ }): Promise<void>;
67
+ clearTable({ tableName }: {
68
+ tableName: TABLE_NAMES;
69
+ }): Promise<void>;
70
+ protected getDefaultValue(type: StorageColumn['type']): string;
71
+ createTable({ tableName, schema, }: {
72
+ tableName: TABLE_NAMES;
73
+ schema: Record<string, StorageColumn>;
74
+ }): Promise<void>;
75
+ /**
76
+ * Alters table schema to add columns if they don't exist
77
+ * @param tableName Name of the table
78
+ * @param schema Schema of the table
79
+ * @param ifNotExists Array of column names to add if they don't exist
80
+ */
81
+ alterTable({ tableName, schema, ifNotExists, }: {
82
+ tableName: TABLE_NAMES;
83
+ schema: Record<string, StorageColumn>;
84
+ ifNotExists: string[];
85
+ }): Promise<void>;
86
+ load<R>({ tableName, keys }: {
87
+ tableName: TABLE_NAMES;
88
+ keys: Record<string, any>;
89
+ }): Promise<R | null>;
90
+ batchInsert({ tableName, records }: {
91
+ tableName: TABLE_NAMES;
92
+ records: Record<string, any>[];
93
+ }): Promise<void>;
94
+ dropTable({ tableName }: {
95
+ tableName: TABLE_NAMES;
96
+ }): Promise<void>;
97
+ /**
98
+ * Prepares a value for database operations, handling Date objects and JSON serialization
99
+ */
100
+ private prepareValue;
101
+ /**
102
+ * Maps TABLE_SCHEMAS types to mssql param types (used when value is null)
103
+ */
104
+ private getMssqlType;
105
+ /**
106
+ * Update a single record in the database
107
+ */
108
+ update({ tableName, keys, data, transaction, }: {
109
+ tableName: TABLE_NAMES;
110
+ keys: Record<string, any>;
111
+ data: Record<string, any>;
112
+ transaction?: sql.Transaction;
113
+ }): Promise<void>;
114
+ /**
115
+ * Update multiple records in a single batch transaction
116
+ */
117
+ batchUpdate({ tableName, updates, }: {
118
+ tableName: TABLE_NAMES;
119
+ updates: Array<{
120
+ keys: Record<string, any>;
121
+ data: Record<string, any>;
122
+ }>;
123
+ }): Promise<void>;
124
+ /**
125
+ * Delete multiple records by keys
126
+ */
127
+ batchDelete({ tableName, keys }: {
128
+ tableName: TABLE_NAMES;
129
+ keys: Record<string, any>[];
130
+ }): Promise<void>;
131
+ /**
132
+ * Create a new index on a table
133
+ */
134
+ createIndex(options: CreateIndexOptions): Promise<void>;
135
+ /**
136
+ * Drop an existing index
137
+ */
138
+ dropIndex(indexName: string): Promise<void>;
139
+ /**
140
+ * List indexes for a specific table or all tables
141
+ */
142
+ listIndexes(tableName?: string): Promise<IndexInfo[]>;
143
+ /**
144
+ * Get detailed statistics for a specific index
145
+ */
146
+ describeIndex(indexName: string): Promise<StorageIndexStats>;
147
+ /**
148
+ * Returns definitions for automatic performance indexes
149
+ * IMPORTANT: Uses seq_id DESC instead of createdAt DESC for MSSQL due to millisecond accuracy limitations
150
+ * NOTE: Using NVARCHAR(400) for text columns (800 bytes) leaves room for composite indexes
151
+ */
152
+ protected getAutomaticIndexDefinitions(): CreateIndexOptions[];
153
+ /**
154
+ * Creates automatic indexes for optimal query performance
155
+ * Uses getAutomaticIndexDefinitions() to determine which indexes to create
156
+ */
157
+ createAutomaticIndexes(): Promise<void>;
158
+ }
159
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/storage/db/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ import type { PaginationArgs, StorageColumn, TABLE_NAMES } from '@mastra/core/storage';
2
+ export declare function getSchemaName(schema?: string): string | undefined;
3
+ export declare function getTableName({ indexName, schemaName }: {
4
+ indexName: string;
5
+ schemaName?: string;
6
+ }): string;
7
+ /**
8
+ * Build date range filter for queries
9
+ */
10
+ export declare function buildDateRangeFilter(dateRange: PaginationArgs['dateRange'], fieldName: string): Record<string, any>;
11
+ /**
12
+ * Prepare WHERE clause for MSSQL queries with @param substitution
13
+ */
14
+ export declare function prepareWhereClause(filters: Record<string, any>, _schema?: Record<string, StorageColumn>): {
15
+ sql: string;
16
+ params: Record<string, any>;
17
+ };
18
+ /**
19
+ * Transform SQL row to record format, handling JSON columns
20
+ */
21
+ export declare function transformFromSqlRow<T>({ tableName, sqlRow, }: {
22
+ tableName: TABLE_NAMES;
23
+ sqlRow: Record<string, any>;
24
+ }): T;
25
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/storage/db/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAIvF,wBAAgB,aAAa,CAAC,MAAM,CAAC,EAAE,MAAM,sBAE5C;AAED,wBAAgB,YAAY,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,UAKjG;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,cAAc,CAAC,WAAW,CAAC,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CASnH;AAWD;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC5B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,GACtC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;CAAE,CAsE9C;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,EACrC,SAAS,EACT,MAAM,GACP,EAAE;IACD,SAAS,EAAE,WAAW,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC7B,GAAG,CAAC,CA8BJ"}
@@ -0,0 +1,67 @@
1
+ import type { MastraMessageContentV2 } from '@mastra/core/agent';
2
+ import type { MastraDBMessage, StorageThreadType } from '@mastra/core/memory';
3
+ import { MemoryStorage } from '@mastra/core/storage';
4
+ import type { StorageResourceType, StorageListMessagesInput, StorageListMessagesOutput, StorageListThreadsByResourceIdInput, StorageListThreadsByResourceIdOutput } from '@mastra/core/storage';
5
+ import type { MssqlDomainConfig } from '../../db/index.js';
6
+ export declare class MemoryMSSQL extends MemoryStorage {
7
+ private pool;
8
+ private schema?;
9
+ private db;
10
+ private needsConnect;
11
+ private _parseAndFormatMessages;
12
+ constructor(config: MssqlDomainConfig);
13
+ init(): Promise<void>;
14
+ dangerouslyClearAll(): Promise<void>;
15
+ getThreadById({ threadId }: {
16
+ threadId: string;
17
+ }): Promise<StorageThreadType | null>;
18
+ listThreadsByResourceId(args: StorageListThreadsByResourceIdInput): Promise<StorageListThreadsByResourceIdOutput>;
19
+ saveThread({ thread }: {
20
+ thread: StorageThreadType;
21
+ }): Promise<StorageThreadType>;
22
+ /**
23
+ * Updates a thread's title and metadata, merging with existing metadata. Returns the updated thread.
24
+ */
25
+ updateThread({ id, title, metadata, }: {
26
+ id: string;
27
+ title: string;
28
+ metadata: Record<string, unknown>;
29
+ }): Promise<StorageThreadType>;
30
+ deleteThread({ threadId }: {
31
+ threadId: string;
32
+ }): Promise<void>;
33
+ private _getIncludedMessages;
34
+ listMessagesById({ messageIds }: {
35
+ messageIds: string[];
36
+ }): Promise<{
37
+ messages: MastraDBMessage[];
38
+ }>;
39
+ listMessages(args: StorageListMessagesInput): Promise<StorageListMessagesOutput>;
40
+ saveMessages({ messages }: {
41
+ messages: MastraDBMessage[];
42
+ }): Promise<{
43
+ messages: MastraDBMessage[];
44
+ }>;
45
+ updateMessages({ messages, }: {
46
+ messages: (Partial<Omit<MastraDBMessage, 'createdAt'>> & {
47
+ id: string;
48
+ content?: {
49
+ metadata?: MastraMessageContentV2['metadata'];
50
+ content?: MastraMessageContentV2['content'];
51
+ };
52
+ })[];
53
+ }): Promise<MastraDBMessage[]>;
54
+ deleteMessages(messageIds: string[]): Promise<void>;
55
+ getResourceById({ resourceId }: {
56
+ resourceId: string;
57
+ }): Promise<StorageResourceType | null>;
58
+ saveResource({ resource }: {
59
+ resource: StorageResourceType;
60
+ }): Promise<StorageResourceType>;
61
+ updateResource({ resourceId, workingMemory, metadata, }: {
62
+ resourceId: string;
63
+ workingMemory?: string;
64
+ metadata?: Record<string, unknown>;
65
+ }): Promise<StorageResourceType>;
66
+ }
67
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/storage/domains/memory/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ import type { TracingStorageStrategy } from '@mastra/core/observability';
2
+ import { ObservabilityStorage } from '@mastra/core/storage';
3
+ import type { SpanRecord, TraceRecord, TracesPaginatedArg, CreateSpanRecord, PaginationInfo, UpdateSpanRecord } from '@mastra/core/storage';
4
+ import type { ConnectionPool } from 'mssql';
5
+ import type { MssqlDomainConfig } from '../../db/index.js';
6
+ export declare class ObservabilityMSSQL extends ObservabilityStorage {
7
+ pool: ConnectionPool;
8
+ private db;
9
+ private schema?;
10
+ private needsConnect;
11
+ constructor(config: MssqlDomainConfig);
12
+ init(): Promise<void>;
13
+ dangerouslyClearAll(): Promise<void>;
14
+ get tracingStrategy(): {
15
+ preferred: TracingStorageStrategy;
16
+ supported: TracingStorageStrategy[];
17
+ };
18
+ createSpan(span: CreateSpanRecord): Promise<void>;
19
+ getTrace(traceId: string): Promise<TraceRecord | null>;
20
+ updateSpan({ spanId, traceId, updates, }: {
21
+ spanId: string;
22
+ traceId: string;
23
+ updates: Partial<UpdateSpanRecord>;
24
+ }): Promise<void>;
25
+ getTracesPaginated({ filters, pagination, }: TracesPaginatedArg): Promise<{
26
+ pagination: PaginationInfo;
27
+ spans: SpanRecord[];
28
+ }>;
29
+ batchCreateSpans(args: {
30
+ records: CreateSpanRecord[];
31
+ }): Promise<void>;
32
+ batchUpdateSpans(args: {
33
+ records: {
34
+ traceId: string;
35
+ spanId: string;
36
+ updates: Partial<UpdateSpanRecord>;
37
+ }[];
38
+ }): Promise<void>;
39
+ batchDeleteTraces(args: {
40
+ traceIds: string[];
41
+ }): Promise<void>;
42
+ }
43
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/storage/domains/observability/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACzE,OAAO,EAAqC,oBAAoB,EAAe,MAAM,sBAAsB,CAAC;AAC5G,OAAO,KAAK,EACV,UAAU,EACV,WAAW,EACX,kBAAkB,EAClB,gBAAgB,EAChB,cAAc,EACd,gBAAgB,EACjB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAE5C,OAAO,KAAK,EAAW,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAG3D,qBAAa,kBAAmB,SAAQ,oBAAoB;IACnD,IAAI,EAAE,cAAc,CAAC;IAC5B,OAAO,CAAC,EAAE,CAAU;IACpB,OAAO,CAAC,MAAM,CAAC,CAAS;IACxB,OAAO,CAAC,YAAY,CAAU;gBAElB,MAAM,EAAE,iBAAiB;IAS/B,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAQrB,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IAI1C,IAAW,eAAe,IAAI;QAC5B,SAAS,EAAE,sBAAsB,CAAC;QAClC,SAAS,EAAE,sBAAsB,EAAE,CAAC;KACrC,CAKA;IAEK,UAAU,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IA+BjD,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAgDtD,UAAU,CAAC,EACf,MAAM,EACN,OAAO,EACP,OAAO,GACR,EAAE;QACD,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC;KACpC,GAAG,OAAO,CAAC,IAAI,CAAC;IAgCX,kBAAkB,CAAC,EACvB,OAAO,EACP,UAAU,GACX,EAAE,kBAAkB,GAAG,OAAO,CAAC;QAAE,UAAU,EAAE,cAAc,CAAC;QAAC,KAAK,EAAE,UAAU,EAAE,CAAA;KAAE,CAAC;IAoH9E,gBAAgB,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,gBAAgB,EAAE,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IA6BtE,gBAAgB,CAAC,IAAI,EAAE;QAC3B,OAAO,EAAE;YACP,OAAO,EAAE,MAAM,CAAC;YAChB,MAAM,EAAE,MAAM,CAAC;YACf,OAAO,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC;SACpC,EAAE,CAAC;KACL,GAAG,OAAO,CAAC,IAAI,CAAC;IAwCX,iBAAiB,CAAC,IAAI,EAAE;QAAE,QAAQ,EAAE,MAAM,EAAE,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;CA0BrE"}
@@ -0,0 +1,54 @@
1
+ import type { SaveScorePayload, ScoreRowData, ScoringSource } from '@mastra/core/evals';
2
+ import type { PaginationInfo, StoragePagination } from '@mastra/core/storage';
3
+ import { ScoresStorage } from '@mastra/core/storage';
4
+ import type { ConnectionPool } from 'mssql';
5
+ import type { MssqlDomainConfig } from '../../db/index.js';
6
+ export declare class ScoresMSSQL extends ScoresStorage {
7
+ pool: ConnectionPool;
8
+ private db;
9
+ private schema?;
10
+ private needsConnect;
11
+ constructor(config: MssqlDomainConfig);
12
+ init(): Promise<void>;
13
+ dangerouslyClearAll(): Promise<void>;
14
+ getScoreById({ id }: {
15
+ id: string;
16
+ }): Promise<ScoreRowData | null>;
17
+ saveScore(score: SaveScorePayload): Promise<{
18
+ score: ScoreRowData;
19
+ }>;
20
+ listScoresByScorerId({ scorerId, pagination, entityId, entityType, source, }: {
21
+ scorerId: string;
22
+ pagination: StoragePagination;
23
+ entityId?: string;
24
+ entityType?: string;
25
+ source?: ScoringSource;
26
+ }): Promise<{
27
+ pagination: PaginationInfo;
28
+ scores: ScoreRowData[];
29
+ }>;
30
+ listScoresByRunId({ runId, pagination, }: {
31
+ runId: string;
32
+ pagination: StoragePagination;
33
+ }): Promise<{
34
+ pagination: PaginationInfo;
35
+ scores: ScoreRowData[];
36
+ }>;
37
+ listScoresByEntityId({ entityId, entityType, pagination, }: {
38
+ pagination: StoragePagination;
39
+ entityId: string;
40
+ entityType: string;
41
+ }): Promise<{
42
+ pagination: PaginationInfo;
43
+ scores: ScoreRowData[];
44
+ }>;
45
+ listScoresBySpan({ traceId, spanId, pagination, }: {
46
+ traceId: string;
47
+ spanId: string;
48
+ pagination: StoragePagination;
49
+ }): Promise<{
50
+ pagination: PaginationInfo;
51
+ scores: ScoreRowData[];
52
+ }>;
53
+ }
54
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/storage/domains/scores/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,YAAY,EAAE,aAAa,EAA6B,MAAM,oBAAoB,CAAC;AAEnH,OAAO,KAAK,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAC9E,OAAO,EAEL,aAAa,EAMd,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAE5C,OAAO,KAAK,EAAW,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAa3D,qBAAa,WAAY,SAAQ,aAAa;IACrC,IAAI,EAAE,cAAc,CAAC;IAC5B,OAAO,CAAC,EAAE,CAAU;IACpB,OAAO,CAAC,MAAM,CAAC,CAAS;IACxB,OAAO,CAAC,YAAY,CAAU;gBAElB,MAAM,EAAE,iBAAiB;IAS/B,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAQrB,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IAIpC,YAAY,CAAC,EAAE,EAAE,EAAE,EAAE;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IA0BlE,SAAS,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC;QAAE,KAAK,EAAE,YAAY,CAAA;KAAE,CAAC;IAwEpE,oBAAoB,CAAC,EACzB,QAAQ,EACR,UAAU,EACV,QAAQ,EACR,UAAU,EACV,MAAM,GACP,EAAE;QACD,QAAQ,EAAE,MAAM,CAAC;QACjB,UAAU,EAAE,iBAAiB,CAAC;QAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,MAAM,CAAC,EAAE,aAAa,CAAC;KACxB,GAAG,OAAO,CAAC;QAAE,UAAU,EAAE,cAAc,CAAC;QAAC,MAAM,EAAE,YAAY,EAAE,CAAA;KAAE,CAAC;IAwF7D,iBAAiB,CAAC,EACtB,KAAK,EACL,UAAU,GACX,EAAE;QACD,KAAK,EAAE,MAAM,CAAC;QACd,UAAU,EAAE,iBAAiB,CAAC;KAC/B,GAAG,OAAO,CAAC;QAAE,UAAU,EAAE,cAAc,CAAC;QAAC,MAAM,EAAE,YAAY,EAAE,CAAA;KAAE,CAAC;IA4D7D,oBAAoB,CAAC,EACzB,QAAQ,EACR,UAAU,EACV,UAAU,GACX,EAAE;QACD,UAAU,EAAE,iBAAiB,CAAC;QAC9B,QAAQ,EAAE,MAAM,CAAC;QACjB,UAAU,EAAE,MAAM,CAAC;KACpB,GAAG,OAAO,CAAC;QAAE,UAAU,EAAE,cAAc,CAAC;QAAC,MAAM,EAAE,YAAY,EAAE,CAAA;KAAE,CAAC;IA6D7D,gBAAgB,CAAC,EACrB,OAAO,EACP,MAAM,EACN,UAAU,GACX,EAAE;QACD,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;QACf,UAAU,EAAE,iBAAiB,CAAC;KAC/B,GAAG,OAAO,CAAC;QAAE,UAAU,EAAE,cAAc,CAAC;QAAC,MAAM,EAAE,YAAY,EAAE,CAAA;KAAE,CAAC;CA6DpE"}
@@ -0,0 +1,25 @@
1
+ import type { PaginationArgs, StorageColumn, TABLE_NAMES } from '@mastra/core/storage';
2
+ export declare function getSchemaName(schema?: string): string | undefined;
3
+ export declare function getTableName({ indexName, schemaName }: {
4
+ indexName: string;
5
+ schemaName?: string;
6
+ }): string;
7
+ /**
8
+ * Build date range filter for queries
9
+ */
10
+ export declare function buildDateRangeFilter(dateRange: PaginationArgs['dateRange'], fieldName: string): Record<string, any>;
11
+ /**
12
+ * Prepare WHERE clause for MSSQL queries with @param substitution
13
+ */
14
+ export declare function prepareWhereClause(filters: Record<string, any>, _schema?: Record<string, StorageColumn>): {
15
+ sql: string;
16
+ params: Record<string, any>;
17
+ };
18
+ /**
19
+ * Transform SQL row to record format, handling JSON columns
20
+ */
21
+ export declare function transformFromSqlRow<T>({ tableName, sqlRow, }: {
22
+ tableName: TABLE_NAMES;
23
+ sqlRow: Record<string, any>;
24
+ }): T;
25
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/storage/domains/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAIvF,wBAAgB,aAAa,CAAC,MAAM,CAAC,EAAE,MAAM,sBAE5C;AAED,wBAAgB,YAAY,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,UAKjG;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,cAAc,CAAC,WAAW,CAAC,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CASnH;AAWD;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC5B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,GACtC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;CAAE,CAsE9C;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,EACrC,SAAS,EACT,MAAM,GACP,EAAE;IACD,SAAS,EAAE,WAAW,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC7B,GAAG,CAAC,CA8BJ"}
@@ -0,0 +1,47 @@
1
+ import { WorkflowsStorage } from '@mastra/core/storage';
2
+ import type { StorageListWorkflowRunsInput, WorkflowRun, WorkflowRuns, UpdateWorkflowStateOptions } from '@mastra/core/storage';
3
+ import type { StepResult, WorkflowRunState } from '@mastra/core/workflows';
4
+ import sql from 'mssql';
5
+ import type { MssqlDomainConfig } from '../../db/index.js';
6
+ export declare class WorkflowsMSSQL extends WorkflowsStorage {
7
+ pool: sql.ConnectionPool;
8
+ private db;
9
+ private schema?;
10
+ private needsConnect;
11
+ constructor(config: MssqlDomainConfig);
12
+ init(): Promise<void>;
13
+ dangerouslyClearAll(): Promise<void>;
14
+ private parseWorkflowRun;
15
+ updateWorkflowResults({ workflowName, runId, stepId, result, requestContext, }: {
16
+ workflowName: string;
17
+ runId: string;
18
+ stepId: string;
19
+ result: StepResult<any, any, any, any>;
20
+ requestContext: Record<string, any>;
21
+ }): Promise<Record<string, StepResult<any, any, any, any>>>;
22
+ updateWorkflowState({ workflowName, runId, opts, }: {
23
+ workflowName: string;
24
+ runId: string;
25
+ opts: UpdateWorkflowStateOptions;
26
+ }): Promise<WorkflowRunState | undefined>;
27
+ persistWorkflowSnapshot({ workflowName, runId, resourceId, snapshot, }: {
28
+ workflowName: string;
29
+ runId: string;
30
+ resourceId?: string;
31
+ snapshot: WorkflowRunState;
32
+ }): Promise<void>;
33
+ loadWorkflowSnapshot({ workflowName, runId, }: {
34
+ workflowName: string;
35
+ runId: string;
36
+ }): Promise<WorkflowRunState | null>;
37
+ getWorkflowRunById({ runId, workflowName, }: {
38
+ runId: string;
39
+ workflowName?: string;
40
+ }): Promise<WorkflowRun | null>;
41
+ deleteWorkflowRunById({ runId, workflowName }: {
42
+ runId: string;
43
+ workflowName: string;
44
+ }): Promise<void>;
45
+ listWorkflowRuns({ workflowName, fromDate, toDate, page, perPage, resourceId, status, }?: StorageListWorkflowRunsInput): Promise<WorkflowRuns>;
46
+ }
47
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/storage/domains/workflows/index.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,gBAAgB,EAIjB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EACV,4BAA4B,EAC5B,WAAW,EACX,YAAY,EACZ,0BAA0B,EAC3B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC3E,OAAO,GAAG,MAAM,OAAO,CAAC;AAExB,OAAO,KAAK,EAAW,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAG3D,qBAAa,cAAe,SAAQ,gBAAgB;IAC3C,IAAI,EAAE,GAAG,CAAC,cAAc,CAAC;IAChC,OAAO,CAAC,EAAE,CAAU;IACpB,OAAO,CAAC,MAAM,CAAC,CAAS;IACxB,OAAO,CAAC,YAAY,CAAU;gBAElB,MAAM,EAAE,iBAAiB;IAS/B,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAQrB,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IAI1C,OAAO,CAAC,gBAAgB;IAmBlB,qBAAqB,CAAC,EAC1B,YAAY,EACZ,KAAK,EACL,MAAM,EACN,MAAM,EACN,cAAc,GACf,EAAE;QACD,YAAY,EAAE,MAAM,CAAC;QACrB,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;QACvC,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;KACrC,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;IAoFrD,mBAAmB,CAAC,EACxB,YAAY,EACZ,KAAK,EACL,IAAI,GACL,EAAE;QACD,YAAY,EAAE,MAAM,CAAC;QACrB,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,0BAA0B,CAAC;KAClC,GAAG,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC;IA+EnC,uBAAuB,CAAC,EAC5B,YAAY,EACZ,KAAK,EACL,UAAU,EACV,QAAQ,GACT,EAAE;QACD,YAAY,EAAE,MAAM,CAAC;QACrB,KAAK,EAAE,MAAM,CAAC;QACd,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,QAAQ,EAAE,gBAAgB,CAAC;KAC5B,GAAG,OAAO,CAAC,IAAI,CAAC;IAqCX,oBAAoB,CAAC,EACzB,YAAY,EACZ,KAAK,GACN,EAAE;QACD,YAAY,EAAE,MAAM,CAAC;QACrB,KAAK,EAAE,MAAM,CAAC;KACf,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;IA6B9B,kBAAkB,CAAC,EACvB,KAAK,EACL,YAAY,GACb,EAAE;QACD,KAAK,EAAE,MAAM,CAAC;QACd,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IA2CzB,qBAAqB,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IA+BtG,gBAAgB,CAAC,EACrB,YAAY,EACZ,QAAQ,EACR,MAAM,EACN,IAAI,EACJ,OAAO,EACP,UAAU,EACV,MAAM,GACP,GAAE,4BAAiC,GAAG,OAAO,CAAC,YAAY,CAAC;CA+E7D"}