Commit graph

98 commits

Author SHA1 Message Date
Roo Code
a7f2acfd57 fix: resolve checkpoint initialization timeout in large repositories
- Add timeout handling for initial git staging operation (5 seconds)
- Add --ignore-errors flag to git add command for better error handling
- Add isInitialCall parameter to allow unlimited time for first initialization
- Prevent blocking on large repositories during checkpoint setup

This fix addresses issue #7843 where checkpoints would fail to initialize
in large repositories due to the git add operation taking longer than
the 15-second timeout limit.
2025-09-10 07:56:40 +00:00
roomote[bot]
ed765a3e7d
feat(checkpoints): create checkpoint when user sends a message (#7713)
* feat(checkpoints): create checkpoint on user message send

* fix(checkpoints): suppress implicit user-message checkpoint row; keep current checkpoint updated without a chat row

* Fix checkpoint suppression for user messages

- Propagate suppressMessage flag through event chain properly
- Update ChatView to check checkpoint metadata for suppressMessage flag
- Ensure checkpoint messages are created but not rendered when suppressed
- Fix bug where checkpointSave(false) should have been checkpointSave(true)

* fix: only create checkpoint on user message when files have changed

- Changed allowEmpty from true to false in checkpointSave call
- Checkpoints will now only be created when there are actual file changes
- This avoids creating empty commits in the shadow git repository

* test: update checkpoint test to include suppressMessage parameter

- Fixed test expectation to match the new function signature
- saveCheckpoint now expects both allowEmpty and suppressMessage parameters

---------

Co-authored-by: Roo Code <roomote@roocode.com>
Co-authored-by: Hannes Rudolph <hrudolph@gmail.com>
Co-authored-by: Daniel Riccio <ricciodaniel98@gmail.com>
2025-09-05 18:07:59 -04:00
Ton Hoang Nguyen (Bill)
c206da4a26
fix: Tackling Race/State condition issue by Changing the Code Design for Gemini Grounding Sources (#7434)
Co-authored-by: daniel-lxs <ricciodaniel98@gmail.com>
Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com>
2025-09-05 15:03:09 -04:00
NaccOll
1e403a7c92
fix: identify mcp and slash command config path in multiple folder workspace (#6904) 2025-09-05 14:52:48 -04:00
Daniel
de12ec169b
fix: prevent countdown timer from showing in history for answered follow-up questions (#7686) 2025-09-04 23:19:05 -04:00
Chris Estreich
c25cfdeaef
Publish token usage metrics (#7637) 2025-09-03 13:51:27 -07:00
Chris Estreich
43ff486d42
Publish subtask events (#7626) 2025-09-03 04:05:54 -07:00
Chris Estreich
5196c75017
Move message queue to the extension host (#7604)
Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com>
2025-09-02 19:12:18 -07:00
Chris Estreich
20929b0f16
Mode and provider profile selector (#7545) 2025-08-29 16:48:06 -07:00
Chris Estreich
1d46bd1bbc
Implement deferred task subscriptions (#7517) 2025-08-29 02:43:06 -07:00
Chris Estreich
1e4c46fe6f
Refactor the extension bridge (#7515) 2025-08-29 00:28:38 -07:00
Daniel
2204457cc5
Fix GPT-5 Responses API issues with condensing and image support (#7067)
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: Hannes Rudolph <hrudolph@gmail.com>
2025-08-27 23:30:43 -04:00
roomote[bot]
3cb489d305
fix: hide .rooignore'd files from environment details by default (#7369)
* fix: change default showRooIgnoredFiles to false to hide ignored files

- Changed default value from true to false across all files
- Updated tests to reflect the new default behavior
- This prevents ignored files from appearing in environment details

Fixes #7368

* fix: update tests to match new showRooIgnoredFiles default

* fix: update test expectation to match new showRooIgnoredFiles default value

The PR changed the default value of showRooIgnoredFiles from true to false,
so the test needs to expect false instead of true when calling formatFilesList.

---------

Co-authored-by: Roo Code <roomote@roocode.com>
Co-authored-by: daniel-lxs <ricciodaniel98@gmail.com>
2025-08-27 18:09:06 -04:00
Daniel
d06d970208
fix: ensure subtask results are provided to GPT-5 in OpenAI Responses API (#7305)
When a subtask completes and the parent task resumes, set skipPrevResponseIdOnce = true
to ensure the next API call sends the full conversation including the subtask result.
This fixes the issue where GPT-5 would only receive the new message without the subtask
result context when using previous_response_id.

Fixes #7251
2025-08-21 20:16:16 -07:00
roomote[bot]
4222036c58
feat: remove assistantMessageParser experiment flag and enable for all users (#7300)
- Remove assistantMessageParser from experiment definitions in packages/types
- Remove ASSISTANT_MESSAGE_PARSER from shared experiments configuration
- Update Task.ts to always initialize and use AssistantMessageParser
- Remove conditional logic that checked for experiment flag
- Remove unused parseAssistantMessage import
- Update test files to remove assistantMessageParser references
- All tests passing successfully

Co-authored-by: Roo Code <roomote@roocode.com>
2025-08-21 15:30:42 -07:00
Hannes Rudolph
4664955127
feat: add optional todos parameter to new_task tool with experimental setting (#6329) (#6775)
* feat: add optional todos parameter to new_task tool with experimental setting (#6329)

- Add optional todos parameter to new_task tool for hierarchical task planning
- Implement experimental setting to optionally require todos parameter
- Add clean state-based UI rendering to avoid spurious messages
- Export and reuse parseMarkdownChecklist function
- Add comprehensive test coverage for both optional and required modes
- Maintain full backward compatibility (todos optional by default)

* fix: update new_task tool example to include todos parameter

- Updated the example in tool-use.ts to show the todos parameter
- This prevents AI confusion about whether todos is a valid parameter
- The example now demonstrates the complete tool usage pattern

* fix: make new_task tool definition dynamic based on experimental setting

- Tool description now changes based on newTaskRequireTodos setting
- When disabled: shows todos as (optional)
- When enabled: shows todos as (required) with no mention of configuration
- Added tests to verify dynamic behavior
- Ensures AI models get unambiguous instructions based on current settings

* fix: add translations for newTaskRequireTodos experimental setting

- Added translations for all 17 supported languages
- Ensures consistent UI experience across all locales

* test: update snapshots for new_task tool example with todos parameter

- Updated 13 snapshot files to reflect the new tool-use example
- All tests now pass with the updated example format

* Update src/core/tools/newTaskTool.ts

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* fix: address PR review comments

- Replace any[] with TodoItem[] type in ExtensionStateContext.tsx for better type safety
- Remove redundant initialTodos parameter from startTask call in Task.ts (todos already set in constructor)
- Improve code clarity in newTaskTool.ts by checking provider reference early and reusing state

# Conflicts:
#	src/core/task/Task.ts
#	webview-ui/src/context/ExtensionStateContext.tsx

* fix: revert order of operations in startTask to fix integration test timeout

The change in order of operations (calling say() before postStateToWebview()) was causing the XML content file test to timeout. Reverting to the original order fixes the issue.

* fix: hide todos parameter from new_task tool prompt when experiment is disabled

- Modified getNewTaskDescription to completely omit todos parameter when experiment is off
- Updated tests to verify todos parameter is not shown at all when disabled
- Ensures tool prompt remains unchanged when experimental setting is disabled
- Maintains backward compatibility while providing cleaner prompt interface

* fix: update snapshots for new_task tool todos parameter

- Updated snapshots in add-custom-instructions.spec.ts
- Updated snapshots in system-prompt.spec.ts
- All tests now passing with the new todos parameter documentation

* feat: move newTaskRequireTodos from experimental to VSCode settings

- Added newTaskRequireTodos as a VSCode configuration property in src/package.json
- Added description in src/package.nls.json
- Updated newTaskTool.ts to read from VSCode configuration instead of experiments
- Removed NEW_TASK_REQUIRE_TODOS from experimental settings in src/shared/experiments.ts
- Removed newTaskRequireTodos from packages/types/src/experiment.ts
- Updated tests to use VSCode configuration mocking instead of experiments
- Removed references from experiments test file
- Maintains backward compatibility (defaults to false)

* fix: make new_task tool description dynamically reflect VSCode setting

- Updated new-task.ts to check args.settings instead of args.experiments
- Added newTaskRequireTodos to SystemPromptSettings interface
- Pass newTaskRequireTodos setting through Task.ts and generateSystemPrompt.ts
- Updated all related tests to use settings instead of experiments
- Fixed TypeScript errors in test files by adding newTaskRequireTodos property

This ensures the tool description correctly shows todos parameter as required/optional
based on the VSCode setting value, fixing the issue where Roo would try to use
new_task without the todos parameter when it was required.

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Merge Resolver <merge-resolver@roo-code.com>
Co-authored-by: Roo Code <roomote@roocode.com>
2025-08-21 13:02:05 -07:00
Daniel
a5b143bb44
feat: add OpenAI context window error handling (#6967)
* feat: add OpenAI context window error handling

- Add comprehensive context window error detection for OpenAI, OpenRouter, Anthropic, and Cerebras
- Implement automatic retry with aggressive context truncation (25% reduction)
- Use proper profile settings for condensing operations
- Add robust error handling with try-catch blocks

Based on PR #5479 from cline/cline repository

* fix: address PR review comments

- Improved type safety by using Record<string, any> instead of direct any casts
- Enhanced Anthropic error detection with message pattern matching
- Added comprehensive unit tests for context-error-handling module
- Added named constant FORCED_CONTEXT_REDUCTION_PERCENT
- Added MAX_CONTEXT_WINDOW_RETRIES limit to prevent infinite loops
- Added logging for context window exceeded errors
- Extracted getCurrentProfileId helper method to reduce duplication
- All tests passing (3438 tests)

* fix: address PR review comments for context window error handling

- Improve Anthropic error detection with more specific patterns and error codes
- Add comprehensive unit tests for context-error-handling module
- Add logging for context window errors with detailed information
- Fix comment for FORCED_CONTEXT_REDUCTION_PERCENT constant
- Fix TypeScript error for untyped error parameter
- Maintain existing getCurrentProfileId helper method

---------

Co-authored-by: Roo Code <roomote@roocode.com>
2025-08-21 02:20:49 -07:00
Daniel
9a7ddab1bc
feat: simple read_file tool for single-file-only models (#7222) 2025-08-19 10:57:57 -07:00
Matt Rubens
a8aea14078
chore: bump version to v1.53.0 (#7171) 2025-08-17 23:30:45 -07:00
Chris Estreich
2a974e8bf6
Emit event when a task ask requires interaction (#7128)
Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>
2025-08-16 02:46:51 -07:00
Chris Estreich
44086e4a86
Add support for task page event population (#7117) 2025-08-14 23:17:05 -07:00
Catriel Müller
342123d351
Refactor task execution system: improve call stack management (#7035) 2025-08-14 15:43:44 -04:00
Chris Estreich
c56b95bc60
Task metadata (#7092) 2025-08-14 03:14:17 -07:00
Matt Rubens
6f81b775c7
Revert "Fix token usage / cost often being underreported" (#7039) 2025-08-13 01:33:57 -04:00
Chris Estreich
12d1959bbd
Switch to the UnifiedBridgeService (#6976) 2025-08-12 03:39:11 -07:00
Chris Estreich
a7ad887621
Handle bridge config fetch errors (#6961) 2025-08-11 15:17:17 -10:00
Chris Estreich
b1300e5550
Bring back roomote control (#6796)
Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com>
2025-08-11 17:28:08 -04:00
Christiaan Arnoldus
b30372d5ca
Fix token usage / cost often being underreported (#6122)
Co-authored-by: Daniel Riccio <ricciodaniel98@gmail.com>
2025-08-11 16:55:16 -04:00
Matt Rubens
f53fd39014
Add submitUserMessage to Task (#6895) 2025-08-10 03:13:15 -04:00
Hannes Rudolph
cda67a86f5
GPT5 OpenAI Fix (#6864)
* fix: add explicit max_output_tokens for GPT-5 Responses API

- Added max_output_tokens parameter to GPT-5 request body using model.maxTokens
- This prevents GPT-5 from defaulting to very large token limits (e.g., 120k)
- Updated tests to expect max_output_tokens in GPT-5 request bodies
- Fixed test for handling unhandled stream events by properly mocking SDK fallback

* fix: add missing translations for reasoningEffort.minimal in Indonesian and Dutch locales

* fix: correct GPT-5 response ID persistence and usage

- Renamed metadata field from 'previous_response_id' to 'response_id' for clarity
- Fixed logic to correctly use the response_id from the previous message as previous_response_id for the next request
- This resolves the 'Previous response with id not found' errors that occurred after multiple turns in the same session

* feat: add robust error handling for GPT-5 previous_response_id failures

- Automatically retry without previous_response_id when it's not found (400 error)
- Clear stored lastResponseId to prevent reusing stale IDs
- Handle errors in both SDK and SSE fallback paths
- Log warnings when retrying to help with debugging

* fix: handle GPT-5 response ID race condition with nano model

- Add promise-based synchronization for response ID persistence
- Wait for pending response ID from previous request before using it
- Resolve promise when response ID is received or cleared
- Add 100ms timeout to avoid blocking too long on ID resolution
- Properly clean up resolver on errors to prevent memory leaks

This fixes the race condition where fast nano model responses could cause
the next request to be initiated before the response ID was fully persisted.

* fix: address PR review comments for GPT-5 implementation

- Extract usage normalization helper to reduce duplication
- Suppress conversation continuity for first message (but respect explicit metadata)
- Deduplicate response ID resolver logic
- Remove dead enableGpt5ReasoningSummary option references
- DRY up GPT-5 event/usage handling with normalizeGpt5Usage helper
- Centralize default GPT-5 reasoning effort using model info
- Fix Indonesian locale minimal string misplacement
- Add clarifying comments for Developer prefix usage
- Add TODO for future verbosity UI capability gating
- Fix failing test in reasoning.spec.ts

* fix(openai-native): address Roomote inline feedback\n\n- Delegate standard GPT-5 SSE event types to shared processor to reduce duplication\n- Add JSDoc for response ID accessors\n- Standardize key error messages for GPT-5 Responses API fallback\n- Extract persistGpt5Metadata() in Task to simplify metadata writes\n- Add malformed JSON SSE parsing test\n

* fix(openai-native,gpt5): correct usage cost calc (use calculateApiCostOpenAI incl. cache); enforce 'skip once' continuity via suppressPreviousResponseId; dedupe responseId resolver on SSE 400; feat: gate reasoning.summary by enableGpt5ReasoningSummary; centralize default reasoning effort; types/ui: add ModelInfo.supportsVerbosity and gate Verbosity UI by capability; refactor: avoid duplicate usage emission in SSE done/completed

* fix(gpt5): default enableGpt5ReasoningSummary=true to preserve tests and expected behavior

* fix(gpt5): canonicalize GPT-5 metadata key to previous_response_id and align enableGpt5ReasoningSummary default docs

* fix(openai-native): remove review artifact comments and guard GPT-5 in completePrompt
2025-08-09 14:52:06 -04:00
Matt Rubens
c632b22e56
Revert "Extension bridge (#6677)" (#6729) 2025-08-05 10:45:45 -07:00
Chris Estreich
1d714c8ce4
Extension bridge (#6677)
Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com>
2025-08-04 13:58:14 -07:00
axb
f24c1e69a3
use assistantMessageParser class instead of parseAssistantMessage (#5341)
Co-authored-by: Daniel Riccio <ricciodaniel98@gmail.com>
2025-08-04 10:02:30 -04:00
NaccOll
a5b55dac8b
Changing checkpoint timing and ensuring checkpoints work (#6359)
* feat: Before requesting, ensure checkpoint is initialized

* Generate a checkpoint before modifying the code

* refactor: streamline checkpoint handling and enhance getCheckpoints method

* Blocked waiting for checkpoint initialization timing to change

* cancel checkpoint restore limit

* fix: ensure checkpoint service is undefined on initialization error and improve checkpoint diff handling

* refactor: simplify checkpoint service initialization and cleanup unused variables in CheckpointMenu

* fix: prevent race condition in checkpoint service initialization

- Only assign service to cline.checkpointService after successful initialization
- Add proper cleanup on initialization failure
- Prevents service from being in inconsistent state if Git check fails

* fix: remove checkpoint save from presentAssistantMessage for update_todo_list case

---------

Co-authored-by: Daniel Riccio <ricciodaniel98@gmail.com>
2025-08-03 19:21:45 -04:00
Chris Estreich
b2d2a2c5d2
Task and TaskProvider event emitter cleanup + a few new events (#6606)
Co-authored-by: Roo Code <roomote@roocode.com>
2025-08-02 11:12:44 -07:00
Chris Hasson
1da82b2db0
Add auto-approved cost limits (#6484)
Co-authored-by: Daniel Riccio <ricciodaniel98@gmail.com>
2025-07-31 15:33:09 -04:00
KJ7LNW
01f5320b4d
fix: Remove misleading task resumption message (#5851)
Co-authored-by: Eric Wheeler <roo-code@z.ewheeler.org>
Co-authored-by: Daniel Riccio <ricciodaniel98@gmail.com>
2025-07-30 22:53:06 -04:00
Chris Estreich
cb6dccab95
Miscellaneous cleanup (#6453) 2025-07-30 16:10:53 -07:00
roomote[bot]
8b9303c015
feat: make task mode sticky to task (#6177)
Co-authored-by: Roo Code <roomote@roocode.com>
Co-authored-by: hannesrudolph <hrudolph@gmail.com>
Co-authored-by: Daniel Riccio <ricciodaniel98@gmail.com>
Co-authored-by: Daniel <57051444+daniel-lxs@users.noreply.github.com>
2025-07-28 23:06:14 -04:00
roomote[bot]
f45d9be709
fix: respect maxReadFileLine setting for file mentions to prevent context exhaustion (#6073)
Co-authored-by: Roo Code <roomote@roocode.com>
Co-authored-by: Daniel Riccio <ricciodaniel98@gmail.com>
2025-07-25 16:45:45 -04:00
roomote[bot]
3977bbc0ce
feat: add support for Agent Rules standard via AGENTS.md (#5966) (#5969)
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: Daniel Riccio <ricciodaniel98@gmail.com>
Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com>
2025-07-24 00:42:11 -04:00
Hannes Rudolph
0323256006
feat: Add settings to control diagnostic messages (#5524) (#5582)
Co-authored-by: Roo Code <roomote@roocode.com>
Co-authored-by: Daniel Riccio <ricciodaniel98@gmail.com>
Co-authored-by: Daniel <57051444+daniel-lxs@users.noreply.github.com>
2025-07-23 14:49:41 -04:00
Christiaan Arnoldus
1c26bbc5ab
Fix todo list toggle not working (#6103) 2025-07-23 08:39:27 -04:00
roomote[bot]
2eb586b422
fix: properly distinguish between user cancellations and API failures (#6025)
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: Daniel <57051444+daniel-lxs@users.noreply.github.com>
2025-07-21 11:16:38 -07:00
Daniel
a28d50e20c
fix: detect Claude models by name for API protocol selection (#5840)
* fix: detect Claude models by name for API protocol selection

- Modified getApiProtocol to accept modelId parameter
- Added check for 'claude' in model name (case-insensitive)
- Updated Task.ts to pass model ID to getApiProtocol
- Added comprehensive tests for the new logic

Fixes #5830

* fix: limit Claude model detection to vertex and bedrock providers only

- Modified getApiProtocol to only detect Claude models by name when provider is vertex or bedrock
- Added comprehensive unit tests for getApiProtocol function as requested in PR review
- This ensures Claude models are only auto-detected for providers that need it
2025-07-17 18:27:52 -04:00
Murilo Pires
93f88b45b6
feat: Add configurable error & repetition limit with unified control (#5654) (#5752)
Co-authored-by: Daniel Riccio <ricciodaniel98@gmail.com>
2025-07-15 18:25:43 -04:00
Matt Rubens
5762964b56
Add Kimi K2 model and better support (#5717) 2025-07-15 00:31:18 -04:00
Daniel
0ecae9d4f1
fix: exclude cache tokens from context window calculation (#5603)
Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>
2025-07-11 16:54:51 -04:00
axb
7645aad435
add todo tool (#5182)
Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com>
2025-07-07 14:07:39 -04:00
Murilo Pires
b9626a7eff
fix: cap API retry exponential backoff at 10 minutes (#5171)
Co-authored-by: Daniel Riccio <ricciodaniel98@gmail.com>
2025-06-30 10:56:34 -04:00