import { Schema, Document, Types } from 'mongoose'; // @ts-ignore export interface IAgent extends Omit { id: string; name?: string; description?: string; instructions?: string; avatar?: { filepath: string; source: string; }; provider: string; model: string; model_parameters?: Record; artifacts?: string; access_level?: number; tools?: string[]; tool_kwargs?: Array; actions?: string[]; author: Types.ObjectId; authorName?: string; hide_sequential_outputs?: boolean; end_after_tools?: boolean; agent_ids?: string[]; isCollaborative?: boolean; conversation_starters?: string[]; tool_resources?: unknown; projectIds?: Types.ObjectId[]; } const agentSchema = new Schema( { id: { type: String, index: true, unique: true, required: true, }, name: { type: String, }, description: { type: String, }, instructions: { type: String, }, avatar: { type: { filepath: String, source: String, }, default: undefined, }, provider: { type: String, required: true, }, model: { type: String, required: true, }, model_parameters: { type: Object, }, artifacts: { type: String, }, access_level: { 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, }, }, { timestamps: true, }, ); export default agentSchema;