{"record":{"id":"c13023277f4e541c","repo":"deepseek-ai/deepseek-harness","slug":"llm-pi-ai-provider-provider-streamidletimeou","errorCode":null,"errorMessage":"llm-pi-ai: provider \"${provider}\" streamIdleTimeoutMs must be a positive finite number no greater than ${MAX_TIMER_DELAY_MS}","messagePattern":"llm-pi-ai: provider \"(.+?)\" streamIdleTimeoutMs must be a positive finite number no greater than (.+?)","errorType":"validation","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"packages/llm/llm-pi-ai/src/config.ts","lineNumber":400,"sourceCode":"  if (Array.isArray(providers)) {\n    throw new Error('llm-pi-ai: providers is now a dict keyed by provider route, not an array of profiles')\n  }\n  const entries = Object.entries(providers ?? {})\n  const resolved = new Map<string, ResolvedPiAiProviderProfile>()\n  for (const [provider, source] of entries) {\n    rejectRemovedFields(provider, source)\n    if (provider.length === 0) throw new Error('llm-pi-ai: provider names must be non-empty')\n    if (source.baseURL !== undefined && source.baseURL.length === 0) {\n      throw new Error(`llm-pi-ai: provider \"${provider}\" has an empty baseURL`)\n    }\n    if (source.displayName !== undefined && source.displayName.length === 0) {\n      throw new Error(`llm-pi-ai: provider \"${provider}\" has an empty displayName`)\n    }\n    const streamIdleTimeoutMs = source.streamIdleTimeoutMs ?? DEFAULT_STREAM_IDLE_TIMEOUT_MS\n    if (!Number.isFinite(streamIdleTimeoutMs)\n      || streamIdleTimeoutMs <= 0\n      || streamIdleTimeoutMs > MAX_TIMER_DELAY_MS) {\n      throw new Error(\n        `llm-pi-ai: provider \"${provider}\" streamIdleTimeoutMs must be a positive finite number no greater than ${MAX_TIMER_DELAY_MS}`,\n      )\n    }\n    const maxRequestImageBytes = source.maxRequestImageBytes ?? DEFAULT_MAX_REQUEST_IMAGE_BYTES\n    if (!Number.isInteger(maxRequestImageBytes) || maxRequestImageBytes <= 0) {\n      throw new Error(`llm-pi-ai: provider \"${provider}\" maxRequestImageBytes must be a positive integer`)\n    }\n    const requestImagePixelBudget = source.requestImagePixelBudget ?? DEFAULT_REQUEST_IMAGE_PIXEL_BUDGET\n    if (!Number.isSafeInteger(requestImagePixelBudget) || requestImagePixelBudget <= 0) {\n      throw new Error(`llm-pi-ai: provider \"${provider}\" requestImagePixelBudget must be a positive safe integer`)\n    }\n    const requestImageMaxBytes = source.requestImageMaxBytes ?? DEFAULT_REQUEST_IMAGE_MAX_BYTES\n    if (!Number.isSafeInteger(requestImageMaxBytes) || requestImageMaxBytes <= 0) {\n      throw new Error(`llm-pi-ai: provider \"${provider}\" requestImageMaxBytes must be a positive safe integer`)\n    }\n    // Detached from the configuration object because pi-ai types `Model.input`\n    // mutable. The schema's explicit default covers an absent key, so an empty\n    // list here is always one someone typed — and unlike an entry's, nothing","sourceCodeStart":382,"sourceCodeEnd":418,"githubUrl":"https://github.com/deepseek-ai/deepseek-harness/blob/b150a551b8d465e31e418e1b2eaf5e79bbb7d28e/packages/llm/llm-pi-ai/src/config.ts#L382-L418","documentation":"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.","triggerScenarios":"Thrown at packages/llm/llm-pi-ai/src/config.ts:400 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Set streamIdleTimeoutMs to a positive finite number no greater than the stated timer cap."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"b150a551b8d465e31e418e1b2eaf5e79bbb7d28e","analyzedAt":"2026-08-24T18:12:29.105Z","schemaVersion":2},"datasetVersion":"2026-08-24T22:17:12.610Z"}