@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,222 @@
1
+ # Example reusable workflow for code quality checks
2
+ id: code-quality
3
+ name: Code Quality Workflow
4
+ description: Comprehensive code quality checks including linting, complexity, and best practices
5
+ version: "1.0.0"
6
+ tags: ["quality", "reusable", "linting"]
7
+ category: quality
8
+
9
+ # Input parameters
10
+ inputs:
11
+ - name: language
12
+ description: Programming language to analyze
13
+ schema:
14
+ type: string
15
+ enum: ["javascript", "typescript", "python", "go", "java"]
16
+ required: true
17
+
18
+ - name: complexity_threshold
19
+ description: Maximum allowed cyclomatic complexity
20
+ schema:
21
+ type: number
22
+ minimum: 1
23
+ maximum: 20
24
+ default: 10
25
+
26
+ - name: enable_formatting
27
+ description: Check code formatting
28
+ schema:
29
+ type: boolean
30
+ default: true
31
+
32
+ - name: custom_rules
33
+ description: Custom linting rules to apply
34
+ schema:
35
+ type: object
36
+ additionalProperties: true
37
+ required: false
38
+
39
+ # Output parameters
40
+ outputs:
41
+ - name: quality_score
42
+ description: Overall code quality score (0-100)
43
+ value_js: |
44
+ const lintScore = steps.linting?.output?.score || 0;
45
+ const complexityScore = steps.complexity?.output?.score || 0;
46
+ const formattingScore = steps.formatting?.output?.score || 100;
47
+ const weights = { lint: 0.4, complexity: 0.4, formatting: 0.2 };
48
+ return Math.round(
49
+ lintScore * weights.lint +
50
+ complexityScore * weights.complexity +
51
+ formattingScore * weights.formatting
52
+ );
53
+
54
+ - name: recommendations
55
+ description: List of recommendations for improvement
56
+ value_js: |
57
+ const recs = [];
58
+ if (steps.linting?.output?.issues?.length > 0) {
59
+ recs.push(`Fix ${steps.linting.output.issues.length} linting issues`);
60
+ }
61
+ if (steps.complexity?.output?.high_complexity_functions?.length > 0) {
62
+ recs.push(`Refactor ${steps.complexity.output.high_complexity_functions.length} complex functions`);
63
+ }
64
+ if (steps.formatting?.output?.issues?.length > 0) {
65
+ recs.push(`Fix ${steps.formatting.output.issues.length} formatting issues`);
66
+ }
67
+ return recs;
68
+
69
+ - name: detailed_report
70
+ description: Detailed quality report
71
+ value: |
72
+ Code Quality Report for {{ inputs.language }}:
73
+ ================================================
74
+ Overall Score: {{ outputs.quality_score }}/100
75
+
76
+ Linting Results:
77
+ - Issues found: {{ steps.linting.output.issues | size }}
78
+ - Score: {{ steps.linting.output.score }}/100
79
+
80
+ Complexity Analysis:
81
+ - High complexity functions: {{ steps.complexity.output.high_complexity_functions | size }}
82
+ - Average complexity: {{ steps.complexity.output.average_complexity }}
83
+
84
+ {% if inputs.enable_formatting %}
85
+ Formatting Check:
86
+ - Issues found: {{ steps.formatting.output.issues | size }}
87
+ - Score: {{ steps.formatting.output.score }}/100
88
+ {% endif %}
89
+
90
+ Recommendations:
91
+ {% for rec in outputs.recommendations %}
92
+ - {{ rec }}
93
+ {% endfor %}
94
+
95
+ # Workflow steps
96
+ steps:
97
+ linting:
98
+ type: ai
99
+ prompt: |
100
+ Perform linting analysis for {{ inputs.language }} code.
101
+ Check for:
102
+ - Syntax errors
103
+ - Code style violations
104
+ - Best practices violations
105
+ - Unused variables and imports
106
+ - Type errors (if applicable)
107
+
108
+ {% if inputs.custom_rules %}
109
+ Additional custom rules to check:
110
+ {{ inputs.custom_rules | json }}
111
+ {% endif %}
112
+
113
+ Provide a score from 0-100 based on the issues found.
114
+ focus: style
115
+ schema: code-review
116
+ inputs:
117
+ language:
118
+ source: param
119
+ value: language
120
+ custom_rules:
121
+ source: param
122
+ value: custom_rules
123
+
124
+ complexity:
125
+ type: ai
126
+ prompt: |
127
+ Analyze code complexity for {{ inputs.language }}.
128
+
129
+ Check for:
130
+ - Cyclomatic complexity (threshold: {{ inputs.complexity_threshold }})
131
+ - Cognitive complexity
132
+ - Nested conditionals
133
+ - Long functions/methods
134
+ - Too many parameters
135
+
136
+ Report:
137
+ - List of functions exceeding complexity threshold
138
+ - Average complexity across the codebase
139
+ - Provide a score from 0-100
140
+ focus: architecture
141
+ schema: code-review
142
+ depends_on: [linting]
143
+ inputs:
144
+ language:
145
+ source: param
146
+ value: language
147
+ complexity_threshold:
148
+ source: param
149
+ value: complexity_threshold
150
+
151
+ formatting:
152
+ type: command
153
+ exec: |
154
+ case "{{ inputs.language }}" in
155
+ javascript|typescript)
156
+ npx prettier --check "**/*.{js,ts,jsx,tsx}" --list-different || true
157
+ ;;
158
+ python)
159
+ python -m black --check . --diff || true
160
+ ;;
161
+ go)
162
+ gofmt -l . || true
163
+ ;;
164
+ java)
165
+ echo "Java formatting check not implemented"
166
+ ;;
167
+ esac
168
+ if: inputs.enable_formatting === true
169
+ depends_on: [complexity]
170
+ inputs:
171
+ language:
172
+ source: param
173
+ value: language
174
+ enable_formatting:
175
+ source: param
176
+ value: enable_formatting
177
+
178
+ best_practices:
179
+ type: ai
180
+ prompt: |
181
+ Review {{ inputs.language }} code for best practices:
182
+
183
+ - Design patterns usage
184
+ - SOLID principles adherence
185
+ - Error handling patterns
186
+ - Documentation quality
187
+ - Test coverage indicators
188
+ - Performance considerations
189
+
190
+ Provide actionable recommendations.
191
+ focus: architecture
192
+ depends_on: [formatting]
193
+ inputs:
194
+ language:
195
+ source: param
196
+ value: language
197
+
198
+ aggregate_results:
199
+ type: noop
200
+ depends_on: [best_practices]
201
+ # This step exists to ensure all previous steps complete
202
+ # The actual aggregation happens in the output parameters
203
+
204
+ # Usage examples (documentation only):
205
+ #
206
+ # 1. TypeScript with strict settings:
207
+ # language: typescript
208
+ # complexity_threshold: 8
209
+ # enable_formatting: true
210
+ # custom_rules:
211
+ # no-any: error
212
+ # explicit-function-return-type: warning
213
+ #
214
+ # 2. Python basic check:
215
+ # language: python
216
+ # complexity_threshold: 15
217
+ # enable_formatting: false
218
+ #
219
+ # 3. Go with formatting:
220
+ # language: go
221
+ # complexity_threshold: 10
222
+ # enable_formatting: true
@@ -0,0 +1,90 @@
1
+ # Quick PR validation workflow
2
+ # Performs basic checks for PR validation
3
+
4
+ id: quick-pr-check
5
+ name: Quick PR Check
6
+ description: Fast workflow for initial PR validation
7
+ version: "1.0.0"
8
+ category: validation
9
+
10
+ # Input parameters
11
+ inputs:
12
+ - name: pr_type
13
+ description: Type of PR (feature, bugfix, hotfix)
14
+ schema:
15
+ type: string
16
+ enum: ["feature", "bugfix", "hotfix"]
17
+ required: true
18
+
19
+ - name: run_tests
20
+ description: Whether to run tests
21
+ schema:
22
+ type: boolean
23
+ default: true
24
+
25
+ - name: run_lint
26
+ description: Whether to run linting
27
+ schema:
28
+ type: boolean
29
+ default: true
30
+
31
+ # Output parameters
32
+ outputs:
33
+ - name: approval_status
34
+ description: Whether the PR passes quick checks
35
+ value_js: |
36
+ const testsPassed = !inputs.run_tests || steps.run_tests?.output?.success || false;
37
+ const lintPassed = !inputs.run_lint || steps.lint_check?.output?.passed || false;
38
+ return testsPassed && lintPassed ? "approved" : "needs_work";
39
+
40
+ - name: summary
41
+ description: Summary of the quick check
42
+ value: |
43
+ Quick Check Results for {{ inputs.pr_type }} PR:
44
+ {% if inputs.run_tests %}
45
+ - Tests: {{ steps.run_tests.output.success ? 'Passed' : 'Failed' }}
46
+ {% endif %}
47
+ {% if inputs.run_lint %}
48
+ - Linting: {{ steps.lint_check.output.passed ? 'Passed' : 'Failed' }}
49
+ {% endif %}
50
+ Overall Status: {{ outputs.approval_status }}
51
+
52
+ # Workflow steps at root level
53
+ steps:
54
+ run_tests:
55
+ type: command
56
+ exec: npm test
57
+ timeout: 300
58
+ if: inputs.run_tests === true
59
+
60
+ lint_check:
61
+ type: command
62
+ exec: npm run lint
63
+ depends_on: [run_tests]
64
+ if: inputs.run_lint === true
65
+
66
+ pr_summary:
67
+ type: log
68
+ message: |
69
+ Quick Check Results for {{ inputs.pr_type }} PR:
70
+ {% if inputs.run_tests %}
71
+ - Tests: {{ steps.run_tests.output.success ? 'Passed' : 'Failed' }}
72
+ {% endif %}
73
+ {% if inputs.run_lint %}
74
+ - Linting: {{ steps.lint_check.output.passed ? 'Passed' : 'Failed' }}
75
+ {% endif %}
76
+ Status: {{ outputs.approval_status }}
77
+ depends_on: [lint_check]
78
+ level: info
79
+
80
+ # Usage examples (documentation only):
81
+ #
82
+ # 1. Full validation:
83
+ # pr_type: feature
84
+ # run_tests: true
85
+ # run_lint: true
86
+ #
87
+ # 2. Quick lint only:
88
+ # pr_type: hotfix
89
+ # run_tests: false
90
+ # run_lint: true
@@ -0,0 +1,130 @@
1
+ # Example demonstrating workflow composition and state isolation
2
+ # This config imports the calculator workflow and uses it as a step
3
+ # Demonstrates that:
4
+ # 1. Workflow tests are NOT auto-executed when imported
5
+ # 2. Workflow steps run in isolated context
6
+ # 3. State does not leak between workflow and parent config
7
+
8
+ version: "1.0"
9
+
10
+ # Import the calculator workflow
11
+ imports:
12
+ - ./calculator-workflow.yaml
13
+
14
+ # Main checks/steps in this config
15
+ checks:
16
+ # Step 1: Set some state in parent context
17
+ parent_state_setup:
18
+ type: memory
19
+ operation: set
20
+ key: parent_value
21
+ value: "I am from parent context"
22
+
23
+ # Step 2: Use the calculator workflow as an isolated step
24
+ use_calculator:
25
+ type: workflow
26
+ workflow: calculator
27
+ depends_on: [parent_state_setup]
28
+ args:
29
+ operation: multiply
30
+ a: 7
31
+ b: 6
32
+
33
+ # Step 3: Verify calculator result is accessible
34
+ verify_calculator_result:
35
+ type: command
36
+ depends_on: [use_calculator]
37
+ exec: |
38
+ #!/bin/bash
39
+ result="{{ outputs.use_calculator.result }}"
40
+ summary="{{ outputs.use_calculator.summary }}"
41
+
42
+ echo "Calculator returned: $result"
43
+ echo "Summary: $summary"
44
+
45
+ if [ "$result" = "42" ]; then
46
+ echo '{"validation": "passed", "result": '$result'}'
47
+ exit 0
48
+ else
49
+ echo '{"validation": "failed", "expected": 42, "got": '$result'}'
50
+ exit 1
51
+ fi
52
+
53
+ # Step 4: Verify parent state is still intact (not affected by workflow)
54
+ verify_parent_state:
55
+ type: memory
56
+ operation: get
57
+ key: parent_value
58
+ depends_on: [use_calculator]
59
+
60
+ # Step 5: Test state isolation - workflow should NOT have access to parent memory
61
+ test_state_isolation:
62
+ type: command
63
+ depends_on: [verify_parent_state]
64
+ exec: |
65
+ #!/bin/bash
66
+ parent_value="{{ outputs.verify_parent_state }}"
67
+
68
+ echo "Parent state verification:"
69
+ echo " parent_value = $parent_value"
70
+
71
+ if [ "$parent_value" = "I am from parent context" ]; then
72
+ echo '{"isolation_test": "passed", "message": "Parent state intact"}'
73
+ exit 0
74
+ else
75
+ echo '{"isolation_test": "failed", "message": "Parent state was modified"}'
76
+ exit 1
77
+ fi
78
+
79
+ # Step 6: Use calculator again with different inputs (reusability test)
80
+ use_calculator_again:
81
+ type: workflow
82
+ workflow: calculator
83
+ depends_on: [test_state_isolation]
84
+ args:
85
+ operation: add
86
+ a: 100
87
+ b: 23
88
+
89
+ # Step 7: Verify both calculator invocations produced correct results
90
+ verify_multiple_invocations:
91
+ type: command
92
+ depends_on: [use_calculator_again]
93
+ exec: |
94
+ #!/bin/bash
95
+ first_result="{{ outputs.use_calculator.result }}"
96
+ second_result="{{ outputs.use_calculator_again.result }}"
97
+
98
+ echo "Multiple invocation test:"
99
+ echo " First call (7 * 6): $first_result (expected 42)"
100
+ echo " Second call (100 + 23): $second_result (expected 123)"
101
+
102
+ if [ "$first_result" = "42" ] && [ "$second_result" = "123" ]; then
103
+ echo '{"multiple_invocations": "passed"}'
104
+ exit 0
105
+ else
106
+ echo '{"multiple_invocations": "failed"}'
107
+ exit 1
108
+ fi
109
+
110
+ # Final summary
111
+ summary:
112
+ type: log
113
+ depends_on: [verify_multiple_invocations]
114
+ message: |
115
+ ========================================
116
+ Workflow Composition Test Summary
117
+ ========================================
118
+
119
+ ✓ Calculator workflow imported successfully
120
+ ✓ Workflow tests were NOT auto-executed
121
+ ✓ Calculator step executed in isolation
122
+ ✓ Results: {{ outputs.use_calculator.summary }}
123
+ ✓ Parent state remained intact
124
+ ✓ Multiple workflow invocations work correctly
125
+
126
+ First calculation: {{ outputs.use_calculator.result }}
127
+ Second calculation: {{ outputs.use_calculator_again.result }}
128
+
129
+ All state isolation tests PASSED!
130
+ ========================================
@@ -36,6 +36,9 @@ export declare class FailureConditionEvaluator {
36
36
  environment?: Record<string, string>;
37
37
  previousResults?: Map<string, ReviewSummary>;
38
38
  authorAssociation?: string;
39
+ workflowInputs?: Record<string, unknown>;
40
+ /** Current step's output for guarantee evaluation */
41
+ output?: unknown;
39
42
  }): Promise<boolean>;
40
43
  /**
41
44
  * Evaluate all failure conditions for a check result
@@ -1 +1 @@
1
- {"version":3,"file":"","sourceRoot":"","sources":["file:///home/runner/work/visor/visor/src/failure-condition-evaluator.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAG3C,OAAO,EACL,iBAAiB,EAGjB,sBAAsB,EAEvB,MAAM,gBAAgB,CAAC;AAMxB;;GAEG;AACH,qBAAa,yBAAyB;IACpC,OAAO,CAAC,OAAO,CAAC,CAAU;;IAI1B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAI3B;;OAEG;IACG,uBAAuB,CAC3B,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,aAAa,EAC5B,UAAU,EAAE,MAAM,EAClB,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,EAC/C,iBAAiB,CAAC,EAAE,MAAM,GACzB,OAAO,CAAC,OAAO,CAAC;IA2DnB;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAO9B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAOxB;;OAEG;IACG,mBAAmB,CACvB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,WAAW,CAAC,EAAE;QACZ,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;QACxB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACrC,eAAe,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;QAC7C,iBAAiB,CAAC,EAAE,MAAM,CAAC;KAC5B,GACA,OAAO,CAAC,OAAO,CAAC;IAoEnB;;OAEG;IACG,kBAAkB,CACtB,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,aAAa,EAC5B,gBAAgB,CAAC,EAAE,iBAAiB,EACpC,eAAe,CAAC,EAAE,iBAAiB,EACnC,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,EAC/C,iBAAiB,CAAC,EAAE,MAAM,GACzB,OAAO,CAAC,sBAAsB,EAAE,CAAC;IA4CpC;;OAEG;YACW,oBAAoB;IA0ElC;;OAEG;YACW,uBAAuB;IA0BrC;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IAyN1B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAOzB;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAe9B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAkK9B,OAAO,CAAC,qBAAqB;IAmB7B;;OAEG;IACH,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,sBAAsB,EAAE,GAAG,OAAO;IAItE;;OAEG;IACH,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,sBAAsB,EAAE,GAAG,sBAAsB,EAAE;IAIvF;;OAEG;IACH,MAAM,CAAC,sBAAsB,CAAC,OAAO,EAAE,sBAAsB,EAAE,GAAG;QAChE,KAAK,EAAE,sBAAsB,EAAE,CAAC;QAChC,OAAO,EAAE,sBAAsB,EAAE,CAAC;QAClC,IAAI,EAAE,sBAAsB,EAAE,CAAC;KAChC;IASD;;OAEG;IACH,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE,sBAAsB,EAAE,GAAG,MAAM;CAiChE"}
1
+ {"version":3,"file":"","sourceRoot":"","sources":["file:///home/runner/work/visor/visor/src/failure-condition-evaluator.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAG3C,OAAO,EACL,iBAAiB,EAGjB,sBAAsB,EAEvB,MAAM,gBAAgB,CAAC;AAMxB;;GAEG;AACH,qBAAa,yBAAyB;IACpC,OAAO,CAAC,OAAO,CAAC,CAAU;;IAI1B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAI3B;;OAEG;IACG,uBAAuB,CAC3B,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,aAAa,EAC5B,UAAU,EAAE,MAAM,EAClB,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,EAC/C,iBAAiB,CAAC,EAAE,MAAM,GACzB,OAAO,CAAC,OAAO,CAAC;IA2DnB;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAO9B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAOxB;;OAEG;IACG,mBAAmB,CACvB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,WAAW,CAAC,EAAE;QACZ,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;QACxB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACrC,eAAe,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;QAC7C,iBAAiB,CAAC,EAAE,MAAM,CAAC;QAC3B,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACzC,qDAAqD;QACrD,MAAM,CAAC,EAAE,OAAO,CAAC;KAClB,GACA,OAAO,CAAC,OAAO,CAAC;IAoFnB;;OAEG;IACG,kBAAkB,CACtB,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,aAAa,EAC5B,gBAAgB,CAAC,EAAE,iBAAiB,EACpC,eAAe,CAAC,EAAE,iBAAiB,EACnC,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,EAC/C,iBAAiB,CAAC,EAAE,MAAM,GACzB,OAAO,CAAC,sBAAsB,EAAE,CAAC;IAmCpC;;OAEG;YACW,oBAAoB;IA0ElC;;OAEG;YACW,uBAAuB;IA0BrC;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IA6S1B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAOzB;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAe9B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAkK9B,OAAO,CAAC,qBAAqB;IAmB7B;;OAEG;IACH,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,sBAAsB,EAAE,GAAG,OAAO;IAItE;;OAEG;IACH,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,sBAAsB,EAAE,GAAG,sBAAsB,EAAE;IAIvF;;OAEG;IACH,MAAM,CAAC,sBAAsB,CAAC,OAAO,EAAE,sBAAsB,EAAE,GAAG;QAChE,KAAK,EAAE,sBAAsB,EAAE,CAAC;QAChC,OAAO,EAAE,sBAAsB,EAAE,CAAC;QAClC,IAAI,EAAE,sBAAsB,EAAE,CAAC;KAChC;IASD;;OAEG;IACH,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE,sBAAsB,EAAE,GAAG,MAAM;CAiChE"}
@@ -0,0 +1,58 @@
1
+ import type { Frontend, FrontendContext } from './host';
2
+ export declare class GitHubFrontend implements Frontend {
3
+ readonly name = "github";
4
+ private subs;
5
+ private checkRunIds;
6
+ private revision;
7
+ private cachedCommentId?;
8
+ private stepStatusByGroup;
9
+ private debounceMs;
10
+ private maxWaitMs;
11
+ private _timer;
12
+ private _lastFlush;
13
+ private _pendingIds;
14
+ private updateLocks;
15
+ minUpdateDelayMs: number;
16
+ private createdCommentGithubIds;
17
+ start(ctx: FrontendContext): void;
18
+ stop(): void;
19
+ private buildFullBody;
20
+ private threadKeyFor;
21
+ private renderThreadHeader;
22
+ private renderSections;
23
+ /**
24
+ * Acquires a mutex lock for the given group and executes the update.
25
+ * This ensures only one comment update happens at a time per group,
26
+ * preventing race conditions where updates overwrite each other.
27
+ *
28
+ * Uses a proper queue-based mutex: each new caller chains onto the previous
29
+ * lock, ensuring strict serialization even when multiple callers wait
30
+ * simultaneously.
31
+ */
32
+ private updateGroupedComment;
33
+ /**
34
+ * Performs the actual comment update with delay enforcement.
35
+ */
36
+ private performGroupedCommentUpdate;
37
+ private deriveTriggeredBy;
38
+ private mergeIntoExistingBody;
39
+ private parseSections;
40
+ private serializeSections;
41
+ private extractSectionById;
42
+ private escapeRegExp;
43
+ private getGroupForCheck;
44
+ private upsertSectionState;
45
+ private commentIdForGroup;
46
+ /**
47
+ * Compute failure condition results for a completed check so Check Runs map to the
48
+ * correct GitHub conclusion. This mirrors the engine's evaluation for fail_if.
49
+ */
50
+ private evaluateFailureResults;
51
+ private scheduleUpdate;
52
+ private flushNow;
53
+ /**
54
+ * Sleep utility for enforcing delays
55
+ */
56
+ private sleep;
57
+ }
58
+ //# sourceMappingURL=github-frontend.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"github-frontend.d.ts","sourceRoot":"","sources":["file:///home/runner/work/visor/visor/src/frontends/github-frontend.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AAmBxD,qBAAa,cAAe,YAAW,QAAQ;IAC7C,SAAgB,IAAI,YAAY;IAChC,OAAO,CAAC,IAAI,CAAsC;IAClD,OAAO,CAAC,WAAW,CAAkC;IACrD,OAAO,CAAC,QAAQ,CAAK;IACrB,OAAO,CAAC,eAAe,CAAC,CAAS;IAEjC,OAAO,CAAC,iBAAiB,CAAqD;IAG9E,OAAO,CAAC,UAAU,CAAe;IACjC,OAAO,CAAC,SAAS,CAAgB;IACjC,OAAO,CAAC,MAAM,CAA+B;IAC7C,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,WAAW,CAAkC;IAGrD,OAAO,CAAC,WAAW,CAAyC;IACrD,gBAAgB,EAAE,MAAM,CAAQ;IAEvC,OAAO,CAAC,uBAAuB,CAAkC;IAEjE,KAAK,CAAC,GAAG,EAAE,eAAe,GAAG,IAAI;IA4KjC,IAAI,IAAI,IAAI;YAKE,aAAa;IAU3B,OAAO,CAAC,YAAY;IAOpB,OAAO,CAAC,kBAAkB;IAY1B,OAAO,CAAC,cAAc;IAetB;;;;;;;;OAQG;YACW,oBAAoB;IA8ClC;;OAEG;YACW,2BAA2B;IAiEzC,OAAO,CAAC,iBAAiB;YAeX,qBAAqB;IA4CnC,OAAO,CAAC,aAAa;IAoErB,OAAO,CAAC,iBAAiB;IAOzB,OAAO,CAAC,kBAAkB;IAS1B,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,gBAAgB;IASxB,OAAO,CAAC,kBAAkB;IAY1B,OAAO,CAAC,iBAAiB;IAczB;;;OAGG;YACW,sBAAsB;IA6DpC,OAAO,CAAC,cAAc;YAgBR,QAAQ;IAWtB;;OAEG;IACH,OAAO,CAAC,KAAK;CAGd"}
@@ -0,0 +1,47 @@
1
+ import { EventBus } from '../event-bus/event-bus';
2
+ export interface FrontendContext {
3
+ eventBus: EventBus;
4
+ logger: {
5
+ info: (...a: any[]) => void;
6
+ warn: (...a: any[]) => void;
7
+ error: (...a: any[]) => void;
8
+ };
9
+ config: unknown;
10
+ run: {
11
+ runId: string;
12
+ workflowId?: string;
13
+ repo?: {
14
+ owner: string;
15
+ name: string;
16
+ };
17
+ pr?: number;
18
+ headSha?: string;
19
+ event?: string;
20
+ actor?: string;
21
+ };
22
+ octokit?: any;
23
+ webhookContext?: {
24
+ webhookData?: Map<string, unknown>;
25
+ eventType?: string;
26
+ };
27
+ }
28
+ export interface Frontend {
29
+ readonly name: string;
30
+ start(ctx: FrontendContext): Promise<void> | void;
31
+ stop(): Promise<void> | void;
32
+ }
33
+ export interface FrontendSpec {
34
+ name: string;
35
+ package?: string;
36
+ config?: unknown;
37
+ }
38
+ export declare class FrontendsHost {
39
+ private bus;
40
+ private log;
41
+ private frontends;
42
+ constructor(bus: EventBus, log: FrontendContext['logger']);
43
+ load(specs: FrontendSpec[]): Promise<void>;
44
+ startAll(ctxFactory: () => FrontendContext): Promise<void>;
45
+ stopAll(): Promise<void>;
46
+ }
47
+ //# sourceMappingURL=host.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"host.d.ts","sourceRoot":"","sources":["file:///home/runner/work/visor/visor/src/frontends/host.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAElD,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,QAAQ,CAAC;IACnB,MAAM,EAAE;QACN,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC;QAC5B,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC;QAC5B,KAAK,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC;KAC9B,CAAC;IACF,MAAM,EAAE,OAAO,CAAC;IAChB,GAAG,EAAE;QACH,KAAK,EAAE,MAAM,CAAC;QACd,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,IAAI,CAAC,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC;QACvC,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,OAAO,CAAC,EAAE,GAAG,CAAC;IAEd,cAAc,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC7E;AAED,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,GAAG,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAClD,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CAC9B;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,GAAG,CAAW;IACtB,OAAO,CAAC,GAAG,CAA4B;IACvC,OAAO,CAAC,SAAS,CAAkB;gBAEvB,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,eAAe,CAAC,QAAQ,CAAC;IAKnD,IAAI,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAkB1C,QAAQ,CAAC,UAAU,EAAE,MAAM,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAW1D,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAS/B"}
@@ -0,0 +1,12 @@
1
+ import type { Frontend, FrontendContext } from './host';
2
+ export declare class NdjsonSink implements Frontend {
3
+ readonly name = "ndjson-sink";
4
+ private cfg;
5
+ private unsub?;
6
+ private filePath?;
7
+ constructor(config?: unknown);
8
+ start(ctx: FrontendContext): void;
9
+ stop(): void;
10
+ private resolveFile;
11
+ }
12
+ //# sourceMappingURL=ndjson-sink.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ndjson-sink.d.ts","sourceRoot":"","sources":["file:///home/runner/work/visor/visor/src/frontends/ndjson-sink.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AAMxD,qBAAa,UAAW,YAAW,QAAQ;IACzC,SAAgB,IAAI,iBAAiB;IACrC,OAAO,CAAC,GAAG,CAAa;IACxB,OAAO,CAAC,KAAK,CAAC,CAA0B;IACxC,OAAO,CAAC,QAAQ,CAAC,CAAS;gBAEd,MAAM,CAAC,EAAE,OAAO;IAI5B,KAAK,CAAC,GAAG,EAAE,eAAe,GAAG,IAAI;IAoBjC,IAAI,IAAI,IAAI;IAKZ,OAAO,CAAC,WAAW;CAIpB"}
@@ -0,0 +1,58 @@
1
+ /**
2
+ * Slack Frontend for Visor workflows.
3
+ *
4
+ * Features:
5
+ * - Posts AI replies to Slack threads
6
+ * - Converts Markdown to Slack mrkdwn format
7
+ * - Renders mermaid diagrams to PNG and uploads as images
8
+ * - Manages 👀/👍 reactions for acknowledgement
9
+ * - Handles human input prompts via prompt-state
10
+ *
11
+ * Mermaid Diagram Rendering:
12
+ * - Detects ```mermaid code blocks in AI responses
13
+ * - Renders to PNG using @mermaid-js/mermaid-cli (mmdc)
14
+ * - Uploads rendered images to Slack thread
15
+ * - Replaces mermaid blocks with "_(See diagram above)_" placeholder
16
+ *
17
+ * Requirements for mermaid rendering:
18
+ * - Node.js and npx in PATH
19
+ * - Puppeteer/Chromium dependencies (mermaid-cli uses headless browser)
20
+ * - On Linux: apt-get install chromium-browser libatk-bridge2.0-0 libgtk-3-0
21
+ */
22
+ import type { Frontend, FrontendContext } from './host';
23
+ type SlackFrontendConfig = {
24
+ defaultChannel?: string;
25
+ groupChannels?: Record<string, string>;
26
+ debounceMs?: number;
27
+ maxWaitMs?: number;
28
+ showRawOutput?: boolean;
29
+ telemetry?: {
30
+ enabled?: boolean;
31
+ };
32
+ };
33
+ export declare class SlackFrontend implements Frontend {
34
+ readonly name = "slack";
35
+ private subs;
36
+ private cfg;
37
+ private acked;
38
+ private ackRef;
39
+ private ackName;
40
+ private doneName;
41
+ constructor(config?: SlackFrontendConfig);
42
+ start(ctx: FrontendContext): void;
43
+ stop(): void;
44
+ private getSlack;
45
+ private getInboundSlackPayload;
46
+ private getInboundSlackEvent;
47
+ private ensureAcknowledgement;
48
+ private finalizeReactions;
49
+ /**
50
+ * Post direct replies into the originating Slack thread when appropriate.
51
+ * This is independent of summary messages and is intended for chat-style flows
52
+ * (e.g., AI answers and explicit chat/notify steps).
53
+ */
54
+ private maybePostDirectReply;
55
+ private getTraceInfo;
56
+ }
57
+ export {};
58
+ //# sourceMappingURL=slack-frontend.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slack-frontend.d.ts","sourceRoot":"","sources":["file:///home/runner/work/visor/visor/src/frontends/slack-frontend.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AAUxD,KAAK,mBAAmB,GAAG;IACzB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,SAAS,CAAC,EAAE;QACV,OAAO,CAAC,EAAE,OAAO,CAAC;KACnB,CAAC;CACH,CAAC;AAEF,qBAAa,aAAc,YAAW,QAAQ;IAC5C,SAAgB,IAAI,WAAW;IAC/B,OAAO,CAAC,IAAI,CAAsC;IAClD,OAAO,CAAC,GAAG,CAAsB;IAEjC,OAAO,CAAC,KAAK,CAAkB;IAC/B,OAAO,CAAC,MAAM,CAAgD;IAC9D,OAAO,CAAC,OAAO,CAAkB;IACjC,OAAO,CAAC,QAAQ,CAAsB;gBAE1B,MAAM,CAAC,EAAE,mBAAmB;IAIxC,KAAK,CAAC,GAAG,EAAE,eAAe,GAAG,IAAI;IAgIjC,IAAI,IAAI,IAAI;IAKZ,OAAO,CAAC,QAAQ;IAchB,OAAO,CAAC,sBAAsB;IAY9B,OAAO,CAAC,oBAAoB;YAWd,qBAAqB;YAmCrB,iBAAiB;IA6B/B;;;;OAIG;YACW,oBAAoB;IAgKlC,OAAO,CAAC,YAAY;CAWrB"}