|
| 1 | +# StepZen Tools Enhancement Roadmap |
| 2 | + |
| 3 | +## ✅ Completed Enhancements |
| 4 | + |
| 5 | +### ✅ TypeScript Type Safety |
| 6 | +- ✅ Improved type safety throughout the codebase |
| 7 | +- ✅ Replaced most `any` types with specific interfaces |
| 8 | +- ✅ Proper use of TypeScript interfaces for structured data |
| 9 | + |
| 10 | +### TypeScript Type Improvements |
| 11 | +- Refine interfaces in `stepzenProjectScanner.ts` to remove `as any` assertions: |
| 12 | + - Update `FieldInfo` interface to include the `isDeprecated` property that's being used in `generateOperations.ts` |
| 13 | + - Standardize the structure of `fieldIndex` across the codebase to ensure consistent access patterns |
| 14 | + - Add proper type annotations for data structures returned by utility functions |
| 15 | + - Consider implementing a distinct interface for field data as consumed by operation generators |
| 16 | + |
| 17 | +### ✅ Error Handling and Diagnostics |
| 18 | +- ✅ Implement a consistent error handling strategy across all commands |
| 19 | +- ✅ Add more detailed error reporting in the output channel for debugging |
| 20 | +- ✅ Centralized error utilities with StepZenError class |
| 21 | +- ✅ Consistent error formatting and logging |
| 22 | + |
| 23 | +### ✅ Project Initialization |
| 24 | +- ✅ Implement a "StepZen: Initialize Project" command that creates a new stepzen.config.json file |
| 25 | +- ✅ Add directory selection dialog for new project location |
| 26 | +- ✅ Implement validation for existing projects and prompt for decision (overwrite/create new directory) |
| 27 | +- ✅ Add endpoint name specification with validation and suggestions |
| 28 | +- ✅ Create default config templates with best practices |
| 29 | + |
| 30 | +## Core Functionality Improvements |
| 31 | +- Provide directive-specific validation errors and suggestions |
| 32 | +- Add schema-level validation reporting for GraphQL schemas |
| 33 | + |
| 34 | +### Schema Explorer Enhancements |
| 35 | +- Link codelens to the schema definition |
| 36 | +- Add "Go to Schema" buttons for fields and types in results |
| 37 | +- Improve navigation and overall UI/UX of the schema visualizer |
| 38 | +- Add search functionality within the visualizer |
| 39 | +- Highlight types and fields with directives differently |
| 40 | +- Add directive details on hover or in a dedicated panel |
| 41 | + |
| 42 | +### Schema Visualizer Improvements |
| 43 | +- Add "Compare to Deployed Schema" feature showing differences between local and deployed schemas |
| 44 | +- Implement filtering system for types/fields with specific directives |
| 45 | +- Add visual indicators for types that use directives like @mock, @connector, @rest, etc. |
| 46 | +- Create a collapsible tree view of schema relationships |
| 47 | + |
| 48 | +### Code Organization |
| 49 | +- Consider using a class-based approach for the main extension functionality |
| 50 | +- Move shared utilities into dedicated files to reduce duplication |
| 51 | +- Organize code by feature area (deployment, directives, visualizer, etc.) |
| 52 | + |
| 53 | +### Configuration Options |
| 54 | +- Expose more settings to users (e.g., timeout values, default behaviors) |
| 55 | +- Add a dedicated settings section in package.json |
| 56 | +- Allow configuring different environments (dev, staging, prod) |
| 57 | + |
| 58 | +## Directive Support Enhancements |
| 59 | + |
| 60 | +### Directive Management and Insertion |
| 61 | +- Enhance the existing "Add Materializer" command with more intelligent recommendations |
| 62 | +- Add commands for inserting other common StepZen directives (@value, @sdl, @sequence, etc.) |
| 63 | +- Create a directive management UI to view and edit directives across the schema |
| 64 | +- Implement validation for directive arguments based on directive type |
| 65 | +- Add context-aware directive suggestions based on schema position |
| 66 | +- Create templates with completion suggestions for directive arguments |
| 67 | + |
| 68 | +### Directive Visualization |
| 69 | +- Create a "Directive Explorer" view showing all directives in the project |
| 70 | +- Add directive-specific highlighting in the editor |
| 71 | +- Implement quick navigation between related directives |
| 72 | +- Add validation and quick-fixes for directive arguments |
| 73 | + |
| 74 | +### @sdl Directive Support |
| 75 | +- Add support for creating and managing SDL files referenced by @sdl directives |
| 76 | +- Implement tools to manage executable documents from @sdl(executables:) argument |
| 77 | +- Add validation of @sdl visibility patterns |
| 78 | +- Create management UI for @sdl-based schema composition |
| 79 | + |
| 80 | +### @mock and @mockfn Support |
| 81 | +- Create commands to add @mock and @mockfn directives to types and fields |
| 82 | +- Generate mock data preview based on @mock directives in the schema |
| 83 | +- Add intellisense for available mock functions in @mockfn directive |
| 84 | +- Implement a mock data testing UI to preview mock data without deploying |
| 85 | + |
| 86 | +### @dbquery Support |
| 87 | +- Add templates for common database queries and tables |
| 88 | +- Implement SQL validation for @dbquery query arguments |
| 89 | +- Create a database schema visualization that maps to GraphQL types |
| 90 | +- Add code generation for filter input types based on database schema |
| 91 | + |
| 92 | +### @rest Support |
| 93 | +- Add support for managing connector configurations |
| 94 | +- Create templates for common REST API patterns |
| 95 | +- Implement validation for connector configurations |
| 96 | +- Add testing UI for REST endpoints without deployment |
| 97 | + |
| 98 | +## Executable Documents Integration |
| 99 | + |
| 100 | +### Schema Testing Features |
| 101 | +- Add detection of deprecated field usage in operations |
| 102 | +- Implement validation checks beyond standard GraphQL validation |
| 103 | +- Generate comprehensive test suites from schema structure |
| 104 | +- Track which executable documents have been run and their results |
| 105 | +- Compare results between runs for regression testing |
| 106 | +- Validate executable documents against the current schema |
| 107 | +- Add performance metrics for executable document runs |
| 108 | + |
| 109 | +### Executable Document Management |
| 110 | +- Create feature to auto-generate executable documents for root fields |
| 111 | +- Build a UI for managing executable documents as "unit tests" for schema |
| 112 | +- Provide tooling to update executable documents when schema changes |
| 113 | +- Store and manage variables specifically for executable documents |
| 114 | +- Allow saving different variable sets for different environments (dev/staging/prod) |
| 115 | +- Add batch testing of multiple executable documents |
| 116 | + |
| 117 | +## Results Panel Enhancements |
| 118 | + |
| 119 | +### Data Visualization |
| 120 | +- Add search functionality within large result sets |
| 121 | +- Add visualization options for certain result types |
| 122 | +- Replace grouped view with OTEL viewer |
| 123 | +- Add filtering options for response data |
| 124 | +- Implement exportable test reports from result data |
| 125 | + |
| 126 | +### Performance Metrics |
| 127 | +- Add detailed timing information for requests |
| 128 | +- Visualize performance metrics over time |
| 129 | +- Compare performance between different queries |
| 130 | +- Add bottleneck identification for complex queries |
| 131 | + |
| 132 | +## Security Features |
| 133 | + |
| 134 | +### Field Policies Management |
| 135 | +- Create a visual editor for StepZen Field Policies |
| 136 | +- Provide a policy testing tool with simulated JWT tokens |
| 137 | +- Implement policy validation against schema structure |
| 138 | +- Add security analyzer to identify sensitive fields needing protection |
| 139 | +- Include templates for common security patterns (admin-only, public, etc.) |
| 140 | + |
| 141 | +### JWT Integration and Testing |
| 142 | +- Provide JWT token visualization and debugging |
| 143 | +- Create test environment for policy evaluation with different JWT claims |
| 144 | +- Add policy effectiveness reporting |
| 145 | +- Implement automation for policy deployment across environments |
| 146 | + |
| 147 | +## Multi-Environment Support |
| 148 | + |
| 149 | +### Environment Management |
| 150 | +- Add profiles for different environments (dev, staging, prod) |
| 151 | +- Allow switching between different StepZen endpoints |
| 152 | +- Create environment-specific variable sets |
| 153 | +- Add deployment workflows for different environments |
| 154 | + |
| 155 | +### Collaborative Features |
| 156 | +- Share queries with team members |
| 157 | +- Export/import operation collections |
| 158 | +- Share executable document test suites with team |
| 159 | + |
| 160 | +## Documentation and Productivity |
| 161 | + |
| 162 | +### Documentation Generator |
| 163 | +- Create a feature to generate documentation from your GraphQL schema |
| 164 | +- Export as Markdown or HTML |
| 165 | +- Generate visualizations of schema relationships for documentation |
| 166 | +- Add directive documentation to schema documentation |
| 167 | + |
| 168 | +### GraphQL Snippets |
| 169 | +- Add code snippets for common GraphQL patterns |
| 170 | +- Create template operations for the current schema |
| 171 | +- Add snippets for common directive patterns |
| 172 | +- Generate starter queries based on schema analysis |
| 173 | + |
| 174 | +## Project Setup and Import |
| 175 | + |
| 176 | +### Schema Import Features |
| 177 | +- Create UI for "StepZen: Import Schema" with source type selection |
| 178 | +- Implement specialized import forms for each data source type: |
| 179 | + - REST API import with curl-style configuration |
| 180 | + - GraphQL subgraph import with endpoint and header configuration |
| 181 | + - Database schema import (MySQL, PostgreSQL, Snowflake, DB2, Oracle) |
| 182 | + - StepZen flow expressions import |
| 183 | +- Add argument validation specific to each import source type |
| 184 | +- Provide visual feedback during import operations |
| 185 | +- Support for storing and managing import credentials securely |
| 186 | +- Implement template selection for common import patterns |
| 187 | +- Add preview feature to show expected schema result before finalizing import |
| 188 | + |
| 189 | +### Import Result Management |
| 190 | +- Add post-import schema validation and error reporting |
| 191 | +- Create schema diff view to compare before/after import changes |
| 192 | +- Implement undo/rollback functionality for imports |
| 193 | +- Add import history tracking for project |
| 194 | +- Provide suggestions for next steps after successful import |
| 195 | + |
| 196 | +## Architecture and Infrastructure |
| 197 | + |
| 198 | +### Command Pattern Implementation |
| 199 | +- Consider implementing a command pattern for better testability |
| 200 | +- This would make unit testing much easier |
| 201 | + |
| 202 | +### Extension API |
| 203 | +- Create a proper API for other extensions to leverage your functionality |
| 204 | +- This could enable ecosystem growth around your extension |
| 205 | + |
| 206 | +### Testing Infrastructure |
| 207 | +- Add unit tests for core functionality |
| 208 | +- Implement integration tests for the extension |
| 209 | + |
| 210 | +### Telemetry |
| 211 | +- Add optional telemetry to track feature usage |
| 212 | +- This could help prioritize future development |
| 213 | + |
| 214 | +### Modular Architecture |
| 215 | +- Separate core StepZen functionality from VS Code integration |
| 216 | +- This could enable building other tools on the same core |
| 217 | + |
| 218 | +## Prioritized Next Steps Recommendation |
| 219 | + |
| 220 | +Based on the analysis of the current codebase and StepZen directives, these improvements would be most beneficial: |
| 221 | + |
| 222 | +1. **Project Setup and Import** |
| 223 | + - Implement "StepZen: Initialize Project" command to streamline project creation |
| 224 | + - Create UI-based import flows for all supported data sources |
| 225 | + - Build validation and template systems for import operations |
| 226 | + |
| 227 | +2. **Comprehensive Directive Support** |
| 228 | + - Implement support for all StepZen directives |
| 229 | + - Add directive-specific validation and suggestions |
| 230 | + - Create a directive explorer/management UI |
| 231 | + |
| 232 | +3. **Schema Testing with Executable Documents** |
| 233 | + - Leverage the "executables" argument in SDL directives |
| 234 | + - Create tools to generate test operations for all root-level entries |
| 235 | + - Implement checks for deprecated field usage in operations |
| 236 | + |
| 237 | +4. **Schema Visualizer Improvements** |
| 238 | + - Enhance navigation and visual design of the schema visualizer |
| 239 | + - Add directive-based highlighting and filtering |
| 240 | + - Implement "Compare to Deployed Schema" functionality |
| 241 | + |
| 242 | +5. **Field Policy Management** |
| 243 | + - Create visual editor for configuring field policies |
| 244 | + - Add policy testing with JWT simulation |
| 245 | + - Implement security analysis for sensitive fields |
| 246 | + |
| 247 | +6. **Database Integration Tools** |
| 248 | + - Add support for @dbquery directive |
| 249 | + - Create database schema to GraphQL type mapping tools |
| 250 | + - Implement query builders for common database operations |
| 251 | + |
| 252 | +7. **Mock Data Generation** |
| 253 | + - Implement @mock and @mockfn directive support |
| 254 | + - Create a mock data preview feature |
| 255 | + - Build testing tools that use mock data |
| 256 | + |
| 257 | +These focused improvements would enhance the developer experience while promoting schema stability through better testing and visualization capabilities, along with improved directive management. The new project setup features will make it significantly easier for developers to get started with StepZen projects directly from VS Code. |
0 commit comments