@mastra/clickhouse 1.12.0 → 1.13.0-alpha.0
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 +27 -6
- package/dist/docs/SKILL.md +1 -1
- package/dist/docs/assets/SOURCE_MAP.json +1 -1
- package/dist/docs/references/reference-storage-clickhouse.md +1 -1
- package/dist/index.cjs +21 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +22 -2
- package/dist/index.js.map +1 -1
- package/dist/storage/domains/memory/index.d.ts.map +1 -1
- package/package.json +9 -8
package/dist/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { createClient } from '@clickhouse/client';
|
|
2
2
|
import { MastraError, ErrorCategory, ErrorDomain } from '@mastra/core/error';
|
|
3
|
-
import { BRANCH_SPAN_TYPES, TABLE_THREAD_STATE, TABLE_HARNESS_SESSIONS, TABLE_NOTIFICATIONS, TABLE_SCHEDULE_TRIGGERS, TABLE_SCHEDULES, TABLE_TOOL_PROVIDER_CONNECTIONS, TABLE_FAVORITES, TABLE_SKILL_BLOBS, TABLE_SKILL_VERSIONS, TABLE_SKILLS, TABLE_WORKSPACE_VERSIONS, TABLE_WORKSPACES, TABLE_MCP_SERVER_VERSIONS, TABLE_MCP_SERVERS, TABLE_MCP_CLIENT_VERSIONS, TABLE_MCP_CLIENTS, TABLE_SCORER_DEFINITION_VERSIONS, TABLE_SCORER_DEFINITIONS, TABLE_PROMPT_BLOCK_VERSIONS, TABLE_PROMPT_BLOCKS, TABLE_EXPERIMENT_RESULTS, TABLE_EXPERIMENTS, TABLE_DATASET_VERSIONS, TABLE_DATASET_ITEMS, TABLE_DATASETS, TABLE_AGENT_VERSIONS, TABLE_SPANS, TABLE_RESOURCES, TABLE_SCORERS, TABLE_THREADS, TABLE_TRACES, TABLE_WORKFLOW_SNAPSHOT, TABLE_MESSAGES, BackgroundTasksStorage, TABLE_SCHEMAS, TABLE_BACKGROUND_TASKS, MemoryStorage, createStorageErrorId, normalizePerPage, calculatePagination, ObservabilityStorage, SPAN_SCHEMA, listTracesArgsSchema, toTraceSpans, ScoresStorage, transformScoreRow, SCORERS_SCHEMA, WorkflowsStorage, MastraCompositeStore, getSqlType, getDefaultValue, safelyParseJSON, listBranchesArgsSchema, listLogsArgsSchema, listMetricsArgsSchema, listScoresArgsSchema, listFeedbackArgsSchema, EntityType, TraceStatus, METRIC_DISTINCT_COLUMNS } from '@mastra/core/storage';
|
|
3
|
+
import { BRANCH_SPAN_TYPES, TABLE_THREAD_STATE, TABLE_HARNESS_SESSIONS, TABLE_NOTIFICATIONS, TABLE_SCHEDULE_TRIGGERS, TABLE_SCHEDULES, TABLE_TOOL_PROVIDER_CONNECTIONS, TABLE_FAVORITES, TABLE_SKILL_BLOBS, TABLE_SKILL_VERSIONS, TABLE_SKILLS, TABLE_WORKSPACE_VERSIONS, TABLE_WORKSPACES, TABLE_MCP_SERVER_VERSIONS, TABLE_MCP_SERVERS, TABLE_MCP_CLIENT_VERSIONS, TABLE_MCP_CLIENTS, TABLE_SCORER_DEFINITION_VERSIONS, TABLE_SCORER_DEFINITIONS, TABLE_PROMPT_BLOCK_VERSIONS, TABLE_PROMPT_BLOCKS, TABLE_EXPERIMENT_RESULTS, TABLE_EXPERIMENTS, TABLE_DATASET_VERSIONS, TABLE_DATASET_ITEMS, TABLE_DATASETS, TABLE_AGENT_VERSIONS, TABLE_SPANS, TABLE_RESOURCES, TABLE_SCORERS, TABLE_THREADS, TABLE_TRACES, TABLE_WORKFLOW_SNAPSHOT, TABLE_MESSAGES, BackgroundTasksStorage, TABLE_SCHEMAS, TABLE_BACKGROUND_TASKS, MemoryStorage, createStorageErrorId, validateStorageMetadataFilter, normalizePerPage, calculatePagination, ObservabilityStorage, SPAN_SCHEMA, listTracesArgsSchema, toTraceSpans, ScoresStorage, transformScoreRow, SCORERS_SCHEMA, WorkflowsStorage, MastraCompositeStore, getSqlType, getDefaultValue, safelyParseJSON, listBranchesArgsSchema, listLogsArgsSchema, listMetricsArgsSchema, listScoresArgsSchema, listFeedbackArgsSchema, EntityType, TraceStatus, METRIC_DISTINCT_COLUMNS } from '@mastra/core/storage';
|
|
4
4
|
import { MastraBase } from '@mastra/core/base';
|
|
5
5
|
import { MessageList } from '@mastra/core/agent';
|
|
6
6
|
import { parseFieldKey } from '@mastra/core/utils';
|
|
@@ -1090,6 +1090,23 @@ function parseMetadata(metadata) {
|
|
|
1090
1090
|
return {};
|
|
1091
1091
|
}
|
|
1092
1092
|
}
|
|
1093
|
+
function appendClickhouseMessageMetadataFilter(query, params, metadataFilter) {
|
|
1094
|
+
if (!metadataFilter) return query;
|
|
1095
|
+
let nextQuery = query;
|
|
1096
|
+
Object.entries(metadataFilter).forEach(([key, value], index) => {
|
|
1097
|
+
const keyParam = `metadataKey${index}`;
|
|
1098
|
+
params[keyParam] = key;
|
|
1099
|
+
nextQuery += ` AND isValidJSON(content) AND JSONHas(content, 'metadata') AND JSONHas(JSONExtractRaw(content, 'metadata'), {${keyParam}:String})`;
|
|
1100
|
+
if (value === null) {
|
|
1101
|
+
nextQuery += ` AND JSONExtractRaw(content, 'metadata', {${keyParam}:String}) = 'null'`;
|
|
1102
|
+
return;
|
|
1103
|
+
}
|
|
1104
|
+
const valueParam = `metadataValue${index}`;
|
|
1105
|
+
params[valueParam] = JSON.stringify(value);
|
|
1106
|
+
nextQuery += ` AND JSONExtractRaw(content, 'metadata', {${keyParam}:String}) = {${valueParam}:String}`;
|
|
1107
|
+
});
|
|
1108
|
+
return nextQuery;
|
|
1109
|
+
}
|
|
1093
1110
|
var MemoryStorageClickhouse = class extends MemoryStorage {
|
|
1094
1111
|
client;
|
|
1095
1112
|
#db;
|
|
@@ -1201,6 +1218,7 @@ var MemoryStorageClickhouse = class extends MemoryStorage {
|
|
|
1201
1218
|
}
|
|
1202
1219
|
async listMessages(args) {
|
|
1203
1220
|
const { threadId, resourceId, include, filter, perPage: perPageInput, page = 0, orderBy } = args;
|
|
1221
|
+
const metadataFilter = validateStorageMetadataFilter(filter?.metadata);
|
|
1204
1222
|
const rawThreadIds = Array.isArray(threadId) ? threadId : [threadId];
|
|
1205
1223
|
const threadIds = rawThreadIds.filter((id) => id !== void 0 && id !== null).map((id) => (typeof id === "string" ? id : String(id)).trim()).filter((id) => id.length > 0);
|
|
1206
1224
|
if (page < 0) {
|
|
@@ -1261,6 +1279,7 @@ var MemoryStorageClickhouse = class extends MemoryStorage {
|
|
|
1261
1279
|
dataQuery += ` AND createdAt ${endOp} parseDateTime64BestEffort({toDate:String}, 3)`;
|
|
1262
1280
|
dataParams.toDate = endDate;
|
|
1263
1281
|
}
|
|
1282
|
+
dataQuery = appendClickhouseMessageMetadataFilter(dataQuery, dataParams, metadataFilter);
|
|
1264
1283
|
const { field, direction } = this.parseOrderBy(orderBy, "ASC");
|
|
1265
1284
|
dataQuery += ` ORDER BY "${field}" ${direction}`;
|
|
1266
1285
|
if (perPageForQuery === 0 && (!include || include.length === 0)) {
|
|
@@ -1316,6 +1335,7 @@ var MemoryStorageClickhouse = class extends MemoryStorage {
|
|
|
1316
1335
|
countQuery += ` AND createdAt ${endOp} parseDateTime64BestEffort({toDate:String}, 3)`;
|
|
1317
1336
|
countParams.toDate = endDate;
|
|
1318
1337
|
}
|
|
1338
|
+
countQuery = appendClickhouseMessageMetadataFilter(countQuery, countParams, metadataFilter);
|
|
1319
1339
|
const countResult = await this.client.query({
|
|
1320
1340
|
query: countQuery,
|
|
1321
1341
|
query_params: countParams,
|
|
@@ -1354,7 +1374,7 @@ var MemoryStorageClickhouse = class extends MemoryStorage {
|
|
|
1354
1374
|
finalMessages.filter((m) => m.threadId && threadIdSet.has(m.threadId)).map((m) => m.id)
|
|
1355
1375
|
);
|
|
1356
1376
|
const allThreadMessagesReturned = returnedThreadMessageIds.size >= total;
|
|
1357
|
-
const hasMore = perPageForResponse === false ? false : allThreadMessagesReturned ? false : offset + paginatedCount < total;
|
|
1377
|
+
const hasMore = metadataFilter && perPageForResponse !== false ? offset + paginatedCount < total : perPageForResponse === false ? false : allThreadMessagesReturned ? false : offset + paginatedCount < total;
|
|
1358
1378
|
return {
|
|
1359
1379
|
messages: finalMessages,
|
|
1360
1380
|
total,
|