Skip to content

Commit add3dcf

Browse files
mini2sdaniel-lxsmrubensroomote[bot]roomote
authored
Roo to main (#797)
* feat: add native tool support to Requesty provider (#9672) - Import resolveToolProtocol and TOOL_PROTOCOL from @roo-code/types - Add tools and tool_choice to completion params when native protocol is enabled - Handle tool_call_partial chunks in streaming response - Add comprehensive tests for native tool support * Include tool format in environment details (#9661) * feat(groq): enable native tool support for models that support function calling (#9673) Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com> * feat: add native tools support for OpenAI-compatible providers (#9676) Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com> * feat: enable native tool calls for Vertex Gemini models (#9678) Add supportsNativeTools: true to all Gemini-based models in the Vertex provider. The VertexHandler extends GeminiHandler which already has full native tool handling logic implemented. Models updated: - gemini-3-pro-preview - gemini-2.5-flash-preview-05-20:thinking - gemini-2.5-flash-preview-05-20 - gemini-2.5-flash - gemini-2.5-flash-preview-04-17:thinking - gemini-2.5-flash-preview-04-17 - gemini-2.5-pro-preview-03-25 - gemini-2.5-pro-preview-05-06 - gemini-2.5-pro-preview-06-05 - gemini-2.5-pro - gemini-2.5-pro-exp-03-25 - gemini-2.0-pro-exp-02-05 - gemini-2.0-flash-001 - gemini-2.0-flash-lite-001 - gemini-2.0-flash-thinking-exp-01-21 - gemini-1.5-flash-002 - gemini-1.5-pro-002 - gemini-2.5-flash-lite-preview-06-17 * fix: display install count in millions instead of thousands (#9677) Co-authored-by: Roo Code <roomote@roocode.com> * feat: add apply_patch native tool (#9663) Co-authored-by: daniel-lxs <ricciodaniel98@gmail.com> * feat: add debug buttons to view API and UI history (#9684) Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com> * test(workflow): update test expectations after removing run_test functionality * Add web-evals updates and kill run functionality (#9681) Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com> Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com> Co-authored-by: Roo Code <roomote@roocode.com> * Add Grok 4 Fast and Grok 4.1 Fast, plus xAI native tool calling (#9690) * Add Grok 4 Fast and Grok 4.1 Fast * Add native tool calling support * Add native tool calling for deepinfra (#9691) * fix(chat): correct message visibility condition filter * fix(utils): wrap os-name call in safe fallback for zgsm OS detection * refactor(core): clean up unused imports and improve file handling logic * refactor: adjust file limits and multipliers * ux: Improvements to the new, RCC Provider centric onboarding flow (#9709) Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com> * ux: Toolbar cleanup and settings consolidation (#9710) Co-authored-by: Roo Code <roomote@roocode.com> * Update a couple provider labels (#9711) Co-authored-by: Roo Code <roomote@roocode.com> * Release: v1.88.0 (#9713) * Remove TabContent wrapper from Modes and MCP (#9712) * fix: preserve tool_use blocks in summary for parallel tool calls (#9714) Co-authored-by: huajiwuyan <huajiwuyan@gmail.com> * feat(chutes): detect native tool support from API supported_features (#9715) Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com> * Add NTC support for Cerebras (#9692) * Add native tools support to Unbound (#9699) Co-authored-by: Roo Code <roomote@roocode.com> * Add native tool support for vercel ai gateway (#9697) Co-authored-by: Roo Code <roomote@roocode.com> * Default grok code fast to native tools (#9717) * Bedrock native tool calling (#9698) * Support tool calling in native ollama provider (#9696) Co-authored-by: Roo Code <roomote@roocode.com> * feat: add native tool support for LiteLLM provider (#9719) * fix: prevent navigation buttons from wrapping on smaller screens (#9721) Co-authored-by: Roo Code <roomote@roocode.com> * chore: add changeset for v3.35.0 (#9724) * Changeset version bump (#9725) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com> * chore: bump version to v1.89.0 (#9718) * fix: flush pending tool results before task delegation (#9726) When tools are called in parallel (e.g., update_todo_list + new_task), the tool results accumulate in userMessageContent but aren't saved to API history until all tools complete. When new_task triggers delegation, the parent is disposed before these pending results are saved, causing 400 errors when the parent resumes (missing tool_result for tool_use). This fix: - Adds flushPendingToolResultsToHistory() method in Task.ts that saves pending userMessageContent to API history - Calls this method in delegateParentAndOpenChild() before disposing the parent task - Safe for both native/XML protocols and sequential/parallel execution (returns early if there's nothing to flush) * Better IPC error logging (#9727) * chore: add changeset for v3.35.1 (#9728) * Changeset version bump (#9729) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com> * Pass app version to provider (#9730) * Allow models to contain default temperature (#9734) * Look for a tag in the Roo provider to default the model to native tool calling (#9735) * Assume all LiteLLM models support native tools (#9736) * chore: add changeset for v3.35.2 (#9737) * Changeset version bump (#9738) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com> * Merge remote-tracking branch 'upstream/main' into roo-to-main * Switch to new welcome view (#9741) * web: Homepage changes (#9675) Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com> Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com> * Add vendor confidentiality section to the system prompt for stealth models (#9742) Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com> * chore: add changeset for v3.35.3 (#9743) * Changeset version bump (#9745) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com> * Refactor: Remove line_count parameter from write_to_file tool (#9667) * fix: remove reasoning toggles for GLM-4.5 and GLM-4.6 on z.ai provider (#9752) Co-authored-by: Roo Code <roomote@roocode.com> * fix: handle malformed native tool calls to prevent hanging (#9758) Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com> * chore: add changeset for v3.35.4 (#9763) * Changeset version bump (#9764) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com> * Convert the Roo provider tools for OpenAI (#9769) * Update the evals keygen command (#9754) * feat: Add provider routing selection for OpenRouter embeddings (#9144) (#9693) Co-authored-by: Sannidhya <sann@Sannidhyas-MacBook-Pro.local> * ux: Updates to CloudView (#9776) * refactor: remove TabHeader and onDone callback from CloudView - Removed TabHeader component from CloudView as it is no longer needed - Removed onDone prop from CloudView component definition and usage - Updated all test files to reflect the removal of onDone prop - Kept Button import that was accidentally removed initially * Updates upsell copy to reflect today's product * Update webview-ui/src/components/cloud/CloudView.tsx Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com> * Update webview-ui/src/i18n/locales/ko/cloud.json Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com> * Update webview-ui/src/i18n/locales/zh-CN/cloud.json Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com> * Test fixes --------- Co-authored-by: Roo Code <roomote@roocode.com> Co-authored-by: Bruno Bergher <bruno@roocode.com> Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com> * Update model key for minimax in MODEL_DEFAULTS (#9778) Co-authored-by: Roo Code <roomote@roocode.com> * Release v3.35.5 (#9781) * Changeset version bump (#9783) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com> * Use search_and_replace for minimax (#9780) * fix: restore context when rewinding after condense (#8295) (#9665) * fix: remove omission detection logic to fix false positives (#9787) Co-authored-by: Roo Code <roomote@roocode.com> * Fix Vercel AI Gateway model fetching (#9791) Co-authored-by: Roo Code <roomote@roocode.com> * refactor: remove insert_content tool (#9751) Co-authored-by: Roo Code <roomote@roocode.com> * feat: add reasoning_details support to Roo provider (#9796) - Add currentReasoningDetails accumulator to track reasoning details - Add getReasoningDetails() method to expose accumulated details - Handle reasoning_details array format in streaming responses - Accumulate reasoning details by type-index key - Support reasoning.text, reasoning.summary, and reasoning.encrypted types - Maintain backward compatibility with legacy reasoning format - Follows same pattern as OpenRouter provider Co-authored-by: Roo Code <roomote@roocode.com> * chore: hide parallel tool calls experiment and disable feature (#9798) * Update next.js (#9799) * Fix the download count on the homepage (#9807) * Default to native tools for all models in the Roo provider (#9811) Co-authored-by: Roo Code <roomote@roocode.com> * Fix/cerebras conservative max tokens (#9804) Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com> * Release v3.36.0 (#9814) * Changeset version bump (#9828) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com> * Merge remote-tracking branch 'upstream/main' into roo-to-main * ux: improved error messages and documentation links (#9777) * Minor ui tweaks * Basic setup for richer API request errors * Better errors messages and contact link * i18n * Update webview-ui/src/i18n/locales/en/chat.json Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com> * Update webview-ui/src/i18n/locales/en/chat.json Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com> * Empty better than null * Update webview-ui/src/i18n/locales/nl/chat.json Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com> * i18n * Start retryAttempt at 1 * Reverse retryAttempt number, just ommit it from the message --------- Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com> Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com> * web: New Pricing Page (#9821) * Removes Pro, restructures pricing page * Solves provider/credits * Update apps/web-roo-code/src/app/pricing/page.tsx Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com> * Updates agent landing pages to not mention a trial that doesn't exist * Updates agent-specific landing pages to reflect new home and trial * Indicate the agent landing page the user came from * Clean up the carousel --------- Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com> * Ignore input to the execa terminal process (#9827) * fix: Overly round follow-up question suggestions (#9829) Not that rounded * Always enabled reasoning for models that require it (#9836) * ChatView: smoother stick-to-bottom during streaming (#8999) * feat: add symlink support for slash commands in .roo/commands folder (#9838) Co-authored-by: Roo Code <roomote@roocode.com> * fix: sanitize reasoning_details IDs to remove invalid characters (#9839) * feat(evals-ui): Add filtering, bulk delete, tool consolidation, and run notes (#9837) * Be safer about large file reads (#9843) validateFileTokenBudget wasn't being called considering the output budget. * Revert "fix: sanitize reasoning_details IDs to remove invalid characters" (#9846) * Merge remote-tracking branch 'upstream/main' into roo-to-main * Exclude the ID from Roo reasoning details (#9847) * fix: prevent cascading truncation loop by only truncating visible messages (#9844) * FIX + feat: add MessageManager layer for centralized history coordination (#9842) * feat(web-evals): add multi-model launch and UI improvements (#9845) Co-authored-by: Roo Code <roomote@roocode.com> * Revert "Exclude the ID from Roo reasoning details" (#9850) * fix: handle unknown/invalid native tool calls to prevent extension freeze (#9834) * feat: add gpt-5.1-codex-max model to OpenAI provider (#9848) * Delete .changeset/symlink-commands.md * Release v3.36.1 (#9851) * Changeset version bump (#9840) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com> * feat: add dynamic settings support for Roo models from API (#9852) * chore: restrict gpt-5 tool set to apply_patch (#9853) * Fix chutes model fetching (#9854) * Release v3.36.2 (#9855) * Changeset version bump (#9856) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com> * Better error logs for parseToolCall exceptions (#9857) * (update): Add DeepSeek V3-2 Support for Baseten Provider (#9861) Co-authored-by: AlexKer <AlexKer@users.noreply.github.com> * web: Product pages (#9865) Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com> Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com> * fix: sanitize removed/invalid API providers to prevent infinite loop (#9869) * Update xAI models catalog (#9872) * refactor: decouple tools from system prompt (#9784) * Stop making count_tokens requests (#9884) * Default to using native tools when supported on openrouter (#9878) * feat: change defaultToolProtocol default from xml to native (#9892) * feat: change defaultToolProtocol to default to native instead of xml * fix: add missing getMcpHub mock to Subtask Rate Limiting tests --------- Co-authored-by: Roo Code <roomote@roocode.com> * Refactor: Unified context-management architecture with improved UX (#9795) Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com> * Make eval runs deleteable (#9909) * fix: add Kimi, MiniMax, and Qwen model configurations for Bedrock (#9905) * fix: add Kimi, MiniMax, and Qwen model configurations for Bedrock - Add moonshot.kimi-k2-thinking with 32K max tokens and 256K context - Add minimax.minimax-m2 with 16K max tokens and 230K context - Add qwen.qwen3-next-80b-a3b with 8K max tokens and 262K context - Add qwen.qwen3-coder-480b-a35b-v1:0 with 8K max tokens and 262K context All models configured with native tool support and appropriate pricing. Fixes #9902 * fix: add preserveReasoning flag and update Kimi K2 context window - Added preserveReasoning: true to moonshot.kimi-k2-thinking model - Added preserveReasoning: true to minimax.minimax-m2 model - Updated Kimi K2 context window from 256_000 to 262_144 These changes ensure: 1. Reasoning traces are properly preserved for both models 2. Roo correctly recognizes task completion 3. Tool calls within reasoning traces are handled appropriately 4. Context window matches AWS Console specification * fix: update MiniMax M2 context window to 196_608 for Bedrock Based on AWS CLI testing, the actual context window limit for MiniMax M2 on Bedrock is 196,608 tokens, not 230,000 as initially configured. * Update packages/types/src/providers/bedrock.ts Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com> --------- Co-authored-by: Roo Code <roomote@roocode.com> Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com> Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com> * fix: use foreground color for context-management icons (#9912) * feat: add xhigh reasoning effort for gpt-5.1-codex-max (#9900) * feat: add xhigh reasoning effort for gpt-5.1-codex-max * fix: Address openai-native.spec.ts test failure * chore: Localisation of 'Extra high' * chore: revert unrelated CustomModesManager refactoring --------- Co-authored-by: Hannes Rudolph <hrudolph@gmail.com> * feat: add search_replace native tool for single-replacement operations (#9918) Adds a new search_replace tool that performs a single search and replace operation on a file, requiring the old_string to uniquely identify the target text with 3-5 lines of context. Parameters: - file_path: Path to file (relative or absolute) - old_string: Text to find (must be unique in file) - new_string: Replacement text (must differ from old_string) * Improve cloud job error logging for RCC provider errors (#9924) * feat: configure tool preferences for xAI models (#9923) * fix: process finish_reason to emit tool_call_end events (#9927) * fix: suppress 'ask promise was ignored' error in handleError (#9914) * fix: exclude apply_diff from native tools when diffEnabled is false (#9920) Co-authored-by: Roo Code <roomote@roocode.com> * Try to make OpenAI errors more useful (#9639) * refactor: consolidate ThinkingBudget components and fix disable handling (#9930) * Add timeout to OpenAI Compatible Provider Client (#9898) * fix: add finish_reason processing to xai.ts provider (#9929) * Remove defaultTemperature from Roo provider configuration (#9932) Co-authored-by: Roo Code <roomote@roocode.com> * feat: forbid time estimates in architect mode (#9931) Co-authored-by: Roo Code <roomote@roocode.com> * feat: streaming tool stats + token usage throttling (#9926) Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com> * feat: Make Architect save to `/plans` and gitignore it (#9944) Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com> Co-authored-by: Roo Code <roomote@roocode.com> * feat: add announcement support CTA and social icons (#9945) * fix: display actual API error message instead of generic text on retry (#9954) * feat(roo): add versioned settings support with minPluginVersion gating (#9934) * Revert "feat: change defaultToolProtocol default from xml to native" (#9956) * fix: return undefined instead of 0 for disabled API timeout (#9960) * feat(deepseek): update DeepSeek models to V3.2 with new pricing (#9962) Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com> * Add a way to save screenshots from the browser tool (#9963) * Add a way to save screenshots from the browser tool * fix: use cross-platform paths in BrowserSession screenshot tests * fix: validate screenshot paths to prevent filesystem escape --------- Co-authored-by: Roo Code <roomote@roocode.com> * Tweaks to baseten model definitions (#9866) * fix: always show tool protocol selector for openai-compatible (#9966) * feat: add API error telemetry to OpenRouter provider (#9953) Co-authored-by: Roo Code <roomote@roocode.com> * fix: validate and fix tool_result IDs before API requests (#9952) Co-authored-by: cte <cestreich@gmail.com> Co-authored-by: Roo Code <roomote@roocode.com> Co-authored-by: Hannes Rudolph <hrudolph@gmail.com> * fix: respect explicit supportsReasoningEffort array values (#9970) * v3.36.3 (#9972) * fix(activate): unify webview panel identifier to use consistent tabPanelId * feat(gemini): add minimal and medium reasoning effort levels (#9973) Co-authored-by: Roo Code <roomote@roocode.com> Co-authored-by: cte <cestreich@gmail.com> * Delete changeset files (#9977) * Add missing release notes for v3.36.3 (#9979) * feat: add error details modal with on-demand display (#9985) * feat: add error details modal with on-demand display - Add errorDetails prop to ErrorRow component - Show Info icon on hover in error header when errorDetails is provided - Display detailed error message in modal dialog on Info icon click - Add Copy to Clipboard button in error details modal - Update generic error case to show localized message with details on demand - Add i18n translations for error details UI * UI Tweaks * Properly handles error details * i18n * Lighter visual treatment for errors --------- Co-authored-by: Roo Code <roomote@roocode.com> Co-authored-by: Bruno Bergher <bruno@roocode.com> * Fix: Correct TODO list display order in chat view (ROO-107) (#9991) Co-authored-by: Roo Code <roomote@roocode.com> * fix: prevent premature rawChunkTracker clearing for MCP tools (#9993) * fix: filter out 429 rate limit errors from API error telemetry (#9987) Co-authored-by: Roo Code <roomote@roocode.com> Co-authored-by: cte <cestreich@gmail.com> * Release v3.36.4 (#9994) * Changeset version bump (#9995) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Chris Estreich <cestreich@gmail.com> * feat(telemetry): add app version to exception captures and filter 402 errors (#9996) Co-authored-by: cte <cestreich@gmail.com> * Remove Glama provider (#9801) * @roo-code/types v1.90.0 (#9998) * fix: apply versioned settings on nightly builds (#9997) * feat: add toggle for Enter key behavior in chat input (#10002) * chore: remove list_code_definition_names tool (#10005) Co-authored-by: cte <cestreich@gmail.com> * Update roomotes.yml (#10008) * fix: add general API endpoints for Z.ai provider (#9894) Co-authored-by: Roo Code <roomote@roocode.com> * fix: handle empty Gemini responses and reasoning loops (#10007) * fix: add missing tool_result blocks to prevent API errors (#10015) * feat: add gpt-5.2 model to openai-native provider (#10024) * test: update built-in commands count to 9 * fix: filter orphaned tool_results when more results than tool_uses (#10027) * Release v3.36.5 (#10029) * Changeset version bump (#10032) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Chris Estreich <cestreich@gmail.com> * fix: merge settings and versionedSettings for Roo provider models (#10030) * Revert "fix: merge settings and versionedSettings for Roo provider models" (#10034) * Revert the 3.6.5 release (we halted it) (#10036) * Release v3.36.5 (#10037) * Changeset version bump (#10038) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Chris Estreich <cestreich@gmail.com> * test: adjust terminal count limits in TerminalRegistry tests * ux: improve auto-approve timer visibility in follow-up suggestions (#10048) Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com> Co-authored-by: Roo Code <roomote@roocode.com> * fix: cancel auto-approval timeout when user starts typing (#9937) Co-authored-by: Roo Code <roomote@roocode.com> Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com> * fix: extract raw error message from OpenRouter metadata (#10039) OpenRouter wraps upstream provider errors in a generic message but includes the actual error in metadata.raw. This change: - Adds OpenRouterErrorResponse interface for proper typing - Creates handleStreamingError() helper for DRY error handling - Extracts metadata.raw for actionable error messages in PostHog - Includes nested error structure so getErrorMessage() can extract raw message Before: PostHog receives '400 Provider returned error' (generic) After: PostHog receives 'Model xyz not found' (actionable) This enables proper error tracking and debugging via PostHog telemetry. * feat: add tool alias support for model-specific tool customization (#9989) Co-authored-by: Hannes Rudolph <hrudolph@gmail.com> * fix: show tool protocol dropdown for LiteLLM provider (#10053) * feat: add WorkspaceTaskVisibility type for organization cloud settings (#10020) * feat: add WorkspaceTaskVisibility type and workspaceTaskVisibility property to OrganizationCloudSettings * refactor: create workspaceTaskVisibilitySchema and derive WorkspaceTaskVisibility type from it --------- Co-authored-by: Roo Code <roomote@roocode.com> * Release: v1.91.0 (#10055) chore: bump version to v1.91.0 * feat: sanitize MCP server/tool names for API compatibility (#10054) * Release v3.36.6 (#10057) * Changeset version bump (#10058) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Chris Estreich <cestreich@gmail.com> * fix: use JavaScript-based hover for checkpoint menu visibility (#10056) * feat: remove auto-approve toggles for to-do and retry actions (#10062) * feat(openrouter): add improvements to openrouter provider (#10082) * feat: Add Amazon Nova 2 Lite model to Bedrock provider (#9830) Co-authored-by: Roo Code <roomote@roocode.com> Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com> * feat: add AWS Bedrock service tier support (#9955) Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com> Co-authored-by: Roo Code <roomote@roocode.com> Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com> * Capture more of OpenRouter's provider specific error details (#10073) * Capture more of OpenRouter's provider specific error details * Actually match the openrouter structure * feat(web-evals): improve run logs and formatters (#10081) --------- Co-authored-by: Daniel <57051444+daniel-lxs@users.noreply.github.com> Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com> Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com> Co-authored-by: Roo Code <roomote@roocode.com> Co-authored-by: Hannes Rudolph <hrudolph@gmail.com> Co-authored-by: daniel-lxs <ricciodaniel98@gmail.com> Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com> Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com> Co-authored-by: Bruno Bergher <bruno@roocode.com> Co-authored-by: Silentflower <33809253+SilentFlower@users.noreply.github.com> Co-authored-by: huajiwuyan <huajiwuyan@gmail.com> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Chris Estreich <cestreich@gmail.com> Co-authored-by: SannidhyaSah <sah_sannidhya@outlook.com> Co-authored-by: Sannidhya <sann@Sannidhyas-MacBook-Pro.local> Co-authored-by: John Richmond <5629+jr@users.noreply.github.com> Co-authored-by: Seb Duerr <sebastian.duerr@cerebras.net> Co-authored-by: Alex Ker <thealexker@gmail.com> Co-authored-by: AlexKer <AlexKer@users.noreply.github.com> Co-authored-by: Andrew Ginns <ginns.aw@gmail.com> Co-authored-by: Dennise Bartlett <bartlett.dc.1@gmail.com>
1 parent bea9ca0 commit add3dcf

14 files changed

Lines changed: 1139 additions & 326 deletions

File tree

apps/web-evals/src/app/api/runs/[id]/logs/failed/route.ts

Lines changed: 25 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -61,26 +61,44 @@ export async function GET(request: NextRequest, { params }: { params: Promise<{
6161
archive.on("error", reject)
6262
})
6363

64-
// Add each failed task's log file to the archive
64+
// Add each failed task's log file and history files to the archive
6565
const logDir = path.join(LOG_BASE_PATH, String(runId))
6666
let filesAdded = 0
6767

6868
for (const task of failedTasks) {
6969
// Sanitize language and exercise to prevent path traversal
7070
const safeLanguage = sanitizePathComponent(task.language)
7171
const safeExercise = sanitizePathComponent(task.exercise)
72+
const expectedBase = path.resolve(LOG_BASE_PATH)
73+
74+
// Add the log file
7275
const logFileName = `${safeLanguage}-${safeExercise}.log`
7376
const logFilePath = path.join(logDir, logFileName)
7477

7578
// Verify the resolved path is within the expected directory (defense in depth)
76-
const resolvedPath = path.resolve(logFilePath)
77-
const expectedBase = path.resolve(LOG_BASE_PATH)
78-
if (!resolvedPath.startsWith(expectedBase)) {
79-
continue // Skip files with suspicious paths
79+
const resolvedLogPath = path.resolve(logFilePath)
80+
if (resolvedLogPath.startsWith(expectedBase) && fs.existsSync(logFilePath)) {
81+
archive.file(logFilePath, { name: logFileName })
82+
filesAdded++
8083
}
8184

82-
if (fs.existsSync(logFilePath)) {
83-
archive.file(logFilePath, { name: logFileName })
85+
// Add the API conversation history file
86+
// Format: {language}-{exercise}.{iteration}_api_conversation_history.json
87+
const apiHistoryFileName = `${safeLanguage}-${safeExercise}.${task.iteration}_api_conversation_history.json`
88+
const apiHistoryFilePath = path.join(logDir, apiHistoryFileName)
89+
const resolvedApiHistoryPath = path.resolve(apiHistoryFilePath)
90+
if (resolvedApiHistoryPath.startsWith(expectedBase) && fs.existsSync(apiHistoryFilePath)) {
91+
archive.file(apiHistoryFilePath, { name: apiHistoryFileName })
92+
filesAdded++
93+
}
94+
95+
// Add the UI messages file
96+
// Format: {language}-{exercise}.{iteration}_ui_messages.json
97+
const uiMessagesFileName = `${safeLanguage}-${safeExercise}.${task.iteration}_ui_messages.json`
98+
const uiMessagesFilePath = path.join(logDir, uiMessagesFileName)
99+
const resolvedUiMessagesPath = path.resolve(uiMessagesFilePath)
100+
if (resolvedUiMessagesPath.startsWith(expectedBase) && fs.existsSync(uiMessagesFilePath)) {
101+
archive.file(uiMessagesFilePath, { name: uiMessagesFileName })
84102
filesAdded++
85103
}
86104
}

0 commit comments

Comments
 (0)