import test from 'node:test';
import assert from 'node:assert/strict';
import { buildAnthropicRequestBody, normalizeAnthropicMessages } from './anthropicMessageHelpers.js';

test('normalizeAnthropicMessages merges adjacent same-role turns', () => {
  const m = normalizeAnthropicMessages([
    { role: 'user', content: 'a' },
    { role: 'user', content: 'b' },
  ]);
  assert.equal(m.length, 1);
  assert.equal(m[0].role, 'user');
  assert.equal(m[0].content, 'a\n\nb');
});

test('normalizeAnthropicMessages prepends user if thread starts with assistant', () => {
  const m = normalizeAnthropicMessages([{ role: 'assistant', content: 'hi' }]);
  assert.equal(m[0].role, 'user');
  assert.equal(m[1].role, 'assistant');
});

test('buildAnthropicRequestBody includes system and messages array', () => {
  const b = buildAnthropicRequestBody({
    model: 'claude-3-haiku-20240307',
    system: 'You are helpful.',
    messages: [{ role: 'user', content: 'Hello' }],
    maxTokens: 256,
  });
  assert.equal(b.model, 'claude-3-haiku-20240307');
  assert.equal(b.max_tokens, 256);
  assert.equal(b.system, 'You are helpful.');
  assert.ok(Array.isArray(b.messages));
  assert.equal((b.messages as { role: string }[])[0].role, 'user');
});
