@probelabs/visor 0.1.124 → 0.1.126
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/dist/config.d.ts.map +1 -1
- package/dist/docs/DEPLOYMENT.md +117 -11
- package/dist/docs/GITHUB_CHECKS.md +18 -4
- package/dist/docs/NPM_USAGE.md +112 -39
- package/dist/docs/action-reference.md +63 -9
- package/dist/docs/advanced-ai.md +58 -51
- package/dist/docs/ai-configuration.md +99 -11
- package/dist/docs/ai-custom-tools-usage.md +70 -33
- package/dist/docs/ai-custom-tools.md +50 -27
- package/dist/docs/architecture.md +1232 -0
- package/dist/docs/bot-transports-rfc.md +13 -3
- package/dist/docs/ci-cli-mode.md +116 -8
- package/dist/docs/claude-code.md +111 -41
- package/dist/docs/command-provider.md +37 -15
- package/dist/docs/commands.md +252 -6
- package/dist/docs/configuration.md +138 -4
- package/dist/docs/contributing.md +737 -0
- package/dist/docs/custom-tools.md +39 -8
- package/dist/docs/dashboards/README.md +33 -19
- package/dist/docs/debug-visualizer-progress.md +14 -13
- package/dist/docs/debug-visualizer-rfc.md +14 -13
- package/dist/docs/debug-visualizer.md +30 -5
- package/dist/docs/debugging.md +73 -8
- package/dist/docs/default-output-schema.md +24 -20
- package/dist/docs/dependencies.md +75 -21
- package/dist/docs/dev-playbook.md +85 -9
- package/dist/docs/engine-pause-resume-rfc.md +11 -11
- package/dist/docs/engine-state-machine-plan.md +10 -3
- package/dist/docs/event-driven-github-integration-rfc.md +20 -11
- package/dist/docs/event-triggers.md +95 -6
- package/dist/docs/execution-statistics-rfc.md +16 -4
- package/dist/docs/fact-validator-gap-analysis.md +12 -1
- package/dist/docs/fact-validator-implementation-plan.md +19 -11
- package/dist/docs/fail-if.md +116 -11
- package/dist/docs/failure-conditions-implementation.md +40 -6
- package/dist/docs/failure-conditions-schema.md +243 -87
- package/dist/docs/failure-routing-rfc.md +43 -18
- package/dist/docs/failure-routing.md +80 -23
- package/dist/docs/faq.md +836 -0
- package/dist/docs/foreach-dependency-propagation.md +32 -15
- package/dist/docs/github-ops.md +6 -5
- package/dist/docs/glossary.md +322 -0
- package/dist/docs/goto-forward-run-plan.md +23 -10
- package/dist/docs/guides/criticality-modes.md +15 -13
- package/dist/docs/guides/fault-management-and-contracts.md +8 -5
- package/dist/docs/guides/workflow-style-guide.md +17 -8
- package/dist/docs/http.md +102 -3
- package/dist/docs/human-input-provider.md +20 -36
- package/dist/docs/index.md +206 -0
- package/dist/docs/lifecycle-hooks.md +322 -2
- package/dist/docs/limits.md +20 -5
- package/dist/docs/liquid-templates.md +86 -14
- package/dist/docs/loop-routing-refactor.md +4 -2
- package/dist/docs/mcp-provider.md +53 -19
- package/dist/docs/mcp.md +27 -1
- package/dist/docs/memory.md +7 -2
- package/dist/docs/migration.md +596 -0
- package/dist/docs/observability.md +227 -6
- package/dist/docs/output-formats.md +388 -9
- package/dist/docs/output-history.md +36 -6
- package/dist/docs/performance.md +510 -4
- package/dist/docs/pluggable.md +95 -4
- package/dist/docs/proposals/snapshot-scope-execution.md +6 -5
- package/dist/docs/providers/git-checkout.md +16 -14
- package/dist/docs/providers/noop.md +696 -0
- package/dist/docs/recipes.md +8 -9
- package/dist/docs/rfc/git-checkout-step.md +3 -1
- package/dist/docs/rfc/on_init-hook.md +18 -5
- package/dist/docs/rfc/workspace-isolation.md +16 -0
- package/dist/docs/roadmap/criticality-implementation-tasks.md +27 -27
- package/dist/docs/router-patterns.md +155 -43
- package/dist/docs/schema-templates.md +51 -15
- package/dist/docs/script.md +162 -13
- package/dist/docs/sdk.md +46 -12
- package/dist/docs/security.md +464 -5
- package/dist/docs/slack-integration.md +481 -0
- package/dist/docs/tag-filtering.md +60 -20
- package/dist/docs/telemetry-setup.md +157 -46
- package/dist/docs/test-framework-rfc.md +37 -36
- package/dist/docs/testing/assertions.md +92 -4
- package/dist/docs/testing/ci.md +56 -7
- package/dist/docs/testing/cli.md +57 -15
- package/dist/docs/testing/cookbook.md +53 -20
- package/dist/docs/testing/dsl-reference.md +110 -9
- package/dist/docs/testing/fixtures-and-mocks.md +28 -3
- package/dist/docs/testing/flows.md +59 -4
- package/dist/docs/testing/getting-started.md +14 -13
- package/dist/docs/testing/troubleshooting.md +39 -2
- package/dist/docs/timeouts.md +174 -18
- package/dist/docs/troubleshooting.md +176 -6
- package/dist/docs/workflow-creation-guide.md +101 -3
- package/dist/docs/workflows.md +138 -41
- package/dist/examples/README.md +169 -4
- package/dist/examples/ai-custom-tools-simple.yaml +2 -3
- package/dist/examples/cron-webhook-config.yaml +15 -0
- package/dist/examples/forEach-example.yaml +6 -0
- package/dist/examples/git-checkout-basic.yaml +4 -0
- package/dist/examples/git-checkout-compare.yaml +6 -0
- package/dist/examples/git-checkout-cross-repo.yaml +7 -0
- package/dist/examples/http-integration-config.yaml +30 -0
- package/dist/examples/https-server-config.yaml +15 -0
- package/dist/examples/mcp-provider-example.yaml +10 -10
- package/dist/examples/transform-example.yaml +3 -0
- package/dist/examples/webhook-pipeline-config.yaml +18 -0
- package/dist/examples/workflows/workflow-composition-example.yaml +4 -0
- package/dist/frontends/slack-frontend.d.ts +2 -0
- package/dist/frontends/slack-frontend.d.ts.map +1 -1
- package/dist/generated/config-schema.d.ts +11 -7
- package/dist/generated/config-schema.d.ts.map +1 -1
- package/dist/generated/config-schema.json +11 -7
- package/dist/index.js +3127 -974
- package/dist/output/traces/{run-2026-01-28T16-15-24-569Z.ndjson → run-2026-01-31T16-37-22-321Z.ndjson} +84 -84
- package/dist/output/traces/{run-2026-01-28T16-16-09-757Z.ndjson → run-2026-01-31T16-38-06-031Z.ndjson} +1013 -1013
- package/dist/providers/ai-check-provider.d.ts +9 -2
- package/dist/providers/ai-check-provider.d.ts.map +1 -1
- package/dist/providers/command-check-provider.d.ts.map +1 -1
- package/dist/providers/mcp-custom-sse-server.d.ts +17 -1
- package/dist/providers/mcp-custom-sse-server.d.ts.map +1 -1
- package/dist/providers/workflow-check-provider.d.ts.map +1 -1
- package/dist/providers/workflow-tool-executor.d.ts +68 -0
- package/dist/providers/workflow-tool-executor.d.ts.map +1 -0
- package/dist/sdk/{check-provider-registry-AQ3JETBG.mjs → check-provider-registry-3KI5RKXT.mjs} +6 -5
- package/dist/sdk/check-provider-registry-IYILYY35.mjs +28 -0
- package/dist/sdk/chunk-2CPMMNIX.mjs +1459 -0
- package/dist/sdk/chunk-2CPMMNIX.mjs.map +1 -0
- package/dist/sdk/chunk-5LI6T4O3.mjs +3600 -0
- package/dist/sdk/chunk-5LI6T4O3.mjs.map +1 -0
- package/dist/sdk/{chunk-YLQ4UN62.mjs → chunk-A4PGHURG.mjs} +6838 -6257
- package/dist/sdk/chunk-A4PGHURG.mjs.map +1 -0
- package/dist/sdk/chunk-EXFGO4FX.mjs +147 -0
- package/dist/sdk/chunk-EXFGO4FX.mjs.map +1 -0
- package/dist/sdk/chunk-PJ7K5UFC.mjs +17732 -0
- package/dist/sdk/chunk-PJ7K5UFC.mjs.map +1 -0
- package/dist/sdk/{chunk-BHZ4CKUS.mjs → chunk-PXFIALUH.mjs} +77 -8
- package/dist/sdk/chunk-PXFIALUH.mjs.map +1 -0
- package/dist/sdk/{chunk-PVITVJ6J.mjs → chunk-RTKJXNZS.mjs} +32 -9
- package/dist/sdk/chunk-RTKJXNZS.mjs.map +1 -0
- package/dist/sdk/chunk-VW2GBXQT.mjs +606 -0
- package/dist/sdk/chunk-VW2GBXQT.mjs.map +1 -0
- package/dist/sdk/{config-RQQPMLRD.mjs → config-5AUYQFHE.mjs} +2 -2
- package/dist/sdk/config-6CUVEH7H.mjs +16 -0
- package/dist/sdk/config-6CUVEH7H.mjs.map +1 -0
- package/dist/sdk/{github-frontend-6Q4BISZX.mjs → github-frontend-BZ4N3BFZ.mjs} +7 -3
- package/dist/sdk/github-frontend-BZ4N3BFZ.mjs.map +1 -0
- package/dist/sdk/host-4MT3EW2I.mjs +52 -0
- package/dist/sdk/{host-P5NQICP7.mjs → host-NYWXLIFC.mjs} +2 -2
- package/dist/sdk/host-NYWXLIFC.mjs.map +1 -0
- package/dist/sdk/{routing-DEY2AIXM.mjs → routing-6R42GXUO.mjs} +2 -2
- package/dist/sdk/routing-6R42GXUO.mjs.map +1 -0
- package/dist/sdk/routing-7FXPULTO.mjs +24 -0
- package/dist/sdk/routing-7FXPULTO.mjs.map +1 -0
- package/dist/sdk/sdk.d.mts +3 -1
- package/dist/sdk/sdk.d.ts +3 -1
- package/dist/sdk/sdk.js +12163 -11204
- package/dist/sdk/sdk.js.map +1 -1
- package/dist/sdk/sdk.mjs +14 -10
- package/dist/sdk/sdk.mjs.map +1 -1
- package/dist/sdk/slack-frontend-JUT3TYVC.mjs +821 -0
- package/dist/sdk/slack-frontend-JUT3TYVC.mjs.map +1 -0
- package/dist/sdk/workflow-check-provider-H3CUOLUD.mjs +28 -0
- package/dist/sdk/workflow-check-provider-H3CUOLUD.mjs.map +1 -0
- package/dist/sdk/workflow-check-provider-YUNNF4KC.mjs +28 -0
- package/dist/sdk/workflow-check-provider-YUNNF4KC.mjs.map +1 -0
- package/dist/sdk/workflow-registry-KFWSDSLM.mjs +12 -0
- package/dist/sdk/workflow-registry-KFWSDSLM.mjs.map +1 -0
- package/dist/slack/socket-runner.d.ts +2 -0
- package/dist/slack/socket-runner.d.ts.map +1 -1
- package/dist/state-machine/context/workflow-inputs.d.ts +20 -0
- package/dist/state-machine/context/workflow-inputs.d.ts.map +1 -0
- package/dist/state-machine/dispatch/execution-invoker.d.ts.map +1 -1
- package/dist/state-machine/dispatch/foreach-processor.d.ts.map +1 -1
- package/dist/state-machine/dispatch/stats-manager.d.ts.map +1 -1
- package/dist/state-machine/states/level-dispatch.d.ts.map +1 -1
- package/dist/state-machine/states/routing.d.ts +2 -1
- package/dist/state-machine/states/routing.d.ts.map +1 -1
- package/dist/traces/{run-2026-01-28T16-15-24-569Z.ndjson → run-2026-01-31T16-37-22-321Z.ndjson} +84 -84
- package/dist/traces/{run-2026-01-28T16-16-09-757Z.ndjson → run-2026-01-31T16-38-06-031Z.ndjson} +1013 -1013
- package/dist/types/config.d.ts +3 -1
- package/dist/types/config.d.ts.map +1 -1
- package/dist/utils/human-id.d.ts +12 -0
- package/dist/utils/human-id.d.ts.map +1 -0
- package/dist/utils/worktree-manager.d.ts +3 -0
- package/dist/utils/worktree-manager.d.ts.map +1 -1
- package/dist/workflow-executor.d.ts.map +1 -1
- package/dist/workflow-registry.d.ts +1 -0
- package/dist/workflow-registry.d.ts.map +1 -1
- package/package.json +2 -2
- package/dist/sdk/chunk-BHZ4CKUS.mjs.map +0 -1
- package/dist/sdk/chunk-PVITVJ6J.mjs.map +0 -1
- package/dist/sdk/chunk-YLQ4UN62.mjs.map +0 -1
- package/dist/sdk/github-frontend-6Q4BISZX.mjs.map +0 -1
- /package/dist/sdk/{check-provider-registry-AQ3JETBG.mjs.map → check-provider-registry-3KI5RKXT.mjs.map} +0 -0
- /package/dist/sdk/{config-RQQPMLRD.mjs.map → check-provider-registry-IYILYY35.mjs.map} +0 -0
- /package/dist/sdk/{routing-DEY2AIXM.mjs.map → config-5AUYQFHE.mjs.map} +0 -0
- /package/dist/sdk/{host-P5NQICP7.mjs.map → host-4MT3EW2I.mjs.map} +0 -0
package/dist/docs/commands.md
CHANGED
|
@@ -1,8 +1,254 @@
|
|
|
1
|
-
|
|
1
|
+
# Visor Commands
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
- `/review --check security` – Run only security checks
|
|
5
|
-
- `/review --check performance` – Run only performance checks
|
|
6
|
-
- `/visor …` – Ask the assistant a question about the code or context
|
|
7
|
-
- `/review --help` – Show available review commands
|
|
3
|
+
This document covers both the CLI commands and PR comment commands available in Visor.
|
|
8
4
|
|
|
5
|
+
## CLI Commands
|
|
6
|
+
|
|
7
|
+
The main entry point is the `visor` command. Run `visor --help` to see all available options.
|
|
8
|
+
|
|
9
|
+
### Main Command
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
visor [options]
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
Run configured checks against the current repository. Without any options, Visor will discover and load configuration from `.visor.yaml` in the project root.
|
|
16
|
+
|
|
17
|
+
### Subcommands
|
|
18
|
+
|
|
19
|
+
#### `visor validate` / `visor lint`
|
|
20
|
+
|
|
21
|
+
Validate a Visor configuration file without running checks.
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
visor validate --config path/to/config.yaml
|
|
25
|
+
visor lint --config .visor.yaml
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
#### `visor test`
|
|
29
|
+
|
|
30
|
+
Run the Visor test framework for testing workflows.
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
visor test [path] [options]
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
**Options:**
|
|
37
|
+
- `--config <path>` - Path to test suite file, directory, or glob pattern
|
|
38
|
+
- `--only <name>` - Run only tests matching this name (supports `CASE` or `CASE#STAGE`)
|
|
39
|
+
- `--bail` - Stop on first failure
|
|
40
|
+
- `--list` - List discovered tests without running them
|
|
41
|
+
- `--validate` - Validate test files without running them
|
|
42
|
+
- `--json <path>` - Write JSON report to path (use `-` for stdout)
|
|
43
|
+
- `--report junit:<path>` - Write JUnit XML report
|
|
44
|
+
- `--summary md:<path>` - Write Markdown summary
|
|
45
|
+
- `--max-parallel <n>` - Maximum parallel test cases per suite
|
|
46
|
+
- `--max-suites <n>` - Maximum parallel test suites
|
|
47
|
+
- `--no-mocks` - Disable mocks
|
|
48
|
+
|
|
49
|
+
**Examples:**
|
|
50
|
+
```bash
|
|
51
|
+
visor test tests/ # Run all tests in directory
|
|
52
|
+
visor test --config tests/my-suite.yaml # Run specific test suite
|
|
53
|
+
visor test --only "my test case" # Run specific test
|
|
54
|
+
visor test --bail --json results.json # Stop on failure, save JSON report
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
#### `visor code-review` / `visor review`
|
|
58
|
+
|
|
59
|
+
Run the built-in code review workflow against the current repository.
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
visor code-review [options]
|
|
63
|
+
visor review [options]
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
This uses the default code-review configuration from `defaults/code-review.yaml`.
|
|
67
|
+
|
|
68
|
+
#### `visor build`
|
|
69
|
+
|
|
70
|
+
Run the agent builder workflow to create or modify Visor agents.
|
|
71
|
+
|
|
72
|
+
```bash
|
|
73
|
+
visor build <path/to/agent.yaml> [options]
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
**Example:**
|
|
77
|
+
```bash
|
|
78
|
+
visor build agents/my-agent.yaml --message "Add error handling"
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
#### `visor mcp-server`
|
|
82
|
+
|
|
83
|
+
Start Visor as an MCP (Model Context Protocol) server.
|
|
84
|
+
|
|
85
|
+
```bash
|
|
86
|
+
visor mcp-server [options]
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
**Options:**
|
|
90
|
+
- `--config <path>` - Configuration file path
|
|
91
|
+
- `--mcp-tool-name <name>` - Custom tool name for the MCP server
|
|
92
|
+
- `--mcp-tool-description <desc>` - Custom tool description
|
|
93
|
+
|
|
94
|
+
### Common CLI Options
|
|
95
|
+
|
|
96
|
+
#### Check Selection
|
|
97
|
+
- `-c, --check <type>` - Specify check type (can be used multiple times)
|
|
98
|
+
|
|
99
|
+
#### Output Options
|
|
100
|
+
- `-o, --output <format>` - Output format: `table` (default), `json`, `markdown`, `sarif`
|
|
101
|
+
- `--output-file <path>` - Write output to file instead of stdout
|
|
102
|
+
|
|
103
|
+
#### Configuration
|
|
104
|
+
- `--config <path>` - Path to configuration file
|
|
105
|
+
|
|
106
|
+
#### Execution Control
|
|
107
|
+
- `--timeout <ms>` - Timeout for operations (default: 1200000ms / 20 minutes)
|
|
108
|
+
- `--max-parallelism <count>` - Maximum parallel checks (default: 3)
|
|
109
|
+
- `--fail-fast` - Stop execution on first failure
|
|
110
|
+
|
|
111
|
+
#### Tag Filtering
|
|
112
|
+
- `--tags <tags>` - Include checks with these tags (comma-separated)
|
|
113
|
+
- `--exclude-tags <tags>` - Exclude checks with these tags (comma-separated)
|
|
114
|
+
|
|
115
|
+
See [Tag Filtering](tag-filtering.md) for detailed tag filtering documentation.
|
|
116
|
+
|
|
117
|
+
#### Verbosity
|
|
118
|
+
- `--debug` - Enable debug mode with detailed output
|
|
119
|
+
- `-v, --verbose` - Increase verbosity (without full debug)
|
|
120
|
+
- `-q, --quiet` - Reduce verbosity to warnings and errors
|
|
121
|
+
|
|
122
|
+
#### Code Context
|
|
123
|
+
- `--enable-code-context` - Force include code diffs in analysis
|
|
124
|
+
- `--disable-code-context` - Force exclude code diffs from analysis
|
|
125
|
+
- `--analyze-branch-diff` - Analyze diff vs base branch (auto-enabled for code-review schemas)
|
|
126
|
+
|
|
127
|
+
#### Event Simulation
|
|
128
|
+
- `--event <type>` - Simulate GitHub event: `pr_opened`, `pr_updated`, `issue_opened`, `issue_comment`, `manual`, `all`
|
|
129
|
+
|
|
130
|
+
#### Interactive Mode
|
|
131
|
+
- `--tui` - Enable interactive TUI (chat + logs tabs)
|
|
132
|
+
- `--message <text>` - Message for human-input checks (inline text or file path)
|
|
133
|
+
|
|
134
|
+
#### Debug Server
|
|
135
|
+
- `--debug-server` - Start debug visualizer server for live execution visualization
|
|
136
|
+
- `--debug-port <port>` - Port for debug server (default: 3456)
|
|
137
|
+
|
|
138
|
+
#### Workspace Options
|
|
139
|
+
- `--keep-workspace` - Keep workspace folders after execution (for debugging)
|
|
140
|
+
- `--workspace-path <path>` - Workspace base path
|
|
141
|
+
- `--workspace-here` - Place workspace under current directory
|
|
142
|
+
- `--workspace-name <name>` - Workspace directory name
|
|
143
|
+
- `--workspace-project-name <name>` - Main project folder name inside workspace
|
|
144
|
+
|
|
145
|
+
#### Other Options
|
|
146
|
+
- `--slack` - Enable Slack Socket Mode runner
|
|
147
|
+
- `--mode <mode>` - Run mode: `cli` (default) or `github-actions`
|
|
148
|
+
- `--no-remote-extends` - Disable loading configurations from remote URLs
|
|
149
|
+
- `--allowed-remote-patterns <patterns>` - Comma-separated list of allowed URL prefixes for remote config extends
|
|
150
|
+
|
|
151
|
+
### Examples
|
|
152
|
+
|
|
153
|
+
```bash
|
|
154
|
+
# Run all configured checks
|
|
155
|
+
visor
|
|
156
|
+
|
|
157
|
+
# Run specific check types
|
|
158
|
+
visor --check security --check performance
|
|
159
|
+
|
|
160
|
+
# Output as JSON to file
|
|
161
|
+
visor --output json --output-file results.json
|
|
162
|
+
|
|
163
|
+
# Run with 5 minute timeout and 5 parallel checks
|
|
164
|
+
visor --timeout 300000 --max-parallelism 5
|
|
165
|
+
|
|
166
|
+
# Run only checks tagged as 'local' or 'fast'
|
|
167
|
+
visor --tags local,fast
|
|
168
|
+
|
|
169
|
+
# Run security checks but skip slow ones
|
|
170
|
+
visor --tags security --exclude-tags slow
|
|
171
|
+
|
|
172
|
+
# Enable debug mode with markdown output
|
|
173
|
+
visor --debug --output markdown
|
|
174
|
+
|
|
175
|
+
# Generate SARIF report
|
|
176
|
+
visor --output sarif > results.sarif
|
|
177
|
+
|
|
178
|
+
# Interactive TUI mode
|
|
179
|
+
visor --tui
|
|
180
|
+
|
|
181
|
+
# Debug visualizer
|
|
182
|
+
visor --debug-server --debug-port 3456
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
---
|
|
186
|
+
|
|
187
|
+
## PR Comment Commands
|
|
188
|
+
|
|
189
|
+
When Visor is configured as a GitHub Action, it responds to slash commands in PR comments.
|
|
190
|
+
|
|
191
|
+
### Built-in Commands
|
|
192
|
+
|
|
193
|
+
#### `/help`
|
|
194
|
+
|
|
195
|
+
Show available commands and their descriptions.
|
|
196
|
+
|
|
197
|
+
```
|
|
198
|
+
/help
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
Displays a help message listing all configured custom commands plus built-in commands.
|
|
202
|
+
|
|
203
|
+
#### `/status`
|
|
204
|
+
|
|
205
|
+
Show current PR status and metrics.
|
|
206
|
+
|
|
207
|
+
```
|
|
208
|
+
/status
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
Displays information about the current state of the pull request.
|
|
212
|
+
|
|
213
|
+
### Custom Commands
|
|
214
|
+
|
|
215
|
+
Custom commands are configured via the `command` property in check definitions within your `.visor.yaml` file.
|
|
216
|
+
|
|
217
|
+
**Example configuration:**
|
|
218
|
+
|
|
219
|
+
```yaml
|
|
220
|
+
checks:
|
|
221
|
+
security-review:
|
|
222
|
+
type: ai
|
|
223
|
+
command: review-security
|
|
224
|
+
prompt: "Review this code for security issues"
|
|
225
|
+
|
|
226
|
+
performance-check:
|
|
227
|
+
type: ai
|
|
228
|
+
command: check-perf
|
|
229
|
+
prompt: "Analyze performance implications"
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
With the above configuration, the following commands become available in PR comments:
|
|
233
|
+
|
|
234
|
+
- `/review-security` - Runs the security-review check
|
|
235
|
+
- `/check-perf` - Runs the performance-check check
|
|
236
|
+
|
|
237
|
+
When a user comments `/help` on a PR, they'll see these custom commands listed along with which checks they trigger.
|
|
238
|
+
|
|
239
|
+
### Command Behavior
|
|
240
|
+
|
|
241
|
+
- Commands are **case-insensitive** (`/Help` and `/help` both work)
|
|
242
|
+
- Commands must start with a forward slash (`/`)
|
|
243
|
+
- Unrecognized commands are ignored
|
|
244
|
+
- Commands can only be used in PR comments when Visor is running as a GitHub Action
|
|
245
|
+
|
|
246
|
+
---
|
|
247
|
+
|
|
248
|
+
## Related Documentation
|
|
249
|
+
|
|
250
|
+
- [Configuration](configuration.md) - Full configuration reference
|
|
251
|
+
- [Tag Filtering](tag-filtering.md) - Filter checks by tags
|
|
252
|
+
- [CI/CLI Mode](ci-cli-mode.md) - Running Visor in CI environments
|
|
253
|
+
- [Debug Visualizer](debug-visualizer.md) - Interactive debugging
|
|
254
|
+
- [Event Triggers](event-triggers.md) - Configuring when checks run
|
|
@@ -21,11 +21,97 @@ visor validate --config examples/enhanced-config.yaml
|
|
|
21
21
|
|
|
22
22
|
The `validate` command checks for:
|
|
23
23
|
- **Missing required fields** (e.g., `version`)
|
|
24
|
-
- **Invalid check types** (
|
|
24
|
+
- **Invalid check types** (see [Check Types](#check-types) below)
|
|
25
25
|
- **Invalid event triggers** (e.g., `scheduled` should be `schedule`)
|
|
26
26
|
- **Incorrect field names** and typos
|
|
27
27
|
- **Schema compliance** for all configuration options
|
|
28
28
|
|
|
29
|
+
### Check Types
|
|
30
|
+
|
|
31
|
+
Visor supports the following check types:
|
|
32
|
+
|
|
33
|
+
| Type | Description | Documentation |
|
|
34
|
+
|------|-------------|---------------|
|
|
35
|
+
| `ai` | AI-powered analysis using LLMs | [AI Configuration](./ai-configuration.md) |
|
|
36
|
+
| `claude-code` | Claude Code SDK integration | [Claude Code](./claude-code.md) |
|
|
37
|
+
| `command` | Execute shell commands | [Command Provider](./command-provider.md) |
|
|
38
|
+
| `script` | Custom JavaScript logic | [Script](./script.md) |
|
|
39
|
+
| `http` | Send HTTP requests (output) | [HTTP Integration](./http.md) |
|
|
40
|
+
| `http_input` | Receive webhooks | [HTTP Integration](./http.md) |
|
|
41
|
+
| `http_client` | Fetch data from APIs | [HTTP Integration](./http.md) |
|
|
42
|
+
| `mcp` | MCP tool execution | [MCP Provider](./mcp-provider.md) |
|
|
43
|
+
| `memory` | Key-value storage operations | [Memory](./memory.md) |
|
|
44
|
+
| `workflow` | Reusable workflow invocation | [Workflows](./workflows.md) |
|
|
45
|
+
| `git-checkout` | Git repository checkout | [Git Checkout](./providers/git-checkout.md) |
|
|
46
|
+
| `human-input` | Request user input | [Human Input](./human-input-provider.md) |
|
|
47
|
+
| `github` | GitHub API operations | See [Native GitHub Provider](#native-github-provider) |
|
|
48
|
+
| `log` | Debug logging | [Debugging](./debugging.md) |
|
|
49
|
+
| `noop` | No-operation (for routing) | Used for control flow |
|
|
50
|
+
|
|
51
|
+
### Criticality and Contracts
|
|
52
|
+
|
|
53
|
+
Steps can declare their operational criticality, which drives default safety policies for contracts, retries, and loop budgets. See the [Criticality Modes Guide](./guides/criticality-modes.md) for complete documentation.
|
|
54
|
+
|
|
55
|
+
```yaml
|
|
56
|
+
steps:
|
|
57
|
+
post-comment:
|
|
58
|
+
type: github
|
|
59
|
+
criticality: external # external | internal | policy | info
|
|
60
|
+
op: comment.create
|
|
61
|
+
|
|
62
|
+
# Preconditions - must hold before execution
|
|
63
|
+
assume:
|
|
64
|
+
- "outputs['permission-check'].allowed === true"
|
|
65
|
+
- "env.DRY_RUN !== 'true'"
|
|
66
|
+
|
|
67
|
+
# Postconditions - assertions about produced output
|
|
68
|
+
guarantee:
|
|
69
|
+
- "output && typeof output.id === 'number'"
|
|
70
|
+
|
|
71
|
+
# Other step configuration...
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
#### Criticality Levels
|
|
75
|
+
|
|
76
|
+
| Level | Description | Use When |
|
|
77
|
+
|-------|-------------|----------|
|
|
78
|
+
| `external` | Mutates external systems (GitHub, HTTP POST, etc.) | Step has side effects outside the engine |
|
|
79
|
+
| `internal` | Steers execution (forEach, routing, flags) | Step controls workflow routing |
|
|
80
|
+
| `policy` | Enforces permissions/compliance | Step gates external actions |
|
|
81
|
+
| `info` | Read-only, non-critical | Pure computation, safe to fail |
|
|
82
|
+
|
|
83
|
+
#### Contracts: assume and guarantee
|
|
84
|
+
|
|
85
|
+
- **`assume`**: Preconditions that must hold before execution. If false, the step is skipped (skipReason='assume').
|
|
86
|
+
- **`guarantee`**: Postconditions about the produced output. Violations are recorded as error issues with ruleId "contract/guarantee_failed".
|
|
87
|
+
|
|
88
|
+
```yaml
|
|
89
|
+
steps:
|
|
90
|
+
critical-step:
|
|
91
|
+
type: http
|
|
92
|
+
criticality: external
|
|
93
|
+
url: "https://api.example.com/deploy"
|
|
94
|
+
method: POST
|
|
95
|
+
|
|
96
|
+
# Only run if authenticated and not in dry-run mode
|
|
97
|
+
assume:
|
|
98
|
+
- "env.API_TOKEN"
|
|
99
|
+
- "env.DRY_RUN !== 'true'"
|
|
100
|
+
|
|
101
|
+
# Verify the response is valid
|
|
102
|
+
guarantee:
|
|
103
|
+
- "output && output.status === 'success'"
|
|
104
|
+
- "output.deployment_id !== undefined"
|
|
105
|
+
|
|
106
|
+
schema: plain
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
**Best Practices:**
|
|
110
|
+
- Use `assume` for pre-execution prerequisites (env/memory/upstream), not for checking this step's output
|
|
111
|
+
- Use `guarantee` for assertions about this step's produced output (shape, values, invariants)
|
|
112
|
+
- Use `fail_if` for policy/threshold decisions
|
|
113
|
+
- Keep expressions deterministic (no time/random/network)
|
|
114
|
+
|
|
29
115
|
Example validation output:
|
|
30
116
|
```
|
|
31
117
|
🔍 Visor Configuration Validator
|
|
@@ -50,7 +136,7 @@ If there are errors, you'll get detailed messages with hints:
|
|
|
50
136
|
```
|
|
51
137
|
❌ Configuration validation failed!
|
|
52
138
|
|
|
53
|
-
Error: Invalid check type "webhook". Must be: ai, claude-code, command, http, http_input, http_client, noop, log, github
|
|
139
|
+
Error: Invalid check type "webhook". Must be: ai, claude-code, mcp, command, script, http, http_input, http_client, memory, noop, log, github, human-input, workflow, git-checkout
|
|
54
140
|
|
|
55
141
|
💡 Hint: The 'webhook' type has been renamed to 'http' for output and 'http_input' for input.
|
|
56
142
|
```
|
|
@@ -63,7 +149,6 @@ Override global AI settings at the check level:
|
|
|
63
149
|
# Global AI settings (optional)
|
|
64
150
|
ai_provider: anthropic # or google, openai, bedrock
|
|
65
151
|
ai_model: claude-3-sonnet
|
|
66
|
-
ai_temperature: 0.2
|
|
67
152
|
|
|
68
153
|
steps:
|
|
69
154
|
performance-review:
|
|
@@ -71,7 +156,6 @@ steps:
|
|
|
71
156
|
ai:
|
|
72
157
|
provider: google
|
|
73
158
|
model: gemini-1.5-pro
|
|
74
|
-
temperature: 0.1
|
|
75
159
|
prompt: "Analyze performance metrics and provide optimization suggestions"
|
|
76
160
|
|
|
77
161
|
security-review:
|
|
@@ -322,3 +406,53 @@ Notes:
|
|
|
322
406
|
- Requires `GITHUB_TOKEN` (or `github-token` Action input) and `GITHUB_REPOSITORY` in environment.
|
|
323
407
|
- Use Liquid `safe_label` / `safe_label_list` to constrain labels to `[A-Za-z0-9:/\- ]` (alphanumerics, colon, slash, hyphen, and space).
|
|
324
408
|
- Provider errors surface as issues (e.g., `github/missing_token`, `github/op_failed`) and won't abort the whole run.
|
|
409
|
+
|
|
410
|
+
### Additional Configuration Options
|
|
411
|
+
|
|
412
|
+
The following global configuration options are available and documented in detail in their respective guides:
|
|
413
|
+
|
|
414
|
+
| Option | Description | Documentation |
|
|
415
|
+
|--------|-------------|---------------|
|
|
416
|
+
| `max_parallelism` | Maximum number of checks to run in parallel (default: 3) | [Performance](./performance.md) |
|
|
417
|
+
| `fail_fast` | Stop execution when any check fails (default: false) | [Performance](./performance.md) |
|
|
418
|
+
| `fail_if` | Global failure condition expression | [Fail If](./fail-if.md) |
|
|
419
|
+
| `tag_filter` | Filter checks by tags (include/exclude) | [Tag Filtering](./tag-filtering.md) |
|
|
420
|
+
| `routing` | Global routing defaults for retry/goto policies | [Failure Routing](./failure-routing.md) |
|
|
421
|
+
| `limits` | Global execution limits (max_runs_per_check, max_workflow_depth) | [Limits](./limits.md) |
|
|
422
|
+
| `tools` | Custom tool definitions for MCP blocks | [Custom Tools](./custom-tools.md) |
|
|
423
|
+
| `imports` | Import workflow definitions from external files | [Workflows](./workflows.md) |
|
|
424
|
+
| `inputs`/`outputs` | Workflow input/output definitions | [Workflows](./workflows.md) |
|
|
425
|
+
| `http_server` | HTTP server for receiving webhooks | [HTTP Integration](./http.md) |
|
|
426
|
+
| `memory` | Memory storage configuration | [Memory](./memory.md) |
|
|
427
|
+
| `output` | Output configuration (PR comments, file comments) | [Output Formats](./output-formats.md) |
|
|
428
|
+
| `workspace` | Workspace isolation configuration | [Workspace Isolation RFC](./rfc/workspace-isolation.md) |
|
|
429
|
+
|
|
430
|
+
Example combining several options:
|
|
431
|
+
|
|
432
|
+
```yaml
|
|
433
|
+
version: "1.0"
|
|
434
|
+
|
|
435
|
+
max_parallelism: 5
|
|
436
|
+
fail_fast: true
|
|
437
|
+
|
|
438
|
+
tag_filter:
|
|
439
|
+
include: [security, performance]
|
|
440
|
+
exclude: [experimental]
|
|
441
|
+
|
|
442
|
+
limits:
|
|
443
|
+
max_runs_per_check: 50
|
|
444
|
+
max_workflow_depth: 3
|
|
445
|
+
|
|
446
|
+
routing:
|
|
447
|
+
max_loops: 10
|
|
448
|
+
defaults:
|
|
449
|
+
on_fail:
|
|
450
|
+
retry:
|
|
451
|
+
max: 2
|
|
452
|
+
backoff:
|
|
453
|
+
mode: exponential
|
|
454
|
+
delay_ms: 1000
|
|
455
|
+
|
|
456
|
+
steps:
|
|
457
|
+
# ... your step definitions
|
|
458
|
+
```
|