feat: VSCode extension #92
Open
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.
Issue #, if available:
Description of changes:
VS Code Extension Design
Overview
The VS Code extension integrates the Resource Schema Guard Rail tool as a language diagnostic provider. The extension will execute the Python CLI tool as a subprocess, parse its output, and display validation results as inline diagnostics in the editor. The architecture follows VS Code's extension model with a focus on simplicity and performance.
Architecture
High-Level Components
Components and Interfaces
1. Extension Entry Point (
extension.ts)Responsibilities:
Key Functions:
2. Diagnostic Provider (
diagnosticProvider.ts)Responsibilities:
Key Functions:
Debouncing Strategy:
3. Guard Rail Executor (
guardRailExecutor.ts)Responsibilities:
Key Functions:
Execution Details:
python -m src.cli --schema file://<path> --formatPython Discovery:
python3command firstpythoncommandwhichorwhereCLI Discovery:
python -m src.cli4. Diagnostic Mapper (
diagnosticMapper.ts)Responsibilities:
Key Functions:
Path Parsing Strategy:
The
pathfield from guard rail results contains JSON paths like:/properties/Tags/handlers/create/permissions[0]To map to line numbers:
5. Command Handler (
commands.ts)Responsibilities:
Key Functions:
Data Models
GuardRailResult
GuardRuleResult
VS Code Diagnostic
Error Handling
CLI Execution Errors
Python Not Found
Guard Rail CLI Not Found
Execution Timeout (>30s)
Non-Zero Exit Code
JSON Parse Error
File System Errors
File Not Saved
File Too Large (>1GB)
Testing Strategy
Unit Tests
Diagnostic Mapper Tests
Guard Rail Executor Tests
Diagnostic Provider Tests
Manual Testing Checklist
File Structure
Development Workflow
Setup
npm installto install dependenciesnpm run compileto build TypeScriptDevelopment
npm run watchfor continuous compilationTesting
npm testPackaging
vsce packageto create .vsix filecode --install-extension guard-rail-vscode-0.1.0.vsixBy submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.