Pinned pi SDK 0.85.1 bridge, Python supervisor, artifact exporter, scripted backend peer, image checks and boundary checks under agent/**. Review findings F1-F3 are recorded in docs/implementation/PI_AGENT_REVIEW.md.
17 lines
1.2 KiB
TypeScript
17 lines
1.2 KiB
TypeScript
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'));
|
|
}
|
|
});
|