import * as fs from 'node:fs';
import { cli, Strategy } from '@jackwener/opencli/registry';
export const exportCommand = cli({
    site: 'chatwise',
    name: 'export',
    access: 'read',
    description: 'Export the current ChatWise conversation to a Markdown file',
    domain: 'localhost',
    strategy: Strategy.UI,
    browser: true,
    args: [
        { name: 'output', required: false, help: 'Output file (default: /tmp/chatwise-export.md)' },
    ],
    columns: ['Status', 'File', 'Messages'],
    func: async (page, kwargs) => {
        const outputPath = kwargs.output || '/tmp/chatwise-export.md';
        const md = await page.evaluate(`
      (function() {
        const selectors = [
          '[data-message-id]',
          '[class*="message"]',
          '[class*="chat-item"]',
          '[class*="bubble"]',
        ];
        
        for (const sel of selectors) {
          const nodes = document.querySelectorAll(sel);
          if (nodes.length > 0) {
            return Array.from(nodes).map((n, i) => '## Message ' + (i + 1) + '\\n\\n' + (n.innerText || n.textContent).trim()).join('\\n\\n---\\n\\n');
          }
        }
        
        const main = document.querySelector('main, [role="main"], [class*="chat-container"]');
        if (main) return main.innerText || main.textContent;
        return document.body.innerText;
      })()
    `);
        fs.writeFileSync(outputPath, '# ChatWise Conversation Export\\n\\n' + md);
        return [
            {
                Status: 'Success',
                File: outputPath,
                Messages: md.split('## Message').length - 1,
            },
        ];
    },
});
