@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,163 @@
1
+ # GitHub Actions Workflow - Progressive Code Review with Tags
2
+ # This workflow demonstrates different tag strategies for various scenarios
3
+ #
4
+ # NOTE: For fork PR support with check runs, change pull_request to pull_request_target
5
+ # See docs/GITHUB_CHECKS.md#fork-pr-support for details
6
+
7
+ name: Progressive Code Review
8
+ on:
9
+ pull_request:
10
+ types: [opened, synchronize, reopened]
11
+ issue_comment:
12
+ types: [created]
13
+
14
+ jobs:
15
+ # ============================================
16
+ # STAGE 1: Quick validation (runs always)
17
+ # ============================================
18
+ quick-validation:
19
+ name: Fast Critical Checks
20
+ runs-on: ubuntu-latest
21
+ steps:
22
+ - uses: actions/checkout@v4
23
+ with:
24
+ fetch-depth: 0 # Full history for better analysis
25
+
26
+ - name: Run critical fast checks
27
+ uses: gates-ai/visor-action@v1
28
+ with:
29
+ github-token: ${{ secrets.GITHUB_TOKEN }}
30
+ tags: "critical,fast"
31
+ fail-fast: "true" # Stop immediately on critical issues
32
+ max-parallelism: "5" # Run checks in parallel
33
+ env:
34
+ GOOGLE_API_KEY: ${{ secrets.GOOGLE_API_KEY }}
35
+
36
+ # ============================================
37
+ # STAGE 2: Security scan (parallel with Stage 1)
38
+ # ============================================
39
+ security-scan:
40
+ name: Security Analysis
41
+ runs-on: ubuntu-latest
42
+ steps:
43
+ - uses: actions/checkout@v4
44
+ with:
45
+ fetch-depth: 0
46
+
47
+ - name: Run all security checks
48
+ uses: gates-ai/visor-action@v1
49
+ with:
50
+ github-token: ${{ secrets.GITHUB_TOKEN }}
51
+ tags: "security"
52
+ exclude-tags: "experimental"
53
+ env:
54
+ GOOGLE_API_KEY: ${{ secrets.GOOGLE_API_KEY }}
55
+
56
+ # ============================================
57
+ # STAGE 3: Full review (only for main branch)
58
+ # ============================================
59
+ comprehensive-review:
60
+ name: Comprehensive Analysis
61
+ runs-on: ubuntu-latest
62
+ if: github.base_ref == 'main' || github.base_ref == 'master'
63
+ needs: [quick-validation] # Only run if quick checks pass
64
+ steps:
65
+ - uses: actions/checkout@v4
66
+ with:
67
+ fetch-depth: 0
68
+
69
+ - name: Run comprehensive checks
70
+ uses: gates-ai/visor-action@v1
71
+ with:
72
+ github-token: ${{ secrets.GITHUB_TOKEN }}
73
+ tags: "comprehensive,remote"
74
+ exclude-tags: "experimental,fast" # Skip fast checks (already ran)
75
+ env:
76
+ GOOGLE_API_KEY: ${{ secrets.GOOGLE_API_KEY }}
77
+ # Use more powerful model for comprehensive checks
78
+ AI_MODEL: "gemini-1.5-pro"
79
+
80
+ # ============================================
81
+ # STAGE 4: Performance profiling (for performance PRs)
82
+ # ============================================
83
+ performance-analysis:
84
+ name: Performance Profiling
85
+ runs-on: ubuntu-latest
86
+ if: contains(github.event.pull_request.labels.*.name, 'performance') || contains(github.event.pull_request.title, 'perf')
87
+ steps:
88
+ - uses: actions/checkout@v4
89
+ with:
90
+ fetch-depth: 0
91
+
92
+ - name: Run performance checks
93
+ uses: gates-ai/visor-action@v1
94
+ with:
95
+ github-token: ${{ secrets.GITHUB_TOKEN }}
96
+ tags: "performance"
97
+ env:
98
+ GOOGLE_API_KEY: ${{ secrets.GOOGLE_API_KEY }}
99
+
100
+ # ============================================
101
+ # STAGE 5: Frontend checks (for frontend changes)
102
+ # ============================================
103
+ frontend-checks:
104
+ name: Frontend Analysis
105
+ runs-on: ubuntu-latest
106
+ if: |
107
+ contains(github.event.pull_request.files.*.filename, '.tsx') ||
108
+ contains(github.event.pull_request.files.*.filename, '.jsx') ||
109
+ contains(github.event.pull_request.files.*.filename, '.css')
110
+ steps:
111
+ - uses: actions/checkout@v4
112
+
113
+ - name: Run frontend-specific checks
114
+ uses: gates-ai/visor-action@v1
115
+ with:
116
+ github-token: ${{ secrets.GITHUB_TOKEN }}
117
+ tags: "frontend,accessibility,style"
118
+ env:
119
+ GOOGLE_API_KEY: ${{ secrets.GOOGLE_API_KEY }}
120
+
121
+ # ============================================
122
+ # OPTIONAL: Experimental features (manual trigger)
123
+ # ============================================
124
+ experimental-features:
125
+ name: Experimental Analysis
126
+ runs-on: ubuntu-latest
127
+ if: contains(github.event.comment.body, '/experimental')
128
+ steps:
129
+ - uses: actions/checkout@v4
130
+
131
+ - name: Run experimental checks
132
+ uses: gates-ai/visor-action@v1
133
+ with:
134
+ github-token: ${{ secrets.GITHUB_TOKEN }}
135
+ tags: "experimental"
136
+ debug: "true" # Enable debug for experimental features
137
+ env:
138
+ CLAUDE_CODE_API_KEY: ${{ secrets.CLAUDE_CODE_API_KEY }}
139
+ # Use Claude for experimental features
140
+ AI_PROVIDER: "claude-code"
141
+
142
+ # ============================================
143
+ # NIGHTLY: Deep analysis (scheduled)
144
+ # ============================================
145
+ deep-analysis:
146
+ name: Deep Code Analysis
147
+ runs-on: ubuntu-latest
148
+ if: github.event_name == 'schedule' # Only for scheduled runs
149
+ steps:
150
+ - uses: actions/checkout@v4
151
+ with:
152
+ fetch-depth: 0
153
+
154
+ - name: Run all checks including slow ones
155
+ uses: gates-ai/visor-action@v1
156
+ with:
157
+ github-token: ${{ secrets.GITHUB_TOKEN }}
158
+ # Run everything except experimental
159
+ exclude-tags: "experimental"
160
+ # No tag filter means run all
161
+ env:
162
+ GOOGLE_API_KEY: ${{ secrets.GOOGLE_API_KEY }}
163
+ AI_MODEL: "gemini-1.5-pro" # Use best model for deep analysis
@@ -0,0 +1,240 @@
1
+ version: "1.0"
2
+
3
+ # Complete example of HTTP integration features
4
+ # Demonstrates http, http_input, and http_client check types
5
+
6
+ # HTTP server for receiving webhooks (disabled in GitHub Actions)
7
+ http_server:
8
+ enabled: true
9
+ port: 8080
10
+ host: "0.0.0.0"
11
+ auth:
12
+ type: bearer_token
13
+ secret: "${HTTP_SERVER_SECRET}" # Environment variable
14
+ endpoints:
15
+ - path: "/github/webhook"
16
+ name: "github-events"
17
+ - path: "/monitoring/health"
18
+ name: "health-checks"
19
+
20
+ steps:
21
+ # === HTTP CLIENT: Fetch data from external APIs ===
22
+
23
+ # Fetch repository statistics from GitHub API
24
+ github-stats:
25
+ type: http_client
26
+ url: "https://api.github.com/repos/{{ pr.base | split: '/' | last }}/stats/contributors"
27
+ headers:
28
+ Authorization: "token ${GITHUB_TOKEN}"
29
+ Accept: "application/vnd.github.v3+json"
30
+ transform: |
31
+ {
32
+ "total_contributors": {{ response | size }},
33
+ "top_contributor": "{{ response | first | map: 'author.login' }}",
34
+ "total_commits": {{ response | map: 'total' | sum }}
35
+ }
36
+ schedule: "0 0 * * 0" # Weekly on Sunday
37
+
38
+ # Fetch build status from CI/CD system
39
+ ci-status:
40
+ type: http_client
41
+ url: "${CI_API_URL}/builds/{{ pr.head }}"
42
+ method: GET
43
+ headers:
44
+ X-API-Key: "${CI_API_KEY}"
45
+ transform: |
46
+ {
47
+ "build_status": "{{ response.status }}",
48
+ "test_coverage": {{ response.coverage }},
49
+ "failed_tests": {{ response.failed_tests | default: 0 }}
50
+ }
51
+
52
+ # Poll external service with POST request
53
+ vulnerability-check:
54
+ type: http_client
55
+ url: "${SECURITY_API_URL}/scan"
56
+ method: POST
57
+ body: |
58
+ {
59
+ "repository": "{{ pr.base }}",
60
+ "commit": "{{ pr.head }}",
61
+ "files": {{ pr.files | map: 'filename' | json }}
62
+ }
63
+ headers:
64
+ Content-Type: "application/json"
65
+ Authorization: "Bearer ${SECURITY_API_TOKEN}"
66
+ transform: |
67
+ {
68
+ "vulnerabilities": {{ response.vulnerabilities | default: [] | json }},
69
+ "risk_score": {{ response.risk_score | default: 0 }}
70
+ }
71
+
72
+ # === HTTP INPUT: Receive webhook data ===
73
+
74
+ # Receive GitHub webhook events
75
+ github-webhook-receiver:
76
+ type: http_input
77
+ endpoint: "/github/webhook"
78
+ on: [webhook_received]
79
+ transform: |
80
+ {
81
+ "event": "{{ webhook.action }}",
82
+ "repository": "{{ webhook.repository.full_name }}",
83
+ "sender": "{{ webhook.sender.login }}"
84
+ }
85
+
86
+ # Receive monitoring health checks
87
+ health-check-receiver:
88
+ type: http_input
89
+ endpoint: "/monitoring/health"
90
+ on: [webhook_received]
91
+
92
+ # === AI ANALYSIS: Process fetched/received data ===
93
+
94
+ # Analyze GitHub statistics
95
+ contributor-analysis:
96
+ type: ai
97
+ depends_on: [github-stats]
98
+ prompt: |
99
+ Analyze the repository contributor statistics:
100
+ - Total contributors: {{ outputs['github-stats'].suggestions | first | parse_json: 'total_contributors' }}
101
+ - Top contributor: {{ outputs['github-stats'].suggestions | first | parse_json: 'top_contributor' }}
102
+ - Total commits: {{ outputs['github-stats'].suggestions | first | parse_json: 'total_commits' }}
103
+
104
+ Provide insights on:
105
+ 1. Contribution patterns
106
+ 2. Bus factor risks
107
+ 3. Recommendations for improving collaboration
108
+ group: analytics
109
+
110
+ # Analyze CI/CD status
111
+ build-analysis:
112
+ type: ai
113
+ depends_on: [ci-status]
114
+ prompt: |
115
+ CI/CD Build Analysis:
116
+ {{ outputs['ci-status'].suggestions | first }}
117
+
118
+ Evaluate:
119
+ 1. Build health and stability
120
+ 2. Test coverage adequacy
121
+ 3. Failed test patterns
122
+ 4. Recommendations for improvement
123
+ group: ci-cd
124
+
125
+ # Security assessment based on vulnerability scan
126
+ security-assessment:
127
+ type: ai
128
+ depends_on: [vulnerability-check]
129
+ prompt: |
130
+ Security Vulnerability Assessment:
131
+ {{ outputs['vulnerability-check'].suggestions | first }}
132
+
133
+ Provide:
134
+ 1. Risk assessment summary
135
+ 2. Critical vulnerabilities that need immediate attention
136
+ 3. Remediation priorities
137
+ 4. Security best practices recommendations
138
+ group: security
139
+
140
+ # === HTTP OUTPUT: Send results to external services ===
141
+
142
+ # Send analysis to Slack
143
+ slack-notification:
144
+ type: http
145
+ depends_on: [contributor-analysis, build-analysis]
146
+ url: "${SLACK_WEBHOOK_URL}"
147
+ method: POST
148
+ body: |
149
+ {
150
+ "text": "Repository Analysis Complete",
151
+ "attachments": [
152
+ {
153
+ "color": "good",
154
+ "title": "Contributor Analysis",
155
+ "text": "{{ outputs['contributor-analysis'].suggestions | first | truncate: 200 }}"
156
+ },
157
+ {
158
+ "color": "{{ outputs['ci-status'].suggestions | first | parse_json: 'build_status' == 'passed' ? 'good' : 'danger' }}",
159
+ "title": "Build Status",
160
+ "text": "{{ outputs['build-analysis'].suggestions | first | truncate: 200 }}"
161
+ }
162
+ ]
163
+ }
164
+
165
+ # Send metrics to monitoring system
166
+ metrics-export:
167
+ type: http
168
+ depends_on: [github-stats, ci-status]
169
+ url: "${METRICS_ENDPOINT}"
170
+ method: POST
171
+ headers:
172
+ Content-Type: "application/json"
173
+ X-API-Key: "${METRICS_API_KEY}"
174
+ body: |
175
+ {
176
+ "timestamp": "{{ 'now' | date: '%Y-%m-%dT%H:%M:%S' }}",
177
+ "metrics": {
178
+ "contributors": {{ outputs['github-stats'].suggestions | first | parse_json: 'total_contributors' }},
179
+ "commits": {{ outputs['github-stats'].suggestions | first | parse_json: 'total_commits' }},
180
+ "test_coverage": {{ outputs['ci-status'].suggestions | first | parse_json: 'test_coverage' }},
181
+ "failed_tests": {{ outputs['ci-status'].suggestions | first | parse_json: 'failed_tests' }}
182
+ }
183
+ }
184
+
185
+ # Create JIRA ticket for critical vulnerabilities
186
+ jira-ticket:
187
+ type: http
188
+ depends_on: [vulnerability-check]
189
+ if: "outputs['vulnerability-check'].suggestions | first | parse_json: 'risk_score' > 7"
190
+ url: "${JIRA_API_URL}/rest/api/2/issue"
191
+ method: POST
192
+ headers:
193
+ Authorization: "Basic ${JIRA_AUTH}"
194
+ Content-Type: "application/json"
195
+ body: |
196
+ {
197
+ "fields": {
198
+ "project": { "key": "SEC" },
199
+ "summary": "Critical vulnerabilities detected in {{ pr.base }}",
200
+ "description": "Risk Score: {{ outputs['vulnerability-check'].suggestions | first | parse_json: 'risk_score' }}\n\nVulnerabilities:\n{{ outputs['vulnerability-check'].suggestions | first | parse_json: 'vulnerabilities' | json }}",
201
+ "issuetype": { "name": "Bug" },
202
+ "priority": { "name": "Critical" }
203
+ }
204
+ }
205
+
206
+ # === SCHEDULED AGGREGATION ===
207
+
208
+ # Daily summary that combines multiple data sources
209
+ daily-report:
210
+ type: http_client
211
+ schedule: "0 18 * * *" # 6 PM daily
212
+ url: "${ANALYTICS_API}/daily-summary"
213
+ method: GET
214
+ transform: |
215
+ {
216
+ "date": "{{ 'now' | date: '%Y-%m-%d' }}",
217
+ "summary": {{ response | json }}
218
+ }
219
+
220
+ # Send daily report via email service
221
+ email-report:
222
+ type: http
223
+ depends_on: [daily-report]
224
+ url: "${EMAIL_SERVICE_URL}/send"
225
+ method: POST
226
+ headers:
227
+ Authorization: "Bearer ${EMAIL_API_KEY}"
228
+ body: |
229
+ {
230
+ "to": ["team@example.com"],
231
+ "subject": "Daily Visor Report - {{ 'now' | date: '%Y-%m-%d' }}",
232
+ "html": "<h1>Daily Summary</h1><pre>{{ outputs['daily-report'].suggestions | first }}</pre>"
233
+ }
234
+
235
+ output:
236
+ pr_comment:
237
+ format: markdown
238
+ group_by: check
239
+ collapse: true
240
+ suppressionEnabled: true
@@ -0,0 +1,209 @@
1
+ version: "1.0"
2
+
3
+ # Example of HTTPS server configuration with TLS/SSL
4
+ # Note: This server is automatically disabled when running in GitHub Actions
5
+
6
+ http_server:
7
+ enabled: true
8
+ port: 8443 # Standard HTTPS port
9
+ host: "0.0.0.0"
10
+
11
+ # TLS/SSL Configuration Options
12
+ tls:
13
+ enabled: true
14
+
15
+ # Option 1: File paths to certificates
16
+ # cert: "/path/to/server.crt"
17
+ # key: "/path/to/server.key"
18
+ # ca: "/path/to/ca.crt" # Optional: CA certificate
19
+
20
+ # Option 2: Environment variables containing certificate content
21
+ cert: "${TLS_CERT}" # Certificate content from environment variable
22
+ key: "${TLS_KEY}" # Private key content from environment variable
23
+ ca: "${TLS_CA}" # Optional: CA cert from environment variable
24
+
25
+ # Option 3: Inline certificate content (not recommended for production)
26
+ # cert: |
27
+ # -----BEGIN CERTIFICATE-----
28
+ # MIIDXTCCAkWgAwIBAgIJAKLdQVPy90WjMA0GCSqGSIb3DQEBCwUAMEUxCzAJBgNV
29
+ # ... certificate content ...
30
+ # -----END CERTIFICATE-----
31
+ # key: |
32
+ # -----BEGIN PRIVATE KEY-----
33
+ # MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDYscr5BQJG
34
+ # ... key content ...
35
+ # -----END PRIVATE KEY-----
36
+
37
+ # Reject unauthorized connections (default: true)
38
+ rejectUnauthorized: true
39
+
40
+ # Authentication for webhook endpoints
41
+ auth:
42
+ type: bearer_token
43
+ secret: "${WEBHOOK_SECRET}"
44
+
45
+ # Webhook endpoints
46
+ endpoints:
47
+ - path: "/webhook/github"
48
+ name: "github-events"
49
+ - path: "/webhook/jenkins"
50
+ name: "jenkins-builds"
51
+ - path: "/webhook/datadog"
52
+ name: "monitoring-alerts"
53
+
54
+ steps:
55
+ # === Webhook receivers for HTTPS endpoints ===
56
+
57
+ github-webhook:
58
+ type: http_input
59
+ endpoint: "/webhook/github"
60
+ on: [webhook_received]
61
+ transform: |
62
+ {
63
+ "event": "{{ webhook.action }}",
64
+ "repository": "{{ webhook.repository.full_name }}",
65
+ "sender": "{{ webhook.sender.login }}",
66
+ "signature": "{{ headers['x-hub-signature-256'] }}"
67
+ }
68
+
69
+ jenkins-webhook:
70
+ type: http_input
71
+ endpoint: "/webhook/jenkins"
72
+ on: [webhook_received]
73
+ transform: |
74
+ {
75
+ "job": "{{ webhook.name }}",
76
+ "build": "{{ webhook.build.number }}",
77
+ "status": "{{ webhook.build.status }}",
78
+ "url": "{{ webhook.build.url }}"
79
+ }
80
+
81
+ datadog-alert:
82
+ type: http_input
83
+ endpoint: "/webhook/datadog"
84
+ on: [webhook_received]
85
+ transform: |
86
+ {
87
+ "alert": "{{ webhook.title }}",
88
+ "priority": "{{ webhook.priority }}",
89
+ "tags": {{ webhook.tags | json }},
90
+ "event_msg": "{{ webhook.event_msg }}"
91
+ }
92
+
93
+ # === Process webhook data ===
94
+
95
+ github-analysis:
96
+ type: ai
97
+ depends_on: [github-webhook]
98
+ prompt: |
99
+ Analyze the GitHub webhook event:
100
+ {{ outputs['github-webhook'].suggestions | first }}
101
+
102
+ Determine:
103
+ 1. Security implications
104
+ 2. Required actions
105
+ 3. Impact assessment
106
+ group: github
107
+
108
+ jenkins-build-analysis:
109
+ type: ai
110
+ depends_on: [jenkins-webhook]
111
+ prompt: |
112
+ Jenkins build notification:
113
+ {{ outputs['jenkins-webhook'].suggestions | first }}
114
+
115
+ Analyze:
116
+ 1. Build failure patterns
117
+ 2. Performance trends
118
+ 3. Recommended fixes
119
+ group: ci-cd
120
+
121
+ monitoring-response:
122
+ type: ai
123
+ depends_on: [datadog-alert]
124
+ prompt: |
125
+ Datadog monitoring alert:
126
+ {{ outputs['datadog-alert'].suggestions | first }}
127
+
128
+ Provide:
129
+ 1. Root cause analysis
130
+ 2. Immediate remediation steps
131
+ 3. Long-term prevention strategies
132
+ group: monitoring
133
+
134
+ # === Send secure notifications ===
135
+
136
+ # Send to secure internal API using HTTPS
137
+ internal-api-notification:
138
+ type: http
139
+ depends_on: [github-analysis, jenkins-build-analysis]
140
+ url: "https://internal-api.example.com/notifications"
141
+ method: POST
142
+ headers:
143
+ Content-Type: "application/json"
144
+ Authorization: "Bearer ${INTERNAL_API_TOKEN}"
145
+ X-TLS-Client-Cert: "${CLIENT_CERT}" # Client certificate for mTLS
146
+ body: |
147
+ {
148
+ "source": "visor",
149
+ "timestamp": "{{ 'now' | date: '%Y-%m-%dT%H:%M:%S' }}",
150
+ "github_analysis": {{ outputs['github-analysis'] | json }},
151
+ "jenkins_analysis": {{ outputs['jenkins-build-analysis'] | json }},
152
+ "secure": true,
153
+ "protocol": "https"
154
+ }
155
+
156
+ # Fetch from secure API endpoint
157
+ secure-api-fetch:
158
+ type: http_client
159
+ url: "https://secure-api.example.com/data"
160
+ method: GET
161
+ headers:
162
+ Authorization: "Bearer ${SECURE_API_TOKEN}"
163
+ X-Client-Id: "${CLIENT_ID}"
164
+ # Note: http_client automatically handles HTTPS connections
165
+ transform: |
166
+ {
167
+ "fetched_at": "{{ 'now' | date: '%Y-%m-%dT%H:%M:%S' }}",
168
+ "data": {{ response | json }}
169
+ }
170
+ schedule: "*/30 * * * *" # Every 30 minutes
171
+
172
+ # Production TLS Setup Examples:
173
+
174
+ # 1. Let's Encrypt with Certbot:
175
+ # tls:
176
+ # cert: "/etc/letsencrypt/live/example.com/fullchain.pem"
177
+ # key: "/etc/letsencrypt/live/example.com/privkey.pem"
178
+
179
+ # 2. Self-signed for development:
180
+ # Generate: openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodes
181
+ # tls:
182
+ # cert: "./cert.pem"
183
+ # key: "./key.pem"
184
+ # rejectUnauthorized: false # Allow self-signed in dev
185
+
186
+ # 3. Kubernetes secrets:
187
+ # tls:
188
+ # cert: "${TLS_CERT}" # Mounted from K8s secret
189
+ # key: "${TLS_KEY}" # Mounted from K8s secret
190
+
191
+ # 4. AWS Certificate Manager:
192
+ # Use AWS ALB/NLB for TLS termination, then:
193
+ # tls:
194
+ # enabled: false # TLS handled by load balancer
195
+ # auth:
196
+ # type: bearer_token # Still authenticate requests
197
+
198
+ # 5. Mutual TLS (mTLS):
199
+ # tls:
200
+ # cert: "${SERVER_CERT}"
201
+ # key: "${SERVER_KEY}"
202
+ # ca: "${CLIENT_CA}" # CA to verify client certificates
203
+ # rejectUnauthorized: true
204
+
205
+ output:
206
+ pr_comment:
207
+ format: markdown
208
+ group_by: check
209
+ collapse: true
@@ -0,0 +1,63 @@
1
+ version: "1.0"
2
+
3
+ # Example configuration demonstrating human-input check type
4
+ # This shows various ways to use human-in-the-loop interactions
5
+
6
+ checks:
7
+ # Example 1: Simple approval gate
8
+ approval-gate:
9
+ type: human-input
10
+ prompt: "Do you approve this change? (yes/no)"
11
+ allow_empty: false
12
+ timeout: 300 # 5 minutes in seconds
13
+
14
+ # Example 2: Context collection
15
+ gather-context:
16
+ type: human-input
17
+ prompt: |
18
+ Please provide additional context about this change:
19
+ - What problem does it solve?
20
+ - Are there any risks?
21
+ - Any special deployment considerations?
22
+ placeholder: "Enter context here..."
23
+ multiline: true
24
+ allow_empty: true
25
+ default: "No additional context provided"
26
+
27
+ # Example 3: Conditional workflow
28
+ choose-review-type:
29
+ type: human-input
30
+ prompt: "Select review type: (1) Quick check or (2) Full analysis?"
31
+ allow_empty: false
32
+
33
+ quick-check:
34
+ type: log
35
+ depends_on: [choose-review-type]
36
+ if: "outputs['choose-review-type'] === '1'"
37
+ message: "Running quick check... (selected option: {{ outputs['choose-review-type'] }})"
38
+
39
+ full-analysis:
40
+ type: log
41
+ depends_on: [choose-review-type]
42
+ if: "outputs['choose-review-type'] === '2'"
43
+ message: "Running full analysis... (selected option: {{ outputs['choose-review-type'] }})"
44
+
45
+ # Example 4: Using human input in subsequent checks
46
+ deployment-confirmation:
47
+ type: human-input
48
+ prompt: "Are you ready to deploy? Enter deployment target (staging/production):"
49
+ allow_empty: false
50
+
51
+ deploy:
52
+ type: log
53
+ depends_on: [deployment-confirmation]
54
+ message: |
55
+ Deploying to: {{ outputs['deployment-confirmation'] }}
56
+
57
+ This is where you would trigger your deployment script
58
+
59
+ output:
60
+ pr_comment:
61
+ format: markdown
62
+ group_by: check
63
+ collapse: false