@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,92 @@
1
+ version: "1.0"
2
+
3
+ # Reusable Tools Library
4
+ # This file defines custom tools that can be imported and reused across multiple configurations.
5
+
6
+ tools:
7
+ fetch-jira-issue:
8
+ name: fetch-jira-issue
9
+ description: Fetch JIRA issue details by issue key
10
+ inputSchema:
11
+ type: object
12
+ properties:
13
+ issue_key:
14
+ type: string
15
+ description: JIRA issue key (e.g., PROJ-123)
16
+ required: [issue_key]
17
+ exec: |
18
+ # In production, this would call JIRA API
19
+ # For demo, we simulate fetching issue data
20
+ ISSUE_KEY="{{ args.issue_key }}"
21
+ echo "{
22
+ \"key\": \"$ISSUE_KEY\",
23
+ \"summary\": \"Example issue for $ISSUE_KEY\",
24
+ \"priority\": \"high\",
25
+ \"assignee\": \"alice\",
26
+ \"status\": \"in-progress\"
27
+ }"
28
+ parseJson: true
29
+ timeout: 5000
30
+
31
+ fetch-external-data:
32
+ name: fetch-external-data
33
+ description: Fetch data from various external sources
34
+ inputSchema:
35
+ type: object
36
+ properties:
37
+ source:
38
+ type: string
39
+ description: Data source identifier
40
+ format:
41
+ type: string
42
+ enum: [json, xml, text]
43
+ default: json
44
+ required: [source]
45
+ exec: |
46
+ SOURCE="{{ args.source }}"
47
+ FORMAT="{{ args.format }}"
48
+
49
+ case $SOURCE in
50
+ "user-db")
51
+ echo '{"source":"user-db","data":{"users":["alice","bob"],"count":2}}'
52
+ ;;
53
+ "config-service")
54
+ echo '{"source":"config-service","data":{"environment":"production","version":"1.2.3"}}'
55
+ ;;
56
+ "metrics-api")
57
+ echo '{"source":"metrics-api","data":{"cpu":45,"memory":78,"requests":1523}}'
58
+ ;;
59
+ *)
60
+ echo '{"source":"'$SOURCE'","data":"mock-data","format":"'$FORMAT'"}'
61
+ ;;
62
+ esac
63
+ parseJson: true
64
+ timeout: 5000
65
+
66
+ validate-data:
67
+ name: validate-data
68
+ description: Validate data against rules
69
+ inputSchema:
70
+ type: object
71
+ properties:
72
+ data:
73
+ type: object
74
+ description: Data to validate
75
+ rules:
76
+ type: array
77
+ description: Validation rules
78
+ required: [data]
79
+ exec: |
80
+ # Simple validation check
81
+ DATA='{{ args.data | json }}'
82
+ echo "{
83
+ \"valid\": true,
84
+ \"checked_at\": \"$(date -u +%Y-%m-%dT%H:%M:%SZ)\",
85
+ \"data\": $DATA
86
+ }"
87
+ parseJson: true
88
+ timeout: 2000
89
+
90
+ # This file is meant to be imported via "extends:" in other configurations.
91
+ # No steps are defined here - only reusable tools.
92
+ steps: {}
@@ -0,0 +1,88 @@
1
+ version: "1.0"
2
+
3
+ # Reusable Workflows Library
4
+ # This file defines workflows that can be imported and reused across multiple configurations.
5
+
6
+ workflows:
7
+ data-enrichment:
8
+ name: data-enrichment
9
+ description: Fetch and enrich data from multiple sources
10
+ steps:
11
+ - id: fetch-primary
12
+ type: command
13
+ exec: |
14
+ echo '{"primary":"data","value":42}'
15
+
16
+ - id: fetch-secondary
17
+ type: command
18
+ exec: |
19
+ echo '{"secondary":"metadata","timestamp":"2024-01-01"}'
20
+
21
+ - id: merge-results
22
+ type: command
23
+ exec: |
24
+ echo '{"enriched":true,"primary":{{ outputs["fetch-primary"] | json }},"secondary":{{ outputs["fetch-secondary"] | json }}}'
25
+ parseJson: true
26
+
27
+ output_mapping:
28
+ enriched_data: "{{ outputs['merge-results'] }}"
29
+
30
+ issue-triage:
31
+ name: issue-triage
32
+ description: Triage and categorize issues
33
+ steps:
34
+ - id: analyze-issue
35
+ type: command
36
+ exec: |
37
+ echo '{"category":"bug","priority":"high","labels":["security","urgent"]}'
38
+ parseJson: true
39
+
40
+ - id: assign-owner
41
+ type: command
42
+ exec: |
43
+ PRIORITY='{{ outputs["analyze-issue"].priority }}'
44
+ if [ "$PRIORITY" = "high" ]; then
45
+ echo '{"owner":"senior-dev","team":"security"}'
46
+ else
47
+ echo '{"owner":"junior-dev","team":"support"}'
48
+ fi
49
+ parseJson: true
50
+
51
+ output_mapping:
52
+ triage_result: "{{ outputs['analyze-issue'] }}"
53
+ assignment: "{{ outputs['assign-owner'] }}"
54
+
55
+ multi-step-validation:
56
+ name: multi-step-validation
57
+ description: Validate data through multiple steps
58
+ steps:
59
+ - id: schema-check
60
+ type: command
61
+ exec: |
62
+ echo '{"schema_valid":true,"errors":[]}'
63
+ parseJson: true
64
+
65
+ - id: business-rules
66
+ type: command
67
+ exec: |
68
+ echo '{"rules_passed":true,"warnings":["minor-issue"]}'
69
+ parseJson: true
70
+
71
+ - id: final-verdict
72
+ type: command
73
+ exec: |
74
+ SCHEMA_VALID='{{ outputs["schema-check"].schema_valid }}'
75
+ RULES_PASSED='{{ outputs["business-rules"].rules_passed }}'
76
+ if [ "$SCHEMA_VALID" = "true" ] && [ "$RULES_PASSED" = "true" ]; then
77
+ echo '{"valid":true,"status":"approved"}'
78
+ else
79
+ echo '{"valid":false,"status":"rejected"}'
80
+ fi
81
+ parseJson: true
82
+
83
+ output_mapping:
84
+ validation_result: "{{ outputs['final-verdict'] }}"
85
+
86
+ # This file is meant to be imported via "extends:" in other configurations.
87
+ # No steps are defined here - only reusable workflows.
88
+ steps: {}
@@ -0,0 +1,35 @@
1
+ version: "2.0"
2
+
3
+ # Basic failure routing: retry + goto ancestor
4
+ routing:
5
+ max_loops: 5
6
+ defaults:
7
+ on_fail:
8
+ retry:
9
+ max: 1
10
+ backoff: { mode: exponential, delay_ms: 400 }
11
+
12
+ steps:
13
+ setup-env:
14
+ type: command
15
+ exec: "echo '[setup] preparing environment'"
16
+
17
+ flaky:
18
+ type: command
19
+ depends_on: [setup-env]
20
+ exec: |
21
+ FLAG=".visor_demo_flaky"
22
+ if [ ! -f "$FLAG" ]; then
23
+ echo "first attempt failing" >&2
24
+ touch "$FLAG"
25
+ exit 1
26
+ fi
27
+ echo "second attempt OK"
28
+ on_fail:
29
+ goto: setup-env
30
+
31
+ cleanup:
32
+ type: command
33
+ depends_on: [flaky]
34
+ exec: "rm -f .visor_demo_flaky && echo '[cleanup] done'"
35
+
@@ -0,0 +1,46 @@
1
+ version: "2.0"
2
+
3
+ # Dynamic routing using *_js hooks
4
+ routing:
5
+ max_loops: 6
6
+
7
+ steps:
8
+ setup:
9
+ type: command
10
+ exec: "echo '[setup] install deps'"
11
+
12
+ lint-fix:
13
+ type: command
14
+ exec: "echo '[lint-fix] apply fixes'"
15
+
16
+ target:
17
+ type: command
18
+ depends_on: [setup]
19
+ exec: |
20
+ # Simulate a missing module error on first try
21
+ FLAG=".visor_demo_dynamic"
22
+ if [ ! -f "$FLAG" ]; then
23
+ echo "module not found: axios" >&2
24
+ touch "$FLAG"
25
+ exit 1
26
+ fi
27
+ echo "[target] succeeded"
28
+ on_fail:
29
+ goto_js: |
30
+ // If we see a missing module message, jump back to setup
31
+ if ((error.message||'').toLowerCase().includes('module not found')) return 'setup';
32
+ if ((error.stderr||'').toLowerCase().includes('module not found')) return 'setup';
33
+ return null;
34
+ run_js: |
35
+ // If lint is mentioned, add lint-fix dynamically
36
+ const out = [];
37
+ const s = (error.stderr||'').toLowerCase();
38
+ if (s.includes('lint')) out.push('lint-fix');
39
+ return out;
40
+ retry: { max: 1, backoff: { mode: fixed, delay_ms: 200 } }
41
+
42
+ cleanup:
43
+ type: command
44
+ depends_on: [target]
45
+ exec: "rm -f .visor_demo_dynamic && echo '[cleanup] done'"
46
+
@@ -0,0 +1,34 @@
1
+ version: "2.0"
2
+
3
+ # forEach + failure routing: remediate missing markers, then retry
4
+ routing:
5
+ max_loops: 6
6
+
7
+ steps:
8
+ list:
9
+ type: command
10
+ exec: "echo '[\"alpha\",\"beta\"]'"
11
+ forEach: true
12
+
13
+ mark:
14
+ type: command
15
+ depends_on: [list]
16
+ exec: "touch .visor_demo_marker_{{ outputs.list }} && echo '[mark] {{ outputs.list }}'"
17
+
18
+ process:
19
+ type: command
20
+ depends_on: [list]
21
+ exec: |
22
+ FILE=".visor_demo_marker_{{ outputs.list }}"
23
+ if [ -f "$FILE" ]; then echo "[process] {{ outputs.list }} ready"; exit 0; fi
24
+ echo "[process] missing marker for {{ outputs.list }}" >&2
25
+ exit 1
26
+ on_fail:
27
+ run: [mark]
28
+ retry: { max: 1, backoff: { mode: fixed, delay_ms: 200 } }
29
+
30
+ cleanup:
31
+ type: command
32
+ depends_on: [process]
33
+ exec: "rm -f .visor_demo_marker_* && echo '[cleanup] done'"
34
+
@@ -0,0 +1,34 @@
1
+ version: "2.0"
2
+
3
+ steps:
4
+ # A typical PR overview step that runs on PR events
5
+ overview:
6
+ type: ai
7
+ on: [pr_opened, pr_updated]
8
+ schema: overview
9
+ prompt: |
10
+ Return JSON matching the `overview` schema with a concise markdown summary.
11
+
12
+ # A downstream check that, after succeeding, wants to refresh overview as if a PR update occurred
13
+ quality:
14
+ type: ai
15
+ depends_on: [overview]
16
+ on: [pr_opened, pr_updated]
17
+ prompt: |
18
+ Analyze code quality aspects.
19
+ on_success:
20
+ goto: overview # Jump to ancestor
21
+ goto_event: pr_updated
22
+
23
+ # A command demonstrating conditional jumps based on state
24
+ validate:
25
+ type: command
26
+ depends_on: [quality]
27
+ exec: |
28
+ echo "validate"
29
+ on_fail:
30
+ goto_js: |
31
+ // Demonstration: dynamically pick an ancestor once
32
+ return attempt === 1 ? 'overview' : null
33
+ goto_event: pr_updated
34
+
@@ -0,0 +1,25 @@
1
+ version: "2.0"
2
+
3
+ # Success routing: run post-steps and jump back once to re-validate
4
+ routing:
5
+ max_loops: 5
6
+
7
+ steps:
8
+ unit-tests:
9
+ type: command
10
+ exec: "echo '[unit] ok'"
11
+
12
+ build:
13
+ type: command
14
+ depends_on: [unit-tests]
15
+ exec: "echo '[build] ok'"
16
+ on_success:
17
+ run: [notify]
18
+ goto_js: |
19
+ // Jump back only once to re-run unit-tests after build
20
+ return attempt === 1 ? 'unit-tests' : null;
21
+
22
+ notify:
23
+ type: command
24
+ exec: "echo '[notify] sent'"
25
+
@@ -0,0 +1,71 @@
1
+ #!/bin/bash
2
+
3
+ # Interactive Calculator Demo Script
4
+ # This script demonstrates the calculator example using piped input
5
+
6
+ echo "╔═══════════════════════════════════════════╗"
7
+ echo "║ Visor Calculator Demo ║"
8
+ echo "║ Human Input + Memory + JavaScript ║"
9
+ echo "╚═══════════════════════════════════════════╝"
10
+ echo ""
11
+
12
+ echo "This demo will calculate: 42 + 7"
13
+ echo ""
14
+ echo "Running with piped input (non-interactive):"
15
+ echo " First number: 42"
16
+ echo " Second number: 7"
17
+ echo " Operation: +"
18
+ echo ""
19
+ echo "Press Enter to run..."
20
+ read
21
+
22
+ # Note: This would work if visor was built and the checks run sequentially
23
+ # For now, this is a demonstration of how it would work
24
+
25
+ echo "Command that would run:"
26
+ echo ""
27
+ echo " echo '42' | visor --config examples/calculator-config.yaml --check get-number1"
28
+ echo " echo '7' | visor --config examples/calculator-config.yaml --check get-number2"
29
+ echo " echo '+' | visor --config examples/calculator-config.yaml --check get-operation"
30
+ echo ""
31
+
32
+ echo "Or interactively:"
33
+ echo ""
34
+ echo " visor --config examples/calculator-config.yaml"
35
+ echo ""
36
+
37
+ echo "This would prompt you for each input with a beautiful UI like:"
38
+ echo ""
39
+ echo "┌─────────────────────────────────────────┐"
40
+ echo "│ 💬 Human Input Required │"
41
+ echo "├─────────────────────────────────────────┤"
42
+ echo "│ │"
43
+ echo "│ Enter the first number: │"
44
+ echo "│ │"
45
+ echo "│ ┌─────────────────────────────────────┐ │"
46
+ echo "│ │ e.g., 42 │ │"
47
+ echo "│ │ │ │"
48
+ echo "│ │ (Type your response and press Enter)│ │"
49
+ echo "│ └─────────────────────────────────────┘ │"
50
+ echo "│ │"
51
+ echo "└─────────────────────────────────────────┘"
52
+ echo ""
53
+ echo "> 42"
54
+ echo ""
55
+
56
+ echo "Then the result would be:"
57
+ echo ""
58
+ echo "╔════════════════════════════════════════╗"
59
+ echo "║ CALCULATION RESULT ║"
60
+ echo "╠════════════════════════════════════════╣"
61
+ echo "║ ║"
62
+ echo "║ 42 + 7 = 49 ║"
63
+ echo "║ ║"
64
+ echo "╚════════════════════════════════════════╝"
65
+ echo ""
66
+
67
+ echo "✨ Once Visor is built, you can run the actual calculator with:"
68
+ echo ""
69
+ echo " npm run build"
70
+ echo " ./dist/cli-main.js --config examples/calculator-config.yaml"
71
+ echo ""
@@ -0,0 +1,10 @@
1
+ import { loadConfig, runChecks } from '../dist/sdk/sdk.mjs';
2
+
3
+ async function main() {
4
+ // Load config from object - validation and defaults applied automatically
5
+ const config = await loadConfig({ version: '1.0', checks: {} });
6
+ const res = await runChecks({ config, checks: [], output: { format: 'json' }, debug: false });
7
+ console.log(JSON.stringify({ totalIssues: res.reviewSummary.issues?.length || 0 }, null, 2));
8
+ }
9
+
10
+ main().catch(err => { console.error(err); process.exit(1); });
@@ -0,0 +1,10 @@
1
+ const { loadConfig, runChecks } = require('../dist/sdk/sdk.js');
2
+
3
+ async function main() {
4
+ // Load config from object - validation and defaults applied automatically
5
+ const config = await loadConfig({ version: '1.0', checks: {} });
6
+ const res = await runChecks({ config, checks: [], output: { format: 'json' } });
7
+ console.log('Issues:', res.reviewSummary.issues?.length || 0);
8
+ }
9
+
10
+ main().catch(err => { console.error(err); process.exit(1); });
@@ -0,0 +1,175 @@
1
+ /**
2
+ * Comprehensive SDK Example
3
+ *
4
+ * Demonstrates:
5
+ * - loadConfig() with raw object
6
+ * - Complex check dependencies (depends_on)
7
+ * - Check execution order
8
+ * - Different check types
9
+ * - Tag filtering
10
+ * - Parallel execution control
11
+ * - Error handling and results inspection
12
+ */
13
+
14
+ import { loadConfig, runChecks, resolveChecks } from '../dist/sdk/sdk.mjs';
15
+
16
+ async function main() {
17
+ console.log('=== Visor SDK - Comprehensive Example ===\n');
18
+
19
+ // Create a complex config with dependencies
20
+ const config = await loadConfig({
21
+ version: '1.0',
22
+ checks: {
23
+ // Step 1: Setup/preparation check
24
+ 'setup': {
25
+ type: 'command',
26
+ exec: 'echo "Setup: Installing dependencies..."',
27
+ tags: ['setup'],
28
+ },
29
+
30
+ // Step 2: Run tests (depends on setup)
31
+ 'unit-tests': {
32
+ type: 'command',
33
+ exec: 'echo "Running unit tests..."',
34
+ depends_on: ['setup'],
35
+ tags: ['tests'],
36
+ },
37
+
38
+ // Step 3: Integration tests (depends on setup)
39
+ 'integration-tests': {
40
+ type: 'command',
41
+ exec: 'echo "Running integration tests..."',
42
+ depends_on: ['setup'],
43
+ tags: ['tests'],
44
+ },
45
+
46
+ // Step 4: Security scan (depends on setup)
47
+ 'security-scan': {
48
+ type: 'command',
49
+ exec: 'echo "Running security scan..."',
50
+ depends_on: ['setup'],
51
+ tags: ['security', 'critical'],
52
+ },
53
+
54
+ // Step 5: Linting (depends on setup)
55
+ 'lint': {
56
+ type: 'command',
57
+ exec: 'echo "Running linter..."',
58
+ depends_on: ['setup'],
59
+ tags: ['quality'],
60
+ },
61
+
62
+ // Step 6: Build (depends on all tests passing)
63
+ 'build': {
64
+ type: 'command',
65
+ exec: 'echo "Building application..."',
66
+ depends_on: ['unit-tests', 'integration-tests', 'lint'],
67
+ tags: ['build'],
68
+ },
69
+
70
+ // Step 7: Deploy check (depends on build and security)
71
+ 'deploy-check': {
72
+ type: 'command',
73
+ exec: 'echo "Checking deployment readiness..."',
74
+ depends_on: ['build', 'security-scan'],
75
+ tags: ['deployment'],
76
+ },
77
+
78
+ // Step 8: Final report (depends on everything)
79
+ 'report': {
80
+ type: 'command',
81
+ exec: 'echo "Generating final report..."',
82
+ depends_on: ['deploy-check'],
83
+ tags: ['reporting'],
84
+ },
85
+ },
86
+ max_parallelism: 3,
87
+ fail_fast: false,
88
+ });
89
+
90
+ console.log('📋 Config loaded with', Object.keys(config.checks).length, 'checks\n');
91
+
92
+ // Example 1: Resolve dependencies
93
+ console.log('=== Example 1: Dependency Resolution ===');
94
+ const reportDeps = resolveChecks(['report'], config);
95
+ console.log('To run "report", these checks execute in order:');
96
+ reportDeps.forEach((check, idx) => {
97
+ console.log(` ${idx + 1}. ${check}`);
98
+ });
99
+
100
+ // Example 2: Run specific checks
101
+ console.log('\n=== Example 2: Run Specific Checks ===');
102
+ const testResult = await runChecks({
103
+ config,
104
+ checks: ['setup', 'unit-tests', 'integration-tests'],
105
+ output: { format: 'json' },
106
+ debug: false,
107
+ });
108
+ console.log('✅ Executed:', testResult.checksExecuted.join(', '));
109
+ console.log('⏱️ Time:', testResult.executionTime, 'ms');
110
+
111
+ // Example 3: Tag filtering
112
+ console.log('\n=== Example 3: Tag Filtering ===');
113
+ const securityResult = await runChecks({
114
+ config,
115
+ checks: Object.keys(config.checks),
116
+ tagFilter: { include: ['critical'] },
117
+ output: { format: 'json' },
118
+ debug: false,
119
+ });
120
+ console.log('✅ Critical checks:', securityResult.checksExecuted.join(', '));
121
+ console.log('⏱️ Time:', securityResult.executionTime, 'ms');
122
+
123
+ // Example 4: Full pipeline
124
+ console.log('\n=== Example 4: Full Pipeline ===');
125
+ const fullResult = await runChecks({
126
+ config,
127
+ checks: Object.keys(config.checks),
128
+ output: { format: 'json' },
129
+ maxParallelism: 3,
130
+ debug: false,
131
+ });
132
+
133
+ console.log('📊 Results:');
134
+ console.log(' Checks:', fullResult.checksExecuted.length);
135
+ console.log(' Time:', fullResult.executionTime, 'ms');
136
+ console.log(' Issues:', fullResult.reviewSummary.issues?.length || 0);
137
+
138
+ console.log('\n Execution order:');
139
+ fullResult.checksExecuted.forEach((check, idx) => {
140
+ console.log(` ${idx + 1}. ${check}`);
141
+ });
142
+
143
+ // Example 5: Strict validation
144
+ console.log('\n=== Example 5: Strict Validation ===');
145
+ try {
146
+ await loadConfig({
147
+ version: '1.0',
148
+ checks: { test: { type: 'command', exec: 'echo test' } },
149
+ typo_field: 'error!',
150
+ }, { strict: true });
151
+ console.log('❌ Should have thrown');
152
+ } catch (error) {
153
+ console.log('✅ Caught:', error.message.substring(0, 50) + '...');
154
+ }
155
+
156
+ // Example 6: Dependency graph
157
+ console.log('\n=== Example 6: Dependency Graph ===');
158
+ for (const name of Object.keys(config.checks)) {
159
+ const deps = config.checks[name].depends_on || [];
160
+ const tags = config.checks[name].tags || [];
161
+ const tagStr = tags.length ? ` [${tags.join(',')}]` : '';
162
+ if (deps.length) {
163
+ console.log(` ${name}${tagStr} → ${deps.join(', ')}`);
164
+ } else {
165
+ console.log(` ${name}${tagStr} → (root)`);
166
+ }
167
+ }
168
+
169
+ console.log('\n✅ All examples complete!\n');
170
+ }
171
+
172
+ main().catch(err => {
173
+ console.error('❌ Error:', err.message);
174
+ process.exit(1);
175
+ });