diff --git a/backend/src/mastra/tools/investigate-tool.ts b/backend/src/mastra/tools/investigate-tool.ts index 7f56c43..7746ef2 100644 --- a/backend/src/mastra/tools/investigate-tool.ts +++ b/backend/src/mastra/tools/investigate-tool.ts @@ -12,6 +12,9 @@ const investigateInputSchema = z.object({ ), primary_keys: z .record(z.string(), z.string()) + .refine((v) => Object.keys(v).length > 0, { + message: "primary_keys must include at least one primary-key value", + }) .describe( "REQUIRED: the primary key column value(s) for this entity. e.g. {\"Company Name\": \"Stripe\"} or {\"First Name\": \"John\", \"Last Name\": \"Doe\"}. You MUST provide at least the primary key values you have found.", ), diff --git a/backend/src/pipeline/types.ts b/backend/src/pipeline/types.ts index 0968c2c..e0b95f9 100644 --- a/backend/src/pipeline/types.ts +++ b/backend/src/pipeline/types.ts @@ -61,10 +61,12 @@ export const datasetSchemaSchema = z } const pkNames = pkCols.map((c) => c.name); - const declaredPk = Array.isArray(data.primary_key) + const declaredPkRaw = Array.isArray(data.primary_key) ? data.primary_key : [data.primary_key]; + const declaredPk = [...new Set(declaredPkRaw)]; if ( + declaredPk.length !== declaredPkRaw.length || declaredPk.length !== pkNames.length || !declaredPk.every((n) => pkNames.includes(n)) ) {