feat: non-streaming response translation + CI/CD + formatting#32
Closed
apple-techie wants to merge 10 commits intodecolua:masterfrom
Closed
feat: non-streaming response translation + CI/CD + formatting#32apple-techie wants to merge 10 commits intodecolua:masterfrom
apple-techie wants to merge 10 commits intodecolua:masterfrom
Conversation
Non-streaming requests (stream: false) were returning raw provider responses (e.g., Gemini format with candidates array) instead of OpenAI-compatible format. This broke clients like droid that expect the standard OpenAI response structure. Changes: - Add translateNonStreamingResponse() to convert Gemini/Claude responses to OpenAI chat.completion format - Handle text content, tool calls, and reasoning content - Add CI/CD workflow with lint and build checks - Add lint script to package.json Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Fix token calculation to match streaming translator (add thoughtsTokenCount to prompt_tokens) - Add Claude thinking block handling for non-streaming responses Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
package-lock.json is gitignored in this project, so npm ci fails. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add Prettier with consistent code style - Format all files with Prettier - Add format:check script - Split CI into parallel jobs (lint, format, security, build) - Add npm audit security check - Build only runs after lint + format pass Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
Merges 30 commits from decolua/9router upstream including: - Cursor IDE support with OAuth import token flow - Anthropic Compatible provider support - Provider icons in dashboard - OpenAI-compatible provider nodes - Enhanced usage tracking and token expiration checking Preserved local changes: - Correct GitHub Copilot model IDs (claude-opus-4-5-20251101, etc.) - Expanded GitHub Copilot model list (gpt-5.2, raptor-mini, etc.) - Provider model alias resolution for legacy GitHub model names
- Remove invalid --webpack flag from npm scripts - Add empty turbopack config to silence Turbopack migration warning - Add lint script for next lint Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add eslint.config.mjs with JSX support for ESLint 9 flat config - Add .prettierrc and .prettierignore for consistent formatting - Update package.json with lint and format scripts - Format all files with Prettier - Remove invalid eslint-disable comments for missing plugins - Add globals package for ESLint browser/node globals Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Contributor
Author
|
Closing - changes have been incorporated into our fork and a cleaner PR #52 has been submitted with the GitHub Copilot model fixes. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Problem
When
stream: false, the API was returning raw provider responses like:{"response":{"candidates":[...]}}Instead of the expected OpenAI format:
{"choices":[{"message":{"content":"..."}}]}This broke clients (like droid) that use the OpenAI SDK.
Changes
Non-streaming response translation
translateNonStreamingResponse()inchatCore.jsCI/CD Pipeline
Code Formatting
Test plan
stream: falseagainst Gemini endpointstream: trueto ensure no regression🤖 Generated with Claude Code