@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 +142 -5
- package/dist/action-cli-bridge.d.ts +2 -0
- package/dist/action-cli-bridge.d.ts.map +1 -1
- package/dist/check-execution-engine.d.ts.map +1 -1
- package/dist/cli-main.d.ts.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/config.d.ts +5 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/defaults/.visor.yaml +374 -0
- package/dist/github-check-service.d.ts.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1033 -547
- package/dist/types/cli.d.ts +2 -0
- package/dist/types/cli.d.ts.map +1 -1
- package/dist/types/config.d.ts +6 -0
- package/dist/types/config.d.ts.map +1 -1
- package/dist/utils/config-loader.d.ts +90 -0
- package/dist/utils/config-loader.d.ts.map +1 -0
- package/dist/utils/config-merger.d.ts +42 -0
- package/dist/utils/config-merger.d.ts.map +1 -0
- package/package.json +4 -4
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
|
-
|
|
955
|
+
With extends, the full priority order becomes:
|
|
821
956
|
|
|
822
957
|
1. **Check-level settings** (highest priority)
|
|
823
|
-
2. **
|
|
824
|
-
3. **
|
|
825
|
-
4. **
|
|
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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"","sourceRoot":"","sources":["file:///home/runner/work/visor/visor/src/action-cli-bridge.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,kBAAkB;IACjC,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;
|
|
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":"AAAA,OAAO,EAEL,aAAa,EAEb,mBAAmB,EAEpB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAKvC,OAAO,EAAE,sBAAsB,
|
|
1
|
+
{"version":3,"file":"","sourceRoot":"","sources":["file:///home/runner/work/visor/visor/src/check-execution-engine.ts"],"names":[],"mappings":"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"}
|
package/dist/cli-main.d.ts.map
CHANGED
|
@@ -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,
|
|
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;
|
|
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
|
*/
|
package/dist/config.d.ts.map
CHANGED
|
@@ -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;
|
|
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":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzC,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAC;IACnD,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,aAAa,GAAG,WAAW,CAAC;AACpE,MAAM,MAAM,kBAAkB,GAC1B,SAAS,GACT,SAAS,GACT,SAAS,GACT,WAAW,GACX,WAAW,GACX,iBAAiB,CAAC;AAEtB;;GAEG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,cAAc,CAAM;gBAEhB,OAAO,EAAE,OAAO;IAI5B;;OAEG;IACG,cAAc,CAClB,OAAO,EAAE,eAAe,EACxB,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;IA8BvC;;OAEG;IACG,wBAAwB,CAC5B,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,MAAM,EACpB,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,IAAI,CAAC;IAsBhB;;OAEG;IACG,gBAAgB,CACpB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,MAAM,EACjB,cAAc,EAAE,sBAAsB,EAAE,EACxC,YAAY,GAAE,WAAW,EAAO,EAChC,cAAc,CAAC,EAAE,MAAM,GACtB,OAAO,CAAC,IAAI,CAAC;IAgChB;;OAEG;IACH,OAAO,CAAC,2BAA2B;IAqFnC;;OAEG;IACH,OAAO,CAAC,kBAAkB;
|
|
1
|
+
{"version":3,"file":"","sourceRoot":"","sources":["file:///home/runner/work/visor/visor/src/github-check-service.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"","sourceRoot":"","sources":["file:///home/runner/work/visor/visor/src/index.ts"],"names":[],"mappings":"
|
|
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"}
|