@probelabs/visor 0.1.24 → 0.1.29

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -155,6 +155,9 @@ Options:
155
155
  --timeout <ms> Timeout for check operations in milliseconds
156
156
  Default: 600000ms (10 minutes)
157
157
  --debug Enable debug mode for detailed output
158
+ --allowed-remote-patterns Comma-separated list of allowed URL prefixes for remote configs
159
+ Example: "https://github.com/myorg/,https://raw.githubusercontent.com/"
160
+ --no-remote-extends Disable remote configuration extends for security
158
161
  --version Show version
159
162
  --help Show help
160
163
 
@@ -165,6 +168,9 @@ Examples:
165
168
  visor --check all --max-parallelism 5 # Run up to 5 checks in parallel
166
169
  visor --check all --fail-fast # Stop on first failure
167
170
  visor --check all --timeout 300000 --debug # 5 minute timeout with debug output
171
+
172
+ # Using remote configs with security allowlist
173
+ visor --check all --allowed-remote-patterns "https://github.com/myorg/"
168
174
  ```
169
175
 
170
176
  ## 🤖 AI Configuration
@@ -815,14 +821,145 @@ env:
815
821
  FEATURES: "security,performance"
816
822
  ```
817
823
 
818
- ### Configuration Inheritance
824
+ ### Configuration Inheritance with Extends
825
+
826
+ Visor supports configuration inheritance through the `extends` directive, allowing you to build upon existing configurations. This is useful for:
827
+ - Sharing common configurations across projects
828
+ - Building team/organization standards
829
+ - Creating environment-specific configs (dev, staging, prod)
830
+
831
+ #### Using the Extends Directive
832
+
833
+ The `extends` field can reference:
834
+ - **Local files**: Relative or absolute paths to YAML files
835
+ - **Remote URLs**: HTTPS URLs to configuration files (requires allowlist for security)
836
+ - **Default**: Built-in default configuration (`extends: default`)
837
+
838
+ ```yaml
839
+ # .visor.yaml - Your project config
840
+ extends: ./base-config.yaml # Single extend
841
+ # OR multiple extends (merged left-to-right)
842
+ extends:
843
+ - default # Start with defaults
844
+ - ./team-standards.yaml # Apply team standards
845
+ - ./project-specific.yaml # Project overrides
846
+
847
+ checks:
848
+ my-custom-check:
849
+ type: ai
850
+ prompt: "Project-specific analysis..."
851
+ ```
852
+
853
+ #### Example: Team Configuration
854
+
855
+ **team-config.yaml** (shared team configuration):
856
+ ```yaml
857
+ version: "1.0"
858
+ ai_provider: openai
859
+ ai_model: gpt-4
860
+
861
+ checks:
862
+ security-scan:
863
+ type: ai
864
+ prompt: "Perform security analysis following OWASP guidelines"
865
+ on: [pr_opened, pr_updated]
866
+
867
+ code-quality:
868
+ type: ai
869
+ prompt: "Check code quality and best practices"
870
+ on: [pr_opened, pr_updated]
871
+ ```
872
+
873
+ **project-config.yaml** (project extends team config):
874
+ ```yaml
875
+ extends: ./team-config.yaml
876
+
877
+ # Override team defaults
878
+ ai_model: gpt-4-turbo # Use newer model
879
+
880
+ checks:
881
+ # Disable code-quality by setting empty 'on' array
882
+ code-quality:
883
+ on: []
884
+
885
+ # Add project-specific check
886
+ performance-check:
887
+ type: ai
888
+ prompt: "Analyze performance implications"
889
+ on: [pr_opened]
890
+ ```
891
+
892
+ #### Remote Configuration (with Security)
893
+
894
+ For security, remote URLs must be explicitly allowed via CLI:
895
+
896
+ ```bash
897
+ # Allow specific URL prefixes
898
+ visor --check all \
899
+ --allowed-remote-patterns "https://github.com/myorg/,https://raw.githubusercontent.com/myorg/"
900
+ ```
901
+
902
+ Then use in your config:
903
+ ```yaml
904
+ extends: https://raw.githubusercontent.com/myorg/configs/main/base.yaml
905
+
906
+ checks:
907
+ # Your project-specific checks...
908
+ ```
909
+
910
+ #### Security Features
911
+
912
+ 1. **Path Traversal Protection**: Local file paths are restricted to the project root
913
+ 2. **URL Allowlist**: Remote URLs must match allowed patterns (empty by default)
914
+ 3. **No Remote by Default**: Use `--no-remote-extends` to completely disable remote configs
915
+
916
+ #### Merge Behavior
917
+
918
+ When extending configurations:
919
+ - **Simple values**: Child overrides parent
920
+ - **Objects**: Deep merge (child properties override parent)
921
+ - **Arrays**: Replaced entirely (not concatenated)
922
+ - **Checks**: Can be disabled by setting `on: []`
923
+
924
+ #### Appending to Prompts with `appendPrompt`
925
+
926
+ When extending configurations, you can append additional instructions to existing prompts using the `appendPrompt` field. This is useful for adding project-specific requirements without completely replacing the base prompt.
927
+
928
+ **base-config.yaml**:
929
+ ```yaml
930
+ checks:
931
+ security-review:
932
+ type: ai
933
+ prompt: "Perform basic security analysis"
934
+ on: [pr_opened]
935
+ ```
936
+
937
+ **project-config.yaml**:
938
+ ```yaml
939
+ extends: ./base-config.yaml
940
+
941
+ checks:
942
+ security-review:
943
+ # Appends to the parent prompt instead of replacing it
944
+ appendPrompt: "Also check for SQL injection vulnerabilities and hardcoded secrets"
945
+ # Result: "Perform basic security analysis\n\nAlso check for SQL injection vulnerabilities and hardcoded secrets"
946
+ ```
947
+
948
+ Notes:
949
+ - `appendPrompt` is combined with parent `prompt` using a double newline separator
950
+ - If no parent prompt exists, `appendPrompt` becomes the prompt
951
+ - Use `prompt` field to completely replace the parent prompt instead of appending
952
+
953
+ ### Configuration Priority Order
819
954
 
820
- Configuration follows this priority order:
955
+ With extends, the full priority order becomes:
821
956
 
822
957
  1. **Check-level settings** (highest priority)
823
- 2. **Global configuration**
824
- 3. **Environment variables**
825
- 4. **Default values** (lowest priority)
958
+ 2. **Current file configuration**
959
+ 3. **Extended configurations** (merged in order)
960
+ 4. **Global configuration**
961
+ 5. **Environment variables**
962
+ 6. **Default values** (lowest priority)
826
963
 
827
964
  ```yaml
828
965
  # Global defaults
@@ -18,6 +18,8 @@ export interface GitHubActionInputs {
18
18
  'max-parallelism'?: string;
19
19
  'fail-fast'?: string;
20
20
  debug?: string;
21
+ 'ai-provider'?: string;
22
+ 'ai-model'?: string;
21
23
  'visor-config-path'?: string;
22
24
  'visor-checks'?: string;
23
25
  }
@@ -1 +1 @@
1
- {"version":3,"file":"","sourceRoot":"","sources":["file:///home/runner/work/visor/visor/src/action-cli-bridge.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"","sourceRoot":"","sources":["file:///home/runner/work/visor/visor/src/action-cli-bridge.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"","sourceRoot":"","sources":["file:///home/runner/work/visor/visor/src/check-execution-engine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"","sourceRoot":"","sources":["file:///home/runner/work/visor/visor/src/check-execution-engine.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"","sourceRoot":"","sources":["file:///home/runner/work/visor/visor/src/cli-main.ts"],"names":[],"mappings":"AAQA;;GAEG;AACH,wBAAsB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAqM1C"}
1
+ {"version":3,"file":"","sourceRoot":"","sources":["file:///home/runner/work/visor/visor/src/cli-main.ts"],"names":[],"mappings":"AAQA;;GAEG;AACH,wBAAsB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CA0M1C"}
package/dist/cli.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"","sourceRoot":"","sources":["file:///home/runner/work/visor/visor/src/cli.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAA2B,MAAM,aAAa,CAAC;AAIlE;;GAEG;AACH,qBAAa,GAAG;IACd,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,WAAW,CAA4E;IAC/F,OAAO,CAAC,YAAY,CAA0D;;IAO9E;;OAEG;IACH,OAAO,CAAC,YAAY;IAmCpB;;OAEG;IACH,OAAO,CAAC,aAAa,CAEnB;IAEF;;OAEG;IACI,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,UAAU;IA0E5C;;OAEG;IACH,OAAO,CAAC,eAAe;IA8CvB;;OAEG;IACI,WAAW,IAAI,MAAM;IAkC5B;;OAEG;IACI,UAAU,IAAI,MAAM;IAa3B;;OAEG;IACI,eAAe,IAAI,MAAM;IAchC;;OAEG;IACI,QAAQ,IAAI,IAAI;IAIvB;;OAEG;IACI,WAAW,IAAI,IAAI;CAG3B"}
1
+ {"version":3,"file":"","sourceRoot":"","sources":["file:///home/runner/work/visor/visor/src/cli.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAA2B,MAAM,aAAa,CAAC;AAIlE;;GAEG;AACH,qBAAa,GAAG;IACd,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,WAAW,CAA4E;IAC/F,OAAO,CAAC,YAAY,CAA0D;;IAO9E;;OAEG;IACH,OAAO,CAAC,YAAY;IAoCpB;;OAEG;IACH,OAAO,CAAC,aAAa,CAEnB;IAEF;;OAEG;IACI,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,UAAU;IA4F5C;;OAEG;IACH,OAAO,CAAC,eAAe;IA8CvB;;OAEG;IACI,WAAW,IAAI,MAAM;IAkC5B;;OAEG;IACI,UAAU,IAAI,MAAM;IAa3B;;OAEG;IACI,eAAe,IAAI,MAAM;IAchC;;OAEG;IACI,QAAQ,IAAI,IAAI;IAIvB;;OAEG;IACI,WAAW,IAAI,IAAI;CAG3B"}
package/dist/config.d.ts CHANGED
@@ -15,7 +15,7 @@ export declare class ConfigManager {
15
15
  /**
16
16
  * Find and load configuration from default locations
17
17
  */
18
- findAndLoadConfig(): Promise<VisorConfig>;
18
+ findAndLoadConfig(options?: ConfigLoadOptions): Promise<VisorConfig>;
19
19
  /**
20
20
  * Find the git repository root directory
21
21
  */
@@ -55,6 +55,10 @@ export declare class ConfigManager {
55
55
  * Validate output configuration
56
56
  */
57
57
  private validateOutputConfig;
58
+ /**
59
+ * Check if remote extends are allowed
60
+ */
61
+ private isRemoteExtendsAllowed;
58
62
  /**
59
63
  * Merge configuration with default values
60
64
  */
@@ -1 +1 @@
1
- {"version":3,"file":"","sourceRoot":"","sources":["file:///home/runner/work/visor/visor/src/config.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,WAAW,EAOX,oBAAoB,EACpB,YAAY,EACZ,iBAAiB,EAClB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC;;GAEG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,eAAe,CAAwD;IAC/E,OAAO,CAAC,kBAAkB,CAOxB;IACF,OAAO,CAAC,kBAAkB,CAAgE;IAC1F,OAAO,CAAC,mBAAmB,CAAkD;IAE7E;;OAEG;IACU,UAAU,CACrB,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,WAAW,CAAC;IA2CvB;;OAEG;IACU,iBAAiB,IAAI,OAAO,CAAC,WAAW,CAAC;IAyBtD;;OAEG;YACW,qBAAqB;IAiBnC;;OAEG;IACU,gBAAgB,IAAI,OAAO,CAAC,WAAW,CAAC;IAerD;;OAEG;IACI,wBAAwB,IAAI,WAAW,GAAG,IAAI;IAgCrD;;OAEG;IACH,OAAO,CAAC,eAAe;IAuBvB;;OAEG;IACI,mBAAmB,CAAC,MAAM,EAAE,OAAO,CAAC,WAAW,CAAC,EAAE,UAAU,EAAE,UAAU,GAAG,YAAY;IAqB9F;;OAEG;IACU,0BAA0B,IAAI,OAAO,CAAC;QACjD,MAAM,CAAC,EAAE,WAAW,CAAC;QACrB,oBAAoB,EAAE,oBAAoB,CAAC;KAC5C,CAAC;IA2BF;;OAEG;IACH,OAAO,CAAC,cAAc;IAgDtB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAwF3B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IA+B5B;;OAEG;IACH,OAAO,CAAC,iBAAiB;CA6B1B"}
1
+ {"version":3,"file":"","sourceRoot":"","sources":["file:///home/runner/work/visor/visor/src/config.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,WAAW,EAOX,oBAAoB,EACpB,YAAY,EACZ,iBAAiB,EAClB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAIzC;;GAEG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,eAAe,CAAwD;IAC/E,OAAO,CAAC,kBAAkB,CAOxB;IACF,OAAO,CAAC,kBAAkB,CAAgE;IAC1F,OAAO,CAAC,mBAAmB,CAAkD;IAE7E;;OAEG;IACU,UAAU,CACrB,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,WAAW,CAAC;IA6EvB;;OAEG;IACU,iBAAiB,CAAC,OAAO,GAAE,iBAAsB,GAAG,OAAO,CAAC,WAAW,CAAC;IAyBrF;;OAEG;YACW,qBAAqB;IAiBnC;;OAEG;IACU,gBAAgB,IAAI,OAAO,CAAC,WAAW,CAAC;IAerD;;OAEG;IACI,wBAAwB,IAAI,WAAW,GAAG,IAAI;IAgCrD;;OAEG;IACH,OAAO,CAAC,eAAe;IAuBvB;;OAEG;IACI,mBAAmB,CAAC,MAAM,EAAE,OAAO,CAAC,WAAW,CAAC,EAAE,UAAU,EAAE,UAAU,GAAG,YAAY;IAqB9F;;OAEG;IACU,0BAA0B,IAAI,OAAO,CAAC;QACjD,MAAM,CAAC,EAAE,WAAW,CAAC;QACrB,oBAAoB,EAAE,oBAAoB,CAAC;KAC5C,CAAC;IA2BF;;OAEG;IACH,OAAO,CAAC,cAAc;IAgDtB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAwF3B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IA+B5B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAY9B;;OAEG;IACH,OAAO,CAAC,iBAAiB;CA6B1B"}
@@ -0,0 +1,374 @@
1
+ version: "1.0"
2
+
3
+ # Default Visor configuration - provides comprehensive code analysis out-of-the-box
4
+ # Uses mock provider for CI compatibility when no AI API keys are configured
5
+ # Users can override this by creating their own .visor.yaml in their project root
6
+
7
+ # Global AI provider settings - users should configure their preferred provider
8
+ # For CI testing, use --provider mock CLI flag instead
9
+
10
+ # Run checks sequentially to ensure session reuse works correctly
11
+ max_parallelism: 1
12
+
13
+ # 🔄 AI Session Reuse Feature:
14
+ # This configuration demonstrates the new 'reuse_ai_session' feature that allows
15
+ # dependent checks to continue conversations with the same AI session, providing
16
+ # context continuity and more intelligent follow-up analysis.
17
+ #
18
+ # Example: security-remediation reuses the session from the security check,
19
+ # allowing the AI to reference the previous security analysis discussion.
20
+
21
+ # Global fail condition - fail if critical issues are found
22
+ fail_if: "output.issues && output.issues.some(i => i.severity === 'critical')"
23
+
24
+ checks:
25
+ # AI-powered release notes generation - manual execution only for release workflows
26
+ release-notes:
27
+ type: ai
28
+ group: release
29
+ schema: plain
30
+ prompt: |
31
+ Generate professional release notes for version {{ env.TAG_NAME }} of this project.
32
+
33
+ Analyze the git commits since the last release:
34
+ ```
35
+ {{ env.GIT_LOG }}
36
+ ```
37
+
38
+ And the file changes summary:
39
+ ```
40
+ {{ env.GIT_DIFF_STAT }}
41
+ ```
42
+
43
+ Create release notes with these sections:
44
+
45
+ ## 🚀 What's New in {{ env.TAG_NAME }}
46
+
47
+ ### ✨ New Features
48
+ List any new features added (look for feat: commits)
49
+
50
+ ### 🐛 Bug Fixes
51
+ List any bugs fixed (look for fix: commits)
52
+
53
+ ### 📈 Improvements
54
+ List any improvements or refactoring (look for refactor:, perf:, chore:, build: commits)
55
+
56
+ ### 🔥 Breaking Changes
57
+ List any breaking changes if present (look for BREAKING CHANGE or ! in commits)
58
+
59
+ ### 📊 Statistics
60
+ - Number of commits since last release
61
+ - Number of contributors involved
62
+ - Number of files changed
63
+
64
+ Keep descriptions concise and user-friendly. Focus on what changed from a user perspective, not implementation details.
65
+ Use present tense and action-oriented language. Group similar changes together.
66
+ on: [manual]
67
+
68
+ # PR overview with intelligent analysis - runs first to establish context
69
+ overview:
70
+ type: ai
71
+ group: overview
72
+ prompt: |
73
+ # 📋 Pull Request Overview: {{ pr.title }}
74
+
75
+ {% if pr.body %}
76
+ ## Description
77
+ {{ pr.body }}
78
+ {% endif %}
79
+
80
+ ## Files Changed Analysis
81
+
82
+ | File | Type | Status | Changes | Impact |
83
+ |------|------|--------|---------|--------|
84
+ {% for file in files %}
85
+ | `{{ file.filename }}` | {{ file.filename | split: "." | last | upcase }} | {{ file.status | capitalize }} | +{{ file.additions }}/-{{ file.deletions }} | {% if file.changes > 50 %}High{% elsif file.changes > 20 %}Medium{% else %}Low{% endif %} |
86
+ {% endfor %}
87
+
88
+ ## Architecture & Impact Assessment
89
+
90
+ Please generate a comprehensive overview and analysis of this pull request.
91
+
92
+ Follow these instructions to create a thorough assessment:
93
+
94
+ 1. **Change Impact Analysis**
95
+ - What this PR accomplishes
96
+ - Key technical changes introduced
97
+ - Affected system components
98
+
99
+ 2. **Architecture Visualization**
100
+ - Create appropriate mermaid diagram(s) showing:
101
+ - Component relationships (use `graph TD/LR`)
102
+ - Process flows (use `flowchart` or `sequenceDiagram`)
103
+ - Data flow between modified components
104
+
105
+ **Guidelines for diagrams:**
106
+ - Use multiple diagrams if there are distinct architectural aspects
107
+ - Choose the most appropriate diagram type for each concept
108
+ - Focus on modified components and their relationships
109
+ - Keep diagrams clean and informative
110
+
111
+ Provide a balanced technical assessment suitable for both developers and stakeholders.
112
+ on: [pr_opened, pr_updated]
113
+
114
+ # Security analysis - Critical for all projects
115
+ security:
116
+ type: ai
117
+ group: review
118
+ schema: code-review
119
+ prompt: |
120
+ Based on our overview discussion, please perform a comprehensive security analysis of the code changes in this pull request.
121
+
122
+ ## Files Changed
123
+ {% for file in files %}
124
+ - `{{ file.filename }}` - {{ file.status }}, +{{ file.additions }}/-{{ file.deletions }} ({{ file.changes }} total changes)
125
+ {% endfor %}
126
+
127
+ ## Instructions
128
+ Analyze the code for security vulnerabilities including:
129
+
130
+ **Input Validation & Injection:**
131
+ - SQL injection in database queries
132
+ - XSS vulnerabilities in user input handling
133
+ - Command injection in system calls
134
+ - Path traversal in file operations
135
+
136
+ **Authentication & Authorization:**
137
+ - Weak authentication mechanisms
138
+ - Session management flaws
139
+ - Access control bypasses
140
+ - Privilege escalation opportunities
141
+
142
+ **Data Protection:**
143
+ - Sensitive data exposure in logs/errors
144
+ - Unencrypted data storage
145
+ - API key or credential leaks
146
+ - Privacy regulation compliance
147
+
148
+ **Infrastructure Security:**
149
+ - Insecure configurations
150
+ - Missing security headers
151
+ - Vulnerable dependencies
152
+ - Resource exhaustion vulnerabilities
153
+
154
+ Provide specific findings with clear explanations and actionable remediation steps.
155
+ depends_on: [overview]
156
+ reuse_ai_session: true # 🔄 Reuses the overview check's AI session for context continuity
157
+ on: [pr_opened, pr_updated]
158
+
159
+ # Performance analysis - Important for all applications
160
+ performance:
161
+ type: ai
162
+ group: review
163
+ schema: code-review
164
+ prompt: |
165
+ Building on our overview and security analysis, now review the code changes for performance issues:
166
+
167
+ ## Files to Analyze
168
+ {% for file in files %}
169
+ - `{{ file.filename }}` ({{ file.changes }} changes, {{ file.status }})
170
+ {% endfor %}
171
+
172
+ ## Analysis Areas
173
+ **Algorithm & Data Structure Efficiency:**
174
+ - Time complexity analysis (O(n), O(n²), etc.)
175
+ - Space complexity and memory usage
176
+ - Inefficient loops and nested operations
177
+ - Suboptimal data structure choices
178
+
179
+ **Database Performance:**
180
+ - N+1 query problems
181
+ - Missing database indexes
182
+ - Inefficient JOIN operations
183
+ - Large result set retrievals
184
+
185
+ **Resource Management:**
186
+ - Memory leaks and excessive allocations
187
+ - File handle management
188
+ - Connection pooling issues
189
+ - Resource cleanup patterns
190
+
191
+ **Async & Concurrency:**
192
+ - Blocking operations in async contexts
193
+ - Race conditions and deadlocks
194
+ - Inefficient parallel processing
195
+
196
+ Building on our overview and security analysis, identify performance issues and provide optimization recommendations that complement our previous findings.
197
+ depends_on: [security]
198
+ reuse_ai_session: true # 🔄 Reuses the security check's AI session for context continuity
199
+ on: [pr_opened, pr_updated]
200
+
201
+ # Code quality and maintainability
202
+ quality:
203
+ type: ai
204
+ group: review
205
+ schema: code-review
206
+ prompt: |
207
+ Building on our overview, security, and performance discussions, evaluate the code quality and maintainability:
208
+
209
+ ## Quality Assessment Areas
210
+ **Code Structure & Design:**
211
+ - SOLID principles adherence
212
+ - Design pattern appropriateness
213
+ - Separation of concerns
214
+ - Code organization and clarity
215
+
216
+ **Error Handling & Reliability:**
217
+ - Exception handling completeness
218
+ - Error propagation patterns
219
+ - Input validation thoroughness
220
+ - Edge case coverage
221
+
222
+ **Testing & Test Coverage:**
223
+ - Missing tests for critical functionality
224
+ - Test coverage gaps
225
+ - Test quality and effectiveness
226
+ - Edge cases and error scenarios coverage
227
+
228
+ **Maintainability:**
229
+ - Code testability issues
230
+ - Dependencies and coupling problems
231
+ - Technical debt introduction
232
+ - Code duplication (DRY violations)
233
+
234
+ **Language-Specific Best Practices:**
235
+ - Idiomatic code usage
236
+ - Framework/library best practices
237
+ - Type safety (if applicable)
238
+
239
+ Focus on actionable improvements that enhance code maintainability while considering the overview, security, and performance findings we've already discussed.
240
+ depends_on: [performance]
241
+ reuse_ai_session: true # 🔄 Reuses the performance check's AI session for context continuity
242
+ on: [pr_opened, pr_updated]
243
+
244
+ # Command orchestrator - demonstrates noop type for triggering multiple checks
245
+ review-all:
246
+ type: noop
247
+ command: '/review'
248
+ depends_on: [overview, security, performance, quality]
249
+ on: [issue_comment]
250
+ if: "event.isPullRequest" # Only trigger on PR comments, not issues
251
+ group: orchestrator
252
+
253
+ # Intelligent Issue Assistant - provides sophisticated issue triage and assistance
254
+ issue-assistant:
255
+ type: ai
256
+ group: issue-support
257
+ command: "ask"
258
+ if: "event.name === 'issues' && event.action === 'opened' || (event.name === 'issue_comment' && event.comment && event.comment.body && event.comment.body.trim().startsWith('/ask'))"
259
+ prompt: |
260
+ You are an intelligent GitHub issue assistant for the {{ event.repository.fullName }} repository. Your role is to provide professional, knowledgeable assistance based on the trigger event.
261
+
262
+ ## Event Context
263
+ **Event Type**: {{ event.name }} - {{ event.action }}
264
+ {% if event.issue -%}
265
+ **Issue #{{ event.issue.number }}**: {{ event.issue.title }}
266
+ **Author**: {{ event.issue.author }}
267
+ **State**: {{ event.issue.state }}
268
+ **Created**: {{ event.issue.createdAt }}
269
+ {%- if event.issue.labels.size > 0 %}
270
+ **Labels**: {% for label in event.issue.labels %}{{ label.name }}{% unless forloop.last %}, {% endunless %}{% endfor %}
271
+ {%- endif %}
272
+ {%- if event.issue.assignees.size > 0 %}
273
+ **Assignees**: {% for assignee in event.issue.assignees %}{{ assignee }}{% unless forloop.last %}, {% endunless %}{% endfor %}
274
+ {%- endif %}
275
+ {%- endif %}
276
+ {%- if event.comment %}
277
+ **Comment by**: {{ event.comment.author }}
278
+ {%- endif %}
279
+
280
+ ## Repository Analysis Context
281
+ {%- if pr.title %}
282
+ **Recent PR Activity**: {{ pr.title }}
283
+ {%- endif %}
284
+ {%- if utils.totalFiles > 0 %}
285
+ **Project Size**: {{ utils.totalFiles }} files
286
+ **Technologies**: {% for ext in utils.filesByExtension %}{{ ext[0] }}{% unless forloop.last %}, {% endunless %}{% endfor %}
287
+ {%- endif %}
288
+
289
+ ## Instructions
290
+
291
+ {%- if event.name == 'issues' and event.action == 'opened' %}
292
+
293
+ **ISSUE TRIAGE MODE**
294
+
295
+ Analyze this new issue and provide intelligent triage:
296
+
297
+ ### Issue Content
298
+ {{ event.issue.body }}
299
+
300
+ ### Analysis Tasks
301
+ 1. **Categorize** the issue (bug/feature/documentation/question/enhancement/maintenance)
302
+ 2. **Assess priority** (low/medium/high/urgent) based on:
303
+ - Impact on users/system
304
+ - Security implications
305
+ - Blocking nature
306
+ - Community interest
307
+ 3. **Estimate complexity** (trivial/simple/moderate/complex)
308
+ 4. **Suggest timeline** for resolution
309
+ 5. **Recommend labels** that would help with organization
310
+ 6. **Identify stakeholders** who should be involved or assignees
311
+ 7. **Provide initial response** to the issue author
312
+
313
+ ### Response Requirements
314
+ - Be professional and welcoming
315
+ - Show you understand the request
316
+ - Provide clear next steps
317
+ - Ask clarifying questions if needed
318
+ - Include technical insights where appropriate
319
+
320
+ {%- elsif event.name == 'issue_comment' %}
321
+
322
+ **ASSISTANCE MODE**
323
+
324
+ A user has asked a question or provided additional information. Provide helpful technical assistance:
325
+
326
+ ### Original Issue
327
+ {%- if event.issue.title %}
328
+ **Title**: {{ event.issue.title }}
329
+ {%- endif %}
330
+ {%- if event.issue.body %}
331
+ **Description**: {{ event.issue.body }}
332
+ {%- endif %}
333
+
334
+ ### Latest Comment
335
+ {{ event.comment.body }}
336
+
337
+ ### Analysis Tasks
338
+ 1. **Understand the context** of their question/comment
339
+ 2. **Provide technical guidance** based on project knowledge
340
+ 3. **Reference relevant code/files** if applicable
341
+ 4. **Suggest implementation approaches** for feature requests
342
+ 5. **Provide debugging steps** for bug reports
343
+ 6. **Link to documentation** or similar issues if helpful
344
+ 7. **Offer code examples** when appropriate
345
+
346
+ ### Response Requirements
347
+ - Address their specific question directly
348
+ - Provide actionable guidance
349
+ - Be encouraging and supportive
350
+ - Use technical language appropriate to their level
351
+ - Include code examples where helpful
352
+ - Reference project conventions and patterns
353
+
354
+ {%- endif %}
355
+
356
+ ### Special Instructions
357
+ - Always be professional, helpful, and encouraging
358
+ - Focus on actionable advice and clear next steps
359
+ - Use markdown formatting for better readability
360
+ - Include relevant code examples when helpful
361
+ - Reference project context and patterns when applicable
362
+ - If dealing with `/visor` commands in comments, acknowledge and provide assistance
363
+ - Maintain consistency with project tone and contributor guidelines
364
+
365
+ ### Response Format
366
+ Provide a well-structured markdown response with clear sections and helpful guidance.
367
+ on: [issue_opened, issue_comment]
368
+
369
+ # Output configuration
370
+ output:
371
+ pr_comment:
372
+ format: markdown
373
+ group_by: check
374
+ collapse: true
@@ -1 +1 @@
1
- {"version":3,"file":"","sourceRoot":"","sources":["file:///home/runner/work/visor/visor/src/github-check-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"","sourceRoot":"","sources":["file:///home/runner/work/visor/visor/src/github-check-service.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"","sourceRoot":"","sources":["file:///home/runner/work/visor/visor/src/index.ts"],"names":[],"mappings":"AAoGA,wBAAsB,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,CAwGzC"}
1
+ {"version":3,"file":"","sourceRoot":"","sources":["file:///home/runner/work/visor/visor/src/index.ts"],"names":[],"mappings":"AAyGA,wBAAsB,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,CAwHzC"}