import { Schema } from 'mongoose'; import type { IAgent } from '~/types'; const agentSchema = new Schema( { id: { type: String, index: true, unique: true, required: true, }, name: { type: String, }, description: { type: String, }, instructions: { type: String, }, avatar: { type: Schema.Types.Mixed, default: undefined, }, provider: { type: String, required: true, }, model: { type: String, required: true, }, model_parameters: { type: Object, }, artifacts: { type: String, }, access_level: { type: Number, }, recursion_limit: { type: Number, }, tools: { type: [String], default: undefined, }, tool_kwargs: { type: [{ type: Schema.Types.Mixed }], }, actions: { type: [String], default: undefined, }, author: { type: Schema.Types.ObjectId, ref: 'User', required: true, }, authorName: { type: String, default: undefined, }, hide_sequential_outputs: { type: Boolean, }, end_after_tools: { type: Boolean, }, agent_ids: { type: [String], }, isCollaborative: { type: Boolean, default: undefined, }, conversation_starters: { type: [String], default: [], }, tool_resources: { type: Schema.Types.Mixed, default: {}, }, projectIds: { type: [Schema.Types.ObjectId], ref: 'Project', index: true, }, versions: { type: [Schema.Types.Mixed], default: [], }, }, { timestamps: true, }, ); agentSchema.index({ updatedAt: -1, _id: 1 }); export default agentSchema;