/**
 * Task adapter registry — tasks-board-engine.
 *
 * Exports:
 *  - TASK_ADAPTER_IDS: readonly list of supported adapter IDs
 *  - getTaskAdapter(id): returns the adapter or throws
 */
import { trelloAdapter } from './trello'
import { asanaAdapter } from './asana'
import { jiraAdapter } from './jira'
import { mondayAdapter } from './monday'
import { clickupAdapter } from './clickup'
import { slackAdapter } from './slack'
import type { TaskAdapter } from './types'

const adapters: Map<string, TaskAdapter> = new Map([
  [trelloAdapter.id, trelloAdapter],
  [asanaAdapter.id, asanaAdapter],
  [jiraAdapter.id, jiraAdapter],
  [mondayAdapter.id, mondayAdapter],
  [clickupAdapter.id, clickupAdapter],
  [slackAdapter.id, slackAdapter],
])

export const TASK_ADAPTER_IDS = [
  'trello',
  'asana',
  'jira',
  'monday',
  'clickup',
  'slack',
] as const

export function getTaskAdapter(id: string): TaskAdapter {
  const adapter = adapters.get(id)
  if (!adapter) throw new Error(`Unknown task adapter: ${id}`)
  return adapter
}
