{"record":{"id":"83156c9fe9c10753","repo":"deepseek-ai/deepseek-harness","slug":"unsupported-option","errorCode":"UNSUPPORTED_OPTION","errorMessage":"llm-pi-ai does not support GenerateOptions.stop","messagePattern":"llm-pi-ai does not support GenerateOptions\\.stop","errorType":"exception","errorClass":"LlmError","httpStatus":null,"severity":"error","filePath":"packages/llm/llm-pi-ai/src/adapter.ts","lineNumber":327,"sourceCode":"\n  override prepareCall(provider: string, model: string, _signal?: AbortSignal): Promise<PreparedAdapterCall> {\n    const snapshot = this.current()\n    return Promise.resolve({\n      model: this.modelInfo(snapshot, provider, model),\n      stream: options => this.streamWithSnapshot(options, snapshot),\n    })\n  }\n\n  stream(options: GenerateOptions): AsyncIterable<StreamChunk> {\n    return this.streamWithSnapshot(options, this.current())\n  }\n\n  private async * streamWithSnapshot(\n    options: GenerateOptions,\n    snapshot: PiAiSnapshot,\n  ): AsyncIterable<StreamChunk> {\n    if (options.stop !== undefined) {\n      throw new LlmError('llm-pi-ai does not support GenerateOptions.stop', 'UNSUPPORTED_OPTION')\n    }\n    // One capture per stream call, taken before any await: the profile, the\n    // model descriptor, and the collection all come from the same immutable\n    // snapshot, and the credential freezes with them. A configuration change\n    // mid-request builds a separate snapshot, so this request finishes under\n    // the one it started with and the next call picks up the new one.\n    const profile = this.profileOf(snapshot, options.provider)\n    const model = this.modelOf(snapshot, options.provider, options.model)\n    const reasoning = resolveReasoningLevel(\n      model,\n      options.reasoningEffort ?? profile.reasoning,\n    )\n    const apiKey = await this.config.resolveApiKey(options.provider, profile)\n\n    const consumer = new AbortController()\n    const upstream = options.signal === undefined\n      ? consumer.signal\n      : AbortSignal.any([options.signal, consumer.signal])","sourceCodeStart":309,"sourceCodeEnd":345,"githubUrl":"https://github.com/deepseek-ai/deepseek-harness/blob/b150a551b8d465e31e418e1b2eaf5e79bbb7d28e/packages/llm/llm-pi-ai/src/adapter.ts#L309-L345","documentation":"Error \"llm-pi-ai does not support GenerateOptions.stop\" thrown in deepseek-ai/deepseek-harness.","triggerScenarios":"Thrown at packages/llm/llm-pi-ai/src/adapter.ts:327 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Remove GenerateOptions.stop, or use an adapter that supports stop sequences."],"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"}