diff --git a/apps/worker/src/worker.ts b/apps/worker/src/worker.ts index 194cb0e..bb03306 100644 --- a/apps/worker/src/worker.ts +++ b/apps/worker/src/worker.ts @@ -27,18 +27,20 @@ if (workerPort) { if (!workerPort && process.argv.includes("--dada-ai-probe")) { const credentialClient = initializeWorkerCredentialClient(await receiveWorkerCredentials()); let adapter: OneApiGenerationAdapter | undefined; + let probeResult: Awaited> | { code: "ai_probe_failed"; error_category: "upstream_failed"; real_calls: 0; success: false }; try { adapter = new OneApiGenerationAdapter({ credential: credentialClient.aiGatewayCredential }); - const result = await runAiRuntimeProbe(adapter); - process.stdout.write(JSON.stringify(result)); - if (!result.success) process.exitCode = 2; + probeResult = await runAiRuntimeProbe(adapter); } catch { - process.stdout.write(JSON.stringify({ code: "ai_probe_failed", error_category: "upstream_failed", real_calls: 0, success: false })); - process.exitCode = 2; + probeResult = { code: "ai_probe_failed", error_category: "upstream_failed", real_calls: 0, success: false }; } finally { credentialClient.aiGatewayCredential.fill(0); adapter?.dispose(); } + await new Promise((resolveWrite, rejectWrite) => { + process.stdout.write(JSON.stringify(probeResult), (error) => error ? rejectWrite(error) : resolveWrite()); + }); + process.exit(probeResult.success ? 0 : 2); } else if (!workerPort && process.argv.includes("--dada-credential-stdin")) { const credentialClient = initializeWorkerCredentialClient(await receiveWorkerCredentials()); const controlPipeIndex = process.argv.indexOf("--dada-control-pipe");