@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.
Files changed (530) hide show
  1. package/README.md +71 -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 +624 -0
  7. package/defaults/visor.tests.yaml +685 -0
  8. package/defaults/visor.yaml +483 -0
  9. package/dist/action-cli-bridge.d.ts +11 -82
  10. package/dist/action-cli-bridge.d.ts.map +1 -1
  11. package/dist/ai-review-service.d.ts +28 -9
  12. package/dist/ai-review-service.d.ts.map +1 -1
  13. package/dist/check-execution-engine.d.ts +19 -331
  14. package/dist/check-execution-engine.d.ts.map +1 -1
  15. package/dist/cli-main.d.ts.map +1 -1
  16. package/dist/cli.d.ts +0 -1
  17. package/dist/cli.d.ts.map +1 -1
  18. package/dist/config.d.ts +16 -0
  19. package/dist/config.d.ts.map +1 -1
  20. package/dist/cron-scheduler.d.ts +3 -3
  21. package/dist/cron-scheduler.d.ts.map +1 -1
  22. package/dist/debug-visualizer/ws-server.d.ts +7 -1
  23. package/dist/debug-visualizer/ws-server.d.ts.map +1 -1
  24. package/dist/defaults/code-refiner.yaml +114 -0
  25. package/dist/defaults/{.visor.yaml → code-review.yaml} +35 -226
  26. package/dist/defaults/override.yaml +52 -0
  27. package/dist/defaults/task-refinement.yaml +624 -0
  28. package/dist/defaults/visor.tests.yaml +685 -0
  29. package/dist/defaults/visor.yaml +483 -0
  30. package/dist/docs/DEPLOYMENT.md +118 -0
  31. package/dist/docs/GITHUB_CHECKS.md +280 -0
  32. package/dist/docs/NPM_USAGE.md +208 -0
  33. package/dist/docs/action-reference.md +19 -0
  34. package/dist/docs/advanced-ai.md +237 -0
  35. package/dist/docs/ai-configuration.md +535 -0
  36. package/dist/docs/ai-custom-tools-usage.md +261 -0
  37. package/dist/docs/ai-custom-tools.md +392 -0
  38. package/dist/docs/author-permissions.md +610 -0
  39. package/dist/docs/bot-transports-rfc.md +23 -0
  40. package/dist/docs/ci-cli-mode.md +34 -0
  41. package/dist/docs/claude-code.md +74 -0
  42. package/dist/docs/command-provider.md +559 -0
  43. package/dist/docs/commands.md +8 -0
  44. package/dist/docs/configuration.md +324 -0
  45. package/dist/docs/custom-tools.md +424 -0
  46. package/dist/docs/dashboards/README.md +23 -0
  47. package/dist/docs/dashboards/grafana-visor-diagrams.json +20 -0
  48. package/dist/docs/dashboards/grafana-visor-overview.json +33 -0
  49. package/dist/docs/debug-visualizer-progress.md +572 -0
  50. package/dist/docs/debug-visualizer-rfc.md +691 -0
  51. package/dist/docs/debug-visualizer.md +114 -0
  52. package/dist/docs/debugging.md +636 -0
  53. package/dist/docs/default-output-schema.md +28 -0
  54. package/dist/docs/dependencies.md +369 -0
  55. package/dist/docs/dev-playbook.md +9 -0
  56. package/dist/docs/engine-pause-resume-rfc.md +192 -0
  57. package/dist/docs/engine-state-machine-plan.md +333 -0
  58. package/dist/docs/event-driven-github-integration-rfc.md +743 -0
  59. package/dist/docs/event-triggers.md +292 -0
  60. package/dist/docs/execution-statistics-rfc.md +290 -0
  61. package/dist/docs/fact-validator-gap-analysis.md +178 -0
  62. package/dist/docs/fact-validator-implementation-plan.md +1235 -0
  63. package/dist/docs/fail-if.md +95 -0
  64. package/dist/docs/failure-conditions-implementation.md +271 -0
  65. package/dist/docs/failure-conditions-schema.md +173 -0
  66. package/dist/docs/failure-routing-rfc.md +193 -0
  67. package/dist/docs/failure-routing.md +507 -0
  68. package/dist/docs/foreach-dependency-propagation.md +473 -0
  69. package/dist/docs/github-ops.md +89 -0
  70. package/dist/docs/goto-forward-run-plan.md +113 -0
  71. package/dist/docs/guides/criticality-modes.md +332 -0
  72. package/dist/docs/guides/fault-management-and-contracts.md +738 -0
  73. package/dist/docs/guides/workflow-style-guide.md +224 -0
  74. package/dist/docs/http.md +299 -0
  75. package/dist/docs/human-input-provider.md +372 -0
  76. package/dist/docs/lifecycle-hooks.md +253 -0
  77. package/dist/docs/limits.md +64 -0
  78. package/dist/docs/liquid-templates.md +490 -0
  79. package/dist/docs/loop-routing-refactor.md +89 -0
  80. package/dist/docs/mcp-provider.md +557 -0
  81. package/dist/docs/mcp.md +124 -0
  82. package/dist/docs/memory.md +903 -0
  83. package/dist/docs/observability.md +12 -0
  84. package/dist/docs/output-formats.md +20 -0
  85. package/dist/docs/output-formatting.md +29 -0
  86. package/dist/docs/output-history.md +383 -0
  87. package/dist/docs/performance.md +6 -0
  88. package/dist/docs/pluggable.md +124 -0
  89. package/dist/docs/proposals/snapshot-scope-execution.md +236 -0
  90. package/dist/docs/providers/git-checkout.md +589 -0
  91. package/dist/docs/recipes.md +474 -0
  92. package/dist/docs/rfc/git-checkout-step.md +601 -0
  93. package/dist/docs/rfc/on_init-hook.md +1294 -0
  94. package/dist/docs/rfc/workspace-isolation.md +216 -0
  95. package/dist/docs/roadmap/criticality-implementation-tasks.md +92 -0
  96. package/dist/docs/router-patterns.md +339 -0
  97. package/dist/docs/schema-next-pr.md +10 -0
  98. package/dist/docs/schema-templates.md +68 -0
  99. package/dist/docs/script.md +34 -0
  100. package/dist/docs/sdk.md +222 -0
  101. package/dist/docs/security.md +7 -0
  102. package/dist/docs/suppressions.md +89 -0
  103. package/dist/docs/tag-filtering.md +258 -0
  104. package/dist/docs/telemetry-setup.md +119 -0
  105. package/dist/docs/telemetry-tracing-rfc.md +275 -0
  106. package/dist/docs/test-framework-rfc.md +680 -0
  107. package/dist/docs/testing/assertions.md +85 -0
  108. package/dist/docs/testing/ci.md +44 -0
  109. package/dist/docs/testing/cli.md +41 -0
  110. package/dist/docs/testing/cookbook.md +172 -0
  111. package/dist/docs/testing/dsl-reference.md +199 -0
  112. package/dist/docs/testing/fixtures-and-mocks.md +91 -0
  113. package/dist/docs/testing/flows.md +92 -0
  114. package/dist/docs/testing/getting-started.md +93 -0
  115. package/dist/docs/testing/troubleshooting.md +55 -0
  116. package/dist/docs/timeouts.md +50 -0
  117. package/dist/docs/troubleshooting.md +7 -0
  118. package/dist/docs/visor-sdk-rfc.md +186 -0
  119. package/dist/docs/workflows.md +569 -0
  120. package/dist/engine/on-finish/orchestrator.d.ts +19 -0
  121. package/dist/engine/on-finish/orchestrator.d.ts.map +1 -0
  122. package/dist/engine/on-finish/utils.d.ts +44 -0
  123. package/dist/engine/on-finish/utils.d.ts.map +1 -0
  124. package/dist/event-bus/event-bus.d.ts +13 -0
  125. package/dist/event-bus/event-bus.d.ts.map +1 -0
  126. package/dist/event-bus/types.d.ts +71 -0
  127. package/dist/event-bus/types.d.ts.map +1 -0
  128. package/dist/examples/.claude/agents/code-reviewer.md +69 -0
  129. package/dist/examples/.mcp.json +34 -0
  130. package/dist/examples/CALCULATOR-SDK.md +364 -0
  131. package/dist/examples/README.md +384 -0
  132. package/dist/examples/ai-custom-tools-example.yaml +206 -0
  133. package/dist/examples/ai-custom-tools-simple.yaml +76 -0
  134. package/dist/examples/ai-retry-fallback-config.yaml +180 -0
  135. package/dist/examples/ai-with-bash.yaml +126 -0
  136. package/dist/examples/ai-with-mcp.yaml +82 -0
  137. package/dist/examples/basic-human-input.yaml +15 -0
  138. package/dist/examples/bedrock-config.yaml +77 -0
  139. package/dist/examples/calculator-config.yaml +133 -0
  140. package/dist/examples/calculator-json-output-guide.md +311 -0
  141. package/dist/examples/calculator-sdk-automated.ts +340 -0
  142. package/dist/examples/calculator-sdk-example.ts +275 -0
  143. package/dist/examples/calculator-sdk-json.ts +331 -0
  144. package/dist/examples/calculator-sdk-real.ts +374 -0
  145. package/dist/examples/calculator-sdk-test.ts +148 -0
  146. package/dist/examples/claude-code-config.yaml +191 -0
  147. package/dist/examples/cron-webhook-config.yaml +215 -0
  148. package/dist/examples/custom-template.liquid +57 -0
  149. package/dist/examples/custom-tools-example.yaml +281 -0
  150. package/dist/examples/enhanced-config.yaml +165 -0
  151. package/dist/examples/environments/visor.base.yaml +92 -0
  152. package/dist/examples/environments/visor.dev.yaml +33 -0
  153. package/dist/examples/environments/visor.prod.yaml +95 -0
  154. package/dist/examples/environments/visor.staging.yaml +46 -0
  155. package/dist/examples/fact-validator.yaml +361 -0
  156. package/dist/examples/fail-if-simple.yaml +90 -0
  157. package/dist/examples/failure-conditions-advanced.yaml +136 -0
  158. package/dist/examples/failure-conditions-basic.yaml +48 -0
  159. package/dist/examples/failure-conditions-github-style.yaml +119 -0
  160. package/dist/examples/failure-conditions-migration.yaml +74 -0
  161. package/dist/examples/for-loop-example.yaml +176 -0
  162. package/dist/examples/forEach-example.yaml +120 -0
  163. package/dist/examples/git-checkout-basic.yaml +32 -0
  164. package/dist/examples/git-checkout-compare.yaml +59 -0
  165. package/dist/examples/git-checkout-cross-repo.yaml +76 -0
  166. package/dist/examples/github-workflow-with-tags.yml +163 -0
  167. package/dist/examples/http-integration-config.yaml +240 -0
  168. package/dist/examples/https-server-config.yaml +209 -0
  169. package/dist/examples/human-input-example.yaml +63 -0
  170. package/dist/examples/if-conditions.yaml +173 -0
  171. package/dist/examples/jira-simple-example.yaml +56 -0
  172. package/dist/examples/jira-single-issue-workflow.yaml +166 -0
  173. package/dist/examples/jira-workflow-mcp.yaml +182 -0
  174. package/dist/examples/mcp/analyzer.py +119 -0
  175. package/dist/examples/mcp-provider-example.yaml +301 -0
  176. package/dist/examples/memory-counter.yaml +99 -0
  177. package/dist/examples/memory-error-collection.yaml +104 -0
  178. package/dist/examples/memory-exec-js.yaml +247 -0
  179. package/dist/examples/memory-namespace-isolation.yaml +184 -0
  180. package/dist/examples/memory-retry-counter.yaml +65 -0
  181. package/dist/examples/memory-state-machine.yaml +170 -0
  182. package/dist/examples/on-init-import-demo.yaml +179 -0
  183. package/dist/examples/outputs-raw-basic.yaml +26 -0
  184. package/dist/examples/project-with-tools.yaml +174 -0
  185. package/dist/examples/prompts/architecture-analysis.liquid +116 -0
  186. package/dist/examples/prompts/security-comprehensive.liquid +107 -0
  187. package/dist/examples/quick-start-tags.yaml +53 -0
  188. package/dist/examples/reusable-tools.yaml +92 -0
  189. package/dist/examples/reusable-workflows.yaml +88 -0
  190. package/dist/examples/routing-basic.yaml +35 -0
  191. package/dist/examples/routing-dynamic-js.yaml +46 -0
  192. package/dist/examples/routing-foreach.yaml +34 -0
  193. package/dist/examples/routing-goto-event.yaml +34 -0
  194. package/dist/examples/routing-on-success.yaml +25 -0
  195. package/dist/examples/run-calculator-demo.sh +71 -0
  196. package/dist/examples/sdk-basic.mjs +10 -0
  197. package/dist/examples/sdk-cjs.cjs +10 -0
  198. package/dist/examples/sdk-comprehensive.mjs +175 -0
  199. package/dist/examples/sdk-manual-config.mjs +65 -0
  200. package/dist/examples/sdk-typescript.js +81 -0
  201. package/dist/examples/sdk-typescript.ts +92 -0
  202. package/dist/examples/session-reuse-config.yaml +151 -0
  203. package/dist/examples/session-reuse-self.yaml +81 -0
  204. package/dist/examples/slack-simple-chat.yaml +775 -0
  205. package/dist/examples/templates/security-report.liquid +137 -0
  206. package/dist/examples/tools-library.yaml +281 -0
  207. package/dist/examples/transform-example.yaml +199 -0
  208. package/dist/examples/visor-with-tags.yaml +198 -0
  209. package/dist/examples/webhook-pipeline-config.yaml +218 -0
  210. package/dist/examples/workflows/calculator-workflow.yaml +163 -0
  211. package/dist/examples/workflows/code-quality.yaml +222 -0
  212. package/dist/examples/workflows/quick-pr-check.yaml +90 -0
  213. package/dist/examples/workflows/workflow-composition-example.yaml +130 -0
  214. package/dist/failure-condition-evaluator.d.ts +3 -0
  215. package/dist/failure-condition-evaluator.d.ts.map +1 -1
  216. package/dist/frontends/github-frontend.d.ts +58 -0
  217. package/dist/frontends/github-frontend.d.ts.map +1 -0
  218. package/dist/frontends/host.d.ts +47 -0
  219. package/dist/frontends/host.d.ts.map +1 -0
  220. package/dist/frontends/ndjson-sink.d.ts +12 -0
  221. package/dist/frontends/ndjson-sink.d.ts.map +1 -0
  222. package/dist/frontends/slack-frontend.d.ts +58 -0
  223. package/dist/frontends/slack-frontend.d.ts.map +1 -0
  224. package/dist/generated/config-schema.d.ts +967 -57
  225. package/dist/generated/config-schema.d.ts.map +1 -1
  226. package/dist/generated/config-schema.json +1033 -56
  227. package/dist/github-check-service.d.ts +4 -6
  228. package/dist/github-check-service.d.ts.map +1 -1
  229. package/dist/github-comments.d.ts +2 -4
  230. package/dist/github-comments.d.ts.map +1 -1
  231. package/dist/index.d.ts.map +1 -1
  232. package/dist/index.js +134327 -99004
  233. package/dist/liquid-extensions.d.ts.map +1 -1
  234. package/dist/logger.d.ts +2 -0
  235. package/dist/logger.d.ts.map +1 -1
  236. package/dist/memory-store.d.ts +6 -0
  237. package/dist/memory-store.d.ts.map +1 -1
  238. package/dist/output/assistant-json/template.liquid +0 -0
  239. package/dist/output/traces/run-2026-01-20T19-22-58-043Z.ndjson +138 -0
  240. package/dist/output/traces/run-2026-01-20T19-23-52-175Z.ndjson +1067 -0
  241. package/dist/output-formatters.d.ts +1 -1
  242. package/dist/output-formatters.d.ts.map +1 -1
  243. package/dist/providers/ai-check-provider.d.ts +12 -0
  244. package/dist/providers/ai-check-provider.d.ts.map +1 -1
  245. package/dist/providers/check-provider-registry.d.ts +6 -0
  246. package/dist/providers/check-provider-registry.d.ts.map +1 -1
  247. package/dist/providers/check-provider.interface.d.ts +43 -1
  248. package/dist/providers/check-provider.interface.d.ts.map +1 -1
  249. package/dist/providers/claude-code-check-provider.d.ts.map +1 -1
  250. package/dist/providers/command-check-provider.d.ts +1 -1
  251. package/dist/providers/command-check-provider.d.ts.map +1 -1
  252. package/dist/providers/custom-tool-executor.d.ts +61 -0
  253. package/dist/providers/custom-tool-executor.d.ts.map +1 -0
  254. package/dist/providers/git-checkout-provider.d.ts +25 -0
  255. package/dist/providers/git-checkout-provider.d.ts.map +1 -0
  256. package/dist/providers/github-ops-provider.d.ts.map +1 -1
  257. package/dist/providers/http-client-provider.d.ts +4 -4
  258. package/dist/providers/http-client-provider.d.ts.map +1 -1
  259. package/dist/providers/human-input-check-provider.d.ts +5 -0
  260. package/dist/providers/human-input-check-provider.d.ts.map +1 -1
  261. package/dist/providers/index.d.ts +1 -0
  262. package/dist/providers/index.d.ts.map +1 -1
  263. package/dist/providers/log-check-provider.d.ts +2 -5
  264. package/dist/providers/log-check-provider.d.ts.map +1 -1
  265. package/dist/providers/mcp-check-provider.d.ts +10 -4
  266. package/dist/providers/mcp-check-provider.d.ts.map +1 -1
  267. package/dist/providers/mcp-custom-sse-server.d.ts +66 -0
  268. package/dist/providers/mcp-custom-sse-server.d.ts.map +1 -0
  269. package/dist/providers/memory-check-provider.d.ts +2 -8
  270. package/dist/providers/memory-check-provider.d.ts.map +1 -1
  271. package/dist/providers/script-check-provider.d.ts +25 -0
  272. package/dist/providers/script-check-provider.d.ts.map +1 -0
  273. package/dist/providers/workflow-check-provider.d.ts +56 -0
  274. package/dist/providers/workflow-check-provider.d.ts.map +1 -0
  275. package/dist/reviewer.d.ts +2 -1
  276. package/dist/reviewer.d.ts.map +1 -1
  277. package/dist/sdk/check-provider-registry-534KL5HT.mjs +27 -0
  278. package/dist/sdk/chunk-23L3QRYX.mjs +16872 -0
  279. package/dist/sdk/chunk-23L3QRYX.mjs.map +1 -0
  280. package/dist/sdk/{chunk-TUTOLSFV.mjs → chunk-3OMWVM6J.mjs} +11 -1
  281. package/dist/sdk/chunk-3OMWVM6J.mjs.map +1 -0
  282. package/dist/sdk/chunk-7UK3NIIT.mjs +482 -0
  283. package/dist/sdk/chunk-7UK3NIIT.mjs.map +1 -0
  284. package/dist/sdk/chunk-AGIZJ4UZ.mjs +173 -0
  285. package/dist/sdk/chunk-AGIZJ4UZ.mjs.map +1 -0
  286. package/dist/sdk/chunk-AIVFBIS4.mjs +1371 -0
  287. package/dist/sdk/chunk-AIVFBIS4.mjs.map +1 -0
  288. package/dist/sdk/chunk-AK6BVWIT.mjs +426 -0
  289. package/dist/sdk/chunk-AK6BVWIT.mjs.map +1 -0
  290. package/dist/sdk/chunk-AUT26LHW.mjs +139 -0
  291. package/dist/sdk/chunk-AUT26LHW.mjs.map +1 -0
  292. package/dist/sdk/chunk-BOVFH3LI.mjs +232 -0
  293. package/dist/sdk/chunk-BOVFH3LI.mjs.map +1 -0
  294. package/dist/sdk/chunk-CNX7V5JK.mjs +89 -0
  295. package/dist/sdk/chunk-CNX7V5JK.mjs.map +1 -0
  296. package/dist/sdk/chunk-HTOKWMPO.mjs +157 -0
  297. package/dist/sdk/chunk-HTOKWMPO.mjs.map +1 -0
  298. package/dist/sdk/chunk-NAW3DB3I.mjs +197 -0
  299. package/dist/sdk/chunk-NAW3DB3I.mjs.map +1 -0
  300. package/dist/sdk/chunk-O5EZDNYL.mjs +274 -0
  301. package/dist/sdk/chunk-O5EZDNYL.mjs.map +1 -0
  302. package/dist/sdk/chunk-QR7MOMJH.mjs +558 -0
  303. package/dist/sdk/chunk-QR7MOMJH.mjs.map +1 -0
  304. package/dist/sdk/chunk-QY2XYPEV.mjs +3556 -0
  305. package/dist/sdk/chunk-QY2XYPEV.mjs.map +1 -0
  306. package/dist/sdk/chunk-S2RUE2RG.mjs +145 -0
  307. package/dist/sdk/chunk-S2RUE2RG.mjs.map +1 -0
  308. package/dist/sdk/chunk-SIWNBRTK.mjs +800 -0
  309. package/dist/sdk/chunk-SIWNBRTK.mjs.map +1 -0
  310. package/dist/sdk/chunk-YSN4G6CI.mjs +146 -0
  311. package/dist/sdk/chunk-YSN4G6CI.mjs.map +1 -0
  312. package/dist/sdk/chunk-ZYAUYXSW.mjs +206 -0
  313. package/dist/sdk/chunk-ZYAUYXSW.mjs.map +1 -0
  314. package/dist/sdk/command-executor-TYUV6HUS.mjs +14 -0
  315. package/dist/sdk/config-YNC2EOOT.mjs +16 -0
  316. package/dist/sdk/config-merger-PX3WIT57.mjs +10 -0
  317. package/dist/sdk/event-bus-5BEVPQ6T.mjs +35 -0
  318. package/dist/sdk/event-bus-5BEVPQ6T.mjs.map +1 -0
  319. package/dist/sdk/failure-condition-evaluator-YGTF2GHG.mjs +17 -0
  320. package/dist/sdk/git-repository-analyzer-HJC4MYW4.mjs +458 -0
  321. package/dist/sdk/git-repository-analyzer-HJC4MYW4.mjs.map +1 -0
  322. package/dist/sdk/github-frontend-SIAEOCON.mjs +1420 -0
  323. package/dist/sdk/github-frontend-SIAEOCON.mjs.map +1 -0
  324. package/dist/sdk/host-DXUYTNMU.mjs +52 -0
  325. package/dist/sdk/host-DXUYTNMU.mjs.map +1 -0
  326. package/dist/sdk/{liquid-extensions-KVL4MKRH.mjs → liquid-extensions-PKWCKK7E.mjs} +8 -2
  327. package/dist/sdk/memory-store-XGBB7LX7.mjs +12 -0
  328. package/dist/sdk/memory-store-XGBB7LX7.mjs.map +1 -0
  329. package/dist/sdk/metrics-7PP3EJUH.mjs +29 -0
  330. package/dist/sdk/metrics-7PP3EJUH.mjs.map +1 -0
  331. package/dist/sdk/ndjson-sink-B4V4NTAQ.mjs +44 -0
  332. package/dist/sdk/ndjson-sink-B4V4NTAQ.mjs.map +1 -0
  333. package/dist/sdk/prompt-state-YRJY6QAL.mjs +16 -0
  334. package/dist/sdk/prompt-state-YRJY6QAL.mjs.map +1 -0
  335. package/dist/sdk/renderer-schema-LPKN5UJS.mjs +51 -0
  336. package/dist/sdk/renderer-schema-LPKN5UJS.mjs.map +1 -0
  337. package/dist/sdk/routing-6N45MJ4F.mjs +24 -0
  338. package/dist/sdk/routing-6N45MJ4F.mjs.map +1 -0
  339. package/dist/sdk/sdk.d.mts +541 -22
  340. package/dist/sdk/sdk.d.ts +541 -22
  341. package/dist/sdk/sdk.js +27963 -16505
  342. package/dist/sdk/sdk.js.map +1 -1
  343. package/dist/sdk/sdk.mjs +1116 -2169
  344. package/dist/sdk/sdk.mjs.map +1 -1
  345. package/dist/sdk/session-registry-4E6YRQ77.mjs +10 -0
  346. package/dist/sdk/session-registry-4E6YRQ77.mjs.map +1 -0
  347. package/dist/sdk/slack-frontend-BVKW3GD5.mjs +735 -0
  348. package/dist/sdk/slack-frontend-BVKW3GD5.mjs.map +1 -0
  349. package/dist/sdk/trace-helpers-VP6QYVBX.mjs +23 -0
  350. package/dist/sdk/trace-helpers-VP6QYVBX.mjs.map +1 -0
  351. package/dist/sdk/{tracer-init-WC75N5NW.mjs → tracer-init-GSLPPLCD.mjs} +2 -2
  352. package/dist/sdk/tracer-init-GSLPPLCD.mjs.map +1 -0
  353. package/dist/sdk/workflow-registry-R6KSACFR.mjs +12 -0
  354. package/dist/sdk/workflow-registry-R6KSACFR.mjs.map +1 -0
  355. package/dist/sdk.d.ts.map +1 -1
  356. package/dist/slack/adapter.d.ts +36 -0
  357. package/dist/slack/adapter.d.ts.map +1 -0
  358. package/dist/slack/cache-prewarmer.d.ts +31 -0
  359. package/dist/slack/cache-prewarmer.d.ts.map +1 -0
  360. package/dist/slack/client.d.ts +77 -0
  361. package/dist/slack/client.d.ts.map +1 -0
  362. package/dist/slack/markdown.d.ts +45 -0
  363. package/dist/slack/markdown.d.ts.map +1 -0
  364. package/dist/slack/prompt-state.d.ts +33 -0
  365. package/dist/slack/prompt-state.d.ts.map +1 -0
  366. package/dist/slack/rate-limiter.d.ts +56 -0
  367. package/dist/slack/rate-limiter.d.ts.map +1 -0
  368. package/dist/slack/signature.d.ts +2 -0
  369. package/dist/slack/signature.d.ts.map +1 -0
  370. package/dist/slack/socket-runner.d.ts +42 -0
  371. package/dist/slack/socket-runner.d.ts.map +1 -0
  372. package/dist/slack/thread-cache.d.ts +51 -0
  373. package/dist/slack/thread-cache.d.ts.map +1 -0
  374. package/dist/snapshot-store.d.ts +59 -0
  375. package/dist/snapshot-store.d.ts.map +1 -0
  376. package/dist/state-machine/context/build-engine-context.d.ts +17 -0
  377. package/dist/state-machine/context/build-engine-context.d.ts.map +1 -0
  378. package/dist/state-machine/dispatch/dependency-gating.d.ts +12 -0
  379. package/dist/state-machine/dispatch/dependency-gating.d.ts.map +1 -0
  380. package/dist/state-machine/dispatch/execution-invoker.d.ts +14 -0
  381. package/dist/state-machine/dispatch/execution-invoker.d.ts.map +1 -0
  382. package/dist/state-machine/dispatch/foreach-processor.d.ts +8 -0
  383. package/dist/state-machine/dispatch/foreach-processor.d.ts.map +1 -0
  384. package/dist/state-machine/dispatch/history-snapshot.d.ts +8 -0
  385. package/dist/state-machine/dispatch/history-snapshot.d.ts.map +1 -0
  386. package/dist/state-machine/dispatch/on-init-handlers.d.ts +43 -0
  387. package/dist/state-machine/dispatch/on-init-handlers.d.ts.map +1 -0
  388. package/dist/state-machine/dispatch/renderer-schema.d.ts +8 -0
  389. package/dist/state-machine/dispatch/renderer-schema.d.ts.map +1 -0
  390. package/dist/state-machine/dispatch/stats-manager.d.ts +15 -0
  391. package/dist/state-machine/dispatch/stats-manager.d.ts.map +1 -0
  392. package/dist/state-machine/dispatch/template-renderer.d.ts +7 -0
  393. package/dist/state-machine/dispatch/template-renderer.d.ts.map +1 -0
  394. package/dist/state-machine/execution/summary.d.ts +8 -0
  395. package/dist/state-machine/execution/summary.d.ts.map +1 -0
  396. package/dist/state-machine/runner.d.ts +79 -0
  397. package/dist/state-machine/runner.d.ts.map +1 -0
  398. package/dist/state-machine/states/check-running.d.ts +14 -0
  399. package/dist/state-machine/states/check-running.d.ts.map +1 -0
  400. package/dist/state-machine/states/completed.d.ts +12 -0
  401. package/dist/state-machine/states/completed.d.ts.map +1 -0
  402. package/dist/state-machine/states/error.d.ts +11 -0
  403. package/dist/state-machine/states/error.d.ts.map +1 -0
  404. package/dist/state-machine/states/init.d.ts +11 -0
  405. package/dist/state-machine/states/init.d.ts.map +1 -0
  406. package/dist/state-machine/states/level-dispatch.d.ts +17 -0
  407. package/dist/state-machine/states/level-dispatch.d.ts.map +1 -0
  408. package/dist/state-machine/states/plan-ready.d.ts +12 -0
  409. package/dist/state-machine/states/plan-ready.d.ts.map +1 -0
  410. package/dist/state-machine/states/routing.d.ts +52 -0
  411. package/dist/state-machine/states/routing.d.ts.map +1 -0
  412. package/dist/state-machine/states/wave-planning.d.ts +14 -0
  413. package/dist/state-machine/states/wave-planning.d.ts.map +1 -0
  414. package/dist/state-machine/workflow-projection.d.ts +47 -0
  415. package/dist/state-machine/workflow-projection.d.ts.map +1 -0
  416. package/dist/state-machine-execution-engine.d.ts +159 -0
  417. package/dist/state-machine-execution-engine.d.ts.map +1 -0
  418. package/dist/telemetry/opentelemetry.d.ts.map +1 -1
  419. package/dist/telemetry/state-capture.d.ts +5 -0
  420. package/dist/telemetry/state-capture.d.ts.map +1 -1
  421. package/dist/test-runner/assertions.d.ts +59 -0
  422. package/dist/test-runner/assertions.d.ts.map +1 -0
  423. package/dist/test-runner/core/environment.d.ts +8 -0
  424. package/dist/test-runner/core/environment.d.ts.map +1 -0
  425. package/dist/test-runner/core/fixture.d.ts +3 -0
  426. package/dist/test-runner/core/fixture.d.ts.map +1 -0
  427. package/dist/test-runner/core/flow-stage.d.ts +32 -0
  428. package/dist/test-runner/core/flow-stage.d.ts.map +1 -0
  429. package/dist/test-runner/core/mocks.d.ts +8 -0
  430. package/dist/test-runner/core/mocks.d.ts.map +1 -0
  431. package/dist/test-runner/core/test-execution-wrapper.d.ts +18 -0
  432. package/dist/test-runner/core/test-execution-wrapper.d.ts.map +1 -0
  433. package/dist/test-runner/evaluators.d.ts +45 -0
  434. package/dist/test-runner/evaluators.d.ts.map +1 -0
  435. package/dist/test-runner/fixture-loader.d.ts +30 -0
  436. package/dist/test-runner/fixture-loader.d.ts.map +1 -0
  437. package/dist/test-runner/index.d.ts +127 -0
  438. package/dist/test-runner/index.d.ts.map +1 -0
  439. package/dist/test-runner/recorders/github-recorder.d.ts +23 -0
  440. package/dist/test-runner/recorders/github-recorder.d.ts.map +1 -0
  441. package/dist/test-runner/recorders/global-recorder.d.ts +4 -0
  442. package/dist/test-runner/recorders/global-recorder.d.ts.map +1 -0
  443. package/dist/test-runner/recorders/slack-recorder.d.ts +17 -0
  444. package/dist/test-runner/recorders/slack-recorder.d.ts.map +1 -0
  445. package/dist/test-runner/utils/selectors.d.ts +2 -0
  446. package/dist/test-runner/utils/selectors.d.ts.map +1 -0
  447. package/dist/test-runner/validator.d.ts +8 -0
  448. package/dist/test-runner/validator.d.ts.map +1 -0
  449. package/dist/traces/run-2026-01-20T19-22-58-043Z.ndjson +138 -0
  450. package/dist/traces/run-2026-01-20T19-23-52-175Z.ndjson +1067 -0
  451. package/dist/types/bot.d.ts +109 -0
  452. package/dist/types/bot.d.ts.map +1 -0
  453. package/dist/types/cli.d.ts +8 -1
  454. package/dist/types/cli.d.ts.map +1 -1
  455. package/dist/types/config.d.ts +459 -9
  456. package/dist/types/config.d.ts.map +1 -1
  457. package/dist/types/engine.d.ts +177 -0
  458. package/dist/types/engine.d.ts.map +1 -0
  459. package/dist/types/execution.d.ts +73 -0
  460. package/dist/types/execution.d.ts.map +1 -0
  461. package/dist/types/git-checkout.d.ts +76 -0
  462. package/dist/types/git-checkout.d.ts.map +1 -0
  463. package/dist/types/github.d.ts +51 -0
  464. package/dist/types/github.d.ts.map +1 -0
  465. package/dist/types/workflow.d.ts +237 -0
  466. package/dist/types/workflow.d.ts.map +1 -0
  467. package/dist/utils/command-executor.d.ts +43 -0
  468. package/dist/utils/command-executor.d.ts.map +1 -0
  469. package/dist/utils/comment-metadata.d.ts +21 -0
  470. package/dist/utils/comment-metadata.d.ts.map +1 -0
  471. package/dist/utils/config-loader.d.ts.map +1 -1
  472. package/dist/utils/config-merger.d.ts.map +1 -1
  473. package/dist/utils/env-exposure.d.ts +3 -0
  474. package/dist/utils/env-exposure.d.ts.map +1 -0
  475. package/dist/utils/file-exclusion.d.ts.map +1 -1
  476. package/dist/utils/interactive-prompt.d.ts +1 -1
  477. package/dist/utils/interactive-prompt.d.ts.map +1 -1
  478. package/dist/utils/json-text-extractor.d.ts +17 -0
  479. package/dist/utils/json-text-extractor.d.ts.map +1 -0
  480. package/dist/utils/sandbox.d.ts +10 -0
  481. package/dist/utils/sandbox.d.ts.map +1 -1
  482. package/dist/utils/script-memory-ops.d.ts +21 -0
  483. package/dist/utils/script-memory-ops.d.ts.map +1 -0
  484. package/dist/utils/template-context.d.ts +8 -0
  485. package/dist/utils/template-context.d.ts.map +1 -0
  486. package/dist/utils/tracer-init.d.ts.map +1 -1
  487. package/dist/utils/workspace-manager.d.ts +118 -0
  488. package/dist/utils/workspace-manager.d.ts.map +1 -0
  489. package/dist/utils/worktree-cleanup.d.ts +33 -0
  490. package/dist/utils/worktree-cleanup.d.ts.map +1 -0
  491. package/dist/utils/worktree-manager.d.ts +153 -0
  492. package/dist/utils/worktree-manager.d.ts.map +1 -0
  493. package/dist/webhook-server.d.ts +3 -3
  494. package/dist/webhook-server.d.ts.map +1 -1
  495. package/dist/workflow-executor.d.ts +81 -0
  496. package/dist/workflow-executor.d.ts.map +1 -0
  497. package/dist/workflow-registry.d.ts +79 -0
  498. package/dist/workflow-registry.d.ts.map +1 -0
  499. package/package.json +12 -5
  500. package/dist/output/traces/run-2025-10-22T18-22-56-873Z.ndjson +0 -218
  501. package/dist/sdk/check-execution-engine-2YYKUUSH.mjs +0 -11
  502. package/dist/sdk/check-execution-engine-6QJXYYON.mjs +0 -11
  503. package/dist/sdk/check-execution-engine-PJZ4ZOKG.mjs +0 -11
  504. package/dist/sdk/chunk-33QVZ2D4.mjs +0 -316
  505. package/dist/sdk/chunk-33QVZ2D4.mjs.map +0 -1
  506. package/dist/sdk/chunk-B5QBV2QJ.mjs +0 -752
  507. package/dist/sdk/chunk-B5QBV2QJ.mjs.map +0 -1
  508. package/dist/sdk/chunk-BVFNRCHT.mjs +0 -14129
  509. package/dist/sdk/chunk-BVFNRCHT.mjs.map +0 -1
  510. package/dist/sdk/chunk-KWZW23FG.mjs +0 -14129
  511. package/dist/sdk/chunk-KWZW23FG.mjs.map +0 -1
  512. package/dist/sdk/chunk-O4RP4BRH.mjs +0 -14092
  513. package/dist/sdk/chunk-O4RP4BRH.mjs.map +0 -1
  514. package/dist/sdk/chunk-TUTOLSFV.mjs.map +0 -1
  515. package/dist/sdk/chunk-U5D2LY66.mjs +0 -245
  516. package/dist/sdk/chunk-U5D2LY66.mjs.map +0 -1
  517. package/dist/sdk/chunk-U7X54EMV.mjs +0 -331
  518. package/dist/sdk/chunk-U7X54EMV.mjs.map +0 -1
  519. package/dist/sdk/config-merger-TWUBWFC2.mjs +0 -8
  520. package/dist/sdk/mermaid-telemetry-SN6A2TKW.mjs +0 -61
  521. package/dist/sdk/mermaid-telemetry-SN6A2TKW.mjs.map +0 -1
  522. package/dist/sdk/mermaid-telemetry-YCTIG76M.mjs +0 -61
  523. package/dist/sdk/mermaid-telemetry-YCTIG76M.mjs.map +0 -1
  524. package/dist/traces/run-2025-10-22T18-22-56-873Z.ndjson +0 -218
  525. /package/dist/sdk/{check-execution-engine-2YYKUUSH.mjs.map → check-provider-registry-534KL5HT.mjs.map} +0 -0
  526. /package/dist/sdk/{check-execution-engine-6QJXYYON.mjs.map → command-executor-TYUV6HUS.mjs.map} +0 -0
  527. /package/dist/sdk/{check-execution-engine-PJZ4ZOKG.mjs.map → config-YNC2EOOT.mjs.map} +0 -0
  528. /package/dist/sdk/{config-merger-TWUBWFC2.mjs.map → config-merger-PX3WIT57.mjs.map} +0 -0
  529. /package/dist/sdk/{liquid-extensions-KVL4MKRH.mjs.map → failure-condition-evaluator-YGTF2GHG.mjs.map} +0 -0
  530. /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