update changelog and context default (#1045)
This commit is contained in:
@@ -141,7 +141,7 @@ export async function mockHermesApi(page: Page, options: MockHermesApiOptions =
|
||||
}
|
||||
|
||||
if (pathname === '/api/hermes/sessions/context-length') {
|
||||
await route.fulfill(jsonResponse({ context_length: 200000 }))
|
||||
await route.fulfill(jsonResponse({ context_length: 256000 }))
|
||||
return
|
||||
}
|
||||
|
||||
|
||||
@@ -71,7 +71,7 @@ describe('getModelContextLength', () => {
|
||||
|
||||
const { getModelContextLength } = await loadModelContext()
|
||||
|
||||
expect(getModelContextLength()).toBe(200_000)
|
||||
expect(getModelContextLength()).toBe(256_000)
|
||||
})
|
||||
|
||||
it('does not scan other providers when the configured provider exists without that model', async () => {
|
||||
@@ -79,7 +79,7 @@ describe('getModelContextLength', () => {
|
||||
writeModelsCache({
|
||||
'openai-codex': {
|
||||
models: {
|
||||
'gpt-5.4': { limit: { context: 200_000 } },
|
||||
'gpt-5.4': { limit: { context: 256_000 } },
|
||||
},
|
||||
},
|
||||
openai: {
|
||||
@@ -91,7 +91,7 @@ describe('getModelContextLength', () => {
|
||||
|
||||
const { getModelContextLength } = await loadModelContext()
|
||||
|
||||
expect(getModelContextLength()).toBe(200_000)
|
||||
expect(getModelContextLength()).toBe(256_000)
|
||||
})
|
||||
|
||||
it('uses the configured provider cache entry when the provider matches', async () => {
|
||||
@@ -241,7 +241,7 @@ describe('getModelContextLength', () => {
|
||||
|
||||
const { getModelContextLength } = await loadModelContext()
|
||||
|
||||
expect(getModelContextLength()).toBe(200_000)
|
||||
expect(getModelContextLength()).toBe(256_000)
|
||||
})
|
||||
|
||||
it('does not trust custom:name alone when the matched custom provider entry points at an unknown proxy url', async () => {
|
||||
@@ -256,7 +256,7 @@ describe('getModelContextLength', () => {
|
||||
|
||||
const { getModelContextLength } = await loadModelContext()
|
||||
|
||||
expect(getModelContextLength()).toBe(200_000)
|
||||
expect(getModelContextLength()).toBe(256_000)
|
||||
})
|
||||
|
||||
it('does not fall through to a unique global match after a resolved custom:name provider misses in its scoped cache provider', async () => {
|
||||
@@ -276,7 +276,7 @@ describe('getModelContextLength', () => {
|
||||
|
||||
const { getModelContextLength } = await loadModelContext()
|
||||
|
||||
expect(getModelContextLength()).toBe(200_000)
|
||||
expect(getModelContextLength()).toBe(256_000)
|
||||
})
|
||||
|
||||
it('allows a unique global model-name fallback for unresolved custom providers', async () => {
|
||||
@@ -321,7 +321,7 @@ describe('getModelContextLength', () => {
|
||||
|
||||
const { getModelContextLength } = await loadModelContext()
|
||||
|
||||
expect(getModelContextLength()).toBe(200_000)
|
||||
expect(getModelContextLength()).toBe(256_000)
|
||||
})
|
||||
|
||||
it('does not guess across multiple cache providers when a custom provider remains unresolved', async () => {
|
||||
@@ -341,6 +341,6 @@ describe('getModelContextLength', () => {
|
||||
|
||||
const { getModelContextLength } = await loadModelContext()
|
||||
|
||||
expect(getModelContextLength()).toBe(200_000)
|
||||
expect(getModelContextLength()).toBe(256_000)
|
||||
})
|
||||
})
|
||||
|
||||
@@ -87,7 +87,7 @@ describe('run chat compression trigger', () => {
|
||||
readConfigYamlForProfileMock.mockReset()
|
||||
|
||||
getSessionMock.mockReturnValue({ id: 'session-1', profile: 'default' })
|
||||
getModelContextLengthMock.mockReturnValue(200_000)
|
||||
getModelContextLengthMock.mockReturnValue(256_000)
|
||||
calcAndUpdateUsageMock.mockResolvedValue({ inputTokens: 1_000, outputTokens: 0 })
|
||||
estimateUsageTokensFromMessagesMock.mockReturnValue({ inputTokens: 0, outputTokens: 0 })
|
||||
getCompressionSnapshotMock.mockReturnValue(null)
|
||||
@@ -142,7 +142,7 @@ describe('run chat compression trigger', () => {
|
||||
readConfigYamlForProfileMock.mockResolvedValue({
|
||||
compression: { threshold: 0.25, target_ratio: 0.1, protect_last_n: 7, protect_first_n: 2 },
|
||||
})
|
||||
calcAndUpdateUsageMock.mockResolvedValue({ inputTokens: 60_000, outputTokens: 0 })
|
||||
calcAndUpdateUsageMock.mockResolvedValue({ inputTokens: 70_000, outputTokens: 0 })
|
||||
compressorCompressMock.mockResolvedValue({
|
||||
messages: [{ role: 'user', content: 'compressed' }],
|
||||
meta: {
|
||||
@@ -212,7 +212,7 @@ describe('run chat compression trigger', () => {
|
||||
emit,
|
||||
new Map(),
|
||||
{},
|
||||
vi.fn(async () => 120_000),
|
||||
vi.fn(async () => 160_000),
|
||||
)
|
||||
|
||||
expect(history).toEqual([{ role: 'user', content: 'compressed by local context estimate' }])
|
||||
@@ -356,7 +356,7 @@ describe('run chat compression trigger', () => {
|
||||
emit,
|
||||
new Map(),
|
||||
{},
|
||||
vi.fn(async () => 120_000),
|
||||
vi.fn(async () => 160_000),
|
||||
700,
|
||||
)
|
||||
|
||||
@@ -387,7 +387,7 @@ describe('run chat compression trigger', () => {
|
||||
emit,
|
||||
new Map(),
|
||||
{},
|
||||
vi.fn(async () => 120_000),
|
||||
vi.fn(async () => 160_000),
|
||||
)).rejects.toBeInstanceOf(ContextWindowTooSmallError)
|
||||
|
||||
expect(emit).not.toHaveBeenCalledWith('usage.updated', expect.anything())
|
||||
@@ -420,7 +420,7 @@ describe('run chat compression trigger', () => {
|
||||
vi.fn(),
|
||||
new Map(),
|
||||
{},
|
||||
vi.fn(async () => 120_000),
|
||||
vi.fn(async () => 160_000),
|
||||
)).rejects.toBeInstanceOf(ContextWindowTooSmallError)
|
||||
|
||||
expect(compressorCompressMock).not.toHaveBeenCalled()
|
||||
@@ -443,7 +443,7 @@ describe('run chat compression trigger', () => {
|
||||
readConfigYamlForProfileMock.mockResolvedValue({
|
||||
compression: { protect_last_n: 5 },
|
||||
})
|
||||
calcAndUpdateUsageMock.mockResolvedValue({ inputTokens: 120_000, outputTokens: 0 })
|
||||
calcAndUpdateUsageMock.mockResolvedValue({ inputTokens: 160_000, outputTokens: 0 })
|
||||
compressorCompressMock.mockResolvedValue({
|
||||
messages: [{ role: 'user', content: 'compressed' }],
|
||||
meta: {
|
||||
@@ -468,8 +468,8 @@ describe('run chat compression trigger', () => {
|
||||
|
||||
expect(compressorConstructorMock).toHaveBeenCalledWith({
|
||||
config: {
|
||||
triggerTokens: 100_000,
|
||||
summaryBudget: 40_000,
|
||||
triggerTokens: 128_000,
|
||||
summaryBudget: 51_200,
|
||||
headMessageCount: 3,
|
||||
tailMessageCount: 5,
|
||||
},
|
||||
@@ -544,7 +544,7 @@ describe('run chat compression trigger', () => {
|
||||
readConfigYamlForProfileMock.mockResolvedValue({
|
||||
compression: { protect_first_n: 2, protect_last_n: 3 },
|
||||
})
|
||||
estimateUsageTokensFromMessagesMock.mockReturnValue({ inputTokens: 120_000, outputTokens: 0 })
|
||||
estimateUsageTokensFromMessagesMock.mockReturnValue({ inputTokens: 160_000, outputTokens: 0 })
|
||||
compressorCompressMock.mockResolvedValue({
|
||||
messages: [{ role: 'user', content: 'updated stale compressed' }],
|
||||
meta: {
|
||||
|
||||
@@ -16,7 +16,7 @@ const listWorkspaceFoldersMock = vi.fn(async (ctx: any) => { ctx.body = { folder
|
||||
const usageBatchMock = vi.fn(async (ctx: any) => { ctx.body = {} })
|
||||
const usageSingleMock = vi.fn(async (ctx: any) => { ctx.body = { input_tokens: 0, output_tokens: 0 } })
|
||||
const usageStatsMock = vi.fn(async (ctx: any) => { ctx.body = { total_input_tokens: 0, total_output_tokens: 0 } })
|
||||
const contextLengthMock = vi.fn(async (ctx: any) => { ctx.body = { context_length: 200000 } })
|
||||
const contextLengthMock = vi.fn(async (ctx: any) => { ctx.body = { context_length: 256000 } })
|
||||
const batchRemoveMock = vi.fn(async (ctx: any) => { ctx.body = { deleted: 1, failed: 0, errors: [] } })
|
||||
const exportSessionMock = vi.fn(async (ctx: any) => { ctx.body = JSON.stringify({ id: ctx.params.id }) })
|
||||
|
||||
|
||||
Reference in New Issue
Block a user