@@ -18,7 +18,7 @@ function load() {
|
||||
MODELS_SRC +
|
||||
'\n' +
|
||||
TUI_SRC +
|
||||
'\n;this.__exports = { bareAgentHonorExplicitQvacModel, bareAgentApplyLiveModel, bareAgentApplyProviderProfile, bareAgentQvacGetProfile, bareAgentQvacFindChatModel }',
|
||||
'\n;this.__exports = { bareAgentHonorExplicitQvacModel, bareAgentApplyLiveModel, bareAgentApplyProviderProfile, bareAgentQvacGetProfile, bareAgentQvacFindChatModel, bareAgentQvacResolveCtxSize, bareAgentQvacSyncSettingsForModel }',
|
||||
sandbox
|
||||
)
|
||||
return sandbox.__exports
|
||||
@@ -56,6 +56,26 @@ test('apply live model on QVAC sets both keys and profile when catalog-known', a
|
||||
t.is(next.qvac_profile, 'lite')
|
||||
})
|
||||
|
||||
test('live QVAC model switch resets ctx to the new model card', async (t) => {
|
||||
const { bareAgentApplyLiveModel, bareAgentQvacResolveCtxSize, bareAgentQvacGetProfile } =
|
||||
load()
|
||||
const next = bareAgentApplyLiveModel(
|
||||
{
|
||||
backend: 'qvac',
|
||||
qvac_profile: 'recommended',
|
||||
qvac_model: 'QWEN3_1_7B_INST_Q4',
|
||||
qvac_ctx_size: 32768
|
||||
},
|
||||
'QWEN3_5_4B_MULTIMODAL_Q4_K_M'
|
||||
)
|
||||
t.is(next.qvac_model, 'QWEN3_5_4B_MULTIMODAL_Q4_K_M')
|
||||
t.is(next.qvac_ctx_size, 0)
|
||||
t.is(
|
||||
bareAgentQvacResolveCtxSize(next, bareAgentQvacGetProfile(next.qvac_profile)),
|
||||
262144
|
||||
)
|
||||
})
|
||||
|
||||
test('apply live model on REST only changes model', async (t) => {
|
||||
const { bareAgentApplyLiveModel } = load()
|
||||
const next = bareAgentApplyLiveModel(
|
||||
|
||||
@@ -20,6 +20,11 @@ test('QVAC catalog covers profiles and extra chat ids', async (t) => {
|
||||
t.ok(ids.includes('GEMMA4_2B_MULTIMODAL_Q4_K_M'))
|
||||
t.is(s.bareAgentQvacModelForProfile('recommended').id, 'QWEN3_1_7B_INST_Q4')
|
||||
t.is(s.bareAgentQvacModelForProfile('strong').id, 'QWEN3_4B_INST_Q4_K_M')
|
||||
for (const m of s.BARE_AGENT_QVAC_CHAT_MODELS) {
|
||||
t.ok(m.ctxSize >= 8192, m.id + ' missing ctxSize')
|
||||
}
|
||||
t.is(s.bareAgentQvacFindChatModel('QWEN3_5_4B_MULTIMODAL_Q4_K_M').ctxSize, 262144)
|
||||
t.is(s.bareAgentQvacFindChatModel('GEMMA4_2B_MULTIMODAL_Q4_K_M').ctxSize, 131072)
|
||||
})
|
||||
|
||||
test('parse OpenAI models skips embeddings and sorts', async (t) => {
|
||||
|
||||
@@ -10,7 +10,7 @@ function loadAgentQvacHelpers() {
|
||||
vm.createContext(sandbox)
|
||||
vm.runInContext(
|
||||
QVAC_SRC +
|
||||
'\n;this.__exports = { bareAgentFlattenToolsForQvac, bareAgentSanitizeHistoryForQvac, bareAgentQvacDetectToolDialect, bareAgentQvacGetProfile, bareAgentQvacProfileList, bareAgentResolveBackend, bareAgentQvacBridgeAvailable, bareAgentQvacResolveCtxSize, bareAgentQvacResolveDeviceOpts, bareAgentQvacModelCardCtxSize, bareAgentSanitizeConfigForBackend, bareAgentRestGetProvider, bareAgentRestProviderList, bareAgentIsQvacModelId, bareAgentMaskSecretPreview, BARE_AGENT_QVAC_CTX_QWEN3, BARE_AGENT_QVAC_CTX_LLAMA32_1B }',
|
||||
'\n;this.__exports = { bareAgentFlattenToolsForQvac, bareAgentSanitizeHistoryForQvac, bareAgentQvacDetectToolDialect, bareAgentQvacGetProfile, bareAgentQvacProfileList, bareAgentResolveBackend, bareAgentQvacBridgeAvailable, bareAgentQvacResolveCtxSize, bareAgentQvacResolveDeviceOpts, bareAgentQvacModelCardCtxSize, bareAgentSanitizeConfigForBackend, bareAgentRestGetProvider, bareAgentRestProviderList, bareAgentIsQvacModelId, bareAgentMaskSecretPreview, BARE_AGENT_QVAC_CTX_QWEN3, BARE_AGENT_QVAC_CTX_LLAMA32_1B, BARE_AGENT_QVAC_CTX_ABSOLUTE_MAX }',
|
||||
sandbox
|
||||
)
|
||||
return sandbox.__exports
|
||||
@@ -225,6 +225,12 @@ test('model-card ctx sizes match upstream cards', async (t) => {
|
||||
t.is(bareAgentQvacModelCardCtxSize('QWEN3_1_7B_INST_Q4'), 32768)
|
||||
t.is(bareAgentQvacModelCardCtxSize('QWEN3_4B_INST_Q4_K_M'), 32768)
|
||||
t.is(bareAgentQvacModelCardCtxSize('LLAMA_TOOL_CALLING_1B_INST_Q4_K'), 131072)
|
||||
t.is(bareAgentQvacModelCardCtxSize('QWEN3_5_4B_MULTIMODAL_Q4_K_M'), 262144)
|
||||
t.is(bareAgentQvacModelCardCtxSize('QWEN3_6_27B_MULTIMODAL_Q4_K_XL'), 262144)
|
||||
t.is(bareAgentQvacModelCardCtxSize('GEMMA4_2B_MULTIMODAL_Q4_K_M'), 131072)
|
||||
t.is(bareAgentQvacModelCardCtxSize('GEMMA4_31B_MULTIMODAL_Q4_K_M'), 262144)
|
||||
t.is(bareAgentQvacModelCardCtxSize('GPT_OSS_20B_INST_Q4_K_M'), 131072)
|
||||
t.is(bareAgentQvacModelCardCtxSize('SMOLLM2_360M_INST_Q8'), 8192)
|
||||
})
|
||||
|
||||
test('resolve qvac ctx size from profile or config override', async (t) => {
|
||||
@@ -237,9 +243,23 @@ test('resolve qvac ctx size from profile or config override', async (t) => {
|
||||
t.is(bareAgentQvacResolveCtxSize({ qvac_ctx_size: 4096 }, rec), 32768)
|
||||
t.is(bareAgentQvacResolveCtxSize({ qvac_ctx_size: 8192 }, lite), 32768)
|
||||
t.is(bareAgentQvacResolveCtxSize({ qvac_ctx_size: 65536 }, rec), 65536)
|
||||
t.is(bareAgentQvacResolveCtxSize({ qvac_ctx_size: 999999 }, rec), 131072)
|
||||
t.is(bareAgentQvacResolveCtxSize({ qvac_ctx_size: 999999 }, rec), 262144)
|
||||
t.is(bareAgentQvacResolveCtxSize({}, lite), 32768)
|
||||
t.is(bareAgentQvacResolveCtxSize({}, tiny), 131072)
|
||||
t.is(
|
||||
bareAgentQvacResolveCtxSize(
|
||||
{ qvac_model: 'QWEN3_5_4B_MULTIMODAL_Q4_K_M', qvac_ctx_size: 0 },
|
||||
rec
|
||||
),
|
||||
262144
|
||||
)
|
||||
t.is(
|
||||
bareAgentQvacResolveCtxSize(
|
||||
{ qvac_model: 'QWEN3_5_4B_MULTIMODAL_Q4_K_M', qvac_ctx_size: 32768 },
|
||||
rec
|
||||
),
|
||||
262144
|
||||
)
|
||||
})
|
||||
|
||||
test('resolve qvac device opts', async (t) => {
|
||||
|
||||
Reference in New Issue
Block a user