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', 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(); return (await Agent.create(initialAgentData)).toObject();
}; };

View file

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

View file

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