Skip to content

Conversation

@hannesrudolph
Copy link
Collaborator

@hannesrudolph hannesrudolph commented Jul 3, 2025

Description

This PR adds the new issue-fixer-orchestrator mode to the Roo Code extension.

Changes Made

  • Added issue-fixer-orchestrator mode implementation
  • Completed merge with main branch updates
  • All type checks and linting pass

Key Features

The issue-fixer-orchestrator mode provides:

  • Orchestrated workflow for handling GitHub issues
  • Coordination of multiple subtasks for complex issue resolution
  • Integration with existing issue-fixer capabilities

Testing

  • All existing tests pass
  • Type checking completed successfully
  • Linting passes for all packages

Checklist

  • Code follows project style guidelines
  • All CI checks pass
  • No breaking changes introduced
  • Documentation updated (if needed)

Important

Introduces issue-fixer-orchestrator mode to coordinate GitHub issue resolution through subtasks, ensuring comprehensive analysis, implementation, testing, and translation handling before PR creation.

  • New Mode:
    • Adds issue-fixer-orchestrator mode to coordinate GitHub issue resolution.
    • Manages subtasks for analysis, implementation, testing, and PR creation.
  • Workflow:
    • Steps include initializing context, analyzing requirements, implementing solutions, verifying, handling translations, and creating PRs.
    • Uses .roo/rules-issue-fixer-orchestrator/1_Workflow.xml for detailed orchestration steps.
  • Best Practices and Guidelines:
    • Includes best practices, common patterns, GitHub CLI usage, PR workflow, testing, communication, and translation handling guidelines in .roo/rules-issue-fixer-orchestrator/ files.
  • Mode Configuration:
    • Updates .roomodes to include issue-fixer-orchestrator with specific role definition and usage.

This description was created by Ellipsis for 2149858. You can customize this summary. It will automatically update as commits are pushed.

hannesrudolph and others added 30 commits June 25, 2025 09:49
…Code provider (#5111)

- Modified fallback logic in stream parsing to handle all message types, not just assistant messages
- Added proper parsing attempts for partial data before yielding
- Improved error logging to help debug streaming issues
- Added debug logging (controlled by DEBUG_CLAUDE_CODE env var) to trace message types

This ensures reasoning/thinking content from Claude 3.5 Sonnet 4.0 is properly displayed in all cases.
This PR adds filtering of git repository properties from telemetry data and includes git info in telemetry properties, with comprehensive tests.

Behavior:
PostHogTelemetryClient now filters out repositoryUrl, repositoryName, and defaultBranch from telemetry events.
ClineProvider includes git repository information in telemetry properties, filtered by clients.
Functions:
Added isPropertyCapturable() in BaseTelemetryClient to allow property filtering.
Implemented getGitRepositoryInfo() and getWorkspaceGitInfo() in git.ts to extract git info.
Tests:
Added tests for isPropertyCapturable() in PostHogTelemetryClient.test.ts.
Added tests for getGitRepositoryInfo() and getWorkspaceGitInfo() in git.spec.ts.
…5111) (#5113)

* fix: resolve intermittent reasoning content not displayed for Claude Code provider (#5111)

- Modified fallback logic in stream parsing to handle all message types, not just assistant messages
- Added proper parsing attempts for partial data before yielding
- Improved error logging to help debug streaming issues
- Added debug logging (controlled by DEBUG_CLAUDE_CODE env var) to trace message types

This ensures reasoning/thinking content from Claude 3.5 Sonnet 4.0 is properly displayed in all cases.

* fix: disable reasoning budget UI controls for Claude Code provider (#5111)

- Set supportsReasoningBudget to false for all Claude Code models
- Claude Code CLI doesn't support thinking/reasoning parameters
- UI controls were misleading users since they had no effect

* fix: update Claude Code models configuration

- Add missing requiredReasoningBudget: false to claude-3-5-sonnet-20241022 and claude-3-5-haiku-20241022
- Revert run.ts changes as they are not needed for fixing the UI issue
- The UI issue is resolved by properly disabling reasoning budget support in model configuration

* feat: add reasoning effort support to Claude Code models and integrate into model selection

---------

Co-authored-by: Daniel Riccio <[email protected]>
* fix: handle YAML parsing edge cases in CustomModesManager

- Add BOM (Byte Order Mark) stripping for UTF-8 and UTF-16
- Normalize invisible characters including non-breaking spaces
- Replace fancy quotes and dashes with standard characters
- Remove zero-width characters that can cause parsing issues
- Add comprehensive test coverage for all edge cases

This fixes the YAML parsing limitations documented in PR #237 by
implementing proper preprocessing before parsing YAML content.

* fix: address PR review comments

- Fix BOM handling to correctly handle UTF-16 (all BOMs appear as \uFEFF when decoded)
- Optimize cleanInvisibleCharacters with single regex pass for better performance
- Prevent duplicate error messages by marking errors as already handled
- Refactor test file to use mockFsReadFile helper function to reduce duplication
- Fix YAML indentation in tests (use spaces instead of tabs)
- Add ESLint disable comment for character class warning (regex is correct)

* fix: prevent YAML line breaks by setting lineWidth to 0

- Added lineWidth: 0 option to all yaml.stringify() calls
- Prevents automatic line wrapping at 80 characters
- Improves readability of YAML output for long strings
- Applied to CustomModesManager, SimpleInstaller, and migrateSettings

* fix: add defaultStringType option to yaml.stringify calls

- Added defaultStringType: 'PLAIN' to minimize formatting changes
- This helps preserve plain scalars when possible
- Works alongside lineWidth: 0 to prevent automatic line wrapping

* refactor: extract problematic characters regex as a named constant

- Move regex pattern to PROBLEMATIC_CHARS_REGEX static constant
- Add comprehensive documentation for each character range
- Improves maintainability and makes the pattern reusable

* test: add comprehensive edge case tests for YAML parsing

- Add test for mixed line endings (CRLF vs LF)
- Add test for multiple BOMs in sequence
- Add test for deeply nested structures with problematic characters
- Ensures robustness across different real-world scenarios

* feat(i18n): add error messages for custom modes in multiple languages

* fix: update tests to expect i18n keys instead of hardcoded strings

- Update CustomModesManager tests to expect translation keys
- Fix YAML edge case tests to match new i18n error messages
- All tests now pass with the i18n integration

* refactor: use strip-bom package and fix error handling

- Replace custom stripBOM method with existing strip-bom package
- Fix duplicate error handling in parseYamlSafely by returning empty object instead of re-throwing
- Addresses review comments from PR #5099

---------

Co-authored-by: Daniel Riccio <[email protected]>
…5116)

* Fix temperature parameter error for Azure OpenAI reasoning models

* Fix tests: Update O3 family model tests to expect temperature: undefined

- Updated failing tests in openai.spec.ts to expect temperature: undefined for O3 models
- This aligns with the PR changes that remove temperature parameter for Azure OpenAI o1, o3, and o4 models
- All 4 previously failing tests now pass

---------

Co-authored-by: Daniel Riccio <[email protected]>
* dotroo: improve translation workflow to reduce unnecessary file reads

Update translation workflow guidelines to use search_files instead of reading
each translation file individually. This approach is more efficient and
reduces context token usage while maintaining translation accuracy.

The improved workflow:
- Uses search_files to find JSON structure in translation files
- Creates proper context for apply_diff without reading every file
- Only reads specific files when their structure differs
- Validates changes with the missing translations script

Fixes: #5125
Signed-off-by: Eric Wheeler <[email protected]>

* Update 001-general-rules.md

---------

Signed-off-by: Eric Wheeler <[email protected]>
Co-authored-by: Eric Wheeler <[email protected]>
Co-authored-by: Daniel <[email protected]>
…ng (#5104) (#5108)

* fix: resolve Claude Code token counting inefficiency and enable caching (#5104)

- Remove 1.5x fudge factor from Claude Code token counting
- Enable prompt caching support for all Claude Code models
- Add comprehensive tests for token counting and caching
- Update existing tests to reflect accurate token counting

This fixes the extreme token inefficiency where simple messages would
jump from ~40k to over 60k tokens, causing API hangs when approaching
the artificial 120k limit. Claude Code now properly utilizes its full
200k context window with accurate token counting.

* fix: address PR review comments

- Extract IMAGE_TOKEN_ESTIMATE as a named constant for clarity
- Update token counting tests to use exact counts instead of ranges for deterministic testing
- Fix test expectations to match actual tokenizer output

* Remove token counting changes, keep only cache support

- Removed custom countTokens override from claude-code.ts
- Deleted claude-code-token-counting.spec.ts test file
- Kept cache token collection and reporting functionality
- Kept supportsPromptCache: true for all Claude Code models
- Kept claude-code-caching.spec.ts tests

This focuses the PR on enabling cache support without modifying token counting behavior.

* fix: update webview test to expect supportsPromptCache=true for Claude Code models

---------

Co-authored-by: Daniel Riccio <[email protected]>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matt Rubens <[email protected]>
…show cached token count (#5145)

Improve OpenRouter cache calculation and show cached tokens
#5137)

Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>
Co-authored-by: Matt Rubens <[email protected]>
Co-authored-by: Daniel Riccio <[email protected]>
Co-authored-by: Daniel <[email protected]>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matt Rubens <[email protected]>
…5161)

## Fix terminal keyboard shortcut error when adding content to context

**Fixes:** [#2276](#2276)

**Problem:**
- Using keyboard shortcuts to add terminal content to context threw error: "Cannot read properties of undefined (reading 'selection')"
- Context menu worked correctly, but keyboard shortcuts failed

**Root Cause:**
- Command handler accessed `args.selection` without null checking
- When triggered via keyboard shortcut, VS Code passes `undefined` for `args` parameter
- When triggered via context menu, VS Code passes an object with `selection` property

**Solution:**
- Changed `args.selection` to `args?.selection` using optional chaining
- Maintains existing fallback behavior when no selection is available
- Preserves backward compatibility with context menu functionality

**Files Modified:**
- `src/activate/registerTerminalActions.ts` - Added null safety for args parameter

**Testing:**
- ✅ Keyboard shortcuts now work without errors
- ✅ Context menu functionality preserved
- ✅ Fallback to `Terminal.getTerminalContents()` works in both scenarios
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matt Rubens <[email protected]>
Copilot AI review requested due to automatic review settings July 3, 2025 01:07
@hannesrudolph hannesrudolph requested review from cte, jr and mrubens as code owners July 3, 2025 01:07
@dosubot dosubot bot added size:XXL This PR changes 1000+ lines, ignoring generated files. enhancement New feature or request labels Jul 3, 2025
@delve-auditor
Copy link

delve-auditor bot commented Jul 3, 2025

No security or compliance issues detected. Reviewed everything up to 2149858.

Security Overview
  • 🔎 Scanned files: 10 changed file(s)
Detected Code Changes
Change Type Relevant files
Enhancement ► 1_Workflow.xml
    Add Issue Fixer Orchestrator Workflow
► 2_best_practices.xml
    Add Best Practices Guide
► 3_common_patterns.xml
    Add Common Patterns Guide
► 4_github_cli_usage.xml
    Add GitHub CLI Usage Guide
► 5_pull_request_workflow.xml
    Add PR Workflow Guide
► 6_testing_guidelines.xml
    Add Testing Guidelines
► 7_communication_style.xml
    Add Communication Style Guide
► 8_github_communication_guidelines.xml
    Add GitHub Communication Guide
► 9_translation_handling.xml
    Add Translation Handling Guide
Configuration changes ► .roomodes
    Add Issue Fixer Orchestrator Mode

Reply to this PR with @delve-auditor followed by a description of what change you want and we'll auto-submit a change to this PR to implement it.

Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

Adds a new Issue Fixer Orchestrator mode and its orchestration rules under .roo, and inlines several existing mode definitions in .roomodes.

  • Introduces issue-fixer-orchestrator with full workflow, guidelines, and subtask delegation XML under .roo/rules-issue-fixer-orchestrator/
  • Updates .roomodes to inline roleDefinition/whenToUse for existing modes and append the new orchestrator entry
  • Ensures all new XML and YAML pass linting and type checks

Reviewed Changes

Copilot reviewed 10 out of 10 changed files in this pull request and generated no comments.

Show a summary per file
File Description
.roomodes Inlined mode definitions; added orchestrator mode
.roo/rules-issue-fixer-orchestrator/1_Workflow.xml Full orchestrator workflow definition
.roo/rules-issue-fixer-orchestrator/2_best_practices.xml Best practices for issue-fixer-orchestrator
.roo/rules-issue-fixer-orchestrator/3_common_patterns.xml Common bug/feature patterns
.roo/rules-issue-fixer-orchestrator/4_github_cli_usage.xml GitHub CLI usage guidelines
.roo/rules-issue-fixer-orchestrator/5_pull_request_workflow.xml PR creation workflow steps
.roo/rules-issue-fixer-orchestrator/6_testing_guidelines.xml Testing requirements for orchestrator
.roo/rules-issue-fixer-orchestrator/7_communication_style.xml Communication style rules
.roo/rules-issue-fixer-orchestrator/8_github_communication_guidelines.xml Issue/comment and commit message guidance
.roo/rules-issue-fixer-orchestrator/9_translation_handling.xml Translation delegation rules
Comments suppressed due to low confidence (3)

.roomodes:167

  • [nitpick] Use the existing whenToUse key instead of description to remain consistent with other modes’ metadata fields.
    description: Issue Fixer mode ported into an orchestrator

.roomodes:10

  • There's an extra hyphen in the groups list entry. It should be - edit instead of - - edit, otherwise the YAML parser may misinterpret this as a nested list.
      - - edit

.roomodes:4

  • [nitpick] Indent this roleDefinition line to align with the other mode properties (matching the two-space indentation after the dash) to maintain consistent YAML structure.
    roleDefinition: |-

@hannesrudolph
Copy link
Collaborator Author

Closing this PR due to messy commit history. Will create a clean one.

@github-project-automation github-project-automation bot moved this from Triage to Done in Roo Code Roadmap Jul 3, 2025
@github-project-automation github-project-automation bot moved this from New to Done in Roo Code Roadmap Jul 3, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request size:XXL This PR changes 1000+ lines, ignoring generated files.

Projects

Archived in project

Development

Successfully merging this pull request may close these issues.