fix: make support_contact field a nested object rather than a sub-document

This commit is contained in:
Danny Avila 2025-07-15 10:12:42 -04:00
parent 39f4e725e5
commit b750f52727
No known key found for this signature in database
GPG key ID: BF31EEB2C5CA0956
3 changed files with 23 additions and 14 deletions

View file

@ -38,6 +38,15 @@ const createAgent = async (agentData) => {
],
category: agentData.category || 'general',
};
// Handle empty support_contact object
if (agentData.support_contact && Object.keys(agentData.support_contact).length === 0) {
initialAgentData.support_contact = {
name: '',
email: '',
};
}
return (await Agent.create(initialAgentData)).toObject();
};

View file

@ -27,6 +27,14 @@ export const agentToolResourcesSchema = z
})
.optional();
/** Support contact schema for agent */
export const agentSupportContactSchema = z
.object({
name: z.string().optional(),
email: z.string().email().optional(),
})
.optional();
/** Base agent schema with all common fields */
export const agentBaseSchema = z.object({
name: z.string().nullable().optional(),
@ -42,6 +50,8 @@ export const agentBaseSchema = z.object({
recursion_limit: z.number().optional(),
conversation_starters: z.array(z.string()).optional(),
tool_resources: agentToolResourcesSchema,
support_contact: agentSupportContactSchema,
category: z.string().optional(),
});
/** Create schema extends base with required fields for creation */

View file

@ -99,21 +99,11 @@ const agentSchema = new Schema<IAgent>(
default: 'general',
},
support_contact: {
type: {
name: {
type: String,
trim: true,
},
email: {
type: String,
match: [
/^\w+([.-]?\w+)*@\w+([.-]?\w+)*(\.\w{2,3})+$/,
'Please enter a valid email address.',
],
trim: true,
},
type: Schema.Types.Mixed,
default: {
name: '',
email: '',
},
default: {},
},
is_promoted: {
type: Boolean,