{"record":{"id":"3a66b0e13e3ddac9","repo":"deepseek-ai/deepseek-harness","slug":"client-api-contribution-repeats-kind-method","errorCode":null,"errorMessage":"client api: contribution repeats ${kind} method ${endpointOf(descriptor)}","messagePattern":"client api: contribution repeats (.+?) method (.+?)","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"packages/api/gateway/src/client/index.ts","lineNumber":220,"sourceCode":"      throw error\n    }\n    return async () => {\n      for (const dispose of installed.reverse()) await dispose()\n      await disposeRemote()\n    }\n  }\n\n  private validateContribution(contribution: TypertRemoteContribution): void {\n    const direct = new Map<string, Set<string>>()\n    const scoped = new Map<string, Set<string>>()\n    const add = (\n      table: Map<string, Set<string>>,\n      descriptor: InvocationDescriptor,\n      kind: 'direct' | 'scoped',\n    ): void => {\n      const methods = table.get(descriptor.namespace) ?? new Set<string>()\n      if (methods.has(descriptor.method)) {\n        throw new Error(`client api: contribution repeats ${kind} method ${endpointOf(descriptor)}`)\n      }\n      methods.add(descriptor.method)\n      table.set(descriptor.namespace, methods)\n      const namespace = this.namespaces.get(descriptor.namespace)?.service\n      if (namespace?.has(kind, descriptor.method) === true) {\n        throw new Error(`client api: ${kind} method ${endpointOf(descriptor)} is already mounted`)\n      }\n    }\n    for (const descriptor of contribution.descriptors) {\n      requireStrictDescriptor(descriptor)\n      if (descriptor.invocation.kind === 'direct') add(direct, descriptor, 'direct')\n      if (scopedProjection(descriptor) !== undefined) add(scoped, descriptor, 'scoped')\n    }\n    const namespaces = new Set([...direct.keys(), ...scoped.keys()])\n    for (const namespace of namespaces) {\n      const service = this.namespaces.get(namespace)?.service\n      if (service === undefined) {\n        if (namespace in this) {","sourceCodeStart":202,"sourceCodeEnd":238,"githubUrl":"https://github.com/deepseek-ai/deepseek-harness/blob/b150a551b8d465e31e418e1b2eaf5e79bbb7d28e/packages/api/gateway/src/client/index.ts#L202-L238","documentation":"Error \"client api: contribution repeats ${kind} method ${endpointOf(descriptor)}\" thrown in deepseek-ai/deepseek-harness.","triggerScenarios":"Thrown at packages/api/gateway/src/client/index.ts:220 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Remove the duplicate contribution; each kind/endpoint method may be contributed only once."],"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"}