@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,174 @@
1
+ version: "1.0"
2
+
3
+ # This configuration extends the tools library to reuse tool definitions
4
+ extends: ./tools-library.yaml
5
+
6
+ # Additional project-specific tools can be defined here
7
+ tools:
8
+ # Project-specific tool for checking API endpoints
9
+ check-api-endpoints:
10
+ name: check-api-endpoints
11
+ description: Verify all API endpoints are documented
12
+ inputSchema:
13
+ type: object
14
+ properties:
15
+ source_dir:
16
+ type: string
17
+ description: Directory containing API source code
18
+ docs_file:
19
+ type: string
20
+ description: API documentation file
21
+ exec: |
22
+ echo "Checking endpoints in {{ args.source_dir }} against {{ args.docs_file }}"
23
+ grep -r "router\.\(get\|post\|put\|delete\|patch\)" {{ args.source_dir }} |
24
+ sed 's/.*router\.\([a-z]*\).*"\([^"]*\)".*/\1 \2/' |
25
+ sort -u
26
+ transform_js: |
27
+ const endpoints = output.trim().split('\n').filter(l => l);
28
+ return endpoints.map(ep => {
29
+ const [method, path] = ep.split(' ');
30
+ return { method: method.toUpperCase(), path };
31
+ });
32
+
33
+ # Use both imported and local tools in checks
34
+ steps:
35
+ # Use imported git tool
36
+ check-git-status:
37
+ type: mcp
38
+ transport: custom
39
+ method: git-status
40
+ fail_if: "output.length > 10"
41
+ transform_js: |
42
+ if (output.length > 10) {
43
+ return [{
44
+ file: 'repository',
45
+ line: 0,
46
+ message: `Too many uncommitted changes: ${output.length} files`,
47
+ severity: 'warning',
48
+ category: 'style',
49
+ ruleId: 'uncommitted-changes'
50
+ }];
51
+ }
52
+ return [];
53
+
54
+ # Use imported git diff stats
55
+ analyze-pr-size:
56
+ type: mcp
57
+ transport: custom
58
+ method: git-diff-stats
59
+ methodArgs:
60
+ base: "{{ pr.base | default: 'main' }}"
61
+ fail_if: "output.filesChanged > 50 || output.insertions > 1000"
62
+ transform_js: |
63
+ const issues = [];
64
+ if (output.filesChanged > 50) {
65
+ issues.push({
66
+ file: 'pull-request',
67
+ line: 0,
68
+ message: `Large PR: ${output.filesChanged} files changed. Consider breaking into smaller PRs.`,
69
+ severity: 'warning',
70
+ category: 'style',
71
+ ruleId: 'large-pr'
72
+ });
73
+ }
74
+ if (output.insertions > 1000) {
75
+ issues.push({
76
+ file: 'pull-request',
77
+ line: 0,
78
+ message: `Too many lines added: ${output.insertions}. This may be difficult to review.`,
79
+ severity: 'warning',
80
+ category: 'style',
81
+ ruleId: 'too-many-lines'
82
+ });
83
+ }
84
+ return issues;
85
+
86
+ # Use imported npm audit tool
87
+ security-audit:
88
+ type: mcp
89
+ transport: custom
90
+ method: npm-audit
91
+ if: "files.some(f => f.filename === 'package.json')"
92
+ fail_if: "output.some(i => i.severity === 'error')"
93
+
94
+ # Use imported Docker linting tool
95
+ lint-dockerfiles:
96
+ type: mcp
97
+ transport: custom
98
+ method: docker-lint
99
+ forEach: "{{ files | where: 'filename', 'match', 'Dockerfile' }}"
100
+ methodArgs:
101
+ file: "{{ item.filename }}"
102
+
103
+ # Use imported ESLint tool
104
+ lint-javascript:
105
+ type: mcp
106
+ transport: custom
107
+ method: eslint-check
108
+ if: "files.some(f => f.filename.endsWith('.js') || f.filename.endsWith('.ts'))"
109
+ methodArgs:
110
+ files: "{{ files | where: 'filename', 'match', '\\.(js|ts)$' | map: 'filename' }}"
111
+
112
+ # Use local project-specific tool
113
+ verify-api-docs:
114
+ type: mcp
115
+ transport: custom
116
+ method: check-api-endpoints
117
+ methodArgs:
118
+ source_dir: "./src/routes"
119
+ docs_file: "./docs/api.md"
120
+ transform_js: |
121
+ // Check if all endpoints are documented
122
+ const documented = ['GET /users', 'POST /users', 'GET /posts']; // Would parse from docs_file
123
+ const undocumented = output.filter(ep =>
124
+ !documented.includes(`${ep.method} ${ep.path}`)
125
+ );
126
+
127
+ return undocumented.map(ep => ({
128
+ file: 'docs/api.md',
129
+ line: 0,
130
+ message: `Undocumented endpoint: ${ep.method} ${ep.path}`,
131
+ severity: 'warning',
132
+ category: 'documentation',
133
+ ruleId: 'missing-api-docs'
134
+ }));
135
+
136
+ # Chain multiple tools together
137
+ comprehensive-check:
138
+ type: mcp
139
+ transport: custom
140
+ method: run-tests
141
+ methodArgs:
142
+ command: "npm test"
143
+ format: "jest"
144
+ on_success:
145
+ - type: mcp
146
+ transport: custom
147
+ method: check-outdated
148
+ methodArgs:
149
+ manager: "npm"
150
+ transform_js: |
151
+ // Only warn about major version updates
152
+ return output
153
+ .filter(pkg => pkg.current.split('.')[0] !== pkg.latest.split('.')[0])
154
+ .map(pkg => ({
155
+ file: 'package.json',
156
+ line: 0,
157
+ message: `Major update available for ${pkg.package}: ${pkg.current} → ${pkg.latest}`,
158
+ severity: 'info',
159
+ category: 'documentation',
160
+ ruleId: 'major-update-available'
161
+ }));
162
+
163
+ # You can also import tools from remote URLs
164
+ # extends: https://example.com/shared-tools.yaml
165
+
166
+ # Or import multiple tool libraries
167
+ # extends:
168
+ # - ./tools-library.yaml
169
+ # - ./security-tools.yaml
170
+ # - https://example.com/quality-tools.yaml
171
+
172
+ output:
173
+ format: markdown
174
+ groupBy: category
@@ -0,0 +1,116 @@
1
+ # 🏗️ Architecture Analysis for {{ event.repository.fullName }}
2
+
3
+ ## Pull Request Overview
4
+ **PR #{{ pr.number }}**: {{ pr.title }}
5
+ - **Author**: {{ pr.author }}
6
+ - **Changes**: {{ utils.totalFiles }} files with {{ pr.totalAdditions }} additions and {{ pr.totalDeletions }} deletions
7
+
8
+ {% if pr.body %}
9
+ ### Description
10
+ {{ pr.body }}
11
+ {% endif %}
12
+
13
+ ## Previous Analysis Context
14
+
15
+ {% if outputs.security or outputs.performance or outputs.style %}
16
+ ### Related Findings from Previous Checks:
17
+
18
+ {% if outputs.security %}
19
+ **Security Analysis**: {{ outputs.security.totalIssues }} issues found
20
+ {% if outputs.security.criticalIssues > 0 %}
21
+ - 🚨 {{ outputs.security.criticalIssues }} critical security issues require architectural consideration
22
+ {% endif %}
23
+ {% endif %}
24
+
25
+ {% if outputs.performance %}
26
+ **Performance Analysis**: {{ outputs.performance.totalIssues }} issues found
27
+ {% if outputs.performance.errorIssues > 0 %}
28
+ - ⚡ {{ outputs.performance.errorIssues }} performance errors may indicate architectural problems
29
+ {% endif %}
30
+ {% endif %}
31
+
32
+ {% if outputs.style %}
33
+ **Code Style Analysis**: {{ outputs.style.totalIssues }} issues found
34
+ {% endif %}
35
+
36
+ {% else %}
37
+ *No previous analysis results available - performing standalone architectural review.*
38
+ {% endif %}
39
+
40
+ ## Component Analysis
41
+
42
+ ### File Organization
43
+ {% for ext, files in utils.filesByExtension %}
44
+ - **{{ ext | upcase }} files**: {{ files.size }}
45
+ {% for file in files %}
46
+ - `{{ file.filename }}` ({{ file.status }}{% if file.changes > 100 %}, large change: {{ file.changes }} lines{% endif %})
47
+ {% endfor %}
48
+ {% endfor %}
49
+
50
+ ### Change Impact Assessment
51
+
52
+ {% if utils.addedFiles.size > 0 %}
53
+ #### New Components ({{ utils.addedFiles.size }})
54
+ {% for file in utils.addedFiles %}
55
+ - `{{ file.filename }}` - New component requiring integration analysis
56
+ {% endfor %}
57
+ {% endif %}
58
+
59
+ {% if utils.modifiedFiles.size > 0 %}
60
+ #### Modified Components ({{ utils.modifiedFiles.size }})
61
+ {% for file in utils.modifiedFiles %}
62
+ - `{{ file.filename }}` - Changes may affect dependent systems
63
+ {% endfor %}
64
+ {% endif %}
65
+
66
+ {% if utils.removedFiles.size > 0 %}
67
+ #### Removed Components ({{ utils.removedFiles.size }})
68
+ {% for file in utils.removedFiles %}
69
+ - `{{ file.filename }}` - Removal may break dependent systems
70
+ {% endfor %}
71
+ {% endif %}
72
+
73
+ ## Architecture Review Focus
74
+
75
+ ### 1. System Design Principles
76
+ Evaluate adherence to:
77
+ - **Single Responsibility Principle**: Each module has one clear purpose
78
+ - **Open/Closed Principle**: Code is open for extension, closed for modification
79
+ - **Dependency Inversion**: Depend on abstractions, not concretions
80
+ - **Separation of Concerns**: Clear boundaries between different functionalities
81
+
82
+ ### 2. Module Dependencies
83
+ - Analyze dependency relationships and circular dependencies
84
+ - Evaluate coupling between components
85
+ - Assess cohesion within modules
86
+ - Review dependency injection patterns
87
+
88
+ ### 3. Scalability & Maintainability
89
+ - Code reusability and extensibility
90
+ - Configuration management approach
91
+ - Error handling and logging architecture
92
+ - Documentation and code clarity
93
+
94
+ ### 4. Integration Patterns
95
+ - API design and contracts
96
+ - Database schema changes and migration strategy
97
+ - Event handling and messaging patterns
98
+ - Service boundaries and interfaces
99
+
100
+ ### 5. Technical Debt Assessment
101
+ - Code duplication and refactoring opportunities
102
+ - Legacy code integration concerns
103
+ - Performance architecture implications
104
+ - Testing strategy and coverage architecture
105
+
106
+ ## Deliverables
107
+
108
+ Please provide a comprehensive architectural analysis in markdown format including:
109
+
110
+ 1. **Architecture Impact Summary** - High-level assessment of changes
111
+ 2. **Component Interaction Diagram** - Mermaid diagram showing relationships
112
+ 3. **Risk Assessment** - Potential architectural risks and mitigation strategies
113
+ 4. **Recommendations** - Specific suggestions for architectural improvements
114
+ 5. **Migration Considerations** - Any deployment or database migration concerns
115
+
116
+ Focus on how these changes fit into the overall system architecture and their long-term maintainability implications.
@@ -0,0 +1,107 @@
1
+ # 🔒 Security Review for PR {{ pr.number }}: {{ pr.title }}
2
+
3
+ ## Context Information
4
+ - **Author**: {{ pr.author }}
5
+ - **Branch**: `{{ pr.headBranch }}` → `{{ pr.baseBranch }}`
6
+ - **Files Changed**: {{ files.size }}
7
+ - **Total Changes**: +{{ pr.totalAdditions }}/-{{ pr.totalDeletions }}
8
+
9
+ {% if event.comment %}
10
+ **Triggered by comment**: "{{ event.comment.body }}" from {{ event.comment.author }}
11
+ {% endif %}
12
+
13
+ ## File Analysis
14
+
15
+ {% assign tsFiles = utils.filesByExtension.ts %}
16
+ {% assign jsFiles = utils.filesByExtension.js %}
17
+ {% assign configFiles = utils.filesByExtension.json %}
18
+
19
+ {% if tsFiles.size > 0 %}
20
+ ### TypeScript Files to Review ({{ tsFiles.size }})
21
+ {% for file in tsFiles %}
22
+ - `{{ file.filename }}` (+{{ file.additions }}/-{{ file.deletions }}) - {{ file.status }}
23
+ {% endfor %}
24
+ {% endif %}
25
+
26
+ {% if jsFiles.size > 0 %}
27
+ ### JavaScript Files to Review ({{ jsFiles.size }})
28
+ {% for file in jsFiles %}
29
+ - `{{ file.filename }}` (+{{ file.additions }}/-{{ file.deletions }}) - {{ file.status }}
30
+ {% endfor %}
31
+ {% endif %}
32
+
33
+ {% if configFiles.size > 0 %}
34
+ ### Configuration Files ({{ configFiles.size }})
35
+ {% for file in configFiles %}
36
+ - `{{ file.filename }}` - Pay special attention to security configurations
37
+ {% endfor %}
38
+ {% endif %}
39
+
40
+ ## Previous Security Findings
41
+
42
+ {% if outputs.security %}
43
+ Previous security scan found {{ outputs.security.totalIssues }} issues:
44
+ - 🔴 **Critical**: {{ outputs.security.criticalIssues }}
45
+ - 🟠 **Errors**: {{ outputs.security.errorIssues }}
46
+ - 🟡 **Warnings**: {{ outputs.security.warningIssues }}
47
+ - 🔵 **Info**: {{ outputs.security.infoIssues }}
48
+
49
+ {% if outputs.security.securityIssues.size > 0 %}
50
+ ### Existing Security Issues to Address:
51
+ {% for issue in outputs.security.securityIssues %}
52
+ - **{{ issue.severity | upcase }}** in `{{ issue.file }}:{{ issue.line }}`: {{ issue.message }}
53
+ {% if issue.suggestion %}💡 *{{ issue.suggestion }}*{% endif %}
54
+ {% endfor %}
55
+ {% endif %}
56
+
57
+ {% else %}
58
+ No previous security analysis available - performing fresh security review.
59
+ {% endif %}
60
+
61
+ ## Review Focus Areas
62
+
63
+ {% if utils.hasLargeChanges %}
64
+ ⚠️ **Large Changes Detected** - This PR requires extra careful review due to significant modifications.
65
+ {% endif %}
66
+
67
+ Please perform a comprehensive security analysis focusing on:
68
+
69
+ ### 1. Authentication & Authorization
70
+ - JWT token handling and validation
71
+ - Session management security
72
+ - Role-based access control implementation
73
+ - Authentication bypass possibilities
74
+
75
+ ### 2. Input Validation & Sanitization
76
+ - SQL injection vulnerabilities
77
+ - XSS attack vectors
78
+ - Command injection risks
79
+ - File upload security
80
+
81
+ ### 3. Cryptography & Secrets
82
+ - Proper use of cryptographic functions
83
+ - Secret management and storage
84
+ - API key and token security
85
+ - Encryption at rest and in transit
86
+
87
+ ### 4. Infrastructure Security
88
+ - Configuration security
89
+ - Dependency vulnerabilities
90
+ - Environment variable handling
91
+ - Error message information disclosure
92
+
93
+ ### 5. Data Protection
94
+ - Sensitive data exposure
95
+ - Data validation and sanitization
96
+ - Privacy compliance considerations
97
+ - Audit logging security
98
+
99
+ ## Analysis Instructions
100
+
101
+ Return results in JSON format matching the code-review schema with:
102
+ - Specific file locations and line numbers
103
+ - Clear severity classifications (critical/error/warning/info)
104
+ - Actionable remediation suggestions
105
+ - Reference to security best practices where applicable
106
+
107
+ Focus on newly added or modified code, but consider how changes interact with existing security measures.
@@ -0,0 +1,53 @@
1
+ # Quick Start: Visor with Tags
2
+ # Simple configuration showing basic tag usage
3
+
4
+ version: "1.0"
5
+
6
+ # Define your checks with appropriate tags
7
+ steps:
8
+ # Fast check for local development
9
+ quick-review:
10
+ type: ai
11
+ prompt: |
12
+ Quick code review focusing on:
13
+ - Obvious bugs and errors
14
+ - Security issues (SQL injection, XSS)
15
+ - Performance problems (N+1 queries, infinite loops)
16
+ Keep it brief and actionable.
17
+ tags: ["local", "fast"]
18
+ on: [pr_opened, pr_updated]
19
+
20
+ # Comprehensive check for CI/CD
21
+ thorough-review:
22
+ type: ai
23
+ prompt: |
24
+ Comprehensive code review including:
25
+ - Security vulnerabilities (OWASP Top 10)
26
+ - Performance optimization opportunities
27
+ - Code quality and maintainability
28
+ - Architecture and design patterns
29
+ - Test coverage gaps
30
+ Provide detailed feedback with examples.
31
+ tags: ["remote", "comprehensive"]
32
+ on: [pr_opened]
33
+
34
+ # Optional style check
35
+ style-review:
36
+ type: ai
37
+ prompt: "Check code style, formatting, and naming conventions"
38
+ tags: ["style", "optional", "fast"]
39
+ on: [pr_opened, pr_updated]
40
+
41
+ # Usage Examples:
42
+ #
43
+ # Local development (pre-commit hook):
44
+ # visor --tags local,fast
45
+ #
46
+ # CI pipeline:
47
+ # visor --tags remote,comprehensive
48
+ #
49
+ # Everything except optional:
50
+ # visor --exclude-tags optional
51
+ #
52
+ # Just style checks:
53
+ # visor --tags style
@@ -0,0 +1,35 @@
1
+ version: "2.0"
2
+
3
+ # Basic failure routing: retry + goto ancestor
4
+ routing:
5
+ max_loops: 5
6
+ defaults:
7
+ on_fail:
8
+ retry:
9
+ max: 1
10
+ backoff: { mode: exponential, delay_ms: 400 }
11
+
12
+ steps:
13
+ setup-env:
14
+ type: command
15
+ exec: "echo '[setup] preparing environment'"
16
+
17
+ flaky:
18
+ type: command
19
+ depends_on: [setup-env]
20
+ exec: |
21
+ FLAG=".visor_demo_flaky"
22
+ if [ ! -f "$FLAG" ]; then
23
+ echo "first attempt failing" >&2
24
+ touch "$FLAG"
25
+ exit 1
26
+ fi
27
+ echo "second attempt OK"
28
+ on_fail:
29
+ goto: setup-env
30
+
31
+ cleanup:
32
+ type: command
33
+ depends_on: [flaky]
34
+ exec: "rm -f .visor_demo_flaky && echo '[cleanup] done'"
35
+
@@ -0,0 +1,46 @@
1
+ version: "2.0"
2
+
3
+ # Dynamic routing using *_js hooks
4
+ routing:
5
+ max_loops: 6
6
+
7
+ steps:
8
+ setup:
9
+ type: command
10
+ exec: "echo '[setup] install deps'"
11
+
12
+ lint-fix:
13
+ type: command
14
+ exec: "echo '[lint-fix] apply fixes'"
15
+
16
+ target:
17
+ type: command
18
+ depends_on: [setup]
19
+ exec: |
20
+ # Simulate a missing module error on first try
21
+ FLAG=".visor_demo_dynamic"
22
+ if [ ! -f "$FLAG" ]; then
23
+ echo "module not found: axios" >&2
24
+ touch "$FLAG"
25
+ exit 1
26
+ fi
27
+ echo "[target] succeeded"
28
+ on_fail:
29
+ goto_js: |
30
+ // If we see a missing module message, jump back to setup
31
+ if ((error.message||'').toLowerCase().includes('module not found')) return 'setup';
32
+ if ((error.stderr||'').toLowerCase().includes('module not found')) return 'setup';
33
+ return null;
34
+ run_js: |
35
+ // If lint is mentioned, add lint-fix dynamically
36
+ const out = [];
37
+ const s = (error.stderr||'').toLowerCase();
38
+ if (s.includes('lint')) out.push('lint-fix');
39
+ return out;
40
+ retry: { max: 1, backoff: { mode: fixed, delay_ms: 200 } }
41
+
42
+ cleanup:
43
+ type: command
44
+ depends_on: [target]
45
+ exec: "rm -f .visor_demo_dynamic && echo '[cleanup] done'"
46
+
@@ -0,0 +1,34 @@
1
+ version: "2.0"
2
+
3
+ # forEach + failure routing: remediate missing markers, then retry
4
+ routing:
5
+ max_loops: 6
6
+
7
+ steps:
8
+ list:
9
+ type: command
10
+ exec: "echo '[\"alpha\",\"beta\"]'"
11
+ forEach: true
12
+
13
+ mark:
14
+ type: command
15
+ depends_on: [list]
16
+ exec: "touch .visor_demo_marker_{{ outputs.list }} && echo '[mark] {{ outputs.list }}'"
17
+
18
+ process:
19
+ type: command
20
+ depends_on: [list]
21
+ exec: |
22
+ FILE=".visor_demo_marker_{{ outputs.list }}"
23
+ if [ -f "$FILE" ]; then echo "[process] {{ outputs.list }} ready"; exit 0; fi
24
+ echo "[process] missing marker for {{ outputs.list }}" >&2
25
+ exit 1
26
+ on_fail:
27
+ run: [mark]
28
+ retry: { max: 1, backoff: { mode: fixed, delay_ms: 200 } }
29
+
30
+ cleanup:
31
+ type: command
32
+ depends_on: [process]
33
+ exec: "rm -f .visor_demo_marker_* && echo '[cleanup] done'"
34
+
@@ -0,0 +1,34 @@
1
+ version: "2.0"
2
+
3
+ steps:
4
+ # A typical PR overview step that runs on PR events
5
+ overview:
6
+ type: ai
7
+ on: [pr_opened, pr_updated]
8
+ schema: overview
9
+ prompt: |
10
+ Return JSON matching the `overview` schema with a concise markdown summary.
11
+
12
+ # A downstream check that, after succeeding, wants to refresh overview as if a PR update occurred
13
+ quality:
14
+ type: ai
15
+ depends_on: [overview]
16
+ on: [pr_opened, pr_updated]
17
+ prompt: |
18
+ Analyze code quality aspects.
19
+ on_success:
20
+ goto: overview # Jump to ancestor
21
+ goto_event: pr_updated
22
+
23
+ # A command demonstrating conditional jumps based on state
24
+ validate:
25
+ type: command
26
+ depends_on: [quality]
27
+ exec: |
28
+ echo "validate"
29
+ on_fail:
30
+ goto_js: |
31
+ // Demonstration: dynamically pick an ancestor once
32
+ return attempt === 1 ? 'overview' : null
33
+ goto_event: pr_updated
34
+
@@ -0,0 +1,25 @@
1
+ version: "2.0"
2
+
3
+ # Success routing: run post-steps and jump back once to re-validate
4
+ routing:
5
+ max_loops: 5
6
+
7
+ steps:
8
+ unit-tests:
9
+ type: command
10
+ exec: "echo '[unit] ok'"
11
+
12
+ build:
13
+ type: command
14
+ depends_on: [unit-tests]
15
+ exec: "echo '[build] ok'"
16
+ on_success:
17
+ run: [notify]
18
+ goto_js: |
19
+ // Jump back only once to re-run unit-tests after build
20
+ return attempt === 1 ? 'unit-tests' : null;
21
+
22
+ notify:
23
+ type: command
24
+ exec: "echo '[notify] sent'"
25
+