import test from 'node:test'; import assert from 'node:assert/strict'; import { contextToModelRequest, modelResponseToAssistantMessage, createModelProvider } from '../model-provider.js'; const descriptor = { id: 'scripted', context_window_tokens: 1000, max_output_tokens: 100 }; test('usage, stop reasons and opaque continuation survive SDK translation', () => { const { model } = createModelProvider(descriptor, async () => { throw Error(); }); for (const reason of ['stop', 'tool_calls', 'length'] as const) { const response = { content: [{ type: 'text' as const, text: 'hi' }, { type: 'tool_call' as const, id: 'sdk_1', name: 'read', arguments: { path: '/work/x' } }], stop_reason: reason, usage: { input_tokens: 7, output_tokens: 3 }, provider_state: '' }; const message = modelResponseToAssistantMessage(response, model); assert.equal(message.usage.totalTokens, 10); assert.equal(message.stopReason, reason === 'tool_calls' ? 'toolUse' : reason); const request = contextToModelRequest({ systemPrompt: 'TRUSTED', messages: [message] }); assert.deepEqual(request.messages[0], { role: 'assistant', content: response.content, provider_state: '' }); assert(!JSON.stringify(request).includes('TRUSTED')); } });