import { cli, Strategy } from '@jackwener/opencli/registry';
export const historyCommand = cli({
    site: 'chatwise',
    name: 'history',
    access: 'read',
    description: 'List conversation history in ChatWise sidebar',
    domain: 'localhost',
    strategy: Strategy.UI,
    browser: true,
    args: [],
    columns: ['Index', 'Title'],
    func: async (page) => {
        const items = await page.evaluate(`
      (function() {
        const results = [];
        const selectors = [
          '[class*="sidebar"] [class*="item"]',
          '[class*="conversation-list"] a',
          '[class*="chat-list"] > *',
          'nav a',
          'aside a',
          '[role="listbox"] [role="option"]',
        ];
        
        for (const sel of selectors) {
          const nodes = document.querySelectorAll(sel);
          if (nodes.length > 0) {
            nodes.forEach((n, i) => {
              const text = (n.textContent || '').trim().substring(0, 100);
              if (text) results.push({ Index: i + 1, Title: text });
            });
            break;
          }
        }
        
        return results;
      })()
    `);
        if (items.length === 0) {
            return [{ Index: 0, Title: 'No history found. Ensure the sidebar is visible.' }];
        }
        const dateHeaders = /^(today|yesterday|last week|last month|last year|this week|this month|older|previous \d+ days|\d+ days ago)$/i;
        const numericOnly = /^[\d\s]+$/;
        const modelPath = /^[\w.-]+\/[\w.-]/;
        const seen = new Set();
        const deduped = items.filter((item) => {
            const t = item.Title.trim();
            if (dateHeaders.test(t))
                return false;
            if (numericOnly.test(t))
                return false;
            if (modelPath.test(t))
                return false;
            if (seen.has(t))
                return false;
            seen.add(t);
            return true;
        }).map((item, i) => ({ Index: i + 1, Title: item.Title }));
        return deduped;
    },
});
