import type { ClaudePlugin } from "../types/claude" import type { OpenCodeBundle } from "../types/opencode" import type { CodexBundle } from "../types/codex" import type { PiBundle } from "../types/pi" import { convertClaudeToOpenCode, type ClaudeToOpenCodeOptions } from "../converters/claude-to-opencode" import { convertClaudeToCodex } from "../converters/claude-to-codex" import { convertClaudeToPi } from "../converters/claude-to-pi" import { writeOpenCodeBundle } from "./opencode" import { writeCodexBundle } from "./codex" import { writePiBundle } from "./pi" export type TargetHandler = { name: string implemented: boolean convert: (plugin: ClaudePlugin, options: ClaudeToOpenCodeOptions) => TBundle | null write: (outputRoot: string, bundle: TBundle) => Promise } export const targets: Record = { opencode: { name: "opencode", implemented: true, convert: convertClaudeToOpenCode, write: writeOpenCodeBundle, }, codex: { name: "codex", implemented: true, convert: convertClaudeToCodex as TargetHandler["convert"], write: writeCodexBundle as TargetHandler["write"], }, pi: { name: "pi", implemented: true, convert: convertClaudeToPi as TargetHandler["convert"], write: writePiBundle as TargetHandler["write"], }, }