@mastra/pg 1.10.1-alpha.0 → 1.10.1-alpha.2

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 (31) hide show
  1. package/CHANGELOG.md +30 -0
  2. package/dist/docs/SKILL.md +1 -1
  3. package/dist/docs/assets/SOURCE_MAP.json +1 -1
  4. package/dist/docs/references/docs-memory-semantic-recall.md +68 -6
  5. package/dist/docs/references/reference-storage-composite.md +1 -1
  6. package/dist/docs/references/reference-storage-dynamodb.md +1 -1
  7. package/dist/docs/references/reference-storage-postgresql.md +1 -1
  8. package/dist/index.cjs +187 -244
  9. package/dist/index.cjs.map +1 -1
  10. package/dist/index.js +187 -244
  11. package/dist/index.js.map +1 -1
  12. package/dist/storage/domains/agents/index.d.ts +0 -1
  13. package/dist/storage/domains/agents/index.d.ts.map +1 -1
  14. package/dist/storage/domains/mcp-clients/index.d.ts +0 -1
  15. package/dist/storage/domains/mcp-clients/index.d.ts.map +1 -1
  16. package/dist/storage/domains/mcp-servers/index.d.ts +0 -1
  17. package/dist/storage/domains/mcp-servers/index.d.ts.map +1 -1
  18. package/dist/storage/domains/memory/index.d.ts +2 -1
  19. package/dist/storage/domains/memory/index.d.ts.map +1 -1
  20. package/dist/storage/domains/prompt-blocks/index.d.ts +0 -1
  21. package/dist/storage/domains/prompt-blocks/index.d.ts.map +1 -1
  22. package/dist/storage/domains/scorer-definitions/index.d.ts +0 -1
  23. package/dist/storage/domains/scorer-definitions/index.d.ts.map +1 -1
  24. package/dist/storage/domains/skills/index.d.ts +0 -1
  25. package/dist/storage/domains/skills/index.d.ts.map +1 -1
  26. package/dist/storage/domains/utils.d.ts +18 -0
  27. package/dist/storage/domains/utils.d.ts.map +1 -1
  28. package/dist/storage/domains/workspaces/index.d.ts +0 -1
  29. package/dist/storage/domains/workspaces/index.d.ts.map +1 -1
  30. package/dist/storage/test-utils.d.ts.map +1 -1
  31. package/package.json +2 -2
package/dist/index.cjs CHANGED
@@ -2038,7 +2038,6 @@ var PoolAdapter = class {
2038
2038
  constructor($pool) {
2039
2039
  this.$pool = $pool;
2040
2040
  }
2041
- $pool;
2042
2041
  connect() {
2043
2042
  return this.$pool.connect();
2044
2043
  }
@@ -2107,7 +2106,6 @@ var TransactionClient = class {
2107
2106
  constructor(client) {
2108
2107
  this.client = client;
2109
2108
  }
2110
- client;
2111
2109
  async none(query, values) {
2112
2110
  await this.client.query(query, values);
2113
2111
  return null;
@@ -3451,6 +3449,15 @@ function getTableName2({ indexName, schemaName }) {
3451
3449
  const quotedSchemaName = schemaName;
3452
3450
  return quotedSchemaName ? `${quotedSchemaName}.${quotedIndexName}` : quotedIndexName;
3453
3451
  }
3452
+ function parseJsonResilient(value, _fieldName) {
3453
+ if (value == null) return void 0;
3454
+ if (typeof value !== "string") return value;
3455
+ try {
3456
+ return JSON.parse(value);
3457
+ } catch {
3458
+ return value;
3459
+ }
3460
+ }
3454
3461
  function transformFromSqlRow({
3455
3462
  tableName,
3456
3463
  sqlRow
@@ -3712,38 +3719,13 @@ var AgentsPG = class _AgentsPG extends storage.AgentsStorage {
3712
3719
  await this.#db.clearTable({ tableName: storage.TABLE_AGENT_VERSIONS });
3713
3720
  await this.#db.clearTable({ tableName: storage.TABLE_AGENTS });
3714
3721
  }
3715
- parseJson(value, fieldName) {
3716
- if (!value) return void 0;
3717
- if (typeof value !== "string") return value;
3718
- try {
3719
- return JSON.parse(value);
3720
- } catch (error$1) {
3721
- if (error$1 instanceof error.MastraError) throw error$1;
3722
- const details = {
3723
- value: value.length > 100 ? value.substring(0, 100) + "..." : value
3724
- };
3725
- if (fieldName) {
3726
- details.field = fieldName;
3727
- }
3728
- throw new error.MastraError(
3729
- {
3730
- id: storage.createStorageErrorId("PG", "PARSE_JSON", "INVALID_JSON"),
3731
- domain: error.ErrorDomain.STORAGE,
3732
- category: error.ErrorCategory.SYSTEM,
3733
- text: `Failed to parse JSON${fieldName ? ` for field "${fieldName}"` : ""}: ${error$1 instanceof Error ? error$1.message : "Unknown error"}`,
3734
- details
3735
- },
3736
- error$1
3737
- );
3738
- }
3739
- }
3740
3722
  parseRow(row) {
3741
3723
  return {
3742
3724
  id: row.id,
3743
3725
  status: row.status,
3744
3726
  activeVersionId: row.activeVersionId,
3745
3727
  authorId: row.authorId,
3746
- metadata: this.parseJson(row.metadata, "metadata"),
3728
+ metadata: parseJsonResilient(row.metadata),
3747
3729
  createdAt: row.createdAtZ || row.createdAt,
3748
3730
  updatedAt: row.updatedAtZ || row.updatedAt
3749
3731
  };
@@ -3972,7 +3954,14 @@ var AgentsPG = class _AgentsPG extends storage.AgentsStorage {
3972
3954
  `SELECT * FROM ${tableName} ${whereClause} ORDER BY "${field}" ${direction} LIMIT $${paramIdx++} OFFSET $${paramIdx++}`,
3973
3955
  [...queryParams, limitValue, offset]
3974
3956
  );
3975
- const agents = (dataResult || []).map((row) => this.parseRow(row));
3957
+ const agents = (dataResult || []).flatMap((row) => {
3958
+ try {
3959
+ return [this.parseRow(row)];
3960
+ } catch (err) {
3961
+ this.logger?.warn?.("[PG] Failed to map agent row, skipping", { id: row?.id, error: err });
3962
+ return [];
3963
+ }
3964
+ });
3976
3965
  return {
3977
3966
  agents,
3978
3967
  total,
@@ -4160,7 +4149,14 @@ var AgentsPG = class _AgentsPG extends storage.AgentsStorage {
4160
4149
  `SELECT * FROM ${tableName} WHERE "agentId" = $1 ORDER BY "${field}" ${direction} LIMIT $2 OFFSET $3`,
4161
4150
  [agentId, limitValue, offset]
4162
4151
  );
4163
- const versions = (dataResult || []).map((row) => this.parseVersionRow(row));
4152
+ const versions = (dataResult || []).flatMap((row) => {
4153
+ try {
4154
+ return [this.parseVersionRow(row)];
4155
+ } catch (err) {
4156
+ this.logger?.warn?.("[PG] Failed to map agent version row, skipping", { id: row?.id, error: err });
4157
+ return [];
4158
+ }
4159
+ });
4164
4160
  return {
4165
4161
  versions,
4166
4162
  total,
@@ -4259,22 +4255,22 @@ var AgentsPG = class _AgentsPG extends storage.AgentsStorage {
4259
4255
  name: row.name,
4260
4256
  description: row.description,
4261
4257
  instructions: this.deserializeInstructions(row.instructions),
4262
- model: this.parseJson(row.model, "model"),
4263
- tools: this.parseJson(row.tools, "tools"),
4264
- defaultOptions: this.parseJson(row.defaultOptions, "defaultOptions"),
4265
- workflows: this.parseJson(row.workflows, "workflows"),
4266
- agents: this.parseJson(row.agents, "agents"),
4267
- integrationTools: this.parseJson(row.integrationTools, "integrationTools"),
4268
- inputProcessors: this.parseJson(row.inputProcessors, "inputProcessors"),
4269
- outputProcessors: this.parseJson(row.outputProcessors, "outputProcessors"),
4270
- memory: this.parseJson(row.memory, "memory"),
4271
- scorers: this.parseJson(row.scorers, "scorers"),
4272
- mcpClients: this.parseJson(row.mcpClients, "mcpClients"),
4273
- requestContextSchema: this.parseJson(row.requestContextSchema, "requestContextSchema"),
4274
- workspace: this.parseJson(row.workspace, "workspace"),
4275
- skills: this.parseJson(row.skills, "skills"),
4258
+ model: parseJsonResilient(row.model),
4259
+ tools: parseJsonResilient(row.tools),
4260
+ defaultOptions: parseJsonResilient(row.defaultOptions),
4261
+ workflows: parseJsonResilient(row.workflows),
4262
+ agents: parseJsonResilient(row.agents),
4263
+ integrationTools: parseJsonResilient(row.integrationTools),
4264
+ inputProcessors: parseJsonResilient(row.inputProcessors),
4265
+ outputProcessors: parseJsonResilient(row.outputProcessors),
4266
+ memory: parseJsonResilient(row.memory),
4267
+ scorers: parseJsonResilient(row.scorers),
4268
+ mcpClients: parseJsonResilient(row.mcpClients),
4269
+ requestContextSchema: parseJsonResilient(row.requestContextSchema),
4270
+ workspace: parseJsonResilient(row.workspace),
4271
+ skills: parseJsonResilient(row.skills),
4276
4272
  skillsFormat: row.skillsFormat,
4277
- changedFields: this.parseJson(row.changedFields, "changedFields"),
4273
+ changedFields: parseJsonResilient(row.changedFields),
4278
4274
  changeMessage: row.changeMessage,
4279
4275
  createdAt: row.createdAtZ || row.createdAt
4280
4276
  };
@@ -6714,7 +6710,14 @@ var MCPClientsPG = class _MCPClientsPG extends storage.MCPClientsStorage {
6714
6710
  `SELECT * FROM ${tableName} ${whereClause} ORDER BY "${field}" ${direction} LIMIT $${paramIdx++} OFFSET $${paramIdx++}`,
6715
6711
  [...queryParams, limitValue, offset]
6716
6712
  );
6717
- const mcpClients = (dataResult || []).map((row) => this.parseMCPClientRow(row));
6713
+ const mcpClients = (dataResult || []).flatMap((row) => {
6714
+ try {
6715
+ return [this.parseMCPClientRow(row)];
6716
+ } catch (err) {
6717
+ this.logger?.warn?.("[PG] Failed to map mcp client row, skipping", { id: row?.id, error: err });
6718
+ return [];
6719
+ }
6720
+ });
6718
6721
  return {
6719
6722
  mcpClients,
6720
6723
  total,
@@ -6900,7 +6903,14 @@ var MCPClientsPG = class _MCPClientsPG extends storage.MCPClientsStorage {
6900
6903
  `SELECT * FROM ${tableName} WHERE "mcpClientId" = $1 ORDER BY "${field}" ${direction} LIMIT $2 OFFSET $3`,
6901
6904
  [mcpClientId, limitValue, offset]
6902
6905
  );
6903
- const versions = (dataResult || []).map((row) => this.parseVersionRow(row));
6906
+ const versions = (dataResult || []).flatMap((row) => {
6907
+ try {
6908
+ return [this.parseVersionRow(row)];
6909
+ } catch (err) {
6910
+ this.logger?.warn?.("[PG] Failed to map mcp client version row, skipping", { id: row?.id, error: err });
6911
+ return [];
6912
+ }
6913
+ });
6904
6914
  return {
6905
6915
  versions,
6906
6916
  total,
@@ -6987,38 +6997,13 @@ var MCPClientsPG = class _MCPClientsPG extends storage.MCPClientsStorage {
6987
6997
  // ==========================================================================
6988
6998
  // Private Helper Methods
6989
6999
  // ==========================================================================
6990
- parseJson(value, fieldName) {
6991
- if (!value) return void 0;
6992
- if (typeof value !== "string") return value;
6993
- try {
6994
- return JSON.parse(value);
6995
- } catch (error$1) {
6996
- if (error$1 instanceof error.MastraError) throw error$1;
6997
- const details = {
6998
- value: value.length > 100 ? value.substring(0, 100) + "..." : value
6999
- };
7000
- if (fieldName) {
7001
- details.field = fieldName;
7002
- }
7003
- throw new error.MastraError(
7004
- {
7005
- id: storage.createStorageErrorId("PG", "PARSE_JSON", "INVALID_JSON"),
7006
- domain: error.ErrorDomain.STORAGE,
7007
- category: error.ErrorCategory.SYSTEM,
7008
- text: `Failed to parse JSON${fieldName ? ` for field "${fieldName}"` : ""}: ${error$1 instanceof Error ? error$1.message : "Unknown error"}`,
7009
- details
7010
- },
7011
- error$1
7012
- );
7013
- }
7014
- }
7015
7000
  parseMCPClientRow(row) {
7016
7001
  return {
7017
7002
  id: row.id,
7018
7003
  status: row.status,
7019
7004
  activeVersionId: row.activeVersionId,
7020
7005
  authorId: row.authorId,
7021
- metadata: this.parseJson(row.metadata, "metadata"),
7006
+ metadata: parseJsonResilient(row.metadata),
7022
7007
  createdAt: new Date(row.createdAtZ || row.createdAt),
7023
7008
  updatedAt: new Date(row.updatedAtZ || row.updatedAt)
7024
7009
  };
@@ -7030,8 +7015,8 @@ var MCPClientsPG = class _MCPClientsPG extends storage.MCPClientsStorage {
7030
7015
  versionNumber: row.versionNumber,
7031
7016
  name: row.name,
7032
7017
  description: row.description,
7033
- servers: this.parseJson(row.servers, "servers"),
7034
- changedFields: this.parseJson(row.changedFields, "changedFields"),
7018
+ servers: parseJsonResilient(row.servers),
7019
+ changedFields: parseJsonResilient(row.changedFields),
7035
7020
  changeMessage: row.changeMessage,
7036
7021
  createdAt: new Date(row.createdAtZ || row.createdAt)
7037
7022
  };
@@ -7338,7 +7323,14 @@ var MCPServersPG = class _MCPServersPG extends storage.MCPServersStorage {
7338
7323
  `SELECT * FROM ${tableName} ${whereClause} ORDER BY "${field}" ${direction} LIMIT $${paramIdx++} OFFSET $${paramIdx++}`,
7339
7324
  [...queryParams, limitValue, offset]
7340
7325
  );
7341
- const mcpServers = (dataResult || []).map((row) => this.parseMCPServerRow(row));
7326
+ const mcpServers = (dataResult || []).flatMap((row) => {
7327
+ try {
7328
+ return [this.parseMCPServerRow(row)];
7329
+ } catch (err) {
7330
+ this.logger?.warn?.("[PG] Failed to map mcp server row, skipping", { id: row?.id, error: err });
7331
+ return [];
7332
+ }
7333
+ });
7342
7334
  return {
7343
7335
  mcpServers,
7344
7336
  total,
@@ -7534,7 +7526,14 @@ var MCPServersPG = class _MCPServersPG extends storage.MCPServersStorage {
7534
7526
  `SELECT * FROM ${tableName} WHERE "mcpServerId" = $1 ORDER BY "${field}" ${direction} LIMIT $2 OFFSET $3`,
7535
7527
  [mcpServerId, limitValue, offset]
7536
7528
  );
7537
- const versions = (dataResult || []).map((row) => this.parseVersionRow(row));
7529
+ const versions = (dataResult || []).flatMap((row) => {
7530
+ try {
7531
+ return [this.parseVersionRow(row)];
7532
+ } catch (err) {
7533
+ this.logger?.warn?.("[PG] Failed to map mcp server version row, skipping", { id: row?.id, error: err });
7534
+ return [];
7535
+ }
7536
+ });
7538
7537
  return {
7539
7538
  versions,
7540
7539
  total,
@@ -7621,38 +7620,13 @@ var MCPServersPG = class _MCPServersPG extends storage.MCPServersStorage {
7621
7620
  // ==========================================================================
7622
7621
  // Private Helper Methods
7623
7622
  // ==========================================================================
7624
- parseJson(value, fieldName) {
7625
- if (!value) return void 0;
7626
- if (typeof value !== "string") return value;
7627
- try {
7628
- return JSON.parse(value);
7629
- } catch (error$1) {
7630
- if (error$1 instanceof error.MastraError) throw error$1;
7631
- const details = {
7632
- valueLength: String(value.length)
7633
- };
7634
- if (fieldName) {
7635
- details.field = fieldName;
7636
- }
7637
- throw new error.MastraError(
7638
- {
7639
- id: storage.createStorageErrorId("PG", "PARSE_JSON", "INVALID_JSON"),
7640
- domain: error.ErrorDomain.STORAGE,
7641
- category: error.ErrorCategory.SYSTEM,
7642
- text: `Failed to parse JSON${fieldName ? ` for field "${fieldName}"` : ""}: ${error$1 instanceof Error ? error$1.message : "Unknown error"}`,
7643
- details
7644
- },
7645
- error$1
7646
- );
7647
- }
7648
- }
7649
7623
  parseMCPServerRow(row) {
7650
7624
  return {
7651
7625
  id: row.id,
7652
7626
  status: row.status,
7653
7627
  activeVersionId: row.activeVersionId,
7654
7628
  authorId: row.authorId,
7655
- metadata: this.parseJson(row.metadata, "metadata"),
7629
+ metadata: parseJsonResilient(row.metadata),
7656
7630
  createdAt: new Date(row.createdAtZ || row.createdAt),
7657
7631
  updatedAt: new Date(row.updatedAtZ || row.updatedAt)
7658
7632
  };
@@ -7666,14 +7640,14 @@ var MCPServersPG = class _MCPServersPG extends storage.MCPServersStorage {
7666
7640
  version: row.version,
7667
7641
  description: row.description,
7668
7642
  instructions: row.instructions,
7669
- repository: this.parseJson(row.repository, "repository"),
7643
+ repository: parseJsonResilient(row.repository),
7670
7644
  releaseDate: row.releaseDate,
7671
7645
  isLatest: row.isLatest,
7672
7646
  packageCanonical: row.packageCanonical,
7673
- tools: this.parseJson(row.tools, "tools"),
7674
- agents: this.parseJson(row.agents, "agents"),
7675
- workflows: this.parseJson(row.workflows, "workflows"),
7676
- changedFields: this.parseJson(row.changedFields, "changedFields"),
7647
+ tools: parseJsonResilient(row.tools),
7648
+ agents: parseJsonResilient(row.agents),
7649
+ workflows: parseJsonResilient(row.workflows),
7650
+ changedFields: parseJsonResilient(row.changedFields),
7677
7651
  changeMessage: row.changeMessage,
7678
7652
  createdAt: new Date(row.createdAtZ || row.createdAt)
7679
7653
  };
@@ -7880,12 +7854,21 @@ var MemoryPG = class _MemoryPG extends storage.MemoryStorage {
7880
7854
  resourceId: row.resourceId
7881
7855
  };
7882
7856
  }
7883
- async getThreadById({ threadId }) {
7857
+ async getThreadById({
7858
+ threadId,
7859
+ resourceId
7860
+ }) {
7884
7861
  try {
7885
7862
  const tableName = getTableName4({ indexName: storage.TABLE_THREADS, schemaName: getSchemaName4(this.#schema) });
7863
+ let query = `SELECT * FROM ${tableName} WHERE id = $1`;
7864
+ let params = [threadId];
7865
+ if (resourceId !== void 0) {
7866
+ query += ` AND "resourceId" = $2`;
7867
+ params.push(resourceId);
7868
+ }
7886
7869
  const thread = await this.#db.client.oneOrNone(
7887
- `SELECT * FROM ${tableName} WHERE id = $1`,
7888
- [threadId]
7870
+ query,
7871
+ params
7889
7872
  );
7890
7873
  if (!thread) {
7891
7874
  return null;
@@ -11073,7 +11056,14 @@ var PromptBlocksPG = class _PromptBlocksPG extends storage.PromptBlocksStorage {
11073
11056
  `SELECT * FROM ${tableName} ${whereClause} ORDER BY "${field}" ${direction} LIMIT $${paramIdx++} OFFSET $${paramIdx++}`,
11074
11057
  [...queryParams, limitValue, offset]
11075
11058
  );
11076
- const promptBlocks = (dataResult || []).map((row) => this.parseBlockRow(row));
11059
+ const promptBlocks = (dataResult || []).flatMap((row) => {
11060
+ try {
11061
+ return [this.parseBlockRow(row)];
11062
+ } catch (err) {
11063
+ this.logger?.warn?.("[PG] Failed to map prompt block row, skipping", { id: row?.id, error: err });
11064
+ return [];
11065
+ }
11066
+ });
11077
11067
  return {
11078
11068
  promptBlocks,
11079
11069
  total,
@@ -11260,7 +11250,14 @@ var PromptBlocksPG = class _PromptBlocksPG extends storage.PromptBlocksStorage {
11260
11250
  `SELECT * FROM ${tableName} WHERE "blockId" = $1 ORDER BY "${field}" ${direction} LIMIT $2 OFFSET $3`,
11261
11251
  [blockId, limitValue, offset]
11262
11252
  );
11263
- const versions = (dataResult || []).map((row) => this.parseVersionRow(row));
11253
+ const versions = (dataResult || []).flatMap((row) => {
11254
+ try {
11255
+ return [this.parseVersionRow(row)];
11256
+ } catch (err) {
11257
+ this.logger?.warn?.("[PG] Failed to map prompt block version row, skipping", { id: row?.id, error: err });
11258
+ return [];
11259
+ }
11260
+ });
11264
11261
  return {
11265
11262
  versions,
11266
11263
  total,
@@ -11347,37 +11344,13 @@ var PromptBlocksPG = class _PromptBlocksPG extends storage.PromptBlocksStorage {
11347
11344
  // ==========================================================================
11348
11345
  // Private Helper Methods
11349
11346
  // ==========================================================================
11350
- parseJson(value, fieldName) {
11351
- if (!value) return void 0;
11352
- if (typeof value !== "string") return value;
11353
- try {
11354
- return JSON.parse(value);
11355
- } catch (error$1) {
11356
- const details = {
11357
- value: value.length > 100 ? value.substring(0, 100) + "..." : value
11358
- };
11359
- if (fieldName) {
11360
- details.field = fieldName;
11361
- }
11362
- throw new error.MastraError(
11363
- {
11364
- id: storage.createStorageErrorId("PG", "PARSE_JSON", "INVALID_JSON"),
11365
- domain: error.ErrorDomain.STORAGE,
11366
- category: error.ErrorCategory.SYSTEM,
11367
- text: `Failed to parse JSON${fieldName ? ` for field "${fieldName}"` : ""}: ${error$1 instanceof Error ? error$1.message : "Unknown error"}`,
11368
- details
11369
- },
11370
- error$1
11371
- );
11372
- }
11373
- }
11374
11347
  parseBlockRow(row) {
11375
11348
  return {
11376
11349
  id: row.id,
11377
11350
  status: row.status,
11378
11351
  activeVersionId: row.activeVersionId,
11379
11352
  authorId: row.authorId,
11380
- metadata: this.parseJson(row.metadata, "metadata"),
11353
+ metadata: parseJsonResilient(row.metadata),
11381
11354
  createdAt: new Date(row.createdAtZ || row.createdAt),
11382
11355
  updatedAt: new Date(row.updatedAtZ || row.updatedAt)
11383
11356
  };
@@ -11390,9 +11363,9 @@ var PromptBlocksPG = class _PromptBlocksPG extends storage.PromptBlocksStorage {
11390
11363
  name: row.name,
11391
11364
  description: row.description,
11392
11365
  content: row.content,
11393
- rules: this.parseJson(row.rules, "rules"),
11394
- requestContextSchema: this.parseJson(row.requestContextSchema, "requestContextSchema"),
11395
- changedFields: this.parseJson(row.changedFields, "changedFields"),
11366
+ rules: parseJsonResilient(row.rules),
11367
+ requestContextSchema: parseJsonResilient(row.requestContextSchema),
11368
+ changedFields: parseJsonResilient(row.changedFields),
11396
11369
  changeMessage: row.changeMessage,
11397
11370
  createdAt: new Date(row.createdAtZ || row.createdAt)
11398
11371
  };
@@ -12009,7 +11982,14 @@ var ScorerDefinitionsPG = class _ScorerDefinitionsPG extends storage.ScorerDefin
12009
11982
  `SELECT * FROM ${tableName} ${whereClause} ORDER BY "${field}" ${direction} LIMIT $${paramIdx++} OFFSET $${paramIdx++}`,
12010
11983
  [...queryParams, limitValue, offset]
12011
11984
  );
12012
- const scorerDefinitions = (dataResult || []).map((row) => this.parseScorerRow(row));
11985
+ const scorerDefinitions = (dataResult || []).flatMap((row) => {
11986
+ try {
11987
+ return [this.parseScorerRow(row)];
11988
+ } catch (err) {
11989
+ this.logger?.warn?.("[PG] Failed to map scorer definition row, skipping", { id: row?.id, error: err });
11990
+ return [];
11991
+ }
11992
+ });
12013
11993
  return {
12014
11994
  scorerDefinitions,
12015
11995
  total,
@@ -12200,7 +12180,17 @@ var ScorerDefinitionsPG = class _ScorerDefinitionsPG extends storage.ScorerDefin
12200
12180
  `SELECT * FROM ${tableName} WHERE "scorerDefinitionId" = $1 ORDER BY "${field}" ${direction} LIMIT $2 OFFSET $3`,
12201
12181
  [scorerDefinitionId, limitValue, offset]
12202
12182
  );
12203
- const versions = (dataResult || []).map((row) => this.parseVersionRow(row));
12183
+ const versions = (dataResult || []).flatMap((row) => {
12184
+ try {
12185
+ return [this.parseVersionRow(row)];
12186
+ } catch (err) {
12187
+ this.logger?.warn?.("[PG] Failed to map scorer definition version row, skipping", {
12188
+ id: row?.id,
12189
+ error: err
12190
+ });
12191
+ return [];
12192
+ }
12193
+ });
12204
12194
  return {
12205
12195
  versions,
12206
12196
  total,
@@ -12288,38 +12278,13 @@ var ScorerDefinitionsPG = class _ScorerDefinitionsPG extends storage.ScorerDefin
12288
12278
  // ==========================================================================
12289
12279
  // Private Helper Methods
12290
12280
  // ==========================================================================
12291
- parseJson(value, fieldName) {
12292
- if (!value) return void 0;
12293
- if (typeof value !== "string") return value;
12294
- try {
12295
- return JSON.parse(value);
12296
- } catch (error$1) {
12297
- if (error$1 instanceof error.MastraError) throw error$1;
12298
- const details = {
12299
- value: value.length > 100 ? value.substring(0, 100) + "..." : value
12300
- };
12301
- if (fieldName) {
12302
- details.field = fieldName;
12303
- }
12304
- throw new error.MastraError(
12305
- {
12306
- id: storage.createStorageErrorId("PG", "PARSE_JSON", "INVALID_JSON"),
12307
- domain: error.ErrorDomain.STORAGE,
12308
- category: error.ErrorCategory.SYSTEM,
12309
- text: `Failed to parse JSON${fieldName ? ` for field "${fieldName}"` : ""}: ${error$1 instanceof Error ? error$1.message : "Unknown error"}`,
12310
- details
12311
- },
12312
- error$1
12313
- );
12314
- }
12315
- }
12316
12281
  parseScorerRow(row) {
12317
12282
  return {
12318
12283
  id: row.id,
12319
12284
  status: row.status,
12320
12285
  activeVersionId: row.activeVersionId,
12321
12286
  authorId: row.authorId,
12322
- metadata: this.parseJson(row.metadata, "metadata"),
12287
+ metadata: parseJsonResilient(row.metadata),
12323
12288
  createdAt: new Date(row.createdAtZ || row.createdAt),
12324
12289
  updatedAt: new Date(row.updatedAtZ || row.updatedAt)
12325
12290
  };
@@ -12332,12 +12297,12 @@ var ScorerDefinitionsPG = class _ScorerDefinitionsPG extends storage.ScorerDefin
12332
12297
  name: row.name,
12333
12298
  description: row.description,
12334
12299
  type: row.type,
12335
- model: this.parseJson(row.model, "model"),
12300
+ model: parseJsonResilient(row.model),
12336
12301
  instructions: row.instructions,
12337
- scoreRange: this.parseJson(row.scoreRange, "scoreRange"),
12338
- presetConfig: this.parseJson(row.presetConfig, "presetConfig"),
12339
- defaultSampling: this.parseJson(row.defaultSampling, "defaultSampling"),
12340
- changedFields: this.parseJson(row.changedFields, "changedFields"),
12302
+ scoreRange: parseJsonResilient(row.scoreRange),
12303
+ presetConfig: parseJsonResilient(row.presetConfig),
12304
+ defaultSampling: parseJsonResilient(row.defaultSampling),
12305
+ changedFields: parseJsonResilient(row.changedFields),
12341
12306
  changeMessage: row.changeMessage,
12342
12307
  createdAt: new Date(row.createdAtZ || row.createdAt)
12343
12308
  };
@@ -13079,7 +13044,14 @@ var SkillsPG = class _SkillsPG extends storage.SkillsStorage {
13079
13044
  `SELECT * FROM ${tableName} ${whereClause} ORDER BY "${field}" ${direction} LIMIT $${paramIdx++} OFFSET $${paramIdx++}`,
13080
13045
  [...queryParams, limitValue, offset]
13081
13046
  );
13082
- const skills = (dataResult || []).map((row) => this.parseSkillRow(row));
13047
+ const skills = (dataResult || []).flatMap((row) => {
13048
+ try {
13049
+ return [this.parseSkillRow(row)];
13050
+ } catch (err) {
13051
+ this.logger?.warn?.("[PG] Failed to map skill row, skipping", { id: row?.id, error: err });
13052
+ return [];
13053
+ }
13054
+ });
13083
13055
  return {
13084
13056
  skills,
13085
13057
  total,
@@ -13273,7 +13245,14 @@ var SkillsPG = class _SkillsPG extends storage.SkillsStorage {
13273
13245
  `SELECT * FROM ${tableName} WHERE "skillId" = $1 ORDER BY "${field}" ${direction} LIMIT $2 OFFSET $3`,
13274
13246
  [skillId, limitValue, offset]
13275
13247
  );
13276
- const versions = (dataResult || []).map((row) => this.parseVersionRow(row));
13248
+ const versions = (dataResult || []).flatMap((row) => {
13249
+ try {
13250
+ return [this.parseVersionRow(row)];
13251
+ } catch (err) {
13252
+ this.logger?.warn?.("[PG] Failed to map skill version row, skipping", { id: row?.id, error: err });
13253
+ return [];
13254
+ }
13255
+ });
13277
13256
  return {
13278
13257
  versions,
13279
13258
  total,
@@ -13360,31 +13339,6 @@ var SkillsPG = class _SkillsPG extends storage.SkillsStorage {
13360
13339
  // ==========================================================================
13361
13340
  // Private Helper Methods
13362
13341
  // ==========================================================================
13363
- parseJson(value, fieldName) {
13364
- if (!value) return void 0;
13365
- if (typeof value !== "string") return value;
13366
- try {
13367
- return JSON.parse(value);
13368
- } catch (error$1) {
13369
- if (error$1 instanceof error.MastraError) throw error$1;
13370
- const details = {
13371
- value: value.length > 100 ? value.substring(0, 100) + "..." : value
13372
- };
13373
- if (fieldName) {
13374
- details.field = fieldName;
13375
- }
13376
- throw new error.MastraError(
13377
- {
13378
- id: storage.createStorageErrorId("PG", "PARSE_JSON", "INVALID_JSON"),
13379
- domain: error.ErrorDomain.STORAGE,
13380
- category: error.ErrorCategory.SYSTEM,
13381
- text: `Failed to parse JSON${fieldName ? ` for field "${fieldName}"` : ""}: ${error$1 instanceof Error ? error$1.message : "Unknown error"}`,
13382
- details
13383
- },
13384
- error$1
13385
- );
13386
- }
13387
- }
13388
13342
  parseSkillRow(row) {
13389
13343
  return {
13390
13344
  id: row.id,
@@ -13404,14 +13358,14 @@ var SkillsPG = class _SkillsPG extends storage.SkillsStorage {
13404
13358
  description: row.description,
13405
13359
  instructions: row.instructions,
13406
13360
  license: row.license,
13407
- compatibility: this.parseJson(row.compatibility, "compatibility"),
13408
- source: this.parseJson(row.source, "source"),
13409
- references: this.parseJson(row.references, "references"),
13410
- scripts: this.parseJson(row.scripts, "scripts"),
13411
- assets: this.parseJson(row.assets, "assets"),
13412
- metadata: this.parseJson(row.metadata, "metadata"),
13413
- tree: this.parseJson(row.tree, "tree"),
13414
- changedFields: this.parseJson(row.changedFields, "changedFields"),
13361
+ compatibility: parseJsonResilient(row.compatibility),
13362
+ source: parseJsonResilient(row.source),
13363
+ references: parseJsonResilient(row.references),
13364
+ scripts: parseJsonResilient(row.scripts),
13365
+ assets: parseJsonResilient(row.assets),
13366
+ metadata: parseJsonResilient(row.metadata),
13367
+ tree: parseJsonResilient(row.tree),
13368
+ changedFields: parseJsonResilient(row.changedFields),
13415
13369
  changeMessage: row.changeMessage,
13416
13370
  createdAt: new Date(row.createdAtZ || row.createdAt)
13417
13371
  };
@@ -14177,7 +14131,14 @@ var WorkspacesPG = class _WorkspacesPG extends storage.WorkspacesStorage {
14177
14131
  `SELECT * FROM ${tableName} ${whereClause} ORDER BY "${field}" ${direction} LIMIT $${paramIdx++} OFFSET $${paramIdx++}`,
14178
14132
  [...queryParams, limitValue, offset]
14179
14133
  );
14180
- const workspaces = (dataResult || []).map((row) => this.parseWorkspaceRow(row));
14134
+ const workspaces = (dataResult || []).flatMap((row) => {
14135
+ try {
14136
+ return [this.parseWorkspaceRow(row)];
14137
+ } catch (err) {
14138
+ this.logger?.warn?.("[PG] Failed to map workspace row, skipping", { id: row?.id, error: err });
14139
+ return [];
14140
+ }
14141
+ });
14181
14142
  return {
14182
14143
  workspaces,
14183
14144
  total,
@@ -14371,7 +14332,14 @@ var WorkspacesPG = class _WorkspacesPG extends storage.WorkspacesStorage {
14371
14332
  `SELECT * FROM ${tableName} WHERE "workspaceId" = $1 ORDER BY "${field}" ${direction} LIMIT $2 OFFSET $3`,
14372
14333
  [workspaceId, limitValue, offset]
14373
14334
  );
14374
- const versions = (dataResult || []).map((row) => this.parseVersionRow(row));
14335
+ const versions = (dataResult || []).flatMap((row) => {
14336
+ try {
14337
+ return [this.parseVersionRow(row)];
14338
+ } catch (err) {
14339
+ this.logger?.warn?.("[PG] Failed to map workspace version row, skipping", { id: row?.id, error: err });
14340
+ return [];
14341
+ }
14342
+ });
14375
14343
  return {
14376
14344
  versions,
14377
14345
  total,
@@ -14458,38 +14426,13 @@ var WorkspacesPG = class _WorkspacesPG extends storage.WorkspacesStorage {
14458
14426
  // ==========================================================================
14459
14427
  // Private Helper Methods
14460
14428
  // ==========================================================================
14461
- parseJson(value, fieldName) {
14462
- if (!value) return void 0;
14463
- if (typeof value !== "string") return value;
14464
- try {
14465
- return JSON.parse(value);
14466
- } catch (error$1) {
14467
- if (error$1 instanceof error.MastraError) throw error$1;
14468
- const details = {
14469
- value: value.length > 100 ? value.substring(0, 100) + "..." : value
14470
- };
14471
- if (fieldName) {
14472
- details.field = fieldName;
14473
- }
14474
- throw new error.MastraError(
14475
- {
14476
- id: storage.createStorageErrorId("PG", "PARSE_JSON", "INVALID_JSON"),
14477
- domain: error.ErrorDomain.STORAGE,
14478
- category: error.ErrorCategory.SYSTEM,
14479
- text: `Failed to parse JSON${fieldName ? ` for field "${fieldName}"` : ""}: ${error$1 instanceof Error ? error$1.message : "Unknown error"}`,
14480
- details
14481
- },
14482
- error$1
14483
- );
14484
- }
14485
- }
14486
14429
  parseWorkspaceRow(row) {
14487
14430
  return {
14488
14431
  id: row.id,
14489
14432
  status: row.status,
14490
14433
  activeVersionId: row.activeVersionId,
14491
14434
  authorId: row.authorId,
14492
- metadata: this.parseJson(row.metadata, "metadata"),
14435
+ metadata: parseJsonResilient(row.metadata),
14493
14436
  createdAt: new Date(row.createdAtZ || row.createdAt),
14494
14437
  updatedAt: new Date(row.updatedAtZ || row.updatedAt)
14495
14438
  };
@@ -14501,15 +14444,15 @@ var WorkspacesPG = class _WorkspacesPG extends storage.WorkspacesStorage {
14501
14444
  versionNumber: row.versionNumber,
14502
14445
  name: row.name,
14503
14446
  description: row.description,
14504
- filesystem: this.parseJson(row.filesystem, "filesystem"),
14505
- sandbox: this.parseJson(row.sandbox, "sandbox"),
14506
- mounts: this.parseJson(row.mounts, "mounts"),
14507
- search: this.parseJson(row.search, "search"),
14508
- skills: this.parseJson(row.skills, "skills"),
14509
- tools: this.parseJson(row.tools, "tools"),
14447
+ filesystem: parseJsonResilient(row.filesystem),
14448
+ sandbox: parseJsonResilient(row.sandbox),
14449
+ mounts: parseJsonResilient(row.mounts),
14450
+ search: parseJsonResilient(row.search),
14451
+ skills: parseJsonResilient(row.skills),
14452
+ tools: parseJsonResilient(row.tools),
14510
14453
  autoSync: Boolean(row.autoSync),
14511
14454
  operationTimeout: row.operationTimeout != null ? Number(row.operationTimeout) : void 0,
14512
- changedFields: this.parseJson(row.changedFields, "changedFields"),
14455
+ changedFields: parseJsonResilient(row.changedFields),
14513
14456
  changeMessage: row.changeMessage,
14514
14457
  createdAt: new Date(row.createdAtZ || row.createdAt)
14515
14458
  };