deepseek-ai/deepseek-harness · error · Error
host.call("${method}") on ${id} did not complete: ${message}
Error message
host.call("${method}") on ${id} did not complete: ${message}
Both directions carry JSON only: pass plain JSON data as the argument — or omit it, and the handler receives null — and answer from harness.handle("${method}", fn) with JSON (`return null` when there is nothing to report). What it means
Error "host.call("${method}") on ${id} did not complete: ${message} Both directions carry JSON only: pass plain JSON data as the argument — or omit it, and the handler receives null — and answer from harness.handle("${method}", fn) with JSON (`return null` when there is nothing to report)." thrown in deepseek-ai/deepseek-harness.
Source
Thrown at packages/extensions/cordis-client-runner/src/client/index.ts:216
})
provideClientCordisInspect(ctx, inspect)
for (const provider of clientInspectProviders(ctx)) {
ctx.effect(() => inspect.register(provider), `cordis-client-runner: inspect ${provider.manifest.id}`)
}
ctx.on('connection/reset', () => { inspect.publish() })
const runner = new DynamicCordisPackageRunner({
ctx,
loader: ctx.loader,
modules: ctx.get('modules') as ClientModuleSystem,
slots: ctx.get('slots') as SlotRegistry,
invoke: async (pluginId, pluginRunId, method, args) => {
// Model-authored arguments reach this boundary untyped; the namespace's
// generated codec is what validates them as JSON, and its rejection is a
// bare field name — this is the only place that still knows which call it
// belonged to, so the teaching has to be added here.
const answered = await ctx.remote.dynamicCordisRunner.invoke(pluginId, pluginRunId, method, args as JsonValue)
.catch((error: unknown) => { throw new Error(wireFailure(pluginId, method, error)) })
// Two failure layers, and they teach different things: the carrier's error
// branch means the call never reached the host half, while the namespace's
// own `ok: false` is that half answering with a refusal.
if (!answered.ok) throw new Error(wireFailure(pluginId, method, `${answered.error.code}: ${answered.error.message}`))
const result = answered.value
if (result.ok) return result.value
throw invokeError(pluginId, method, result)
},
// Post-settle diagnosis, deliberately fire-and-forget: the run this package
// belongs to was answered before it ever rendered, so nothing waits on this
// and a failed report must not turn one crash into two.
reportRenderFailure: (agentId, pluginId, pluginRunId, failure) => {
void ctx.remote.dynamicCordisRunner.reportRenderFailure(agentId, pluginId, pluginRunId, failure).then((result) => {
if (!result.ok) {
console.error(`[cordis-client-runner] reporting a render failure of ${pluginId} failed:`, result.error)
}
}, (error: unknown) => {
console.error(`[cordis-client-runner] reporting a render failure of ${pluginId} failed:`, error)View on GitHub (pinned to b150a551b8)
When it happens
Trigger: Thrown at packages/extensions/cordis-client-runner/src/client/index.ts:216 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/b9b3c5447cde80c0.
Report an issue: GitHub.