/** * AI Tool Types and Registry * * Defines supported AI coding tools and which command templates they can use. */ /** * Supported AI coding tools */ export type AITool = "claude-code" | "cursor" | "opencode" | "codex" | "kilo" | "kiro" | "gemini" | "antigravity" | "windsurf" | "qoder" | "codebuddy" | "copilot" | "droid" | "pi"; /** * Template directory categories */ export type TemplateDir = "common" | "claude" | "cursor" | "opencode" | "codex" | "kilo" | "kiro" | "gemini" | "antigravity" | "windsurf" | "qoder" | "codebuddy" | "copilot" | "droid" | "pi"; /** * CLI flag names for platform selection (e.g., --claude, --cursor, --kilo, --kiro, --gemini, --antigravity) * Must match keys in InitOptions (src/commands/init.ts) */ export type CliFlag = "claude" | "cursor" | "opencode" | "codex" | "kilo" | "kiro" | "gemini" | "antigravity" | "windsurf" | "qoder" | "codebuddy" | "copilot" | "droid" | "pi"; /** * Template context for placeholder resolution. * Controls how common templates are rendered per platform. */ export interface TemplateContext { /** Prefix for cross-referencing other commands/skills */ cmdRefPrefix: "/trellis:" | "/trellis-" | "$" | "/"; /** Description of AI executor actions shown in role tables */ executorAI: "Bash scripts or Task calls" | "Bash scripts or tool calls" | "Bash scripts or file reads"; /** Label for user-invocable actions */ userActionLabel: "Slash commands" | "Skills" | "Workflows" | "Prompts"; /** Platform supports spawning sub-agents with isolated context */ agentCapable: boolean; /** Platform has hook system (SessionStart, PreToolUse) */ hasHooks: boolean; /** * CLI flag value for this platform (e.g. "claude", "codex", "kiro"). * Substituted into template commands via {{CLI_FLAG}} so rendered skill / * command files can pass `--platform ` to scripts that need to know * the invoking platform, removing the need to re-detect at runtime. * Duplicates the top-level `AIToolConfig.cliFlag` for convenience — the * invariant is maintained in `AI_TOOLS` config blocks. */ cliFlag: CliFlag; } /** * Configuration for an AI tool */ export interface AIToolConfig { /** Display name of the tool */ name: string; /** Command template directory names to include */ templateDirs: TemplateDir[]; /** Config directory name in the project root (e.g., ".claude") */ configDir: string; /** * Whether the platform supports the shared `.agents/skills/` layer * (agentskills.io open standard). When true, `.agents/skills` is added * to the platform's managed paths automatically. */ supportsAgentSkills?: boolean; /** Additional managed paths beyond configDir (e.g., .github/hooks for Copilot) */ extraManagedPaths?: string[]; /** CLI flag name for --flag options (e.g., "claude" for --claude) */ cliFlag: CliFlag; /** Whether this tool is checked by default in interactive init prompt */ defaultChecked: boolean; /** Whether this tool uses Python hooks (affects Windows encoding detection) */ hasPythonHooks: boolean; /** Template context for placeholder resolution in common templates */ templateContext: TemplateContext; } /** * Registry of all supported AI tools and their configurations. * This is the single source of truth for platform data. * * When adding a new platform, add an entry here and create: * 1. src/configurators/{platform}.ts — configure function * 2. src/templates/{platform}/ — template files * 3. Register in src/configurators/index.ts — PLATFORM_FUNCTIONS * 4. Add CLI flag in src/cli/index.ts * 5. Add to InitOptions in src/commands/init.ts */ export declare const AI_TOOLS: Record; /** * Get the configuration for a specific AI tool */ export declare function getToolConfig(tool: AITool): AIToolConfig; /** * Get all managed paths for a specific tool. */ export declare function getManagedPaths(tool: AITool): string[]; /** * Get template directories for a specific tool */ export declare function getTemplateDirs(tool: AITool): TemplateDir[]; //# sourceMappingURL=ai-tools.d.ts.map