import test from 'node:test';
import assert from 'node:assert/strict';
import { mkdtempSync, rmSync } from 'node:fs';
import { tmpdir } from 'node:os';
import { join } from 'node:path';
import { IntelligenceStore } from '../lib/intelligence-store.mjs';

test('records LLM ideas as stable predictions', async (t) => {
  const directory = mkdtempSync(join(tmpdir(), 'intelligence-store-'));
  t.after(() => rmSync(directory, { recursive: true, force: true }));

  const store = await new IntelligenceStore(join(directory, 'intelligence.db')).init();
  if (!store.available) {
    t.skip(`node:sqlite unavailable: ${store.reason}`);
    return;
  }

  store.recordRun({
    meta: {
      timestamp: '2026-07-04T10:17:51.011Z',
      sourcesOk: 22,
      sourcesDegraded: 7,
      sourcesFailed: 0,
    },
    ideasSource: 'llm',
    ideas: [{
      title: 'Gold safe-haven hedge',
      type: 'HEDGE',
      ticker: 'GLD',
      confidence: 'MEDIUM',
      rationale: 'Geopolitical risk remains elevated.',
      risk: 'Risk appetite recovers.',
      horizon: 'Weeks',
      signals: ['geopolitical escalation'],
      source: 'llm',
    }],
  }, { summary: { direction: 'risk-off' } });

  const result = store.listPredictions({ limit: 10 });
  assert.equal(result.available, true);
  assert.equal(result.predictions.length, 1);
  assert.equal(result.predictions[0].title, 'Gold safe-haven hedge');
  assert.match(result.predictions[0].stable_id, /^[a-f0-9]{24}$/);
});
