deepseek-ai/deepseek-harness · error · Error

typert-loader: ${pkgName} TYPERT.schemas contains a non-obje

Error message

typert-loader: ${pkgName} TYPERT.schemas contains a non-object schema

What it means

Error "typert-loader: ${pkgName} TYPERT.schemas contains a non-object schema" thrown in deepseek-ai/deepseek-harness.

Source

Thrown at packages/typert/loader/src/index.ts:101

export function validateTypertManifest(pkgName: string, exported: unknown): TypertContribution {
  if (typeof exported !== 'object' || exported === null) {
    throw new Error(`typert-loader: ${pkgName} exports "${TYPERT_HOST_EXPORT}" but its module has no TYPERT manifest object`)
  }
  const manifest = exported as Record<string, unknown>
  if (manifest.package !== pkgName) {
    throw new Error(
      `typert-loader: ${pkgName} TYPERT manifest names package ${JSON.stringify(manifest.package)} — the manifest must be owned by the package that exports it`,
    )
  }
  if (manifest.face !== 'host') {
    throw new Error(`typert-loader: ${pkgName} exports "${TYPERT_HOST_EXPORT}" but TYPERT.face is not "host"`)
  }
  if (!Array.isArray(manifest.schemas)) {
    throw new Error(`typert-loader: ${pkgName} TYPERT.schemas must be an array`)
  }
  for (const value of manifest.schemas as unknown[]) {
    if (typeof value !== 'object' || value === null) {
      throw new Error(`typert-loader: ${pkgName} TYPERT.schemas contains a non-object schema`)
    }
    const schema = value as Record<string, unknown>
    requireString(pkgName, schema, 'name', 'schema')
    if (typeof schema.schema !== 'object' || schema.schema === null || !('_zod' in schema.schema)) {
      throw new Error(`typert-loader: ${pkgName} TYPERT schema "${schema.name as string}" is not a zod v4 schema instance`)
    }
  }
  const model = requireObject(pkgName, manifest.model, 'TYPERT.model')
  const services = requireArray(pkgName, model.services, 'TYPERT.model.services')
  const events = requireArray(pkgName, model.events, 'TYPERT.model.events')
  const objects = requireArray(pkgName, model.objects, 'TYPERT.model.objects')
  for (const value of services) {
    const service = requireObject(pkgName, value, 'service')
    requireDocumentation(pkgName, service, 'service')
    requireString(pkgName, service, 'key', 'service')
    requireString(pkgName, service, 'exportName', 'service')
    requireMembers(pkgName, service.members, `service "${service.key as string}"`)
    requireTypes(pkgName, service.types, `service "${service.key as string}"`)

View on GitHub (pinned to b150a551b8)

Solutions

  1. Remove the non-object entry from TYPERT.schemas.

When it happens

Trigger: Thrown at packages/typert/loader/src/index.ts:101 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of deepseek-ai/deepseek-harness@b150a551b8 (2026-08-24). Data as JSON: /api/errors/07ab1b2a0b4b171a. Report an issue: GitHub.