@probelabs/visor 0.1.106 → 0.1.107

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (450) hide show
  1. package/README.md +65 -2
  2. package/action.yml +1 -1
  3. package/defaults/code-refiner.yaml +114 -0
  4. package/defaults/{.visor.yaml → code-review.yaml} +35 -226
  5. package/defaults/override.yaml +52 -0
  6. package/defaults/task-refinement.yaml +620 -0
  7. package/defaults/visor.tests.yaml +674 -0
  8. package/defaults/visor.yaml +482 -0
  9. package/dist/663.index.js +2 -3
  10. package/dist/80.index.js +2 -3
  11. package/dist/action-cli-bridge.d.ts +11 -82
  12. package/dist/action-cli-bridge.d.ts.map +1 -1
  13. package/dist/ai-review-service.d.ts +15 -0
  14. package/dist/ai-review-service.d.ts.map +1 -1
  15. package/dist/check-execution-engine.d.ts +19 -331
  16. package/dist/check-execution-engine.d.ts.map +1 -1
  17. package/dist/cli-main.d.ts.map +1 -1
  18. package/dist/cli.d.ts +0 -1
  19. package/dist/cli.d.ts.map +1 -1
  20. package/dist/config.d.ts +16 -0
  21. package/dist/config.d.ts.map +1 -1
  22. package/dist/cron-scheduler.d.ts +3 -3
  23. package/dist/cron-scheduler.d.ts.map +1 -1
  24. package/dist/debug-visualizer/ws-server.d.ts.map +1 -1
  25. package/dist/defaults/code-refiner.yaml +114 -0
  26. package/dist/defaults/{.visor.yaml → code-review.yaml} +35 -226
  27. package/dist/defaults/override.yaml +52 -0
  28. package/dist/defaults/task-refinement.yaml +620 -0
  29. package/dist/defaults/visor.tests.yaml +674 -0
  30. package/dist/defaults/visor.yaml +482 -0
  31. package/dist/docs/DEPLOYMENT.md +118 -0
  32. package/dist/docs/GITHUB_CHECKS.md +280 -0
  33. package/dist/docs/NPM_USAGE.md +208 -0
  34. package/dist/docs/action-reference.md +19 -0
  35. package/dist/docs/advanced-ai.md +178 -0
  36. package/dist/docs/ai-configuration.md +468 -0
  37. package/dist/docs/author-permissions.md +610 -0
  38. package/dist/docs/ci-cli-mode.md +34 -0
  39. package/dist/docs/claude-code.md +74 -0
  40. package/dist/docs/command-provider.md +559 -0
  41. package/dist/docs/commands.md +8 -0
  42. package/dist/docs/configuration.md +303 -0
  43. package/dist/docs/custom-tools.md +424 -0
  44. package/dist/docs/dashboards/README.md +23 -0
  45. package/dist/docs/dashboards/grafana-visor-diagrams.json +20 -0
  46. package/dist/docs/dashboards/grafana-visor-overview.json +33 -0
  47. package/dist/docs/debug-visualizer-progress.md +572 -0
  48. package/dist/docs/debug-visualizer-rfc.md +691 -0
  49. package/dist/docs/debug-visualizer.md +114 -0
  50. package/dist/docs/debugging.md +636 -0
  51. package/dist/docs/default-output-schema.md +28 -0
  52. package/dist/docs/dependencies.md +369 -0
  53. package/dist/docs/dev-playbook.md +9 -0
  54. package/dist/docs/engine-state-machine-plan.md +333 -0
  55. package/dist/docs/event-driven-github-integration-rfc.md +743 -0
  56. package/dist/docs/event-triggers.md +292 -0
  57. package/dist/docs/execution-statistics-rfc.md +290 -0
  58. package/dist/docs/fact-validator-gap-analysis.md +178 -0
  59. package/dist/docs/fact-validator-implementation-plan.md +1235 -0
  60. package/dist/docs/fail-if.md +95 -0
  61. package/dist/docs/failure-conditions-implementation.md +271 -0
  62. package/dist/docs/failure-conditions-schema.md +173 -0
  63. package/dist/docs/failure-routing-rfc.md +193 -0
  64. package/dist/docs/failure-routing.md +507 -0
  65. package/dist/docs/foreach-dependency-propagation.md +473 -0
  66. package/dist/docs/github-ops.md +89 -0
  67. package/dist/docs/goto-forward-run-plan.md +113 -0
  68. package/dist/docs/guides/criticality-modes.md +332 -0
  69. package/dist/docs/guides/fault-management-and-contracts.md +738 -0
  70. package/dist/docs/guides/workflow-style-guide.md +224 -0
  71. package/dist/docs/http.md +299 -0
  72. package/dist/docs/human-input-provider.md +372 -0
  73. package/dist/docs/limits.md +64 -0
  74. package/dist/docs/liquid-templates.md +347 -0
  75. package/dist/docs/loop-routing-refactor.md +89 -0
  76. package/dist/docs/mcp-provider.md +557 -0
  77. package/dist/docs/mcp.md +124 -0
  78. package/dist/docs/memory.md +903 -0
  79. package/dist/docs/observability.md +12 -0
  80. package/dist/docs/output-formats.md +20 -0
  81. package/dist/docs/output-formatting.md +29 -0
  82. package/dist/docs/output-history.md +383 -0
  83. package/dist/docs/performance.md +6 -0
  84. package/dist/docs/pluggable.md +124 -0
  85. package/dist/docs/proposals/snapshot-scope-execution.md +236 -0
  86. package/dist/docs/recipes.md +21 -0
  87. package/dist/docs/roadmap/criticality-implementation-tasks.md +92 -0
  88. package/dist/docs/schema-next-pr.md +10 -0
  89. package/dist/docs/schema-templates.md +68 -0
  90. package/dist/docs/script.md +34 -0
  91. package/dist/docs/sdk.md +222 -0
  92. package/dist/docs/security.md +7 -0
  93. package/dist/docs/suppressions.md +89 -0
  94. package/dist/docs/tag-filtering.md +258 -0
  95. package/dist/docs/telemetry-setup.md +119 -0
  96. package/dist/docs/telemetry-tracing-rfc.md +275 -0
  97. package/dist/docs/test-framework-rfc.md +680 -0
  98. package/dist/docs/testing/assertions.md +85 -0
  99. package/dist/docs/testing/ci.md +44 -0
  100. package/dist/docs/testing/cli.md +41 -0
  101. package/dist/docs/testing/cookbook.md +172 -0
  102. package/dist/docs/testing/dsl-reference.md +199 -0
  103. package/dist/docs/testing/fixtures-and-mocks.md +91 -0
  104. package/dist/docs/testing/flows.md +92 -0
  105. package/dist/docs/testing/getting-started.md +93 -0
  106. package/dist/docs/testing/troubleshooting.md +55 -0
  107. package/dist/docs/timeouts.md +50 -0
  108. package/dist/docs/troubleshooting.md +7 -0
  109. package/dist/docs/visor-sdk-rfc.md +186 -0
  110. package/dist/docs/workflows.md +569 -0
  111. package/dist/engine/on-finish/orchestrator.d.ts +19 -0
  112. package/dist/engine/on-finish/orchestrator.d.ts.map +1 -0
  113. package/dist/engine/on-finish/utils.d.ts +44 -0
  114. package/dist/engine/on-finish/utils.d.ts.map +1 -0
  115. package/dist/event-bus/event-bus.d.ts +13 -0
  116. package/dist/event-bus/event-bus.d.ts.map +1 -0
  117. package/dist/event-bus/types.d.ts +57 -0
  118. package/dist/event-bus/types.d.ts.map +1 -0
  119. package/dist/examples/.claude/agents/code-reviewer.md +69 -0
  120. package/dist/examples/.mcp.json +34 -0
  121. package/dist/examples/CALCULATOR-SDK.md +364 -0
  122. package/dist/examples/README.md +384 -0
  123. package/dist/examples/ai-retry-fallback-config.yaml +180 -0
  124. package/dist/examples/ai-with-bash.yaml +126 -0
  125. package/dist/examples/ai-with-mcp.yaml +82 -0
  126. package/dist/examples/basic-human-input.yaml +15 -0
  127. package/dist/examples/bedrock-config.yaml +77 -0
  128. package/dist/examples/calculator-config.yaml +133 -0
  129. package/dist/examples/calculator-json-output-guide.md +311 -0
  130. package/dist/examples/calculator-sdk-automated.ts +340 -0
  131. package/dist/examples/calculator-sdk-example.ts +275 -0
  132. package/dist/examples/calculator-sdk-json.ts +331 -0
  133. package/dist/examples/calculator-sdk-real.ts +374 -0
  134. package/dist/examples/calculator-sdk-test.ts +148 -0
  135. package/dist/examples/claude-code-config.yaml +191 -0
  136. package/dist/examples/cron-webhook-config.yaml +215 -0
  137. package/dist/examples/custom-template.liquid +57 -0
  138. package/dist/examples/custom-tools-example.yaml +281 -0
  139. package/dist/examples/enhanced-config.yaml +165 -0
  140. package/dist/examples/environments/visor.base.yaml +92 -0
  141. package/dist/examples/environments/visor.dev.yaml +33 -0
  142. package/dist/examples/environments/visor.prod.yaml +95 -0
  143. package/dist/examples/environments/visor.staging.yaml +46 -0
  144. package/dist/examples/fact-validator.yaml +361 -0
  145. package/dist/examples/fail-if-simple.yaml +90 -0
  146. package/dist/examples/failure-conditions-advanced.yaml +136 -0
  147. package/dist/examples/failure-conditions-basic.yaml +48 -0
  148. package/dist/examples/failure-conditions-github-style.yaml +119 -0
  149. package/dist/examples/failure-conditions-migration.yaml +74 -0
  150. package/dist/examples/for-loop-example.yaml +176 -0
  151. package/dist/examples/forEach-example.yaml +120 -0
  152. package/dist/examples/github-workflow-with-tags.yml +163 -0
  153. package/dist/examples/http-integration-config.yaml +240 -0
  154. package/dist/examples/https-server-config.yaml +209 -0
  155. package/dist/examples/human-input-example.yaml +63 -0
  156. package/dist/examples/if-conditions.yaml +173 -0
  157. package/dist/examples/jira-simple-example.yaml +56 -0
  158. package/dist/examples/jira-single-issue-workflow.yaml +166 -0
  159. package/dist/examples/jira-workflow-mcp.yaml +182 -0
  160. package/dist/examples/mcp/analyzer.py +119 -0
  161. package/dist/examples/mcp-provider-example.yaml +301 -0
  162. package/dist/examples/memory-counter.yaml +99 -0
  163. package/dist/examples/memory-error-collection.yaml +104 -0
  164. package/dist/examples/memory-exec-js.yaml +247 -0
  165. package/dist/examples/memory-namespace-isolation.yaml +184 -0
  166. package/dist/examples/memory-retry-counter.yaml +65 -0
  167. package/dist/examples/memory-state-machine.yaml +170 -0
  168. package/dist/examples/outputs-raw-basic.yaml +26 -0
  169. package/dist/examples/project-with-tools.yaml +174 -0
  170. package/dist/examples/prompts/architecture-analysis.liquid +116 -0
  171. package/dist/examples/prompts/security-comprehensive.liquid +107 -0
  172. package/dist/examples/quick-start-tags.yaml +53 -0
  173. package/dist/examples/routing-basic.yaml +35 -0
  174. package/dist/examples/routing-dynamic-js.yaml +46 -0
  175. package/dist/examples/routing-foreach.yaml +34 -0
  176. package/dist/examples/routing-goto-event.yaml +34 -0
  177. package/dist/examples/routing-on-success.yaml +25 -0
  178. package/dist/examples/run-calculator-demo.sh +71 -0
  179. package/dist/examples/sdk-basic.mjs +10 -0
  180. package/dist/examples/sdk-cjs.cjs +10 -0
  181. package/dist/examples/sdk-comprehensive.mjs +175 -0
  182. package/dist/examples/sdk-manual-config.mjs +65 -0
  183. package/dist/examples/sdk-typescript.js +81 -0
  184. package/dist/examples/sdk-typescript.ts +92 -0
  185. package/dist/examples/session-reuse-config.yaml +151 -0
  186. package/dist/examples/templates/security-report.liquid +137 -0
  187. package/dist/examples/tools-library.yaml +281 -0
  188. package/dist/examples/transform-example.yaml +199 -0
  189. package/dist/examples/visor-with-tags.yaml +198 -0
  190. package/dist/examples/webhook-pipeline-config.yaml +218 -0
  191. package/dist/examples/workflows/calculator-workflow.yaml +163 -0
  192. package/dist/examples/workflows/code-quality.yaml +222 -0
  193. package/dist/examples/workflows/quick-pr-check.yaml +90 -0
  194. package/dist/examples/workflows/workflow-composition-example.yaml +130 -0
  195. package/dist/failure-condition-evaluator.d.ts +1 -0
  196. package/dist/failure-condition-evaluator.d.ts.map +1 -1
  197. package/dist/frontends/github-frontend.d.ts +38 -0
  198. package/dist/frontends/github-frontend.d.ts.map +1 -0
  199. package/dist/frontends/host.d.ts +43 -0
  200. package/dist/frontends/host.d.ts.map +1 -0
  201. package/dist/frontends/ndjson-sink.d.ts +12 -0
  202. package/dist/frontends/ndjson-sink.d.ts.map +1 -0
  203. package/dist/generated/config-schema.d.ts +564 -22
  204. package/dist/generated/config-schema.d.ts.map +1 -1
  205. package/dist/generated/config-schema.json +612 -24
  206. package/dist/github-check-service.d.ts +4 -6
  207. package/dist/github-check-service.d.ts.map +1 -1
  208. package/dist/github-comments.d.ts +0 -4
  209. package/dist/github-comments.d.ts.map +1 -1
  210. package/dist/index.d.ts.map +1 -1
  211. package/dist/index.js +70335 -62514
  212. package/dist/liquid-extensions.d.ts.map +1 -1
  213. package/dist/logger.d.ts +1 -0
  214. package/dist/logger.d.ts.map +1 -1
  215. package/dist/memory-store.d.ts +6 -0
  216. package/dist/memory-store.d.ts.map +1 -1
  217. package/dist/output/assistant-json/template.liquid +0 -0
  218. package/dist/output/traces/run-2025-11-21T11-50-46-505Z.ndjson +138 -0
  219. package/dist/output/traces/run-2025-11-21T11-51-33-674Z.ndjson +839 -0
  220. package/dist/output-formatters.d.ts +1 -1
  221. package/dist/output-formatters.d.ts.map +1 -1
  222. package/dist/providers/ai-check-provider.d.ts.map +1 -1
  223. package/dist/providers/check-provider-registry.d.ts +6 -0
  224. package/dist/providers/check-provider-registry.d.ts.map +1 -1
  225. package/dist/providers/check-provider.interface.d.ts +34 -1
  226. package/dist/providers/check-provider.interface.d.ts.map +1 -1
  227. package/dist/providers/claude-code-check-provider.d.ts.map +1 -1
  228. package/dist/providers/command-check-provider.d.ts +1 -1
  229. package/dist/providers/command-check-provider.d.ts.map +1 -1
  230. package/dist/providers/custom-tool-executor.d.ts +61 -0
  231. package/dist/providers/custom-tool-executor.d.ts.map +1 -0
  232. package/dist/providers/github-ops-provider.d.ts.map +1 -1
  233. package/dist/providers/http-client-provider.d.ts +1 -4
  234. package/dist/providers/http-client-provider.d.ts.map +1 -1
  235. package/dist/providers/human-input-check-provider.d.ts +3 -0
  236. package/dist/providers/human-input-check-provider.d.ts.map +1 -1
  237. package/dist/providers/index.d.ts +1 -0
  238. package/dist/providers/index.d.ts.map +1 -1
  239. package/dist/providers/log-check-provider.d.ts +2 -5
  240. package/dist/providers/log-check-provider.d.ts.map +1 -1
  241. package/dist/providers/mcp-check-provider.d.ts +9 -3
  242. package/dist/providers/mcp-check-provider.d.ts.map +1 -1
  243. package/dist/providers/memory-check-provider.d.ts +2 -8
  244. package/dist/providers/memory-check-provider.d.ts.map +1 -1
  245. package/dist/providers/script-check-provider.d.ts +25 -0
  246. package/dist/providers/script-check-provider.d.ts.map +1 -0
  247. package/dist/providers/workflow-check-provider.d.ts +56 -0
  248. package/dist/providers/workflow-check-provider.d.ts.map +1 -0
  249. package/dist/reviewer.d.ts +2 -1
  250. package/dist/reviewer.d.ts.map +1 -1
  251. package/dist/sdk/chunk-37ZSCMFC.mjs +482 -0
  252. package/dist/sdk/chunk-37ZSCMFC.mjs.map +1 -0
  253. package/dist/sdk/chunk-6Y4YTKCF.mjs +197 -0
  254. package/dist/sdk/chunk-6Y4YTKCF.mjs.map +1 -0
  255. package/dist/sdk/chunk-CNX7V5JK.mjs +89 -0
  256. package/dist/sdk/chunk-CNX7V5JK.mjs.map +1 -0
  257. package/dist/sdk/chunk-IEO6CFLG.mjs +1215 -0
  258. package/dist/sdk/chunk-IEO6CFLG.mjs.map +1 -0
  259. package/dist/sdk/chunk-JEHPDJIF.mjs +223 -0
  260. package/dist/sdk/chunk-JEHPDJIF.mjs.map +1 -0
  261. package/dist/sdk/chunk-O5EZDNYL.mjs +274 -0
  262. package/dist/sdk/chunk-O5EZDNYL.mjs.map +1 -0
  263. package/dist/sdk/{chunk-TUTOLSFV.mjs → chunk-OOZITMRU.mjs} +1 -1
  264. package/dist/sdk/chunk-OOZITMRU.mjs.map +1 -0
  265. package/dist/sdk/chunk-OWUVOILT.mjs +557 -0
  266. package/dist/sdk/chunk-OWUVOILT.mjs.map +1 -0
  267. package/dist/sdk/chunk-OZJ263FM.mjs +986 -0
  268. package/dist/sdk/chunk-OZJ263FM.mjs.map +1 -0
  269. package/dist/sdk/chunk-PTL3K3PN.mjs +3128 -0
  270. package/dist/sdk/chunk-PTL3K3PN.mjs.map +1 -0
  271. package/dist/sdk/chunk-S2RUE2RG.mjs +145 -0
  272. package/dist/sdk/chunk-S2RUE2RG.mjs.map +1 -0
  273. package/dist/sdk/chunk-VMPLF6FT.mjs +127 -0
  274. package/dist/sdk/chunk-VMPLF6FT.mjs.map +1 -0
  275. package/dist/sdk/chunk-YSN4G6CI.mjs +146 -0
  276. package/dist/sdk/chunk-YSN4G6CI.mjs.map +1 -0
  277. package/dist/sdk/chunk-ZYAUYXSW.mjs +206 -0
  278. package/dist/sdk/chunk-ZYAUYXSW.mjs.map +1 -0
  279. package/dist/sdk/config-M4ZNO6NU.mjs +14 -0
  280. package/dist/sdk/config-merger-PX3WIT57.mjs +10 -0
  281. package/dist/sdk/event-bus-5BEVPQ6T.mjs +35 -0
  282. package/dist/sdk/event-bus-5BEVPQ6T.mjs.map +1 -0
  283. package/dist/sdk/failure-condition-evaluator-NBO5YRXW.mjs +16 -0
  284. package/dist/sdk/git-repository-analyzer-HJC4MYW4.mjs +458 -0
  285. package/dist/sdk/git-repository-analyzer-HJC4MYW4.mjs.map +1 -0
  286. package/dist/sdk/github-frontend-4AWRJT7D.mjs +1242 -0
  287. package/dist/sdk/github-frontend-4AWRJT7D.mjs.map +1 -0
  288. package/dist/sdk/host-7GBC3S7L.mjs +49 -0
  289. package/dist/sdk/host-7GBC3S7L.mjs.map +1 -0
  290. package/dist/sdk/{liquid-extensions-KVL4MKRH.mjs → liquid-extensions-C7EG3YKH.mjs} +7 -2
  291. package/dist/sdk/memory-store-GJACZC2A.mjs +11 -0
  292. package/dist/sdk/metrics-7PP3EJUH.mjs +29 -0
  293. package/dist/sdk/ndjson-sink-B4V4NTAQ.mjs +44 -0
  294. package/dist/sdk/ndjson-sink-B4V4NTAQ.mjs.map +1 -0
  295. package/dist/sdk/renderer-schema-6RF26VUS.mjs +50 -0
  296. package/dist/sdk/renderer-schema-6RF26VUS.mjs.map +1 -0
  297. package/dist/sdk/routing-RP56JTV2.mjs +23 -0
  298. package/dist/sdk/routing-RP56JTV2.mjs.map +1 -0
  299. package/dist/sdk/sdk.d.mts +326 -21
  300. package/dist/sdk/sdk.d.ts +326 -21
  301. package/dist/sdk/sdk.js +21403 -16366
  302. package/dist/sdk/sdk.js.map +1 -1
  303. package/dist/sdk/sdk.mjs +13510 -2096
  304. package/dist/sdk/sdk.mjs.map +1 -1
  305. package/dist/sdk/session-registry-N5FFYFTM.mjs +10 -0
  306. package/dist/sdk/session-registry-N5FFYFTM.mjs.map +1 -0
  307. package/dist/sdk/trace-helpers-VP6QYVBX.mjs +23 -0
  308. package/dist/sdk/trace-helpers-VP6QYVBX.mjs.map +1 -0
  309. package/dist/sdk/{tracer-init-WC75N5NW.mjs → tracer-init-WP4X46IF.mjs} +2 -2
  310. package/dist/sdk/tracer-init-WP4X46IF.mjs.map +1 -0
  311. package/dist/sdk/workflow-registry-2YIIXQCK.mjs +11 -0
  312. package/dist/sdk/workflow-registry-2YIIXQCK.mjs.map +1 -0
  313. package/dist/sdk.d.ts.map +1 -1
  314. package/dist/snapshot-store.d.ts +59 -0
  315. package/dist/snapshot-store.d.ts.map +1 -0
  316. package/dist/state-machine/context/build-engine-context.d.ts +9 -0
  317. package/dist/state-machine/context/build-engine-context.d.ts.map +1 -0
  318. package/dist/state-machine/dispatch/dependency-gating.d.ts +12 -0
  319. package/dist/state-machine/dispatch/dependency-gating.d.ts.map +1 -0
  320. package/dist/state-machine/dispatch/execution-invoker.d.ts +14 -0
  321. package/dist/state-machine/dispatch/execution-invoker.d.ts.map +1 -0
  322. package/dist/state-machine/dispatch/foreach-processor.d.ts +8 -0
  323. package/dist/state-machine/dispatch/foreach-processor.d.ts.map +1 -0
  324. package/dist/state-machine/dispatch/history-snapshot.d.ts +8 -0
  325. package/dist/state-machine/dispatch/history-snapshot.d.ts.map +1 -0
  326. package/dist/state-machine/dispatch/renderer-schema.d.ts +8 -0
  327. package/dist/state-machine/dispatch/renderer-schema.d.ts.map +1 -0
  328. package/dist/state-machine/dispatch/stats-manager.d.ts +15 -0
  329. package/dist/state-machine/dispatch/stats-manager.d.ts.map +1 -0
  330. package/dist/state-machine/dispatch/template-renderer.d.ts +7 -0
  331. package/dist/state-machine/dispatch/template-renderer.d.ts.map +1 -0
  332. package/dist/state-machine/execution/summary.d.ts +8 -0
  333. package/dist/state-machine/execution/summary.d.ts.map +1 -0
  334. package/dist/state-machine/runner.d.ts +73 -0
  335. package/dist/state-machine/runner.d.ts.map +1 -0
  336. package/dist/state-machine/states/check-running.d.ts +14 -0
  337. package/dist/state-machine/states/check-running.d.ts.map +1 -0
  338. package/dist/state-machine/states/completed.d.ts +12 -0
  339. package/dist/state-machine/states/completed.d.ts.map +1 -0
  340. package/dist/state-machine/states/error.d.ts +11 -0
  341. package/dist/state-machine/states/error.d.ts.map +1 -0
  342. package/dist/state-machine/states/init.d.ts +11 -0
  343. package/dist/state-machine/states/init.d.ts.map +1 -0
  344. package/dist/state-machine/states/level-dispatch.d.ts +17 -0
  345. package/dist/state-machine/states/level-dispatch.d.ts.map +1 -0
  346. package/dist/state-machine/states/plan-ready.d.ts +12 -0
  347. package/dist/state-machine/states/plan-ready.d.ts.map +1 -0
  348. package/dist/state-machine/states/routing.d.ts +52 -0
  349. package/dist/state-machine/states/routing.d.ts.map +1 -0
  350. package/dist/state-machine/states/wave-planning.d.ts +14 -0
  351. package/dist/state-machine/states/wave-planning.d.ts.map +1 -0
  352. package/dist/state-machine/workflow-projection.d.ts +47 -0
  353. package/dist/state-machine/workflow-projection.d.ts.map +1 -0
  354. package/dist/state-machine-execution-engine.d.ts +147 -0
  355. package/dist/state-machine-execution-engine.d.ts.map +1 -0
  356. package/dist/telemetry/opentelemetry.d.ts.map +1 -1
  357. package/dist/test-runner/assertions.d.ts +59 -0
  358. package/dist/test-runner/assertions.d.ts.map +1 -0
  359. package/dist/test-runner/core/environment.d.ts +8 -0
  360. package/dist/test-runner/core/environment.d.ts.map +1 -0
  361. package/dist/test-runner/core/fixture.d.ts +3 -0
  362. package/dist/test-runner/core/fixture.d.ts.map +1 -0
  363. package/dist/test-runner/core/flow-stage.d.ts +32 -0
  364. package/dist/test-runner/core/flow-stage.d.ts.map +1 -0
  365. package/dist/test-runner/core/mocks.d.ts +8 -0
  366. package/dist/test-runner/core/mocks.d.ts.map +1 -0
  367. package/dist/test-runner/core/test-execution-wrapper.d.ts +18 -0
  368. package/dist/test-runner/core/test-execution-wrapper.d.ts.map +1 -0
  369. package/dist/test-runner/evaluators.d.ts +12 -0
  370. package/dist/test-runner/evaluators.d.ts.map +1 -0
  371. package/dist/test-runner/fixture-loader.d.ts +30 -0
  372. package/dist/test-runner/fixture-loader.d.ts.map +1 -0
  373. package/dist/test-runner/index.d.ts +120 -0
  374. package/dist/test-runner/index.d.ts.map +1 -0
  375. package/dist/test-runner/recorders/github-recorder.d.ts +23 -0
  376. package/dist/test-runner/recorders/github-recorder.d.ts.map +1 -0
  377. package/dist/test-runner/recorders/global-recorder.d.ts +4 -0
  378. package/dist/test-runner/recorders/global-recorder.d.ts.map +1 -0
  379. package/dist/test-runner/utils/selectors.d.ts +2 -0
  380. package/dist/test-runner/utils/selectors.d.ts.map +1 -0
  381. package/dist/test-runner/validator.d.ts +8 -0
  382. package/dist/test-runner/validator.d.ts.map +1 -0
  383. package/dist/traces/run-2025-11-21T11-50-46-505Z.ndjson +138 -0
  384. package/dist/traces/run-2025-11-21T11-51-33-674Z.ndjson +839 -0
  385. package/dist/types/cli.d.ts +4 -1
  386. package/dist/types/cli.d.ts.map +1 -1
  387. package/dist/types/config.d.ts +278 -5
  388. package/dist/types/config.d.ts.map +1 -1
  389. package/dist/types/engine.d.ts +172 -0
  390. package/dist/types/engine.d.ts.map +1 -0
  391. package/dist/types/execution.d.ts +73 -0
  392. package/dist/types/execution.d.ts.map +1 -0
  393. package/dist/types/github.d.ts +51 -0
  394. package/dist/types/github.d.ts.map +1 -0
  395. package/dist/types/workflow.d.ts +237 -0
  396. package/dist/types/workflow.d.ts.map +1 -0
  397. package/dist/utils/command-executor.d.ts +43 -0
  398. package/dist/utils/command-executor.d.ts.map +1 -0
  399. package/dist/utils/comment-metadata.d.ts +21 -0
  400. package/dist/utils/comment-metadata.d.ts.map +1 -0
  401. package/dist/utils/config-loader.d.ts.map +1 -1
  402. package/dist/utils/config-merger.d.ts.map +1 -1
  403. package/dist/utils/env-exposure.d.ts +3 -0
  404. package/dist/utils/env-exposure.d.ts.map +1 -0
  405. package/dist/utils/file-exclusion.d.ts.map +1 -1
  406. package/dist/utils/interactive-prompt.d.ts +1 -1
  407. package/dist/utils/interactive-prompt.d.ts.map +1 -1
  408. package/dist/utils/sandbox.d.ts.map +1 -1
  409. package/dist/utils/script-memory-ops.d.ts +21 -0
  410. package/dist/utils/script-memory-ops.d.ts.map +1 -0
  411. package/dist/utils/template-context.d.ts +7 -0
  412. package/dist/utils/template-context.d.ts.map +1 -0
  413. package/dist/webhook-server.d.ts +3 -3
  414. package/dist/webhook-server.d.ts.map +1 -1
  415. package/dist/workflow-executor.d.ts +81 -0
  416. package/dist/workflow-executor.d.ts.map +1 -0
  417. package/dist/workflow-registry.d.ts +79 -0
  418. package/dist/workflow-registry.d.ts.map +1 -0
  419. package/package.json +10 -5
  420. package/dist/output/traces/run-2025-10-22T18-22-56-873Z.ndjson +0 -218
  421. package/dist/sdk/check-execution-engine-2YYKUUSH.mjs +0 -11
  422. package/dist/sdk/check-execution-engine-6QJXYYON.mjs +0 -11
  423. package/dist/sdk/check-execution-engine-PJZ4ZOKG.mjs +0 -11
  424. package/dist/sdk/chunk-33QVZ2D4.mjs +0 -316
  425. package/dist/sdk/chunk-33QVZ2D4.mjs.map +0 -1
  426. package/dist/sdk/chunk-B5QBV2QJ.mjs +0 -752
  427. package/dist/sdk/chunk-B5QBV2QJ.mjs.map +0 -1
  428. package/dist/sdk/chunk-BVFNRCHT.mjs +0 -14129
  429. package/dist/sdk/chunk-BVFNRCHT.mjs.map +0 -1
  430. package/dist/sdk/chunk-KWZW23FG.mjs +0 -14129
  431. package/dist/sdk/chunk-KWZW23FG.mjs.map +0 -1
  432. package/dist/sdk/chunk-O4RP4BRH.mjs +0 -14092
  433. package/dist/sdk/chunk-O4RP4BRH.mjs.map +0 -1
  434. package/dist/sdk/chunk-TUTOLSFV.mjs.map +0 -1
  435. package/dist/sdk/chunk-U5D2LY66.mjs +0 -245
  436. package/dist/sdk/chunk-U5D2LY66.mjs.map +0 -1
  437. package/dist/sdk/chunk-U7X54EMV.mjs +0 -331
  438. package/dist/sdk/chunk-U7X54EMV.mjs.map +0 -1
  439. package/dist/sdk/config-merger-TWUBWFC2.mjs +0 -8
  440. package/dist/sdk/mermaid-telemetry-SN6A2TKW.mjs +0 -61
  441. package/dist/sdk/mermaid-telemetry-SN6A2TKW.mjs.map +0 -1
  442. package/dist/sdk/mermaid-telemetry-YCTIG76M.mjs +0 -61
  443. package/dist/sdk/mermaid-telemetry-YCTIG76M.mjs.map +0 -1
  444. package/dist/traces/run-2025-10-22T18-22-56-873Z.ndjson +0 -218
  445. /package/dist/sdk/{check-execution-engine-2YYKUUSH.mjs.map → config-M4ZNO6NU.mjs.map} +0 -0
  446. /package/dist/sdk/{check-execution-engine-6QJXYYON.mjs.map → config-merger-PX3WIT57.mjs.map} +0 -0
  447. /package/dist/sdk/{check-execution-engine-PJZ4ZOKG.mjs.map → failure-condition-evaluator-NBO5YRXW.mjs.map} +0 -0
  448. /package/dist/sdk/{config-merger-TWUBWFC2.mjs.map → liquid-extensions-C7EG3YKH.mjs.map} +0 -0
  449. /package/dist/sdk/{liquid-extensions-KVL4MKRH.mjs.map → memory-store-GJACZC2A.mjs.map} +0 -0
  450. /package/dist/sdk/{tracer-init-WC75N5NW.mjs.map → metrics-7PP3EJUH.mjs.map} +0 -0
@@ -0,0 +1,281 @@
1
+ version: "1.0"
2
+
3
+ # Custom Tool Definitions
4
+ # These tools can be used in any MCP block with transport: custom
5
+ tools:
6
+ # Simple grep tool for finding patterns in files
7
+ grep-pattern:
8
+ name: grep-pattern
9
+ description: Search for patterns in files using grep
10
+ inputSchema:
11
+ type: object
12
+ properties:
13
+ pattern:
14
+ type: string
15
+ description: Regular expression pattern to search for
16
+ files:
17
+ type: array
18
+ items:
19
+ type: string
20
+ description: List of files to search in
21
+ required: [pattern]
22
+ exec: 'grep -n "{{ args.pattern }}" {{ args.files | join: " " }}'
23
+ transform_js: |
24
+ // Parse grep output into structured format
25
+ const lines = output.trim().split('\n').filter(l => l);
26
+ return lines.map(line => {
27
+ const match = line.match(/^([^:]+):(\d+):(.*)$/);
28
+ if (!match) return null;
29
+ return {
30
+ file: match[1],
31
+ line: parseInt(match[2]),
32
+ content: match[3].trim()
33
+ };
34
+ }).filter(Boolean);
35
+
36
+ # Tool to count lines of code
37
+ count-lines:
38
+ name: count-lines
39
+ description: Count lines of code in files
40
+ inputSchema:
41
+ type: object
42
+ properties:
43
+ files:
44
+ type: array
45
+ items:
46
+ type: string
47
+ description: Files to count lines in
48
+ exclude_blank:
49
+ type: boolean
50
+ description: Exclude blank lines from count
51
+ exec: |
52
+ {% if args.exclude_blank %}
53
+ cat {{ args.files | join: " " }} | grep -v "^$" | wc -l
54
+ {% else %}
55
+ cat {{ args.files | join: " " }} | wc -l
56
+ {% endif %}
57
+ transform_js: 'return parseInt(output.trim());'
58
+
59
+ # Tool to check if a file contains sensitive data patterns
60
+ check-secrets:
61
+ name: check-secrets
62
+ description: Check for potential secrets in files
63
+ inputSchema:
64
+ type: object
65
+ properties:
66
+ file:
67
+ type: string
68
+ description: File to check
69
+ required: [file]
70
+ exec: |
71
+ grep -E "(api[_-]?key|secret|token|password|pwd|auth|credential)" -i "{{ args.file }}" || echo "No secrets found"
72
+ transform_js: |
73
+ if (output.includes("No secrets found")) {
74
+ return { safe: true, issues: [] };
75
+ }
76
+ const lines = output.trim().split('\n');
77
+ return {
78
+ safe: false,
79
+ issues: lines.map(line => ({
80
+ type: 'potential_secret',
81
+ content: line.substring(0, 100) // Truncate for safety
82
+ }))
83
+ };
84
+
85
+ # Tool to analyze code complexity
86
+ analyze-complexity:
87
+ name: analyze-complexity
88
+ description: Analyze code complexity metrics
89
+ inputSchema:
90
+ type: object
91
+ properties:
92
+ file:
93
+ type: string
94
+ description: Source code file to analyze
95
+ language:
96
+ type: string
97
+ description: Programming language (js, py, go, etc.)
98
+ required: [file]
99
+ exec: |
100
+ echo "Analyzing {{ args.file }}"
101
+ # Count functions/methods
102
+ {% if args.language == "js" or args.language == "ts" %}
103
+ grep -c "function\|=>" "{{ args.file }}" || echo "0"
104
+ {% elsif args.language == "py" %}
105
+ grep -c "def " "{{ args.file }}" || echo "0"
106
+ {% elsif args.language == "go" %}
107
+ grep -c "func " "{{ args.file }}" || echo "0"
108
+ {% else %}
109
+ echo "0"
110
+ {% endif %}
111
+ transform_js: |
112
+ const functionCount = parseInt(output.trim().split('\n').pop() || '0');
113
+ return {
114
+ file: args.file,
115
+ language: args.language || 'unknown',
116
+ metrics: {
117
+ functionCount: functionCount,
118
+ complexity: functionCount > 10 ? 'high' : functionCount > 5 ? 'medium' : 'low'
119
+ }
120
+ };
121
+
122
+ # Tool to validate JSON/YAML files
123
+ validate-config:
124
+ name: validate-config
125
+ description: Validate configuration file syntax
126
+ inputSchema:
127
+ type: object
128
+ properties:
129
+ file:
130
+ type: string
131
+ description: Configuration file to validate
132
+ type:
133
+ type: string
134
+ enum: [json, yaml]
135
+ description: File type to validate
136
+ required: [file, type]
137
+ exec: |
138
+ {% if args.type == "json" %}
139
+ python3 -m json.tool "{{ args.file }}" > /dev/null 2>&1 && echo "Valid JSON" || echo "Invalid JSON"
140
+ {% else %}
141
+ python3 -c "import yaml; yaml.safe_load(open('{{ args.file }}'))" 2>&1 && echo "Valid YAML" || echo "Invalid YAML"
142
+ {% endif %}
143
+ parseJson: false
144
+ transform_js: |
145
+ const isValid = output.includes("Valid");
146
+ return {
147
+ file: args.file,
148
+ type: args.type,
149
+ valid: isValid,
150
+ message: output.trim()
151
+ };
152
+
153
+ # Tool to generate file statistics
154
+ file-stats:
155
+ name: file-stats
156
+ description: Generate statistics about files
157
+ inputSchema:
158
+ type: object
159
+ properties:
160
+ pattern:
161
+ type: string
162
+ description: Glob pattern for files to analyze
163
+ exec: |
164
+ find . -name "{{ args.pattern }}" -type f | xargs wc -l | tail -1
165
+ transform_js: |
166
+ const parts = output.trim().split(/\s+/);
167
+ return {
168
+ totalLines: parseInt(parts[0] || '0'),
169
+ fileCount: Math.max(0, parts.length - 2) // Subtract total line
170
+ };
171
+
172
+ # Example usage of custom tools in checks
173
+ steps:
174
+ # Use custom tool to find TODO comments
175
+ find-todos:
176
+ type: mcp
177
+ transport: custom
178
+ method: grep-pattern
179
+ methodArgs:
180
+ pattern: "TODO|FIXME|HACK"
181
+ files: ["*.js", "*.ts", "*.py"]
182
+ transform_js: |
183
+ // Convert grep results to issues
184
+ output.map(match => ({
185
+ file: match.file,
186
+ line: match.line,
187
+ message: `Found comment: ${match.content}`,
188
+ severity: match.content.includes('FIXME') ? 'warning' : 'info',
189
+ category: 'documentation',
190
+ ruleId: 'todo-comment'
191
+ }))
192
+
193
+ # Check for secrets using custom tool
194
+ security-check:
195
+ type: mcp
196
+ transport: custom
197
+ method: check-secrets
198
+ forEach: "{{ files | map: 'filename' }}"
199
+ methodArgs:
200
+ file: "{{ item }}"
201
+ transform_js: |
202
+ if (!output.safe) {
203
+ return output.issues.map(issue => ({
204
+ file: args.file,
205
+ line: 0,
206
+ message: `Potential secret detected: ${issue.type}`,
207
+ severity: 'critical',
208
+ category: 'security',
209
+ ruleId: 'potential-secret'
210
+ }));
211
+ }
212
+ return [];
213
+
214
+ # Analyze code complexity
215
+ complexity-analysis:
216
+ type: mcp
217
+ transport: custom
218
+ method: analyze-complexity
219
+ forEach: "{{ files | where: 'filename', 'endsWith', '.js' }}"
220
+ methodArgs:
221
+ file: "{{ item.filename }}"
222
+ language: "js"
223
+ transform_js: |
224
+ const complexity = output.metrics.complexity;
225
+ if (complexity === 'high') {
226
+ return [{
227
+ file: output.file,
228
+ line: 0,
229
+ message: `High complexity detected: ${output.metrics.functionCount} functions`,
230
+ severity: 'warning',
231
+ category: 'performance',
232
+ ruleId: 'high-complexity'
233
+ }];
234
+ }
235
+ return [];
236
+
237
+ # Validate all JSON config files
238
+ validate-json-configs:
239
+ type: mcp
240
+ transport: custom
241
+ method: validate-config
242
+ forEach: "{{ files | where: 'filename', 'endsWith', '.json' }}"
243
+ methodArgs:
244
+ file: "{{ item.filename }}"
245
+ type: "json"
246
+ fail_if: "!output.valid"
247
+ transform_js: |
248
+ if (!output.valid) {
249
+ return [{
250
+ file: output.file,
251
+ line: 0,
252
+ message: output.message,
253
+ severity: 'error',
254
+ category: 'style',
255
+ ruleId: 'invalid-json'
256
+ }];
257
+ }
258
+ return [];
259
+
260
+ # Get repository statistics
261
+ repo-stats:
262
+ type: mcp
263
+ transport: custom
264
+ method: file-stats
265
+ methodArgs:
266
+ pattern: "*.{js,ts,py,go}"
267
+ transform_js: |
268
+ // Create informational message about repo size
269
+ [{
270
+ file: 'repository',
271
+ line: 0,
272
+ message: `Repository contains ${output.fileCount} source files with ${output.totalLines} total lines`,
273
+ severity: 'info',
274
+ category: 'documentation',
275
+ ruleId: 'repo-stats'
276
+ }]
277
+
278
+ # Output configuration
279
+ output:
280
+ format: table
281
+ groupBy: severity
@@ -0,0 +1,165 @@
1
+ version: "1.0"
2
+
3
+ steps:
4
+ # Security check using comprehensive liquid template
5
+ security-enhanced:
6
+ type: ai
7
+ group: security-analysis
8
+ schema: code-review
9
+ prompt:
10
+ file: "./examples/prompts/security-comprehensive.liquid"
11
+ template:
12
+ file: "./examples/templates/security-report.liquid"
13
+ on: [pr_opened, pr_updated]
14
+ ai:
15
+ provider: anthropic
16
+ model: claude-3-5-sonnet-20241022
17
+
18
+ # Architecture analysis with dependency on security
19
+ architecture:
20
+ type: ai
21
+ group: architecture-review
22
+ schema: plain
23
+ depends_on: [security-enhanced]
24
+ prompt:
25
+ file: "./examples/prompts/architecture-analysis.liquid"
26
+ on: [pr_opened]
27
+ ai:
28
+ timeout: 300000 # 5 minutes for complex analysis
29
+
30
+ # Performance check with inline liquid template
31
+ performance-context:
32
+ type: ai
33
+ group: code-review
34
+ schema: code-review
35
+ prompt:
36
+ content: |
37
+ # Performance Analysis for PR {{ pr.number }}
38
+
39
+ {% if pr.isIncremental %}
40
+ ## Incremental Analysis
41
+ Analyzing only the latest commit changes.
42
+ {% else %}
43
+ ## Full PR Analysis
44
+ Analyzing all changes in this pull request.
45
+ {% endif %}
46
+
47
+ ## Files to Analyze
48
+ {% for ext, files in utils.filesByExtension %}
49
+ ### {{ ext | upcase }} Files ({{ files.size }})
50
+ {% for file in files %}
51
+ - `{{ file.filename }}` ({{ file.status }}, {{ file.changes }} changes)
52
+ {% endfor %}
53
+ {% endfor %}
54
+
55
+ {% if utils.hasLargeChanges %}
56
+ ⚠️ **Note**: Large changes detected - pay extra attention to performance implications.
57
+ {% endif %}
58
+
59
+ ## Previous Security Context
60
+ {% if outputs.security-enhanced %}
61
+ Security analysis found {{ outputs.security-enhanced.totalIssues }} issues.
62
+ {% if outputs.security-enhanced.criticalIssues > 0 %}
63
+ Consider performance impact of security fixes needed for {{ outputs.security-enhanced.criticalIssues }} critical issues.
64
+ {% endif %}
65
+ {% endif %}
66
+
67
+ ## Focus Areas
68
+ Please analyze for performance issues including:
69
+ - Algorithm complexity and efficiency
70
+ - Database query optimization (N+1 queries, missing indexes)
71
+ - Memory usage patterns and potential leaks
72
+ - Async/await usage and blocking operations
73
+ - Bundle size impact for frontend changes
74
+ - API response time implications
75
+
76
+ Return results in JSON format matching the code-review schema.
77
+ on: [pr_opened, pr_updated]
78
+ depends_on: [security-enhanced]
79
+
80
+ # Event-aware overview using all available context
81
+ pr-overview:
82
+ type: ai
83
+ group: pr-summary
84
+ schema: plain
85
+ depends_on: [security-enhanced, performance-context]
86
+ prompt:
87
+ content: |
88
+ # 📋 Pull Request Overview: {{ pr.title }}
89
+
90
+ {% if event.comment %}
91
+ **Triggered by**: {{ event.comment.author }} commented "{{ event.comment.body }}"
92
+ {% endif %}
93
+
94
+ ## Summary
95
+ - **Repository**: {{ event.repository.fullName }}
96
+ - **Author**: {{ pr.author }}
97
+ - **Branch**: `{{ pr.headBranch }}` → `{{ pr.baseBranch }}`
98
+ - **Files**: {{ files.size }} files changed
99
+ - **Scope**: {{ pr.totalAdditions }} additions, {{ pr.totalDeletions }} deletions
100
+
101
+ ## Analysis Results Summary
102
+
103
+ {% if outputs.security-enhanced %}
104
+ ### 🔒 Security Analysis
105
+ - **Total Issues**: {{ outputs.security-enhanced.totalIssues }}
106
+ {% if outputs.security-enhanced.criticalIssues > 0 %}
107
+ - **🚨 Critical Issues**: {{ outputs.security-enhanced.criticalIssues }} requiring immediate attention
108
+ {% endif %}
109
+ {% if outputs.security-enhanced.errorIssues > 0 %}
110
+ - **❌ Errors**: {{ outputs.security-enhanced.errorIssues }}
111
+ {% endif %}
112
+ {% if outputs.security-enhanced.warningIssues > 0 %}
113
+ - **⚠️ Warnings**: {{ outputs.security-enhanced.warningIssues }}
114
+ {% endif %}
115
+ {% endif %}
116
+
117
+ {% if outputs.performance-context %}
118
+ ### ⚡ Performance Analysis
119
+ - **Total Issues**: {{ outputs.performance-context.totalIssues }}
120
+ {% if outputs.performance-context.errorIssues > 0 %}
121
+ - **Performance Errors**: {{ outputs.performance-context.errorIssues }}
122
+ {% endif %}
123
+ {% if outputs.performance-context.warningIssues > 0 %}
124
+ - **Performance Warnings**: {{ outputs.performance-context.warningIssues }}
125
+ {% endif %}
126
+ {% endif %}
127
+
128
+ ## Files Changed
129
+
130
+ | File | Type | Status | Changes |
131
+ |------|------|--------|---------|
132
+ {% for file in files %}
133
+ | `{{ file.filename }}` | {{ file.filename | split: "." | last | upcase }} | {{ file.status }} | +{{ file.additions }}/-{{ file.deletions }} |
134
+ {% endfor %}
135
+
136
+ ## Architecture Impact
137
+
138
+ {% if utils.hasLargeChanges %}
139
+ ⚠️ **Large Changes**: This PR contains significant modifications that may impact system architecture.
140
+ {% endif %}
141
+
142
+ Generate a comprehensive overview including:
143
+ 1. **Change Summary**: What this PR accomplishes
144
+ 2. **Technical Impact**: How it affects the system
145
+ 3. **Risk Assessment**: Potential concerns based on analysis results
146
+ 4. **Recommendation**: Overall assessment and next steps
147
+
148
+ {% if utils.filesByExtension.size > 3 %}
149
+ Note: Multiple file types modified - consider cross-language compatibility.
150
+ {% endif %}
151
+
152
+ Please provide a markdown overview focusing on the business and technical impact of these changes.
153
+ on: [pr_opened, pr_updated]
154
+
155
+ output:
156
+ pr_comment:
157
+ format: markdown
158
+ group_by: check
159
+ collapse: true
160
+ debug:
161
+ enabled: false
162
+ includePrompts: false
163
+ includeRawResponses: false
164
+ includeTiming: true
165
+ includeProviderInfo: true
@@ -0,0 +1,92 @@
1
+ # Base Visor Configuration
2
+ # This file contains all check definitions that environments can filter using tags
3
+
4
+ version: "1.0"
5
+
6
+ # Default AI settings (can be overridden)
7
+ ai_provider: google
8
+ ai_model: gemini-1.5-flash
9
+
10
+ # All available checks with comprehensive tagging
11
+ steps:
12
+ # ====================
13
+ # Security Checks
14
+ # ====================
15
+ security-basic:
16
+ type: ai
17
+ group: security
18
+ prompt: "Basic security scan for common vulnerabilities"
19
+ tags: ["security", "basic", "fast", "dev", "staging", "prod"]
20
+ on: [pr_opened, pr_updated]
21
+
22
+ security-advanced:
23
+ type: ai
24
+ group: security
25
+ prompt: "Advanced security audit with threat modeling"
26
+ tags: ["security", "advanced", "slow", "staging", "prod"]
27
+ on: [pr_opened]
28
+
29
+ security-experimental:
30
+ type: ai
31
+ group: security
32
+ prompt: "Experimental AI-powered vulnerability prediction"
33
+ tags: ["security", "experimental", "dev"]
34
+ on: [manual]
35
+
36
+ # ====================
37
+ # Performance Checks
38
+ # ====================
39
+ perf-basic:
40
+ type: ai
41
+ group: performance
42
+ prompt: "Basic performance analysis"
43
+ tags: ["performance", "basic", "fast", "dev", "staging", "prod"]
44
+ on: [pr_opened, pr_updated]
45
+
46
+ perf-load-testing:
47
+ type: command
48
+ group: performance
49
+ exec: "npm run test:load"
50
+ tags: ["performance", "load-testing", "slow", "staging"]
51
+ on: [pr_opened]
52
+
53
+ # ====================
54
+ # Quality Checks
55
+ # ====================
56
+ lint:
57
+ type: command
58
+ group: quality
59
+ exec: "npm run lint"
60
+ tags: ["quality", "lint", "fast", "dev", "staging", "prod"]
61
+ on: [pr_opened, pr_updated]
62
+
63
+ test-unit:
64
+ type: command
65
+ group: quality
66
+ exec: "npm test"
67
+ tags: ["quality", "testing", "fast", "dev", "staging", "prod"]
68
+ on: [pr_opened, pr_updated]
69
+
70
+ test-integration:
71
+ type: command
72
+ group: quality
73
+ exec: "npm run test:integration"
74
+ tags: ["quality", "testing", "slow", "staging", "prod"]
75
+ on: [pr_opened]
76
+
77
+ # ====================
78
+ # Documentation
79
+ # ====================
80
+ docs-check:
81
+ type: ai
82
+ group: docs
83
+ prompt: "Check documentation completeness and accuracy"
84
+ tags: ["documentation", "optional", "dev", "staging"]
85
+ on: [pr_opened, pr_updated]
86
+
87
+ # Output settings
88
+ output:
89
+ pr_comment:
90
+ format: markdown
91
+ group_by: group
92
+ collapse: true
@@ -0,0 +1,33 @@
1
+ # Development Environment Configuration
2
+ # Fast feedback for local development
3
+
4
+ version: "1.0"
5
+
6
+ # Inherit all checks from base
7
+ extends: ./visor.base.yaml
8
+
9
+ # Filter to only dev-appropriate checks
10
+ tag_filter:
11
+ include:
12
+ - dev
13
+ - fast
14
+ - basic
15
+ exclude:
16
+ - slow
17
+ - experimental
18
+ - staging
19
+ - prod
20
+
21
+ # Use faster AI model for dev
22
+ ai_model: gemini-1.5-flash
23
+
24
+ # Dev-specific settings
25
+ max_parallelism: 5 # Run checks faster locally
26
+ fail_fast: true # Stop on first error for quick feedback
27
+
28
+ # Override output for dev
29
+ output:
30
+ pr_comment:
31
+ format: table # Simpler format for terminal
32
+ group_by: check
33
+ collapse: false # Show all details
@@ -0,0 +1,95 @@
1
+ # Production Environment Configuration
2
+ # Comprehensive checks for production deployments
3
+
4
+ version: "1.0"
5
+
6
+ # Inherit all checks from base
7
+ extends: ./visor.base.yaml
8
+
9
+ # Filter for production-critical checks
10
+ tag_filter:
11
+ include:
12
+ - prod
13
+ - security
14
+ - performance
15
+ - quality
16
+ exclude:
17
+ - experimental
18
+ - dev
19
+ - optional
20
+
21
+ # Use most capable AI model for production
22
+ ai_provider: google
23
+ ai_model: gemini-1.5-pro # Or claude-3-opus for Anthropic
24
+
25
+ # Production-specific settings
26
+ max_parallelism: 1 # Sequential for consistency
27
+ fail_fast: true # Stop on critical issues
28
+ fail_if: "output.issues.some(i => i.severity === 'critical')"
29
+
30
+ # Add production-specific validations
31
+ steps:
32
+ prod-security-audit:
33
+ type: ai
34
+ group: production
35
+ prompt: |
36
+ Production security audit:
37
+ - Verify no sensitive data in code
38
+ - Check for secure communication protocols
39
+ - Validate authentication mechanisms
40
+ - Ensure proper error handling
41
+ - Check for rate limiting
42
+ tags: ["prod", "security", "critical"]
43
+ on: [pr_opened]
44
+ depends_on: [security-basic, security-advanced]
45
+
46
+ prod-performance-validation:
47
+ type: ai
48
+ group: production
49
+ prompt: |
50
+ Production performance validation:
51
+ - Verify resource limits are appropriate
52
+ - Check for potential memory leaks
53
+ - Validate caching strategies
54
+ - Ensure database query optimization
55
+ tags: ["prod", "performance", "critical"]
56
+ on: [pr_opened]
57
+ depends_on: [perf-basic]
58
+
59
+ prod-rollback-plan:
60
+ type: ai
61
+ group: production
62
+ prompt: "Verify rollback plan is documented and tested"
63
+ tags: ["prod", "deployment", "critical"]
64
+ on: [pr_opened]
65
+
66
+ # Production output configuration
67
+ output:
68
+ pr_comment:
69
+ format: markdown
70
+ group_by: group
71
+ collapse: false # Show everything for production
72
+
73
+ github_checks:
74
+ enabled: true
75
+ per_check: true
76
+ name_prefix: "Production Validation"
77
+
78
+ # Production failure conditions
79
+ failure_conditions:
80
+ critical_issues:
81
+ condition: "output.issues.filter(i => i.severity === 'critical').length > 0"
82
+ message: "Critical issues found - cannot deploy to production"
83
+ severity: error
84
+ halt_execution: true
85
+
86
+ high_risk:
87
+ condition: "output.issues.filter(i => i.severity === 'error').length > 3"
88
+ message: "Too many errors - requires review before production"
89
+ severity: error
90
+
91
+ security_risk:
92
+ condition: "output.issues.filter(i => i.category === 'security').length > 0"
93
+ message: "Security issues must be resolved before production deployment"
94
+ severity: error
95
+ halt_execution: true