Download packages/kosong/test/tool-message-conversion.test.ts from SaylorTwift/kimi-code: direct link, hf CLI and curl.
- Browser
- Download file 2.57 kB
-
https://huggingface.co/SaylorTwift/kimi-code/resolve/main/packages/kosong/test/tool-message-conversion.test.ts
- Command line
-
hf download hf://SaylorTwift/kimi-code/packages/kosong/test/tool-message-conversion.test.ts
-
curl -L -o tool-message-conversion.test.ts https://huggingface.co/SaylorTwift/kimi-code/resolve/main/packages/kosong/test/tool-message-conversion.test.ts
2.57 kB
| import type { Message } from '#/message'; | |
| import { convertToolMessageContent } from '#/providers/openai-common'; | |
| import { describe, expect, test } from 'vitest'; | |
| describe('convertToolMessageContent', () => { | |
| test('extract_text merges multiple text parts into a single string', () => { | |
| const msg: Message = { | |
| role: 'tool', | |
| content: [ | |
| { type: 'text', text: 'Result: ' }, | |
| { type: 'text', text: '42' }, | |
| ], | |
| toolCalls: [], | |
| toolCallId: 'tc_001', | |
| }; | |
| const result = convertToolMessageContent(msg, 'extract_text'); | |
| expect(typeof result).toBe('string'); | |
| expect(result).toBe('Result: 42'); | |
| }); | |
| test('extract_text returns empty string for empty content', () => { | |
| const msg: Message = { | |
| role: 'tool', | |
| content: [], | |
| toolCalls: [], | |
| toolCallId: 'tc_002', | |
| }; | |
| const result = convertToolMessageContent(msg, 'extract_text'); | |
| expect(result).toBe(''); | |
| }); | |
| test('extract_text skips non-text content parts', () => { | |
| const msg: Message = { | |
| role: 'tool', | |
| content: [ | |
| { type: 'text', text: 'Before' }, | |
| { type: 'image_url', imageUrl: { url: 'data:image/png;base64,xxx' } }, | |
| { type: 'text', text: 'After' }, | |
| ], | |
| toolCalls: [], | |
| toolCallId: 'tc_003', | |
| }; | |
| const result = convertToolMessageContent(msg, 'extract_text'); | |
| expect(result).toBe('BeforeAfter'); | |
| }); | |
| test('null conversion returns an array of OpenAI content parts', () => { | |
| const msg: Message = { | |
| role: 'tool', | |
| content: [ | |
| { type: 'text', text: 'hello' }, | |
| { type: 'text', text: 'world' }, | |
| ], | |
| toolCalls: [], | |
| toolCallId: 'tc_004', | |
| }; | |
| const result = convertToolMessageContent(msg, null); | |
| expect(Array.isArray(result)).toBe(true); | |
| expect(result).toHaveLength(2); | |
| if (Array.isArray(result)) { | |
| expect(result[0]).toMatchObject({ type: 'text', text: 'hello' }); | |
| expect(result[1]).toMatchObject({ type: 'text', text: 'world' }); | |
| } | |
| }); | |
| test('null conversion filters out ThinkPart (returns null from convertContentPart)', () => { | |
| const msg: Message = { | |
| role: 'tool', | |
| content: [ | |
| { type: 'text', text: 'visible' }, | |
| { type: 'think', think: 'hidden reasoning' }, | |
| ], | |
| toolCalls: [], | |
| toolCallId: 'tc_005', | |
| }; | |
| const result = convertToolMessageContent(msg, null); | |
| if (Array.isArray(result)) { | |
| expect(result).toHaveLength(1); | |
| expect(result[0]).toMatchObject({ type: 'text', text: 'visible' }); | |
| } | |
| }); | |
| }); | |