Repository navigation
fix(sensor): support VS Code and multi-IDE storage paths in ClineParser - #145
Merged
Merged
Conversation
Cline (saoudrizwan.claude-dev) was originally parsed only from Cursor's global storage ('Cursor/User/globalStorage/saoudrizwan.claude-dev/tasks'), leaving standard Visual Studio Code users unobserved by ADR Sensor.
- Support task directories across VS Code, Cursor, VS Code Insiders, VSCodium, and Windsurf on macOS, Linux, and Windows.
- Enable ClineParser to scan and aggregate tasks across all existing candidate directories, while preserving session deduplication.
- Add optional base_path constructor argument for consistent parser API.
- Normalize path assertions in TestPlatformPathCoverage using as_posix() for cross-platform Windows compatibility and hermetic uninstalled tests.
- Add unit tests for multi-IDE task discovery and document Cline storage locations in Sensor/README.md.
Preserve shared sensor logging while retaining multi-editor discovery. Isolate unreadable editor roots so healthy sessions remain available, preserve explicit base_path overrides, and cover parser/observer recovery and runtime logging with synthetic regression tests.
barisozbas
approved these changes
Sep 29, 2026
barisozbas
left a comment
Collaborator
There was a problem hiding this comment.
LGTM. Hardened and reviewed.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What type of PR is this? (check all applicable)
Related issue: N/A
What changed?
ClineParser.BASE_PATHSto discover task history across Visual Studio Code (Code), Cursor, VS Code Insiders, VSCodium, and Windsurf across macOS, Linux, and Windows.parse_all()to scan and aggregate tasks across all existing candidate directories on the endpoint, with session-level deduplication (session_id).file_read_errorand do not discard sessions from healthy editors. Inaccessible input is not classified as missing input.base_pathargument toClineParser.__init__, matching the constructor signature of other parsers (e.g.,CopilotParser,GeminiParser).parser.base_pathassignments restrict collection to the selected directory, including an installed editor or the initially detected path.TestPlatformPathCoverageusingas_posix()so that tests pass reliably on Windows and POSIX systems.Path.existsintest_first_candidate_used_when_none_existso unit tests never fail when an agent happens to be installed on the local test machine.TestClineParsercovering custom base path overrides, multi-editor coverage inBASE_PATHS, and multi-directory task aggregation.mainwhile retaining the shared sensor logger, so console levels and opt-in runtime logs apply to Cline collection.### Cline (Claude Dev)documentation section toSensor/README.mddetailing default task storage paths across operating systems.Why?
Cline (
saoudrizwan.claude-dev) is primarily a Visual Studio Code extension with widespread adoption across developer environments. Previously,_CLINE_TASKS_SUFFIXwas hardcoded exclusively to Cursor's global storage path (Cursor/User/globalStorage/saoudrizwan.claude-dev/tasks), leaving standard VS Code users unobserved and creating a telemetry blind spot for enterprise security monitoring.How did you test it?
uv run pytest tests/ -v: 470 passed, 0 failed.test_parse_all_discovers_tasks_across_multiple_existing_editorsandtest_cline_base_paths_covers_multiple_editors.uv run ruff check adr_sensor/parsers/cline_parser.py tests/test_parsers.pywith 0 errors.uv build.Potential risks
Low. Changes are backward-compatible and additive. If no Cline directories exist on the host, the parser preserves historical behavior by recording an
input_missingdiagnostic.