@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.
Files changed (450) hide show
  1. package/README.md +65 -2
  2. package/action.yml +1 -1
  3. package/defaults/code-refiner.yaml +114 -0
  4. package/defaults/{.visor.yaml → code-review.yaml} +35 -226
  5. package/defaults/override.yaml +52 -0
  6. package/defaults/task-refinement.yaml +620 -0
  7. package/defaults/visor.tests.yaml +674 -0
  8. package/defaults/visor.yaml +482 -0
  9. package/dist/663.index.js +2 -3
  10. package/dist/80.index.js +2 -3
  11. package/dist/action-cli-bridge.d.ts +11 -82
  12. package/dist/action-cli-bridge.d.ts.map +1 -1
  13. package/dist/ai-review-service.d.ts +15 -0
  14. package/dist/ai-review-service.d.ts.map +1 -1
  15. package/dist/check-execution-engine.d.ts +19 -331
  16. package/dist/check-execution-engine.d.ts.map +1 -1
  17. package/dist/cli-main.d.ts.map +1 -1
  18. package/dist/cli.d.ts +0 -1
  19. package/dist/cli.d.ts.map +1 -1
  20. package/dist/config.d.ts +16 -0
  21. package/dist/config.d.ts.map +1 -1
  22. package/dist/cron-scheduler.d.ts +3 -3
  23. package/dist/cron-scheduler.d.ts.map +1 -1
  24. package/dist/debug-visualizer/ws-server.d.ts.map +1 -1
  25. package/dist/defaults/code-refiner.yaml +114 -0
  26. package/dist/defaults/{.visor.yaml → code-review.yaml} +35 -226
  27. package/dist/defaults/override.yaml +52 -0
  28. package/dist/defaults/task-refinement.yaml +620 -0
  29. package/dist/defaults/visor.tests.yaml +674 -0
  30. package/dist/defaults/visor.yaml +482 -0
  31. package/dist/docs/DEPLOYMENT.md +118 -0
  32. package/dist/docs/GITHUB_CHECKS.md +280 -0
  33. package/dist/docs/NPM_USAGE.md +208 -0
  34. package/dist/docs/action-reference.md +19 -0
  35. package/dist/docs/advanced-ai.md +178 -0
  36. package/dist/docs/ai-configuration.md +468 -0
  37. package/dist/docs/author-permissions.md +610 -0
  38. package/dist/docs/ci-cli-mode.md +34 -0
  39. package/dist/docs/claude-code.md +74 -0
  40. package/dist/docs/command-provider.md +559 -0
  41. package/dist/docs/commands.md +8 -0
  42. package/dist/docs/configuration.md +303 -0
  43. package/dist/docs/custom-tools.md +424 -0
  44. package/dist/docs/dashboards/README.md +23 -0
  45. package/dist/docs/dashboards/grafana-visor-diagrams.json +20 -0
  46. package/dist/docs/dashboards/grafana-visor-overview.json +33 -0
  47. package/dist/docs/debug-visualizer-progress.md +572 -0
  48. package/dist/docs/debug-visualizer-rfc.md +691 -0
  49. package/dist/docs/debug-visualizer.md +114 -0
  50. package/dist/docs/debugging.md +636 -0
  51. package/dist/docs/default-output-schema.md +28 -0
  52. package/dist/docs/dependencies.md +369 -0
  53. package/dist/docs/dev-playbook.md +9 -0
  54. package/dist/docs/engine-state-machine-plan.md +333 -0
  55. package/dist/docs/event-driven-github-integration-rfc.md +743 -0
  56. package/dist/docs/event-triggers.md +292 -0
  57. package/dist/docs/execution-statistics-rfc.md +290 -0
  58. package/dist/docs/fact-validator-gap-analysis.md +178 -0
  59. package/dist/docs/fact-validator-implementation-plan.md +1235 -0
  60. package/dist/docs/fail-if.md +95 -0
  61. package/dist/docs/failure-conditions-implementation.md +271 -0
  62. package/dist/docs/failure-conditions-schema.md +173 -0
  63. package/dist/docs/failure-routing-rfc.md +193 -0
  64. package/dist/docs/failure-routing.md +507 -0
  65. package/dist/docs/foreach-dependency-propagation.md +473 -0
  66. package/dist/docs/github-ops.md +89 -0
  67. package/dist/docs/goto-forward-run-plan.md +113 -0
  68. package/dist/docs/guides/criticality-modes.md +332 -0
  69. package/dist/docs/guides/fault-management-and-contracts.md +738 -0
  70. package/dist/docs/guides/workflow-style-guide.md +224 -0
  71. package/dist/docs/http.md +299 -0
  72. package/dist/docs/human-input-provider.md +372 -0
  73. package/dist/docs/limits.md +64 -0
  74. package/dist/docs/liquid-templates.md +347 -0
  75. package/dist/docs/loop-routing-refactor.md +89 -0
  76. package/dist/docs/mcp-provider.md +557 -0
  77. package/dist/docs/mcp.md +124 -0
  78. package/dist/docs/memory.md +903 -0
  79. package/dist/docs/observability.md +12 -0
  80. package/dist/docs/output-formats.md +20 -0
  81. package/dist/docs/output-formatting.md +29 -0
  82. package/dist/docs/output-history.md +383 -0
  83. package/dist/docs/performance.md +6 -0
  84. package/dist/docs/pluggable.md +124 -0
  85. package/dist/docs/proposals/snapshot-scope-execution.md +236 -0
  86. package/dist/docs/recipes.md +21 -0
  87. package/dist/docs/roadmap/criticality-implementation-tasks.md +92 -0
  88. package/dist/docs/schema-next-pr.md +10 -0
  89. package/dist/docs/schema-templates.md +68 -0
  90. package/dist/docs/script.md +34 -0
  91. package/dist/docs/sdk.md +222 -0
  92. package/dist/docs/security.md +7 -0
  93. package/dist/docs/suppressions.md +89 -0
  94. package/dist/docs/tag-filtering.md +258 -0
  95. package/dist/docs/telemetry-setup.md +119 -0
  96. package/dist/docs/telemetry-tracing-rfc.md +275 -0
  97. package/dist/docs/test-framework-rfc.md +680 -0
  98. package/dist/docs/testing/assertions.md +85 -0
  99. package/dist/docs/testing/ci.md +44 -0
  100. package/dist/docs/testing/cli.md +41 -0
  101. package/dist/docs/testing/cookbook.md +172 -0
  102. package/dist/docs/testing/dsl-reference.md +199 -0
  103. package/dist/docs/testing/fixtures-and-mocks.md +91 -0
  104. package/dist/docs/testing/flows.md +92 -0
  105. package/dist/docs/testing/getting-started.md +93 -0
  106. package/dist/docs/testing/troubleshooting.md +55 -0
  107. package/dist/docs/timeouts.md +50 -0
  108. package/dist/docs/troubleshooting.md +7 -0
  109. package/dist/docs/visor-sdk-rfc.md +186 -0
  110. package/dist/docs/workflows.md +569 -0
  111. package/dist/engine/on-finish/orchestrator.d.ts +19 -0
  112. package/dist/engine/on-finish/orchestrator.d.ts.map +1 -0
  113. package/dist/engine/on-finish/utils.d.ts +44 -0
  114. package/dist/engine/on-finish/utils.d.ts.map +1 -0
  115. package/dist/event-bus/event-bus.d.ts +13 -0
  116. package/dist/event-bus/event-bus.d.ts.map +1 -0
  117. package/dist/event-bus/types.d.ts +57 -0
  118. package/dist/event-bus/types.d.ts.map +1 -0
  119. package/dist/examples/.claude/agents/code-reviewer.md +69 -0
  120. package/dist/examples/.mcp.json +34 -0
  121. package/dist/examples/CALCULATOR-SDK.md +364 -0
  122. package/dist/examples/README.md +384 -0
  123. package/dist/examples/ai-retry-fallback-config.yaml +180 -0
  124. package/dist/examples/ai-with-bash.yaml +126 -0
  125. package/dist/examples/ai-with-mcp.yaml +82 -0
  126. package/dist/examples/basic-human-input.yaml +15 -0
  127. package/dist/examples/bedrock-config.yaml +77 -0
  128. package/dist/examples/calculator-config.yaml +133 -0
  129. package/dist/examples/calculator-json-output-guide.md +311 -0
  130. package/dist/examples/calculator-sdk-automated.ts +340 -0
  131. package/dist/examples/calculator-sdk-example.ts +275 -0
  132. package/dist/examples/calculator-sdk-json.ts +331 -0
  133. package/dist/examples/calculator-sdk-real.ts +374 -0
  134. package/dist/examples/calculator-sdk-test.ts +148 -0
  135. package/dist/examples/claude-code-config.yaml +191 -0
  136. package/dist/examples/cron-webhook-config.yaml +215 -0
  137. package/dist/examples/custom-template.liquid +57 -0
  138. package/dist/examples/custom-tools-example.yaml +281 -0
  139. package/dist/examples/enhanced-config.yaml +165 -0
  140. package/dist/examples/environments/visor.base.yaml +92 -0
  141. package/dist/examples/environments/visor.dev.yaml +33 -0
  142. package/dist/examples/environments/visor.prod.yaml +95 -0
  143. package/dist/examples/environments/visor.staging.yaml +46 -0
  144. package/dist/examples/fact-validator.yaml +361 -0
  145. package/dist/examples/fail-if-simple.yaml +90 -0
  146. package/dist/examples/failure-conditions-advanced.yaml +136 -0
  147. package/dist/examples/failure-conditions-basic.yaml +48 -0
  148. package/dist/examples/failure-conditions-github-style.yaml +119 -0
  149. package/dist/examples/failure-conditions-migration.yaml +74 -0
  150. package/dist/examples/for-loop-example.yaml +176 -0
  151. package/dist/examples/forEach-example.yaml +120 -0
  152. package/dist/examples/github-workflow-with-tags.yml +163 -0
  153. package/dist/examples/http-integration-config.yaml +240 -0
  154. package/dist/examples/https-server-config.yaml +209 -0
  155. package/dist/examples/human-input-example.yaml +63 -0
  156. package/dist/examples/if-conditions.yaml +173 -0
  157. package/dist/examples/jira-simple-example.yaml +56 -0
  158. package/dist/examples/jira-single-issue-workflow.yaml +166 -0
  159. package/dist/examples/jira-workflow-mcp.yaml +182 -0
  160. package/dist/examples/mcp/analyzer.py +119 -0
  161. package/dist/examples/mcp-provider-example.yaml +301 -0
  162. package/dist/examples/memory-counter.yaml +99 -0
  163. package/dist/examples/memory-error-collection.yaml +104 -0
  164. package/dist/examples/memory-exec-js.yaml +247 -0
  165. package/dist/examples/memory-namespace-isolation.yaml +184 -0
  166. package/dist/examples/memory-retry-counter.yaml +65 -0
  167. package/dist/examples/memory-state-machine.yaml +170 -0
  168. package/dist/examples/outputs-raw-basic.yaml +26 -0
  169. package/dist/examples/project-with-tools.yaml +174 -0
  170. package/dist/examples/prompts/architecture-analysis.liquid +116 -0
  171. package/dist/examples/prompts/security-comprehensive.liquid +107 -0
  172. package/dist/examples/quick-start-tags.yaml +53 -0
  173. package/dist/examples/routing-basic.yaml +35 -0
  174. package/dist/examples/routing-dynamic-js.yaml +46 -0
  175. package/dist/examples/routing-foreach.yaml +34 -0
  176. package/dist/examples/routing-goto-event.yaml +34 -0
  177. package/dist/examples/routing-on-success.yaml +25 -0
  178. package/dist/examples/run-calculator-demo.sh +71 -0
  179. package/dist/examples/sdk-basic.mjs +10 -0
  180. package/dist/examples/sdk-cjs.cjs +10 -0
  181. package/dist/examples/sdk-comprehensive.mjs +175 -0
  182. package/dist/examples/sdk-manual-config.mjs +65 -0
  183. package/dist/examples/sdk-typescript.js +81 -0
  184. package/dist/examples/sdk-typescript.ts +92 -0
  185. package/dist/examples/session-reuse-config.yaml +151 -0
  186. package/dist/examples/templates/security-report.liquid +137 -0
  187. package/dist/examples/tools-library.yaml +281 -0
  188. package/dist/examples/transform-example.yaml +199 -0
  189. package/dist/examples/visor-with-tags.yaml +198 -0
  190. package/dist/examples/webhook-pipeline-config.yaml +218 -0
  191. package/dist/examples/workflows/calculator-workflow.yaml +163 -0
  192. package/dist/examples/workflows/code-quality.yaml +222 -0
  193. package/dist/examples/workflows/quick-pr-check.yaml +90 -0
  194. package/dist/examples/workflows/workflow-composition-example.yaml +130 -0
  195. package/dist/failure-condition-evaluator.d.ts +1 -0
  196. package/dist/failure-condition-evaluator.d.ts.map +1 -1
  197. package/dist/frontends/github-frontend.d.ts +38 -0
  198. package/dist/frontends/github-frontend.d.ts.map +1 -0
  199. package/dist/frontends/host.d.ts +43 -0
  200. package/dist/frontends/host.d.ts.map +1 -0
  201. package/dist/frontends/ndjson-sink.d.ts +12 -0
  202. package/dist/frontends/ndjson-sink.d.ts.map +1 -0
  203. package/dist/generated/config-schema.d.ts +564 -22
  204. package/dist/generated/config-schema.d.ts.map +1 -1
  205. package/dist/generated/config-schema.json +612 -24
  206. package/dist/github-check-service.d.ts +4 -6
  207. package/dist/github-check-service.d.ts.map +1 -1
  208. package/dist/github-comments.d.ts +0 -4
  209. package/dist/github-comments.d.ts.map +1 -1
  210. package/dist/index.d.ts.map +1 -1
  211. package/dist/index.js +70335 -62514
  212. package/dist/liquid-extensions.d.ts.map +1 -1
  213. package/dist/logger.d.ts +1 -0
  214. package/dist/logger.d.ts.map +1 -1
  215. package/dist/memory-store.d.ts +6 -0
  216. package/dist/memory-store.d.ts.map +1 -1
  217. package/dist/output/assistant-json/template.liquid +0 -0
  218. package/dist/output/traces/run-2025-11-21T11-50-46-505Z.ndjson +138 -0
  219. package/dist/output/traces/run-2025-11-21T11-51-33-674Z.ndjson +839 -0
  220. package/dist/output-formatters.d.ts +1 -1
  221. package/dist/output-formatters.d.ts.map +1 -1
  222. package/dist/providers/ai-check-provider.d.ts.map +1 -1
  223. package/dist/providers/check-provider-registry.d.ts +6 -0
  224. package/dist/providers/check-provider-registry.d.ts.map +1 -1
  225. package/dist/providers/check-provider.interface.d.ts +34 -1
  226. package/dist/providers/check-provider.interface.d.ts.map +1 -1
  227. package/dist/providers/claude-code-check-provider.d.ts.map +1 -1
  228. package/dist/providers/command-check-provider.d.ts +1 -1
  229. package/dist/providers/command-check-provider.d.ts.map +1 -1
  230. package/dist/providers/custom-tool-executor.d.ts +61 -0
  231. package/dist/providers/custom-tool-executor.d.ts.map +1 -0
  232. package/dist/providers/github-ops-provider.d.ts.map +1 -1
  233. package/dist/providers/http-client-provider.d.ts +1 -4
  234. package/dist/providers/http-client-provider.d.ts.map +1 -1
  235. package/dist/providers/human-input-check-provider.d.ts +3 -0
  236. package/dist/providers/human-input-check-provider.d.ts.map +1 -1
  237. package/dist/providers/index.d.ts +1 -0
  238. package/dist/providers/index.d.ts.map +1 -1
  239. package/dist/providers/log-check-provider.d.ts +2 -5
  240. package/dist/providers/log-check-provider.d.ts.map +1 -1
  241. package/dist/providers/mcp-check-provider.d.ts +9 -3
  242. package/dist/providers/mcp-check-provider.d.ts.map +1 -1
  243. package/dist/providers/memory-check-provider.d.ts +2 -8
  244. package/dist/providers/memory-check-provider.d.ts.map +1 -1
  245. package/dist/providers/script-check-provider.d.ts +25 -0
  246. package/dist/providers/script-check-provider.d.ts.map +1 -0
  247. package/dist/providers/workflow-check-provider.d.ts +56 -0
  248. package/dist/providers/workflow-check-provider.d.ts.map +1 -0
  249. package/dist/reviewer.d.ts +2 -1
  250. package/dist/reviewer.d.ts.map +1 -1
  251. package/dist/sdk/chunk-37ZSCMFC.mjs +482 -0
  252. package/dist/sdk/chunk-37ZSCMFC.mjs.map +1 -0
  253. package/dist/sdk/chunk-6Y4YTKCF.mjs +197 -0
  254. package/dist/sdk/chunk-6Y4YTKCF.mjs.map +1 -0
  255. package/dist/sdk/chunk-CNX7V5JK.mjs +89 -0
  256. package/dist/sdk/chunk-CNX7V5JK.mjs.map +1 -0
  257. package/dist/sdk/chunk-IEO6CFLG.mjs +1215 -0
  258. package/dist/sdk/chunk-IEO6CFLG.mjs.map +1 -0
  259. package/dist/sdk/chunk-JEHPDJIF.mjs +223 -0
  260. package/dist/sdk/chunk-JEHPDJIF.mjs.map +1 -0
  261. package/dist/sdk/chunk-O5EZDNYL.mjs +274 -0
  262. package/dist/sdk/chunk-O5EZDNYL.mjs.map +1 -0
  263. package/dist/sdk/{chunk-TUTOLSFV.mjs → chunk-OOZITMRU.mjs} +1 -1
  264. package/dist/sdk/chunk-OOZITMRU.mjs.map +1 -0
  265. package/dist/sdk/chunk-OWUVOILT.mjs +557 -0
  266. package/dist/sdk/chunk-OWUVOILT.mjs.map +1 -0
  267. package/dist/sdk/chunk-OZJ263FM.mjs +986 -0
  268. package/dist/sdk/chunk-OZJ263FM.mjs.map +1 -0
  269. package/dist/sdk/chunk-PTL3K3PN.mjs +3128 -0
  270. package/dist/sdk/chunk-PTL3K3PN.mjs.map +1 -0
  271. package/dist/sdk/chunk-S2RUE2RG.mjs +145 -0
  272. package/dist/sdk/chunk-S2RUE2RG.mjs.map +1 -0
  273. package/dist/sdk/chunk-VMPLF6FT.mjs +127 -0
  274. package/dist/sdk/chunk-VMPLF6FT.mjs.map +1 -0
  275. package/dist/sdk/chunk-YSN4G6CI.mjs +146 -0
  276. package/dist/sdk/chunk-YSN4G6CI.mjs.map +1 -0
  277. package/dist/sdk/chunk-ZYAUYXSW.mjs +206 -0
  278. package/dist/sdk/chunk-ZYAUYXSW.mjs.map +1 -0
  279. package/dist/sdk/config-M4ZNO6NU.mjs +14 -0
  280. package/dist/sdk/config-merger-PX3WIT57.mjs +10 -0
  281. package/dist/sdk/event-bus-5BEVPQ6T.mjs +35 -0
  282. package/dist/sdk/event-bus-5BEVPQ6T.mjs.map +1 -0
  283. package/dist/sdk/failure-condition-evaluator-NBO5YRXW.mjs +16 -0
  284. package/dist/sdk/git-repository-analyzer-HJC4MYW4.mjs +458 -0
  285. package/dist/sdk/git-repository-analyzer-HJC4MYW4.mjs.map +1 -0
  286. package/dist/sdk/github-frontend-4AWRJT7D.mjs +1242 -0
  287. package/dist/sdk/github-frontend-4AWRJT7D.mjs.map +1 -0
  288. package/dist/sdk/host-7GBC3S7L.mjs +49 -0
  289. package/dist/sdk/host-7GBC3S7L.mjs.map +1 -0
  290. package/dist/sdk/{liquid-extensions-KVL4MKRH.mjs → liquid-extensions-C7EG3YKH.mjs} +7 -2
  291. package/dist/sdk/memory-store-GJACZC2A.mjs +11 -0
  292. package/dist/sdk/metrics-7PP3EJUH.mjs +29 -0
  293. package/dist/sdk/ndjson-sink-B4V4NTAQ.mjs +44 -0
  294. package/dist/sdk/ndjson-sink-B4V4NTAQ.mjs.map +1 -0
  295. package/dist/sdk/renderer-schema-6RF26VUS.mjs +50 -0
  296. package/dist/sdk/renderer-schema-6RF26VUS.mjs.map +1 -0
  297. package/dist/sdk/routing-RP56JTV2.mjs +23 -0
  298. package/dist/sdk/routing-RP56JTV2.mjs.map +1 -0
  299. package/dist/sdk/sdk.d.mts +326 -21
  300. package/dist/sdk/sdk.d.ts +326 -21
  301. package/dist/sdk/sdk.js +21403 -16366
  302. package/dist/sdk/sdk.js.map +1 -1
  303. package/dist/sdk/sdk.mjs +13510 -2096
  304. package/dist/sdk/sdk.mjs.map +1 -1
  305. package/dist/sdk/session-registry-N5FFYFTM.mjs +10 -0
  306. package/dist/sdk/session-registry-N5FFYFTM.mjs.map +1 -0
  307. package/dist/sdk/trace-helpers-VP6QYVBX.mjs +23 -0
  308. package/dist/sdk/trace-helpers-VP6QYVBX.mjs.map +1 -0
  309. package/dist/sdk/{tracer-init-WC75N5NW.mjs → tracer-init-WP4X46IF.mjs} +2 -2
  310. package/dist/sdk/tracer-init-WP4X46IF.mjs.map +1 -0
  311. package/dist/sdk/workflow-registry-2YIIXQCK.mjs +11 -0
  312. package/dist/sdk/workflow-registry-2YIIXQCK.mjs.map +1 -0
  313. package/dist/sdk.d.ts.map +1 -1
  314. package/dist/snapshot-store.d.ts +59 -0
  315. package/dist/snapshot-store.d.ts.map +1 -0
  316. package/dist/state-machine/context/build-engine-context.d.ts +9 -0
  317. package/dist/state-machine/context/build-engine-context.d.ts.map +1 -0
  318. package/dist/state-machine/dispatch/dependency-gating.d.ts +12 -0
  319. package/dist/state-machine/dispatch/dependency-gating.d.ts.map +1 -0
  320. package/dist/state-machine/dispatch/execution-invoker.d.ts +14 -0
  321. package/dist/state-machine/dispatch/execution-invoker.d.ts.map +1 -0
  322. package/dist/state-machine/dispatch/foreach-processor.d.ts +8 -0
  323. package/dist/state-machine/dispatch/foreach-processor.d.ts.map +1 -0
  324. package/dist/state-machine/dispatch/history-snapshot.d.ts +8 -0
  325. package/dist/state-machine/dispatch/history-snapshot.d.ts.map +1 -0
  326. package/dist/state-machine/dispatch/renderer-schema.d.ts +8 -0
  327. package/dist/state-machine/dispatch/renderer-schema.d.ts.map +1 -0
  328. package/dist/state-machine/dispatch/stats-manager.d.ts +15 -0
  329. package/dist/state-machine/dispatch/stats-manager.d.ts.map +1 -0
  330. package/dist/state-machine/dispatch/template-renderer.d.ts +7 -0
  331. package/dist/state-machine/dispatch/template-renderer.d.ts.map +1 -0
  332. package/dist/state-machine/execution/summary.d.ts +8 -0
  333. package/dist/state-machine/execution/summary.d.ts.map +1 -0
  334. package/dist/state-machine/runner.d.ts +73 -0
  335. package/dist/state-machine/runner.d.ts.map +1 -0
  336. package/dist/state-machine/states/check-running.d.ts +14 -0
  337. package/dist/state-machine/states/check-running.d.ts.map +1 -0
  338. package/dist/state-machine/states/completed.d.ts +12 -0
  339. package/dist/state-machine/states/completed.d.ts.map +1 -0
  340. package/dist/state-machine/states/error.d.ts +11 -0
  341. package/dist/state-machine/states/error.d.ts.map +1 -0
  342. package/dist/state-machine/states/init.d.ts +11 -0
  343. package/dist/state-machine/states/init.d.ts.map +1 -0
  344. package/dist/state-machine/states/level-dispatch.d.ts +17 -0
  345. package/dist/state-machine/states/level-dispatch.d.ts.map +1 -0
  346. package/dist/state-machine/states/plan-ready.d.ts +12 -0
  347. package/dist/state-machine/states/plan-ready.d.ts.map +1 -0
  348. package/dist/state-machine/states/routing.d.ts +52 -0
  349. package/dist/state-machine/states/routing.d.ts.map +1 -0
  350. package/dist/state-machine/states/wave-planning.d.ts +14 -0
  351. package/dist/state-machine/states/wave-planning.d.ts.map +1 -0
  352. package/dist/state-machine/workflow-projection.d.ts +47 -0
  353. package/dist/state-machine/workflow-projection.d.ts.map +1 -0
  354. package/dist/state-machine-execution-engine.d.ts +147 -0
  355. package/dist/state-machine-execution-engine.d.ts.map +1 -0
  356. package/dist/telemetry/opentelemetry.d.ts.map +1 -1
  357. package/dist/test-runner/assertions.d.ts +59 -0
  358. package/dist/test-runner/assertions.d.ts.map +1 -0
  359. package/dist/test-runner/core/environment.d.ts +8 -0
  360. package/dist/test-runner/core/environment.d.ts.map +1 -0
  361. package/dist/test-runner/core/fixture.d.ts +3 -0
  362. package/dist/test-runner/core/fixture.d.ts.map +1 -0
  363. package/dist/test-runner/core/flow-stage.d.ts +32 -0
  364. package/dist/test-runner/core/flow-stage.d.ts.map +1 -0
  365. package/dist/test-runner/core/mocks.d.ts +8 -0
  366. package/dist/test-runner/core/mocks.d.ts.map +1 -0
  367. package/dist/test-runner/core/test-execution-wrapper.d.ts +18 -0
  368. package/dist/test-runner/core/test-execution-wrapper.d.ts.map +1 -0
  369. package/dist/test-runner/evaluators.d.ts +12 -0
  370. package/dist/test-runner/evaluators.d.ts.map +1 -0
  371. package/dist/test-runner/fixture-loader.d.ts +30 -0
  372. package/dist/test-runner/fixture-loader.d.ts.map +1 -0
  373. package/dist/test-runner/index.d.ts +120 -0
  374. package/dist/test-runner/index.d.ts.map +1 -0
  375. package/dist/test-runner/recorders/github-recorder.d.ts +23 -0
  376. package/dist/test-runner/recorders/github-recorder.d.ts.map +1 -0
  377. package/dist/test-runner/recorders/global-recorder.d.ts +4 -0
  378. package/dist/test-runner/recorders/global-recorder.d.ts.map +1 -0
  379. package/dist/test-runner/utils/selectors.d.ts +2 -0
  380. package/dist/test-runner/utils/selectors.d.ts.map +1 -0
  381. package/dist/test-runner/validator.d.ts +8 -0
  382. package/dist/test-runner/validator.d.ts.map +1 -0
  383. package/dist/traces/run-2025-11-21T11-50-46-505Z.ndjson +138 -0
  384. package/dist/traces/run-2025-11-21T11-51-33-674Z.ndjson +839 -0
  385. package/dist/types/cli.d.ts +4 -1
  386. package/dist/types/cli.d.ts.map +1 -1
  387. package/dist/types/config.d.ts +278 -5
  388. package/dist/types/config.d.ts.map +1 -1
  389. package/dist/types/engine.d.ts +172 -0
  390. package/dist/types/engine.d.ts.map +1 -0
  391. package/dist/types/execution.d.ts +73 -0
  392. package/dist/types/execution.d.ts.map +1 -0
  393. package/dist/types/github.d.ts +51 -0
  394. package/dist/types/github.d.ts.map +1 -0
  395. package/dist/types/workflow.d.ts +237 -0
  396. package/dist/types/workflow.d.ts.map +1 -0
  397. package/dist/utils/command-executor.d.ts +43 -0
  398. package/dist/utils/command-executor.d.ts.map +1 -0
  399. package/dist/utils/comment-metadata.d.ts +21 -0
  400. package/dist/utils/comment-metadata.d.ts.map +1 -0
  401. package/dist/utils/config-loader.d.ts.map +1 -1
  402. package/dist/utils/config-merger.d.ts.map +1 -1
  403. package/dist/utils/env-exposure.d.ts +3 -0
  404. package/dist/utils/env-exposure.d.ts.map +1 -0
  405. package/dist/utils/file-exclusion.d.ts.map +1 -1
  406. package/dist/utils/interactive-prompt.d.ts +1 -1
  407. package/dist/utils/interactive-prompt.d.ts.map +1 -1
  408. package/dist/utils/sandbox.d.ts.map +1 -1
  409. package/dist/utils/script-memory-ops.d.ts +21 -0
  410. package/dist/utils/script-memory-ops.d.ts.map +1 -0
  411. package/dist/utils/template-context.d.ts +7 -0
  412. package/dist/utils/template-context.d.ts.map +1 -0
  413. package/dist/webhook-server.d.ts +3 -3
  414. package/dist/webhook-server.d.ts.map +1 -1
  415. package/dist/workflow-executor.d.ts +81 -0
  416. package/dist/workflow-executor.d.ts.map +1 -0
  417. package/dist/workflow-registry.d.ts +79 -0
  418. package/dist/workflow-registry.d.ts.map +1 -0
  419. package/package.json +10 -5
  420. package/dist/output/traces/run-2025-10-22T18-22-56-873Z.ndjson +0 -218
  421. package/dist/sdk/check-execution-engine-2YYKUUSH.mjs +0 -11
  422. package/dist/sdk/check-execution-engine-6QJXYYON.mjs +0 -11
  423. package/dist/sdk/check-execution-engine-PJZ4ZOKG.mjs +0 -11
  424. package/dist/sdk/chunk-33QVZ2D4.mjs +0 -316
  425. package/dist/sdk/chunk-33QVZ2D4.mjs.map +0 -1
  426. package/dist/sdk/chunk-B5QBV2QJ.mjs +0 -752
  427. package/dist/sdk/chunk-B5QBV2QJ.mjs.map +0 -1
  428. package/dist/sdk/chunk-BVFNRCHT.mjs +0 -14129
  429. package/dist/sdk/chunk-BVFNRCHT.mjs.map +0 -1
  430. package/dist/sdk/chunk-KWZW23FG.mjs +0 -14129
  431. package/dist/sdk/chunk-KWZW23FG.mjs.map +0 -1
  432. package/dist/sdk/chunk-O4RP4BRH.mjs +0 -14092
  433. package/dist/sdk/chunk-O4RP4BRH.mjs.map +0 -1
  434. package/dist/sdk/chunk-TUTOLSFV.mjs.map +0 -1
  435. package/dist/sdk/chunk-U5D2LY66.mjs +0 -245
  436. package/dist/sdk/chunk-U5D2LY66.mjs.map +0 -1
  437. package/dist/sdk/chunk-U7X54EMV.mjs +0 -331
  438. package/dist/sdk/chunk-U7X54EMV.mjs.map +0 -1
  439. package/dist/sdk/config-merger-TWUBWFC2.mjs +0 -8
  440. package/dist/sdk/mermaid-telemetry-SN6A2TKW.mjs +0 -61
  441. package/dist/sdk/mermaid-telemetry-SN6A2TKW.mjs.map +0 -1
  442. package/dist/sdk/mermaid-telemetry-YCTIG76M.mjs +0 -61
  443. package/dist/sdk/mermaid-telemetry-YCTIG76M.mjs.map +0 -1
  444. package/dist/traces/run-2025-10-22T18-22-56-873Z.ndjson +0 -218
  445. /package/dist/sdk/{check-execution-engine-2YYKUUSH.mjs.map → config-M4ZNO6NU.mjs.map} +0 -0
  446. /package/dist/sdk/{check-execution-engine-6QJXYYON.mjs.map → config-merger-PX3WIT57.mjs.map} +0 -0
  447. /package/dist/sdk/{check-execution-engine-PJZ4ZOKG.mjs.map → failure-condition-evaluator-NBO5YRXW.mjs.map} +0 -0
  448. /package/dist/sdk/{config-merger-TWUBWFC2.mjs.map → liquid-extensions-C7EG3YKH.mjs.map} +0 -0
  449. /package/dist/sdk/{liquid-extensions-KVL4MKRH.mjs.map → memory-store-GJACZC2A.mjs.map} +0 -0
  450. /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.