{"record":{"id":"8a96999f4029338d","repo":"deepseek-ai/deepseek-harness","slug":"arguments-invalid","errorCode":"arguments-invalid","errorMessage":"args must be a plain object","messagePattern":"args must be a plain object","errorType":"validation","errorClass":"TypertGatewayError","httpStatus":null,"severity":"error","filePath":"packages/api/gateway/src/index.ts","lineNumber":592,"sourceCode":"  }\n  return [...names]\n}\n\nfunction invalidSignature(endpoint: string, method: string): never {\n  throw new TypertGatewayError(\n    'signature-invalid',\n    endpoint,\n    `SRC method ${JSON.stringify(method)} must use unique identifier parameters without destructuring, defaults, or rest`,\n  )\n}\n\nfunction assertExactArguments(\n  args: Readonly<Record<string, unknown>>,\n  descriptor: InvocationDescriptor,\n  endpoint: string,\n): void {\n  if (!isPlainObject(args)) {\n    throw new TypertGatewayError('arguments-invalid', endpoint, 'args must be a plain object')\n  }\n  const expected = new Set(descriptor.parameters.map(parameter => parameter.wire))\n  if (descriptor.invocation.kind === 'context') expected.add(descriptor.invocation.wire)\n  const actual = Reflect.ownKeys(args)\n  const extra = actual.filter(key => typeof key !== 'string' || !expected.has(key))\n  // A JSON field may be omitted when the strict descriptor declares absence,\n  // and always under SRC: a weak descriptor reads parameter names from the\n  // JavaScript signature and cannot see which are optional, so LIB is where an\n  // omitted required argument is caught. Lookup ids are never omissible.\n  const acceptsMissing = new Set(descriptor.parameters\n    .filter(parameter => parameter.source === 'json'\n      && (parameter.acceptsUndefined === true || parameter.codec.mode === 'src-json'))\n    .map(parameter => parameter.wire))\n  const missing = [...expected].filter(key => !Object.hasOwn(args, key) && !acceptsMissing.has(key))\n  if (extra.length === 0 && missing.length === 0) return\n  const clauses: string[] = []\n  if (missing.length > 0) clauses.push(`missing ${missing.map(key => JSON.stringify(key)).join(', ')}`)\n  if (extra.length > 0) clauses.push(`unexpected ${extra.map(key => JSON.stringify(String(key))).join(', ')}`)","sourceCodeStart":574,"sourceCodeEnd":610,"githubUrl":"https://github.com/deepseek-ai/deepseek-harness/blob/b150a551b8d465e31e418e1b2eaf5e79bbb7d28e/packages/api/gateway/src/index.ts#L574-L610","documentation":"Error \"args must be a plain object\" thrown in deepseek-ai/deepseek-harness.","triggerScenarios":"Thrown at packages/api/gateway/src/index.ts:592 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Pass a plain object for args; arrays, null, and class instances are rejected."],"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"}