@probelabs/visor 0.1.106 → 0.1.111

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (530) hide show
  1. package/README.md +71 -2
  2. package/action.yml +1 -1
  3. package/defaults/code-refiner.yaml +114 -0
  4. package/defaults/{.visor.yaml → code-review.yaml} +35 -226
  5. package/defaults/override.yaml +52 -0
  6. package/defaults/task-refinement.yaml +624 -0
  7. package/defaults/visor.tests.yaml +685 -0
  8. package/defaults/visor.yaml +483 -0
  9. package/dist/action-cli-bridge.d.ts +11 -82
  10. package/dist/action-cli-bridge.d.ts.map +1 -1
  11. package/dist/ai-review-service.d.ts +28 -9
  12. package/dist/ai-review-service.d.ts.map +1 -1
  13. package/dist/check-execution-engine.d.ts +19 -331
  14. package/dist/check-execution-engine.d.ts.map +1 -1
  15. package/dist/cli-main.d.ts.map +1 -1
  16. package/dist/cli.d.ts +0 -1
  17. package/dist/cli.d.ts.map +1 -1
  18. package/dist/config.d.ts +16 -0
  19. package/dist/config.d.ts.map +1 -1
  20. package/dist/cron-scheduler.d.ts +3 -3
  21. package/dist/cron-scheduler.d.ts.map +1 -1
  22. package/dist/debug-visualizer/ws-server.d.ts +7 -1
  23. package/dist/debug-visualizer/ws-server.d.ts.map +1 -1
  24. package/dist/defaults/code-refiner.yaml +114 -0
  25. package/dist/defaults/{.visor.yaml → code-review.yaml} +35 -226
  26. package/dist/defaults/override.yaml +52 -0
  27. package/dist/defaults/task-refinement.yaml +624 -0
  28. package/dist/defaults/visor.tests.yaml +685 -0
  29. package/dist/defaults/visor.yaml +483 -0
  30. package/dist/docs/DEPLOYMENT.md +118 -0
  31. package/dist/docs/GITHUB_CHECKS.md +280 -0
  32. package/dist/docs/NPM_USAGE.md +208 -0
  33. package/dist/docs/action-reference.md +19 -0
  34. package/dist/docs/advanced-ai.md +237 -0
  35. package/dist/docs/ai-configuration.md +535 -0
  36. package/dist/docs/ai-custom-tools-usage.md +261 -0
  37. package/dist/docs/ai-custom-tools.md +392 -0
  38. package/dist/docs/author-permissions.md +610 -0
  39. package/dist/docs/bot-transports-rfc.md +23 -0
  40. package/dist/docs/ci-cli-mode.md +34 -0
  41. package/dist/docs/claude-code.md +74 -0
  42. package/dist/docs/command-provider.md +559 -0
  43. package/dist/docs/commands.md +8 -0
  44. package/dist/docs/configuration.md +324 -0
  45. package/dist/docs/custom-tools.md +424 -0
  46. package/dist/docs/dashboards/README.md +23 -0
  47. package/dist/docs/dashboards/grafana-visor-diagrams.json +20 -0
  48. package/dist/docs/dashboards/grafana-visor-overview.json +33 -0
  49. package/dist/docs/debug-visualizer-progress.md +572 -0
  50. package/dist/docs/debug-visualizer-rfc.md +691 -0
  51. package/dist/docs/debug-visualizer.md +114 -0
  52. package/dist/docs/debugging.md +636 -0
  53. package/dist/docs/default-output-schema.md +28 -0
  54. package/dist/docs/dependencies.md +369 -0
  55. package/dist/docs/dev-playbook.md +9 -0
  56. package/dist/docs/engine-pause-resume-rfc.md +192 -0
  57. package/dist/docs/engine-state-machine-plan.md +333 -0
  58. package/dist/docs/event-driven-github-integration-rfc.md +743 -0
  59. package/dist/docs/event-triggers.md +292 -0
  60. package/dist/docs/execution-statistics-rfc.md +290 -0
  61. package/dist/docs/fact-validator-gap-analysis.md +178 -0
  62. package/dist/docs/fact-validator-implementation-plan.md +1235 -0
  63. package/dist/docs/fail-if.md +95 -0
  64. package/dist/docs/failure-conditions-implementation.md +271 -0
  65. package/dist/docs/failure-conditions-schema.md +173 -0
  66. package/dist/docs/failure-routing-rfc.md +193 -0
  67. package/dist/docs/failure-routing.md +507 -0
  68. package/dist/docs/foreach-dependency-propagation.md +473 -0
  69. package/dist/docs/github-ops.md +89 -0
  70. package/dist/docs/goto-forward-run-plan.md +113 -0
  71. package/dist/docs/guides/criticality-modes.md +332 -0
  72. package/dist/docs/guides/fault-management-and-contracts.md +738 -0
  73. package/dist/docs/guides/workflow-style-guide.md +224 -0
  74. package/dist/docs/http.md +299 -0
  75. package/dist/docs/human-input-provider.md +372 -0
  76. package/dist/docs/lifecycle-hooks.md +253 -0
  77. package/dist/docs/limits.md +64 -0
  78. package/dist/docs/liquid-templates.md +490 -0
  79. package/dist/docs/loop-routing-refactor.md +89 -0
  80. package/dist/docs/mcp-provider.md +557 -0
  81. package/dist/docs/mcp.md +124 -0
  82. package/dist/docs/memory.md +903 -0
  83. package/dist/docs/observability.md +12 -0
  84. package/dist/docs/output-formats.md +20 -0
  85. package/dist/docs/output-formatting.md +29 -0
  86. package/dist/docs/output-history.md +383 -0
  87. package/dist/docs/performance.md +6 -0
  88. package/dist/docs/pluggable.md +124 -0
  89. package/dist/docs/proposals/snapshot-scope-execution.md +236 -0
  90. package/dist/docs/providers/git-checkout.md +589 -0
  91. package/dist/docs/recipes.md +474 -0
  92. package/dist/docs/rfc/git-checkout-step.md +601 -0
  93. package/dist/docs/rfc/on_init-hook.md +1294 -0
  94. package/dist/docs/rfc/workspace-isolation.md +216 -0
  95. package/dist/docs/roadmap/criticality-implementation-tasks.md +92 -0
  96. package/dist/docs/router-patterns.md +339 -0
  97. package/dist/docs/schema-next-pr.md +10 -0
  98. package/dist/docs/schema-templates.md +68 -0
  99. package/dist/docs/script.md +34 -0
  100. package/dist/docs/sdk.md +222 -0
  101. package/dist/docs/security.md +7 -0
  102. package/dist/docs/suppressions.md +89 -0
  103. package/dist/docs/tag-filtering.md +258 -0
  104. package/dist/docs/telemetry-setup.md +119 -0
  105. package/dist/docs/telemetry-tracing-rfc.md +275 -0
  106. package/dist/docs/test-framework-rfc.md +680 -0
  107. package/dist/docs/testing/assertions.md +85 -0
  108. package/dist/docs/testing/ci.md +44 -0
  109. package/dist/docs/testing/cli.md +41 -0
  110. package/dist/docs/testing/cookbook.md +172 -0
  111. package/dist/docs/testing/dsl-reference.md +199 -0
  112. package/dist/docs/testing/fixtures-and-mocks.md +91 -0
  113. package/dist/docs/testing/flows.md +92 -0
  114. package/dist/docs/testing/getting-started.md +93 -0
  115. package/dist/docs/testing/troubleshooting.md +55 -0
  116. package/dist/docs/timeouts.md +50 -0
  117. package/dist/docs/troubleshooting.md +7 -0
  118. package/dist/docs/visor-sdk-rfc.md +186 -0
  119. package/dist/docs/workflows.md +569 -0
  120. package/dist/engine/on-finish/orchestrator.d.ts +19 -0
  121. package/dist/engine/on-finish/orchestrator.d.ts.map +1 -0
  122. package/dist/engine/on-finish/utils.d.ts +44 -0
  123. package/dist/engine/on-finish/utils.d.ts.map +1 -0
  124. package/dist/event-bus/event-bus.d.ts +13 -0
  125. package/dist/event-bus/event-bus.d.ts.map +1 -0
  126. package/dist/event-bus/types.d.ts +71 -0
  127. package/dist/event-bus/types.d.ts.map +1 -0
  128. package/dist/examples/.claude/agents/code-reviewer.md +69 -0
  129. package/dist/examples/.mcp.json +34 -0
  130. package/dist/examples/CALCULATOR-SDK.md +364 -0
  131. package/dist/examples/README.md +384 -0
  132. package/dist/examples/ai-custom-tools-example.yaml +206 -0
  133. package/dist/examples/ai-custom-tools-simple.yaml +76 -0
  134. package/dist/examples/ai-retry-fallback-config.yaml +180 -0
  135. package/dist/examples/ai-with-bash.yaml +126 -0
  136. package/dist/examples/ai-with-mcp.yaml +82 -0
  137. package/dist/examples/basic-human-input.yaml +15 -0
  138. package/dist/examples/bedrock-config.yaml +77 -0
  139. package/dist/examples/calculator-config.yaml +133 -0
  140. package/dist/examples/calculator-json-output-guide.md +311 -0
  141. package/dist/examples/calculator-sdk-automated.ts +340 -0
  142. package/dist/examples/calculator-sdk-example.ts +275 -0
  143. package/dist/examples/calculator-sdk-json.ts +331 -0
  144. package/dist/examples/calculator-sdk-real.ts +374 -0
  145. package/dist/examples/calculator-sdk-test.ts +148 -0
  146. package/dist/examples/claude-code-config.yaml +191 -0
  147. package/dist/examples/cron-webhook-config.yaml +215 -0
  148. package/dist/examples/custom-template.liquid +57 -0
  149. package/dist/examples/custom-tools-example.yaml +281 -0
  150. package/dist/examples/enhanced-config.yaml +165 -0
  151. package/dist/examples/environments/visor.base.yaml +92 -0
  152. package/dist/examples/environments/visor.dev.yaml +33 -0
  153. package/dist/examples/environments/visor.prod.yaml +95 -0
  154. package/dist/examples/environments/visor.staging.yaml +46 -0
  155. package/dist/examples/fact-validator.yaml +361 -0
  156. package/dist/examples/fail-if-simple.yaml +90 -0
  157. package/dist/examples/failure-conditions-advanced.yaml +136 -0
  158. package/dist/examples/failure-conditions-basic.yaml +48 -0
  159. package/dist/examples/failure-conditions-github-style.yaml +119 -0
  160. package/dist/examples/failure-conditions-migration.yaml +74 -0
  161. package/dist/examples/for-loop-example.yaml +176 -0
  162. package/dist/examples/forEach-example.yaml +120 -0
  163. package/dist/examples/git-checkout-basic.yaml +32 -0
  164. package/dist/examples/git-checkout-compare.yaml +59 -0
  165. package/dist/examples/git-checkout-cross-repo.yaml +76 -0
  166. package/dist/examples/github-workflow-with-tags.yml +163 -0
  167. package/dist/examples/http-integration-config.yaml +240 -0
  168. package/dist/examples/https-server-config.yaml +209 -0
  169. package/dist/examples/human-input-example.yaml +63 -0
  170. package/dist/examples/if-conditions.yaml +173 -0
  171. package/dist/examples/jira-simple-example.yaml +56 -0
  172. package/dist/examples/jira-single-issue-workflow.yaml +166 -0
  173. package/dist/examples/jira-workflow-mcp.yaml +182 -0
  174. package/dist/examples/mcp/analyzer.py +119 -0
  175. package/dist/examples/mcp-provider-example.yaml +301 -0
  176. package/dist/examples/memory-counter.yaml +99 -0
  177. package/dist/examples/memory-error-collection.yaml +104 -0
  178. package/dist/examples/memory-exec-js.yaml +247 -0
  179. package/dist/examples/memory-namespace-isolation.yaml +184 -0
  180. package/dist/examples/memory-retry-counter.yaml +65 -0
  181. package/dist/examples/memory-state-machine.yaml +170 -0
  182. package/dist/examples/on-init-import-demo.yaml +179 -0
  183. package/dist/examples/outputs-raw-basic.yaml +26 -0
  184. package/dist/examples/project-with-tools.yaml +174 -0
  185. package/dist/examples/prompts/architecture-analysis.liquid +116 -0
  186. package/dist/examples/prompts/security-comprehensive.liquid +107 -0
  187. package/dist/examples/quick-start-tags.yaml +53 -0
  188. package/dist/examples/reusable-tools.yaml +92 -0
  189. package/dist/examples/reusable-workflows.yaml +88 -0
  190. package/dist/examples/routing-basic.yaml +35 -0
  191. package/dist/examples/routing-dynamic-js.yaml +46 -0
  192. package/dist/examples/routing-foreach.yaml +34 -0
  193. package/dist/examples/routing-goto-event.yaml +34 -0
  194. package/dist/examples/routing-on-success.yaml +25 -0
  195. package/dist/examples/run-calculator-demo.sh +71 -0
  196. package/dist/examples/sdk-basic.mjs +10 -0
  197. package/dist/examples/sdk-cjs.cjs +10 -0
  198. package/dist/examples/sdk-comprehensive.mjs +175 -0
  199. package/dist/examples/sdk-manual-config.mjs +65 -0
  200. package/dist/examples/sdk-typescript.js +81 -0
  201. package/dist/examples/sdk-typescript.ts +92 -0
  202. package/dist/examples/session-reuse-config.yaml +151 -0
  203. package/dist/examples/session-reuse-self.yaml +81 -0
  204. package/dist/examples/slack-simple-chat.yaml +775 -0
  205. package/dist/examples/templates/security-report.liquid +137 -0
  206. package/dist/examples/tools-library.yaml +281 -0
  207. package/dist/examples/transform-example.yaml +199 -0
  208. package/dist/examples/visor-with-tags.yaml +198 -0
  209. package/dist/examples/webhook-pipeline-config.yaml +218 -0
  210. package/dist/examples/workflows/calculator-workflow.yaml +163 -0
  211. package/dist/examples/workflows/code-quality.yaml +222 -0
  212. package/dist/examples/workflows/quick-pr-check.yaml +90 -0
  213. package/dist/examples/workflows/workflow-composition-example.yaml +130 -0
  214. package/dist/failure-condition-evaluator.d.ts +3 -0
  215. package/dist/failure-condition-evaluator.d.ts.map +1 -1
  216. package/dist/frontends/github-frontend.d.ts +58 -0
  217. package/dist/frontends/github-frontend.d.ts.map +1 -0
  218. package/dist/frontends/host.d.ts +47 -0
  219. package/dist/frontends/host.d.ts.map +1 -0
  220. package/dist/frontends/ndjson-sink.d.ts +12 -0
  221. package/dist/frontends/ndjson-sink.d.ts.map +1 -0
  222. package/dist/frontends/slack-frontend.d.ts +58 -0
  223. package/dist/frontends/slack-frontend.d.ts.map +1 -0
  224. package/dist/generated/config-schema.d.ts +967 -57
  225. package/dist/generated/config-schema.d.ts.map +1 -1
  226. package/dist/generated/config-schema.json +1033 -56
  227. package/dist/github-check-service.d.ts +4 -6
  228. package/dist/github-check-service.d.ts.map +1 -1
  229. package/dist/github-comments.d.ts +2 -4
  230. package/dist/github-comments.d.ts.map +1 -1
  231. package/dist/index.d.ts.map +1 -1
  232. package/dist/index.js +134327 -99004
  233. package/dist/liquid-extensions.d.ts.map +1 -1
  234. package/dist/logger.d.ts +2 -0
  235. package/dist/logger.d.ts.map +1 -1
  236. package/dist/memory-store.d.ts +6 -0
  237. package/dist/memory-store.d.ts.map +1 -1
  238. package/dist/output/assistant-json/template.liquid +0 -0
  239. package/dist/output/traces/run-2026-01-20T19-22-58-043Z.ndjson +138 -0
  240. package/dist/output/traces/run-2026-01-20T19-23-52-175Z.ndjson +1067 -0
  241. package/dist/output-formatters.d.ts +1 -1
  242. package/dist/output-formatters.d.ts.map +1 -1
  243. package/dist/providers/ai-check-provider.d.ts +12 -0
  244. package/dist/providers/ai-check-provider.d.ts.map +1 -1
  245. package/dist/providers/check-provider-registry.d.ts +6 -0
  246. package/dist/providers/check-provider-registry.d.ts.map +1 -1
  247. package/dist/providers/check-provider.interface.d.ts +43 -1
  248. package/dist/providers/check-provider.interface.d.ts.map +1 -1
  249. package/dist/providers/claude-code-check-provider.d.ts.map +1 -1
  250. package/dist/providers/command-check-provider.d.ts +1 -1
  251. package/dist/providers/command-check-provider.d.ts.map +1 -1
  252. package/dist/providers/custom-tool-executor.d.ts +61 -0
  253. package/dist/providers/custom-tool-executor.d.ts.map +1 -0
  254. package/dist/providers/git-checkout-provider.d.ts +25 -0
  255. package/dist/providers/git-checkout-provider.d.ts.map +1 -0
  256. package/dist/providers/github-ops-provider.d.ts.map +1 -1
  257. package/dist/providers/http-client-provider.d.ts +4 -4
  258. package/dist/providers/http-client-provider.d.ts.map +1 -1
  259. package/dist/providers/human-input-check-provider.d.ts +5 -0
  260. package/dist/providers/human-input-check-provider.d.ts.map +1 -1
  261. package/dist/providers/index.d.ts +1 -0
  262. package/dist/providers/index.d.ts.map +1 -1
  263. package/dist/providers/log-check-provider.d.ts +2 -5
  264. package/dist/providers/log-check-provider.d.ts.map +1 -1
  265. package/dist/providers/mcp-check-provider.d.ts +10 -4
  266. package/dist/providers/mcp-check-provider.d.ts.map +1 -1
  267. package/dist/providers/mcp-custom-sse-server.d.ts +66 -0
  268. package/dist/providers/mcp-custom-sse-server.d.ts.map +1 -0
  269. package/dist/providers/memory-check-provider.d.ts +2 -8
  270. package/dist/providers/memory-check-provider.d.ts.map +1 -1
  271. package/dist/providers/script-check-provider.d.ts +25 -0
  272. package/dist/providers/script-check-provider.d.ts.map +1 -0
  273. package/dist/providers/workflow-check-provider.d.ts +56 -0
  274. package/dist/providers/workflow-check-provider.d.ts.map +1 -0
  275. package/dist/reviewer.d.ts +2 -1
  276. package/dist/reviewer.d.ts.map +1 -1
  277. package/dist/sdk/check-provider-registry-534KL5HT.mjs +27 -0
  278. package/dist/sdk/chunk-23L3QRYX.mjs +16872 -0
  279. package/dist/sdk/chunk-23L3QRYX.mjs.map +1 -0
  280. package/dist/sdk/{chunk-TUTOLSFV.mjs → chunk-3OMWVM6J.mjs} +11 -1
  281. package/dist/sdk/chunk-3OMWVM6J.mjs.map +1 -0
  282. package/dist/sdk/chunk-7UK3NIIT.mjs +482 -0
  283. package/dist/sdk/chunk-7UK3NIIT.mjs.map +1 -0
  284. package/dist/sdk/chunk-AGIZJ4UZ.mjs +173 -0
  285. package/dist/sdk/chunk-AGIZJ4UZ.mjs.map +1 -0
  286. package/dist/sdk/chunk-AIVFBIS4.mjs +1371 -0
  287. package/dist/sdk/chunk-AIVFBIS4.mjs.map +1 -0
  288. package/dist/sdk/chunk-AK6BVWIT.mjs +426 -0
  289. package/dist/sdk/chunk-AK6BVWIT.mjs.map +1 -0
  290. package/dist/sdk/chunk-AUT26LHW.mjs +139 -0
  291. package/dist/sdk/chunk-AUT26LHW.mjs.map +1 -0
  292. package/dist/sdk/chunk-BOVFH3LI.mjs +232 -0
  293. package/dist/sdk/chunk-BOVFH3LI.mjs.map +1 -0
  294. package/dist/sdk/chunk-CNX7V5JK.mjs +89 -0
  295. package/dist/sdk/chunk-CNX7V5JK.mjs.map +1 -0
  296. package/dist/sdk/chunk-HTOKWMPO.mjs +157 -0
  297. package/dist/sdk/chunk-HTOKWMPO.mjs.map +1 -0
  298. package/dist/sdk/chunk-NAW3DB3I.mjs +197 -0
  299. package/dist/sdk/chunk-NAW3DB3I.mjs.map +1 -0
  300. package/dist/sdk/chunk-O5EZDNYL.mjs +274 -0
  301. package/dist/sdk/chunk-O5EZDNYL.mjs.map +1 -0
  302. package/dist/sdk/chunk-QR7MOMJH.mjs +558 -0
  303. package/dist/sdk/chunk-QR7MOMJH.mjs.map +1 -0
  304. package/dist/sdk/chunk-QY2XYPEV.mjs +3556 -0
  305. package/dist/sdk/chunk-QY2XYPEV.mjs.map +1 -0
  306. package/dist/sdk/chunk-S2RUE2RG.mjs +145 -0
  307. package/dist/sdk/chunk-S2RUE2RG.mjs.map +1 -0
  308. package/dist/sdk/chunk-SIWNBRTK.mjs +800 -0
  309. package/dist/sdk/chunk-SIWNBRTK.mjs.map +1 -0
  310. package/dist/sdk/chunk-YSN4G6CI.mjs +146 -0
  311. package/dist/sdk/chunk-YSN4G6CI.mjs.map +1 -0
  312. package/dist/sdk/chunk-ZYAUYXSW.mjs +206 -0
  313. package/dist/sdk/chunk-ZYAUYXSW.mjs.map +1 -0
  314. package/dist/sdk/command-executor-TYUV6HUS.mjs +14 -0
  315. package/dist/sdk/config-YNC2EOOT.mjs +16 -0
  316. package/dist/sdk/config-merger-PX3WIT57.mjs +10 -0
  317. package/dist/sdk/event-bus-5BEVPQ6T.mjs +35 -0
  318. package/dist/sdk/event-bus-5BEVPQ6T.mjs.map +1 -0
  319. package/dist/sdk/failure-condition-evaluator-YGTF2GHG.mjs +17 -0
  320. package/dist/sdk/git-repository-analyzer-HJC4MYW4.mjs +458 -0
  321. package/dist/sdk/git-repository-analyzer-HJC4MYW4.mjs.map +1 -0
  322. package/dist/sdk/github-frontend-SIAEOCON.mjs +1420 -0
  323. package/dist/sdk/github-frontend-SIAEOCON.mjs.map +1 -0
  324. package/dist/sdk/host-DXUYTNMU.mjs +52 -0
  325. package/dist/sdk/host-DXUYTNMU.mjs.map +1 -0
  326. package/dist/sdk/{liquid-extensions-KVL4MKRH.mjs → liquid-extensions-PKWCKK7E.mjs} +8 -2
  327. package/dist/sdk/memory-store-XGBB7LX7.mjs +12 -0
  328. package/dist/sdk/memory-store-XGBB7LX7.mjs.map +1 -0
  329. package/dist/sdk/metrics-7PP3EJUH.mjs +29 -0
  330. package/dist/sdk/metrics-7PP3EJUH.mjs.map +1 -0
  331. package/dist/sdk/ndjson-sink-B4V4NTAQ.mjs +44 -0
  332. package/dist/sdk/ndjson-sink-B4V4NTAQ.mjs.map +1 -0
  333. package/dist/sdk/prompt-state-YRJY6QAL.mjs +16 -0
  334. package/dist/sdk/prompt-state-YRJY6QAL.mjs.map +1 -0
  335. package/dist/sdk/renderer-schema-LPKN5UJS.mjs +51 -0
  336. package/dist/sdk/renderer-schema-LPKN5UJS.mjs.map +1 -0
  337. package/dist/sdk/routing-6N45MJ4F.mjs +24 -0
  338. package/dist/sdk/routing-6N45MJ4F.mjs.map +1 -0
  339. package/dist/sdk/sdk.d.mts +541 -22
  340. package/dist/sdk/sdk.d.ts +541 -22
  341. package/dist/sdk/sdk.js +27963 -16505
  342. package/dist/sdk/sdk.js.map +1 -1
  343. package/dist/sdk/sdk.mjs +1116 -2169
  344. package/dist/sdk/sdk.mjs.map +1 -1
  345. package/dist/sdk/session-registry-4E6YRQ77.mjs +10 -0
  346. package/dist/sdk/session-registry-4E6YRQ77.mjs.map +1 -0
  347. package/dist/sdk/slack-frontend-BVKW3GD5.mjs +735 -0
  348. package/dist/sdk/slack-frontend-BVKW3GD5.mjs.map +1 -0
  349. package/dist/sdk/trace-helpers-VP6QYVBX.mjs +23 -0
  350. package/dist/sdk/trace-helpers-VP6QYVBX.mjs.map +1 -0
  351. package/dist/sdk/{tracer-init-WC75N5NW.mjs → tracer-init-GSLPPLCD.mjs} +2 -2
  352. package/dist/sdk/tracer-init-GSLPPLCD.mjs.map +1 -0
  353. package/dist/sdk/workflow-registry-R6KSACFR.mjs +12 -0
  354. package/dist/sdk/workflow-registry-R6KSACFR.mjs.map +1 -0
  355. package/dist/sdk.d.ts.map +1 -1
  356. package/dist/slack/adapter.d.ts +36 -0
  357. package/dist/slack/adapter.d.ts.map +1 -0
  358. package/dist/slack/cache-prewarmer.d.ts +31 -0
  359. package/dist/slack/cache-prewarmer.d.ts.map +1 -0
  360. package/dist/slack/client.d.ts +77 -0
  361. package/dist/slack/client.d.ts.map +1 -0
  362. package/dist/slack/markdown.d.ts +45 -0
  363. package/dist/slack/markdown.d.ts.map +1 -0
  364. package/dist/slack/prompt-state.d.ts +33 -0
  365. package/dist/slack/prompt-state.d.ts.map +1 -0
  366. package/dist/slack/rate-limiter.d.ts +56 -0
  367. package/dist/slack/rate-limiter.d.ts.map +1 -0
  368. package/dist/slack/signature.d.ts +2 -0
  369. package/dist/slack/signature.d.ts.map +1 -0
  370. package/dist/slack/socket-runner.d.ts +42 -0
  371. package/dist/slack/socket-runner.d.ts.map +1 -0
  372. package/dist/slack/thread-cache.d.ts +51 -0
  373. package/dist/slack/thread-cache.d.ts.map +1 -0
  374. package/dist/snapshot-store.d.ts +59 -0
  375. package/dist/snapshot-store.d.ts.map +1 -0
  376. package/dist/state-machine/context/build-engine-context.d.ts +17 -0
  377. package/dist/state-machine/context/build-engine-context.d.ts.map +1 -0
  378. package/dist/state-machine/dispatch/dependency-gating.d.ts +12 -0
  379. package/dist/state-machine/dispatch/dependency-gating.d.ts.map +1 -0
  380. package/dist/state-machine/dispatch/execution-invoker.d.ts +14 -0
  381. package/dist/state-machine/dispatch/execution-invoker.d.ts.map +1 -0
  382. package/dist/state-machine/dispatch/foreach-processor.d.ts +8 -0
  383. package/dist/state-machine/dispatch/foreach-processor.d.ts.map +1 -0
  384. package/dist/state-machine/dispatch/history-snapshot.d.ts +8 -0
  385. package/dist/state-machine/dispatch/history-snapshot.d.ts.map +1 -0
  386. package/dist/state-machine/dispatch/on-init-handlers.d.ts +43 -0
  387. package/dist/state-machine/dispatch/on-init-handlers.d.ts.map +1 -0
  388. package/dist/state-machine/dispatch/renderer-schema.d.ts +8 -0
  389. package/dist/state-machine/dispatch/renderer-schema.d.ts.map +1 -0
  390. package/dist/state-machine/dispatch/stats-manager.d.ts +15 -0
  391. package/dist/state-machine/dispatch/stats-manager.d.ts.map +1 -0
  392. package/dist/state-machine/dispatch/template-renderer.d.ts +7 -0
  393. package/dist/state-machine/dispatch/template-renderer.d.ts.map +1 -0
  394. package/dist/state-machine/execution/summary.d.ts +8 -0
  395. package/dist/state-machine/execution/summary.d.ts.map +1 -0
  396. package/dist/state-machine/runner.d.ts +79 -0
  397. package/dist/state-machine/runner.d.ts.map +1 -0
  398. package/dist/state-machine/states/check-running.d.ts +14 -0
  399. package/dist/state-machine/states/check-running.d.ts.map +1 -0
  400. package/dist/state-machine/states/completed.d.ts +12 -0
  401. package/dist/state-machine/states/completed.d.ts.map +1 -0
  402. package/dist/state-machine/states/error.d.ts +11 -0
  403. package/dist/state-machine/states/error.d.ts.map +1 -0
  404. package/dist/state-machine/states/init.d.ts +11 -0
  405. package/dist/state-machine/states/init.d.ts.map +1 -0
  406. package/dist/state-machine/states/level-dispatch.d.ts +17 -0
  407. package/dist/state-machine/states/level-dispatch.d.ts.map +1 -0
  408. package/dist/state-machine/states/plan-ready.d.ts +12 -0
  409. package/dist/state-machine/states/plan-ready.d.ts.map +1 -0
  410. package/dist/state-machine/states/routing.d.ts +52 -0
  411. package/dist/state-machine/states/routing.d.ts.map +1 -0
  412. package/dist/state-machine/states/wave-planning.d.ts +14 -0
  413. package/dist/state-machine/states/wave-planning.d.ts.map +1 -0
  414. package/dist/state-machine/workflow-projection.d.ts +47 -0
  415. package/dist/state-machine/workflow-projection.d.ts.map +1 -0
  416. package/dist/state-machine-execution-engine.d.ts +159 -0
  417. package/dist/state-machine-execution-engine.d.ts.map +1 -0
  418. package/dist/telemetry/opentelemetry.d.ts.map +1 -1
  419. package/dist/telemetry/state-capture.d.ts +5 -0
  420. package/dist/telemetry/state-capture.d.ts.map +1 -1
  421. package/dist/test-runner/assertions.d.ts +59 -0
  422. package/dist/test-runner/assertions.d.ts.map +1 -0
  423. package/dist/test-runner/core/environment.d.ts +8 -0
  424. package/dist/test-runner/core/environment.d.ts.map +1 -0
  425. package/dist/test-runner/core/fixture.d.ts +3 -0
  426. package/dist/test-runner/core/fixture.d.ts.map +1 -0
  427. package/dist/test-runner/core/flow-stage.d.ts +32 -0
  428. package/dist/test-runner/core/flow-stage.d.ts.map +1 -0
  429. package/dist/test-runner/core/mocks.d.ts +8 -0
  430. package/dist/test-runner/core/mocks.d.ts.map +1 -0
  431. package/dist/test-runner/core/test-execution-wrapper.d.ts +18 -0
  432. package/dist/test-runner/core/test-execution-wrapper.d.ts.map +1 -0
  433. package/dist/test-runner/evaluators.d.ts +45 -0
  434. package/dist/test-runner/evaluators.d.ts.map +1 -0
  435. package/dist/test-runner/fixture-loader.d.ts +30 -0
  436. package/dist/test-runner/fixture-loader.d.ts.map +1 -0
  437. package/dist/test-runner/index.d.ts +127 -0
  438. package/dist/test-runner/index.d.ts.map +1 -0
  439. package/dist/test-runner/recorders/github-recorder.d.ts +23 -0
  440. package/dist/test-runner/recorders/github-recorder.d.ts.map +1 -0
  441. package/dist/test-runner/recorders/global-recorder.d.ts +4 -0
  442. package/dist/test-runner/recorders/global-recorder.d.ts.map +1 -0
  443. package/dist/test-runner/recorders/slack-recorder.d.ts +17 -0
  444. package/dist/test-runner/recorders/slack-recorder.d.ts.map +1 -0
  445. package/dist/test-runner/utils/selectors.d.ts +2 -0
  446. package/dist/test-runner/utils/selectors.d.ts.map +1 -0
  447. package/dist/test-runner/validator.d.ts +8 -0
  448. package/dist/test-runner/validator.d.ts.map +1 -0
  449. package/dist/traces/run-2026-01-20T19-22-58-043Z.ndjson +138 -0
  450. package/dist/traces/run-2026-01-20T19-23-52-175Z.ndjson +1067 -0
  451. package/dist/types/bot.d.ts +109 -0
  452. package/dist/types/bot.d.ts.map +1 -0
  453. package/dist/types/cli.d.ts +8 -1
  454. package/dist/types/cli.d.ts.map +1 -1
  455. package/dist/types/config.d.ts +459 -9
  456. package/dist/types/config.d.ts.map +1 -1
  457. package/dist/types/engine.d.ts +177 -0
  458. package/dist/types/engine.d.ts.map +1 -0
  459. package/dist/types/execution.d.ts +73 -0
  460. package/dist/types/execution.d.ts.map +1 -0
  461. package/dist/types/git-checkout.d.ts +76 -0
  462. package/dist/types/git-checkout.d.ts.map +1 -0
  463. package/dist/types/github.d.ts +51 -0
  464. package/dist/types/github.d.ts.map +1 -0
  465. package/dist/types/workflow.d.ts +237 -0
  466. package/dist/types/workflow.d.ts.map +1 -0
  467. package/dist/utils/command-executor.d.ts +43 -0
  468. package/dist/utils/command-executor.d.ts.map +1 -0
  469. package/dist/utils/comment-metadata.d.ts +21 -0
  470. package/dist/utils/comment-metadata.d.ts.map +1 -0
  471. package/dist/utils/config-loader.d.ts.map +1 -1
  472. package/dist/utils/config-merger.d.ts.map +1 -1
  473. package/dist/utils/env-exposure.d.ts +3 -0
  474. package/dist/utils/env-exposure.d.ts.map +1 -0
  475. package/dist/utils/file-exclusion.d.ts.map +1 -1
  476. package/dist/utils/interactive-prompt.d.ts +1 -1
  477. package/dist/utils/interactive-prompt.d.ts.map +1 -1
  478. package/dist/utils/json-text-extractor.d.ts +17 -0
  479. package/dist/utils/json-text-extractor.d.ts.map +1 -0
  480. package/dist/utils/sandbox.d.ts +10 -0
  481. package/dist/utils/sandbox.d.ts.map +1 -1
  482. package/dist/utils/script-memory-ops.d.ts +21 -0
  483. package/dist/utils/script-memory-ops.d.ts.map +1 -0
  484. package/dist/utils/template-context.d.ts +8 -0
  485. package/dist/utils/template-context.d.ts.map +1 -0
  486. package/dist/utils/tracer-init.d.ts.map +1 -1
  487. package/dist/utils/workspace-manager.d.ts +118 -0
  488. package/dist/utils/workspace-manager.d.ts.map +1 -0
  489. package/dist/utils/worktree-cleanup.d.ts +33 -0
  490. package/dist/utils/worktree-cleanup.d.ts.map +1 -0
  491. package/dist/utils/worktree-manager.d.ts +153 -0
  492. package/dist/utils/worktree-manager.d.ts.map +1 -0
  493. package/dist/webhook-server.d.ts +3 -3
  494. package/dist/webhook-server.d.ts.map +1 -1
  495. package/dist/workflow-executor.d.ts +81 -0
  496. package/dist/workflow-executor.d.ts.map +1 -0
  497. package/dist/workflow-registry.d.ts +79 -0
  498. package/dist/workflow-registry.d.ts.map +1 -0
  499. package/package.json +12 -5
  500. package/dist/output/traces/run-2025-10-22T18-22-56-873Z.ndjson +0 -218
  501. package/dist/sdk/check-execution-engine-2YYKUUSH.mjs +0 -11
  502. package/dist/sdk/check-execution-engine-6QJXYYON.mjs +0 -11
  503. package/dist/sdk/check-execution-engine-PJZ4ZOKG.mjs +0 -11
  504. package/dist/sdk/chunk-33QVZ2D4.mjs +0 -316
  505. package/dist/sdk/chunk-33QVZ2D4.mjs.map +0 -1
  506. package/dist/sdk/chunk-B5QBV2QJ.mjs +0 -752
  507. package/dist/sdk/chunk-B5QBV2QJ.mjs.map +0 -1
  508. package/dist/sdk/chunk-BVFNRCHT.mjs +0 -14129
  509. package/dist/sdk/chunk-BVFNRCHT.mjs.map +0 -1
  510. package/dist/sdk/chunk-KWZW23FG.mjs +0 -14129
  511. package/dist/sdk/chunk-KWZW23FG.mjs.map +0 -1
  512. package/dist/sdk/chunk-O4RP4BRH.mjs +0 -14092
  513. package/dist/sdk/chunk-O4RP4BRH.mjs.map +0 -1
  514. package/dist/sdk/chunk-TUTOLSFV.mjs.map +0 -1
  515. package/dist/sdk/chunk-U5D2LY66.mjs +0 -245
  516. package/dist/sdk/chunk-U5D2LY66.mjs.map +0 -1
  517. package/dist/sdk/chunk-U7X54EMV.mjs +0 -331
  518. package/dist/sdk/chunk-U7X54EMV.mjs.map +0 -1
  519. package/dist/sdk/config-merger-TWUBWFC2.mjs +0 -8
  520. package/dist/sdk/mermaid-telemetry-SN6A2TKW.mjs +0 -61
  521. package/dist/sdk/mermaid-telemetry-SN6A2TKW.mjs.map +0 -1
  522. package/dist/sdk/mermaid-telemetry-YCTIG76M.mjs +0 -61
  523. package/dist/sdk/mermaid-telemetry-YCTIG76M.mjs.map +0 -1
  524. package/dist/traces/run-2025-10-22T18-22-56-873Z.ndjson +0 -218
  525. /package/dist/sdk/{check-execution-engine-2YYKUUSH.mjs.map → check-provider-registry-534KL5HT.mjs.map} +0 -0
  526. /package/dist/sdk/{check-execution-engine-6QJXYYON.mjs.map → command-executor-TYUV6HUS.mjs.map} +0 -0
  527. /package/dist/sdk/{check-execution-engine-PJZ4ZOKG.mjs.map → config-YNC2EOOT.mjs.map} +0 -0
  528. /package/dist/sdk/{config-merger-TWUBWFC2.mjs.map → config-merger-PX3WIT57.mjs.map} +0 -0
  529. /package/dist/sdk/{liquid-extensions-KVL4MKRH.mjs.map → failure-condition-evaluator-YGTF2GHG.mjs.map} +0 -0
  530. /package/dist/sdk/{tracer-init-WC75N5NW.mjs.map → liquid-extensions-PKWCKK7E.mjs.map} +0 -0
@@ -0,0 +1,198 @@
1
+ # Visor Configuration with Tags - Complete Example
2
+ # This configuration demonstrates how to use tags for different execution profiles
3
+ version: "1.0"
4
+
5
+ # Global tag filter (can be overridden by CLI/GitHub Actions)
6
+ tag_filter:
7
+ # Uncomment to set default filters:
8
+ # include: ["local", "fast"]
9
+ # exclude: ["experimental"]
10
+
11
+ # Global settings
12
+ ai_provider: google # or anthropic, openai
13
+ ai_model: gemini-1.5-flash # or claude-3-opus, gpt-4
14
+
15
+ # Check definitions with comprehensive tagging
16
+ steps:
17
+ # ============================================
18
+ # SECURITY CHECKS
19
+ # ============================================
20
+
21
+ security-quick:
22
+ type: ai
23
+ group: security
24
+ schema: code-review
25
+ prompt: |
26
+ Quick security scan focusing on:
27
+ - Obvious vulnerabilities (hardcoded secrets, SQL injection)
28
+ - Authentication issues
29
+ - Common security anti-patterns
30
+ Return results quickly, prioritize critical issues.
31
+ tags: ["security", "fast", "local", "critical"]
32
+ on: [pr_opened, pr_updated, manual]
33
+
34
+ security-comprehensive:
35
+ type: ai
36
+ group: security
37
+ schema: code-review
38
+ prompt: |
39
+ Comprehensive security audit including:
40
+ - All OWASP Top 10 vulnerabilities
41
+ - Supply chain security issues
42
+ - Cryptographic weaknesses
43
+ - Access control problems
44
+ - Data exposure risks
45
+ - Third-party dependency vulnerabilities
46
+ Provide detailed analysis with remediation steps.
47
+ tags: ["security", "comprehensive", "slow", "remote", "critical"]
48
+ on: [pr_opened]
49
+ depends_on: [security-quick] # Build on quick findings
50
+
51
+ security-dependencies:
52
+ type: command
53
+ group: security
54
+ exec: "npm audit --json"
55
+ tags: ["security", "dependencies", "fast", "local", "remote"]
56
+ on: [pr_opened, pr_updated]
57
+
58
+ # ============================================
59
+ # PERFORMANCE CHECKS
60
+ # ============================================
61
+
62
+ performance-basic:
63
+ type: ai
64
+ group: performance
65
+ schema: code-review
66
+ prompt: |
67
+ Basic performance analysis:
68
+ - Algorithm complexity (O(n²) or worse)
69
+ - Database query efficiency
70
+ - Memory leaks
71
+ - Caching opportunities
72
+ tags: ["performance", "fast", "local"]
73
+ on: [pr_opened, pr_updated]
74
+
75
+ performance-advanced:
76
+ type: ai
77
+ group: performance
78
+ schema: code-review
79
+ prompt: |
80
+ Advanced performance analysis:
81
+ - Concurrency issues and race conditions
82
+ - Resource pool exhaustion
83
+ - Micro-optimization opportunities
84
+ - Distributed system bottlenecks
85
+ - Load testing recommendations
86
+ tags: ["performance", "comprehensive", "slow", "remote"]
87
+ on: [pr_opened]
88
+ depends_on: [performance-basic]
89
+
90
+ # ============================================
91
+ # CODE QUALITY CHECKS
92
+ # ============================================
93
+
94
+ style-check:
95
+ type: ai
96
+ group: quality
97
+ schema: code-review
98
+ prompt: |
99
+ Code style and formatting:
100
+ - Naming conventions
101
+ - Code organization
102
+ - Documentation completeness
103
+ - Consistent patterns
104
+ tags: ["style", "fast", "local"]
105
+ on: [pr_opened, pr_updated]
106
+
107
+ architecture-review:
108
+ type: ai
109
+ group: quality
110
+ schema: code-review
111
+ prompt: |
112
+ Architecture and design patterns:
113
+ - SOLID principles adherence
114
+ - Design pattern usage
115
+ - Module boundaries
116
+ - Coupling and cohesion
117
+ - Technical debt identification
118
+ tags: ["architecture", "comprehensive", "remote"]
119
+ on: [pr_opened]
120
+
121
+ test-coverage:
122
+ type: command
123
+ group: quality
124
+ exec: "npm test -- --coverage --json"
125
+ tags: ["testing", "fast", "local", "ci"]
126
+ on: [pr_opened, pr_updated]
127
+
128
+ # ============================================
129
+ # EXPERIMENTAL/BETA CHECKS
130
+ # ============================================
131
+
132
+ ai-refactoring-suggestions:
133
+ type: claude-code
134
+ group: experimental
135
+ prompt: |
136
+ Analyze the code and suggest refactoring opportunities.
137
+ Use MCP tools to understand the codebase structure.
138
+ Provide specific, actionable refactoring suggestions.
139
+ tags: ["experimental", "refactoring", "claude", "slow"]
140
+ claude_code:
141
+ allowedTools: ['Grep', 'Read', 'analyze_file_structure']
142
+ maxTurns: 10
143
+ on: [manual] # Only run when explicitly requested
144
+
145
+ accessibility-check:
146
+ type: ai
147
+ group: experimental
148
+ schema: code-review
149
+ prompt: "Check for accessibility issues in UI components"
150
+ tags: ["experimental", "accessibility", "frontend"]
151
+ on: [pr_opened]
152
+ if: "filesChanged.some(f => f.endsWith('.jsx') || f.endsWith('.tsx'))"
153
+
154
+ # ============================================
155
+ # REPORTING AND AGGREGATION
156
+ # ============================================
157
+
158
+ summary-report:
159
+ type: noop # No-op provider for orchestration
160
+ group: summary
161
+ tags: ["reporting", "local", "remote"]
162
+ depends_on:
163
+ - security-quick
164
+ - performance-basic
165
+ - style-check
166
+ on: [pr_opened, pr_updated]
167
+
168
+ comprehensive-report:
169
+ type: noop
170
+ group: summary
171
+ tags: ["reporting", "comprehensive", "remote"]
172
+ depends_on:
173
+ - security-comprehensive
174
+ - performance-advanced
175
+ - architecture-review
176
+ on: [pr_opened]
177
+
178
+ # Output configuration
179
+ output:
180
+ pr_comment:
181
+ format: markdown
182
+ group_by: group
183
+ collapse: true
184
+
185
+ github_checks:
186
+ enabled: true
187
+ per_check: false # Create one combined check
188
+
189
+ # Environment-specific overrides (use with extends)
190
+ # Example: .visor.dev.yaml could extend this and set:
191
+ # tag_filter:
192
+ # include: ["local", "fast"]
193
+ # exclude: ["experimental", "comprehensive"]
194
+
195
+ # Example: .visor.prod.yaml could extend this and set:
196
+ # tag_filter:
197
+ # include: ["critical", "comprehensive", "remote"]
198
+ # exclude: ["experimental"]
@@ -0,0 +1,218 @@
1
+ version: "1.0"
2
+
3
+ # HTTP server for receiving external webhook events
4
+ # Note: ${...} syntax reads from environment variables
5
+ # This server is automatically disabled when running in GitHub Actions
6
+ http_server:
7
+ enabled: true
8
+ port: 3000
9
+ host: "localhost"
10
+ auth:
11
+ type: hmac
12
+ secret: "${HMAC_SECRET}" # Read from HMAC_SECRET environment variable
13
+ endpoints:
14
+ - path: "/github/push"
15
+ name: "github-push"
16
+ transform: |
17
+ {
18
+ "repository": "{{ webhook.repository.full_name }}",
19
+ "branch": "{{ webhook.ref | replace: 'refs/heads/', '' }}",
20
+ "commit": "{{ webhook.after }}",
21
+ "author": "{{ webhook.pusher.name }}",
22
+ "files": {{ webhook.commits | map: 'modified' | flatten | uniq | json }}
23
+ }
24
+ - path: "/jira/issue"
25
+ name: "jira-webhook"
26
+ transform: |
27
+ {
28
+ "issue_key": "{{ webhook.issue.key }}",
29
+ "status": "{{ webhook.issue.fields.status.name }}",
30
+ "assignee": "{{ webhook.issue.fields.assignee.displayName }}",
31
+ "priority": "{{ webhook.issue.fields.priority.name }}"
32
+ }
33
+
34
+ steps:
35
+ # === GitHub Push Pipeline ===
36
+
37
+ # Receive GitHub push events
38
+ github-push-receiver:
39
+ type: http_input
40
+ endpoint: "/github/push"
41
+ on: [webhook_received]
42
+
43
+ # Analyze the pushed code
44
+ push-code-analysis:
45
+ type: ai
46
+ depends_on: [github-push-receiver]
47
+ prompt: |
48
+ GitHub push received:
49
+ - Repository: {{ outputs['github-push-receiver'].repository }}
50
+ - Branch: {{ outputs['github-push-receiver'].branch }}
51
+ - Commit: {{ outputs['github-push-receiver'].commit }}
52
+ - Modified files: {{ outputs['github-push-receiver'].files }}
53
+
54
+ Analyze the push for:
55
+ 1. Breaking changes
56
+ 2. Security vulnerabilities introduced
57
+ 3. Code quality issues
58
+ 4. Missing tests
59
+ schema: code-review
60
+ group: push-analysis
61
+
62
+ # Notify development team about push analysis
63
+ notify-dev-team:
64
+ type: http
65
+ depends_on: [push-code-analysis]
66
+ url: "${DEV_TEAM_WEBHOOK}" # Read from DEV_TEAM_WEBHOOK environment variable
67
+ body: |
68
+ {
69
+ "channel": "#dev-notifications",
70
+ "username": "Visor Bot",
71
+ "icon_emoji": ":robot_face:",
72
+ "attachments": [
73
+ {
74
+ "color": "{% if outputs['push-code-analysis'].criticalIssues > 0 %}danger{% elsif outputs['push-code-analysis'].errorIssues > 0 %}warning{% else %}good{% endif %}",
75
+ "title": "Push Analysis for {{ outputs['github-push-receiver'].repository }}",
76
+ "fields": [
77
+ {
78
+ "title": "Branch",
79
+ "value": "{{ outputs['github-push-receiver'].branch }}",
80
+ "short": true
81
+ },
82
+ {
83
+ "title": "Commit",
84
+ "value": "{{ outputs['github-push-receiver'].commit | slice: 0, 8 }}",
85
+ "short": true
86
+ },
87
+ {
88
+ "title": "Issues Found",
89
+ "value": "{{ outputs['push-code-analysis'].totalIssues }}",
90
+ "short": true
91
+ },
92
+ {
93
+ "title": "Severity",
94
+ "value": "Critical: {{ outputs['push-code-analysis'].criticalIssues }}, High: {{ outputs['push-code-analysis'].errorIssues }}",
95
+ "short": false
96
+ }
97
+ ],
98
+ "footer": "Visor Analysis",
99
+ "footer_icon": "https://example.com/visor-icon.png",
100
+ "ts": {{ timestamp | date: '%s' }}
101
+ }
102
+ ]
103
+ }
104
+
105
+ # Create GitHub issue if critical problems found
106
+ create-github-issue:
107
+ type: http
108
+ depends_on: [push-code-analysis]
109
+ if: "outputs['push-code-analysis'].criticalIssues > 0"
110
+ url: "https://api.github.com/repos/{{ outputs['github-push-receiver'].repository }}/issues"
111
+ method: POST
112
+ headers:
113
+ Authorization: "token ${GITHUB_TOKEN}" # Read from GITHUB_TOKEN environment variable
114
+ Accept: "application/vnd.github.v3+json"
115
+ body: |
116
+ {
117
+ "title": "Critical issues found in commit {{ outputs['github-push-receiver'].commit | slice: 0, 8 }}",
118
+ "body": "## Visor Analysis Report\n\n**Branch:** {{ outputs['github-push-receiver'].branch }}\n**Commit:** {{ outputs['github-push-receiver'].commit }}\n\n### Critical Issues Found\n\n{% for issue in outputs['push-code-analysis'].issues %}{% if issue.severity == 'critical' %}- **{{ issue.category }}**: {{ issue.message }}\n - File: `{{ issue.file }}:{{ issue.line }}`\n{% endif %}{% endfor %}\n\n---\n*This issue was automatically created by Visor*",
119
+ "labels": ["critical", "automated", "security"],
120
+ "assignees": ["{{ outputs['github-push-receiver'].author }}"]
121
+ }
122
+
123
+ # === JIRA Integration Pipeline ===
124
+
125
+ # Receive JIRA webhook events
126
+ jira-receiver:
127
+ type: http_input
128
+ endpoint: "/jira/issue"
129
+ on: [webhook_received]
130
+
131
+ # Analyze JIRA issue for code implications
132
+ jira-code-impact:
133
+ type: ai
134
+ depends_on: [jira-receiver]
135
+ prompt: |
136
+ JIRA issue update:
137
+ - Key: {{ outputs['jira-receiver'].issue_key }}
138
+ - Status: {{ outputs['jira-receiver'].status }}
139
+ - Priority: {{ outputs['jira-receiver'].priority }}
140
+
141
+ {% if outputs['jira-receiver'].status == 'In Progress' %}
142
+ Generate a checklist of code areas that might be affected by this issue.
143
+ {% elsif outputs['jira-receiver'].status == 'Done' %}
144
+ Suggest verification steps and potential regression test areas.
145
+ {% endif %}
146
+ group: jira-analysis
147
+
148
+ # Update team dashboard
149
+ update-dashboard:
150
+ type: http
151
+ depends_on: [jira-code-impact]
152
+ url: "${DASHBOARD_WEBHOOK}" # Read from DASHBOARD_WEBHOOK environment variable
153
+ method: PUT
154
+ body: |
155
+ {
156
+ "widget": "jira-updates",
157
+ "data": {
158
+ "issue": "{{ outputs['jira-receiver'].issue_key }}",
159
+ "status": "{{ outputs['jira-receiver'].status }}",
160
+ "analysis": {{ outputs['jira-code-impact'].suggestions | json }},
161
+ "updated_at": "{{ timestamp }}"
162
+ }
163
+ }
164
+
165
+ # === Multi-source Aggregation ===
166
+
167
+ # Daily summary combining multiple sources
168
+ daily-summary:
169
+ type: ai
170
+ schedule: "0 18 * * *" # 6 PM daily
171
+ depends_on: [] # Will access historical data if available
172
+ prompt: |
173
+ Generate a daily development summary including:
174
+ 1. Push activity from today
175
+ 2. JIRA issues updated
176
+ 3. Security scan results
177
+ 4. Performance metrics
178
+
179
+ Format as an executive summary with key metrics and action items.
180
+ group: daily-report
181
+
182
+ # Send daily summary to multiple channels
183
+ broadcast-summary:
184
+ type: http
185
+ depends_on: [daily-summary]
186
+ url: "${BROADCAST_WEBHOOK}" # Read from BROADCAST_WEBHOOK environment variable
187
+ body: |
188
+ {
189
+ "recipients": [
190
+ {
191
+ "channel": "email",
192
+ "to": "team@example.com",
193
+ "subject": "Daily Visor Summary - {{ timestamp | date: '%Y-%m-%d' }}"
194
+ },
195
+ {
196
+ "channel": "slack",
197
+ "to": "#daily-standup"
198
+ },
199
+ {
200
+ "channel": "teams",
201
+ "to": "Development Team"
202
+ }
203
+ ],
204
+ "content": {
205
+ "summary": {{ outputs['daily-summary'] | json }},
206
+ "metrics": {
207
+ "total_pushes": 0,
208
+ "issues_resolved": 0,
209
+ "critical_findings": 0
210
+ }
211
+ }
212
+ }
213
+
214
+ output:
215
+ pr_comment:
216
+ format: markdown
217
+ group_by: check
218
+ collapse: true
@@ -0,0 +1,163 @@
1
+ # Standalone executable workflow with inputs, outputs, and self-tests
2
+ # Can be run directly: visor --config defaults/calculator-workflow.yaml
3
+ # Or imported and used as a step in another config
4
+
5
+ id: calculator
6
+ name: Simple Calculator
7
+ description: A simple calculator workflow that performs arithmetic operations
8
+ version: "1.0.0"
9
+
10
+ inputs:
11
+ - name: operation
12
+ description: The operation to perform (add, subtract, multiply, divide)
13
+ schema:
14
+ type: string
15
+ enum: [add, subtract, multiply, divide]
16
+ default: "add"
17
+
18
+ - name: a
19
+ description: First operand
20
+ schema:
21
+ type: number
22
+ default: 10
23
+
24
+ - name: b
25
+ description: Second operand
26
+ schema:
27
+ type: number
28
+ default: 5
29
+
30
+ outputs:
31
+ - name: result
32
+ description: The calculated result
33
+ value_js: |
34
+ const calc = steps.calculate.output;
35
+ return calc ? calc.result : null;
36
+
37
+ - name: operation_performed
38
+ description: The operation that was performed
39
+ value_js: |
40
+ return inputs.operation;
41
+
42
+ - name: summary
43
+ description: Human readable summary
44
+ value_js: |
45
+ const calc = steps.calculate.output;
46
+ if (!calc) return "Calculation failed";
47
+ return `${inputs.a} ${inputs.operation} ${inputs.b} = ${calc.result}`;
48
+
49
+ # Workflow steps - these define the workflow logic
50
+ steps:
51
+ validate_inputs:
52
+ type: command
53
+ exec: |
54
+ echo '{"valid": true, "a": {{ inputs.a }}, "b": {{ inputs.b }}, "operation": "{{ inputs.operation }}"}'
55
+
56
+ calculate:
57
+ type: command
58
+ depends_on: [validate_inputs]
59
+ exec: |
60
+ #!/bin/bash
61
+ operation="{{ inputs.operation }}"
62
+ a={{ inputs.a }}
63
+ b={{ inputs.b }}
64
+
65
+ case $operation in
66
+ add)
67
+ result=$(echo "$a + $b" | bc -l)
68
+ ;;
69
+ subtract)
70
+ result=$(echo "$a - $b" | bc -l)
71
+ ;;
72
+ multiply)
73
+ result=$(echo "$a * $b" | bc -l)
74
+ ;;
75
+ divide)
76
+ if [ "$b" = "0" ]; then
77
+ echo '{"error": "Division by zero"}'
78
+ exit 1
79
+ fi
80
+ result=$(echo "scale=2; $a / $b" | bc -l)
81
+ ;;
82
+ *)
83
+ echo '{"error": "Unknown operation"}'
84
+ exit 1
85
+ ;;
86
+ esac
87
+
88
+ echo "{\"result\": $result, \"operation\": \"$operation\"}"
89
+
90
+ log_result:
91
+ type: log
92
+ depends_on: [calculate]
93
+ message: |
94
+ Calculator Result:
95
+ Operation: {{ inputs.operation }}
96
+ {{ inputs.a }} {{ inputs.operation }} {{ inputs.b }} = {{ steps.calculate.output.result }}
97
+
98
+ # Tests - these are ONLY executed when running this file standalone
99
+ # They are NOT imported when this workflow is used as a step in another config
100
+ tests:
101
+ # Test 1: Default inputs (10 + 5 = 15)
102
+ test_default_addition:
103
+ type: workflow
104
+ workflow: calculator
105
+ # Uses default inputs (operation=add, a=10, b=5)
106
+
107
+ # Test 2: Subtraction
108
+ test_subtraction:
109
+ type: workflow
110
+ workflow: calculator
111
+ args:
112
+ operation: subtract
113
+ a: 20
114
+ b: 8
115
+ # Expected: 20 - 8 = 12
116
+
117
+ # Test 3: Multiplication
118
+ test_multiplication:
119
+ type: workflow
120
+ workflow: calculator
121
+ args:
122
+ operation: multiply
123
+ a: 6
124
+ b: 7
125
+ # Expected: 6 * 7 = 42
126
+
127
+ # Test 4: Division
128
+ test_division:
129
+ type: workflow
130
+ workflow: calculator
131
+ args:
132
+ operation: divide
133
+ a: 100
134
+ b: 4
135
+ # Expected: 100 / 4 = 25
136
+
137
+ # Validate all tests passed
138
+ validate_tests:
139
+ type: command
140
+ depends_on: [test_default_addition, test_subtraction, test_multiplication, test_division]
141
+ exec: |
142
+ #!/bin/bash
143
+ # Get results from each test
144
+ addition="{{ outputs.test_default_addition.result }}"
145
+ subtraction="{{ outputs.test_subtraction.result }}"
146
+ multiplication="{{ outputs.test_multiplication.result }}"
147
+ division="{{ outputs.test_division.result }}"
148
+
149
+ echo "Test Results:"
150
+ echo " Addition (10 + 5): $addition (expected 15)"
151
+ echo " Subtraction (20 - 8): $subtraction (expected 12)"
152
+ echo " Multiplication (6 * 7): $multiplication (expected 42)"
153
+ echo " Division (100 / 4): $division (expected 25)"
154
+
155
+ # Simple validation
156
+ if [ "$addition" = "15" ] && [ "$subtraction" = "12" ] && [ "$multiplication" = "42" ] && [ "$division" = "25" ]; then
157
+ echo '{"all_tests_passed": true}'
158
+ exit 0
159
+ else
160
+ echo '{"all_tests_passed": false, "error": "Some tests failed"}'
161
+ exit 1
162
+ fi
163
+ fail_if: output.all_tests_passed === false