import { sqliteTable, text, integer, index } from 'drizzle-orm/sqlite-core'
import { sql } from 'drizzle-orm'

export const agents = sqliteTable(
  'agents',
  {
    id: text('id').primaryKey(),
    name: text('name').notNull(),
    description: text('description').notNull().default(''),
    model: text('model').notNull().default('claude-sonnet-4-6'),
    permissionMode: text('permission_mode').notNull().default('confirm'),
    isMain: integer('is_main').notNull().default(0),
    parentId: text('parent_id'),
    enabled: integer('enabled').notNull().default(1),
    instructions: text('instructions').notNull().default(''),
    soul: text('soul').notNull().default(''),
    identity: text('identity').notNull().default(''),
    toolsConfig: text('tools_config').notNull().default('{}'),
    userId: text('user_id').notNull().default(''),
    createdAt: text('created_at').notNull().default(sql`(datetime('now'))`),
    updatedAt: text('updated_at').notNull().default(sql`(datetime('now'))`),
  },
  (t) => ({
    userIdx: index('idx_agents_user').on(t.userId, t.updatedAt),
  }),
)

export type Agent = typeof agents.$inferSelect
export type NewAgent = typeof agents.$inferInsert
