@probelabs/visor 0.1.106 → 0.1.107
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 +65 -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 +620 -0
- package/defaults/visor.tests.yaml +674 -0
- package/defaults/visor.yaml +482 -0
- package/dist/663.index.js +2 -3
- package/dist/80.index.js +2 -3
- 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 +15 -0
- 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.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 +620 -0
- package/dist/defaults/visor.tests.yaml +674 -0
- package/dist/defaults/visor.yaml +482 -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 +178 -0
- package/dist/docs/ai-configuration.md +468 -0
- package/dist/docs/author-permissions.md +610 -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 +303 -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-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/limits.md +64 -0
- package/dist/docs/liquid-templates.md +347 -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/recipes.md +21 -0
- package/dist/docs/roadmap/criticality-implementation-tasks.md +92 -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 +57 -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-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/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/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/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/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 +1 -0
- package/dist/failure-condition-evaluator.d.ts.map +1 -1
- package/dist/frontends/github-frontend.d.ts +38 -0
- package/dist/frontends/github-frontend.d.ts.map +1 -0
- package/dist/frontends/host.d.ts +43 -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/generated/config-schema.d.ts +564 -22
- package/dist/generated/config-schema.d.ts.map +1 -1
- package/dist/generated/config-schema.json +612 -24
- 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 +0 -4
- package/dist/github-comments.d.ts.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +70335 -62514
- package/dist/liquid-extensions.d.ts.map +1 -1
- package/dist/logger.d.ts +1 -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-2025-11-21T11-50-46-505Z.ndjson +138 -0
- package/dist/output/traces/run-2025-11-21T11-51-33-674Z.ndjson +839 -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.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 +34 -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/github-ops-provider.d.ts.map +1 -1
- package/dist/providers/http-client-provider.d.ts +1 -4
- package/dist/providers/http-client-provider.d.ts.map +1 -1
- package/dist/providers/human-input-check-provider.d.ts +3 -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 +9 -3
- package/dist/providers/mcp-check-provider.d.ts.map +1 -1
- 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/chunk-37ZSCMFC.mjs +482 -0
- package/dist/sdk/chunk-37ZSCMFC.mjs.map +1 -0
- package/dist/sdk/chunk-6Y4YTKCF.mjs +197 -0
- package/dist/sdk/chunk-6Y4YTKCF.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-IEO6CFLG.mjs +1215 -0
- package/dist/sdk/chunk-IEO6CFLG.mjs.map +1 -0
- package/dist/sdk/chunk-JEHPDJIF.mjs +223 -0
- package/dist/sdk/chunk-JEHPDJIF.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-TUTOLSFV.mjs → chunk-OOZITMRU.mjs} +1 -1
- package/dist/sdk/chunk-OOZITMRU.mjs.map +1 -0
- package/dist/sdk/chunk-OWUVOILT.mjs +557 -0
- package/dist/sdk/chunk-OWUVOILT.mjs.map +1 -0
- package/dist/sdk/chunk-OZJ263FM.mjs +986 -0
- package/dist/sdk/chunk-OZJ263FM.mjs.map +1 -0
- package/dist/sdk/chunk-PTL3K3PN.mjs +3128 -0
- package/dist/sdk/chunk-PTL3K3PN.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-VMPLF6FT.mjs +127 -0
- package/dist/sdk/chunk-VMPLF6FT.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/config-M4ZNO6NU.mjs +14 -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-NBO5YRXW.mjs +16 -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-4AWRJT7D.mjs +1242 -0
- package/dist/sdk/github-frontend-4AWRJT7D.mjs.map +1 -0
- package/dist/sdk/host-7GBC3S7L.mjs +49 -0
- package/dist/sdk/host-7GBC3S7L.mjs.map +1 -0
- package/dist/sdk/{liquid-extensions-KVL4MKRH.mjs → liquid-extensions-C7EG3YKH.mjs} +7 -2
- package/dist/sdk/memory-store-GJACZC2A.mjs +11 -0
- package/dist/sdk/metrics-7PP3EJUH.mjs +29 -0
- package/dist/sdk/ndjson-sink-B4V4NTAQ.mjs +44 -0
- package/dist/sdk/ndjson-sink-B4V4NTAQ.mjs.map +1 -0
- package/dist/sdk/renderer-schema-6RF26VUS.mjs +50 -0
- package/dist/sdk/renderer-schema-6RF26VUS.mjs.map +1 -0
- package/dist/sdk/routing-RP56JTV2.mjs +23 -0
- package/dist/sdk/routing-RP56JTV2.mjs.map +1 -0
- package/dist/sdk/sdk.d.mts +326 -21
- package/dist/sdk/sdk.d.ts +326 -21
- package/dist/sdk/sdk.js +21403 -16366
- package/dist/sdk/sdk.js.map +1 -1
- package/dist/sdk/sdk.mjs +13510 -2096
- package/dist/sdk/sdk.mjs.map +1 -1
- package/dist/sdk/session-registry-N5FFYFTM.mjs +10 -0
- package/dist/sdk/session-registry-N5FFYFTM.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-WP4X46IF.mjs} +2 -2
- package/dist/sdk/tracer-init-WP4X46IF.mjs.map +1 -0
- package/dist/sdk/workflow-registry-2YIIXQCK.mjs +11 -0
- package/dist/sdk/workflow-registry-2YIIXQCK.mjs.map +1 -0
- package/dist/sdk.d.ts.map +1 -1
- 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 +9 -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/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 +73 -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 +147 -0
- package/dist/state-machine-execution-engine.d.ts.map +1 -0
- package/dist/telemetry/opentelemetry.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 +12 -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 +120 -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/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-2025-11-21T11-50-46-505Z.ndjson +138 -0
- package/dist/traces/run-2025-11-21T11-51-33-674Z.ndjson +839 -0
- package/dist/types/cli.d.ts +4 -1
- package/dist/types/cli.d.ts.map +1 -1
- package/dist/types/config.d.ts +278 -5
- package/dist/types/config.d.ts.map +1 -1
- package/dist/types/engine.d.ts +172 -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/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/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 +7 -0
- package/dist/utils/template-context.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 +10 -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 → config-M4ZNO6NU.mjs.map} +0 -0
- /package/dist/sdk/{check-execution-engine-6QJXYYON.mjs.map → config-merger-PX3WIT57.mjs.map} +0 -0
- /package/dist/sdk/{check-execution-engine-PJZ4ZOKG.mjs.map → failure-condition-evaluator-NBO5YRXW.mjs.map} +0 -0
- /package/dist/sdk/{config-merger-TWUBWFC2.mjs.map → liquid-extensions-C7EG3YKH.mjs.map} +0 -0
- /package/dist/sdk/{liquid-extensions-KVL4MKRH.mjs.map → memory-store-GJACZC2A.mjs.map} +0 -0
- /package/dist/sdk/{tracer-init-WC75N5NW.mjs.map → metrics-7PP3EJUH.mjs.map} +0 -0
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
## 🔐 Security Defaults
|
|
2
|
+
|
|
3
|
+
- Prefer GitHub App for bot identity and granular org/repo permissions.
|
|
4
|
+
- Lock remote extends with `--allowed-remote-patterns`; default is off.
|
|
5
|
+
- No external network calls unless configured (providers, HTTP checks, etc.).
|
|
6
|
+
- Document where tokens are used; rotate provider keys regularly.
|
|
7
|
+
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
## 🔇 Suppressing Warnings
|
|
2
|
+
|
|
3
|
+
Visor supports suppressing specific warnings or all warnings in a file using special comments in your code. This is useful for false positives or intentional code patterns that should not trigger warnings.
|
|
4
|
+
|
|
5
|
+
### Line-Level Suppression
|
|
6
|
+
|
|
7
|
+
Add `visor-disable` in a comment within ±2 lines of the issue to suppress it:
|
|
8
|
+
|
|
9
|
+
```javascript
|
|
10
|
+
// Example: Suppress a specific warning
|
|
11
|
+
function authenticate() {
|
|
12
|
+
const testPassword = "demo123"; // visor-disable
|
|
13
|
+
// This hardcoded password warning will be suppressed
|
|
14
|
+
}
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
The suppression works with any comment style:
|
|
18
|
+
- `// visor-disable` (JavaScript, TypeScript, C++, etc.)
|
|
19
|
+
- `# visor-disable` (Python, Ruby, Shell, etc.)
|
|
20
|
+
- `/* visor-disable */` (Multi-line comments)
|
|
21
|
+
- `<!-- visor-disable -->` (HTML, XML)
|
|
22
|
+
|
|
23
|
+
### File-Level Suppression
|
|
24
|
+
|
|
25
|
+
To suppress all warnings in an entire file, add `visor-disable-file` in the first 5 lines:
|
|
26
|
+
|
|
27
|
+
```javascript
|
|
28
|
+
// visor-disable-file
|
|
29
|
+
// All warnings in this file will be suppressed
|
|
30
|
+
|
|
31
|
+
function insecureCode() {
|
|
32
|
+
eval("user input"); // No warning
|
|
33
|
+
const password = "hardcoded"; // No warning
|
|
34
|
+
}
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
### Configuration
|
|
38
|
+
|
|
39
|
+
The suppression feature is enabled by default. You can disable it in your configuration:
|
|
40
|
+
|
|
41
|
+
```yaml
|
|
42
|
+
# .visor.yaml
|
|
43
|
+
version: "1.0"
|
|
44
|
+
output:
|
|
45
|
+
suppressionEnabled: false # Disable suppression comments
|
|
46
|
+
pr_comment:
|
|
47
|
+
format: markdown
|
|
48
|
+
group_by: check
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
### Important Notes
|
|
52
|
+
|
|
53
|
+
- Suppression comments are case-insensitive (`visor-disable`, `VISOR-DISABLE`, `Visor-Disable`)
|
|
54
|
+
- The comment just needs to contain the suppression keyword as a substring
|
|
55
|
+
- When issues are suppressed, Visor logs a summary showing which files had suppressed issues
|
|
56
|
+
- Use suppression judiciously - it's better to fix issues than suppress them
|
|
57
|
+
|
|
58
|
+
### Examples
|
|
59
|
+
|
|
60
|
+
```python
|
|
61
|
+
# Python example
|
|
62
|
+
def process_data():
|
|
63
|
+
api_key = "sk-12345" # visor-disable
|
|
64
|
+
return api_key
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
```typescript
|
|
68
|
+
// TypeScript example - suppress within range
|
|
69
|
+
function riskyOperation() {
|
|
70
|
+
// visor-disable
|
|
71
|
+
const unsafe = eval(userInput); // Suppressed (within 2 lines)
|
|
72
|
+
processData(unsafe); // Suppressed (within 2 lines)
|
|
73
|
+
|
|
74
|
+
doSomethingElse();
|
|
75
|
+
anotherOperation(); // NOT suppressed (> 2 lines away)
|
|
76
|
+
}
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
```go
|
|
80
|
+
// Go example - file-level suppression
|
|
81
|
+
// visor-disable-file
|
|
82
|
+
package main
|
|
83
|
+
|
|
84
|
+
func main() {
|
|
85
|
+
password := "hardcoded" // All issues suppressed
|
|
86
|
+
fmt.Println(password)
|
|
87
|
+
}
|
|
88
|
+
```
|
|
89
|
+
|
|
@@ -0,0 +1,258 @@
|
|
|
1
|
+
## 🏷️ Tag-Based Check Filtering
|
|
2
|
+
|
|
3
|
+
Visor supports tagging checks to create flexible execution profiles. This lets you run different sets of checks in different environments (e.g., lightweight checks locally, comprehensive checks in CI).
|
|
4
|
+
|
|
5
|
+
### How It Works
|
|
6
|
+
|
|
7
|
+
1. Tag your checks with descriptive labels
|
|
8
|
+
2. Filter execution using `--tags` and `--exclude-tags`
|
|
9
|
+
3. Dependencies adapt intelligently based on what’s included
|
|
10
|
+
|
|
11
|
+
Note on defaults
|
|
12
|
+
- If you do NOT provide any tag filter (no `--tags`/`--exclude-tags` and no `tag_filter` in config), Visor only runs untagged checks. Any check that has `tags: [...]` is skipped by default. This keeps day‑to‑day runs lightweight and makes tagged groups opt‑in.
|
|
13
|
+
- To run tagged checks, explicitly include their tags (for example, `--tags github,security`).
|
|
14
|
+
|
|
15
|
+
### Basic Configuration
|
|
16
|
+
|
|
17
|
+
```yaml
|
|
18
|
+
# .visor.yaml
|
|
19
|
+
version: "1.0"
|
|
20
|
+
|
|
21
|
+
steps:
|
|
22
|
+
# Fast, local security check
|
|
23
|
+
security-quick:
|
|
24
|
+
type: ai
|
|
25
|
+
prompt: "Quick security scan for common vulnerabilities"
|
|
26
|
+
tags: ["local", "fast", "security"]
|
|
27
|
+
on: [pr_opened, pr_updated]
|
|
28
|
+
|
|
29
|
+
# Comprehensive security analysis (for CI)
|
|
30
|
+
security-comprehensive:
|
|
31
|
+
type: ai
|
|
32
|
+
prompt: "Deep security analysis with full vulnerability scanning"
|
|
33
|
+
tags: ["remote", "comprehensive", "security", "slow"]
|
|
34
|
+
on: [pr_opened]
|
|
35
|
+
|
|
36
|
+
# Performance check that runs everywhere
|
|
37
|
+
performance:
|
|
38
|
+
type: ai
|
|
39
|
+
prompt: "Analyze performance issues"
|
|
40
|
+
tags: ["local", "remote", "performance", "fast"]
|
|
41
|
+
on: [pr_opened, pr_updated]
|
|
42
|
+
|
|
43
|
+
# Experimental new check
|
|
44
|
+
ai-architecture:
|
|
45
|
+
type: ai
|
|
46
|
+
prompt: "AI-powered architecture review"
|
|
47
|
+
tags: ["experimental", "architecture", "slow"]
|
|
48
|
+
on: [manual]
|
|
49
|
+
|
|
50
|
+
# Report that depends on security checks
|
|
51
|
+
security-report:
|
|
52
|
+
type: noop
|
|
53
|
+
tags: ["reporting", "local", "remote"]
|
|
54
|
+
depends_on: [security-quick, security-comprehensive]
|
|
55
|
+
on: [pr_opened, pr_updated]
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
### CLI Usage
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
# Run only fast, local checks (great for pre-commit hooks)
|
|
62
|
+
visor --tags local,fast
|
|
63
|
+
|
|
64
|
+
# Run comprehensive remote checks (for CI/CD)
|
|
65
|
+
visor --tags remote,comprehensive
|
|
66
|
+
|
|
67
|
+
# Run all security-related checks
|
|
68
|
+
visor --tags security
|
|
69
|
+
|
|
70
|
+
# Run everything except slow checks
|
|
71
|
+
visor --exclude-tags slow
|
|
72
|
+
|
|
73
|
+
# Run everything except experimental features
|
|
74
|
+
visor --exclude-tags experimental
|
|
75
|
+
|
|
76
|
+
# Combine filters: Run fast security checks only
|
|
77
|
+
visor --tags security,fast
|
|
78
|
+
|
|
79
|
+
# Run local checks but skip experimental ones
|
|
80
|
+
visor --tags local --exclude-tags experimental
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
### GitHub Action Usage
|
|
84
|
+
|
|
85
|
+
```yaml
|
|
86
|
+
name: Code Review with Tags
|
|
87
|
+
on: pull_request
|
|
88
|
+
|
|
89
|
+
jobs:
|
|
90
|
+
# Fast checks on every push
|
|
91
|
+
fast-review:
|
|
92
|
+
runs-on: ubuntu-latest
|
|
93
|
+
steps:
|
|
94
|
+
- uses: actions/checkout@v4
|
|
95
|
+
- uses: probelabs/visor@v1
|
|
96
|
+
with:
|
|
97
|
+
tags: "local,fast"
|
|
98
|
+
exclude-tags: "experimental"
|
|
99
|
+
env:
|
|
100
|
+
GOOGLE_API_KEY: ${{ secrets.GOOGLE_API_KEY }}
|
|
101
|
+
|
|
102
|
+
# Comprehensive checks only on main branch PRs
|
|
103
|
+
comprehensive-review:
|
|
104
|
+
if: github.base_ref == 'main'
|
|
105
|
+
runs-on: ubuntu-latest
|
|
106
|
+
steps:
|
|
107
|
+
- uses: actions/checkout@v4
|
|
108
|
+
- uses: probelabs/visor@v1
|
|
109
|
+
with:
|
|
110
|
+
tags: "remote,comprehensive"
|
|
111
|
+
env:
|
|
112
|
+
GOOGLE_API_KEY: ${{ secrets.GOOGLE_API_KEY }}
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
### Common Tag Patterns
|
|
116
|
+
|
|
117
|
+
| Tag | Purpose | Example Use |
|
|
118
|
+
|-----|---------|-------------|
|
|
119
|
+
| `local` | Checks suitable for local development | Pre-commit hooks, developer testing |
|
|
120
|
+
| `remote` | Checks designed for CI/CD environments | GitHub Actions, Jenkins |
|
|
121
|
+
| `fast` | Quick checks (< 30 seconds) | Rapid feedback loops |
|
|
122
|
+
| `slow` | Time-consuming checks | Nightly builds, release validation |
|
|
123
|
+
| `security` | Security-related checks | Security audits |
|
|
124
|
+
| `performance` | Performance analysis | Performance testing |
|
|
125
|
+
| `style` | Code style and formatting | Linting, formatting |
|
|
126
|
+
| `experimental` | Beta/testing features | Opt-in testing |
|
|
127
|
+
| `critical` | Must-pass checks | Release gates |
|
|
128
|
+
| `comprehensive` | Thorough analysis | Full PR reviews |
|
|
129
|
+
|
|
130
|
+
### Advanced Examples
|
|
131
|
+
|
|
132
|
+
#### Default behavior vs. explicit tags
|
|
133
|
+
|
|
134
|
+
By default (no tag filter provided), only untagged checks execute. To include tagged checks, specify them explicitly:
|
|
135
|
+
|
|
136
|
+
```bash
|
|
137
|
+
# Default (no flags): only untagged checks
|
|
138
|
+
visor
|
|
139
|
+
|
|
140
|
+
# Include github-tagged checks (e.g., GitHub operations)
|
|
141
|
+
visor --tags github
|
|
142
|
+
|
|
143
|
+
# Include multiple tag groups
|
|
144
|
+
visor --tags github,security
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
In the test runner, you can mirror this behavior with the tests DSL:
|
|
148
|
+
|
|
149
|
+
```yaml
|
|
150
|
+
# defaults/.visor.tests.yaml
|
|
151
|
+
tests:
|
|
152
|
+
defaults:
|
|
153
|
+
# Run GitHub-tagged checks during tests
|
|
154
|
+
tags: "github"
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
#### Environment-Specific Execution
|
|
158
|
+
|
|
159
|
+
```yaml
|
|
160
|
+
# Development environment - fast feedback
|
|
161
|
+
development:
|
|
162
|
+
extends: .visor.yaml
|
|
163
|
+
tag_filter:
|
|
164
|
+
include: ["local", "fast"]
|
|
165
|
+
exclude: ["experimental"]
|
|
166
|
+
|
|
167
|
+
# Staging environment - balanced
|
|
168
|
+
staging:
|
|
169
|
+
extends: .visor.yaml
|
|
170
|
+
tag_filter:
|
|
171
|
+
include: ["remote", "security", "performance"]
|
|
172
|
+
exclude: ["experimental"]
|
|
173
|
+
|
|
174
|
+
# Production environment - comprehensive
|
|
175
|
+
production:
|
|
176
|
+
extends: .visor.yaml
|
|
177
|
+
tag_filter:
|
|
178
|
+
include: ["remote", "comprehensive", "critical"]
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
#### Multi-Stage Pipeline
|
|
182
|
+
|
|
183
|
+
```yaml
|
|
184
|
+
# GitHub Actions workflow with progressive checks
|
|
185
|
+
name: Progressive Code Review
|
|
186
|
+
on: pull_request
|
|
187
|
+
|
|
188
|
+
jobs:
|
|
189
|
+
stage-1-fast:
|
|
190
|
+
runs-on: ubuntu-latest
|
|
191
|
+
steps:
|
|
192
|
+
- uses: actions/checkout@v4
|
|
193
|
+
- uses: probelabs/visor@v1
|
|
194
|
+
with:
|
|
195
|
+
tags: "fast,critical"
|
|
196
|
+
fail-fast: "true" # Stop if critical issues found
|
|
197
|
+
|
|
198
|
+
stage-2-security:
|
|
199
|
+
needs: stage-1-fast
|
|
200
|
+
runs-on: ubuntu-latest
|
|
201
|
+
steps:
|
|
202
|
+
- uses: actions/checkout@v4
|
|
203
|
+
- uses: probelabs/visor@v1
|
|
204
|
+
with:
|
|
205
|
+
tags: "security"
|
|
206
|
+
exclude-tags: "fast" # Run deeper security checks
|
|
207
|
+
|
|
208
|
+
stage-3-comprehensive:
|
|
209
|
+
needs: [stage-1-fast, stage-2-security]
|
|
210
|
+
runs-on: ubuntu-latest
|
|
211
|
+
steps:
|
|
212
|
+
- uses: actions/checkout@v4
|
|
213
|
+
- uses: probelabs/visor@v1
|
|
214
|
+
with:
|
|
215
|
+
tags: "comprehensive"
|
|
216
|
+
exclude-tags: "fast,security" # Run remaining checks
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
#### Dependency-Aware Filtering
|
|
220
|
+
|
|
221
|
+
When using tags with dependencies, Visor intelligently handles missing dependencies:
|
|
222
|
+
|
|
223
|
+
```yaml
|
|
224
|
+
steps:
|
|
225
|
+
data-validation:
|
|
226
|
+
type: ai
|
|
227
|
+
prompt: "Validate data structures"
|
|
228
|
+
tags: ["local", "data"]
|
|
229
|
+
|
|
230
|
+
api-validation:
|
|
231
|
+
type: ai
|
|
232
|
+
prompt: "Validate API contracts"
|
|
233
|
+
tags: ["remote", "api"]
|
|
234
|
+
|
|
235
|
+
integration-report:
|
|
236
|
+
type: noop
|
|
237
|
+
tags: ["reporting"]
|
|
238
|
+
depends_on: [data-validation, api-validation]
|
|
239
|
+
# When filtered by "local" tag, only uses data-validation
|
|
240
|
+
# When filtered by "remote" tag, only uses api-validation
|
|
241
|
+
# With no filter, uses both dependencies
|
|
242
|
+
```
|
|
243
|
+
|
|
244
|
+
### Tag Validation Rules
|
|
245
|
+
|
|
246
|
+
- Tags must start with an alphanumeric character
|
|
247
|
+
- Can contain letters, numbers, hyphens, and underscores
|
|
248
|
+
- Examples: `local`, `test-env`, `feature_flag`, `v2`
|
|
249
|
+
- Invalid: `-invalid`, `@special`, `tag with spaces`
|
|
250
|
+
|
|
251
|
+
### Best Practices
|
|
252
|
+
|
|
253
|
+
1. Use consistent naming conventions across your organization
|
|
254
|
+
2. Document your tag taxonomy in your team's wiki
|
|
255
|
+
3. Start simple: begin with `local`/`remote` or `fast`/`slow`
|
|
256
|
+
4. Avoid over-tagging to reduce confusion
|
|
257
|
+
5. Use tag combinations for fine-grained control
|
|
258
|
+
6. Test tag filters before deploying broadly
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
# Telemetry & Tracing — Setup Guide
|
|
2
|
+
|
|
3
|
+
This guide shows how to enable Visor telemetry and tracing with OpenTelemetry, export traces/metrics, auto‑instrument Node libraries, and generate a static HTML trace report.
|
|
4
|
+
|
|
5
|
+
## Quick Start (CLI)
|
|
6
|
+
|
|
7
|
+
- Enable telemetry to serverless NDJSON traces:
|
|
8
|
+
- `VISOR_TELEMETRY_ENABLED=true`
|
|
9
|
+
- `VISOR_TELEMETRY_SINK=file`
|
|
10
|
+
- (optional) `VISOR_TRACE_DIR=output/traces`
|
|
11
|
+
- Run:
|
|
12
|
+
- `visor --config ./.visor.yaml --output json`
|
|
13
|
+
- Inspect traces:
|
|
14
|
+
- `ls output/traces/*.ndjson`
|
|
15
|
+
|
|
16
|
+
## CLI Flags
|
|
17
|
+
|
|
18
|
+
- `--telemetry` — enable telemetry (overrides config)
|
|
19
|
+
- `--telemetry-sink <otlp|file|console>` — sink selection
|
|
20
|
+
- `--telemetry-endpoint <url>` — OTLP endpoint (HTTP) for traces/metrics
|
|
21
|
+
- `--trace-report` — write a static HTML trace report to output/traces
|
|
22
|
+
- `--auto-instrumentations` — enable OpenTelemetry auto‑instrumentations
|
|
23
|
+
|
|
24
|
+
Examples:
|
|
25
|
+
- `visor --config ./.visor.yaml --telemetry --telemetry-sink otlp --telemetry-endpoint https://otel.example.com`
|
|
26
|
+
- `visor --config ./.visor.yaml --telemetry --trace-report --auto-instrumentations`
|
|
27
|
+
|
|
28
|
+
## Config (visor.yaml)
|
|
29
|
+
|
|
30
|
+
```yaml
|
|
31
|
+
version: "1.0"
|
|
32
|
+
telemetry:
|
|
33
|
+
enabled: true
|
|
34
|
+
sink: file # otlp|file|console
|
|
35
|
+
otlp:
|
|
36
|
+
protocol: http
|
|
37
|
+
endpoint: ${OTEL_EXPORTER_OTLP_ENDPOINT}
|
|
38
|
+
headers: ${OTEL_EXPORTER_OTLP_HEADERS}
|
|
39
|
+
file:
|
|
40
|
+
dir: output/traces
|
|
41
|
+
ndjson: true
|
|
42
|
+
tracing:
|
|
43
|
+
auto_instrumentations: true
|
|
44
|
+
trace_report:
|
|
45
|
+
enabled: true
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
ENV overrides (highest precedence):
|
|
49
|
+
- `VISOR_TELEMETRY_ENABLED`, `VISOR_TELEMETRY_SINK`, `OTEL_EXPORTER_OTLP_ENDPOINT`, `OTEL_EXPORTER_OTLP_HEADERS`, `VISOR_TRACE_DIR`
|
|
50
|
+
- `VISOR_TELEMETRY_AUTO_INSTRUMENTATIONS=true`
|
|
51
|
+
- `VISOR_TRACE_REPORT=true`
|
|
52
|
+
|
|
53
|
+
## Serverless Mode (NDJSON)
|
|
54
|
+
|
|
55
|
+
- Visor writes NDJSON simplified spans to `output/traces/run-<id>-<ts>.ndjson`.
|
|
56
|
+
- Ingest with OTel Collector `filelog` receiver + transform to OTLP.
|
|
57
|
+
|
|
58
|
+
OTel Collector (example):
|
|
59
|
+
```yaml
|
|
60
|
+
receivers:
|
|
61
|
+
filelog:
|
|
62
|
+
include: [ "/work/output/traces/*.ndjson" ]
|
|
63
|
+
operators:
|
|
64
|
+
- type: json_parser
|
|
65
|
+
parse_from: body
|
|
66
|
+
exporters:
|
|
67
|
+
otlphttp:
|
|
68
|
+
endpoint: http://tempo:4318
|
|
69
|
+
service:
|
|
70
|
+
pipelines:
|
|
71
|
+
traces:
|
|
72
|
+
receivers: [filelog]
|
|
73
|
+
exporters: [otlphttp]
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
## Connected Mode (OTLP HTTP)
|
|
77
|
+
|
|
78
|
+
- Set `VISOR_TELEMETRY_SINK=otlp` and `OTEL_EXPORTER_OTLP_ENDPOINT=https://collector.example.com`.
|
|
79
|
+
- Metrics exporter is enabled automatically (optional dependency) — histograms/counters for checks, providers, foreach items, fail_if triggers, and diagram blocks.
|
|
80
|
+
|
|
81
|
+
## Auto‑Instrumentations
|
|
82
|
+
|
|
83
|
+
- Enable with `--auto-instrumentations` or `telemetry.tracing.auto_instrumentations: true`.
|
|
84
|
+
- Adds `@opentelemetry/auto-instrumentations-node` (http/undici/child_process/etc.) and correlates with Visor spans via context.
|
|
85
|
+
- Optional dependency; if not installed, Visor skips auto‑instrumentation gracefully.
|
|
86
|
+
|
|
87
|
+
## Static Trace Report
|
|
88
|
+
|
|
89
|
+
- Enable `--trace-report` or `telemetry.tracing.trace_report.enabled: true`.
|
|
90
|
+
- Outputs two files per run:
|
|
91
|
+
- `*.trace.json` — simplified span JSON
|
|
92
|
+
- `*.report.html` — self‑contained HTML timeline (open locally)
|
|
93
|
+
|
|
94
|
+
## Mermaid Telemetry
|
|
95
|
+
|
|
96
|
+
- Visor emits full `diagram.block` events with Mermaid code from outputs and issue messages.
|
|
97
|
+
- Metric: `visor.diagram.blocks{origin}` increments per diagram block.
|
|
98
|
+
|
|
99
|
+
## Security & Redaction
|
|
100
|
+
|
|
101
|
+
- Diagram events are sent verbatim by default (as requested). You can later opt‑in to redaction via `telemetry.redaction` (not enforced by default).
|
|
102
|
+
|
|
103
|
+
## GitHub Actions
|
|
104
|
+
|
|
105
|
+
- Visor wraps the Action run in a single root span (`visor.run`). Publish the `trace_id` in logs/checks for linking.
|
|
106
|
+
- Example step:
|
|
107
|
+
```yaml
|
|
108
|
+
- name: Visor
|
|
109
|
+
run: |
|
|
110
|
+
export VISOR_TELEMETRY_ENABLED=true
|
|
111
|
+
export VISOR_TELEMETRY_SINK=otlp
|
|
112
|
+
export OTEL_EXPORTER_OTLP_ENDPOINT=${{ secrets.OTEL_ENDPOINT }}
|
|
113
|
+
export OTEL_EXPORTER_OTLP_HEADERS="Authorization=Bearer ${{ secrets.OTEL_TOKEN }}"
|
|
114
|
+
npx -y @probelabs/visor@latest --config ./.visor.yaml --output json
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
Troubleshooting:
|
|
118
|
+
- No spans? Check `VISOR_TELEMETRY_ENABLED`, `VISOR_TELEMETRY_SINK`, and that optional deps resolved in the environment.
|
|
119
|
+
- Huge mermaid outputs? Consider adding a soft length cap in Visor or pre-truncating in templates.
|