const TURNKEY_SUBCOMMANDS = [ 'start', 'onboard', 'clarify', 'design', 'spec', 'tdd', 'develop', 'test', 'review', 'ship', ]; function buildUsageMarkdown() { return [ '# Turnkey Slash', '', 'Usage:', '- `/turnkey start `', '- `/turnkey onboard`', '- `/turnkey clarify`', '- `/turnkey design`', '- `/turnkey spec`', '- `/turnkey tdd`', '- `/turnkey develop`', '- `/turnkey test`', '- `/turnkey review`', '- `/turnkey ship`', '- `/turnkey help`', ].join('\n'); } function buildHelpResponse(content) { return { type: 'builtin', action: 'help', data: { content, format: 'markdown', }, }; } export function parseTurnkeySlashArgs(args = []) { const [subcommandRaw, ...rest] = Array.isArray(args) ? args : []; const subcommand = String(subcommandRaw || '').trim().toLowerCase(); if (!subcommand || subcommand === 'help') { return { action: 'help' }; } if (!TURNKEY_SUBCOMMANDS.includes(subcommand)) { return { action: 'help', error: `Unknown /turnkey action: \`${subcommand}\``, }; } return { action: 'forward', subcommand, args: rest, }; } export async function executeTurnkeySlashCommand(args = []) { const parsed = parseTurnkeySlashArgs(args); if (parsed.action === 'help') { const content = parsed.error ? `${parsed.error}\n\n${buildUsageMarkdown()}` : buildUsageMarkdown(); return buildHelpResponse(content); } const forwarded = [`/turnkey:${parsed.subcommand}`, ...parsed.args] .join(' ') .trim(); return { type: 'custom', content: forwarded, hasFileIncludes: false, hasBashCommands: false, }; } export { buildUsageMarkdown as getTurnkeySlashUsage };