mirror of
https://github.com/Youzini-afk/ST-Bionic-Memory-Ecology.git
synced 2026-06-14 02:40:45 +08:00
90 lines
2.9 KiB
JavaScript
90 lines
2.9 KiB
JavaScript
import assert from 'node:assert/strict';
|
|
|
|
import {
|
|
buildPersistedReuseRecallInput,
|
|
isActiveRecallInputSource,
|
|
isNoNewUserGenerationType,
|
|
isTrustedUserFloorRecallSource,
|
|
normalizeRecallGenerationType,
|
|
normalizeRecallTargetUserMessageIndex,
|
|
normalizeRecallTextForRuntime,
|
|
} from '../retrieval/recall-controller.js';
|
|
|
|
assert.equal(normalizeRecallGenerationType(' regenerate '), 'regenerate');
|
|
assert.equal(normalizeRecallGenerationType(''), 'normal');
|
|
assert.equal(normalizeRecallGenerationType(null), 'normal');
|
|
|
|
assert.equal(normalizeRecallTargetUserMessageIndex(3.9), 3);
|
|
assert.equal(normalizeRecallTargetUserMessageIndex(Number.NaN), null);
|
|
assert.equal(normalizeRecallTargetUserMessageIndex('3'), null);
|
|
|
|
assert.equal(normalizeRecallTextForRuntime(null, ' a\r\nb '), 'a\nb');
|
|
assert.equal(
|
|
normalizeRecallTextForRuntime({ normalizeRecallInputText: (value) => `x:${String(value).trim()}` }, ' a '),
|
|
'x:a',
|
|
);
|
|
|
|
for (const source of [
|
|
'send-intent',
|
|
'generation-started-send-intent',
|
|
'generation-started-textarea',
|
|
'host-generation-lifecycle',
|
|
'textarea-live',
|
|
'planner-handoff',
|
|
]) {
|
|
assert.equal(isActiveRecallInputSource(source), true, source);
|
|
}
|
|
assert.equal(isActiveRecallInputSource('chat-last-user'), false);
|
|
|
|
for (const generationType of ['swipe', 'regenerate', 'continue', 'history']) {
|
|
assert.equal(isNoNewUserGenerationType(generationType), true, generationType);
|
|
}
|
|
assert.equal(isNoNewUserGenerationType('normal'), false);
|
|
|
|
for (const source of [
|
|
'chat-last-user',
|
|
'chat-latest-user',
|
|
'chat-tail-user',
|
|
'message-sent',
|
|
'persisted-user-floor',
|
|
]) {
|
|
assert.equal(isTrustedUserFloorRecallSource(source), true, source);
|
|
}
|
|
assert.equal(isTrustedUserFloorRecallSource('textarea-live'), false);
|
|
|
|
{
|
|
const recallInput = {
|
|
source: 'chat-last-user',
|
|
sourceLabel: '历史最后用户楼层',
|
|
reason: 'chat-tail-fallback',
|
|
authoritativeInputUsed: false,
|
|
boundUserFloorText: ' fallback floor ',
|
|
deliveryMode: 'deferred',
|
|
};
|
|
const record = {
|
|
authoritativeInputUsed: true,
|
|
boundUserFloorText: ' persisted floor ',
|
|
};
|
|
const result = buildPersistedReuseRecallInput(recallInput, record, {
|
|
normalizeRecallInputText: (value) => String(value || '').trim().toUpperCase(),
|
|
});
|
|
assert.equal(result.source, 'persisted-user-floor');
|
|
assert.equal(result.sourceLabel, '复用用户楼层召回');
|
|
assert.equal(result.reason, 'persisted-user-floor-reuse');
|
|
assert.equal(result.authoritativeInputUsed, true);
|
|
assert.equal(result.boundUserFloorText, 'PERSISTED FLOOR');
|
|
assert.equal(result.deliveryMode, 'deferred');
|
|
}
|
|
|
|
{
|
|
const result = buildPersistedReuseRecallInput(
|
|
{ authoritativeInputUsed: true, boundUserFloorText: 'input\r\ntext' },
|
|
{},
|
|
null,
|
|
);
|
|
assert.equal(result.authoritativeInputUsed, true);
|
|
assert.equal(result.boundUserFloorText, 'input\ntext');
|
|
}
|
|
|
|
console.log('recall-controller-helpers tests passed');
|