import { cli, Strategy } from '@jackwener/opencli/registry';
export const extractCodeCommand = cli({
    site: 'cursor',
    name: 'extract-code',
    access: 'read',
    description: 'Extract multi-line code blocks from the current Cursor conversation',
    domain: 'localhost',
    strategy: Strategy.UI,
    browser: true,
    args: [],
    columns: ['Code'],
    func: async (page) => {
        const blocks = await page.evaluate(`
      (function() {
        // Find standard pre/code blocks
        let elements = Array.from(document.querySelectorAll('pre code, .markdown-root pre'));
        
        // Fallback to Monaco editor content inside the UI
        if (elements.length === 0) {
          elements = Array.from(document.querySelectorAll('.monaco-editor'));
        }
        
        // Generic fallback to any code tag that spans multiple lines
        if (elements.length === 0) {
          elements = Array.from(document.querySelectorAll('code')).filter(c => c.innerText.includes('\\n'));
        }
        
        return elements.map(el => el.innerText || el.textContent || '').filter(text => text.trim().length > 0);
      })()
    `);
        if (!blocks || blocks.length === 0) {
            return [{ Code: 'No code blocks found in Cursor.' }];
        }
        return blocks.map((code) => ({ Code: code }));
    },
});
