@probelabs/visor 0.1.106 → 0.1.111
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 +71 -2
- package/action.yml +1 -1
- package/defaults/code-refiner.yaml +114 -0
- package/defaults/{.visor.yaml → code-review.yaml} +35 -226
- package/defaults/override.yaml +52 -0
- package/defaults/task-refinement.yaml +624 -0
- package/defaults/visor.tests.yaml +685 -0
- package/defaults/visor.yaml +483 -0
- package/dist/action-cli-bridge.d.ts +11 -82
- package/dist/action-cli-bridge.d.ts.map +1 -1
- package/dist/ai-review-service.d.ts +28 -9
- package/dist/ai-review-service.d.ts.map +1 -1
- package/dist/check-execution-engine.d.ts +19 -331
- package/dist/check-execution-engine.d.ts.map +1 -1
- package/dist/cli-main.d.ts.map +1 -1
- package/dist/cli.d.ts +0 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/config.d.ts +16 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/cron-scheduler.d.ts +3 -3
- package/dist/cron-scheduler.d.ts.map +1 -1
- package/dist/debug-visualizer/ws-server.d.ts +7 -1
- package/dist/debug-visualizer/ws-server.d.ts.map +1 -1
- package/dist/defaults/code-refiner.yaml +114 -0
- package/dist/defaults/{.visor.yaml → code-review.yaml} +35 -226
- package/dist/defaults/override.yaml +52 -0
- package/dist/defaults/task-refinement.yaml +624 -0
- package/dist/defaults/visor.tests.yaml +685 -0
- package/dist/defaults/visor.yaml +483 -0
- package/dist/docs/DEPLOYMENT.md +118 -0
- package/dist/docs/GITHUB_CHECKS.md +280 -0
- package/dist/docs/NPM_USAGE.md +208 -0
- package/dist/docs/action-reference.md +19 -0
- package/dist/docs/advanced-ai.md +237 -0
- package/dist/docs/ai-configuration.md +535 -0
- package/dist/docs/ai-custom-tools-usage.md +261 -0
- package/dist/docs/ai-custom-tools.md +392 -0
- package/dist/docs/author-permissions.md +610 -0
- package/dist/docs/bot-transports-rfc.md +23 -0
- package/dist/docs/ci-cli-mode.md +34 -0
- package/dist/docs/claude-code.md +74 -0
- package/dist/docs/command-provider.md +559 -0
- package/dist/docs/commands.md +8 -0
- package/dist/docs/configuration.md +324 -0
- package/dist/docs/custom-tools.md +424 -0
- package/dist/docs/dashboards/README.md +23 -0
- package/dist/docs/dashboards/grafana-visor-diagrams.json +20 -0
- package/dist/docs/dashboards/grafana-visor-overview.json +33 -0
- package/dist/docs/debug-visualizer-progress.md +572 -0
- package/dist/docs/debug-visualizer-rfc.md +691 -0
- package/dist/docs/debug-visualizer.md +114 -0
- package/dist/docs/debugging.md +636 -0
- package/dist/docs/default-output-schema.md +28 -0
- package/dist/docs/dependencies.md +369 -0
- package/dist/docs/dev-playbook.md +9 -0
- package/dist/docs/engine-pause-resume-rfc.md +192 -0
- package/dist/docs/engine-state-machine-plan.md +333 -0
- package/dist/docs/event-driven-github-integration-rfc.md +743 -0
- package/dist/docs/event-triggers.md +292 -0
- package/dist/docs/execution-statistics-rfc.md +290 -0
- package/dist/docs/fact-validator-gap-analysis.md +178 -0
- package/dist/docs/fact-validator-implementation-plan.md +1235 -0
- package/dist/docs/fail-if.md +95 -0
- package/dist/docs/failure-conditions-implementation.md +271 -0
- package/dist/docs/failure-conditions-schema.md +173 -0
- package/dist/docs/failure-routing-rfc.md +193 -0
- package/dist/docs/failure-routing.md +507 -0
- package/dist/docs/foreach-dependency-propagation.md +473 -0
- package/dist/docs/github-ops.md +89 -0
- package/dist/docs/goto-forward-run-plan.md +113 -0
- package/dist/docs/guides/criticality-modes.md +332 -0
- package/dist/docs/guides/fault-management-and-contracts.md +738 -0
- package/dist/docs/guides/workflow-style-guide.md +224 -0
- package/dist/docs/http.md +299 -0
- package/dist/docs/human-input-provider.md +372 -0
- package/dist/docs/lifecycle-hooks.md +253 -0
- package/dist/docs/limits.md +64 -0
- package/dist/docs/liquid-templates.md +490 -0
- package/dist/docs/loop-routing-refactor.md +89 -0
- package/dist/docs/mcp-provider.md +557 -0
- package/dist/docs/mcp.md +124 -0
- package/dist/docs/memory.md +903 -0
- package/dist/docs/observability.md +12 -0
- package/dist/docs/output-formats.md +20 -0
- package/dist/docs/output-formatting.md +29 -0
- package/dist/docs/output-history.md +383 -0
- package/dist/docs/performance.md +6 -0
- package/dist/docs/pluggable.md +124 -0
- package/dist/docs/proposals/snapshot-scope-execution.md +236 -0
- package/dist/docs/providers/git-checkout.md +589 -0
- package/dist/docs/recipes.md +474 -0
- package/dist/docs/rfc/git-checkout-step.md +601 -0
- package/dist/docs/rfc/on_init-hook.md +1294 -0
- package/dist/docs/rfc/workspace-isolation.md +216 -0
- package/dist/docs/roadmap/criticality-implementation-tasks.md +92 -0
- package/dist/docs/router-patterns.md +339 -0
- package/dist/docs/schema-next-pr.md +10 -0
- package/dist/docs/schema-templates.md +68 -0
- package/dist/docs/script.md +34 -0
- package/dist/docs/sdk.md +222 -0
- package/dist/docs/security.md +7 -0
- package/dist/docs/suppressions.md +89 -0
- package/dist/docs/tag-filtering.md +258 -0
- package/dist/docs/telemetry-setup.md +119 -0
- package/dist/docs/telemetry-tracing-rfc.md +275 -0
- package/dist/docs/test-framework-rfc.md +680 -0
- package/dist/docs/testing/assertions.md +85 -0
- package/dist/docs/testing/ci.md +44 -0
- package/dist/docs/testing/cli.md +41 -0
- package/dist/docs/testing/cookbook.md +172 -0
- package/dist/docs/testing/dsl-reference.md +199 -0
- package/dist/docs/testing/fixtures-and-mocks.md +91 -0
- package/dist/docs/testing/flows.md +92 -0
- package/dist/docs/testing/getting-started.md +93 -0
- package/dist/docs/testing/troubleshooting.md +55 -0
- package/dist/docs/timeouts.md +50 -0
- package/dist/docs/troubleshooting.md +7 -0
- package/dist/docs/visor-sdk-rfc.md +186 -0
- package/dist/docs/workflows.md +569 -0
- package/dist/engine/on-finish/orchestrator.d.ts +19 -0
- package/dist/engine/on-finish/orchestrator.d.ts.map +1 -0
- package/dist/engine/on-finish/utils.d.ts +44 -0
- package/dist/engine/on-finish/utils.d.ts.map +1 -0
- package/dist/event-bus/event-bus.d.ts +13 -0
- package/dist/event-bus/event-bus.d.ts.map +1 -0
- package/dist/event-bus/types.d.ts +71 -0
- package/dist/event-bus/types.d.ts.map +1 -0
- package/dist/examples/.claude/agents/code-reviewer.md +69 -0
- package/dist/examples/.mcp.json +34 -0
- package/dist/examples/CALCULATOR-SDK.md +364 -0
- package/dist/examples/README.md +384 -0
- package/dist/examples/ai-custom-tools-example.yaml +206 -0
- package/dist/examples/ai-custom-tools-simple.yaml +76 -0
- package/dist/examples/ai-retry-fallback-config.yaml +180 -0
- package/dist/examples/ai-with-bash.yaml +126 -0
- package/dist/examples/ai-with-mcp.yaml +82 -0
- package/dist/examples/basic-human-input.yaml +15 -0
- package/dist/examples/bedrock-config.yaml +77 -0
- package/dist/examples/calculator-config.yaml +133 -0
- package/dist/examples/calculator-json-output-guide.md +311 -0
- package/dist/examples/calculator-sdk-automated.ts +340 -0
- package/dist/examples/calculator-sdk-example.ts +275 -0
- package/dist/examples/calculator-sdk-json.ts +331 -0
- package/dist/examples/calculator-sdk-real.ts +374 -0
- package/dist/examples/calculator-sdk-test.ts +148 -0
- package/dist/examples/claude-code-config.yaml +191 -0
- package/dist/examples/cron-webhook-config.yaml +215 -0
- package/dist/examples/custom-template.liquid +57 -0
- package/dist/examples/custom-tools-example.yaml +281 -0
- package/dist/examples/enhanced-config.yaml +165 -0
- package/dist/examples/environments/visor.base.yaml +92 -0
- package/dist/examples/environments/visor.dev.yaml +33 -0
- package/dist/examples/environments/visor.prod.yaml +95 -0
- package/dist/examples/environments/visor.staging.yaml +46 -0
- package/dist/examples/fact-validator.yaml +361 -0
- package/dist/examples/fail-if-simple.yaml +90 -0
- package/dist/examples/failure-conditions-advanced.yaml +136 -0
- package/dist/examples/failure-conditions-basic.yaml +48 -0
- package/dist/examples/failure-conditions-github-style.yaml +119 -0
- package/dist/examples/failure-conditions-migration.yaml +74 -0
- package/dist/examples/for-loop-example.yaml +176 -0
- package/dist/examples/forEach-example.yaml +120 -0
- package/dist/examples/git-checkout-basic.yaml +32 -0
- package/dist/examples/git-checkout-compare.yaml +59 -0
- package/dist/examples/git-checkout-cross-repo.yaml +76 -0
- package/dist/examples/github-workflow-with-tags.yml +163 -0
- package/dist/examples/http-integration-config.yaml +240 -0
- package/dist/examples/https-server-config.yaml +209 -0
- package/dist/examples/human-input-example.yaml +63 -0
- package/dist/examples/if-conditions.yaml +173 -0
- package/dist/examples/jira-simple-example.yaml +56 -0
- package/dist/examples/jira-single-issue-workflow.yaml +166 -0
- package/dist/examples/jira-workflow-mcp.yaml +182 -0
- package/dist/examples/mcp/analyzer.py +119 -0
- package/dist/examples/mcp-provider-example.yaml +301 -0
- package/dist/examples/memory-counter.yaml +99 -0
- package/dist/examples/memory-error-collection.yaml +104 -0
- package/dist/examples/memory-exec-js.yaml +247 -0
- package/dist/examples/memory-namespace-isolation.yaml +184 -0
- package/dist/examples/memory-retry-counter.yaml +65 -0
- package/dist/examples/memory-state-machine.yaml +170 -0
- package/dist/examples/on-init-import-demo.yaml +179 -0
- package/dist/examples/outputs-raw-basic.yaml +26 -0
- package/dist/examples/project-with-tools.yaml +174 -0
- package/dist/examples/prompts/architecture-analysis.liquid +116 -0
- package/dist/examples/prompts/security-comprehensive.liquid +107 -0
- package/dist/examples/quick-start-tags.yaml +53 -0
- package/dist/examples/reusable-tools.yaml +92 -0
- package/dist/examples/reusable-workflows.yaml +88 -0
- package/dist/examples/routing-basic.yaml +35 -0
- package/dist/examples/routing-dynamic-js.yaml +46 -0
- package/dist/examples/routing-foreach.yaml +34 -0
- package/dist/examples/routing-goto-event.yaml +34 -0
- package/dist/examples/routing-on-success.yaml +25 -0
- package/dist/examples/run-calculator-demo.sh +71 -0
- package/dist/examples/sdk-basic.mjs +10 -0
- package/dist/examples/sdk-cjs.cjs +10 -0
- package/dist/examples/sdk-comprehensive.mjs +175 -0
- package/dist/examples/sdk-manual-config.mjs +65 -0
- package/dist/examples/sdk-typescript.js +81 -0
- package/dist/examples/sdk-typescript.ts +92 -0
- package/dist/examples/session-reuse-config.yaml +151 -0
- package/dist/examples/session-reuse-self.yaml +81 -0
- package/dist/examples/slack-simple-chat.yaml +775 -0
- package/dist/examples/templates/security-report.liquid +137 -0
- package/dist/examples/tools-library.yaml +281 -0
- package/dist/examples/transform-example.yaml +199 -0
- package/dist/examples/visor-with-tags.yaml +198 -0
- package/dist/examples/webhook-pipeline-config.yaml +218 -0
- package/dist/examples/workflows/calculator-workflow.yaml +163 -0
- package/dist/examples/workflows/code-quality.yaml +222 -0
- package/dist/examples/workflows/quick-pr-check.yaml +90 -0
- package/dist/examples/workflows/workflow-composition-example.yaml +130 -0
- package/dist/failure-condition-evaluator.d.ts +3 -0
- package/dist/failure-condition-evaluator.d.ts.map +1 -1
- package/dist/frontends/github-frontend.d.ts +58 -0
- package/dist/frontends/github-frontend.d.ts.map +1 -0
- package/dist/frontends/host.d.ts +47 -0
- package/dist/frontends/host.d.ts.map +1 -0
- package/dist/frontends/ndjson-sink.d.ts +12 -0
- package/dist/frontends/ndjson-sink.d.ts.map +1 -0
- package/dist/frontends/slack-frontend.d.ts +58 -0
- package/dist/frontends/slack-frontend.d.ts.map +1 -0
- package/dist/generated/config-schema.d.ts +967 -57
- package/dist/generated/config-schema.d.ts.map +1 -1
- package/dist/generated/config-schema.json +1033 -56
- package/dist/github-check-service.d.ts +4 -6
- package/dist/github-check-service.d.ts.map +1 -1
- package/dist/github-comments.d.ts +2 -4
- package/dist/github-comments.d.ts.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +134327 -99004
- package/dist/liquid-extensions.d.ts.map +1 -1
- package/dist/logger.d.ts +2 -0
- package/dist/logger.d.ts.map +1 -1
- package/dist/memory-store.d.ts +6 -0
- package/dist/memory-store.d.ts.map +1 -1
- package/dist/output/assistant-json/template.liquid +0 -0
- package/dist/output/traces/run-2026-01-20T19-22-58-043Z.ndjson +138 -0
- package/dist/output/traces/run-2026-01-20T19-23-52-175Z.ndjson +1067 -0
- package/dist/output-formatters.d.ts +1 -1
- package/dist/output-formatters.d.ts.map +1 -1
- package/dist/providers/ai-check-provider.d.ts +12 -0
- package/dist/providers/ai-check-provider.d.ts.map +1 -1
- package/dist/providers/check-provider-registry.d.ts +6 -0
- package/dist/providers/check-provider-registry.d.ts.map +1 -1
- package/dist/providers/check-provider.interface.d.ts +43 -1
- package/dist/providers/check-provider.interface.d.ts.map +1 -1
- package/dist/providers/claude-code-check-provider.d.ts.map +1 -1
- package/dist/providers/command-check-provider.d.ts +1 -1
- package/dist/providers/command-check-provider.d.ts.map +1 -1
- package/dist/providers/custom-tool-executor.d.ts +61 -0
- package/dist/providers/custom-tool-executor.d.ts.map +1 -0
- package/dist/providers/git-checkout-provider.d.ts +25 -0
- package/dist/providers/git-checkout-provider.d.ts.map +1 -0
- package/dist/providers/github-ops-provider.d.ts.map +1 -1
- package/dist/providers/http-client-provider.d.ts +4 -4
- package/dist/providers/http-client-provider.d.ts.map +1 -1
- package/dist/providers/human-input-check-provider.d.ts +5 -0
- package/dist/providers/human-input-check-provider.d.ts.map +1 -1
- package/dist/providers/index.d.ts +1 -0
- package/dist/providers/index.d.ts.map +1 -1
- package/dist/providers/log-check-provider.d.ts +2 -5
- package/dist/providers/log-check-provider.d.ts.map +1 -1
- package/dist/providers/mcp-check-provider.d.ts +10 -4
- package/dist/providers/mcp-check-provider.d.ts.map +1 -1
- package/dist/providers/mcp-custom-sse-server.d.ts +66 -0
- package/dist/providers/mcp-custom-sse-server.d.ts.map +1 -0
- package/dist/providers/memory-check-provider.d.ts +2 -8
- package/dist/providers/memory-check-provider.d.ts.map +1 -1
- package/dist/providers/script-check-provider.d.ts +25 -0
- package/dist/providers/script-check-provider.d.ts.map +1 -0
- package/dist/providers/workflow-check-provider.d.ts +56 -0
- package/dist/providers/workflow-check-provider.d.ts.map +1 -0
- package/dist/reviewer.d.ts +2 -1
- package/dist/reviewer.d.ts.map +1 -1
- package/dist/sdk/check-provider-registry-534KL5HT.mjs +27 -0
- package/dist/sdk/chunk-23L3QRYX.mjs +16872 -0
- package/dist/sdk/chunk-23L3QRYX.mjs.map +1 -0
- package/dist/sdk/{chunk-TUTOLSFV.mjs → chunk-3OMWVM6J.mjs} +11 -1
- package/dist/sdk/chunk-3OMWVM6J.mjs.map +1 -0
- package/dist/sdk/chunk-7UK3NIIT.mjs +482 -0
- package/dist/sdk/chunk-7UK3NIIT.mjs.map +1 -0
- package/dist/sdk/chunk-AGIZJ4UZ.mjs +173 -0
- package/dist/sdk/chunk-AGIZJ4UZ.mjs.map +1 -0
- package/dist/sdk/chunk-AIVFBIS4.mjs +1371 -0
- package/dist/sdk/chunk-AIVFBIS4.mjs.map +1 -0
- package/dist/sdk/chunk-AK6BVWIT.mjs +426 -0
- package/dist/sdk/chunk-AK6BVWIT.mjs.map +1 -0
- package/dist/sdk/chunk-AUT26LHW.mjs +139 -0
- package/dist/sdk/chunk-AUT26LHW.mjs.map +1 -0
- package/dist/sdk/chunk-BOVFH3LI.mjs +232 -0
- package/dist/sdk/chunk-BOVFH3LI.mjs.map +1 -0
- package/dist/sdk/chunk-CNX7V5JK.mjs +89 -0
- package/dist/sdk/chunk-CNX7V5JK.mjs.map +1 -0
- package/dist/sdk/chunk-HTOKWMPO.mjs +157 -0
- package/dist/sdk/chunk-HTOKWMPO.mjs.map +1 -0
- package/dist/sdk/chunk-NAW3DB3I.mjs +197 -0
- package/dist/sdk/chunk-NAW3DB3I.mjs.map +1 -0
- package/dist/sdk/chunk-O5EZDNYL.mjs +274 -0
- package/dist/sdk/chunk-O5EZDNYL.mjs.map +1 -0
- package/dist/sdk/chunk-QR7MOMJH.mjs +558 -0
- package/dist/sdk/chunk-QR7MOMJH.mjs.map +1 -0
- package/dist/sdk/chunk-QY2XYPEV.mjs +3556 -0
- package/dist/sdk/chunk-QY2XYPEV.mjs.map +1 -0
- package/dist/sdk/chunk-S2RUE2RG.mjs +145 -0
- package/dist/sdk/chunk-S2RUE2RG.mjs.map +1 -0
- package/dist/sdk/chunk-SIWNBRTK.mjs +800 -0
- package/dist/sdk/chunk-SIWNBRTK.mjs.map +1 -0
- package/dist/sdk/chunk-YSN4G6CI.mjs +146 -0
- package/dist/sdk/chunk-YSN4G6CI.mjs.map +1 -0
- package/dist/sdk/chunk-ZYAUYXSW.mjs +206 -0
- package/dist/sdk/chunk-ZYAUYXSW.mjs.map +1 -0
- package/dist/sdk/command-executor-TYUV6HUS.mjs +14 -0
- package/dist/sdk/config-YNC2EOOT.mjs +16 -0
- package/dist/sdk/config-merger-PX3WIT57.mjs +10 -0
- package/dist/sdk/event-bus-5BEVPQ6T.mjs +35 -0
- package/dist/sdk/event-bus-5BEVPQ6T.mjs.map +1 -0
- package/dist/sdk/failure-condition-evaluator-YGTF2GHG.mjs +17 -0
- package/dist/sdk/git-repository-analyzer-HJC4MYW4.mjs +458 -0
- package/dist/sdk/git-repository-analyzer-HJC4MYW4.mjs.map +1 -0
- package/dist/sdk/github-frontend-SIAEOCON.mjs +1420 -0
- package/dist/sdk/github-frontend-SIAEOCON.mjs.map +1 -0
- package/dist/sdk/host-DXUYTNMU.mjs +52 -0
- package/dist/sdk/host-DXUYTNMU.mjs.map +1 -0
- package/dist/sdk/{liquid-extensions-KVL4MKRH.mjs → liquid-extensions-PKWCKK7E.mjs} +8 -2
- package/dist/sdk/memory-store-XGBB7LX7.mjs +12 -0
- package/dist/sdk/memory-store-XGBB7LX7.mjs.map +1 -0
- package/dist/sdk/metrics-7PP3EJUH.mjs +29 -0
- package/dist/sdk/metrics-7PP3EJUH.mjs.map +1 -0
- package/dist/sdk/ndjson-sink-B4V4NTAQ.mjs +44 -0
- package/dist/sdk/ndjson-sink-B4V4NTAQ.mjs.map +1 -0
- package/dist/sdk/prompt-state-YRJY6QAL.mjs +16 -0
- package/dist/sdk/prompt-state-YRJY6QAL.mjs.map +1 -0
- package/dist/sdk/renderer-schema-LPKN5UJS.mjs +51 -0
- package/dist/sdk/renderer-schema-LPKN5UJS.mjs.map +1 -0
- package/dist/sdk/routing-6N45MJ4F.mjs +24 -0
- package/dist/sdk/routing-6N45MJ4F.mjs.map +1 -0
- package/dist/sdk/sdk.d.mts +541 -22
- package/dist/sdk/sdk.d.ts +541 -22
- package/dist/sdk/sdk.js +27963 -16505
- package/dist/sdk/sdk.js.map +1 -1
- package/dist/sdk/sdk.mjs +1116 -2169
- package/dist/sdk/sdk.mjs.map +1 -1
- package/dist/sdk/session-registry-4E6YRQ77.mjs +10 -0
- package/dist/sdk/session-registry-4E6YRQ77.mjs.map +1 -0
- package/dist/sdk/slack-frontend-BVKW3GD5.mjs +735 -0
- package/dist/sdk/slack-frontend-BVKW3GD5.mjs.map +1 -0
- package/dist/sdk/trace-helpers-VP6QYVBX.mjs +23 -0
- package/dist/sdk/trace-helpers-VP6QYVBX.mjs.map +1 -0
- package/dist/sdk/{tracer-init-WC75N5NW.mjs → tracer-init-GSLPPLCD.mjs} +2 -2
- package/dist/sdk/tracer-init-GSLPPLCD.mjs.map +1 -0
- package/dist/sdk/workflow-registry-R6KSACFR.mjs +12 -0
- package/dist/sdk/workflow-registry-R6KSACFR.mjs.map +1 -0
- package/dist/sdk.d.ts.map +1 -1
- package/dist/slack/adapter.d.ts +36 -0
- package/dist/slack/adapter.d.ts.map +1 -0
- package/dist/slack/cache-prewarmer.d.ts +31 -0
- package/dist/slack/cache-prewarmer.d.ts.map +1 -0
- package/dist/slack/client.d.ts +77 -0
- package/dist/slack/client.d.ts.map +1 -0
- package/dist/slack/markdown.d.ts +45 -0
- package/dist/slack/markdown.d.ts.map +1 -0
- package/dist/slack/prompt-state.d.ts +33 -0
- package/dist/slack/prompt-state.d.ts.map +1 -0
- package/dist/slack/rate-limiter.d.ts +56 -0
- package/dist/slack/rate-limiter.d.ts.map +1 -0
- package/dist/slack/signature.d.ts +2 -0
- package/dist/slack/signature.d.ts.map +1 -0
- package/dist/slack/socket-runner.d.ts +42 -0
- package/dist/slack/socket-runner.d.ts.map +1 -0
- package/dist/slack/thread-cache.d.ts +51 -0
- package/dist/slack/thread-cache.d.ts.map +1 -0
- package/dist/snapshot-store.d.ts +59 -0
- package/dist/snapshot-store.d.ts.map +1 -0
- package/dist/state-machine/context/build-engine-context.d.ts +17 -0
- package/dist/state-machine/context/build-engine-context.d.ts.map +1 -0
- package/dist/state-machine/dispatch/dependency-gating.d.ts +12 -0
- package/dist/state-machine/dispatch/dependency-gating.d.ts.map +1 -0
- package/dist/state-machine/dispatch/execution-invoker.d.ts +14 -0
- package/dist/state-machine/dispatch/execution-invoker.d.ts.map +1 -0
- package/dist/state-machine/dispatch/foreach-processor.d.ts +8 -0
- package/dist/state-machine/dispatch/foreach-processor.d.ts.map +1 -0
- package/dist/state-machine/dispatch/history-snapshot.d.ts +8 -0
- package/dist/state-machine/dispatch/history-snapshot.d.ts.map +1 -0
- package/dist/state-machine/dispatch/on-init-handlers.d.ts +43 -0
- package/dist/state-machine/dispatch/on-init-handlers.d.ts.map +1 -0
- package/dist/state-machine/dispatch/renderer-schema.d.ts +8 -0
- package/dist/state-machine/dispatch/renderer-schema.d.ts.map +1 -0
- package/dist/state-machine/dispatch/stats-manager.d.ts +15 -0
- package/dist/state-machine/dispatch/stats-manager.d.ts.map +1 -0
- package/dist/state-machine/dispatch/template-renderer.d.ts +7 -0
- package/dist/state-machine/dispatch/template-renderer.d.ts.map +1 -0
- package/dist/state-machine/execution/summary.d.ts +8 -0
- package/dist/state-machine/execution/summary.d.ts.map +1 -0
- package/dist/state-machine/runner.d.ts +79 -0
- package/dist/state-machine/runner.d.ts.map +1 -0
- package/dist/state-machine/states/check-running.d.ts +14 -0
- package/dist/state-machine/states/check-running.d.ts.map +1 -0
- package/dist/state-machine/states/completed.d.ts +12 -0
- package/dist/state-machine/states/completed.d.ts.map +1 -0
- package/dist/state-machine/states/error.d.ts +11 -0
- package/dist/state-machine/states/error.d.ts.map +1 -0
- package/dist/state-machine/states/init.d.ts +11 -0
- package/dist/state-machine/states/init.d.ts.map +1 -0
- package/dist/state-machine/states/level-dispatch.d.ts +17 -0
- package/dist/state-machine/states/level-dispatch.d.ts.map +1 -0
- package/dist/state-machine/states/plan-ready.d.ts +12 -0
- package/dist/state-machine/states/plan-ready.d.ts.map +1 -0
- package/dist/state-machine/states/routing.d.ts +52 -0
- package/dist/state-machine/states/routing.d.ts.map +1 -0
- package/dist/state-machine/states/wave-planning.d.ts +14 -0
- package/dist/state-machine/states/wave-planning.d.ts.map +1 -0
- package/dist/state-machine/workflow-projection.d.ts +47 -0
- package/dist/state-machine/workflow-projection.d.ts.map +1 -0
- package/dist/state-machine-execution-engine.d.ts +159 -0
- package/dist/state-machine-execution-engine.d.ts.map +1 -0
- package/dist/telemetry/opentelemetry.d.ts.map +1 -1
- package/dist/telemetry/state-capture.d.ts +5 -0
- package/dist/telemetry/state-capture.d.ts.map +1 -1
- package/dist/test-runner/assertions.d.ts +59 -0
- package/dist/test-runner/assertions.d.ts.map +1 -0
- package/dist/test-runner/core/environment.d.ts +8 -0
- package/dist/test-runner/core/environment.d.ts.map +1 -0
- package/dist/test-runner/core/fixture.d.ts +3 -0
- package/dist/test-runner/core/fixture.d.ts.map +1 -0
- package/dist/test-runner/core/flow-stage.d.ts +32 -0
- package/dist/test-runner/core/flow-stage.d.ts.map +1 -0
- package/dist/test-runner/core/mocks.d.ts +8 -0
- package/dist/test-runner/core/mocks.d.ts.map +1 -0
- package/dist/test-runner/core/test-execution-wrapper.d.ts +18 -0
- package/dist/test-runner/core/test-execution-wrapper.d.ts.map +1 -0
- package/dist/test-runner/evaluators.d.ts +45 -0
- package/dist/test-runner/evaluators.d.ts.map +1 -0
- package/dist/test-runner/fixture-loader.d.ts +30 -0
- package/dist/test-runner/fixture-loader.d.ts.map +1 -0
- package/dist/test-runner/index.d.ts +127 -0
- package/dist/test-runner/index.d.ts.map +1 -0
- package/dist/test-runner/recorders/github-recorder.d.ts +23 -0
- package/dist/test-runner/recorders/github-recorder.d.ts.map +1 -0
- package/dist/test-runner/recorders/global-recorder.d.ts +4 -0
- package/dist/test-runner/recorders/global-recorder.d.ts.map +1 -0
- package/dist/test-runner/recorders/slack-recorder.d.ts +17 -0
- package/dist/test-runner/recorders/slack-recorder.d.ts.map +1 -0
- package/dist/test-runner/utils/selectors.d.ts +2 -0
- package/dist/test-runner/utils/selectors.d.ts.map +1 -0
- package/dist/test-runner/validator.d.ts +8 -0
- package/dist/test-runner/validator.d.ts.map +1 -0
- package/dist/traces/run-2026-01-20T19-22-58-043Z.ndjson +138 -0
- package/dist/traces/run-2026-01-20T19-23-52-175Z.ndjson +1067 -0
- package/dist/types/bot.d.ts +109 -0
- package/dist/types/bot.d.ts.map +1 -0
- package/dist/types/cli.d.ts +8 -1
- package/dist/types/cli.d.ts.map +1 -1
- package/dist/types/config.d.ts +459 -9
- package/dist/types/config.d.ts.map +1 -1
- package/dist/types/engine.d.ts +177 -0
- package/dist/types/engine.d.ts.map +1 -0
- package/dist/types/execution.d.ts +73 -0
- package/dist/types/execution.d.ts.map +1 -0
- package/dist/types/git-checkout.d.ts +76 -0
- package/dist/types/git-checkout.d.ts.map +1 -0
- package/dist/types/github.d.ts +51 -0
- package/dist/types/github.d.ts.map +1 -0
- package/dist/types/workflow.d.ts +237 -0
- package/dist/types/workflow.d.ts.map +1 -0
- package/dist/utils/command-executor.d.ts +43 -0
- package/dist/utils/command-executor.d.ts.map +1 -0
- package/dist/utils/comment-metadata.d.ts +21 -0
- package/dist/utils/comment-metadata.d.ts.map +1 -0
- package/dist/utils/config-loader.d.ts.map +1 -1
- package/dist/utils/config-merger.d.ts.map +1 -1
- package/dist/utils/env-exposure.d.ts +3 -0
- package/dist/utils/env-exposure.d.ts.map +1 -0
- package/dist/utils/file-exclusion.d.ts.map +1 -1
- package/dist/utils/interactive-prompt.d.ts +1 -1
- package/dist/utils/interactive-prompt.d.ts.map +1 -1
- package/dist/utils/json-text-extractor.d.ts +17 -0
- package/dist/utils/json-text-extractor.d.ts.map +1 -0
- package/dist/utils/sandbox.d.ts +10 -0
- package/dist/utils/sandbox.d.ts.map +1 -1
- package/dist/utils/script-memory-ops.d.ts +21 -0
- package/dist/utils/script-memory-ops.d.ts.map +1 -0
- package/dist/utils/template-context.d.ts +8 -0
- package/dist/utils/template-context.d.ts.map +1 -0
- package/dist/utils/tracer-init.d.ts.map +1 -1
- package/dist/utils/workspace-manager.d.ts +118 -0
- package/dist/utils/workspace-manager.d.ts.map +1 -0
- package/dist/utils/worktree-cleanup.d.ts +33 -0
- package/dist/utils/worktree-cleanup.d.ts.map +1 -0
- package/dist/utils/worktree-manager.d.ts +153 -0
- package/dist/utils/worktree-manager.d.ts.map +1 -0
- package/dist/webhook-server.d.ts +3 -3
- package/dist/webhook-server.d.ts.map +1 -1
- package/dist/workflow-executor.d.ts +81 -0
- package/dist/workflow-executor.d.ts.map +1 -0
- package/dist/workflow-registry.d.ts +79 -0
- package/dist/workflow-registry.d.ts.map +1 -0
- package/package.json +12 -5
- package/dist/output/traces/run-2025-10-22T18-22-56-873Z.ndjson +0 -218
- package/dist/sdk/check-execution-engine-2YYKUUSH.mjs +0 -11
- package/dist/sdk/check-execution-engine-6QJXYYON.mjs +0 -11
- package/dist/sdk/check-execution-engine-PJZ4ZOKG.mjs +0 -11
- package/dist/sdk/chunk-33QVZ2D4.mjs +0 -316
- package/dist/sdk/chunk-33QVZ2D4.mjs.map +0 -1
- package/dist/sdk/chunk-B5QBV2QJ.mjs +0 -752
- package/dist/sdk/chunk-B5QBV2QJ.mjs.map +0 -1
- package/dist/sdk/chunk-BVFNRCHT.mjs +0 -14129
- package/dist/sdk/chunk-BVFNRCHT.mjs.map +0 -1
- package/dist/sdk/chunk-KWZW23FG.mjs +0 -14129
- package/dist/sdk/chunk-KWZW23FG.mjs.map +0 -1
- package/dist/sdk/chunk-O4RP4BRH.mjs +0 -14092
- package/dist/sdk/chunk-O4RP4BRH.mjs.map +0 -1
- package/dist/sdk/chunk-TUTOLSFV.mjs.map +0 -1
- package/dist/sdk/chunk-U5D2LY66.mjs +0 -245
- package/dist/sdk/chunk-U5D2LY66.mjs.map +0 -1
- package/dist/sdk/chunk-U7X54EMV.mjs +0 -331
- package/dist/sdk/chunk-U7X54EMV.mjs.map +0 -1
- package/dist/sdk/config-merger-TWUBWFC2.mjs +0 -8
- package/dist/sdk/mermaid-telemetry-SN6A2TKW.mjs +0 -61
- package/dist/sdk/mermaid-telemetry-SN6A2TKW.mjs.map +0 -1
- package/dist/sdk/mermaid-telemetry-YCTIG76M.mjs +0 -61
- package/dist/sdk/mermaid-telemetry-YCTIG76M.mjs.map +0 -1
- package/dist/traces/run-2025-10-22T18-22-56-873Z.ndjson +0 -218
- /package/dist/sdk/{check-execution-engine-2YYKUUSH.mjs.map → check-provider-registry-534KL5HT.mjs.map} +0 -0
- /package/dist/sdk/{check-execution-engine-6QJXYYON.mjs.map → command-executor-TYUV6HUS.mjs.map} +0 -0
- /package/dist/sdk/{check-execution-engine-PJZ4ZOKG.mjs.map → config-YNC2EOOT.mjs.map} +0 -0
- /package/dist/sdk/{config-merger-TWUBWFC2.mjs.map → config-merger-PX3WIT57.mjs.map} +0 -0
- /package/dist/sdk/{liquid-extensions-KVL4MKRH.mjs.map → failure-condition-evaluator-YGTF2GHG.mjs.map} +0 -0
- /package/dist/sdk/{tracer-init-WC75N5NW.mjs.map → liquid-extensions-PKWCKK7E.mjs.map} +0 -0
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
# Example configuration demonstrating AI retry and fallback mechanisms
|
|
2
|
+
# This shows how to configure automatic retries with exponential backoff
|
|
3
|
+
# and fallback to alternative AI providers when the primary provider fails
|
|
4
|
+
|
|
5
|
+
version: '1.0'
|
|
6
|
+
|
|
7
|
+
# Global AI provider settings with retry and fallback
|
|
8
|
+
# Note: Check-level settings (in steps.<name>.ai) override these global settings
|
|
9
|
+
ai_provider: anthropic
|
|
10
|
+
ai_model: claude-3-5-sonnet-20241022
|
|
11
|
+
|
|
12
|
+
steps:
|
|
13
|
+
# Example 1: Basic retry configuration
|
|
14
|
+
# Retries the same provider with exponential backoff
|
|
15
|
+
code-review:
|
|
16
|
+
type: ai
|
|
17
|
+
prompt: |
|
|
18
|
+
Review this code for security vulnerabilities and best practices.
|
|
19
|
+
Focus on:
|
|
20
|
+
- Authentication and authorization issues
|
|
21
|
+
- SQL injection and XSS vulnerabilities
|
|
22
|
+
- Sensitive data exposure
|
|
23
|
+
schema: code-review
|
|
24
|
+
on:
|
|
25
|
+
- pr_opened
|
|
26
|
+
- pr_updated
|
|
27
|
+
ai:
|
|
28
|
+
provider: anthropic
|
|
29
|
+
model: claude-3-5-sonnet-20241022
|
|
30
|
+
# Retry configuration for transient failures
|
|
31
|
+
retry:
|
|
32
|
+
maxRetries: 3 # Retry up to 3 times (0-50 allowed)
|
|
33
|
+
initialDelay: 1000 # Start with 1 second delay (0-60000ms)
|
|
34
|
+
maxDelay: 30000 # Cap delay at 30 seconds (0-300000ms)
|
|
35
|
+
backoffFactor: 2 # Double delay each retry (1-10 allowed)
|
|
36
|
+
retryableErrors: # Optional: custom error patterns to retry on
|
|
37
|
+
- "rate limit"
|
|
38
|
+
- "503"
|
|
39
|
+
- "timeout"
|
|
40
|
+
|
|
41
|
+
# Example 2: Automatic fallback with environment detection
|
|
42
|
+
# Automatically falls back to available providers based on env vars
|
|
43
|
+
security-scan:
|
|
44
|
+
type: ai
|
|
45
|
+
prompt: |
|
|
46
|
+
Perform a comprehensive security analysis of the changes.
|
|
47
|
+
Identify critical security vulnerabilities.
|
|
48
|
+
schema: code-review
|
|
49
|
+
on:
|
|
50
|
+
- pr_opened
|
|
51
|
+
ai:
|
|
52
|
+
provider: anthropic
|
|
53
|
+
model: claude-3-5-sonnet-20241022
|
|
54
|
+
retry:
|
|
55
|
+
maxRetries: 2
|
|
56
|
+
initialDelay: 1000
|
|
57
|
+
backoffFactor: 2
|
|
58
|
+
# Automatic fallback to any available provider
|
|
59
|
+
fallback:
|
|
60
|
+
auto: true # Enable automatic provider detection
|
|
61
|
+
strategy: any # Try any available provider
|
|
62
|
+
maxTotalAttempts: 10 # Total attempts across all providers
|
|
63
|
+
|
|
64
|
+
# Example 3: Custom fallback provider chain
|
|
65
|
+
# Explicitly specify fallback providers in order
|
|
66
|
+
performance-review:
|
|
67
|
+
type: ai
|
|
68
|
+
prompt: |
|
|
69
|
+
Analyze code for performance issues and optimization opportunities.
|
|
70
|
+
schema: code-review
|
|
71
|
+
on:
|
|
72
|
+
- pr_opened
|
|
73
|
+
ai:
|
|
74
|
+
provider: anthropic
|
|
75
|
+
model: claude-3-5-sonnet-20241022
|
|
76
|
+
retry:
|
|
77
|
+
maxRetries: 2
|
|
78
|
+
initialDelay: 500
|
|
79
|
+
backoffFactor: 2
|
|
80
|
+
# Custom fallback chain
|
|
81
|
+
fallback:
|
|
82
|
+
strategy: custom
|
|
83
|
+
maxTotalAttempts: 8
|
|
84
|
+
providers:
|
|
85
|
+
# First fallback: Try OpenAI GPT-4
|
|
86
|
+
- provider: openai
|
|
87
|
+
model: gpt-4-turbo-preview
|
|
88
|
+
maxRetries: 2 # Per-provider retry override
|
|
89
|
+
apiKey: "${OPENAI_API_KEY}" # Can reference env vars
|
|
90
|
+
|
|
91
|
+
# Second fallback: Try Google Gemini
|
|
92
|
+
- provider: google
|
|
93
|
+
model: gemini-2.0-flash-exp
|
|
94
|
+
maxRetries: 2
|
|
95
|
+
apiKey: "${GOOGLE_API_KEY}"
|
|
96
|
+
|
|
97
|
+
# Third fallback: AWS Bedrock (requires AWS credentials)
|
|
98
|
+
- provider: bedrock
|
|
99
|
+
model: anthropic.claude-3-5-sonnet-20241022-v2:0
|
|
100
|
+
maxRetries: 1
|
|
101
|
+
region: us-east-1
|
|
102
|
+
accessKeyId: "${AWS_ACCESS_KEY_ID}"
|
|
103
|
+
secretAccessKey: "${AWS_SECRET_ACCESS_KEY}"
|
|
104
|
+
|
|
105
|
+
# Example 4: Same-model fallback strategy
|
|
106
|
+
# Falls back to same model on different providers
|
|
107
|
+
style-review:
|
|
108
|
+
type: ai
|
|
109
|
+
prompt: |
|
|
110
|
+
Review code style and consistency with project conventions.
|
|
111
|
+
schema: code-review
|
|
112
|
+
on:
|
|
113
|
+
- pr_updated
|
|
114
|
+
ai:
|
|
115
|
+
provider: anthropic
|
|
116
|
+
model: claude-3-5-sonnet-20241022
|
|
117
|
+
retry:
|
|
118
|
+
maxRetries: 1
|
|
119
|
+
fallback:
|
|
120
|
+
strategy: same-model # Try to use same model on other providers
|
|
121
|
+
auto: true
|
|
122
|
+
maxTotalAttempts: 5
|
|
123
|
+
|
|
124
|
+
# Example 5: Same-provider fallback strategy
|
|
125
|
+
# Falls back to different models from same provider
|
|
126
|
+
documentation-review:
|
|
127
|
+
type: ai
|
|
128
|
+
prompt: |
|
|
129
|
+
Review documentation for completeness and clarity.
|
|
130
|
+
schema: code-review
|
|
131
|
+
on:
|
|
132
|
+
- pr_opened
|
|
133
|
+
ai:
|
|
134
|
+
provider: anthropic
|
|
135
|
+
model: claude-3-5-sonnet-20241022
|
|
136
|
+
retry:
|
|
137
|
+
maxRetries: 2
|
|
138
|
+
fallback:
|
|
139
|
+
strategy: same-provider # Try other models from Anthropic
|
|
140
|
+
providers:
|
|
141
|
+
- provider: anthropic
|
|
142
|
+
model: claude-3-opus-20240229
|
|
143
|
+
maxRetries: 1
|
|
144
|
+
- provider: anthropic
|
|
145
|
+
model: claude-3-haiku-20240307
|
|
146
|
+
maxRetries: 1
|
|
147
|
+
|
|
148
|
+
# Example 6: Conservative retry with no fallback
|
|
149
|
+
# Useful when you want to fail fast and don't want to try alternatives
|
|
150
|
+
critical-security-check:
|
|
151
|
+
type: ai
|
|
152
|
+
prompt: |
|
|
153
|
+
Perform critical security validation that requires highest accuracy.
|
|
154
|
+
schema: code-review
|
|
155
|
+
on:
|
|
156
|
+
- pr_opened
|
|
157
|
+
ai:
|
|
158
|
+
provider: anthropic
|
|
159
|
+
model: claude-3-opus-20240229 # Use most capable model
|
|
160
|
+
retry:
|
|
161
|
+
maxRetries: 1 # Only retry once
|
|
162
|
+
initialDelay: 2000
|
|
163
|
+
# No fallback - fail if primary provider fails after retries
|
|
164
|
+
|
|
165
|
+
output:
|
|
166
|
+
pr_comment:
|
|
167
|
+
format: markdown
|
|
168
|
+
group_by: check
|
|
169
|
+
collapse: false
|
|
170
|
+
github_checks:
|
|
171
|
+
enabled: true
|
|
172
|
+
per_check: true
|
|
173
|
+
|
|
174
|
+
# Notes:
|
|
175
|
+
# - Retry logic uses exponential backoff with random jitter to avoid thundering herd
|
|
176
|
+
# - Retries automatically detect transient failures (rate limits, timeouts, 503, etc.)
|
|
177
|
+
# - Fallback providers are tried in order after primary provider exhausts retries
|
|
178
|
+
# - Environment variables are automatically used when fallback.auto is enabled
|
|
179
|
+
# - Each provider in fallback chain can have its own retry configuration
|
|
180
|
+
# - maxTotalAttempts caps total attempts across all providers to prevent excessive API usage
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
# Example Visor configuration demonstrating bash command execution in AI checks
|
|
2
|
+
version: "1.0"
|
|
3
|
+
|
|
4
|
+
# Global AI provider configuration
|
|
5
|
+
ai_provider: anthropic
|
|
6
|
+
ai_model: claude-3-sonnet
|
|
7
|
+
|
|
8
|
+
steps:
|
|
9
|
+
# Example 1: Simple - Enable bash with default safe commands
|
|
10
|
+
git-status-analysis:
|
|
11
|
+
type: ai
|
|
12
|
+
prompt: |
|
|
13
|
+
Analyze the current git repository status:
|
|
14
|
+
- Check for uncommitted changes
|
|
15
|
+
- Review the current branch
|
|
16
|
+
- List recent commits
|
|
17
|
+
- Identify any potential issues
|
|
18
|
+
ai:
|
|
19
|
+
provider: anthropic
|
|
20
|
+
model: claude-3-opus
|
|
21
|
+
allowBash: true # Simple one-line enable
|
|
22
|
+
on: ["pr_opened", "pr_updated"]
|
|
23
|
+
tags: ["git", "analysis"]
|
|
24
|
+
|
|
25
|
+
# Example 2: Advanced - Custom allow/deny lists for npm commands
|
|
26
|
+
npm-audit-check:
|
|
27
|
+
type: ai
|
|
28
|
+
prompt: |
|
|
29
|
+
Run npm audit and analyze the security vulnerabilities:
|
|
30
|
+
- Check for high/critical vulnerabilities
|
|
31
|
+
- Review outdated dependencies
|
|
32
|
+
- Suggest remediation steps
|
|
33
|
+
ai:
|
|
34
|
+
provider: google
|
|
35
|
+
model: gemini-2.0-flash-exp
|
|
36
|
+
allowBash: true
|
|
37
|
+
bashConfig:
|
|
38
|
+
allow:
|
|
39
|
+
- 'npm audit --json'
|
|
40
|
+
- 'npm outdated --json'
|
|
41
|
+
- 'npm list --depth=0'
|
|
42
|
+
timeout: 60000 # 60 second timeout
|
|
43
|
+
on: ["pr_opened"]
|
|
44
|
+
tags: ["security", "npm"]
|
|
45
|
+
|
|
46
|
+
# Example 3: Advanced - Test execution with custom config
|
|
47
|
+
test-runner-analysis:
|
|
48
|
+
type: ai
|
|
49
|
+
prompt: |
|
|
50
|
+
Run the test suite and analyze the results:
|
|
51
|
+
- Execute all tests
|
|
52
|
+
- Identify failing tests
|
|
53
|
+
- Review code coverage
|
|
54
|
+
- Suggest improvements
|
|
55
|
+
ai:
|
|
56
|
+
provider: anthropic
|
|
57
|
+
allowBash: true
|
|
58
|
+
bashConfig:
|
|
59
|
+
allow:
|
|
60
|
+
- 'npm test'
|
|
61
|
+
- 'npm run test:coverage'
|
|
62
|
+
deny:
|
|
63
|
+
- 'npm install' # Explicitly block installation
|
|
64
|
+
timeout: 300000 # 5 minute timeout for tests
|
|
65
|
+
workingDirectory: '.'
|
|
66
|
+
on: ["pr_opened", "pr_updated"]
|
|
67
|
+
tags: ["tests", "coverage"]
|
|
68
|
+
|
|
69
|
+
# Example 4: Advanced - Build and lint with timeouts
|
|
70
|
+
build-lint-check:
|
|
71
|
+
type: ai
|
|
72
|
+
prompt: |
|
|
73
|
+
Run build and lint checks:
|
|
74
|
+
- Execute the build process
|
|
75
|
+
- Run ESLint
|
|
76
|
+
- Check TypeScript compilation
|
|
77
|
+
- Review any errors or warnings
|
|
78
|
+
ai:
|
|
79
|
+
provider: openai
|
|
80
|
+
model: gpt-4
|
|
81
|
+
allowBash: true
|
|
82
|
+
bashConfig:
|
|
83
|
+
allow:
|
|
84
|
+
- 'npm run build'
|
|
85
|
+
- 'npm run lint'
|
|
86
|
+
- 'tsc --noEmit'
|
|
87
|
+
timeout: 180000 # 3 minute timeout
|
|
88
|
+
on: ["pr_opened"]
|
|
89
|
+
tags: ["build", "lint"]
|
|
90
|
+
|
|
91
|
+
# Example 5: Expert - Custom commands only (no defaults)
|
|
92
|
+
custom-commands-only:
|
|
93
|
+
type: ai
|
|
94
|
+
prompt: "Run custom analysis commands with strict control"
|
|
95
|
+
ai:
|
|
96
|
+
provider: anthropic
|
|
97
|
+
allowBash: true
|
|
98
|
+
bashConfig:
|
|
99
|
+
noDefaultAllow: true # Disable default safe commands
|
|
100
|
+
noDefaultDeny: false # Keep dangerous command blocklist
|
|
101
|
+
allow:
|
|
102
|
+
- 'custom-tool analyze'
|
|
103
|
+
- 'custom-tool report'
|
|
104
|
+
timeout: 30000
|
|
105
|
+
on: ["manual"]
|
|
106
|
+
tags: ["custom", "advanced"]
|
|
107
|
+
|
|
108
|
+
# Example 6: Simple - File system analysis with defaults
|
|
109
|
+
filesystem-analysis:
|
|
110
|
+
type: ai
|
|
111
|
+
prompt: |
|
|
112
|
+
Analyze the project file structure:
|
|
113
|
+
- List all source files
|
|
114
|
+
- Check file sizes
|
|
115
|
+
- Review directory structure
|
|
116
|
+
- Identify any organizational issues
|
|
117
|
+
ai:
|
|
118
|
+
provider: anthropic
|
|
119
|
+
allowBash: true # Uses default safe commands (ls, find, etc.)
|
|
120
|
+
on: ["pr_opened"]
|
|
121
|
+
tags: ["filesystem", "structure"]
|
|
122
|
+
|
|
123
|
+
output:
|
|
124
|
+
pr_comment:
|
|
125
|
+
enabled: true
|
|
126
|
+
group_by: check
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
# Example Visor configuration demonstrating MCP support in AI checks
|
|
2
|
+
version: "1.0"
|
|
3
|
+
|
|
4
|
+
# Global AI provider configuration
|
|
5
|
+
ai_provider: anthropic
|
|
6
|
+
ai_model: claude-3-sonnet
|
|
7
|
+
|
|
8
|
+
# Global MCP servers (available to all AI checks by default)
|
|
9
|
+
ai_mcp_servers:
|
|
10
|
+
probe:
|
|
11
|
+
command: "npx"
|
|
12
|
+
args: ["-y", "@probelabs/probe@latest", "mcp"]
|
|
13
|
+
filesystem:
|
|
14
|
+
command: "npx"
|
|
15
|
+
args: ["-y", "@modelcontextprotocol/server-filesystem", "/home/user/project"]
|
|
16
|
+
|
|
17
|
+
steps:
|
|
18
|
+
# Example 1: Uses global MCP servers (inherits probe and filesystem)
|
|
19
|
+
basic_security_review:
|
|
20
|
+
type: ai
|
|
21
|
+
prompt: |
|
|
22
|
+
Review the code changes for security vulnerabilities using available tools.
|
|
23
|
+
Focus on common security issues like injection attacks and XSS.
|
|
24
|
+
on: ["pr_opened", "pr_updated"]
|
|
25
|
+
tags: ["security", "basic"]
|
|
26
|
+
|
|
27
|
+
# Example 2: Check-level MCP servers (overrides global)
|
|
28
|
+
performance_review:
|
|
29
|
+
type: ai
|
|
30
|
+
prompt: |
|
|
31
|
+
Analyze the code for performance issues using specialized tools.
|
|
32
|
+
Look for inefficient algorithms and potential bottlenecks.
|
|
33
|
+
ai_mcp_servers:
|
|
34
|
+
probe:
|
|
35
|
+
command: "npx"
|
|
36
|
+
args: ["-y", "@probelabs/probe@latest", "mcp"]
|
|
37
|
+
custom_profiler:
|
|
38
|
+
command: "python3"
|
|
39
|
+
args: ["./tools/performance-analyzer.py"]
|
|
40
|
+
env:
|
|
41
|
+
ANALYSIS_DEPTH: "comprehensive"
|
|
42
|
+
on: ["pr_opened"]
|
|
43
|
+
tags: ["performance", "mcp"]
|
|
44
|
+
|
|
45
|
+
# Example 3: AI object-level MCP servers (overrides all others)
|
|
46
|
+
comprehensive_review:
|
|
47
|
+
type: ai
|
|
48
|
+
prompt: |
|
|
49
|
+
Perform comprehensive code analysis using all available tools.
|
|
50
|
+
This check uses its own specific set of MCP servers.
|
|
51
|
+
ai:
|
|
52
|
+
provider: anthropic
|
|
53
|
+
model: claude-3-opus # Override global model for this check
|
|
54
|
+
mcpServers:
|
|
55
|
+
probe:
|
|
56
|
+
command: "npx"
|
|
57
|
+
args: ["-y", "@probelabs/probe@latest", "mcp"]
|
|
58
|
+
env:
|
|
59
|
+
PROBE_DEBUG: "true"
|
|
60
|
+
filesystem:
|
|
61
|
+
command: "npx"
|
|
62
|
+
args: ["-y", "@modelcontextprotocol/server-filesystem", "/home/user/project"]
|
|
63
|
+
github:
|
|
64
|
+
command: "npx"
|
|
65
|
+
args: ["-y", "@modelcontextprotocol/server-github"]
|
|
66
|
+
env:
|
|
67
|
+
GITHUB_TOKEN: "${GITHUB_TOKEN}"
|
|
68
|
+
on: ["pr_opened"]
|
|
69
|
+
tags: ["comprehensive", "mcp"]
|
|
70
|
+
|
|
71
|
+
# Example 4: No MCP servers (basic AI check)
|
|
72
|
+
simple_ai_check:
|
|
73
|
+
type: ai
|
|
74
|
+
prompt: "Review this code for basic issues without using external tools"
|
|
75
|
+
ai_mcp_servers: {} # Explicitly disable global MCP servers for this check
|
|
76
|
+
on: ["pr_opened", "pr_updated"]
|
|
77
|
+
tags: ["basic", "simple"]
|
|
78
|
+
|
|
79
|
+
output:
|
|
80
|
+
pr_comment:
|
|
81
|
+
enabled: true
|
|
82
|
+
group_by: check
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
version: '1.0'
|
|
2
|
+
|
|
3
|
+
checks:
|
|
4
|
+
ask-user:
|
|
5
|
+
type: human-input
|
|
6
|
+
prompt: "What is your name?"
|
|
7
|
+
placeholder: "Enter your name..."
|
|
8
|
+
allow_empty: false
|
|
9
|
+
|
|
10
|
+
greet:
|
|
11
|
+
type: log
|
|
12
|
+
depends_on: [ask-user]
|
|
13
|
+
message: |
|
|
14
|
+
Hello, {{ outputs['ask-user'] }}!
|
|
15
|
+
Welcome to Visor.
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
# Example Visor configuration for AWS Bedrock
|
|
2
|
+
# This demonstrates various ways to configure and use AWS Bedrock as your AI provider
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
# Example GitHub Actions workflow to use this configuration:
|
|
6
|
+
#
|
|
7
|
+
# name: AI Code Review with AWS Bedrock
|
|
8
|
+
# on: [pull_request]
|
|
9
|
+
#
|
|
10
|
+
# jobs:
|
|
11
|
+
# review:
|
|
12
|
+
# runs-on: ubuntu-latest
|
|
13
|
+
# steps:
|
|
14
|
+
# - uses: actions/checkout@v4
|
|
15
|
+
# - uses: probelabs/visor@v1
|
|
16
|
+
# with:
|
|
17
|
+
# ai-provider: bedrock
|
|
18
|
+
# ai-model: anthropic.claude-sonnet-4-20250514-v1:0
|
|
19
|
+
# env:
|
|
20
|
+
# AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
|
|
21
|
+
# AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
|
|
22
|
+
# AWS_REGION: us-east-1
|
|
23
|
+
|
|
24
|
+
# As alternative to github action, you can also set it in config on various levels, or via following env vars:
|
|
25
|
+
#
|
|
26
|
+
# export AI_PROVIDER=bedrock # This gets mapped internally
|
|
27
|
+
# export AI_MODEL=anthropic.claude-sonnet-4-20250514-v1:0
|
|
28
|
+
|
|
29
|
+
# Configuration version
|
|
30
|
+
version: "1.0"
|
|
31
|
+
|
|
32
|
+
# Global AI provider settings, via config
|
|
33
|
+
# Set Bedrock as the default provider for all AI checks
|
|
34
|
+
ai_provider: bedrock
|
|
35
|
+
ai_model: anthropic.claude-sonnet-4-20250514-v1:0 # Default Bedrock model
|
|
36
|
+
|
|
37
|
+
steps:
|
|
38
|
+
# Basic check using global Bedrock settings
|
|
39
|
+
security-analysis:
|
|
40
|
+
type: ai
|
|
41
|
+
prompt: |
|
|
42
|
+
Analyze the code changes for security vulnerabilities including:
|
|
43
|
+
- SQL injection risks
|
|
44
|
+
- XSS vulnerabilities
|
|
45
|
+
- Authentication/authorization issues
|
|
46
|
+
- Sensitive data exposure
|
|
47
|
+
- Input validation problems
|
|
48
|
+
|
|
49
|
+
# Check with explicit Bedrock configuration
|
|
50
|
+
performance-review:
|
|
51
|
+
type: ai
|
|
52
|
+
ai_provider: bedrock
|
|
53
|
+
ai_model: anthropic.claude-3-opus-20240229 # Use a different Bedrock model
|
|
54
|
+
prompt: |
|
|
55
|
+
Review code for performance issues:
|
|
56
|
+
- Inefficient algorithms (O(n²) or worse)
|
|
57
|
+
- Memory leaks or excessive allocations
|
|
58
|
+
- Database query optimization opportunities
|
|
59
|
+
- Caching opportunities
|
|
60
|
+
schema: code-review # Use structured output
|
|
61
|
+
|
|
62
|
+
# Mixed provider example - use different providers for different checks
|
|
63
|
+
quick-style-check:
|
|
64
|
+
type: ai
|
|
65
|
+
ai_provider: google # Override to use Google Gemini for this check
|
|
66
|
+
ai_model: gemini-2.0-flash-exp
|
|
67
|
+
prompt: "Quick style and formatting check"
|
|
68
|
+
|
|
69
|
+
# Output configuration
|
|
70
|
+
output:
|
|
71
|
+
pr_comment:
|
|
72
|
+
format: markdown
|
|
73
|
+
group_by: check
|
|
74
|
+
collapse: true
|
|
75
|
+
github_checks:
|
|
76
|
+
enabled: true
|
|
77
|
+
per_check: true # Create separate GitHub check runs for each check
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
version: "1.0"
|
|
2
|
+
|
|
3
|
+
# Interactive Calculator Example
|
|
4
|
+
# Demonstrates human-input + memory + JavaScript workflow
|
|
5
|
+
#
|
|
6
|
+
# Usage:
|
|
7
|
+
# visor --config examples/calculator-config.yaml
|
|
8
|
+
#
|
|
9
|
+
# Or with inline messages:
|
|
10
|
+
# visor --config examples/calculator-config.yaml \
|
|
11
|
+
# --message 42 # First run asks for number1
|
|
12
|
+
#
|
|
13
|
+
# The workflow will:
|
|
14
|
+
# 1. Ask for first number
|
|
15
|
+
# 2. Store it in memory
|
|
16
|
+
# 3. Ask for second number
|
|
17
|
+
# 4. Store it in memory
|
|
18
|
+
# 5. Ask for operation (+, -, *, /)
|
|
19
|
+
# 6. Calculate result using JavaScript
|
|
20
|
+
# 7. Display formatted result
|
|
21
|
+
|
|
22
|
+
memory:
|
|
23
|
+
storage: memory
|
|
24
|
+
namespace: calculator
|
|
25
|
+
|
|
26
|
+
checks:
|
|
27
|
+
# Step 1: Get first number
|
|
28
|
+
get-number1:
|
|
29
|
+
type: human-input
|
|
30
|
+
prompt: "Enter the first number:"
|
|
31
|
+
placeholder: "e.g., 42"
|
|
32
|
+
allow_empty: false
|
|
33
|
+
|
|
34
|
+
# Step 2: Store first number in memory
|
|
35
|
+
store-number1:
|
|
36
|
+
type: memory
|
|
37
|
+
depends_on: [get-number1]
|
|
38
|
+
operation: set
|
|
39
|
+
namespace: calculator
|
|
40
|
+
key: number1
|
|
41
|
+
value_js: "parseFloat(outputs['get-number1'])"
|
|
42
|
+
|
|
43
|
+
# Step 3: Get second number
|
|
44
|
+
get-number2:
|
|
45
|
+
type: human-input
|
|
46
|
+
depends_on: [store-number1]
|
|
47
|
+
prompt: "Enter the second number:"
|
|
48
|
+
placeholder: "e.g., 7"
|
|
49
|
+
allow_empty: false
|
|
50
|
+
|
|
51
|
+
# Step 4: Store second number in memory
|
|
52
|
+
store-number2:
|
|
53
|
+
type: memory
|
|
54
|
+
depends_on: [get-number2]
|
|
55
|
+
operation: set
|
|
56
|
+
namespace: calculator
|
|
57
|
+
key: number2
|
|
58
|
+
value_js: "parseFloat(outputs['get-number2'])"
|
|
59
|
+
|
|
60
|
+
# Step 5: Get operation
|
|
61
|
+
get-operation:
|
|
62
|
+
type: human-input
|
|
63
|
+
depends_on: [store-number2]
|
|
64
|
+
prompt: "Select operation (+, -, *, /):"
|
|
65
|
+
placeholder: "Enter one of: + - * /"
|
|
66
|
+
allow_empty: false
|
|
67
|
+
|
|
68
|
+
# Step 6: Store operation in memory
|
|
69
|
+
store-operation:
|
|
70
|
+
type: memory
|
|
71
|
+
depends_on: [get-operation]
|
|
72
|
+
operation: set
|
|
73
|
+
namespace: calculator
|
|
74
|
+
key: operation
|
|
75
|
+
value_js: "outputs['get-operation'].trim()"
|
|
76
|
+
|
|
77
|
+
# Step 7: Perform calculation using memory and JavaScript
|
|
78
|
+
calculate:
|
|
79
|
+
type: script
|
|
80
|
+
depends_on: [store-operation]
|
|
81
|
+
content: |
|
|
82
|
+
// Get values from memory
|
|
83
|
+
const num1 = memory.get('number1', 'calculator');
|
|
84
|
+
const num2 = memory.get('number2', 'calculator');
|
|
85
|
+
const op = memory.get('operation', 'calculator');
|
|
86
|
+
|
|
87
|
+
// Log for debugging
|
|
88
|
+
log('Calculating:', num1, op, num2);
|
|
89
|
+
|
|
90
|
+
// Perform calculation
|
|
91
|
+
let result;
|
|
92
|
+
switch(op) {
|
|
93
|
+
case '+':
|
|
94
|
+
result = num1 + num2;
|
|
95
|
+
break;
|
|
96
|
+
case '-':
|
|
97
|
+
result = num1 - num2;
|
|
98
|
+
break;
|
|
99
|
+
case '*':
|
|
100
|
+
result = num1 * num2;
|
|
101
|
+
break;
|
|
102
|
+
case '/':
|
|
103
|
+
if (num2 === 0) {
|
|
104
|
+
throw new Error('Division by zero!');
|
|
105
|
+
}
|
|
106
|
+
result = num1 / num2;
|
|
107
|
+
break;
|
|
108
|
+
default:
|
|
109
|
+
throw new Error('Invalid operation: ' + op);
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
// Return result for output
|
|
113
|
+
return result;
|
|
114
|
+
|
|
115
|
+
# Step 8: Display the result
|
|
116
|
+
show-result:
|
|
117
|
+
type: log
|
|
118
|
+
depends_on: [calculate]
|
|
119
|
+
message: |
|
|
120
|
+
|
|
121
|
+
╔════════════════════════════════════════╗
|
|
122
|
+
║ CALCULATION RESULT ║
|
|
123
|
+
╠════════════════════════════════════════╣
|
|
124
|
+
║ ║
|
|
125
|
+
║ {{ outputs['get-number1'] }} {{ outputs['get-operation'] }} {{ outputs['get-number2'] }} = {{ outputs['calculate'] }}
|
|
126
|
+
║ ║
|
|
127
|
+
╚════════════════════════════════════════╝
|
|
128
|
+
|
|
129
|
+
output:
|
|
130
|
+
pr_comment:
|
|
131
|
+
format: markdown
|
|
132
|
+
group_by: check
|
|
133
|
+
collapse: false
|