/**
 * Permission Gate Extension
 *
 * Prompts for confirmation before running potentially dangerous bash commands.
 * Patterns checked: rm -rf, sudo, chmod/chown 777
 */

import type { ExtensionAPI } from 'shortcutxl/app';

export default function (shortcut: ExtensionAPI) {
  const dangerousPatterns = [/\brm\s+(-rf?|--recursive)/i, /\bsudo\b/i, /\b(chmod|chown)\b.*777/i];

  shortcut.on('tool_call', async (event, ctx) => {
    if (event.toolName !== 'bash') return undefined;

    const command = event.input.command as string;
    const isDangerous = dangerousPatterns.some((p) => p.test(command));

    if (isDangerous) {
      if (!ctx.hasUI) {
        // In non-interactive mode, block by default
        return { block: true, reason: 'Dangerous command blocked (no UI for confirmation)' };
      }

      const choice = await ctx.ui.select(`⚠️ Dangerous command:\n\n  ${command}\n\nAllow?`, [
        'Yes',
        'No'
      ]);

      if (choice !== 'Yes') {
        return { block: true, reason: 'Blocked by user' };
      }
    }

    return undefined;
  });
}
