Fixed usage handling in OpenAI.ts#9134
Conversation
The presence of usage doesn't always mean it's the last chunk.
Learn moreAll Green is an AI agent that automatically: ✅ Addresses code review comments ✅ Fixes failing CI checks ✅ Resolves merge conflicts |
1 similar comment
Learn moreAll Green is an AI agent that automatically: ✅ Addresses code review comments ✅ Fixes failing CI checks ✅ Resolves merge conflicts |
|
All contributors have signed the CLA ✍️ ✅ |
There was a problem hiding this comment.
1 issue found across 1 file
Prompt for AI agents (all 1 issues)
Check if these issues are valid — if so, understand the root cause of each and fix them.
<file name="packages/openai-adapters/src/apis/OpenAI.ts">
<violation number="1" location="packages/openai-adapters/src/apis/OpenAI.ts:277">
P1: `finish_reason` is not a direct property on `ChatCompletionChunk` - it's on each choice in `choices[0].finish_reason`. This condition will always be false, causing usage data to never be captured.</violation>
</file>
Since this is your first cubic review, here's how it works:
- cubic automatically reviews your code and comments on bugs and improvements
- Teach cubic by replying to its comments. cubic learns from your replies and gets better over time
- Ask questions if you need clarification on any suggestion
Reply to cubic to teach it or ask questions. Re-run a review with @cubic-dev-ai review this PR
Bug Fix Requiredcubic correctly identified an issue: The current code: if (result.usage && result.finish_reason === "stop")Should be: if (result.usage && result.choices?.[0]?.finish_reason === "stop")I've created a branch with the fix: patch-1...continuedev:continue:fix-usage-finish-reason-access You can either:
The fix aligns with how other parts of the codebase access chunk properties (e.g., line 389: |
|
I have read the CLA Document and I hereby sign the CLA |
|
@MaslovKK trying to duplicate this issue so that I can verify the fix, could you provide instructions to replicate? |

The presence of
usagedoesn't always mean it's the last chunk.Summary by cubic
Remove special handling of usage in streaming: yield every chunk as it arrives instead of deferring usage to the end. This avoids misordering when usage appears mid-stream.
Written for commit c2ded53. Summary will update automatically on new commits.