- Import tool names dynamically to avoid drift
- Add comprehensive example workflow in run_in_background description
- Enhance all tool descriptions with clear use cases
- Document incremental reading behavior for ReadBackgroundProcessOutput
- Add three common usage patterns to documentation:
* Waiting for server to start
* Monitoring build progress
* Parallel process execution
This addresses concerns about agent understanding the expected usage
patterns for background process management tools.
Co-authored-by: nate <nate@continue.dev>
- Replace custom circular buffer implementation with battle-tested ringbufferjs package
- Maintain same API interface (append, getLines, getTotalLinesWritten, clear)
- Keep line truncation and incremental reading features
- Reduce maintenance burden by using external package
- All existing tests pass with new implementation
Co-authored-by: nate <nate@continue.dev>
More descriptive name that clearly indicates the tool's purpose
of reading output from background processes.
Co-authored-by: nate <nate@continue.dev>
Generated with [Continue](https://continue.dev)
Co-Authored-By: Continue <noreply@continue.dev>
ESLint unused-imports rule requires that imports only used as types
be handled differently.
Co-authored-by: nate <nate@continue.dev>
Generated with [Continue](https://continue.dev)
Co-Authored-By: Continue <noreply@continue.dev>
TypeScript needs type information for the service instance.
Using dynamic import with type assertion to avoid circular dependency.
Co-authored-by: nate <nate@continue.dev>
Generated with [Continue](https://continue.dev)
Co-Authored-By: Continue <noreply@continue.dev>
Removed BackgroundProcessService type import since we use dynamic
imports and don't need the type at module level.
Co-authored-by: nate <nate@continue.dev>
Generated with [Continue](https://continue.dev)
Co-Authored-By: Continue <noreply@continue.dev>
The exit.ts module was importing serviceContainer at module level,
which contributed to the circular dependency issue with services.
Co-authored-by: nate <nate@continue.dev>
Generated with [Continue](https://continue.dev)
Co-Authored-By: Continue <noreply@continue.dev>
- Move CircularBuffer to separate file to fix max-classes-per-file
- Fix import order in BackgroundProcessService, exit.ts
- Remove unused catch variable in bashOutput.ts
Co-authored-by: nate <nate@continue.dev>
Generated with [Continue](https://continue.dev)
Co-Authored-By: Continue <noreply@continue.dev>
Tools importing serviceContainer at module level caused circular
dependencies with ToolPermissionService. Changed to dynamic imports
within run functions to break the cycle.
Co-authored-by: nate <nate@continue.dev>
Generated with [Continue](https://continue.dev)
Co-Authored-By: Continue <noreply@continue.dev>
When a process fails to spawn (e.g., command not found), Node.js emits
the 'error' event but may not emit the 'close' event. This fix ensures
the process is marked as 'exited' and properly cleaned up from the
running count.
Co-authored-by: nate <nate@continue.dev>
Generated with [Continue](https://continue.dev)
Co-Authored-By: Continue <noreply@continue.dev>
The previous CI run failed on macOS Node.js 18/22 tests which are known
to be flaky and unrelated to the blueprint JSON configuration change.
Co-authored-by: nate <nate@continue.dev>
Generated with [Continue](https://continue.dev)
Co-Authored-By: Continue <noreply@continue.dev>
Pre-install gh CLI in the Runloop blueprint to enable PR creation
and other GitHub operations directly from the environment.
Co-authored-by: nate <nate@continue.dev>
Generated with [Continue](https://continue.dev)
Co-Authored-By: Continue <noreply@continue.dev>
Replace console.log with logger.info for initial prompt messages to
maintain consistency with codebase logging practices.
Co-authored-by: nate <nate@continue.dev>