Commit graph

1437 commits

Author SHA1 Message Date
Eric Wheeler
a867595a6a doc: enhance shell integration error messages
Add descriptive messages to shell integration failures to help users
understand and resolve integration issues more effectively. This improves
the debugging experience by providing specific details about why shell
integration failed.

- Add message parameter to no_shell_integration event
- Update UI to display specific error messages
- Update troubleshooting documentation link

Signed-off-by: Eric Wheeler <roo-code@z.ewheeler.org>
2025-03-10 20:55:05 -07:00
Eric Wheeler
7dadf4cd1b refactor: remove redundant terminal ID from event handling
As pointed out by @cte, passing and checking terminal IDs in events is
unnecessary since a TerminalProcess instance can never be associated with a
different Terminal instance. The event handling is already properly scoped
to the specific TerminalProcess instance.

- Remove terminal ID parameter from shell_execution_complete event
- Remove terminal ID parameter from stream_available event
- Update all event handlers to remove ID checks
- Update all test cases to match new event signatures

Signed-off-by: Eric Wheeler <roo-code@z.ewheeler.org>
2025-03-10 20:55:05 -07:00
Eric Wheeler
e3b682f119 perf: use string instead of array for terminal output
Use a string instead of array for terminal output since it is faster
than splitting and joining. Also note that 'line' events may contain
multiple lines, so concatenating directly is more efficient.

Signed-off-by: Eric Wheeler <roo-code@z.ewheeler.org>
2025-03-10 20:55:05 -07:00
Eric Wheeler
2319f968e2 test: update Terminal constructor calls
Notice: this comment required updating system test snapshots with new
execute_command XML schema feature `cwd`

- Add required cwd parameter to Terminal constructor calls in tests
  - Use './' for TerminalProcess.test.ts
  - Use '/test/path' for TerminalProcessExec.test.ts to match shellIntegration.cwd

Signed-off-by: Eric Wheeler <roo-code@z.ewheeler.org>
2025-03-10 20:55:05 -07:00
Eric Wheeler
1a1432d1d1 fix: remove forced directory changes that break shell integration
Forcing terminals to `cd` back to the project directory was disrupting
shell state without providing feedback to the model. This caused issues
with capturing output from subsequent commands, particularly with custom
shell prompts.

Instead of forcing directory changes, we now track terminal state
through shell integration with a fallback mechanism, and provide
explicit working directory feedback to the model. This allows terminals
to maintain their natural state while ensuring accurate command output
capture.

Changes:
- Remove forced `cd` commands that were disrupting terminal state
- Add getCurrentWorkingDirectory() method with shell integration fallback
- Add customCwd parameter to executeCommandTool for flexible directory handling
- Add requiredCwd parameter to control terminal selection behavior
- Refactor terminal selection logic for more consistent state management
- Modify environment details to include terminal working directory feedback
- Update XML schema to include optional working directory parameter in execute_command

The environment details now provide explicit feedback about terminal state:
Command executed in terminal N from '/path/to/dir'. Exit code: 0

Fixes: #1388
Signed-off-by: Eric Wheeler <roo-code@z.ewheeler.org>
2025-03-10 20:55:05 -07:00
Eric Wheeler
e27c6aadc1 fix: terminal process isolation between parallel Cline tasks
These changes ensure proper isolation by preventing terminal process
output from one Cline task appearing in another task's context when
multiple Cline instances are running in parallel.

- Add taskId parameter to TerminalRegistry.getTerminals to filter terminals by Cline task ID
- Update Cline.ts to use taskId-filtered terminals

Signed-off-by: Eric Wheeler <roo-code@z.ewheeler.org>
2025-03-10 20:55:05 -07:00
Eric Wheeler
25e46a244d fix: terminal output not showing after command completion
Fix an issue where background running terminals that complete their
execution do not report the final output of their command. Previously,
output was reported while the command was active, but after termination
the remaining output was not provided within the 'inactive terminals'
section of environment details.

- Implement terminal process queue system to track completed processes
- Store command and output retrieval state per process
- Add helper methods to manage the process queue efficiently
- Update getEnvironmentDetails to properly display output from completed processes

Signed-off-by: Eric Wheeler <roo-code@z.ewheeler.org>
2025-03-10 20:55:05 -07:00
Eric Wheeler
bc8cfc919f fix: prevent terminal sharing between Roo tasks
This change improves terminal management by tracking which task owns
each terminal and prioritizing terminal selection based on task
ownership.

Terminal selection now follows a priority order:

1. First try to find a terminal already assigned to this task with matching directory
2. If not found, try to find any available terminal with matching directory
3. If still not found, try to find any non-busy terminal
4. Only create a new terminal as a last resort

When a task ends, all terminals associated with it are released for use
by other tasks.

This prevents the issue where multiple Roo task instances could
inadvertently share terminals, which could lead to confusion when
terminal output from one task appears in another task's context.

Signed-off-by: Eric Wheeler <roo-code@z.ewheeler.org>
2025-03-10 20:55:05 -07:00
Eric Wheeler
bf2ce7e1ee refactor: move terminal functionality to Terminal class
Move terminal lifecycle management to improve organization:

1. Move runCommand to Terminal class
2. Move getOrCreateTerminal to TerminalRegistry

Signed-off-by: Eric Wheeler <roo-code@z.ewheeler.org>
2025-03-10 20:55:05 -07:00
Eric Wheeler
59745a7058 refactor: establish natural terminal hierarchy
Move terminal state access from TerminalManager to TerminalRegistry to establish
a clear hierarchical relationship between components. This change centralizes
terminal management in TerminalRegistry and eliminates duplicate state tracking
in TerminalManager.

The hierarchy flows from TerminalRegistry (managing all terminals) to Terminal
(encapsulating a terminal instance) to TerminalProcess (running within a terminal).

Key changes:
- Remove `processes` map from TerminalManager
- Add static getUnretrievedOutput and isProcessHot methods to TerminalRegistry, which manages all terminals globally

Test updates:
- Modify test setup to create Terminal instances
- Remove processes map usage from tests
- Update process creation and command execution flow in tests

Signed-off-by: Eric Wheeler <roo-code@z.ewheeler.org>
2025-03-10 20:55:05 -07:00
Eric Wheeler
daf36f38ea refactor: move interpretExitCode from TerminalManager to TerminalProcess
This commit moves the interpretExitCode method from TerminalManager to
TerminalProcess class, as part of the terminal refactoring effort. The
method is responsible for translating exit codes into detailed results,
including signal information.

Changes include:
- Moved interpretExitCode method to TerminalProcess class
- Updated imports in TerminalManager and Cline to reference
  ExitCodeDetails from TerminalProcess
- Added findTerminalIdByVscodeTerminal helper method in TerminalManager
- Added comprehensive unit tests for interpretExitCode in
  TerminalProcess
- Tests cover undefined exit codes, normal exit codes (0-127), and
  signal exit codes (128+)

This change improves code organization by placing the exit code
interpretation logic closer to where it's primarily used, in the
TerminalProcess class.

Signed-off-by: Eric Wheeler <roo-code@z.ewheeler.org>
2025-03-10 20:55:05 -07:00
Eric Wheeler
070a36baa2 Revert "Smart truncation for terminal output"
This reverts commit 7eee3e0878.

Middle-out truncation is a really great feature and it should still be
implemented, however it unnecessarily interferes with #1365 because it
hooked into the low-level chunk management that comes directly from VSCE
shell integration.

The best place to hook OutputBuilder is as follows depending on the
state of terminal interaction:

1. Foreground terminals:

Cline.ts:
	 executeCommandTool(...) {
	     process.on("line", (line) => {
		    lines.push(line)
		    ...
	    }
	 }

2. For background terminals: hook in at the point that getUnretrievedOutput is consumed for active or
   inactive terminals in Cline.ts:getEnvironmentDetails()

Please note:

The Terminal classes are very sensitive to change, partially because of
the complicated way that shell integration works with VSCE, and
partially because of the way that Cline interacts with the Terminal*
class abstractions that make VSCE shell integration easier to work with.

At the point that PR#1365 is merged, it is unlikely that any Terminal*
classes will need to be modified substantially.  Generally speaking, we
should think of this is a stable interface and minimize changes.

Reverts: #1390
2025-03-10 20:54:53 -07:00
Eric Wheeler
384b469bf1 Revert "Handle outputless commands"
This reverts commit 710284cc3d which has
been superseded by PR #1365.

Fixes: #1416
2025-03-10 20:50:10 -07:00
Matt Rubens
d6a9e0fbe9
Merge pull request #1552 from RooVetGit/mcp-home-dir
fix: update MCP servers directory path for platform compatibility
2025-03-10 21:47:08 -04:00
Matt Rubens
6cfc1cd4c9
Merge pull request #1528 from afshawnlotfi/chrome-remote-webtools
Chrome remote webtools
2025-03-10 21:37:20 -04:00
Hannes Rudolph
7462906b7a
Update ClineProvider.ts
Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>
2025-03-10 18:49:25 -06:00
cannuri
a9773b70c8 fix browser_action system prompt 2025-03-11 01:03:18 +01:00
Hannes Rudolph
abcb7c18b4
Update src/core/webview/ClineProvider.ts
Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>
2025-03-10 16:23:43 -06:00
hannesrudolph
102a996875 fix: update MCP servers directory path for platform compatibility 2025-03-10 15:18:19 -06:00
Matt Rubens
89b8b10bba Merge remote-tracking branch 'origin/main' into feature/add_sse_mcp 2025-03-10 10:47:26 -04:00
Matt Rubens
6644202b55
Merge pull request #1451 from dtrugman/feat/add-openai-style-cost-calculation
Add openai style cost calculation
2025-03-10 10:11:30 -04:00
Matt Rubens
03045d8e75
Update src/core/Cline.ts 2025-03-10 09:54:45 -04:00
Afshawn Lotfi
66e3b9610c Add remote browser connection support and related state management 2025-03-10 03:41:38 +00:00
Matt Rubens
732eeddc6c Add model telemetry too 2025-03-09 23:18:44 -04:00
Matt Rubens
9c08d044b3 Add telemetry for checkpoint save/restore/diff 2025-03-09 22:55:23 -04:00
Matt Rubens
e5ac33a146
Merge pull request #996 from qdaxb/optimize_diagnostics
Reduce the probability of errors when the model tries to fix the problems
2025-03-09 21:38:03 -04:00
Matt Rubens
c70595b9f0
Merge pull request #1507 from hannesrudolph/optional-mode-creation
feat: Add toggle for custom mode creation
2025-03-09 18:54:49 -04:00
Matt Rubens
183e47b1bd Revert "support tool progress status"
This reverts commit 80139d88d7.
2025-03-09 18:35:56 -04:00
Matt Rubens
78be1b8977 Revert "Clean up the tool progress UX"
This reverts commit 1c8071bbb3.
2025-03-09 18:35:48 -04:00
Afshawn Lotfi
22f51304a2 Add support for remote browser connection and settings 2025-03-09 20:11:52 +00:00
Hannes Rudolph
f6efa2b589
Update src/core/prompts/sections/modes.ts
Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com>
2025-03-08 22:31:10 -07:00
Roo Code
2a08c7c3db feat: Add toggle for custom mode creation
This commit adds a new setting to allow users to disable custom mode creation,
which can help reduce token usage in Roo's prompts.

Key changes:

Add enableCustomModeCreation setting to global state
Conditionally include custom modes documentation in prompt only when enabled
Add UI toggle in PromptsView with explanatory text
Default the setting to enabled (true) for backward compatibility
Update necessary interfaces and message handlers for the new setting
The setting is placed in PromptsView rather than SettingsView since it directly
relates to the modes functionality managed in that component.
2025-03-08 22:05:27 -07:00
Matt Rubens
e10757d6fa Iterate on subtasks UX 2025-03-08 23:46:28 -05:00
Matt Rubens
1c8071bbb3 Clean up the tool progress UX 2025-03-08 22:55:04 -05:00
Matt Rubens
e2bdee3366
Merge pull request #1494 from qdaxb/support_tool_progress_status
support tool progress status
2025-03-08 21:17:35 -05:00
Matt Rubens
e945dcf94f
Merge pull request #1491 from shaybc/sbc_subtasks_approve_btn
Sbc subtasks approve button
2025-03-08 21:16:44 -05:00
axb
80139d88d7 support tool progress status 2025-03-09 00:21:09 +08:00
ShayBC
27624a25a5 fixed the missing case of cmd execution at the end of a subyask and added auto aprove option for finish task (and continue to the next task) 2025-03-08 16:25:45 +02:00
Matt Rubens
441f54d792 Turn checkpoints on by default 2025-03-07 23:36:46 -05:00
ShayBC
1456db9502 added approve finish task button and auto approve button for subtasks 2025-03-08 06:01:49 +02:00
Matt Rubens
da286c45ed Fix logic for default modelMaxTokens for thinking models 2025-03-07 22:58:45 -05:00
Matt Rubens
4c6f0628e3 Add vscodeVersion and platform too 2025-03-07 16:41:35 -05:00
Matt Rubens
082045ec66 Add app version to telemetry 2025-03-07 16:30:19 -05:00
Matt Rubens
9a340178fc v3.8 2025-03-07 14:37:51 -05:00
cte
820092cfc3 Disable repo-per-workspace checkpoints 2025-03-07 09:09:03 -08:00
Matt Rubens
f9d162e157 Add setting for whether to include ignored files in lists 2025-03-07 11:28:28 -05:00
Daniel Trugman
e14b1b2dab Add OpenAI-style cost calculation 2025-03-07 13:53:32 +00:00
Matt Rubens
50f76584bc Add telemetry and privacy policy 2025-03-07 03:03:44 -05:00
Matt Rubens
c3065663b2 Subtask logic fix 2025-03-07 02:27:19 -05:00
cte
1901a0dbfc Choose the correct checkpoint storage strategy when resuming tasks 2025-03-06 11:23:00 -08:00