'use strict'; const test = require('node:test'); const assert = require('node:assert/strict'); async function loadUtils() { return import('../../webui/src/features/chatHistory/chatHistoryUtils.js'); } test('chat history strict parser merges current input file placeholder', async () => { const { buildListModeMessages, } = await loadUtils(); const t = (key) => key; const item = { messages: [{ role: 'user', content: 'Continue from the latest state in the attached DS2API_HISTORY.txt context. Treat it as the current working state and answer the latest user request directly.', }], history_text: [ '<|begin▁of▁sentence|>', '<|User|>hello', '<|Assistant|>hi<|end▁of▁sentence|>', ].join(''), }; const result = buildListModeMessages(item, t); assert.equal(result.historyMerged, true); assert.deepEqual(result.messages, [ { role: 'user', content: 'hello' }, { role: 'assistant', content: 'hi' }, ]); }); test('chat history strict parser inserts history after system messages', async () => { const { buildListModeMessages, } = await loadUtils(); const t = (key) => key; const item = { messages: [ { role: 'system', content: 'policy' }, { role: 'user', content: 'latest' }, ], history_text: [ '<|begin▁of▁sentence|>', '<|User|>old', '<|Assistant|>done<|end▁of▁sentence|>', ].join(''), }; const result = buildListModeMessages(item, t); assert.equal(result.historyMerged, true); assert.deepEqual(result.messages, [ { role: 'system', content: 'policy' }, { role: 'user', content: 'old' }, { role: 'assistant', content: 'done' }, { role: 'user', content: 'latest' }, ]); }); test('chat history transcript parser replaces current input file placeholder', async () => { const { buildListModeMessages, } = await loadUtils(); const t = (key) => key; const item = { messages: [{ role: 'user', content: 'Continue from the latest state in the attached DS2API_HISTORY.txt context. Treat it as the current working state and answer the latest user request directly.', }], history_text: [ '# DS2API_HISTORY.txt', 'Prior conversation history and tool progress.', '', '=== 1. SYSTEM ===', 'policy', '', '=== 2. USER ===', 'hello', '', '=== 3. ASSISTANT ===', 'hi', '', '=== 4. TOOL ===', '[name=search_web tool_call_id=call_1]', '{"ok":true}', '', '=== 5. USER ===', 'latest', '', ].join('\n'), }; const result = buildListModeMessages(item, t); assert.equal(result.historyMerged, true); assert.deepEqual(result.messages, [ { role: 'system', content: 'policy' }, { role: 'user', content: 'hello' }, { role: 'assistant', content: 'hi' }, { role: 'tool', content: '[name=search_web tool_call_id=call_1]\n{"ok":true}' }, { role: 'user', content: 'latest' }, ]); });