import { request } from './client'

export interface SkillInfo {
  name: string
  description: string
}

export interface SkillCategory {
  name: string
  description: string
  skills: SkillInfo[]
}

export interface SkillListResponse {
  categories: SkillCategory[]
}

export interface SkillFileEntry {
  path: string
  name: string
  isDir: boolean
}

export interface MemoryData {
  memory: string
  user: string
  memory_mtime: number | null
  user_mtime: number | null
}

export async function fetchSkills(): Promise<SkillCategory[]> {
  const res = await request<SkillListResponse>('/api/skills')
  return res.categories
}

export async function fetchSkillContent(skillPath: string): Promise<string> {
  const res = await request<{ content: string }>(`/api/skills/${skillPath}`)
  return res.content
}

export async function fetchSkillFiles(category: string, skill: string): Promise<SkillFileEntry[]> {
  const res = await request<{ files: SkillFileEntry[] }>(`/api/skills/${category}/${skill}/files`)
  return res.files
}

export async function fetchMemory(): Promise<MemoryData> {
  return request<MemoryData>('/api/memory')
}

export async function saveMemory(section: 'memory' | 'user', content: string): Promise<void> {
  await request('/api/memory', {
    method: 'POST',
    body: JSON.stringify({ section, content }),
  })
}
