@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
@@ -116,6 +116,8 @@ export interface FailureConditionContext {
116
116
  };
117
117
  /** Environment variables */
118
118
  env?: Record<string, string>;
119
+ /** Workflow inputs - values passed to the workflow */
120
+ inputs?: Record<string, unknown>;
119
121
  /** Memory accessor for accessing memory store in expressions */
120
122
  memory?: {
121
123
  get: (key: string, namespace?: string) => unknown;
@@ -171,7 +173,7 @@ export interface FailureConditionResult {
171
173
  /**
172
174
  * Valid check types in configuration
173
175
  */
174
- export type ConfigCheckType = 'ai' | 'command' | 'http' | 'http_input' | 'http_client' | 'noop' | 'log' | 'memory' | 'github' | 'claude-code' | 'mcp' | 'human-input';
176
+ export type ConfigCheckType = 'ai' | 'command' | 'script' | 'http' | 'http_input' | 'http_client' | 'noop' | 'log' | 'memory' | 'github' | 'claude-code' | 'mcp' | 'human-input' | 'workflow' | 'git-checkout';
175
177
  /**
176
178
  * Valid event triggers for checks
177
179
  */
@@ -199,6 +201,71 @@ export type GroupByOption = 'check' | 'file' | 'severity' | 'group';
199
201
  export interface EnvConfig {
200
202
  [key: string]: string | number | boolean;
201
203
  }
204
+ /**
205
+ * Retry configuration for AI provider calls
206
+ */
207
+ export interface AIRetryConfig {
208
+ /** Maximum retry attempts (0-50) */
209
+ maxRetries?: number;
210
+ /** Initial delay in milliseconds (0-60000) */
211
+ initialDelay?: number;
212
+ /** Maximum delay cap in milliseconds (0-300000) */
213
+ maxDelay?: number;
214
+ /** Exponential backoff multiplier (1-10) */
215
+ backoffFactor?: number;
216
+ /** Custom error patterns to retry on */
217
+ retryableErrors?: string[];
218
+ }
219
+ /**
220
+ * Fallback provider configuration
221
+ */
222
+ export interface AIFallbackProviderConfig {
223
+ /** AI provider to use */
224
+ provider: 'google' | 'anthropic' | 'openai' | 'bedrock';
225
+ /** Model name to use */
226
+ model: string;
227
+ /** API key for this provider */
228
+ apiKey?: string;
229
+ /** Per-provider retry override */
230
+ maxRetries?: number;
231
+ /** AWS region (for Bedrock) */
232
+ region?: string;
233
+ /** AWS access key ID (for Bedrock) */
234
+ accessKeyId?: string;
235
+ /** AWS secret access key (for Bedrock) */
236
+ secretAccessKey?: string;
237
+ }
238
+ /**
239
+ * Fallback configuration for AI providers
240
+ */
241
+ export interface AIFallbackConfig {
242
+ /** Fallback strategy: 'same-model', 'same-provider', 'any', or 'custom' */
243
+ strategy?: 'same-model' | 'same-provider' | 'any' | 'custom';
244
+ /** Array of fallback provider configurations */
245
+ providers?: AIFallbackProviderConfig[];
246
+ /** Maximum total attempts across all providers */
247
+ maxTotalAttempts?: number;
248
+ /** Enable automatic fallback using available environment variables */
249
+ auto?: boolean;
250
+ }
251
+ /**
252
+ * Bash command execution configuration for ProbeAgent
253
+ * Note: Use 'allowBash: true' in AIProviderConfig to enable bash execution
254
+ */
255
+ export interface BashConfig {
256
+ /** Array of permitted command patterns (e.g., ['ls', 'git status']) */
257
+ allow?: string[];
258
+ /** Array of blocked command patterns (e.g., ['rm -rf', 'sudo']) */
259
+ deny?: string[];
260
+ /** Disable default safe command list (use with caution) */
261
+ noDefaultAllow?: boolean;
262
+ /** Disable default dangerous command blocklist (use with extreme caution) */
263
+ noDefaultDeny?: boolean;
264
+ /** Execution timeout in milliseconds */
265
+ timeout?: number;
266
+ /** Default working directory for command execution */
267
+ workingDirectory?: string;
268
+ }
202
269
  /**
203
270
  * AI provider configuration
204
271
  */
@@ -213,8 +280,43 @@ export interface AIProviderConfig {
213
280
  timeout?: number;
214
281
  /** Enable debug mode */
215
282
  debug?: boolean;
283
+ /** Probe promptType to use (e.g., engineer, code-review, architect) */
284
+ prompt_type?: string;
285
+ /** System prompt (baseline preamble). Replaces legacy custom_prompt. */
286
+ system_prompt?: string;
287
+ /** Probe customPrompt (baseline/system prompt) — deprecated, use system_prompt */
288
+ custom_prompt?: string;
289
+ /** Skip adding code context (diffs, files, PR info) to the prompt */
290
+ skip_code_context?: boolean;
291
+ /** Skip adding Slack conversation context to the prompt (when running under Slack) */
292
+ skip_slack_context?: boolean;
293
+ /**
294
+ * Skip adding transport-specific context (e.g., GitHub PR/issue XML, Slack
295
+ * conversation XML) to the prompt. When true, this behaves like setting both
296
+ * skip_code_context and skip_slack_context to true, unless those are
297
+ * explicitly overridden.
298
+ */
299
+ skip_transport_context?: boolean;
216
300
  /** MCP servers configuration */
217
301
  mcpServers?: Record<string, McpServerConfig>;
302
+ /** Enable the delegate tool for task distribution to subagents */
303
+ enableDelegate?: boolean;
304
+ /** Retry configuration for this provider */
305
+ retry?: AIRetryConfig;
306
+ /** Fallback configuration for provider failures */
307
+ fallback?: AIFallbackConfig;
308
+ /** Enable Edit and Create tools for file modification (disabled by default for security) */
309
+ allowEdit?: boolean;
310
+ /** Filter allowed tools - supports whitelist, exclusion (!prefix), or raw AI mode (empty array) */
311
+ allowedTools?: string[];
312
+ /** Disable all tools for raw AI mode (alternative to allowedTools: []) */
313
+ disableTools?: boolean;
314
+ /** Enable bash command execution (shorthand for bashConfig.enabled) */
315
+ allowBash?: boolean;
316
+ /** Advanced bash command execution configuration */
317
+ bashConfig?: BashConfig;
318
+ /** Completion prompt for post-completion validation/review (runs after attempt_completion) */
319
+ completion_prompt?: string;
218
320
  }
219
321
  /**
220
322
  * MCP Server configuration
@@ -241,6 +343,8 @@ export interface ClaudeCodeConfig {
241
343
  mcpServers?: Record<string, McpServerConfig>;
242
344
  /** Path to subagent script */
243
345
  subagent?: string;
346
+ /** Enable the delegate tool for task distribution to subagents */
347
+ enableDelegate?: boolean;
244
348
  /** Event hooks for lifecycle management */
245
349
  hooks?: {
246
350
  /** Called when check starts */
@@ -279,6 +383,8 @@ export interface CheckConfig {
279
383
  transform?: string;
280
384
  /** Transform using JavaScript expressions (evaluated in secure sandbox) - optional */
281
385
  transform_js?: string;
386
+ /** Script content to execute for script checks */
387
+ content?: string;
282
388
  /** Cron schedule expression (e.g., "0 2 * * *") - optional for any check type */
283
389
  schedule?: string;
284
390
  /** Focus area for the check (security/performance/style/architecture/all) - optional */
@@ -295,20 +401,37 @@ export interface CheckConfig {
295
401
  ai_model?: string;
296
402
  /** AI provider to use for this check - overrides global setting */
297
403
  ai_provider?: 'google' | 'anthropic' | 'openai' | 'bedrock' | 'mock' | string;
404
+ /** Optional persona hint, prepended to the prompt as 'Persona: <value>' */
405
+ ai_persona?: string;
406
+ /** Probe promptType for this check (underscore style) */
407
+ ai_prompt_type?: string;
408
+ /** System prompt for this check (underscore style) */
409
+ ai_system_prompt?: string;
410
+ /** Legacy customPrompt (underscore style) — deprecated, use ai_system_prompt */
411
+ ai_custom_prompt?: string;
298
412
  /** MCP servers for this AI check - overrides global setting */
299
413
  ai_mcp_servers?: Record<string, McpServerConfig>;
414
+ /** List of custom tool names to expose to this AI check via ephemeral SSE MCP server */
415
+ ai_custom_tools?: string[];
300
416
  /** Claude Code configuration (for claude-code type checks) */
301
417
  claude_code?: ClaudeCodeConfig;
302
418
  /** Environment variables for this check */
303
419
  env?: EnvConfig;
304
420
  /** Timeout in seconds for command execution (default: 60) */
305
421
  timeout?: number;
306
- /** Check IDs that this check depends on (optional) */
307
- depends_on?: string[];
422
+ /** Check IDs that this check depends on (optional). Accepts single string or array. */
423
+ depends_on?: string | string[];
308
424
  /** Group name for comment separation (e.g., "code-review", "pr-overview") - optional */
309
425
  group?: string;
310
426
  /** Schema type for template rendering (e.g., "code-review", "markdown") or inline JSON schema object - optional */
311
427
  schema?: string | Record<string, unknown>;
428
+ /**
429
+ * Optional JSON Schema to validate the produced output. If omitted and
430
+ * `schema` is an object, the engine will treat that object as the
431
+ * output_schema for validation purposes while still using string schemas
432
+ * (e.g., 'code-review') for template selection.
433
+ */
434
+ output_schema?: Record<string, unknown>;
312
435
  /** Custom template configuration - optional */
313
436
  template?: CustomTemplateConfig;
314
437
  /** Condition to determine if check should run - runs if expression evaluates to true */
@@ -323,12 +446,59 @@ export interface CheckConfig {
323
446
  failure_conditions?: FailureConditions;
324
447
  /** Tags for categorizing and filtering checks (e.g., ["local", "fast", "security"]) */
325
448
  tags?: string[];
449
+ /**
450
+ * Operational criticality of this step. Drives default safety policies
451
+ * (contracts, retries, loop budgets) at load time. Behavior can still be
452
+ * overridden explicitly per step via on_*, fail_if, assume/guarantee, etc.
453
+ *
454
+ * - 'external': interacts with external systems (side effects). Highest safety.
455
+ * - 'internal': modifies CI/config/state but not prod. High safety.
456
+ * - 'policy': organizational checks (linting, style, doc). Moderate safety.
457
+ * - 'info': informational checks. Lowest safety.
458
+ */
459
+ criticality?: 'external' | 'internal' | 'policy' | 'info';
460
+ /**
461
+ * Allow dependents to run even if this step fails.
462
+ * Defaults to false (dependents are gated when this step fails).
463
+ * Similar to GitHub Actions' continue-on-error.
464
+ */
465
+ continue_on_failure?: boolean;
326
466
  /** Process output as array and run dependent checks for each item */
327
467
  forEach?: boolean;
468
+ /**
469
+ * Control scheduling behavior when this check is triggered via routing (run/goto)
470
+ * from a forEach scope.
471
+ * - 'map': schedule once per item (fan-out) using item scopes.
472
+ * - 'reduce': schedule a single run at the parent scope (aggregation).
473
+ * If unset, the current default is a single run (reduce) for backward compatibility.
474
+ */
475
+ fanout?: 'map' | 'reduce';
476
+ /** Alias for fanout: 'reduce' */
477
+ reduce?: boolean;
478
+ /** Init routing configuration for this check (runs before execution/preprocessing) */
479
+ on_init?: OnInitConfig;
328
480
  /** Failure routing configuration for this check (retry/goto/run) */
329
481
  on_fail?: OnFailConfig;
330
482
  /** Success routing configuration for this check (post-actions and optional goto) */
331
483
  on_success?: OnSuccessConfig;
484
+ /** Finish routing configuration for forEach checks (runs after ALL iterations complete) */
485
+ on_finish?: OnFinishConfig;
486
+ /**
487
+ * Preconditions that must hold before executing the check. If any expression
488
+ * evaluates to false, the check is skipped (skipReason='assume').
489
+ */
490
+ assume?: string | string[];
491
+ /**
492
+ * Postconditions that should hold after executing the check. Expressions are
493
+ * evaluated against the produced result/output; violations are recorded as
494
+ * error issues with ruleId "contract/guarantee_failed".
495
+ */
496
+ guarantee?: string | string[];
497
+ /**
498
+ * Hard cap on how many times this check may execute within a single engine run.
499
+ * Overrides global limits.max_runs_per_check. Set to 0 or negative to disable for this step.
500
+ */
501
+ max_runs?: number;
332
502
  /**
333
503
  * Log provider specific options (optional, only used when type === 'log').
334
504
  * Declared here to ensure JSON Schema allows these keys and Ajv does not warn.
@@ -343,19 +513,25 @@ export interface CheckConfig {
343
513
  include_dependencies?: boolean;
344
514
  /** Include execution metadata in log output */
345
515
  include_metadata?: boolean;
516
+ /**
517
+ * Output parsing hint for command provider (optional)
518
+ * When set to 'json', command stdout is expected to be JSON. When 'text', treat as plain text.
519
+ * Note: command provider attempts JSON parsing heuristically; this flag mainly suppresses schema warnings
520
+ * and may be used by providers to alter parsing behavior in the future.
521
+ */
522
+ output_format?: 'json' | 'text';
346
523
  /**
347
524
  * Memory provider specific options (optional, only used when type === 'memory').
348
525
  */
349
526
  /** Memory operation to perform */
350
- operation?: 'get' | 'set' | 'append' | 'increment' | 'delete' | 'clear' | 'list' | 'exec_js';
527
+ /** Memory operation to perform. Use `type: 'script'` for custom JavaScript. */
528
+ operation?: 'get' | 'set' | 'append' | 'increment' | 'delete' | 'clear' | 'list';
351
529
  /** Key for memory operation */
352
530
  key?: string;
353
531
  /** Value for set/append operations */
354
532
  value?: unknown;
355
533
  /** JavaScript expression to compute value dynamically */
356
534
  value_js?: string;
357
- /** JavaScript code for exec_js operation with full memory access */
358
- memory_js?: string;
359
535
  /** Override namespace for this check */
360
536
  namespace?: string;
361
537
  /**
@@ -377,7 +553,7 @@ export interface CheckConfig {
377
553
  /** Session ID for HTTP transport (optional, server may generate one) */
378
554
  sessionId?: string;
379
555
  /** Command arguments (for stdio transport in MCP checks) */
380
- args?: string[];
556
+ command_args?: string[];
381
557
  /** Working directory (for stdio transport in MCP checks) */
382
558
  workingDirectory?: string;
383
559
  /**
@@ -391,6 +567,54 @@ export interface CheckConfig {
391
567
  multiline?: boolean;
392
568
  /** Default value if timeout occurs or empty input when allow_empty is true */
393
569
  default?: string;
570
+ /**
571
+ * Workflow provider specific options (optional, only used when type === 'workflow').
572
+ */
573
+ /** Workflow ID or path to workflow file */
574
+ workflow?: string;
575
+ /** Arguments/inputs for the workflow */
576
+ args?: Record<string, unknown>;
577
+ /** Override specific step configurations in the workflow */
578
+ overrides?: Record<string, Partial<CheckConfig>>;
579
+ /** Map workflow outputs to check outputs */
580
+ output_mapping?: Record<string, string>;
581
+ /** Alias for args - workflow inputs (backward compatibility) */
582
+ workflow_inputs?: Record<string, unknown>;
583
+ /** Config file path - alternative to workflow ID (loads a Visor config file as workflow) */
584
+ config?: string;
585
+ /** Alias for overrides - workflow step overrides (backward compatibility) */
586
+ workflow_overrides?: Record<string, Partial<CheckConfig>>;
587
+ /**
588
+ * Git-checkout provider specific options (optional, only used when type === 'git-checkout').
589
+ */
590
+ /** Git reference to checkout (branch, tag, commit SHA) - supports templates */
591
+ ref?: string;
592
+ /** Repository URL or owner/repo format (defaults to current repository) */
593
+ repository?: string;
594
+ /** GitHub token for private repositories (defaults to GITHUB_TOKEN env) */
595
+ token?: string;
596
+ /** Number of commits to fetch (0 for full history, default: 1) */
597
+ fetch_depth?: number;
598
+ /** Whether to fetch tags (default: false) */
599
+ fetch_tags?: boolean;
600
+ /** Checkout submodules: false, true, or 'recursive' */
601
+ submodules?: boolean | 'recursive';
602
+ /** Working directory for the checkout (defaults to temp directory) */
603
+ working_directory?: string;
604
+ /** Use git worktree for efficient parallel checkouts (default: true) */
605
+ use_worktree?: boolean;
606
+ /** Clean the working directory before checkout (default: true) */
607
+ clean?: boolean;
608
+ /** Sparse checkout paths - only checkout specific directories/files */
609
+ sparse_checkout?: string[];
610
+ /** Enable Git LFS (Large File Storage) */
611
+ lfs?: boolean;
612
+ /** Timeout in ms for cloning the bare repository (default: 300000 = 5 min) */
613
+ clone_timeout_ms?: number;
614
+ /** Clean up worktree on failure (default: true) */
615
+ cleanup_on_failure?: boolean;
616
+ /** Keep worktree after workflow completion (default: false) */
617
+ persist_worktree?: boolean;
394
618
  }
395
619
  /**
396
620
  * Backoff policy for retries
@@ -426,6 +650,12 @@ export interface OnFailConfig {
426
650
  goto_js?: string;
427
651
  /** Dynamic remediation list: JS expression returning string[] */
428
652
  run_js?: string;
653
+ /**
654
+ * Declarative transitions. Evaluated in order; first matching rule wins.
655
+ * If a rule's `to` is null, no goto occurs. When omitted or none match,
656
+ * the engine falls back to goto_js/goto for backward compatibility.
657
+ */
658
+ transitions?: TransitionRule[];
429
659
  }
430
660
  /**
431
661
  * Success routing configuration per check
@@ -441,6 +671,90 @@ export interface OnSuccessConfig {
441
671
  goto_js?: string;
442
672
  /** Dynamic post-success steps: JS expression returning string[] */
443
673
  run_js?: string;
674
+ /** Declarative transitions (see OnFailConfig.transitions). */
675
+ transitions?: TransitionRule[];
676
+ }
677
+ /**
678
+ * Finish routing configuration for forEach checks
679
+ * Runs once after ALL iterations of forEach and ALL dependent checks complete
680
+ */
681
+ export interface OnFinishConfig {
682
+ /** Post-finish steps to run */
683
+ run?: string[];
684
+ /** Optional jump back to ancestor step (by id) */
685
+ goto?: string;
686
+ /** Simulate a different event when performing goto (e.g., 'pr_updated') */
687
+ goto_event?: EventTrigger;
688
+ /** Dynamic goto: JS expression returning step id or null */
689
+ goto_js?: string;
690
+ /** Dynamic post-finish steps: JS expression returning string[] */
691
+ run_js?: string;
692
+ /** Declarative transitions (see OnFailConfig.transitions). */
693
+ transitions?: TransitionRule[];
694
+ }
695
+ /**
696
+ * Init routing configuration per check
697
+ * Runs BEFORE the check executes (preprocessing/setup)
698
+ */
699
+ export interface OnInitConfig {
700
+ /** Items to run before this check executes */
701
+ run?: OnInitRunItem[];
702
+ /** Dynamic init items: JS expression returning OnInitRunItem[] */
703
+ run_js?: string;
704
+ /** Declarative transitions (optional, for advanced use cases) */
705
+ transitions?: TransitionRule[];
706
+ }
707
+ /**
708
+ * Unified on_init run item - can be tool, step, workflow, or plain string
709
+ */
710
+ export type OnInitRunItem = OnInitToolInvocation | OnInitStepInvocation | OnInitWorkflowInvocation | string;
711
+ /**
712
+ * Invoke a custom tool (from tools: section)
713
+ */
714
+ export interface OnInitToolInvocation {
715
+ /** Tool name (must exist in tools: section) */
716
+ tool: string;
717
+ /** Arguments to pass to the tool (Liquid templates supported) */
718
+ with?: Record<string, unknown>;
719
+ /** Custom output name (defaults to tool name) */
720
+ as?: string;
721
+ }
722
+ /**
723
+ * Invoke a helper step (regular check)
724
+ */
725
+ export interface OnInitStepInvocation {
726
+ /** Step name (must exist in steps: section) */
727
+ step: string;
728
+ /** Arguments to pass to the step (Liquid templates supported) */
729
+ with?: Record<string, unknown>;
730
+ /** Custom output name (defaults to step name) */
731
+ as?: string;
732
+ }
733
+ /**
734
+ * Invoke a reusable workflow
735
+ */
736
+ export interface OnInitWorkflowInvocation {
737
+ /** Workflow ID or path */
738
+ workflow: string;
739
+ /** Workflow inputs (Liquid templates supported) */
740
+ with?: Record<string, unknown>;
741
+ /** Custom output name (defaults to workflow name) */
742
+ as?: string;
743
+ /** Step overrides */
744
+ overrides?: Record<string, Partial<CheckConfig>>;
745
+ /** Output mapping */
746
+ output_mapping?: Record<string, string>;
747
+ }
748
+ /**
749
+ * Declarative transition rule for on_* blocks.
750
+ */
751
+ export interface TransitionRule {
752
+ /** JavaScript expression evaluated in the same sandbox as goto_js; truthy enables the rule. */
753
+ when: string;
754
+ /** Target step ID, or null to explicitly prevent goto. */
755
+ to?: string | null;
756
+ /** Optional event override when performing goto. */
757
+ goto_event?: EventTrigger;
444
758
  }
445
759
  /**
446
760
  * Global routing defaults
@@ -453,6 +767,23 @@ export interface RoutingDefaults {
453
767
  on_fail?: OnFailConfig;
454
768
  };
455
769
  }
770
+ /**
771
+ * Global engine limits
772
+ */
773
+ export interface LimitsConfig {
774
+ /**
775
+ * Maximum number of executions per check within a single engine run.
776
+ * Applies to each distinct scope independently for forEach item executions.
777
+ * Set to 0 or negative to disable. Default: 50.
778
+ */
779
+ max_runs_per_check?: number;
780
+ /**
781
+ * Maximum nesting depth for workflows executed by the state machine engine.
782
+ * Nested workflows are invoked by the workflow provider; this limit prevents
783
+ * accidental infinite recursion. Default: 3.
784
+ */
785
+ max_workflow_depth?: number;
786
+ }
456
787
  /**
457
788
  * Custom template configuration
458
789
  */
@@ -490,6 +821,8 @@ export interface DebugConfig {
490
821
  * PR comment output configuration
491
822
  */
492
823
  export interface PrCommentOutput {
824
+ /** Whether PR comments are enabled */
825
+ enabled?: boolean;
493
826
  /** Format of the output */
494
827
  format: ConfigOutputFormat;
495
828
  /** How to group the results */
@@ -631,6 +964,68 @@ export interface VisorHooks {
631
964
  /** Called when human input is required */
632
965
  onHumanInput?: (request: HumanInputRequest) => Promise<string>;
633
966
  }
967
+ /**
968
+ * Custom tool definition for use in MCP blocks
969
+ */
970
+ export interface CustomToolDefinition {
971
+ /** Tool name - used to reference the tool in MCP blocks */
972
+ name: string;
973
+ /** Description of what the tool does */
974
+ description?: string;
975
+ /** Input schema for the tool (JSON Schema format) */
976
+ inputSchema?: {
977
+ type: 'object';
978
+ properties?: Record<string, unknown>;
979
+ required?: string[];
980
+ additionalProperties?: boolean;
981
+ };
982
+ /** Command to execute - supports Liquid template */
983
+ exec: string;
984
+ /** Optional stdin input - supports Liquid template */
985
+ stdin?: string;
986
+ /** Transform the raw output - supports Liquid template */
987
+ transform?: string;
988
+ /** Transform the output using JavaScript - alternative to transform */
989
+ transform_js?: string;
990
+ /** Working directory for command execution */
991
+ cwd?: string;
992
+ /** Environment variables for the command */
993
+ env?: Record<string, string>;
994
+ /** Timeout in milliseconds */
995
+ timeout?: number;
996
+ /** Whether to parse output as JSON automatically */
997
+ parseJson?: boolean;
998
+ /** Expected output schema for validation */
999
+ outputSchema?: Record<string, unknown>;
1000
+ }
1001
+ /**
1002
+ * Workflow input definition for standalone reusable workflows
1003
+ */
1004
+ export interface WorkflowInput {
1005
+ /** Input parameter name */
1006
+ name: string;
1007
+ /** JSON Schema for the input */
1008
+ schema?: Record<string, unknown>;
1009
+ /** Whether this input is required */
1010
+ required?: boolean;
1011
+ /** Default value if not provided */
1012
+ default?: unknown;
1013
+ /** Human-readable description */
1014
+ description?: string;
1015
+ }
1016
+ /**
1017
+ * Workflow output definition for standalone reusable workflows
1018
+ */
1019
+ export interface WorkflowOutput {
1020
+ /** Output name */
1021
+ name: string;
1022
+ /** Human-readable description */
1023
+ description?: string;
1024
+ /** Value using Liquid template syntax (references step outputs) */
1025
+ value?: string;
1026
+ /** Value using JavaScript expression (alternative to value) */
1027
+ value_js?: string;
1028
+ }
634
1029
  /**
635
1030
  * Main Visor configuration
636
1031
  */
@@ -639,12 +1034,22 @@ export interface VisorConfig {
639
1034
  version: string;
640
1035
  /** Extends from other configurations - can be file path, HTTP(S) URL, or "default" */
641
1036
  extends?: string | string[];
1037
+ /** Alias for extends - include from other configurations (backward compatibility) */
1038
+ include?: string | string[];
1039
+ /** Custom tool definitions that can be used in MCP blocks */
1040
+ tools?: Record<string, CustomToolDefinition>;
1041
+ /** Import workflow definitions from external files or URLs */
1042
+ imports?: string[];
1043
+ /** Workflow inputs (for standalone reusable workflows) */
1044
+ inputs?: WorkflowInput[];
1045
+ /** Workflow outputs (for standalone reusable workflows) */
1046
+ outputs?: WorkflowOutput[];
642
1047
  /** Step configurations (recommended) */
643
1048
  steps?: Record<string, CheckConfig>;
644
1049
  /** Check configurations (legacy, use 'steps' instead) - always populated after normalization */
645
1050
  checks?: Record<string, CheckConfig>;
646
- /** Output configuration */
647
- output: OutputConfig;
1051
+ /** Output configuration (optional - defaults provided) */
1052
+ output?: OutputConfig;
648
1053
  /** HTTP server configuration for receiving webhooks */
649
1054
  http_server?: HttpServerConfig;
650
1055
  /** Memory storage configuration */
@@ -671,6 +1076,51 @@ export interface VisorConfig {
671
1076
  tag_filter?: TagFilter;
672
1077
  /** Optional routing defaults for retry/goto/run policies */
673
1078
  routing?: RoutingDefaults;
1079
+ /** Global execution limits */
1080
+ limits?: LimitsConfig;
1081
+ /** Optional integrations: event-driven frontends (e.g., ndjson-sink, github) */
1082
+ frontends?: Array<{
1083
+ /** Frontend name, e.g., 'ndjson-sink', 'github' */
1084
+ name: string;
1085
+ /** Frontend-specific configuration */
1086
+ config?: unknown;
1087
+ }>;
1088
+ /** Workspace isolation configuration for sandboxed execution */
1089
+ workspace?: WorkspaceConfig;
1090
+ /** Slack configuration */
1091
+ slack?: SlackConfig;
1092
+ }
1093
+ /**
1094
+ * Workspace isolation configuration
1095
+ */
1096
+ export interface WorkspaceConfig {
1097
+ /** Enable workspace isolation (default: true when config present) */
1098
+ enabled?: boolean;
1099
+ /** Base path for workspaces (default: /tmp/visor-workspaces) */
1100
+ base_path?: string;
1101
+ /** Clean up workspace on exit (default: true) */
1102
+ cleanup_on_exit?: boolean;
1103
+ }
1104
+ /**
1105
+ * Slack configuration
1106
+ */
1107
+ export interface SlackConfig {
1108
+ /** Slack API version */
1109
+ version?: string;
1110
+ /** Mention handling: 'all', 'direct', etc. */
1111
+ mentions?: string;
1112
+ /** Thread handling: 'required', 'optional', etc. */
1113
+ threads?: string;
1114
+ /** Show raw output in Slack responses */
1115
+ show_raw_output?: boolean;
1116
+ /**
1117
+ * Append telemetry identifiers to Slack replies.
1118
+ */
1119
+ telemetry?: SlackTelemetryConfig;
1120
+ }
1121
+ export interface SlackTelemetryConfig {
1122
+ /** Enable telemetry ID suffix in Slack messages */
1123
+ enabled?: boolean;
674
1124
  }
675
1125
  /**
676
1126
  * Environment variable overrides