deepseek-ai/deepseek-harness · error · TypeError
subagentProvider must be a non-empty normalized string
Error message
subagentProvider must be a non-empty normalized string
What it means
Error "subagentProvider must be a non-empty normalized string" thrown in deepseek-ai/deepseek-harness.
Source
Thrown at packages/workflow/tool-ralph/src/index.ts:193
}
return { status: 'budget-limited', roundsStarted: args.maxRounds, report: previous }
`
const DESCRIPTION = 'Run a foreground fresh-agent Ralph loop toward one immutable objective. '
+ 'Use only when the direct human explicitly asks for Ralph or fresh-agent iteration. Each round '
+ 'opens a new child with no parent conversation or prior child session; the shared workspace is '
+ 'long-term memory, and only a bounded structured report crosses rounds. The call returns when '
+ 'a worker reports completion or a concrete blocker, or at the round limit. Ordinary long-running same-session work '
+ 'belongs to goal tools.'
/** Validate defaults even when a caller invokes apply() without Loader normalization. */
function resolveConfig(config: Config): ResolvedConfig {
const subagentProvider = config.subagentProvider ?? 'spawn'
const maxRounds = config.maxRounds ?? 256
const maxHandoffChars = config.maxHandoffChars ?? 16_384
const maxResultChars = config.maxResultChars ?? 16_384
if (subagentProvider.length === 0 || subagentProvider !== subagentProvider.trim()) {
throw new TypeError('subagentProvider must be a non-empty normalized string')
}
if (!Number.isSafeInteger(maxRounds) || maxRounds < 1) {
throw new TypeError('maxRounds must be a positive safe integer')
}
if (!Number.isSafeInteger(maxHandoffChars) || maxHandoffChars < 1) {
throw new TypeError('maxHandoffChars must be a positive safe integer')
}
if (!Number.isSafeInteger(maxResultChars) || maxResultChars < 1) {
throw new TypeError('maxResultChars must be a positive safe integer')
}
return { subagentProvider, maxRounds, maxHandoffChars, maxResultChars }
}
/** Resolve one model-selected cap against the deployment ceiling. */
function resolveMaxRounds(requested: number | undefined, ceiling: number): number {
const value = requested ?? ceiling
if (!Number.isSafeInteger(value) || value < 1) {
throw new TypeError('Ralph maxRounds must be a positive safe integer')View on GitHub (pinned to b150a551b8)
Solutions
- Pass a non-empty subagentProvider string in the Ralph tool arguments or its cordis.yml config.
When it happens
Trigger: Thrown at packages/workflow/tool-ralph/src/index.ts:193 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/fc999ca1dfb61d14.
Report an issue: GitHub.