Contexts
Release rolling / release (push) Successful in 9m38s

This commit is contained in:
2026-08-18 21:29:16 -04:00
parent 6886335351
commit 7184b17553
10 changed files with 351 additions and 152 deletions
@@ -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) => {