@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,535 @@
1
+ ## 🤖 AI Configuration
2
+
3
+ Visor supports multiple AI providers. Configure one via environment variables.
4
+
5
+ ### Supported Providers
6
+
7
+ | Provider | Env Var | Example Models |
8
+ |----------|---------|----------------|
9
+ | Google Gemini | `GOOGLE_API_KEY` | `gemini-2.0-flash-exp`, `gemini-1.5-pro` |
10
+ | Anthropic Claude | `ANTHROPIC_API_KEY` | `claude-3-opus`, `claude-3-sonnet` |
11
+ | OpenAI GPT | `OPENAI_API_KEY` | `gpt-4`, `gpt-4-turbo`, `gpt-3.5-turbo` |
12
+ | AWS Bedrock | AWS credentials (see below) | `anthropic.claude-sonnet-4-20250514-v1:0` (default) |
13
+
14
+ ### GitHub Actions Setup
15
+ Add the provider key as a secret (Settings → Secrets → Actions), then expose it:
16
+
17
+ ```yaml
18
+ steps:
19
+ - uses: actions/checkout@v4
20
+ - uses: probelabs/visor@v1
21
+ env:
22
+ GOOGLE_API_KEY: ${{ secrets.GOOGLE_API_KEY }}
23
+ # or ANTHROPIC_API_KEY / OPENAI_API_KEY
24
+ # For AWS Bedrock:
25
+ # AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
26
+ # AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
27
+ # AWS_REGION: us-east-1
28
+ ```
29
+
30
+ ### Local Development
31
+
32
+ ```bash
33
+ # Google Gemini
34
+ export GOOGLE_API_KEY="your-api-key"
35
+ export MODEL_NAME="gemini-2.0-flash-exp"
36
+
37
+ # AWS Bedrock
38
+ export AWS_ACCESS_KEY_ID="your-access-key"
39
+ export AWS_SECRET_ACCESS_KEY="your-secret-key"
40
+ export AWS_REGION="us-east-1"
41
+ # Optional: Use specific model
42
+ export MODEL_NAME="anthropic.claude-sonnet-4-20250514-v1:0"
43
+ ```
44
+
45
+ ### AWS Bedrock Configuration
46
+
47
+ Bedrock supports multiple authentication methods:
48
+
49
+ 1. **IAM Credentials** (recommended):
50
+ ```bash
51
+ export AWS_ACCESS_KEY_ID="your-access-key"
52
+ export AWS_SECRET_ACCESS_KEY="your-secret-key"
53
+ export AWS_REGION="us-east-1"
54
+ ```
55
+
56
+ 2. **Temporary Session Credentials**:
57
+ ```bash
58
+ export AWS_ACCESS_KEY_ID="your-access-key"
59
+ export AWS_SECRET_ACCESS_KEY="your-secret-key"
60
+ export AWS_SESSION_TOKEN="your-session-token"
61
+ export AWS_REGION="us-east-1"
62
+ ```
63
+
64
+ 3. **API Key Authentication** (if configured):
65
+ ```bash
66
+ export AWS_BEDROCK_API_KEY="your-api-key"
67
+ export AWS_BEDROCK_BASE_URL="https://your-custom-endpoint.com" # Optional
68
+ ```
69
+
70
+ To force Bedrock provider:
71
+ ```bash
72
+ export FORCE_PROVIDER=bedrock
73
+ ```
74
+
75
+ ### YAML Configuration
76
+
77
+ #### Global Provider Settings
78
+
79
+ Configure a default AI provider in `.visor.yaml`:
80
+
81
+ ```yaml
82
+ # Global configuration for all checks
83
+ ai_provider: bedrock # or google, anthropic, openai
84
+ ai_model: anthropic.claude-sonnet-4-20250514-v1:0 # Optional, uses default if not specified
85
+
86
+ steps:
87
+ security-review:
88
+ type: ai
89
+ prompt: "Analyze code for security vulnerabilities"
90
+ ```
91
+
92
+ #### Per-Check Provider Configuration
93
+
94
+ Override the provider for specific checks:
95
+
96
+ ```yaml
97
+ # Use different providers for different checks
98
+ steps:
99
+ security-review:
100
+ type: ai
101
+ ai_provider: bedrock
102
+ ai_model: anthropic.claude-sonnet-4-20250514-v1:0
103
+ prompt: "Analyze code for security vulnerabilities using AWS Bedrock"
104
+
105
+ performance-review:
106
+ type: ai
107
+ ai_provider: google
108
+ ai_model: gemini-2.0-flash-exp
109
+ prompt: "Analyze code for performance issues using Gemini"
110
+
111
+ style-review:
112
+ type: ai
113
+ ai:
114
+ provider: openai
115
+ model: gpt-4-turbo
116
+ prompt: "Review code style and best practices"
117
+
118
+ #### Prompt Controls (Probe promptType, customPrompt, and persona)
119
+
120
+ Visor exposes Probe’s prompt controls to adjust the agent’s behavior for a given step. Use underscore names only.
121
+
122
+ Accepted keys
123
+ - Under `ai:`
124
+ - `prompt_type`: string — Probe persona/family, e.g., `engineer`, `code-review`, `architect`.
125
+ - `custom_prompt`: string — Baseline/system prompt prepended by the SDK.
126
+ - At the check level (aliases if you prefer not to nest):
127
+ - `ai_prompt_type`: string
128
+ - `ai_custom_prompt`: string
129
+ - `ai_persona`: string — optional hint we prepend as a first line: `Persona: <value>`.
130
+
131
+ Examples
132
+
133
+ ```yaml
134
+ steps:
135
+ engineer-review:
136
+ type: ai
137
+ ai:
138
+ provider: anthropic
139
+ model: claude-3-5-sonnet-latest
140
+ prompt_type: engineer
141
+ custom_prompt: |
142
+ You are a specialist in analyzing security vulnerabilities.
143
+ Focus on injection, authn/z, crypto, and data exposure.
144
+ schema: code-review
145
+ prompt: |
146
+ Review the following changes.
147
+
148
+ quick-architect-check:
149
+ type: ai
150
+ ai_prompt_type: architect # check-level alias
151
+ ai_custom_prompt: "Favor modular boundaries and low coupling."
152
+ prompt: "Assess high-level design risks in the diff"
153
+ ```
154
+
155
+ Notes
156
+ - If `prompt_type` is omitted and a `schema` is provided, Visor defaults to `code-review`.
157
+ - `ai_persona` is a lightweight hint added as a first line; prefer `prompt_type` when integrating with Probe personas.
158
+ ```
159
+
160
+ #### AWS Bedrock Specific Configuration
161
+
162
+ Complete example for Bedrock with all options:
163
+
164
+ ```yaml
165
+ version: "1.0"
166
+
167
+ # Global Bedrock settings
168
+ ai_provider: bedrock
169
+ ai_model: anthropic.claude-sonnet-4-20250514-v1:0
170
+
171
+ # Environment variables can be referenced
172
+ env:
173
+ AWS_REGION: us-east-1
174
+ # AWS credentials should be set as environment variables, not in config
175
+
176
+ steps:
177
+ comprehensive-review:
178
+ type: ai
179
+ ai_provider: bedrock
180
+ prompt: |
181
+ Perform a comprehensive code review including:
182
+ - Security vulnerabilities
183
+ - Performance optimizations
184
+ - Code quality and best practices
185
+ - Architectural concerns
186
+ schema: code-review # Use structured output format
187
+
188
+ custom-bedrock-model:
189
+ type: ai
190
+ ai:
191
+ provider: bedrock
192
+ model: anthropic.claude-3-opus-20240229 # Use a different Bedrock model
193
+ timeout: 120000 # 2 minute timeout for complex analysis
194
+ prompt: "Perform deep architectural analysis"
195
+
196
+ output:
197
+ pr_comment:
198
+ format: markdown
199
+ group_by: check
200
+ collapse: true
201
+ ```
202
+
203
+ ### Advanced AI Configuration
204
+
205
+ #### Transport Context Controls (GitHub, Slack, etc.)
206
+
207
+ By default, Visor automatically adds transport‑specific context to AI prompts:
208
+
209
+ - **GitHub**: PR / issue metadata + diffs (as XML `<context>...</context>`).
210
+ - **Slack**: Slack conversation context (as XML `<slack_context>...</slack_context>`).
211
+
212
+ You can control this per step with three flags under `ai:`:
213
+
214
+ ```yaml
215
+ steps:
216
+ slack-chat:
217
+ type: ai
218
+ prompt: "Chat with the user"
219
+ ai:
220
+ # Turn off ALL automatic transport context (GitHub + Slack)
221
+ skip_transport_context: true
222
+
223
+ github-only:
224
+ type: ai
225
+ prompt: "Review PR using GitHub context only"
226
+ ai:
227
+ skip_slack_context: true # never add Slack context
228
+ # keep code context on (default)
229
+
230
+ slack-only:
231
+ type: ai
232
+ prompt: "Answer based on this Slack thread"
233
+ ai:
234
+ skip_code_context: true # no PR/issue XML
235
+ # keep Slack context on (default)
236
+ ```
237
+
238
+ Semantics:
239
+
240
+ - `skip_code_context: true`
241
+ - Skip GitHub PR/issue XML context (diffs, metadata).
242
+ - `skip_slack_context: true`
243
+ - Skip Slack `<slack_context>` XML.
244
+ - `skip_transport_context: true`
245
+ - High‑level switch:
246
+ - Behaves like setting both `skip_code_context` and `skip_slack_context` to `true`,
247
+ **unless** those are explicitly overridden on the same step.
248
+
249
+ Even when transport XML is disabled, the **structured conversation object** is still available
250
+ in Liquid templates:
251
+
252
+ ```liquid
253
+ {% if conversation %}
254
+ Transport: {{ conversation.transport }} {# 'slack', 'github', ... #}
255
+ Thread: {{ conversation.thread.id }}
256
+ {% for m in conversation.messages %}
257
+ {{ m.user }} ({{ m.role }}): {{ m.text }}
258
+ {% endfor %}
259
+ {% endif %}
260
+ ```
261
+
262
+ - For Slack:
263
+ - `conversation.transport == 'slack'`
264
+ - Also available via `slack.conversation`.
265
+ - For GitHub (PR/issue + comments):
266
+ - `conversation.transport == 'github'`
267
+ - Exposed via a normalized GitHub conversation builder.
268
+
269
+ Use these flags when you want full manual control over context, or to keep prompts lean in
270
+ chat‑style flows.
271
+
272
+ #### File Editing (`allowEdit`)
273
+
274
+ Enable Edit and Create tools to allow AI agents to modify files directly. This feature is disabled by default for security and requires explicit opt-in.
275
+
276
+ ```yaml
277
+ steps:
278
+ auto-fix-security:
279
+ type: ai
280
+ prompt: "Fix the security vulnerabilities found in the code"
281
+ ai:
282
+ provider: anthropic
283
+ model: claude-3-opus
284
+ allowEdit: true # Enable Edit and Create tools
285
+
286
+ read-only-review:
287
+ type: ai
288
+ prompt: "Review code for security issues"
289
+ ai:
290
+ provider: google
291
+ allowEdit: false # Disable editing (default)
292
+ ```
293
+
294
+ **When to enable editing:**
295
+ - Automated fix workflows where the AI should apply changes
296
+ - Code refactoring tasks
297
+ - Auto-formatting or style correction
298
+ - When working in a sandboxed or test environment
299
+
300
+ **When to disable editing:**
301
+ - Review-only workflows (default behavior)
302
+ - Production environments without proper safeguards
303
+ - When you want to review suggested changes before applying them
304
+
305
+ **Security Note:** Edit tools respect existing `allowedFolders` configuration and perform exact string matching to prevent unintended modifications. Always review changes before merging.
306
+
307
+ #### Tool Filtering (`allowedTools`, `disableTools`)
308
+
309
+ Control which tools the AI agent can access during execution. This feature supports three filtering modes for fine-grained control over agent capabilities.
310
+
311
+ **Filtering Modes:**
312
+
313
+ 1. **Allow All Tools (default)**: No filtering applied, agent has access to all available tools
314
+ 2. **Whitelist Mode**: Specify exact tools the agent can use (e.g., `['Read', 'Grep']`)
315
+ 3. **Exclusion Mode**: Block specific tools using `!` prefix (e.g., `['!Edit', '!Write']`)
316
+ 4. **Raw AI Mode**: Disable all tools for pure conversational interactions
317
+
318
+ ```yaml
319
+ steps:
320
+ # Whitelist specific tools only
321
+ restricted-analysis:
322
+ type: ai
323
+ prompt: "Analyze the codebase structure"
324
+ ai:
325
+ provider: anthropic
326
+ allowedTools: ['Read', 'Grep', 'Glob'] # Only these tools allowed
327
+
328
+ # Exclude specific tools
329
+ safe-review:
330
+ type: ai
331
+ prompt: "Review code without making changes"
332
+ ai:
333
+ provider: google
334
+ allowedTools: ['!Edit', '!Write', '!Delete'] # Block modification tools
335
+
336
+ # Raw AI mode - no tools
337
+ conversational:
338
+ type: ai
339
+ prompt: "Explain the architecture"
340
+ ai:
341
+ provider: openai
342
+ disableTools: true # Pure conversation, no tool access
343
+
344
+ # Alternative raw AI mode
345
+ conversational-alt:
346
+ type: ai
347
+ prompt: "Explain the architecture"
348
+ ai:
349
+ provider: anthropic
350
+ allowedTools: [] # Empty array also disables all tools
351
+ ```
352
+
353
+ **MCP Tool Filtering:**
354
+
355
+ Filter external Model Context Protocol tools using the `mcp__` prefix pattern:
356
+
357
+ ```yaml
358
+ steps:
359
+ mcp-filtered:
360
+ type: ai
361
+ prompt: "Search the codebase"
362
+ ai:
363
+ provider: anthropic
364
+ allowedTools: ['mcp__code-search__*'] # Allow all code-search MCP tools
365
+ mcpServers:
366
+ code-search:
367
+ command: "npx"
368
+ args: ["-y", "@modelcontextprotocol/server-code-search"]
369
+ ```
370
+
371
+ **When to use tool filtering:**
372
+ - Restrict agent capabilities for security-sensitive tasks
373
+ - Prevent unintended file modifications
374
+ - Create specialized agents with limited toolsets
375
+ - Testing and debugging specific tool interactions
376
+ - Compliance requirements that limit agent autonomy
377
+
378
+ **Security Note:** Tool filtering is enforced at runtime through system message filtering. Always combine with other security measures like `allowedFolders` for defense in depth.
379
+
380
+ #### Task Delegation (`enableDelegate`)
381
+
382
+ Enable the delegate tool to allow AI agents to break down complex tasks and distribute them to specialized subagents for parallel processing. This feature is available when using Probe as the AI provider (Google Gemini, Anthropic Claude, OpenAI GPT, AWS Bedrock).
383
+
384
+ ```yaml
385
+ steps:
386
+ comprehensive-security-audit:
387
+ type: ai
388
+ prompt: |
389
+ Perform a comprehensive security audit including:
390
+ - SQL injection vulnerabilities
391
+ - XSS attack vectors
392
+ - Authentication bypass risks
393
+ - Authorization flaws
394
+ - Cryptographic weaknesses
395
+ ai:
396
+ provider: anthropic
397
+ model: claude-3-opus
398
+ enableDelegate: true # Enable task delegation to subagents
399
+
400
+ focused-sql-injection-check:
401
+ type: ai
402
+ prompt: "Check for SQL injection vulnerabilities"
403
+ ai:
404
+ provider: google
405
+ enableDelegate: false # Disable delegation for focused check
406
+ ```
407
+
408
+ **When to enable delegation:**
409
+ - Complex multi-step analysis requiring different expertise areas (e.g., security + performance + architecture)
410
+ - Large codebases where parallel processing speeds up review
411
+ - Comprehensive audits that benefit from specialized subagents
412
+
413
+ **When to disable delegation:**
414
+ - Simple, focused checks (e.g., "check for SQL injection")
415
+ - Time-sensitive reviews where speed is critical
416
+ - Resource-constrained environments
417
+ - Default behavior (delegation is disabled by default)
418
+
419
+ **Note:** Task delegation increases execution time and token usage, but can provide more thorough analysis for complex tasks.
420
+
421
+ #### Bash Command Execution (`allowBash` / `bashConfig`)
422
+
423
+ Enable secure bash command execution for AI agents to run read-only commands and analyze system state. This feature is disabled by default for security and requires explicit opt-in.
424
+
425
+ **Simple Configuration:**
426
+
427
+ Use `allowBash: true` for basic bash command execution with default safe commands:
428
+
429
+ ```yaml
430
+ steps:
431
+ # Simple: Enable bash with default safe commands
432
+ git-status-analysis:
433
+ type: ai
434
+ prompt: "Analyze the project structure and git status"
435
+ ai:
436
+ provider: anthropic
437
+ model: claude-3-opus
438
+ allowBash: true # Simple one-line enable
439
+ ```
440
+
441
+ **Advanced Configuration:**
442
+
443
+ Use `bashConfig` for fine-grained control over bash command execution:
444
+
445
+ ```yaml
446
+ steps:
447
+ # Advanced: Custom allow/deny lists
448
+ custom-bash-config:
449
+ type: ai
450
+ prompt: "Run custom analysis commands"
451
+ ai:
452
+ provider: google
453
+ allowBash: true # Enable bash execution
454
+ bashConfig:
455
+ allow: ['npm test', 'npm run lint'] # Additional allowed commands
456
+ deny: ['npm install'] # Additional blocked commands
457
+ timeout: 30000 # 30 second timeout per command
458
+ workingDirectory: './src' # Default working directory
459
+
460
+ # Advanced: Disable default filters (expert mode)
461
+ advanced-bash:
462
+ type: ai
463
+ prompt: "Run advanced system commands"
464
+ ai:
465
+ provider: anthropic
466
+ allowBash: true
467
+ bashConfig:
468
+ noDefaultAllow: true # Disable default safe command list
469
+ noDefaultDeny: false # Keep default dangerous command blocklist
470
+ allow: ['specific-command-1', 'specific-command-2']
471
+ ```
472
+
473
+ **Configuration Options:**
474
+
475
+ - **`allowBash`** (boolean): Simple toggle to enable bash command execution. Default: `false`
476
+ - **`allow`** (string[]): Additional permitted command patterns (e.g., `['ls', 'git status']`)
477
+ - **`deny`** (string[]): Additional blocked command patterns (e.g., `['rm -rf', 'sudo']`)
478
+ - **`noDefaultAllow`** (boolean): Disable default safe command list (~235 commands). Default: `false`
479
+ - **`noDefaultDeny`** (boolean): Disable default dangerous command blocklist (~191 patterns). Default: `false`
480
+ - **`timeout`** (number): Execution timeout in milliseconds. Default: varies by ProbeAgent
481
+ - **`workingDirectory`** (string): Base directory for command execution
482
+
483
+ **Default Security:**
484
+
485
+ ProbeAgent includes comprehensive security by default:
486
+ - **Safe Commands** (~235): Read-only operations like `ls`, `cat`, `git status`, `npm list`, `grep`
487
+ - **Blocked Commands** (~191): Dangerous operations like `rm -rf`, `sudo`, `npm install`, `curl`, system modifications
488
+
489
+ **When to enable bash commands:**
490
+ - System state analysis (git status, file listings, environment info)
491
+ - Running read-only diagnostic commands
492
+ - Executing test suites or linters
493
+ - Analyzing build outputs or logs
494
+
495
+ **When to keep bash disabled (default):**
496
+ - Security-sensitive environments
497
+ - Untrusted AI prompts or inputs
498
+ - Code review without system access needs
499
+ - Compliance requirements that prohibit command execution
500
+
501
+ **Security Best Practices:**
502
+ 1. Always use the default allow/deny lists unless you have specific requirements
503
+ 2. Set reasonable timeouts to prevent long-running commands
504
+ 3. Use `workingDirectory` to restrict command execution scope
505
+ 4. Audit command patterns in your allow list regularly
506
+ 5. Test configuration in a safe environment first
507
+ 6. Review AI-generated commands before enabling in production
508
+
509
+ **Example: Git Status Analysis**
510
+
511
+ ```yaml
512
+ steps:
513
+ git-status-review:
514
+ type: ai
515
+ prompt: |
516
+ Analyze the current git status and provide insights:
517
+ - Check for uncommitted changes
518
+ - Review branch state
519
+ - Identify any potential issues
520
+ ai:
521
+ provider: anthropic
522
+ allowBash: true # Simple enable
523
+ bashConfig:
524
+ allow: ['git log --oneline'] # Add custom git command
525
+ workingDirectory: '.'
526
+ ```
527
+
528
+ **Security Note:** Bash command execution respects existing security boundaries and permissions. Commands run with the same privileges as the Visor process. Always review and test bash configurations before deploying to production environments.
529
+
530
+ ### Fallback Behavior
531
+
532
+ If no key is configured, Visor falls back to fast, heuristic checks (simple patterns, basic style/perf). For best results, set a provider.
533
+
534
+ ### MCP (Tools) Support
535
+ See docs/mcp.md for adding MCP servers (Probe, Jira, Filesystem, etc.).