@mmmbuto/zai-codex-bridge 0.1.8 → 0.1.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/package.json +1 -1
  2. package/src/server.js +16 -3
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mmmbuto/zai-codex-bridge",
3
- "version": "0.1.8",
3
+ "version": "0.1.9",
4
4
  "description": "Local proxy that translates OpenAI Responses API format to Z.AI Chat Completions format for Codex",
5
5
  "main": "src/server.js",
6
6
  "bin": {
package/src/server.js CHANGED
@@ -260,6 +260,7 @@ async function streamChatToResponses(stream, res) {
260
260
  let buffer = '';
261
261
  let chunkCount = 0;
262
262
  let deltaCount = 0;
263
+ let lastParsed = null; // Keep track of last parsed SSE for ID extraction
263
264
 
264
265
  log('debug', 'Starting to process stream');
265
266
 
@@ -284,14 +285,26 @@ async function streamChatToResponses(stream, res) {
284
285
  // Check for stream end
285
286
  if (data === '[DONE]') {
286
287
  log('info', `Stream end received - wrote ${deltaCount} deltas total`);
287
- res.write(`event: completed\n`);
288
- res.write(`data: ${JSON.stringify({ status: 'completed' })}\n\n`);
289
- log('info', 'Sent completed event');
288
+
289
+ // Send response.completed event (required by Codex Responses API)
290
+ const completedEvent = {
291
+ id: lastParsed?.id || 'msg_' + Date.now(),
292
+ usage: lastParsed?.usage || {
293
+ input_tokens: 0,
294
+ output_tokens: 0,
295
+ total_tokens: 0
296
+ }
297
+ };
298
+
299
+ res.write(`event: response.completed\n`);
300
+ res.write(`data: ${JSON.stringify(completedEvent)}\n\n`);
301
+ log('info', 'Sent response.completed event');
290
302
  return;
291
303
  }
292
304
 
293
305
  try {
294
306
  const parsed = JSON.parse(data);
307
+ lastParsed = parsed; // Save for later use in completed event
295
308
  log('debug', 'Parsed SSE:', JSON.stringify(parsed).substring(0, 150));
296
309
 
297
310
  const delta = parsed.choices?.[0]?.delta;