{"record":{"id":"ebbc62c6e6bf953f","repo":"paperclipai/paperclip","slug":"sandbox-callback-bridge-wrote-invalid-readiness-js","errorCode":null,"errorMessage":"Sandbox callback bridge wrote invalid readiness JSON: ${error instanceof Error ? error.message : String(error)}","messagePattern":"Sandbox callback bridge wrote invalid readiness JSON: (.+?)","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"packages/adapter-utils/src/sandbox-callback-bridge.ts","lineNumber":1800,"sourceCode":"  bridgeAsset?: SandboxCallbackBridgeAsset | null;\n  host?: string;\n  port?: number | null;\n  pollIntervalMs?: number | null;\n  responseTimeoutMs?: number | null;\n  timeoutMs?: number | null;\n  nodeCommand?: string;\n  shellCommand?: \"bash\" | \"sh\" | null;\n  maxQueueDepth?: number | null;\n  maxBodyBytes?: number | null;\n}): Promise<StartedSandboxCallbackBridgeServer> {\n  const timeoutMs = normalizeTimeoutMs(input.timeoutMs, DEFAULT_BRIDGE_RESPONSE_TIMEOUT_MS);\n  const shellCommand = preferredShellForSandbox(input.shellCommand);\n  const directories = sandboxCallbackBridgeDirectories(input.queueDir);\n  let remoteEntrypoint = path.posix.join(input.assetRemoteDir, SANDBOX_CALLBACK_BRIDGE_ENTRYPOINT);\n  if (input.bridgeAsset) {\n    const assetSync = await syncSandboxCallbackBridgeEntrypoint({\n      runner: input.runner,\n      remoteCwd: input.remoteCwd,\n      assetRemoteDir: input.assetRemoteDir,\n      bridgeAsset: input.bridgeAsset,\n      timeoutMs,\n      shellCommand,\n    });\n    remoteEntrypoint = assetSync.remoteEntrypoint;\n  }\n  const env = buildSandboxCallbackBridgeEnv({\n    queueDir: input.queueDir,\n    bridgeToken: input.bridgeToken,\n    host: input.host,\n    port: input.port,\n    pollIntervalMs: input.pollIntervalMs,\n    responseTimeoutMs: input.responseTimeoutMs,\n    maxQueueDepth: input.maxQueueDepth,\n    maxBodyBytes: input.maxBodyBytes,\n  });\n  const nodeCommand = input.nodeCommand?.trim() || \"node\";","sourceCodeStart":1782,"sourceCodeEnd":1818,"githubUrl":"https://github.com/paperclipai/paperclip/blob/3f1d897a7c018d76563a21c6e39c3c9b03933622/packages/adapter-utils/src/sandbox-callback-bridge.ts#L1782-L1818","documentation":"Protocol-parsing failure during bridge startup: the readiness wait loop completed but the bridge's ready-file JSON (host/port/pid) failed to parse, so the worker's listen address cannot be determined from the remote output.","triggerScenarios":"Thrown at packages/adapter-utils/src/sandbox-callback-bridge.ts:1660 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Retry starting the bridge; readiness JSON was malformed.","Check the bridge queue directory for corruption."],"exampleFix":null,"handlingStrategy":"retry","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"3f1d897a7c018d76563a21c6e39c3c9b03933622","analyzedAt":"2026-08-18T22:49:45.177Z","contentChangedAt":"2026-08-18T22:49:45.177Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}