{"record":{"id":"c513977564bcc0c3","repo":"deepseek-ai/deepseek-harness","slug":"invalid-tool-output","errorCode":"INVALID_TOOL_OUTPUT","errorMessage":"output.${projector} returned non-lossless JSON","messagePattern":"output\\.(.+?) returned non-lossless JSON","errorType":"exception","errorClass":"ToolOutputError","httpStatus":null,"severity":"error","filePath":"packages/core/tools/src/index.ts","lineNumber":534,"sourceCode":"\n  constructor(toolName: string, violations: string[]) {\n    super(`tool \"${toolName}\" returned invalid output: ${violations.join('; ')}`, 'INVALID_TOOL_OUTPUT')\n    this.name = 'ToolOutputError'\n    this.violations = violations\n  }\n}\n\n/** Convert one projector exception into the canonical invalid-output failure. */\nfunction projectionError(toolName: string, projector: 'render' | 'presentationMeta', error: unknown): ToolOutputError {\n  return new ToolOutputError(toolName, [`output.${projector} failed: ${errorMessage(error)}`])\n}\n\n/** Snapshot one projector result before later durable-result materialization. */\nfunction snapshotProjection<T>(toolName: string, projector: 'render' | 'presentationMeta', candidate: T): T {\n  try {\n    const detached = snapshotJsonValue(candidate)\n    if (detached === undefined) {\n      throw new ToolOutputError(toolName, [`output.${projector} returned non-lossless JSON`])\n    }\n    return detached\n  } catch (error: unknown) {\n    if (error instanceof ToolOutputError) throw error\n    throw projectionError(toolName, projector, error)\n  }\n}\n\n/** Snapshot one body or policy value into the canonical invalid-output failure class. */\nfunction snapshotToolValue(toolName: string, candidate: unknown): JsonValue {\n  try {\n    const detached = snapshotJsonValue(candidate)\n    if (detached === undefined) throw new ToolOutputError(toolName, ['value is not lossless JSON'])\n    return detached as JsonValue\n  } catch (error: unknown) {\n    if (error instanceof ToolOutputError) throw error\n    throw new ToolOutputError(toolName, [`value snapshot failed: ${errorMessage(error)}`])\n  }","sourceCodeStart":516,"sourceCodeEnd":552,"githubUrl":"https://github.com/deepseek-ai/deepseek-harness/blob/b150a551b8d465e31e418e1b2eaf5e79bbb7d28e/packages/core/tools/src/index.ts#L516-L552","documentation":"Error \"output.${projector} returned non-lossless JSON\" thrown in deepseek-ai/deepseek-harness.","triggerScenarios":"Thrown at packages/core/tools/src/index.ts:534 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"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"}