{"record":{"id":"61116ceb38256d1c","repo":"deepseek-ai/deepseek-harness","slug":"ambiguous-endpoint","errorCode":"ambiguous-endpoint","errorMessage":"multiple active Services export this endpoint: ${candidates.map(candidate => candidate.service).sort().join(\", \")}","messagePattern":"multiple active Services export this endpoint: (.+?)","errorType":"exception","errorClass":"TypertGatewayError","httpStatus":null,"severity":"error","filePath":"packages/api/gateway/src/index.ts","lineNumber":256,"sourceCode":"    const candidates: InvocationDescriptor[] = []\n    for (const [serviceKey, definition] of Object.entries(this.ctx.reflect.props)) {\n      if (definition.type !== 'service') continue\n      const receiver = this.ctx.get(serviceKey) as unknown\n      if (!isObject(receiver)) continue\n      const original = originalOf(receiver)\n      const value = Reflect.get(original, 'typertRemote') as unknown\n      if (value === undefined) continue\n      const binding = readBinding(value, original, serviceKey, endpoint)\n      if (binding.namespace !== namespace) continue\n      const marker = remoteMethods(original).find(candidate => (candidate.exportName ?? candidate.method) === method)\n      if (marker === undefined) continue\n      candidates.push(this.srcDescriptor(binding, marker, method, endpoint))\n    }\n    if (candidates.length === 0) {\n      throw new TypertGatewayError('invocation-unavailable', endpoint, 'no active Remote method exports this endpoint')\n    }\n    if (candidates.length > 1) {\n      throw new TypertGatewayError(\n        'ambiguous-endpoint',\n        endpoint,\n        `multiple active Services export this endpoint: ${candidates.map(candidate => candidate.service).sort().join(', ')}`,\n      )\n    }\n    return candidates[0] as InvocationDescriptor\n  }\n\n  private srcDescriptor(\n    binding: TypertGatewayBinding,\n    marker: ReturnType<typeof remoteMethods>[number],\n    method: string,\n    endpoint: string,\n  ): InvocationDescriptor {\n    const names = methodParameterNames(binding.service, marker.method, endpoint)\n    const signalIndex = names.indexOf('signal')\n    if (signalIndex >= 0 && signalIndex !== names.length - 1) {\n      throw new TypertGatewayError(","sourceCodeStart":238,"sourceCodeEnd":274,"githubUrl":"https://github.com/deepseek-ai/deepseek-harness/blob/b150a551b8d465e31e418e1b2eaf5e79bbb7d28e/packages/api/gateway/src/index.ts#L238-L274","documentation":"Error \"multiple active Services export this endpoint: ${candidates.map(candidate => candidate.service).sort().join(\", \")}\" thrown in deepseek-ai/deepseek-harness.","triggerScenarios":"Thrown at packages/api/gateway/src/index.ts:256 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Deactivate all but one Service exporting the endpoint, or qualify the call with an explicit service."],"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"}