deepseek-ai/deepseek-harness · error · Error
llm-pi-ai: provider "${provider}" streamIdleTimeoutMs must b
Error message
llm-pi-ai: provider "${provider}" streamIdleTimeoutMs must be a positive finite number no greater than ${MAX_TIMER_DELAY_MS} What it means
Error "llm-pi-ai: provider "${provider}" streamIdleTimeoutMs must be a positive finite number no greater than ${MAX_TIMER_DELAY_MS}" thrown in deepseek-ai/deepseek-harness.
Source
Thrown at packages/llm/llm-pi-ai/src/config.ts:400
if (Array.isArray(providers)) {
throw new Error('llm-pi-ai: providers is now a dict keyed by provider route, not an array of profiles')
}
const entries = Object.entries(providers ?? {})
const resolved = new Map<string, ResolvedPiAiProviderProfile>()
for (const [provider, source] of entries) {
rejectRemovedFields(provider, source)
if (provider.length === 0) throw new Error('llm-pi-ai: provider names must be non-empty')
if (source.baseURL !== undefined && source.baseURL.length === 0) {
throw new Error(`llm-pi-ai: provider "${provider}" has an empty baseURL`)
}
if (source.displayName !== undefined && source.displayName.length === 0) {
throw new Error(`llm-pi-ai: provider "${provider}" has an empty displayName`)
}
const streamIdleTimeoutMs = source.streamIdleTimeoutMs ?? DEFAULT_STREAM_IDLE_TIMEOUT_MS
if (!Number.isFinite(streamIdleTimeoutMs)
|| streamIdleTimeoutMs <= 0
|| streamIdleTimeoutMs > MAX_TIMER_DELAY_MS) {
throw new Error(
`llm-pi-ai: provider "${provider}" streamIdleTimeoutMs must be a positive finite number no greater than ${MAX_TIMER_DELAY_MS}`,
)
}
const maxRequestImageBytes = source.maxRequestImageBytes ?? DEFAULT_MAX_REQUEST_IMAGE_BYTES
if (!Number.isInteger(maxRequestImageBytes) || maxRequestImageBytes <= 0) {
throw new Error(`llm-pi-ai: provider "${provider}" maxRequestImageBytes must be a positive integer`)
}
const requestImagePixelBudget = source.requestImagePixelBudget ?? DEFAULT_REQUEST_IMAGE_PIXEL_BUDGET
if (!Number.isSafeInteger(requestImagePixelBudget) || requestImagePixelBudget <= 0) {
throw new Error(`llm-pi-ai: provider "${provider}" requestImagePixelBudget must be a positive safe integer`)
}
const requestImageMaxBytes = source.requestImageMaxBytes ?? DEFAULT_REQUEST_IMAGE_MAX_BYTES
if (!Number.isSafeInteger(requestImageMaxBytes) || requestImageMaxBytes <= 0) {
throw new Error(`llm-pi-ai: provider "${provider}" requestImageMaxBytes must be a positive safe integer`)
}
// Detached from the configuration object because pi-ai types `Model.input`
// mutable. The schema's explicit default covers an absent key, so an empty
// list here is always one someone typed — and unlike an entry's, nothingView on GitHub (pinned to b150a551b8)
Solutions
- Set streamIdleTimeoutMs to a positive finite number no greater than the stated timer cap.
When it happens
Trigger: Thrown at packages/llm/llm-pi-ai/src/config.ts:400 when the library encounters an invalid state.
Common situations: See trigger scenarios.
Understand the failure class
- Timeouts: ETIMEDOUT, deadlines, and hung requests — what actually expires when a request times out.
AI-assisted analysis of deepseek-ai/deepseek-harness@b150a551b8 (2026-08-24).
Data as JSON: /api/errors/c13023277f4e541c.
Report an issue: GitHub.