@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,179 @@
1
+ version: "1.0"
2
+
3
+ # Example: Using Imported Reusable Tools and Workflows with on_init
4
+ # This demonstrates how to import tools and workflows from separate files
5
+ # and use them multiple times in on_init hooks.
6
+ #
7
+ # NOTE: In production, you would use extends to import from separate files:
8
+ #
9
+ # extends:
10
+ # - ./reusable-tools.yaml
11
+ # - ./reusable-workflows.yaml
12
+ #
13
+ # For test compatibility, tools and workflows are shown inline below (commented out).
14
+
15
+ # NOTE: Reusable tools would be imported from reusable-tools.yaml
16
+ # In production, those tools would be available after extends.
17
+ # tools:
18
+ # fetch-jira-issue:
19
+ # exec: |
20
+ # echo '{"key":"PROJ-456","summary":"Example issue",...}'
21
+ # parseJson: true
22
+ # fetch-external-data:
23
+ # exec: |
24
+ # case {{ args.source }} in
25
+ # user-db) echo '{"source":"user-db","data":{"count":2}}' ;;
26
+ # metrics-api) echo '{"source":"metrics-api","data":{"cpu":45}}' ;;
27
+ # esac
28
+ # parseJson: true
29
+
30
+ # NOTE: Reusable workflows would be imported from reusable-workflows.yaml
31
+ # workflows:
32
+ # data-enrichment:
33
+ # steps:
34
+ # - id: fetch-primary
35
+ # exec: echo '{"primary":"data"}'
36
+ # - id: merge-results
37
+ # exec: echo '{"enriched":true}'
38
+ # output_mapping:
39
+ # enriched_data: "{{ outputs['merge-results'] }}"
40
+
41
+ steps:
42
+ # Example 1: Use multiple imported tools in on_init
43
+ # In production: Uses fetch-jira-issue and fetch-external-data from reusable-tools.yaml
44
+ multi-tool-preprocessing:
45
+ type: command
46
+ on_init:
47
+ run:
48
+ - tool: fetch-jira-issue
49
+ with:
50
+ issue_key: PROJ-456
51
+ as: jira-data
52
+ - tool: fetch-external-data
53
+ with:
54
+ source: user-db
55
+ as: user-data
56
+ - tool: fetch-external-data
57
+ with:
58
+ source: metrics-api
59
+ as: metrics-data
60
+ exec: |
61
+ echo "JIRA: {{ outputs['jira-data'].summary }}"
62
+ echo "Users: {{ outputs['user-data'].data.count }}"
63
+ echo "Metrics: {{ outputs['metrics-data'].data.cpu }}%"
64
+
65
+ # Example 2: Use imported workflow in on_init
66
+ # In production: Uses data-enrichment workflow from reusable-workflows.yaml
67
+ workflow-preprocessing:
68
+ type: command
69
+ on_init:
70
+ run:
71
+ - workflow: data-enrichment
72
+ as: enriched
73
+ exec: |
74
+ echo "Enriched: {{ outputs.enriched.enriched_data.enriched }}"
75
+
76
+ # Example 3: Chain imported tools and workflows
77
+ # In production: Uses tools and workflows from imported files
78
+ chain-tools-and-workflows:
79
+ type: command
80
+ on_init:
81
+ run:
82
+ - tool: fetch-external-data
83
+ with:
84
+ source: config-service
85
+ as: config
86
+ - workflow: multi-step-validation
87
+ as: validation
88
+ - tool: validate-data
89
+ with:
90
+ data: "{{ outputs.config.data }}"
91
+ as: final-check
92
+ exec: |
93
+ echo "Config: {{ outputs.config.data.version }}"
94
+ echo "Validation: {{ outputs.validation.validation_result.status }}"
95
+ echo "Final: {{ outputs['final-check'].valid }}"
96
+
97
+ # Example 4: Use same tool multiple times with different parameters
98
+ # Demonstrates tool reusability across multiple invocations
99
+ repeated-tool-usage:
100
+ type: command
101
+ on_init:
102
+ run:
103
+ - tool: fetch-external-data
104
+ with:
105
+ source: user-db
106
+ as: users
107
+ - tool: fetch-external-data
108
+ with:
109
+ source: config-service
110
+ as: config
111
+ - tool: fetch-external-data
112
+ with:
113
+ source: metrics-api
114
+ as: metrics
115
+ exec: |
116
+ echo "Fetched from 3 sources:"
117
+ echo "- {{ outputs.users.source }}: {{ outputs.users.data.count }} users"
118
+ echo "- {{ outputs.config.source }}: version {{ outputs.config.data.version }}"
119
+ echo "- {{ outputs.metrics.source }}: {{ outputs.metrics.data.cpu }}% CPU"
120
+
121
+ tests:
122
+ defaults:
123
+ strict: false
124
+ fail_on_unexpected_calls: false
125
+ fixtures: []
126
+ cases:
127
+ - name: multi-tool-preprocessing-test
128
+ description: Test using multiple imported tools in on_init
129
+ event: manual
130
+ fixture: gh.pr_open.minimal
131
+ mocks:
132
+ multi-tool-preprocessing: |
133
+ JIRA: Example issue
134
+ Users: 2
135
+ Metrics: 45%
136
+ expect:
137
+ calls:
138
+ - step: multi-tool-preprocessing
139
+ exactly: 1
140
+
141
+ - name: workflow-preprocessing-test
142
+ description: Test using imported workflow in on_init
143
+ event: manual
144
+ fixture: gh.pr_open.minimal
145
+ mocks:
146
+ workflow-preprocessing: "Enriched: true"
147
+ expect:
148
+ calls:
149
+ - step: workflow-preprocessing
150
+ exactly: 1
151
+
152
+ - name: chain-tools-workflows-test
153
+ description: Test chaining imported tools and workflows
154
+ event: manual
155
+ fixture: gh.pr_open.minimal
156
+ mocks:
157
+ chain-tools-and-workflows: |
158
+ Config: 1.2.3
159
+ Validation: approved
160
+ Final: true
161
+ expect:
162
+ calls:
163
+ - step: chain-tools-and-workflows
164
+ exactly: 1
165
+
166
+ - name: repeated-tool-test
167
+ description: Test using same tool multiple times
168
+ event: manual
169
+ fixture: gh.pr_open.minimal
170
+ mocks:
171
+ repeated-tool-usage: |
172
+ Fetched from 3 sources:
173
+ - user-db: 2 users
174
+ - config-service: version 1.2.3
175
+ - metrics-api: 45% CPU
176
+ expect:
177
+ calls:
178
+ - step: repeated-tool-usage
179
+ exactly: 1
@@ -0,0 +1,26 @@
1
+ version: "2.0"
2
+
3
+ checks:
4
+ list:
5
+ type: command
6
+ exec: echo '["a","b","c"]'
7
+ forEach: true
8
+
9
+ summarize:
10
+ type: script
11
+ depends_on: [list]
12
+ content: |
13
+ const arr = outputs_raw['list'] || [];
14
+ return { total: arr.length };
15
+
16
+ branch-by-size:
17
+ type: script
18
+ depends_on: [list]
19
+ content: 'return true'
20
+ on_success:
21
+ goto_js: |
22
+ return (outputs_raw['list'] || []).length >= 3 ? 'after' : null;
23
+
24
+ after:
25
+ type: log
26
+ message: bulk mode reached
@@ -0,0 +1,174 @@
1
+ version: "1.0"
2
+
3
+ # This configuration extends the tools library to reuse tool definitions
4
+ extends: ./tools-library.yaml
5
+
6
+ # Additional project-specific tools can be defined here
7
+ tools:
8
+ # Project-specific tool for checking API endpoints
9
+ check-api-endpoints:
10
+ name: check-api-endpoints
11
+ description: Verify all API endpoints are documented
12
+ inputSchema:
13
+ type: object
14
+ properties:
15
+ source_dir:
16
+ type: string
17
+ description: Directory containing API source code
18
+ docs_file:
19
+ type: string
20
+ description: API documentation file
21
+ exec: |
22
+ echo "Checking endpoints in {{ args.source_dir }} against {{ args.docs_file }}"
23
+ grep -r "router\.\(get\|post\|put\|delete\|patch\)" {{ args.source_dir }} |
24
+ sed 's/.*router\.\([a-z]*\).*"\([^"]*\)".*/\1 \2/' |
25
+ sort -u
26
+ transform_js: |
27
+ const endpoints = output.trim().split('\n').filter(l => l);
28
+ return endpoints.map(ep => {
29
+ const [method, path] = ep.split(' ');
30
+ return { method: method.toUpperCase(), path };
31
+ });
32
+
33
+ # Use both imported and local tools in checks
34
+ steps:
35
+ # Use imported git tool
36
+ check-git-status:
37
+ type: mcp
38
+ transport: custom
39
+ method: git-status
40
+ fail_if: "output.length > 10"
41
+ transform_js: |
42
+ if (output.length > 10) {
43
+ return [{
44
+ file: 'repository',
45
+ line: 0,
46
+ message: `Too many uncommitted changes: ${output.length} files`,
47
+ severity: 'warning',
48
+ category: 'style',
49
+ ruleId: 'uncommitted-changes'
50
+ }];
51
+ }
52
+ return [];
53
+
54
+ # Use imported git diff stats
55
+ analyze-pr-size:
56
+ type: mcp
57
+ transport: custom
58
+ method: git-diff-stats
59
+ methodArgs:
60
+ base: "{{ pr.base | default: 'main' }}"
61
+ fail_if: "output.filesChanged > 50 || output.insertions > 1000"
62
+ transform_js: |
63
+ const issues = [];
64
+ if (output.filesChanged > 50) {
65
+ issues.push({
66
+ file: 'pull-request',
67
+ line: 0,
68
+ message: `Large PR: ${output.filesChanged} files changed. Consider breaking into smaller PRs.`,
69
+ severity: 'warning',
70
+ category: 'style',
71
+ ruleId: 'large-pr'
72
+ });
73
+ }
74
+ if (output.insertions > 1000) {
75
+ issues.push({
76
+ file: 'pull-request',
77
+ line: 0,
78
+ message: `Too many lines added: ${output.insertions}. This may be difficult to review.`,
79
+ severity: 'warning',
80
+ category: 'style',
81
+ ruleId: 'too-many-lines'
82
+ });
83
+ }
84
+ return issues;
85
+
86
+ # Use imported npm audit tool
87
+ security-audit:
88
+ type: mcp
89
+ transport: custom
90
+ method: npm-audit
91
+ if: "files.some(f => f.filename === 'package.json')"
92
+ fail_if: "output.some(i => i.severity === 'error')"
93
+
94
+ # Use imported Docker linting tool
95
+ lint-dockerfiles:
96
+ type: mcp
97
+ transport: custom
98
+ method: docker-lint
99
+ forEach: "{{ files | where: 'filename', 'match', 'Dockerfile' }}"
100
+ methodArgs:
101
+ file: "{{ item.filename }}"
102
+
103
+ # Use imported ESLint tool
104
+ lint-javascript:
105
+ type: mcp
106
+ transport: custom
107
+ method: eslint-check
108
+ if: "files.some(f => f.filename.endsWith('.js') || f.filename.endsWith('.ts'))"
109
+ methodArgs:
110
+ files: "{{ files | where: 'filename', 'match', '\\.(js|ts)$' | map: 'filename' }}"
111
+
112
+ # Use local project-specific tool
113
+ verify-api-docs:
114
+ type: mcp
115
+ transport: custom
116
+ method: check-api-endpoints
117
+ methodArgs:
118
+ source_dir: "./src/routes"
119
+ docs_file: "./docs/api.md"
120
+ transform_js: |
121
+ // Check if all endpoints are documented
122
+ const documented = ['GET /users', 'POST /users', 'GET /posts']; // Would parse from docs_file
123
+ const undocumented = output.filter(ep =>
124
+ !documented.includes(`${ep.method} ${ep.path}`)
125
+ );
126
+
127
+ return undocumented.map(ep => ({
128
+ file: 'docs/api.md',
129
+ line: 0,
130
+ message: `Undocumented endpoint: ${ep.method} ${ep.path}`,
131
+ severity: 'warning',
132
+ category: 'documentation',
133
+ ruleId: 'missing-api-docs'
134
+ }));
135
+
136
+ # Chain multiple tools together
137
+ comprehensive-check:
138
+ type: mcp
139
+ transport: custom
140
+ method: run-tests
141
+ methodArgs:
142
+ command: "npm test"
143
+ format: "jest"
144
+ on_success:
145
+ - type: mcp
146
+ transport: custom
147
+ method: check-outdated
148
+ methodArgs:
149
+ manager: "npm"
150
+ transform_js: |
151
+ // Only warn about major version updates
152
+ return output
153
+ .filter(pkg => pkg.current.split('.')[0] !== pkg.latest.split('.')[0])
154
+ .map(pkg => ({
155
+ file: 'package.json',
156
+ line: 0,
157
+ message: `Major update available for ${pkg.package}: ${pkg.current} → ${pkg.latest}`,
158
+ severity: 'info',
159
+ category: 'documentation',
160
+ ruleId: 'major-update-available'
161
+ }));
162
+
163
+ # You can also import tools from remote URLs
164
+ # extends: https://example.com/shared-tools.yaml
165
+
166
+ # Or import multiple tool libraries
167
+ # extends:
168
+ # - ./tools-library.yaml
169
+ # - ./security-tools.yaml
170
+ # - https://example.com/quality-tools.yaml
171
+
172
+ output:
173
+ format: markdown
174
+ groupBy: category
@@ -0,0 +1,116 @@
1
+ # 🏗️ Architecture Analysis for {{ event.repository.fullName }}
2
+
3
+ ## Pull Request Overview
4
+ **PR #{{ pr.number }}**: {{ pr.title }}
5
+ - **Author**: {{ pr.author }}
6
+ - **Changes**: {{ utils.totalFiles }} files with {{ pr.totalAdditions }} additions and {{ pr.totalDeletions }} deletions
7
+
8
+ {% if pr.body %}
9
+ ### Description
10
+ {{ pr.body }}
11
+ {% endif %}
12
+
13
+ ## Previous Analysis Context
14
+
15
+ {% if outputs.security or outputs.performance or outputs.style %}
16
+ ### Related Findings from Previous Checks:
17
+
18
+ {% if outputs.security %}
19
+ **Security Analysis**: {{ outputs.security.totalIssues }} issues found
20
+ {% if outputs.security.criticalIssues > 0 %}
21
+ - 🚨 {{ outputs.security.criticalIssues }} critical security issues require architectural consideration
22
+ {% endif %}
23
+ {% endif %}
24
+
25
+ {% if outputs.performance %}
26
+ **Performance Analysis**: {{ outputs.performance.totalIssues }} issues found
27
+ {% if outputs.performance.errorIssues > 0 %}
28
+ - ⚡ {{ outputs.performance.errorIssues }} performance errors may indicate architectural problems
29
+ {% endif %}
30
+ {% endif %}
31
+
32
+ {% if outputs.style %}
33
+ **Code Style Analysis**: {{ outputs.style.totalIssues }} issues found
34
+ {% endif %}
35
+
36
+ {% else %}
37
+ *No previous analysis results available - performing standalone architectural review.*
38
+ {% endif %}
39
+
40
+ ## Component Analysis
41
+
42
+ ### File Organization
43
+ {% for ext, files in utils.filesByExtension %}
44
+ - **{{ ext | upcase }} files**: {{ files.size }}
45
+ {% for file in files %}
46
+ - `{{ file.filename }}` ({{ file.status }}{% if file.changes > 100 %}, large change: {{ file.changes }} lines{% endif %})
47
+ {% endfor %}
48
+ {% endfor %}
49
+
50
+ ### Change Impact Assessment
51
+
52
+ {% if utils.addedFiles.size > 0 %}
53
+ #### New Components ({{ utils.addedFiles.size }})
54
+ {% for file in utils.addedFiles %}
55
+ - `{{ file.filename }}` - New component requiring integration analysis
56
+ {% endfor %}
57
+ {% endif %}
58
+
59
+ {% if utils.modifiedFiles.size > 0 %}
60
+ #### Modified Components ({{ utils.modifiedFiles.size }})
61
+ {% for file in utils.modifiedFiles %}
62
+ - `{{ file.filename }}` - Changes may affect dependent systems
63
+ {% endfor %}
64
+ {% endif %}
65
+
66
+ {% if utils.removedFiles.size > 0 %}
67
+ #### Removed Components ({{ utils.removedFiles.size }})
68
+ {% for file in utils.removedFiles %}
69
+ - `{{ file.filename }}` - Removal may break dependent systems
70
+ {% endfor %}
71
+ {% endif %}
72
+
73
+ ## Architecture Review Focus
74
+
75
+ ### 1. System Design Principles
76
+ Evaluate adherence to:
77
+ - **Single Responsibility Principle**: Each module has one clear purpose
78
+ - **Open/Closed Principle**: Code is open for extension, closed for modification
79
+ - **Dependency Inversion**: Depend on abstractions, not concretions
80
+ - **Separation of Concerns**: Clear boundaries between different functionalities
81
+
82
+ ### 2. Module Dependencies
83
+ - Analyze dependency relationships and circular dependencies
84
+ - Evaluate coupling between components
85
+ - Assess cohesion within modules
86
+ - Review dependency injection patterns
87
+
88
+ ### 3. Scalability & Maintainability
89
+ - Code reusability and extensibility
90
+ - Configuration management approach
91
+ - Error handling and logging architecture
92
+ - Documentation and code clarity
93
+
94
+ ### 4. Integration Patterns
95
+ - API design and contracts
96
+ - Database schema changes and migration strategy
97
+ - Event handling and messaging patterns
98
+ - Service boundaries and interfaces
99
+
100
+ ### 5. Technical Debt Assessment
101
+ - Code duplication and refactoring opportunities
102
+ - Legacy code integration concerns
103
+ - Performance architecture implications
104
+ - Testing strategy and coverage architecture
105
+
106
+ ## Deliverables
107
+
108
+ Please provide a comprehensive architectural analysis in markdown format including:
109
+
110
+ 1. **Architecture Impact Summary** - High-level assessment of changes
111
+ 2. **Component Interaction Diagram** - Mermaid diagram showing relationships
112
+ 3. **Risk Assessment** - Potential architectural risks and mitigation strategies
113
+ 4. **Recommendations** - Specific suggestions for architectural improvements
114
+ 5. **Migration Considerations** - Any deployment or database migration concerns
115
+
116
+ Focus on how these changes fit into the overall system architecture and their long-term maintainability implications.
@@ -0,0 +1,107 @@
1
+ # 🔒 Security Review for PR {{ pr.number }}: {{ pr.title }}
2
+
3
+ ## Context Information
4
+ - **Author**: {{ pr.author }}
5
+ - **Branch**: `{{ pr.headBranch }}` → `{{ pr.baseBranch }}`
6
+ - **Files Changed**: {{ files.size }}
7
+ - **Total Changes**: +{{ pr.totalAdditions }}/-{{ pr.totalDeletions }}
8
+
9
+ {% if event.comment %}
10
+ **Triggered by comment**: "{{ event.comment.body }}" from {{ event.comment.author }}
11
+ {% endif %}
12
+
13
+ ## File Analysis
14
+
15
+ {% assign tsFiles = utils.filesByExtension.ts %}
16
+ {% assign jsFiles = utils.filesByExtension.js %}
17
+ {% assign configFiles = utils.filesByExtension.json %}
18
+
19
+ {% if tsFiles.size > 0 %}
20
+ ### TypeScript Files to Review ({{ tsFiles.size }})
21
+ {% for file in tsFiles %}
22
+ - `{{ file.filename }}` (+{{ file.additions }}/-{{ file.deletions }}) - {{ file.status }}
23
+ {% endfor %}
24
+ {% endif %}
25
+
26
+ {% if jsFiles.size > 0 %}
27
+ ### JavaScript Files to Review ({{ jsFiles.size }})
28
+ {% for file in jsFiles %}
29
+ - `{{ file.filename }}` (+{{ file.additions }}/-{{ file.deletions }}) - {{ file.status }}
30
+ {% endfor %}
31
+ {% endif %}
32
+
33
+ {% if configFiles.size > 0 %}
34
+ ### Configuration Files ({{ configFiles.size }})
35
+ {% for file in configFiles %}
36
+ - `{{ file.filename }}` - Pay special attention to security configurations
37
+ {% endfor %}
38
+ {% endif %}
39
+
40
+ ## Previous Security Findings
41
+
42
+ {% if outputs.security %}
43
+ Previous security scan found {{ outputs.security.totalIssues }} issues:
44
+ - 🔴 **Critical**: {{ outputs.security.criticalIssues }}
45
+ - 🟠 **Errors**: {{ outputs.security.errorIssues }}
46
+ - 🟡 **Warnings**: {{ outputs.security.warningIssues }}
47
+ - 🔵 **Info**: {{ outputs.security.infoIssues }}
48
+
49
+ {% if outputs.security.securityIssues.size > 0 %}
50
+ ### Existing Security Issues to Address:
51
+ {% for issue in outputs.security.securityIssues %}
52
+ - **{{ issue.severity | upcase }}** in `{{ issue.file }}:{{ issue.line }}`: {{ issue.message }}
53
+ {% if issue.suggestion %}💡 *{{ issue.suggestion }}*{% endif %}
54
+ {% endfor %}
55
+ {% endif %}
56
+
57
+ {% else %}
58
+ No previous security analysis available - performing fresh security review.
59
+ {% endif %}
60
+
61
+ ## Review Focus Areas
62
+
63
+ {% if utils.hasLargeChanges %}
64
+ ⚠️ **Large Changes Detected** - This PR requires extra careful review due to significant modifications.
65
+ {% endif %}
66
+
67
+ Please perform a comprehensive security analysis focusing on:
68
+
69
+ ### 1. Authentication & Authorization
70
+ - JWT token handling and validation
71
+ - Session management security
72
+ - Role-based access control implementation
73
+ - Authentication bypass possibilities
74
+
75
+ ### 2. Input Validation & Sanitization
76
+ - SQL injection vulnerabilities
77
+ - XSS attack vectors
78
+ - Command injection risks
79
+ - File upload security
80
+
81
+ ### 3. Cryptography & Secrets
82
+ - Proper use of cryptographic functions
83
+ - Secret management and storage
84
+ - API key and token security
85
+ - Encryption at rest and in transit
86
+
87
+ ### 4. Infrastructure Security
88
+ - Configuration security
89
+ - Dependency vulnerabilities
90
+ - Environment variable handling
91
+ - Error message information disclosure
92
+
93
+ ### 5. Data Protection
94
+ - Sensitive data exposure
95
+ - Data validation and sanitization
96
+ - Privacy compliance considerations
97
+ - Audit logging security
98
+
99
+ ## Analysis Instructions
100
+
101
+ Return results in JSON format matching the code-review schema with:
102
+ - Specific file locations and line numbers
103
+ - Clear severity classifications (critical/error/warning/info)
104
+ - Actionable remediation suggestions
105
+ - Reference to security best practices where applicable
106
+
107
+ Focus on newly added or modified code, but consider how changes interact with existing security measures.
@@ -0,0 +1,53 @@
1
+ # Quick Start: Visor with Tags
2
+ # Simple configuration showing basic tag usage
3
+
4
+ version: "1.0"
5
+
6
+ # Define your checks with appropriate tags
7
+ steps:
8
+ # Fast check for local development
9
+ quick-review:
10
+ type: ai
11
+ prompt: |
12
+ Quick code review focusing on:
13
+ - Obvious bugs and errors
14
+ - Security issues (SQL injection, XSS)
15
+ - Performance problems (N+1 queries, infinite loops)
16
+ Keep it brief and actionable.
17
+ tags: ["local", "fast"]
18
+ on: [pr_opened, pr_updated]
19
+
20
+ # Comprehensive check for CI/CD
21
+ thorough-review:
22
+ type: ai
23
+ prompt: |
24
+ Comprehensive code review including:
25
+ - Security vulnerabilities (OWASP Top 10)
26
+ - Performance optimization opportunities
27
+ - Code quality and maintainability
28
+ - Architecture and design patterns
29
+ - Test coverage gaps
30
+ Provide detailed feedback with examples.
31
+ tags: ["remote", "comprehensive"]
32
+ on: [pr_opened]
33
+
34
+ # Optional style check
35
+ style-review:
36
+ type: ai
37
+ prompt: "Check code style, formatting, and naming conventions"
38
+ tags: ["style", "optional", "fast"]
39
+ on: [pr_opened, pr_updated]
40
+
41
+ # Usage Examples:
42
+ #
43
+ # Local development (pre-commit hook):
44
+ # visor --tags local,fast
45
+ #
46
+ # CI pipeline:
47
+ # visor --tags remote,comprehensive
48
+ #
49
+ # Everything except optional:
50
+ # visor --exclude-tags optional
51
+ #
52
+ # Just style checks:
53
+ # visor --tags style