test(llm-replay): cover catalog capability parity
Also re-generates the config catalog after the docs-restructure merge.
This commit is contained in:
+14
-2
@@ -444,7 +444,7 @@ export interface Config {
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
Source: [`packages/fs/fs-local/src/index.ts:39`](../packages/fs/fs-local/src/index.ts)
|
Source: [`packages/fs/fs-local/src/index.ts:40`](../packages/fs/fs-local/src/index.ts)
|
||||||
|
|
||||||
## `@deepseek-ai/dsh-fs-sandbox`
|
## `@deepseek-ai/dsh-fs-sandbox`
|
||||||
|
|
||||||
@@ -907,12 +907,24 @@ export interface ReplayModelConfig {
|
|||||||
description?: string
|
description?: string
|
||||||
/** Optional positive integer context capacity published by the replay adapter. */
|
/** Optional positive integer context capacity published by the replay adapter. */
|
||||||
contextWindow?: number
|
contextWindow?: number
|
||||||
|
/**
|
||||||
|
* Optional per-request output cap the replay route materializes when callers
|
||||||
|
* omit one, so replay reconstructs the request header a live catalog produced.
|
||||||
|
*/
|
||||||
|
defaultMaxTokens?: number
|
||||||
|
/** Optional reasoning-effort ids the replay route accepts, in display order. */
|
||||||
|
reasoningEfforts?: string[]
|
||||||
|
/**
|
||||||
|
* Optional effort materialized when callers omit one; must appear in
|
||||||
|
* {@link reasoningEfforts} or call resolution rejects the route.
|
||||||
|
*/
|
||||||
|
defaultReasoningEffort?: string
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
Depends on: [`RetryPolicyConfig`](../packages/llm/llm/src/index.ts)
|
Depends on: [`RetryPolicyConfig`](../packages/llm/llm/src/index.ts)
|
||||||
|
|
||||||
Source: [`packages/support/llm-replay/src/index.ts:744`](../packages/support/llm-replay/src/index.ts)
|
Source: [`packages/support/llm-replay/src/index.ts:769`](../packages/support/llm-replay/src/index.ts)
|
||||||
|
|
||||||
## `@deepseek-ai/dsh-llm-retry`
|
## `@deepseek-ai/dsh-llm-retry`
|
||||||
|
|
||||||
|
|||||||
@@ -578,8 +578,14 @@ describe('installLlmReplay (through the real LlmService)', () => {
|
|||||||
backoff: { initialDelayMs: 1, maxDelayMs: 1, jitterRatio: 0 },
|
backoff: { initialDelayMs: 1, maxDelayMs: 1, jitterRatio: 0 },
|
||||||
},
|
},
|
||||||
models: [
|
models: [
|
||||||
{ id: 'flash', contextWindow: 128_000 },
|
{
|
||||||
{ id: 'pro', name: 'Pro', description: 'Larger model' },
|
id: 'flash',
|
||||||
|
contextWindow: 128_000,
|
||||||
|
defaultMaxTokens: 64_000,
|
||||||
|
reasoningEfforts: ['off', 'max'],
|
||||||
|
defaultReasoningEffort: 'max',
|
||||||
|
},
|
||||||
|
{ id: 'pro', name: 'Pro', description: 'Larger model', reasoningEfforts: ['high'] },
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
{ id: 'empty' },
|
{ id: 'empty' },
|
||||||
@@ -597,8 +603,18 @@ describe('installLlmReplay (through the real LlmService)', () => {
|
|||||||
await expect(ctx.llm.listModels('empty')).resolves.toEqual([])
|
await expect(ctx.llm.listModels('empty')).resolves.toEqual([])
|
||||||
await expect(ctx.llm.resolveModelInfo('deepseek', 'flash')).resolves.toMatchObject({
|
await expect(ctx.llm.resolveModelInfo('deepseek', 'flash')).resolves.toMatchObject({
|
||||||
context: { contextWindow: 128_000 },
|
context: { contextWindow: 128_000 },
|
||||||
|
defaultMaxTokens: 64_000,
|
||||||
|
reasoning: {
|
||||||
|
efforts: [{ id: 'off', name: 'off' }, { id: 'max', name: 'max' }],
|
||||||
|
defaultEffort: 'max',
|
||||||
|
},
|
||||||
})
|
})
|
||||||
await expect(ctx.llm.resolveModelInfo('deepseek', 'pro')).resolves.not.toHaveProperty('context')
|
await expect(ctx.llm.resolveModelInfo('deepseek', 'pro')).resolves.not.toHaveProperty('context')
|
||||||
|
// Efforts without a configured default preserve the provider's own default.
|
||||||
|
await expect(ctx.llm.resolveModelInfo('deepseek', 'pro')).resolves.toMatchObject({
|
||||||
|
reasoning: { efforts: [{ id: 'high', name: 'high' }] },
|
||||||
|
})
|
||||||
|
await expect(ctx.llm.resolveModelInfo('deepseek', 'pro')).resolves.not.toHaveProperty('defaultMaxTokens')
|
||||||
await expect(ctx.llm.resolveModelInfo('deepseek', 'unlisted')).resolves.not.toHaveProperty('context')
|
await expect(ctx.llm.resolveModelInfo('deepseek', 'unlisted')).resolves.not.toHaveProperty('context')
|
||||||
await expect(ctx.llm.resolveModelInfo('empty', 'unlisted')).resolves.not.toHaveProperty('context')
|
await expect(ctx.llm.resolveModelInfo('empty', 'unlisted')).resolves.not.toHaveProperty('context')
|
||||||
expect(ctx.llm.providerRetryPolicy('deepseek')).toMatchObject({
|
expect(ctx.llm.providerRetryPolicy('deepseek')).toMatchObject({
|
||||||
|
|||||||
Reference in New Issue
Block a user