@mastra/libsql 1.14.0 → 1.14.1-alpha.1
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 +82 -0
- package/dist/docs/SKILL.md +1 -1
- package/dist/docs/assets/SOURCE_MAP.json +1 -1
- package/dist/docs/references/docs-agent-builder-overview.md +2 -0
- package/dist/index.cjs +159 -17
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +160 -18
- package/dist/index.js.map +1 -1
- package/dist/storage/domains/datasets/index.d.ts.map +1 -1
- package/dist/storage/domains/experiments/index.d.ts.map +1 -1
- package/dist/storage/domains/memory/index.d.ts.map +1 -1
- package/package.json +3 -3
package/dist/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { createClient } from '@libsql/client';
|
|
2
2
|
import { MastraError, ErrorCategory, ErrorDomain } from '@mastra/core/error';
|
|
3
|
-
import { createVectorErrorId, AgentsStorage, AGENTS_SCHEMA, TABLE_AGENTS, AGENT_VERSIONS_SCHEMA, TABLE_AGENT_VERSIONS, createStorageErrorId, normalizePerPage, calculatePagination, BackgroundTasksStorage, TABLE_SCHEMAS, TABLE_BACKGROUND_TASKS, BlobStore, TABLE_SKILL_BLOBS, SKILL_BLOBS_SCHEMA, ChannelsStorage, TABLE_CHANNEL_INSTALLATIONS, TABLE_CHANNEL_CONFIG, DatasetsStorage, DATASETS_SCHEMA, TABLE_DATASETS, DATASET_ITEMS_SCHEMA, TABLE_DATASET_ITEMS, DATASET_VERSIONS_SCHEMA, TABLE_DATASET_VERSIONS, ensureDate, safelyParseJSON, TABLE_EXPERIMENT_RESULTS, TABLE_EXPERIMENTS, ExperimentsStorage, EXPERIMENTS_SCHEMA, EXPERIMENT_RESULTS_SCHEMA, FavoritesStorage, FAVORITES_SCHEMA, TABLE_FAVORITES, TABLE_SKILLS, HarnessStorage, TABLE_HARNESS_SESSIONS, MCPClientsStorage, MCP_CLIENTS_SCHEMA, TABLE_MCP_CLIENTS, MCP_CLIENT_VERSIONS_SCHEMA, TABLE_MCP_CLIENT_VERSIONS, MCPServersStorage, MCP_SERVERS_SCHEMA, TABLE_MCP_SERVERS, MCP_SERVER_VERSIONS_SCHEMA, TABLE_MCP_SERVER_VERSIONS, MemoryStorage, TABLE_THREADS, TABLE_MESSAGES, TABLE_RESOURCES, NotificationsStorage, TABLE_NOTIFICATIONS, ObservabilityStorage, SPAN_SCHEMA, TABLE_SPANS, listTracesArgsSchema, toTraceSpans, PromptBlocksStorage, PROMPT_BLOCKS_SCHEMA, TABLE_PROMPT_BLOCKS, PROMPT_BLOCK_VERSIONS_SCHEMA, TABLE_PROMPT_BLOCK_VERSIONS, SchedulesStorage, TABLE_SCHEDULES, TABLE_SCHEDULE_TRIGGERS, ScorerDefinitionsStorage, SCORER_DEFINITIONS_SCHEMA, TABLE_SCORER_DEFINITIONS, SCORER_DEFINITION_VERSIONS_SCHEMA, TABLE_SCORER_DEFINITION_VERSIONS, ScoresStorage, SCORERS_SCHEMA, TABLE_SCORERS, transformScoreRow, SkillsStorage, SKILLS_SCHEMA, SKILL_VERSIONS_SCHEMA, TABLE_SKILL_VERSIONS, ThreadStateStorage, THREAD_STATE_SCHEMA, TABLE_THREAD_STATE, ToolProviderConnectionsStorage, TOOL_PROVIDER_CONNECTIONS_SCHEMA, TABLE_TOOL_PROVIDER_CONNECTIONS, WorkflowsStorage, TABLE_WORKFLOW_SNAPSHOT, WorkspacesStorage, WORKSPACES_SCHEMA, TABLE_WORKSPACES, WORKSPACE_VERSIONS_SCHEMA, TABLE_WORKSPACE_VERSIONS, MastraCompositeStore, getSqlType, TraceStatus, mergeWorkflowStepResult } from '@mastra/core/storage';
|
|
3
|
+
import { createVectorErrorId, AgentsStorage, AGENTS_SCHEMA, TABLE_AGENTS, AGENT_VERSIONS_SCHEMA, TABLE_AGENT_VERSIONS, createStorageErrorId, normalizePerPage, calculatePagination, BackgroundTasksStorage, TABLE_SCHEMAS, TABLE_BACKGROUND_TASKS, BlobStore, TABLE_SKILL_BLOBS, SKILL_BLOBS_SCHEMA, ChannelsStorage, TABLE_CHANNEL_INSTALLATIONS, TABLE_CHANNEL_CONFIG, DatasetsStorage, DATASETS_SCHEMA, TABLE_DATASETS, DATASET_ITEMS_SCHEMA, TABLE_DATASET_ITEMS, DATASET_VERSIONS_SCHEMA, TABLE_DATASET_VERSIONS, ensureDate, safelyParseJSON, TABLE_EXPERIMENT_RESULTS, TABLE_EXPERIMENTS, ExperimentsStorage, EXPERIMENTS_SCHEMA, EXPERIMENT_RESULTS_SCHEMA, FavoritesStorage, FAVORITES_SCHEMA, TABLE_FAVORITES, TABLE_SKILLS, HarnessStorage, TABLE_HARNESS_SESSIONS, MCPClientsStorage, MCP_CLIENTS_SCHEMA, TABLE_MCP_CLIENTS, MCP_CLIENT_VERSIONS_SCHEMA, TABLE_MCP_CLIENT_VERSIONS, MCPServersStorage, MCP_SERVERS_SCHEMA, TABLE_MCP_SERVERS, MCP_SERVER_VERSIONS_SCHEMA, TABLE_MCP_SERVER_VERSIONS, MemoryStorage, TABLE_THREADS, TABLE_MESSAGES, TABLE_RESOURCES, OBSERVATIONAL_MEMORY_TABLE_SCHEMA, NotificationsStorage, TABLE_NOTIFICATIONS, ObservabilityStorage, SPAN_SCHEMA, TABLE_SPANS, listTracesArgsSchema, toTraceSpans, PromptBlocksStorage, PROMPT_BLOCKS_SCHEMA, TABLE_PROMPT_BLOCKS, PROMPT_BLOCK_VERSIONS_SCHEMA, TABLE_PROMPT_BLOCK_VERSIONS, SchedulesStorage, TABLE_SCHEDULES, TABLE_SCHEDULE_TRIGGERS, ScorerDefinitionsStorage, SCORER_DEFINITIONS_SCHEMA, TABLE_SCORER_DEFINITIONS, SCORER_DEFINITION_VERSIONS_SCHEMA, TABLE_SCORER_DEFINITION_VERSIONS, ScoresStorage, SCORERS_SCHEMA, TABLE_SCORERS, transformScoreRow, SkillsStorage, SKILLS_SCHEMA, SKILL_VERSIONS_SCHEMA, TABLE_SKILL_VERSIONS, ThreadStateStorage, THREAD_STATE_SCHEMA, TABLE_THREAD_STATE, ToolProviderConnectionsStorage, TOOL_PROVIDER_CONNECTIONS_SCHEMA, TABLE_TOOL_PROVIDER_CONNECTIONS, WorkflowsStorage, TABLE_WORKFLOW_SNAPSHOT, WorkspacesStorage, WORKSPACES_SCHEMA, TABLE_WORKSPACES, WORKSPACE_VERSIONS_SCHEMA, TABLE_WORKSPACE_VERSIONS, MastraCompositeStore, getSqlType, TraceStatus, mergeWorkflowStepResult } from '@mastra/core/storage';
|
|
4
4
|
import { parseSqlIdentifier, parseFieldKey } from '@mastra/core/utils';
|
|
5
5
|
import { MastraVector, validateTopK, validateUpsertInput } from '@mastra/core/vector';
|
|
6
6
|
import { BaseFilterTranslator } from '@mastra/core/vector/filter';
|
|
@@ -3620,9 +3620,16 @@ var DatasetsLibSQL = class extends DatasetsStorage {
|
|
|
3620
3620
|
await this.#addColumnIfNotExists(TABLE_DATASETS, "targetType", "TEXT");
|
|
3621
3621
|
await this.#addColumnIfNotExists(TABLE_DATASETS, "targetIds", "TEXT");
|
|
3622
3622
|
await this.#addColumnIfNotExists(TABLE_DATASETS, "scorerIds", "TEXT");
|
|
3623
|
+
await this.#addColumnIfNotExists(TABLE_DATASETS, "organizationId", "TEXT");
|
|
3624
|
+
await this.#addColumnIfNotExists(TABLE_DATASETS, "projectId", "TEXT");
|
|
3625
|
+
await this.#addColumnIfNotExists(TABLE_DATASETS, "candidateKey", "TEXT");
|
|
3626
|
+
await this.#addColumnIfNotExists(TABLE_DATASETS, "candidateId", "TEXT");
|
|
3623
3627
|
await this.#addColumnIfNotExists(TABLE_DATASET_ITEMS, "requestContext", "TEXT");
|
|
3624
3628
|
await this.#addColumnIfNotExists(TABLE_DATASET_ITEMS, "source", "TEXT");
|
|
3625
3629
|
await this.#addColumnIfNotExists(TABLE_DATASET_ITEMS, "expectedTrajectory", "TEXT");
|
|
3630
|
+
await this.#addColumnIfNotExists(TABLE_DATASET_ITEMS, "organizationId", "TEXT");
|
|
3631
|
+
await this.#addColumnIfNotExists(TABLE_DATASET_ITEMS, "projectId", "TEXT");
|
|
3632
|
+
await this.#addColumnIfNotExists(TABLE_DATASET_ITEMS, "toolMocks", "TEXT");
|
|
3626
3633
|
await this.#client.batch(
|
|
3627
3634
|
[
|
|
3628
3635
|
{
|
|
@@ -3644,6 +3651,18 @@ var DatasetsLibSQL = class extends DatasetsStorage {
|
|
|
3644
3651
|
{
|
|
3645
3652
|
sql: `CREATE UNIQUE INDEX IF NOT EXISTS idx_dataset_versions_dataset_version_unique ON "${TABLE_DATASET_VERSIONS}" ("datasetId", "version")`,
|
|
3646
3653
|
args: []
|
|
3654
|
+
},
|
|
3655
|
+
{
|
|
3656
|
+
sql: `CREATE INDEX IF NOT EXISTS idx_datasets_tenancy_createdat ON "${TABLE_DATASETS}" ("organizationId", "projectId", "createdAt", "id")`,
|
|
3657
|
+
args: []
|
|
3658
|
+
},
|
|
3659
|
+
{
|
|
3660
|
+
sql: `CREATE INDEX IF NOT EXISTS idx_datasets_tenancy_candidate ON "${TABLE_DATASETS}" ("organizationId", "projectId", "candidateKey", "candidateId")`,
|
|
3661
|
+
args: []
|
|
3662
|
+
},
|
|
3663
|
+
{
|
|
3664
|
+
sql: `CREATE INDEX IF NOT EXISTS idx_dataset_items_tenancy_list ON "${TABLE_DATASET_ITEMS}" ("organizationId", "projectId", "datasetId", "validTo", "isDeleted")`,
|
|
3665
|
+
args: []
|
|
3647
3666
|
}
|
|
3648
3667
|
],
|
|
3649
3668
|
"write"
|
|
@@ -3675,6 +3694,10 @@ var DatasetsLibSQL = class extends DatasetsStorage {
|
|
|
3675
3694
|
targetIds: row.targetIds ? safelyParseJSON(row.targetIds) : void 0,
|
|
3676
3695
|
scorerIds: row.scorerIds ? safelyParseJSON(row.scorerIds) : void 0,
|
|
3677
3696
|
version: row.version,
|
|
3697
|
+
organizationId: row.organizationId ?? null,
|
|
3698
|
+
projectId: row.projectId ?? null,
|
|
3699
|
+
candidateKey: row.candidateKey ?? null,
|
|
3700
|
+
candidateId: row.candidateId ?? null,
|
|
3678
3701
|
createdAt: ensureDate(row.createdAt),
|
|
3679
3702
|
updatedAt: ensureDate(row.updatedAt)
|
|
3680
3703
|
};
|
|
@@ -3684,9 +3707,12 @@ var DatasetsLibSQL = class extends DatasetsStorage {
|
|
|
3684
3707
|
id: row.id,
|
|
3685
3708
|
datasetId: row.datasetId,
|
|
3686
3709
|
datasetVersion: row.datasetVersion,
|
|
3710
|
+
organizationId: row.organizationId ?? null,
|
|
3711
|
+
projectId: row.projectId ?? null,
|
|
3687
3712
|
input: safelyParseJSON(row.input),
|
|
3688
3713
|
groundTruth: row.groundTruth ? safelyParseJSON(row.groundTruth) : void 0,
|
|
3689
3714
|
expectedTrajectory: row.expectedTrajectory ? safelyParseJSON(row.expectedTrajectory) : void 0,
|
|
3715
|
+
toolMocks: row.toolMocks ? safelyParseJSON(row.toolMocks) : void 0,
|
|
3690
3716
|
requestContext: row.requestContext ? safelyParseJSON(row.requestContext) : void 0,
|
|
3691
3717
|
metadata: row.metadata ? safelyParseJSON(row.metadata) : void 0,
|
|
3692
3718
|
source: row.source ? safelyParseJSON(row.source) : void 0,
|
|
@@ -3699,11 +3725,14 @@ var DatasetsLibSQL = class extends DatasetsStorage {
|
|
|
3699
3725
|
id: row.id,
|
|
3700
3726
|
datasetId: row.datasetId,
|
|
3701
3727
|
datasetVersion: row.datasetVersion,
|
|
3728
|
+
organizationId: row.organizationId ?? null,
|
|
3729
|
+
projectId: row.projectId ?? null,
|
|
3702
3730
|
validTo: row.validTo,
|
|
3703
3731
|
isDeleted: Boolean(row.isDeleted),
|
|
3704
3732
|
input: safelyParseJSON(row.input),
|
|
3705
3733
|
groundTruth: row.groundTruth ? safelyParseJSON(row.groundTruth) : void 0,
|
|
3706
3734
|
expectedTrajectory: row.expectedTrajectory ? safelyParseJSON(row.expectedTrajectory) : void 0,
|
|
3735
|
+
toolMocks: row.toolMocks ? safelyParseJSON(row.toolMocks) : void 0,
|
|
3707
3736
|
requestContext: row.requestContext ? safelyParseJSON(row.requestContext) : void 0,
|
|
3708
3737
|
metadata: row.metadata ? safelyParseJSON(row.metadata) : void 0,
|
|
3709
3738
|
source: row.source ? safelyParseJSON(row.source) : void 0,
|
|
@@ -3739,6 +3768,10 @@ var DatasetsLibSQL = class extends DatasetsStorage {
|
|
|
3739
3768
|
targetIds: input.targetIds ? JSON.stringify(input.targetIds) : null,
|
|
3740
3769
|
scorerIds: input.scorerIds ? JSON.stringify(input.scorerIds) : null,
|
|
3741
3770
|
version: 0,
|
|
3771
|
+
organizationId: input.organizationId ?? null,
|
|
3772
|
+
projectId: input.projectId ?? null,
|
|
3773
|
+
candidateKey: input.candidateKey ?? null,
|
|
3774
|
+
candidateId: input.candidateId ?? null,
|
|
3742
3775
|
createdAt: nowIso,
|
|
3743
3776
|
updatedAt: nowIso
|
|
3744
3777
|
}
|
|
@@ -3755,6 +3788,10 @@ var DatasetsLibSQL = class extends DatasetsStorage {
|
|
|
3755
3788
|
targetIds: input.targetIds ?? void 0,
|
|
3756
3789
|
scorerIds: input.scorerIds ?? void 0,
|
|
3757
3790
|
version: 0,
|
|
3791
|
+
organizationId: input.organizationId ?? null,
|
|
3792
|
+
projectId: input.projectId ?? null,
|
|
3793
|
+
candidateKey: input.candidateKey ?? null,
|
|
3794
|
+
candidateId: input.candidateId ?? null,
|
|
3758
3795
|
createdAt: now,
|
|
3759
3796
|
updatedAt: now
|
|
3760
3797
|
};
|
|
@@ -3910,9 +3947,28 @@ var DatasetsLibSQL = class extends DatasetsStorage {
|
|
|
3910
3947
|
async listDatasets(args) {
|
|
3911
3948
|
try {
|
|
3912
3949
|
const { page, perPage: perPageInput } = args.pagination;
|
|
3950
|
+
const filterConditions = [];
|
|
3951
|
+
const filterParams = [];
|
|
3952
|
+
if (args.filters?.organizationId !== void 0) {
|
|
3953
|
+
filterConditions.push("organizationId = ?");
|
|
3954
|
+
filterParams.push(args.filters.organizationId);
|
|
3955
|
+
}
|
|
3956
|
+
if (args.filters?.projectId !== void 0) {
|
|
3957
|
+
filterConditions.push("projectId = ?");
|
|
3958
|
+
filterParams.push(args.filters.projectId);
|
|
3959
|
+
}
|
|
3960
|
+
if (args.filters?.candidateKey !== void 0) {
|
|
3961
|
+
filterConditions.push("candidateKey = ?");
|
|
3962
|
+
filterParams.push(args.filters.candidateKey);
|
|
3963
|
+
}
|
|
3964
|
+
if (args.filters?.candidateId !== void 0) {
|
|
3965
|
+
filterConditions.push("candidateId = ?");
|
|
3966
|
+
filterParams.push(args.filters.candidateId);
|
|
3967
|
+
}
|
|
3968
|
+
const whereClause = filterConditions.length > 0 ? `WHERE ${filterConditions.join(" AND ")}` : "";
|
|
3913
3969
|
const countResult = await this.#client.execute({
|
|
3914
|
-
sql: `SELECT COUNT(*) as count FROM ${TABLE_DATASETS}`,
|
|
3915
|
-
args:
|
|
3970
|
+
sql: `SELECT COUNT(*) as count FROM ${TABLE_DATASETS} ${whereClause}`,
|
|
3971
|
+
args: filterParams
|
|
3916
3972
|
});
|
|
3917
3973
|
const total = Number(countResult.rows?.[0]?.count ?? 0);
|
|
3918
3974
|
if (total === 0) {
|
|
@@ -3926,8 +3982,8 @@ var DatasetsLibSQL = class extends DatasetsStorage {
|
|
|
3926
3982
|
const limitValue = perPageInput === false ? total : perPage;
|
|
3927
3983
|
const end = perPageInput === false ? total : start + perPage;
|
|
3928
3984
|
const result = await this.#client.execute({
|
|
3929
|
-
sql: `SELECT ${buildSelectColumns(TABLE_DATASETS)} FROM ${TABLE_DATASETS} ORDER BY createdAt DESC, id ASC LIMIT ? OFFSET ?`,
|
|
3930
|
-
args: [limitValue, start]
|
|
3985
|
+
sql: `SELECT ${buildSelectColumns(TABLE_DATASETS)} FROM ${TABLE_DATASETS} ${whereClause} ORDER BY createdAt DESC, id ASC LIMIT ? OFFSET ?`,
|
|
3986
|
+
args: [...filterParams, limitValue, start]
|
|
3931
3987
|
});
|
|
3932
3988
|
return {
|
|
3933
3989
|
datasets: result.rows?.map((row) => this.transformDatasetRow(row)) ?? [],
|
|
@@ -3952,6 +4008,7 @@ var DatasetsLibSQL = class extends DatasetsStorage {
|
|
|
3952
4008
|
// --- SCD-2 item mutations ---
|
|
3953
4009
|
async _doAddItem(args) {
|
|
3954
4010
|
try {
|
|
4011
|
+
const dataset = await this.getDatasetById({ id: args.datasetId });
|
|
3955
4012
|
const id = crypto.randomUUID();
|
|
3956
4013
|
const versionId = crypto.randomUUID();
|
|
3957
4014
|
const now = /* @__PURE__ */ new Date();
|
|
@@ -3963,14 +4020,17 @@ var DatasetsLibSQL = class extends DatasetsStorage {
|
|
|
3963
4020
|
args: [args.datasetId]
|
|
3964
4021
|
},
|
|
3965
4022
|
{
|
|
3966
|
-
sql: `INSERT INTO ${TABLE_DATASET_ITEMS} (id, datasetId, datasetVersion, validTo, isDeleted, input, groundTruth, expectedTrajectory, requestContext, metadata, source, createdAt, updatedAt) VALUES (?, ?, (SELECT version FROM ${TABLE_DATASETS} WHERE id = ?), NULL, 0, jsonb(?), jsonb(?), jsonb(?), jsonb(?), jsonb(?), jsonb(?), ?, ?)`,
|
|
4023
|
+
sql: `INSERT INTO ${TABLE_DATASET_ITEMS} (id, datasetId, datasetVersion, organizationId, projectId, validTo, isDeleted, input, groundTruth, expectedTrajectory, toolMocks, requestContext, metadata, source, createdAt, updatedAt) VALUES (?, ?, (SELECT version FROM ${TABLE_DATASETS} WHERE id = ?), (SELECT organizationId FROM ${TABLE_DATASETS} WHERE id = ?), (SELECT projectId FROM ${TABLE_DATASETS} WHERE id = ?), NULL, 0, jsonb(?), jsonb(?), jsonb(?), jsonb(?), jsonb(?), jsonb(?), jsonb(?), ?, ?)`,
|
|
3967
4024
|
args: [
|
|
3968
4025
|
id,
|
|
3969
4026
|
args.datasetId,
|
|
3970
4027
|
args.datasetId,
|
|
4028
|
+
args.datasetId,
|
|
4029
|
+
args.datasetId,
|
|
3971
4030
|
jsonbArg(args.input),
|
|
3972
4031
|
jsonbArg(args.groundTruth),
|
|
3973
4032
|
jsonbArg(args.expectedTrajectory),
|
|
4033
|
+
jsonbArg(args.toolMocks),
|
|
3974
4034
|
jsonbArg(args.requestContext),
|
|
3975
4035
|
jsonbArg(args.metadata),
|
|
3976
4036
|
jsonbArg(args.source),
|
|
@@ -3990,9 +4050,12 @@ var DatasetsLibSQL = class extends DatasetsStorage {
|
|
|
3990
4050
|
id,
|
|
3991
4051
|
datasetId: args.datasetId,
|
|
3992
4052
|
datasetVersion: newVersion,
|
|
4053
|
+
organizationId: dataset?.organizationId ?? null,
|
|
4054
|
+
projectId: dataset?.projectId ?? null,
|
|
3993
4055
|
input: args.input,
|
|
3994
4056
|
groundTruth: args.groundTruth,
|
|
3995
4057
|
expectedTrajectory: args.expectedTrajectory,
|
|
4058
|
+
toolMocks: args.toolMocks,
|
|
3996
4059
|
requestContext: args.requestContext,
|
|
3997
4060
|
metadata: args.metadata,
|
|
3998
4061
|
source: args.source,
|
|
@@ -4030,12 +4093,14 @@ var DatasetsLibSQL = class extends DatasetsStorage {
|
|
|
4030
4093
|
details: { itemId: args.id, expectedDatasetId: args.datasetId, actualDatasetId: existing.datasetId }
|
|
4031
4094
|
});
|
|
4032
4095
|
}
|
|
4096
|
+
const dataset = await this.getDatasetById({ id: args.datasetId });
|
|
4033
4097
|
const versionId = crypto.randomUUID();
|
|
4034
4098
|
const now = /* @__PURE__ */ new Date();
|
|
4035
4099
|
const nowIso = now.toISOString();
|
|
4036
4100
|
const mergedInput = args.input !== void 0 ? args.input : existing.input;
|
|
4037
4101
|
const mergedGroundTruth = args.groundTruth !== void 0 ? args.groundTruth : existing.groundTruth;
|
|
4038
4102
|
const mergedExpectedTrajectory = args.expectedTrajectory !== void 0 ? args.expectedTrajectory : existing.expectedTrajectory;
|
|
4103
|
+
const mergedToolMocks = args.toolMocks !== void 0 ? args.toolMocks : existing.toolMocks;
|
|
4039
4104
|
const mergedRequestContext = args.requestContext !== void 0 ? args.requestContext : existing.requestContext;
|
|
4040
4105
|
const mergedMetadata = args.metadata !== void 0 ? args.metadata : existing.metadata;
|
|
4041
4106
|
const mergedSource = args.source !== void 0 ? args.source : existing.source;
|
|
@@ -4050,14 +4115,17 @@ var DatasetsLibSQL = class extends DatasetsStorage {
|
|
|
4050
4115
|
args: [args.datasetId, args.id]
|
|
4051
4116
|
},
|
|
4052
4117
|
{
|
|
4053
|
-
sql: `INSERT INTO ${TABLE_DATASET_ITEMS} (id, datasetId, datasetVersion, validTo, isDeleted, input, groundTruth, expectedTrajectory, requestContext, metadata, source, createdAt, updatedAt) VALUES (?, ?, (SELECT version FROM ${TABLE_DATASETS} WHERE id = ?), NULL, 0, jsonb(?), jsonb(?), jsonb(?), jsonb(?), jsonb(?), jsonb(?), ?, ?)`,
|
|
4118
|
+
sql: `INSERT INTO ${TABLE_DATASET_ITEMS} (id, datasetId, datasetVersion, organizationId, projectId, validTo, isDeleted, input, groundTruth, expectedTrajectory, toolMocks, requestContext, metadata, source, createdAt, updatedAt) VALUES (?, ?, (SELECT version FROM ${TABLE_DATASETS} WHERE id = ?), (SELECT organizationId FROM ${TABLE_DATASETS} WHERE id = ?), (SELECT projectId FROM ${TABLE_DATASETS} WHERE id = ?), NULL, 0, jsonb(?), jsonb(?), jsonb(?), jsonb(?), jsonb(?), jsonb(?), jsonb(?), ?, ?)`,
|
|
4054
4119
|
args: [
|
|
4055
4120
|
args.id,
|
|
4056
4121
|
args.datasetId,
|
|
4057
4122
|
args.datasetId,
|
|
4123
|
+
args.datasetId,
|
|
4124
|
+
args.datasetId,
|
|
4058
4125
|
jsonbArg(mergedInput),
|
|
4059
4126
|
jsonbArg(mergedGroundTruth),
|
|
4060
4127
|
jsonbArg(mergedExpectedTrajectory),
|
|
4128
|
+
jsonbArg(mergedToolMocks),
|
|
4061
4129
|
jsonbArg(mergedRequestContext),
|
|
4062
4130
|
jsonbArg(mergedMetadata),
|
|
4063
4131
|
jsonbArg(mergedSource),
|
|
@@ -4076,9 +4144,12 @@ var DatasetsLibSQL = class extends DatasetsStorage {
|
|
|
4076
4144
|
return {
|
|
4077
4145
|
...existing,
|
|
4078
4146
|
datasetVersion: newVersion,
|
|
4147
|
+
organizationId: dataset?.organizationId ?? null,
|
|
4148
|
+
projectId: dataset?.projectId ?? null,
|
|
4079
4149
|
input: mergedInput,
|
|
4080
4150
|
groundTruth: mergedGroundTruth,
|
|
4081
4151
|
expectedTrajectory: mergedExpectedTrajectory,
|
|
4152
|
+
toolMocks: mergedToolMocks,
|
|
4082
4153
|
requestContext: mergedRequestContext,
|
|
4083
4154
|
metadata: mergedMetadata,
|
|
4084
4155
|
source: mergedSource,
|
|
@@ -4121,13 +4192,17 @@ var DatasetsLibSQL = class extends DatasetsStorage {
|
|
|
4121
4192
|
args: [datasetId, id]
|
|
4122
4193
|
},
|
|
4123
4194
|
{
|
|
4124
|
-
sql: `INSERT INTO ${TABLE_DATASET_ITEMS} (id, datasetId, datasetVersion, validTo, isDeleted, input, groundTruth, requestContext, metadata, source, createdAt, updatedAt) VALUES (?, ?, (SELECT version FROM ${TABLE_DATASETS} WHERE id = ?), NULL, 1, jsonb(?), jsonb(?), jsonb(?), jsonb(?), jsonb(?), ?, ?)`,
|
|
4195
|
+
sql: `INSERT INTO ${TABLE_DATASET_ITEMS} (id, datasetId, datasetVersion, organizationId, projectId, validTo, isDeleted, input, groundTruth, expectedTrajectory, toolMocks, requestContext, metadata, source, createdAt, updatedAt) VALUES (?, ?, (SELECT version FROM ${TABLE_DATASETS} WHERE id = ?), (SELECT organizationId FROM ${TABLE_DATASETS} WHERE id = ?), (SELECT projectId FROM ${TABLE_DATASETS} WHERE id = ?), NULL, 1, jsonb(?), jsonb(?), jsonb(?), jsonb(?), jsonb(?), jsonb(?), jsonb(?), ?, ?)`,
|
|
4125
4196
|
args: [
|
|
4126
4197
|
id,
|
|
4127
4198
|
datasetId,
|
|
4128
4199
|
datasetId,
|
|
4200
|
+
datasetId,
|
|
4201
|
+
datasetId,
|
|
4129
4202
|
jsonbArg(existing.input),
|
|
4130
4203
|
jsonbArg(existing.groundTruth),
|
|
4204
|
+
jsonbArg(existing.expectedTrajectory),
|
|
4205
|
+
jsonbArg(existing.toolMocks),
|
|
4131
4206
|
jsonbArg(existing.requestContext),
|
|
4132
4207
|
jsonbArg(existing.metadata),
|
|
4133
4208
|
jsonbArg(existing.source),
|
|
@@ -4228,6 +4303,14 @@ var DatasetsLibSQL = class extends DatasetsStorage {
|
|
|
4228
4303
|
"isDeleted = 0"
|
|
4229
4304
|
];
|
|
4230
4305
|
const queryParams2 = [args.datasetId, args.version, args.version];
|
|
4306
|
+
if (args.filters?.organizationId !== void 0) {
|
|
4307
|
+
conditions2.push("organizationId = ?");
|
|
4308
|
+
queryParams2.push(args.filters.organizationId);
|
|
4309
|
+
}
|
|
4310
|
+
if (args.filters?.projectId !== void 0) {
|
|
4311
|
+
conditions2.push("projectId = ?");
|
|
4312
|
+
queryParams2.push(args.filters.projectId);
|
|
4313
|
+
}
|
|
4231
4314
|
if (args.search) {
|
|
4232
4315
|
conditions2.push(`(LOWER(json(input)) LIKE ? OR LOWER(COALESCE(json(groundTruth), '')) LIKE ?)`);
|
|
4233
4316
|
const searchPattern = `%${args.search.toLowerCase()}%`;
|
|
@@ -4265,6 +4348,14 @@ var DatasetsLibSQL = class extends DatasetsStorage {
|
|
|
4265
4348
|
}
|
|
4266
4349
|
const conditions = ["datasetId = ?", "validTo IS NULL", "isDeleted = 0"];
|
|
4267
4350
|
const queryParams = [args.datasetId];
|
|
4351
|
+
if (args.filters?.organizationId !== void 0) {
|
|
4352
|
+
conditions.push("organizationId = ?");
|
|
4353
|
+
queryParams.push(args.filters.organizationId);
|
|
4354
|
+
}
|
|
4355
|
+
if (args.filters?.projectId !== void 0) {
|
|
4356
|
+
conditions.push("projectId = ?");
|
|
4357
|
+
queryParams.push(args.filters.projectId);
|
|
4358
|
+
}
|
|
4268
4359
|
if (args.search) {
|
|
4269
4360
|
conditions.push(`(LOWER(json(input)) LIKE ? OR LOWER(COALESCE(json(groundTruth), '')) LIKE ?)`);
|
|
4270
4361
|
const searchPattern = `%${args.search.toLowerCase()}%`;
|
|
@@ -4410,14 +4501,17 @@ var DatasetsLibSQL = class extends DatasetsStorage {
|
|
|
4410
4501
|
const id = crypto.randomUUID();
|
|
4411
4502
|
items.push({ id, input: itemInput });
|
|
4412
4503
|
statements.push({
|
|
4413
|
-
sql: `INSERT INTO ${TABLE_DATASET_ITEMS} (id, datasetId, datasetVersion, validTo, isDeleted, input, groundTruth, expectedTrajectory, requestContext, metadata, source, createdAt, updatedAt) VALUES (?, ?, (SELECT version FROM ${TABLE_DATASETS} WHERE id = ?), NULL, 0, jsonb(?), jsonb(?), jsonb(?), jsonb(?), jsonb(?), jsonb(?), ?, ?)`,
|
|
4504
|
+
sql: `INSERT INTO ${TABLE_DATASET_ITEMS} (id, datasetId, datasetVersion, organizationId, projectId, validTo, isDeleted, input, groundTruth, expectedTrajectory, toolMocks, requestContext, metadata, source, createdAt, updatedAt) VALUES (?, ?, (SELECT version FROM ${TABLE_DATASETS} WHERE id = ?), ?, ?, NULL, 0, jsonb(?), jsonb(?), jsonb(?), jsonb(?), jsonb(?), jsonb(?), jsonb(?), ?, ?)`,
|
|
4414
4505
|
args: [
|
|
4415
4506
|
id,
|
|
4416
4507
|
input.datasetId,
|
|
4417
4508
|
input.datasetId,
|
|
4509
|
+
dataset.organizationId ?? null,
|
|
4510
|
+
dataset.projectId ?? null,
|
|
4418
4511
|
jsonbArg(itemInput.input),
|
|
4419
4512
|
jsonbArg(itemInput.groundTruth),
|
|
4420
4513
|
jsonbArg(itemInput.expectedTrajectory),
|
|
4514
|
+
jsonbArg(itemInput.toolMocks),
|
|
4421
4515
|
jsonbArg(itemInput.requestContext),
|
|
4422
4516
|
jsonbArg(itemInput.metadata),
|
|
4423
4517
|
jsonbArg(itemInput.source),
|
|
@@ -4436,9 +4530,12 @@ var DatasetsLibSQL = class extends DatasetsStorage {
|
|
|
4436
4530
|
id,
|
|
4437
4531
|
datasetId: input.datasetId,
|
|
4438
4532
|
datasetVersion: newVersion,
|
|
4533
|
+
organizationId: dataset.organizationId ?? null,
|
|
4534
|
+
projectId: dataset.projectId ?? null,
|
|
4439
4535
|
input: itemInput.input,
|
|
4440
4536
|
groundTruth: itemInput.groundTruth,
|
|
4441
4537
|
expectedTrajectory: itemInput.expectedTrajectory,
|
|
4538
|
+
toolMocks: itemInput.toolMocks,
|
|
4442
4539
|
requestContext: itemInput.requestContext,
|
|
4443
4540
|
metadata: itemInput.metadata,
|
|
4444
4541
|
source: itemInput.source,
|
|
@@ -4490,13 +4587,17 @@ var DatasetsLibSQL = class extends DatasetsStorage {
|
|
|
4490
4587
|
args: [input.datasetId, item.id]
|
|
4491
4588
|
});
|
|
4492
4589
|
statements.push({
|
|
4493
|
-
sql: `INSERT INTO ${TABLE_DATASET_ITEMS} (id, datasetId, datasetVersion, validTo, isDeleted, input, groundTruth, requestContext, metadata, source, createdAt, updatedAt) VALUES (?, ?, (SELECT version FROM ${TABLE_DATASETS} WHERE id = ?), NULL, 1, jsonb(?), jsonb(?), jsonb(?), jsonb(?), jsonb(?), ?, ?)`,
|
|
4590
|
+
sql: `INSERT INTO ${TABLE_DATASET_ITEMS} (id, datasetId, datasetVersion, organizationId, projectId, validTo, isDeleted, input, groundTruth, expectedTrajectory, toolMocks, requestContext, metadata, source, createdAt, updatedAt) VALUES (?, ?, (SELECT version FROM ${TABLE_DATASETS} WHERE id = ?), ?, ?, NULL, 1, jsonb(?), jsonb(?), jsonb(?), jsonb(?), jsonb(?), jsonb(?), jsonb(?), ?, ?)`,
|
|
4494
4591
|
args: [
|
|
4495
4592
|
item.id,
|
|
4496
4593
|
input.datasetId,
|
|
4497
4594
|
input.datasetId,
|
|
4595
|
+
dataset.organizationId ?? null,
|
|
4596
|
+
dataset.projectId ?? null,
|
|
4498
4597
|
jsonbArg(item.input),
|
|
4499
4598
|
jsonbArg(item.groundTruth),
|
|
4599
|
+
jsonbArg(item.expectedTrajectory),
|
|
4600
|
+
jsonbArg(item.toolMocks),
|
|
4500
4601
|
jsonbArg(item.requestContext),
|
|
4501
4602
|
jsonbArg(item.metadata),
|
|
4502
4603
|
jsonbArg(item.source),
|
|
@@ -4541,12 +4642,12 @@ var ExperimentsLibSQL = class extends ExperimentsStorage {
|
|
|
4541
4642
|
await this.#db.alterTable({
|
|
4542
4643
|
tableName: TABLE_EXPERIMENTS,
|
|
4543
4644
|
schema: EXPERIMENTS_SCHEMA,
|
|
4544
|
-
ifNotExists: ["agentVersion"]
|
|
4645
|
+
ifNotExists: ["agentVersion", "organizationId", "projectId"]
|
|
4545
4646
|
});
|
|
4546
4647
|
await this.#db.alterTable({
|
|
4547
4648
|
tableName: TABLE_EXPERIMENT_RESULTS,
|
|
4548
4649
|
schema: EXPERIMENT_RESULTS_SCHEMA,
|
|
4549
|
-
ifNotExists: ["status", "tags"]
|
|
4650
|
+
ifNotExists: ["status", "tags", "toolMockReport", "organizationId", "projectId"]
|
|
4550
4651
|
});
|
|
4551
4652
|
await this.#client.batch(
|
|
4552
4653
|
[
|
|
@@ -4561,6 +4662,15 @@ var ExperimentsLibSQL = class extends ExperimentsStorage {
|
|
|
4561
4662
|
{
|
|
4562
4663
|
sql: `CREATE UNIQUE INDEX IF NOT EXISTS idx_experiment_results_exp_item ON "${TABLE_EXPERIMENT_RESULTS}" ("experimentId", "itemId")`,
|
|
4563
4664
|
args: []
|
|
4665
|
+
},
|
|
4666
|
+
// Tenancy: leading-tenant indexes for multi-tenant scans (parity with datasets domain).
|
|
4667
|
+
{
|
|
4668
|
+
sql: `CREATE INDEX IF NOT EXISTS idx_experiments_org_project ON "${TABLE_EXPERIMENTS}" ("organizationId", "projectId")`,
|
|
4669
|
+
args: []
|
|
4670
|
+
},
|
|
4671
|
+
{
|
|
4672
|
+
sql: `CREATE INDEX IF NOT EXISTS idx_experiment_results_org_project ON "${TABLE_EXPERIMENT_RESULTS}" ("organizationId", "projectId")`,
|
|
4673
|
+
args: []
|
|
4564
4674
|
}
|
|
4565
4675
|
],
|
|
4566
4676
|
"write"
|
|
@@ -4577,6 +4687,8 @@ var ExperimentsLibSQL = class extends ExperimentsStorage {
|
|
|
4577
4687
|
datasetId: row.datasetId ?? null,
|
|
4578
4688
|
datasetVersion: row.datasetVersion != null ? row.datasetVersion : null,
|
|
4579
4689
|
agentVersion: row.agentVersion ?? null,
|
|
4690
|
+
organizationId: row.organizationId ?? null,
|
|
4691
|
+
projectId: row.projectId ?? null,
|
|
4580
4692
|
targetType: row.targetType,
|
|
4581
4693
|
targetId: row.targetId,
|
|
4582
4694
|
name: row.name ?? void 0,
|
|
@@ -4600,6 +4712,8 @@ var ExperimentsLibSQL = class extends ExperimentsStorage {
|
|
|
4600
4712
|
experimentId: row.experimentId,
|
|
4601
4713
|
itemId: row.itemId,
|
|
4602
4714
|
itemDatasetVersion: row.itemDatasetVersion != null ? row.itemDatasetVersion : null,
|
|
4715
|
+
organizationId: row.organizationId ?? null,
|
|
4716
|
+
projectId: row.projectId ?? null,
|
|
4603
4717
|
input: safelyParseJSON(row.input),
|
|
4604
4718
|
output: row.output ? safelyParseJSON(row.output) : null,
|
|
4605
4719
|
groundTruth: row.groundTruth ? safelyParseJSON(row.groundTruth) : null,
|
|
@@ -4610,6 +4724,7 @@ var ExperimentsLibSQL = class extends ExperimentsStorage {
|
|
|
4610
4724
|
traceId: row.traceId ?? null,
|
|
4611
4725
|
status: row.status ?? null,
|
|
4612
4726
|
tags: row.tags ? safelyParseJSON(row.tags) : null,
|
|
4727
|
+
toolMockReport: row.toolMockReport ? safelyParseJSON(row.toolMockReport) : null,
|
|
4613
4728
|
createdAt: ensureDate(row.createdAt)
|
|
4614
4729
|
};
|
|
4615
4730
|
}
|
|
@@ -4626,6 +4741,8 @@ var ExperimentsLibSQL = class extends ExperimentsStorage {
|
|
|
4626
4741
|
datasetId: input.datasetId ?? null,
|
|
4627
4742
|
datasetVersion: input.datasetVersion ?? null,
|
|
4628
4743
|
agentVersion: input.agentVersion ?? null,
|
|
4744
|
+
organizationId: input.organizationId ?? null,
|
|
4745
|
+
projectId: input.projectId ?? null,
|
|
4629
4746
|
targetType: input.targetType,
|
|
4630
4747
|
targetId: input.targetId,
|
|
4631
4748
|
name: input.name ?? null,
|
|
@@ -4647,6 +4764,8 @@ var ExperimentsLibSQL = class extends ExperimentsStorage {
|
|
|
4647
4764
|
datasetId: input.datasetId,
|
|
4648
4765
|
datasetVersion: input.datasetVersion,
|
|
4649
4766
|
agentVersion: input.agentVersion ?? null,
|
|
4767
|
+
organizationId: input.organizationId ?? null,
|
|
4768
|
+
projectId: input.projectId ?? null,
|
|
4650
4769
|
targetType: input.targetType,
|
|
4651
4770
|
targetId: input.targetId,
|
|
4652
4771
|
name: input.name,
|
|
@@ -4789,6 +4908,17 @@ var ExperimentsLibSQL = class extends ExperimentsStorage {
|
|
|
4789
4908
|
conditions.push("status = ?");
|
|
4790
4909
|
queryParams.push(args.status);
|
|
4791
4910
|
}
|
|
4911
|
+
if (args.filters) {
|
|
4912
|
+
const { organizationId, projectId } = args.filters;
|
|
4913
|
+
if (organizationId !== void 0) {
|
|
4914
|
+
conditions.push("organizationId = ?");
|
|
4915
|
+
queryParams.push(organizationId);
|
|
4916
|
+
}
|
|
4917
|
+
if (projectId !== void 0) {
|
|
4918
|
+
conditions.push("projectId = ?");
|
|
4919
|
+
queryParams.push(projectId);
|
|
4920
|
+
}
|
|
4921
|
+
}
|
|
4792
4922
|
const whereClause = conditions.length > 0 ? `WHERE ${conditions.join(" AND ")}` : "";
|
|
4793
4923
|
const countResult = await this.#client.execute({
|
|
4794
4924
|
sql: `SELECT COUNT(*) as count FROM ${TABLE_EXPERIMENTS} ${whereClause}`,
|
|
@@ -4863,6 +4993,8 @@ var ExperimentsLibSQL = class extends ExperimentsStorage {
|
|
|
4863
4993
|
experimentId: input.experimentId,
|
|
4864
4994
|
itemId: input.itemId,
|
|
4865
4995
|
itemDatasetVersion: input.itemDatasetVersion ?? null,
|
|
4996
|
+
organizationId: input.organizationId ?? null,
|
|
4997
|
+
projectId: input.projectId ?? null,
|
|
4866
4998
|
input: input.input,
|
|
4867
4999
|
output: input.output,
|
|
4868
5000
|
groundTruth: input.groundTruth,
|
|
@@ -4873,6 +5005,7 @@ var ExperimentsLibSQL = class extends ExperimentsStorage {
|
|
|
4873
5005
|
traceId: input.traceId ?? null,
|
|
4874
5006
|
status: input.status ?? null,
|
|
4875
5007
|
tags: input.tags !== void 0 && input.tags !== null ? JSON.stringify(input.tags) : null,
|
|
5008
|
+
toolMockReport: input.toolMockReport ?? null,
|
|
4876
5009
|
createdAt: nowIso
|
|
4877
5010
|
}
|
|
4878
5011
|
});
|
|
@@ -4881,6 +5014,8 @@ var ExperimentsLibSQL = class extends ExperimentsStorage {
|
|
|
4881
5014
|
experimentId: input.experimentId,
|
|
4882
5015
|
itemId: input.itemId,
|
|
4883
5016
|
itemDatasetVersion: input.itemDatasetVersion,
|
|
5017
|
+
organizationId: input.organizationId ?? null,
|
|
5018
|
+
projectId: input.projectId ?? null,
|
|
4884
5019
|
input: input.input,
|
|
4885
5020
|
output: input.output,
|
|
4886
5021
|
groundTruth: input.groundTruth,
|
|
@@ -4891,6 +5026,7 @@ var ExperimentsLibSQL = class extends ExperimentsStorage {
|
|
|
4891
5026
|
traceId: input.traceId ?? null,
|
|
4892
5027
|
status: input.status ?? null,
|
|
4893
5028
|
tags: input.tags ?? null,
|
|
5029
|
+
toolMockReport: input.toolMockReport ?? null,
|
|
4894
5030
|
createdAt: now
|
|
4895
5031
|
};
|
|
4896
5032
|
} catch (error) {
|
|
@@ -4999,6 +5135,17 @@ var ExperimentsLibSQL = class extends ExperimentsStorage {
|
|
|
4999
5135
|
conditions.push("status = ?");
|
|
5000
5136
|
queryParams.push(args.status);
|
|
5001
5137
|
}
|
|
5138
|
+
if (args.filters) {
|
|
5139
|
+
const { organizationId, projectId } = args.filters;
|
|
5140
|
+
if (organizationId !== void 0) {
|
|
5141
|
+
conditions.push("organizationId = ?");
|
|
5142
|
+
queryParams.push(organizationId);
|
|
5143
|
+
}
|
|
5144
|
+
if (projectId !== void 0) {
|
|
5145
|
+
conditions.push("projectId = ?");
|
|
5146
|
+
queryParams.push(projectId);
|
|
5147
|
+
}
|
|
5148
|
+
}
|
|
5002
5149
|
const whereClause = `WHERE ${conditions.join(" AND ")}`;
|
|
5003
5150
|
const countResult = await this.#client.execute({
|
|
5004
5151
|
sql: `SELECT COUNT(*) as count FROM ${TABLE_EXPERIMENT_RESULTS} ${whereClause}`,
|
|
@@ -6435,12 +6582,7 @@ var MemoryLibSQL = class extends MemoryStorage {
|
|
|
6435
6582
|
await this.#db.createTable({ tableName: TABLE_THREADS, schema: TABLE_SCHEMAS[TABLE_THREADS] });
|
|
6436
6583
|
await this.#db.createTable({ tableName: TABLE_MESSAGES, schema: TABLE_SCHEMAS[TABLE_MESSAGES] });
|
|
6437
6584
|
await this.#db.createTable({ tableName: TABLE_RESOURCES, schema: TABLE_SCHEMAS[TABLE_RESOURCES] });
|
|
6438
|
-
|
|
6439
|
-
try {
|
|
6440
|
-
const { OBSERVATIONAL_MEMORY_TABLE_SCHEMA } = await import('@mastra/core/storage');
|
|
6441
|
-
omSchema = OBSERVATIONAL_MEMORY_TABLE_SCHEMA?.[OM_TABLE];
|
|
6442
|
-
} catch {
|
|
6443
|
-
}
|
|
6585
|
+
const omSchema = OBSERVATIONAL_MEMORY_TABLE_SCHEMA?.[OM_TABLE];
|
|
6444
6586
|
if (omSchema) {
|
|
6445
6587
|
await this.#db.createTable({
|
|
6446
6588
|
tableName: OM_TABLE,
|