import type { ClaudePlugin } from "../types/claude" import type { OpenCodeBundle } from "../types/opencode" import type { CodexBundle } from "../types/codex" import type { DroidBundle } from "../types/droid" import type { CursorBundle } from "../types/cursor" import type { PiBundle } from "../types/pi" import type { CopilotBundle } from "../types/copilot" import type { GeminiBundle } from "../types/gemini" import { convertClaudeToOpenCode, type ClaudeToOpenCodeOptions } from "../converters/claude-to-opencode" import { convertClaudeToCodex } from "../converters/claude-to-codex" import { convertClaudeToDroid } from "../converters/claude-to-droid" import { convertClaudeToCursor } from "../converters/claude-to-cursor" import { convertClaudeToPi } from "../converters/claude-to-pi" import { convertClaudeToCopilot } from "../converters/claude-to-copilot" import { convertClaudeToGemini } from "../converters/claude-to-gemini" import { writeOpenCodeBundle } from "./opencode" import { writeCodexBundle } from "./codex" import { writeDroidBundle } from "./droid" import { writeCursorBundle } from "./cursor" import { writePiBundle } from "./pi" import { writeCopilotBundle } from "./copilot" import { writeGeminiBundle } from "./gemini" 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"], }, droid: { name: "droid", implemented: true, convert: convertClaudeToDroid as TargetHandler["convert"], write: writeDroidBundle as TargetHandler["write"], }, cursor: { name: "cursor", implemented: true, convert: convertClaudeToCursor as TargetHandler["convert"], write: writeCursorBundle as TargetHandler["write"], }, pi: { name: "pi", implemented: true, convert: convertClaudeToPi as TargetHandler["convert"], write: writePiBundle as TargetHandler["write"], }, copilot: { name: "copilot", implemented: true, convert: convertClaudeToCopilot as TargetHandler["convert"], write: writeCopilotBundle as TargetHandler["write"], }, gemini: { name: "gemini", implemented: true, convert: convertClaudeToGemini as TargetHandler["convert"], write: writeGeminiBundle as TargetHandler["write"], }, }